[med-svn] [libpll] 01/02: New upstream version 1.0.11
Andreas Tille
tille at debian.org
Tue Mar 14 14:41:22 UTC 2017
This is an automated email from the git hooks/post-receive script.
tille pushed a commit to branch master
in repository libpll.
commit 0c97daad2b8ac5efa6d47cf9d7e8279ca0438a9b
Author: Andreas Tille <tille at debian.org>
Date: Tue Mar 14 15:25:30 2017 +0100
New upstream version 1.0.11
---
AUTHORS | 0
COPYING | 674 ++
ChangeLog | 24 +
INSTALL | 370 +
MPI/Makefile.am | 33 +
MPI/Makefile.in | 2354 ++++
Makefile.am | 7 +
Makefile.in | 814 ++
NEWS | 0
README | 0
aclocal.m4 | 1158 ++
compile | 347 +
config.guess | 1558 +++
config.h.in | 248 +
config.sub | 1791 +++
configure | 20260 ++++++++++++++++++++++++++++++++++
configure.ac | 124 +
depcomp | 791 ++
examples/Makefile.am | 3 +
examples/Makefile.in | 620 ++
examples/PLL/Makefile.AVX | 21 +
examples/PLL/Makefile.AVX-MPI | 20 +
examples/PLL/Makefile.AVX-PTHREADS | 21 +
examples/PLL/Makefile.AVX.clang | 21 +
examples/PLL/Makefile.SSE3 | 19 +
examples/PLL/Makefile.SSE3-MPI | 20 +
examples/PLL/Makefile.SSE3-PTHREADS | 21 +
examples/PLL/Makefile.SSE3.clang | 21 +
examples/PLL/Makefile.am | 3 +
examples/PLL/Makefile.in | 495 +
examples/PLL/main.c | 238 +
examples/README | 11 +
install-sh | 527 +
ltmain.sh | 9661 ++++++++++++++++
m4/ax_check_compile_flag.m4 | 72 +
m4/ax_ext.m4 | 163 +
m4/ax_gcc_x86_cpuid.m4 | 79 +
m4/ax_mpi.m4 | 176 +
m4/libtool.m4 | 8001 ++++++++++++++
m4/ltoptions.m4 | 384 +
m4/ltsugar.m4 | 123 +
m4/ltversion.m4 | 23 +
m4/lt~obsolete.m4 | 98 +
man/Makefile.am | 1 +
man/Makefile.in | 518 +
man/libpll.3 | 94 +
missing | 215 +
sources.am | 2 +
src/Makefile.am | 55 +
src/Makefile.in | 3475 ++++++
src/alignment.c | 832 ++
src/avxLikelihood.c | 4106 +++++++
src/bipartitionList.c | 434 +
src/cycle.h | 516 +
src/errcodes.h | 68 +
src/evaluateGenericSpecial.c | 3322 ++++++
src/evaluatePartialGenericSpecial.c | 1373 +++
src/fastDNAparsimony.c | 1893 ++++
src/genericParallelization.c | 2302 ++++
src/genericParallelization.h | 123 +
src/globalVariables.h | 170 +
src/hardware.h | 48 +
src/hash.c | 223 +
src/hash.h | 50 +
src/lexer.c | 299 +
src/lexer.h | 88 +
src/makenewzGenericSpecial.c | 3147 ++++++
src/mem_alloc.h | 17 +
src/mic_native.h | 57 +
src/models.c | 4322 ++++++++
src/newick.c | 594 +
src/newviewGenericSpecial.c | 8985 +++++++++++++++
src/optimizeModel.c | 3155 ++++++
src/parsePartition.c | 394 +
src/parsePartition.h | 52 +
src/parsimony.c | 865 ++
src/pll.h | 1733 +++
src/pllInternal.h | 266 +
src/queue.c | 96 +
src/queue.h | 48 +
src/randomTree.c | 177 +
src/recom.c | 688 ++
src/restartHashTable.c | 357 +
src/searchAlgo.c | 3682 ++++++
src/ssort.c | 121 +
src/stack.c | 85 +
src/stack.h | 48 +
src/topologies.c | 778 ++
src/trash.c | 129 +
src/treeIO.c | 241 +
src/utils.c | 4087 +++++++
91 files changed, 105725 insertions(+)
diff --git a/AUTHORS b/AUTHORS
new file mode 100644
index 0000000..e69de29
diff --git a/COPYING b/COPYING
new file mode 100644
index 0000000..94a9ed0
--- /dev/null
+++ b/COPYING
@@ -0,0 +1,674 @@
+ GNU GENERAL PUBLIC LICENSE
+ Version 3, 29 June 2007
+
+ Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+ Preamble
+
+ The GNU General Public License is a free, copyleft license for
+software and other kinds of works.
+
+ The licenses for most software and other practical works are designed
+to take away your freedom to share and change the works. By contrast,
+the GNU General Public License is intended to guarantee your freedom to
+share and change all versions of a program--to make sure it remains free
+software for all its users. We, the Free Software Foundation, use the
+GNU General Public License for most of our software; it applies also to
+any other work released this way by its authors. You can apply it to
+your programs, too.
+
+ When we speak of free software, we are referring to freedom, not
+price. Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+them if you wish), that you receive source code or can get it if you
+want it, that you can change the software or use pieces of it in new
+free programs, and that you know you can do these things.
+
+ To protect your rights, we need to prevent others from denying you
+these rights or asking you to surrender the rights. Therefore, you have
+certain responsibilities if you distribute copies of the software, or if
+you modify it: responsibilities to respect the freedom of others.
+
+ For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must pass on to the recipients the same
+freedoms that you received. You must make sure that they, too, receive
+or can get the source code. And you must show them these terms so they
+know their rights.
+
+ Developers that use the GNU GPL protect your rights with two steps:
+(1) assert copyright on the software, and (2) offer you this License
+giving you legal permission to copy, distribute and/or modify it.
+
+ For the developers' and authors' protection, the GPL clearly explains
+that there is no warranty for this free software. For both users' and
+authors' sake, the GPL requires that modified versions be marked as
+changed, so that their problems will not be attributed erroneously to
+authors of previous versions.
+
+ Some devices are designed to deny users access to install or run
+modified versions of the software inside them, although the manufacturer
+can do so. This is fundamentally incompatible with the aim of
+protecting users' freedom to change the software. The systematic
+pattern of such abuse occurs in the area of products for individuals to
+use, which is precisely where it is most unacceptable. Therefore, we
+have designed this version of the GPL to prohibit the practice for those
+products. If such problems arise substantially in other domains, we
+stand ready to extend this provision to those domains in future versions
+of the GPL, as needed to protect the freedom of users.
+
+ Finally, every program is threatened constantly by software patents.
+States should not allow patents to restrict development and use of
+software on general-purpose computers, but in those that do, we wish to
+avoid the special danger that patents applied to a free program could
+make it effectively proprietary. To prevent this, the GPL assures that
+patents cannot be used to render the program non-free.
+
+ The precise terms and conditions for copying, distribution and
+modification follow.
+
+ TERMS AND CONDITIONS
+
+ 0. Definitions.
+
+ "This License" refers to version 3 of the GNU General Public License.
+
+ "Copyright" also means copyright-like laws that apply to other kinds of
+works, such as semiconductor masks.
+
+ "The Program" refers to any copyrightable work licensed under this
+License. Each licensee is addressed as "you". "Licensees" and
+"recipients" may be individuals or organizations.
+
+ To "modify" a work means to copy from or adapt all or part of the work
+in a fashion requiring copyright permission, other than the making of an
+exact copy. The resulting work is called a "modified version" of the
+earlier work or a work "based on" the earlier work.
+
+ A "covered work" means either the unmodified Program or a work based
+on the Program.
+
+ To "propagate" a work means to do anything with it that, without
+permission, would make you directly or secondarily liable for
+infringement under applicable copyright law, except executing it on a
+computer or modifying a private copy. Propagation includes copying,
+distribution (with or without modification), making available to the
+public, and in some countries other activities as well.
+
+ To "convey" a work means any kind of propagation that enables other
+parties to make or receive copies. Mere interaction with a user through
+a computer network, with no transfer of a copy, is not conveying.
+
+ An interactive user interface displays "Appropriate Legal Notices"
+to the extent that it includes a convenient and prominently visible
+feature that (1) displays an appropriate copyright notice, and (2)
+tells the user that there is no warranty for the work (except to the
+extent that warranties are provided), that licensees may convey the
+work under this License, and how to view a copy of this License. If
+the interface presents a list of user commands or options, such as a
+menu, a prominent item in the list meets this criterion.
+
+ 1. Source Code.
+
+ The "source code" for a work means the preferred form of the work
+for making modifications to it. "Object code" means any non-source
+form of a work.
+
+ A "Standard Interface" means an interface that either is an official
+standard defined by a recognized standards body, or, in the case of
+interfaces specified for a particular programming language, one that
+is widely used among developers working in that language.
+
+ The "System Libraries" of an executable work include anything, other
+than the work as a whole, that (a) is included in the normal form of
+packaging a Major Component, but which is not part of that Major
+Component, and (b) serves only to enable use of the work with that
+Major Component, or to implement a Standard Interface for which an
+implementation is available to the public in source code form. A
+"Major Component", in this context, means a major essential component
+(kernel, window system, and so on) of the specific operating system
+(if any) on which the executable work runs, or a compiler used to
+produce the work, or an object code interpreter used to run it.
+
+ The "Corresponding Source" for a work in object code form means all
+the source code needed to generate, install, and (for an executable
+work) run the object code and to modify the work, including scripts to
+control those activities. However, it does not include the work's
+System Libraries, or general-purpose tools or generally available free
+programs which are used unmodified in performing those activities but
+which are not part of the work. For example, Corresponding Source
+includes interface definition files associated with source files for
+the work, and the source code for shared libraries and dynamically
+linked subprograms that the work is specifically designed to require,
+such as by intimate data communication or control flow between those
+subprograms and other parts of the work.
+
+ The Corresponding Source need not include anything that users
+can regenerate automatically from other parts of the Corresponding
+Source.
+
+ The Corresponding Source for a work in source code form is that
+same work.
+
+ 2. Basic Permissions.
+
+ All rights granted under this License are granted for the term of
+copyright on the Program, and are irrevocable provided the stated
+conditions are met. This License explicitly affirms your unlimited
+permission to run the unmodified Program. The output from running a
+covered work is covered by this License only if the output, given its
+content, constitutes a covered work. This License acknowledges your
+rights of fair use or other equivalent, as provided by copyright law.
+
+ You may make, run and propagate covered works that you do not
+convey, without conditions so long as your license otherwise remains
+in force. You may convey covered works to others for the sole purpose
+of having them make modifications exclusively for you, or provide you
+with facilities for running those works, provided that you comply with
+the terms of this License in conveying all material for which you do
+not control copyright. Those thus making or running the covered works
+for you must do so exclusively on your behalf, under your direction
+and control, on terms that prohibit them from making any copies of
+your copyrighted material outside their relationship with you.
+
+ Conveying under any other circumstances is permitted solely under
+the conditions stated below. Sublicensing is not allowed; section 10
+makes it unnecessary.
+
+ 3. Protecting Users' Legal Rights From Anti-Circumvention Law.
+
+ No covered work shall be deemed part of an effective technological
+measure under any applicable law fulfilling obligations under article
+11 of the WIPO copyright treaty adopted on 20 December 1996, or
+similar laws prohibiting or restricting circumvention of such
+measures.
+
+ When you convey a covered work, you waive any legal power to forbid
+circumvention of technological measures to the extent such circumvention
+is effected by exercising rights under this License with respect to
+the covered work, and you disclaim any intention to limit operation or
+modification of the work as a means of enforcing, against the work's
+users, your or third parties' legal rights to forbid circumvention of
+technological measures.
+
+ 4. Conveying Verbatim Copies.
+
+ You may convey verbatim copies of the Program's source code as you
+receive it, in any medium, provided that you conspicuously and
+appropriately publish on each copy an appropriate copyright notice;
+keep intact all notices stating that this License and any
+non-permissive terms added in accord with section 7 apply to the code;
+keep intact all notices of the absence of any warranty; and give all
+recipients a copy of this License along with the Program.
+
+ You may charge any price or no price for each copy that you convey,
+and you may offer support or warranty protection for a fee.
+
+ 5. Conveying Modified Source Versions.
+
+ You may convey a work based on the Program, or the modifications to
+produce it from the Program, in the form of source code under the
+terms of section 4, provided that you also meet all of these conditions:
+
+ a) The work must carry prominent notices stating that you modified
+ it, and giving a relevant date.
+
+ b) The work must carry prominent notices stating that it is
+ released under this License and any conditions added under section
+ 7. This requirement modifies the requirement in section 4 to
+ "keep intact all notices".
+
+ c) You must license the entire work, as a whole, under this
+ License to anyone who comes into possession of a copy. This
+ License will therefore apply, along with any applicable section 7
+ additional terms, to the whole of the work, and all its parts,
+ regardless of how they are packaged. This License gives no
+ permission to license the work in any other way, but it does not
+ invalidate such permission if you have separately received it.
+
+ d) If the work has interactive user interfaces, each must display
+ Appropriate Legal Notices; however, if the Program has interactive
+ interfaces that do not display Appropriate Legal Notices, your
+ work need not make them do so.
+
+ A compilation of a covered work with other separate and independent
+works, which are not by their nature extensions of the covered work,
+and which are not combined with it such as to form a larger program,
+in or on a volume of a storage or distribution medium, is called an
+"aggregate" if the compilation and its resulting copyright are not
+used to limit the access or legal rights of the compilation's users
+beyond what the individual works permit. Inclusion of a covered work
+in an aggregate does not cause this License to apply to the other
+parts of the aggregate.
+
+ 6. Conveying Non-Source Forms.
+
+ You may convey a covered work in object code form under the terms
+of sections 4 and 5, provided that you also convey the
+machine-readable Corresponding Source under the terms of this License,
+in one of these ways:
+
+ a) Convey the object code in, or embodied in, a physical product
+ (including a physical distribution medium), accompanied by the
+ Corresponding Source fixed on a durable physical medium
+ customarily used for software interchange.
+
+ b) Convey the object code in, or embodied in, a physical product
+ (including a physical distribution medium), accompanied by a
+ written offer, valid for at least three years and valid for as
+ long as you offer spare parts or customer support for that product
+ model, to give anyone who possesses the object code either (1) a
+ copy of the Corresponding Source for all the software in the
+ product that is covered by this License, on a durable physical
+ medium customarily used for software interchange, for a price no
+ more than your reasonable cost of physically performing this
+ conveying of source, or (2) access to copy the
+ Corresponding Source from a network server at no charge.
+
+ c) Convey individual copies of the object code with a copy of the
+ written offer to provide the Corresponding Source. This
+ alternative is allowed only occasionally and noncommercially, and
+ only if you received the object code with such an offer, in accord
+ with subsection 6b.
+
+ d) Convey the object code by offering access from a designated
+ place (gratis or for a charge), and offer equivalent access to the
+ Corresponding Source in the same way through the same place at no
+ further charge. You need not require recipients to copy the
+ Corresponding Source along with the object code. If the place to
+ copy the object code is a network server, the Corresponding Source
+ may be on a different server (operated by you or a third party)
+ that supports equivalent copying facilities, provided you maintain
+ clear directions next to the object code saying where to find the
+ Corresponding Source. Regardless of what server hosts the
+ Corresponding Source, you remain obligated to ensure that it is
+ available for as long as needed to satisfy these requirements.
+
+ e) Convey the object code using peer-to-peer transmission, provided
+ you inform other peers where the object code and Corresponding
+ Source of the work are being offered to the general public at no
+ charge under subsection 6d.
+
+ A separable portion of the object code, whose source code is excluded
+from the Corresponding Source as a System Library, need not be
+included in conveying the object code work.
+
+ A "User Product" is either (1) a "consumer product", which means any
+tangible personal property which is normally used for personal, family,
+or household purposes, or (2) anything designed or sold for incorporation
+into a dwelling. In determining whether a product is a consumer product,
+doubtful cases shall be resolved in favor of coverage. For a particular
+product received by a particular user, "normally used" refers to a
+typical or common use of that class of product, regardless of the status
+of the particular user or of the way in which the particular user
+actually uses, or expects or is expected to use, the product. A product
+is a consumer product regardless of whether the product has substantial
+commercial, industrial or non-consumer uses, unless such uses represent
+the only significant mode of use of the product.
+
+ "Installation Information" for a User Product means any methods,
+procedures, authorization keys, or other information required to install
+and execute modified versions of a covered work in that User Product from
+a modified version of its Corresponding Source. The information must
+suffice to ensure that the continued functioning of the modified object
+code is in no case prevented or interfered with solely because
+modification has been made.
+
+ If you convey an object code work under this section in, or with, or
+specifically for use in, a User Product, and the conveying occurs as
+part of a transaction in which the right of possession and use of the
+User Product is transferred to the recipient in perpetuity or for a
+fixed term (regardless of how the transaction is characterized), the
+Corresponding Source conveyed under this section must be accompanied
+by the Installation Information. But this requirement does not apply
+if neither you nor any third party retains the ability to install
+modified object code on the User Product (for example, the work has
+been installed in ROM).
+
+ The requirement to provide Installation Information does not include a
+requirement to continue to provide support service, warranty, or updates
+for a work that has been modified or installed by the recipient, or for
+the User Product in which it has been modified or installed. Access to a
+network may be denied when the modification itself materially and
+adversely affects the operation of the network or violates the rules and
+protocols for communication across the network.
+
+ Corresponding Source conveyed, and Installation Information provided,
+in accord with this section must be in a format that is publicly
+documented (and with an implementation available to the public in
+source code form), and must require no special password or key for
+unpacking, reading or copying.
+
+ 7. Additional Terms.
+
+ "Additional permissions" are terms that supplement the terms of this
+License by making exceptions from one or more of its conditions.
+Additional permissions that are applicable to the entire Program shall
+be treated as though they were included in this License, to the extent
+that they are valid under applicable law. If additional permissions
+apply only to part of the Program, that part may be used separately
+under those permissions, but the entire Program remains governed by
+this License without regard to the additional permissions.
+
+ When you convey a copy of a covered work, you may at your option
+remove any additional permissions from that copy, or from any part of
+it. (Additional permissions may be written to require their own
+removal in certain cases when you modify the work.) You may place
+additional permissions on material, added by you to a covered work,
+for which you have or can give appropriate copyright permission.
+
+ Notwithstanding any other provision of this License, for material you
+add to a covered work, you may (if authorized by the copyright holders of
+that material) supplement the terms of this License with terms:
+
+ a) Disclaiming warranty or limiting liability differently from the
+ terms of sections 15 and 16 of this License; or
+
+ b) Requiring preservation of specified reasonable legal notices or
+ author attributions in that material or in the Appropriate Legal
+ Notices displayed by works containing it; or
+
+ c) Prohibiting misrepresentation of the origin of that material, or
+ requiring that modified versions of such material be marked in
+ reasonable ways as different from the original version; or
+
+ d) Limiting the use for publicity purposes of names of licensors or
+ authors of the material; or
+
+ e) Declining to grant rights under trademark law for use of some
+ trade names, trademarks, or service marks; or
+
+ f) Requiring indemnification of licensors and authors of that
+ material by anyone who conveys the material (or modified versions of
+ it) with contractual assumptions of liability to the recipient, for
+ any liability that these contractual assumptions directly impose on
+ those licensors and authors.
+
+ All other non-permissive additional terms are considered "further
+restrictions" within the meaning of section 10. If the Program as you
+received it, or any part of it, contains a notice stating that it is
+governed by this License along with a term that is a further
+restriction, you may remove that term. If a license document contains
+a further restriction but permits relicensing or conveying under this
+License, you may add to a covered work material governed by the terms
+of that license document, provided that the further restriction does
+not survive such relicensing or conveying.
+
+ If you add terms to a covered work in accord with this section, you
+must place, in the relevant source files, a statement of the
+additional terms that apply to those files, or a notice indicating
+where to find the applicable terms.
+
+ Additional terms, permissive or non-permissive, may be stated in the
+form of a separately written license, or stated as exceptions;
+the above requirements apply either way.
+
+ 8. Termination.
+
+ You may not propagate or modify a covered work except as expressly
+provided under this License. Any attempt otherwise to propagate or
+modify it is void, and will automatically terminate your rights under
+this License (including any patent licenses granted under the third
+paragraph of section 11).
+
+ However, if you cease all violation of this License, then your
+license from a particular copyright holder is reinstated (a)
+provisionally, unless and until the copyright holder explicitly and
+finally terminates your license, and (b) permanently, if the copyright
+holder fails to notify you of the violation by some reasonable means
+prior to 60 days after the cessation.
+
+ Moreover, your license from a particular copyright holder is
+reinstated permanently if the copyright holder notifies you of the
+violation by some reasonable means, this is the first time you have
+received notice of violation of this License (for any work) from that
+copyright holder, and you cure the violation prior to 30 days after
+your receipt of the notice.
+
+ Termination of your rights under this section does not terminate the
+licenses of parties who have received copies or rights from you under
+this License. If your rights have been terminated and not permanently
+reinstated, you do not qualify to receive new licenses for the same
+material under section 10.
+
+ 9. Acceptance Not Required for Having Copies.
+
+ You are not required to accept this License in order to receive or
+run a copy of the Program. Ancillary propagation of a covered work
+occurring solely as a consequence of using peer-to-peer transmission
+to receive a copy likewise does not require acceptance. However,
+nothing other than this License grants you permission to propagate or
+modify any covered work. These actions infringe copyright if you do
+not accept this License. Therefore, by modifying or propagating a
+covered work, you indicate your acceptance of this License to do so.
+
+ 10. Automatic Licensing of Downstream Recipients.
+
+ Each time you convey a covered work, the recipient automatically
+receives a license from the original licensors, to run, modify and
+propagate that work, subject to this License. You are not responsible
+for enforcing compliance by third parties with this License.
+
+ An "entity transaction" is a transaction transferring control of an
+organization, or substantially all assets of one, or subdividing an
+organization, or merging organizations. If propagation of a covered
+work results from an entity transaction, each party to that
+transaction who receives a copy of the work also receives whatever
+licenses to the work the party's predecessor in interest had or could
+give under the previous paragraph, plus a right to possession of the
+Corresponding Source of the work from the predecessor in interest, if
+the predecessor has it or can get it with reasonable efforts.
+
+ You may not impose any further restrictions on the exercise of the
+rights granted or affirmed under this License. For example, you may
+not impose a license fee, royalty, or other charge for exercise of
+rights granted under this License, and you may not initiate litigation
+(including a cross-claim or counterclaim in a lawsuit) alleging that
+any patent claim is infringed by making, using, selling, offering for
+sale, or importing the Program or any portion of it.
+
+ 11. Patents.
+
+ A "contributor" is a copyright holder who authorizes use under this
+License of the Program or a work on which the Program is based. The
+work thus licensed is called the contributor's "contributor version".
+
+ A contributor's "essential patent claims" are all patent claims
+owned or controlled by the contributor, whether already acquired or
+hereafter acquired, that would be infringed by some manner, permitted
+by this License, of making, using, or selling its contributor version,
+but do not include claims that would be infringed only as a
+consequence of further modification of the contributor version. For
+purposes of this definition, "control" includes the right to grant
+patent sublicenses in a manner consistent with the requirements of
+this License.
+
+ Each contributor grants you a non-exclusive, worldwide, royalty-free
+patent license under the contributor's essential patent claims, to
+make, use, sell, offer for sale, import and otherwise run, modify and
+propagate the contents of its contributor version.
+
+ In the following three paragraphs, a "patent license" is any express
+agreement or commitment, however denominated, not to enforce a patent
+(such as an express permission to practice a patent or covenant not to
+sue for patent infringement). To "grant" such a patent license to a
+party means to make such an agreement or commitment not to enforce a
+patent against the party.
+
+ If you convey a covered work, knowingly relying on a patent license,
+and the Corresponding Source of the work is not available for anyone
+to copy, free of charge and under the terms of this License, through a
+publicly available network server or other readily accessible means,
+then you must either (1) cause the Corresponding Source to be so
+available, or (2) arrange to deprive yourself of the benefit of the
+patent license for this particular work, or (3) arrange, in a manner
+consistent with the requirements of this License, to extend the patent
+license to downstream recipients. "Knowingly relying" means you have
+actual knowledge that, but for the patent license, your conveying the
+covered work in a country, or your recipient's use of the covered work
+in a country, would infringe one or more identifiable patents in that
+country that you have reason to believe are valid.
+
+ If, pursuant to or in connection with a single transaction or
+arrangement, you convey, or propagate by procuring conveyance of, a
+covered work, and grant a patent license to some of the parties
+receiving the covered work authorizing them to use, propagate, modify
+or convey a specific copy of the covered work, then the patent license
+you grant is automatically extended to all recipients of the covered
+work and works based on it.
+
+ A patent license is "discriminatory" if it does not include within
+the scope of its coverage, prohibits the exercise of, or is
+conditioned on the non-exercise of one or more of the rights that are
+specifically granted under this License. You may not convey a covered
+work if you are a party to an arrangement with a third party that is
+in the business of distributing software, under which you make payment
+to the third party based on the extent of your activity of conveying
+the work, and under which the third party grants, to any of the
+parties who would receive the covered work from you, a discriminatory
+patent license (a) in connection with copies of the covered work
+conveyed by you (or copies made from those copies), or (b) primarily
+for and in connection with specific products or compilations that
+contain the covered work, unless you entered into that arrangement,
+or that patent license was granted, prior to 28 March 2007.
+
+ Nothing in this License shall be construed as excluding or limiting
+any implied license or other defenses to infringement that may
+otherwise be available to you under applicable patent law.
+
+ 12. No Surrender of Others' Freedom.
+
+ If 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 convey a
+covered work so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you may
+not convey it at all. For example, if you agree to terms that obligate you
+to collect a royalty for further conveying from those to whom you convey
+the Program, the only way you could satisfy both those terms and this
+License would be to refrain entirely from conveying the Program.
+
+ 13. Use with the GNU Affero General Public License.
+
+ Notwithstanding any other provision of this License, you have
+permission to link or combine any covered work with a work licensed
+under version 3 of the GNU Affero General Public License into a single
+combined work, and to convey the resulting work. The terms of this
+License will continue to apply to the part which is the covered work,
+but the special requirements of the GNU Affero General Public License,
+section 13, concerning interaction through a network will apply to the
+combination as such.
+
+ 14. Revised Versions of this License.
+
+ The Free Software Foundation may publish revised and/or new versions of
+the GNU General Public License from time to time. Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+ Each version is given a distinguishing version number. If the
+Program specifies that a certain numbered version of the GNU General
+Public License "or any later version" applies to it, you have the
+option of following the terms and conditions either of that numbered
+version or of any later version published by the Free Software
+Foundation. If the Program does not specify a version number of the
+GNU General Public License, you may choose any version ever published
+by the Free Software Foundation.
+
+ If the Program specifies that a proxy can decide which future
+versions of the GNU General Public License can be used, that proxy's
+public statement of acceptance of a version permanently authorizes you
+to choose that version for the Program.
+
+ Later license versions may give you additional or different
+permissions. However, no additional obligations are imposed on any
+author or copyright holder as a result of your choosing to follow a
+later version.
+
+ 15. Disclaimer of Warranty.
+
+ THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
+APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
+HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
+OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
+THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
+IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
+ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+ 16. Limitation of Liability.
+
+ IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
+THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
+GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
+USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
+DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
+PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
+EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGES.
+
+ 17. Interpretation of Sections 15 and 16.
+
+ If the disclaimer of warranty and limitation of liability provided
+above cannot be given local legal effect according to their terms,
+reviewing courts shall apply local law that most closely approximates
+an absolute waiver of all civil liability in connection with the
+Program, unless a warranty or assumption of liability accompanies a
+copy of the Program in return for a fee.
+
+ END OF TERMS AND CONDITIONS
+
+ How to Apply These Terms to Your New Programs
+
+ If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+ To do so, attach the following notices to the program. It is safest
+to attach them to the start of each source file to most effectively
+state the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+ <one line to give the program's name and a brief idea of what it does.>
+ Copyright (C) <year> <name of author>
+
+ 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 3 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, see <http://www.gnu.org/licenses/>.
+
+Also add information on how to contact you by electronic and paper mail.
+
+ If the program does terminal interaction, make it output a short
+notice like this when it starts in an interactive mode:
+
+ <program> Copyright (C) <year> <name of author>
+ This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+ This is free software, and you are welcome to redistribute it
+ under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License. Of course, your program's commands
+might be different; for a GUI interface, you would use an "about box".
+
+ You should also get your employer (if you work as a programmer) or school,
+if any, to sign a "copyright disclaimer" for the program, if necessary.
+For more information on this, and how to apply and follow the GNU GPL, see
+<http://www.gnu.org/licenses/>.
+
+ The GNU General Public License does not permit incorporating your program
+into proprietary programs. If your program is a subroutine library, you
+may consider it more useful to permit linking proprietary applications with
+the library. If this is what you want to do, use the GNU Lesser General
+Public License instead of this License. But first, please read
+<http://www.gnu.org/philosophy/why-not-lgpl.html>.
diff --git a/ChangeLog b/ChangeLog
new file mode 100644
index 0000000..9141d83
--- /dev/null
+++ b/ChangeLog
@@ -0,0 +1,24 @@
+2015-03-13 Diego Darriba <Diego.Darriba at h-its.org>
+
+ * Release 1.0.10
+ * Implemented TBR moves in rearrangement search functions
+ * Added pllGetSubtreeNodes function
+ * Removed perGeneBranchLengths in pllInstance
+ (perGeneBranchLengths in the partitionList should be used instead)
+
+2015-03-09 Tomas Flouri <Tomas.Flouri at h-its.org>
+
+ * Release 1.0.9
+ * Added support for multiline FASTA.
+
+2015-03-05 Diego Darriba <Diego.Darriba at h-its.org>
+
+ * Release 1.0.8
+ * Fixed bug in pllSetBranchLength
+ partitionList was added for taking the correct fracchange
+
+2015-01-06 Tomas Flouri <Tomas.Flouri at h-its.org>
+
+ * Release 1.0.2
+ * Added new protein subst model stmtREV
+ See http://datadryad.org/resource/doi:10.5061/dryad.7b470
diff --git a/INSTALL b/INSTALL
new file mode 100644
index 0000000..a1e89e1
--- /dev/null
+++ b/INSTALL
@@ -0,0 +1,370 @@
+Installation Instructions
+*************************
+
+Copyright (C) 1994-1996, 1999-2002, 2004-2011 Free Software Foundation,
+Inc.
+
+ Copying and distribution of this file, with or without modification,
+are permitted in any medium without royalty provided the copyright
+notice and this notice are preserved. This file is offered as-is,
+without warranty of any kind.
+
+Basic Installation
+==================
+
+ Briefly, the shell commands `./configure; make; make install' should
+configure, build, and install this package. The following
+more-detailed instructions are generic; see the `README' file for
+instructions specific to this package. Some packages provide this
+`INSTALL' file but do not implement all of the features documented
+below. The lack of an optional feature in a given package is not
+necessarily a bug. More recommendations for GNU packages can be found
+in *note Makefile Conventions: (standards)Makefile Conventions.
+
+ The `configure' shell script attempts to guess correct values for
+various system-dependent variables used during compilation. It uses
+those values to create a `Makefile' in each directory of the package.
+It may also create one or more `.h' files containing system-dependent
+definitions. Finally, it creates a shell script `config.status' that
+you can run in the future to recreate the current configuration, and a
+file `config.log' containing compiler output (useful mainly for
+debugging `configure').
+
+ It can also use an optional file (typically called `config.cache'
+and enabled with `--cache-file=config.cache' or simply `-C') that saves
+the results of its tests to speed up reconfiguring. Caching is
+disabled by default to prevent problems with accidental use of stale
+cache files.
+
+ If you need to do unusual things to compile the package, please try
+to figure out how `configure' could check whether to do them, and mail
+diffs or instructions to the address given in the `README' so they can
+be considered for the next release. If you are using the cache, and at
+some point `config.cache' contains results you don't want to keep, you
+may remove or edit it.
+
+ The file `configure.ac' (or `configure.in') is used to create
+`configure' by a program called `autoconf'. You need `configure.ac' if
+you want to change it or regenerate `configure' using a newer version
+of `autoconf'.
+
+ The simplest way to compile this package is:
+
+ 1. `cd' to the directory containing the package's source code and type
+ `./configure' to configure the package for your system.
+
+ Running `configure' might take a while. While running, it prints
+ some messages telling which features it is checking for.
+
+ 2. Type `make' to compile the package.
+
+ 3. Optionally, type `make check' to run any self-tests that come with
+ the package, generally using the just-built uninstalled binaries.
+
+ 4. Type `make install' to install the programs and any data files and
+ documentation. When installing into a prefix owned by root, it is
+ recommended that the package be configured and built as a regular
+ user, and only the `make install' phase executed with root
+ privileges.
+
+ 5. Optionally, type `make installcheck' to repeat any self-tests, but
+ this time using the binaries in their final installed location.
+ This target does not install anything. Running this target as a
+ regular user, particularly if the prior `make install' required
+ root privileges, verifies that the installation completed
+ correctly.
+
+ 6. 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.
+
+ 7. Often, you can also type `make uninstall' to remove the installed
+ files again. In practice, not all packages have tested that
+ uninstallation works correctly, even though it is required by the
+ GNU Coding Standards.
+
+ 8. Some packages, particularly those that use Automake, provide `make
+ distcheck', which can by used by developers to test that all other
+ targets like `make install' and `make uninstall' work correctly.
+ This target is generally not run by end users.
+
+Compilers and Options
+=====================
+
+ Some systems require unusual options for compilation or linking that
+the `configure' script does not know about. Run `./configure --help'
+for details on some of the pertinent environment variables.
+
+ You can give `configure' initial values for configuration parameters
+by setting variables in the command line or in the environment. Here
+is an example:
+
+ ./configure CC=c99 CFLAGS=-g LIBS=-lposix
+
+ *Note Defining Variables::, for more details.
+
+Compiling For Multiple Architectures
+====================================
+
+ You can compile the package for more than one kind of computer at the
+same time, by placing the object files for each architecture in their
+own directory. To do this, you can use GNU `make'. `cd' to the
+directory where you want the object files and executables to go and run
+the `configure' script. `configure' automatically checks for the
+source code in the directory that `configure' is in and in `..'. This
+is known as a "VPATH" build.
+
+ With a non-GNU `make', it is safer to compile the package for one
+architecture at a time in the source code directory. After you have
+installed the package for one architecture, use `make distclean' before
+reconfiguring for another architecture.
+
+ On MacOS X 10.5 and later systems, you can create libraries and
+executables that work on multiple system types--known as "fat" or
+"universal" binaries--by specifying multiple `-arch' options to the
+compiler but only a single `-arch' option to the preprocessor. Like
+this:
+
+ ./configure CC="gcc -arch i386 -arch x86_64 -arch ppc -arch ppc64" \
+ CXX="g++ -arch i386 -arch x86_64 -arch ppc -arch ppc64" \
+ CPP="gcc -E" CXXCPP="g++ -E"
+
+ This is not guaranteed to produce working output in all cases, you
+may have to build one architecture at a time and combine the results
+using the `lipo' tool if you have problems.
+
+Installation Names
+==================
+
+ By default, `make install' installs the package's commands under
+`/usr/local/bin', include files under `/usr/local/include', etc. You
+can specify an installation prefix other than `/usr/local' by giving
+`configure' the option `--prefix=PREFIX', where PREFIX must be an
+absolute file name.
+
+ You can specify separate installation prefixes for
+architecture-specific files and architecture-independent files. If you
+pass the option `--exec-prefix=PREFIX' to `configure', the package uses
+PREFIX as the prefix for installing programs and libraries.
+Documentation and other data files still use the regular prefix.
+
+ In addition, if you use an unusual directory layout you can give
+options like `--bindir=DIR' to specify different values for particular
+kinds of files. Run `configure --help' for a list of the directories
+you can set and what kinds of files go in them. In general, the
+default for these options is expressed in terms of `${prefix}', so that
+specifying just `--prefix' will affect all of the other directory
+specifications that were not explicitly provided.
+
+ The most portable way to affect installation locations is to pass the
+correct locations to `configure'; however, many packages provide one or
+both of the following shortcuts of passing variable assignments to the
+`make install' command line to change installation locations without
+having to reconfigure or recompile.
+
+ The first method involves providing an override variable for each
+affected directory. For example, `make install
+prefix=/alternate/directory' will choose an alternate location for all
+directory configuration variables that were expressed in terms of
+`${prefix}'. Any directories that were specified during `configure',
+but not in terms of `${prefix}', must each be overridden at install
+time for the entire installation to be relocated. The approach of
+makefile variable overrides for each directory variable is required by
+the GNU Coding Standards, and ideally causes no recompilation.
+However, some platforms have known limitations with the semantics of
+shared libraries that end up requiring recompilation when using this
+method, particularly noticeable in packages that use GNU Libtool.
+
+ The second method involves providing the `DESTDIR' variable. For
+example, `make install DESTDIR=/alternate/directory' will prepend
+`/alternate/directory' before all installation names. The approach of
+`DESTDIR' overrides is not required by the GNU Coding Standards, and
+does not work on platforms that have drive letters. On the other hand,
+it does better at avoiding recompilation issues, and works well even
+when some directory options were not specified in terms of `${prefix}'
+at `configure' time.
+
+Optional Features
+=================
+
+ 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'.
+
+ 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.
+
+ Some packages offer the ability to configure how verbose the
+execution of `make' will be. For these packages, running `./configure
+--enable-silent-rules' sets the default to minimal output, which can be
+overridden with `make V=1'; while running `./configure
+--disable-silent-rules' sets the default to verbose, which can be
+overridden with `make V=0'.
+
+Particular systems
+==================
+
+ On HP-UX, the default C compiler is not ANSI C compatible. If GNU
+CC is not installed, it is recommended to use the following options in
+order to use an ANSI C compiler:
+
+ ./configure CC="cc -Ae -D_XOPEN_SOURCE=500"
+
+and if that doesn't work, install pre-built binaries of GCC for HP-UX.
+
+ HP-UX `make' updates targets which have the same time stamps as
+their prerequisites, which makes it generally unusable when shipped
+generated files such as `configure' are involved. Use GNU `make'
+instead.
+
+ On OSF/1 a.k.a. Tru64, some versions of the default C compiler cannot
+parse its `<wchar.h>' header file. The option `-nodtk' can be used as
+a workaround. If GNU CC is not installed, it is therefore recommended
+to try
+
+ ./configure CC="cc"
+
+and if that doesn't work, try
+
+ ./configure CC="cc -nodtk"
+
+ On Solaris, don't put `/usr/ucb' early in your `PATH'. This
+directory contains several dysfunctional programs; working variants of
+these programs are available in `/usr/bin'. So, if you need `/usr/ucb'
+in your `PATH', put it _after_ `/usr/bin'.
+
+ On Haiku, software installed for all users goes in `/boot/common',
+not `/usr/local'. It is recommended to use the following options:
+
+ ./configure --prefix=/boot/common
+
+Specifying the System Type
+==========================
+
+ There may be some features `configure' cannot figure out
+automatically, but needs to determine by the type of machine the package
+will run on. Usually, assuming the package is built to be run on the
+_same_ architectures, `configure' can figure that out, but if it prints
+a message saying it cannot guess the machine type, give it the
+`--build=TYPE' option. TYPE can either be a short name for the system
+type, such as `sun4', or a canonical name which has the form:
+
+ CPU-COMPANY-SYSTEM
+
+where SYSTEM can have one of these forms:
+
+ OS
+ KERNEL-OS
+
+ See the file `config.sub' for the possible values of each field. If
+`config.sub' isn't included in this package, then this package doesn't
+need to know the machine type.
+
+ If you are _building_ compiler tools for cross-compiling, you should
+use the option `--target=TYPE' to select the type of system they will
+produce code for.
+
+ If you want to _use_ a cross compiler, that generates code for a
+platform different from the build platform, you should specify the
+"host" platform (i.e., that on which the generated programs will
+eventually be run) with `--host=TYPE'.
+
+Sharing Defaults
+================
+
+ If you want to set default values for `configure' scripts to share,
+you can create a site shell script called `config.site' that gives
+default values for variables like `CC', `cache_file', and `prefix'.
+`configure' looks for `PREFIX/share/config.site' if it exists, then
+`PREFIX/etc/config.site' if it exists. Or, you can set the
+`CONFIG_SITE' environment variable to the location of the site script.
+A warning: not all `configure' scripts look for a site script.
+
+Defining Variables
+==================
+
+ Variables not defined in a site shell script can be set in the
+environment passed to `configure'. However, some packages may run
+configure again during the build, and the customized values of these
+variables may be lost. In order to avoid this problem, you should set
+them in the `configure' command line, using `VAR=value'. For example:
+
+ ./configure CC=/usr/local2/bin/gcc
+
+causes the specified `gcc' to be used as the C compiler (unless it is
+overridden in the site shell script).
+
+Unfortunately, this technique does not work for `CONFIG_SHELL' due to
+an Autoconf bug. Until the bug is fixed you can use this workaround:
+
+ CONFIG_SHELL=/bin/bash /bin/bash ./configure CONFIG_SHELL=/bin/bash
+
+`configure' Invocation
+======================
+
+ `configure' recognizes the following options to control how it
+operates.
+
+`--help'
+`-h'
+ Print a summary of all of the options to `configure', and exit.
+
+`--help=short'
+`--help=recursive'
+ Print a summary of the options unique to this package's
+ `configure', and exit. The `short' variant lists options used
+ only in the top level, while the `recursive' variant lists options
+ also present in any nested packages.
+
+`--version'
+`-V'
+ Print the version of Autoconf used to generate the `configure'
+ script, and exit.
+
+`--cache-file=FILE'
+ Enable the cache: use and save the results of the tests in FILE,
+ traditionally `config.cache'. FILE defaults to `/dev/null' to
+ disable caching.
+
+`--config-cache'
+`-C'
+ Alias for `--cache-file=config.cache'.
+
+`--quiet'
+`--silent'
+`-q'
+ Do not print messages saying which checks are being made. To
+ suppress all normal output, redirect it to `/dev/null' (any error
+ messages will still be shown).
+
+`--srcdir=DIR'
+ Look for the package's source code in directory DIR. Usually
+ `configure' can determine that directory automatically.
+
+`--prefix=DIR'
+ Use DIR as the installation prefix. *note Installation Names::
+ for more details, including other options available for fine-tuning
+ the installation locations.
+
+`--no-create'
+`-n'
+ Run the configure checks, but stop before creating any output
+ files.
+
+`configure' also accepts some other, not widely useful, options. Run
+`configure --help' for more details.
+
diff --git a/MPI/Makefile.am b/MPI/Makefile.am
new file mode 100644
index 0000000..549fe63
--- /dev/null
+++ b/MPI/Makefile.am
@@ -0,0 +1,33 @@
+CC = @MPICC@
+
+lib_LTLIBRARIES =
+lib_LIBRARIES =
+
+if BUILD_MPI
+
+include $(top_srcdir)/sources.am
+
+if BUILD_SSE3
+lib_LTLIBRARIES += ../src/libpll-sse3-mpi.la
+lib_LIBRARIES += ../src/libpll-sse3-mpi.a
+___src_libpll_sse3_mpi_la_SOURCES = $(ALL_SOURCES)
+___src_libpll_sse3_mpi_la_CFLAGS = -D_FINE_GRAIN_MPI -D__SSE3 -msse3 -c -O2 -fomit-frame-pointer -funroll-loops -Wall -Wredundant-decls -Wreturn-type -Wswitch-default -Wimplicit -Wimplicit-function-declaration -Wimplicit-int -Wimport -Wunused-label -Wno-int-to-pointer-cast -Wbad-function-cast -Wmissing-declarations -Wmissing-prototypes -Wnested-externs -Wold-style-definition -Wstrict-prototypes -Wpointer-sign -Wextra -Wredundant-decls -Wunused -Wunused-function -Wunused-parameter [...]
+___src_libpll_sse3_mpi_la_LDFLAGS = -version-info @LIBPLL_MAJOR@:@LIBPLL_MINOR@:@LIBPLL_REV@
+___src_libpll_sse3_mpi_a_SOURCES = $(___src_libpll_sse3_mpi_la_SOURCES)
+___src_libpll_sse3_mpi_a_CFLAGS = $(___src_libpll_sse3_mpi_la_CFLAGS)
+endif
+
+if BUILD_AVX
+lib_LTLIBRARIES += ../src/libpll-avx-mpi.la
+lib_LIBRARIES += ../src/libpll-avx-mpi.a
+___src_libpll_avx_mpi_la_SOURCES = $(AVX_SOURCES)
+___src_libpll_avx_mpi_la_CFLAGS = -D_FINE_GRAIN_MPI -D__SSE3 -D__AVX -mavx -c -O2 -fomit-frame-pointer -funroll-loops -Wall -Wredundant-decls -Wreturn-type -Wswitch-default -Wimplicit -Wimplicit-function-declaration -Wimplicit-int -Wimport -Wunused-label -Wno-int-to-pointer-cast -Wbad-function-cast -Wmissing-declarations -Wmissing-prototypes -Wnested-externs -Wold-style-definition -Wstrict-prototypes -Wpointer-sign -Wextra -Wredundant-decls -Wunused -Wunused-function -Wunused-para [...]
+___src_libpll_avx_mpi_la_LDFLAGS = -version-info @LIBPLL_MAJOR@:@LIBPLL_MINOR@:@LIBPLL_REV@
+___src_libpll_avx_mpi_a_SOURCES = $(___src_libpll_avx_mpi_la_SOURCES)
+___src_libpll_avx_mpi_a_CFLAGS = $(___src_libpll_avx_mpi_la_CFLAGS)
+endif
+
+#pkgincludedir=$(includedir)/pll
+#pkginclude_HEADERS = $(top_buildir)/src/pll.h $(top_buildir)/src/newick.h $(top_buildir)/src/stack.h $(top_buildir)/src/hash.h $(top_buildir)/src/errcodes.h $(top_buildir)/src/globalVariables.h $(top_buildir)/src/lexer.h $(top_buildir)/src/genericParallelization.h $(top_buildir)/src/treeIO.h $(top_buildir)/src/queue.h $(top_buildir)/src/parsePartition.h $(top_buildir)/src/mem_alloc.h $(top_buildir)/src/cycle.h
+#
+endif
diff --git a/MPI/Makefile.in b/MPI/Makefile.in
new file mode 100644
index 0000000..21cb921
--- /dev/null
+++ b/MPI/Makefile.in
@@ -0,0 +1,2354 @@
+# Makefile.in generated by automake 1.14.1 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994-2013 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.
+
+ at SET_MAKE@
+
+
+VPATH = @srcdir@
+am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__make_running_with_option = \
+ case $${target_option-} in \
+ ?) ;; \
+ *) echo "am__make_running_with_option: internal error: invalid" \
+ "target option '$${target_option-}' specified" >&2; \
+ exit 1;; \
+ esac; \
+ has_opt=no; \
+ sane_makeflags=$$MAKEFLAGS; \
+ if $(am__is_gnu_make); then \
+ sane_makeflags=$$MFLAGS; \
+ else \
+ case $$MAKEFLAGS in \
+ *\\[\ \ ]*) \
+ bs=\\; \
+ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
+ esac; \
+ fi; \
+ skip_next=no; \
+ strip_trailopt () \
+ { \
+ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+ }; \
+ for flg in $$sane_makeflags; do \
+ test $$skip_next = yes && { skip_next=no; continue; }; \
+ case $$flg in \
+ *=*|--*) continue;; \
+ -*I) strip_trailopt 'I'; skip_next=yes;; \
+ -*I?*) strip_trailopt 'I';; \
+ -*O) strip_trailopt 'O'; skip_next=yes;; \
+ -*O?*) strip_trailopt 'O';; \
+ -*l) strip_trailopt 'l'; skip_next=yes;; \
+ -*l?*) strip_trailopt 'l';; \
+ -[dEDm]) skip_next=yes;; \
+ -[JT]) skip_next=yes;; \
+ esac; \
+ case $$flg in \
+ *$$target_option*) has_opt=yes; break;; \
+ esac; \
+ done; \
+ test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+DIST_COMMON = $(top_srcdir)/sources.am $(srcdir)/Makefile.in \
+ $(srcdir)/Makefile.am $(top_srcdir)/depcomp
+ at BUILD_MPI_TRUE@@BUILD_SSE3_TRUE at am__append_1 = ../src/libpll-sse3-mpi.la
+ at BUILD_MPI_TRUE@@BUILD_SSE3_TRUE at am__append_2 = ../src/libpll-sse3-mpi.a
+ at BUILD_AVX_TRUE@@BUILD_MPI_TRUE at am__append_3 = ../src/libpll-avx-mpi.la
+ at BUILD_AVX_TRUE@@BUILD_MPI_TRUE at am__append_4 = ../src/libpll-avx-mpi.a
+subdir = MPI
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/ax_check_compile_flag.m4 \
+ $(top_srcdir)/m4/ax_ext.m4 \
+ $(top_srcdir)/m4/ax_gcc_x86_cpuid.m4 \
+ $(top_srcdir)/m4/ax_mpi.m4 $(top_srcdir)/m4/libtool.m4 \
+ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+ $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+ *) f=$$p;; \
+ esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+ for p in $$list; do echo "$$p $$p"; done | \
+ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+ if (++n[$$2] == $(am__install_max)) \
+ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+ END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+ test -z "$$files" \
+ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+ $(am__cd) "$$dir" && rm -f $$files; }; \
+ }
+am__installdirs = "$(DESTDIR)$(libdir)" "$(DESTDIR)$(libdir)"
+LIBRARIES = $(lib_LIBRARIES)
+ARFLAGS = cru
+AM_V_AR = $(am__v_AR_ at AM_V@)
+am__v_AR_ = $(am__v_AR_ at AM_DEFAULT_V@)
+am__v_AR_0 = @echo " AR " $@;
+am__v_AR_1 =
+___src_libpll_avx_mpi_a_AR = $(AR) $(ARFLAGS)
+___src_libpll_avx_mpi_a_LIBADD =
+am_____src_libpll_avx_mpi_a_SOURCES_DIST = ../src/avxLikelihood.c \
+ ../src/genericParallelization.c ../src/hash.c ../src/stack.c \
+ ../src/ssort.c ../src/queue.c ../src/utils.c \
+ ../src/randomTree.c ../src/optimizeModel.c ../src/trash.c \
+ ../src/searchAlgo.c ../src/topologies.c \
+ ../src/fastDNAparsimony.c ../src/treeIO.c ../src/models.c \
+ ../src/evaluatePartialGenericSpecial.c \
+ ../src/evaluateGenericSpecial.c ../src/newviewGenericSpecial.c \
+ ../src/makenewzGenericSpecial.c ../src/bipartitionList.c \
+ ../src/restartHashTable.c ../src/recom.c ../src/lexer.c \
+ ../src/alignment.c ../src/newick.c ../src/parsePartition.c \
+ ../src/parsimony.c
+am__dirstamp = $(am__leading_dot)dirstamp
+ at BUILD_MPI_TRUE@am__objects_1 = ../src/___src_libpll_avx_mpi_a-genericParallelization.$(OBJEXT) \
+ at BUILD_MPI_TRUE@ ../src/___src_libpll_avx_mpi_a-hash.$(OBJEXT) \
+ at BUILD_MPI_TRUE@ ../src/___src_libpll_avx_mpi_a-stack.$(OBJEXT) \
+ at BUILD_MPI_TRUE@ ../src/___src_libpll_avx_mpi_a-ssort.$(OBJEXT) \
+ at BUILD_MPI_TRUE@ ../src/___src_libpll_avx_mpi_a-queue.$(OBJEXT) \
+ at BUILD_MPI_TRUE@ ../src/___src_libpll_avx_mpi_a-utils.$(OBJEXT) \
+ at BUILD_MPI_TRUE@ ../src/___src_libpll_avx_mpi_a-randomTree.$(OBJEXT) \
+ at BUILD_MPI_TRUE@ ../src/___src_libpll_avx_mpi_a-optimizeModel.$(OBJEXT) \
+ at BUILD_MPI_TRUE@ ../src/___src_libpll_avx_mpi_a-trash.$(OBJEXT) \
+ at BUILD_MPI_TRUE@ ../src/___src_libpll_avx_mpi_a-searchAlgo.$(OBJEXT) \
+ at BUILD_MPI_TRUE@ ../src/___src_libpll_avx_mpi_a-topologies.$(OBJEXT) \
+ at BUILD_MPI_TRUE@ ../src/___src_libpll_avx_mpi_a-fastDNAparsimony.$(OBJEXT) \
+ at BUILD_MPI_TRUE@ ../src/___src_libpll_avx_mpi_a-treeIO.$(OBJEXT) \
+ at BUILD_MPI_TRUE@ ../src/___src_libpll_avx_mpi_a-models.$(OBJEXT) \
+ at BUILD_MPI_TRUE@ ../src/___src_libpll_avx_mpi_a-evaluatePartialGenericSpecial.$(OBJEXT) \
+ at BUILD_MPI_TRUE@ ../src/___src_libpll_avx_mpi_a-evaluateGenericSpecial.$(OBJEXT) \
+ at BUILD_MPI_TRUE@ ../src/___src_libpll_avx_mpi_a-newviewGenericSpecial.$(OBJEXT) \
+ at BUILD_MPI_TRUE@ ../src/___src_libpll_avx_mpi_a-makenewzGenericSpecial.$(OBJEXT) \
+ at BUILD_MPI_TRUE@ ../src/___src_libpll_avx_mpi_a-bipartitionList.$(OBJEXT) \
+ at BUILD_MPI_TRUE@ ../src/___src_libpll_avx_mpi_a-restartHashTable.$(OBJEXT) \
+ at BUILD_MPI_TRUE@ ../src/___src_libpll_avx_mpi_a-recom.$(OBJEXT) \
+ at BUILD_MPI_TRUE@ ../src/___src_libpll_avx_mpi_a-lexer.$(OBJEXT) \
+ at BUILD_MPI_TRUE@ ../src/___src_libpll_avx_mpi_a-alignment.$(OBJEXT) \
+ at BUILD_MPI_TRUE@ ../src/___src_libpll_avx_mpi_a-newick.$(OBJEXT) \
+ at BUILD_MPI_TRUE@ ../src/___src_libpll_avx_mpi_a-parsePartition.$(OBJEXT) \
+ at BUILD_MPI_TRUE@ ../src/___src_libpll_avx_mpi_a-parsimony.$(OBJEXT)
+ at BUILD_MPI_TRUE@am__objects_2 = ../src/___src_libpll_avx_mpi_a-avxLikelihood.$(OBJEXT) \
+ at BUILD_MPI_TRUE@ $(am__objects_1)
+ at BUILD_AVX_TRUE@@BUILD_MPI_TRUE at am__objects_3 = $(am__objects_2)
+ at BUILD_AVX_TRUE@@BUILD_MPI_TRUE at am____src_libpll_avx_mpi_a_OBJECTS = \
+ at BUILD_AVX_TRUE@@BUILD_MPI_TRUE@ $(am__objects_3)
+___src_libpll_avx_mpi_a_OBJECTS = \
+ $(am____src_libpll_avx_mpi_a_OBJECTS)
+___src_libpll_sse3_mpi_a_AR = $(AR) $(ARFLAGS)
+___src_libpll_sse3_mpi_a_LIBADD =
+am_____src_libpll_sse3_mpi_a_SOURCES_DIST = \
+ ../src/genericParallelization.c ../src/hash.c ../src/stack.c \
+ ../src/ssort.c ../src/queue.c ../src/utils.c \
+ ../src/randomTree.c ../src/optimizeModel.c ../src/trash.c \
+ ../src/searchAlgo.c ../src/topologies.c \
+ ../src/fastDNAparsimony.c ../src/treeIO.c ../src/models.c \
+ ../src/evaluatePartialGenericSpecial.c \
+ ../src/evaluateGenericSpecial.c ../src/newviewGenericSpecial.c \
+ ../src/makenewzGenericSpecial.c ../src/bipartitionList.c \
+ ../src/restartHashTable.c ../src/recom.c ../src/lexer.c \
+ ../src/alignment.c ../src/newick.c ../src/parsePartition.c \
+ ../src/parsimony.c
+ at BUILD_MPI_TRUE@am__objects_4 = ../src/___src_libpll_sse3_mpi_a-genericParallelization.$(OBJEXT) \
+ at BUILD_MPI_TRUE@ ../src/___src_libpll_sse3_mpi_a-hash.$(OBJEXT) \
+ at BUILD_MPI_TRUE@ ../src/___src_libpll_sse3_mpi_a-stack.$(OBJEXT) \
+ at BUILD_MPI_TRUE@ ../src/___src_libpll_sse3_mpi_a-ssort.$(OBJEXT) \
+ at BUILD_MPI_TRUE@ ../src/___src_libpll_sse3_mpi_a-queue.$(OBJEXT) \
+ at BUILD_MPI_TRUE@ ../src/___src_libpll_sse3_mpi_a-utils.$(OBJEXT) \
+ at BUILD_MPI_TRUE@ ../src/___src_libpll_sse3_mpi_a-randomTree.$(OBJEXT) \
+ at BUILD_MPI_TRUE@ ../src/___src_libpll_sse3_mpi_a-optimizeModel.$(OBJEXT) \
+ at BUILD_MPI_TRUE@ ../src/___src_libpll_sse3_mpi_a-trash.$(OBJEXT) \
+ at BUILD_MPI_TRUE@ ../src/___src_libpll_sse3_mpi_a-searchAlgo.$(OBJEXT) \
+ at BUILD_MPI_TRUE@ ../src/___src_libpll_sse3_mpi_a-topologies.$(OBJEXT) \
+ at BUILD_MPI_TRUE@ ../src/___src_libpll_sse3_mpi_a-fastDNAparsimony.$(OBJEXT) \
+ at BUILD_MPI_TRUE@ ../src/___src_libpll_sse3_mpi_a-treeIO.$(OBJEXT) \
+ at BUILD_MPI_TRUE@ ../src/___src_libpll_sse3_mpi_a-models.$(OBJEXT) \
+ at BUILD_MPI_TRUE@ ../src/___src_libpll_sse3_mpi_a-evaluatePartialGenericSpecial.$(OBJEXT) \
+ at BUILD_MPI_TRUE@ ../src/___src_libpll_sse3_mpi_a-evaluateGenericSpecial.$(OBJEXT) \
+ at BUILD_MPI_TRUE@ ../src/___src_libpll_sse3_mpi_a-newviewGenericSpecial.$(OBJEXT) \
+ at BUILD_MPI_TRUE@ ../src/___src_libpll_sse3_mpi_a-makenewzGenericSpecial.$(OBJEXT) \
+ at BUILD_MPI_TRUE@ ../src/___src_libpll_sse3_mpi_a-bipartitionList.$(OBJEXT) \
+ at BUILD_MPI_TRUE@ ../src/___src_libpll_sse3_mpi_a-restartHashTable.$(OBJEXT) \
+ at BUILD_MPI_TRUE@ ../src/___src_libpll_sse3_mpi_a-recom.$(OBJEXT) \
+ at BUILD_MPI_TRUE@ ../src/___src_libpll_sse3_mpi_a-lexer.$(OBJEXT) \
+ at BUILD_MPI_TRUE@ ../src/___src_libpll_sse3_mpi_a-alignment.$(OBJEXT) \
+ at BUILD_MPI_TRUE@ ../src/___src_libpll_sse3_mpi_a-newick.$(OBJEXT) \
+ at BUILD_MPI_TRUE@ ../src/___src_libpll_sse3_mpi_a-parsePartition.$(OBJEXT) \
+ at BUILD_MPI_TRUE@ ../src/___src_libpll_sse3_mpi_a-parsimony.$(OBJEXT)
+ at BUILD_MPI_TRUE@@BUILD_SSE3_TRUE at am__objects_5 = $(am__objects_4)
+ at BUILD_MPI_TRUE@@BUILD_SSE3_TRUE at am____src_libpll_sse3_mpi_a_OBJECTS = \
+ at BUILD_MPI_TRUE@@BUILD_SSE3_TRUE@ $(am__objects_5)
+___src_libpll_sse3_mpi_a_OBJECTS = \
+ $(am____src_libpll_sse3_mpi_a_OBJECTS)
+LTLIBRARIES = $(lib_LTLIBRARIES)
+___src_libpll_avx_mpi_la_LIBADD =
+am_____src_libpll_avx_mpi_la_SOURCES_DIST = ../src/avxLikelihood.c \
+ ../src/genericParallelization.c ../src/hash.c ../src/stack.c \
+ ../src/ssort.c ../src/queue.c ../src/utils.c \
+ ../src/randomTree.c ../src/optimizeModel.c ../src/trash.c \
+ ../src/searchAlgo.c ../src/topologies.c \
+ ../src/fastDNAparsimony.c ../src/treeIO.c ../src/models.c \
+ ../src/evaluatePartialGenericSpecial.c \
+ ../src/evaluateGenericSpecial.c ../src/newviewGenericSpecial.c \
+ ../src/makenewzGenericSpecial.c ../src/bipartitionList.c \
+ ../src/restartHashTable.c ../src/recom.c ../src/lexer.c \
+ ../src/alignment.c ../src/newick.c ../src/parsePartition.c \
+ ../src/parsimony.c
+ at BUILD_MPI_TRUE@am__objects_6 = ../src/___src_libpll_avx_mpi_la-genericParallelization.lo \
+ at BUILD_MPI_TRUE@ ../src/___src_libpll_avx_mpi_la-hash.lo \
+ at BUILD_MPI_TRUE@ ../src/___src_libpll_avx_mpi_la-stack.lo \
+ at BUILD_MPI_TRUE@ ../src/___src_libpll_avx_mpi_la-ssort.lo \
+ at BUILD_MPI_TRUE@ ../src/___src_libpll_avx_mpi_la-queue.lo \
+ at BUILD_MPI_TRUE@ ../src/___src_libpll_avx_mpi_la-utils.lo \
+ at BUILD_MPI_TRUE@ ../src/___src_libpll_avx_mpi_la-randomTree.lo \
+ at BUILD_MPI_TRUE@ ../src/___src_libpll_avx_mpi_la-optimizeModel.lo \
+ at BUILD_MPI_TRUE@ ../src/___src_libpll_avx_mpi_la-trash.lo \
+ at BUILD_MPI_TRUE@ ../src/___src_libpll_avx_mpi_la-searchAlgo.lo \
+ at BUILD_MPI_TRUE@ ../src/___src_libpll_avx_mpi_la-topologies.lo \
+ at BUILD_MPI_TRUE@ ../src/___src_libpll_avx_mpi_la-fastDNAparsimony.lo \
+ at BUILD_MPI_TRUE@ ../src/___src_libpll_avx_mpi_la-treeIO.lo \
+ at BUILD_MPI_TRUE@ ../src/___src_libpll_avx_mpi_la-models.lo \
+ at BUILD_MPI_TRUE@ ../src/___src_libpll_avx_mpi_la-evaluatePartialGenericSpecial.lo \
+ at BUILD_MPI_TRUE@ ../src/___src_libpll_avx_mpi_la-evaluateGenericSpecial.lo \
+ at BUILD_MPI_TRUE@ ../src/___src_libpll_avx_mpi_la-newviewGenericSpecial.lo \
+ at BUILD_MPI_TRUE@ ../src/___src_libpll_avx_mpi_la-makenewzGenericSpecial.lo \
+ at BUILD_MPI_TRUE@ ../src/___src_libpll_avx_mpi_la-bipartitionList.lo \
+ at BUILD_MPI_TRUE@ ../src/___src_libpll_avx_mpi_la-restartHashTable.lo \
+ at BUILD_MPI_TRUE@ ../src/___src_libpll_avx_mpi_la-recom.lo \
+ at BUILD_MPI_TRUE@ ../src/___src_libpll_avx_mpi_la-lexer.lo \
+ at BUILD_MPI_TRUE@ ../src/___src_libpll_avx_mpi_la-alignment.lo \
+ at BUILD_MPI_TRUE@ ../src/___src_libpll_avx_mpi_la-newick.lo \
+ at BUILD_MPI_TRUE@ ../src/___src_libpll_avx_mpi_la-parsePartition.lo \
+ at BUILD_MPI_TRUE@ ../src/___src_libpll_avx_mpi_la-parsimony.lo
+ at BUILD_MPI_TRUE@am__objects_7 = ../src/___src_libpll_avx_mpi_la-avxLikelihood.lo \
+ at BUILD_MPI_TRUE@ $(am__objects_6)
+ at BUILD_AVX_TRUE@@BUILD_MPI_TRUE at am____src_libpll_avx_mpi_la_OBJECTS = \
+ at BUILD_AVX_TRUE@@BUILD_MPI_TRUE@ $(am__objects_7)
+___src_libpll_avx_mpi_la_OBJECTS = \
+ $(am____src_libpll_avx_mpi_la_OBJECTS)
+AM_V_lt = $(am__v_lt_ at AM_V@)
+am__v_lt_ = $(am__v_lt_ at AM_DEFAULT_V@)
+am__v_lt_0 = --silent
+am__v_lt_1 =
+___src_libpll_avx_mpi_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
+ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
+ $(___src_libpll_avx_mpi_la_CFLAGS) $(CFLAGS) \
+ $(___src_libpll_avx_mpi_la_LDFLAGS) $(LDFLAGS) -o $@
+ at BUILD_AVX_TRUE@@BUILD_MPI_TRUE at am____src_libpll_avx_mpi_la_rpath = \
+ at BUILD_AVX_TRUE@@BUILD_MPI_TRUE@ -rpath $(libdir)
+___src_libpll_sse3_mpi_la_LIBADD =
+am_____src_libpll_sse3_mpi_la_SOURCES_DIST = \
+ ../src/genericParallelization.c ../src/hash.c ../src/stack.c \
+ ../src/ssort.c ../src/queue.c ../src/utils.c \
+ ../src/randomTree.c ../src/optimizeModel.c ../src/trash.c \
+ ../src/searchAlgo.c ../src/topologies.c \
+ ../src/fastDNAparsimony.c ../src/treeIO.c ../src/models.c \
+ ../src/evaluatePartialGenericSpecial.c \
+ ../src/evaluateGenericSpecial.c ../src/newviewGenericSpecial.c \
+ ../src/makenewzGenericSpecial.c ../src/bipartitionList.c \
+ ../src/restartHashTable.c ../src/recom.c ../src/lexer.c \
+ ../src/alignment.c ../src/newick.c ../src/parsePartition.c \
+ ../src/parsimony.c
+ at BUILD_MPI_TRUE@am__objects_8 = ../src/___src_libpll_sse3_mpi_la-genericParallelization.lo \
+ at BUILD_MPI_TRUE@ ../src/___src_libpll_sse3_mpi_la-hash.lo \
+ at BUILD_MPI_TRUE@ ../src/___src_libpll_sse3_mpi_la-stack.lo \
+ at BUILD_MPI_TRUE@ ../src/___src_libpll_sse3_mpi_la-ssort.lo \
+ at BUILD_MPI_TRUE@ ../src/___src_libpll_sse3_mpi_la-queue.lo \
+ at BUILD_MPI_TRUE@ ../src/___src_libpll_sse3_mpi_la-utils.lo \
+ at BUILD_MPI_TRUE@ ../src/___src_libpll_sse3_mpi_la-randomTree.lo \
+ at BUILD_MPI_TRUE@ ../src/___src_libpll_sse3_mpi_la-optimizeModel.lo \
+ at BUILD_MPI_TRUE@ ../src/___src_libpll_sse3_mpi_la-trash.lo \
+ at BUILD_MPI_TRUE@ ../src/___src_libpll_sse3_mpi_la-searchAlgo.lo \
+ at BUILD_MPI_TRUE@ ../src/___src_libpll_sse3_mpi_la-topologies.lo \
+ at BUILD_MPI_TRUE@ ../src/___src_libpll_sse3_mpi_la-fastDNAparsimony.lo \
+ at BUILD_MPI_TRUE@ ../src/___src_libpll_sse3_mpi_la-treeIO.lo \
+ at BUILD_MPI_TRUE@ ../src/___src_libpll_sse3_mpi_la-models.lo \
+ at BUILD_MPI_TRUE@ ../src/___src_libpll_sse3_mpi_la-evaluatePartialGenericSpecial.lo \
+ at BUILD_MPI_TRUE@ ../src/___src_libpll_sse3_mpi_la-evaluateGenericSpecial.lo \
+ at BUILD_MPI_TRUE@ ../src/___src_libpll_sse3_mpi_la-newviewGenericSpecial.lo \
+ at BUILD_MPI_TRUE@ ../src/___src_libpll_sse3_mpi_la-makenewzGenericSpecial.lo \
+ at BUILD_MPI_TRUE@ ../src/___src_libpll_sse3_mpi_la-bipartitionList.lo \
+ at BUILD_MPI_TRUE@ ../src/___src_libpll_sse3_mpi_la-restartHashTable.lo \
+ at BUILD_MPI_TRUE@ ../src/___src_libpll_sse3_mpi_la-recom.lo \
+ at BUILD_MPI_TRUE@ ../src/___src_libpll_sse3_mpi_la-lexer.lo \
+ at BUILD_MPI_TRUE@ ../src/___src_libpll_sse3_mpi_la-alignment.lo \
+ at BUILD_MPI_TRUE@ ../src/___src_libpll_sse3_mpi_la-newick.lo \
+ at BUILD_MPI_TRUE@ ../src/___src_libpll_sse3_mpi_la-parsePartition.lo \
+ at BUILD_MPI_TRUE@ ../src/___src_libpll_sse3_mpi_la-parsimony.lo
+ at BUILD_MPI_TRUE@@BUILD_SSE3_TRUE at am____src_libpll_sse3_mpi_la_OBJECTS = \
+ at BUILD_MPI_TRUE@@BUILD_SSE3_TRUE@ $(am__objects_8)
+___src_libpll_sse3_mpi_la_OBJECTS = \
+ $(am____src_libpll_sse3_mpi_la_OBJECTS)
+___src_libpll_sse3_mpi_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
+ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
+ $(___src_libpll_sse3_mpi_la_CFLAGS) $(CFLAGS) \
+ $(___src_libpll_sse3_mpi_la_LDFLAGS) $(LDFLAGS) -o $@
+ at BUILD_MPI_TRUE@@BUILD_SSE3_TRUE at am____src_libpll_sse3_mpi_la_rpath = \
+ at BUILD_MPI_TRUE@@BUILD_SSE3_TRUE@ -rpath $(libdir)
+AM_V_P = $(am__v_P_ at AM_V@)
+am__v_P_ = $(am__v_P_ at AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_ at AM_V@)
+am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
+am__v_GEN_0 = @echo " GEN " $@;
+am__v_GEN_1 =
+AM_V_at = $(am__v_at_ at AM_V@)
+am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 =
+DEFAULT_INCLUDES = -I. at am__isrc@ -I$(top_builddir)
+depcomp = $(SHELL) $(top_srcdir)/depcomp
+am__depfiles_maybe = depfiles
+am__mv = mv -f
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
+ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+ $(AM_CFLAGS) $(CFLAGS)
+AM_V_CC = $(am__v_CC_ at AM_V@)
+am__v_CC_ = $(am__v_CC_ at AM_DEFAULT_V@)
+am__v_CC_0 = @echo " CC " $@;
+am__v_CC_1 =
+CCLD = $(CC)
+LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+ $(AM_LDFLAGS) $(LDFLAGS) -o $@
+AM_V_CCLD = $(am__v_CCLD_ at AM_V@)
+am__v_CCLD_ = $(am__v_CCLD_ at AM_DEFAULT_V@)
+am__v_CCLD_0 = @echo " CCLD " $@;
+am__v_CCLD_1 =
+SOURCES = $(___src_libpll_avx_mpi_a_SOURCES) \
+ $(___src_libpll_sse3_mpi_a_SOURCES) \
+ $(___src_libpll_avx_mpi_la_SOURCES) \
+ $(___src_libpll_sse3_mpi_la_SOURCES)
+DIST_SOURCES = $(am_____src_libpll_avx_mpi_a_SOURCES_DIST) \
+ $(am_____src_libpll_sse3_mpi_a_SOURCES_DIST) \
+ $(am_____src_libpll_avx_mpi_la_SOURCES_DIST) \
+ $(am_____src_libpll_sse3_mpi_la_SOURCES_DIST)
+am__can_run_installinfo = \
+ case $$AM_UPDATE_INFO_DIR in \
+ n|no|NO) false;; \
+ *) (install-info --version) >/dev/null 2>&1;; \
+ esac
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates. Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+ BEGIN { nonempty = 0; } \
+ { items[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique. This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+ list='$(am__tagged_files)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | $(am__uniquify_input)`
+ETAGS = etags
+CTAGS = ctags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @MPICC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DLLTOOL = @DLLTOOL@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+GREP = @GREP@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBPLL_MAJOR = @LIBPLL_MAJOR@
+LIBPLL_MINOR = @LIBPLL_MINOR@
+LIBPLL_REV = @LIBPLL_REV@
+LIBPLL_VERSION = @LIBPLL_VERSION@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MKDIR_P = @MKDIR_P@
+MPICC = @MPICC@
+MPILIBS = @MPILIBS@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SIMD_FLAGS = @SIMD_FLAGS@
+STRIP = @STRIP@
+VERSION = @VERSION@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+lib_LTLIBRARIES = $(am__append_1) $(am__append_3)
+lib_LIBRARIES = $(am__append_2) $(am__append_4)
+ at BUILD_MPI_TRUE@ALL_SOURCES = ../src/genericParallelization.c ../src/hash.c ../src/stack.c ../src/ssort.c ../src/queue.c ../src/utils.c ../src/randomTree.c ../src/optimizeModel.c ../src/trash.c ../src/searchAlgo.c ../src/topologies.c ../src/fastDNAparsimony.c ../src/treeIO.c ../src/models.c ../src/evaluatePartialGenericSpecial.c ../src/evaluateGenericSpecial.c ../src/newviewGenericSpecial.c ../src/makenewzGenericSpecial.c ../src/bipartitionList.c ../src/restartHashTable.c ../src/recom.c [...]
+ at BUILD_MPI_TRUE@AVX_SOURCES = ../src/avxLikelihood.c $(ALL_SOURCES)
+ at BUILD_MPI_TRUE@@BUILD_SSE3_TRUE at ___src_libpll_sse3_mpi_la_SOURCES = $(ALL_SOURCES)
+ at BUILD_MPI_TRUE@@BUILD_SSE3_TRUE at ___src_libpll_sse3_mpi_la_CFLAGS = -D_FINE_GRAIN_MPI -D__SSE3 -msse3 -c -O2 -fomit-frame-pointer -funroll-loops -Wall -Wredundant-decls -Wreturn-type -Wswitch-default -Wimplicit -Wimplicit-function-declaration -Wimplicit-int -Wimport -Wunused-label -Wno-int-to-pointer-cast -Wbad-function-cast -Wmissing-declarations -Wmissing-prototypes -Wnested-externs -Wold-style-definition -Wstrict-prototypes -Wpointer-sign -Wextra -Wredundant-decls -Wunused -Wun [...]
+ at BUILD_MPI_TRUE@@BUILD_SSE3_TRUE at ___src_libpll_sse3_mpi_la_LDFLAGS = -version-info @LIBPLL_MAJOR@:@LIBPLL_MINOR@:@LIBPLL_REV@
+ at BUILD_MPI_TRUE@@BUILD_SSE3_TRUE at ___src_libpll_sse3_mpi_a_SOURCES = $(___src_libpll_sse3_mpi_la_SOURCES)
+ at BUILD_MPI_TRUE@@BUILD_SSE3_TRUE at ___src_libpll_sse3_mpi_a_CFLAGS = $(___src_libpll_sse3_mpi_la_CFLAGS)
+ at BUILD_AVX_TRUE@@BUILD_MPI_TRUE at ___src_libpll_avx_mpi_la_SOURCES = $(AVX_SOURCES)
+ at BUILD_AVX_TRUE@@BUILD_MPI_TRUE at ___src_libpll_avx_mpi_la_CFLAGS = -D_FINE_GRAIN_MPI -D__SSE3 -D__AVX -mavx -c -O2 -fomit-frame-pointer -funroll-loops -Wall -Wredundant-decls -Wreturn-type -Wswitch-default -Wimplicit -Wimplicit-function-declaration -Wimplicit-int -Wimport -Wunused-label -Wno-int-to-pointer-cast -Wbad-function-cast -Wmissing-declarations -Wmissing-prototypes -Wnested-externs -Wold-style-definition -Wstrict-prototypes -Wpointer-sign -Wextra -Wredundant-decls -Wunused [...]
+ at BUILD_AVX_TRUE@@BUILD_MPI_TRUE at ___src_libpll_avx_mpi_la_LDFLAGS = -version-info @LIBPLL_MAJOR@:@LIBPLL_MINOR@:@LIBPLL_REV@
+ at BUILD_AVX_TRUE@@BUILD_MPI_TRUE at ___src_libpll_avx_mpi_a_SOURCES = $(___src_libpll_avx_mpi_la_SOURCES)
+ at BUILD_AVX_TRUE@@BUILD_MPI_TRUE at ___src_libpll_avx_mpi_a_CFLAGS = $(___src_libpll_avx_mpi_la_CFLAGS)
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .lo .o .obj
+$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(top_srcdir)/sources.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu MPI/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --gnu MPI/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+$(top_srcdir)/sources.am:
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+install-libLIBRARIES: $(lib_LIBRARIES)
+ @$(NORMAL_INSTALL)
+ @list='$(lib_LIBRARIES)'; test -n "$(libdir)" || list=; \
+ list2=; for p in $$list; do \
+ if test -f $$p; then \
+ list2="$$list2 $$p"; \
+ else :; fi; \
+ done; \
+ test -z "$$list2" || { \
+ echo " $(MKDIR_P) '$(DESTDIR)$(libdir)'"; \
+ $(MKDIR_P) "$(DESTDIR)$(libdir)" || exit 1; \
+ echo " $(INSTALL_DATA) $$list2 '$(DESTDIR)$(libdir)'"; \
+ $(INSTALL_DATA) $$list2 "$(DESTDIR)$(libdir)" || exit $$?; }
+ @$(POST_INSTALL)
+ @list='$(lib_LIBRARIES)'; test -n "$(libdir)" || list=; \
+ for p in $$list; do \
+ if test -f $$p; then \
+ $(am__strip_dir) \
+ echo " ( cd '$(DESTDIR)$(libdir)' && $(RANLIB) $$f )"; \
+ ( cd "$(DESTDIR)$(libdir)" && $(RANLIB) $$f ) || exit $$?; \
+ else :; fi; \
+ done
+
+uninstall-libLIBRARIES:
+ @$(NORMAL_UNINSTALL)
+ @list='$(lib_LIBRARIES)'; test -n "$(libdir)" || list=; \
+ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+ dir='$(DESTDIR)$(libdir)'; $(am__uninstall_files_from_dir)
+
+clean-libLIBRARIES:
+ -test -z "$(lib_LIBRARIES)" || rm -f $(lib_LIBRARIES)
+../src/$(am__dirstamp):
+ @$(MKDIR_P) ../src
+ @: > ../src/$(am__dirstamp)
+../src/$(DEPDIR)/$(am__dirstamp):
+ @$(MKDIR_P) ../src/$(DEPDIR)
+ @: > ../src/$(DEPDIR)/$(am__dirstamp)
+../src/___src_libpll_avx_mpi_a-avxLikelihood.$(OBJEXT): \
+ ../src/$(am__dirstamp) ../src/$(DEPDIR)/$(am__dirstamp)
+../src/___src_libpll_avx_mpi_a-genericParallelization.$(OBJEXT): \
+ ../src/$(am__dirstamp) ../src/$(DEPDIR)/$(am__dirstamp)
+../src/___src_libpll_avx_mpi_a-hash.$(OBJEXT): ../src/$(am__dirstamp) \
+ ../src/$(DEPDIR)/$(am__dirstamp)
+../src/___src_libpll_avx_mpi_a-stack.$(OBJEXT): \
+ ../src/$(am__dirstamp) ../src/$(DEPDIR)/$(am__dirstamp)
+../src/___src_libpll_avx_mpi_a-ssort.$(OBJEXT): \
+ ../src/$(am__dirstamp) ../src/$(DEPDIR)/$(am__dirstamp)
+../src/___src_libpll_avx_mpi_a-queue.$(OBJEXT): \
+ ../src/$(am__dirstamp) ../src/$(DEPDIR)/$(am__dirstamp)
+../src/___src_libpll_avx_mpi_a-utils.$(OBJEXT): \
+ ../src/$(am__dirstamp) ../src/$(DEPDIR)/$(am__dirstamp)
+../src/___src_libpll_avx_mpi_a-randomTree.$(OBJEXT): \
+ ../src/$(am__dirstamp) ../src/$(DEPDIR)/$(am__dirstamp)
+../src/___src_libpll_avx_mpi_a-optimizeModel.$(OBJEXT): \
+ ../src/$(am__dirstamp) ../src/$(DEPDIR)/$(am__dirstamp)
+../src/___src_libpll_avx_mpi_a-trash.$(OBJEXT): \
+ ../src/$(am__dirstamp) ../src/$(DEPDIR)/$(am__dirstamp)
+../src/___src_libpll_avx_mpi_a-searchAlgo.$(OBJEXT): \
+ ../src/$(am__dirstamp) ../src/$(DEPDIR)/$(am__dirstamp)
+../src/___src_libpll_avx_mpi_a-topologies.$(OBJEXT): \
+ ../src/$(am__dirstamp) ../src/$(DEPDIR)/$(am__dirstamp)
+../src/___src_libpll_avx_mpi_a-fastDNAparsimony.$(OBJEXT): \
+ ../src/$(am__dirstamp) ../src/$(DEPDIR)/$(am__dirstamp)
+../src/___src_libpll_avx_mpi_a-treeIO.$(OBJEXT): \
+ ../src/$(am__dirstamp) ../src/$(DEPDIR)/$(am__dirstamp)
+../src/___src_libpll_avx_mpi_a-models.$(OBJEXT): \
+ ../src/$(am__dirstamp) ../src/$(DEPDIR)/$(am__dirstamp)
+../src/___src_libpll_avx_mpi_a-evaluatePartialGenericSpecial.$(OBJEXT): \
+ ../src/$(am__dirstamp) ../src/$(DEPDIR)/$(am__dirstamp)
+../src/___src_libpll_avx_mpi_a-evaluateGenericSpecial.$(OBJEXT): \
+ ../src/$(am__dirstamp) ../src/$(DEPDIR)/$(am__dirstamp)
+../src/___src_libpll_avx_mpi_a-newviewGenericSpecial.$(OBJEXT): \
+ ../src/$(am__dirstamp) ../src/$(DEPDIR)/$(am__dirstamp)
+../src/___src_libpll_avx_mpi_a-makenewzGenericSpecial.$(OBJEXT): \
+ ../src/$(am__dirstamp) ../src/$(DEPDIR)/$(am__dirstamp)
+../src/___src_libpll_avx_mpi_a-bipartitionList.$(OBJEXT): \
+ ../src/$(am__dirstamp) ../src/$(DEPDIR)/$(am__dirstamp)
+../src/___src_libpll_avx_mpi_a-restartHashTable.$(OBJEXT): \
+ ../src/$(am__dirstamp) ../src/$(DEPDIR)/$(am__dirstamp)
+../src/___src_libpll_avx_mpi_a-recom.$(OBJEXT): \
+ ../src/$(am__dirstamp) ../src/$(DEPDIR)/$(am__dirstamp)
+../src/___src_libpll_avx_mpi_a-lexer.$(OBJEXT): \
+ ../src/$(am__dirstamp) ../src/$(DEPDIR)/$(am__dirstamp)
+../src/___src_libpll_avx_mpi_a-alignment.$(OBJEXT): \
+ ../src/$(am__dirstamp) ../src/$(DEPDIR)/$(am__dirstamp)
+../src/___src_libpll_avx_mpi_a-newick.$(OBJEXT): \
+ ../src/$(am__dirstamp) ../src/$(DEPDIR)/$(am__dirstamp)
+../src/___src_libpll_avx_mpi_a-parsePartition.$(OBJEXT): \
+ ../src/$(am__dirstamp) ../src/$(DEPDIR)/$(am__dirstamp)
+../src/___src_libpll_avx_mpi_a-parsimony.$(OBJEXT): \
+ ../src/$(am__dirstamp) ../src/$(DEPDIR)/$(am__dirstamp)
+
+../src/libpll-avx-mpi.a: $(___src_libpll_avx_mpi_a_OBJECTS) $(___src_libpll_avx_mpi_a_DEPENDENCIES) $(EXTRA____src_libpll_avx_mpi_a_DEPENDENCIES) ../src/$(am__dirstamp)
+ $(AM_V_at)-rm -f ../src/libpll-avx-mpi.a
+ $(AM_V_AR)$(___src_libpll_avx_mpi_a_AR) ../src/libpll-avx-mpi.a $(___src_libpll_avx_mpi_a_OBJECTS) $(___src_libpll_avx_mpi_a_LIBADD)
+ $(AM_V_at)$(RANLIB) ../src/libpll-avx-mpi.a
+../src/___src_libpll_sse3_mpi_a-genericParallelization.$(OBJEXT): \
+ ../src/$(am__dirstamp) ../src/$(DEPDIR)/$(am__dirstamp)
+../src/___src_libpll_sse3_mpi_a-hash.$(OBJEXT): \
+ ../src/$(am__dirstamp) ../src/$(DEPDIR)/$(am__dirstamp)
+../src/___src_libpll_sse3_mpi_a-stack.$(OBJEXT): \
+ ../src/$(am__dirstamp) ../src/$(DEPDIR)/$(am__dirstamp)
+../src/___src_libpll_sse3_mpi_a-ssort.$(OBJEXT): \
+ ../src/$(am__dirstamp) ../src/$(DEPDIR)/$(am__dirstamp)
+../src/___src_libpll_sse3_mpi_a-queue.$(OBJEXT): \
+ ../src/$(am__dirstamp) ../src/$(DEPDIR)/$(am__dirstamp)
+../src/___src_libpll_sse3_mpi_a-utils.$(OBJEXT): \
+ ../src/$(am__dirstamp) ../src/$(DEPDIR)/$(am__dirstamp)
+../src/___src_libpll_sse3_mpi_a-randomTree.$(OBJEXT): \
+ ../src/$(am__dirstamp) ../src/$(DEPDIR)/$(am__dirstamp)
+../src/___src_libpll_sse3_mpi_a-optimizeModel.$(OBJEXT): \
+ ../src/$(am__dirstamp) ../src/$(DEPDIR)/$(am__dirstamp)
+../src/___src_libpll_sse3_mpi_a-trash.$(OBJEXT): \
+ ../src/$(am__dirstamp) ../src/$(DEPDIR)/$(am__dirstamp)
+../src/___src_libpll_sse3_mpi_a-searchAlgo.$(OBJEXT): \
+ ../src/$(am__dirstamp) ../src/$(DEPDIR)/$(am__dirstamp)
+../src/___src_libpll_sse3_mpi_a-topologies.$(OBJEXT): \
+ ../src/$(am__dirstamp) ../src/$(DEPDIR)/$(am__dirstamp)
+../src/___src_libpll_sse3_mpi_a-fastDNAparsimony.$(OBJEXT): \
+ ../src/$(am__dirstamp) ../src/$(DEPDIR)/$(am__dirstamp)
+../src/___src_libpll_sse3_mpi_a-treeIO.$(OBJEXT): \
+ ../src/$(am__dirstamp) ../src/$(DEPDIR)/$(am__dirstamp)
+../src/___src_libpll_sse3_mpi_a-models.$(OBJEXT): \
+ ../src/$(am__dirstamp) ../src/$(DEPDIR)/$(am__dirstamp)
+../src/___src_libpll_sse3_mpi_a-evaluatePartialGenericSpecial.$(OBJEXT): \
+ ../src/$(am__dirstamp) ../src/$(DEPDIR)/$(am__dirstamp)
+../src/___src_libpll_sse3_mpi_a-evaluateGenericSpecial.$(OBJEXT): \
+ ../src/$(am__dirstamp) ../src/$(DEPDIR)/$(am__dirstamp)
+../src/___src_libpll_sse3_mpi_a-newviewGenericSpecial.$(OBJEXT): \
+ ../src/$(am__dirstamp) ../src/$(DEPDIR)/$(am__dirstamp)
+../src/___src_libpll_sse3_mpi_a-makenewzGenericSpecial.$(OBJEXT): \
+ ../src/$(am__dirstamp) ../src/$(DEPDIR)/$(am__dirstamp)
+../src/___src_libpll_sse3_mpi_a-bipartitionList.$(OBJEXT): \
+ ../src/$(am__dirstamp) ../src/$(DEPDIR)/$(am__dirstamp)
+../src/___src_libpll_sse3_mpi_a-restartHashTable.$(OBJEXT): \
+ ../src/$(am__dirstamp) ../src/$(DEPDIR)/$(am__dirstamp)
+../src/___src_libpll_sse3_mpi_a-recom.$(OBJEXT): \
+ ../src/$(am__dirstamp) ../src/$(DEPDIR)/$(am__dirstamp)
+../src/___src_libpll_sse3_mpi_a-lexer.$(OBJEXT): \
+ ../src/$(am__dirstamp) ../src/$(DEPDIR)/$(am__dirstamp)
+../src/___src_libpll_sse3_mpi_a-alignment.$(OBJEXT): \
+ ../src/$(am__dirstamp) ../src/$(DEPDIR)/$(am__dirstamp)
+../src/___src_libpll_sse3_mpi_a-newick.$(OBJEXT): \
+ ../src/$(am__dirstamp) ../src/$(DEPDIR)/$(am__dirstamp)
+../src/___src_libpll_sse3_mpi_a-parsePartition.$(OBJEXT): \
+ ../src/$(am__dirstamp) ../src/$(DEPDIR)/$(am__dirstamp)
+../src/___src_libpll_sse3_mpi_a-parsimony.$(OBJEXT): \
+ ../src/$(am__dirstamp) ../src/$(DEPDIR)/$(am__dirstamp)
+
+../src/libpll-sse3-mpi.a: $(___src_libpll_sse3_mpi_a_OBJECTS) $(___src_libpll_sse3_mpi_a_DEPENDENCIES) $(EXTRA____src_libpll_sse3_mpi_a_DEPENDENCIES) ../src/$(am__dirstamp)
+ $(AM_V_at)-rm -f ../src/libpll-sse3-mpi.a
+ $(AM_V_AR)$(___src_libpll_sse3_mpi_a_AR) ../src/libpll-sse3-mpi.a $(___src_libpll_sse3_mpi_a_OBJECTS) $(___src_libpll_sse3_mpi_a_LIBADD)
+ $(AM_V_at)$(RANLIB) ../src/libpll-sse3-mpi.a
+
+install-libLTLIBRARIES: $(lib_LTLIBRARIES)
+ @$(NORMAL_INSTALL)
+ @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \
+ list2=; for p in $$list; do \
+ if test -f $$p; then \
+ list2="$$list2 $$p"; \
+ else :; fi; \
+ done; \
+ test -z "$$list2" || { \
+ echo " $(MKDIR_P) '$(DESTDIR)$(libdir)'"; \
+ $(MKDIR_P) "$(DESTDIR)$(libdir)" || exit 1; \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(libdir)'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(libdir)"; \
+ }
+
+uninstall-libLTLIBRARIES:
+ @$(NORMAL_UNINSTALL)
+ @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \
+ for p in $$list; do \
+ $(am__strip_dir) \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$f'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$f"; \
+ done
+
+clean-libLTLIBRARIES:
+ -test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES)
+ @list='$(lib_LTLIBRARIES)'; \
+ locs=`for p in $$list; do echo $$p; done | \
+ sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \
+ sort -u`; \
+ test -z "$$locs" || { \
+ echo rm -f $${locs}; \
+ rm -f $${locs}; \
+ }
+../src/___src_libpll_avx_mpi_la-avxLikelihood.lo: \
+ ../src/$(am__dirstamp) ../src/$(DEPDIR)/$(am__dirstamp)
+../src/___src_libpll_avx_mpi_la-genericParallelization.lo: \
+ ../src/$(am__dirstamp) ../src/$(DEPDIR)/$(am__dirstamp)
+../src/___src_libpll_avx_mpi_la-hash.lo: ../src/$(am__dirstamp) \
+ ../src/$(DEPDIR)/$(am__dirstamp)
+../src/___src_libpll_avx_mpi_la-stack.lo: ../src/$(am__dirstamp) \
+ ../src/$(DEPDIR)/$(am__dirstamp)
+../src/___src_libpll_avx_mpi_la-ssort.lo: ../src/$(am__dirstamp) \
+ ../src/$(DEPDIR)/$(am__dirstamp)
+../src/___src_libpll_avx_mpi_la-queue.lo: ../src/$(am__dirstamp) \
+ ../src/$(DEPDIR)/$(am__dirstamp)
+../src/___src_libpll_avx_mpi_la-utils.lo: ../src/$(am__dirstamp) \
+ ../src/$(DEPDIR)/$(am__dirstamp)
+../src/___src_libpll_avx_mpi_la-randomTree.lo: ../src/$(am__dirstamp) \
+ ../src/$(DEPDIR)/$(am__dirstamp)
+../src/___src_libpll_avx_mpi_la-optimizeModel.lo: \
+ ../src/$(am__dirstamp) ../src/$(DEPDIR)/$(am__dirstamp)
+../src/___src_libpll_avx_mpi_la-trash.lo: ../src/$(am__dirstamp) \
+ ../src/$(DEPDIR)/$(am__dirstamp)
+../src/___src_libpll_avx_mpi_la-searchAlgo.lo: ../src/$(am__dirstamp) \
+ ../src/$(DEPDIR)/$(am__dirstamp)
+../src/___src_libpll_avx_mpi_la-topologies.lo: ../src/$(am__dirstamp) \
+ ../src/$(DEPDIR)/$(am__dirstamp)
+../src/___src_libpll_avx_mpi_la-fastDNAparsimony.lo: \
+ ../src/$(am__dirstamp) ../src/$(DEPDIR)/$(am__dirstamp)
+../src/___src_libpll_avx_mpi_la-treeIO.lo: ../src/$(am__dirstamp) \
+ ../src/$(DEPDIR)/$(am__dirstamp)
+../src/___src_libpll_avx_mpi_la-models.lo: ../src/$(am__dirstamp) \
+ ../src/$(DEPDIR)/$(am__dirstamp)
+../src/___src_libpll_avx_mpi_la-evaluatePartialGenericSpecial.lo: \
+ ../src/$(am__dirstamp) ../src/$(DEPDIR)/$(am__dirstamp)
+../src/___src_libpll_avx_mpi_la-evaluateGenericSpecial.lo: \
+ ../src/$(am__dirstamp) ../src/$(DEPDIR)/$(am__dirstamp)
+../src/___src_libpll_avx_mpi_la-newviewGenericSpecial.lo: \
+ ../src/$(am__dirstamp) ../src/$(DEPDIR)/$(am__dirstamp)
+../src/___src_libpll_avx_mpi_la-makenewzGenericSpecial.lo: \
+ ../src/$(am__dirstamp) ../src/$(DEPDIR)/$(am__dirstamp)
+../src/___src_libpll_avx_mpi_la-bipartitionList.lo: \
+ ../src/$(am__dirstamp) ../src/$(DEPDIR)/$(am__dirstamp)
+../src/___src_libpll_avx_mpi_la-restartHashTable.lo: \
+ ../src/$(am__dirstamp) ../src/$(DEPDIR)/$(am__dirstamp)
+../src/___src_libpll_avx_mpi_la-recom.lo: ../src/$(am__dirstamp) \
+ ../src/$(DEPDIR)/$(am__dirstamp)
+../src/___src_libpll_avx_mpi_la-lexer.lo: ../src/$(am__dirstamp) \
+ ../src/$(DEPDIR)/$(am__dirstamp)
+../src/___src_libpll_avx_mpi_la-alignment.lo: ../src/$(am__dirstamp) \
+ ../src/$(DEPDIR)/$(am__dirstamp)
+../src/___src_libpll_avx_mpi_la-newick.lo: ../src/$(am__dirstamp) \
+ ../src/$(DEPDIR)/$(am__dirstamp)
+../src/___src_libpll_avx_mpi_la-parsePartition.lo: \
+ ../src/$(am__dirstamp) ../src/$(DEPDIR)/$(am__dirstamp)
+../src/___src_libpll_avx_mpi_la-parsimony.lo: ../src/$(am__dirstamp) \
+ ../src/$(DEPDIR)/$(am__dirstamp)
+
+../src/libpll-avx-mpi.la: $(___src_libpll_avx_mpi_la_OBJECTS) $(___src_libpll_avx_mpi_la_DEPENDENCIES) $(EXTRA____src_libpll_avx_mpi_la_DEPENDENCIES) ../src/$(am__dirstamp)
+ $(AM_V_CCLD)$(___src_libpll_avx_mpi_la_LINK) $(am____src_libpll_avx_mpi_la_rpath) $(___src_libpll_avx_mpi_la_OBJECTS) $(___src_libpll_avx_mpi_la_LIBADD) $(LIBS)
+../src/___src_libpll_sse3_mpi_la-genericParallelization.lo: \
+ ../src/$(am__dirstamp) ../src/$(DEPDIR)/$(am__dirstamp)
+../src/___src_libpll_sse3_mpi_la-hash.lo: ../src/$(am__dirstamp) \
+ ../src/$(DEPDIR)/$(am__dirstamp)
+../src/___src_libpll_sse3_mpi_la-stack.lo: ../src/$(am__dirstamp) \
+ ../src/$(DEPDIR)/$(am__dirstamp)
+../src/___src_libpll_sse3_mpi_la-ssort.lo: ../src/$(am__dirstamp) \
+ ../src/$(DEPDIR)/$(am__dirstamp)
+../src/___src_libpll_sse3_mpi_la-queue.lo: ../src/$(am__dirstamp) \
+ ../src/$(DEPDIR)/$(am__dirstamp)
+../src/___src_libpll_sse3_mpi_la-utils.lo: ../src/$(am__dirstamp) \
+ ../src/$(DEPDIR)/$(am__dirstamp)
+../src/___src_libpll_sse3_mpi_la-randomTree.lo: \
+ ../src/$(am__dirstamp) ../src/$(DEPDIR)/$(am__dirstamp)
+../src/___src_libpll_sse3_mpi_la-optimizeModel.lo: \
+ ../src/$(am__dirstamp) ../src/$(DEPDIR)/$(am__dirstamp)
+../src/___src_libpll_sse3_mpi_la-trash.lo: ../src/$(am__dirstamp) \
+ ../src/$(DEPDIR)/$(am__dirstamp)
+../src/___src_libpll_sse3_mpi_la-searchAlgo.lo: \
+ ../src/$(am__dirstamp) ../src/$(DEPDIR)/$(am__dirstamp)
+../src/___src_libpll_sse3_mpi_la-topologies.lo: \
+ ../src/$(am__dirstamp) ../src/$(DEPDIR)/$(am__dirstamp)
+../src/___src_libpll_sse3_mpi_la-fastDNAparsimony.lo: \
+ ../src/$(am__dirstamp) ../src/$(DEPDIR)/$(am__dirstamp)
+../src/___src_libpll_sse3_mpi_la-treeIO.lo: ../src/$(am__dirstamp) \
+ ../src/$(DEPDIR)/$(am__dirstamp)
+../src/___src_libpll_sse3_mpi_la-models.lo: ../src/$(am__dirstamp) \
+ ../src/$(DEPDIR)/$(am__dirstamp)
+../src/___src_libpll_sse3_mpi_la-evaluatePartialGenericSpecial.lo: \
+ ../src/$(am__dirstamp) ../src/$(DEPDIR)/$(am__dirstamp)
+../src/___src_libpll_sse3_mpi_la-evaluateGenericSpecial.lo: \
+ ../src/$(am__dirstamp) ../src/$(DEPDIR)/$(am__dirstamp)
+../src/___src_libpll_sse3_mpi_la-newviewGenericSpecial.lo: \
+ ../src/$(am__dirstamp) ../src/$(DEPDIR)/$(am__dirstamp)
+../src/___src_libpll_sse3_mpi_la-makenewzGenericSpecial.lo: \
+ ../src/$(am__dirstamp) ../src/$(DEPDIR)/$(am__dirstamp)
+../src/___src_libpll_sse3_mpi_la-bipartitionList.lo: \
+ ../src/$(am__dirstamp) ../src/$(DEPDIR)/$(am__dirstamp)
+../src/___src_libpll_sse3_mpi_la-restartHashTable.lo: \
+ ../src/$(am__dirstamp) ../src/$(DEPDIR)/$(am__dirstamp)
+../src/___src_libpll_sse3_mpi_la-recom.lo: ../src/$(am__dirstamp) \
+ ../src/$(DEPDIR)/$(am__dirstamp)
+../src/___src_libpll_sse3_mpi_la-lexer.lo: ../src/$(am__dirstamp) \
+ ../src/$(DEPDIR)/$(am__dirstamp)
+../src/___src_libpll_sse3_mpi_la-alignment.lo: ../src/$(am__dirstamp) \
+ ../src/$(DEPDIR)/$(am__dirstamp)
+../src/___src_libpll_sse3_mpi_la-newick.lo: ../src/$(am__dirstamp) \
+ ../src/$(DEPDIR)/$(am__dirstamp)
+../src/___src_libpll_sse3_mpi_la-parsePartition.lo: \
+ ../src/$(am__dirstamp) ../src/$(DEPDIR)/$(am__dirstamp)
+../src/___src_libpll_sse3_mpi_la-parsimony.lo: ../src/$(am__dirstamp) \
+ ../src/$(DEPDIR)/$(am__dirstamp)
+
+../src/libpll-sse3-mpi.la: $(___src_libpll_sse3_mpi_la_OBJECTS) $(___src_libpll_sse3_mpi_la_DEPENDENCIES) $(EXTRA____src_libpll_sse3_mpi_la_DEPENDENCIES) ../src/$(am__dirstamp)
+ $(AM_V_CCLD)$(___src_libpll_sse3_mpi_la_LINK) $(am____src_libpll_sse3_mpi_la_rpath) $(___src_libpll_sse3_mpi_la_OBJECTS) $(___src_libpll_sse3_mpi_la_LIBADD) $(LIBS)
+
+mostlyclean-compile:
+ -rm -f *.$(OBJEXT)
+ -rm -f ../src/*.$(OBJEXT)
+ -rm -f ../src/*.lo
+
+distclean-compile:
+ -rm -f *.tab.c
+
+ at AMDEP_TRUE@@am__include@ @am__quote at ../src/$(DEPDIR)/___src_libpll_avx_mpi_a-alignment.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ../src/$(DEPDIR)/___src_libpll_avx_mpi_a-avxLikelihood.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ../src/$(DEPDIR)/___src_libpll_avx_mpi_a-bipartitionList.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ../src/$(DEPDIR)/___src_libpll_avx_mpi_a-evaluateGenericSpecial.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ../src/$(DEPDIR)/___src_libpll_avx_mpi_a-evaluatePartialGenericSpecial.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ../src/$(DEPDIR)/___src_libpll_avx_mpi_a-fastDNAparsimony.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ../src/$(DEPDIR)/___src_libpll_avx_mpi_a-genericParallelization.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ../src/$(DEPDIR)/___src_libpll_avx_mpi_a-hash.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ../src/$(DEPDIR)/___src_libpll_avx_mpi_a-lexer.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ../src/$(DEPDIR)/___src_libpll_avx_mpi_a-makenewzGenericSpecial.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ../src/$(DEPDIR)/___src_libpll_avx_mpi_a-models.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ../src/$(DEPDIR)/___src_libpll_avx_mpi_a-newick.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ../src/$(DEPDIR)/___src_libpll_avx_mpi_a-newviewGenericSpecial.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ../src/$(DEPDIR)/___src_libpll_avx_mpi_a-optimizeModel.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ../src/$(DEPDIR)/___src_libpll_avx_mpi_a-parsePartition.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ../src/$(DEPDIR)/___src_libpll_avx_mpi_a-parsimony.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ../src/$(DEPDIR)/___src_libpll_avx_mpi_a-queue.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ../src/$(DEPDIR)/___src_libpll_avx_mpi_a-randomTree.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ../src/$(DEPDIR)/___src_libpll_avx_mpi_a-recom.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ../src/$(DEPDIR)/___src_libpll_avx_mpi_a-restartHashTable.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ../src/$(DEPDIR)/___src_libpll_avx_mpi_a-searchAlgo.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ../src/$(DEPDIR)/___src_libpll_avx_mpi_a-ssort.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ../src/$(DEPDIR)/___src_libpll_avx_mpi_a-stack.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ../src/$(DEPDIR)/___src_libpll_avx_mpi_a-topologies.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ../src/$(DEPDIR)/___src_libpll_avx_mpi_a-trash.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ../src/$(DEPDIR)/___src_libpll_avx_mpi_a-treeIO.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ../src/$(DEPDIR)/___src_libpll_avx_mpi_a-utils.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ../src/$(DEPDIR)/___src_libpll_avx_mpi_la-alignment.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ../src/$(DEPDIR)/___src_libpll_avx_mpi_la-avxLikelihood.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ../src/$(DEPDIR)/___src_libpll_avx_mpi_la-bipartitionList.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ../src/$(DEPDIR)/___src_libpll_avx_mpi_la-evaluateGenericSpecial.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ../src/$(DEPDIR)/___src_libpll_avx_mpi_la-evaluatePartialGenericSpecial.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ../src/$(DEPDIR)/___src_libpll_avx_mpi_la-fastDNAparsimony.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ../src/$(DEPDIR)/___src_libpll_avx_mpi_la-genericParallelization.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ../src/$(DEPDIR)/___src_libpll_avx_mpi_la-hash.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ../src/$(DEPDIR)/___src_libpll_avx_mpi_la-lexer.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ../src/$(DEPDIR)/___src_libpll_avx_mpi_la-makenewzGenericSpecial.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ../src/$(DEPDIR)/___src_libpll_avx_mpi_la-models.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ../src/$(DEPDIR)/___src_libpll_avx_mpi_la-newick.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ../src/$(DEPDIR)/___src_libpll_avx_mpi_la-newviewGenericSpecial.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ../src/$(DEPDIR)/___src_libpll_avx_mpi_la-optimizeModel.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ../src/$(DEPDIR)/___src_libpll_avx_mpi_la-parsePartition.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ../src/$(DEPDIR)/___src_libpll_avx_mpi_la-parsimony.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ../src/$(DEPDIR)/___src_libpll_avx_mpi_la-queue.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ../src/$(DEPDIR)/___src_libpll_avx_mpi_la-randomTree.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ../src/$(DEPDIR)/___src_libpll_avx_mpi_la-recom.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ../src/$(DEPDIR)/___src_libpll_avx_mpi_la-restartHashTable.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ../src/$(DEPDIR)/___src_libpll_avx_mpi_la-searchAlgo.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ../src/$(DEPDIR)/___src_libpll_avx_mpi_la-ssort.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ../src/$(DEPDIR)/___src_libpll_avx_mpi_la-stack.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ../src/$(DEPDIR)/___src_libpll_avx_mpi_la-topologies.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ../src/$(DEPDIR)/___src_libpll_avx_mpi_la-trash.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ../src/$(DEPDIR)/___src_libpll_avx_mpi_la-treeIO.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ../src/$(DEPDIR)/___src_libpll_avx_mpi_la-utils.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ../src/$(DEPDIR)/___src_libpll_sse3_mpi_a-alignment.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ../src/$(DEPDIR)/___src_libpll_sse3_mpi_a-bipartitionList.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ../src/$(DEPDIR)/___src_libpll_sse3_mpi_a-evaluateGenericSpecial.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ../src/$(DEPDIR)/___src_libpll_sse3_mpi_a-evaluatePartialGenericSpecial.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ../src/$(DEPDIR)/___src_libpll_sse3_mpi_a-fastDNAparsimony.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ../src/$(DEPDIR)/___src_libpll_sse3_mpi_a-genericParallelization.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ../src/$(DEPDIR)/___src_libpll_sse3_mpi_a-hash.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ../src/$(DEPDIR)/___src_libpll_sse3_mpi_a-lexer.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ../src/$(DEPDIR)/___src_libpll_sse3_mpi_a-makenewzGenericSpecial.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ../src/$(DEPDIR)/___src_libpll_sse3_mpi_a-models.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ../src/$(DEPDIR)/___src_libpll_sse3_mpi_a-newick.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ../src/$(DEPDIR)/___src_libpll_sse3_mpi_a-newviewGenericSpecial.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ../src/$(DEPDIR)/___src_libpll_sse3_mpi_a-optimizeModel.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ../src/$(DEPDIR)/___src_libpll_sse3_mpi_a-parsePartition.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ../src/$(DEPDIR)/___src_libpll_sse3_mpi_a-parsimony.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ../src/$(DEPDIR)/___src_libpll_sse3_mpi_a-queue.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ../src/$(DEPDIR)/___src_libpll_sse3_mpi_a-randomTree.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ../src/$(DEPDIR)/___src_libpll_sse3_mpi_a-recom.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ../src/$(DEPDIR)/___src_libpll_sse3_mpi_a-restartHashTable.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ../src/$(DEPDIR)/___src_libpll_sse3_mpi_a-searchAlgo.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ../src/$(DEPDIR)/___src_libpll_sse3_mpi_a-ssort.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ../src/$(DEPDIR)/___src_libpll_sse3_mpi_a-stack.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ../src/$(DEPDIR)/___src_libpll_sse3_mpi_a-topologies.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ../src/$(DEPDIR)/___src_libpll_sse3_mpi_a-trash.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ../src/$(DEPDIR)/___src_libpll_sse3_mpi_a-treeIO.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ../src/$(DEPDIR)/___src_libpll_sse3_mpi_a-utils.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ../src/$(DEPDIR)/___src_libpll_sse3_mpi_la-alignment.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ../src/$(DEPDIR)/___src_libpll_sse3_mpi_la-bipartitionList.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ../src/$(DEPDIR)/___src_libpll_sse3_mpi_la-evaluateGenericSpecial.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ../src/$(DEPDIR)/___src_libpll_sse3_mpi_la-evaluatePartialGenericSpecial.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ../src/$(DEPDIR)/___src_libpll_sse3_mpi_la-fastDNAparsimony.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ../src/$(DEPDIR)/___src_libpll_sse3_mpi_la-genericParallelization.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ../src/$(DEPDIR)/___src_libpll_sse3_mpi_la-hash.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ../src/$(DEPDIR)/___src_libpll_sse3_mpi_la-lexer.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ../src/$(DEPDIR)/___src_libpll_sse3_mpi_la-makenewzGenericSpecial.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ../src/$(DEPDIR)/___src_libpll_sse3_mpi_la-models.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ../src/$(DEPDIR)/___src_libpll_sse3_mpi_la-newick.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ../src/$(DEPDIR)/___src_libpll_sse3_mpi_la-newviewGenericSpecial.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ../src/$(DEPDIR)/___src_libpll_sse3_mpi_la-optimizeModel.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ../src/$(DEPDIR)/___src_libpll_sse3_mpi_la-parsePartition.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ../src/$(DEPDIR)/___src_libpll_sse3_mpi_la-parsimony.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ../src/$(DEPDIR)/___src_libpll_sse3_mpi_la-queue.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ../src/$(DEPDIR)/___src_libpll_sse3_mpi_la-randomTree.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ../src/$(DEPDIR)/___src_libpll_sse3_mpi_la-recom.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ../src/$(DEPDIR)/___src_libpll_sse3_mpi_la-restartHashTable.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ../src/$(DEPDIR)/___src_libpll_sse3_mpi_la-searchAlgo.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ../src/$(DEPDIR)/___src_libpll_sse3_mpi_la-ssort.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ../src/$(DEPDIR)/___src_libpll_sse3_mpi_la-stack.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ../src/$(DEPDIR)/___src_libpll_sse3_mpi_la-topologies.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ../src/$(DEPDIR)/___src_libpll_sse3_mpi_la-trash.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ../src/$(DEPDIR)/___src_libpll_sse3_mpi_la-treeIO.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ../src/$(DEPDIR)/___src_libpll_sse3_mpi_la-utils.Plo at am__quote@
+
+.c.o:
+ at am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
+ at am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
+ at am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(COMPILE) -c -o $@ $<
+
+.c.obj:
+ at am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\
+ at am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\
+ at am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
+
+.c.lo:
+ at am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\
+ at am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
+ at am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LTCOMPILE) -c -o $@ $<
+
+../src/___src_libpll_avx_mpi_a-avxLikelihood.o: ../src/avxLikelihood.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_avx_mpi_a_CFLAGS) $(CFLAGS) -MT ../src/___src_libpll_avx_mpi_a-avxLikelihood.o -MD -MP -MF ../src/$(DEPDIR)/___src_libpll_avx_mpi_a-avxLikelihood.Tpo -c -o ../src/___src_libpll_avx_mpi_a-avxLikelihood.o `test -f '../src/avxLikelihood.c' || echo '$(srcdir)/'`../src/avxLikelihood.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../src/$(DEPDIR)/___src_libpll_avx_mpi_a-avxLikelihood.Tpo ../src/$(DEPDIR)/___src_libpll_avx_mpi_a-avxLikelihood.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../src/avxLikelihood.c' object='../src/___src_libpll_avx_mpi_a-avxLikelihood.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_avx_mpi_a_CFLAGS) $(CFLAGS) -c -o ../src/___src_libpll_avx_mpi_a-avxLikelihood.o `test -f '../src/avxLikelihood.c' || echo '$(srcdir)/'`../src/avxLikelihood.c
+
+../src/___src_libpll_avx_mpi_a-avxLikelihood.obj: ../src/avxLikelihood.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_avx_mpi_a_CFLAGS) $(CFLAGS) -MT ../src/___src_libpll_avx_mpi_a-avxLikelihood.obj -MD -MP -MF ../src/$(DEPDIR)/___src_libpll_avx_mpi_a-avxLikelihood.Tpo -c -o ../src/___src_libpll_avx_mpi_a-avxLikelihood.obj `if test -f '../src/avxLikelihood.c'; then $(CYGPATH_W) '../src/avxLikelihood.c'; else $(CYGPATH_W) '$(srcdir)/../src/avxLikelihood.c'; fi`
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../src/$(DEPDIR)/___src_libpll_avx_mpi_a-avxLikelihood.Tpo ../src/$(DEPDIR)/___src_libpll_avx_mpi_a-avxLikelihood.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../src/avxLikelihood.c' object='../src/___src_libpll_avx_mpi_a-avxLikelihood.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_avx_mpi_a_CFLAGS) $(CFLAGS) -c -o ../src/___src_libpll_avx_mpi_a-avxLikelihood.obj `if test -f '../src/avxLikelihood.c'; then $(CYGPATH_W) '../src/avxLikelihood.c'; else $(CYGPATH_W) '$(srcdir)/../src/avxLikelihood.c'; fi`
+
+../src/___src_libpll_avx_mpi_a-genericParallelization.o: ../src/genericParallelization.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_avx_mpi_a_CFLAGS) $(CFLAGS) -MT ../src/___src_libpll_avx_mpi_a-genericParallelization.o -MD -MP -MF ../src/$(DEPDIR)/___src_libpll_avx_mpi_a-genericParallelization.Tpo -c -o ../src/___src_libpll_avx_mpi_a-genericParallelization.o `test -f '../src/genericParallelization.c' || echo '$(srcdir)/'`../src/genericParallelization.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../src/$(DEPDIR)/___src_libpll_avx_mpi_a-genericParallelization.Tpo ../src/$(DEPDIR)/___src_libpll_avx_mpi_a-genericParallelization.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../src/genericParallelization.c' object='../src/___src_libpll_avx_mpi_a-genericParallelization.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_avx_mpi_a_CFLAGS) $(CFLAGS) -c -o ../src/___src_libpll_avx_mpi_a-genericParallelization.o `test -f '../src/genericParallelization.c' || echo '$(srcdir)/'`../src/genericParallelization.c
+
+../src/___src_libpll_avx_mpi_a-genericParallelization.obj: ../src/genericParallelization.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_avx_mpi_a_CFLAGS) $(CFLAGS) -MT ../src/___src_libpll_avx_mpi_a-genericParallelization.obj -MD -MP -MF ../src/$(DEPDIR)/___src_libpll_avx_mpi_a-genericParallelization.Tpo -c -o ../src/___src_libpll_avx_mpi_a-genericParallelization.obj `if test -f '../src/genericParallelization.c'; then $(CYGPATH_W) '../src/genericParallelization.c'; else $(CYGPATH_W) '$(srcdir)/../src/ge [...]
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../src/$(DEPDIR)/___src_libpll_avx_mpi_a-genericParallelization.Tpo ../src/$(DEPDIR)/___src_libpll_avx_mpi_a-genericParallelization.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../src/genericParallelization.c' object='../src/___src_libpll_avx_mpi_a-genericParallelization.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_avx_mpi_a_CFLAGS) $(CFLAGS) -c -o ../src/___src_libpll_avx_mpi_a-genericParallelization.obj `if test -f '../src/genericParallelization.c'; then $(CYGPATH_W) '../src/genericParallelization.c'; else $(CYGPATH_W) '$(srcdir)/../src/genericParallelization.c'; fi`
+
+../src/___src_libpll_avx_mpi_a-hash.o: ../src/hash.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_avx_mpi_a_CFLAGS) $(CFLAGS) -MT ../src/___src_libpll_avx_mpi_a-hash.o -MD -MP -MF ../src/$(DEPDIR)/___src_libpll_avx_mpi_a-hash.Tpo -c -o ../src/___src_libpll_avx_mpi_a-hash.o `test -f '../src/hash.c' || echo '$(srcdir)/'`../src/hash.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../src/$(DEPDIR)/___src_libpll_avx_mpi_a-hash.Tpo ../src/$(DEPDIR)/___src_libpll_avx_mpi_a-hash.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../src/hash.c' object='../src/___src_libpll_avx_mpi_a-hash.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_avx_mpi_a_CFLAGS) $(CFLAGS) -c -o ../src/___src_libpll_avx_mpi_a-hash.o `test -f '../src/hash.c' || echo '$(srcdir)/'`../src/hash.c
+
+../src/___src_libpll_avx_mpi_a-hash.obj: ../src/hash.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_avx_mpi_a_CFLAGS) $(CFLAGS) -MT ../src/___src_libpll_avx_mpi_a-hash.obj -MD -MP -MF ../src/$(DEPDIR)/___src_libpll_avx_mpi_a-hash.Tpo -c -o ../src/___src_libpll_avx_mpi_a-hash.obj `if test -f '../src/hash.c'; then $(CYGPATH_W) '../src/hash.c'; else $(CYGPATH_W) '$(srcdir)/../src/hash.c'; fi`
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../src/$(DEPDIR)/___src_libpll_avx_mpi_a-hash.Tpo ../src/$(DEPDIR)/___src_libpll_avx_mpi_a-hash.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../src/hash.c' object='../src/___src_libpll_avx_mpi_a-hash.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_avx_mpi_a_CFLAGS) $(CFLAGS) -c -o ../src/___src_libpll_avx_mpi_a-hash.obj `if test -f '../src/hash.c'; then $(CYGPATH_W) '../src/hash.c'; else $(CYGPATH_W) '$(srcdir)/../src/hash.c'; fi`
+
+../src/___src_libpll_avx_mpi_a-stack.o: ../src/stack.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_avx_mpi_a_CFLAGS) $(CFLAGS) -MT ../src/___src_libpll_avx_mpi_a-stack.o -MD -MP -MF ../src/$(DEPDIR)/___src_libpll_avx_mpi_a-stack.Tpo -c -o ../src/___src_libpll_avx_mpi_a-stack.o `test -f '../src/stack.c' || echo '$(srcdir)/'`../src/stack.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../src/$(DEPDIR)/___src_libpll_avx_mpi_a-stack.Tpo ../src/$(DEPDIR)/___src_libpll_avx_mpi_a-stack.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../src/stack.c' object='../src/___src_libpll_avx_mpi_a-stack.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_avx_mpi_a_CFLAGS) $(CFLAGS) -c -o ../src/___src_libpll_avx_mpi_a-stack.o `test -f '../src/stack.c' || echo '$(srcdir)/'`../src/stack.c
+
+../src/___src_libpll_avx_mpi_a-stack.obj: ../src/stack.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_avx_mpi_a_CFLAGS) $(CFLAGS) -MT ../src/___src_libpll_avx_mpi_a-stack.obj -MD -MP -MF ../src/$(DEPDIR)/___src_libpll_avx_mpi_a-stack.Tpo -c -o ../src/___src_libpll_avx_mpi_a-stack.obj `if test -f '../src/stack.c'; then $(CYGPATH_W) '../src/stack.c'; else $(CYGPATH_W) '$(srcdir)/../src/stack.c'; fi`
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../src/$(DEPDIR)/___src_libpll_avx_mpi_a-stack.Tpo ../src/$(DEPDIR)/___src_libpll_avx_mpi_a-stack.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../src/stack.c' object='../src/___src_libpll_avx_mpi_a-stack.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_avx_mpi_a_CFLAGS) $(CFLAGS) -c -o ../src/___src_libpll_avx_mpi_a-stack.obj `if test -f '../src/stack.c'; then $(CYGPATH_W) '../src/stack.c'; else $(CYGPATH_W) '$(srcdir)/../src/stack.c'; fi`
+
+../src/___src_libpll_avx_mpi_a-ssort.o: ../src/ssort.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_avx_mpi_a_CFLAGS) $(CFLAGS) -MT ../src/___src_libpll_avx_mpi_a-ssort.o -MD -MP -MF ../src/$(DEPDIR)/___src_libpll_avx_mpi_a-ssort.Tpo -c -o ../src/___src_libpll_avx_mpi_a-ssort.o `test -f '../src/ssort.c' || echo '$(srcdir)/'`../src/ssort.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../src/$(DEPDIR)/___src_libpll_avx_mpi_a-ssort.Tpo ../src/$(DEPDIR)/___src_libpll_avx_mpi_a-ssort.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../src/ssort.c' object='../src/___src_libpll_avx_mpi_a-ssort.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_avx_mpi_a_CFLAGS) $(CFLAGS) -c -o ../src/___src_libpll_avx_mpi_a-ssort.o `test -f '../src/ssort.c' || echo '$(srcdir)/'`../src/ssort.c
+
+../src/___src_libpll_avx_mpi_a-ssort.obj: ../src/ssort.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_avx_mpi_a_CFLAGS) $(CFLAGS) -MT ../src/___src_libpll_avx_mpi_a-ssort.obj -MD -MP -MF ../src/$(DEPDIR)/___src_libpll_avx_mpi_a-ssort.Tpo -c -o ../src/___src_libpll_avx_mpi_a-ssort.obj `if test -f '../src/ssort.c'; then $(CYGPATH_W) '../src/ssort.c'; else $(CYGPATH_W) '$(srcdir)/../src/ssort.c'; fi`
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../src/$(DEPDIR)/___src_libpll_avx_mpi_a-ssort.Tpo ../src/$(DEPDIR)/___src_libpll_avx_mpi_a-ssort.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../src/ssort.c' object='../src/___src_libpll_avx_mpi_a-ssort.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_avx_mpi_a_CFLAGS) $(CFLAGS) -c -o ../src/___src_libpll_avx_mpi_a-ssort.obj `if test -f '../src/ssort.c'; then $(CYGPATH_W) '../src/ssort.c'; else $(CYGPATH_W) '$(srcdir)/../src/ssort.c'; fi`
+
+../src/___src_libpll_avx_mpi_a-queue.o: ../src/queue.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_avx_mpi_a_CFLAGS) $(CFLAGS) -MT ../src/___src_libpll_avx_mpi_a-queue.o -MD -MP -MF ../src/$(DEPDIR)/___src_libpll_avx_mpi_a-queue.Tpo -c -o ../src/___src_libpll_avx_mpi_a-queue.o `test -f '../src/queue.c' || echo '$(srcdir)/'`../src/queue.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../src/$(DEPDIR)/___src_libpll_avx_mpi_a-queue.Tpo ../src/$(DEPDIR)/___src_libpll_avx_mpi_a-queue.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../src/queue.c' object='../src/___src_libpll_avx_mpi_a-queue.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_avx_mpi_a_CFLAGS) $(CFLAGS) -c -o ../src/___src_libpll_avx_mpi_a-queue.o `test -f '../src/queue.c' || echo '$(srcdir)/'`../src/queue.c
+
+../src/___src_libpll_avx_mpi_a-queue.obj: ../src/queue.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_avx_mpi_a_CFLAGS) $(CFLAGS) -MT ../src/___src_libpll_avx_mpi_a-queue.obj -MD -MP -MF ../src/$(DEPDIR)/___src_libpll_avx_mpi_a-queue.Tpo -c -o ../src/___src_libpll_avx_mpi_a-queue.obj `if test -f '../src/queue.c'; then $(CYGPATH_W) '../src/queue.c'; else $(CYGPATH_W) '$(srcdir)/../src/queue.c'; fi`
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../src/$(DEPDIR)/___src_libpll_avx_mpi_a-queue.Tpo ../src/$(DEPDIR)/___src_libpll_avx_mpi_a-queue.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../src/queue.c' object='../src/___src_libpll_avx_mpi_a-queue.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_avx_mpi_a_CFLAGS) $(CFLAGS) -c -o ../src/___src_libpll_avx_mpi_a-queue.obj `if test -f '../src/queue.c'; then $(CYGPATH_W) '../src/queue.c'; else $(CYGPATH_W) '$(srcdir)/../src/queue.c'; fi`
+
+../src/___src_libpll_avx_mpi_a-utils.o: ../src/utils.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_avx_mpi_a_CFLAGS) $(CFLAGS) -MT ../src/___src_libpll_avx_mpi_a-utils.o -MD -MP -MF ../src/$(DEPDIR)/___src_libpll_avx_mpi_a-utils.Tpo -c -o ../src/___src_libpll_avx_mpi_a-utils.o `test -f '../src/utils.c' || echo '$(srcdir)/'`../src/utils.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../src/$(DEPDIR)/___src_libpll_avx_mpi_a-utils.Tpo ../src/$(DEPDIR)/___src_libpll_avx_mpi_a-utils.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../src/utils.c' object='../src/___src_libpll_avx_mpi_a-utils.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_avx_mpi_a_CFLAGS) $(CFLAGS) -c -o ../src/___src_libpll_avx_mpi_a-utils.o `test -f '../src/utils.c' || echo '$(srcdir)/'`../src/utils.c
+
+../src/___src_libpll_avx_mpi_a-utils.obj: ../src/utils.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_avx_mpi_a_CFLAGS) $(CFLAGS) -MT ../src/___src_libpll_avx_mpi_a-utils.obj -MD -MP -MF ../src/$(DEPDIR)/___src_libpll_avx_mpi_a-utils.Tpo -c -o ../src/___src_libpll_avx_mpi_a-utils.obj `if test -f '../src/utils.c'; then $(CYGPATH_W) '../src/utils.c'; else $(CYGPATH_W) '$(srcdir)/../src/utils.c'; fi`
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../src/$(DEPDIR)/___src_libpll_avx_mpi_a-utils.Tpo ../src/$(DEPDIR)/___src_libpll_avx_mpi_a-utils.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../src/utils.c' object='../src/___src_libpll_avx_mpi_a-utils.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_avx_mpi_a_CFLAGS) $(CFLAGS) -c -o ../src/___src_libpll_avx_mpi_a-utils.obj `if test -f '../src/utils.c'; then $(CYGPATH_W) '../src/utils.c'; else $(CYGPATH_W) '$(srcdir)/../src/utils.c'; fi`
+
+../src/___src_libpll_avx_mpi_a-randomTree.o: ../src/randomTree.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_avx_mpi_a_CFLAGS) $(CFLAGS) -MT ../src/___src_libpll_avx_mpi_a-randomTree.o -MD -MP -MF ../src/$(DEPDIR)/___src_libpll_avx_mpi_a-randomTree.Tpo -c -o ../src/___src_libpll_avx_mpi_a-randomTree.o `test -f '../src/randomTree.c' || echo '$(srcdir)/'`../src/randomTree.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../src/$(DEPDIR)/___src_libpll_avx_mpi_a-randomTree.Tpo ../src/$(DEPDIR)/___src_libpll_avx_mpi_a-randomTree.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../src/randomTree.c' object='../src/___src_libpll_avx_mpi_a-randomTree.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_avx_mpi_a_CFLAGS) $(CFLAGS) -c -o ../src/___src_libpll_avx_mpi_a-randomTree.o `test -f '../src/randomTree.c' || echo '$(srcdir)/'`../src/randomTree.c
+
+../src/___src_libpll_avx_mpi_a-randomTree.obj: ../src/randomTree.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_avx_mpi_a_CFLAGS) $(CFLAGS) -MT ../src/___src_libpll_avx_mpi_a-randomTree.obj -MD -MP -MF ../src/$(DEPDIR)/___src_libpll_avx_mpi_a-randomTree.Tpo -c -o ../src/___src_libpll_avx_mpi_a-randomTree.obj `if test -f '../src/randomTree.c'; then $(CYGPATH_W) '../src/randomTree.c'; else $(CYGPATH_W) '$(srcdir)/../src/randomTree.c'; fi`
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../src/$(DEPDIR)/___src_libpll_avx_mpi_a-randomTree.Tpo ../src/$(DEPDIR)/___src_libpll_avx_mpi_a-randomTree.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../src/randomTree.c' object='../src/___src_libpll_avx_mpi_a-randomTree.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_avx_mpi_a_CFLAGS) $(CFLAGS) -c -o ../src/___src_libpll_avx_mpi_a-randomTree.obj `if test -f '../src/randomTree.c'; then $(CYGPATH_W) '../src/randomTree.c'; else $(CYGPATH_W) '$(srcdir)/../src/randomTree.c'; fi`
+
+../src/___src_libpll_avx_mpi_a-optimizeModel.o: ../src/optimizeModel.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_avx_mpi_a_CFLAGS) $(CFLAGS) -MT ../src/___src_libpll_avx_mpi_a-optimizeModel.o -MD -MP -MF ../src/$(DEPDIR)/___src_libpll_avx_mpi_a-optimizeModel.Tpo -c -o ../src/___src_libpll_avx_mpi_a-optimizeModel.o `test -f '../src/optimizeModel.c' || echo '$(srcdir)/'`../src/optimizeModel.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../src/$(DEPDIR)/___src_libpll_avx_mpi_a-optimizeModel.Tpo ../src/$(DEPDIR)/___src_libpll_avx_mpi_a-optimizeModel.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../src/optimizeModel.c' object='../src/___src_libpll_avx_mpi_a-optimizeModel.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_avx_mpi_a_CFLAGS) $(CFLAGS) -c -o ../src/___src_libpll_avx_mpi_a-optimizeModel.o `test -f '../src/optimizeModel.c' || echo '$(srcdir)/'`../src/optimizeModel.c
+
+../src/___src_libpll_avx_mpi_a-optimizeModel.obj: ../src/optimizeModel.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_avx_mpi_a_CFLAGS) $(CFLAGS) -MT ../src/___src_libpll_avx_mpi_a-optimizeModel.obj -MD -MP -MF ../src/$(DEPDIR)/___src_libpll_avx_mpi_a-optimizeModel.Tpo -c -o ../src/___src_libpll_avx_mpi_a-optimizeModel.obj `if test -f '../src/optimizeModel.c'; then $(CYGPATH_W) '../src/optimizeModel.c'; else $(CYGPATH_W) '$(srcdir)/../src/optimizeModel.c'; fi`
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../src/$(DEPDIR)/___src_libpll_avx_mpi_a-optimizeModel.Tpo ../src/$(DEPDIR)/___src_libpll_avx_mpi_a-optimizeModel.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../src/optimizeModel.c' object='../src/___src_libpll_avx_mpi_a-optimizeModel.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_avx_mpi_a_CFLAGS) $(CFLAGS) -c -o ../src/___src_libpll_avx_mpi_a-optimizeModel.obj `if test -f '../src/optimizeModel.c'; then $(CYGPATH_W) '../src/optimizeModel.c'; else $(CYGPATH_W) '$(srcdir)/../src/optimizeModel.c'; fi`
+
+../src/___src_libpll_avx_mpi_a-trash.o: ../src/trash.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_avx_mpi_a_CFLAGS) $(CFLAGS) -MT ../src/___src_libpll_avx_mpi_a-trash.o -MD -MP -MF ../src/$(DEPDIR)/___src_libpll_avx_mpi_a-trash.Tpo -c -o ../src/___src_libpll_avx_mpi_a-trash.o `test -f '../src/trash.c' || echo '$(srcdir)/'`../src/trash.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../src/$(DEPDIR)/___src_libpll_avx_mpi_a-trash.Tpo ../src/$(DEPDIR)/___src_libpll_avx_mpi_a-trash.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../src/trash.c' object='../src/___src_libpll_avx_mpi_a-trash.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_avx_mpi_a_CFLAGS) $(CFLAGS) -c -o ../src/___src_libpll_avx_mpi_a-trash.o `test -f '../src/trash.c' || echo '$(srcdir)/'`../src/trash.c
+
+../src/___src_libpll_avx_mpi_a-trash.obj: ../src/trash.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_avx_mpi_a_CFLAGS) $(CFLAGS) -MT ../src/___src_libpll_avx_mpi_a-trash.obj -MD -MP -MF ../src/$(DEPDIR)/___src_libpll_avx_mpi_a-trash.Tpo -c -o ../src/___src_libpll_avx_mpi_a-trash.obj `if test -f '../src/trash.c'; then $(CYGPATH_W) '../src/trash.c'; else $(CYGPATH_W) '$(srcdir)/../src/trash.c'; fi`
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../src/$(DEPDIR)/___src_libpll_avx_mpi_a-trash.Tpo ../src/$(DEPDIR)/___src_libpll_avx_mpi_a-trash.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../src/trash.c' object='../src/___src_libpll_avx_mpi_a-trash.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_avx_mpi_a_CFLAGS) $(CFLAGS) -c -o ../src/___src_libpll_avx_mpi_a-trash.obj `if test -f '../src/trash.c'; then $(CYGPATH_W) '../src/trash.c'; else $(CYGPATH_W) '$(srcdir)/../src/trash.c'; fi`
+
+../src/___src_libpll_avx_mpi_a-searchAlgo.o: ../src/searchAlgo.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_avx_mpi_a_CFLAGS) $(CFLAGS) -MT ../src/___src_libpll_avx_mpi_a-searchAlgo.o -MD -MP -MF ../src/$(DEPDIR)/___src_libpll_avx_mpi_a-searchAlgo.Tpo -c -o ../src/___src_libpll_avx_mpi_a-searchAlgo.o `test -f '../src/searchAlgo.c' || echo '$(srcdir)/'`../src/searchAlgo.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../src/$(DEPDIR)/___src_libpll_avx_mpi_a-searchAlgo.Tpo ../src/$(DEPDIR)/___src_libpll_avx_mpi_a-searchAlgo.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../src/searchAlgo.c' object='../src/___src_libpll_avx_mpi_a-searchAlgo.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_avx_mpi_a_CFLAGS) $(CFLAGS) -c -o ../src/___src_libpll_avx_mpi_a-searchAlgo.o `test -f '../src/searchAlgo.c' || echo '$(srcdir)/'`../src/searchAlgo.c
+
+../src/___src_libpll_avx_mpi_a-searchAlgo.obj: ../src/searchAlgo.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_avx_mpi_a_CFLAGS) $(CFLAGS) -MT ../src/___src_libpll_avx_mpi_a-searchAlgo.obj -MD -MP -MF ../src/$(DEPDIR)/___src_libpll_avx_mpi_a-searchAlgo.Tpo -c -o ../src/___src_libpll_avx_mpi_a-searchAlgo.obj `if test -f '../src/searchAlgo.c'; then $(CYGPATH_W) '../src/searchAlgo.c'; else $(CYGPATH_W) '$(srcdir)/../src/searchAlgo.c'; fi`
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../src/$(DEPDIR)/___src_libpll_avx_mpi_a-searchAlgo.Tpo ../src/$(DEPDIR)/___src_libpll_avx_mpi_a-searchAlgo.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../src/searchAlgo.c' object='../src/___src_libpll_avx_mpi_a-searchAlgo.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_avx_mpi_a_CFLAGS) $(CFLAGS) -c -o ../src/___src_libpll_avx_mpi_a-searchAlgo.obj `if test -f '../src/searchAlgo.c'; then $(CYGPATH_W) '../src/searchAlgo.c'; else $(CYGPATH_W) '$(srcdir)/../src/searchAlgo.c'; fi`
+
+../src/___src_libpll_avx_mpi_a-topologies.o: ../src/topologies.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_avx_mpi_a_CFLAGS) $(CFLAGS) -MT ../src/___src_libpll_avx_mpi_a-topologies.o -MD -MP -MF ../src/$(DEPDIR)/___src_libpll_avx_mpi_a-topologies.Tpo -c -o ../src/___src_libpll_avx_mpi_a-topologies.o `test -f '../src/topologies.c' || echo '$(srcdir)/'`../src/topologies.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../src/$(DEPDIR)/___src_libpll_avx_mpi_a-topologies.Tpo ../src/$(DEPDIR)/___src_libpll_avx_mpi_a-topologies.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../src/topologies.c' object='../src/___src_libpll_avx_mpi_a-topologies.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_avx_mpi_a_CFLAGS) $(CFLAGS) -c -o ../src/___src_libpll_avx_mpi_a-topologies.o `test -f '../src/topologies.c' || echo '$(srcdir)/'`../src/topologies.c
+
+../src/___src_libpll_avx_mpi_a-topologies.obj: ../src/topologies.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_avx_mpi_a_CFLAGS) $(CFLAGS) -MT ../src/___src_libpll_avx_mpi_a-topologies.obj -MD -MP -MF ../src/$(DEPDIR)/___src_libpll_avx_mpi_a-topologies.Tpo -c -o ../src/___src_libpll_avx_mpi_a-topologies.obj `if test -f '../src/topologies.c'; then $(CYGPATH_W) '../src/topologies.c'; else $(CYGPATH_W) '$(srcdir)/../src/topologies.c'; fi`
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../src/$(DEPDIR)/___src_libpll_avx_mpi_a-topologies.Tpo ../src/$(DEPDIR)/___src_libpll_avx_mpi_a-topologies.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../src/topologies.c' object='../src/___src_libpll_avx_mpi_a-topologies.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_avx_mpi_a_CFLAGS) $(CFLAGS) -c -o ../src/___src_libpll_avx_mpi_a-topologies.obj `if test -f '../src/topologies.c'; then $(CYGPATH_W) '../src/topologies.c'; else $(CYGPATH_W) '$(srcdir)/../src/topologies.c'; fi`
+
+../src/___src_libpll_avx_mpi_a-fastDNAparsimony.o: ../src/fastDNAparsimony.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_avx_mpi_a_CFLAGS) $(CFLAGS) -MT ../src/___src_libpll_avx_mpi_a-fastDNAparsimony.o -MD -MP -MF ../src/$(DEPDIR)/___src_libpll_avx_mpi_a-fastDNAparsimony.Tpo -c -o ../src/___src_libpll_avx_mpi_a-fastDNAparsimony.o `test -f '../src/fastDNAparsimony.c' || echo '$(srcdir)/'`../src/fastDNAparsimony.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../src/$(DEPDIR)/___src_libpll_avx_mpi_a-fastDNAparsimony.Tpo ../src/$(DEPDIR)/___src_libpll_avx_mpi_a-fastDNAparsimony.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../src/fastDNAparsimony.c' object='../src/___src_libpll_avx_mpi_a-fastDNAparsimony.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_avx_mpi_a_CFLAGS) $(CFLAGS) -c -o ../src/___src_libpll_avx_mpi_a-fastDNAparsimony.o `test -f '../src/fastDNAparsimony.c' || echo '$(srcdir)/'`../src/fastDNAparsimony.c
+
+../src/___src_libpll_avx_mpi_a-fastDNAparsimony.obj: ../src/fastDNAparsimony.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_avx_mpi_a_CFLAGS) $(CFLAGS) -MT ../src/___src_libpll_avx_mpi_a-fastDNAparsimony.obj -MD -MP -MF ../src/$(DEPDIR)/___src_libpll_avx_mpi_a-fastDNAparsimony.Tpo -c -o ../src/___src_libpll_avx_mpi_a-fastDNAparsimony.obj `if test -f '../src/fastDNAparsimony.c'; then $(CYGPATH_W) '../src/fastDNAparsimony.c'; else $(CYGPATH_W) '$(srcdir)/../src/fastDNAparsimony.c'; fi`
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../src/$(DEPDIR)/___src_libpll_avx_mpi_a-fastDNAparsimony.Tpo ../src/$(DEPDIR)/___src_libpll_avx_mpi_a-fastDNAparsimony.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../src/fastDNAparsimony.c' object='../src/___src_libpll_avx_mpi_a-fastDNAparsimony.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_avx_mpi_a_CFLAGS) $(CFLAGS) -c -o ../src/___src_libpll_avx_mpi_a-fastDNAparsimony.obj `if test -f '../src/fastDNAparsimony.c'; then $(CYGPATH_W) '../src/fastDNAparsimony.c'; else $(CYGPATH_W) '$(srcdir)/../src/fastDNAparsimony.c'; fi`
+
+../src/___src_libpll_avx_mpi_a-treeIO.o: ../src/treeIO.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_avx_mpi_a_CFLAGS) $(CFLAGS) -MT ../src/___src_libpll_avx_mpi_a-treeIO.o -MD -MP -MF ../src/$(DEPDIR)/___src_libpll_avx_mpi_a-treeIO.Tpo -c -o ../src/___src_libpll_avx_mpi_a-treeIO.o `test -f '../src/treeIO.c' || echo '$(srcdir)/'`../src/treeIO.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../src/$(DEPDIR)/___src_libpll_avx_mpi_a-treeIO.Tpo ../src/$(DEPDIR)/___src_libpll_avx_mpi_a-treeIO.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../src/treeIO.c' object='../src/___src_libpll_avx_mpi_a-treeIO.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_avx_mpi_a_CFLAGS) $(CFLAGS) -c -o ../src/___src_libpll_avx_mpi_a-treeIO.o `test -f '../src/treeIO.c' || echo '$(srcdir)/'`../src/treeIO.c
+
+../src/___src_libpll_avx_mpi_a-treeIO.obj: ../src/treeIO.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_avx_mpi_a_CFLAGS) $(CFLAGS) -MT ../src/___src_libpll_avx_mpi_a-treeIO.obj -MD -MP -MF ../src/$(DEPDIR)/___src_libpll_avx_mpi_a-treeIO.Tpo -c -o ../src/___src_libpll_avx_mpi_a-treeIO.obj `if test -f '../src/treeIO.c'; then $(CYGPATH_W) '../src/treeIO.c'; else $(CYGPATH_W) '$(srcdir)/../src/treeIO.c'; fi`
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../src/$(DEPDIR)/___src_libpll_avx_mpi_a-treeIO.Tpo ../src/$(DEPDIR)/___src_libpll_avx_mpi_a-treeIO.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../src/treeIO.c' object='../src/___src_libpll_avx_mpi_a-treeIO.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_avx_mpi_a_CFLAGS) $(CFLAGS) -c -o ../src/___src_libpll_avx_mpi_a-treeIO.obj `if test -f '../src/treeIO.c'; then $(CYGPATH_W) '../src/treeIO.c'; else $(CYGPATH_W) '$(srcdir)/../src/treeIO.c'; fi`
+
+../src/___src_libpll_avx_mpi_a-models.o: ../src/models.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_avx_mpi_a_CFLAGS) $(CFLAGS) -MT ../src/___src_libpll_avx_mpi_a-models.o -MD -MP -MF ../src/$(DEPDIR)/___src_libpll_avx_mpi_a-models.Tpo -c -o ../src/___src_libpll_avx_mpi_a-models.o `test -f '../src/models.c' || echo '$(srcdir)/'`../src/models.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../src/$(DEPDIR)/___src_libpll_avx_mpi_a-models.Tpo ../src/$(DEPDIR)/___src_libpll_avx_mpi_a-models.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../src/models.c' object='../src/___src_libpll_avx_mpi_a-models.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_avx_mpi_a_CFLAGS) $(CFLAGS) -c -o ../src/___src_libpll_avx_mpi_a-models.o `test -f '../src/models.c' || echo '$(srcdir)/'`../src/models.c
+
+../src/___src_libpll_avx_mpi_a-models.obj: ../src/models.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_avx_mpi_a_CFLAGS) $(CFLAGS) -MT ../src/___src_libpll_avx_mpi_a-models.obj -MD -MP -MF ../src/$(DEPDIR)/___src_libpll_avx_mpi_a-models.Tpo -c -o ../src/___src_libpll_avx_mpi_a-models.obj `if test -f '../src/models.c'; then $(CYGPATH_W) '../src/models.c'; else $(CYGPATH_W) '$(srcdir)/../src/models.c'; fi`
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../src/$(DEPDIR)/___src_libpll_avx_mpi_a-models.Tpo ../src/$(DEPDIR)/___src_libpll_avx_mpi_a-models.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../src/models.c' object='../src/___src_libpll_avx_mpi_a-models.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_avx_mpi_a_CFLAGS) $(CFLAGS) -c -o ../src/___src_libpll_avx_mpi_a-models.obj `if test -f '../src/models.c'; then $(CYGPATH_W) '../src/models.c'; else $(CYGPATH_W) '$(srcdir)/../src/models.c'; fi`
+
+../src/___src_libpll_avx_mpi_a-evaluatePartialGenericSpecial.o: ../src/evaluatePartialGenericSpecial.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_avx_mpi_a_CFLAGS) $(CFLAGS) -MT ../src/___src_libpll_avx_mpi_a-evaluatePartialGenericSpecial.o -MD -MP -MF ../src/$(DEPDIR)/___src_libpll_avx_mpi_a-evaluatePartialGenericSpecial.Tpo -c -o ../src/___src_libpll_avx_mpi_a-evaluatePartialGenericSpecial.o `test -f '../src/evaluatePartialGenericSpecial.c' || echo '$(srcdir)/'`../src/evaluatePartialGenericSpecial.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../src/$(DEPDIR)/___src_libpll_avx_mpi_a-evaluatePartialGenericSpecial.Tpo ../src/$(DEPDIR)/___src_libpll_avx_mpi_a-evaluatePartialGenericSpecial.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../src/evaluatePartialGenericSpecial.c' object='../src/___src_libpll_avx_mpi_a-evaluatePartialGenericSpecial.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_avx_mpi_a_CFLAGS) $(CFLAGS) -c -o ../src/___src_libpll_avx_mpi_a-evaluatePartialGenericSpecial.o `test -f '../src/evaluatePartialGenericSpecial.c' || echo '$(srcdir)/'`../src/evaluatePartialGenericSpecial.c
+
+../src/___src_libpll_avx_mpi_a-evaluatePartialGenericSpecial.obj: ../src/evaluatePartialGenericSpecial.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_avx_mpi_a_CFLAGS) $(CFLAGS) -MT ../src/___src_libpll_avx_mpi_a-evaluatePartialGenericSpecial.obj -MD -MP -MF ../src/$(DEPDIR)/___src_libpll_avx_mpi_a-evaluatePartialGenericSpecial.Tpo -c -o ../src/___src_libpll_avx_mpi_a-evaluatePartialGenericSpecial.obj `if test -f '../src/evaluatePartialGenericSpecial.c'; then $(CYGPATH_W) '../src/evaluatePartialGenericSpecial.c'; els [...]
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../src/$(DEPDIR)/___src_libpll_avx_mpi_a-evaluatePartialGenericSpecial.Tpo ../src/$(DEPDIR)/___src_libpll_avx_mpi_a-evaluatePartialGenericSpecial.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../src/evaluatePartialGenericSpecial.c' object='../src/___src_libpll_avx_mpi_a-evaluatePartialGenericSpecial.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_avx_mpi_a_CFLAGS) $(CFLAGS) -c -o ../src/___src_libpll_avx_mpi_a-evaluatePartialGenericSpecial.obj `if test -f '../src/evaluatePartialGenericSpecial.c'; then $(CYGPATH_W) '../src/evaluatePartialGenericSpecial.c'; else $(CYGPATH_W) '$(srcdir)/../src/evaluatePartialGenericSpecial.c'; fi`
+
+../src/___src_libpll_avx_mpi_a-evaluateGenericSpecial.o: ../src/evaluateGenericSpecial.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_avx_mpi_a_CFLAGS) $(CFLAGS) -MT ../src/___src_libpll_avx_mpi_a-evaluateGenericSpecial.o -MD -MP -MF ../src/$(DEPDIR)/___src_libpll_avx_mpi_a-evaluateGenericSpecial.Tpo -c -o ../src/___src_libpll_avx_mpi_a-evaluateGenericSpecial.o `test -f '../src/evaluateGenericSpecial.c' || echo '$(srcdir)/'`../src/evaluateGenericSpecial.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../src/$(DEPDIR)/___src_libpll_avx_mpi_a-evaluateGenericSpecial.Tpo ../src/$(DEPDIR)/___src_libpll_avx_mpi_a-evaluateGenericSpecial.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../src/evaluateGenericSpecial.c' object='../src/___src_libpll_avx_mpi_a-evaluateGenericSpecial.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_avx_mpi_a_CFLAGS) $(CFLAGS) -c -o ../src/___src_libpll_avx_mpi_a-evaluateGenericSpecial.o `test -f '../src/evaluateGenericSpecial.c' || echo '$(srcdir)/'`../src/evaluateGenericSpecial.c
+
+../src/___src_libpll_avx_mpi_a-evaluateGenericSpecial.obj: ../src/evaluateGenericSpecial.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_avx_mpi_a_CFLAGS) $(CFLAGS) -MT ../src/___src_libpll_avx_mpi_a-evaluateGenericSpecial.obj -MD -MP -MF ../src/$(DEPDIR)/___src_libpll_avx_mpi_a-evaluateGenericSpecial.Tpo -c -o ../src/___src_libpll_avx_mpi_a-evaluateGenericSpecial.obj `if test -f '../src/evaluateGenericSpecial.c'; then $(CYGPATH_W) '../src/evaluateGenericSpecial.c'; else $(CYGPATH_W) '$(srcdir)/../src/ev [...]
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../src/$(DEPDIR)/___src_libpll_avx_mpi_a-evaluateGenericSpecial.Tpo ../src/$(DEPDIR)/___src_libpll_avx_mpi_a-evaluateGenericSpecial.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../src/evaluateGenericSpecial.c' object='../src/___src_libpll_avx_mpi_a-evaluateGenericSpecial.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_avx_mpi_a_CFLAGS) $(CFLAGS) -c -o ../src/___src_libpll_avx_mpi_a-evaluateGenericSpecial.obj `if test -f '../src/evaluateGenericSpecial.c'; then $(CYGPATH_W) '../src/evaluateGenericSpecial.c'; else $(CYGPATH_W) '$(srcdir)/../src/evaluateGenericSpecial.c'; fi`
+
+../src/___src_libpll_avx_mpi_a-newviewGenericSpecial.o: ../src/newviewGenericSpecial.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_avx_mpi_a_CFLAGS) $(CFLAGS) -MT ../src/___src_libpll_avx_mpi_a-newviewGenericSpecial.o -MD -MP -MF ../src/$(DEPDIR)/___src_libpll_avx_mpi_a-newviewGenericSpecial.Tpo -c -o ../src/___src_libpll_avx_mpi_a-newviewGenericSpecial.o `test -f '../src/newviewGenericSpecial.c' || echo '$(srcdir)/'`../src/newviewGenericSpecial.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../src/$(DEPDIR)/___src_libpll_avx_mpi_a-newviewGenericSpecial.Tpo ../src/$(DEPDIR)/___src_libpll_avx_mpi_a-newviewGenericSpecial.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../src/newviewGenericSpecial.c' object='../src/___src_libpll_avx_mpi_a-newviewGenericSpecial.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_avx_mpi_a_CFLAGS) $(CFLAGS) -c -o ../src/___src_libpll_avx_mpi_a-newviewGenericSpecial.o `test -f '../src/newviewGenericSpecial.c' || echo '$(srcdir)/'`../src/newviewGenericSpecial.c
+
+../src/___src_libpll_avx_mpi_a-newviewGenericSpecial.obj: ../src/newviewGenericSpecial.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_avx_mpi_a_CFLAGS) $(CFLAGS) -MT ../src/___src_libpll_avx_mpi_a-newviewGenericSpecial.obj -MD -MP -MF ../src/$(DEPDIR)/___src_libpll_avx_mpi_a-newviewGenericSpecial.Tpo -c -o ../src/___src_libpll_avx_mpi_a-newviewGenericSpecial.obj `if test -f '../src/newviewGenericSpecial.c'; then $(CYGPATH_W) '../src/newviewGenericSpecial.c'; else $(CYGPATH_W) '$(srcdir)/../src/newview [...]
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../src/$(DEPDIR)/___src_libpll_avx_mpi_a-newviewGenericSpecial.Tpo ../src/$(DEPDIR)/___src_libpll_avx_mpi_a-newviewGenericSpecial.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../src/newviewGenericSpecial.c' object='../src/___src_libpll_avx_mpi_a-newviewGenericSpecial.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_avx_mpi_a_CFLAGS) $(CFLAGS) -c -o ../src/___src_libpll_avx_mpi_a-newviewGenericSpecial.obj `if test -f '../src/newviewGenericSpecial.c'; then $(CYGPATH_W) '../src/newviewGenericSpecial.c'; else $(CYGPATH_W) '$(srcdir)/../src/newviewGenericSpecial.c'; fi`
+
+../src/___src_libpll_avx_mpi_a-makenewzGenericSpecial.o: ../src/makenewzGenericSpecial.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_avx_mpi_a_CFLAGS) $(CFLAGS) -MT ../src/___src_libpll_avx_mpi_a-makenewzGenericSpecial.o -MD -MP -MF ../src/$(DEPDIR)/___src_libpll_avx_mpi_a-makenewzGenericSpecial.Tpo -c -o ../src/___src_libpll_avx_mpi_a-makenewzGenericSpecial.o `test -f '../src/makenewzGenericSpecial.c' || echo '$(srcdir)/'`../src/makenewzGenericSpecial.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../src/$(DEPDIR)/___src_libpll_avx_mpi_a-makenewzGenericSpecial.Tpo ../src/$(DEPDIR)/___src_libpll_avx_mpi_a-makenewzGenericSpecial.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../src/makenewzGenericSpecial.c' object='../src/___src_libpll_avx_mpi_a-makenewzGenericSpecial.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_avx_mpi_a_CFLAGS) $(CFLAGS) -c -o ../src/___src_libpll_avx_mpi_a-makenewzGenericSpecial.o `test -f '../src/makenewzGenericSpecial.c' || echo '$(srcdir)/'`../src/makenewzGenericSpecial.c
+
+../src/___src_libpll_avx_mpi_a-makenewzGenericSpecial.obj: ../src/makenewzGenericSpecial.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_avx_mpi_a_CFLAGS) $(CFLAGS) -MT ../src/___src_libpll_avx_mpi_a-makenewzGenericSpecial.obj -MD -MP -MF ../src/$(DEPDIR)/___src_libpll_avx_mpi_a-makenewzGenericSpecial.Tpo -c -o ../src/___src_libpll_avx_mpi_a-makenewzGenericSpecial.obj `if test -f '../src/makenewzGenericSpecial.c'; then $(CYGPATH_W) '../src/makenewzGenericSpecial.c'; else $(CYGPATH_W) '$(srcdir)/../src/ma [...]
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../src/$(DEPDIR)/___src_libpll_avx_mpi_a-makenewzGenericSpecial.Tpo ../src/$(DEPDIR)/___src_libpll_avx_mpi_a-makenewzGenericSpecial.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../src/makenewzGenericSpecial.c' object='../src/___src_libpll_avx_mpi_a-makenewzGenericSpecial.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_avx_mpi_a_CFLAGS) $(CFLAGS) -c -o ../src/___src_libpll_avx_mpi_a-makenewzGenericSpecial.obj `if test -f '../src/makenewzGenericSpecial.c'; then $(CYGPATH_W) '../src/makenewzGenericSpecial.c'; else $(CYGPATH_W) '$(srcdir)/../src/makenewzGenericSpecial.c'; fi`
+
+../src/___src_libpll_avx_mpi_a-bipartitionList.o: ../src/bipartitionList.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_avx_mpi_a_CFLAGS) $(CFLAGS) -MT ../src/___src_libpll_avx_mpi_a-bipartitionList.o -MD -MP -MF ../src/$(DEPDIR)/___src_libpll_avx_mpi_a-bipartitionList.Tpo -c -o ../src/___src_libpll_avx_mpi_a-bipartitionList.o `test -f '../src/bipartitionList.c' || echo '$(srcdir)/'`../src/bipartitionList.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../src/$(DEPDIR)/___src_libpll_avx_mpi_a-bipartitionList.Tpo ../src/$(DEPDIR)/___src_libpll_avx_mpi_a-bipartitionList.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../src/bipartitionList.c' object='../src/___src_libpll_avx_mpi_a-bipartitionList.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_avx_mpi_a_CFLAGS) $(CFLAGS) -c -o ../src/___src_libpll_avx_mpi_a-bipartitionList.o `test -f '../src/bipartitionList.c' || echo '$(srcdir)/'`../src/bipartitionList.c
+
+../src/___src_libpll_avx_mpi_a-bipartitionList.obj: ../src/bipartitionList.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_avx_mpi_a_CFLAGS) $(CFLAGS) -MT ../src/___src_libpll_avx_mpi_a-bipartitionList.obj -MD -MP -MF ../src/$(DEPDIR)/___src_libpll_avx_mpi_a-bipartitionList.Tpo -c -o ../src/___src_libpll_avx_mpi_a-bipartitionList.obj `if test -f '../src/bipartitionList.c'; then $(CYGPATH_W) '../src/bipartitionList.c'; else $(CYGPATH_W) '$(srcdir)/../src/bipartitionList.c'; fi`
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../src/$(DEPDIR)/___src_libpll_avx_mpi_a-bipartitionList.Tpo ../src/$(DEPDIR)/___src_libpll_avx_mpi_a-bipartitionList.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../src/bipartitionList.c' object='../src/___src_libpll_avx_mpi_a-bipartitionList.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_avx_mpi_a_CFLAGS) $(CFLAGS) -c -o ../src/___src_libpll_avx_mpi_a-bipartitionList.obj `if test -f '../src/bipartitionList.c'; then $(CYGPATH_W) '../src/bipartitionList.c'; else $(CYGPATH_W) '$(srcdir)/../src/bipartitionList.c'; fi`
+
+../src/___src_libpll_avx_mpi_a-restartHashTable.o: ../src/restartHashTable.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_avx_mpi_a_CFLAGS) $(CFLAGS) -MT ../src/___src_libpll_avx_mpi_a-restartHashTable.o -MD -MP -MF ../src/$(DEPDIR)/___src_libpll_avx_mpi_a-restartHashTable.Tpo -c -o ../src/___src_libpll_avx_mpi_a-restartHashTable.o `test -f '../src/restartHashTable.c' || echo '$(srcdir)/'`../src/restartHashTable.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../src/$(DEPDIR)/___src_libpll_avx_mpi_a-restartHashTable.Tpo ../src/$(DEPDIR)/___src_libpll_avx_mpi_a-restartHashTable.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../src/restartHashTable.c' object='../src/___src_libpll_avx_mpi_a-restartHashTable.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_avx_mpi_a_CFLAGS) $(CFLAGS) -c -o ../src/___src_libpll_avx_mpi_a-restartHashTable.o `test -f '../src/restartHashTable.c' || echo '$(srcdir)/'`../src/restartHashTable.c
+
+../src/___src_libpll_avx_mpi_a-restartHashTable.obj: ../src/restartHashTable.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_avx_mpi_a_CFLAGS) $(CFLAGS) -MT ../src/___src_libpll_avx_mpi_a-restartHashTable.obj -MD -MP -MF ../src/$(DEPDIR)/___src_libpll_avx_mpi_a-restartHashTable.Tpo -c -o ../src/___src_libpll_avx_mpi_a-restartHashTable.obj `if test -f '../src/restartHashTable.c'; then $(CYGPATH_W) '../src/restartHashTable.c'; else $(CYGPATH_W) '$(srcdir)/../src/restartHashTable.c'; fi`
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../src/$(DEPDIR)/___src_libpll_avx_mpi_a-restartHashTable.Tpo ../src/$(DEPDIR)/___src_libpll_avx_mpi_a-restartHashTable.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../src/restartHashTable.c' object='../src/___src_libpll_avx_mpi_a-restartHashTable.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_avx_mpi_a_CFLAGS) $(CFLAGS) -c -o ../src/___src_libpll_avx_mpi_a-restartHashTable.obj `if test -f '../src/restartHashTable.c'; then $(CYGPATH_W) '../src/restartHashTable.c'; else $(CYGPATH_W) '$(srcdir)/../src/restartHashTable.c'; fi`
+
+../src/___src_libpll_avx_mpi_a-recom.o: ../src/recom.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_avx_mpi_a_CFLAGS) $(CFLAGS) -MT ../src/___src_libpll_avx_mpi_a-recom.o -MD -MP -MF ../src/$(DEPDIR)/___src_libpll_avx_mpi_a-recom.Tpo -c -o ../src/___src_libpll_avx_mpi_a-recom.o `test -f '../src/recom.c' || echo '$(srcdir)/'`../src/recom.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../src/$(DEPDIR)/___src_libpll_avx_mpi_a-recom.Tpo ../src/$(DEPDIR)/___src_libpll_avx_mpi_a-recom.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../src/recom.c' object='../src/___src_libpll_avx_mpi_a-recom.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_avx_mpi_a_CFLAGS) $(CFLAGS) -c -o ../src/___src_libpll_avx_mpi_a-recom.o `test -f '../src/recom.c' || echo '$(srcdir)/'`../src/recom.c
+
+../src/___src_libpll_avx_mpi_a-recom.obj: ../src/recom.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_avx_mpi_a_CFLAGS) $(CFLAGS) -MT ../src/___src_libpll_avx_mpi_a-recom.obj -MD -MP -MF ../src/$(DEPDIR)/___src_libpll_avx_mpi_a-recom.Tpo -c -o ../src/___src_libpll_avx_mpi_a-recom.obj `if test -f '../src/recom.c'; then $(CYGPATH_W) '../src/recom.c'; else $(CYGPATH_W) '$(srcdir)/../src/recom.c'; fi`
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../src/$(DEPDIR)/___src_libpll_avx_mpi_a-recom.Tpo ../src/$(DEPDIR)/___src_libpll_avx_mpi_a-recom.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../src/recom.c' object='../src/___src_libpll_avx_mpi_a-recom.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_avx_mpi_a_CFLAGS) $(CFLAGS) -c -o ../src/___src_libpll_avx_mpi_a-recom.obj `if test -f '../src/recom.c'; then $(CYGPATH_W) '../src/recom.c'; else $(CYGPATH_W) '$(srcdir)/../src/recom.c'; fi`
+
+../src/___src_libpll_avx_mpi_a-lexer.o: ../src/lexer.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_avx_mpi_a_CFLAGS) $(CFLAGS) -MT ../src/___src_libpll_avx_mpi_a-lexer.o -MD -MP -MF ../src/$(DEPDIR)/___src_libpll_avx_mpi_a-lexer.Tpo -c -o ../src/___src_libpll_avx_mpi_a-lexer.o `test -f '../src/lexer.c' || echo '$(srcdir)/'`../src/lexer.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../src/$(DEPDIR)/___src_libpll_avx_mpi_a-lexer.Tpo ../src/$(DEPDIR)/___src_libpll_avx_mpi_a-lexer.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../src/lexer.c' object='../src/___src_libpll_avx_mpi_a-lexer.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_avx_mpi_a_CFLAGS) $(CFLAGS) -c -o ../src/___src_libpll_avx_mpi_a-lexer.o `test -f '../src/lexer.c' || echo '$(srcdir)/'`../src/lexer.c
+
+../src/___src_libpll_avx_mpi_a-lexer.obj: ../src/lexer.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_avx_mpi_a_CFLAGS) $(CFLAGS) -MT ../src/___src_libpll_avx_mpi_a-lexer.obj -MD -MP -MF ../src/$(DEPDIR)/___src_libpll_avx_mpi_a-lexer.Tpo -c -o ../src/___src_libpll_avx_mpi_a-lexer.obj `if test -f '../src/lexer.c'; then $(CYGPATH_W) '../src/lexer.c'; else $(CYGPATH_W) '$(srcdir)/../src/lexer.c'; fi`
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../src/$(DEPDIR)/___src_libpll_avx_mpi_a-lexer.Tpo ../src/$(DEPDIR)/___src_libpll_avx_mpi_a-lexer.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../src/lexer.c' object='../src/___src_libpll_avx_mpi_a-lexer.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_avx_mpi_a_CFLAGS) $(CFLAGS) -c -o ../src/___src_libpll_avx_mpi_a-lexer.obj `if test -f '../src/lexer.c'; then $(CYGPATH_W) '../src/lexer.c'; else $(CYGPATH_W) '$(srcdir)/../src/lexer.c'; fi`
+
+../src/___src_libpll_avx_mpi_a-alignment.o: ../src/alignment.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_avx_mpi_a_CFLAGS) $(CFLAGS) -MT ../src/___src_libpll_avx_mpi_a-alignment.o -MD -MP -MF ../src/$(DEPDIR)/___src_libpll_avx_mpi_a-alignment.Tpo -c -o ../src/___src_libpll_avx_mpi_a-alignment.o `test -f '../src/alignment.c' || echo '$(srcdir)/'`../src/alignment.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../src/$(DEPDIR)/___src_libpll_avx_mpi_a-alignment.Tpo ../src/$(DEPDIR)/___src_libpll_avx_mpi_a-alignment.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../src/alignment.c' object='../src/___src_libpll_avx_mpi_a-alignment.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_avx_mpi_a_CFLAGS) $(CFLAGS) -c -o ../src/___src_libpll_avx_mpi_a-alignment.o `test -f '../src/alignment.c' || echo '$(srcdir)/'`../src/alignment.c
+
+../src/___src_libpll_avx_mpi_a-alignment.obj: ../src/alignment.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_avx_mpi_a_CFLAGS) $(CFLAGS) -MT ../src/___src_libpll_avx_mpi_a-alignment.obj -MD -MP -MF ../src/$(DEPDIR)/___src_libpll_avx_mpi_a-alignment.Tpo -c -o ../src/___src_libpll_avx_mpi_a-alignment.obj `if test -f '../src/alignment.c'; then $(CYGPATH_W) '../src/alignment.c'; else $(CYGPATH_W) '$(srcdir)/../src/alignment.c'; fi`
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../src/$(DEPDIR)/___src_libpll_avx_mpi_a-alignment.Tpo ../src/$(DEPDIR)/___src_libpll_avx_mpi_a-alignment.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../src/alignment.c' object='../src/___src_libpll_avx_mpi_a-alignment.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_avx_mpi_a_CFLAGS) $(CFLAGS) -c -o ../src/___src_libpll_avx_mpi_a-alignment.obj `if test -f '../src/alignment.c'; then $(CYGPATH_W) '../src/alignment.c'; else $(CYGPATH_W) '$(srcdir)/../src/alignment.c'; fi`
+
+../src/___src_libpll_avx_mpi_a-newick.o: ../src/newick.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_avx_mpi_a_CFLAGS) $(CFLAGS) -MT ../src/___src_libpll_avx_mpi_a-newick.o -MD -MP -MF ../src/$(DEPDIR)/___src_libpll_avx_mpi_a-newick.Tpo -c -o ../src/___src_libpll_avx_mpi_a-newick.o `test -f '../src/newick.c' || echo '$(srcdir)/'`../src/newick.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../src/$(DEPDIR)/___src_libpll_avx_mpi_a-newick.Tpo ../src/$(DEPDIR)/___src_libpll_avx_mpi_a-newick.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../src/newick.c' object='../src/___src_libpll_avx_mpi_a-newick.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_avx_mpi_a_CFLAGS) $(CFLAGS) -c -o ../src/___src_libpll_avx_mpi_a-newick.o `test -f '../src/newick.c' || echo '$(srcdir)/'`../src/newick.c
+
+../src/___src_libpll_avx_mpi_a-newick.obj: ../src/newick.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_avx_mpi_a_CFLAGS) $(CFLAGS) -MT ../src/___src_libpll_avx_mpi_a-newick.obj -MD -MP -MF ../src/$(DEPDIR)/___src_libpll_avx_mpi_a-newick.Tpo -c -o ../src/___src_libpll_avx_mpi_a-newick.obj `if test -f '../src/newick.c'; then $(CYGPATH_W) '../src/newick.c'; else $(CYGPATH_W) '$(srcdir)/../src/newick.c'; fi`
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../src/$(DEPDIR)/___src_libpll_avx_mpi_a-newick.Tpo ../src/$(DEPDIR)/___src_libpll_avx_mpi_a-newick.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../src/newick.c' object='../src/___src_libpll_avx_mpi_a-newick.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_avx_mpi_a_CFLAGS) $(CFLAGS) -c -o ../src/___src_libpll_avx_mpi_a-newick.obj `if test -f '../src/newick.c'; then $(CYGPATH_W) '../src/newick.c'; else $(CYGPATH_W) '$(srcdir)/../src/newick.c'; fi`
+
+../src/___src_libpll_avx_mpi_a-parsePartition.o: ../src/parsePartition.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_avx_mpi_a_CFLAGS) $(CFLAGS) -MT ../src/___src_libpll_avx_mpi_a-parsePartition.o -MD -MP -MF ../src/$(DEPDIR)/___src_libpll_avx_mpi_a-parsePartition.Tpo -c -o ../src/___src_libpll_avx_mpi_a-parsePartition.o `test -f '../src/parsePartition.c' || echo '$(srcdir)/'`../src/parsePartition.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../src/$(DEPDIR)/___src_libpll_avx_mpi_a-parsePartition.Tpo ../src/$(DEPDIR)/___src_libpll_avx_mpi_a-parsePartition.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../src/parsePartition.c' object='../src/___src_libpll_avx_mpi_a-parsePartition.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_avx_mpi_a_CFLAGS) $(CFLAGS) -c -o ../src/___src_libpll_avx_mpi_a-parsePartition.o `test -f '../src/parsePartition.c' || echo '$(srcdir)/'`../src/parsePartition.c
+
+../src/___src_libpll_avx_mpi_a-parsePartition.obj: ../src/parsePartition.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_avx_mpi_a_CFLAGS) $(CFLAGS) -MT ../src/___src_libpll_avx_mpi_a-parsePartition.obj -MD -MP -MF ../src/$(DEPDIR)/___src_libpll_avx_mpi_a-parsePartition.Tpo -c -o ../src/___src_libpll_avx_mpi_a-parsePartition.obj `if test -f '../src/parsePartition.c'; then $(CYGPATH_W) '../src/parsePartition.c'; else $(CYGPATH_W) '$(srcdir)/../src/parsePartition.c'; fi`
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../src/$(DEPDIR)/___src_libpll_avx_mpi_a-parsePartition.Tpo ../src/$(DEPDIR)/___src_libpll_avx_mpi_a-parsePartition.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../src/parsePartition.c' object='../src/___src_libpll_avx_mpi_a-parsePartition.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_avx_mpi_a_CFLAGS) $(CFLAGS) -c -o ../src/___src_libpll_avx_mpi_a-parsePartition.obj `if test -f '../src/parsePartition.c'; then $(CYGPATH_W) '../src/parsePartition.c'; else $(CYGPATH_W) '$(srcdir)/../src/parsePartition.c'; fi`
+
+../src/___src_libpll_avx_mpi_a-parsimony.o: ../src/parsimony.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_avx_mpi_a_CFLAGS) $(CFLAGS) -MT ../src/___src_libpll_avx_mpi_a-parsimony.o -MD -MP -MF ../src/$(DEPDIR)/___src_libpll_avx_mpi_a-parsimony.Tpo -c -o ../src/___src_libpll_avx_mpi_a-parsimony.o `test -f '../src/parsimony.c' || echo '$(srcdir)/'`../src/parsimony.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../src/$(DEPDIR)/___src_libpll_avx_mpi_a-parsimony.Tpo ../src/$(DEPDIR)/___src_libpll_avx_mpi_a-parsimony.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../src/parsimony.c' object='../src/___src_libpll_avx_mpi_a-parsimony.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_avx_mpi_a_CFLAGS) $(CFLAGS) -c -o ../src/___src_libpll_avx_mpi_a-parsimony.o `test -f '../src/parsimony.c' || echo '$(srcdir)/'`../src/parsimony.c
+
+../src/___src_libpll_avx_mpi_a-parsimony.obj: ../src/parsimony.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_avx_mpi_a_CFLAGS) $(CFLAGS) -MT ../src/___src_libpll_avx_mpi_a-parsimony.obj -MD -MP -MF ../src/$(DEPDIR)/___src_libpll_avx_mpi_a-parsimony.Tpo -c -o ../src/___src_libpll_avx_mpi_a-parsimony.obj `if test -f '../src/parsimony.c'; then $(CYGPATH_W) '../src/parsimony.c'; else $(CYGPATH_W) '$(srcdir)/../src/parsimony.c'; fi`
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../src/$(DEPDIR)/___src_libpll_avx_mpi_a-parsimony.Tpo ../src/$(DEPDIR)/___src_libpll_avx_mpi_a-parsimony.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../src/parsimony.c' object='../src/___src_libpll_avx_mpi_a-parsimony.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_avx_mpi_a_CFLAGS) $(CFLAGS) -c -o ../src/___src_libpll_avx_mpi_a-parsimony.obj `if test -f '../src/parsimony.c'; then $(CYGPATH_W) '../src/parsimony.c'; else $(CYGPATH_W) '$(srcdir)/../src/parsimony.c'; fi`
+
+../src/___src_libpll_sse3_mpi_a-genericParallelization.o: ../src/genericParallelization.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_sse3_mpi_a_CFLAGS) $(CFLAGS) -MT ../src/___src_libpll_sse3_mpi_a-genericParallelization.o -MD -MP -MF ../src/$(DEPDIR)/___src_libpll_sse3_mpi_a-genericParallelization.Tpo -c -o ../src/___src_libpll_sse3_mpi_a-genericParallelization.o `test -f '../src/genericParallelization.c' || echo '$(srcdir)/'`../src/genericParallelization.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../src/$(DEPDIR)/___src_libpll_sse3_mpi_a-genericParallelization.Tpo ../src/$(DEPDIR)/___src_libpll_sse3_mpi_a-genericParallelization.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../src/genericParallelization.c' object='../src/___src_libpll_sse3_mpi_a-genericParallelization.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_sse3_mpi_a_CFLAGS) $(CFLAGS) -c -o ../src/___src_libpll_sse3_mpi_a-genericParallelization.o `test -f '../src/genericParallelization.c' || echo '$(srcdir)/'`../src/genericParallelization.c
+
+../src/___src_libpll_sse3_mpi_a-genericParallelization.obj: ../src/genericParallelization.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_sse3_mpi_a_CFLAGS) $(CFLAGS) -MT ../src/___src_libpll_sse3_mpi_a-genericParallelization.obj -MD -MP -MF ../src/$(DEPDIR)/___src_libpll_sse3_mpi_a-genericParallelization.Tpo -c -o ../src/___src_libpll_sse3_mpi_a-genericParallelization.obj `if test -f '../src/genericParallelization.c'; then $(CYGPATH_W) '../src/genericParallelization.c'; else $(CYGPATH_W) '$(srcdir)/../sr [...]
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../src/$(DEPDIR)/___src_libpll_sse3_mpi_a-genericParallelization.Tpo ../src/$(DEPDIR)/___src_libpll_sse3_mpi_a-genericParallelization.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../src/genericParallelization.c' object='../src/___src_libpll_sse3_mpi_a-genericParallelization.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_sse3_mpi_a_CFLAGS) $(CFLAGS) -c -o ../src/___src_libpll_sse3_mpi_a-genericParallelization.obj `if test -f '../src/genericParallelization.c'; then $(CYGPATH_W) '../src/genericParallelization.c'; else $(CYGPATH_W) '$(srcdir)/../src/genericParallelization.c'; fi`
+
+../src/___src_libpll_sse3_mpi_a-hash.o: ../src/hash.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_sse3_mpi_a_CFLAGS) $(CFLAGS) -MT ../src/___src_libpll_sse3_mpi_a-hash.o -MD -MP -MF ../src/$(DEPDIR)/___src_libpll_sse3_mpi_a-hash.Tpo -c -o ../src/___src_libpll_sse3_mpi_a-hash.o `test -f '../src/hash.c' || echo '$(srcdir)/'`../src/hash.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../src/$(DEPDIR)/___src_libpll_sse3_mpi_a-hash.Tpo ../src/$(DEPDIR)/___src_libpll_sse3_mpi_a-hash.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../src/hash.c' object='../src/___src_libpll_sse3_mpi_a-hash.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_sse3_mpi_a_CFLAGS) $(CFLAGS) -c -o ../src/___src_libpll_sse3_mpi_a-hash.o `test -f '../src/hash.c' || echo '$(srcdir)/'`../src/hash.c
+
+../src/___src_libpll_sse3_mpi_a-hash.obj: ../src/hash.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_sse3_mpi_a_CFLAGS) $(CFLAGS) -MT ../src/___src_libpll_sse3_mpi_a-hash.obj -MD -MP -MF ../src/$(DEPDIR)/___src_libpll_sse3_mpi_a-hash.Tpo -c -o ../src/___src_libpll_sse3_mpi_a-hash.obj `if test -f '../src/hash.c'; then $(CYGPATH_W) '../src/hash.c'; else $(CYGPATH_W) '$(srcdir)/../src/hash.c'; fi`
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../src/$(DEPDIR)/___src_libpll_sse3_mpi_a-hash.Tpo ../src/$(DEPDIR)/___src_libpll_sse3_mpi_a-hash.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../src/hash.c' object='../src/___src_libpll_sse3_mpi_a-hash.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_sse3_mpi_a_CFLAGS) $(CFLAGS) -c -o ../src/___src_libpll_sse3_mpi_a-hash.obj `if test -f '../src/hash.c'; then $(CYGPATH_W) '../src/hash.c'; else $(CYGPATH_W) '$(srcdir)/../src/hash.c'; fi`
+
+../src/___src_libpll_sse3_mpi_a-stack.o: ../src/stack.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_sse3_mpi_a_CFLAGS) $(CFLAGS) -MT ../src/___src_libpll_sse3_mpi_a-stack.o -MD -MP -MF ../src/$(DEPDIR)/___src_libpll_sse3_mpi_a-stack.Tpo -c -o ../src/___src_libpll_sse3_mpi_a-stack.o `test -f '../src/stack.c' || echo '$(srcdir)/'`../src/stack.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../src/$(DEPDIR)/___src_libpll_sse3_mpi_a-stack.Tpo ../src/$(DEPDIR)/___src_libpll_sse3_mpi_a-stack.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../src/stack.c' object='../src/___src_libpll_sse3_mpi_a-stack.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_sse3_mpi_a_CFLAGS) $(CFLAGS) -c -o ../src/___src_libpll_sse3_mpi_a-stack.o `test -f '../src/stack.c' || echo '$(srcdir)/'`../src/stack.c
+
+../src/___src_libpll_sse3_mpi_a-stack.obj: ../src/stack.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_sse3_mpi_a_CFLAGS) $(CFLAGS) -MT ../src/___src_libpll_sse3_mpi_a-stack.obj -MD -MP -MF ../src/$(DEPDIR)/___src_libpll_sse3_mpi_a-stack.Tpo -c -o ../src/___src_libpll_sse3_mpi_a-stack.obj `if test -f '../src/stack.c'; then $(CYGPATH_W) '../src/stack.c'; else $(CYGPATH_W) '$(srcdir)/../src/stack.c'; fi`
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../src/$(DEPDIR)/___src_libpll_sse3_mpi_a-stack.Tpo ../src/$(DEPDIR)/___src_libpll_sse3_mpi_a-stack.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../src/stack.c' object='../src/___src_libpll_sse3_mpi_a-stack.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_sse3_mpi_a_CFLAGS) $(CFLAGS) -c -o ../src/___src_libpll_sse3_mpi_a-stack.obj `if test -f '../src/stack.c'; then $(CYGPATH_W) '../src/stack.c'; else $(CYGPATH_W) '$(srcdir)/../src/stack.c'; fi`
+
+../src/___src_libpll_sse3_mpi_a-ssort.o: ../src/ssort.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_sse3_mpi_a_CFLAGS) $(CFLAGS) -MT ../src/___src_libpll_sse3_mpi_a-ssort.o -MD -MP -MF ../src/$(DEPDIR)/___src_libpll_sse3_mpi_a-ssort.Tpo -c -o ../src/___src_libpll_sse3_mpi_a-ssort.o `test -f '../src/ssort.c' || echo '$(srcdir)/'`../src/ssort.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../src/$(DEPDIR)/___src_libpll_sse3_mpi_a-ssort.Tpo ../src/$(DEPDIR)/___src_libpll_sse3_mpi_a-ssort.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../src/ssort.c' object='../src/___src_libpll_sse3_mpi_a-ssort.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_sse3_mpi_a_CFLAGS) $(CFLAGS) -c -o ../src/___src_libpll_sse3_mpi_a-ssort.o `test -f '../src/ssort.c' || echo '$(srcdir)/'`../src/ssort.c
+
+../src/___src_libpll_sse3_mpi_a-ssort.obj: ../src/ssort.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_sse3_mpi_a_CFLAGS) $(CFLAGS) -MT ../src/___src_libpll_sse3_mpi_a-ssort.obj -MD -MP -MF ../src/$(DEPDIR)/___src_libpll_sse3_mpi_a-ssort.Tpo -c -o ../src/___src_libpll_sse3_mpi_a-ssort.obj `if test -f '../src/ssort.c'; then $(CYGPATH_W) '../src/ssort.c'; else $(CYGPATH_W) '$(srcdir)/../src/ssort.c'; fi`
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../src/$(DEPDIR)/___src_libpll_sse3_mpi_a-ssort.Tpo ../src/$(DEPDIR)/___src_libpll_sse3_mpi_a-ssort.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../src/ssort.c' object='../src/___src_libpll_sse3_mpi_a-ssort.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_sse3_mpi_a_CFLAGS) $(CFLAGS) -c -o ../src/___src_libpll_sse3_mpi_a-ssort.obj `if test -f '../src/ssort.c'; then $(CYGPATH_W) '../src/ssort.c'; else $(CYGPATH_W) '$(srcdir)/../src/ssort.c'; fi`
+
+../src/___src_libpll_sse3_mpi_a-queue.o: ../src/queue.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_sse3_mpi_a_CFLAGS) $(CFLAGS) -MT ../src/___src_libpll_sse3_mpi_a-queue.o -MD -MP -MF ../src/$(DEPDIR)/___src_libpll_sse3_mpi_a-queue.Tpo -c -o ../src/___src_libpll_sse3_mpi_a-queue.o `test -f '../src/queue.c' || echo '$(srcdir)/'`../src/queue.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../src/$(DEPDIR)/___src_libpll_sse3_mpi_a-queue.Tpo ../src/$(DEPDIR)/___src_libpll_sse3_mpi_a-queue.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../src/queue.c' object='../src/___src_libpll_sse3_mpi_a-queue.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_sse3_mpi_a_CFLAGS) $(CFLAGS) -c -o ../src/___src_libpll_sse3_mpi_a-queue.o `test -f '../src/queue.c' || echo '$(srcdir)/'`../src/queue.c
+
+../src/___src_libpll_sse3_mpi_a-queue.obj: ../src/queue.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_sse3_mpi_a_CFLAGS) $(CFLAGS) -MT ../src/___src_libpll_sse3_mpi_a-queue.obj -MD -MP -MF ../src/$(DEPDIR)/___src_libpll_sse3_mpi_a-queue.Tpo -c -o ../src/___src_libpll_sse3_mpi_a-queue.obj `if test -f '../src/queue.c'; then $(CYGPATH_W) '../src/queue.c'; else $(CYGPATH_W) '$(srcdir)/../src/queue.c'; fi`
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../src/$(DEPDIR)/___src_libpll_sse3_mpi_a-queue.Tpo ../src/$(DEPDIR)/___src_libpll_sse3_mpi_a-queue.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../src/queue.c' object='../src/___src_libpll_sse3_mpi_a-queue.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_sse3_mpi_a_CFLAGS) $(CFLAGS) -c -o ../src/___src_libpll_sse3_mpi_a-queue.obj `if test -f '../src/queue.c'; then $(CYGPATH_W) '../src/queue.c'; else $(CYGPATH_W) '$(srcdir)/../src/queue.c'; fi`
+
+../src/___src_libpll_sse3_mpi_a-utils.o: ../src/utils.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_sse3_mpi_a_CFLAGS) $(CFLAGS) -MT ../src/___src_libpll_sse3_mpi_a-utils.o -MD -MP -MF ../src/$(DEPDIR)/___src_libpll_sse3_mpi_a-utils.Tpo -c -o ../src/___src_libpll_sse3_mpi_a-utils.o `test -f '../src/utils.c' || echo '$(srcdir)/'`../src/utils.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../src/$(DEPDIR)/___src_libpll_sse3_mpi_a-utils.Tpo ../src/$(DEPDIR)/___src_libpll_sse3_mpi_a-utils.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../src/utils.c' object='../src/___src_libpll_sse3_mpi_a-utils.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_sse3_mpi_a_CFLAGS) $(CFLAGS) -c -o ../src/___src_libpll_sse3_mpi_a-utils.o `test -f '../src/utils.c' || echo '$(srcdir)/'`../src/utils.c
+
+../src/___src_libpll_sse3_mpi_a-utils.obj: ../src/utils.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_sse3_mpi_a_CFLAGS) $(CFLAGS) -MT ../src/___src_libpll_sse3_mpi_a-utils.obj -MD -MP -MF ../src/$(DEPDIR)/___src_libpll_sse3_mpi_a-utils.Tpo -c -o ../src/___src_libpll_sse3_mpi_a-utils.obj `if test -f '../src/utils.c'; then $(CYGPATH_W) '../src/utils.c'; else $(CYGPATH_W) '$(srcdir)/../src/utils.c'; fi`
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../src/$(DEPDIR)/___src_libpll_sse3_mpi_a-utils.Tpo ../src/$(DEPDIR)/___src_libpll_sse3_mpi_a-utils.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../src/utils.c' object='../src/___src_libpll_sse3_mpi_a-utils.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_sse3_mpi_a_CFLAGS) $(CFLAGS) -c -o ../src/___src_libpll_sse3_mpi_a-utils.obj `if test -f '../src/utils.c'; then $(CYGPATH_W) '../src/utils.c'; else $(CYGPATH_W) '$(srcdir)/../src/utils.c'; fi`
+
+../src/___src_libpll_sse3_mpi_a-randomTree.o: ../src/randomTree.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_sse3_mpi_a_CFLAGS) $(CFLAGS) -MT ../src/___src_libpll_sse3_mpi_a-randomTree.o -MD -MP -MF ../src/$(DEPDIR)/___src_libpll_sse3_mpi_a-randomTree.Tpo -c -o ../src/___src_libpll_sse3_mpi_a-randomTree.o `test -f '../src/randomTree.c' || echo '$(srcdir)/'`../src/randomTree.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../src/$(DEPDIR)/___src_libpll_sse3_mpi_a-randomTree.Tpo ../src/$(DEPDIR)/___src_libpll_sse3_mpi_a-randomTree.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../src/randomTree.c' object='../src/___src_libpll_sse3_mpi_a-randomTree.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_sse3_mpi_a_CFLAGS) $(CFLAGS) -c -o ../src/___src_libpll_sse3_mpi_a-randomTree.o `test -f '../src/randomTree.c' || echo '$(srcdir)/'`../src/randomTree.c
+
+../src/___src_libpll_sse3_mpi_a-randomTree.obj: ../src/randomTree.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_sse3_mpi_a_CFLAGS) $(CFLAGS) -MT ../src/___src_libpll_sse3_mpi_a-randomTree.obj -MD -MP -MF ../src/$(DEPDIR)/___src_libpll_sse3_mpi_a-randomTree.Tpo -c -o ../src/___src_libpll_sse3_mpi_a-randomTree.obj `if test -f '../src/randomTree.c'; then $(CYGPATH_W) '../src/randomTree.c'; else $(CYGPATH_W) '$(srcdir)/../src/randomTree.c'; fi`
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../src/$(DEPDIR)/___src_libpll_sse3_mpi_a-randomTree.Tpo ../src/$(DEPDIR)/___src_libpll_sse3_mpi_a-randomTree.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../src/randomTree.c' object='../src/___src_libpll_sse3_mpi_a-randomTree.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_sse3_mpi_a_CFLAGS) $(CFLAGS) -c -o ../src/___src_libpll_sse3_mpi_a-randomTree.obj `if test -f '../src/randomTree.c'; then $(CYGPATH_W) '../src/randomTree.c'; else $(CYGPATH_W) '$(srcdir)/../src/randomTree.c'; fi`
+
+../src/___src_libpll_sse3_mpi_a-optimizeModel.o: ../src/optimizeModel.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_sse3_mpi_a_CFLAGS) $(CFLAGS) -MT ../src/___src_libpll_sse3_mpi_a-optimizeModel.o -MD -MP -MF ../src/$(DEPDIR)/___src_libpll_sse3_mpi_a-optimizeModel.Tpo -c -o ../src/___src_libpll_sse3_mpi_a-optimizeModel.o `test -f '../src/optimizeModel.c' || echo '$(srcdir)/'`../src/optimizeModel.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../src/$(DEPDIR)/___src_libpll_sse3_mpi_a-optimizeModel.Tpo ../src/$(DEPDIR)/___src_libpll_sse3_mpi_a-optimizeModel.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../src/optimizeModel.c' object='../src/___src_libpll_sse3_mpi_a-optimizeModel.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_sse3_mpi_a_CFLAGS) $(CFLAGS) -c -o ../src/___src_libpll_sse3_mpi_a-optimizeModel.o `test -f '../src/optimizeModel.c' || echo '$(srcdir)/'`../src/optimizeModel.c
+
+../src/___src_libpll_sse3_mpi_a-optimizeModel.obj: ../src/optimizeModel.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_sse3_mpi_a_CFLAGS) $(CFLAGS) -MT ../src/___src_libpll_sse3_mpi_a-optimizeModel.obj -MD -MP -MF ../src/$(DEPDIR)/___src_libpll_sse3_mpi_a-optimizeModel.Tpo -c -o ../src/___src_libpll_sse3_mpi_a-optimizeModel.obj `if test -f '../src/optimizeModel.c'; then $(CYGPATH_W) '../src/optimizeModel.c'; else $(CYGPATH_W) '$(srcdir)/../src/optimizeModel.c'; fi`
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../src/$(DEPDIR)/___src_libpll_sse3_mpi_a-optimizeModel.Tpo ../src/$(DEPDIR)/___src_libpll_sse3_mpi_a-optimizeModel.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../src/optimizeModel.c' object='../src/___src_libpll_sse3_mpi_a-optimizeModel.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_sse3_mpi_a_CFLAGS) $(CFLAGS) -c -o ../src/___src_libpll_sse3_mpi_a-optimizeModel.obj `if test -f '../src/optimizeModel.c'; then $(CYGPATH_W) '../src/optimizeModel.c'; else $(CYGPATH_W) '$(srcdir)/../src/optimizeModel.c'; fi`
+
+../src/___src_libpll_sse3_mpi_a-trash.o: ../src/trash.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_sse3_mpi_a_CFLAGS) $(CFLAGS) -MT ../src/___src_libpll_sse3_mpi_a-trash.o -MD -MP -MF ../src/$(DEPDIR)/___src_libpll_sse3_mpi_a-trash.Tpo -c -o ../src/___src_libpll_sse3_mpi_a-trash.o `test -f '../src/trash.c' || echo '$(srcdir)/'`../src/trash.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../src/$(DEPDIR)/___src_libpll_sse3_mpi_a-trash.Tpo ../src/$(DEPDIR)/___src_libpll_sse3_mpi_a-trash.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../src/trash.c' object='../src/___src_libpll_sse3_mpi_a-trash.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_sse3_mpi_a_CFLAGS) $(CFLAGS) -c -o ../src/___src_libpll_sse3_mpi_a-trash.o `test -f '../src/trash.c' || echo '$(srcdir)/'`../src/trash.c
+
+../src/___src_libpll_sse3_mpi_a-trash.obj: ../src/trash.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_sse3_mpi_a_CFLAGS) $(CFLAGS) -MT ../src/___src_libpll_sse3_mpi_a-trash.obj -MD -MP -MF ../src/$(DEPDIR)/___src_libpll_sse3_mpi_a-trash.Tpo -c -o ../src/___src_libpll_sse3_mpi_a-trash.obj `if test -f '../src/trash.c'; then $(CYGPATH_W) '../src/trash.c'; else $(CYGPATH_W) '$(srcdir)/../src/trash.c'; fi`
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../src/$(DEPDIR)/___src_libpll_sse3_mpi_a-trash.Tpo ../src/$(DEPDIR)/___src_libpll_sse3_mpi_a-trash.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../src/trash.c' object='../src/___src_libpll_sse3_mpi_a-trash.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_sse3_mpi_a_CFLAGS) $(CFLAGS) -c -o ../src/___src_libpll_sse3_mpi_a-trash.obj `if test -f '../src/trash.c'; then $(CYGPATH_W) '../src/trash.c'; else $(CYGPATH_W) '$(srcdir)/../src/trash.c'; fi`
+
+../src/___src_libpll_sse3_mpi_a-searchAlgo.o: ../src/searchAlgo.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_sse3_mpi_a_CFLAGS) $(CFLAGS) -MT ../src/___src_libpll_sse3_mpi_a-searchAlgo.o -MD -MP -MF ../src/$(DEPDIR)/___src_libpll_sse3_mpi_a-searchAlgo.Tpo -c -o ../src/___src_libpll_sse3_mpi_a-searchAlgo.o `test -f '../src/searchAlgo.c' || echo '$(srcdir)/'`../src/searchAlgo.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../src/$(DEPDIR)/___src_libpll_sse3_mpi_a-searchAlgo.Tpo ../src/$(DEPDIR)/___src_libpll_sse3_mpi_a-searchAlgo.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../src/searchAlgo.c' object='../src/___src_libpll_sse3_mpi_a-searchAlgo.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_sse3_mpi_a_CFLAGS) $(CFLAGS) -c -o ../src/___src_libpll_sse3_mpi_a-searchAlgo.o `test -f '../src/searchAlgo.c' || echo '$(srcdir)/'`../src/searchAlgo.c
+
+../src/___src_libpll_sse3_mpi_a-searchAlgo.obj: ../src/searchAlgo.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_sse3_mpi_a_CFLAGS) $(CFLAGS) -MT ../src/___src_libpll_sse3_mpi_a-searchAlgo.obj -MD -MP -MF ../src/$(DEPDIR)/___src_libpll_sse3_mpi_a-searchAlgo.Tpo -c -o ../src/___src_libpll_sse3_mpi_a-searchAlgo.obj `if test -f '../src/searchAlgo.c'; then $(CYGPATH_W) '../src/searchAlgo.c'; else $(CYGPATH_W) '$(srcdir)/../src/searchAlgo.c'; fi`
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../src/$(DEPDIR)/___src_libpll_sse3_mpi_a-searchAlgo.Tpo ../src/$(DEPDIR)/___src_libpll_sse3_mpi_a-searchAlgo.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../src/searchAlgo.c' object='../src/___src_libpll_sse3_mpi_a-searchAlgo.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_sse3_mpi_a_CFLAGS) $(CFLAGS) -c -o ../src/___src_libpll_sse3_mpi_a-searchAlgo.obj `if test -f '../src/searchAlgo.c'; then $(CYGPATH_W) '../src/searchAlgo.c'; else $(CYGPATH_W) '$(srcdir)/../src/searchAlgo.c'; fi`
+
+../src/___src_libpll_sse3_mpi_a-topologies.o: ../src/topologies.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_sse3_mpi_a_CFLAGS) $(CFLAGS) -MT ../src/___src_libpll_sse3_mpi_a-topologies.o -MD -MP -MF ../src/$(DEPDIR)/___src_libpll_sse3_mpi_a-topologies.Tpo -c -o ../src/___src_libpll_sse3_mpi_a-topologies.o `test -f '../src/topologies.c' || echo '$(srcdir)/'`../src/topologies.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../src/$(DEPDIR)/___src_libpll_sse3_mpi_a-topologies.Tpo ../src/$(DEPDIR)/___src_libpll_sse3_mpi_a-topologies.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../src/topologies.c' object='../src/___src_libpll_sse3_mpi_a-topologies.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_sse3_mpi_a_CFLAGS) $(CFLAGS) -c -o ../src/___src_libpll_sse3_mpi_a-topologies.o `test -f '../src/topologies.c' || echo '$(srcdir)/'`../src/topologies.c
+
+../src/___src_libpll_sse3_mpi_a-topologies.obj: ../src/topologies.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_sse3_mpi_a_CFLAGS) $(CFLAGS) -MT ../src/___src_libpll_sse3_mpi_a-topologies.obj -MD -MP -MF ../src/$(DEPDIR)/___src_libpll_sse3_mpi_a-topologies.Tpo -c -o ../src/___src_libpll_sse3_mpi_a-topologies.obj `if test -f '../src/topologies.c'; then $(CYGPATH_W) '../src/topologies.c'; else $(CYGPATH_W) '$(srcdir)/../src/topologies.c'; fi`
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../src/$(DEPDIR)/___src_libpll_sse3_mpi_a-topologies.Tpo ../src/$(DEPDIR)/___src_libpll_sse3_mpi_a-topologies.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../src/topologies.c' object='../src/___src_libpll_sse3_mpi_a-topologies.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_sse3_mpi_a_CFLAGS) $(CFLAGS) -c -o ../src/___src_libpll_sse3_mpi_a-topologies.obj `if test -f '../src/topologies.c'; then $(CYGPATH_W) '../src/topologies.c'; else $(CYGPATH_W) '$(srcdir)/../src/topologies.c'; fi`
+
+../src/___src_libpll_sse3_mpi_a-fastDNAparsimony.o: ../src/fastDNAparsimony.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_sse3_mpi_a_CFLAGS) $(CFLAGS) -MT ../src/___src_libpll_sse3_mpi_a-fastDNAparsimony.o -MD -MP -MF ../src/$(DEPDIR)/___src_libpll_sse3_mpi_a-fastDNAparsimony.Tpo -c -o ../src/___src_libpll_sse3_mpi_a-fastDNAparsimony.o `test -f '../src/fastDNAparsimony.c' || echo '$(srcdir)/'`../src/fastDNAparsimony.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../src/$(DEPDIR)/___src_libpll_sse3_mpi_a-fastDNAparsimony.Tpo ../src/$(DEPDIR)/___src_libpll_sse3_mpi_a-fastDNAparsimony.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../src/fastDNAparsimony.c' object='../src/___src_libpll_sse3_mpi_a-fastDNAparsimony.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_sse3_mpi_a_CFLAGS) $(CFLAGS) -c -o ../src/___src_libpll_sse3_mpi_a-fastDNAparsimony.o `test -f '../src/fastDNAparsimony.c' || echo '$(srcdir)/'`../src/fastDNAparsimony.c
+
+../src/___src_libpll_sse3_mpi_a-fastDNAparsimony.obj: ../src/fastDNAparsimony.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_sse3_mpi_a_CFLAGS) $(CFLAGS) -MT ../src/___src_libpll_sse3_mpi_a-fastDNAparsimony.obj -MD -MP -MF ../src/$(DEPDIR)/___src_libpll_sse3_mpi_a-fastDNAparsimony.Tpo -c -o ../src/___src_libpll_sse3_mpi_a-fastDNAparsimony.obj `if test -f '../src/fastDNAparsimony.c'; then $(CYGPATH_W) '../src/fastDNAparsimony.c'; else $(CYGPATH_W) '$(srcdir)/../src/fastDNAparsimony.c'; fi`
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../src/$(DEPDIR)/___src_libpll_sse3_mpi_a-fastDNAparsimony.Tpo ../src/$(DEPDIR)/___src_libpll_sse3_mpi_a-fastDNAparsimony.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../src/fastDNAparsimony.c' object='../src/___src_libpll_sse3_mpi_a-fastDNAparsimony.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_sse3_mpi_a_CFLAGS) $(CFLAGS) -c -o ../src/___src_libpll_sse3_mpi_a-fastDNAparsimony.obj `if test -f '../src/fastDNAparsimony.c'; then $(CYGPATH_W) '../src/fastDNAparsimony.c'; else $(CYGPATH_W) '$(srcdir)/../src/fastDNAparsimony.c'; fi`
+
+../src/___src_libpll_sse3_mpi_a-treeIO.o: ../src/treeIO.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_sse3_mpi_a_CFLAGS) $(CFLAGS) -MT ../src/___src_libpll_sse3_mpi_a-treeIO.o -MD -MP -MF ../src/$(DEPDIR)/___src_libpll_sse3_mpi_a-treeIO.Tpo -c -o ../src/___src_libpll_sse3_mpi_a-treeIO.o `test -f '../src/treeIO.c' || echo '$(srcdir)/'`../src/treeIO.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../src/$(DEPDIR)/___src_libpll_sse3_mpi_a-treeIO.Tpo ../src/$(DEPDIR)/___src_libpll_sse3_mpi_a-treeIO.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../src/treeIO.c' object='../src/___src_libpll_sse3_mpi_a-treeIO.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_sse3_mpi_a_CFLAGS) $(CFLAGS) -c -o ../src/___src_libpll_sse3_mpi_a-treeIO.o `test -f '../src/treeIO.c' || echo '$(srcdir)/'`../src/treeIO.c
+
+../src/___src_libpll_sse3_mpi_a-treeIO.obj: ../src/treeIO.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_sse3_mpi_a_CFLAGS) $(CFLAGS) -MT ../src/___src_libpll_sse3_mpi_a-treeIO.obj -MD -MP -MF ../src/$(DEPDIR)/___src_libpll_sse3_mpi_a-treeIO.Tpo -c -o ../src/___src_libpll_sse3_mpi_a-treeIO.obj `if test -f '../src/treeIO.c'; then $(CYGPATH_W) '../src/treeIO.c'; else $(CYGPATH_W) '$(srcdir)/../src/treeIO.c'; fi`
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../src/$(DEPDIR)/___src_libpll_sse3_mpi_a-treeIO.Tpo ../src/$(DEPDIR)/___src_libpll_sse3_mpi_a-treeIO.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../src/treeIO.c' object='../src/___src_libpll_sse3_mpi_a-treeIO.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_sse3_mpi_a_CFLAGS) $(CFLAGS) -c -o ../src/___src_libpll_sse3_mpi_a-treeIO.obj `if test -f '../src/treeIO.c'; then $(CYGPATH_W) '../src/treeIO.c'; else $(CYGPATH_W) '$(srcdir)/../src/treeIO.c'; fi`
+
+../src/___src_libpll_sse3_mpi_a-models.o: ../src/models.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_sse3_mpi_a_CFLAGS) $(CFLAGS) -MT ../src/___src_libpll_sse3_mpi_a-models.o -MD -MP -MF ../src/$(DEPDIR)/___src_libpll_sse3_mpi_a-models.Tpo -c -o ../src/___src_libpll_sse3_mpi_a-models.o `test -f '../src/models.c' || echo '$(srcdir)/'`../src/models.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../src/$(DEPDIR)/___src_libpll_sse3_mpi_a-models.Tpo ../src/$(DEPDIR)/___src_libpll_sse3_mpi_a-models.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../src/models.c' object='../src/___src_libpll_sse3_mpi_a-models.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_sse3_mpi_a_CFLAGS) $(CFLAGS) -c -o ../src/___src_libpll_sse3_mpi_a-models.o `test -f '../src/models.c' || echo '$(srcdir)/'`../src/models.c
+
+../src/___src_libpll_sse3_mpi_a-models.obj: ../src/models.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_sse3_mpi_a_CFLAGS) $(CFLAGS) -MT ../src/___src_libpll_sse3_mpi_a-models.obj -MD -MP -MF ../src/$(DEPDIR)/___src_libpll_sse3_mpi_a-models.Tpo -c -o ../src/___src_libpll_sse3_mpi_a-models.obj `if test -f '../src/models.c'; then $(CYGPATH_W) '../src/models.c'; else $(CYGPATH_W) '$(srcdir)/../src/models.c'; fi`
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../src/$(DEPDIR)/___src_libpll_sse3_mpi_a-models.Tpo ../src/$(DEPDIR)/___src_libpll_sse3_mpi_a-models.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../src/models.c' object='../src/___src_libpll_sse3_mpi_a-models.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_sse3_mpi_a_CFLAGS) $(CFLAGS) -c -o ../src/___src_libpll_sse3_mpi_a-models.obj `if test -f '../src/models.c'; then $(CYGPATH_W) '../src/models.c'; else $(CYGPATH_W) '$(srcdir)/../src/models.c'; fi`
+
+../src/___src_libpll_sse3_mpi_a-evaluatePartialGenericSpecial.o: ../src/evaluatePartialGenericSpecial.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_sse3_mpi_a_CFLAGS) $(CFLAGS) -MT ../src/___src_libpll_sse3_mpi_a-evaluatePartialGenericSpecial.o -MD -MP -MF ../src/$(DEPDIR)/___src_libpll_sse3_mpi_a-evaluatePartialGenericSpecial.Tpo -c -o ../src/___src_libpll_sse3_mpi_a-evaluatePartialGenericSpecial.o `test -f '../src/evaluatePartialGenericSpecial.c' || echo '$(srcdir)/'`../src/evaluatePartialGenericSpecial.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../src/$(DEPDIR)/___src_libpll_sse3_mpi_a-evaluatePartialGenericSpecial.Tpo ../src/$(DEPDIR)/___src_libpll_sse3_mpi_a-evaluatePartialGenericSpecial.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../src/evaluatePartialGenericSpecial.c' object='../src/___src_libpll_sse3_mpi_a-evaluatePartialGenericSpecial.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_sse3_mpi_a_CFLAGS) $(CFLAGS) -c -o ../src/___src_libpll_sse3_mpi_a-evaluatePartialGenericSpecial.o `test -f '../src/evaluatePartialGenericSpecial.c' || echo '$(srcdir)/'`../src/evaluatePartialGenericSpecial.c
+
+../src/___src_libpll_sse3_mpi_a-evaluatePartialGenericSpecial.obj: ../src/evaluatePartialGenericSpecial.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_sse3_mpi_a_CFLAGS) $(CFLAGS) -MT ../src/___src_libpll_sse3_mpi_a-evaluatePartialGenericSpecial.obj -MD -MP -MF ../src/$(DEPDIR)/___src_libpll_sse3_mpi_a-evaluatePartialGenericSpecial.Tpo -c -o ../src/___src_libpll_sse3_mpi_a-evaluatePartialGenericSpecial.obj `if test -f '../src/evaluatePartialGenericSpecial.c'; then $(CYGPATH_W) '../src/evaluatePartialGenericSpecial.c'; [...]
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../src/$(DEPDIR)/___src_libpll_sse3_mpi_a-evaluatePartialGenericSpecial.Tpo ../src/$(DEPDIR)/___src_libpll_sse3_mpi_a-evaluatePartialGenericSpecial.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../src/evaluatePartialGenericSpecial.c' object='../src/___src_libpll_sse3_mpi_a-evaluatePartialGenericSpecial.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_sse3_mpi_a_CFLAGS) $(CFLAGS) -c -o ../src/___src_libpll_sse3_mpi_a-evaluatePartialGenericSpecial.obj `if test -f '../src/evaluatePartialGenericSpecial.c'; then $(CYGPATH_W) '../src/evaluatePartialGenericSpecial.c'; else $(CYGPATH_W) '$(srcdir)/../src/evaluatePartialGenericSpecial.c'; fi`
+
+../src/___src_libpll_sse3_mpi_a-evaluateGenericSpecial.o: ../src/evaluateGenericSpecial.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_sse3_mpi_a_CFLAGS) $(CFLAGS) -MT ../src/___src_libpll_sse3_mpi_a-evaluateGenericSpecial.o -MD -MP -MF ../src/$(DEPDIR)/___src_libpll_sse3_mpi_a-evaluateGenericSpecial.Tpo -c -o ../src/___src_libpll_sse3_mpi_a-evaluateGenericSpecial.o `test -f '../src/evaluateGenericSpecial.c' || echo '$(srcdir)/'`../src/evaluateGenericSpecial.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../src/$(DEPDIR)/___src_libpll_sse3_mpi_a-evaluateGenericSpecial.Tpo ../src/$(DEPDIR)/___src_libpll_sse3_mpi_a-evaluateGenericSpecial.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../src/evaluateGenericSpecial.c' object='../src/___src_libpll_sse3_mpi_a-evaluateGenericSpecial.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_sse3_mpi_a_CFLAGS) $(CFLAGS) -c -o ../src/___src_libpll_sse3_mpi_a-evaluateGenericSpecial.o `test -f '../src/evaluateGenericSpecial.c' || echo '$(srcdir)/'`../src/evaluateGenericSpecial.c
+
+../src/___src_libpll_sse3_mpi_a-evaluateGenericSpecial.obj: ../src/evaluateGenericSpecial.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_sse3_mpi_a_CFLAGS) $(CFLAGS) -MT ../src/___src_libpll_sse3_mpi_a-evaluateGenericSpecial.obj -MD -MP -MF ../src/$(DEPDIR)/___src_libpll_sse3_mpi_a-evaluateGenericSpecial.Tpo -c -o ../src/___src_libpll_sse3_mpi_a-evaluateGenericSpecial.obj `if test -f '../src/evaluateGenericSpecial.c'; then $(CYGPATH_W) '../src/evaluateGenericSpecial.c'; else $(CYGPATH_W) '$(srcdir)/../sr [...]
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../src/$(DEPDIR)/___src_libpll_sse3_mpi_a-evaluateGenericSpecial.Tpo ../src/$(DEPDIR)/___src_libpll_sse3_mpi_a-evaluateGenericSpecial.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../src/evaluateGenericSpecial.c' object='../src/___src_libpll_sse3_mpi_a-evaluateGenericSpecial.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_sse3_mpi_a_CFLAGS) $(CFLAGS) -c -o ../src/___src_libpll_sse3_mpi_a-evaluateGenericSpecial.obj `if test -f '../src/evaluateGenericSpecial.c'; then $(CYGPATH_W) '../src/evaluateGenericSpecial.c'; else $(CYGPATH_W) '$(srcdir)/../src/evaluateGenericSpecial.c'; fi`
+
+../src/___src_libpll_sse3_mpi_a-newviewGenericSpecial.o: ../src/newviewGenericSpecial.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_sse3_mpi_a_CFLAGS) $(CFLAGS) -MT ../src/___src_libpll_sse3_mpi_a-newviewGenericSpecial.o -MD -MP -MF ../src/$(DEPDIR)/___src_libpll_sse3_mpi_a-newviewGenericSpecial.Tpo -c -o ../src/___src_libpll_sse3_mpi_a-newviewGenericSpecial.o `test -f '../src/newviewGenericSpecial.c' || echo '$(srcdir)/'`../src/newviewGenericSpecial.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../src/$(DEPDIR)/___src_libpll_sse3_mpi_a-newviewGenericSpecial.Tpo ../src/$(DEPDIR)/___src_libpll_sse3_mpi_a-newviewGenericSpecial.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../src/newviewGenericSpecial.c' object='../src/___src_libpll_sse3_mpi_a-newviewGenericSpecial.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_sse3_mpi_a_CFLAGS) $(CFLAGS) -c -o ../src/___src_libpll_sse3_mpi_a-newviewGenericSpecial.o `test -f '../src/newviewGenericSpecial.c' || echo '$(srcdir)/'`../src/newviewGenericSpecial.c
+
+../src/___src_libpll_sse3_mpi_a-newviewGenericSpecial.obj: ../src/newviewGenericSpecial.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_sse3_mpi_a_CFLAGS) $(CFLAGS) -MT ../src/___src_libpll_sse3_mpi_a-newviewGenericSpecial.obj -MD -MP -MF ../src/$(DEPDIR)/___src_libpll_sse3_mpi_a-newviewGenericSpecial.Tpo -c -o ../src/___src_libpll_sse3_mpi_a-newviewGenericSpecial.obj `if test -f '../src/newviewGenericSpecial.c'; then $(CYGPATH_W) '../src/newviewGenericSpecial.c'; else $(CYGPATH_W) '$(srcdir)/../src/new [...]
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../src/$(DEPDIR)/___src_libpll_sse3_mpi_a-newviewGenericSpecial.Tpo ../src/$(DEPDIR)/___src_libpll_sse3_mpi_a-newviewGenericSpecial.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../src/newviewGenericSpecial.c' object='../src/___src_libpll_sse3_mpi_a-newviewGenericSpecial.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_sse3_mpi_a_CFLAGS) $(CFLAGS) -c -o ../src/___src_libpll_sse3_mpi_a-newviewGenericSpecial.obj `if test -f '../src/newviewGenericSpecial.c'; then $(CYGPATH_W) '../src/newviewGenericSpecial.c'; else $(CYGPATH_W) '$(srcdir)/../src/newviewGenericSpecial.c'; fi`
+
+../src/___src_libpll_sse3_mpi_a-makenewzGenericSpecial.o: ../src/makenewzGenericSpecial.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_sse3_mpi_a_CFLAGS) $(CFLAGS) -MT ../src/___src_libpll_sse3_mpi_a-makenewzGenericSpecial.o -MD -MP -MF ../src/$(DEPDIR)/___src_libpll_sse3_mpi_a-makenewzGenericSpecial.Tpo -c -o ../src/___src_libpll_sse3_mpi_a-makenewzGenericSpecial.o `test -f '../src/makenewzGenericSpecial.c' || echo '$(srcdir)/'`../src/makenewzGenericSpecial.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../src/$(DEPDIR)/___src_libpll_sse3_mpi_a-makenewzGenericSpecial.Tpo ../src/$(DEPDIR)/___src_libpll_sse3_mpi_a-makenewzGenericSpecial.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../src/makenewzGenericSpecial.c' object='../src/___src_libpll_sse3_mpi_a-makenewzGenericSpecial.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_sse3_mpi_a_CFLAGS) $(CFLAGS) -c -o ../src/___src_libpll_sse3_mpi_a-makenewzGenericSpecial.o `test -f '../src/makenewzGenericSpecial.c' || echo '$(srcdir)/'`../src/makenewzGenericSpecial.c
+
+../src/___src_libpll_sse3_mpi_a-makenewzGenericSpecial.obj: ../src/makenewzGenericSpecial.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_sse3_mpi_a_CFLAGS) $(CFLAGS) -MT ../src/___src_libpll_sse3_mpi_a-makenewzGenericSpecial.obj -MD -MP -MF ../src/$(DEPDIR)/___src_libpll_sse3_mpi_a-makenewzGenericSpecial.Tpo -c -o ../src/___src_libpll_sse3_mpi_a-makenewzGenericSpecial.obj `if test -f '../src/makenewzGenericSpecial.c'; then $(CYGPATH_W) '../src/makenewzGenericSpecial.c'; else $(CYGPATH_W) '$(srcdir)/../sr [...]
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../src/$(DEPDIR)/___src_libpll_sse3_mpi_a-makenewzGenericSpecial.Tpo ../src/$(DEPDIR)/___src_libpll_sse3_mpi_a-makenewzGenericSpecial.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../src/makenewzGenericSpecial.c' object='../src/___src_libpll_sse3_mpi_a-makenewzGenericSpecial.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_sse3_mpi_a_CFLAGS) $(CFLAGS) -c -o ../src/___src_libpll_sse3_mpi_a-makenewzGenericSpecial.obj `if test -f '../src/makenewzGenericSpecial.c'; then $(CYGPATH_W) '../src/makenewzGenericSpecial.c'; else $(CYGPATH_W) '$(srcdir)/../src/makenewzGenericSpecial.c'; fi`
+
+../src/___src_libpll_sse3_mpi_a-bipartitionList.o: ../src/bipartitionList.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_sse3_mpi_a_CFLAGS) $(CFLAGS) -MT ../src/___src_libpll_sse3_mpi_a-bipartitionList.o -MD -MP -MF ../src/$(DEPDIR)/___src_libpll_sse3_mpi_a-bipartitionList.Tpo -c -o ../src/___src_libpll_sse3_mpi_a-bipartitionList.o `test -f '../src/bipartitionList.c' || echo '$(srcdir)/'`../src/bipartitionList.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../src/$(DEPDIR)/___src_libpll_sse3_mpi_a-bipartitionList.Tpo ../src/$(DEPDIR)/___src_libpll_sse3_mpi_a-bipartitionList.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../src/bipartitionList.c' object='../src/___src_libpll_sse3_mpi_a-bipartitionList.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_sse3_mpi_a_CFLAGS) $(CFLAGS) -c -o ../src/___src_libpll_sse3_mpi_a-bipartitionList.o `test -f '../src/bipartitionList.c' || echo '$(srcdir)/'`../src/bipartitionList.c
+
+../src/___src_libpll_sse3_mpi_a-bipartitionList.obj: ../src/bipartitionList.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_sse3_mpi_a_CFLAGS) $(CFLAGS) -MT ../src/___src_libpll_sse3_mpi_a-bipartitionList.obj -MD -MP -MF ../src/$(DEPDIR)/___src_libpll_sse3_mpi_a-bipartitionList.Tpo -c -o ../src/___src_libpll_sse3_mpi_a-bipartitionList.obj `if test -f '../src/bipartitionList.c'; then $(CYGPATH_W) '../src/bipartitionList.c'; else $(CYGPATH_W) '$(srcdir)/../src/bipartitionList.c'; fi`
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../src/$(DEPDIR)/___src_libpll_sse3_mpi_a-bipartitionList.Tpo ../src/$(DEPDIR)/___src_libpll_sse3_mpi_a-bipartitionList.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../src/bipartitionList.c' object='../src/___src_libpll_sse3_mpi_a-bipartitionList.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_sse3_mpi_a_CFLAGS) $(CFLAGS) -c -o ../src/___src_libpll_sse3_mpi_a-bipartitionList.obj `if test -f '../src/bipartitionList.c'; then $(CYGPATH_W) '../src/bipartitionList.c'; else $(CYGPATH_W) '$(srcdir)/../src/bipartitionList.c'; fi`
+
+../src/___src_libpll_sse3_mpi_a-restartHashTable.o: ../src/restartHashTable.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_sse3_mpi_a_CFLAGS) $(CFLAGS) -MT ../src/___src_libpll_sse3_mpi_a-restartHashTable.o -MD -MP -MF ../src/$(DEPDIR)/___src_libpll_sse3_mpi_a-restartHashTable.Tpo -c -o ../src/___src_libpll_sse3_mpi_a-restartHashTable.o `test -f '../src/restartHashTable.c' || echo '$(srcdir)/'`../src/restartHashTable.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../src/$(DEPDIR)/___src_libpll_sse3_mpi_a-restartHashTable.Tpo ../src/$(DEPDIR)/___src_libpll_sse3_mpi_a-restartHashTable.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../src/restartHashTable.c' object='../src/___src_libpll_sse3_mpi_a-restartHashTable.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_sse3_mpi_a_CFLAGS) $(CFLAGS) -c -o ../src/___src_libpll_sse3_mpi_a-restartHashTable.o `test -f '../src/restartHashTable.c' || echo '$(srcdir)/'`../src/restartHashTable.c
+
+../src/___src_libpll_sse3_mpi_a-restartHashTable.obj: ../src/restartHashTable.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_sse3_mpi_a_CFLAGS) $(CFLAGS) -MT ../src/___src_libpll_sse3_mpi_a-restartHashTable.obj -MD -MP -MF ../src/$(DEPDIR)/___src_libpll_sse3_mpi_a-restartHashTable.Tpo -c -o ../src/___src_libpll_sse3_mpi_a-restartHashTable.obj `if test -f '../src/restartHashTable.c'; then $(CYGPATH_W) '../src/restartHashTable.c'; else $(CYGPATH_W) '$(srcdir)/../src/restartHashTable.c'; fi`
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../src/$(DEPDIR)/___src_libpll_sse3_mpi_a-restartHashTable.Tpo ../src/$(DEPDIR)/___src_libpll_sse3_mpi_a-restartHashTable.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../src/restartHashTable.c' object='../src/___src_libpll_sse3_mpi_a-restartHashTable.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_sse3_mpi_a_CFLAGS) $(CFLAGS) -c -o ../src/___src_libpll_sse3_mpi_a-restartHashTable.obj `if test -f '../src/restartHashTable.c'; then $(CYGPATH_W) '../src/restartHashTable.c'; else $(CYGPATH_W) '$(srcdir)/../src/restartHashTable.c'; fi`
+
+../src/___src_libpll_sse3_mpi_a-recom.o: ../src/recom.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_sse3_mpi_a_CFLAGS) $(CFLAGS) -MT ../src/___src_libpll_sse3_mpi_a-recom.o -MD -MP -MF ../src/$(DEPDIR)/___src_libpll_sse3_mpi_a-recom.Tpo -c -o ../src/___src_libpll_sse3_mpi_a-recom.o `test -f '../src/recom.c' || echo '$(srcdir)/'`../src/recom.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../src/$(DEPDIR)/___src_libpll_sse3_mpi_a-recom.Tpo ../src/$(DEPDIR)/___src_libpll_sse3_mpi_a-recom.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../src/recom.c' object='../src/___src_libpll_sse3_mpi_a-recom.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_sse3_mpi_a_CFLAGS) $(CFLAGS) -c -o ../src/___src_libpll_sse3_mpi_a-recom.o `test -f '../src/recom.c' || echo '$(srcdir)/'`../src/recom.c
+
+../src/___src_libpll_sse3_mpi_a-recom.obj: ../src/recom.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_sse3_mpi_a_CFLAGS) $(CFLAGS) -MT ../src/___src_libpll_sse3_mpi_a-recom.obj -MD -MP -MF ../src/$(DEPDIR)/___src_libpll_sse3_mpi_a-recom.Tpo -c -o ../src/___src_libpll_sse3_mpi_a-recom.obj `if test -f '../src/recom.c'; then $(CYGPATH_W) '../src/recom.c'; else $(CYGPATH_W) '$(srcdir)/../src/recom.c'; fi`
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../src/$(DEPDIR)/___src_libpll_sse3_mpi_a-recom.Tpo ../src/$(DEPDIR)/___src_libpll_sse3_mpi_a-recom.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../src/recom.c' object='../src/___src_libpll_sse3_mpi_a-recom.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_sse3_mpi_a_CFLAGS) $(CFLAGS) -c -o ../src/___src_libpll_sse3_mpi_a-recom.obj `if test -f '../src/recom.c'; then $(CYGPATH_W) '../src/recom.c'; else $(CYGPATH_W) '$(srcdir)/../src/recom.c'; fi`
+
+../src/___src_libpll_sse3_mpi_a-lexer.o: ../src/lexer.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_sse3_mpi_a_CFLAGS) $(CFLAGS) -MT ../src/___src_libpll_sse3_mpi_a-lexer.o -MD -MP -MF ../src/$(DEPDIR)/___src_libpll_sse3_mpi_a-lexer.Tpo -c -o ../src/___src_libpll_sse3_mpi_a-lexer.o `test -f '../src/lexer.c' || echo '$(srcdir)/'`../src/lexer.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../src/$(DEPDIR)/___src_libpll_sse3_mpi_a-lexer.Tpo ../src/$(DEPDIR)/___src_libpll_sse3_mpi_a-lexer.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../src/lexer.c' object='../src/___src_libpll_sse3_mpi_a-lexer.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_sse3_mpi_a_CFLAGS) $(CFLAGS) -c -o ../src/___src_libpll_sse3_mpi_a-lexer.o `test -f '../src/lexer.c' || echo '$(srcdir)/'`../src/lexer.c
+
+../src/___src_libpll_sse3_mpi_a-lexer.obj: ../src/lexer.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_sse3_mpi_a_CFLAGS) $(CFLAGS) -MT ../src/___src_libpll_sse3_mpi_a-lexer.obj -MD -MP -MF ../src/$(DEPDIR)/___src_libpll_sse3_mpi_a-lexer.Tpo -c -o ../src/___src_libpll_sse3_mpi_a-lexer.obj `if test -f '../src/lexer.c'; then $(CYGPATH_W) '../src/lexer.c'; else $(CYGPATH_W) '$(srcdir)/../src/lexer.c'; fi`
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../src/$(DEPDIR)/___src_libpll_sse3_mpi_a-lexer.Tpo ../src/$(DEPDIR)/___src_libpll_sse3_mpi_a-lexer.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../src/lexer.c' object='../src/___src_libpll_sse3_mpi_a-lexer.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_sse3_mpi_a_CFLAGS) $(CFLAGS) -c -o ../src/___src_libpll_sse3_mpi_a-lexer.obj `if test -f '../src/lexer.c'; then $(CYGPATH_W) '../src/lexer.c'; else $(CYGPATH_W) '$(srcdir)/../src/lexer.c'; fi`
+
+../src/___src_libpll_sse3_mpi_a-alignment.o: ../src/alignment.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_sse3_mpi_a_CFLAGS) $(CFLAGS) -MT ../src/___src_libpll_sse3_mpi_a-alignment.o -MD -MP -MF ../src/$(DEPDIR)/___src_libpll_sse3_mpi_a-alignment.Tpo -c -o ../src/___src_libpll_sse3_mpi_a-alignment.o `test -f '../src/alignment.c' || echo '$(srcdir)/'`../src/alignment.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../src/$(DEPDIR)/___src_libpll_sse3_mpi_a-alignment.Tpo ../src/$(DEPDIR)/___src_libpll_sse3_mpi_a-alignment.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../src/alignment.c' object='../src/___src_libpll_sse3_mpi_a-alignment.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_sse3_mpi_a_CFLAGS) $(CFLAGS) -c -o ../src/___src_libpll_sse3_mpi_a-alignment.o `test -f '../src/alignment.c' || echo '$(srcdir)/'`../src/alignment.c
+
+../src/___src_libpll_sse3_mpi_a-alignment.obj: ../src/alignment.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_sse3_mpi_a_CFLAGS) $(CFLAGS) -MT ../src/___src_libpll_sse3_mpi_a-alignment.obj -MD -MP -MF ../src/$(DEPDIR)/___src_libpll_sse3_mpi_a-alignment.Tpo -c -o ../src/___src_libpll_sse3_mpi_a-alignment.obj `if test -f '../src/alignment.c'; then $(CYGPATH_W) '../src/alignment.c'; else $(CYGPATH_W) '$(srcdir)/../src/alignment.c'; fi`
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../src/$(DEPDIR)/___src_libpll_sse3_mpi_a-alignment.Tpo ../src/$(DEPDIR)/___src_libpll_sse3_mpi_a-alignment.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../src/alignment.c' object='../src/___src_libpll_sse3_mpi_a-alignment.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_sse3_mpi_a_CFLAGS) $(CFLAGS) -c -o ../src/___src_libpll_sse3_mpi_a-alignment.obj `if test -f '../src/alignment.c'; then $(CYGPATH_W) '../src/alignment.c'; else $(CYGPATH_W) '$(srcdir)/../src/alignment.c'; fi`
+
+../src/___src_libpll_sse3_mpi_a-newick.o: ../src/newick.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_sse3_mpi_a_CFLAGS) $(CFLAGS) -MT ../src/___src_libpll_sse3_mpi_a-newick.o -MD -MP -MF ../src/$(DEPDIR)/___src_libpll_sse3_mpi_a-newick.Tpo -c -o ../src/___src_libpll_sse3_mpi_a-newick.o `test -f '../src/newick.c' || echo '$(srcdir)/'`../src/newick.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../src/$(DEPDIR)/___src_libpll_sse3_mpi_a-newick.Tpo ../src/$(DEPDIR)/___src_libpll_sse3_mpi_a-newick.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../src/newick.c' object='../src/___src_libpll_sse3_mpi_a-newick.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_sse3_mpi_a_CFLAGS) $(CFLAGS) -c -o ../src/___src_libpll_sse3_mpi_a-newick.o `test -f '../src/newick.c' || echo '$(srcdir)/'`../src/newick.c
+
+../src/___src_libpll_sse3_mpi_a-newick.obj: ../src/newick.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_sse3_mpi_a_CFLAGS) $(CFLAGS) -MT ../src/___src_libpll_sse3_mpi_a-newick.obj -MD -MP -MF ../src/$(DEPDIR)/___src_libpll_sse3_mpi_a-newick.Tpo -c -o ../src/___src_libpll_sse3_mpi_a-newick.obj `if test -f '../src/newick.c'; then $(CYGPATH_W) '../src/newick.c'; else $(CYGPATH_W) '$(srcdir)/../src/newick.c'; fi`
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../src/$(DEPDIR)/___src_libpll_sse3_mpi_a-newick.Tpo ../src/$(DEPDIR)/___src_libpll_sse3_mpi_a-newick.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../src/newick.c' object='../src/___src_libpll_sse3_mpi_a-newick.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_sse3_mpi_a_CFLAGS) $(CFLAGS) -c -o ../src/___src_libpll_sse3_mpi_a-newick.obj `if test -f '../src/newick.c'; then $(CYGPATH_W) '../src/newick.c'; else $(CYGPATH_W) '$(srcdir)/../src/newick.c'; fi`
+
+../src/___src_libpll_sse3_mpi_a-parsePartition.o: ../src/parsePartition.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_sse3_mpi_a_CFLAGS) $(CFLAGS) -MT ../src/___src_libpll_sse3_mpi_a-parsePartition.o -MD -MP -MF ../src/$(DEPDIR)/___src_libpll_sse3_mpi_a-parsePartition.Tpo -c -o ../src/___src_libpll_sse3_mpi_a-parsePartition.o `test -f '../src/parsePartition.c' || echo '$(srcdir)/'`../src/parsePartition.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../src/$(DEPDIR)/___src_libpll_sse3_mpi_a-parsePartition.Tpo ../src/$(DEPDIR)/___src_libpll_sse3_mpi_a-parsePartition.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../src/parsePartition.c' object='../src/___src_libpll_sse3_mpi_a-parsePartition.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_sse3_mpi_a_CFLAGS) $(CFLAGS) -c -o ../src/___src_libpll_sse3_mpi_a-parsePartition.o `test -f '../src/parsePartition.c' || echo '$(srcdir)/'`../src/parsePartition.c
+
+../src/___src_libpll_sse3_mpi_a-parsePartition.obj: ../src/parsePartition.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_sse3_mpi_a_CFLAGS) $(CFLAGS) -MT ../src/___src_libpll_sse3_mpi_a-parsePartition.obj -MD -MP -MF ../src/$(DEPDIR)/___src_libpll_sse3_mpi_a-parsePartition.Tpo -c -o ../src/___src_libpll_sse3_mpi_a-parsePartition.obj `if test -f '../src/parsePartition.c'; then $(CYGPATH_W) '../src/parsePartition.c'; else $(CYGPATH_W) '$(srcdir)/../src/parsePartition.c'; fi`
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../src/$(DEPDIR)/___src_libpll_sse3_mpi_a-parsePartition.Tpo ../src/$(DEPDIR)/___src_libpll_sse3_mpi_a-parsePartition.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../src/parsePartition.c' object='../src/___src_libpll_sse3_mpi_a-parsePartition.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_sse3_mpi_a_CFLAGS) $(CFLAGS) -c -o ../src/___src_libpll_sse3_mpi_a-parsePartition.obj `if test -f '../src/parsePartition.c'; then $(CYGPATH_W) '../src/parsePartition.c'; else $(CYGPATH_W) '$(srcdir)/../src/parsePartition.c'; fi`
+
+../src/___src_libpll_sse3_mpi_a-parsimony.o: ../src/parsimony.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_sse3_mpi_a_CFLAGS) $(CFLAGS) -MT ../src/___src_libpll_sse3_mpi_a-parsimony.o -MD -MP -MF ../src/$(DEPDIR)/___src_libpll_sse3_mpi_a-parsimony.Tpo -c -o ../src/___src_libpll_sse3_mpi_a-parsimony.o `test -f '../src/parsimony.c' || echo '$(srcdir)/'`../src/parsimony.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../src/$(DEPDIR)/___src_libpll_sse3_mpi_a-parsimony.Tpo ../src/$(DEPDIR)/___src_libpll_sse3_mpi_a-parsimony.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../src/parsimony.c' object='../src/___src_libpll_sse3_mpi_a-parsimony.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_sse3_mpi_a_CFLAGS) $(CFLAGS) -c -o ../src/___src_libpll_sse3_mpi_a-parsimony.o `test -f '../src/parsimony.c' || echo '$(srcdir)/'`../src/parsimony.c
+
+../src/___src_libpll_sse3_mpi_a-parsimony.obj: ../src/parsimony.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_sse3_mpi_a_CFLAGS) $(CFLAGS) -MT ../src/___src_libpll_sse3_mpi_a-parsimony.obj -MD -MP -MF ../src/$(DEPDIR)/___src_libpll_sse3_mpi_a-parsimony.Tpo -c -o ../src/___src_libpll_sse3_mpi_a-parsimony.obj `if test -f '../src/parsimony.c'; then $(CYGPATH_W) '../src/parsimony.c'; else $(CYGPATH_W) '$(srcdir)/../src/parsimony.c'; fi`
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../src/$(DEPDIR)/___src_libpll_sse3_mpi_a-parsimony.Tpo ../src/$(DEPDIR)/___src_libpll_sse3_mpi_a-parsimony.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../src/parsimony.c' object='../src/___src_libpll_sse3_mpi_a-parsimony.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_sse3_mpi_a_CFLAGS) $(CFLAGS) -c -o ../src/___src_libpll_sse3_mpi_a-parsimony.obj `if test -f '../src/parsimony.c'; then $(CYGPATH_W) '../src/parsimony.c'; else $(CYGPATH_W) '$(srcdir)/../src/parsimony.c'; fi`
+
+../src/___src_libpll_avx_mpi_la-avxLikelihood.lo: ../src/avxLikelihood.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_avx_mpi_la_CFLAGS) $(CFLAGS) -MT ../src/___src_libpll_avx_mpi_la-avxLikelihood.lo -MD -MP -MF ../src/$(DEPDIR)/___src_libpll_avx_mpi_la-avxLikelihood.Tpo -c -o ../src/___src_libpll_avx_mpi_la-avxLikelihood.lo `test -f '../src/avxLikelihood.c' || echo '$(srcdir)/'`../src/avxLikelihood.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../src/$(DEPDIR)/___src_libpll_avx_mpi_la-avxLikelihood.Tpo ../src/$(DEPDIR)/___src_libpll_avx_mpi_la-avxLikelihood.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../src/avxLikelihood.c' object='../src/___src_libpll_avx_mpi_la-avxLikelihood.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_avx_mpi_la_CFLAGS) $(CFLAGS) -c -o ../src/___src_libpll_avx_mpi_la-avxLikelihood.lo `test -f '../src/avxLikelihood.c' || echo '$(srcdir)/'`../src/avxLikelihood.c
+
+../src/___src_libpll_avx_mpi_la-genericParallelization.lo: ../src/genericParallelization.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_avx_mpi_la_CFLAGS) $(CFLAGS) -MT ../src/___src_libpll_avx_mpi_la-genericParallelization.lo -MD -MP -MF ../src/$(DEPDIR)/___src_libpll_avx_mpi_la-genericParallelization.Tpo -c -o ../src/___src_libpll_avx_mpi_la-genericParallelization.lo `test -f '../src/genericParallelization.c' || echo '$(s [...]
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../src/$(DEPDIR)/___src_libpll_avx_mpi_la-genericParallelization.Tpo ../src/$(DEPDIR)/___src_libpll_avx_mpi_la-genericParallelization.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../src/genericParallelization.c' object='../src/___src_libpll_avx_mpi_la-genericParallelization.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_avx_mpi_la_CFLAGS) $(CFLAGS) -c -o ../src/___src_libpll_avx_mpi_la-genericParallelization.lo `test -f '../src/genericParallelization.c' || echo '$(srcdir)/'`../src/genericParallelization.c
+
+../src/___src_libpll_avx_mpi_la-hash.lo: ../src/hash.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_avx_mpi_la_CFLAGS) $(CFLAGS) -MT ../src/___src_libpll_avx_mpi_la-hash.lo -MD -MP -MF ../src/$(DEPDIR)/___src_libpll_avx_mpi_la-hash.Tpo -c -o ../src/___src_libpll_avx_mpi_la-hash.lo `test -f '../src/hash.c' || echo '$(srcdir)/'`../src/hash.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../src/$(DEPDIR)/___src_libpll_avx_mpi_la-hash.Tpo ../src/$(DEPDIR)/___src_libpll_avx_mpi_la-hash.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../src/hash.c' object='../src/___src_libpll_avx_mpi_la-hash.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_avx_mpi_la_CFLAGS) $(CFLAGS) -c -o ../src/___src_libpll_avx_mpi_la-hash.lo `test -f '../src/hash.c' || echo '$(srcdir)/'`../src/hash.c
+
+../src/___src_libpll_avx_mpi_la-stack.lo: ../src/stack.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_avx_mpi_la_CFLAGS) $(CFLAGS) -MT ../src/___src_libpll_avx_mpi_la-stack.lo -MD -MP -MF ../src/$(DEPDIR)/___src_libpll_avx_mpi_la-stack.Tpo -c -o ../src/___src_libpll_avx_mpi_la-stack.lo `test -f '../src/stack.c' || echo '$(srcdir)/'`../src/stack.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../src/$(DEPDIR)/___src_libpll_avx_mpi_la-stack.Tpo ../src/$(DEPDIR)/___src_libpll_avx_mpi_la-stack.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../src/stack.c' object='../src/___src_libpll_avx_mpi_la-stack.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_avx_mpi_la_CFLAGS) $(CFLAGS) -c -o ../src/___src_libpll_avx_mpi_la-stack.lo `test -f '../src/stack.c' || echo '$(srcdir)/'`../src/stack.c
+
+../src/___src_libpll_avx_mpi_la-ssort.lo: ../src/ssort.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_avx_mpi_la_CFLAGS) $(CFLAGS) -MT ../src/___src_libpll_avx_mpi_la-ssort.lo -MD -MP -MF ../src/$(DEPDIR)/___src_libpll_avx_mpi_la-ssort.Tpo -c -o ../src/___src_libpll_avx_mpi_la-ssort.lo `test -f '../src/ssort.c' || echo '$(srcdir)/'`../src/ssort.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../src/$(DEPDIR)/___src_libpll_avx_mpi_la-ssort.Tpo ../src/$(DEPDIR)/___src_libpll_avx_mpi_la-ssort.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../src/ssort.c' object='../src/___src_libpll_avx_mpi_la-ssort.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_avx_mpi_la_CFLAGS) $(CFLAGS) -c -o ../src/___src_libpll_avx_mpi_la-ssort.lo `test -f '../src/ssort.c' || echo '$(srcdir)/'`../src/ssort.c
+
+../src/___src_libpll_avx_mpi_la-queue.lo: ../src/queue.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_avx_mpi_la_CFLAGS) $(CFLAGS) -MT ../src/___src_libpll_avx_mpi_la-queue.lo -MD -MP -MF ../src/$(DEPDIR)/___src_libpll_avx_mpi_la-queue.Tpo -c -o ../src/___src_libpll_avx_mpi_la-queue.lo `test -f '../src/queue.c' || echo '$(srcdir)/'`../src/queue.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../src/$(DEPDIR)/___src_libpll_avx_mpi_la-queue.Tpo ../src/$(DEPDIR)/___src_libpll_avx_mpi_la-queue.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../src/queue.c' object='../src/___src_libpll_avx_mpi_la-queue.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_avx_mpi_la_CFLAGS) $(CFLAGS) -c -o ../src/___src_libpll_avx_mpi_la-queue.lo `test -f '../src/queue.c' || echo '$(srcdir)/'`../src/queue.c
+
+../src/___src_libpll_avx_mpi_la-utils.lo: ../src/utils.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_avx_mpi_la_CFLAGS) $(CFLAGS) -MT ../src/___src_libpll_avx_mpi_la-utils.lo -MD -MP -MF ../src/$(DEPDIR)/___src_libpll_avx_mpi_la-utils.Tpo -c -o ../src/___src_libpll_avx_mpi_la-utils.lo `test -f '../src/utils.c' || echo '$(srcdir)/'`../src/utils.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../src/$(DEPDIR)/___src_libpll_avx_mpi_la-utils.Tpo ../src/$(DEPDIR)/___src_libpll_avx_mpi_la-utils.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../src/utils.c' object='../src/___src_libpll_avx_mpi_la-utils.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_avx_mpi_la_CFLAGS) $(CFLAGS) -c -o ../src/___src_libpll_avx_mpi_la-utils.lo `test -f '../src/utils.c' || echo '$(srcdir)/'`../src/utils.c
+
+../src/___src_libpll_avx_mpi_la-randomTree.lo: ../src/randomTree.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_avx_mpi_la_CFLAGS) $(CFLAGS) -MT ../src/___src_libpll_avx_mpi_la-randomTree.lo -MD -MP -MF ../src/$(DEPDIR)/___src_libpll_avx_mpi_la-randomTree.Tpo -c -o ../src/___src_libpll_avx_mpi_la-randomTree.lo `test -f '../src/randomTree.c' || echo '$(srcdir)/'`../src/randomTree.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../src/$(DEPDIR)/___src_libpll_avx_mpi_la-randomTree.Tpo ../src/$(DEPDIR)/___src_libpll_avx_mpi_la-randomTree.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../src/randomTree.c' object='../src/___src_libpll_avx_mpi_la-randomTree.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_avx_mpi_la_CFLAGS) $(CFLAGS) -c -o ../src/___src_libpll_avx_mpi_la-randomTree.lo `test -f '../src/randomTree.c' || echo '$(srcdir)/'`../src/randomTree.c
+
+../src/___src_libpll_avx_mpi_la-optimizeModel.lo: ../src/optimizeModel.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_avx_mpi_la_CFLAGS) $(CFLAGS) -MT ../src/___src_libpll_avx_mpi_la-optimizeModel.lo -MD -MP -MF ../src/$(DEPDIR)/___src_libpll_avx_mpi_la-optimizeModel.Tpo -c -o ../src/___src_libpll_avx_mpi_la-optimizeModel.lo `test -f '../src/optimizeModel.c' || echo '$(srcdir)/'`../src/optimizeModel.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../src/$(DEPDIR)/___src_libpll_avx_mpi_la-optimizeModel.Tpo ../src/$(DEPDIR)/___src_libpll_avx_mpi_la-optimizeModel.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../src/optimizeModel.c' object='../src/___src_libpll_avx_mpi_la-optimizeModel.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_avx_mpi_la_CFLAGS) $(CFLAGS) -c -o ../src/___src_libpll_avx_mpi_la-optimizeModel.lo `test -f '../src/optimizeModel.c' || echo '$(srcdir)/'`../src/optimizeModel.c
+
+../src/___src_libpll_avx_mpi_la-trash.lo: ../src/trash.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_avx_mpi_la_CFLAGS) $(CFLAGS) -MT ../src/___src_libpll_avx_mpi_la-trash.lo -MD -MP -MF ../src/$(DEPDIR)/___src_libpll_avx_mpi_la-trash.Tpo -c -o ../src/___src_libpll_avx_mpi_la-trash.lo `test -f '../src/trash.c' || echo '$(srcdir)/'`../src/trash.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../src/$(DEPDIR)/___src_libpll_avx_mpi_la-trash.Tpo ../src/$(DEPDIR)/___src_libpll_avx_mpi_la-trash.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../src/trash.c' object='../src/___src_libpll_avx_mpi_la-trash.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_avx_mpi_la_CFLAGS) $(CFLAGS) -c -o ../src/___src_libpll_avx_mpi_la-trash.lo `test -f '../src/trash.c' || echo '$(srcdir)/'`../src/trash.c
+
+../src/___src_libpll_avx_mpi_la-searchAlgo.lo: ../src/searchAlgo.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_avx_mpi_la_CFLAGS) $(CFLAGS) -MT ../src/___src_libpll_avx_mpi_la-searchAlgo.lo -MD -MP -MF ../src/$(DEPDIR)/___src_libpll_avx_mpi_la-searchAlgo.Tpo -c -o ../src/___src_libpll_avx_mpi_la-searchAlgo.lo `test -f '../src/searchAlgo.c' || echo '$(srcdir)/'`../src/searchAlgo.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../src/$(DEPDIR)/___src_libpll_avx_mpi_la-searchAlgo.Tpo ../src/$(DEPDIR)/___src_libpll_avx_mpi_la-searchAlgo.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../src/searchAlgo.c' object='../src/___src_libpll_avx_mpi_la-searchAlgo.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_avx_mpi_la_CFLAGS) $(CFLAGS) -c -o ../src/___src_libpll_avx_mpi_la-searchAlgo.lo `test -f '../src/searchAlgo.c' || echo '$(srcdir)/'`../src/searchAlgo.c
+
+../src/___src_libpll_avx_mpi_la-topologies.lo: ../src/topologies.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_avx_mpi_la_CFLAGS) $(CFLAGS) -MT ../src/___src_libpll_avx_mpi_la-topologies.lo -MD -MP -MF ../src/$(DEPDIR)/___src_libpll_avx_mpi_la-topologies.Tpo -c -o ../src/___src_libpll_avx_mpi_la-topologies.lo `test -f '../src/topologies.c' || echo '$(srcdir)/'`../src/topologies.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../src/$(DEPDIR)/___src_libpll_avx_mpi_la-topologies.Tpo ../src/$(DEPDIR)/___src_libpll_avx_mpi_la-topologies.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../src/topologies.c' object='../src/___src_libpll_avx_mpi_la-topologies.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_avx_mpi_la_CFLAGS) $(CFLAGS) -c -o ../src/___src_libpll_avx_mpi_la-topologies.lo `test -f '../src/topologies.c' || echo '$(srcdir)/'`../src/topologies.c
+
+../src/___src_libpll_avx_mpi_la-fastDNAparsimony.lo: ../src/fastDNAparsimony.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_avx_mpi_la_CFLAGS) $(CFLAGS) -MT ../src/___src_libpll_avx_mpi_la-fastDNAparsimony.lo -MD -MP -MF ../src/$(DEPDIR)/___src_libpll_avx_mpi_la-fastDNAparsimony.Tpo -c -o ../src/___src_libpll_avx_mpi_la-fastDNAparsimony.lo `test -f '../src/fastDNAparsimony.c' || echo '$(srcdir)/'`../src/fastDNAp [...]
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../src/$(DEPDIR)/___src_libpll_avx_mpi_la-fastDNAparsimony.Tpo ../src/$(DEPDIR)/___src_libpll_avx_mpi_la-fastDNAparsimony.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../src/fastDNAparsimony.c' object='../src/___src_libpll_avx_mpi_la-fastDNAparsimony.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_avx_mpi_la_CFLAGS) $(CFLAGS) -c -o ../src/___src_libpll_avx_mpi_la-fastDNAparsimony.lo `test -f '../src/fastDNAparsimony.c' || echo '$(srcdir)/'`../src/fastDNAparsimony.c
+
+../src/___src_libpll_avx_mpi_la-treeIO.lo: ../src/treeIO.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_avx_mpi_la_CFLAGS) $(CFLAGS) -MT ../src/___src_libpll_avx_mpi_la-treeIO.lo -MD -MP -MF ../src/$(DEPDIR)/___src_libpll_avx_mpi_la-treeIO.Tpo -c -o ../src/___src_libpll_avx_mpi_la-treeIO.lo `test -f '../src/treeIO.c' || echo '$(srcdir)/'`../src/treeIO.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../src/$(DEPDIR)/___src_libpll_avx_mpi_la-treeIO.Tpo ../src/$(DEPDIR)/___src_libpll_avx_mpi_la-treeIO.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../src/treeIO.c' object='../src/___src_libpll_avx_mpi_la-treeIO.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_avx_mpi_la_CFLAGS) $(CFLAGS) -c -o ../src/___src_libpll_avx_mpi_la-treeIO.lo `test -f '../src/treeIO.c' || echo '$(srcdir)/'`../src/treeIO.c
+
+../src/___src_libpll_avx_mpi_la-models.lo: ../src/models.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_avx_mpi_la_CFLAGS) $(CFLAGS) -MT ../src/___src_libpll_avx_mpi_la-models.lo -MD -MP -MF ../src/$(DEPDIR)/___src_libpll_avx_mpi_la-models.Tpo -c -o ../src/___src_libpll_avx_mpi_la-models.lo `test -f '../src/models.c' || echo '$(srcdir)/'`../src/models.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../src/$(DEPDIR)/___src_libpll_avx_mpi_la-models.Tpo ../src/$(DEPDIR)/___src_libpll_avx_mpi_la-models.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../src/models.c' object='../src/___src_libpll_avx_mpi_la-models.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_avx_mpi_la_CFLAGS) $(CFLAGS) -c -o ../src/___src_libpll_avx_mpi_la-models.lo `test -f '../src/models.c' || echo '$(srcdir)/'`../src/models.c
+
+../src/___src_libpll_avx_mpi_la-evaluatePartialGenericSpecial.lo: ../src/evaluatePartialGenericSpecial.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_avx_mpi_la_CFLAGS) $(CFLAGS) -MT ../src/___src_libpll_avx_mpi_la-evaluatePartialGenericSpecial.lo -MD -MP -MF ../src/$(DEPDIR)/___src_libpll_avx_mpi_la-evaluatePartialGenericSpecial.Tpo -c -o ../src/___src_libpll_avx_mpi_la-evaluatePartialGenericSpecial.lo `test -f '../src/evaluatePartialGe [...]
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../src/$(DEPDIR)/___src_libpll_avx_mpi_la-evaluatePartialGenericSpecial.Tpo ../src/$(DEPDIR)/___src_libpll_avx_mpi_la-evaluatePartialGenericSpecial.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../src/evaluatePartialGenericSpecial.c' object='../src/___src_libpll_avx_mpi_la-evaluatePartialGenericSpecial.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_avx_mpi_la_CFLAGS) $(CFLAGS) -c -o ../src/___src_libpll_avx_mpi_la-evaluatePartialGenericSpecial.lo `test -f '../src/evaluatePartialGenericSpecial.c' || echo '$(srcdir)/'`../src/evaluatePartialGenericSpecial.c
+
+../src/___src_libpll_avx_mpi_la-evaluateGenericSpecial.lo: ../src/evaluateGenericSpecial.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_avx_mpi_la_CFLAGS) $(CFLAGS) -MT ../src/___src_libpll_avx_mpi_la-evaluateGenericSpecial.lo -MD -MP -MF ../src/$(DEPDIR)/___src_libpll_avx_mpi_la-evaluateGenericSpecial.Tpo -c -o ../src/___src_libpll_avx_mpi_la-evaluateGenericSpecial.lo `test -f '../src/evaluateGenericSpecial.c' || echo '$(s [...]
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../src/$(DEPDIR)/___src_libpll_avx_mpi_la-evaluateGenericSpecial.Tpo ../src/$(DEPDIR)/___src_libpll_avx_mpi_la-evaluateGenericSpecial.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../src/evaluateGenericSpecial.c' object='../src/___src_libpll_avx_mpi_la-evaluateGenericSpecial.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_avx_mpi_la_CFLAGS) $(CFLAGS) -c -o ../src/___src_libpll_avx_mpi_la-evaluateGenericSpecial.lo `test -f '../src/evaluateGenericSpecial.c' || echo '$(srcdir)/'`../src/evaluateGenericSpecial.c
+
+../src/___src_libpll_avx_mpi_la-newviewGenericSpecial.lo: ../src/newviewGenericSpecial.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_avx_mpi_la_CFLAGS) $(CFLAGS) -MT ../src/___src_libpll_avx_mpi_la-newviewGenericSpecial.lo -MD -MP -MF ../src/$(DEPDIR)/___src_libpll_avx_mpi_la-newviewGenericSpecial.Tpo -c -o ../src/___src_libpll_avx_mpi_la-newviewGenericSpecial.lo `test -f '../src/newviewGenericSpecial.c' || echo '$(srcdi [...]
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../src/$(DEPDIR)/___src_libpll_avx_mpi_la-newviewGenericSpecial.Tpo ../src/$(DEPDIR)/___src_libpll_avx_mpi_la-newviewGenericSpecial.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../src/newviewGenericSpecial.c' object='../src/___src_libpll_avx_mpi_la-newviewGenericSpecial.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_avx_mpi_la_CFLAGS) $(CFLAGS) -c -o ../src/___src_libpll_avx_mpi_la-newviewGenericSpecial.lo `test -f '../src/newviewGenericSpecial.c' || echo '$(srcdir)/'`../src/newviewGenericSpecial.c
+
+../src/___src_libpll_avx_mpi_la-makenewzGenericSpecial.lo: ../src/makenewzGenericSpecial.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_avx_mpi_la_CFLAGS) $(CFLAGS) -MT ../src/___src_libpll_avx_mpi_la-makenewzGenericSpecial.lo -MD -MP -MF ../src/$(DEPDIR)/___src_libpll_avx_mpi_la-makenewzGenericSpecial.Tpo -c -o ../src/___src_libpll_avx_mpi_la-makenewzGenericSpecial.lo `test -f '../src/makenewzGenericSpecial.c' || echo '$(s [...]
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../src/$(DEPDIR)/___src_libpll_avx_mpi_la-makenewzGenericSpecial.Tpo ../src/$(DEPDIR)/___src_libpll_avx_mpi_la-makenewzGenericSpecial.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../src/makenewzGenericSpecial.c' object='../src/___src_libpll_avx_mpi_la-makenewzGenericSpecial.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_avx_mpi_la_CFLAGS) $(CFLAGS) -c -o ../src/___src_libpll_avx_mpi_la-makenewzGenericSpecial.lo `test -f '../src/makenewzGenericSpecial.c' || echo '$(srcdir)/'`../src/makenewzGenericSpecial.c
+
+../src/___src_libpll_avx_mpi_la-bipartitionList.lo: ../src/bipartitionList.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_avx_mpi_la_CFLAGS) $(CFLAGS) -MT ../src/___src_libpll_avx_mpi_la-bipartitionList.lo -MD -MP -MF ../src/$(DEPDIR)/___src_libpll_avx_mpi_la-bipartitionList.Tpo -c -o ../src/___src_libpll_avx_mpi_la-bipartitionList.lo `test -f '../src/bipartitionList.c' || echo '$(srcdir)/'`../src/bipartitionList.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../src/$(DEPDIR)/___src_libpll_avx_mpi_la-bipartitionList.Tpo ../src/$(DEPDIR)/___src_libpll_avx_mpi_la-bipartitionList.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../src/bipartitionList.c' object='../src/___src_libpll_avx_mpi_la-bipartitionList.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_avx_mpi_la_CFLAGS) $(CFLAGS) -c -o ../src/___src_libpll_avx_mpi_la-bipartitionList.lo `test -f '../src/bipartitionList.c' || echo '$(srcdir)/'`../src/bipartitionList.c
+
+../src/___src_libpll_avx_mpi_la-restartHashTable.lo: ../src/restartHashTable.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_avx_mpi_la_CFLAGS) $(CFLAGS) -MT ../src/___src_libpll_avx_mpi_la-restartHashTable.lo -MD -MP -MF ../src/$(DEPDIR)/___src_libpll_avx_mpi_la-restartHashTable.Tpo -c -o ../src/___src_libpll_avx_mpi_la-restartHashTable.lo `test -f '../src/restartHashTable.c' || echo '$(srcdir)/'`../src/restartH [...]
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../src/$(DEPDIR)/___src_libpll_avx_mpi_la-restartHashTable.Tpo ../src/$(DEPDIR)/___src_libpll_avx_mpi_la-restartHashTable.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../src/restartHashTable.c' object='../src/___src_libpll_avx_mpi_la-restartHashTable.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_avx_mpi_la_CFLAGS) $(CFLAGS) -c -o ../src/___src_libpll_avx_mpi_la-restartHashTable.lo `test -f '../src/restartHashTable.c' || echo '$(srcdir)/'`../src/restartHashTable.c
+
+../src/___src_libpll_avx_mpi_la-recom.lo: ../src/recom.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_avx_mpi_la_CFLAGS) $(CFLAGS) -MT ../src/___src_libpll_avx_mpi_la-recom.lo -MD -MP -MF ../src/$(DEPDIR)/___src_libpll_avx_mpi_la-recom.Tpo -c -o ../src/___src_libpll_avx_mpi_la-recom.lo `test -f '../src/recom.c' || echo '$(srcdir)/'`../src/recom.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../src/$(DEPDIR)/___src_libpll_avx_mpi_la-recom.Tpo ../src/$(DEPDIR)/___src_libpll_avx_mpi_la-recom.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../src/recom.c' object='../src/___src_libpll_avx_mpi_la-recom.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_avx_mpi_la_CFLAGS) $(CFLAGS) -c -o ../src/___src_libpll_avx_mpi_la-recom.lo `test -f '../src/recom.c' || echo '$(srcdir)/'`../src/recom.c
+
+../src/___src_libpll_avx_mpi_la-lexer.lo: ../src/lexer.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_avx_mpi_la_CFLAGS) $(CFLAGS) -MT ../src/___src_libpll_avx_mpi_la-lexer.lo -MD -MP -MF ../src/$(DEPDIR)/___src_libpll_avx_mpi_la-lexer.Tpo -c -o ../src/___src_libpll_avx_mpi_la-lexer.lo `test -f '../src/lexer.c' || echo '$(srcdir)/'`../src/lexer.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../src/$(DEPDIR)/___src_libpll_avx_mpi_la-lexer.Tpo ../src/$(DEPDIR)/___src_libpll_avx_mpi_la-lexer.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../src/lexer.c' object='../src/___src_libpll_avx_mpi_la-lexer.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_avx_mpi_la_CFLAGS) $(CFLAGS) -c -o ../src/___src_libpll_avx_mpi_la-lexer.lo `test -f '../src/lexer.c' || echo '$(srcdir)/'`../src/lexer.c
+
+../src/___src_libpll_avx_mpi_la-alignment.lo: ../src/alignment.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_avx_mpi_la_CFLAGS) $(CFLAGS) -MT ../src/___src_libpll_avx_mpi_la-alignment.lo -MD -MP -MF ../src/$(DEPDIR)/___src_libpll_avx_mpi_la-alignment.Tpo -c -o ../src/___src_libpll_avx_mpi_la-alignment.lo `test -f '../src/alignment.c' || echo '$(srcdir)/'`../src/alignment.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../src/$(DEPDIR)/___src_libpll_avx_mpi_la-alignment.Tpo ../src/$(DEPDIR)/___src_libpll_avx_mpi_la-alignment.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../src/alignment.c' object='../src/___src_libpll_avx_mpi_la-alignment.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_avx_mpi_la_CFLAGS) $(CFLAGS) -c -o ../src/___src_libpll_avx_mpi_la-alignment.lo `test -f '../src/alignment.c' || echo '$(srcdir)/'`../src/alignment.c
+
+../src/___src_libpll_avx_mpi_la-newick.lo: ../src/newick.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_avx_mpi_la_CFLAGS) $(CFLAGS) -MT ../src/___src_libpll_avx_mpi_la-newick.lo -MD -MP -MF ../src/$(DEPDIR)/___src_libpll_avx_mpi_la-newick.Tpo -c -o ../src/___src_libpll_avx_mpi_la-newick.lo `test -f '../src/newick.c' || echo '$(srcdir)/'`../src/newick.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../src/$(DEPDIR)/___src_libpll_avx_mpi_la-newick.Tpo ../src/$(DEPDIR)/___src_libpll_avx_mpi_la-newick.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../src/newick.c' object='../src/___src_libpll_avx_mpi_la-newick.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_avx_mpi_la_CFLAGS) $(CFLAGS) -c -o ../src/___src_libpll_avx_mpi_la-newick.lo `test -f '../src/newick.c' || echo '$(srcdir)/'`../src/newick.c
+
+../src/___src_libpll_avx_mpi_la-parsePartition.lo: ../src/parsePartition.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_avx_mpi_la_CFLAGS) $(CFLAGS) -MT ../src/___src_libpll_avx_mpi_la-parsePartition.lo -MD -MP -MF ../src/$(DEPDIR)/___src_libpll_avx_mpi_la-parsePartition.Tpo -c -o ../src/___src_libpll_avx_mpi_la-parsePartition.lo `test -f '../src/parsePartition.c' || echo '$(srcdir)/'`../src/parsePartition.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../src/$(DEPDIR)/___src_libpll_avx_mpi_la-parsePartition.Tpo ../src/$(DEPDIR)/___src_libpll_avx_mpi_la-parsePartition.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../src/parsePartition.c' object='../src/___src_libpll_avx_mpi_la-parsePartition.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_avx_mpi_la_CFLAGS) $(CFLAGS) -c -o ../src/___src_libpll_avx_mpi_la-parsePartition.lo `test -f '../src/parsePartition.c' || echo '$(srcdir)/'`../src/parsePartition.c
+
+../src/___src_libpll_avx_mpi_la-parsimony.lo: ../src/parsimony.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_avx_mpi_la_CFLAGS) $(CFLAGS) -MT ../src/___src_libpll_avx_mpi_la-parsimony.lo -MD -MP -MF ../src/$(DEPDIR)/___src_libpll_avx_mpi_la-parsimony.Tpo -c -o ../src/___src_libpll_avx_mpi_la-parsimony.lo `test -f '../src/parsimony.c' || echo '$(srcdir)/'`../src/parsimony.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../src/$(DEPDIR)/___src_libpll_avx_mpi_la-parsimony.Tpo ../src/$(DEPDIR)/___src_libpll_avx_mpi_la-parsimony.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../src/parsimony.c' object='../src/___src_libpll_avx_mpi_la-parsimony.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_avx_mpi_la_CFLAGS) $(CFLAGS) -c -o ../src/___src_libpll_avx_mpi_la-parsimony.lo `test -f '../src/parsimony.c' || echo '$(srcdir)/'`../src/parsimony.c
+
+../src/___src_libpll_sse3_mpi_la-genericParallelization.lo: ../src/genericParallelization.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_sse3_mpi_la_CFLAGS) $(CFLAGS) -MT ../src/___src_libpll_sse3_mpi_la-genericParallelization.lo -MD -MP -MF ../src/$(DEPDIR)/___src_libpll_sse3_mpi_la-genericParallelization.Tpo -c -o ../src/___src_libpll_sse3_mpi_la-genericParallelization.lo `test -f '../src/genericParallelization.c' || echo [...]
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../src/$(DEPDIR)/___src_libpll_sse3_mpi_la-genericParallelization.Tpo ../src/$(DEPDIR)/___src_libpll_sse3_mpi_la-genericParallelization.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../src/genericParallelization.c' object='../src/___src_libpll_sse3_mpi_la-genericParallelization.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_sse3_mpi_la_CFLAGS) $(CFLAGS) -c -o ../src/___src_libpll_sse3_mpi_la-genericParallelization.lo `test -f '../src/genericParallelization.c' || echo '$(srcdir)/'`../src/genericParallelization.c
+
+../src/___src_libpll_sse3_mpi_la-hash.lo: ../src/hash.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_sse3_mpi_la_CFLAGS) $(CFLAGS) -MT ../src/___src_libpll_sse3_mpi_la-hash.lo -MD -MP -MF ../src/$(DEPDIR)/___src_libpll_sse3_mpi_la-hash.Tpo -c -o ../src/___src_libpll_sse3_mpi_la-hash.lo `test -f '../src/hash.c' || echo '$(srcdir)/'`../src/hash.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../src/$(DEPDIR)/___src_libpll_sse3_mpi_la-hash.Tpo ../src/$(DEPDIR)/___src_libpll_sse3_mpi_la-hash.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../src/hash.c' object='../src/___src_libpll_sse3_mpi_la-hash.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_sse3_mpi_la_CFLAGS) $(CFLAGS) -c -o ../src/___src_libpll_sse3_mpi_la-hash.lo `test -f '../src/hash.c' || echo '$(srcdir)/'`../src/hash.c
+
+../src/___src_libpll_sse3_mpi_la-stack.lo: ../src/stack.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_sse3_mpi_la_CFLAGS) $(CFLAGS) -MT ../src/___src_libpll_sse3_mpi_la-stack.lo -MD -MP -MF ../src/$(DEPDIR)/___src_libpll_sse3_mpi_la-stack.Tpo -c -o ../src/___src_libpll_sse3_mpi_la-stack.lo `test -f '../src/stack.c' || echo '$(srcdir)/'`../src/stack.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../src/$(DEPDIR)/___src_libpll_sse3_mpi_la-stack.Tpo ../src/$(DEPDIR)/___src_libpll_sse3_mpi_la-stack.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../src/stack.c' object='../src/___src_libpll_sse3_mpi_la-stack.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_sse3_mpi_la_CFLAGS) $(CFLAGS) -c -o ../src/___src_libpll_sse3_mpi_la-stack.lo `test -f '../src/stack.c' || echo '$(srcdir)/'`../src/stack.c
+
+../src/___src_libpll_sse3_mpi_la-ssort.lo: ../src/ssort.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_sse3_mpi_la_CFLAGS) $(CFLAGS) -MT ../src/___src_libpll_sse3_mpi_la-ssort.lo -MD -MP -MF ../src/$(DEPDIR)/___src_libpll_sse3_mpi_la-ssort.Tpo -c -o ../src/___src_libpll_sse3_mpi_la-ssort.lo `test -f '../src/ssort.c' || echo '$(srcdir)/'`../src/ssort.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../src/$(DEPDIR)/___src_libpll_sse3_mpi_la-ssort.Tpo ../src/$(DEPDIR)/___src_libpll_sse3_mpi_la-ssort.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../src/ssort.c' object='../src/___src_libpll_sse3_mpi_la-ssort.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_sse3_mpi_la_CFLAGS) $(CFLAGS) -c -o ../src/___src_libpll_sse3_mpi_la-ssort.lo `test -f '../src/ssort.c' || echo '$(srcdir)/'`../src/ssort.c
+
+../src/___src_libpll_sse3_mpi_la-queue.lo: ../src/queue.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_sse3_mpi_la_CFLAGS) $(CFLAGS) -MT ../src/___src_libpll_sse3_mpi_la-queue.lo -MD -MP -MF ../src/$(DEPDIR)/___src_libpll_sse3_mpi_la-queue.Tpo -c -o ../src/___src_libpll_sse3_mpi_la-queue.lo `test -f '../src/queue.c' || echo '$(srcdir)/'`../src/queue.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../src/$(DEPDIR)/___src_libpll_sse3_mpi_la-queue.Tpo ../src/$(DEPDIR)/___src_libpll_sse3_mpi_la-queue.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../src/queue.c' object='../src/___src_libpll_sse3_mpi_la-queue.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_sse3_mpi_la_CFLAGS) $(CFLAGS) -c -o ../src/___src_libpll_sse3_mpi_la-queue.lo `test -f '../src/queue.c' || echo '$(srcdir)/'`../src/queue.c
+
+../src/___src_libpll_sse3_mpi_la-utils.lo: ../src/utils.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_sse3_mpi_la_CFLAGS) $(CFLAGS) -MT ../src/___src_libpll_sse3_mpi_la-utils.lo -MD -MP -MF ../src/$(DEPDIR)/___src_libpll_sse3_mpi_la-utils.Tpo -c -o ../src/___src_libpll_sse3_mpi_la-utils.lo `test -f '../src/utils.c' || echo '$(srcdir)/'`../src/utils.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../src/$(DEPDIR)/___src_libpll_sse3_mpi_la-utils.Tpo ../src/$(DEPDIR)/___src_libpll_sse3_mpi_la-utils.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../src/utils.c' object='../src/___src_libpll_sse3_mpi_la-utils.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_sse3_mpi_la_CFLAGS) $(CFLAGS) -c -o ../src/___src_libpll_sse3_mpi_la-utils.lo `test -f '../src/utils.c' || echo '$(srcdir)/'`../src/utils.c
+
+../src/___src_libpll_sse3_mpi_la-randomTree.lo: ../src/randomTree.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_sse3_mpi_la_CFLAGS) $(CFLAGS) -MT ../src/___src_libpll_sse3_mpi_la-randomTree.lo -MD -MP -MF ../src/$(DEPDIR)/___src_libpll_sse3_mpi_la-randomTree.Tpo -c -o ../src/___src_libpll_sse3_mpi_la-randomTree.lo `test -f '../src/randomTree.c' || echo '$(srcdir)/'`../src/randomTree.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../src/$(DEPDIR)/___src_libpll_sse3_mpi_la-randomTree.Tpo ../src/$(DEPDIR)/___src_libpll_sse3_mpi_la-randomTree.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../src/randomTree.c' object='../src/___src_libpll_sse3_mpi_la-randomTree.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_sse3_mpi_la_CFLAGS) $(CFLAGS) -c -o ../src/___src_libpll_sse3_mpi_la-randomTree.lo `test -f '../src/randomTree.c' || echo '$(srcdir)/'`../src/randomTree.c
+
+../src/___src_libpll_sse3_mpi_la-optimizeModel.lo: ../src/optimizeModel.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_sse3_mpi_la_CFLAGS) $(CFLAGS) -MT ../src/___src_libpll_sse3_mpi_la-optimizeModel.lo -MD -MP -MF ../src/$(DEPDIR)/___src_libpll_sse3_mpi_la-optimizeModel.Tpo -c -o ../src/___src_libpll_sse3_mpi_la-optimizeModel.lo `test -f '../src/optimizeModel.c' || echo '$(srcdir)/'`../src/optimizeModel.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../src/$(DEPDIR)/___src_libpll_sse3_mpi_la-optimizeModel.Tpo ../src/$(DEPDIR)/___src_libpll_sse3_mpi_la-optimizeModel.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../src/optimizeModel.c' object='../src/___src_libpll_sse3_mpi_la-optimizeModel.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_sse3_mpi_la_CFLAGS) $(CFLAGS) -c -o ../src/___src_libpll_sse3_mpi_la-optimizeModel.lo `test -f '../src/optimizeModel.c' || echo '$(srcdir)/'`../src/optimizeModel.c
+
+../src/___src_libpll_sse3_mpi_la-trash.lo: ../src/trash.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_sse3_mpi_la_CFLAGS) $(CFLAGS) -MT ../src/___src_libpll_sse3_mpi_la-trash.lo -MD -MP -MF ../src/$(DEPDIR)/___src_libpll_sse3_mpi_la-trash.Tpo -c -o ../src/___src_libpll_sse3_mpi_la-trash.lo `test -f '../src/trash.c' || echo '$(srcdir)/'`../src/trash.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../src/$(DEPDIR)/___src_libpll_sse3_mpi_la-trash.Tpo ../src/$(DEPDIR)/___src_libpll_sse3_mpi_la-trash.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../src/trash.c' object='../src/___src_libpll_sse3_mpi_la-trash.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_sse3_mpi_la_CFLAGS) $(CFLAGS) -c -o ../src/___src_libpll_sse3_mpi_la-trash.lo `test -f '../src/trash.c' || echo '$(srcdir)/'`../src/trash.c
+
+../src/___src_libpll_sse3_mpi_la-searchAlgo.lo: ../src/searchAlgo.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_sse3_mpi_la_CFLAGS) $(CFLAGS) -MT ../src/___src_libpll_sse3_mpi_la-searchAlgo.lo -MD -MP -MF ../src/$(DEPDIR)/___src_libpll_sse3_mpi_la-searchAlgo.Tpo -c -o ../src/___src_libpll_sse3_mpi_la-searchAlgo.lo `test -f '../src/searchAlgo.c' || echo '$(srcdir)/'`../src/searchAlgo.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../src/$(DEPDIR)/___src_libpll_sse3_mpi_la-searchAlgo.Tpo ../src/$(DEPDIR)/___src_libpll_sse3_mpi_la-searchAlgo.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../src/searchAlgo.c' object='../src/___src_libpll_sse3_mpi_la-searchAlgo.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_sse3_mpi_la_CFLAGS) $(CFLAGS) -c -o ../src/___src_libpll_sse3_mpi_la-searchAlgo.lo `test -f '../src/searchAlgo.c' || echo '$(srcdir)/'`../src/searchAlgo.c
+
+../src/___src_libpll_sse3_mpi_la-topologies.lo: ../src/topologies.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_sse3_mpi_la_CFLAGS) $(CFLAGS) -MT ../src/___src_libpll_sse3_mpi_la-topologies.lo -MD -MP -MF ../src/$(DEPDIR)/___src_libpll_sse3_mpi_la-topologies.Tpo -c -o ../src/___src_libpll_sse3_mpi_la-topologies.lo `test -f '../src/topologies.c' || echo '$(srcdir)/'`../src/topologies.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../src/$(DEPDIR)/___src_libpll_sse3_mpi_la-topologies.Tpo ../src/$(DEPDIR)/___src_libpll_sse3_mpi_la-topologies.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../src/topologies.c' object='../src/___src_libpll_sse3_mpi_la-topologies.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_sse3_mpi_la_CFLAGS) $(CFLAGS) -c -o ../src/___src_libpll_sse3_mpi_la-topologies.lo `test -f '../src/topologies.c' || echo '$(srcdir)/'`../src/topologies.c
+
+../src/___src_libpll_sse3_mpi_la-fastDNAparsimony.lo: ../src/fastDNAparsimony.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_sse3_mpi_la_CFLAGS) $(CFLAGS) -MT ../src/___src_libpll_sse3_mpi_la-fastDNAparsimony.lo -MD -MP -MF ../src/$(DEPDIR)/___src_libpll_sse3_mpi_la-fastDNAparsimony.Tpo -c -o ../src/___src_libpll_sse3_mpi_la-fastDNAparsimony.lo `test -f '../src/fastDNAparsimony.c' || echo '$(srcdir)/'`../src/fast [...]
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../src/$(DEPDIR)/___src_libpll_sse3_mpi_la-fastDNAparsimony.Tpo ../src/$(DEPDIR)/___src_libpll_sse3_mpi_la-fastDNAparsimony.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../src/fastDNAparsimony.c' object='../src/___src_libpll_sse3_mpi_la-fastDNAparsimony.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_sse3_mpi_la_CFLAGS) $(CFLAGS) -c -o ../src/___src_libpll_sse3_mpi_la-fastDNAparsimony.lo `test -f '../src/fastDNAparsimony.c' || echo '$(srcdir)/'`../src/fastDNAparsimony.c
+
+../src/___src_libpll_sse3_mpi_la-treeIO.lo: ../src/treeIO.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_sse3_mpi_la_CFLAGS) $(CFLAGS) -MT ../src/___src_libpll_sse3_mpi_la-treeIO.lo -MD -MP -MF ../src/$(DEPDIR)/___src_libpll_sse3_mpi_la-treeIO.Tpo -c -o ../src/___src_libpll_sse3_mpi_la-treeIO.lo `test -f '../src/treeIO.c' || echo '$(srcdir)/'`../src/treeIO.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../src/$(DEPDIR)/___src_libpll_sse3_mpi_la-treeIO.Tpo ../src/$(DEPDIR)/___src_libpll_sse3_mpi_la-treeIO.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../src/treeIO.c' object='../src/___src_libpll_sse3_mpi_la-treeIO.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_sse3_mpi_la_CFLAGS) $(CFLAGS) -c -o ../src/___src_libpll_sse3_mpi_la-treeIO.lo `test -f '../src/treeIO.c' || echo '$(srcdir)/'`../src/treeIO.c
+
+../src/___src_libpll_sse3_mpi_la-models.lo: ../src/models.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_sse3_mpi_la_CFLAGS) $(CFLAGS) -MT ../src/___src_libpll_sse3_mpi_la-models.lo -MD -MP -MF ../src/$(DEPDIR)/___src_libpll_sse3_mpi_la-models.Tpo -c -o ../src/___src_libpll_sse3_mpi_la-models.lo `test -f '../src/models.c' || echo '$(srcdir)/'`../src/models.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../src/$(DEPDIR)/___src_libpll_sse3_mpi_la-models.Tpo ../src/$(DEPDIR)/___src_libpll_sse3_mpi_la-models.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../src/models.c' object='../src/___src_libpll_sse3_mpi_la-models.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_sse3_mpi_la_CFLAGS) $(CFLAGS) -c -o ../src/___src_libpll_sse3_mpi_la-models.lo `test -f '../src/models.c' || echo '$(srcdir)/'`../src/models.c
+
+../src/___src_libpll_sse3_mpi_la-evaluatePartialGenericSpecial.lo: ../src/evaluatePartialGenericSpecial.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_sse3_mpi_la_CFLAGS) $(CFLAGS) -MT ../src/___src_libpll_sse3_mpi_la-evaluatePartialGenericSpecial.lo -MD -MP -MF ../src/$(DEPDIR)/___src_libpll_sse3_mpi_la-evaluatePartialGenericSpecial.Tpo -c -o ../src/___src_libpll_sse3_mpi_la-evaluatePartialGenericSpecial.lo `test -f '../src/evaluateParti [...]
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../src/$(DEPDIR)/___src_libpll_sse3_mpi_la-evaluatePartialGenericSpecial.Tpo ../src/$(DEPDIR)/___src_libpll_sse3_mpi_la-evaluatePartialGenericSpecial.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../src/evaluatePartialGenericSpecial.c' object='../src/___src_libpll_sse3_mpi_la-evaluatePartialGenericSpecial.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_sse3_mpi_la_CFLAGS) $(CFLAGS) -c -o ../src/___src_libpll_sse3_mpi_la-evaluatePartialGenericSpecial.lo `test -f '../src/evaluatePartialGenericSpecial.c' || echo '$(srcdir)/'`../src/evaluatePartialGenericSpecial.c
+
+../src/___src_libpll_sse3_mpi_la-evaluateGenericSpecial.lo: ../src/evaluateGenericSpecial.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_sse3_mpi_la_CFLAGS) $(CFLAGS) -MT ../src/___src_libpll_sse3_mpi_la-evaluateGenericSpecial.lo -MD -MP -MF ../src/$(DEPDIR)/___src_libpll_sse3_mpi_la-evaluateGenericSpecial.Tpo -c -o ../src/___src_libpll_sse3_mpi_la-evaluateGenericSpecial.lo `test -f '../src/evaluateGenericSpecial.c' || echo [...]
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../src/$(DEPDIR)/___src_libpll_sse3_mpi_la-evaluateGenericSpecial.Tpo ../src/$(DEPDIR)/___src_libpll_sse3_mpi_la-evaluateGenericSpecial.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../src/evaluateGenericSpecial.c' object='../src/___src_libpll_sse3_mpi_la-evaluateGenericSpecial.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_sse3_mpi_la_CFLAGS) $(CFLAGS) -c -o ../src/___src_libpll_sse3_mpi_la-evaluateGenericSpecial.lo `test -f '../src/evaluateGenericSpecial.c' || echo '$(srcdir)/'`../src/evaluateGenericSpecial.c
+
+../src/___src_libpll_sse3_mpi_la-newviewGenericSpecial.lo: ../src/newviewGenericSpecial.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_sse3_mpi_la_CFLAGS) $(CFLAGS) -MT ../src/___src_libpll_sse3_mpi_la-newviewGenericSpecial.lo -MD -MP -MF ../src/$(DEPDIR)/___src_libpll_sse3_mpi_la-newviewGenericSpecial.Tpo -c -o ../src/___src_libpll_sse3_mpi_la-newviewGenericSpecial.lo `test -f '../src/newviewGenericSpecial.c' || echo '$(s [...]
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../src/$(DEPDIR)/___src_libpll_sse3_mpi_la-newviewGenericSpecial.Tpo ../src/$(DEPDIR)/___src_libpll_sse3_mpi_la-newviewGenericSpecial.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../src/newviewGenericSpecial.c' object='../src/___src_libpll_sse3_mpi_la-newviewGenericSpecial.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_sse3_mpi_la_CFLAGS) $(CFLAGS) -c -o ../src/___src_libpll_sse3_mpi_la-newviewGenericSpecial.lo `test -f '../src/newviewGenericSpecial.c' || echo '$(srcdir)/'`../src/newviewGenericSpecial.c
+
+../src/___src_libpll_sse3_mpi_la-makenewzGenericSpecial.lo: ../src/makenewzGenericSpecial.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_sse3_mpi_la_CFLAGS) $(CFLAGS) -MT ../src/___src_libpll_sse3_mpi_la-makenewzGenericSpecial.lo -MD -MP -MF ../src/$(DEPDIR)/___src_libpll_sse3_mpi_la-makenewzGenericSpecial.Tpo -c -o ../src/___src_libpll_sse3_mpi_la-makenewzGenericSpecial.lo `test -f '../src/makenewzGenericSpecial.c' || echo [...]
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../src/$(DEPDIR)/___src_libpll_sse3_mpi_la-makenewzGenericSpecial.Tpo ../src/$(DEPDIR)/___src_libpll_sse3_mpi_la-makenewzGenericSpecial.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../src/makenewzGenericSpecial.c' object='../src/___src_libpll_sse3_mpi_la-makenewzGenericSpecial.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_sse3_mpi_la_CFLAGS) $(CFLAGS) -c -o ../src/___src_libpll_sse3_mpi_la-makenewzGenericSpecial.lo `test -f '../src/makenewzGenericSpecial.c' || echo '$(srcdir)/'`../src/makenewzGenericSpecial.c
+
+../src/___src_libpll_sse3_mpi_la-bipartitionList.lo: ../src/bipartitionList.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_sse3_mpi_la_CFLAGS) $(CFLAGS) -MT ../src/___src_libpll_sse3_mpi_la-bipartitionList.lo -MD -MP -MF ../src/$(DEPDIR)/___src_libpll_sse3_mpi_la-bipartitionList.Tpo -c -o ../src/___src_libpll_sse3_mpi_la-bipartitionList.lo `test -f '../src/bipartitionList.c' || echo '$(srcdir)/'`../src/bipartit [...]
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../src/$(DEPDIR)/___src_libpll_sse3_mpi_la-bipartitionList.Tpo ../src/$(DEPDIR)/___src_libpll_sse3_mpi_la-bipartitionList.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../src/bipartitionList.c' object='../src/___src_libpll_sse3_mpi_la-bipartitionList.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_sse3_mpi_la_CFLAGS) $(CFLAGS) -c -o ../src/___src_libpll_sse3_mpi_la-bipartitionList.lo `test -f '../src/bipartitionList.c' || echo '$(srcdir)/'`../src/bipartitionList.c
+
+../src/___src_libpll_sse3_mpi_la-restartHashTable.lo: ../src/restartHashTable.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_sse3_mpi_la_CFLAGS) $(CFLAGS) -MT ../src/___src_libpll_sse3_mpi_la-restartHashTable.lo -MD -MP -MF ../src/$(DEPDIR)/___src_libpll_sse3_mpi_la-restartHashTable.Tpo -c -o ../src/___src_libpll_sse3_mpi_la-restartHashTable.lo `test -f '../src/restartHashTable.c' || echo '$(srcdir)/'`../src/rest [...]
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../src/$(DEPDIR)/___src_libpll_sse3_mpi_la-restartHashTable.Tpo ../src/$(DEPDIR)/___src_libpll_sse3_mpi_la-restartHashTable.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../src/restartHashTable.c' object='../src/___src_libpll_sse3_mpi_la-restartHashTable.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_sse3_mpi_la_CFLAGS) $(CFLAGS) -c -o ../src/___src_libpll_sse3_mpi_la-restartHashTable.lo `test -f '../src/restartHashTable.c' || echo '$(srcdir)/'`../src/restartHashTable.c
+
+../src/___src_libpll_sse3_mpi_la-recom.lo: ../src/recom.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_sse3_mpi_la_CFLAGS) $(CFLAGS) -MT ../src/___src_libpll_sse3_mpi_la-recom.lo -MD -MP -MF ../src/$(DEPDIR)/___src_libpll_sse3_mpi_la-recom.Tpo -c -o ../src/___src_libpll_sse3_mpi_la-recom.lo `test -f '../src/recom.c' || echo '$(srcdir)/'`../src/recom.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../src/$(DEPDIR)/___src_libpll_sse3_mpi_la-recom.Tpo ../src/$(DEPDIR)/___src_libpll_sse3_mpi_la-recom.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../src/recom.c' object='../src/___src_libpll_sse3_mpi_la-recom.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_sse3_mpi_la_CFLAGS) $(CFLAGS) -c -o ../src/___src_libpll_sse3_mpi_la-recom.lo `test -f '../src/recom.c' || echo '$(srcdir)/'`../src/recom.c
+
+../src/___src_libpll_sse3_mpi_la-lexer.lo: ../src/lexer.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_sse3_mpi_la_CFLAGS) $(CFLAGS) -MT ../src/___src_libpll_sse3_mpi_la-lexer.lo -MD -MP -MF ../src/$(DEPDIR)/___src_libpll_sse3_mpi_la-lexer.Tpo -c -o ../src/___src_libpll_sse3_mpi_la-lexer.lo `test -f '../src/lexer.c' || echo '$(srcdir)/'`../src/lexer.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../src/$(DEPDIR)/___src_libpll_sse3_mpi_la-lexer.Tpo ../src/$(DEPDIR)/___src_libpll_sse3_mpi_la-lexer.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../src/lexer.c' object='../src/___src_libpll_sse3_mpi_la-lexer.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_sse3_mpi_la_CFLAGS) $(CFLAGS) -c -o ../src/___src_libpll_sse3_mpi_la-lexer.lo `test -f '../src/lexer.c' || echo '$(srcdir)/'`../src/lexer.c
+
+../src/___src_libpll_sse3_mpi_la-alignment.lo: ../src/alignment.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_sse3_mpi_la_CFLAGS) $(CFLAGS) -MT ../src/___src_libpll_sse3_mpi_la-alignment.lo -MD -MP -MF ../src/$(DEPDIR)/___src_libpll_sse3_mpi_la-alignment.Tpo -c -o ../src/___src_libpll_sse3_mpi_la-alignment.lo `test -f '../src/alignment.c' || echo '$(srcdir)/'`../src/alignment.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../src/$(DEPDIR)/___src_libpll_sse3_mpi_la-alignment.Tpo ../src/$(DEPDIR)/___src_libpll_sse3_mpi_la-alignment.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../src/alignment.c' object='../src/___src_libpll_sse3_mpi_la-alignment.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_sse3_mpi_la_CFLAGS) $(CFLAGS) -c -o ../src/___src_libpll_sse3_mpi_la-alignment.lo `test -f '../src/alignment.c' || echo '$(srcdir)/'`../src/alignment.c
+
+../src/___src_libpll_sse3_mpi_la-newick.lo: ../src/newick.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_sse3_mpi_la_CFLAGS) $(CFLAGS) -MT ../src/___src_libpll_sse3_mpi_la-newick.lo -MD -MP -MF ../src/$(DEPDIR)/___src_libpll_sse3_mpi_la-newick.Tpo -c -o ../src/___src_libpll_sse3_mpi_la-newick.lo `test -f '../src/newick.c' || echo '$(srcdir)/'`../src/newick.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../src/$(DEPDIR)/___src_libpll_sse3_mpi_la-newick.Tpo ../src/$(DEPDIR)/___src_libpll_sse3_mpi_la-newick.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../src/newick.c' object='../src/___src_libpll_sse3_mpi_la-newick.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_sse3_mpi_la_CFLAGS) $(CFLAGS) -c -o ../src/___src_libpll_sse3_mpi_la-newick.lo `test -f '../src/newick.c' || echo '$(srcdir)/'`../src/newick.c
+
+../src/___src_libpll_sse3_mpi_la-parsePartition.lo: ../src/parsePartition.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_sse3_mpi_la_CFLAGS) $(CFLAGS) -MT ../src/___src_libpll_sse3_mpi_la-parsePartition.lo -MD -MP -MF ../src/$(DEPDIR)/___src_libpll_sse3_mpi_la-parsePartition.Tpo -c -o ../src/___src_libpll_sse3_mpi_la-parsePartition.lo `test -f '../src/parsePartition.c' || echo '$(srcdir)/'`../src/parsePartition.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../src/$(DEPDIR)/___src_libpll_sse3_mpi_la-parsePartition.Tpo ../src/$(DEPDIR)/___src_libpll_sse3_mpi_la-parsePartition.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../src/parsePartition.c' object='../src/___src_libpll_sse3_mpi_la-parsePartition.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_sse3_mpi_la_CFLAGS) $(CFLAGS) -c -o ../src/___src_libpll_sse3_mpi_la-parsePartition.lo `test -f '../src/parsePartition.c' || echo '$(srcdir)/'`../src/parsePartition.c
+
+../src/___src_libpll_sse3_mpi_la-parsimony.lo: ../src/parsimony.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_sse3_mpi_la_CFLAGS) $(CFLAGS) -MT ../src/___src_libpll_sse3_mpi_la-parsimony.lo -MD -MP -MF ../src/$(DEPDIR)/___src_libpll_sse3_mpi_la-parsimony.Tpo -c -o ../src/___src_libpll_sse3_mpi_la-parsimony.lo `test -f '../src/parsimony.c' || echo '$(srcdir)/'`../src/parsimony.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../src/$(DEPDIR)/___src_libpll_sse3_mpi_la-parsimony.Tpo ../src/$(DEPDIR)/___src_libpll_sse3_mpi_la-parsimony.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../src/parsimony.c' object='../src/___src_libpll_sse3_mpi_la-parsimony.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(___src_libpll_sse3_mpi_la_CFLAGS) $(CFLAGS) -c -o ../src/___src_libpll_sse3_mpi_la-parsimony.lo `test -f '../src/parsimony.c' || echo '$(srcdir)/'`../src/parsimony.c
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+ -rm -rf ../src/.libs ../src/_libs
+
+ID: $(am__tagged_files)
+ $(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-am
+TAGS: tags
+
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+ set x; \
+ here=`pwd`; \
+ $(am__define_uniq_tagged_files); \
+ shift; \
+ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ if test $$# -gt 0; then \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ "$$@" $$unique; \
+ else \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$unique; \
+ fi; \
+ fi
+ctags: ctags-am
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+ $(am__define_uniq_tagged_files); \
+ test -z "$(CTAGS_ARGS)$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && $(am__cd) $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) "$$here"
+cscopelist: cscopelist-am
+
+cscopelist-am: $(am__tagged_files)
+ list='$(am__tagged_files)'; \
+ case "$(srcdir)" in \
+ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+ *) sdir=$(subdir)/$(srcdir) ;; \
+ esac; \
+ for i in $$list; do \
+ if test -f "$$i"; then \
+ echo "$(subdir)/$$i"; \
+ else \
+ echo "$$sdir/$$i"; \
+ fi; \
+ done >> $(top_builddir)/cscope.files
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+ else \
+ test -f "$(distdir)/$$file" \
+ || cp -p $$d/$$file "$(distdir)/$$file" \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+check: check-am
+all-am: Makefile $(LIBRARIES) $(LTLIBRARIES)
+installdirs:
+ for dir in "$(DESTDIR)$(libdir)" "$(DESTDIR)$(libdir)"; do \
+ test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+ done
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ if test -z '$(STRIP)'; then \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ install; \
+ else \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+ fi
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+ -rm -f ../src/$(DEPDIR)/$(am__dirstamp)
+ -rm -f ../src/$(am__dirstamp)
+
+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-libLIBRARIES clean-libLTLIBRARIES \
+ clean-libtool mostlyclean-am
+
+distclean: distclean-am
+ -rm -rf ../src/$(DEPDIR)
+ -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+ distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am: install-libLIBRARIES install-libLTLIBRARIES
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -rf ../src/$(DEPDIR)
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-libLIBRARIES uninstall-libLTLIBRARIES
+
+.MAKE: install-am install-strip
+
+.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \
+ clean-libLIBRARIES clean-libLTLIBRARIES clean-libtool \
+ cscopelist-am ctags ctags-am distclean distclean-compile \
+ distclean-generic distclean-libtool distclean-tags distdir dvi \
+ dvi-am html html-am info info-am install install-am \
+ install-data install-data-am install-dvi install-dvi-am \
+ install-exec install-exec-am install-html install-html-am \
+ install-info install-info-am install-libLIBRARIES \
+ install-libLTLIBRARIES install-man install-pdf install-pdf-am \
+ install-ps install-ps-am install-strip installcheck \
+ installcheck-am installdirs maintainer-clean \
+ maintainer-clean-generic mostlyclean mostlyclean-compile \
+ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+ tags tags-am uninstall uninstall-am uninstall-libLIBRARIES \
+ uninstall-libLTLIBRARIES
+
+
+#pkgincludedir=$(includedir)/pll
+#pkginclude_HEADERS = $(top_buildir)/src/pll.h $(top_buildir)/src/newick.h $(top_buildir)/src/stack.h $(top_buildir)/src/hash.h $(top_buildir)/src/errcodes.h $(top_buildir)/src/globalVariables.h $(top_buildir)/src/lexer.h $(top_buildir)/src/genericParallelization.h $(top_buildir)/src/treeIO.h $(top_buildir)/src/queue.h $(top_buildir)/src/parsePartition.h $(top_buildir)/src/mem_alloc.h $(top_buildir)/src/cycle.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/Makefile.am b/Makefile.am
new file mode 100644
index 0000000..ac83e65
--- /dev/null
+++ b/Makefile.am
@@ -0,0 +1,7 @@
+ACLOCAL_AMFLAGS = -I m4 --install
+if BUILD_MPI
+SUBDIRS = MPI src man examples examples/PLL
+else
+SUBDIRS = src man examples examples/PLL
+endif
+
diff --git a/Makefile.in b/Makefile.in
new file mode 100644
index 0000000..4e0258d
--- /dev/null
+++ b/Makefile.in
@@ -0,0 +1,814 @@
+# Makefile.in generated by automake 1.14.1 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994-2013 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.
+
+ at SET_MAKE@
+VPATH = @srcdir@
+am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__make_running_with_option = \
+ case $${target_option-} in \
+ ?) ;; \
+ *) echo "am__make_running_with_option: internal error: invalid" \
+ "target option '$${target_option-}' specified" >&2; \
+ exit 1;; \
+ esac; \
+ has_opt=no; \
+ sane_makeflags=$$MAKEFLAGS; \
+ if $(am__is_gnu_make); then \
+ sane_makeflags=$$MFLAGS; \
+ else \
+ case $$MAKEFLAGS in \
+ *\\[\ \ ]*) \
+ bs=\\; \
+ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
+ esac; \
+ fi; \
+ skip_next=no; \
+ strip_trailopt () \
+ { \
+ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+ }; \
+ for flg in $$sane_makeflags; do \
+ test $$skip_next = yes && { skip_next=no; continue; }; \
+ case $$flg in \
+ *=*|--*) continue;; \
+ -*I) strip_trailopt 'I'; skip_next=yes;; \
+ -*I?*) strip_trailopt 'I';; \
+ -*O) strip_trailopt 'O'; skip_next=yes;; \
+ -*O?*) strip_trailopt 'O';; \
+ -*l) strip_trailopt 'l'; skip_next=yes;; \
+ -*l?*) strip_trailopt 'l';; \
+ -[dEDm]) skip_next=yes;; \
+ -[JT]) skip_next=yes;; \
+ esac; \
+ case $$flg in \
+ *$$target_option*) has_opt=yes; break;; \
+ esac; \
+ done; \
+ test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+subdir = .
+DIST_COMMON = INSTALL NEWS README AUTHORS ChangeLog \
+ $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
+ $(top_srcdir)/configure $(am__configure_deps) \
+ $(srcdir)/config.h.in COPYING compile config.guess config.sub \
+ depcomp install-sh missing ltmain.sh
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/ax_check_compile_flag.m4 \
+ $(top_srcdir)/m4/ax_ext.m4 \
+ $(top_srcdir)/m4/ax_gcc_x86_cpuid.m4 \
+ $(top_srcdir)/m4/ax_mpi.m4 $(top_srcdir)/m4/libtool.m4 \
+ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+ $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \
+ configure.lineno config.status.lineno
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = config.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+AM_V_P = $(am__v_P_ at AM_V@)
+am__v_P_ = $(am__v_P_ at AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_ at AM_V@)
+am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
+am__v_GEN_0 = @echo " GEN " $@;
+am__v_GEN_1 =
+AM_V_at = $(am__v_at_ at AM_V@)
+am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 =
+SOURCES =
+DIST_SOURCES =
+RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \
+ ctags-recursive dvi-recursive html-recursive info-recursive \
+ install-data-recursive install-dvi-recursive \
+ install-exec-recursive install-html-recursive \
+ install-info-recursive install-pdf-recursive \
+ install-ps-recursive install-recursive installcheck-recursive \
+ installdirs-recursive pdf-recursive ps-recursive \
+ tags-recursive uninstall-recursive
+am__can_run_installinfo = \
+ case $$AM_UPDATE_INFO_DIR in \
+ n|no|NO) false;; \
+ *) (install-info --version) >/dev/null 2>&1;; \
+ esac
+RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \
+ distclean-recursive maintainer-clean-recursive
+am__recursive_targets = \
+ $(RECURSIVE_TARGETS) \
+ $(RECURSIVE_CLEAN_TARGETS) \
+ $(am__extra_recursive_targets)
+AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \
+ cscope distdir dist dist-all distcheck
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) \
+ $(LISP)config.h.in
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates. Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+ BEGIN { nonempty = 0; } \
+ { items[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique. This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+ list='$(am__tagged_files)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | $(am__uniquify_input)`
+ETAGS = etags
+CTAGS = ctags
+CSCOPE = cscope
+DIST_SUBDIRS = src man examples examples/PLL MPI
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+distdir = $(PACKAGE)-$(VERSION)
+top_distdir = $(distdir)
+am__remove_distdir = \
+ if test -d "$(distdir)"; then \
+ find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \
+ && rm -rf "$(distdir)" \
+ || { sleep 5 && rm -rf "$(distdir)"; }; \
+ else :; fi
+am__post_remove_distdir = $(am__remove_distdir)
+am__relativize = \
+ dir0=`pwd`; \
+ sed_first='s,^\([^/]*\)/.*$$,\1,'; \
+ sed_rest='s,^[^/]*/*,,'; \
+ sed_last='s,^.*/\([^/]*\)$$,\1,'; \
+ sed_butlast='s,/*[^/]*$$,,'; \
+ while test -n "$$dir1"; do \
+ first=`echo "$$dir1" | sed -e "$$sed_first"`; \
+ if test "$$first" != "."; then \
+ if test "$$first" = ".."; then \
+ dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
+ dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
+ else \
+ first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
+ if test "$$first2" = "$$first"; then \
+ dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
+ else \
+ dir2="../$$dir2"; \
+ fi; \
+ dir0="$$dir0"/"$$first"; \
+ fi; \
+ fi; \
+ dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
+ done; \
+ reldir="$$dir2"
+DIST_ARCHIVES = $(distdir).tar.gz
+GZIP_ENV = --best
+DIST_TARGETS = dist-gzip
+distuninstallcheck_listfiles = find . -type f -print
+am__distuninstallcheck_listfiles = $(distuninstallcheck_listfiles) \
+ | sed 's|^\./|$(prefix)/|' | grep -v '$(infodir)/dir$$'
+distcleancheck_listfiles = find . -type f -print
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DLLTOOL = @DLLTOOL@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+GREP = @GREP@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBPLL_MAJOR = @LIBPLL_MAJOR@
+LIBPLL_MINOR = @LIBPLL_MINOR@
+LIBPLL_REV = @LIBPLL_REV@
+LIBPLL_VERSION = @LIBPLL_VERSION@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MKDIR_P = @MKDIR_P@
+MPICC = @MPICC@
+MPILIBS = @MPILIBS@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SIMD_FLAGS = @SIMD_FLAGS@
+STRIP = @STRIP@
+VERSION = @VERSION@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+ACLOCAL_AMFLAGS = -I m4 --install
+ at BUILD_MPI_FALSE@SUBDIRS = src man examples examples/PLL
+ at BUILD_MPI_TRUE@SUBDIRS = MPI src man examples examples/PLL
+all: config.h
+ $(MAKE) $(AM_MAKEFLAGS) all-recursive
+
+.SUFFIXES:
+am--refresh: Makefile
+ @:
+$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ echo ' cd $(srcdir) && $(AUTOMAKE) --gnu'; \
+ $(am__cd) $(srcdir) && $(AUTOMAKE) --gnu \
+ && exit 0; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --gnu Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ echo ' $(SHELL) ./config.status'; \
+ $(SHELL) ./config.status;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ $(SHELL) ./config.status --recheck
+
+$(top_srcdir)/configure: $(am__configure_deps)
+ $(am__cd) $(srcdir) && $(AUTOCONF)
+$(ACLOCAL_M4): $(am__aclocal_m4_deps)
+ $(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS)
+$(am__aclocal_m4_deps):
+
+config.h: stamp-h1
+ @test -f $@ || rm -f stamp-h1
+ @test -f $@ || $(MAKE) $(AM_MAKEFLAGS) stamp-h1
+
+stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status
+ @rm -f stamp-h1
+ cd $(top_builddir) && $(SHELL) ./config.status config.h
+$(srcdir)/config.h.in: $(am__configure_deps)
+ ($(am__cd) $(top_srcdir) && $(AUTOHEADER))
+ rm -f stamp-h1
+ touch $@
+
+distclean-hdr:
+ -rm -f config.h stamp-h1
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+
+distclean-libtool:
+ -rm -f libtool config.lt
+
+# This directory's subdirectories are mostly independent; you can cd
+# into them and run 'make' without going through this Makefile.
+# To change the values of 'make' variables: instead of editing Makefiles,
+# (1) if the variable is set in 'config.status', edit 'config.status'
+# (which will cause the Makefiles to be regenerated when you run 'make');
+# (2) otherwise, pass the desired values on the 'make' command line.
+$(am__recursive_targets):
+ @fail=; \
+ if $(am__make_keepgoing); then \
+ failcom='fail=yes'; \
+ else \
+ failcom='exit 1'; \
+ fi; \
+ dot_seen=no; \
+ target=`echo $@ | sed s/-recursive//`; \
+ case "$@" in \
+ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
+ *) list='$(SUBDIRS)' ;; \
+ esac; \
+ for subdir in $$list; do \
+ echo "Making $$target in $$subdir"; \
+ if test "$$subdir" = "."; then \
+ dot_seen=yes; \
+ local_target="$$target-am"; \
+ else \
+ local_target="$$target"; \
+ fi; \
+ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+ || eval $$failcom; \
+ done; \
+ if test "$$dot_seen" = "no"; then \
+ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
+ fi; test -z "$$fail"
+
+ID: $(am__tagged_files)
+ $(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-recursive
+TAGS: tags
+
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+ set x; \
+ here=`pwd`; \
+ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
+ include_option=--etags-include; \
+ empty_fix=.; \
+ else \
+ include_option=--include; \
+ empty_fix=; \
+ fi; \
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ if test "$$subdir" = .; then :; else \
+ test ! -f $$subdir/TAGS || \
+ set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
+ fi; \
+ done; \
+ $(am__define_uniq_tagged_files); \
+ shift; \
+ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ if test $$# -gt 0; then \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ "$$@" $$unique; \
+ else \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$unique; \
+ fi; \
+ fi
+ctags: ctags-recursive
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+ $(am__define_uniq_tagged_files); \
+ test -z "$(CTAGS_ARGS)$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && $(am__cd) $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) "$$here"
+cscope: cscope.files
+ test ! -s cscope.files \
+ || $(CSCOPE) -b -q $(AM_CSCOPEFLAGS) $(CSCOPEFLAGS) -i cscope.files $(CSCOPE_ARGS)
+clean-cscope:
+ -rm -f cscope.files
+cscope.files: clean-cscope cscopelist
+cscopelist: cscopelist-recursive
+
+cscopelist-am: $(am__tagged_files)
+ list='$(am__tagged_files)'; \
+ case "$(srcdir)" in \
+ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+ *) sdir=$(subdir)/$(srcdir) ;; \
+ esac; \
+ for i in $$list; do \
+ if test -f "$$i"; then \
+ echo "$(subdir)/$$i"; \
+ else \
+ echo "$$sdir/$$i"; \
+ fi; \
+ done >> $(top_builddir)/cscope.files
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+ -rm -f cscope.out cscope.in.out cscope.po.out cscope.files
+
+distdir: $(DISTFILES)
+ $(am__remove_distdir)
+ test -d "$(distdir)" || mkdir "$(distdir)"
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+ else \
+ test -f "$(distdir)/$$file" \
+ || cp -p $$d/$$file "$(distdir)/$$file" \
+ || exit 1; \
+ fi; \
+ done
+ @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+ if test "$$subdir" = .; then :; else \
+ $(am__make_dryrun) \
+ || test -d "$(distdir)/$$subdir" \
+ || $(MKDIR_P) "$(distdir)/$$subdir" \
+ || exit 1; \
+ dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
+ $(am__relativize); \
+ new_distdir=$$reldir; \
+ dir1=$$subdir; dir2="$(top_distdir)"; \
+ $(am__relativize); \
+ new_top_distdir=$$reldir; \
+ echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
+ echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
+ ($(am__cd) $$subdir && \
+ $(MAKE) $(AM_MAKEFLAGS) \
+ top_distdir="$$new_top_distdir" \
+ distdir="$$new_distdir" \
+ am__remove_distdir=: \
+ am__skip_length_check=: \
+ am__skip_mode_fix=: \
+ distdir) \
+ || exit 1; \
+ fi; \
+ done
+ -test -n "$(am__skip_mode_fix)" \
+ || find "$(distdir)" -type d ! -perm -755 \
+ -exec chmod u+rwx,go+rx {} \; -o \
+ ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \
+ ! -type d ! -perm -400 -exec chmod a+r {} \; -o \
+ ! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \
+ || chmod -R a+r "$(distdir)"
+dist-gzip: distdir
+ tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
+ $(am__post_remove_distdir)
+
+dist-bzip2: distdir
+ tardir=$(distdir) && $(am__tar) | BZIP2=$${BZIP2--9} bzip2 -c >$(distdir).tar.bz2
+ $(am__post_remove_distdir)
+
+dist-lzip: distdir
+ tardir=$(distdir) && $(am__tar) | lzip -c $${LZIP_OPT--9} >$(distdir).tar.lz
+ $(am__post_remove_distdir)
+
+dist-xz: distdir
+ tardir=$(distdir) && $(am__tar) | XZ_OPT=$${XZ_OPT--e} xz -c >$(distdir).tar.xz
+ $(am__post_remove_distdir)
+
+dist-tarZ: distdir
+ @echo WARNING: "Support for shar distribution archives is" \
+ "deprecated." >&2
+ @echo WARNING: "It will be removed altogether in Automake 2.0" >&2
+ tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z
+ $(am__post_remove_distdir)
+
+dist-shar: distdir
+ @echo WARNING: "Support for distribution archives compressed with" \
+ "legacy program 'compress' is deprecated." >&2
+ @echo WARNING: "It will be removed altogether in Automake 2.0" >&2
+ shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz
+ $(am__post_remove_distdir)
+
+dist-zip: distdir
+ -rm -f $(distdir).zip
+ zip -rq $(distdir).zip $(distdir)
+ $(am__post_remove_distdir)
+
+dist dist-all:
+ $(MAKE) $(AM_MAKEFLAGS) $(DIST_TARGETS) am__post_remove_distdir='@:'
+ $(am__post_remove_distdir)
+
+# This target untars the dist file and tries a VPATH configuration. Then
+# it guarantees that the distribution is self-contained by making another
+# tarfile.
+distcheck: dist
+ case '$(DIST_ARCHIVES)' in \
+ *.tar.gz*) \
+ GZIP=$(GZIP_ENV) gzip -dc $(distdir).tar.gz | $(am__untar) ;;\
+ *.tar.bz2*) \
+ bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\
+ *.tar.lz*) \
+ lzip -dc $(distdir).tar.lz | $(am__untar) ;;\
+ *.tar.xz*) \
+ xz -dc $(distdir).tar.xz | $(am__untar) ;;\
+ *.tar.Z*) \
+ uncompress -c $(distdir).tar.Z | $(am__untar) ;;\
+ *.shar.gz*) \
+ GZIP=$(GZIP_ENV) gzip -dc $(distdir).shar.gz | unshar ;;\
+ *.zip*) \
+ unzip $(distdir).zip ;;\
+ esac
+ chmod -R a-w $(distdir)
+ chmod u+w $(distdir)
+ mkdir $(distdir)/_build $(distdir)/_inst
+ chmod a-w $(distdir)
+ test -d $(distdir)/_build || exit 0; \
+ dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \
+ && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \
+ && am__cwd=`pwd` \
+ && $(am__cd) $(distdir)/_build \
+ && ../configure \
+ $(AM_DISTCHECK_CONFIGURE_FLAGS) \
+ $(DISTCHECK_CONFIGURE_FLAGS) \
+ --srcdir=.. --prefix="$$dc_install_base" \
+ && $(MAKE) $(AM_MAKEFLAGS) \
+ && $(MAKE) $(AM_MAKEFLAGS) dvi \
+ && $(MAKE) $(AM_MAKEFLAGS) check \
+ && $(MAKE) $(AM_MAKEFLAGS) install \
+ && $(MAKE) $(AM_MAKEFLAGS) installcheck \
+ && $(MAKE) $(AM_MAKEFLAGS) uninstall \
+ && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \
+ distuninstallcheck \
+ && chmod -R a-w "$$dc_install_base" \
+ && ({ \
+ (cd ../.. && umask 077 && mkdir "$$dc_destdir") \
+ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \
+ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \
+ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \
+ distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \
+ } || { rm -rf "$$dc_destdir"; exit 1; }) \
+ && rm -rf "$$dc_destdir" \
+ && $(MAKE) $(AM_MAKEFLAGS) dist \
+ && rm -rf $(DIST_ARCHIVES) \
+ && $(MAKE) $(AM_MAKEFLAGS) distcleancheck \
+ && cd "$$am__cwd" \
+ || exit 1
+ $(am__post_remove_distdir)
+ @(echo "$(distdir) archives ready for distribution: "; \
+ list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \
+ sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x'
+distuninstallcheck:
+ @test -n '$(distuninstallcheck_dir)' || { \
+ echo 'ERROR: trying to run $@ with an empty' \
+ '$$(distuninstallcheck_dir)' >&2; \
+ exit 1; \
+ }; \
+ $(am__cd) '$(distuninstallcheck_dir)' || { \
+ echo 'ERROR: cannot chdir into $(distuninstallcheck_dir)' >&2; \
+ exit 1; \
+ }; \
+ test `$(am__distuninstallcheck_listfiles) | wc -l` -eq 0 \
+ || { echo "ERROR: files left after uninstall:" ; \
+ if test -n "$(DESTDIR)"; then \
+ echo " (check DESTDIR support)"; \
+ fi ; \
+ $(distuninstallcheck_listfiles) ; \
+ exit 1; } >&2
+distcleancheck: distclean
+ @if test '$(srcdir)' = . ; then \
+ echo "ERROR: distcleancheck can only run from a VPATH build" ; \
+ exit 1 ; \
+ fi
+ @test `$(distcleancheck_listfiles) | wc -l` -eq 0 \
+ || { echo "ERROR: files left in build directory after distclean:" ; \
+ $(distcleancheck_listfiles) ; \
+ exit 1; } >&2
+check-am: all-am
+check: check-recursive
+all-am: Makefile config.h
+installdirs: installdirs-recursive
+installdirs-am:
+install: install-recursive
+install-exec: install-exec-recursive
+install-data: install-data-recursive
+uninstall: uninstall-recursive
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-recursive
+install-strip:
+ if test -z '$(STRIP)'; then \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ install; \
+ else \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+ fi
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-recursive
+
+clean-am: clean-generic clean-libtool mostlyclean-am
+
+distclean: distclean-recursive
+ -rm -f $(am__CONFIG_DISTCLEAN_FILES)
+ -rm -f Makefile
+distclean-am: clean-am distclean-generic distclean-hdr \
+ distclean-libtool distclean-tags
+
+dvi: dvi-recursive
+
+dvi-am:
+
+html: html-recursive
+
+html-am:
+
+info: info-recursive
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-recursive
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-recursive
+
+install-html-am:
+
+install-info: install-info-recursive
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-recursive
+
+install-pdf-am:
+
+install-ps: install-ps-recursive
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-recursive
+ -rm -f $(am__CONFIG_DISTCLEAN_FILES)
+ -rm -rf $(top_srcdir)/autom4te.cache
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-recursive
+
+mostlyclean-am: mostlyclean-generic mostlyclean-libtool
+
+pdf: pdf-recursive
+
+pdf-am:
+
+ps: ps-recursive
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: $(am__recursive_targets) all install-am install-strip
+
+.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am \
+ am--refresh check check-am clean clean-cscope clean-generic \
+ clean-libtool cscope cscopelist-am ctags ctags-am dist \
+ dist-all dist-bzip2 dist-gzip dist-lzip dist-shar dist-tarZ \
+ dist-xz dist-zip distcheck distclean distclean-generic \
+ distclean-hdr distclean-libtool distclean-tags distcleancheck \
+ distdir distuninstallcheck dvi dvi-am html html-am info \
+ info-am install install-am install-data install-data-am \
+ install-dvi install-dvi-am install-exec install-exec-am \
+ install-html install-html-am install-info install-info-am \
+ install-man install-pdf install-pdf-am install-ps \
+ install-ps-am install-strip installcheck installcheck-am \
+ installdirs installdirs-am maintainer-clean \
+ maintainer-clean-generic mostlyclean mostlyclean-generic \
+ mostlyclean-libtool pdf pdf-am ps ps-am tags tags-am uninstall \
+ uninstall-am
+
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/NEWS b/NEWS
new file mode 100644
index 0000000..e69de29
diff --git a/README b/README
new file mode 100644
index 0000000..e69de29
diff --git a/aclocal.m4 b/aclocal.m4
new file mode 100644
index 0000000..85349e5
--- /dev/null
+++ b/aclocal.m4
@@ -0,0 +1,1158 @@
+# generated automatically by aclocal 1.14.1 -*- Autoconf -*-
+
+# Copyright (C) 1996-2013 Free Software Foundation, Inc.
+
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+m4_ifndef([AC_CONFIG_MACRO_DIRS], [m4_defun([_AM_CONFIG_MACRO_DIRS], [])m4_defun([AC_CONFIG_MACRO_DIRS], [_AM_CONFIG_MACRO_DIRS($@)])])
+m4_ifndef([AC_AUTOCONF_VERSION],
+ [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
+m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.69],,
+[m4_warning([this file was generated for autoconf 2.69.
+You have another version of autoconf. It may work, but is not guaranteed to.
+If you have problems, you may need to regenerate the build system entirely.
+To do so, use the procedure documented by the package, typically 'autoreconf'.])])
+
+# Copyright (C) 2002-2013 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_AUTOMAKE_VERSION(VERSION)
+# ----------------------------
+# Automake X.Y traces this macro to ensure aclocal.m4 has been
+# generated from the m4 files accompanying Automake X.Y.
+# (This private macro should not be called outside this file.)
+AC_DEFUN([AM_AUTOMAKE_VERSION],
+[am__api_version='1.14'
+dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to
+dnl require some minimum version. Point them to the right macro.
+m4_if([$1], [1.14.1], [],
+ [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl
+])
+
+# _AM_AUTOCONF_VERSION(VERSION)
+# -----------------------------
+# aclocal traces this macro to find the Autoconf version.
+# This is a private macro too. Using m4_define simplifies
+# the logic in aclocal, which can simply ignore this definition.
+m4_define([_AM_AUTOCONF_VERSION], [])
+
+# AM_SET_CURRENT_AUTOMAKE_VERSION
+# -------------------------------
+# Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced.
+# This function is AC_REQUIREd by AM_INIT_AUTOMAKE.
+AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
+[AM_AUTOMAKE_VERSION([1.14.1])dnl
+m4_ifndef([AC_AUTOCONF_VERSION],
+ [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
+_AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))])
+
+# AM_AUX_DIR_EXPAND -*- Autoconf -*-
+
+# Copyright (C) 2001-2013 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets
+# $ac_aux_dir to '$srcdir/foo'. In other projects, it is set to
+# '$srcdir', '$srcdir/..', or '$srcdir/../..'.
+#
+# Of course, Automake must honor this variable whenever it calls a
+# tool from the auxiliary directory. The problem is that $srcdir (and
+# therefore $ac_aux_dir as well) can be either absolute or relative,
+# depending on how configure is run. This is pretty annoying, since
+# it makes $ac_aux_dir quite unusable in subdirectories: in the top
+# source directory, any form will work fine, but in subdirectories a
+# relative path needs to be adjusted first.
+#
+# $ac_aux_dir/missing
+# fails when called from a subdirectory if $ac_aux_dir is relative
+# $top_srcdir/$ac_aux_dir/missing
+# fails if $ac_aux_dir is absolute,
+# fails when called from a subdirectory in a VPATH build with
+# a relative $ac_aux_dir
+#
+# The reason of the latter failure is that $top_srcdir and $ac_aux_dir
+# are both prefixed by $srcdir. In an in-source build this is usually
+# harmless because $srcdir is '.', but things will broke when you
+# start a VPATH build or use an absolute $srcdir.
+#
+# So we could use something similar to $top_srcdir/$ac_aux_dir/missing,
+# iff we strip the leading $srcdir from $ac_aux_dir. That would be:
+# am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"`
+# and then we would define $MISSING as
+# MISSING="\${SHELL} $am_aux_dir/missing"
+# This will work as long as MISSING is not called from configure, because
+# unfortunately $(top_srcdir) has no meaning in configure.
+# However there are other variables, like CC, which are often used in
+# configure, and could therefore not use this "fixed" $ac_aux_dir.
+#
+# Another solution, used here, is to always expand $ac_aux_dir to an
+# absolute PATH. The drawback is that using absolute paths prevent a
+# configured tree to be moved without reconfiguration.
+
+AC_DEFUN([AM_AUX_DIR_EXPAND],
+[dnl Rely on autoconf to set up CDPATH properly.
+AC_PREREQ([2.50])dnl
+# expand $ac_aux_dir to an absolute path
+am_aux_dir=`cd $ac_aux_dir && pwd`
+])
+
+# AM_CONDITIONAL -*- Autoconf -*-
+
+# Copyright (C) 1997-2013 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_CONDITIONAL(NAME, SHELL-CONDITION)
+# -------------------------------------
+# Define a conditional.
+AC_DEFUN([AM_CONDITIONAL],
+[AC_PREREQ([2.52])dnl
+ m4_if([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])],
+ [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl
+AC_SUBST([$1_TRUE])dnl
+AC_SUBST([$1_FALSE])dnl
+_AM_SUBST_NOTMAKE([$1_TRUE])dnl
+_AM_SUBST_NOTMAKE([$1_FALSE])dnl
+m4_define([_AM_COND_VALUE_$1], [$2])dnl
+if $2; then
+ $1_TRUE=
+ $1_FALSE='#'
+else
+ $1_TRUE='#'
+ $1_FALSE=
+fi
+AC_CONFIG_COMMANDS_PRE(
+[if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then
+ AC_MSG_ERROR([[conditional "$1" was never defined.
+Usually this means the macro was only invoked conditionally.]])
+fi])])
+
+# Copyright (C) 1999-2013 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.
+
+
+# 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", "OBJC", "OBJCXX", "UPC", or "GJC".
+# 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
+
+m4_if([$1], [CC], [depcc="$CC" am_compiler_list=],
+ [$1], [CXX], [depcc="$CXX" am_compiler_list=],
+ [$1], [OBJC], [depcc="$OBJC" am_compiler_list='gcc3 gcc'],
+ [$1], [OBJCXX], [depcc="$OBJCXX" am_compiler_list='gcc3 gcc'],
+ [$1], [UPC], [depcc="$UPC" am_compiler_list=],
+ [$1], [GCJ], [depcc="$GCJ" am_compiler_list='gcc3 gcc'],
+ [depcc="$$1" am_compiler_list=])
+
+AC_CACHE_CHECK([dependency style of $depcc],
+ [am_cv_$1_dependencies_compiler_type],
+[if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
+ # We make a subdir and do the tests there. Otherwise we can end up
+ # making bogus files that we don't know about and never remove. For
+ # instance it was reported that on HP-UX the gcc test will end up
+ # making a dummy file named 'D' -- because '-MD' means "put the output
+ # in D".
+ rm -rf conftest.dir
+ mkdir conftest.dir
+ # Copy depcomp to subdir because otherwise we won't find it if we're
+ # using a relative directory.
+ cp "$am_depcomp" conftest.dir
+ cd conftest.dir
+ # We will build objects and dependencies in a subdirectory because
+ # it helps to detect inapplicable dependency modes. For instance
+ # both Tru64's cc and ICC support -MD to output dependencies as a
+ # side effect of compilation, but ICC will put the dependencies in
+ # the current directory while Tru64 will put them in the object
+ # directory.
+ mkdir sub
+
+ am_cv_$1_dependencies_compiler_type=none
+ if test "$am_compiler_list" = ""; then
+ am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp`
+ fi
+ am__universal=false
+ m4_case([$1], [CC],
+ [case " $depcc " in #(
+ *\ -arch\ *\ -arch\ *) am__universal=true ;;
+ esac],
+ [CXX],
+ [case " $depcc " in #(
+ *\ -arch\ *\ -arch\ *) am__universal=true ;;
+ esac])
+
+ for depmode in $am_compiler_list; do
+ # Setup a source with many dependencies, because some compilers
+ # like to wrap large dependency lists on column 80 (with \), and
+ # we should not choose a depcomp mode which is confused by this.
+ #
+ # We need to recreate these files for each test, as the compiler may
+ # overwrite some of them when testing with obscure command lines.
+ # This happens at least with the AIX C compiler.
+ : > sub/conftest.c
+ for i in 1 2 3 4 5 6; do
+ echo '#include "conftst'$i'.h"' >> sub/conftest.c
+ # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with
+ # Solaris 10 /bin/sh.
+ echo '/* dummy */' > sub/conftst$i.h
+ done
+ echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
+
+ # We check with '-c' and '-o' for the sake of the "dashmstdout"
+ # mode. It turns out that the SunPro C++ compiler does not properly
+ # handle '-M -o', and we need to detect this. Also, some Intel
+ # versions had trouble with output in subdirs.
+ am__obj=sub/conftest.${OBJEXT-o}
+ am__minus_obj="-o $am__obj"
+ case $depmode in
+ gcc)
+ # This depmode causes a compiler race in universal mode.
+ test "$am__universal" = false || continue
+ ;;
+ nosideeffect)
+ # After this tag, mechanisms are not by side-effect, so they'll
+ # only be used when explicitly requested.
+ if test "x$enable_dependency_tracking" = xyes; then
+ continue
+ else
+ break
+ fi
+ ;;
+ msvc7 | msvc7msys | msvisualcpp | msvcmsys)
+ # This compiler won't grok '-c -o', but also, the minuso test has
+ # not run yet. These depmodes are late enough in the game, and
+ # so weak that their functioning should not be impacted.
+ am__obj=conftest.${OBJEXT-o}
+ am__minus_obj=
+ ;;
+ none) break ;;
+ esac
+ if depmode=$depmode \
+ source=sub/conftest.c object=$am__obj \
+ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
+ $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \
+ >/dev/null 2>conftest.err &&
+ grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 &&
+ grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
+ grep $am__obj sub/conftest.Po > /dev/null 2>&1 &&
+ ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
+ # icc doesn't choke on unknown options, it will just issue warnings
+ # or remarks (even with -Werror). So we grep stderr for any message
+ # that says an option was ignored or not supported.
+ # When given -MP, icc 7.0 and 7.1 complain thusly:
+ # icc: Command line warning: ignoring option '-M'; no argument required
+ # The diagnosis changed in icc 8.0:
+ # icc: Command line remark: option '-MP' not supported
+ if (grep 'ignoring option' conftest.err ||
+ grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
+ am_cv_$1_dependencies_compiler_type=$depmode
+ break
+ fi
+ fi
+ done
+
+ cd ..
+ rm -rf conftest.dir
+else
+ am_cv_$1_dependencies_compiler_type=none
+fi
+])
+AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type])
+AM_CONDITIONAL([am__fastdep$1], [
+ test "x$enable_dependency_tracking" != xno \
+ && test "$am_cv_$1_dependencies_compiler_type" = gcc3])
+])
+
+
+# AM_SET_DEPDIR
+# -------------
+# Choose a directory name for dependency files.
+# This macro is AC_REQUIREd in _AM_DEPENDENCIES.
+AC_DEFUN([AM_SET_DEPDIR],
+[AC_REQUIRE([AM_SET_LEADING_DOT])dnl
+AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl
+])
+
+
+# AM_DEP_TRACK
+# ------------
+AC_DEFUN([AM_DEP_TRACK],
+[AC_ARG_ENABLE([dependency-tracking], [dnl
+AS_HELP_STRING(
+ [--enable-dependency-tracking],
+ [do not reject slow dependency extractors])
+AS_HELP_STRING(
+ [--disable-dependency-tracking],
+ [speeds up one-time build])])
+if test "x$enable_dependency_tracking" != xno; then
+ am_depcomp="$ac_aux_dir/depcomp"
+ AMDEPBACKSLASH='\'
+ am__nodep='_no'
+fi
+AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno])
+AC_SUBST([AMDEPBACKSLASH])dnl
+_AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl
+AC_SUBST([am__nodep])dnl
+_AM_SUBST_NOTMAKE([am__nodep])dnl
+])
+
+# Generate code to set up dependency tracking. -*- Autoconf -*-
+
+# Copyright (C) 1999-2013 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+
+# _AM_OUTPUT_DEPENDENCY_COMMANDS
+# ------------------------------
+AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS],
+[{
+ # Older Autoconf quotes --file arguments for eval, but not when files
+ # are listed without --file. Let's play safe and only enable the eval
+ # if we detect the quoting.
+ case $CONFIG_FILES in
+ *\'*) eval set x "$CONFIG_FILES" ;;
+ *) set x $CONFIG_FILES ;;
+ esac
+ shift
+ for mf
+ do
+ # Strip MF so we end up with the name of the file.
+ mf=`echo "$mf" | sed -e 's/:.*$//'`
+ # Check whether this is an Automake generated Makefile or not.
+ # We used to match only the files named 'Makefile.in', but
+ # some people rename them; so instead we look at the file content.
+ # Grep'ing the first line is not enough: some people post-process
+ # each Makefile.in and add a new line on top of each file to say so.
+ # Grep'ing the whole file is not good either: AIX grep has a line
+ # limit of 2048, but all sed's we know have understand at least 4000.
+ if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then
+ dirpart=`AS_DIRNAME("$mf")`
+ else
+ continue
+ fi
+ # Extract the definition of DEPDIR, am__include, and am__quote
+ # from the Makefile without running 'make'.
+ DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"`
+ test -z "$DEPDIR" && continue
+ am__include=`sed -n 's/^am__include = //p' < "$mf"`
+ test -z "$am__include" && continue
+ am__quote=`sed -n 's/^am__quote = //p' < "$mf"`
+ # Find all dependency output files, they are included files with
+ # $(DEPDIR) in their names. We invoke sed twice because it is the
+ # simplest approach to changing $(DEPDIR) to its actual value in the
+ # expansion.
+ for file in `sed -n "
+ s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \
+ sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g'`; 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"])
+])
+
+# Do all the work for Automake. -*- Autoconf -*-
+
+# Copyright (C) 1996-2013 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 macro actually does too much. Some checks are only needed if
+# your package does certain things. But this isn't really a big deal.
+
+dnl Redefine AC_PROG_CC to automatically invoke _AM_PROG_CC_C_O.
+m4_define([AC_PROG_CC],
+m4_defn([AC_PROG_CC])
+[_AM_PROG_CC_C_O
+])
+
+# AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE])
+# AM_INIT_AUTOMAKE([OPTIONS])
+# -----------------------------------------------
+# The call with PACKAGE and VERSION arguments is the old style
+# call (pre autoconf-2.50), which is being phased out. PACKAGE
+# and VERSION should now be passed to AC_INIT and removed from
+# the call to AM_INIT_AUTOMAKE.
+# We support both call styles for the transition. After
+# the next Automake release, Autoconf can make the AC_INIT
+# arguments mandatory, and then we can depend on a new Autoconf
+# release and drop the old call support.
+AC_DEFUN([AM_INIT_AUTOMAKE],
+[AC_PREREQ([2.65])dnl
+dnl Autoconf wants to disallow AM_ names. We explicitly allow
+dnl the ones we care about.
+m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl
+AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl
+AC_REQUIRE([AC_PROG_INSTALL])dnl
+if test "`cd $srcdir && pwd`" != "`pwd`"; then
+ # Use -I$(srcdir) only when $(srcdir) != ., so that make's output
+ # is not polluted with repeated "-I."
+ AC_SUBST([am__isrc], [' -I$(srcdir)'])_AM_SUBST_NOTMAKE([am__isrc])dnl
+ # test to see if srcdir already configured
+ if test -f $srcdir/config.status; then
+ AC_MSG_ERROR([source directory already configured; run "make distclean" there first])
+ fi
+fi
+
+# test whether we have cygpath
+if test -z "$CYGPATH_W"; then
+ if (cygpath --version) >/dev/null 2>/dev/null; then
+ CYGPATH_W='cygpath -w'
+ else
+ CYGPATH_W=echo
+ fi
+fi
+AC_SUBST([CYGPATH_W])
+
+# Define the identity of the package.
+dnl Distinguish between old-style and new-style calls.
+m4_ifval([$2],
+[AC_DIAGNOSE([obsolete],
+ [$0: two- and three-arguments forms are deprecated.])
+m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl
+ AC_SUBST([PACKAGE], [$1])dnl
+ AC_SUBST([VERSION], [$2])],
+[_AM_SET_OPTIONS([$1])dnl
+dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT.
+m4_if(
+ m4_ifdef([AC_PACKAGE_NAME], [ok]):m4_ifdef([AC_PACKAGE_VERSION], [ok]),
+ [ok:ok],,
+ [m4_fatal([AC_INIT should be called with package and version arguments])])dnl
+ AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl
+ AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl
+
+_AM_IF_OPTION([no-define],,
+[AC_DEFINE_UNQUOTED([PACKAGE], ["$PACKAGE"], [Name of package])
+ AC_DEFINE_UNQUOTED([VERSION], ["$VERSION"], [Version number of package])])dnl
+
+# Some tools Automake needs.
+AC_REQUIRE([AM_SANITY_CHECK])dnl
+AC_REQUIRE([AC_ARG_PROGRAM])dnl
+AM_MISSING_PROG([ACLOCAL], [aclocal-${am__api_version}])
+AM_MISSING_PROG([AUTOCONF], [autoconf])
+AM_MISSING_PROG([AUTOMAKE], [automake-${am__api_version}])
+AM_MISSING_PROG([AUTOHEADER], [autoheader])
+AM_MISSING_PROG([MAKEINFO], [makeinfo])
+AC_REQUIRE([AM_PROG_INSTALL_SH])dnl
+AC_REQUIRE([AM_PROG_INSTALL_STRIP])dnl
+AC_REQUIRE([AC_PROG_MKDIR_P])dnl
+# For better backward compatibility. To be removed once Automake 1.9.x
+# dies out for good. For more background, see:
+# <http://lists.gnu.org/archive/html/automake/2012-07/msg00001.html>
+# <http://lists.gnu.org/archive/html/automake/2012-07/msg00014.html>
+AC_SUBST([mkdir_p], ['$(MKDIR_P)'])
+# We need awk for the "check" target. The system "awk" is bad on
+# some platforms.
+AC_REQUIRE([AC_PROG_AWK])dnl
+AC_REQUIRE([AC_PROG_MAKE_SET])dnl
+AC_REQUIRE([AM_SET_LEADING_DOT])dnl
+_AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])],
+ [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])],
+ [_AM_PROG_TAR([v7])])])
+_AM_IF_OPTION([no-dependencies],,
+[AC_PROVIDE_IFELSE([AC_PROG_CC],
+ [_AM_DEPENDENCIES([CC])],
+ [m4_define([AC_PROG_CC],
+ m4_defn([AC_PROG_CC])[_AM_DEPENDENCIES([CC])])])dnl
+AC_PROVIDE_IFELSE([AC_PROG_CXX],
+ [_AM_DEPENDENCIES([CXX])],
+ [m4_define([AC_PROG_CXX],
+ m4_defn([AC_PROG_CXX])[_AM_DEPENDENCIES([CXX])])])dnl
+AC_PROVIDE_IFELSE([AC_PROG_OBJC],
+ [_AM_DEPENDENCIES([OBJC])],
+ [m4_define([AC_PROG_OBJC],
+ m4_defn([AC_PROG_OBJC])[_AM_DEPENDENCIES([OBJC])])])dnl
+AC_PROVIDE_IFELSE([AC_PROG_OBJCXX],
+ [_AM_DEPENDENCIES([OBJCXX])],
+ [m4_define([AC_PROG_OBJCXX],
+ m4_defn([AC_PROG_OBJCXX])[_AM_DEPENDENCIES([OBJCXX])])])dnl
+])
+AC_REQUIRE([AM_SILENT_RULES])dnl
+dnl The testsuite driver may need to know about EXEEXT, so add the
+dnl 'am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen. This
+dnl macro is hooked onto _AC_COMPILER_EXEEXT early, see below.
+AC_CONFIG_COMMANDS_PRE(dnl
+[m4_provide_if([_AM_COMPILER_EXEEXT],
+ [AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl
+
+# POSIX will say in a future version that running "rm -f" with no argument
+# is OK; and we want to be able to make that assumption in our Makefile
+# recipes. So use an aggressive probe to check that the usage we want is
+# actually supported "in the wild" to an acceptable degree.
+# See automake bug#10828.
+# To make any issue more visible, cause the running configure to be aborted
+# by default if the 'rm' program in use doesn't match our expectations; the
+# user can still override this though.
+if rm -f && rm -fr && rm -rf; then : OK; else
+ cat >&2 <<'END'
+Oops!
+
+Your 'rm' program seems unable to run without file operands specified
+on the command line, even when the '-f' option is present. This is contrary
+to the behaviour of most rm programs out there, and not conforming with
+the upcoming POSIX standard: <http://austingroupbugs.net/view.php?id=542>
+
+Please tell bug-automake at gnu.org about your system, including the value
+of your $PATH and any error possibly output before this message. This
+can help us improve future automake versions.
+
+END
+ if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then
+ echo 'Configuration will proceed anyway, since you have set the' >&2
+ echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2
+ echo >&2
+ else
+ cat >&2 <<'END'
+Aborting the configuration process, to ensure you take notice of the issue.
+
+You can download and install GNU coreutils to get an 'rm' implementation
+that behaves properly: <http://www.gnu.org/software/coreutils/>.
+
+If you want to complete the configuration process using your problematic
+'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM
+to "yes", and re-run configure.
+
+END
+ AC_MSG_ERROR([Your 'rm' program is bad, sorry.])
+ fi
+fi])
+
+dnl Hook into '_AC_COMPILER_EXEEXT' early to learn its expansion. Do not
+dnl add the conditional right here, as _AC_COMPILER_EXEEXT may be further
+dnl mangled by Autoconf and run in a shell conditional statement.
+m4_define([_AC_COMPILER_EXEEXT],
+m4_defn([_AC_COMPILER_EXEEXT])[m4_provide([_AM_COMPILER_EXEEXT])])
+
+# When config.status generates a header, we must update the stamp-h file.
+# This file resides in the same directory as the config header
+# that is generated. The stamp files are numbered to have different names.
+
+# Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the
+# loop where config.status creates the headers, so we can generate
+# our stamp files there.
+AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK],
+[# Compute $1's index in $config_headers.
+_am_arg=$1
+_am_stamp_count=1
+for _am_header in $config_headers :; do
+ case $_am_header in
+ $_am_arg | $_am_arg:* )
+ break ;;
+ * )
+ _am_stamp_count=`expr $_am_stamp_count + 1` ;;
+ esac
+done
+echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count])
+
+# Copyright (C) 2001-2013 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_PROG_INSTALL_SH
+# ------------------
+# Define $install_sh.
+AC_DEFUN([AM_PROG_INSTALL_SH],
+[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
+if test x"${install_sh}" != xset; then
+ case $am_aux_dir in
+ *\ * | *\ *)
+ install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;;
+ *)
+ install_sh="\${SHELL} $am_aux_dir/install-sh"
+ esac
+fi
+AC_SUBST([install_sh])])
+
+# Copyright (C) 2003-2013 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.
+
+# 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])])
+
+# Check to see how 'make' treats includes. -*- Autoconf -*-
+
+# Copyright (C) 2001-2013 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_MAKE_INCLUDE()
+# -----------------
+# Check to see how make treats includes.
+AC_DEFUN([AM_MAKE_INCLUDE],
+[am_make=${MAKE-make}
+cat > confinc << 'END'
+am__doit:
+ @echo this is the am__doit target
+.PHONY: am__doit
+END
+# If we don't find an include directive, just comment out the code.
+AC_MSG_CHECKING([for style of include used by $am_make])
+am__include="#"
+am__quote=
+_am_result=none
+# First try GNU make style include.
+echo "include confinc" > confmf
+# Ignore all kinds of additional output from 'make'.
+case `$am_make -s -f confmf 2> /dev/null` in #(
+*the\ am__doit\ target*)
+ am__include=include
+ am__quote=
+ _am_result=GNU
+ ;;
+esac
+# Now try BSD make style include.
+if test "$am__include" = "#"; then
+ echo '.include "confinc"' > confmf
+ case `$am_make -s -f confmf 2> /dev/null` in #(
+ *the\ am__doit\ target*)
+ am__include=.include
+ am__quote="\""
+ _am_result=BSD
+ ;;
+ esac
+fi
+AC_SUBST([am__include])
+AC_SUBST([am__quote])
+AC_MSG_RESULT([$_am_result])
+rm -f confinc confmf
+])
+
+# Fake the existence of programs that GNU maintainers use. -*- Autoconf -*-
+
+# Copyright (C) 1997-2013 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_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 is modern enough.
+# If it is, set am_missing_run to use it, otherwise, to nothing.
+AC_DEFUN([AM_MISSING_HAS_RUN],
+[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
+AC_REQUIRE_AUX_FILE([missing])dnl
+if test x"${MISSING+set}" != xset; then
+ case $am_aux_dir in
+ *\ * | *\ *)
+ MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;;
+ *)
+ MISSING="\${SHELL} $am_aux_dir/missing" ;;
+ esac
+fi
+# Use eval to expand $SHELL
+if eval "$MISSING --is-lightweight"; then
+ am_missing_run="$MISSING "
+else
+ am_missing_run=
+ AC_MSG_WARN(['missing' script is too old or missing])
+fi
+])
+
+# Helper functions for option handling. -*- Autoconf -*-
+
+# Copyright (C) 2001-2013 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# _AM_MANGLE_OPTION(NAME)
+# -----------------------
+AC_DEFUN([_AM_MANGLE_OPTION],
+[[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])])
+
+# _AM_SET_OPTION(NAME)
+# --------------------
+# Set option NAME. Presently that only means defining a flag for this option.
+AC_DEFUN([_AM_SET_OPTION],
+[m4_define(_AM_MANGLE_OPTION([$1]), [1])])
+
+# _AM_SET_OPTIONS(OPTIONS)
+# ------------------------
+# OPTIONS is a space-separated list of Automake options.
+AC_DEFUN([_AM_SET_OPTIONS],
+[m4_foreach_w([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])])
+
+# _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET])
+# -------------------------------------------
+# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise.
+AC_DEFUN([_AM_IF_OPTION],
+[m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])])
+
+# Copyright (C) 1999-2013 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# _AM_PROG_CC_C_O
+# ---------------
+# Like AC_PROG_CC_C_O, but changed for automake. We rewrite AC_PROG_CC
+# to automatically call this.
+AC_DEFUN([_AM_PROG_CC_C_O],
+[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
+AC_REQUIRE_AUX_FILE([compile])dnl
+AC_LANG_PUSH([C])dnl
+AC_CACHE_CHECK(
+ [whether $CC understands -c and -o together],
+ [am_cv_prog_cc_c_o],
+ [AC_LANG_CONFTEST([AC_LANG_PROGRAM([])])
+ # Make sure it works both with $CC and with simple cc.
+ # Following AC_PROG_CC_C_O, we do the test twice because some
+ # compilers refuse to overwrite an existing .o file with -o,
+ # though they will create one.
+ am_cv_prog_cc_c_o=yes
+ for am_i in 1 2; do
+ if AM_RUN_LOG([$CC -c conftest.$ac_ext -o conftest2.$ac_objext]) \
+ && test -f conftest2.$ac_objext; then
+ : OK
+ else
+ am_cv_prog_cc_c_o=no
+ break
+ fi
+ done
+ rm -f core conftest*
+ unset am_i])
+if test "$am_cv_prog_cc_c_o" != yes; then
+ # Losing compiler, so override with the script.
+ # FIXME: It is wrong to rewrite CC.
+ # But if we don't then we get into trouble of one sort or another.
+ # A longer-term fix would be to have automake use am__CC in this case,
+ # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)"
+ CC="$am_aux_dir/compile $CC"
+fi
+AC_LANG_POP([C])])
+
+# For backward compatibility.
+AC_DEFUN_ONCE([AM_PROG_CC_C_O], [AC_REQUIRE([AC_PROG_CC])])
+
+# Copyright (C) 2001-2013 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_RUN_LOG(COMMAND)
+# -------------------
+# Run COMMAND, save the exit status in ac_status, and log it.
+# (This has been adapted from Autoconf's _AC_RUN_LOG macro.)
+AC_DEFUN([AM_RUN_LOG],
+[{ echo "$as_me:$LINENO: $1" >&AS_MESSAGE_LOG_FD
+ ($1) >&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD
+ (exit $ac_status); }])
+
+# Check to make sure that the build environment is sane. -*- Autoconf -*-
+
+# Copyright (C) 1996-2013 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_SANITY_CHECK
+# ---------------
+AC_DEFUN([AM_SANITY_CHECK],
+[AC_MSG_CHECKING([whether build environment is sane])
+# Reject unsafe characters in $srcdir or the absolute working directory
+# name. Accept space and tab only in the latter.
+am_lf='
+'
+case `pwd` in
+ *[[\\\"\#\$\&\'\`$am_lf]]*)
+ AC_MSG_ERROR([unsafe absolute working directory name]);;
+esac
+case $srcdir in
+ *[[\\\"\#\$\&\'\`$am_lf\ \ ]]*)
+ AC_MSG_ERROR([unsafe srcdir value: '$srcdir']);;
+esac
+
+# Do 'set' in a subshell so we don't clobber the current shell's
+# arguments. Must try -L first in case configure is actually a
+# symlink; some systems play weird games with the mod time of symlinks
+# (eg FreeBSD returns the mod time of the symlink's containing
+# directory).
+if (
+ am_has_slept=no
+ for am_try in 1 2; do
+ echo "timestamp, slept: $am_has_slept" > conftest.file
+ 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
+ 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
+ if test "$[2]" = conftest.file || test $am_try -eq 2; then
+ break
+ fi
+ # Just in case.
+ sleep 1
+ am_has_slept=yes
+ done
+ 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])
+# If we didn't sleep, we still need to ensure time stamps of config.status and
+# generated files are strictly newer.
+am_sleep_pid=
+if grep 'slept: no' conftest.file >/dev/null 2>&1; then
+ ( sleep 1 ) &
+ am_sleep_pid=$!
+fi
+AC_CONFIG_COMMANDS_PRE(
+ [AC_MSG_CHECKING([that generated files are newer than configure])
+ if test -n "$am_sleep_pid"; then
+ # Hide warnings about reused PIDs.
+ wait $am_sleep_pid 2>/dev/null
+ fi
+ AC_MSG_RESULT([done])])
+rm -f conftest.file
+])
+
+# Copyright (C) 2009-2013 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_SILENT_RULES([DEFAULT])
+# --------------------------
+# Enable less verbose build rules; with the default set to DEFAULT
+# ("yes" being less verbose, "no" or empty being verbose).
+AC_DEFUN([AM_SILENT_RULES],
+[AC_ARG_ENABLE([silent-rules], [dnl
+AS_HELP_STRING(
+ [--enable-silent-rules],
+ [less verbose build output (undo: "make V=1")])
+AS_HELP_STRING(
+ [--disable-silent-rules],
+ [verbose build output (undo: "make V=0")])dnl
+])
+case $enable_silent_rules in @%:@ (((
+ yes) AM_DEFAULT_VERBOSITY=0;;
+ no) AM_DEFAULT_VERBOSITY=1;;
+ *) AM_DEFAULT_VERBOSITY=m4_if([$1], [yes], [0], [1]);;
+esac
+dnl
+dnl A few 'make' implementations (e.g., NonStop OS and NextStep)
+dnl do not support nested variable expansions.
+dnl See automake bug#9928 and bug#10237.
+am_make=${MAKE-make}
+AC_CACHE_CHECK([whether $am_make supports nested variables],
+ [am_cv_make_support_nested_variables],
+ [if AS_ECHO([['TRUE=$(BAR$(V))
+BAR0=false
+BAR1=true
+V=1
+am__doit:
+ @$(TRUE)
+.PHONY: am__doit']]) | $am_make -f - >/dev/null 2>&1; then
+ am_cv_make_support_nested_variables=yes
+else
+ am_cv_make_support_nested_variables=no
+fi])
+if test $am_cv_make_support_nested_variables = yes; then
+ dnl Using '$V' instead of '$(V)' breaks IRIX make.
+ AM_V='$(V)'
+ AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)'
+else
+ AM_V=$AM_DEFAULT_VERBOSITY
+ AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY
+fi
+AC_SUBST([AM_V])dnl
+AM_SUBST_NOTMAKE([AM_V])dnl
+AC_SUBST([AM_DEFAULT_V])dnl
+AM_SUBST_NOTMAKE([AM_DEFAULT_V])dnl
+AC_SUBST([AM_DEFAULT_VERBOSITY])dnl
+AM_BACKSLASH='\'
+AC_SUBST([AM_BACKSLASH])dnl
+_AM_SUBST_NOTMAKE([AM_BACKSLASH])dnl
+])
+
+# Copyright (C) 2001-2013 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_PROG_INSTALL_STRIP
+# ---------------------
+# One issue with vendor 'install' (even GNU) is that you can't
+# specify the program used to strip binaries. This is especially
+# annoying in cross-compiling environments, where the build's strip
+# is unlikely to handle the host's binaries.
+# Fortunately install-sh will honor a STRIPPROG variable, so we
+# always use install-sh in "make install-strip", and initialize
+# STRIPPROG with the value of the STRIP variable (set by the user).
+AC_DEFUN([AM_PROG_INSTALL_STRIP],
+[AC_REQUIRE([AM_PROG_INSTALL_SH])dnl
+# Installed binaries are usually stripped using 'strip' when the user
+# run "make install-strip". However 'strip' might not be the right
+# tool to use in cross-compilation environments, therefore Automake
+# will honor the 'STRIP' environment variable to overrule this program.
+dnl Don't test for $cross_compiling = yes, because it might be 'maybe'.
+if test "$cross_compiling" != no; then
+ AC_CHECK_TOOL([STRIP], [strip], :)
+fi
+INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s"
+AC_SUBST([INSTALL_STRIP_PROGRAM])])
+
+# Copyright (C) 2006-2013 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# _AM_SUBST_NOTMAKE(VARIABLE)
+# ---------------------------
+# Prevent Automake from outputting VARIABLE = @VARIABLE@ in Makefile.in.
+# This macro is traced by Automake.
+AC_DEFUN([_AM_SUBST_NOTMAKE])
+
+# AM_SUBST_NOTMAKE(VARIABLE)
+# --------------------------
+# Public sister of _AM_SUBST_NOTMAKE.
+AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)])
+
+# Check how to create a tarball. -*- Autoconf -*-
+
+# Copyright (C) 2004-2013 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# _AM_PROG_TAR(FORMAT)
+# --------------------
+# Check how to create a tarball in format FORMAT.
+# FORMAT should be one of 'v7', 'ustar', or 'pax'.
+#
+# Substitute a variable $(am__tar) that is a command
+# writing to stdout a FORMAT-tarball containing the directory
+# $tardir.
+# tardir=directory && $(am__tar) > result.tar
+#
+# Substitute a variable $(am__untar) that extract such
+# a tarball read from stdin.
+# $(am__untar) < result.tar
+#
+AC_DEFUN([_AM_PROG_TAR],
+[# Always define AMTAR for backward compatibility. Yes, it's still used
+# in the wild :-( We should find a proper way to deprecate it ...
+AC_SUBST([AMTAR], ['$${TAR-tar}'])
+
+# We'll loop over all known methods to create a tar archive until one works.
+_am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none'
+
+m4_if([$1], [v7],
+ [am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'],
+
+ [m4_case([$1],
+ [ustar],
+ [# The POSIX 1988 'ustar' format is defined with fixed-size fields.
+ # There is notably a 21 bits limit for the UID and the GID. In fact,
+ # the 'pax' utility can hang on bigger UID/GID (see automake bug#8343
+ # and bug#13588).
+ am_max_uid=2097151 # 2^21 - 1
+ am_max_gid=$am_max_uid
+ # The $UID and $GID variables are not portable, so we need to resort
+ # to the POSIX-mandated id(1) utility. Errors in the 'id' calls
+ # below are definitely unexpected, so allow the users to see them
+ # (that is, avoid stderr redirection).
+ am_uid=`id -u || echo unknown`
+ am_gid=`id -g || echo unknown`
+ AC_MSG_CHECKING([whether UID '$am_uid' is supported by ustar format])
+ if test $am_uid -le $am_max_uid; then
+ AC_MSG_RESULT([yes])
+ else
+ AC_MSG_RESULT([no])
+ _am_tools=none
+ fi
+ AC_MSG_CHECKING([whether GID '$am_gid' is supported by ustar format])
+ if test $am_gid -le $am_max_gid; then
+ AC_MSG_RESULT([yes])
+ else
+ AC_MSG_RESULT([no])
+ _am_tools=none
+ fi],
+
+ [pax],
+ [],
+
+ [m4_fatal([Unknown tar format])])
+
+ AC_MSG_CHECKING([how to create a $1 tar archive])
+
+ # Go ahead even if we have the value already cached. We do so because we
+ # need to set the values for the 'am__tar' and 'am__untar' variables.
+ _am_tools=${am_cv_prog_tar_$1-$_am_tools}
+
+ for _am_tool in $_am_tools; do
+ case $_am_tool in
+ gnutar)
+ for _am_tar in tar gnutar gtar; do
+ AM_RUN_LOG([$_am_tar --version]) && break
+ done
+ am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"'
+ am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"'
+ am__untar="$_am_tar -xf -"
+ ;;
+ plaintar)
+ # Must skip GNU tar: if it does not support --format= it doesn't create
+ # ustar tarball either.
+ (tar --version) >/dev/null 2>&1 && continue
+ am__tar='tar chf - "$$tardir"'
+ am__tar_='tar chf - "$tardir"'
+ am__untar='tar xf -'
+ ;;
+ pax)
+ am__tar='pax -L -x $1 -w "$$tardir"'
+ am__tar_='pax -L -x $1 -w "$tardir"'
+ am__untar='pax -r'
+ ;;
+ cpio)
+ am__tar='find "$$tardir" -print | cpio -o -H $1 -L'
+ am__tar_='find "$tardir" -print | cpio -o -H $1 -L'
+ am__untar='cpio -i -H $1 -d'
+ ;;
+ none)
+ am__tar=false
+ am__tar_=false
+ am__untar=false
+ ;;
+ esac
+
+ # If the value was cached, stop now. We just wanted to have am__tar
+ # and am__untar set.
+ test -n "${am_cv_prog_tar_$1}" && break
+
+ # tar/untar a dummy directory, and stop if the command works.
+ rm -rf conftest.dir
+ mkdir conftest.dir
+ echo GrepMe > conftest.dir/file
+ AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar])
+ rm -rf conftest.dir
+ if test -s conftest.tar; then
+ AM_RUN_LOG([$am__untar <conftest.tar])
+ AM_RUN_LOG([cat conftest.dir/file])
+ grep GrepMe conftest.dir/file >/dev/null 2>&1 && break
+ fi
+ done
+ rm -rf conftest.dir
+
+ AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool])
+ AC_MSG_RESULT([$am_cv_prog_tar_$1])])
+
+AC_SUBST([am__tar])
+AC_SUBST([am__untar])
+]) # _AM_PROG_TAR
+
+m4_include([m4/ax_check_compile_flag.m4])
+m4_include([m4/ax_ext.m4])
+m4_include([m4/ax_gcc_x86_cpuid.m4])
+m4_include([m4/ax_mpi.m4])
+m4_include([m4/libtool.m4])
+m4_include([m4/ltoptions.m4])
+m4_include([m4/ltsugar.m4])
+m4_include([m4/ltversion.m4])
+m4_include([m4/lt~obsolete.m4])
diff --git a/compile b/compile
new file mode 100755
index 0000000..531136b
--- /dev/null
+++ b/compile
@@ -0,0 +1,347 @@
+#! /bin/sh
+# Wrapper for compilers which do not understand '-c -o'.
+
+scriptversion=2012-10-14.11; # UTC
+
+# Copyright (C) 1999-2013 Free Software Foundation, Inc.
+# Written by Tom Tromey <tromey at cygnus.com>.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+# This file is maintained in Automake, please report
+# bugs to <bug-automake at gnu.org> or send patches to
+# <automake-patches at gnu.org>.
+
+nl='
+'
+
+# We need space, tab and new line, in precisely that order. Quoting is
+# there to prevent tools from complaining about whitespace usage.
+IFS=" "" $nl"
+
+file_conv=
+
+# func_file_conv build_file lazy
+# Convert a $build file to $host form and store it in $file
+# Currently only supports Windows hosts. If the determined conversion
+# type is listed in (the comma separated) LAZY, no conversion will
+# take place.
+func_file_conv ()
+{
+ file=$1
+ case $file in
+ / | /[!/]*) # absolute file, and not a UNC file
+ if test -z "$file_conv"; then
+ # lazily determine how to convert abs files
+ case `uname -s` in
+ MINGW*)
+ file_conv=mingw
+ ;;
+ CYGWIN*)
+ file_conv=cygwin
+ ;;
+ *)
+ file_conv=wine
+ ;;
+ esac
+ fi
+ case $file_conv/,$2, in
+ *,$file_conv,*)
+ ;;
+ mingw/*)
+ file=`cmd //C echo "$file " | sed -e 's/"\(.*\) " *$/\1/'`
+ ;;
+ cygwin/*)
+ file=`cygpath -m "$file" || echo "$file"`
+ ;;
+ wine/*)
+ file=`winepath -w "$file" || echo "$file"`
+ ;;
+ esac
+ ;;
+ esac
+}
+
+# func_cl_dashL linkdir
+# Make cl look for libraries in LINKDIR
+func_cl_dashL ()
+{
+ func_file_conv "$1"
+ if test -z "$lib_path"; then
+ lib_path=$file
+ else
+ lib_path="$lib_path;$file"
+ fi
+ linker_opts="$linker_opts -LIBPATH:$file"
+}
+
+# func_cl_dashl library
+# Do a library search-path lookup for cl
+func_cl_dashl ()
+{
+ lib=$1
+ found=no
+ save_IFS=$IFS
+ IFS=';'
+ for dir in $lib_path $LIB
+ do
+ IFS=$save_IFS
+ if $shared && test -f "$dir/$lib.dll.lib"; then
+ found=yes
+ lib=$dir/$lib.dll.lib
+ break
+ fi
+ if test -f "$dir/$lib.lib"; then
+ found=yes
+ lib=$dir/$lib.lib
+ break
+ fi
+ if test -f "$dir/lib$lib.a"; then
+ found=yes
+ lib=$dir/lib$lib.a
+ break
+ fi
+ done
+ IFS=$save_IFS
+
+ if test "$found" != yes; then
+ lib=$lib.lib
+ fi
+}
+
+# func_cl_wrapper cl arg...
+# Adjust compile command to suit cl
+func_cl_wrapper ()
+{
+ # Assume a capable shell
+ lib_path=
+ shared=:
+ linker_opts=
+ for arg
+ do
+ if test -n "$eat"; then
+ eat=
+ else
+ case $1 in
+ -o)
+ # configure might choose to run compile as 'compile cc -o foo foo.c'.
+ eat=1
+ case $2 in
+ *.o | *.[oO][bB][jJ])
+ func_file_conv "$2"
+ set x "$@" -Fo"$file"
+ shift
+ ;;
+ *)
+ func_file_conv "$2"
+ set x "$@" -Fe"$file"
+ shift
+ ;;
+ esac
+ ;;
+ -I)
+ eat=1
+ func_file_conv "$2" mingw
+ set x "$@" -I"$file"
+ shift
+ ;;
+ -I*)
+ func_file_conv "${1#-I}" mingw
+ set x "$@" -I"$file"
+ shift
+ ;;
+ -l)
+ eat=1
+ func_cl_dashl "$2"
+ set x "$@" "$lib"
+ shift
+ ;;
+ -l*)
+ func_cl_dashl "${1#-l}"
+ set x "$@" "$lib"
+ shift
+ ;;
+ -L)
+ eat=1
+ func_cl_dashL "$2"
+ ;;
+ -L*)
+ func_cl_dashL "${1#-L}"
+ ;;
+ -static)
+ shared=false
+ ;;
+ -Wl,*)
+ arg=${1#-Wl,}
+ save_ifs="$IFS"; IFS=','
+ for flag in $arg; do
+ IFS="$save_ifs"
+ linker_opts="$linker_opts $flag"
+ done
+ IFS="$save_ifs"
+ ;;
+ -Xlinker)
+ eat=1
+ linker_opts="$linker_opts $2"
+ ;;
+ -*)
+ set x "$@" "$1"
+ shift
+ ;;
+ *.cc | *.CC | *.cxx | *.CXX | *.[cC]++)
+ func_file_conv "$1"
+ set x "$@" -Tp"$file"
+ shift
+ ;;
+ *.c | *.cpp | *.CPP | *.lib | *.LIB | *.Lib | *.OBJ | *.obj | *.[oO])
+ func_file_conv "$1" mingw
+ set x "$@" "$file"
+ shift
+ ;;
+ *)
+ set x "$@" "$1"
+ shift
+ ;;
+ esac
+ fi
+ shift
+ done
+ if test -n "$linker_opts"; then
+ linker_opts="-link$linker_opts"
+ fi
+ exec "$@" $linker_opts
+ exit 1
+}
+
+eat=
+
+case $1 in
+ '')
+ echo "$0: No command. Try '$0 --help' for more information." 1>&2
+ exit 1;
+ ;;
+ -h | --h*)
+ cat <<\EOF
+Usage: compile [--help] [--version] PROGRAM [ARGS]
+
+Wrapper for compilers which do not understand '-c -o'.
+Remove '-o dest.o' from ARGS, run PROGRAM with the remaining
+arguments, and rename the output as expected.
+
+If you are trying to build a whole package this is not the
+right script to run: please start by reading the file 'INSTALL'.
+
+Report bugs to <bug-automake at gnu.org>.
+EOF
+ exit $?
+ ;;
+ -v | --v*)
+ echo "compile $scriptversion"
+ exit $?
+ ;;
+ cl | *[/\\]cl | cl.exe | *[/\\]cl.exe )
+ func_cl_wrapper "$@" # Doesn't return...
+ ;;
+esac
+
+ofile=
+cfile=
+
+for arg
+do
+ if test -n "$eat"; then
+ eat=
+ else
+ case $1 in
+ -o)
+ # configure might choose to run compile as 'compile cc -o foo foo.c'.
+ # So we strip '-o arg' only if arg is an object.
+ eat=1
+ case $2 in
+ *.o | *.obj)
+ ofile=$2
+ ;;
+ *)
+ set x "$@" -o "$2"
+ shift
+ ;;
+ esac
+ ;;
+ *.c)
+ cfile=$1
+ set x "$@" "$1"
+ shift
+ ;;
+ *)
+ set x "$@" "$1"
+ shift
+ ;;
+ esac
+ fi
+ shift
+done
+
+if test -z "$ofile" || test -z "$cfile"; then
+ # If no '-o' option was seen then we might have been invoked from a
+ # pattern rule where we don't need one. That is ok -- this is a
+ # normal compilation that the losing compiler can handle. If no
+ # '.c' file was seen then we are probably linking. That is also
+ # ok.
+ exec "$@"
+fi
+
+# Name of file we expect compiler to create.
+cofile=`echo "$cfile" | sed 's|^.*[\\/]||; s|^[a-zA-Z]:||; s/\.c$/.o/'`
+
+# Create the lock directory.
+# Note: use '[/\\:.-]' here to ensure that we don't use the same name
+# that we are using for the .o file. Also, base the name on the expected
+# object file name, since that is what matters with a parallel build.
+lockdir=`echo "$cofile" | sed -e 's|[/\\:.-]|_|g'`.d
+while true; do
+ if mkdir "$lockdir" >/dev/null 2>&1; then
+ break
+ fi
+ sleep 1
+done
+# FIXME: race condition here if user kills between mkdir and trap.
+trap "rmdir '$lockdir'; exit 1" 1 2 15
+
+# Run the compile.
+"$@"
+ret=$?
+
+if test -f "$cofile"; then
+ test "$cofile" = "$ofile" || mv "$cofile" "$ofile"
+elif test -f "${cofile}bj"; then
+ test "${cofile}bj" = "$ofile" || mv "${cofile}bj" "$ofile"
+fi
+
+rmdir "$lockdir"
+exit $ret
+
+# Local Variables:
+# mode: shell-script
+# sh-indentation: 2
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "scriptversion="
+# time-stamp-format: "%:y-%02m-%02d.%02H"
+# time-stamp-time-zone: "UTC"
+# time-stamp-end: "; # UTC"
+# End:
diff --git a/config.guess b/config.guess
new file mode 100755
index 0000000..b79252d
--- /dev/null
+++ b/config.guess
@@ -0,0 +1,1558 @@
+#! /bin/sh
+# Attempt to guess a canonical system name.
+# Copyright 1992-2013 Free Software Foundation, Inc.
+
+timestamp='2013-06-10'
+
+# 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 3 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, see <http://www.gnu.org/licenses/>.
+#
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that
+# program. This Exception is an additional permission under section 7
+# of the GNU General Public License, version 3 ("GPLv3").
+#
+# Originally written by Per Bothner.
+#
+# You can get the latest version of this script from:
+# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD
+#
+# Please send patches with a ChangeLog entry to config-patches at gnu.org.
+
+
+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 <config-patches at gnu.org>."
+
+version="\
+GNU config.guess ($timestamp)
+
+Originally written by Per Bothner.
+Copyright 1992-2013 Free Software Foundation, Inc.
+
+This is free software; see the source for copying conditions. There is NO
+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
+
+help="
+Try \`$me --help' for more information."
+
+# Parse command line
+while test $# -gt 0 ; do
+ case $1 in
+ --time-stamp | --time* | -t )
+ echo "$timestamp" ; exit ;;
+ --version | -v )
+ echo "$version" ; exit ;;
+ --help | --h* | -h )
+ echo "$usage"; exit ;;
+ -- ) # Stop option processing
+ shift; break ;;
+ - ) # Use stdin as input.
+ break ;;
+ -* )
+ echo "$me: invalid option $1$help" >&2
+ exit 1 ;;
+ * )
+ break ;;
+ esac
+done
+
+if test $# != 0; then
+ echo "$me: too many arguments$help" >&2
+ exit 1
+fi
+
+trap 'exit 1' 1 2 15
+
+# CC_FOR_BUILD -- compiler used by this script. Note that the use of a
+# compiler to aid in system detection is discouraged as it requires
+# temporary files to be created and, as you can see below, it is a
+# headache to deal with in a portable fashion.
+
+# Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still
+# use `HOST_CC' if defined, but it is deprecated.
+
+# Portable tmp directory creation inspired by the Autoconf team.
+
+set_cc_for_build='
+trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ;
+trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ;
+: ${TMPDIR=/tmp} ;
+ { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } ||
+ { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } ||
+ { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } ||
+ { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ;
+dummy=$tmp/dummy ;
+tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ;
+case $CC_FOR_BUILD,$HOST_CC,$CC in
+ ,,) echo "int x;" > $dummy.c ;
+ for c in cc gcc c89 c99 ; do
+ if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then
+ CC_FOR_BUILD="$c"; break ;
+ fi ;
+ done ;
+ if test x"$CC_FOR_BUILD" = x ; then
+ CC_FOR_BUILD=no_compiler_found ;
+ fi
+ ;;
+ ,,*) CC_FOR_BUILD=$CC ;;
+ ,*,*) CC_FOR_BUILD=$HOST_CC ;;
+esac ; set_cc_for_build= ;'
+
+# This is needed to find uname on a Pyramid OSx when run in the BSD universe.
+# (ghazi at 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_SYSTEM}" in
+Linux|GNU|GNU/*)
+ # If the system lacks a compiler, then just pick glibc.
+ # We could probably try harder.
+ LIBC=gnu
+
+ eval $set_cc_for_build
+ cat <<-EOF > $dummy.c
+ #include <features.h>
+ #if defined(__UCLIBC__)
+ LIBC=uclibc
+ #elif defined(__dietlibc__)
+ LIBC=dietlibc
+ #else
+ LIBC=gnu
+ #endif
+ EOF
+ eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC'`
+ ;;
+esac
+
+# 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 tuples: *-*-netbsdelf*, *-*-netbsdaout*,
+ # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently
+ # switched to ELF, *-*-netbsd* would select the old
+ # object file format. This provides both forward
+ # compatibility and a consistent mechanism for selecting the
+ # object file format.
+ #
+ # Note: NetBSD doesn't particularly care about the vendor
+ # portion of the name. We always set it to "unknown".
+ sysctl="sysctl -n hw.machine_arch"
+ UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \
+ /usr/sbin/$sysctl 2>/dev/null || echo unknown)`
+ case "${UNAME_MACHINE_ARCH}" in
+ armeb) machine=armeb-unknown ;;
+ arm*) machine=arm-unknown ;;
+ sh3el) machine=shl-unknown ;;
+ sh3eb) machine=sh-unknown ;;
+ sh5el) machine=sh5le-unknown ;;
+ *) machine=${UNAME_MACHINE_ARCH}-unknown ;;
+ esac
+ # The Operating System including object format, if it has switched
+ # to ELF recently, or will in the future.
+ case "${UNAME_MACHINE_ARCH}" in
+ arm*|i386|m68k|ns32k|sh3*|sparc|vax)
+ eval $set_cc_for_build
+ if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \
+ | grep -q __ELF__
+ 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 ;;
+ *:Bitrig:*:*)
+ UNAME_MACHINE_ARCH=`arch | sed 's/Bitrig.//'`
+ echo ${UNAME_MACHINE_ARCH}-unknown-bitrig${UNAME_RELEASE}
+ exit ;;
+ *:OpenBSD:*:*)
+ UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'`
+ echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE}
+ exit ;;
+ *:ekkoBSD:*:*)
+ echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE}
+ exit ;;
+ *:SolidBSD:*:*)
+ echo ${UNAME_MACHINE}-unknown-solidbsd${UNAME_RELEASE}
+ exit ;;
+ macppc:MirBSD:*:*)
+ echo powerpc-unknown-mirbsd${UNAME_RELEASE}
+ exit ;;
+ *:MirBSD:*:*)
+ echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE}
+ exit ;;
+ alpha:OSF1:*:*)
+ case $UNAME_RELEASE in
+ *4.0)
+ UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'`
+ ;;
+ *5.*)
+ UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'`
+ ;;
+ esac
+ # According to Compaq, /usr/sbin/psrinfo has been available on
+ # OSF/1 and Tru64 systems produced since 1995. I hope that
+ # covers most systems running today. This code pipes the CPU
+ # types through head -n 1, so we only detect the type of CPU 0.
+ ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1`
+ case "$ALPHA_CPU_TYPE" in
+ "EV4 (21064)")
+ UNAME_MACHINE="alpha" ;;
+ "EV4.5 (21064)")
+ UNAME_MACHINE="alpha" ;;
+ "LCA4 (21066/21068)")
+ UNAME_MACHINE="alpha" ;;
+ "EV5 (21164)")
+ UNAME_MACHINE="alphaev5" ;;
+ "EV5.6 (21164A)")
+ UNAME_MACHINE="alphaev56" ;;
+ "EV5.6 (21164PC)")
+ UNAME_MACHINE="alphapca56" ;;
+ "EV5.7 (21164PC)")
+ UNAME_MACHINE="alphapca57" ;;
+ "EV6 (21264)")
+ UNAME_MACHINE="alphaev6" ;;
+ "EV6.7 (21264A)")
+ UNAME_MACHINE="alphaev67" ;;
+ "EV6.8CB (21264C)")
+ UNAME_MACHINE="alphaev68" ;;
+ "EV6.8AL (21264B)")
+ UNAME_MACHINE="alphaev68" ;;
+ "EV6.8CX (21264D)")
+ UNAME_MACHINE="alphaev68" ;;
+ "EV6.9A (21264/EV69A)")
+ UNAME_MACHINE="alphaev69" ;;
+ "EV7 (21364)")
+ UNAME_MACHINE="alphaev7" ;;
+ "EV7.9 (21364A)")
+ UNAME_MACHINE="alphaev79" ;;
+ esac
+ # A Pn.n version is a patched version.
+ # A Vn.n version is a released version.
+ # A Tn.n version is a released field test version.
+ # A Xn.n version is an unreleased experimental baselevel.
+ # 1.2 uses "1.2" for uname -r.
+ echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ # Reset EXIT trap before exiting to avoid spurious non-zero exit code.
+ exitcode=$?
+ trap '' 0
+ exit $exitcode ;;
+ Alpha\ *:Windows_NT*:*)
+ # How do we know it's Interix rather than the generic POSIX subsystem?
+ # Should we change UNAME_MACHINE based on the output of uname instead
+ # of the specific Alpha model?
+ echo alpha-pc-interix
+ exit ;;
+ 21064:Windows_NT:50:3)
+ echo alpha-dec-winnt3.5
+ exit ;;
+ Amiga*:UNIX_System_V:4.0:*)
+ echo m68k-unknown-sysv4
+ exit ;;
+ *:[Aa]miga[Oo][Ss]:*:*)
+ echo ${UNAME_MACHINE}-unknown-amigaos
+ exit ;;
+ *:[Mm]orph[Oo][Ss]:*:*)
+ echo ${UNAME_MACHINE}-unknown-morphos
+ exit ;;
+ *:OS/390:*:*)
+ echo i370-ibm-openedition
+ exit ;;
+ *:z/VM:*:*)
+ echo s390-ibm-zvmoe
+ exit ;;
+ *:OS400:*:*)
+ echo powerpc-ibm-os400
+ exit ;;
+ arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*)
+ echo arm-acorn-riscix${UNAME_RELEASE}
+ exit ;;
+ arm*:riscos:*:*|arm*:RISCOS:*:*)
+ echo arm-unknown-riscos
+ exit ;;
+ SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*)
+ echo hppa1.1-hitachi-hiuxmpp
+ exit ;;
+ Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*)
+ # akee at wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE.
+ if test "`(/bin/universe) 2>/dev/null`" = att ; then
+ echo pyramid-pyramid-sysv3
+ else
+ echo pyramid-pyramid-bsd
+ fi
+ exit ;;
+ NILE*:*:*:dcosx)
+ echo pyramid-pyramid-svr4
+ exit ;;
+ DRS?6000:unix:4.0:6*)
+ echo sparc-icl-nx6
+ exit ;;
+ DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*)
+ case `/usr/bin/uname -p` in
+ sparc) echo sparc-icl-nx7; exit ;;
+ esac ;;
+ s390x:SunOS:*:*)
+ echo ${UNAME_MACHINE}-ibm-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+ exit ;;
+ sun4H:SunOS:5.*:*)
+ echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+ exit ;;
+ sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*)
+ echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+ exit ;;
+ i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*)
+ echo i386-pc-auroraux${UNAME_RELEASE}
+ exit ;;
+ i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*)
+ eval $set_cc_for_build
+ SUN_ARCH="i386"
+ # If there is a compiler, see if it is configured for 64-bit objects.
+ # Note that the Sun cc does not turn __LP64__ into 1 like gcc does.
+ # This test works for both compilers.
+ if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then
+ if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \
+ (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \
+ grep IS_64BIT_ARCH >/dev/null
+ then
+ SUN_ARCH="x86_64"
+ fi
+ fi
+ echo ${SUN_ARCH}-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+ exit ;;
+ sun4*:SunOS:6*:*)
+ # According to config.sub, this is the proper way to canonicalize
+ # SunOS6. Hard to guess exactly what SunOS6 will be like, but
+ # it's likely to be more like Solaris than SunOS4.
+ echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+ exit ;;
+ sun4*:SunOS:*:*)
+ case "`/usr/bin/arch -k`" in
+ Series*|S4*)
+ UNAME_RELEASE=`uname -v`
+ ;;
+ esac
+ # Japanese Language versions have a version number like `4.1.3-JL'.
+ echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'`
+ exit ;;
+ sun3*:SunOS:*:*)
+ echo m68k-sun-sunos${UNAME_RELEASE}
+ exit ;;
+ sun*:*:4.2BSD:*)
+ UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null`
+ test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3
+ case "`/bin/arch`" in
+ sun3)
+ echo m68k-sun-sunos${UNAME_RELEASE}
+ ;;
+ sun4)
+ echo sparc-sun-sunos${UNAME_RELEASE}
+ ;;
+ esac
+ exit ;;
+ aushp:SunOS:*:*)
+ echo sparc-auspex-sunos${UNAME_RELEASE}
+ exit ;;
+ # The situation for MiNT is a little confusing. The machine name
+ # can be virtually everything (everything which is not
+ # "atarist" or "atariste" at least should have a processor
+ # > m68000). The system name ranges from "MiNT" over "FreeMiNT"
+ # to the lowercase version "mint" (or "freemint"). Finally
+ # the system name "TOS" denotes a system which is actually not
+ # MiNT. But MiNT is downward compatible to TOS, so this should
+ # be no problem.
+ atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*)
+ echo m68k-atari-mint${UNAME_RELEASE}
+ exit ;;
+ atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*)
+ echo m68k-atari-mint${UNAME_RELEASE}
+ exit ;;
+ *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*)
+ echo m68k-atari-mint${UNAME_RELEASE}
+ exit ;;
+ milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*)
+ echo m68k-milan-mint${UNAME_RELEASE}
+ exit ;;
+ hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*)
+ echo m68k-hades-mint${UNAME_RELEASE}
+ exit ;;
+ *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*)
+ echo m68k-unknown-mint${UNAME_RELEASE}
+ exit ;;
+ m68k:machten:*:*)
+ echo m68k-apple-machten${UNAME_RELEASE}
+ exit ;;
+ powerpc:machten:*:*)
+ echo powerpc-apple-machten${UNAME_RELEASE}
+ exit ;;
+ RISC*:Mach:*:*)
+ echo mips-dec-mach_bsd4.3
+ exit ;;
+ RISC*:ULTRIX:*:*)
+ echo mips-dec-ultrix${UNAME_RELEASE}
+ exit ;;
+ VAX*:ULTRIX*:*:*)
+ echo vax-dec-ultrix${UNAME_RELEASE}
+ exit ;;
+ 2020:CLIX:*:* | 2430:CLIX:*:*)
+ echo clipper-intergraph-clix${UNAME_RELEASE}
+ exit ;;
+ mips:*:*:UMIPS | mips:*:*:RISCos)
+ eval $set_cc_for_build
+ sed 's/^ //' << EOF >$dummy.c
+#ifdef __cplusplus
+#include <stdio.h> /* for printf() prototype */
+ int main (int argc, char *argv[]) {
+#else
+ int main (argc, argv) int argc; char *argv[]; {
+#endif
+ #if defined (host_mips) && defined (MIPSEB)
+ #if defined (SYSTYPE_SYSV)
+ printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0);
+ #endif
+ #if defined (SYSTYPE_SVR4)
+ printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0);
+ #endif
+ #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD)
+ printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0);
+ #endif
+ #endif
+ exit (-1);
+ }
+EOF
+ $CC_FOR_BUILD -o $dummy $dummy.c &&
+ dummyarg=`echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` &&
+ SYSTEM_NAME=`$dummy $dummyarg` &&
+ { echo "$SYSTEM_NAME"; exit; }
+ echo mips-mips-riscos${UNAME_RELEASE}
+ exit ;;
+ Motorola:PowerMAX_OS:*:*)
+ echo powerpc-motorola-powermax
+ exit ;;
+ Motorola:*:4.3:PL8-*)
+ echo powerpc-harris-powermax
+ exit ;;
+ Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*)
+ echo powerpc-harris-powermax
+ exit ;;
+ Night_Hawk:Power_UNIX:*:*)
+ echo powerpc-harris-powerunix
+ exit ;;
+ m88k:CX/UX:7*:*)
+ echo m88k-harris-cxux7
+ exit ;;
+ m88k:*:4*:R4*)
+ echo m88k-motorola-sysv4
+ exit ;;
+ m88k:*:3*:R3*)
+ echo m88k-motorola-sysv3
+ exit ;;
+ AViiON:dgux:*:*)
+ # DG/UX returns AViiON for all architectures
+ UNAME_PROCESSOR=`/usr/bin/uname -p`
+ if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ]
+ then
+ if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \
+ [ ${TARGET_BINARY_INTERFACE}x = x ]
+ then
+ echo m88k-dg-dgux${UNAME_RELEASE}
+ else
+ echo m88k-dg-dguxbcs${UNAME_RELEASE}
+ fi
+ else
+ echo i586-dg-dgux${UNAME_RELEASE}
+ fi
+ exit ;;
+ M88*:DolphinOS:*:*) # DolphinOS (SVR3)
+ echo m88k-dolphin-sysv3
+ exit ;;
+ M88*:*:R3*:*)
+ # Delta 88k system running SVR3
+ echo m88k-motorola-sysv3
+ exit ;;
+ XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3)
+ echo m88k-tektronix-sysv3
+ exit ;;
+ Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD)
+ echo m68k-tektronix-bsd
+ exit ;;
+ *:IRIX*:*:*)
+ echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'`
+ exit ;;
+ ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX.
+ echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id
+ exit ;; # Note that: echo "'`uname -s`'" gives 'AIX '
+ i*86:AIX:*:*)
+ echo i386-ibm-aix
+ exit ;;
+ ia64:AIX:*:*)
+ if [ -x /usr/bin/oslevel ] ; then
+ IBM_REV=`/usr/bin/oslevel`
+ else
+ IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}
+ fi
+ echo ${UNAME_MACHINE}-ibm-aix${IBM_REV}
+ exit ;;
+ *:AIX:2:3)
+ if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then
+ eval $set_cc_for_build
+ sed 's/^ //' << EOF >$dummy.c
+ #include <sys/systemcfg.h>
+
+ main()
+ {
+ if (!__power_pc())
+ exit(1);
+ puts("powerpc-ibm-aix3.2.5");
+ exit(0);
+ }
+EOF
+ if $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy`
+ then
+ echo "$SYSTEM_NAME"
+ else
+ echo rs6000-ibm-aix3.2.5
+ fi
+ elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then
+ echo rs6000-ibm-aix3.2.4
+ else
+ echo rs6000-ibm-aix3.2
+ fi
+ exit ;;
+ *:AIX:*:[4567])
+ IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'`
+ if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then
+ IBM_ARCH=rs6000
+ else
+ IBM_ARCH=powerpc
+ fi
+ if [ -x /usr/bin/oslevel ] ; then
+ IBM_REV=`/usr/bin/oslevel`
+ else
+ IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}
+ fi
+ echo ${IBM_ARCH}-ibm-aix${IBM_REV}
+ exit ;;
+ *:AIX:*:*)
+ echo rs6000-ibm-aix
+ exit ;;
+ ibmrt:4.4BSD:*|romp-ibm:BSD:*)
+ echo romp-ibm-bsd4.4
+ exit ;;
+ ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and
+ echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to
+ exit ;; # report: romp-ibm BSD 4.3
+ *:BOSX:*:*)
+ echo rs6000-bull-bosx
+ exit ;;
+ DPX/2?00:B.O.S.:*:*)
+ echo m68k-bull-sysv3
+ exit ;;
+ 9000/[34]??:4.3bsd:1.*:*)
+ echo m68k-hp-bsd
+ exit ;;
+ hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*)
+ echo m68k-hp-bsd4.4
+ exit ;;
+ 9000/[34678]??:HP-UX:*:*)
+ HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
+ case "${UNAME_MACHINE}" in
+ 9000/31? ) HP_ARCH=m68000 ;;
+ 9000/[34]?? ) HP_ARCH=m68k ;;
+ 9000/[678][0-9][0-9])
+ if [ -x /usr/bin/getconf ]; then
+ sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null`
+ sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null`
+ case "${sc_cpu_version}" in
+ 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0
+ 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1
+ 532) # CPU_PA_RISC2_0
+ case "${sc_kernel_bits}" in
+ 32) HP_ARCH="hppa2.0n" ;;
+ 64) HP_ARCH="hppa2.0w" ;;
+ '') HP_ARCH="hppa2.0" ;; # HP-UX 10.20
+ esac ;;
+ esac
+ fi
+ if [ "${HP_ARCH}" = "" ]; then
+ eval $set_cc_for_build
+ sed 's/^ //' << EOF >$dummy.c
+
+ #define _HPUX_SOURCE
+ #include <stdlib.h>
+ #include <unistd.h>
+
+ int main ()
+ {
+ #if defined(_SC_KERNEL_BITS)
+ long bits = sysconf(_SC_KERNEL_BITS);
+ #endif
+ long cpu = sysconf (_SC_CPU_VERSION);
+
+ switch (cpu)
+ {
+ case CPU_PA_RISC1_0: puts ("hppa1.0"); break;
+ case CPU_PA_RISC1_1: puts ("hppa1.1"); break;
+ case CPU_PA_RISC2_0:
+ #if defined(_SC_KERNEL_BITS)
+ switch (bits)
+ {
+ case 64: puts ("hppa2.0w"); break;
+ case 32: puts ("hppa2.0n"); break;
+ default: puts ("hppa2.0"); break;
+ } break;
+ #else /* !defined(_SC_KERNEL_BITS) */
+ puts ("hppa2.0"); break;
+ #endif
+ default: puts ("hppa1.0"); break;
+ }
+ exit (0);
+ }
+EOF
+ (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy`
+ test -z "$HP_ARCH" && HP_ARCH=hppa
+ fi ;;
+ esac
+ if [ ${HP_ARCH} = "hppa2.0w" ]
+ then
+ eval $set_cc_for_build
+
+ # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating
+ # 32-bit code. hppa64-hp-hpux* has the same kernel and a compiler
+ # generating 64-bit code. GNU and HP use different nomenclature:
+ #
+ # $ CC_FOR_BUILD=cc ./config.guess
+ # => hppa2.0w-hp-hpux11.23
+ # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess
+ # => hppa64-hp-hpux11.23
+
+ if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) |
+ grep -q __LP64__
+ then
+ HP_ARCH="hppa2.0w"
+ else
+ HP_ARCH="hppa64"
+ fi
+ fi
+ echo ${HP_ARCH}-hp-hpux${HPUX_REV}
+ exit ;;
+ ia64:HP-UX:*:*)
+ HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
+ echo ia64-hp-hpux${HPUX_REV}
+ exit ;;
+ 3050*:HI-UX:*:*)
+ eval $set_cc_for_build
+ sed 's/^ //' << EOF >$dummy.c
+ #include <unistd.h>
+ int
+ main ()
+ {
+ long cpu = sysconf (_SC_CPU_VERSION);
+ /* The order matters, because CPU_IS_HP_MC68K erroneously returns
+ true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct
+ results, however. */
+ if (CPU_IS_PA_RISC (cpu))
+ {
+ switch (cpu)
+ {
+ case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break;
+ case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break;
+ case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break;
+ default: puts ("hppa-hitachi-hiuxwe2"); break;
+ }
+ }
+ else if (CPU_IS_HP_MC68K (cpu))
+ puts ("m68k-hitachi-hiuxwe2");
+ else puts ("unknown-hitachi-hiuxwe2");
+ exit (0);
+ }
+EOF
+ $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` &&
+ { echo "$SYSTEM_NAME"; exit; }
+ echo unknown-hitachi-hiuxwe2
+ exit ;;
+ 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* )
+ echo hppa1.1-hp-bsd
+ exit ;;
+ 9000/8??:4.3bsd:*:*)
+ echo hppa1.0-hp-bsd
+ exit ;;
+ *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*)
+ echo hppa1.0-hp-mpeix
+ exit ;;
+ hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* )
+ echo hppa1.1-hp-osf
+ exit ;;
+ hp8??:OSF1:*:*)
+ echo hppa1.0-hp-osf
+ exit ;;
+ i*86:OSF1:*:*)
+ if [ -x /usr/sbin/sysversion ] ; then
+ echo ${UNAME_MACHINE}-unknown-osf1mk
+ else
+ echo ${UNAME_MACHINE}-unknown-osf1
+ fi
+ exit ;;
+ parisc*:Lites*:*:*)
+ echo hppa1.1-hp-lites
+ exit ;;
+ C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*)
+ echo c1-convex-bsd
+ exit ;;
+ C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*)
+ if getsysinfo -f scalar_acc
+ then echo c32-convex-bsd
+ else echo c2-convex-bsd
+ fi
+ exit ;;
+ C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*)
+ echo c34-convex-bsd
+ exit ;;
+ C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*)
+ echo c38-convex-bsd
+ exit ;;
+ C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*)
+ echo c4-convex-bsd
+ exit ;;
+ CRAY*Y-MP:*:*:*)
+ echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+ exit ;;
+ CRAY*[A-Z]90:*:*:*)
+ echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \
+ | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \
+ -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \
+ -e 's/\.[^.]*$/.X/'
+ exit ;;
+ CRAY*TS:*:*:*)
+ echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+ exit ;;
+ CRAY*T3E:*:*:*)
+ echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+ exit ;;
+ CRAY*SV1:*:*:*)
+ echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+ exit ;;
+ *:UNICOS/mp:*:*)
+ echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+ exit ;;
+ F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*)
+ FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
+ FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'`
+ echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
+ exit ;;
+ 5000:UNIX_System_V:4.*:*)
+ FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
+ FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'`
+ echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
+ exit ;;
+ i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*)
+ echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE}
+ exit ;;
+ sparc*:BSD/OS:*:*)
+ echo sparc-unknown-bsdi${UNAME_RELEASE}
+ exit ;;
+ *:BSD/OS:*:*)
+ echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE}
+ exit ;;
+ *:FreeBSD:*:*)
+ UNAME_PROCESSOR=`/usr/bin/uname -p`
+ case ${UNAME_PROCESSOR} in
+ amd64)
+ echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
+ *)
+ echo ${UNAME_PROCESSOR}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
+ esac
+ exit ;;
+ i*:CYGWIN*:*)
+ echo ${UNAME_MACHINE}-pc-cygwin
+ exit ;;
+ *:MINGW64*:*)
+ echo ${UNAME_MACHINE}-pc-mingw64
+ exit ;;
+ *:MINGW*:*)
+ echo ${UNAME_MACHINE}-pc-mingw32
+ exit ;;
+ i*:MSYS*:*)
+ echo ${UNAME_MACHINE}-pc-msys
+ exit ;;
+ i*:windows32*:*)
+ # uname -m includes "-pc" on this system.
+ echo ${UNAME_MACHINE}-mingw32
+ exit ;;
+ i*:PW*:*)
+ echo ${UNAME_MACHINE}-pc-pw32
+ exit ;;
+ *:Interix*:*)
+ case ${UNAME_MACHINE} in
+ x86)
+ echo i586-pc-interix${UNAME_RELEASE}
+ exit ;;
+ authenticamd | genuineintel | EM64T)
+ echo x86_64-unknown-interix${UNAME_RELEASE}
+ exit ;;
+ IA64)
+ echo ia64-unknown-interix${UNAME_RELEASE}
+ exit ;;
+ esac ;;
+ [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*)
+ echo i${UNAME_MACHINE}-pc-mks
+ exit ;;
+ 8664:Windows_NT:*)
+ echo x86_64-pc-mks
+ exit ;;
+ i*:Windows_NT*:* | Pentium*:Windows_NT*:*)
+ # How do we know it's Interix rather than the generic POSIX subsystem?
+ # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we
+ # UNAME_MACHINE based on the output of uname instead of i386?
+ echo i586-pc-interix
+ exit ;;
+ i*:UWIN*:*)
+ echo ${UNAME_MACHINE}-pc-uwin
+ exit ;;
+ amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*)
+ echo x86_64-unknown-cygwin
+ exit ;;
+ p*:CYGWIN*:*)
+ echo powerpcle-unknown-cygwin
+ exit ;;
+ prep*:SunOS:5.*:*)
+ echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+ exit ;;
+ *:GNU:*:*)
+ # the GNU system
+ echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-${LIBC}`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'`
+ exit ;;
+ *:GNU/*:*:*)
+ # other systems with GNU libc and userland
+ echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-${LIBC}
+ exit ;;
+ i*86:Minix:*:*)
+ echo ${UNAME_MACHINE}-pc-minix
+ exit ;;
+ aarch64:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+ exit ;;
+ aarch64_be:Linux:*:*)
+ UNAME_MACHINE=aarch64_be
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+ exit ;;
+ alpha:Linux:*:*)
+ case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in
+ EV5) UNAME_MACHINE=alphaev5 ;;
+ EV56) UNAME_MACHINE=alphaev56 ;;
+ PCA56) UNAME_MACHINE=alphapca56 ;;
+ PCA57) UNAME_MACHINE=alphapca56 ;;
+ EV6) UNAME_MACHINE=alphaev6 ;;
+ EV67) UNAME_MACHINE=alphaev67 ;;
+ EV68*) UNAME_MACHINE=alphaev68 ;;
+ esac
+ objdump --private-headers /bin/sh | grep -q ld.so.1
+ if test "$?" = 0 ; then LIBC="gnulibc1" ; fi
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+ exit ;;
+ arc:Linux:*:* | arceb:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+ exit ;;
+ arm*:Linux:*:*)
+ eval $set_cc_for_build
+ if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \
+ | grep -q __ARM_EABI__
+ then
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+ else
+ if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \
+ | grep -q __ARM_PCS_VFP
+ then
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabi
+ else
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabihf
+ fi
+ fi
+ exit ;;
+ avr32*:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+ exit ;;
+ cris:Linux:*:*)
+ echo ${UNAME_MACHINE}-axis-linux-${LIBC}
+ exit ;;
+ crisv32:Linux:*:*)
+ echo ${UNAME_MACHINE}-axis-linux-${LIBC}
+ exit ;;
+ frv:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+ exit ;;
+ hexagon:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+ exit ;;
+ i*86:Linux:*:*)
+ echo ${UNAME_MACHINE}-pc-linux-${LIBC}
+ exit ;;
+ ia64:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+ exit ;;
+ m32r*:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+ exit ;;
+ m68*:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+ exit ;;
+ mips:Linux:*:* | mips64:Linux:*:*)
+ eval $set_cc_for_build
+ sed 's/^ //' << EOF >$dummy.c
+ #undef CPU
+ #undef ${UNAME_MACHINE}
+ #undef ${UNAME_MACHINE}el
+ #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL)
+ CPU=${UNAME_MACHINE}el
+ #else
+ #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB)
+ CPU=${UNAME_MACHINE}
+ #else
+ CPU=
+ #endif
+ #endif
+EOF
+ eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'`
+ test x"${CPU}" != x && { echo "${CPU}-unknown-linux-${LIBC}"; exit; }
+ ;;
+ or1k:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+ exit ;;
+ or32:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+ exit ;;
+ padre:Linux:*:*)
+ echo sparc-unknown-linux-${LIBC}
+ exit ;;
+ parisc64:Linux:*:* | hppa64:Linux:*:*)
+ echo hppa64-unknown-linux-${LIBC}
+ exit ;;
+ parisc:Linux:*:* | hppa:Linux:*:*)
+ # Look for CPU level
+ case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in
+ PA7*) echo hppa1.1-unknown-linux-${LIBC} ;;
+ PA8*) echo hppa2.0-unknown-linux-${LIBC} ;;
+ *) echo hppa-unknown-linux-${LIBC} ;;
+ esac
+ exit ;;
+ ppc64:Linux:*:*)
+ echo powerpc64-unknown-linux-${LIBC}
+ exit ;;
+ ppc:Linux:*:*)
+ echo powerpc-unknown-linux-${LIBC}
+ exit ;;
+ ppc64le:Linux:*:*)
+ echo powerpc64le-unknown-linux-${LIBC}
+ exit ;;
+ ppcle:Linux:*:*)
+ echo powerpcle-unknown-linux-${LIBC}
+ exit ;;
+ s390:Linux:*:* | s390x:Linux:*:*)
+ echo ${UNAME_MACHINE}-ibm-linux-${LIBC}
+ exit ;;
+ sh64*:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+ exit ;;
+ sh*:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+ exit ;;
+ sparc:Linux:*:* | sparc64:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+ exit ;;
+ tile*:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+ exit ;;
+ vax:Linux:*:*)
+ echo ${UNAME_MACHINE}-dec-linux-${LIBC}
+ exit ;;
+ x86_64:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+ exit ;;
+ xtensa*:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+ exit ;;
+ i*86:DYNIX/ptx:4*:*)
+ # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there.
+ # earlier versions are messed up and put the nodename in both
+ # sysname and nodename.
+ echo i386-sequent-sysv4
+ exit ;;
+ i*86:UNIX_SV:4.2MP:2.*)
+ # Unixware is an offshoot of SVR4, but it has its own version
+ # number series starting with 2...
+ # I am not positive that other SVR4 systems won't match this,
+ # I just have to hope. -- rms.
+ # Use sysv4.2uw... so that sysv4* matches it.
+ echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION}
+ exit ;;
+ i*86:OS/2:*:*)
+ # If we were able to find `uname', then EMX Unix compatibility
+ # is probably installed.
+ echo ${UNAME_MACHINE}-pc-os2-emx
+ exit ;;
+ i*86:XTS-300:*:STOP)
+ echo ${UNAME_MACHINE}-unknown-stop
+ exit ;;
+ i*86:atheos:*:*)
+ echo ${UNAME_MACHINE}-unknown-atheos
+ exit ;;
+ i*86:syllable:*:*)
+ echo ${UNAME_MACHINE}-pc-syllable
+ exit ;;
+ i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*)
+ echo i386-unknown-lynxos${UNAME_RELEASE}
+ exit ;;
+ i*86:*DOS:*:*)
+ echo ${UNAME_MACHINE}-pc-msdosdjgpp
+ exit ;;
+ i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*)
+ UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'`
+ if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then
+ echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL}
+ else
+ echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL}
+ fi
+ exit ;;
+ i*86:*:5:[678]*)
+ # UnixWare 7.x, OpenUNIX and OpenServer 6.
+ case `/bin/uname -X | grep "^Machine"` in
+ *486*) UNAME_MACHINE=i486 ;;
+ *Pentium) UNAME_MACHINE=i586 ;;
+ *Pent*|*Celeron) UNAME_MACHINE=i686 ;;
+ esac
+ echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION}
+ exit ;;
+ i*86:*:3.2:*)
+ if test -f /usr/options/cb.name; then
+ UNAME_REL=`sed -n 's/.*Version //p' </usr/options/cb.name`
+ echo ${UNAME_MACHINE}-pc-isc$UNAME_REL
+ elif /bin/uname -X 2>/dev/null >/dev/null ; then
+ UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')`
+ (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486
+ (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \
+ && UNAME_MACHINE=i586
+ (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \
+ && UNAME_MACHINE=i686
+ (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \
+ && UNAME_MACHINE=i686
+ echo ${UNAME_MACHINE}-pc-sco$UNAME_REL
+ else
+ echo ${UNAME_MACHINE}-pc-sysv32
+ fi
+ exit ;;
+ pc:*:*:*)
+ # Left here for compatibility:
+ # uname -m prints for DJGPP always 'pc', but it prints nothing about
+ # the processor, so we play safe by assuming i586.
+ # Note: whatever this is, it MUST be the same as what config.sub
+ # prints for the "djgpp" host, or else GDB configury will decide that
+ # this is a cross-build.
+ echo i586-pc-msdosdjgpp
+ exit ;;
+ Intel:Mach:3*:*)
+ echo i386-pc-mach3
+ exit ;;
+ paragon:*:*:*)
+ echo i860-intel-osf1
+ exit ;;
+ i860:*:4.*:*) # i860-SVR4
+ if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then
+ echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4
+ else # Add other i860-SVR4 vendors below as they are discovered.
+ echo i860-unknown-sysv${UNAME_RELEASE} # Unknown i860-SVR4
+ fi
+ exit ;;
+ mini*:CTIX:SYS*5:*)
+ # "miniframe"
+ echo m68010-convergent-sysv
+ exit ;;
+ mc68k:UNIX:SYSTEM5:3.51m)
+ echo m68k-convergent-sysv
+ exit ;;
+ M680?0:D-NIX:5.3:*)
+ echo m68k-diab-dnix
+ exit ;;
+ M68*:*:R3V[5678]*:*)
+ test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;;
+ 3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0)
+ OS_REL=''
+ test -r /etc/.relid \
+ && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`
+ /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
+ && { echo i486-ncr-sysv4.3${OS_REL}; exit; }
+ /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
+ && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;;
+ 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*)
+ /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
+ && { echo i486-ncr-sysv4; exit; } ;;
+ NCR*:*:4.2:* | MPRAS*:*:4.2:*)
+ OS_REL='.3'
+ test -r /etc/.relid \
+ && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`
+ /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
+ && { echo i486-ncr-sysv4.3${OS_REL}; exit; }
+ /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
+ && { echo i586-ncr-sysv4.3${OS_REL}; exit; }
+ /bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \
+ && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;;
+ m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*)
+ echo m68k-unknown-lynxos${UNAME_RELEASE}
+ exit ;;
+ mc68030:UNIX_System_V:4.*:*)
+ echo m68k-atari-sysv4
+ exit ;;
+ TSUNAMI:LynxOS:2.*:*)
+ echo sparc-unknown-lynxos${UNAME_RELEASE}
+ exit ;;
+ rs6000:LynxOS:2.*:*)
+ echo rs6000-unknown-lynxos${UNAME_RELEASE}
+ exit ;;
+ PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*)
+ echo powerpc-unknown-lynxos${UNAME_RELEASE}
+ exit ;;
+ SM[BE]S:UNIX_SV:*:*)
+ echo mips-dde-sysv${UNAME_RELEASE}
+ exit ;;
+ RM*:ReliantUNIX-*:*:*)
+ echo mips-sni-sysv4
+ exit ;;
+ RM*:SINIX-*:*:*)
+ echo mips-sni-sysv4
+ exit ;;
+ *:SINIX-*:*:*)
+ if uname -p 2>/dev/null >/dev/null ; then
+ UNAME_MACHINE=`(uname -p) 2>/dev/null`
+ echo ${UNAME_MACHINE}-sni-sysv4
+ else
+ echo ns32k-sni-sysv
+ fi
+ exit ;;
+ PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort
+ # says <Richard.M.Bartel at ccMail.Census.GOV>
+ echo i586-unisys-sysv4
+ exit ;;
+ *:UNIX_System_V:4*:FTX*)
+ # From Gerald Hewes <hewes at openmarket.com>.
+ # How about differentiating between stratus architectures? -djm
+ echo hppa1.1-stratus-sysv4
+ exit ;;
+ *:*:*:FTX*)
+ # From seanf at swdc.stratus.com.
+ echo i860-stratus-sysv4
+ exit ;;
+ i*86:VOS:*:*)
+ # From Paul.Green at stratus.com.
+ echo ${UNAME_MACHINE}-stratus-vos
+ exit ;;
+ *:VOS:*:*)
+ # From Paul.Green at stratus.com.
+ echo hppa1.1-stratus-vos
+ exit ;;
+ mc68*:A/UX:*:*)
+ echo m68k-apple-aux${UNAME_RELEASE}
+ exit ;;
+ news*:NEWS-OS:6*:*)
+ echo mips-sony-newsos6
+ exit ;;
+ R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*)
+ if [ -d /usr/nec ]; then
+ echo mips-nec-sysv${UNAME_RELEASE}
+ else
+ echo mips-unknown-sysv${UNAME_RELEASE}
+ fi
+ exit ;;
+ BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only.
+ echo powerpc-be-beos
+ exit ;;
+ BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only.
+ echo powerpc-apple-beos
+ exit ;;
+ BePC:BeOS:*:*) # BeOS running on Intel PC compatible.
+ echo i586-pc-beos
+ exit ;;
+ BePC:Haiku:*:*) # Haiku running on Intel PC compatible.
+ echo i586-pc-haiku
+ exit ;;
+ x86_64:Haiku:*:*)
+ echo x86_64-unknown-haiku
+ exit ;;
+ SX-4:SUPER-UX:*:*)
+ echo sx4-nec-superux${UNAME_RELEASE}
+ exit ;;
+ SX-5:SUPER-UX:*:*)
+ echo sx5-nec-superux${UNAME_RELEASE}
+ exit ;;
+ SX-6:SUPER-UX:*:*)
+ echo sx6-nec-superux${UNAME_RELEASE}
+ exit ;;
+ SX-7:SUPER-UX:*:*)
+ echo sx7-nec-superux${UNAME_RELEASE}
+ exit ;;
+ SX-8:SUPER-UX:*:*)
+ echo sx8-nec-superux${UNAME_RELEASE}
+ exit ;;
+ SX-8R:SUPER-UX:*:*)
+ echo sx8r-nec-superux${UNAME_RELEASE}
+ exit ;;
+ Power*:Rhapsody:*:*)
+ echo powerpc-apple-rhapsody${UNAME_RELEASE}
+ exit ;;
+ *:Rhapsody:*:*)
+ echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE}
+ exit ;;
+ *:Darwin:*:*)
+ UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown
+ eval $set_cc_for_build
+ if test "$UNAME_PROCESSOR" = unknown ; then
+ UNAME_PROCESSOR=powerpc
+ fi
+ if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then
+ if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \
+ (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \
+ grep IS_64BIT_ARCH >/dev/null
+ then
+ case $UNAME_PROCESSOR in
+ i386) UNAME_PROCESSOR=x86_64 ;;
+ powerpc) UNAME_PROCESSOR=powerpc64 ;;
+ esac
+ fi
+ fi
+ echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE}
+ exit ;;
+ *:procnto*:*:* | *:QNX:[0123456789]*:*)
+ UNAME_PROCESSOR=`uname -p`
+ if test "$UNAME_PROCESSOR" = "x86"; then
+ UNAME_PROCESSOR=i386
+ UNAME_MACHINE=pc
+ fi
+ echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE}
+ exit ;;
+ *:QNX:*:4*)
+ echo i386-pc-qnx
+ exit ;;
+ NEO-?:NONSTOP_KERNEL:*:*)
+ echo neo-tandem-nsk${UNAME_RELEASE}
+ exit ;;
+ NSE-*:NONSTOP_KERNEL:*:*)
+ echo nse-tandem-nsk${UNAME_RELEASE}
+ exit ;;
+ NSR-?:NONSTOP_KERNEL:*:*)
+ echo nsr-tandem-nsk${UNAME_RELEASE}
+ exit ;;
+ *:NonStop-UX:*:*)
+ echo mips-compaq-nonstopux
+ exit ;;
+ BS2000:POSIX*:*:*)
+ echo bs2000-siemens-sysv
+ exit ;;
+ DS/*:UNIX_System_V:*:*)
+ echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE}
+ exit ;;
+ *:Plan9:*:*)
+ # "uname -m" is not consistent, so use $cputype instead. 386
+ # is converted to i386 for consistency with other x86
+ # operating systems.
+ if test "$cputype" = "386"; then
+ UNAME_MACHINE=i386
+ else
+ UNAME_MACHINE="$cputype"
+ fi
+ echo ${UNAME_MACHINE}-unknown-plan9
+ exit ;;
+ *:TOPS-10:*:*)
+ echo pdp10-unknown-tops10
+ exit ;;
+ *:TENEX:*:*)
+ echo pdp10-unknown-tenex
+ exit ;;
+ KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*)
+ echo pdp10-dec-tops20
+ exit ;;
+ XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*)
+ echo pdp10-xkl-tops20
+ exit ;;
+ *:TOPS-20:*:*)
+ echo pdp10-unknown-tops20
+ exit ;;
+ *:ITS:*:*)
+ echo pdp10-unknown-its
+ exit ;;
+ SEI:*:*:SEIUX)
+ echo mips-sei-seiux${UNAME_RELEASE}
+ exit ;;
+ *:DragonFly:*:*)
+ echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`
+ exit ;;
+ *:*VMS:*:*)
+ UNAME_MACHINE=`(uname -p) 2>/dev/null`
+ case "${UNAME_MACHINE}" in
+ A*) echo alpha-dec-vms ; exit ;;
+ I*) echo ia64-dec-vms ; exit ;;
+ V*) echo vax-dec-vms ; exit ;;
+ esac ;;
+ *:XENIX:*:SysV)
+ echo i386-pc-xenix
+ exit ;;
+ i*86:skyos:*:*)
+ echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE}` | sed -e 's/ .*$//'
+ exit ;;
+ i*86:rdos:*:*)
+ echo ${UNAME_MACHINE}-pc-rdos
+ exit ;;
+ i*86:AROS:*:*)
+ echo ${UNAME_MACHINE}-pc-aros
+ exit ;;
+ x86_64:VMkernel:*:*)
+ echo ${UNAME_MACHINE}-unknown-esx
+ exit ;;
+esac
+
+eval $set_cc_for_build
+cat >$dummy.c <<EOF
+#ifdef _SEQUENT_
+# include <sys/types.h>
+# include <sys/utsname.h>
+#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 <sys/param.h>
+ printf ("m68k-sony-newsos%s\n",
+#ifdef NEWSOS4
+ "4"
+#else
+ ""
+#endif
+ ); exit (0);
+#endif
+#endif
+
+#if defined (__arm) && defined (__acorn) && defined (__unix)
+ printf ("arm-acorn-riscix\n"); exit (0);
+#endif
+
+#if defined (hp300) && !defined (hpux)
+ printf ("m68k-hp-bsd\n"); exit (0);
+#endif
+
+#if defined (NeXT)
+#if !defined (__ARCHITECTURE__)
+#define __ARCHITECTURE__ "m68k"
+#endif
+ int version;
+ version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`;
+ if (version < 4)
+ printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version);
+ else
+ printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version);
+ exit (0);
+#endif
+
+#if defined (MULTIMAX) || defined (n16)
+#if defined (UMAXV)
+ printf ("ns32k-encore-sysv\n"); exit (0);
+#else
+#if defined (CMU)
+ printf ("ns32k-encore-mach\n"); exit (0);
+#else
+ printf ("ns32k-encore-bsd\n"); exit (0);
+#endif
+#endif
+#endif
+
+#if defined (__386BSD__)
+ printf ("i386-pc-bsd\n"); exit (0);
+#endif
+
+#if defined (sequent)
+#if defined (i386)
+ printf ("i386-sequent-dynix\n"); exit (0);
+#endif
+#if defined (ns32000)
+ printf ("ns32k-sequent-dynix\n"); exit (0);
+#endif
+#endif
+
+#if defined (_SEQUENT_)
+ struct utsname un;
+
+ uname(&un);
+
+ if (strncmp(un.version, "V2", 2) == 0) {
+ printf ("i386-sequent-ptx2\n"); exit (0);
+ }
+ if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */
+ printf ("i386-sequent-ptx1\n"); exit (0);
+ }
+ printf ("i386-sequent-ptx\n"); exit (0);
+
+#endif
+
+#if defined (vax)
+# if !defined (ultrix)
+# include <sys/param.h>
+# if defined (BSD)
+# if BSD == 43
+ printf ("vax-dec-bsd4.3\n"); exit (0);
+# else
+# if BSD == 199006
+ printf ("vax-dec-bsd4.3reno\n"); exit (0);
+# else
+ printf ("vax-dec-bsd\n"); exit (0);
+# endif
+# endif
+# else
+ printf ("vax-dec-bsd\n"); exit (0);
+# endif
+# else
+ printf ("vax-dec-ultrix\n"); exit (0);
+# endif
+#endif
+
+#if defined (alliant) && defined (i860)
+ printf ("i860-alliant-bsd\n"); exit (0);
+#endif
+
+ exit (1);
+}
+EOF
+
+$CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && SYSTEM_NAME=`$dummy` &&
+ { echo "$SYSTEM_NAME"; exit; }
+
+# Apollos put the system type in the environment.
+
+test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit; }
+
+# Convex versions that predate uname can use getsysinfo(1)
+
+if [ -x /usr/convex/getsysinfo ]
+then
+ case `getsysinfo -f cpu_type` in
+ c1*)
+ echo c1-convex-bsd
+ exit ;;
+ c2*)
+ if getsysinfo -f scalar_acc
+ then echo c32-convex-bsd
+ else echo c2-convex-bsd
+ fi
+ exit ;;
+ c34*)
+ echo c34-convex-bsd
+ exit ;;
+ c38*)
+ echo c38-convex-bsd
+ exit ;;
+ c4*)
+ echo c4-convex-bsd
+ exit ;;
+ esac
+fi
+
+cat >&2 <<EOF
+$0: unable to guess system type
+
+This script, last modified $timestamp, has failed to recognize
+the operating system you are using. It is advised that you
+download the most up to date version of the config scripts from
+
+ http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD
+and
+ http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD
+
+If the version you run ($0) is already up to date, please
+send the following data and any information you think might be
+pertinent to <config-patches at gnu.org> 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/config.h.in b/config.h.in
new file mode 100644
index 0000000..90c6db4
--- /dev/null
+++ b/config.h.in
@@ -0,0 +1,248 @@
+/* config.h.in. Generated from configure.ac by autoheader. */
+
+/* Define to 1 if you have the `atexit' function. */
+#undef HAVE_ATEXIT
+
+/* Support AVX (Advanced Vector Extensions) instructions */
+#undef HAVE_AVX
+
+/* Define to 1 if you have the `clock_gettime' function. */
+#undef HAVE_CLOCK_GETTIME
+
+/* Define to 1 if you have the <dlfcn.h> header file. */
+#undef HAVE_DLFCN_H
+
+/* Define to 1 if you have the <emmintrin.h> header file. */
+#undef HAVE_EMMINTRIN_H
+
+/* Define to 1 if you have the <fcntl.h> header file. */
+#undef HAVE_FCNTL_H
+
+/* Define to 1 if you have the <float.h> header file. */
+#undef HAVE_FLOAT_H
+
+/* Define to 1 if you have the `getcwd' function. */
+#undef HAVE_GETCWD
+
+/* Define to 1 if you have the `getpagesize' function. */
+#undef HAVE_GETPAGESIZE
+
+/* Define to 1 if you have the `gettimeofday' function. */
+#undef HAVE_GETTIMEOFDAY
+
+/* Define to 1 if you have the <immintrin.h> header file. */
+#undef HAVE_IMMINTRIN_H
+
+/* Define to 1 if you have the <inttypes.h> header file. */
+#undef HAVE_INTTYPES_H
+
+/* Define to 1 if you have the `m' library (-lm). */
+#undef HAVE_LIBM
+
+/* Define to 1 if you have the <limits.h> header file. */
+#undef HAVE_LIMITS_H
+
+/* Define to 1 if your system has a GNU libc compatible `malloc' function, and
+ to 0 otherwise. */
+#undef HAVE_MALLOC
+
+/* Define to 1 if you have the <malloc.h> header file. */
+#undef HAVE_MALLOC_H
+
+/* Define to 1 if you have the `memmove' function. */
+#undef HAVE_MEMMOVE
+
+/* Define to 1 if you have the <memory.h> header file. */
+#undef HAVE_MEMORY_H
+
+/* Define to 1 if you have the `memset' function. */
+#undef HAVE_MEMSET
+
+/* Define to 1 if you have a working `mmap' system call. */
+#undef HAVE_MMAP
+
+/* Define to 1 if you have the <mmintrin.h> header file. */
+#undef HAVE_MMINTRIN_H
+
+/* Support MMX instructions */
+#undef HAVE_MMX
+
+/* Define to 1 if you have the `munmap' function. */
+#undef HAVE_MUNMAP
+
+/* Define to 1 if you have the <pmmintrin.h> header file. */
+#undef HAVE_PMMINTRIN_H
+
+/* Define to 1 if you have the `pow' function. */
+#undef HAVE_POW
+
+/* Define to 1 if you have the <pthread.h> header file. */
+#undef HAVE_PTHREAD_H
+
+/* Define to 1 if the system has the type `ptrdiff_t'. */
+#undef HAVE_PTRDIFF_T
+
+/* Define to 1 if your system has a GNU libc compatible `realloc' function,
+ and to 0 otherwise. */
+#undef HAVE_REALLOC
+
+/* Define to 1 if you have the <smmintrin.h> header file. */
+#undef HAVE_SMMINTRIN_H
+
+/* Define to 1 if you have the `sqrt' function. */
+#undef HAVE_SQRT
+
+/* Support SSE (Streaming SIMD Extensions) instructions */
+#undef HAVE_SSE
+
+/* Support SSE2 (Streaming SIMD Extensions 2) instructions */
+#undef HAVE_SSE2
+
+/* Support SSE3 (Streaming SIMD Extensions 3) instructions */
+#undef HAVE_SSE3
+
+/* Support SSE4.1 (Streaming SIMD Extensions 4.1) instructions */
+#undef HAVE_SSE41
+
+/* Support SSE4.2 (Streaming SIMD Extensions 4.2) instructions */
+#undef HAVE_SSE42
+
+/* Support SSSE3 (Supplemental Streaming SIMD Extensions 3) instructions */
+#undef HAVE_SSSE3
+
+/* Define to 1 if stdbool.h conforms to C99. */
+#undef HAVE_STDBOOL_H
+
+/* Define to 1 if you have the <stddef.h> header file. */
+#undef HAVE_STDDEF_H
+
+/* Define to 1 if you have the <stdint.h> header file. */
+#undef HAVE_STDINT_H
+
+/* Define to 1 if you have the <stdlib.h> header file. */
+#undef HAVE_STDLIB_H
+
+/* Define to 1 if you have the `strcasecmp' function. */
+#undef HAVE_STRCASECMP
+
+/* Define to 1 if you have the `strchr' function. */
+#undef HAVE_STRCHR
+
+/* Define to 1 if you have the `strdup' function. */
+#undef HAVE_STRDUP
+
+/* Define to 1 if you have the <strings.h> header file. */
+#undef HAVE_STRINGS_H
+
+/* Define to 1 if you have the <string.h> header file. */
+#undef HAVE_STRING_H
+
+/* Define to 1 if you have the `strndup' function. */
+#undef HAVE_STRNDUP
+
+/* Define to 1 if you have the `strstr' function. */
+#undef HAVE_STRSTR
+
+/* Define to 1 if you have the <sys/param.h> header file. */
+#undef HAVE_SYS_PARAM_H
+
+/* Define to 1 if you have the <sys/stat.h> header file. */
+#undef HAVE_SYS_STAT_H
+
+/* Define to 1 if you have the <sys/time.h> header file. */
+#undef HAVE_SYS_TIME_H
+
+/* Define to 1 if you have the <sys/types.h> header file. */
+#undef HAVE_SYS_TYPES_H
+
+/* Define to 1 if you have the <tmmintrin.h> header file. */
+#undef HAVE_TMMINTRIN_H
+
+/* Define to 1 if you have the <unistd.h> header file. */
+#undef HAVE_UNISTD_H
+
+/* Define to 1 if you have the <xmmintrin.h> header file. */
+#undef HAVE_XMMINTRIN_H
+
+/* Define to 1 if the system has the type `_Bool'. */
+#undef HAVE__BOOL
+
+/* Define to the sub-directory in which libtool stores uninstalled libraries.
+ */
+#undef LT_OBJDIR
+
+/* 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 home page for this package. */
+#undef PACKAGE_URL
+
+/* Define to the version of this package. */
+#undef PACKAGE_VERSION
+
+/* Define to 1 if you have the ANSI C header files. */
+#undef STDC_HEADERS
+
+/* Version number of package */
+#undef VERSION
+
+/* Define for Solaris 2.5.1 so the uint32_t typedef from <sys/synch.h>,
+ <pthread.h>, or <semaphore.h> is not used. If the typedef were allowed, the
+ #define below would cause a syntax error. */
+#undef _UINT32_T
+
+/* Define for Solaris 2.5.1 so the uint64_t typedef from <sys/synch.h>,
+ <pthread.h>, or <semaphore.h> is not used. If the typedef were allowed, the
+ #define below would cause a syntax error. */
+#undef _UINT64_T
+
+/* Define for Solaris 2.5.1 so the uint8_t typedef from <sys/synch.h>,
+ <pthread.h>, or <semaphore.h> is not used. If the typedef were allowed, the
+ #define below would cause a syntax error. */
+#undef _UINT8_T
+
+/* Define to `__inline__' or `__inline' if that's what the C compiler
+ calls it, or to nothing if 'inline' is not supported under any name. */
+#ifndef __cplusplus
+#undef inline
+#endif
+
+/* Define to the type of a signed integer type of width exactly 64 bits if
+ such a type exists and the standard includes do not define it. */
+#undef int64_t
+
+/* Define to rpl_malloc if the replacement function should be used. */
+#undef malloc
+
+/* Define to rpl_realloc if the replacement function should be used. */
+#undef realloc
+
+/* Define to `unsigned int' if <sys/types.h> does not define. */
+#undef size_t
+
+/* Define to `int' if <sys/types.h> does not define. */
+#undef ssize_t
+
+/* Define to the type of an unsigned integer type of width exactly 32 bits if
+ such a type exists and the standard includes do not define it. */
+#undef uint32_t
+
+/* Define to the type of an unsigned integer type of width exactly 64 bits if
+ such a type exists and the standard includes do not define it. */
+#undef uint64_t
+
+/* Define to the type of an unsigned integer type of width exactly 8 bits if
+ such a type exists and the standard includes do not define it. */
+#undef uint8_t
diff --git a/config.sub b/config.sub
new file mode 100755
index 0000000..9633db7
--- /dev/null
+++ b/config.sub
@@ -0,0 +1,1791 @@
+#! /bin/sh
+# Configuration validation subroutine script.
+# Copyright 1992-2013 Free Software Foundation, Inc.
+
+timestamp='2013-08-10'
+
+# 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 3 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, see <http://www.gnu.org/licenses/>.
+#
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that
+# program. This Exception is an additional permission under section 7
+# of the GNU General Public License, version 3 ("GPLv3").
+
+
+# Please send patches with a ChangeLog entry to config-patches at gnu.org.
+#
+# 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.
+
+# You can get the latest version of this script from:
+# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD
+
+# 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 <config-patches at gnu.org>."
+
+version="\
+GNU config.sub ($timestamp)
+
+Copyright 1992-2013 Free Software Foundation, Inc.
+
+This is free software; see the source for copying conditions. There is NO
+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
+
+help="
+Try \`$me --help' for more information."
+
+# Parse command line
+while test $# -gt 0 ; do
+ case $1 in
+ --time-stamp | --time* | -t )
+ echo "$timestamp" ; exit ;;
+ --version | -v )
+ echo "$version" ; exit ;;
+ --help | --h* | -h )
+ echo "$usage"; exit ;;
+ -- ) # Stop option processing
+ shift; break ;;
+ - ) # Use stdin as input.
+ break ;;
+ -* )
+ echo "$me: invalid option $1$help"
+ exit 1 ;;
+
+ *local*)
+ # First pass through any local machine types.
+ echo $1
+ exit ;;
+
+ * )
+ break ;;
+ esac
+done
+
+case $# in
+ 0) echo "$me: missing argument$help" >&2
+ exit 1;;
+ 1) ;;
+ *) echo "$me: too many arguments$help" >&2
+ exit 1;;
+esac
+
+# Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any).
+# Here we must recognize all the valid KERNEL-OS combinations.
+maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'`
+case $maybe_os in
+ nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc | linux-newlib* | \
+ linux-musl* | linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \
+ knetbsd*-gnu* | netbsd*-gnu* | \
+ kopensolaris*-gnu* | \
+ storm-chaos* | os2-emx* | rtmk-nova*)
+ os=-$maybe_os
+ basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`
+ ;;
+ android-linux)
+ os=-linux-android
+ basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`-unknown
+ ;;
+ *)
+ basic_machine=`echo $1 | sed 's/-[^-]*$//'`
+ if [ $basic_machine != $1 ]
+ then os=`echo $1 | sed 's/.*-/-/'`
+ else os=; fi
+ ;;
+esac
+
+### Let's recognize common machines as not being operating systems so
+### that things like config.sub decstation-3100 work. We also
+### recognize some manufacturers as not being operating systems, so we
+### can provide default operating systems below.
+case $os in
+ -sun*os*)
+ # Prevent following clause from handling this invalid input.
+ ;;
+ -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \
+ -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \
+ -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \
+ -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\
+ -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \
+ -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \
+ -apple | -axis | -knuth | -cray | -microblaze*)
+ os=
+ basic_machine=$1
+ ;;
+ -bluegene*)
+ os=-cnk
+ ;;
+ -sim | -cisco | -oki | -wec | -winbond)
+ os=
+ basic_machine=$1
+ ;;
+ -scout)
+ ;;
+ -wrs)
+ os=-vxworks
+ basic_machine=$1
+ ;;
+ -chorusos*)
+ os=-chorusos
+ basic_machine=$1
+ ;;
+ -chorusrdb)
+ os=-chorusrdb
+ basic_machine=$1
+ ;;
+ -hiux*)
+ os=-hiuxwe2
+ ;;
+ -sco6)
+ os=-sco5v6
+ basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+ ;;
+ -sco5)
+ os=-sco3.2v5
+ basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+ ;;
+ -sco4)
+ os=-sco3.2v4
+ basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+ ;;
+ -sco3.2.[4-9]*)
+ os=`echo $os | sed -e 's/sco3.2./sco3.2v/'`
+ basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+ ;;
+ -sco3.2v[4-9]*)
+ # Don't forget version if it is 3.2v4 or newer.
+ basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+ ;;
+ -sco5v6*)
+ # Don't forget version if it is 3.2v4 or newer.
+ basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+ ;;
+ -sco*)
+ os=-sco3.2v2
+ basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+ ;;
+ -udk*)
+ basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+ ;;
+ -isc)
+ os=-isc2.2
+ basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+ ;;
+ -clix*)
+ basic_machine=clipper-intergraph
+ ;;
+ -isc*)
+ basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+ ;;
+ -lynx*178)
+ os=-lynxos178
+ ;;
+ -lynx*5)
+ os=-lynxos5
+ ;;
+ -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 \
+ | aarch64 | aarch64_be \
+ | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \
+ | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \
+ | am33_2.0 \
+ | arc | arceb \
+ | arm | arm[bl]e | arme[lb] | armv[2-8] | armv[3-8][lb] | armv7[arm] \
+ | avr | avr32 \
+ | be32 | be64 \
+ | bfin \
+ | c4x | c8051 | clipper \
+ | d10v | d30v | dlx | dsp16xx \
+ | epiphany \
+ | fido | fr30 | frv \
+ | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
+ | hexagon \
+ | i370 | i860 | i960 | ia64 \
+ | ip2k | iq2000 \
+ | le32 | le64 \
+ | lm32 \
+ | m32c | m32r | m32rle | m68000 | m68k | m88k \
+ | maxq | mb | microblaze | microblazeel | mcore | mep | metag \
+ | mips | mipsbe | mipseb | mipsel | mipsle \
+ | mips16 \
+ | mips64 | mips64el \
+ | mips64octeon | mips64octeonel \
+ | mips64orion | mips64orionel \
+ | mips64r5900 | mips64r5900el \
+ | mips64vr | mips64vrel \
+ | mips64vr4100 | mips64vr4100el \
+ | mips64vr4300 | mips64vr4300el \
+ | mips64vr5000 | mips64vr5000el \
+ | mips64vr5900 | mips64vr5900el \
+ | mipsisa32 | mipsisa32el \
+ | mipsisa32r2 | mipsisa32r2el \
+ | mipsisa64 | mipsisa64el \
+ | mipsisa64r2 | mipsisa64r2el \
+ | mipsisa64sb1 | mipsisa64sb1el \
+ | mipsisa64sr71k | mipsisa64sr71kel \
+ | mipsr5900 | mipsr5900el \
+ | mipstx39 | mipstx39el \
+ | mn10200 | mn10300 \
+ | moxie \
+ | mt \
+ | msp430 \
+ | nds32 | nds32le | nds32be \
+ | nios | nios2 | nios2eb | nios2el \
+ | ns16k | ns32k \
+ | open8 \
+ | or1k | or32 \
+ | pdp10 | pdp11 | pj | pjl \
+ | powerpc | powerpc64 | powerpc64le | powerpcle \
+ | pyramid \
+ | rl78 | rx \
+ | score \
+ | sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \
+ | sh64 | sh64le \
+ | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \
+ | sparcv8 | sparcv9 | sparcv9b | sparcv9v \
+ | spu \
+ | tahoe | tic4x | tic54x | tic55x | tic6x | tic80 | tron \
+ | ubicom32 \
+ | v850 | v850e | v850e1 | v850e2 | v850es | v850e2v3 \
+ | we32k \
+ | x86 | xc16x | xstormy16 | xtensa \
+ | z8k | z80)
+ basic_machine=$basic_machine-unknown
+ ;;
+ c54x)
+ basic_machine=tic54x-unknown
+ ;;
+ c55x)
+ basic_machine=tic55x-unknown
+ ;;
+ c6x)
+ basic_machine=tic6x-unknown
+ ;;
+ m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | picochip)
+ basic_machine=$basic_machine-unknown
+ os=-none
+ ;;
+ m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k)
+ ;;
+ ms1)
+ basic_machine=mt-unknown
+ ;;
+
+ strongarm | thumb | xscale)
+ basic_machine=arm-unknown
+ ;;
+ xgate)
+ basic_machine=$basic_machine-unknown
+ os=-none
+ ;;
+ xscaleeb)
+ basic_machine=armeb-unknown
+ ;;
+
+ xscaleel)
+ basic_machine=armel-unknown
+ ;;
+
+ # We use `pc' rather than `unknown'
+ # because (1) that's what they normally are, and
+ # (2) the word "unknown" tends to confuse beginning users.
+ i*86 | x86_64)
+ basic_machine=$basic_machine-pc
+ ;;
+ # Object if more than one company name word.
+ *-*-*)
+ echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2
+ exit 1
+ ;;
+ # Recognize the basic CPU types with company name.
+ 580-* \
+ | a29k-* \
+ | aarch64-* | aarch64_be-* \
+ | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \
+ | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \
+ | alphapca5[67]-* | alpha64pca5[67]-* | arc-* | arceb-* \
+ | arm-* | armbe-* | armle-* | armeb-* | armv*-* \
+ | avr-* | avr32-* \
+ | be32-* | be64-* \
+ | bfin-* | bs2000-* \
+ | c[123]* | c30-* | [cjt]90-* | c4x-* \
+ | c8051-* | clipper-* | craynv-* | cydra-* \
+ | d10v-* | d30v-* | dlx-* \
+ | elxsi-* \
+ | f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \
+ | h8300-* | h8500-* \
+ | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \
+ | hexagon-* \
+ | i*86-* | i860-* | i960-* | ia64-* \
+ | ip2k-* | iq2000-* \
+ | le32-* | le64-* \
+ | lm32-* \
+ | m32c-* | m32r-* | m32rle-* \
+ | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \
+ | m88110-* | m88k-* | maxq-* | mcore-* | metag-* \
+ | microblaze-* | microblazeel-* \
+ | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \
+ | mips16-* \
+ | mips64-* | mips64el-* \
+ | mips64octeon-* | mips64octeonel-* \
+ | mips64orion-* | mips64orionel-* \
+ | mips64r5900-* | mips64r5900el-* \
+ | mips64vr-* | mips64vrel-* \
+ | mips64vr4100-* | mips64vr4100el-* \
+ | mips64vr4300-* | mips64vr4300el-* \
+ | mips64vr5000-* | mips64vr5000el-* \
+ | mips64vr5900-* | mips64vr5900el-* \
+ | mipsisa32-* | mipsisa32el-* \
+ | mipsisa32r2-* | mipsisa32r2el-* \
+ | mipsisa64-* | mipsisa64el-* \
+ | mipsisa64r2-* | mipsisa64r2el-* \
+ | mipsisa64sb1-* | mipsisa64sb1el-* \
+ | mipsisa64sr71k-* | mipsisa64sr71kel-* \
+ | mipsr5900-* | mipsr5900el-* \
+ | mipstx39-* | mipstx39el-* \
+ | mmix-* \
+ | mt-* \
+ | msp430-* \
+ | nds32-* | nds32le-* | nds32be-* \
+ | nios-* | nios2-* | nios2eb-* | nios2el-* \
+ | none-* | np1-* | ns16k-* | ns32k-* \
+ | open8-* \
+ | orion-* \
+ | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \
+ | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* \
+ | pyramid-* \
+ | rl78-* | romp-* | rs6000-* | rx-* \
+ | sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \
+ | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \
+ | sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \
+ | sparclite-* \
+ | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | sv1-* | sx?-* \
+ | tahoe-* \
+ | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \
+ | tile*-* \
+ | tron-* \
+ | ubicom32-* \
+ | v850-* | v850e-* | v850e1-* | v850es-* | v850e2-* | v850e2v3-* \
+ | vax-* \
+ | we32k-* \
+ | x86-* | x86_64-* | xc16x-* | xps100-* \
+ | xstormy16-* | xtensa*-* \
+ | ymp-* \
+ | z8k-* | z80-*)
+ ;;
+ # Recognize the basic CPU types without company name, with glob match.
+ xtensa*)
+ basic_machine=$basic_machine-unknown
+ ;;
+ # Recognize the various machine names and aliases which stand
+ # for a CPU type and a company and sometimes even an OS.
+ 386bsd)
+ basic_machine=i386-unknown
+ os=-bsd
+ ;;
+ 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc)
+ basic_machine=m68000-att
+ ;;
+ 3b*)
+ basic_machine=we32k-att
+ ;;
+ a29khif)
+ basic_machine=a29k-amd
+ os=-udi
+ ;;
+ abacus)
+ basic_machine=abacus-unknown
+ ;;
+ adobe68k)
+ basic_machine=m68010-adobe
+ os=-scout
+ ;;
+ alliant | fx80)
+ basic_machine=fx80-alliant
+ ;;
+ altos | altos3068)
+ basic_machine=m68k-altos
+ ;;
+ am29k)
+ basic_machine=a29k-none
+ os=-bsd
+ ;;
+ amd64)
+ basic_machine=x86_64-pc
+ ;;
+ amd64-*)
+ basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'`
+ ;;
+ amdahl)
+ basic_machine=580-amdahl
+ os=-sysv
+ ;;
+ amiga | amiga-*)
+ basic_machine=m68k-unknown
+ ;;
+ amigaos | amigados)
+ basic_machine=m68k-unknown
+ os=-amigaos
+ ;;
+ amigaunix | amix)
+ basic_machine=m68k-unknown
+ os=-sysv4
+ ;;
+ apollo68)
+ basic_machine=m68k-apollo
+ os=-sysv
+ ;;
+ apollo68bsd)
+ basic_machine=m68k-apollo
+ os=-bsd
+ ;;
+ aros)
+ basic_machine=i386-pc
+ os=-aros
+ ;;
+ aux)
+ basic_machine=m68k-apple
+ os=-aux
+ ;;
+ balance)
+ basic_machine=ns32k-sequent
+ os=-dynix
+ ;;
+ blackfin)
+ basic_machine=bfin-unknown
+ os=-linux
+ ;;
+ blackfin-*)
+ basic_machine=bfin-`echo $basic_machine | sed 's/^[^-]*-//'`
+ os=-linux
+ ;;
+ bluegene*)
+ basic_machine=powerpc-ibm
+ os=-cnk
+ ;;
+ c54x-*)
+ basic_machine=tic54x-`echo $basic_machine | sed 's/^[^-]*-//'`
+ ;;
+ c55x-*)
+ basic_machine=tic55x-`echo $basic_machine | sed 's/^[^-]*-//'`
+ ;;
+ c6x-*)
+ basic_machine=tic6x-`echo $basic_machine | sed 's/^[^-]*-//'`
+ ;;
+ c90)
+ basic_machine=c90-cray
+ os=-unicos
+ ;;
+ cegcc)
+ basic_machine=arm-unknown
+ os=-cegcc
+ ;;
+ convex-c1)
+ basic_machine=c1-convex
+ os=-bsd
+ ;;
+ convex-c2)
+ basic_machine=c2-convex
+ os=-bsd
+ ;;
+ convex-c32)
+ basic_machine=c32-convex
+ os=-bsd
+ ;;
+ convex-c34)
+ basic_machine=c34-convex
+ os=-bsd
+ ;;
+ convex-c38)
+ basic_machine=c38-convex
+ os=-bsd
+ ;;
+ cray | j90)
+ basic_machine=j90-cray
+ os=-unicos
+ ;;
+ craynv)
+ basic_machine=craynv-cray
+ os=-unicosmp
+ ;;
+ cr16 | cr16-*)
+ basic_machine=cr16-unknown
+ os=-elf
+ ;;
+ crds | unos)
+ basic_machine=m68k-crds
+ ;;
+ crisv32 | crisv32-* | etraxfs*)
+ basic_machine=crisv32-axis
+ ;;
+ cris | cris-* | etrax*)
+ basic_machine=cris-axis
+ ;;
+ crx)
+ basic_machine=crx-unknown
+ os=-elf
+ ;;
+ da30 | da30-*)
+ basic_machine=m68k-da30
+ ;;
+ decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn)
+ basic_machine=mips-dec
+ ;;
+ decsystem10* | dec10*)
+ basic_machine=pdp10-dec
+ os=-tops10
+ ;;
+ decsystem20* | dec20*)
+ basic_machine=pdp10-dec
+ os=-tops20
+ ;;
+ delta | 3300 | motorola-3300 | motorola-delta \
+ | 3300-motorola | delta-motorola)
+ basic_machine=m68k-motorola
+ ;;
+ delta88)
+ basic_machine=m88k-motorola
+ os=-sysv3
+ ;;
+ dicos)
+ basic_machine=i686-pc
+ os=-dicos
+ ;;
+ djgpp)
+ basic_machine=i586-pc
+ os=-msdosdjgpp
+ ;;
+ dpx20 | dpx20-*)
+ basic_machine=rs6000-bull
+ os=-bosx
+ ;;
+ dpx2* | dpx2*-bull)
+ basic_machine=m68k-bull
+ os=-sysv3
+ ;;
+ ebmon29k)
+ basic_machine=a29k-amd
+ os=-ebmon
+ ;;
+ elxsi)
+ basic_machine=elxsi-elxsi
+ os=-bsd
+ ;;
+ encore | umax | mmax)
+ basic_machine=ns32k-encore
+ ;;
+ es1800 | OSE68k | ose68k | ose | OSE)
+ basic_machine=m68k-ericsson
+ os=-ose
+ ;;
+ fx2800)
+ basic_machine=i860-alliant
+ ;;
+ genix)
+ basic_machine=ns32k-ns
+ ;;
+ gmicro)
+ basic_machine=tron-gmicro
+ os=-sysv
+ ;;
+ go32)
+ basic_machine=i386-pc
+ os=-go32
+ ;;
+ h3050r* | hiux*)
+ basic_machine=hppa1.1-hitachi
+ os=-hiuxwe2
+ ;;
+ h8300hms)
+ basic_machine=h8300-hitachi
+ os=-hms
+ ;;
+ h8300xray)
+ basic_machine=h8300-hitachi
+ os=-xray
+ ;;
+ h8500hms)
+ basic_machine=h8500-hitachi
+ os=-hms
+ ;;
+ harris)
+ basic_machine=m88k-harris
+ os=-sysv3
+ ;;
+ hp300-*)
+ basic_machine=m68k-hp
+ ;;
+ hp300bsd)
+ basic_machine=m68k-hp
+ os=-bsd
+ ;;
+ hp300hpux)
+ basic_machine=m68k-hp
+ os=-hpux
+ ;;
+ hp3k9[0-9][0-9] | hp9[0-9][0-9])
+ basic_machine=hppa1.0-hp
+ ;;
+ hp9k2[0-9][0-9] | hp9k31[0-9])
+ basic_machine=m68000-hp
+ ;;
+ hp9k3[2-9][0-9])
+ basic_machine=m68k-hp
+ ;;
+ hp9k6[0-9][0-9] | hp6[0-9][0-9])
+ basic_machine=hppa1.0-hp
+ ;;
+ hp9k7[0-79][0-9] | hp7[0-79][0-9])
+ basic_machine=hppa1.1-hp
+ ;;
+ hp9k78[0-9] | hp78[0-9])
+ # FIXME: really hppa2.0-hp
+ basic_machine=hppa1.1-hp
+ ;;
+ hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893)
+ # FIXME: really hppa2.0-hp
+ basic_machine=hppa1.1-hp
+ ;;
+ hp9k8[0-9][13679] | hp8[0-9][13679])
+ basic_machine=hppa1.1-hp
+ ;;
+ hp9k8[0-9][0-9] | hp8[0-9][0-9])
+ basic_machine=hppa1.0-hp
+ ;;
+ hppa-next)
+ os=-nextstep3
+ ;;
+ hppaosf)
+ basic_machine=hppa1.1-hp
+ os=-osf
+ ;;
+ hppro)
+ basic_machine=hppa1.1-hp
+ os=-proelf
+ ;;
+ i370-ibm* | ibm*)
+ basic_machine=i370-ibm
+ ;;
+ i*86v32)
+ basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
+ os=-sysv32
+ ;;
+ i*86v4*)
+ basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
+ os=-sysv4
+ ;;
+ i*86v)
+ basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
+ os=-sysv
+ ;;
+ i*86sol2)
+ basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
+ os=-solaris2
+ ;;
+ i386mach)
+ basic_machine=i386-mach
+ os=-mach
+ ;;
+ i386-vsta | vsta)
+ basic_machine=i386-unknown
+ os=-vsta
+ ;;
+ iris | iris4d)
+ basic_machine=mips-sgi
+ case $os in
+ -irix*)
+ ;;
+ *)
+ os=-irix4
+ ;;
+ esac
+ ;;
+ isi68 | isi)
+ basic_machine=m68k-isi
+ os=-sysv
+ ;;
+ m68knommu)
+ basic_machine=m68k-unknown
+ os=-linux
+ ;;
+ m68knommu-*)
+ basic_machine=m68k-`echo $basic_machine | sed 's/^[^-]*-//'`
+ os=-linux
+ ;;
+ m88k-omron*)
+ basic_machine=m88k-omron
+ ;;
+ magnum | m3230)
+ basic_machine=mips-mips
+ os=-sysv
+ ;;
+ merlin)
+ basic_machine=ns32k-utek
+ os=-sysv
+ ;;
+ microblaze*)
+ basic_machine=microblaze-xilinx
+ ;;
+ mingw64)
+ basic_machine=x86_64-pc
+ os=-mingw64
+ ;;
+ mingw32)
+ basic_machine=i686-pc
+ os=-mingw32
+ ;;
+ mingw32ce)
+ basic_machine=arm-unknown
+ os=-mingw32ce
+ ;;
+ miniframe)
+ basic_machine=m68000-convergent
+ ;;
+ *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*)
+ basic_machine=m68k-atari
+ os=-mint
+ ;;
+ mips3*-*)
+ basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`
+ ;;
+ mips3*)
+ basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown
+ ;;
+ monitor)
+ basic_machine=m68k-rom68k
+ os=-coff
+ ;;
+ morphos)
+ basic_machine=powerpc-unknown
+ os=-morphos
+ ;;
+ msdos)
+ basic_machine=i386-pc
+ os=-msdos
+ ;;
+ ms1-*)
+ basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'`
+ ;;
+ msys)
+ basic_machine=i686-pc
+ os=-msys
+ ;;
+ mvs)
+ basic_machine=i370-ibm
+ os=-mvs
+ ;;
+ nacl)
+ basic_machine=le32-unknown
+ os=-nacl
+ ;;
+ 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
+ ;;
+ neo-tandem)
+ basic_machine=neo-tandem
+ ;;
+ nse-tandem)
+ basic_machine=nse-tandem
+ ;;
+ nsr-tandem)
+ basic_machine=nsr-tandem
+ ;;
+ op50n-* | op60c-*)
+ basic_machine=hppa1.1-oki
+ os=-proelf
+ ;;
+ openrisc | openrisc-*)
+ basic_machine=or32-unknown
+ ;;
+ os400)
+ basic_machine=powerpc-ibm
+ os=-os400
+ ;;
+ OSE68000 | ose68000)
+ basic_machine=m68000-ericsson
+ os=-ose
+ ;;
+ os68k)
+ basic_machine=m68k-none
+ os=-os68k
+ ;;
+ pa-hitachi)
+ basic_machine=hppa1.1-hitachi
+ os=-hiuxwe2
+ ;;
+ paragon)
+ basic_machine=i860-intel
+ os=-osf
+ ;;
+ parisc)
+ basic_machine=hppa-unknown
+ os=-linux
+ ;;
+ parisc-*)
+ basic_machine=hppa-`echo $basic_machine | sed 's/^[^-]*-//'`
+ os=-linux
+ ;;
+ pbd)
+ basic_machine=sparc-tti
+ ;;
+ pbb)
+ basic_machine=m68k-tti
+ ;;
+ pc532 | pc532-*)
+ basic_machine=ns32k-pc532
+ ;;
+ pc98)
+ basic_machine=i386-pc
+ ;;
+ pc98-*)
+ basic_machine=i386-`echo $basic_machine | sed 's/^[^-]*-//'`
+ ;;
+ pentium | p5 | k5 | k6 | nexgen | viac3)
+ basic_machine=i586-pc
+ ;;
+ pentiumpro | p6 | 6x86 | athlon | athlon_*)
+ basic_machine=i686-pc
+ ;;
+ pentiumii | pentium2 | pentiumiii | pentium3)
+ basic_machine=i686-pc
+ ;;
+ pentium4)
+ basic_machine=i786-pc
+ ;;
+ pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*)
+ basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'`
+ ;;
+ pentiumpro-* | p6-* | 6x86-* | athlon-*)
+ basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`
+ ;;
+ pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*)
+ basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`
+ ;;
+ pentium4-*)
+ basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'`
+ ;;
+ pn)
+ basic_machine=pn-gould
+ ;;
+ power) basic_machine=power-ibm
+ ;;
+ ppc | ppcbe) basic_machine=powerpc-unknown
+ ;;
+ ppc-* | ppcbe-*)
+ basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'`
+ ;;
+ ppcle | powerpclittle | ppc-le | powerpc-little)
+ basic_machine=powerpcle-unknown
+ ;;
+ ppcle-* | powerpclittle-*)
+ basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'`
+ ;;
+ ppc64) basic_machine=powerpc64-unknown
+ ;;
+ ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'`
+ ;;
+ ppc64le | powerpc64little | ppc64-le | powerpc64-little)
+ basic_machine=powerpc64le-unknown
+ ;;
+ ppc64le-* | powerpc64little-*)
+ basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'`
+ ;;
+ ps2)
+ basic_machine=i386-ibm
+ ;;
+ pw32)
+ basic_machine=i586-unknown
+ os=-pw32
+ ;;
+ rdos | rdos64)
+ basic_machine=x86_64-pc
+ os=-rdos
+ ;;
+ rdos32)
+ basic_machine=i386-pc
+ os=-rdos
+ ;;
+ rom68k)
+ basic_machine=m68k-rom68k
+ os=-coff
+ ;;
+ rm[46]00)
+ basic_machine=mips-siemens
+ ;;
+ rtpc | rtpc-*)
+ basic_machine=romp-ibm
+ ;;
+ s390 | s390-*)
+ basic_machine=s390-ibm
+ ;;
+ s390x | s390x-*)
+ basic_machine=s390x-ibm
+ ;;
+ sa29200)
+ basic_machine=a29k-amd
+ os=-udi
+ ;;
+ sb1)
+ basic_machine=mipsisa64sb1-unknown
+ ;;
+ sb1el)
+ basic_machine=mipsisa64sb1el-unknown
+ ;;
+ sde)
+ basic_machine=mipsisa32-sde
+ os=-elf
+ ;;
+ sei)
+ basic_machine=mips-sei
+ os=-seiux
+ ;;
+ sequent)
+ basic_machine=i386-sequent
+ ;;
+ sh)
+ basic_machine=sh-hitachi
+ os=-hms
+ ;;
+ sh5el)
+ basic_machine=sh5le-unknown
+ ;;
+ sh64)
+ basic_machine=sh64-unknown
+ ;;
+ sparclite-wrs | simso-wrs)
+ basic_machine=sparclite-wrs
+ os=-vxworks
+ ;;
+ sps7)
+ basic_machine=m68k-bull
+ os=-sysv2
+ ;;
+ spur)
+ basic_machine=spur-unknown
+ ;;
+ st2000)
+ basic_machine=m68k-tandem
+ ;;
+ stratus)
+ basic_machine=i860-stratus
+ os=-sysv4
+ ;;
+ strongarm-* | thumb-*)
+ basic_machine=arm-`echo $basic_machine | sed 's/^[^-]*-//'`
+ ;;
+ 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
+ ;;
+ tile*)
+ basic_machine=$basic_machine-unknown
+ os=-linux-gnu
+ ;;
+ tx39)
+ basic_machine=mipstx39-unknown
+ ;;
+ tx39el)
+ basic_machine=mipstx39el-unknown
+ ;;
+ toad1)
+ basic_machine=pdp10-xkl
+ os=-tops20
+ ;;
+ tower | tower-32)
+ basic_machine=m68k-ncr
+ ;;
+ tpf)
+ basic_machine=s390x-ibm
+ os=-tpf
+ ;;
+ udi29k)
+ basic_machine=a29k-amd
+ os=-udi
+ ;;
+ ultra3)
+ basic_machine=a29k-nyu
+ os=-sym1
+ ;;
+ v810 | necv810)
+ basic_machine=v810-nec
+ os=-none
+ ;;
+ vaxv)
+ basic_machine=vax-dec
+ os=-sysv
+ ;;
+ vms)
+ basic_machine=vax-dec
+ os=-vms
+ ;;
+ vpp*|vx|vx-*)
+ basic_machine=f301-fujitsu
+ ;;
+ vxworks960)
+ basic_machine=i960-wrs
+ os=-vxworks
+ ;;
+ vxworks68)
+ basic_machine=m68k-wrs
+ os=-vxworks
+ ;;
+ vxworks29k)
+ basic_machine=a29k-wrs
+ os=-vxworks
+ ;;
+ w65*)
+ basic_machine=w65-wdc
+ os=-none
+ ;;
+ w89k-*)
+ basic_machine=hppa1.1-winbond
+ os=-proelf
+ ;;
+ xbox)
+ basic_machine=i686-pc
+ os=-mingw32
+ ;;
+ xps | xps100)
+ basic_machine=xps100-honeywell
+ ;;
+ xscale-* | xscalee[bl]-*)
+ basic_machine=`echo $basic_machine | sed 's/^xscale/arm/'`
+ ;;
+ ymp)
+ basic_machine=ymp-cray
+ os=-unicos
+ ;;
+ z8k-*-coff)
+ basic_machine=z8k-unknown
+ os=-sim
+ ;;
+ z80-*-coff)
+ basic_machine=z80-unknown
+ os=-sim
+ ;;
+ none)
+ basic_machine=none-none
+ os=-none
+ ;;
+
+# Here we handle the default manufacturer of certain CPU types. It is in
+# some cases the only manufacturer, in others, it is the most popular.
+ w89k)
+ basic_machine=hppa1.1-winbond
+ ;;
+ op50n)
+ basic_machine=hppa1.1-oki
+ ;;
+ op60c)
+ basic_machine=hppa1.1-oki
+ ;;
+ romp)
+ basic_machine=romp-ibm
+ ;;
+ mmix)
+ basic_machine=mmix-knuth
+ ;;
+ rs6000)
+ basic_machine=rs6000-ibm
+ ;;
+ vax)
+ basic_machine=vax-dec
+ ;;
+ pdp10)
+ # there are many clones, so DEC is not a safe bet
+ basic_machine=pdp10-unknown
+ ;;
+ pdp11)
+ basic_machine=pdp11-dec
+ ;;
+ we32k)
+ basic_machine=we32k-att
+ ;;
+ sh[1234] | sh[24]a | sh[24]aeb | sh[34]eb | sh[1234]le | sh[23]ele)
+ basic_machine=sh-unknown
+ ;;
+ sparc | sparcv8 | sparcv9 | sparcv9b | sparcv9v)
+ basic_machine=sparc-sun
+ ;;
+ cydra)
+ basic_machine=cydra-cydrome
+ ;;
+ orion)
+ basic_machine=orion-highlevel
+ ;;
+ orion105)
+ basic_machine=clipper-highlevel
+ ;;
+ mac | mpw | mac-mpw)
+ basic_machine=m68k-apple
+ ;;
+ pmac | pmac-mpw)
+ basic_machine=powerpc-apple
+ ;;
+ *-unknown)
+ # Make sure to match an already-canonicalized machine name.
+ ;;
+ *)
+ echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2
+ exit 1
+ ;;
+esac
+
+# Here we canonicalize certain aliases for manufacturers.
+case $basic_machine in
+ *-digital*)
+ basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'`
+ ;;
+ *-commodore*)
+ basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'`
+ ;;
+ *)
+ ;;
+esac
+
+# Decode manufacturer-specific aliases for certain operating systems.
+
+if [ x"$os" != x"" ]
+then
+case $os in
+ # First match some system type aliases
+ # that might get confused with valid system types.
+ # -solaris* is a basic system type, with this one exception.
+ -auroraux)
+ os=-auroraux
+ ;;
+ -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* | -cnk* | -sunos | -sunos[34]*\
+ | -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \
+ | -sym* | -kopensolaris* | -plan9* \
+ | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \
+ | -aos* | -aros* \
+ | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \
+ | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \
+ | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \
+ | -bitrig* | -openbsd* | -solidbsd* \
+ | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \
+ | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \
+ | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \
+ | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \
+ | -chorusos* | -chorusrdb* | -cegcc* \
+ | -cygwin* | -msys* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
+ | -mingw32* | -mingw64* | -linux-gnu* | -linux-android* \
+ | -linux-newlib* | -linux-musl* | -linux-uclibc* \
+ | -uxpv* | -beos* | -mpeix* | -udk* \
+ | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \
+ | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \
+ | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \
+ | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \
+ | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \
+ | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \
+ | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es*)
+ # Remember, each alternative MUST END IN *, to match a version number.
+ ;;
+ -qnx*)
+ case $basic_machine in
+ x86-* | i*86-*)
+ ;;
+ *)
+ os=-nto$os
+ ;;
+ esac
+ ;;
+ -nto-qnx*)
+ ;;
+ -nto*)
+ os=`echo $os | sed -e 's|nto|nto-qnx|'`
+ ;;
+ -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \
+ | -windows* | -osx | -abug | -netware* | -os9* | -beos* | -haiku* \
+ | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*)
+ ;;
+ -mac*)
+ os=`echo $os | sed -e 's|mac|macos|'`
+ ;;
+ -linux-dietlibc)
+ os=-linux-dietlibc
+ ;;
+ -linux*)
+ os=`echo $os | sed -e 's|linux|linux-gnu|'`
+ ;;
+ -sunos5*)
+ os=`echo $os | sed -e 's|sunos5|solaris2|'`
+ ;;
+ -sunos6*)
+ os=`echo $os | sed -e 's|sunos6|solaris3|'`
+ ;;
+ -opened*)
+ os=-openedition
+ ;;
+ -os400*)
+ os=-os400
+ ;;
+ -wince*)
+ os=-wince
+ ;;
+ -osfrose*)
+ os=-osfrose
+ ;;
+ -osf*)
+ os=-osf
+ ;;
+ -utek*)
+ os=-bsd
+ ;;
+ -dynix*)
+ os=-bsd
+ ;;
+ -acis*)
+ os=-aos
+ ;;
+ -atheos*)
+ os=-atheos
+ ;;
+ -syllable*)
+ os=-syllable
+ ;;
+ -386bsd)
+ os=-bsd
+ ;;
+ -ctix* | -uts*)
+ os=-sysv
+ ;;
+ -nova*)
+ os=-rtmk-nova
+ ;;
+ -ns2 )
+ os=-nextstep2
+ ;;
+ -nsk*)
+ os=-nsk
+ ;;
+ # Preserve the version number of sinix5.
+ -sinix5.*)
+ os=`echo $os | sed -e 's|sinix|sysv|'`
+ ;;
+ -sinix*)
+ os=-sysv4
+ ;;
+ -tpf*)
+ os=-tpf
+ ;;
+ -triton*)
+ os=-sysv3
+ ;;
+ -oss*)
+ os=-sysv3
+ ;;
+ -svr4)
+ os=-sysv4
+ ;;
+ -svr3)
+ os=-sysv3
+ ;;
+ -sysvr4)
+ os=-sysv4
+ ;;
+ # This must come after -sysvr4.
+ -sysv*)
+ ;;
+ -ose*)
+ os=-ose
+ ;;
+ -es1800*)
+ os=-ose
+ ;;
+ -xenix)
+ os=-xenix
+ ;;
+ -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)
+ os=-mint
+ ;;
+ -aros*)
+ os=-aros
+ ;;
+ -zvmoe)
+ os=-zvmoe
+ ;;
+ -dicos*)
+ os=-dicos
+ ;;
+ -nacl*)
+ ;;
+ -none)
+ ;;
+ *)
+ # Get rid of the `-' at the beginning of $os.
+ os=`echo $os | sed 's/[^-]*-//'`
+ echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2
+ exit 1
+ ;;
+esac
+else
+
+# Here we handle the default operating systems that come with various machines.
+# The value should be what the vendor currently ships out the door with their
+# machine or put another way, the most popular os provided with the machine.
+
+# Note that if you're going to try to match "-MANUFACTURER" here (say,
+# "-sun"), then you have to tell the case statement up towards the top
+# that MANUFACTURER isn't an operating system. Otherwise, code above
+# will signal an error saying that MANUFACTURER isn't an operating
+# system, and we'll never get to this point.
+
+case $basic_machine in
+ score-*)
+ os=-elf
+ ;;
+ spu-*)
+ os=-elf
+ ;;
+ *-acorn)
+ os=-riscix1.2
+ ;;
+ arm*-rebel)
+ os=-linux
+ ;;
+ arm*-semi)
+ os=-aout
+ ;;
+ c4x-* | tic4x-*)
+ os=-coff
+ ;;
+ c8051-*)
+ os=-elf
+ ;;
+ hexagon-*)
+ os=-elf
+ ;;
+ tic54x-*)
+ os=-coff
+ ;;
+ tic55x-*)
+ os=-coff
+ ;;
+ tic6x-*)
+ 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
+ ;;
+ m68*-cisco)
+ os=-aout
+ ;;
+ mep-*)
+ os=-elf
+ ;;
+ mips*-cisco)
+ os=-elf
+ ;;
+ mips*-*)
+ os=-elf
+ ;;
+ or1k-*)
+ os=-elf
+ ;;
+ or32-*)
+ os=-coff
+ ;;
+ *-tti) # must be before sparc entry or we get the wrong os.
+ os=-sysv3
+ ;;
+ sparc-* | *-sun)
+ os=-sunos4.1.1
+ ;;
+ *-be)
+ os=-beos
+ ;;
+ *-haiku)
+ os=-haiku
+ ;;
+ *-ibm)
+ os=-aix
+ ;;
+ *-knuth)
+ os=-mmixware
+ ;;
+ *-wec)
+ os=-proelf
+ ;;
+ *-winbond)
+ os=-proelf
+ ;;
+ *-oki)
+ os=-proelf
+ ;;
+ *-hp)
+ os=-hpux
+ ;;
+ *-hitachi)
+ os=-hiux
+ ;;
+ i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent)
+ os=-sysv
+ ;;
+ *-cbm)
+ os=-amigaos
+ ;;
+ *-dg)
+ os=-dgux
+ ;;
+ *-dolphin)
+ os=-sysv3
+ ;;
+ m68k-ccur)
+ os=-rtu
+ ;;
+ m88k-omron*)
+ os=-luna
+ ;;
+ *-next )
+ os=-nextstep
+ ;;
+ *-sequent)
+ os=-ptx
+ ;;
+ *-crds)
+ os=-unos
+ ;;
+ *-ns)
+ os=-genix
+ ;;
+ i370-*)
+ os=-mvs
+ ;;
+ *-next)
+ os=-nextstep3
+ ;;
+ *-gould)
+ os=-sysv
+ ;;
+ *-highlevel)
+ os=-bsd
+ ;;
+ *-encore)
+ os=-bsd
+ ;;
+ *-sgi)
+ os=-irix
+ ;;
+ *-siemens)
+ os=-sysv4
+ ;;
+ *-masscomp)
+ os=-rtu
+ ;;
+ f30[01]-fujitsu | f700-fujitsu)
+ os=-uxpv
+ ;;
+ *-rom68k)
+ os=-coff
+ ;;
+ *-*bug)
+ os=-coff
+ ;;
+ *-apple)
+ os=-macos
+ ;;
+ *-atari*)
+ os=-mint
+ ;;
+ *)
+ os=-none
+ ;;
+esac
+fi
+
+# Here we handle the case where we know the os, and the CPU type, but not the
+# manufacturer. We pick the logical manufacturer.
+vendor=unknown
+case $basic_machine in
+ *-unknown)
+ case $os in
+ -riscix*)
+ vendor=acorn
+ ;;
+ -sunos*)
+ vendor=sun
+ ;;
+ -cnk*|-aix*)
+ vendor=ibm
+ ;;
+ -beos*)
+ vendor=be
+ ;;
+ -hpux*)
+ vendor=hp
+ ;;
+ -mpeix*)
+ vendor=hp
+ ;;
+ -hiux*)
+ vendor=hitachi
+ ;;
+ -unos*)
+ vendor=crds
+ ;;
+ -dgux*)
+ vendor=dg
+ ;;
+ -luna*)
+ vendor=omron
+ ;;
+ -genix*)
+ vendor=ns
+ ;;
+ -mvs* | -opened*)
+ vendor=ibm
+ ;;
+ -os400*)
+ vendor=ibm
+ ;;
+ -ptx*)
+ vendor=sequent
+ ;;
+ -tpf*)
+ vendor=ibm
+ ;;
+ -vxsim* | -vxworks* | -windiss*)
+ vendor=wrs
+ ;;
+ -aux*)
+ vendor=apple
+ ;;
+ -hms*)
+ vendor=hitachi
+ ;;
+ -mpw* | -macos*)
+ vendor=apple
+ ;;
+ -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)
+ vendor=atari
+ ;;
+ -vos*)
+ vendor=stratus
+ ;;
+ esac
+ basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"`
+ ;;
+esac
+
+echo $basic_machine$os
+exit
+
+# Local variables:
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "timestamp='"
+# time-stamp-format: "%:y-%02m-%02d"
+# time-stamp-end: "'"
+# End:
diff --git a/configure b/configure
new file mode 100755
index 0000000..1502a6f
--- /dev/null
+++ b/configure
@@ -0,0 +1,20260 @@
+#! /bin/sh
+# Guess values for system-dependent variables and create Makefiles.
+# Generated by GNU Autoconf 2.69 for libpll 1.0.11.
+#
+# Report bugs to <Tomas.Flouri at h-its.org>.
+#
+#
+# Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc.
+#
+#
+# This configure script is free software; the Free Software Foundation
+# gives unlimited permission to copy, distribute and modify it.
+## -------------------- ##
+## M4sh Initialization. ##
+## -------------------- ##
+
+# Be more Bourne compatible
+DUALCASE=1; export DUALCASE # for MKS sh
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then :
+ emulate sh
+ NULLCMD=:
+ # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
+ # is contrary to our usage. Disable this feature.
+ alias -g '${1+"$@"}'='"$@"'
+ setopt NO_GLOB_SUBST
+else
+ case `(set -o) 2>/dev/null` in #(
+ *posix*) :
+ set -o posix ;; #(
+ *) :
+ ;;
+esac
+fi
+
+
+as_nl='
+'
+export as_nl
+# Printing a long string crashes Solaris 7 /usr/bin/printf.
+as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo
+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo
+# Prefer a ksh shell builtin over an external printf program on Solaris,
+# but without wasting forks for bash or zsh.
+if test -z "$BASH_VERSION$ZSH_VERSION" \
+ && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then
+ as_echo='print -r --'
+ as_echo_n='print -rn --'
+elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then
+ as_echo='printf %s\n'
+ as_echo_n='printf %s'
+else
+ if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then
+ as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"'
+ as_echo_n='/usr/ucb/echo -n'
+ else
+ as_echo_body='eval expr "X$1" : "X\\(.*\\)"'
+ as_echo_n_body='eval
+ arg=$1;
+ case $arg in #(
+ *"$as_nl"*)
+ expr "X$arg" : "X\\(.*\\)$as_nl";
+ arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;
+ esac;
+ expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl"
+ '
+ export as_echo_n_body
+ as_echo_n='sh -c $as_echo_n_body as_echo'
+ fi
+ export as_echo_body
+ as_echo='sh -c $as_echo_body as_echo'
+fi
+
+# The user is always right.
+if test "${PATH_SEPARATOR+set}" != set; then
+ PATH_SEPARATOR=:
+ (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && {
+ (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 ||
+ PATH_SEPARATOR=';'
+ }
+fi
+
+
+# IFS
+# We need space, tab and new line, in precisely that order. Quoting is
+# there to prevent editors from complaining about space-tab.
+# (If _AS_PATH_WALK were called with IFS unset, it would disable word
+# splitting by setting IFS to empty value.)
+IFS=" "" $as_nl"
+
+# Find who we are. Look in the path if we contain no directory separator.
+as_myself=
+case $0 in #((
+ *[\\/]* ) as_myself=$0 ;;
+ *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+# We did not find ourselves, most probably we were run as `sh COMMAND'
+# in which case we are not to be found in the path.
+if test "x$as_myself" = x; then
+ as_myself=$0
+fi
+if test ! -f "$as_myself"; then
+ $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
+ exit 1
+fi
+
+# Unset variables that we do not need and which cause bugs (e.g. in
+# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1"
+# suppresses any "Segmentation fault" message there. '((' could
+# trigger a bug in pdksh 5.2.14.
+for as_var in BASH_ENV ENV MAIL MAILPATH
+do eval test x\${$as_var+set} = xset \
+ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || :
+done
+PS1='$ '
+PS2='> '
+PS4='+ '
+
+# NLS nuisances.
+LC_ALL=C
+export LC_ALL
+LANGUAGE=C
+export LANGUAGE
+
+# CDPATH.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+
+# Use a proper internal environment variable to ensure we don't fall
+ # into an infinite loop, continuously re-executing ourselves.
+ if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then
+ _as_can_reexec=no; export _as_can_reexec;
+ # We cannot yet assume a decent shell, so we have to provide a
+# neutralization value for shells without unset; and this also
+# works around shells that cannot unset nonexistent variables.
+# Preserve -v and -x to the replacement shell.
+BASH_ENV=/dev/null
+ENV=/dev/null
+(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV
+case $- in # ((((
+ *v*x* | *x*v* ) as_opts=-vx ;;
+ *v* ) as_opts=-v ;;
+ *x* ) as_opts=-x ;;
+ * ) as_opts= ;;
+esac
+exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"}
+# Admittedly, this is quite paranoid, since all the known shells bail
+# out after a failed `exec'.
+$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2
+as_fn_exit 255
+ fi
+ # We don't want this to propagate to other subprocesses.
+ { _as_can_reexec=; unset _as_can_reexec;}
+if test "x$CONFIG_SHELL" = x; then
+ as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then :
+ emulate sh
+ NULLCMD=:
+ # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which
+ # is contrary to our usage. Disable this feature.
+ alias -g '\${1+\"\$@\"}'='\"\$@\"'
+ setopt NO_GLOB_SUBST
+else
+ case \`(set -o) 2>/dev/null\` in #(
+ *posix*) :
+ set -o posix ;; #(
+ *) :
+ ;;
+esac
+fi
+"
+ as_required="as_fn_return () { (exit \$1); }
+as_fn_success () { as_fn_return 0; }
+as_fn_failure () { as_fn_return 1; }
+as_fn_ret_success () { return 0; }
+as_fn_ret_failure () { return 1; }
+
+exitcode=0
+as_fn_success || { exitcode=1; echo as_fn_success failed.; }
+as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; }
+as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; }
+as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; }
+if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then :
+
+else
+ exitcode=1; echo positional parameters were not saved.
+fi
+test x\$exitcode = x0 || exit 1
+test -x / || exit 1"
+ as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO
+ as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO
+ eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" &&
+ test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1
+
+ test -n \"\${ZSH_VERSION+set}\${BASH_VERSION+set}\" || (
+ ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
+ ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO
+ ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO
+ PATH=/empty FPATH=/empty; export PATH FPATH
+ test \"X\`printf %s \$ECHO\`\" = \"X\$ECHO\" \\
+ || test \"X\`print -r -- \$ECHO\`\" = \"X\$ECHO\" ) || exit 1
+test \$(( 1 + 1 )) = 2 || exit 1"
+ if (eval "$as_required") 2>/dev/null; then :
+ as_have_required=yes
+else
+ as_have_required=no
+fi
+ if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then :
+
+else
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+as_found=false
+for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ as_found=:
+ case $as_dir in #(
+ /*)
+ for as_base in sh bash ksh sh5; do
+ # Try only shells that exist, to save several forks.
+ as_shell=$as_dir/$as_base
+ if { test -f "$as_shell" || test -f "$as_shell.exe"; } &&
+ { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then :
+ CONFIG_SHELL=$as_shell as_have_required=yes
+ if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then :
+ break 2
+fi
+fi
+ done;;
+ esac
+ as_found=false
+done
+$as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } &&
+ { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then :
+ CONFIG_SHELL=$SHELL as_have_required=yes
+fi; }
+IFS=$as_save_IFS
+
+
+ if test "x$CONFIG_SHELL" != x; then :
+ export CONFIG_SHELL
+ # We cannot yet assume a decent shell, so we have to provide a
+# neutralization value for shells without unset; and this also
+# works around shells that cannot unset nonexistent variables.
+# Preserve -v and -x to the replacement shell.
+BASH_ENV=/dev/null
+ENV=/dev/null
+(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV
+case $- in # ((((
+ *v*x* | *x*v* ) as_opts=-vx ;;
+ *v* ) as_opts=-v ;;
+ *x* ) as_opts=-x ;;
+ * ) as_opts= ;;
+esac
+exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"}
+# Admittedly, this is quite paranoid, since all the known shells bail
+# out after a failed `exec'.
+$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2
+exit 255
+fi
+
+ if test x$as_have_required = xno; then :
+ $as_echo "$0: This script requires a shell more modern than all"
+ $as_echo "$0: the shells that I found on your system."
+ if test x${ZSH_VERSION+set} = xset ; then
+ $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should"
+ $as_echo "$0: be upgraded to zsh 4.3.4 or later."
+ else
+ $as_echo "$0: Please tell bug-autoconf at gnu.org and
+$0: Tomas.Flouri at h-its.org about your system, including any
+$0: error possibly output before this message. Then install
+$0: a modern shell, or manually run the script under such a
+$0: shell if you do have one."
+ fi
+ exit 1
+fi
+fi
+fi
+SHELL=${CONFIG_SHELL-/bin/sh}
+export SHELL
+# Unset more variables known to interfere with behavior of common tools.
+CLICOLOR_FORCE= GREP_OPTIONS=
+unset CLICOLOR_FORCE GREP_OPTIONS
+
+## --------------------- ##
+## M4sh Shell Functions. ##
+## --------------------- ##
+# as_fn_unset VAR
+# ---------------
+# Portably unset VAR.
+as_fn_unset ()
+{
+ { eval $1=; unset $1;}
+}
+as_unset=as_fn_unset
+
+# as_fn_set_status STATUS
+# -----------------------
+# Set $? to STATUS, without forking.
+as_fn_set_status ()
+{
+ return $1
+} # as_fn_set_status
+
+# as_fn_exit STATUS
+# -----------------
+# Exit the shell with STATUS, even in a "trap 0" or "set -e" context.
+as_fn_exit ()
+{
+ set +e
+ as_fn_set_status $1
+ exit $1
+} # as_fn_exit
+
+# as_fn_mkdir_p
+# -------------
+# Create "$as_dir" as a directory, including parents if necessary.
+as_fn_mkdir_p ()
+{
+
+ case $as_dir in #(
+ -*) as_dir=./$as_dir;;
+ esac
+ test -d "$as_dir" || eval $as_mkdir_p || {
+ as_dirs=
+ while :; do
+ case $as_dir in #(
+ *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
+ *) as_qdir=$as_dir;;
+ esac
+ as_dirs="'$as_qdir' $as_dirs"
+ as_dir=`$as_dirname -- "$as_dir" ||
+$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$as_dir" : 'X\(//\)[^/]' \| \
+ X"$as_dir" : 'X\(//\)$' \| \
+ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$as_dir" |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)[^/].*/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\).*/{
+ s//\1/
+ q
+ }
+ s/.*/./; q'`
+ test -d "$as_dir" && break
+ done
+ test -z "$as_dirs" || eval "mkdir $as_dirs"
+ } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir"
+
+
+} # as_fn_mkdir_p
+
+# as_fn_executable_p FILE
+# -----------------------
+# Test if FILE is an executable regular file.
+as_fn_executable_p ()
+{
+ test -f "$1" && test -x "$1"
+} # as_fn_executable_p
+# as_fn_append VAR VALUE
+# ----------------------
+# Append the text in VALUE to the end of the definition contained in VAR. Take
+# advantage of any shell optimizations that allow amortized linear growth over
+# repeated appends, instead of the typical quadratic growth present in naive
+# implementations.
+if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then :
+ eval 'as_fn_append ()
+ {
+ eval $1+=\$2
+ }'
+else
+ as_fn_append ()
+ {
+ eval $1=\$$1\$2
+ }
+fi # as_fn_append
+
+# as_fn_arith ARG...
+# ------------------
+# Perform arithmetic evaluation on the ARGs, and store the result in the
+# global $as_val. Take advantage of shells that can avoid forks. The arguments
+# must be portable across $(()) and expr.
+if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then :
+ eval 'as_fn_arith ()
+ {
+ as_val=$(( $* ))
+ }'
+else
+ as_fn_arith ()
+ {
+ as_val=`expr "$@" || test $? -eq 1`
+ }
+fi # as_fn_arith
+
+
+# as_fn_error STATUS ERROR [LINENO LOG_FD]
+# ----------------------------------------
+# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are
+# provided, also output the error to LOG_FD, referencing LINENO. Then exit the
+# script with STATUS, using 1 if that was 0.
+as_fn_error ()
+{
+ as_status=$1; test $as_status -eq 0 && as_status=1
+ if test "$4"; then
+ as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+ $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4
+ fi
+ $as_echo "$as_me: error: $2" >&2
+ as_fn_exit $as_status
+} # as_fn_error
+
+if expr a : '\(a\)' >/dev/null 2>&1 &&
+ test "X`expr 00001 : '.*\(...\)'`" = X001; then
+ as_expr=expr
+else
+ as_expr=false
+fi
+
+if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then
+ as_basename=basename
+else
+ as_basename=false
+fi
+
+if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
+ as_dirname=dirname
+else
+ as_dirname=false
+fi
+
+as_me=`$as_basename -- "$0" ||
+$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
+ X"$0" : 'X\(//\)$' \| \
+ X"$0" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X/"$0" |
+ sed '/^.*\/\([^/][^/]*\)\/*$/{
+ s//\1/
+ q
+ }
+ /^X\/\(\/\/\)$/{
+ s//\1/
+ q
+ }
+ /^X\/\(\/\).*/{
+ s//\1/
+ q
+ }
+ s/.*/./; q'`
+
+# Avoid depending upon Character Ranges.
+as_cr_letters='abcdefghijklmnopqrstuvwxyz'
+as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
+as_cr_Letters=$as_cr_letters$as_cr_LETTERS
+as_cr_digits='0123456789'
+as_cr_alnum=$as_cr_Letters$as_cr_digits
+
+
+ as_lineno_1=$LINENO as_lineno_1a=$LINENO
+ as_lineno_2=$LINENO as_lineno_2a=$LINENO
+ eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" &&
+ test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || {
+ # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-)
+ sed -n '
+ p
+ /[$]LINENO/=
+ ' <$as_myself |
+ sed '
+ s/[$]LINENO.*/&-/
+ t lineno
+ b
+ :lineno
+ N
+ :loop
+ s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/
+ t loop
+ s/-\n.*//
+ ' >$as_me.lineno &&
+ chmod +x "$as_me.lineno" ||
+ { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; }
+
+ # If we had to re-execute with $CONFIG_SHELL, we're ensured to have
+ # already done that, so ensure we don't try to do so again and fall
+ # in an infinite loop. This has already happened in practice.
+ _as_can_reexec=no; export _as_can_reexec
+ # Don't try to exec as it changes $[0], causing all sort of problems
+ # (the dirname of $[0] is not the place where we might find the
+ # original and so on. Autoconf is especially sensitive to this).
+ . "./$as_me.lineno"
+ # Exit status is that of the last command.
+ exit
+}
+
+ECHO_C= ECHO_N= ECHO_T=
+case `echo -n x` in #(((((
+-n*)
+ case `echo 'xy\c'` in
+ *c*) ECHO_T=' ';; # ECHO_T is single tab character.
+ xy) ECHO_C='\c';;
+ *) echo `echo ksh88 bug on AIX 6.1` > /dev/null
+ ECHO_T=' ';;
+ esac;;
+*)
+ ECHO_N='-n';;
+esac
+
+rm -f conf$$ conf$$.exe conf$$.file
+if test -d conf$$.dir; then
+ rm -f conf$$.dir/conf$$.file
+else
+ rm -f conf$$.dir
+ mkdir conf$$.dir 2>/dev/null
+fi
+if (echo >conf$$.file) 2>/dev/null; then
+ if ln -s conf$$.file conf$$ 2>/dev/null; then
+ as_ln_s='ln -s'
+ # ... but there are two gotchas:
+ # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
+ # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
+ # In both cases, we have to default to `cp -pR'.
+ ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
+ as_ln_s='cp -pR'
+ elif ln conf$$.file conf$$ 2>/dev/null; then
+ as_ln_s=ln
+ else
+ as_ln_s='cp -pR'
+ fi
+else
+ as_ln_s='cp -pR'
+fi
+rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
+rmdir conf$$.dir 2>/dev/null
+
+if mkdir -p . 2>/dev/null; then
+ as_mkdir_p='mkdir -p "$as_dir"'
+else
+ test -d ./-p && rmdir ./-p
+ as_mkdir_p=false
+fi
+
+as_test_x='test -x'
+as_executable_p=as_fn_executable_p
+
+# Sed expression to map a string onto a valid CPP name.
+as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
+
+# Sed expression to map a string onto a valid variable name.
+as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
+
+SHELL=${CONFIG_SHELL-/bin/sh}
+
+
+test -n "$DJDIR" || exec 7<&0 </dev/null
+exec 6>&1
+
+# Name of the host.
+# hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status,
+# so uname gets run too.
+ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q`
+
+#
+# Initializations.
+#
+ac_default_prefix=/usr/local
+ac_clean_files=
+ac_config_libobj_dir=.
+LIBOBJS=
+cross_compiling=no
+subdirs=
+MFLAGS=
+MAKEFLAGS=
+
+# Identity of this package.
+PACKAGE_NAME='libpll'
+PACKAGE_TARNAME='libpll'
+PACKAGE_VERSION='1.0.11'
+PACKAGE_STRING='libpll 1.0.11'
+PACKAGE_BUGREPORT='Tomas.Flouri at h-its.org'
+PACKAGE_URL=''
+
+ac_unique_file="src/pll.h"
+# Factoring default headers for most tests.
+ac_includes_default="\
+#include <stdio.h>
+#ifdef HAVE_SYS_TYPES_H
+# include <sys/types.h>
+#endif
+#ifdef HAVE_SYS_STAT_H
+# include <sys/stat.h>
+#endif
+#ifdef STDC_HEADERS
+# include <stdlib.h>
+# include <stddef.h>
+#else
+# ifdef HAVE_STDLIB_H
+# include <stdlib.h>
+# endif
+#endif
+#ifdef HAVE_STRING_H
+# if !defined STDC_HEADERS && defined HAVE_MEMORY_H
+# include <memory.h>
+# endif
+# include <string.h>
+#endif
+#ifdef HAVE_STRINGS_H
+# include <strings.h>
+#endif
+#ifdef HAVE_INTTYPES_H
+# include <inttypes.h>
+#endif
+#ifdef HAVE_STDINT_H
+# include <stdint.h>
+#endif
+#ifdef HAVE_UNISTD_H
+# include <unistd.h>
+#endif"
+
+ac_header_list=
+ac_subst_vars='am__EXEEXT_FALSE
+am__EXEEXT_TRUE
+LTLIBOBJS
+LIBPLL_REV
+LIBPLL_MINOR
+LIBPLL_MAJOR
+LIBPLL_VERSION
+BUILD_MPI_FALSE
+BUILD_MPI_TRUE
+BUILD_SSE3_PTHREADS_FALSE
+BUILD_SSE3_PTHREADS_TRUE
+BUILD_SSE3_FALSE
+BUILD_SSE3_TRUE
+BUILD_AVX_PTHREADS_FALSE
+BUILD_AVX_PTHREADS_TRUE
+BUILD_AVX_FALSE
+BUILD_AVX_TRUE
+BUILD_GENERIC_FALSE
+BUILD_GENERIC_TRUE
+MPILIBS
+MPICC
+SIMD_FLAGS
+LIBOBJS
+CXXCPP
+OTOOL64
+OTOOL
+LIPO
+NMEDIT
+DSYMUTIL
+MANIFEST_TOOL
+ac_ct_AR
+AR
+DLLTOOL
+OBJDUMP
+LN_S
+NM
+ac_ct_DUMPBIN
+DUMPBIN
+LD
+FGREP
+EGREP
+GREP
+SED
+host_os
+host_vendor
+host_cpu
+host
+build_os
+build_vendor
+build_cpu
+build
+LIBTOOL
+CPP
+RANLIB
+am__fastdepCC_FALSE
+am__fastdepCC_TRUE
+CCDEPMODE
+ac_ct_CC
+CFLAGS
+CC
+am__fastdepCXX_FALSE
+am__fastdepCXX_TRUE
+CXXDEPMODE
+am__nodep
+AMDEPBACKSLASH
+AMDEP_FALSE
+AMDEP_TRUE
+am__quote
+am__include
+DEPDIR
+OBJEXT
+EXEEXT
+ac_ct_CXX
+CPPFLAGS
+LDFLAGS
+CXXFLAGS
+CXX
+AM_BACKSLASH
+AM_DEFAULT_VERBOSITY
+AM_DEFAULT_V
+AM_V
+am__untar
+am__tar
+AMTAR
+am__leading_dot
+SET_MAKE
+AWK
+mkdir_p
+MKDIR_P
+INSTALL_STRIP_PROGRAM
+STRIP
+install_sh
+MAKEINFO
+AUTOHEADER
+AUTOMAKE
+AUTOCONF
+ACLOCAL
+VERSION
+PACKAGE
+CYGPATH_W
+am__isrc
+INSTALL_DATA
+INSTALL_SCRIPT
+INSTALL_PROGRAM
+target_alias
+host_alias
+build_alias
+LIBS
+ECHO_T
+ECHO_N
+ECHO_C
+DEFS
+mandir
+localedir
+libdir
+psdir
+pdfdir
+dvidir
+htmldir
+infodir
+docdir
+oldincludedir
+includedir
+localstatedir
+sharedstatedir
+sysconfdir
+datadir
+datarootdir
+libexecdir
+sbindir
+bindir
+program_transform_name
+prefix
+exec_prefix
+PACKAGE_URL
+PACKAGE_BUGREPORT
+PACKAGE_STRING
+PACKAGE_VERSION
+PACKAGE_TARNAME
+PACKAGE_NAME
+PATH_SEPARATOR
+SHELL'
+ac_subst_files=''
+ac_user_opts='
+enable_option_checking
+enable_silent_rules
+enable_dependency_tracking
+enable_shared
+enable_static
+with_pic
+enable_fast_install
+with_gnu_ld
+with_sysroot
+enable_libtool_lock
+enable_generic
+enable_avx
+enable_avx_pthreads
+enable_avx_mpi
+enable_sse3
+enable_sse3_pthreads
+enable_sse3_mpi
+'
+ ac_precious_vars='build_alias
+host_alias
+target_alias
+CXX
+CXXFLAGS
+LDFLAGS
+LIBS
+CPPFLAGS
+CCC
+CC
+CFLAGS
+CPP
+CXXCPP
+MPICC'
+
+
+# Initialize some variables set by options.
+ac_init_help=
+ac_init_version=false
+ac_unrecognized_opts=
+ac_unrecognized_sep=
+# The variables have the same names as the options, with
+# dashes changed to underlines.
+cache_file=/dev/null
+exec_prefix=NONE
+no_create=
+no_recursion=
+prefix=NONE
+program_prefix=NONE
+program_suffix=NONE
+program_transform_name=s,x,x,
+silent=
+site=
+srcdir=
+verbose=
+x_includes=NONE
+x_libraries=NONE
+
+# Installation directory options.
+# These are left unexpanded so users can "make install exec_prefix=/foo"
+# and all the variables that are supposed to be based on exec_prefix
+# by default will actually change.
+# Use braces instead of parens because sh, perl, etc. also accept them.
+# (The list follows the same order as the GNU Coding Standards.)
+bindir='${exec_prefix}/bin'
+sbindir='${exec_prefix}/sbin'
+libexecdir='${exec_prefix}/libexec'
+datarootdir='${prefix}/share'
+datadir='${datarootdir}'
+sysconfdir='${prefix}/etc'
+sharedstatedir='${prefix}/com'
+localstatedir='${prefix}/var'
+includedir='${prefix}/include'
+oldincludedir='/usr/include'
+docdir='${datarootdir}/doc/${PACKAGE_TARNAME}'
+infodir='${datarootdir}/info'
+htmldir='${docdir}'
+dvidir='${docdir}'
+pdfdir='${docdir}'
+psdir='${docdir}'
+libdir='${exec_prefix}/lib'
+localedir='${datarootdir}/locale'
+mandir='${datarootdir}/man'
+
+ac_prev=
+ac_dashdash=
+for ac_option
+do
+ # If the previous option needs an argument, assign it.
+ if test -n "$ac_prev"; then
+ eval $ac_prev=\$ac_option
+ ac_prev=
+ continue
+ fi
+
+ case $ac_option in
+ *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;;
+ *=) ac_optarg= ;;
+ *) ac_optarg=yes ;;
+ esac
+
+ # Accept the important Cygnus configure options, so we can diagnose typos.
+
+ case $ac_dashdash$ac_option in
+ --)
+ ac_dashdash=yes ;;
+
+ -bindir | --bindir | --bindi | --bind | --bin | --bi)
+ ac_prev=bindir ;;
+ -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*)
+ bindir=$ac_optarg ;;
+
+ -build | --build | --buil | --bui | --bu)
+ ac_prev=build_alias ;;
+ -build=* | --build=* | --buil=* | --bui=* | --bu=*)
+ build_alias=$ac_optarg ;;
+
+ -cache-file | --cache-file | --cache-fil | --cache-fi \
+ | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c)
+ ac_prev=cache_file ;;
+ -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \
+ | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*)
+ cache_file=$ac_optarg ;;
+
+ --config-cache | -C)
+ cache_file=config.cache ;;
+
+ -datadir | --datadir | --datadi | --datad)
+ ac_prev=datadir ;;
+ -datadir=* | --datadir=* | --datadi=* | --datad=*)
+ datadir=$ac_optarg ;;
+
+ -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \
+ | --dataroo | --dataro | --datar)
+ ac_prev=datarootdir ;;
+ -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \
+ | --dataroot=* | --dataroo=* | --dataro=* | --datar=*)
+ datarootdir=$ac_optarg ;;
+
+ -disable-* | --disable-*)
+ ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'`
+ # Reject names that are not valid shell variable names.
+ expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
+ as_fn_error $? "invalid feature name: $ac_useropt"
+ ac_useropt_orig=$ac_useropt
+ ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+ case $ac_user_opts in
+ *"
+"enable_$ac_useropt"
+"*) ;;
+ *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig"
+ ac_unrecognized_sep=', ';;
+ esac
+ eval enable_$ac_useropt=no ;;
+
+ -docdir | --docdir | --docdi | --doc | --do)
+ ac_prev=docdir ;;
+ -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*)
+ docdir=$ac_optarg ;;
+
+ -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv)
+ ac_prev=dvidir ;;
+ -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*)
+ dvidir=$ac_optarg ;;
+
+ -enable-* | --enable-*)
+ ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'`
+ # Reject names that are not valid shell variable names.
+ expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
+ as_fn_error $? "invalid feature name: $ac_useropt"
+ ac_useropt_orig=$ac_useropt
+ ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+ case $ac_user_opts in
+ *"
+"enable_$ac_useropt"
+"*) ;;
+ *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig"
+ ac_unrecognized_sep=', ';;
+ esac
+ eval enable_$ac_useropt=\$ac_optarg ;;
+
+ -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \
+ | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \
+ | --exec | --exe | --ex)
+ ac_prev=exec_prefix ;;
+ -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \
+ | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \
+ | --exec=* | --exe=* | --ex=*)
+ exec_prefix=$ac_optarg ;;
+
+ -gas | --gas | --ga | --g)
+ # Obsolete; use --with-gas.
+ with_gas=yes ;;
+
+ -help | --help | --hel | --he | -h)
+ ac_init_help=long ;;
+ -help=r* | --help=r* | --hel=r* | --he=r* | -hr*)
+ ac_init_help=recursive ;;
+ -help=s* | --help=s* | --hel=s* | --he=s* | -hs*)
+ ac_init_help=short ;;
+
+ -host | --host | --hos | --ho)
+ ac_prev=host_alias ;;
+ -host=* | --host=* | --hos=* | --ho=*)
+ host_alias=$ac_optarg ;;
+
+ -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht)
+ ac_prev=htmldir ;;
+ -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \
+ | --ht=*)
+ htmldir=$ac_optarg ;;
+
+ -includedir | --includedir | --includedi | --included | --include \
+ | --includ | --inclu | --incl | --inc)
+ ac_prev=includedir ;;
+ -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \
+ | --includ=* | --inclu=* | --incl=* | --inc=*)
+ includedir=$ac_optarg ;;
+
+ -infodir | --infodir | --infodi | --infod | --info | --inf)
+ ac_prev=infodir ;;
+ -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*)
+ infodir=$ac_optarg ;;
+
+ -libdir | --libdir | --libdi | --libd)
+ ac_prev=libdir ;;
+ -libdir=* | --libdir=* | --libdi=* | --libd=*)
+ libdir=$ac_optarg ;;
+
+ -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \
+ | --libexe | --libex | --libe)
+ ac_prev=libexecdir ;;
+ -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \
+ | --libexe=* | --libex=* | --libe=*)
+ libexecdir=$ac_optarg ;;
+
+ -localedir | --localedir | --localedi | --localed | --locale)
+ ac_prev=localedir ;;
+ -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*)
+ localedir=$ac_optarg ;;
+
+ -localstatedir | --localstatedir | --localstatedi | --localstated \
+ | --localstate | --localstat | --localsta | --localst | --locals)
+ ac_prev=localstatedir ;;
+ -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \
+ | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*)
+ localstatedir=$ac_optarg ;;
+
+ -mandir | --mandir | --mandi | --mand | --man | --ma | --m)
+ ac_prev=mandir ;;
+ -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*)
+ mandir=$ac_optarg ;;
+
+ -nfp | --nfp | --nf)
+ # Obsolete; use --without-fp.
+ with_fp=no ;;
+
+ -no-create | --no-create | --no-creat | --no-crea | --no-cre \
+ | --no-cr | --no-c | -n)
+ no_create=yes ;;
+
+ -no-recursion | --no-recursion | --no-recursio | --no-recursi \
+ | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r)
+ no_recursion=yes ;;
+
+ -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \
+ | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \
+ | --oldin | --oldi | --old | --ol | --o)
+ ac_prev=oldincludedir ;;
+ -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \
+ | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \
+ | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*)
+ oldincludedir=$ac_optarg ;;
+
+ -prefix | --prefix | --prefi | --pref | --pre | --pr | --p)
+ ac_prev=prefix ;;
+ -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*)
+ prefix=$ac_optarg ;;
+
+ -program-prefix | --program-prefix | --program-prefi | --program-pref \
+ | --program-pre | --program-pr | --program-p)
+ ac_prev=program_prefix ;;
+ -program-prefix=* | --program-prefix=* | --program-prefi=* \
+ | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*)
+ program_prefix=$ac_optarg ;;
+
+ -program-suffix | --program-suffix | --program-suffi | --program-suff \
+ | --program-suf | --program-su | --program-s)
+ ac_prev=program_suffix ;;
+ -program-suffix=* | --program-suffix=* | --program-suffi=* \
+ | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*)
+ program_suffix=$ac_optarg ;;
+
+ -program-transform-name | --program-transform-name \
+ | --program-transform-nam | --program-transform-na \
+ | --program-transform-n | --program-transform- \
+ | --program-transform | --program-transfor \
+ | --program-transfo | --program-transf \
+ | --program-trans | --program-tran \
+ | --progr-tra | --program-tr | --program-t)
+ ac_prev=program_transform_name ;;
+ -program-transform-name=* | --program-transform-name=* \
+ | --program-transform-nam=* | --program-transform-na=* \
+ | --program-transform-n=* | --program-transform-=* \
+ | --program-transform=* | --program-transfor=* \
+ | --program-transfo=* | --program-transf=* \
+ | --program-trans=* | --program-tran=* \
+ | --progr-tra=* | --program-tr=* | --program-t=*)
+ program_transform_name=$ac_optarg ;;
+
+ -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd)
+ ac_prev=pdfdir ;;
+ -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*)
+ pdfdir=$ac_optarg ;;
+
+ -psdir | --psdir | --psdi | --psd | --ps)
+ ac_prev=psdir ;;
+ -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*)
+ psdir=$ac_optarg ;;
+
+ -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+ | -silent | --silent | --silen | --sile | --sil)
+ silent=yes ;;
+
+ -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)
+ ac_prev=sbindir ;;
+ -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
+ | --sbi=* | --sb=*)
+ sbindir=$ac_optarg ;;
+
+ -sharedstatedir | --sharedstatedir | --sharedstatedi \
+ | --sharedstated | --sharedstate | --sharedstat | --sharedsta \
+ | --sharedst | --shareds | --shared | --share | --shar \
+ | --sha | --sh)
+ ac_prev=sharedstatedir ;;
+ -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \
+ | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \
+ | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \
+ | --sha=* | --sh=*)
+ sharedstatedir=$ac_optarg ;;
+
+ -site | --site | --sit)
+ ac_prev=site ;;
+ -site=* | --site=* | --sit=*)
+ site=$ac_optarg ;;
+
+ -srcdir | --srcdir | --srcdi | --srcd | --src | --sr)
+ ac_prev=srcdir ;;
+ -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*)
+ srcdir=$ac_optarg ;;
+
+ -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \
+ | --syscon | --sysco | --sysc | --sys | --sy)
+ ac_prev=sysconfdir ;;
+ -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \
+ | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*)
+ sysconfdir=$ac_optarg ;;
+
+ -target | --target | --targe | --targ | --tar | --ta | --t)
+ ac_prev=target_alias ;;
+ -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*)
+ target_alias=$ac_optarg ;;
+
+ -v | -verbose | --verbose | --verbos | --verbo | --verb)
+ verbose=yes ;;
+
+ -version | --version | --versio | --versi | --vers | -V)
+ ac_init_version=: ;;
+
+ -with-* | --with-*)
+ ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'`
+ # Reject names that are not valid shell variable names.
+ expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
+ as_fn_error $? "invalid package name: $ac_useropt"
+ ac_useropt_orig=$ac_useropt
+ ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+ case $ac_user_opts in
+ *"
+"with_$ac_useropt"
+"*) ;;
+ *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig"
+ ac_unrecognized_sep=', ';;
+ esac
+ eval with_$ac_useropt=\$ac_optarg ;;
+
+ -without-* | --without-*)
+ ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'`
+ # Reject names that are not valid shell variable names.
+ expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
+ as_fn_error $? "invalid package name: $ac_useropt"
+ ac_useropt_orig=$ac_useropt
+ ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+ case $ac_user_opts in
+ *"
+"with_$ac_useropt"
+"*) ;;
+ *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig"
+ ac_unrecognized_sep=', ';;
+ esac
+ eval with_$ac_useropt=no ;;
+
+ --x)
+ # Obsolete; use --with-x.
+ with_x=yes ;;
+
+ -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \
+ | --x-incl | --x-inc | --x-in | --x-i)
+ ac_prev=x_includes ;;
+ -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \
+ | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*)
+ x_includes=$ac_optarg ;;
+
+ -x-libraries | --x-libraries | --x-librarie | --x-librari \
+ | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l)
+ ac_prev=x_libraries ;;
+ -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \
+ | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*)
+ x_libraries=$ac_optarg ;;
+
+ -*) as_fn_error $? "unrecognized option: \`$ac_option'
+Try \`$0 --help' for more information"
+ ;;
+
+ *=*)
+ ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='`
+ # Reject names that are not valid shell variable names.
+ case $ac_envvar in #(
+ '' | [0-9]* | *[!_$as_cr_alnum]* )
+ as_fn_error $? "invalid variable name: \`$ac_envvar'" ;;
+ esac
+ eval $ac_envvar=\$ac_optarg
+ export $ac_envvar ;;
+
+ *)
+ # FIXME: should be removed in autoconf 3.0.
+ $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2
+ expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null &&
+ $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2
+ : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}"
+ ;;
+
+ esac
+done
+
+if test -n "$ac_prev"; then
+ ac_option=--`echo $ac_prev | sed 's/_/-/g'`
+ as_fn_error $? "missing argument to $ac_option"
+fi
+
+if test -n "$ac_unrecognized_opts"; then
+ case $enable_option_checking in
+ no) ;;
+ fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;;
+ *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;;
+ esac
+fi
+
+# Check all directory arguments for consistency.
+for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \
+ datadir sysconfdir sharedstatedir localstatedir includedir \
+ oldincludedir docdir infodir htmldir dvidir pdfdir psdir \
+ libdir localedir mandir
+do
+ eval ac_val=\$$ac_var
+ # Remove trailing slashes.
+ case $ac_val in
+ */ )
+ ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'`
+ eval $ac_var=\$ac_val;;
+ esac
+ # Be sure to have absolute directory names.
+ case $ac_val in
+ [\\/$]* | ?:[\\/]* ) continue;;
+ NONE | '' ) case $ac_var in *prefix ) continue;; esac;;
+ esac
+ as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val"
+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
+ elif test "x$build_alias" != "x$host_alias"; then
+ cross_compiling=yes
+ fi
+fi
+
+ac_tool_prefix=
+test -n "$host_alias" && ac_tool_prefix=$host_alias-
+
+test "$silent" = yes && exec 6>/dev/null
+
+
+ac_pwd=`pwd` && test -n "$ac_pwd" &&
+ac_ls_di=`ls -di .` &&
+ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` ||
+ as_fn_error $? "working directory cannot be determined"
+test "X$ac_ls_di" = "X$ac_pwd_ls_di" ||
+ as_fn_error $? "pwd does not report name of working directory"
+
+
+# Find the source files, if location was not specified.
+if test -z "$srcdir"; then
+ ac_srcdir_defaulted=yes
+ # Try the directory containing this script, then the parent directory.
+ ac_confdir=`$as_dirname -- "$as_myself" ||
+$as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$as_myself" : 'X\(//\)[^/]' \| \
+ X"$as_myself" : 'X\(//\)$' \| \
+ X"$as_myself" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$as_myself" |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)[^/].*/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\).*/{
+ s//\1/
+ q
+ }
+ s/.*/./; q'`
+ srcdir=$ac_confdir
+ if test ! -r "$srcdir/$ac_unique_file"; then
+ srcdir=..
+ fi
+else
+ ac_srcdir_defaulted=no
+fi
+if test ! -r "$srcdir/$ac_unique_file"; then
+ test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .."
+ as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir"
+fi
+ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work"
+ac_abs_confdir=`(
+ cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg"
+ pwd)`
+# When building in place, set srcdir=.
+if test "$ac_abs_confdir" = "$ac_pwd"; then
+ srcdir=.
+fi
+# Remove unnecessary trailing slashes from srcdir.
+# Double slashes in file names in object file debugging info
+# mess up M-x gdb in Emacs.
+case $srcdir in
+*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;;
+esac
+for ac_var in $ac_precious_vars; do
+ eval ac_env_${ac_var}_set=\${${ac_var}+set}
+ eval ac_env_${ac_var}_value=\$${ac_var}
+ eval ac_cv_env_${ac_var}_set=\${${ac_var}+set}
+ eval ac_cv_env_${ac_var}_value=\$${ac_var}
+done
+
+#
+# Report the --help message.
+#
+if test "$ac_init_help" = "long"; then
+ # Omit some internal or obsolete options to make the list less imposing.
+ # This message is too long to be a string in the A/UX 3.1 sh.
+ cat <<_ACEOF
+\`configure' configures libpll 1.0.11 to adapt to many kinds of systems.
+
+Usage: $0 [OPTION]... [VAR=VALUE]...
+
+To assign environment variables (e.g., CC, CFLAGS...), specify them as
+VAR=VALUE. See below for descriptions of some of the useful variables.
+
+Defaults for the options are specified in brackets.
+
+Configuration:
+ -h, --help display this help and exit
+ --help=short display options specific to this package
+ --help=recursive display the short help of all the included packages
+ -V, --version display version information and exit
+ -q, --quiet, --silent do not print \`checking ...' messages
+ --cache-file=FILE cache test results in FILE [disabled]
+ -C, --config-cache alias for \`--cache-file=config.cache'
+ -n, --no-create do not create output files
+ --srcdir=DIR find the sources in DIR [configure dir or \`..']
+
+Installation directories:
+ --prefix=PREFIX install architecture-independent files in PREFIX
+ [$ac_default_prefix]
+ --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX
+ [PREFIX]
+
+By default, \`make install' will install all the files in
+\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify
+an installation prefix other than \`$ac_default_prefix' using \`--prefix',
+for instance \`--prefix=\$HOME'.
+
+For better control, use the options below.
+
+Fine tuning of the installation directories:
+ --bindir=DIR user executables [EPREFIX/bin]
+ --sbindir=DIR system admin executables [EPREFIX/sbin]
+ --libexecdir=DIR program executables [EPREFIX/libexec]
+ --sysconfdir=DIR read-only single-machine data [PREFIX/etc]
+ --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com]
+ --localstatedir=DIR modifiable single-machine data [PREFIX/var]
+ --libdir=DIR object code libraries [EPREFIX/lib]
+ --includedir=DIR C header files [PREFIX/include]
+ --oldincludedir=DIR C header files for non-gcc [/usr/include]
+ --datarootdir=DIR read-only arch.-independent data root [PREFIX/share]
+ --datadir=DIR read-only architecture-independent data [DATAROOTDIR]
+ --infodir=DIR info documentation [DATAROOTDIR/info]
+ --localedir=DIR locale-dependent data [DATAROOTDIR/locale]
+ --mandir=DIR man documentation [DATAROOTDIR/man]
+ --docdir=DIR documentation root [DATAROOTDIR/doc/libpll]
+ --htmldir=DIR html documentation [DOCDIR]
+ --dvidir=DIR dvi documentation [DOCDIR]
+ --pdfdir=DIR pdf documentation [DOCDIR]
+ --psdir=DIR ps documentation [DOCDIR]
+_ACEOF
+
+ cat <<\_ACEOF
+
+Program names:
+ --program-prefix=PREFIX prepend PREFIX to installed program names
+ --program-suffix=SUFFIX append SUFFIX to installed program names
+ --program-transform-name=PROGRAM run sed PROGRAM on installed program names
+
+System types:
+ --build=BUILD configure for building on BUILD [guessed]
+ --host=HOST cross-compile to build programs to run on HOST [BUILD]
+_ACEOF
+fi
+
+if test -n "$ac_init_help"; then
+ case $ac_init_help in
+ short | recursive ) echo "Configuration of libpll 1.0.11:";;
+ esac
+ cat <<\_ACEOF
+
+Optional Features:
+ --disable-option-checking ignore unrecognized --enable/--with options
+ --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no)
+ --enable-FEATURE[=ARG] include FEATURE [ARG=yes]
+ --enable-silent-rules less verbose build output (undo: "make V=1")
+ --disable-silent-rules verbose build output (undo: "make V=0")
+ --enable-dependency-tracking
+ do not reject slow dependency extractors
+ --disable-dependency-tracking
+ speeds up one-time build
+ --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-generic build generic version of the library
+ --disable-generic build generic version of the library
+ --enable-avx build AVX version of the library
+ --disable-avx build AVX version of the library
+ --enable-avx-pthreads build pthreads AVX version of the library
+ --disable-avx-pthreads build pthreads AVX version of the library
+ --enable-avx-mpi build MPI AVX version of the library
+ --disable-avx-mpi build MPI AVX version of the library
+ --enable-sse3 build SSE3 version of the library
+ --disable-sse3 build SSE3 version of the library
+ --enable-sse3-pthreads build pthreads SSE3 version of the library
+ --disable-sse3-pthreads build pthreads SSE3 version of the library
+ --enable-sse3-mpi build MPI SSE3 version of the library
+ --disable-sse3-mpi build MPI SSE3 version of the library
+
+Optional Packages:
+ --with-PACKAGE[=ARG] use PACKAGE [ARG=yes]
+ --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no)
+ --with-pic[=PKGS] try to use only PIC/non-PIC objects [default=use
+ both]
+ --with-gnu-ld assume the C compiler uses GNU ld [default=no]
+ --with-sysroot=DIR Search for dependent libraries within DIR
+ (or the compiler's sysroot if not specified).
+
+Some influential environment variables:
+ CXX C++ compiler command
+ CXXFLAGS C++ compiler flags
+ LDFLAGS linker flags, e.g. -L<lib dir> if you have libraries in a
+ nonstandard directory <lib dir>
+ LIBS libraries to pass to the linker, e.g. -l<library>
+ CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I<include dir> if
+ you have headers in a nonstandard directory <include dir>
+ CC C compiler command
+ CFLAGS C compiler flags
+ CPP C preprocessor
+ CXXCPP C++ preprocessor
+ MPICC MPI C compiler command
+
+Use these variables to override the choices made by `configure' or to help
+it to find libraries and programs with nonstandard names/locations.
+
+Report bugs to <Tomas.Flouri at h-its.org>.
+_ACEOF
+ac_status=$?
+fi
+
+if test "$ac_init_help" = "recursive"; then
+ # If there are subdirs, report their specific --help.
+ for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue
+ test -d "$ac_dir" ||
+ { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } ||
+ continue
+ ac_builddir=.
+
+case "$ac_dir" in
+.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
+*)
+ ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'`
+ # A ".." for each directory in $ac_dir_suffix.
+ ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`
+ case $ac_top_builddir_sub in
+ "") ac_top_builddir_sub=. ac_top_build_prefix= ;;
+ *) ac_top_build_prefix=$ac_top_builddir_sub/ ;;
+ esac ;;
+esac
+ac_abs_top_builddir=$ac_pwd
+ac_abs_builddir=$ac_pwd$ac_dir_suffix
+# for backward compatibility:
+ac_top_builddir=$ac_top_build_prefix
+
+case $srcdir in
+ .) # We are building in place.
+ ac_srcdir=.
+ ac_top_srcdir=$ac_top_builddir_sub
+ ac_abs_top_srcdir=$ac_pwd ;;
+ [\\/]* | ?:[\\/]* ) # Absolute name.
+ ac_srcdir=$srcdir$ac_dir_suffix;
+ ac_top_srcdir=$srcdir
+ ac_abs_top_srcdir=$srcdir ;;
+ *) # Relative name.
+ ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix
+ ac_top_srcdir=$ac_top_build_prefix$srcdir
+ ac_abs_top_srcdir=$ac_pwd/$srcdir ;;
+esac
+ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
+
+ cd "$ac_dir" || { ac_status=$?; continue; }
+ # Check for guested configure.
+ if test -f "$ac_srcdir/configure.gnu"; then
+ echo &&
+ $SHELL "$ac_srcdir/configure.gnu" --help=recursive
+ elif test -f "$ac_srcdir/configure"; then
+ echo &&
+ $SHELL "$ac_srcdir/configure" --help=recursive
+ else
+ $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2
+ fi || ac_status=$?
+ cd "$ac_pwd" || { ac_status=$?; break; }
+ done
+fi
+
+test -n "$ac_init_help" && exit $ac_status
+if $ac_init_version; then
+ cat <<\_ACEOF
+libpll configure 1.0.11
+generated by GNU Autoconf 2.69
+
+Copyright (C) 2012 Free Software Foundation, Inc.
+This configure script is free software; the Free Software Foundation
+gives unlimited permission to copy, distribute and modify it.
+_ACEOF
+ exit
+fi
+
+## ------------------------ ##
+## Autoconf initialization. ##
+## ------------------------ ##
+
+# ac_fn_cxx_try_compile LINENO
+# ----------------------------
+# Try to compile conftest.$ac_ext, and return whether this succeeded.
+ac_fn_cxx_try_compile ()
+{
+ as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+ rm -f conftest.$ac_objext
+ if { { ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_compile") 2>conftest.err
+ ac_status=$?
+ if test -s conftest.err; then
+ grep -v '^ *+' conftest.err >conftest.er1
+ cat conftest.er1 >&5
+ mv -f conftest.er1 conftest.err
+ fi
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; } && {
+ test -z "$ac_cxx_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then :
+ ac_retval=0
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_retval=1
+fi
+ eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+ as_fn_set_status $ac_retval
+
+} # ac_fn_cxx_try_compile
+
+# ac_fn_c_try_compile LINENO
+# --------------------------
+# Try to compile conftest.$ac_ext, and return whether this succeeded.
+ac_fn_c_try_compile ()
+{
+ as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+ rm -f conftest.$ac_objext
+ if { { ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_compile") 2>conftest.err
+ ac_status=$?
+ if test -s conftest.err; then
+ grep -v '^ *+' conftest.err >conftest.er1
+ cat conftest.er1 >&5
+ mv -f conftest.er1 conftest.err
+ fi
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then :
+ ac_retval=0
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_retval=1
+fi
+ eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+ as_fn_set_status $ac_retval
+
+} # ac_fn_c_try_compile
+
+# ac_fn_c_try_cpp LINENO
+# ----------------------
+# Try to preprocess conftest.$ac_ext, and return whether this succeeded.
+ac_fn_c_try_cpp ()
+{
+ as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+ if { { ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err
+ ac_status=$?
+ if test -s conftest.err; then
+ grep -v '^ *+' conftest.err >conftest.er1
+ cat conftest.er1 >&5
+ mv -f conftest.er1 conftest.err
+ fi
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; } > conftest.i && {
+ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ }; then :
+ ac_retval=0
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_retval=1
+fi
+ eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+ as_fn_set_status $ac_retval
+
+} # ac_fn_c_try_cpp
+
+# ac_fn_c_try_link LINENO
+# -----------------------
+# Try to link conftest.$ac_ext, and return whether this succeeded.
+ac_fn_c_try_link ()
+{
+ as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+ rm -f conftest.$ac_objext conftest$ac_exeext
+ if { { ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_link") 2>conftest.err
+ ac_status=$?
+ if test -s conftest.err; then
+ grep -v '^ *+' conftest.err >conftest.er1
+ cat conftest.er1 >&5
+ mv -f conftest.er1 conftest.err
+ fi
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext && {
+ test "$cross_compiling" = yes ||
+ test -x conftest$ac_exeext
+ }; then :
+ ac_retval=0
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_retval=1
+fi
+ # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information
+ # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would
+ # interfere with the next link command; also delete a directory that is
+ # left behind by Apple's compiler. We do this before executing the actions.
+ rm -rf conftest.dSYM conftest_ipa8_conftest.oo
+ eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+ as_fn_set_status $ac_retval
+
+} # ac_fn_c_try_link
+
+# ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES
+# -------------------------------------------------------
+# Tests whether HEADER exists and can be compiled using the include files in
+# INCLUDES, setting the cache variable VAR accordingly.
+ac_fn_c_check_header_compile ()
+{
+ as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+$as_echo_n "checking for $2... " >&6; }
+if eval \${$3+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+$4
+#include <$2>
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ eval "$3=yes"
+else
+ eval "$3=no"
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+eval ac_res=\$$3
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+ eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+
+} # ac_fn_c_check_header_compile
+
+# ac_fn_c_try_run LINENO
+# ----------------------
+# Try to link conftest.$ac_ext, and return whether this succeeded. Assumes
+# that executables *can* be run.
+ac_fn_c_try_run ()
+{
+ as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+ if { { ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_link") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; } && { ac_try='./conftest$ac_exeext'
+ { { case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_try") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; }; then :
+ ac_retval=0
+else
+ $as_echo "$as_me: program exited with status $ac_status" >&5
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_retval=$ac_status
+fi
+ rm -rf conftest.dSYM conftest_ipa8_conftest.oo
+ eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+ as_fn_set_status $ac_retval
+
+} # ac_fn_c_try_run
+
+# ac_fn_c_check_func LINENO FUNC VAR
+# ----------------------------------
+# Tests whether FUNC exists, setting the cache variable VAR accordingly
+ac_fn_c_check_func ()
+{
+ as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+$as_echo_n "checking for $2... " >&6; }
+if eval \${$3+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+/* Define $2 to an innocuous variant, in case <limits.h> declares $2.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $2 innocuous_$2
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $2 (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $2
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char $2 ();
+/* 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_$2 || defined __stub___$2
+choke me
+#endif
+
+int
+main ()
+{
+return $2 ();
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ eval "$3=yes"
+else
+ eval "$3=no"
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+eval ac_res=\$$3
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+ eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+
+} # ac_fn_c_check_func
+
+# ac_fn_cxx_try_cpp LINENO
+# ------------------------
+# Try to preprocess conftest.$ac_ext, and return whether this succeeded.
+ac_fn_cxx_try_cpp ()
+{
+ as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+ if { { ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err
+ ac_status=$?
+ if test -s conftest.err; then
+ grep -v '^ *+' conftest.err >conftest.er1
+ cat conftest.er1 >&5
+ mv -f conftest.er1 conftest.err
+ fi
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; } > conftest.i && {
+ test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" ||
+ test ! -s conftest.err
+ }; then :
+ ac_retval=0
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_retval=1
+fi
+ eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+ as_fn_set_status $ac_retval
+
+} # ac_fn_cxx_try_cpp
+
+# ac_fn_cxx_try_link LINENO
+# -------------------------
+# Try to link conftest.$ac_ext, and return whether this succeeded.
+ac_fn_cxx_try_link ()
+{
+ as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+ rm -f conftest.$ac_objext conftest$ac_exeext
+ if { { ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_link") 2>conftest.err
+ ac_status=$?
+ if test -s conftest.err; then
+ grep -v '^ *+' conftest.err >conftest.er1
+ cat conftest.er1 >&5
+ mv -f conftest.er1 conftest.err
+ fi
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; } && {
+ test -z "$ac_cxx_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext && {
+ test "$cross_compiling" = yes ||
+ test -x conftest$ac_exeext
+ }; then :
+ ac_retval=0
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_retval=1
+fi
+ # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information
+ # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would
+ # interfere with the next link command; also delete a directory that is
+ # left behind by Apple's compiler. We do this before executing the actions.
+ rm -rf conftest.dSYM conftest_ipa8_conftest.oo
+ eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+ as_fn_set_status $ac_retval
+
+} # ac_fn_cxx_try_link
+
+# ac_fn_c_check_header_mongrel LINENO HEADER VAR INCLUDES
+# -------------------------------------------------------
+# Tests whether HEADER exists, giving a warning if it cannot be compiled using
+# the include files in INCLUDES and setting the cache variable VAR
+# accordingly.
+ac_fn_c_check_header_mongrel ()
+{
+ as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+ if eval \${$3+:} false; then :
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+$as_echo_n "checking for $2... " >&6; }
+if eval \${$3+:} false; then :
+ $as_echo_n "(cached) " >&6
+fi
+eval ac_res=\$$3
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+else
+ # Is the header compilable?
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5
+$as_echo_n "checking $2 usability... " >&6; }
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+$4
+#include <$2>
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ ac_header_compiler=yes
+else
+ ac_header_compiler=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5
+$as_echo "$ac_header_compiler" >&6; }
+
+# Is the header present?
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5
+$as_echo_n "checking $2 presence... " >&6; }
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <$2>
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"; then :
+ ac_header_preproc=yes
+else
+ ac_header_preproc=no
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5
+$as_echo "$ac_header_preproc" >&6; }
+
+# So? What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in #((
+ yes:no: )
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5
+$as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5
+$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;}
+ ;;
+ no:yes:* )
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5
+$as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: check for missing prerequisite headers?" >&5
+$as_echo "$as_me: WARNING: $2: check for missing prerequisite headers?" >&2;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5
+$as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&5
+$as_echo "$as_me: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&2;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5
+$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;}
+( $as_echo "## ------------------------------------- ##
+## Report this to Tomas.Flouri at h-its.org ##
+## ------------------------------------- ##"
+ ) | sed "s/^/$as_me: WARNING: /" >&2
+ ;;
+esac
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+$as_echo_n "checking for $2... " >&6; }
+if eval \${$3+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ eval "$3=\$ac_header_compiler"
+fi
+eval ac_res=\$$3
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+fi
+ eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+
+} # ac_fn_c_check_header_mongrel
+
+# ac_fn_c_check_type LINENO TYPE VAR INCLUDES
+# -------------------------------------------
+# Tests whether TYPE exists after having included INCLUDES, setting cache
+# variable VAR accordingly.
+ac_fn_c_check_type ()
+{
+ as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+$as_echo_n "checking for $2... " >&6; }
+if eval \${$3+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ eval "$3=no"
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+$4
+int
+main ()
+{
+if (sizeof ($2))
+ return 0;
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+$4
+int
+main ()
+{
+if (sizeof (($2)))
+ return 0;
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+
+else
+ eval "$3=yes"
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+eval ac_res=\$$3
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+ eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+
+} # ac_fn_c_check_type
+
+# ac_fn_c_find_intX_t LINENO BITS VAR
+# -----------------------------------
+# Finds a signed integer type with width BITS, setting cache variable VAR
+# accordingly.
+ac_fn_c_find_intX_t ()
+{
+ as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for int$2_t" >&5
+$as_echo_n "checking for int$2_t... " >&6; }
+if eval \${$3+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ eval "$3=no"
+ # Order is important - never check a type that is potentially smaller
+ # than half of the expected target width.
+ for ac_type in int$2_t 'int' 'long int' \
+ 'long long int' 'short int' 'signed char'; do
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+$ac_includes_default
+ enum { N = $2 / 2 - 1 };
+int
+main ()
+{
+static int test_array [1 - 2 * !(0 < ($ac_type) ((((($ac_type) 1 << N) << N) - 1) * 2 + 1))];
+test_array [0] = 0;
+return test_array [0];
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+$ac_includes_default
+ enum { N = $2 / 2 - 1 };
+int
+main ()
+{
+static int test_array [1 - 2 * !(($ac_type) ((((($ac_type) 1 << N) << N) - 1) * 2 + 1)
+ < ($ac_type) ((((($ac_type) 1 << N) << N) - 1) * 2 + 2))];
+test_array [0] = 0;
+return test_array [0];
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+
+else
+ case $ac_type in #(
+ int$2_t) :
+ eval "$3=yes" ;; #(
+ *) :
+ eval "$3=\$ac_type" ;;
+esac
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ if eval test \"x\$"$3"\" = x"no"; then :
+
+else
+ break
+fi
+ done
+fi
+eval ac_res=\$$3
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+ eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+
+} # ac_fn_c_find_intX_t
+
+# ac_fn_c_find_uintX_t LINENO BITS VAR
+# ------------------------------------
+# Finds an unsigned integer type with width BITS, setting cache variable VAR
+# accordingly.
+ac_fn_c_find_uintX_t ()
+{
+ as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for uint$2_t" >&5
+$as_echo_n "checking for uint$2_t... " >&6; }
+if eval \${$3+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ eval "$3=no"
+ # Order is important - never check a type that is potentially smaller
+ # than half of the expected target width.
+ for ac_type in uint$2_t 'unsigned int' 'unsigned long int' \
+ 'unsigned long long int' 'unsigned short int' 'unsigned char'; do
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+static int test_array [1 - 2 * !((($ac_type) -1 >> ($2 / 2 - 1)) >> ($2 / 2 - 1) == 3)];
+test_array [0] = 0;
+return test_array [0];
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ case $ac_type in #(
+ uint$2_t) :
+ eval "$3=yes" ;; #(
+ *) :
+ eval "$3=\$ac_type" ;;
+esac
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ if eval test \"x\$"$3"\" = x"no"; then :
+
+else
+ break
+fi
+ done
+fi
+eval ac_res=\$$3
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+ eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+
+} # ac_fn_c_find_uintX_t
+cat >config.log <<_ACEOF
+This file contains any messages produced by compilers while
+running configure, to aid debugging if configure makes a mistake.
+
+It was created by libpll $as_me 1.0.11, which was
+generated by GNU Autoconf 2.69. Invocation command line was
+
+ $ $0 $@
+
+_ACEOF
+exec 5>>config.log
+{
+cat <<_ASUNAME
+## --------- ##
+## Platform. ##
+## --------- ##
+
+hostname = `(hostname || uname -n) 2>/dev/null | sed 1q`
+uname -m = `(uname -m) 2>/dev/null || echo unknown`
+uname -r = `(uname -r) 2>/dev/null || echo unknown`
+uname -s = `(uname -s) 2>/dev/null || echo unknown`
+uname -v = `(uname -v) 2>/dev/null || echo unknown`
+
+/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown`
+/bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown`
+
+/bin/arch = `(/bin/arch) 2>/dev/null || echo unknown`
+/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown`
+/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown`
+/usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown`
+/bin/machine = `(/bin/machine) 2>/dev/null || echo unknown`
+/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown`
+/bin/universe = `(/bin/universe) 2>/dev/null || echo unknown`
+
+_ASUNAME
+
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ $as_echo "PATH: $as_dir"
+ done
+IFS=$as_save_IFS
+
+} >&5
+
+cat >&5 <<_ACEOF
+
+
+## ----------- ##
+## Core tests. ##
+## ----------- ##
+
+_ACEOF
+
+
+# Keep a trace of the command line.
+# Strip out --no-create and --no-recursion so they do not pile up.
+# Strip out --silent because we don't want to record it for future runs.
+# Also quote any args containing shell meta-characters.
+# Make two passes to allow for proper duplicate-argument suppression.
+ac_configure_args=
+ac_configure_args0=
+ac_configure_args1=
+ac_must_keep_next=false
+for ac_pass in 1 2
+do
+ for ac_arg
+ do
+ case $ac_arg in
+ -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;;
+ -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+ | -silent | --silent | --silen | --sile | --sil)
+ continue ;;
+ *\'*)
+ ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;
+ esac
+ case $ac_pass in
+ 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;;
+ 2)
+ as_fn_append 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
+ as_fn_append ac_configure_args " '$ac_arg'"
+ ;;
+ esac
+ done
+done
+{ ac_configure_args0=; unset ac_configure_args0;}
+{ ac_configure_args1=; unset ac_configure_args1;}
+
+# When interrupted or exit'd, cleanup temporary files, and complete
+# config.log. We remove comments because anyway the quotes in there
+# would cause problems or look ugly.
+# WARNING: Use '\'' to represent an apostrophe within the trap.
+# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug.
+trap 'exit_status=$?
+ # Save into config.log some information that might help in debugging.
+ {
+ echo
+
+ $as_echo "## ---------------- ##
+## Cache variables. ##
+## ---------------- ##"
+ echo
+ # The following way of writing the cache mishandles newlines in values,
+(
+ for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do
+ eval ac_val=\$$ac_var
+ case $ac_val in #(
+ *${as_nl}*)
+ case $ac_var in #(
+ *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5
+$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
+ esac
+ case $ac_var in #(
+ _ | IFS | as_nl) ;; #(
+ BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #(
+ *) { eval $ac_var=; unset $ac_var;} ;;
+ esac ;;
+ esac
+ done
+ (set) 2>&1 |
+ case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #(
+ *${as_nl}ac_space=\ *)
+ sed -n \
+ "s/'\''/'\''\\\\'\'''\''/g;
+ s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p"
+ ;; #(
+ *)
+ sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p"
+ ;;
+ esac |
+ sort
+)
+ echo
+
+ $as_echo "## ----------------- ##
+## Output variables. ##
+## ----------------- ##"
+ echo
+ for ac_var in $ac_subst_vars
+ do
+ eval ac_val=\$$ac_var
+ case $ac_val in
+ *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
+ esac
+ $as_echo "$ac_var='\''$ac_val'\''"
+ done | sort
+ echo
+
+ if test -n "$ac_subst_files"; then
+ $as_echo "## ------------------- ##
+## File substitutions. ##
+## ------------------- ##"
+ echo
+ for ac_var in $ac_subst_files
+ do
+ eval ac_val=\$$ac_var
+ case $ac_val in
+ *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
+ esac
+ $as_echo "$ac_var='\''$ac_val'\''"
+ done | sort
+ echo
+ fi
+
+ if test -s confdefs.h; then
+ $as_echo "## ----------- ##
+## confdefs.h. ##
+## ----------- ##"
+ echo
+ cat confdefs.h
+ echo
+ fi
+ test "$ac_signal" != 0 &&
+ $as_echo "$as_me: caught signal $ac_signal"
+ $as_echo "$as_me: exit $exit_status"
+ } >&5
+ rm -f core *.core core.conftest.* &&
+ rm -f -r conftest* confdefs* conf$$* $ac_clean_files &&
+ exit $exit_status
+' 0
+for ac_signal in 1 2 13 15; do
+ trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal
+done
+ac_signal=0
+
+# confdefs.h avoids OS command line length limits that DEFS can exceed.
+rm -f -r conftest* confdefs.h
+
+$as_echo "/* confdefs.h */" > 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
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_URL "$PACKAGE_URL"
+_ACEOF
+
+
+# Let the site file select an alternate cache file if it wants to.
+# Prefer an explicitly selected file to automatically selected ones.
+ac_site_file1=NONE
+ac_site_file2=NONE
+if test -n "$CONFIG_SITE"; then
+ # We do not want a PATH search for config.site.
+ case $CONFIG_SITE in #((
+ -*) ac_site_file1=./$CONFIG_SITE;;
+ */*) ac_site_file1=$CONFIG_SITE;;
+ *) ac_site_file1=./$CONFIG_SITE;;
+ esac
+elif test "x$prefix" != xNONE; then
+ ac_site_file1=$prefix/share/config.site
+ ac_site_file2=$prefix/etc/config.site
+else
+ ac_site_file1=$ac_default_prefix/share/config.site
+ ac_site_file2=$ac_default_prefix/etc/config.site
+fi
+for ac_site_file in "$ac_site_file1" "$ac_site_file2"
+do
+ test "x$ac_site_file" = xNONE && continue
+ if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5
+$as_echo "$as_me: loading site script $ac_site_file" >&6;}
+ sed 's/^/| /' "$ac_site_file" >&5
+ . "$ac_site_file" \
+ || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "failed to load site script $ac_site_file
+See \`config.log' for more details" "$LINENO" 5; }
+ 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. DJGPP emulates it as a regular file.
+ if test /dev/null != "$cache_file" && test -f "$cache_file"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5
+$as_echo "$as_me: loading cache $cache_file" >&6;}
+ case $cache_file in
+ [\\/]* | ?:[\\/]* ) . "$cache_file";;
+ *) . "./$cache_file";;
+ esac
+ fi
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5
+$as_echo "$as_me: creating cache $cache_file" >&6;}
+ >$cache_file
+fi
+
+as_fn_append ac_header_list " stdlib.h"
+as_fn_append ac_header_list " unistd.h"
+as_fn_append ac_header_list " sys/param.h"
+# Check that the precious variables saved in the cache have kept the same
+# value.
+ac_cache_corrupted=false
+for ac_var in $ac_precious_vars; do
+ eval ac_old_set=\$ac_cv_env_${ac_var}_set
+ eval ac_new_set=\$ac_env_${ac_var}_set
+ eval ac_old_val=\$ac_cv_env_${ac_var}_value
+ eval ac_new_val=\$ac_env_${ac_var}_value
+ case $ac_old_set,$ac_new_set in
+ set,)
+ { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5
+$as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;}
+ ac_cache_corrupted=: ;;
+ ,set)
+ { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5
+$as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;}
+ ac_cache_corrupted=: ;;
+ ,);;
+ *)
+ if test "x$ac_old_val" != "x$ac_new_val"; then
+ # differences in whitespace do not lead to failure.
+ ac_old_val_w=`echo x $ac_old_val`
+ ac_new_val_w=`echo x $ac_new_val`
+ if test "$ac_old_val_w" != "$ac_new_val_w"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5
+$as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;}
+ ac_cache_corrupted=:
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5
+$as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;}
+ eval $ac_var=\$ac_old_val
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5
+$as_echo "$as_me: former value: \`$ac_old_val'" >&2;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5
+$as_echo "$as_me: current value: \`$ac_new_val'" >&2;}
+ fi;;
+ esac
+ # Pass precious variables to config.status.
+ if test "$ac_new_set" = set; then
+ case $ac_new_val in
+ *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;;
+ *) ac_arg=$ac_var=$ac_new_val ;;
+ esac
+ case " $ac_configure_args " in
+ *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy.
+ *) as_fn_append ac_configure_args " '$ac_arg'" ;;
+ esac
+ fi
+done
+if $ac_cache_corrupted; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5
+$as_echo "$as_me: error: changes in the environment can compromise the build" >&2;}
+ as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5
+fi
+## -------------------- ##
+## Main body of script. ##
+## -------------------- ##
+
+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
+
+
+
+am__api_version='1.14'
+
+ac_aux_dir=
+for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do
+ if test -f "$ac_dir/install-sh"; then
+ ac_aux_dir=$ac_dir
+ ac_install_sh="$ac_aux_dir/install-sh -c"
+ break
+ elif test -f "$ac_dir/install.sh"; then
+ ac_aux_dir=$ac_dir
+ ac_install_sh="$ac_aux_dir/install.sh -c"
+ break
+ elif test -f "$ac_dir/shtool"; then
+ ac_aux_dir=$ac_dir
+ ac_install_sh="$ac_aux_dir/shtool install -c"
+ break
+ fi
+done
+if test -z "$ac_aux_dir"; then
+ as_fn_error $? "cannot find install-sh, install.sh, or shtool in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" "$LINENO" 5
+fi
+
+# These three variables are undocumented and unsupported,
+# and are intended to be withdrawn in a future Autoconf release.
+# They can cause serious problems if a builder's source tree is in a directory
+# whose full name contains unusual characters.
+ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var.
+ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var.
+ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var.
+
+
+# Find a good install program. We prefer a C program (faster),
+# so one script is as good as another. But avoid the broken or
+# incompatible versions:
+# SysV /etc/install, /usr/sbin/install
+# SunOS /usr/etc/install
+# IRIX /sbin/install
+# AIX /bin/install
+# AmigaOS /C/install, which installs bootblocks on floppy discs
+# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag
+# AFS /usr/afsws/bin/install, which mishandles nonexistent args
+# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
+# OS/2's system install, which has a completely different semantic
+# ./install, which can be erroneously created by make from ./install.sh.
+# Reject install programs that cannot install multiple files.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5
+$as_echo_n "checking for a BSD-compatible install... " >&6; }
+if test -z "$INSTALL"; then
+if ${ac_cv_path_install+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ # Account for people who put trailing slashes in PATH elements.
+case $as_dir/ in #((
+ ./ | .// | /[cC]/* | \
+ /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \
+ ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \
+ /usr/ucb/* ) ;;
+ *)
+ # OSF1 and SCO ODT 3.0 have their own names for install.
+ # Don't use installbsd from OSF since it installs stuff as root
+ # by default.
+ for ac_prog in ginstall scoinst install; do
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_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
+ rm -rf conftest.one conftest.two conftest.dir
+ echo one > conftest.one
+ echo two > conftest.two
+ mkdir conftest.dir
+ if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" &&
+ test -s conftest.one && test -s conftest.two &&
+ test -s conftest.dir/conftest.one &&
+ test -s conftest.dir/conftest.two
+ then
+ ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c"
+ break 3
+ fi
+ fi
+ fi
+ done
+ done
+ ;;
+esac
+
+ done
+IFS=$as_save_IFS
+
+rm -rf conftest.one conftest.two conftest.dir
+
+fi
+ if test "${ac_cv_path_install+set}" = set; then
+ INSTALL=$ac_cv_path_install
+ else
+ # As a last resort, use the slow shell script. Don't cache a
+ # value for INSTALL within a source directory, because that will
+ # break other packages using the cache if that directory is
+ # removed, or if the value is a relative name.
+ INSTALL=$ac_install_sh
+ fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5
+$as_echo "$INSTALL" >&6; }
+
+# Use test -z because SunOS4 sh mishandles braces in ${var-val}.
+# It thinks the first close brace ends the variable substitution.
+test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}'
+
+test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}'
+
+test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5
+$as_echo_n "checking whether build environment is sane... " >&6; }
+# Reject unsafe characters in $srcdir or the absolute working directory
+# name. Accept space and tab only in the latter.
+am_lf='
+'
+case `pwd` in
+ *[\\\"\#\$\&\'\`$am_lf]*)
+ as_fn_error $? "unsafe absolute working directory name" "$LINENO" 5;;
+esac
+case $srcdir in
+ *[\\\"\#\$\&\'\`$am_lf\ \ ]*)
+ as_fn_error $? "unsafe srcdir value: '$srcdir'" "$LINENO" 5;;
+esac
+
+# Do 'set' in a subshell so we don't clobber the current shell's
+# arguments. Must try -L first in case configure is actually a
+# symlink; some systems play weird games with the mod time of symlinks
+# (eg FreeBSD returns the mod time of the symlink's containing
+# directory).
+if (
+ am_has_slept=no
+ for am_try in 1 2; do
+ echo "timestamp, slept: $am_has_slept" > conftest.file
+ 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
+ if test "$*" != "X $srcdir/configure conftest.file" \
+ && test "$*" != "X conftest.file $srcdir/configure"; then
+
+ # If neither matched, then we have a broken ls. This can happen
+ # if, for instance, CONFIG_SHELL is bash and it inherits a
+ # broken ls alias from the environment. This has actually
+ # happened. Such a system could not be considered "sane".
+ as_fn_error $? "ls -t appears to fail. Make sure there is not a broken
+ alias in your environment" "$LINENO" 5
+ fi
+ if test "$2" = conftest.file || test $am_try -eq 2; then
+ break
+ fi
+ # Just in case.
+ sleep 1
+ am_has_slept=yes
+ done
+ test "$2" = conftest.file
+ )
+then
+ # Ok.
+ :
+else
+ as_fn_error $? "newly created file is older than distributed files!
+Check your system clock" "$LINENO" 5
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+# If we didn't sleep, we still need to ensure time stamps of config.status and
+# generated files are strictly newer.
+am_sleep_pid=
+if grep 'slept: no' conftest.file >/dev/null 2>&1; then
+ ( sleep 1 ) &
+ am_sleep_pid=$!
+fi
+
+rm -f conftest.file
+
+test "$program_prefix" != NONE &&
+ program_transform_name="s&^&$program_prefix&;$program_transform_name"
+# Use a double $ so make ignores it.
+test "$program_suffix" != NONE &&
+ program_transform_name="s&\$&$program_suffix&;$program_transform_name"
+# Double any \ or $.
+# By default was `s,x,x', remove it if useless.
+ac_script='s/[\\$]/&&/g;s/;s,x,x,$//'
+program_transform_name=`$as_echo "$program_transform_name" | sed "$ac_script"`
+
+# expand $ac_aux_dir to an absolute path
+am_aux_dir=`cd $ac_aux_dir && pwd`
+
+if test x"${MISSING+set}" != xset; then
+ case $am_aux_dir in
+ *\ * | *\ *)
+ MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;;
+ *)
+ MISSING="\${SHELL} $am_aux_dir/missing" ;;
+ esac
+fi
+# Use eval to expand $SHELL
+if eval "$MISSING --is-lightweight"; then
+ am_missing_run="$MISSING "
+else
+ am_missing_run=
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: 'missing' script is too old or missing" >&5
+$as_echo "$as_me: WARNING: 'missing' script is too old or missing" >&2;}
+fi
+
+if test x"${install_sh}" != xset; then
+ case $am_aux_dir in
+ *\ * | *\ *)
+ install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;;
+ *)
+ install_sh="\${SHELL} $am_aux_dir/install-sh"
+ esac
+fi
+
+# Installed binaries are usually stripped using 'strip' when the user
+# run "make install-strip". However 'strip' might not be the right
+# tool to use in cross-compilation environments, therefore Automake
+# will honor the 'STRIP' environment variable to overrule this program.
+if test "$cross_compiling" != no; then
+ if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args.
+set dummy ${ac_tool_prefix}strip; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_STRIP+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$STRIP"; then
+ ac_cv_prog_STRIP="$STRIP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_STRIP="${ac_tool_prefix}strip"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+STRIP=$ac_cv_prog_STRIP
+if test -n "$STRIP"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5
+$as_echo "$STRIP" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_STRIP"; then
+ ac_ct_STRIP=$STRIP
+ # Extract the first word of "strip", so it can be a program name with args.
+set dummy strip; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_STRIP+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$ac_ct_STRIP"; then
+ ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_ac_ct_STRIP="strip"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP
+if test -n "$ac_ct_STRIP"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5
+$as_echo "$ac_ct_STRIP" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+ if test "x$ac_ct_STRIP" = x; then
+ STRIP=":"
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ STRIP=$ac_ct_STRIP
+ fi
+else
+ STRIP="$ac_cv_prog_STRIP"
+fi
+
+fi
+INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s"
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a thread-safe mkdir -p" >&5
+$as_echo_n "checking for a thread-safe mkdir -p... " >&6; }
+if test -z "$MKDIR_P"; then
+ if ${ac_cv_path_mkdir+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_prog in mkdir gmkdir; do
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext" || continue
+ case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #(
+ 'mkdir (GNU coreutils) '* | \
+ 'mkdir (coreutils) '* | \
+ 'mkdir (fileutils) '4.1*)
+ ac_cv_path_mkdir=$as_dir/$ac_prog$ac_exec_ext
+ break 3;;
+ esac
+ done
+ done
+ done
+IFS=$as_save_IFS
+
+fi
+
+ test -d ./--version && rmdir ./--version
+ if test "${ac_cv_path_mkdir+set}" = set; then
+ MKDIR_P="$ac_cv_path_mkdir -p"
+ else
+ # As a last resort, use the slow shell script. Don't cache a
+ # value for MKDIR_P within a source directory, because that will
+ # break other packages using the cache if that directory is
+ # removed, or if the value is a relative name.
+ MKDIR_P="$ac_install_sh -d"
+ fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5
+$as_echo "$MKDIR_P" >&6; }
+
+for ac_prog in gawk mawk nawk awk
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_AWK+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$AWK"; then
+ ac_cv_prog_AWK="$AWK" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_AWK="$ac_prog"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+AWK=$ac_cv_prog_AWK
+if test -n "$AWK"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5
+$as_echo "$AWK" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$AWK" && break
+done
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5
+$as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; }
+set x ${MAKE-make}
+ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'`
+if eval \${ac_cv_prog_make_${ac_make}_set+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.make <<\_ACEOF
+SHELL = /bin/sh
+all:
+ @echo '@@@%%%=$(MAKE)=@@@%%%'
+_ACEOF
+# GNU make sometimes prints "make[1]: Entering ...", which would confuse us.
+case `${MAKE-make} -f conftest.make 2>/dev/null` in
+ *@@@%%%=?*=@@@%%%*)
+ eval ac_cv_prog_make_${ac_make}_set=yes;;
+ *)
+ eval ac_cv_prog_make_${ac_make}_set=no;;
+esac
+rm -f conftest.make
+fi
+if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+ SET_MAKE=
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+ SET_MAKE="MAKE=${MAKE-make}"
+fi
+
+rm -rf .tst 2>/dev/null
+mkdir .tst 2>/dev/null
+if test -d .tst; then
+ am__leading_dot=.
+else
+ am__leading_dot=_
+fi
+rmdir .tst 2>/dev/null
+
+# Check whether --enable-silent-rules was given.
+if test "${enable_silent_rules+set}" = set; then :
+ enableval=$enable_silent_rules;
+fi
+
+case $enable_silent_rules in # (((
+ yes) AM_DEFAULT_VERBOSITY=0;;
+ no) AM_DEFAULT_VERBOSITY=1;;
+ *) AM_DEFAULT_VERBOSITY=1;;
+esac
+am_make=${MAKE-make}
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $am_make supports nested variables" >&5
+$as_echo_n "checking whether $am_make supports nested variables... " >&6; }
+if ${am_cv_make_support_nested_variables+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if $as_echo 'TRUE=$(BAR$(V))
+BAR0=false
+BAR1=true
+V=1
+am__doit:
+ @$(TRUE)
+.PHONY: am__doit' | $am_make -f - >/dev/null 2>&1; then
+ am_cv_make_support_nested_variables=yes
+else
+ am_cv_make_support_nested_variables=no
+fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_make_support_nested_variables" >&5
+$as_echo "$am_cv_make_support_nested_variables" >&6; }
+if test $am_cv_make_support_nested_variables = yes; then
+ AM_V='$(V)'
+ AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)'
+else
+ AM_V=$AM_DEFAULT_VERBOSITY
+ AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY
+fi
+AM_BACKSLASH='\'
+
+if test "`cd $srcdir && pwd`" != "`pwd`"; then
+ # Use -I$(srcdir) only when $(srcdir) != ., so that make's output
+ # is not polluted with repeated "-I."
+ am__isrc=' -I$(srcdir)'
+ # test to see if srcdir already configured
+ if test -f $srcdir/config.status; then
+ as_fn_error $? "source directory already configured; run \"make distclean\" there first" "$LINENO" 5
+ fi
+fi
+
+# test whether we have cygpath
+if test -z "$CYGPATH_W"; then
+ if (cygpath --version) >/dev/null 2>/dev/null; then
+ CYGPATH_W='cygpath -w'
+ else
+ CYGPATH_W=echo
+ fi
+fi
+
+
+# Define the identity of the package.
+ PACKAGE='libpll'
+ VERSION='1.0.11'
+
+
+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"}
+
+# For better backward compatibility. To be removed once Automake 1.9.x
+# dies out for good. For more background, see:
+# <http://lists.gnu.org/archive/html/automake/2012-07/msg00001.html>
+# <http://lists.gnu.org/archive/html/automake/2012-07/msg00014.html>
+mkdir_p='$(MKDIR_P)'
+
+# We need awk for the "check" target. The system "awk" is bad on
+# some platforms.
+# Always define AMTAR for backward compatibility. Yes, it's still used
+# in the wild :-( We should find a proper way to deprecate it ...
+AMTAR='$${TAR-tar}'
+
+
+# We'll loop over all known methods to create a tar archive until one works.
+_am_tools='gnutar pax cpio none'
+
+am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'
+
+
+
+
+
+
+# POSIX will say in a future version that running "rm -f" with no argument
+# is OK; and we want to be able to make that assumption in our Makefile
+# recipes. So use an aggressive probe to check that the usage we want is
+# actually supported "in the wild" to an acceptable degree.
+# See automake bug#10828.
+# To make any issue more visible, cause the running configure to be aborted
+# by default if the 'rm' program in use doesn't match our expectations; the
+# user can still override this though.
+if rm -f && rm -fr && rm -rf; then : OK; else
+ cat >&2 <<'END'
+Oops!
+
+Your 'rm' program seems unable to run without file operands specified
+on the command line, even when the '-f' option is present. This is contrary
+to the behaviour of most rm programs out there, and not conforming with
+the upcoming POSIX standard: <http://austingroupbugs.net/view.php?id=542>
+
+Please tell bug-automake at gnu.org about your system, including the value
+of your $PATH and any error possibly output before this message. This
+can help us improve future automake versions.
+
+END
+ if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then
+ echo 'Configuration will proceed anyway, since you have set the' >&2
+ echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2
+ echo >&2
+ else
+ cat >&2 <<'END'
+Aborting the configuration process, to ensure you take notice of the issue.
+
+You can download and install GNU coreutils to get an 'rm' implementation
+that behaves properly: <http://www.gnu.org/software/coreutils/>.
+
+If you want to complete the configuration process using your problematic
+'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM
+to "yes", and re-run configure.
+
+END
+ as_fn_error $? "Your 'rm' program is bad, sorry." "$LINENO" 5
+ fi
+fi
+
+# AM_MAINTAINER_MODE
+
+LIBPLL_VERSION=1.0.11
+LIBPLL_MAJOR=1
+LIBPLL_MINOR=0
+LIBPLL_REV=0
+
+
+ac_config_headers="$ac_config_headers config.h"
+
+
+# Checks for programs.
+ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+if test -z "$CXX"; then
+ if test -n "$CCC"; then
+ CXX=$CCC
+ else
+ if test -n "$ac_tool_prefix"; then
+ for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC
+ do
+ # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
+set dummy $ac_tool_prefix$ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_CXX+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$CXX"; then
+ ac_cv_prog_CXX="$CXX" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_CXX="$ac_tool_prefix$ac_prog"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+CXX=$ac_cv_prog_CXX
+if test -n "$CXX"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXX" >&5
+$as_echo "$CXX" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$CXX" && break
+ done
+fi
+if test -z "$CXX"; then
+ ac_ct_CXX=$CXX
+ for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_CXX+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$ac_ct_CXX"; then
+ ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_ac_ct_CXX="$ac_prog"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_CXX=$ac_cv_prog_ac_ct_CXX
+if test -n "$ac_ct_CXX"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CXX" >&5
+$as_echo "$ac_ct_CXX" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$ac_ct_CXX" && break
+done
+
+ if test "x$ac_ct_CXX" = x; then
+ CXX="g++"
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ CXX=$ac_ct_CXX
+ fi
+fi
+
+ fi
+fi
+# Provide some information about the compiler.
+$as_echo "$as_me:${as_lineno-$LINENO}: checking for C++ compiler version" >&5
+set X $ac_compile
+ac_compiler=$2
+for ac_option in --version -v -V -qversion; do
+ { { ac_try="$ac_compiler $ac_option >&5"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_compiler $ac_option >&5") 2>conftest.err
+ ac_status=$?
+ if test -s conftest.err; then
+ sed '10a\
+... rest of stderr output deleted ...
+ 10q' conftest.err >conftest.er1
+ cat conftest.er1 >&5
+ fi
+ rm -f conftest.er1 conftest.err
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }
+done
+
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+ac_clean_files_save=$ac_clean_files
+ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out"
+# Try to create an executable without -o first, disregard a.out.
+# It will help us diagnose broken compilers, and finding out an intuition
+# of exeext.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C++ compiler works" >&5
+$as_echo_n "checking whether the C++ compiler works... " >&6; }
+ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'`
+
+# The possible output files:
+ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*"
+
+ac_rmfiles=
+for ac_file in $ac_files
+do
+ case $ac_file in
+ *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;;
+ * ) ac_rmfiles="$ac_rmfiles $ac_file";;
+ esac
+done
+rm -f $ac_rmfiles
+
+if { { ac_try="$ac_link_default"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_link_default") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; then :
+ # Autoconf-2.13 could set the ac_cv_exeext variable to `no'.
+# So ignore a value of `no', otherwise this would lead to `EXEEXT = no'
+# in a Makefile. We should not override ac_cv_exeext if it was cached,
+# so that the user can short-circuit this test for compilers unknown to
+# Autoconf.
+for ac_file in $ac_files ''
+do
+ test -f "$ac_file" || continue
+ case $ac_file in
+ *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj )
+ ;;
+ [ab].out )
+ # We found the default executable, but exeext='' is most
+ # certainly right.
+ break;;
+ *.* )
+ if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no;
+ then :; else
+ ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
+ fi
+ # We set ac_cv_exeext here because the later test for it is not
+ # safe: cross compilers may not add the suffix if given an `-o'
+ # argument, so we may need to know it at that point already.
+ # Even if this section looks crufty: it has the advantage of
+ # actually working.
+ break;;
+ * )
+ break;;
+ esac
+done
+test "$ac_cv_exeext" = no && ac_cv_exeext=
+
+else
+ ac_file=''
+fi
+if test -z "$ac_file"; then :
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+$as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error 77 "C++ compiler cannot create executables
+See \`config.log' for more details" "$LINENO" 5; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for C++ compiler default output file name" >&5
+$as_echo_n "checking for C++ compiler default output file name... " >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5
+$as_echo "$ac_file" >&6; }
+ac_exeext=$ac_cv_exeext
+
+rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out
+ac_clean_files=$ac_clean_files_save
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5
+$as_echo_n "checking for suffix of executables... " >&6; }
+if { { ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_link") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; then :
+ # If both `conftest.exe' and `conftest' are `present' (well, observable)
+# catch `conftest.exe'. For instance with Cygwin, `ls conftest' will
+# work properly (i.e., refer to `conftest.exe'), while it won't with
+# `rm'.
+for ac_file in conftest.exe conftest conftest.*; do
+ test -f "$ac_file" || continue
+ case $ac_file in
+ *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;;
+ *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
+ break;;
+ * ) break;;
+ esac
+done
+else
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "cannot compute suffix of executables: cannot compile and link
+See \`config.log' for more details" "$LINENO" 5; }
+fi
+rm -f conftest conftest$ac_cv_exeext
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5
+$as_echo "$ac_cv_exeext" >&6; }
+
+rm -f conftest.$ac_ext
+EXEEXT=$ac_cv_exeext
+ac_exeext=$EXEEXT
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <stdio.h>
+int
+main ()
+{
+FILE *f = fopen ("conftest.out", "w");
+ return ferror (f) || fclose (f) != 0;
+
+ ;
+ return 0;
+}
+_ACEOF
+ac_clean_files="$ac_clean_files conftest.out"
+# Check that the compiler produces executables we can run. If not, either
+# the compiler is broken, or we cross compile.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5
+$as_echo_n "checking whether we are cross compiling... " >&6; }
+if test "$cross_compiling" != yes; then
+ { { ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_link") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }
+ if { ac_try='./conftest$ac_cv_exeext'
+ { { case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_try") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; }; then
+ cross_compiling=no
+ else
+ if test "$cross_compiling" = maybe; then
+ cross_compiling=yes
+ else
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "cannot run C++ compiled programs.
+If you meant to cross compile, use \`--host'.
+See \`config.log' for more details" "$LINENO" 5; }
+ fi
+ fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5
+$as_echo "$cross_compiling" >&6; }
+
+rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out
+ac_clean_files=$ac_clean_files_save
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5
+$as_echo_n "checking for suffix of object files... " >&6; }
+if ${ac_cv_objext+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.o conftest.obj
+if { { ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_compile") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; then :
+ for ac_file in conftest.o conftest.obj conftest.*; do
+ test -f "$ac_file" || continue;
+ case $ac_file in
+ *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;;
+ *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'`
+ break;;
+ esac
+done
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "cannot compute suffix of object files: cannot compile
+See \`config.log' for more details" "$LINENO" 5; }
+fi
+rm -f conftest.$ac_cv_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5
+$as_echo "$ac_cv_objext" >&6; }
+OBJEXT=$ac_cv_objext
+ac_objext=$OBJEXT
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C++ compiler" >&5
+$as_echo_n "checking whether we are using the GNU C++ compiler... " >&6; }
+if ${ac_cv_cxx_compiler_gnu+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+#ifndef __GNUC__
+ choke me
+#endif
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+ ac_compiler_gnu=yes
+else
+ ac_compiler_gnu=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ac_cv_cxx_compiler_gnu=$ac_compiler_gnu
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_cxx_compiler_gnu" >&5
+$as_echo "$ac_cv_cxx_compiler_gnu" >&6; }
+if test $ac_compiler_gnu = yes; then
+ GXX=yes
+else
+ GXX=
+fi
+ac_test_CXXFLAGS=${CXXFLAGS+set}
+ac_save_CXXFLAGS=$CXXFLAGS
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX accepts -g" >&5
+$as_echo_n "checking whether $CXX accepts -g... " >&6; }
+if ${ac_cv_prog_cxx_g+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_save_cxx_werror_flag=$ac_cxx_werror_flag
+ ac_cxx_werror_flag=yes
+ ac_cv_prog_cxx_g=no
+ CXXFLAGS="-g"
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+ ac_cv_prog_cxx_g=yes
+else
+ CXXFLAGS=""
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+
+else
+ ac_cxx_werror_flag=$ac_save_cxx_werror_flag
+ CXXFLAGS="-g"
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+ ac_cv_prog_cxx_g=yes
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ ac_cxx_werror_flag=$ac_save_cxx_werror_flag
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cxx_g" >&5
+$as_echo "$ac_cv_prog_cxx_g" >&6; }
+if test "$ac_test_CXXFLAGS" = set; then
+ CXXFLAGS=$ac_save_CXXFLAGS
+elif test $ac_cv_prog_cxx_g = yes; then
+ if test "$GXX" = yes; then
+ CXXFLAGS="-g -O2"
+ else
+ CXXFLAGS="-g"
+ fi
+else
+ if test "$GXX" = yes; then
+ CXXFLAGS="-O2"
+ else
+ CXXFLAGS=
+ fi
+fi
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+DEPDIR="${am__leading_dot}deps"
+
+ac_config_commands="$ac_config_commands depfiles"
+
+
+am_make=${MAKE-make}
+cat > confinc << 'END'
+am__doit:
+ @echo this is the am__doit target
+.PHONY: am__doit
+END
+# If we don't find an include directive, just comment out the code.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for style of include used by $am_make" >&5
+$as_echo_n "checking for style of include used by $am_make... " >&6; }
+am__include="#"
+am__quote=
+_am_result=none
+# First try GNU make style include.
+echo "include confinc" > confmf
+# Ignore all kinds of additional output from 'make'.
+case `$am_make -s -f confmf 2> /dev/null` in #(
+*the\ am__doit\ target*)
+ am__include=include
+ am__quote=
+ _am_result=GNU
+ ;;
+esac
+# Now try BSD make style include.
+if test "$am__include" = "#"; then
+ echo '.include "confinc"' > confmf
+ case `$am_make -s -f confmf 2> /dev/null` in #(
+ *the\ am__doit\ target*)
+ am__include=.include
+ am__quote="\""
+ _am_result=BSD
+ ;;
+ esac
+fi
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $_am_result" >&5
+$as_echo "$_am_result" >&6; }
+rm -f confinc confmf
+
+# Check whether --enable-dependency-tracking was given.
+if test "${enable_dependency_tracking+set}" = set; then :
+ enableval=$enable_dependency_tracking;
+fi
+
+if test "x$enable_dependency_tracking" != xno; then
+ am_depcomp="$ac_aux_dir/depcomp"
+ AMDEPBACKSLASH='\'
+ am__nodep='_no'
+fi
+ if test "x$enable_dependency_tracking" != xno; then
+ AMDEP_TRUE=
+ AMDEP_FALSE='#'
+else
+ AMDEP_TRUE='#'
+ AMDEP_FALSE=
+fi
+
+
+
+depcc="$CXX" am_compiler_list=
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5
+$as_echo_n "checking dependency style of $depcc... " >&6; }
+if ${am_cv_CXX_dependencies_compiler_type+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
+ # We make a subdir and do the tests there. Otherwise we can end up
+ # making bogus files that we don't know about and never remove. For
+ # instance it was reported that on HP-UX the gcc test will end up
+ # making a dummy file named 'D' -- because '-MD' means "put the output
+ # in D".
+ rm -rf conftest.dir
+ mkdir conftest.dir
+ # Copy depcomp to subdir because otherwise we won't find it if we're
+ # using a relative directory.
+ cp "$am_depcomp" conftest.dir
+ cd conftest.dir
+ # We will build objects and dependencies in a subdirectory because
+ # it helps to detect inapplicable dependency modes. For instance
+ # both Tru64's cc and ICC support -MD to output dependencies as a
+ # side effect of compilation, but ICC will put the dependencies in
+ # the current directory while Tru64 will put them in the object
+ # directory.
+ mkdir sub
+
+ am_cv_CXX_dependencies_compiler_type=none
+ if test "$am_compiler_list" = ""; then
+ am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp`
+ fi
+ am__universal=false
+ case " $depcc " in #(
+ *\ -arch\ *\ -arch\ *) am__universal=true ;;
+ esac
+
+ for depmode in $am_compiler_list; do
+ # Setup a source with many dependencies, because some compilers
+ # like to wrap large dependency lists on column 80 (with \), and
+ # we should not choose a depcomp mode which is confused by this.
+ #
+ # We need to recreate these files for each test, as the compiler may
+ # overwrite some of them when testing with obscure command lines.
+ # This happens at least with the AIX C compiler.
+ : > sub/conftest.c
+ for i in 1 2 3 4 5 6; do
+ echo '#include "conftst'$i'.h"' >> sub/conftest.c
+ # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with
+ # Solaris 10 /bin/sh.
+ echo '/* dummy */' > sub/conftst$i.h
+ done
+ echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
+
+ # We check with '-c' and '-o' for the sake of the "dashmstdout"
+ # mode. It turns out that the SunPro C++ compiler does not properly
+ # handle '-M -o', and we need to detect this. Also, some Intel
+ # versions had trouble with output in subdirs.
+ am__obj=sub/conftest.${OBJEXT-o}
+ am__minus_obj="-o $am__obj"
+ case $depmode in
+ gcc)
+ # This depmode causes a compiler race in universal mode.
+ test "$am__universal" = false || continue
+ ;;
+ nosideeffect)
+ # After this tag, mechanisms are not by side-effect, so they'll
+ # only be used when explicitly requested.
+ if test "x$enable_dependency_tracking" = xyes; then
+ continue
+ else
+ break
+ fi
+ ;;
+ msvc7 | msvc7msys | msvisualcpp | msvcmsys)
+ # This compiler won't grok '-c -o', but also, the minuso test has
+ # not run yet. These depmodes are late enough in the game, and
+ # so weak that their functioning should not be impacted.
+ am__obj=conftest.${OBJEXT-o}
+ am__minus_obj=
+ ;;
+ none) break ;;
+ esac
+ if depmode=$depmode \
+ source=sub/conftest.c object=$am__obj \
+ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
+ $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \
+ >/dev/null 2>conftest.err &&
+ grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 &&
+ grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
+ grep $am__obj sub/conftest.Po > /dev/null 2>&1 &&
+ ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
+ # icc doesn't choke on unknown options, it will just issue warnings
+ # or remarks (even with -Werror). So we grep stderr for any message
+ # that says an option was ignored or not supported.
+ # When given -MP, icc 7.0 and 7.1 complain thusly:
+ # icc: Command line warning: ignoring option '-M'; no argument required
+ # The diagnosis changed in icc 8.0:
+ # icc: Command line remark: option '-MP' not supported
+ if (grep 'ignoring option' conftest.err ||
+ grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
+ am_cv_CXX_dependencies_compiler_type=$depmode
+ break
+ fi
+ fi
+ done
+
+ cd ..
+ rm -rf conftest.dir
+else
+ am_cv_CXX_dependencies_compiler_type=none
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CXX_dependencies_compiler_type" >&5
+$as_echo "$am_cv_CXX_dependencies_compiler_type" >&6; }
+CXXDEPMODE=depmode=$am_cv_CXX_dependencies_compiler_type
+
+ if
+ test "x$enable_dependency_tracking" != xno \
+ && test "$am_cv_CXX_dependencies_compiler_type" = gcc3; then
+ am__fastdepCXX_TRUE=
+ am__fastdepCXX_FALSE='#'
+else
+ am__fastdepCXX_TRUE='#'
+ am__fastdepCXX_FALSE=
+fi
+
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args.
+set dummy ${ac_tool_prefix}gcc; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_CC+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$CC"; then
+ ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_CC="${ac_tool_prefix}gcc"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_CC"; then
+ ac_ct_CC=$CC
+ # Extract the first word of "gcc", so it can be a program name with args.
+set dummy gcc; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_CC+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$ac_ct_CC"; then
+ ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_ac_ct_CC="gcc"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_CC=$ac_cv_prog_ac_ct_CC
+if test -n "$ac_ct_CC"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
+$as_echo "$ac_ct_CC" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+ if test "x$ac_ct_CC" = x; then
+ CC=""
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ CC=$ac_ct_CC
+ fi
+else
+ CC="$ac_cv_prog_CC"
+fi
+
+if test -z "$CC"; then
+ if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args.
+set dummy ${ac_tool_prefix}cc; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_CC+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$CC"; then
+ ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_CC="${ac_tool_prefix}cc"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ fi
+fi
+if test -z "$CC"; then
+ # Extract the first word of "cc", so it can be a program name with args.
+set dummy cc; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_CC+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$CC"; then
+ ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+ ac_prog_rejected=no
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_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"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+if test $ac_prog_rejected = yes; then
+ # We found a bogon in the path, so make sure we never use it.
+ set dummy $ac_cv_prog_CC
+ shift
+ if test $# != 0; then
+ # We chose a different compiler from the bogus one.
+ # However, it has the same basename, so the bogon will be chosen
+ # first if we set CC to just the basename; use the full file name.
+ shift
+ ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@"
+ fi
+fi
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$CC"; then
+ if test -n "$ac_tool_prefix"; then
+ for ac_prog in cl.exe
+ do
+ # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
+set dummy $ac_tool_prefix$ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_CC+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$CC"; then
+ ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_CC="$ac_tool_prefix$ac_prog"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$CC" && break
+ done
+fi
+if test -z "$CC"; then
+ ac_ct_CC=$CC
+ for ac_prog in cl.exe
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_CC+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$ac_ct_CC"; then
+ ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_ac_ct_CC="$ac_prog"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_CC=$ac_cv_prog_ac_ct_CC
+if test -n "$ac_ct_CC"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
+$as_echo "$ac_ct_CC" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$ac_ct_CC" && break
+done
+
+ if test "x$ac_ct_CC" = x; then
+ CC=""
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ CC=$ac_ct_CC
+ fi
+fi
+
+fi
+
+
+test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "no acceptable C compiler found in \$PATH
+See \`config.log' for more details" "$LINENO" 5; }
+
+# Provide some information about the compiler.
+$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5
+set X $ac_compile
+ac_compiler=$2
+for ac_option in --version -v -V -qversion; do
+ { { ac_try="$ac_compiler $ac_option >&5"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_compiler $ac_option >&5") 2>conftest.err
+ ac_status=$?
+ if test -s conftest.err; then
+ sed '10a\
+... rest of stderr output deleted ...
+ 10q' conftest.err >conftest.er1
+ cat conftest.er1 >&5
+ fi
+ rm -f conftest.er1 conftest.err
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }
+done
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5
+$as_echo_n "checking whether we are using the GNU C compiler... " >&6; }
+if ${ac_cv_c_compiler_gnu+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+#ifndef __GNUC__
+ choke me
+#endif
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ ac_compiler_gnu=yes
+else
+ ac_compiler_gnu=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ac_cv_c_compiler_gnu=$ac_compiler_gnu
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5
+$as_echo "$ac_cv_c_compiler_gnu" >&6; }
+if test $ac_compiler_gnu = yes; then
+ GCC=yes
+else
+ GCC=
+fi
+ac_test_CFLAGS=${CFLAGS+set}
+ac_save_CFLAGS=$CFLAGS
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5
+$as_echo_n "checking whether $CC accepts -g... " >&6; }
+if ${ac_cv_prog_cc_g+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_save_c_werror_flag=$ac_c_werror_flag
+ ac_c_werror_flag=yes
+ ac_cv_prog_cc_g=no
+ CFLAGS="-g"
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ ac_cv_prog_cc_g=yes
+else
+ CFLAGS=""
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+
+else
+ ac_c_werror_flag=$ac_save_c_werror_flag
+ CFLAGS="-g"
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ ac_cv_prog_cc_g=yes
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ ac_c_werror_flag=$ac_save_c_werror_flag
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5
+$as_echo "$ac_cv_prog_cc_g" >&6; }
+if test "$ac_test_CFLAGS" = set; then
+ CFLAGS=$ac_save_CFLAGS
+elif test $ac_cv_prog_cc_g = yes; then
+ if test "$GCC" = yes; then
+ CFLAGS="-g -O2"
+ else
+ CFLAGS="-g"
+ fi
+else
+ if test "$GCC" = yes; then
+ CFLAGS="-O2"
+ else
+ CFLAGS=
+ fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5
+$as_echo_n "checking for $CC option to accept ISO C89... " >&6; }
+if ${ac_cv_prog_cc_c89+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_cv_prog_cc_c89=no
+ac_save_CC=$CC
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <stdarg.h>
+#include <stdio.h>
+struct stat;
+/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */
+struct buf { int x; };
+FILE * (*rcsopen) (struct buf *, struct stat *, int);
+static char *e (p, i)
+ char **p;
+ int i;
+{
+ return p[i];
+}
+static char *f (char * (*g) (char **, int), char **p, ...)
+{
+ char *s;
+ va_list v;
+ va_start (v,p);
+ s = g (p, va_arg (v,int));
+ va_end (v);
+ return s;
+}
+
+/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has
+ function prototypes and stuff, but not '\xHH' hex character constants.
+ These don't provoke an error unfortunately, instead are silently treated
+ as 'x'. The following induces an error, until -std is added to get
+ proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an
+ array size at least. It's necessary to write '\x00'==0 to get something
+ that's true only with -std. */
+int osf4_cc_array ['\x00' == 0 ? 1 : -1];
+
+/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters
+ inside strings and character constants. */
+#define FOO(x) 'x'
+int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1];
+
+int test (int i, double x);
+struct s1 {int (*f) (int a);};
+struct s2 {int (*f) (double a);};
+int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int);
+int argc;
+char **argv;
+int
+main ()
+{
+return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1];
+ ;
+ return 0;
+}
+_ACEOF
+for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \
+ -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"
+do
+ CC="$ac_save_CC $ac_arg"
+ if ac_fn_c_try_compile "$LINENO"; then :
+ ac_cv_prog_cc_c89=$ac_arg
+fi
+rm -f core conftest.err conftest.$ac_objext
+ test "x$ac_cv_prog_cc_c89" != "xno" && break
+done
+rm -f conftest.$ac_ext
+CC=$ac_save_CC
+
+fi
+# AC_CACHE_VAL
+case "x$ac_cv_prog_cc_c89" in
+ x)
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5
+$as_echo "none needed" >&6; } ;;
+ xno)
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5
+$as_echo "unsupported" >&6; } ;;
+ *)
+ CC="$CC $ac_cv_prog_cc_c89"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5
+$as_echo "$ac_cv_prog_cc_c89" >&6; } ;;
+esac
+if test "x$ac_cv_prog_cc_c89" != xno; then :
+
+fi
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC understands -c and -o together" >&5
+$as_echo_n "checking whether $CC understands -c and -o together... " >&6; }
+if ${am_cv_prog_cc_c_o+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+ # Make sure it works both with $CC and with simple cc.
+ # Following AC_PROG_CC_C_O, we do the test twice because some
+ # compilers refuse to overwrite an existing .o file with -o,
+ # though they will create one.
+ am_cv_prog_cc_c_o=yes
+ for am_i in 1 2; do
+ if { echo "$as_me:$LINENO: $CC -c conftest.$ac_ext -o conftest2.$ac_objext" >&5
+ ($CC -c conftest.$ac_ext -o conftest2.$ac_objext) >&5 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } \
+ && test -f conftest2.$ac_objext; then
+ : OK
+ else
+ am_cv_prog_cc_c_o=no
+ break
+ fi
+ done
+ rm -f core conftest*
+ unset am_i
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_cc_c_o" >&5
+$as_echo "$am_cv_prog_cc_c_o" >&6; }
+if test "$am_cv_prog_cc_c_o" != yes; then
+ # Losing compiler, so override with the script.
+ # FIXME: It is wrong to rewrite CC.
+ # But if we don't then we get into trouble of one sort or another.
+ # A longer-term fix would be to have automake use am__CC in this case,
+ # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)"
+ CC="$am_aux_dir/compile $CC"
+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="$CC" am_compiler_list=
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5
+$as_echo_n "checking dependency style of $depcc... " >&6; }
+if ${am_cv_CC_dependencies_compiler_type+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
+ # We make a subdir and do the tests there. Otherwise we can end up
+ # making bogus files that we don't know about and never remove. For
+ # instance it was reported that on HP-UX the gcc test will end up
+ # making a dummy file named 'D' -- because '-MD' means "put the output
+ # in D".
+ rm -rf conftest.dir
+ mkdir conftest.dir
+ # Copy depcomp to subdir because otherwise we won't find it if we're
+ # using a relative directory.
+ cp "$am_depcomp" conftest.dir
+ cd conftest.dir
+ # We will build objects and dependencies in a subdirectory because
+ # it helps to detect inapplicable dependency modes. For instance
+ # both Tru64's cc and ICC support -MD to output dependencies as a
+ # side effect of compilation, but ICC will put the dependencies in
+ # the current directory while Tru64 will put them in the object
+ # directory.
+ mkdir sub
+
+ am_cv_CC_dependencies_compiler_type=none
+ if test "$am_compiler_list" = ""; then
+ am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp`
+ fi
+ am__universal=false
+ case " $depcc " in #(
+ *\ -arch\ *\ -arch\ *) am__universal=true ;;
+ esac
+
+ for depmode in $am_compiler_list; do
+ # Setup a source with many dependencies, because some compilers
+ # like to wrap large dependency lists on column 80 (with \), and
+ # we should not choose a depcomp mode which is confused by this.
+ #
+ # We need to recreate these files for each test, as the compiler may
+ # overwrite some of them when testing with obscure command lines.
+ # This happens at least with the AIX C compiler.
+ : > sub/conftest.c
+ for i in 1 2 3 4 5 6; do
+ echo '#include "conftst'$i'.h"' >> sub/conftest.c
+ # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with
+ # Solaris 10 /bin/sh.
+ echo '/* dummy */' > sub/conftst$i.h
+ done
+ echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
+
+ # We check with '-c' and '-o' for the sake of the "dashmstdout"
+ # mode. It turns out that the SunPro C++ compiler does not properly
+ # handle '-M -o', and we need to detect this. Also, some Intel
+ # versions had trouble with output in subdirs.
+ am__obj=sub/conftest.${OBJEXT-o}
+ am__minus_obj="-o $am__obj"
+ case $depmode in
+ gcc)
+ # This depmode causes a compiler race in universal mode.
+ test "$am__universal" = false || continue
+ ;;
+ nosideeffect)
+ # After this tag, mechanisms are not by side-effect, so they'll
+ # only be used when explicitly requested.
+ if test "x$enable_dependency_tracking" = xyes; then
+ continue
+ else
+ break
+ fi
+ ;;
+ msvc7 | msvc7msys | msvisualcpp | msvcmsys)
+ # This compiler won't grok '-c -o', but also, the minuso test has
+ # not run yet. These depmodes are late enough in the game, and
+ # so weak that their functioning should not be impacted.
+ am__obj=conftest.${OBJEXT-o}
+ am__minus_obj=
+ ;;
+ none) break ;;
+ esac
+ if depmode=$depmode \
+ source=sub/conftest.c object=$am__obj \
+ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
+ $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \
+ >/dev/null 2>conftest.err &&
+ grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 &&
+ grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
+ grep $am__obj sub/conftest.Po > /dev/null 2>&1 &&
+ ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
+ # icc doesn't choke on unknown options, it will just issue warnings
+ # or remarks (even with -Werror). So we grep stderr for any message
+ # that says an option was ignored or not supported.
+ # When given -MP, icc 7.0 and 7.1 complain thusly:
+ # icc: Command line warning: ignoring option '-M'; no argument required
+ # The diagnosis changed in icc 8.0:
+ # icc: Command line remark: option '-MP' not supported
+ if (grep 'ignoring option' conftest.err ||
+ grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
+ am_cv_CC_dependencies_compiler_type=$depmode
+ break
+ fi
+ fi
+ done
+
+ cd ..
+ rm -rf conftest.dir
+else
+ am_cv_CC_dependencies_compiler_type=none
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5
+$as_echo "$am_cv_CC_dependencies_compiler_type" >&6; }
+CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type
+
+ if
+ test "x$enable_dependency_tracking" != xno \
+ && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then
+ am__fastdepCC_TRUE=
+ am__fastdepCC_FALSE='#'
+else
+ am__fastdepCC_TRUE='#'
+ am__fastdepCC_FALSE=
+fi
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5
+$as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; }
+set x ${MAKE-make}
+ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'`
+if eval \${ac_cv_prog_make_${ac_make}_set+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.make <<\_ACEOF
+SHELL = /bin/sh
+all:
+ @echo '@@@%%%=$(MAKE)=@@@%%%'
+_ACEOF
+# GNU make sometimes prints "make[1]: Entering ...", which would confuse us.
+case `${MAKE-make} -f conftest.make 2>/dev/null` in
+ *@@@%%%=?*=@@@%%%*)
+ eval ac_cv_prog_make_${ac_make}_set=yes;;
+ *)
+ eval ac_cv_prog_make_${ac_make}_set=no;;
+esac
+rm -f conftest.make
+fi
+if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+ SET_MAKE=
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+ SET_MAKE="MAKE=${MAKE-make}"
+fi
+
+if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args.
+set dummy ${ac_tool_prefix}ranlib; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_RANLIB+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$RANLIB"; then
+ ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+RANLIB=$ac_cv_prog_RANLIB
+if test -n "$RANLIB"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5
+$as_echo "$RANLIB" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_RANLIB"; then
+ ac_ct_RANLIB=$RANLIB
+ # Extract the first word of "ranlib", so it can be a program name with args.
+set dummy ranlib; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_RANLIB+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$ac_ct_RANLIB"; then
+ ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_ac_ct_RANLIB="ranlib"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB
+if test -n "$ac_ct_RANLIB"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5
+$as_echo "$ac_ct_RANLIB" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+ if test "x$ac_ct_RANLIB" = x; then
+ RANLIB=":"
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ RANLIB=$ac_ct_RANLIB
+ fi
+else
+ RANLIB="$ac_cv_prog_RANLIB"
+fi
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5
+$as_echo_n "checking how to run the C preprocessor... " >&6; }
+# On Suns, sometimes $CPP names a directory.
+if test -n "$CPP" && test -d "$CPP"; then
+ CPP=
+fi
+if test -z "$CPP"; then
+ if ${ac_cv_prog_CPP+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ # Double quotes because CPP needs to be expanded
+ for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp"
+ do
+ ac_preproc_ok=false
+for ac_c_preproc_warn_flag in '' yes
+do
+ # Use a header file that comes with gcc, so configuring glibc
+ # with a fresh cross-compiler works.
+ # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ # <limits.h> 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 confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+ Syntax error
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"; then :
+
+else
+ # Broken: fails on valid input.
+continue
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+
+ # OK, works on sane cases. Now check whether nonexistent headers
+ # can be detected and how.
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <ac_nonexistent.h>
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"; then :
+ # Broken: success on invalid input.
+continue
+else
+ # Passes both tests.
+ac_preproc_ok=:
+break
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+
+done
+# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
+rm -f conftest.i conftest.err conftest.$ac_ext
+if $ac_preproc_ok; then :
+ break
+fi
+
+ done
+ ac_cv_prog_CPP=$CPP
+
+fi
+ CPP=$ac_cv_prog_CPP
+else
+ ac_cv_prog_CPP=$CPP
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5
+$as_echo "$CPP" >&6; }
+ac_preproc_ok=false
+for ac_c_preproc_warn_flag in '' yes
+do
+ # Use a header file that comes with gcc, so configuring glibc
+ # with a fresh cross-compiler works.
+ # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ # <limits.h> 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 confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+ Syntax error
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"; then :
+
+else
+ # Broken: fails on valid input.
+continue
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+
+ # OK, works on sane cases. Now check whether nonexistent headers
+ # can be detected and how.
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <ac_nonexistent.h>
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"; then :
+ # Broken: success on invalid input.
+continue
+else
+ # Passes both tests.
+ac_preproc_ok=:
+break
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+
+done
+# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
+rm -f conftest.i conftest.err conftest.$ac_ext
+if $ac_preproc_ok; then :
+
+else
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "C preprocessor \"$CPP\" fails sanity check
+See \`config.log' for more details" "$LINENO" 5; }
+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
+
+case `pwd` in
+ *\ * | *\ *)
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&5
+$as_echo "$as_me: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&2;} ;;
+esac
+
+
+
+macro_version='2.4.2'
+macro_revision='1.3337'
+
+
+
+
+
+
+
+
+
+
+
+
+
+ltmain="$ac_aux_dir/ltmain.sh"
+
+# Make sure we can run config.sub.
+$SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 ||
+ as_fn_error $? "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5
+$as_echo_n "checking build system type... " >&6; }
+if ${ac_cv_build+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_build_alias=$build_alias
+test "x$ac_build_alias" = x &&
+ ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"`
+test "x$ac_build_alias" = x &&
+ as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5
+ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` ||
+ as_fn_error $? "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5
+$as_echo "$ac_cv_build" >&6; }
+case $ac_cv_build in
+*-*-*) ;;
+*) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;;
+esac
+build=$ac_cv_build
+ac_save_IFS=$IFS; IFS='-'
+set x $ac_cv_build
+shift
+build_cpu=$1
+build_vendor=$2
+shift; shift
+# Remember, the first character of IFS is used to create $*,
+# except with old shells:
+build_os=$*
+IFS=$ac_save_IFS
+case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5
+$as_echo_n "checking host system type... " >&6; }
+if ${ac_cv_host+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test "x$host_alias" = x; then
+ ac_cv_host=$ac_cv_build
+else
+ ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` ||
+ as_fn_error $? "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5
+$as_echo "$ac_cv_host" >&6; }
+case $ac_cv_host in
+*-*-*) ;;
+*) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;;
+esac
+host=$ac_cv_host
+ac_save_IFS=$IFS; IFS='-'
+set x $ac_cv_host
+shift
+host_cpu=$1
+host_vendor=$2
+shift; shift
+# Remember, the first character of IFS is used to create $*,
+# except with old shells:
+host_os=$*
+IFS=$ac_save_IFS
+case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac
+
+
+# Backslashify metacharacters that are still active within
+# double-quoted strings.
+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 delay expansion of an escaped single quote.
+delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g'
+
+# Sed substitution to avoid accidental globbing in evaled expressions
+no_glob_subst='s/\*/\\\*/g'
+
+ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
+ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO
+ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to print strings" >&5
+$as_echo_n "checking how to print strings... " >&6; }
+# Test print first, because it will be a builtin if present.
+if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \
+ test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then
+ ECHO='print -r --'
+elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then
+ ECHO='printf %s\n'
+else
+ # Use this function as a fallback that always works.
+ func_fallback_echo ()
+ {
+ eval 'cat <<_LTECHO_EOF
+$1
+_LTECHO_EOF'
+ }
+ ECHO='func_fallback_echo'
+fi
+
+# func_echo_all arg...
+# Invoke $ECHO with all args, space-separated.
+func_echo_all ()
+{
+ $ECHO ""
+}
+
+case "$ECHO" in
+ printf*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: printf" >&5
+$as_echo "printf" >&6; } ;;
+ print*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: print -r" >&5
+$as_echo "print -r" >&6; } ;;
+ *) { $as_echo "$as_me:${as_lineno-$LINENO}: result: cat" >&5
+$as_echo "cat" >&6; } ;;
+esac
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5
+$as_echo_n "checking for a sed that does not truncate output... " >&6; }
+if ${ac_cv_path_SED+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/
+ for ac_i in 1 2 3 4 5 6 7; do
+ ac_script="$ac_script$as_nl$ac_script"
+ done
+ echo "$ac_script" 2>/dev/null | sed 99q >conftest.sed
+ { ac_script=; unset ac_script;}
+ if test -z "$SED"; then
+ ac_path_SED_found=false
+ # Loop through the user's path and test for each of PROGNAME-LIST
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_prog in sed gsed; do
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ ac_path_SED="$as_dir/$ac_prog$ac_exec_ext"
+ as_fn_executable_p "$ac_path_SED" || continue
+# Check for GNU ac_path_SED and select it if it is found.
+ # Check for GNU $ac_path_SED
+case `"$ac_path_SED" --version 2>&1` in
+*GNU*)
+ ac_cv_path_SED="$ac_path_SED" ac_path_SED_found=:;;
+*)
+ ac_count=0
+ $as_echo_n 0123456789 >"conftest.in"
+ while :
+ do
+ cat "conftest.in" "conftest.in" >"conftest.tmp"
+ mv "conftest.tmp" "conftest.in"
+ cp "conftest.in" "conftest.nl"
+ $as_echo '' >> "conftest.nl"
+ "$ac_path_SED" -f conftest.sed < "conftest.nl" >"conftest.out" 2>/dev/null || break
+ diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
+ as_fn_arith $ac_count + 1 && ac_count=$as_val
+ if test $ac_count -gt ${ac_path_SED_max-0}; then
+ # Best one so far, save it but keep looking for a better one
+ ac_cv_path_SED="$ac_path_SED"
+ ac_path_SED_max=$ac_count
+ fi
+ # 10*(2^10) chars as input seems more than enough
+ test $ac_count -gt 10 && break
+ done
+ rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
+esac
+
+ $ac_path_SED_found && break 3
+ done
+ done
+ done
+IFS=$as_save_IFS
+ if test -z "$ac_cv_path_SED"; then
+ as_fn_error $? "no acceptable sed could be found in \$PATH" "$LINENO" 5
+ fi
+else
+ ac_cv_path_SED=$SED
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5
+$as_echo "$ac_cv_path_SED" >&6; }
+ SED="$ac_cv_path_SED"
+ rm -f conftest.sed
+
+test -z "$SED" && SED=sed
+Xsed="$SED -e 1s/^X//"
+
+
+
+
+
+
+
+
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5
+$as_echo_n "checking for grep that handles long lines and -e... " >&6; }
+if ${ac_cv_path_GREP+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -z "$GREP"; then
+ ac_path_GREP_found=false
+ # Loop through the user's path and test for each of PROGNAME-LIST
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_prog in grep ggrep; do
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext"
+ as_fn_executable_p "$ac_path_GREP" || continue
+# Check for GNU ac_path_GREP and select it if it is found.
+ # Check for GNU $ac_path_GREP
+case `"$ac_path_GREP" --version 2>&1` in
+*GNU*)
+ ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;;
+*)
+ ac_count=0
+ $as_echo_n 0123456789 >"conftest.in"
+ while :
+ do
+ cat "conftest.in" "conftest.in" >"conftest.tmp"
+ mv "conftest.tmp" "conftest.in"
+ cp "conftest.in" "conftest.nl"
+ $as_echo 'GREP' >> "conftest.nl"
+ "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break
+ diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
+ as_fn_arith $ac_count + 1 && ac_count=$as_val
+ if test $ac_count -gt ${ac_path_GREP_max-0}; then
+ # Best one so far, save it but keep looking for a better one
+ ac_cv_path_GREP="$ac_path_GREP"
+ ac_path_GREP_max=$ac_count
+ fi
+ # 10*(2^10) chars as input seems more than enough
+ test $ac_count -gt 10 && break
+ done
+ rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
+esac
+
+ $ac_path_GREP_found && break 3
+ done
+ done
+ done
+IFS=$as_save_IFS
+ if test -z "$ac_cv_path_GREP"; then
+ as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
+ fi
+else
+ ac_cv_path_GREP=$GREP
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5
+$as_echo "$ac_cv_path_GREP" >&6; }
+ GREP="$ac_cv_path_GREP"
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5
+$as_echo_n "checking for egrep... " >&6; }
+if ${ac_cv_path_EGREP+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if echo a | $GREP -E '(a|b)' >/dev/null 2>&1
+ then ac_cv_path_EGREP="$GREP -E"
+ else
+ if test -z "$EGREP"; then
+ ac_path_EGREP_found=false
+ # Loop through the user's path and test for each of PROGNAME-LIST
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_prog in egrep; do
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext"
+ as_fn_executable_p "$ac_path_EGREP" || continue
+# Check for GNU ac_path_EGREP and select it if it is found.
+ # Check for GNU $ac_path_EGREP
+case `"$ac_path_EGREP" --version 2>&1` in
+*GNU*)
+ ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;;
+*)
+ ac_count=0
+ $as_echo_n 0123456789 >"conftest.in"
+ while :
+ do
+ cat "conftest.in" "conftest.in" >"conftest.tmp"
+ mv "conftest.tmp" "conftest.in"
+ cp "conftest.in" "conftest.nl"
+ $as_echo 'EGREP' >> "conftest.nl"
+ "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break
+ diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
+ as_fn_arith $ac_count + 1 && ac_count=$as_val
+ if test $ac_count -gt ${ac_path_EGREP_max-0}; then
+ # Best one so far, save it but keep looking for a better one
+ ac_cv_path_EGREP="$ac_path_EGREP"
+ ac_path_EGREP_max=$ac_count
+ fi
+ # 10*(2^10) chars as input seems more than enough
+ test $ac_count -gt 10 && break
+ done
+ rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
+esac
+
+ $ac_path_EGREP_found && break 3
+ done
+ done
+ done
+IFS=$as_save_IFS
+ if test -z "$ac_cv_path_EGREP"; then
+ as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
+ fi
+else
+ ac_cv_path_EGREP=$EGREP
+fi
+
+ fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5
+$as_echo "$ac_cv_path_EGREP" >&6; }
+ EGREP="$ac_cv_path_EGREP"
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for fgrep" >&5
+$as_echo_n "checking for fgrep... " >&6; }
+if ${ac_cv_path_FGREP+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if echo 'ab*c' | $GREP -F 'ab*c' >/dev/null 2>&1
+ then ac_cv_path_FGREP="$GREP -F"
+ else
+ if test -z "$FGREP"; then
+ ac_path_FGREP_found=false
+ # Loop through the user's path and test for each of PROGNAME-LIST
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_prog in fgrep; do
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ ac_path_FGREP="$as_dir/$ac_prog$ac_exec_ext"
+ as_fn_executable_p "$ac_path_FGREP" || continue
+# Check for GNU ac_path_FGREP and select it if it is found.
+ # Check for GNU $ac_path_FGREP
+case `"$ac_path_FGREP" --version 2>&1` in
+*GNU*)
+ ac_cv_path_FGREP="$ac_path_FGREP" ac_path_FGREP_found=:;;
+*)
+ ac_count=0
+ $as_echo_n 0123456789 >"conftest.in"
+ while :
+ do
+ cat "conftest.in" "conftest.in" >"conftest.tmp"
+ mv "conftest.tmp" "conftest.in"
+ cp "conftest.in" "conftest.nl"
+ $as_echo 'FGREP' >> "conftest.nl"
+ "$ac_path_FGREP" FGREP < "conftest.nl" >"conftest.out" 2>/dev/null || break
+ diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
+ as_fn_arith $ac_count + 1 && ac_count=$as_val
+ if test $ac_count -gt ${ac_path_FGREP_max-0}; then
+ # Best one so far, save it but keep looking for a better one
+ ac_cv_path_FGREP="$ac_path_FGREP"
+ ac_path_FGREP_max=$ac_count
+ fi
+ # 10*(2^10) chars as input seems more than enough
+ test $ac_count -gt 10 && break
+ done
+ rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
+esac
+
+ $ac_path_FGREP_found && break 3
+ done
+ done
+ done
+IFS=$as_save_IFS
+ if test -z "$ac_cv_path_FGREP"; then
+ as_fn_error $? "no acceptable fgrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
+ fi
+else
+ ac_cv_path_FGREP=$FGREP
+fi
+
+ fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_FGREP" >&5
+$as_echo "$ac_cv_path_FGREP" >&6; }
+ FGREP="$ac_cv_path_FGREP"
+
+
+test -z "$GREP" && GREP=grep
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+# Check whether --with-gnu-ld was given.
+if test "${with_gnu_ld+set}" = set; then :
+ withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes
+else
+ with_gnu_ld=no
+fi
+
+ac_prog=ld
+if test "$GCC" = yes; then
+ # Check if gcc -print-prog-name=ld gives a path.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5
+$as_echo_n "checking for ld used by $CC... " >&6; }
+ case $host in
+ *-*-mingw*)
+ # gcc leaves a trailing carriage return which upsets mingw
+ ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;;
+ *)
+ ac_prog=`($CC -print-prog-name=ld) 2>&5` ;;
+ esac
+ case $ac_prog in
+ # Accept absolute paths.
+ [\\/]* | ?:[\\/]*)
+ re_direlt='/[^/][^/]*/\.\./'
+ # Canonicalize the pathname of ld
+ ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'`
+ while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do
+ ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"`
+ done
+ test -z "$LD" && LD="$ac_prog"
+ ;;
+ "")
+ # If it fails, then pretend we aren't using GCC.
+ ac_prog=ld
+ ;;
+ *)
+ # If it is relative, then search for the first ld in PATH.
+ with_gnu_ld=unknown
+ ;;
+ esac
+elif test "$with_gnu_ld" = yes; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5
+$as_echo_n "checking for GNU ld... " >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5
+$as_echo_n "checking for non-GNU ld... " >&6; }
+fi
+if ${lt_cv_path_LD+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -z "$LD"; then
+ lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+ for ac_dir in $PATH; do
+ IFS="$lt_save_ifs"
+ test -z "$ac_dir" && ac_dir=.
+ if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
+ lt_cv_path_LD="$ac_dir/$ac_prog"
+ # Check to see if the program is GNU ld. I'd rather use --version,
+ # but apparently some variants of GNU ld only accept -v.
+ # Break only if it was the GNU/non-GNU ld that we prefer.
+ case `"$lt_cv_path_LD" -v 2>&1 </dev/null` in
+ *GNU* | *'with BFD'*)
+ test "$with_gnu_ld" != no && break
+ ;;
+ *)
+ test "$with_gnu_ld" != yes && break
+ ;;
+ esac
+ fi
+ done
+ IFS="$lt_save_ifs"
+else
+ lt_cv_path_LD="$LD" # Let the user override the test with a path.
+fi
+fi
+
+LD="$lt_cv_path_LD"
+if test -n "$LD"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LD" >&5
+$as_echo "$LD" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5
+$as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; }
+if ${lt_cv_prog_gnu_ld+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ # I'd rather use --version here, but apparently some GNU lds only accept -v.
+case `$LD -v 2>&1 </dev/null` in
+*GNU* | *'with BFD'*)
+ lt_cv_prog_gnu_ld=yes
+ ;;
+*)
+ lt_cv_prog_gnu_ld=no
+ ;;
+esac
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_gnu_ld" >&5
+$as_echo "$lt_cv_prog_gnu_ld" >&6; }
+with_gnu_ld=$lt_cv_prog_gnu_ld
+
+
+
+
+
+
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for BSD- or MS-compatible name lister (nm)" >&5
+$as_echo_n "checking for BSD- or MS-compatible name lister (nm)... " >&6; }
+if ${lt_cv_path_NM+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$NM"; then
+ # Let the user override the test.
+ lt_cv_path_NM="$NM"
+else
+ lt_nm_to_check="${ac_tool_prefix}nm"
+ if test -n "$ac_tool_prefix" && test "$build" = "$host"; then
+ lt_nm_to_check="$lt_nm_to_check nm"
+ fi
+ for lt_tmp_nm in $lt_nm_to_check; do
+ lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+ for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do
+ IFS="$lt_save_ifs"
+ test -z "$ac_dir" && ac_dir=.
+ tmp_nm="$ac_dir/$lt_tmp_nm"
+ if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then
+ # Check to see if the nm accepts a BSD-compat flag.
+ # Adding the `sed 1q' prevents false positives on HP-UX, which says:
+ # nm: unknown option "B" ignored
+ # Tru64's nm complains that /dev/null is an invalid object file
+ case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in
+ */dev/null* | *'Invalid file or object type'*)
+ lt_cv_path_NM="$tmp_nm -B"
+ break
+ ;;
+ *)
+ case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in
+ */dev/null*)
+ lt_cv_path_NM="$tmp_nm -p"
+ break
+ ;;
+ *)
+ lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but
+ continue # so that we can try to find one that supports BSD flags
+ ;;
+ esac
+ ;;
+ esac
+ fi
+ done
+ IFS="$lt_save_ifs"
+ done
+ : ${lt_cv_path_NM=no}
+fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_NM" >&5
+$as_echo "$lt_cv_path_NM" >&6; }
+if test "$lt_cv_path_NM" != "no"; then
+ NM="$lt_cv_path_NM"
+else
+ # Didn't find any BSD compatible name lister, look for dumpbin.
+ if test -n "$DUMPBIN"; then :
+ # Let the user override the test.
+ else
+ if test -n "$ac_tool_prefix"; then
+ for ac_prog in dumpbin "link -dump"
+ do
+ # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
+set dummy $ac_tool_prefix$ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_DUMPBIN+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$DUMPBIN"; then
+ ac_cv_prog_DUMPBIN="$DUMPBIN" # 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_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_DUMPBIN="$ac_tool_prefix$ac_prog"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+DUMPBIN=$ac_cv_prog_DUMPBIN
+if test -n "$DUMPBIN"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DUMPBIN" >&5
+$as_echo "$DUMPBIN" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$DUMPBIN" && break
+ done
+fi
+if test -z "$DUMPBIN"; then
+ ac_ct_DUMPBIN=$DUMPBIN
+ for ac_prog in dumpbin "link -dump"
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_DUMPBIN+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$ac_ct_DUMPBIN"; then
+ ac_cv_prog_ac_ct_DUMPBIN="$ac_ct_DUMPBIN" # 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_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_ac_ct_DUMPBIN="$ac_prog"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_DUMPBIN=$ac_cv_prog_ac_ct_DUMPBIN
+if test -n "$ac_ct_DUMPBIN"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DUMPBIN" >&5
+$as_echo "$ac_ct_DUMPBIN" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$ac_ct_DUMPBIN" && break
+done
+
+ if test "x$ac_ct_DUMPBIN" = x; then
+ DUMPBIN=":"
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ DUMPBIN=$ac_ct_DUMPBIN
+ fi
+fi
+
+ case `$DUMPBIN -symbols /dev/null 2>&1 | sed '1q'` in
+ *COFF*)
+ DUMPBIN="$DUMPBIN -symbols"
+ ;;
+ *)
+ DUMPBIN=:
+ ;;
+ esac
+ fi
+
+ if test "$DUMPBIN" != ":"; then
+ NM="$DUMPBIN"
+ fi
+fi
+test -z "$NM" && NM=nm
+
+
+
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the name lister ($NM) interface" >&5
+$as_echo_n "checking the name lister ($NM) interface... " >&6; }
+if ${lt_cv_nm_interface+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ lt_cv_nm_interface="BSD nm"
+ echo "int some_variable = 0;" > conftest.$ac_ext
+ (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&5)
+ (eval "$ac_compile" 2>conftest.err)
+ cat conftest.err >&5
+ (eval echo "\"\$as_me:$LINENO: $NM \\\"conftest.$ac_objext\\\"\"" >&5)
+ (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out)
+ cat conftest.err >&5
+ (eval echo "\"\$as_me:$LINENO: output\"" >&5)
+ cat conftest.out >&5
+ if $GREP 'External.*some_variable' conftest.out > /dev/null; then
+ lt_cv_nm_interface="MS dumpbin"
+ fi
+ rm -f conftest*
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_nm_interface" >&5
+$as_echo "$lt_cv_nm_interface" >&6; }
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ln -s works" >&5
+$as_echo_n "checking whether ln -s works... " >&6; }
+LN_S=$as_ln_s
+if test "$LN_S" = "ln -s"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no, using $LN_S" >&5
+$as_echo "no, using $LN_S" >&6; }
+fi
+
+# find the maximum length of command line arguments
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the maximum length of command line arguments" >&5
+$as_echo_n "checking the maximum length of command line arguments... " >&6; }
+if ${lt_cv_sys_max_cmd_len+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ i=0
+ teststring="ABCD"
+
+ case $build_os in
+ msdosdjgpp*)
+ # On DJGPP, this test can blow up pretty badly due to problems in libc
+ # (any single argument exceeding 2000 bytes causes a buffer overrun
+ # during glob expansion). Even if it were fixed, the result of this
+ # check would be larger than it should be.
+ lt_cv_sys_max_cmd_len=12288; # 12K is about right
+ ;;
+
+ gnu*)
+ # Under GNU Hurd, this test is not required because there is
+ # no limit to the length of command line arguments.
+ # Libtool will interpret -1 as no limit whatsoever
+ lt_cv_sys_max_cmd_len=-1;
+ ;;
+
+ cygwin* | mingw* | cegcc*)
+ # 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;
+ ;;
+
+ mint*)
+ # On MiNT this can take a long time and run out of memory.
+ lt_cv_sys_max_cmd_len=8192;
+ ;;
+
+ amigaos*)
+ # On AmigaOS with pdksh, this test takes hours, literally.
+ # So we just punt and use a minimum line length of 8192.
+ lt_cv_sys_max_cmd_len=8192;
+ ;;
+
+ netbsd* | freebsd* | openbsd* | darwin* | dragonfly*)
+ # This has been around since 386BSD, at least. Likely further.
+ if test -x /sbin/sysctl; then
+ lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax`
+ elif test -x /usr/sbin/sysctl; then
+ lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax`
+ else
+ lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs
+ fi
+ # And add a safety zone
+ lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4`
+ lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3`
+ ;;
+
+ interix*)
+ # We know the value 262144 and hardcode it with a safety zone (like BSD)
+ lt_cv_sys_max_cmd_len=196608
+ ;;
+
+ os2*)
+ # The test takes a long time on OS/2.
+ lt_cv_sys_max_cmd_len=8192
+ ;;
+
+ osf*)
+ # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure
+ # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not
+ # nice to cause kernel panics so lets avoid the loop below.
+ # First set a reasonable default.
+ lt_cv_sys_max_cmd_len=16384
+ #
+ if test -x /sbin/sysconfig; then
+ case `/sbin/sysconfig -q proc exec_disable_arg_limit` in
+ *1*) lt_cv_sys_max_cmd_len=-1 ;;
+ esac
+ fi
+ ;;
+ sco3.2v5*)
+ lt_cv_sys_max_cmd_len=102400
+ ;;
+ sysv5* | sco5v6* | sysv4.2uw2*)
+ kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null`
+ if test -n "$kargmax"; then
+ lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[ ]//'`
+ else
+ lt_cv_sys_max_cmd_len=32768
+ fi
+ ;;
+ *)
+ lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null`
+ if test -n "$lt_cv_sys_max_cmd_len"; then
+ lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4`
+ lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3`
+ else
+ # Make teststring a little bigger before we do anything with it.
+ # a 1K string should be a reasonable start.
+ for i in 1 2 3 4 5 6 7 8 ; do
+ teststring=$teststring$teststring
+ done
+ SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}}
+ # 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"`env echo "$teststring$teststring" 2>/dev/null` \
+ = "X$teststring$teststring"; } >/dev/null 2>&1 &&
+ test $i != 17 # 1/2 MB should be enough
+ do
+ i=`expr $i + 1`
+ teststring=$teststring$teststring
+ done
+ # Only check the string length outside the loop.
+ lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1`
+ teststring=
+ # Add a significant safety factor because C++ compilers can tack on
+ # massive amounts of additional arguments before passing them to the
+ # linker. It appears as though 1/2 is a usable value.
+ lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2`
+ fi
+ ;;
+ esac
+
+fi
+
+if test -n $lt_cv_sys_max_cmd_len ; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sys_max_cmd_len" >&5
+$as_echo "$lt_cv_sys_max_cmd_len" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: none" >&5
+$as_echo "none" >&6; }
+fi
+max_cmd_len=$lt_cv_sys_max_cmd_len
+
+
+
+
+
+
+: ${CP="cp -f"}
+: ${MV="mv -f"}
+: ${RM="rm -f"}
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the shell understands some XSI constructs" >&5
+$as_echo_n "checking whether the shell understands some XSI constructs... " >&6; }
+# Try some XSI features
+xsi_shell=no
+( _lt_dummy="a/b/c"
+ test "${_lt_dummy##*/},${_lt_dummy%/*},${_lt_dummy#??}"${_lt_dummy%"$_lt_dummy"}, \
+ = c,a/b,b/c, \
+ && eval 'test $(( 1 + 1 )) -eq 2 \
+ && test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \
+ && xsi_shell=yes
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xsi_shell" >&5
+$as_echo "$xsi_shell" >&6; }
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the shell understands \"+=\"" >&5
+$as_echo_n "checking whether the shell understands \"+=\"... " >&6; }
+lt_shell_append=no
+( foo=bar; set foo baz; eval "$1+=\$2" && test "$foo" = barbaz ) \
+ >/dev/null 2>&1 \
+ && lt_shell_append=yes
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_shell_append" >&5
+$as_echo "$lt_shell_append" >&6; }
+
+
+if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then
+ lt_unset=unset
+else
+ lt_unset=false
+fi
+
+
+
+
+
+# test EBCDIC or ASCII
+case `echo X|tr X '\101'` in
+ A) # ASCII based system
+ # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr
+ lt_SP2NL='tr \040 \012'
+ lt_NL2SP='tr \015\012 \040\040'
+ ;;
+ *) # EBCDIC based system
+ lt_SP2NL='tr \100 \n'
+ lt_NL2SP='tr \r\n \100\100'
+ ;;
+esac
+
+
+
+
+
+
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to $host format" >&5
+$as_echo_n "checking how to convert $build file names to $host format... " >&6; }
+if ${lt_cv_to_host_file_cmd+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $host in
+ *-*-mingw* )
+ case $build in
+ *-*-mingw* ) # actually msys
+ lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32
+ ;;
+ *-*-cygwin* )
+ lt_cv_to_host_file_cmd=func_convert_file_cygwin_to_w32
+ ;;
+ * ) # otherwise, assume *nix
+ lt_cv_to_host_file_cmd=func_convert_file_nix_to_w32
+ ;;
+ esac
+ ;;
+ *-*-cygwin* )
+ case $build in
+ *-*-mingw* ) # actually msys
+ lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin
+ ;;
+ *-*-cygwin* )
+ lt_cv_to_host_file_cmd=func_convert_file_noop
+ ;;
+ * ) # otherwise, assume *nix
+ lt_cv_to_host_file_cmd=func_convert_file_nix_to_cygwin
+ ;;
+ esac
+ ;;
+ * ) # unhandled hosts (and "normal" native builds)
+ lt_cv_to_host_file_cmd=func_convert_file_noop
+ ;;
+esac
+
+fi
+
+to_host_file_cmd=$lt_cv_to_host_file_cmd
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_host_file_cmd" >&5
+$as_echo "$lt_cv_to_host_file_cmd" >&6; }
+
+
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to toolchain format" >&5
+$as_echo_n "checking how to convert $build file names to toolchain format... " >&6; }
+if ${lt_cv_to_tool_file_cmd+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ #assume ordinary cross tools, or native build.
+lt_cv_to_tool_file_cmd=func_convert_file_noop
+case $host in
+ *-*-mingw* )
+ case $build in
+ *-*-mingw* ) # actually msys
+ lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32
+ ;;
+ esac
+ ;;
+esac
+
+fi
+
+to_tool_file_cmd=$lt_cv_to_tool_file_cmd
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_tool_file_cmd" >&5
+$as_echo "$lt_cv_to_tool_file_cmd" >&6; }
+
+
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $LD option to reload object files" >&5
+$as_echo_n "checking for $LD option to reload object files... " >&6; }
+if ${lt_cv_ld_reload_flag+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ lt_cv_ld_reload_flag='-r'
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_reload_flag" >&5
+$as_echo "$lt_cv_ld_reload_flag" >&6; }
+reload_flag=$lt_cv_ld_reload_flag
+case $reload_flag in
+"" | " "*) ;;
+*) reload_flag=" $reload_flag" ;;
+esac
+reload_cmds='$LD$reload_flag -o $output$reload_objs'
+case $host_os in
+ cygwin* | mingw* | pw32* | cegcc*)
+ if test "$GCC" != yes; then
+ reload_cmds=false
+ fi
+ ;;
+ darwin*)
+ if test "$GCC" = yes; then
+ reload_cmds='$LTCC $LTCFLAGS -nostdlib ${wl}-r -o $output$reload_objs'
+ else
+ reload_cmds='$LD$reload_flag -o $output$reload_objs'
+ fi
+ ;;
+esac
+
+
+
+
+
+
+
+
+
+if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}objdump", so it can be a program name with args.
+set dummy ${ac_tool_prefix}objdump; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_OBJDUMP+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$OBJDUMP"; then
+ ac_cv_prog_OBJDUMP="$OBJDUMP" # 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_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_OBJDUMP="${ac_tool_prefix}objdump"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+OBJDUMP=$ac_cv_prog_OBJDUMP
+if test -n "$OBJDUMP"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OBJDUMP" >&5
+$as_echo "$OBJDUMP" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_OBJDUMP"; then
+ ac_ct_OBJDUMP=$OBJDUMP
+ # Extract the first word of "objdump", so it can be a program name with args.
+set dummy objdump; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_OBJDUMP+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$ac_ct_OBJDUMP"; then
+ ac_cv_prog_ac_ct_OBJDUMP="$ac_ct_OBJDUMP" # 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_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_ac_ct_OBJDUMP="objdump"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_OBJDUMP=$ac_cv_prog_ac_ct_OBJDUMP
+if test -n "$ac_ct_OBJDUMP"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OBJDUMP" >&5
+$as_echo "$ac_ct_OBJDUMP" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+ if test "x$ac_ct_OBJDUMP" = x; then
+ OBJDUMP="false"
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ OBJDUMP=$ac_ct_OBJDUMP
+ fi
+else
+ OBJDUMP="$ac_cv_prog_OBJDUMP"
+fi
+
+test -z "$OBJDUMP" && OBJDUMP=objdump
+
+
+
+
+
+
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to recognize dependent libraries" >&5
+$as_echo_n "checking how to recognize dependent libraries... " >&6; }
+if ${lt_cv_deplibs_check_method+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ lt_cv_file_magic_cmd='$MAGIC_CMD'
+lt_cv_file_magic_test_file=
+lt_cv_deplibs_check_method='unknown'
+# Need to set the preceding variable on all platforms that support
+# interlibrary dependencies.
+# 'none' -- dependencies not supported.
+# `unknown' -- same as none, but documents that we really don't know.
+# 'pass_all' -- all dependencies passed with no checks.
+# 'test_compile' -- check by making test program.
+# 'file_magic [[regex]]' -- check by looking for files in library path
+# which responds to the $file_magic_cmd with a given extended regex.
+# If you have `file' or equivalent on your system and you're not sure
+# whether `pass_all' will *always* work, you probably want this one.
+
+case $host_os in
+aix[4-9]*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+beos*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+bsdi[45]*)
+ lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)'
+ lt_cv_file_magic_cmd='/usr/bin/file -L'
+ lt_cv_file_magic_test_file=/shlib/libc.so
+ ;;
+
+cygwin*)
+ # func_win32_libid is a shell function defined in ltmain.sh
+ lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL'
+ lt_cv_file_magic_cmd='func_win32_libid'
+ ;;
+
+mingw* | pw32*)
+ # Base MSYS/MinGW do not provide the 'file' command needed by
+ # func_win32_libid shell function, so use a weaker test based on 'objdump',
+ # unless we find 'file', for example because we are cross-compiling.
+ # func_win32_libid assumes BSD nm, so disallow it if using MS dumpbin.
+ if ( test "$lt_cv_nm_interface" = "BSD nm" && file / ) >/dev/null 2>&1; then
+ lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL'
+ lt_cv_file_magic_cmd='func_win32_libid'
+ else
+ # Keep this pattern in sync with the one in func_win32_libid.
+ lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)'
+ lt_cv_file_magic_cmd='$OBJDUMP -f'
+ fi
+ ;;
+
+cegcc*)
+ # use the weaker test based on 'objdump'. See mingw*.
+ lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?'
+ lt_cv_file_magic_cmd='$OBJDUMP -f'
+ ;;
+
+darwin* | rhapsody*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+freebsd* | dragonfly*)
+ if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then
+ case $host_cpu in
+ i*86 )
+ # Not sure whether the presence of OpenBSD here was a mistake.
+ # Let's accept both of them until this is cleared up.
+ lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[3-9]86 (compact )?demand paged shared library'
+ lt_cv_file_magic_cmd=/usr/bin/file
+ lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*`
+ ;;
+ esac
+ else
+ lt_cv_deplibs_check_method=pass_all
+ fi
+ ;;
+
+gnu*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+haiku*)
+ 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])(-bit)?( [LM]SB)? shared object( file)?[, -]* PA-RISC [0-9]\.[0-9]'
+ lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl
+ ;;
+ *)
+ lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9]\.[0-9]) shared library'
+ lt_cv_file_magic_test_file=/usr/lib/libc.sl
+ ;;
+ esac
+ ;;
+
+interix[3-9]*)
+ # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here
+ lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|\.a)$'
+ ;;
+
+irix5* | irix6* | nonstopux*)
+ case $LD in
+ *-32|*"-32 ") libmagic=32-bit;;
+ *-n32|*"-n32 ") libmagic=N32;;
+ *-64|*"-64 ") libmagic=64-bit;;
+ *) libmagic=never-match;;
+ esac
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+# This must be glibc/ELF.
+linux* | k*bsd*-gnu | kopensolaris*-gnu)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+netbsd* | netbsdelf*-gnu)
+ 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=pass_all
+ ;;
+
+openbsd*)
+ if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+ lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|\.so|_pic\.a)$'
+ else
+ lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$'
+ fi
+ ;;
+
+osf3* | osf4* | osf5*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+rdos*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+solaris*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+sysv4 | sysv4.3*)
+ case $host_vendor in
+ motorola)
+ lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib) M[0-9][0-9]* Version [0-9]'
+ lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*`
+ ;;
+ ncr)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+ sequent)
+ lt_cv_file_magic_cmd='/bin/file'
+ lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )'
+ ;;
+ sni)
+ lt_cv_file_magic_cmd='/bin/file'
+ lt_cv_deplibs_check_method="file_magic ELF [0-9][0-9]*-bit [LM]SB dynamic lib"
+ lt_cv_file_magic_test_file=/lib/libc.so
+ ;;
+ siemens)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+ pc)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+ esac
+ ;;
+
+tpf*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+esac
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_deplibs_check_method" >&5
+$as_echo "$lt_cv_deplibs_check_method" >&6; }
+
+file_magic_glob=
+want_nocaseglob=no
+if test "$build" = "$host"; then
+ case $host_os in
+ mingw* | pw32*)
+ if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then
+ want_nocaseglob=yes
+ else
+ file_magic_glob=`echo aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ | $SED -e "s/\(..\)/s\/[\1]\/[\1]\/g;/g"`
+ fi
+ ;;
+ esac
+fi
+
+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 test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}dlltool", so it can be a program name with args.
+set dummy ${ac_tool_prefix}dlltool; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_DLLTOOL+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$DLLTOOL"; then
+ ac_cv_prog_DLLTOOL="$DLLTOOL" # 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_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_DLLTOOL="${ac_tool_prefix}dlltool"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+DLLTOOL=$ac_cv_prog_DLLTOOL
+if test -n "$DLLTOOL"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DLLTOOL" >&5
+$as_echo "$DLLTOOL" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_DLLTOOL"; then
+ ac_ct_DLLTOOL=$DLLTOOL
+ # Extract the first word of "dlltool", so it can be a program name with args.
+set dummy dlltool; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_DLLTOOL+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$ac_ct_DLLTOOL"; then
+ ac_cv_prog_ac_ct_DLLTOOL="$ac_ct_DLLTOOL" # 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_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_ac_ct_DLLTOOL="dlltool"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_DLLTOOL=$ac_cv_prog_ac_ct_DLLTOOL
+if test -n "$ac_ct_DLLTOOL"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DLLTOOL" >&5
+$as_echo "$ac_ct_DLLTOOL" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+ if test "x$ac_ct_DLLTOOL" = x; then
+ DLLTOOL="false"
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ DLLTOOL=$ac_ct_DLLTOOL
+ fi
+else
+ DLLTOOL="$ac_cv_prog_DLLTOOL"
+fi
+
+test -z "$DLLTOOL" && DLLTOOL=dlltool
+
+
+
+
+
+
+
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to associate runtime and link libraries" >&5
+$as_echo_n "checking how to associate runtime and link libraries... " >&6; }
+if ${lt_cv_sharedlib_from_linklib_cmd+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ lt_cv_sharedlib_from_linklib_cmd='unknown'
+
+case $host_os in
+cygwin* | mingw* | pw32* | cegcc*)
+ # two different shell functions defined in ltmain.sh
+ # decide which to use based on capabilities of $DLLTOOL
+ case `$DLLTOOL --help 2>&1` in
+ *--identify-strict*)
+ lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib
+ ;;
+ *)
+ lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib_fallback
+ ;;
+ esac
+ ;;
+*)
+ # fallback: assume linklib IS sharedlib
+ lt_cv_sharedlib_from_linklib_cmd="$ECHO"
+ ;;
+esac
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sharedlib_from_linklib_cmd" >&5
+$as_echo "$lt_cv_sharedlib_from_linklib_cmd" >&6; }
+sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd
+test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO
+
+
+
+
+
+
+
+
+if test -n "$ac_tool_prefix"; then
+ for ac_prog in ar
+ do
+ # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
+set dummy $ac_tool_prefix$ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_AR+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$AR"; then
+ ac_cv_prog_AR="$AR" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_AR="$ac_tool_prefix$ac_prog"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+AR=$ac_cv_prog_AR
+if test -n "$AR"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AR" >&5
+$as_echo "$AR" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$AR" && break
+ done
+fi
+if test -z "$AR"; then
+ ac_ct_AR=$AR
+ for ac_prog in ar
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_AR+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$ac_ct_AR"; then
+ ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_ac_ct_AR="$ac_prog"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_AR=$ac_cv_prog_ac_ct_AR
+if test -n "$ac_ct_AR"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5
+$as_echo "$ac_ct_AR" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$ac_ct_AR" && break
+done
+
+ if test "x$ac_ct_AR" = x; then
+ AR="false"
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ AR=$ac_ct_AR
+ fi
+fi
+
+: ${AR=ar}
+: ${AR_FLAGS=cru}
+
+
+
+
+
+
+
+
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for archiver @FILE support" >&5
+$as_echo_n "checking for archiver @FILE support... " >&6; }
+if ${lt_cv_ar_at_file+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ lt_cv_ar_at_file=no
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ echo conftest.$ac_objext > conftest.lst
+ lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&5'
+ { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5
+ (eval $lt_ar_try) 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }
+ if test "$ac_status" -eq 0; then
+ # Ensure the archiver fails upon bogus file names.
+ rm -f conftest.$ac_objext libconftest.a
+ { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5
+ (eval $lt_ar_try) 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }
+ if test "$ac_status" -ne 0; then
+ lt_cv_ar_at_file=@
+ fi
+ fi
+ rm -f conftest.* libconftest.a
+
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ar_at_file" >&5
+$as_echo "$lt_cv_ar_at_file" >&6; }
+
+if test "x$lt_cv_ar_at_file" = xno; then
+ archiver_list_spec=
+else
+ archiver_list_spec=$lt_cv_ar_at_file
+fi
+
+
+
+
+
+
+
+if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args.
+set dummy ${ac_tool_prefix}strip; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_STRIP+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$STRIP"; then
+ ac_cv_prog_STRIP="$STRIP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_STRIP="${ac_tool_prefix}strip"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+STRIP=$ac_cv_prog_STRIP
+if test -n "$STRIP"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5
+$as_echo "$STRIP" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_STRIP"; then
+ ac_ct_STRIP=$STRIP
+ # Extract the first word of "strip", so it can be a program name with args.
+set dummy strip; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_STRIP+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$ac_ct_STRIP"; then
+ ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_ac_ct_STRIP="strip"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP
+if test -n "$ac_ct_STRIP"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5
+$as_echo "$ac_ct_STRIP" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+ if test "x$ac_ct_STRIP" = x; then
+ STRIP=":"
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ STRIP=$ac_ct_STRIP
+ fi
+else
+ STRIP="$ac_cv_prog_STRIP"
+fi
+
+test -z "$STRIP" && STRIP=:
+
+
+
+
+
+
+if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args.
+set dummy ${ac_tool_prefix}ranlib; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_RANLIB+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$RANLIB"; then
+ ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+RANLIB=$ac_cv_prog_RANLIB
+if test -n "$RANLIB"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5
+$as_echo "$RANLIB" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_RANLIB"; then
+ ac_ct_RANLIB=$RANLIB
+ # Extract the first word of "ranlib", so it can be a program name with args.
+set dummy ranlib; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_RANLIB+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$ac_ct_RANLIB"; then
+ ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_ac_ct_RANLIB="ranlib"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB
+if test -n "$ac_ct_RANLIB"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5
+$as_echo "$ac_ct_RANLIB" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+ if test "x$ac_ct_RANLIB" = x; then
+ RANLIB=":"
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ RANLIB=$ac_ct_RANLIB
+ fi
+else
+ RANLIB="$ac_cv_prog_RANLIB"
+fi
+
+test -z "$RANLIB" && RANLIB=:
+
+
+
+
+
+
+# Determine commands to create old-style static archives.
+old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs'
+old_postinstall_cmds='chmod 644 $oldlib'
+old_postuninstall_cmds=
+
+if test -n "$RANLIB"; then
+ case $host_os in
+ openbsd*)
+ old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$tool_oldlib"
+ ;;
+ *)
+ old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$tool_oldlib"
+ ;;
+ esac
+ old_archive_cmds="$old_archive_cmds~\$RANLIB \$tool_oldlib"
+fi
+
+case $host_os in
+ darwin*)
+ lock_old_archive_extraction=yes ;;
+ *)
+ lock_old_archive_extraction=no ;;
+esac
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+# If no C compiler was specified, use CC.
+LTCC=${LTCC-"$CC"}
+
+# If no C compiler flags were specified, use CFLAGS.
+LTCFLAGS=${LTCFLAGS-"$CFLAGS"}
+
+# Allow CC to be a program name with arguments.
+compiler=$CC
+
+
+# Check for command to grab the raw symbol name followed by C symbol from nm.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking command to parse $NM output from $compiler object" >&5
+$as_echo_n "checking command to parse $NM output from $compiler object... " >&6; }
+if ${lt_cv_sys_global_symbol_pipe+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+
+# These are sane defaults that work on at least a few old systems.
+# [They come from Ultrix. What could be older than Ultrix?!! ;)]
+
+# Character class describing NM global symbol codes.
+symcode='[BCDEGRST]'
+
+# Regexp to match symbols that can be accessed directly from C.
+sympat='\([_A-Za-z][_A-Za-z0-9]*\)'
+
+# Define system-specific variables.
+case $host_os in
+aix*)
+ symcode='[BCDT]'
+ ;;
+cygwin* | mingw* | pw32* | cegcc*)
+ symcode='[ABCDGISTW]'
+ ;;
+hpux*)
+ if test "$host_cpu" = ia64; then
+ symcode='[ABCDEGRST]'
+ fi
+ ;;
+irix* | nonstopux*)
+ symcode='[BCDEGRST]'
+ ;;
+osf*)
+ symcode='[BCDEGQRST]'
+ ;;
+solaris*)
+ symcode='[BDRT]'
+ ;;
+sco3.2v5*)
+ symcode='[DT]'
+ ;;
+sysv4.2uw2*)
+ symcode='[DT]'
+ ;;
+sysv5* | sco5v6* | unixware* | OpenUNIX*)
+ symcode='[ABDT]'
+ ;;
+sysv4)
+ symcode='[DFNSTU]'
+ ;;
+esac
+
+# If we're using GNU nm, then use its standard symbol codes.
+case `$NM -V 2>&1` in
+*GNU* | *'with BFD'*)
+ symcode='[ABCDGIRSTW]' ;;
+esac
+
+# Transform an extracted symbol line into a proper C declaration.
+# Some systems (esp. on ia64) link data and code symbols differently,
+# so use this general approach.
+lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \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\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"\2\", (void *) \&\2},/p'"
+lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([^ ]*\)[ ]*$/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \(lib[^ ]*\)$/ {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"lib\2\", (void *) \&\2},/p'"
+
+# 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
+
+# Try without a prefix underscore, then with it.
+for ac_symprfx in "" "_"; do
+
+ # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol.
+ symxfrm="\\1 $ac_symprfx\\2 \\2"
+
+ # Write the raw and C identifiers.
+ if test "$lt_cv_nm_interface" = "MS dumpbin"; then
+ # Fake it for dumpbin and say T for any non-static function
+ # and D for any global variable.
+ # Also find C++ and __fastcall symbols from MSVC++,
+ # which start with @ or ?.
+ lt_cv_sys_global_symbol_pipe="$AWK '"\
+" {last_section=section; section=\$ 3};"\
+" /^COFF SYMBOL TABLE/{for(i in hide) delete hide[i]};"\
+" /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\
+" \$ 0!~/External *\|/{next};"\
+" / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\
+" {if(hide[section]) next};"\
+" {f=0}; \$ 0~/\(\).*\|/{f=1}; {printf f ? \"T \" : \"D \"};"\
+" {split(\$ 0, a, /\||\r/); split(a[2], s)};"\
+" s[1]~/^[@?]/{print s[1], s[1]; next};"\
+" s[1]~prfx {split(s[1],t,\"@\"); print t[1], substr(t[1],length(prfx))}"\
+" ' prfx=^$ac_symprfx"
+ else
+ lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[ ]\($symcode$symcode*\)[ ][ ]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'"
+ fi
+ lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | sed '/ __gnu_lto/d'"
+
+ # Check to see that the pipe works correctly.
+ pipe_works=no
+
+ rm -f conftest*
+ cat > conftest.$ac_ext <<_LT_EOF
+#ifdef __cplusplus
+extern "C" {
+#endif
+char nm_test_var;
+void nm_test_func(void);
+void nm_test_func(void){}
+#ifdef __cplusplus
+}
+#endif
+int main(){nm_test_var='a';nm_test_func();return(0);}
+_LT_EOF
+
+ if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; then
+ # Now try to grab the symbols.
+ nlist=conftest.nm
+ if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist\""; } >&5
+ (eval $NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist) 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; } && 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 <<_LT_EOF > conftest.$ac_ext
+/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */
+#if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE)
+/* DATA imports from DLLs on WIN32 con't be const, because runtime
+ relocations are performed -- see ld's documentation on pseudo-relocs. */
+# define LT_DLSYM_CONST
+#elif defined(__osf__)
+/* This system does not cope well with relocations in const data. */
+# define LT_DLSYM_CONST
+#else
+# define LT_DLSYM_CONST const
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+_LT_EOF
+ # Now generate the symbol file.
+ eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext'
+
+ cat <<_LT_EOF >> conftest.$ac_ext
+
+/* The mapping between symbol names and symbols. */
+LT_DLSYM_CONST struct {
+ const char *name;
+ void *address;
+}
+lt__PROGRAM__LTX_preloaded_symbols[] =
+{
+ { "@PROGRAM@", (void *) 0 },
+_LT_EOF
+ $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (void *) \&\2},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext
+ cat <<\_LT_EOF >> conftest.$ac_ext
+ {0, (void *) 0}
+};
+
+/* This works around a problem in FreeBSD linker */
+#ifdef FREEBSD_WORKAROUND
+static const void *lt_preloaded_setup() {
+ return lt__PROGRAM__LTX_preloaded_symbols;
+}
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+_LT_EOF
+ # Now try linking the two files.
+ mv conftest.$ac_objext conftstm.$ac_objext
+ lt_globsym_save_LIBS=$LIBS
+ lt_globsym_save_CFLAGS=$CFLAGS
+ LIBS="conftstm.$ac_objext"
+ CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag"
+ if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; } && test -s conftest${ac_exeext}; then
+ pipe_works=yes
+ fi
+ LIBS=$lt_globsym_save_LIBS
+ CFLAGS=$lt_globsym_save_CFLAGS
+ else
+ echo "cannot find nm_test_func in $nlist" >&5
+ fi
+ else
+ echo "cannot find nm_test_var in $nlist" >&5
+ fi
+ else
+ echo "cannot run $lt_cv_sys_global_symbol_pipe" >&5
+ fi
+ else
+ echo "$progname: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ fi
+ rm -rf conftest* conftst*
+
+ # Do not use the global_symbol_pipe unless it works.
+ if test "$pipe_works" = yes; then
+ break
+ else
+ lt_cv_sys_global_symbol_pipe=
+ fi
+done
+
+fi
+
+if test -z "$lt_cv_sys_global_symbol_pipe"; then
+ lt_cv_sys_global_symbol_to_cdecl=
+fi
+if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: failed" >&5
+$as_echo "failed" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok" >&5
+$as_echo "ok" >&6; }
+fi
+
+# Response file support.
+if test "$lt_cv_nm_interface" = "MS dumpbin"; then
+ nm_file_list_spec='@'
+elif $NM --help 2>/dev/null | grep '[@]FILE' >/dev/null; then
+ nm_file_list_spec='@'
+fi
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sysroot" >&5
+$as_echo_n "checking for sysroot... " >&6; }
+
+# Check whether --with-sysroot was given.
+if test "${with_sysroot+set}" = set; then :
+ withval=$with_sysroot;
+else
+ with_sysroot=no
+fi
+
+
+lt_sysroot=
+case ${with_sysroot} in #(
+ yes)
+ if test "$GCC" = yes; then
+ lt_sysroot=`$CC --print-sysroot 2>/dev/null`
+ fi
+ ;; #(
+ /*)
+ lt_sysroot=`echo "$with_sysroot" | sed -e "$sed_quote_subst"`
+ ;; #(
+ no|'')
+ ;; #(
+ *)
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${with_sysroot}" >&5
+$as_echo "${with_sysroot}" >&6; }
+ as_fn_error $? "The sysroot must be an absolute path." "$LINENO" 5
+ ;;
+esac
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${lt_sysroot:-no}" >&5
+$as_echo "${lt_sysroot:-no}" >&6; }
+
+
+
+
+
+# Check whether --enable-libtool-lock was given.
+if test "${enable_libtool_lock+set}" = set; then :
+ enableval=$enable_libtool_lock;
+fi
+
+test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes
+
+# Some flags need to be propagated to the compiler or linker for good
+# libtool support.
+case $host in
+ia64-*-hpux*)
+ # Find out which ABI we are using.
+ echo 'int i;' > conftest.$ac_ext
+ if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; 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 '$LINENO' "configure"' > conftest.$ac_ext
+ if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; then
+ if test "$lt_cv_prog_gnu_ld" = yes; then
+ case `/usr/bin/file conftest.$ac_objext` in
+ *32-bit*)
+ LD="${LD-ld} -melf32bsmip"
+ ;;
+ *N32*)
+ LD="${LD-ld} -melf32bmipn32"
+ ;;
+ *64-bit*)
+ LD="${LD-ld} -melf64bmip"
+ ;;
+ esac
+ else
+ case `/usr/bin/file conftest.$ac_objext` in
+ *32-bit*)
+ LD="${LD-ld} -32"
+ ;;
+ *N32*)
+ LD="${LD-ld} -n32"
+ ;;
+ *64-bit*)
+ LD="${LD-ld} -64"
+ ;;
+ esac
+ fi
+ fi
+ rm -rf conftest*
+ ;;
+
+x86_64-*kfreebsd*-gnu|x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*| \
+s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
+ # Find out which ABI we are using.
+ echo 'int i;' > conftest.$ac_ext
+ if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; then
+ case `/usr/bin/file conftest.o` in
+ *32-bit*)
+ case $host in
+ x86_64-*kfreebsd*-gnu)
+ LD="${LD-ld} -m elf_i386_fbsd"
+ ;;
+ x86_64-*linux*)
+ LD="${LD-ld} -m elf_i386"
+ ;;
+ ppc64-*linux*|powerpc64-*linux*)
+ LD="${LD-ld} -m elf32ppclinux"
+ ;;
+ s390x-*linux*)
+ LD="${LD-ld} -m elf_s390"
+ ;;
+ sparc64-*linux*)
+ LD="${LD-ld} -m elf32_sparc"
+ ;;
+ esac
+ ;;
+ *64-bit*)
+ case $host in
+ x86_64-*kfreebsd*-gnu)
+ LD="${LD-ld} -m elf_x86_64_fbsd"
+ ;;
+ x86_64-*linux*)
+ LD="${LD-ld} -m elf_x86_64"
+ ;;
+ ppc*-*linux*|powerpc*-*linux*)
+ LD="${LD-ld} -m elf64ppc"
+ ;;
+ s390*-*linux*|s390*-*tpf*)
+ LD="${LD-ld} -m elf64_s390"
+ ;;
+ sparc*-*linux*)
+ LD="${LD-ld} -m elf64_sparc"
+ ;;
+ esac
+ ;;
+ esac
+ fi
+ rm -rf conftest*
+ ;;
+
+*-*-sco3.2v5*)
+ # On SCO OpenServer 5, we need -belf to get full-featured binaries.
+ SAVE_CFLAGS="$CFLAGS"
+ CFLAGS="$CFLAGS -belf"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler needs -belf" >&5
+$as_echo_n "checking whether the C compiler needs -belf... " >&6; }
+if ${lt_cv_cc_needs_belf+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ lt_cv_cc_needs_belf=yes
+else
+ lt_cv_cc_needs_belf=no
+fi
+rm -f core conftest.err 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
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_cc_needs_belf" >&5
+$as_echo "$lt_cv_cc_needs_belf" >&6; }
+ if test x"$lt_cv_cc_needs_belf" != x"yes"; then
+ # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf
+ CFLAGS="$SAVE_CFLAGS"
+ fi
+ ;;
+*-*solaris*)
+ # Find out which ABI we are using.
+ echo 'int i;' > conftest.$ac_ext
+ if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; then
+ case `/usr/bin/file conftest.o` in
+ *64-bit*)
+ case $lt_cv_prog_gnu_ld in
+ yes*)
+ case $host in
+ i?86-*-solaris*)
+ LD="${LD-ld} -m elf_x86_64"
+ ;;
+ sparc*-*-solaris*)
+ LD="${LD-ld} -m elf64_sparc"
+ ;;
+ esac
+ # GNU ld 2.21 introduced _sol2 emulations. Use them if available.
+ if ${LD-ld} -V | grep _sol2 >/dev/null 2>&1; then
+ LD="${LD-ld}_sol2"
+ fi
+ ;;
+ *)
+ if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then
+ LD="${LD-ld} -64"
+ fi
+ ;;
+ esac
+ ;;
+ esac
+ fi
+ rm -rf conftest*
+ ;;
+esac
+
+need_locks="$enable_libtool_lock"
+
+if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}mt", so it can be a program name with args.
+set dummy ${ac_tool_prefix}mt; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_MANIFEST_TOOL+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$MANIFEST_TOOL"; then
+ ac_cv_prog_MANIFEST_TOOL="$MANIFEST_TOOL" # 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_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_MANIFEST_TOOL="${ac_tool_prefix}mt"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+MANIFEST_TOOL=$ac_cv_prog_MANIFEST_TOOL
+if test -n "$MANIFEST_TOOL"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MANIFEST_TOOL" >&5
+$as_echo "$MANIFEST_TOOL" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_MANIFEST_TOOL"; then
+ ac_ct_MANIFEST_TOOL=$MANIFEST_TOOL
+ # Extract the first word of "mt", so it can be a program name with args.
+set dummy mt; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_MANIFEST_TOOL+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$ac_ct_MANIFEST_TOOL"; then
+ ac_cv_prog_ac_ct_MANIFEST_TOOL="$ac_ct_MANIFEST_TOOL" # 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_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_ac_ct_MANIFEST_TOOL="mt"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_MANIFEST_TOOL=$ac_cv_prog_ac_ct_MANIFEST_TOOL
+if test -n "$ac_ct_MANIFEST_TOOL"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_MANIFEST_TOOL" >&5
+$as_echo "$ac_ct_MANIFEST_TOOL" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+ if test "x$ac_ct_MANIFEST_TOOL" = x; then
+ MANIFEST_TOOL=":"
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ MANIFEST_TOOL=$ac_ct_MANIFEST_TOOL
+ fi
+else
+ MANIFEST_TOOL="$ac_cv_prog_MANIFEST_TOOL"
+fi
+
+test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $MANIFEST_TOOL is a manifest tool" >&5
+$as_echo_n "checking if $MANIFEST_TOOL is a manifest tool... " >&6; }
+if ${lt_cv_path_mainfest_tool+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ lt_cv_path_mainfest_tool=no
+ echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&5
+ $MANIFEST_TOOL '-?' 2>conftest.err > conftest.out
+ cat conftest.err >&5
+ if $GREP 'Manifest Tool' conftest.out > /dev/null; then
+ lt_cv_path_mainfest_tool=yes
+ fi
+ rm -f conftest*
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_mainfest_tool" >&5
+$as_echo "$lt_cv_path_mainfest_tool" >&6; }
+if test "x$lt_cv_path_mainfest_tool" != xyes; then
+ MANIFEST_TOOL=:
+fi
+
+
+
+
+
+
+ case $host_os in
+ rhapsody* | darwin*)
+ if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}dsymutil", so it can be a program name with args.
+set dummy ${ac_tool_prefix}dsymutil; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_DSYMUTIL+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$DSYMUTIL"; then
+ ac_cv_prog_DSYMUTIL="$DSYMUTIL" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_DSYMUTIL="${ac_tool_prefix}dsymutil"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+DSYMUTIL=$ac_cv_prog_DSYMUTIL
+if test -n "$DSYMUTIL"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DSYMUTIL" >&5
+$as_echo "$DSYMUTIL" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_DSYMUTIL"; then
+ ac_ct_DSYMUTIL=$DSYMUTIL
+ # Extract the first word of "dsymutil", so it can be a program name with args.
+set dummy dsymutil; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_DSYMUTIL+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$ac_ct_DSYMUTIL"; then
+ ac_cv_prog_ac_ct_DSYMUTIL="$ac_ct_DSYMUTIL" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_ac_ct_DSYMUTIL="dsymutil"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_DSYMUTIL=$ac_cv_prog_ac_ct_DSYMUTIL
+if test -n "$ac_ct_DSYMUTIL"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DSYMUTIL" >&5
+$as_echo "$ac_ct_DSYMUTIL" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+ if test "x$ac_ct_DSYMUTIL" = x; then
+ DSYMUTIL=":"
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ DSYMUTIL=$ac_ct_DSYMUTIL
+ fi
+else
+ DSYMUTIL="$ac_cv_prog_DSYMUTIL"
+fi
+
+ if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}nmedit", so it can be a program name with args.
+set dummy ${ac_tool_prefix}nmedit; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_NMEDIT+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$NMEDIT"; then
+ ac_cv_prog_NMEDIT="$NMEDIT" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_NMEDIT="${ac_tool_prefix}nmedit"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+NMEDIT=$ac_cv_prog_NMEDIT
+if test -n "$NMEDIT"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $NMEDIT" >&5
+$as_echo "$NMEDIT" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_NMEDIT"; then
+ ac_ct_NMEDIT=$NMEDIT
+ # Extract the first word of "nmedit", so it can be a program name with args.
+set dummy nmedit; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_NMEDIT+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$ac_ct_NMEDIT"; then
+ ac_cv_prog_ac_ct_NMEDIT="$ac_ct_NMEDIT" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_ac_ct_NMEDIT="nmedit"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_NMEDIT=$ac_cv_prog_ac_ct_NMEDIT
+if test -n "$ac_ct_NMEDIT"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_NMEDIT" >&5
+$as_echo "$ac_ct_NMEDIT" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+ if test "x$ac_ct_NMEDIT" = x; then
+ NMEDIT=":"
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ NMEDIT=$ac_ct_NMEDIT
+ fi
+else
+ NMEDIT="$ac_cv_prog_NMEDIT"
+fi
+
+ if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}lipo", so it can be a program name with args.
+set dummy ${ac_tool_prefix}lipo; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_LIPO+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$LIPO"; then
+ ac_cv_prog_LIPO="$LIPO" # 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_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_LIPO="${ac_tool_prefix}lipo"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+LIPO=$ac_cv_prog_LIPO
+if test -n "$LIPO"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIPO" >&5
+$as_echo "$LIPO" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_LIPO"; then
+ ac_ct_LIPO=$LIPO
+ # Extract the first word of "lipo", so it can be a program name with args.
+set dummy lipo; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_LIPO+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$ac_ct_LIPO"; then
+ ac_cv_prog_ac_ct_LIPO="$ac_ct_LIPO" # 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_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_ac_ct_LIPO="lipo"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_LIPO=$ac_cv_prog_ac_ct_LIPO
+if test -n "$ac_ct_LIPO"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_LIPO" >&5
+$as_echo "$ac_ct_LIPO" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+ if test "x$ac_ct_LIPO" = x; then
+ LIPO=":"
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ LIPO=$ac_ct_LIPO
+ fi
+else
+ LIPO="$ac_cv_prog_LIPO"
+fi
+
+ if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}otool", so it can be a program name with args.
+set dummy ${ac_tool_prefix}otool; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_OTOOL+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$OTOOL"; then
+ ac_cv_prog_OTOOL="$OTOOL" # 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_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_OTOOL="${ac_tool_prefix}otool"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+OTOOL=$ac_cv_prog_OTOOL
+if test -n "$OTOOL"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL" >&5
+$as_echo "$OTOOL" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_OTOOL"; then
+ ac_ct_OTOOL=$OTOOL
+ # Extract the first word of "otool", so it can be a program name with args.
+set dummy otool; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_OTOOL+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$ac_ct_OTOOL"; then
+ ac_cv_prog_ac_ct_OTOOL="$ac_ct_OTOOL" # 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_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_ac_ct_OTOOL="otool"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_OTOOL=$ac_cv_prog_ac_ct_OTOOL
+if test -n "$ac_ct_OTOOL"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL" >&5
+$as_echo "$ac_ct_OTOOL" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+ if test "x$ac_ct_OTOOL" = x; then
+ OTOOL=":"
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ OTOOL=$ac_ct_OTOOL
+ fi
+else
+ OTOOL="$ac_cv_prog_OTOOL"
+fi
+
+ if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}otool64", so it can be a program name with args.
+set dummy ${ac_tool_prefix}otool64; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_OTOOL64+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$OTOOL64"; then
+ ac_cv_prog_OTOOL64="$OTOOL64" # 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_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_OTOOL64="${ac_tool_prefix}otool64"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+OTOOL64=$ac_cv_prog_OTOOL64
+if test -n "$OTOOL64"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL64" >&5
+$as_echo "$OTOOL64" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_OTOOL64"; then
+ ac_ct_OTOOL64=$OTOOL64
+ # Extract the first word of "otool64", so it can be a program name with args.
+set dummy otool64; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_OTOOL64+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$ac_ct_OTOOL64"; then
+ ac_cv_prog_ac_ct_OTOOL64="$ac_ct_OTOOL64" # 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_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_ac_ct_OTOOL64="otool64"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_OTOOL64=$ac_cv_prog_ac_ct_OTOOL64
+if test -n "$ac_ct_OTOOL64"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL64" >&5
+$as_echo "$ac_ct_OTOOL64" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+ if test "x$ac_ct_OTOOL64" = x; then
+ OTOOL64=":"
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ OTOOL64=$ac_ct_OTOOL64
+ fi
+else
+ OTOOL64="$ac_cv_prog_OTOOL64"
+fi
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -single_module linker flag" >&5
+$as_echo_n "checking for -single_module linker flag... " >&6; }
+if ${lt_cv_apple_cc_single_mod+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ lt_cv_apple_cc_single_mod=no
+ if test -z "${LT_MULTI_MODULE}"; then
+ # By default we will add the -single_module flag. You can override
+ # by either setting the environment variable LT_MULTI_MODULE
+ # non-empty at configure time, or by adding -multi_module to the
+ # link flags.
+ rm -rf libconftest.dylib*
+ echo "int foo(void){return 1;}" > conftest.c
+ echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \
+-dynamiclib -Wl,-single_module conftest.c" >&5
+ $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \
+ -dynamiclib -Wl,-single_module conftest.c 2>conftest.err
+ _lt_result=$?
+ # If there is a non-empty error log, and "single_module"
+ # appears in it, assume the flag caused a linker warning
+ if test -s conftest.err && $GREP single_module conftest.err; then
+ cat conftest.err >&5
+ # Otherwise, if the output was created with a 0 exit code from
+ # the compiler, it worked.
+ elif test -f libconftest.dylib && test $_lt_result -eq 0; then
+ lt_cv_apple_cc_single_mod=yes
+ else
+ cat conftest.err >&5
+ fi
+ rm -rf libconftest.dylib*
+ rm -f conftest.*
+ fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_apple_cc_single_mod" >&5
+$as_echo "$lt_cv_apple_cc_single_mod" >&6; }
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -exported_symbols_list linker flag" >&5
+$as_echo_n "checking for -exported_symbols_list linker flag... " >&6; }
+if ${lt_cv_ld_exported_symbols_list+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ lt_cv_ld_exported_symbols_list=no
+ save_LDFLAGS=$LDFLAGS
+ echo "_main" > conftest.sym
+ LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym"
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ lt_cv_ld_exported_symbols_list=yes
+else
+ lt_cv_ld_exported_symbols_list=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ LDFLAGS="$save_LDFLAGS"
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_exported_symbols_list" >&5
+$as_echo "$lt_cv_ld_exported_symbols_list" >&6; }
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -force_load linker flag" >&5
+$as_echo_n "checking for -force_load linker flag... " >&6; }
+if ${lt_cv_ld_force_load+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ lt_cv_ld_force_load=no
+ cat > conftest.c << _LT_EOF
+int forced_loaded() { return 2;}
+_LT_EOF
+ echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&5
+ $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&5
+ echo "$AR cru libconftest.a conftest.o" >&5
+ $AR cru libconftest.a conftest.o 2>&5
+ echo "$RANLIB libconftest.a" >&5
+ $RANLIB libconftest.a 2>&5
+ cat > conftest.c << _LT_EOF
+int main() { return 0;}
+_LT_EOF
+ echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&5
+ $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err
+ _lt_result=$?
+ if test -s conftest.err && $GREP force_load conftest.err; then
+ cat conftest.err >&5
+ elif test -f conftest && test $_lt_result -eq 0 && $GREP forced_load conftest >/dev/null 2>&1 ; then
+ lt_cv_ld_force_load=yes
+ else
+ cat conftest.err >&5
+ fi
+ rm -f conftest.err libconftest.a conftest conftest.c
+ rm -rf conftest.dSYM
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_force_load" >&5
+$as_echo "$lt_cv_ld_force_load" >&6; }
+ case $host_os in
+ rhapsody* | darwin1.[012])
+ _lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;;
+ darwin1.*)
+ _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;;
+ darwin*) # darwin 5.x on
+ # if running on 10.5 or later, the deployment target defaults
+ # to the OS version, if on x86, and 10.4, the deployment
+ # target defaults to 10.4. Don't you love it?
+ case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in
+ 10.0,*86*-darwin8*|10.0,*-darwin[91]*)
+ _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;;
+ 10.[012]*)
+ _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;;
+ 10.*)
+ _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;;
+ esac
+ ;;
+ esac
+ if test "$lt_cv_apple_cc_single_mod" = "yes"; then
+ _lt_dar_single_mod='$single_module'
+ fi
+ if test "$lt_cv_ld_exported_symbols_list" = "yes"; then
+ _lt_dar_export_syms=' ${wl}-exported_symbols_list,$output_objdir/${libname}-symbols.expsym'
+ else
+ _lt_dar_export_syms='~$NMEDIT -s $output_objdir/${libname}-symbols.expsym ${lib}'
+ fi
+ if test "$DSYMUTIL" != ":" && test "$lt_cv_ld_force_load" = "no"; then
+ _lt_dsymutil='~$DSYMUTIL $lib || :'
+ else
+ _lt_dsymutil=
+ fi
+ ;;
+ esac
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5
+$as_echo_n "checking for ANSI C header files... " >&6; }
+if ${ac_cv_header_stdc+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <stdlib.h>
+#include <stdarg.h>
+#include <string.h>
+#include <float.h>
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ ac_cv_header_stdc=yes
+else
+ ac_cv_header_stdc=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+if test $ac_cv_header_stdc = yes; then
+ # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <string.h>
+
+_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 confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <stdlib.h>
+
+_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 confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <ctype.h>
+#include <stdlib.h>
+#if ((' ' & 0x0FF) == 0x020)
+# define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
+# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))
+#else
+# define ISLOWER(c) \
+ (('a' <= (c) && (c) <= 'i') \
+ || ('j' <= (c) && (c) <= 'r') \
+ || ('s' <= (c) && (c) <= 'z'))
+# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c))
+#endif
+
+#define XOR(e, f) (((e) && !(f)) || (!(e) && (f)))
+int
+main ()
+{
+ int i;
+ for (i = 0; i < 256; i++)
+ if (XOR (islower (i), ISLOWER (i))
+ || toupper (i) != TOUPPER (i))
+ return 2;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+
+else
+ ac_cv_header_stdc=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+ conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5
+$as_echo "$ac_cv_header_stdc" >&6; }
+if test $ac_cv_header_stdc = yes; then
+
+$as_echo "#define STDC_HEADERS 1" >>confdefs.h
+
+fi
+
+# On IRIX 5.3, sys/types and inttypes.h are conflicting.
+for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \
+ inttypes.h stdint.h unistd.h
+do :
+ as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default
+"
+if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
+ cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+
+for ac_header in dlfcn.h
+do :
+ ac_fn_c_check_header_compile "$LINENO" "dlfcn.h" "ac_cv_header_dlfcn_h" "$ac_includes_default
+"
+if test "x$ac_cv_header_dlfcn_h" = xyes; then :
+ cat >>confdefs.h <<_ACEOF
+#define HAVE_DLFCN_H 1
+_ACEOF
+
+fi
+
+done
+
+
+
+
+func_stripname_cnf ()
+{
+ case ${2} in
+ .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;;
+ *) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;;
+ esac
+} # func_stripname_cnf
+
+
+
+
+
+# Set options
+
+
+
+ enable_dlopen=no
+
+
+ enable_win32_dll=no
+
+
+ # Check whether --enable-shared was given.
+if test "${enable_shared+set}" = set; then :
+ enableval=$enable_shared; p=${PACKAGE-default}
+ case $enableval in
+ yes) enable_shared=yes ;;
+ no) enable_shared=no ;;
+ *)
+ enable_shared=no
+ # Look at the argument we got. We use all the common list separators.
+ lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+ for pkg in $enableval; do
+ IFS="$lt_save_ifs"
+ if test "X$pkg" = "X$p"; then
+ enable_shared=yes
+ fi
+ done
+ IFS="$lt_save_ifs"
+ ;;
+ esac
+else
+ enable_shared=yes
+fi
+
+
+
+
+
+
+
+
+
+ # Check whether --enable-static was given.
+if test "${enable_static+set}" = set; then :
+ enableval=$enable_static; p=${PACKAGE-default}
+ case $enableval in
+ yes) enable_static=yes ;;
+ no) enable_static=no ;;
+ *)
+ enable_static=no
+ # Look at the argument we got. We use all the common list separators.
+ lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+ for pkg in $enableval; do
+ IFS="$lt_save_ifs"
+ if test "X$pkg" = "X$p"; then
+ enable_static=yes
+ fi
+ done
+ IFS="$lt_save_ifs"
+ ;;
+ esac
+else
+ enable_static=yes
+fi
+
+
+
+
+
+
+
+
+
+
+# Check whether --with-pic was given.
+if test "${with_pic+set}" = set; then :
+ withval=$with_pic; lt_p=${PACKAGE-default}
+ case $withval in
+ yes|no) pic_mode=$withval ;;
+ *)
+ pic_mode=default
+ # Look at the argument we got. We use all the common list separators.
+ lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+ for lt_pkg in $withval; do
+ IFS="$lt_save_ifs"
+ if test "X$lt_pkg" = "X$lt_p"; then
+ pic_mode=yes
+ fi
+ done
+ IFS="$lt_save_ifs"
+ ;;
+ esac
+else
+ pic_mode=default
+fi
+
+
+test -z "$pic_mode" && pic_mode=default
+
+
+
+
+
+
+
+ # Check whether --enable-fast-install was given.
+if test "${enable_fast_install+set}" = set; then :
+ enableval=$enable_fast_install; p=${PACKAGE-default}
+ case $enableval in
+ yes) enable_fast_install=yes ;;
+ no) enable_fast_install=no ;;
+ *)
+ enable_fast_install=no
+ # Look at the argument we got. We use all the common list separators.
+ lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+ for pkg in $enableval; do
+ IFS="$lt_save_ifs"
+ if test "X$pkg" = "X$p"; then
+ enable_fast_install=yes
+ fi
+ done
+ IFS="$lt_save_ifs"
+ ;;
+ esac
+else
+ enable_fast_install=yes
+fi
+
+
+
+
+
+
+
+
+
+
+
+# This can be used to rebuild libtool when needed
+LIBTOOL_DEPS="$ltmain"
+
+# Always use our own libtool.
+LIBTOOL='$(SHELL) $(top_builddir)/libtool'
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+test -z "$LN_S" && LN_S="ln -s"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+if test -n "${ZSH_VERSION+set}" ; then
+ setopt NO_GLOB_SUBST
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for objdir" >&5
+$as_echo_n "checking for objdir... " >&6; }
+if ${lt_cv_objdir+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ rm -f .libs 2>/dev/null
+mkdir .libs 2>/dev/null
+if test -d .libs; then
+ lt_cv_objdir=.libs
+else
+ # MS-DOS does not allow filenames that begin with a dot.
+ lt_cv_objdir=_libs
+fi
+rmdir .libs 2>/dev/null
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_objdir" >&5
+$as_echo "$lt_cv_objdir" >&6; }
+objdir=$lt_cv_objdir
+
+
+
+
+
+cat >>confdefs.h <<_ACEOF
+#define LT_OBJDIR "$lt_cv_objdir/"
+_ACEOF
+
+
+
+
+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
+
+# Global variables:
+ofile=libtool
+can_build_shared=yes
+
+# All known linkers require a `.a' archive for static linking (except MSVC,
+# which needs '.lib').
+libext=a
+
+with_gnu_ld="$lt_cv_prog_gnu_ld"
+
+old_CC="$CC"
+old_CFLAGS="$CFLAGS"
+
+# Set sane defaults for various variables
+test -z "$CC" && CC=cc
+test -z "$LTCC" && LTCC=$CC
+test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS
+test -z "$LD" && LD=ld
+test -z "$ac_objext" && ac_objext=o
+
+for cc_temp in $compiler""; do
+ case $cc_temp in
+ compile | *[\\/]compile | ccache | *[\\/]ccache ) ;;
+ distcc | *[\\/]distcc | purify | *[\\/]purify ) ;;
+ \-*) ;;
+ *) break;;
+ esac
+done
+cc_basename=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"`
+
+
+# Only perform the check for file, if the check method requires it
+test -z "$MAGIC_CMD" && MAGIC_CMD=file
+case $deplibs_check_method in
+file_magic*)
+ if test "$file_magic_cmd" = '$MAGIC_CMD'; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ${ac_tool_prefix}file" >&5
+$as_echo_n "checking for ${ac_tool_prefix}file... " >&6; }
+if ${lt_cv_path_MAGIC_CMD+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $MAGIC_CMD in
+[\\/*] | ?:[\\/]*)
+ lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path.
+ ;;
+*)
+ lt_save_MAGIC_CMD="$MAGIC_CMD"
+ lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+ ac_dummy="/usr/bin$PATH_SEPARATOR$PATH"
+ for ac_dir in $ac_dummy; do
+ IFS="$lt_save_ifs"
+ test -z "$ac_dir" && ac_dir=.
+ if test -f $ac_dir/${ac_tool_prefix}file; then
+ lt_cv_path_MAGIC_CMD="$ac_dir/${ac_tool_prefix}file"
+ if test -n "$file_magic_test_file"; then
+ case $deplibs_check_method in
+ "file_magic "*)
+ file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"`
+ MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
+ if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null |
+ $EGREP "$file_magic_regex" > /dev/null; then
+ :
+ else
+ cat <<_LT_EOF 1>&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 at gnu.org
+
+_LT_EOF
+ fi ;;
+ esac
+ fi
+ break
+ fi
+ done
+ IFS="$lt_save_ifs"
+ MAGIC_CMD="$lt_save_MAGIC_CMD"
+ ;;
+esac
+fi
+
+MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
+if test -n "$MAGIC_CMD"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5
+$as_echo "$MAGIC_CMD" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+
+
+
+if test -z "$lt_cv_path_MAGIC_CMD"; then
+ if test -n "$ac_tool_prefix"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for file" >&5
+$as_echo_n "checking for file... " >&6; }
+if ${lt_cv_path_MAGIC_CMD+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $MAGIC_CMD in
+[\\/*] | ?:[\\/]*)
+ lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path.
+ ;;
+*)
+ lt_save_MAGIC_CMD="$MAGIC_CMD"
+ lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+ ac_dummy="/usr/bin$PATH_SEPARATOR$PATH"
+ for ac_dir in $ac_dummy; do
+ IFS="$lt_save_ifs"
+ test -z "$ac_dir" && ac_dir=.
+ if test -f $ac_dir/file; then
+ lt_cv_path_MAGIC_CMD="$ac_dir/file"
+ if test -n "$file_magic_test_file"; then
+ case $deplibs_check_method in
+ "file_magic "*)
+ file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"`
+ MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
+ if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null |
+ $EGREP "$file_magic_regex" > /dev/null; then
+ :
+ else
+ cat <<_LT_EOF 1>&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 at gnu.org
+
+_LT_EOF
+ fi ;;
+ esac
+ fi
+ break
+ fi
+ done
+ IFS="$lt_save_ifs"
+ MAGIC_CMD="$lt_save_MAGIC_CMD"
+ ;;
+esac
+fi
+
+MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
+if test -n "$MAGIC_CMD"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5
+$as_echo "$MAGIC_CMD" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ else
+ MAGIC_CMD=:
+ fi
+fi
+
+ fi
+ ;;
+esac
+
+# Use C for the default configuration in the libtool script
+
+lt_save_CC="$CC"
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+# Source file extension for C test sources.
+ac_ext=c
+
+# Object file extension for compiled C test sources.
+objext=o
+objext=$objext
+
+# Code to be used in simple compile tests
+lt_simple_compile_test_code="int some_variable = 0;"
+
+# Code to be used in simple link tests
+lt_simple_link_test_code='int main(){return(0);}'
+
+
+
+
+
+
+
+# If no C compiler was specified, use CC.
+LTCC=${LTCC-"$CC"}
+
+# If no C compiler flags were specified, use CFLAGS.
+LTCFLAGS=${LTCFLAGS-"$CFLAGS"}
+
+# Allow CC to be a program name with arguments.
+compiler=$CC
+
+# Save the default compiler, since it gets overwritten when the other
+# tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP.
+compiler_DEFAULT=$CC
+
+# save warnings/boilerplate of simple test code
+ac_outfile=conftest.$ac_objext
+echo "$lt_simple_compile_test_code" >conftest.$ac_ext
+eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
+_lt_compiler_boilerplate=`cat conftest.err`
+$RM conftest*
+
+ac_outfile=conftest.$ac_objext
+echo "$lt_simple_link_test_code" >conftest.$ac_ext
+eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
+_lt_linker_boilerplate=`cat conftest.err`
+$RM -r conftest*
+
+
+## CAVEAT EMPTOR:
+## There is no encapsulation within the following macros, do not change
+## the running order or otherwise move them around unless you know exactly
+## what you are doing...
+if test -n "$compiler"; then
+
+lt_prog_compiler_no_builtin_flag=
+
+if test "$GCC" = yes; then
+ case $cc_basename in
+ nvcc*)
+ lt_prog_compiler_no_builtin_flag=' -Xcompiler -fno-builtin' ;;
+ *)
+ lt_prog_compiler_no_builtin_flag=' -fno-builtin' ;;
+ esac
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -fno-rtti -fno-exceptions" >&5
+$as_echo_n "checking if $compiler supports -fno-rtti -fno-exceptions... " >&6; }
+if ${lt_cv_prog_compiler_rtti_exceptions+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ lt_cv_prog_compiler_rtti_exceptions=no
+ ac_outfile=conftest.$ac_objext
+ echo "$lt_simple_compile_test_code" > conftest.$ac_ext
+ lt_compiler_flag="-fno-rtti -fno-exceptions"
+ # Insert the option either (1) after the last *FLAGS variable, or
+ # (2) before a word containing "conftest.", or (3) at the end.
+ # Note that $ac_compile itself does not contain backslashes and begins
+ # with a dollar sign (not a hyphen), so the echo should work correctly.
+ # The option is referenced via a variable to avoid confusing sed.
+ lt_compile=`echo "$ac_compile" | $SED \
+ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
+ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+ -e 's:$: $lt_compiler_flag:'`
+ (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5)
+ (eval "$lt_compile" 2>conftest.err)
+ ac_status=$?
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ if (exit $ac_status) && test -s "$ac_outfile"; then
+ # The compiler can only warn and ignore the option if not recognized
+ # So say no if there are warnings other than the usual output.
+ $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp
+ $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+ if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
+ lt_cv_prog_compiler_rtti_exceptions=yes
+ fi
+ fi
+ $RM conftest*
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_rtti_exceptions" >&5
+$as_echo "$lt_cv_prog_compiler_rtti_exceptions" >&6; }
+
+if test x"$lt_cv_prog_compiler_rtti_exceptions" = xyes; then
+ lt_prog_compiler_no_builtin_flag="$lt_prog_compiler_no_builtin_flag -fno-rtti -fno-exceptions"
+else
+ :
+fi
+
+fi
+
+
+
+
+
+
+ lt_prog_compiler_wl=
+lt_prog_compiler_pic=
+lt_prog_compiler_static=
+
+
+ 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*)
+ case $host_cpu in
+ powerpc)
+ # see comment about AmigaOS4 .so support
+ lt_prog_compiler_pic='-fPIC'
+ ;;
+ m68k)
+ # 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'
+ ;;
+ esac
+ ;;
+
+ beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
+ # PIC is the default for these OSes.
+ ;;
+
+ mingw* | cygwin* | pw32* | os2* | cegcc*)
+ # This hack is so that the source file can tell whether it is being
+ # built for inclusion in a dll (and should export symbols for example).
+ # Although the cygwin gcc ignores -fPIC, still need this for old-style
+ # (--disable-auto-import) libraries
+ lt_prog_compiler_pic='-DDLL_EXPORT'
+ ;;
+
+ darwin* | rhapsody*)
+ # PIC is the default on this platform
+ # Common symbols not allowed in MH_DYLIB files
+ lt_prog_compiler_pic='-fno-common'
+ ;;
+
+ haiku*)
+ # PIC is the default for Haiku.
+ # The "-static" flag exists, but is broken.
+ lt_prog_compiler_static=
+ ;;
+
+ hpux*)
+ # PIC is the default for 64-bit PA HP-UX, but not for 32-bit
+ # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag
+ # sets the default TLS model and affects inlining.
+ case $host_cpu in
+ hppa*64*)
+ # +Z the default
+ ;;
+ *)
+ lt_prog_compiler_pic='-fPIC'
+ ;;
+ esac
+ ;;
+
+ interix[3-9]*)
+ # Interix 3.x gcc -fpic/-fPIC options generate broken code.
+ # Instead, we relocate shared libraries at runtime.
+ ;;
+
+ msdosdjgpp*)
+ # Just because we use GCC doesn't mean we suddenly get shared libraries
+ # on systems that don't support them.
+ lt_prog_compiler_can_build_shared=no
+ enable_shared=no
+ ;;
+
+ *nto* | *qnx*)
+ # QNX uses GNU C++, but need to define -shared option too, otherwise
+ # it will coredump.
+ lt_prog_compiler_pic='-fPIC -shared'
+ ;;
+
+ sysv4*MP*)
+ if test -d /usr/nec; then
+ lt_prog_compiler_pic=-Kconform_pic
+ fi
+ ;;
+
+ *)
+ lt_prog_compiler_pic='-fPIC'
+ ;;
+ esac
+
+ case $cc_basename in
+ nvcc*) # Cuda Compiler Driver 2.2
+ lt_prog_compiler_wl='-Xlinker '
+ if test -n "$lt_prog_compiler_pic"; then
+ lt_prog_compiler_pic="-Xcompiler $lt_prog_compiler_pic"
+ fi
+ ;;
+ 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* | cygwin* | pw32* | os2* | cegcc*)
+ # 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'
+ ;;
+
+ linux* | k*bsd*-gnu | kopensolaris*-gnu)
+ case $cc_basename in
+ # old Intel for x86_64 which still supported -KPIC.
+ ecc*)
+ lt_prog_compiler_wl='-Wl,'
+ lt_prog_compiler_pic='-KPIC'
+ lt_prog_compiler_static='-static'
+ ;;
+ # icc used to be incompatible with GCC.
+ # ICC 10 doesn't accept -KPIC any more.
+ icc* | ifort*)
+ lt_prog_compiler_wl='-Wl,'
+ lt_prog_compiler_pic='-fPIC'
+ lt_prog_compiler_static='-static'
+ ;;
+ # Lahey Fortran 8.1.
+ lf95*)
+ lt_prog_compiler_wl='-Wl,'
+ lt_prog_compiler_pic='--shared'
+ lt_prog_compiler_static='--static'
+ ;;
+ nagfor*)
+ # NAG Fortran compiler
+ lt_prog_compiler_wl='-Wl,-Wl,,'
+ lt_prog_compiler_pic='-PIC'
+ lt_prog_compiler_static='-Bstatic'
+ ;;
+ pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*)
+ # Portland Group compilers (*not* the Pentium gcc compiler,
+ # which looks to be a dead project)
+ lt_prog_compiler_wl='-Wl,'
+ lt_prog_compiler_pic='-fpic'
+ lt_prog_compiler_static='-Bstatic'
+ ;;
+ ccc*)
+ lt_prog_compiler_wl='-Wl,'
+ # All Alpha code is PIC.
+ lt_prog_compiler_static='-non_shared'
+ ;;
+ xl* | bgxl* | bgf* | mpixl*)
+ # IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene
+ lt_prog_compiler_wl='-Wl,'
+ lt_prog_compiler_pic='-qpic'
+ lt_prog_compiler_static='-qstaticlink'
+ ;;
+ *)
+ case `$CC -V 2>&1 | sed 5q` in
+ *Sun\ Ceres\ Fortran* | *Sun*Fortran*\ [1-7].* | *Sun*Fortran*\ 8.[0-3]*)
+ # Sun Fortran 8.3 passes all unrecognized flags to the linker
+ lt_prog_compiler_pic='-KPIC'
+ lt_prog_compiler_static='-Bstatic'
+ lt_prog_compiler_wl=''
+ ;;
+ *Sun\ F* | *Sun*Fortran*)
+ lt_prog_compiler_pic='-KPIC'
+ lt_prog_compiler_static='-Bstatic'
+ lt_prog_compiler_wl='-Qoption ld '
+ ;;
+ *Sun\ C*)
+ # Sun C 5.9
+ lt_prog_compiler_pic='-KPIC'
+ lt_prog_compiler_static='-Bstatic'
+ lt_prog_compiler_wl='-Wl,'
+ ;;
+ *Intel*\ [CF]*Compiler*)
+ lt_prog_compiler_wl='-Wl,'
+ lt_prog_compiler_pic='-fPIC'
+ lt_prog_compiler_static='-static'
+ ;;
+ *Portland\ Group*)
+ lt_prog_compiler_wl='-Wl,'
+ lt_prog_compiler_pic='-fpic'
+ lt_prog_compiler_static='-Bstatic'
+ ;;
+ esac
+ ;;
+ esac
+ ;;
+
+ newsos6)
+ lt_prog_compiler_pic='-KPIC'
+ lt_prog_compiler_static='-Bstatic'
+ ;;
+
+ *nto* | *qnx*)
+ # QNX uses GNU C++, but need to define -shared option too, otherwise
+ # it will coredump.
+ lt_prog_compiler_pic='-fPIC -shared'
+ ;;
+
+ osf3* | osf4* | osf5*)
+ lt_prog_compiler_wl='-Wl,'
+ # All OSF/1 code is PIC.
+ lt_prog_compiler_static='-non_shared'
+ ;;
+
+ rdos*)
+ lt_prog_compiler_static='-non_shared'
+ ;;
+
+ solaris*)
+ lt_prog_compiler_pic='-KPIC'
+ lt_prog_compiler_static='-Bstatic'
+ case $cc_basename in
+ f77* | f90* | f95* | sunf77* | sunf90* | sunf95*)
+ lt_prog_compiler_wl='-Qoption ld ';;
+ *)
+ lt_prog_compiler_wl='-Wl,';;
+ esac
+ ;;
+
+ sunos4*)
+ lt_prog_compiler_wl='-Qoption ld '
+ lt_prog_compiler_pic='-PIC'
+ lt_prog_compiler_static='-Bstatic'
+ ;;
+
+ sysv4 | sysv4.2uw2* | sysv4.3*)
+ lt_prog_compiler_wl='-Wl,'
+ lt_prog_compiler_pic='-KPIC'
+ lt_prog_compiler_static='-Bstatic'
+ ;;
+
+ sysv4*MP*)
+ if test -d /usr/nec ;then
+ lt_prog_compiler_pic='-Kconform_pic'
+ lt_prog_compiler_static='-Bstatic'
+ fi
+ ;;
+
+ sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*)
+ lt_prog_compiler_wl='-Wl,'
+ lt_prog_compiler_pic='-KPIC'
+ lt_prog_compiler_static='-Bstatic'
+ ;;
+
+ unicos*)
+ lt_prog_compiler_wl='-Wl,'
+ lt_prog_compiler_can_build_shared=no
+ ;;
+
+ uts4*)
+ lt_prog_compiler_pic='-pic'
+ lt_prog_compiler_static='-Bstatic'
+ ;;
+
+ *)
+ lt_prog_compiler_can_build_shared=no
+ ;;
+ esac
+ fi
+
+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
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5
+$as_echo_n "checking for $compiler option to produce PIC... " >&6; }
+if ${lt_cv_prog_compiler_pic+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ lt_cv_prog_compiler_pic=$lt_prog_compiler_pic
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic" >&5
+$as_echo "$lt_cv_prog_compiler_pic" >&6; }
+lt_prog_compiler_pic=$lt_cv_prog_compiler_pic
+
+#
+# Check to make sure the PIC flag actually works.
+#
+if test -n "$lt_prog_compiler_pic"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5
+$as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic works... " >&6; }
+if ${lt_cv_prog_compiler_pic_works+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ lt_cv_prog_compiler_pic_works=no
+ ac_outfile=conftest.$ac_objext
+ echo "$lt_simple_compile_test_code" > conftest.$ac_ext
+ lt_compiler_flag="$lt_prog_compiler_pic -DPIC"
+ # Insert the option either (1) after the last *FLAGS variable, or
+ # (2) before a word containing "conftest.", or (3) at the end.
+ # Note that $ac_compile itself does not contain backslashes and begins
+ # with a dollar sign (not a hyphen), so the echo should work correctly.
+ # The option is referenced via a variable to avoid confusing sed.
+ lt_compile=`echo "$ac_compile" | $SED \
+ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
+ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+ -e 's:$: $lt_compiler_flag:'`
+ (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5)
+ (eval "$lt_compile" 2>conftest.err)
+ ac_status=$?
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ if (exit $ac_status) && test -s "$ac_outfile"; then
+ # The compiler can only warn and ignore the option if not recognized
+ # So say no if there are warnings other than the usual output.
+ $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp
+ $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+ if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
+ lt_cv_prog_compiler_pic_works=yes
+ fi
+ fi
+ $RM conftest*
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works" >&5
+$as_echo "$lt_cv_prog_compiler_pic_works" >&6; }
+
+if test x"$lt_cv_prog_compiler_pic_works" = xyes; then
+ case $lt_prog_compiler_pic in
+ "" | " "*) ;;
+ *) lt_prog_compiler_pic=" $lt_prog_compiler_pic" ;;
+ esac
+else
+ lt_prog_compiler_pic=
+ lt_prog_compiler_can_build_shared=no
+fi
+
+fi
+
+
+
+
+
+
+
+
+
+
+
+#
+# Check to make sure the static flag actually works.
+#
+wl=$lt_prog_compiler_wl eval lt_tmp_static_flag=\"$lt_prog_compiler_static\"
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5
+$as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; }
+if ${lt_cv_prog_compiler_static_works+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ lt_cv_prog_compiler_static_works=no
+ save_LDFLAGS="$LDFLAGS"
+ LDFLAGS="$LDFLAGS $lt_tmp_static_flag"
+ echo "$lt_simple_link_test_code" > conftest.$ac_ext
+ if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
+ # The linker can only warn and ignore the option if not recognized
+ # So say no if there are warnings
+ if test -s conftest.err; then
+ # Append any errors to the config.log.
+ cat conftest.err 1>&5
+ $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp
+ $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+ if diff conftest.exp conftest.er2 >/dev/null; then
+ lt_cv_prog_compiler_static_works=yes
+ fi
+ else
+ lt_cv_prog_compiler_static_works=yes
+ fi
+ fi
+ $RM -r conftest*
+ LDFLAGS="$save_LDFLAGS"
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works" >&5
+$as_echo "$lt_cv_prog_compiler_static_works" >&6; }
+
+if test x"$lt_cv_prog_compiler_static_works" = xyes; then
+ :
+else
+ lt_prog_compiler_static=
+fi
+
+
+
+
+
+
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5
+$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; }
+if ${lt_cv_prog_compiler_c_o+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ lt_cv_prog_compiler_c_o=no
+ $RM -r conftest 2>/dev/null
+ mkdir conftest
+ cd conftest
+ mkdir out
+ echo "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+ lt_compiler_flag="-o out/conftest2.$ac_objext"
+ # Insert the option either (1) after the last *FLAGS variable, or
+ # (2) before a word containing "conftest.", or (3) at the end.
+ # Note that $ac_compile itself does not contain backslashes and begins
+ # with a dollar sign (not a hyphen), so the echo should work correctly.
+ lt_compile=`echo "$ac_compile" | $SED \
+ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
+ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+ -e 's:$: $lt_compiler_flag:'`
+ (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5)
+ (eval "$lt_compile" 2>out/conftest.err)
+ ac_status=$?
+ cat out/conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ if (exit $ac_status) && test -s out/conftest2.$ac_objext
+ then
+ # The compiler can only warn and ignore the option if not recognized
+ # So say no if there are warnings
+ $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp
+ $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2
+ if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then
+ lt_cv_prog_compiler_c_o=yes
+ fi
+ fi
+ chmod u+w . 2>&5
+ $RM conftest*
+ # SGI C++ compiler will create directory out/ii_files/ for
+ # template instantiation
+ test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files
+ $RM out/* && rmdir out
+ cd ..
+ $RM -r conftest
+ $RM conftest*
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5
+$as_echo "$lt_cv_prog_compiler_c_o" >&6; }
+
+
+
+
+
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5
+$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; }
+if ${lt_cv_prog_compiler_c_o+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ lt_cv_prog_compiler_c_o=no
+ $RM -r conftest 2>/dev/null
+ mkdir conftest
+ cd conftest
+ mkdir out
+ echo "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+ lt_compiler_flag="-o out/conftest2.$ac_objext"
+ # Insert the option either (1) after the last *FLAGS variable, or
+ # (2) before a word containing "conftest.", or (3) at the end.
+ # Note that $ac_compile itself does not contain backslashes and begins
+ # with a dollar sign (not a hyphen), so the echo should work correctly.
+ lt_compile=`echo "$ac_compile" | $SED \
+ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
+ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+ -e 's:$: $lt_compiler_flag:'`
+ (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5)
+ (eval "$lt_compile" 2>out/conftest.err)
+ ac_status=$?
+ cat out/conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ if (exit $ac_status) && test -s out/conftest2.$ac_objext
+ then
+ # The compiler can only warn and ignore the option if not recognized
+ # So say no if there are warnings
+ $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp
+ $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2
+ if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then
+ lt_cv_prog_compiler_c_o=yes
+ fi
+ fi
+ chmod u+w . 2>&5
+ $RM conftest*
+ # SGI C++ compiler will create directory out/ii_files/ for
+ # template instantiation
+ test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files
+ $RM out/* && rmdir out
+ cd ..
+ $RM -r conftest
+ $RM conftest*
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5
+$as_echo "$lt_cv_prog_compiler_c_o" >&6; }
+
+
+
+
+hard_links="nottested"
+if test "$lt_cv_prog_compiler_c_o" = no && test "$need_locks" != no; then
+ # do not overwrite the value of need_locks provided by the user
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5
+$as_echo_n "checking if we can lock with hard links... " >&6; }
+ hard_links=yes
+ $RM conftest*
+ ln conftest.a conftest.b 2>/dev/null && hard_links=no
+ touch conftest.a
+ ln conftest.a conftest.b 2>&5 || hard_links=no
+ ln conftest.a conftest.b 2>/dev/null && hard_links=no
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5
+$as_echo "$hard_links" >&6; }
+ if test "$hard_links" = no; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5
+$as_echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;}
+ need_locks=warn
+ fi
+else
+ need_locks=no
+fi
+
+
+
+
+
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5
+$as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; }
+
+ runpath_var=
+ allow_undefined_flag=
+ always_export_symbols=no
+ archive_cmds=
+ archive_expsym_cmds=
+ compiler_needs_object=no
+ enable_shared_with_static_runtimes=no
+ export_dynamic_flag_spec=
+ export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
+ hardcode_automatic=no
+ hardcode_direct=no
+ hardcode_direct_absolute=no
+ hardcode_libdir_flag_spec=
+ hardcode_libdir_separator=
+ hardcode_minus_L=no
+ hardcode_shlibpath_var=unsupported
+ inherit_rpath=no
+ link_all_deplibs=unknown
+ module_cmds=
+ module_expsym_cmds=
+ old_archive_from_new_cmds=
+ old_archive_from_expsyms_cmds=
+ thread_safe_flag_spec=
+ whole_archive_flag_spec=
+ # include_expsyms should be a list of space-separated symbols to be *always*
+ # included in the symbol list
+ include_expsyms=
+ # exclude_expsyms can be an extended regexp of symbols to exclude
+ # it will be wrapped by ` (' and `)$', so one must not match beginning or
+ # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc',
+ # as well as any symbol that contains `d'.
+ exclude_expsyms='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'
+ # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out
+ # platforms (ab)use it in PIC code, but their linkers get confused if
+ # the symbol is explicitly referenced. Since portable code cannot
+ # rely on this symbol name, it's probably fine to never include it in
+ # preloaded symbol tables.
+ # Exclude shared library initialization/finalization symbols.
+ extract_expsyms_cmds=
+
+ case $host_os in
+ cygwin* | mingw* | pw32* | cegcc*)
+ # FIXME: the MSVC++ port hasn't been tested in a loooong time
+ # When not using gcc, we currently assume that we are using
+ # Microsoft Visual C++.
+ if test "$GCC" != yes; then
+ with_gnu_ld=no
+ fi
+ ;;
+ interix*)
+ # we just hope/assume this is gcc and not c89 (= MSVC++)
+ with_gnu_ld=yes
+ ;;
+ openbsd*)
+ with_gnu_ld=no
+ ;;
+ linux* | k*bsd*-gnu | gnu*)
+ link_all_deplibs=no
+ ;;
+ esac
+
+ ld_shlibs=yes
+
+ # On some targets, GNU ld is compatible enough with the native linker
+ # that we're better off using the native interface for both.
+ lt_use_gnu_ld_interface=no
+ if test "$with_gnu_ld" = yes; then
+ case $host_os in
+ aix*)
+ # The AIX port of GNU ld has always aspired to compatibility
+ # with the native linker. However, as the warning in the GNU ld
+ # block says, versions before 2.19.5* couldn't really create working
+ # shared libraries, regardless of the interface used.
+ case `$LD -v 2>&1` in
+ *\ \(GNU\ Binutils\)\ 2.19.5*) ;;
+ *\ \(GNU\ Binutils\)\ 2.[2-9]*) ;;
+ *\ \(GNU\ Binutils\)\ [3-9]*) ;;
+ *)
+ lt_use_gnu_ld_interface=yes
+ ;;
+ esac
+ ;;
+ *)
+ lt_use_gnu_ld_interface=yes
+ ;;
+ esac
+ fi
+
+ if test "$lt_use_gnu_ld_interface" = yes; then
+ # If archive_cmds runs LD, not CC, wlarc should be empty
+ wlarc='${wl}'
+
+ # Set some defaults for GNU ld with shared library support. These
+ # are reset later if shared libraries are not supported. Putting them
+ # here allows them to be overridden if necessary.
+ runpath_var=LD_RUN_PATH
+ hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+ export_dynamic_flag_spec='${wl}--export-dynamic'
+ # ancient GNU ld didn't support --whole-archive et. al.
+ if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then
+ whole_archive_flag_spec="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
+ else
+ whole_archive_flag_spec=
+ fi
+ supports_anon_versioning=no
+ case `$LD -v 2>&1` in
+ *GNU\ gold*) supports_anon_versioning=yes ;;
+ *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11
+ *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ...
+ *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ...
+ *\ 2.11.*) ;; # other 2.11 versions
+ *) supports_anon_versioning=yes ;;
+ esac
+
+ # See if GNU ld supports shared libraries.
+ case $host_os in
+ aix[3-9]*)
+ # On AIX/PPC, the GNU linker is very broken
+ if test "$host_cpu" != ia64; then
+ ld_shlibs=no
+ cat <<_LT_EOF 1>&2
+
+*** Warning: the GNU linker, at least up to release 2.19, 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 install binutils
+*** 2.20 or above, or modify your PATH so that a non-GNU linker is found.
+*** You will then need to restart the configuration process.
+
+_LT_EOF
+ fi
+ ;;
+
+ amigaos*)
+ case $host_cpu in
+ powerpc)
+ # see comment about AmigaOS4 .so support
+ archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ archive_expsym_cmds=''
+ ;;
+ m68k)
+ 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
+ ;;
+ esac
+ ;;
+
+ beos*)
+ if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
+ allow_undefined_flag=unsupported
+ # Joseph Beckenbach <jrb3 at best.com> 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* | cegcc*)
+ # _LT_TAGVAR(hardcode_libdir_flag_spec, ) is actually meaningless,
+ # as there is no search path for DLLs.
+ hardcode_libdir_flag_spec='-L$libdir'
+ export_dynamic_flag_spec='${wl}--export-all-symbols'
+ allow_undefined_flag=unsupported
+ always_export_symbols=no
+ enable_shared_with_static_runtimes=yes
+ export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.* //'\'' | sort | uniq > $export_symbols'
+ exclude_expsyms='[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname'
+
+ if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then
+ archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
+ # If the export-symbols file already is a .def file (1st line
+ # is EXPORTS), use it as is; otherwise, prepend...
+ archive_expsym_cmds='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
+ cp $export_symbols $output_objdir/$soname.def;
+ else
+ echo EXPORTS > $output_objdir/$soname.def;
+ cat $export_symbols >> $output_objdir/$soname.def;
+ fi~
+ $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
+ else
+ ld_shlibs=no
+ fi
+ ;;
+
+ haiku*)
+ archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ link_all_deplibs=yes
+ ;;
+
+ interix[3-9]*)
+ hardcode_direct=no
+ hardcode_shlibpath_var=no
+ hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
+ export_dynamic_flag_spec='${wl}-E'
+ # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc.
+ # Instead, shared libraries are loaded at an image base (0x10000000 by
+ # default) and relocated if they conflict, which is a slow very memory
+ # consuming and fragmenting process. To avoid this, we pick a random,
+ # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link
+ # time. Moving up from 0x10000000 also allows more sbrk(2) space.
+ archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+ archive_expsym_cmds='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+ ;;
+
+ gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu)
+ tmp_diet=no
+ if test "$host_os" = linux-dietlibc; then
+ case $cc_basename in
+ diet\ *) tmp_diet=yes;; # linux-dietlibc with static linking (!diet-dyn)
+ esac
+ fi
+ if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \
+ && test "$tmp_diet" = no
+ then
+ tmp_addflag=' $pic_flag'
+ tmp_sharedflag='-shared'
+ case $cc_basename,$host_cpu in
+ pgcc*) # Portland Group C compiler
+ whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
+ tmp_addflag=' $pic_flag'
+ ;;
+ pgf77* | pgf90* | pgf95* | pgfortran*)
+ # Portland Group f77 and f90 compilers
+ whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
+ tmp_addflag=' $pic_flag -Mnomain' ;;
+ ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64
+ tmp_addflag=' -i_dynamic' ;;
+ efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64
+ tmp_addflag=' -i_dynamic -nofor_main' ;;
+ ifc* | ifort*) # Intel Fortran compiler
+ tmp_addflag=' -nofor_main' ;;
+ lf95*) # Lahey Fortran 8.1
+ whole_archive_flag_spec=
+ tmp_sharedflag='--shared' ;;
+ xl[cC]* | bgxl[cC]* | mpixl[cC]*) # IBM XL C 8.0 on PPC (deal with xlf below)
+ tmp_sharedflag='-qmkshrobj'
+ tmp_addflag= ;;
+ nvcc*) # Cuda Compiler Driver 2.2
+ whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
+ compiler_needs_object=yes
+ ;;
+ esac
+ case `$CC -V 2>&1 | sed 5q` in
+ *Sun\ C*) # Sun C 5.9
+ whole_archive_flag_spec='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
+ compiler_needs_object=yes
+ tmp_sharedflag='-G' ;;
+ *Sun\ F*) # Sun Fortran 8.3
+ tmp_sharedflag='-G' ;;
+ esac
+ archive_cmds='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+
+ if test "x$supports_anon_versioning" = xyes; then
+ archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~
+ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
+ echo "local: *; };" >> $output_objdir/$libname.ver~
+ $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
+ fi
+
+ case $cc_basename in
+ xlf* | bgf* | bgxlf* | mpixlf*)
+ # IBM XL Fortran 10.1 on PPC cannot create shared libs itself
+ whole_archive_flag_spec='--whole-archive$convenience --no-whole-archive'
+ hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+ archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib'
+ if test "x$supports_anon_versioning" = xyes; then
+ archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~
+ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
+ echo "local: *; };" >> $output_objdir/$libname.ver~
+ $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib'
+ fi
+ ;;
+ esac
+ else
+ ld_shlibs=no
+ fi
+ ;;
+
+ netbsd* | netbsdelf*-gnu)
+ 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 $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ fi
+ ;;
+
+ solaris*)
+ if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then
+ ld_shlibs=no
+ cat <<_LT_EOF 1>&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.
+
+_LT_EOF
+ elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
+ archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ else
+ ld_shlibs=no
+ fi
+ ;;
+
+ sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*)
+ case `$LD -v 2>&1` in
+ *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*)
+ ld_shlibs=no
+ cat <<_LT_EOF 1>&2
+
+*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not
+*** reliably create shared libraries on SCO systems. Therefore, libtool
+*** is disabling shared libraries support. We urge you to upgrade GNU
+*** binutils to release 2.16.91.0.3 or newer. Another option is to modify
+*** your PATH or compiler configuration so that the native linker is
+*** used, and then restart.
+
+_LT_EOF
+ ;;
+ *)
+ # For security reasons, it is highly recommended that you always
+ # use absolute paths for naming shared libraries, and exclude the
+ # DT_RUNPATH tag from executables and libraries. But doing so
+ # requires that you compile everything twice, which is a pain.
+ if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
+ hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+ 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
+ ;;
+
+ 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 $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ else
+ ld_shlibs=no
+ fi
+ ;;
+ esac
+
+ if test "$ld_shlibs" = no; then
+ runpath_var=
+ hardcode_libdir_flag_spec=
+ export_dynamic_flag_spec=
+ whole_archive_flag_spec=
+ fi
+ else
+ # PORTME fill in a description of your system's linker (not GNU ld)
+ case $host_os in
+ aix3*)
+ allow_undefined_flag=unsupported
+ always_export_symbols=yes
+ archive_expsym_cmds='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname'
+ # Note: this linker hardcodes the directories in LIBPATH if there
+ # are no directories specified by -L.
+ hardcode_minus_L=yes
+ if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then
+ # Neither direct hardcoding nor static linking is supported with a
+ # broken collect2.
+ hardcode_direct=unsupported
+ fi
+ ;;
+
+ aix[4-9]*)
+ if test "$host_cpu" = ia64; then
+ # On IA64, the linker does run time linking by default, so we don't
+ # have to do anything special.
+ aix_use_runtimelinking=no
+ exp_sym_flag='-Bexport'
+ no_entry_flag=""
+ else
+ # If we're using GNU nm, then we don't want the "-C" option.
+ # -C means demangle to AIX nm, but means don't demangle with GNU nm
+ # Also, AIX nm treats weak defined symbols like other global
+ # defined symbols, whereas GNU nm marks them as "W".
+ 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") || (\$ 2 == "W")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
+ else
+ export_symbols_cmds='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
+ fi
+ aix_use_runtimelinking=no
+
+ # Test if we are trying to use run time linking or normal
+ # AIX style linking. If -brtl is somewhere in LDFLAGS, we
+ # need to do runtime linking.
+ case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*)
+ for ld_flag in $LDFLAGS; do
+ if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then
+ aix_use_runtimelinking=yes
+ break
+ fi
+ done
+ ;;
+ esac
+
+ exp_sym_flag='-bexport'
+ no_entry_flag='-bnoentry'
+ fi
+
+ # When large executables or shared objects are built, AIX ld can
+ # have problems creating the table of contents. If linking a library
+ # or program results in "error TOC overflow" add -mminimal-toc to
+ # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not
+ # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
+
+ archive_cmds=''
+ hardcode_direct=yes
+ hardcode_direct_absolute=yes
+ hardcode_libdir_separator=':'
+ link_all_deplibs=yes
+ file_list_spec='${wl}-f,'
+
+ if test "$GCC" = yes; then
+ case $host_os in aix4.[012]|aix4.[012].*)
+ # We only want to do this on AIX 4.2 and lower, the check
+ # below for broken collect2 doesn't work under 4.3+
+ collect2name=`${CC} -print-prog-name=collect2`
+ if test -f "$collect2name" &&
+ strings "$collect2name" | $GREP resolve_lib_name >/dev/null
+ then
+ # We have reworked collect2
+ :
+ else
+ # We have old collect2
+ hardcode_direct=unsupported
+ # It fails to find uninstalled libraries when the uninstalled
+ # path is not listed in the libpath. Setting hardcode_minus_L
+ # to unsupported forces relinking
+ hardcode_minus_L=yes
+ hardcode_libdir_flag_spec='-L$libdir'
+ hardcode_libdir_separator=
+ fi
+ ;;
+ esac
+ shared_flag='-shared'
+ if test "$aix_use_runtimelinking" = yes; then
+ shared_flag="$shared_flag "'${wl}-G'
+ fi
+ link_all_deplibs=no
+ 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
+
+ export_dynamic_flag_spec='${wl}-bexpall'
+ # 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.
+ if test "${lt_cv_aix_libpath+set}" = set; then
+ aix_libpath=$lt_cv_aix_libpath
+else
+ if ${lt_cv_aix_libpath_+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+
+ lt_aix_libpath_sed='
+ /Import File Strings/,/^$/ {
+ /^0/ {
+ s/^0 *\([^ ]*\) *$/\1/
+ p
+ }
+ }'
+ lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+ # Check for a 64-bit object if we didn't find anything.
+ if test -z "$lt_cv_aix_libpath_"; then
+ lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+ fi
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ if test -z "$lt_cv_aix_libpath_"; then
+ lt_cv_aix_libpath_="/usr/lib:/lib"
+ fi
+
+fi
+
+ aix_libpath=$lt_cv_aix_libpath_
+fi
+
+ hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath"
+ archive_expsym_cmds='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag"
+ else
+ if test "$host_cpu" = ia64; then
+ hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib'
+ allow_undefined_flag="-z nodefs"
+ archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols"
+ else
+ # Determine the default libpath from the value encoded in an
+ # empty executable.
+ if test "${lt_cv_aix_libpath+set}" = set; then
+ aix_libpath=$lt_cv_aix_libpath
+else
+ if ${lt_cv_aix_libpath_+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+
+ lt_aix_libpath_sed='
+ /Import File Strings/,/^$/ {
+ /^0/ {
+ s/^0 *\([^ ]*\) *$/\1/
+ p
+ }
+ }'
+ lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+ # Check for a 64-bit object if we didn't find anything.
+ if test -z "$lt_cv_aix_libpath_"; then
+ lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+ fi
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ if test -z "$lt_cv_aix_libpath_"; then
+ lt_cv_aix_libpath_="/usr/lib:/lib"
+ fi
+
+fi
+
+ aix_libpath=$lt_cv_aix_libpath_
+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'
+ if test "$with_gnu_ld" = yes; then
+ # We only use this code for GNU lds that support --whole-archive.
+ whole_archive_flag_spec='${wl}--whole-archive$convenience ${wl}--no-whole-archive'
+ else
+ # Exported symbols can be pulled into shared objects from archives
+ whole_archive_flag_spec='$convenience'
+ fi
+ archive_cmds_need_lc=yes
+ # This is similar to how AIX traditionally builds its shared libraries.
+ archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
+ fi
+ fi
+ ;;
+
+ amigaos*)
+ case $host_cpu in
+ powerpc)
+ # see comment about AmigaOS4 .so support
+ archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ archive_expsym_cmds=''
+ ;;
+ m68k)
+ 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
+ ;;
+ esac
+ ;;
+
+ bsdi[45]*)
+ export_dynamic_flag_spec=-rdynamic
+ ;;
+
+ cygwin* | mingw* | pw32* | cegcc*)
+ # 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.
+ case $cc_basename in
+ cl*)
+ # Native MSVC
+ hardcode_libdir_flag_spec=' '
+ allow_undefined_flag=unsupported
+ always_export_symbols=yes
+ file_list_spec='@'
+ # Tell ltmain to make .lib files, not .a files.
+ libext=lib
+ # Tell ltmain to make .dll files, not .so files.
+ shrext_cmds=".dll"
+ # FIXME: Setting linknames here is a bad hack.
+ archive_cmds='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames='
+ archive_expsym_cmds='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
+ sed -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp;
+ else
+ sed -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp;
+ fi~
+ $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~
+ linknames='
+ # The linker will not automatically build a static lib if we build a DLL.
+ # _LT_TAGVAR(old_archive_from_new_cmds, )='true'
+ enable_shared_with_static_runtimes=yes
+ exclude_expsyms='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*'
+ export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1,DATA/'\'' | $SED -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols'
+ # Don't use ranlib
+ old_postinstall_cmds='chmod 644 $oldlib'
+ postlink_cmds='lt_outputfile="@OUTPUT@"~
+ lt_tool_outputfile="@TOOL_OUTPUT@"~
+ case $lt_outputfile in
+ *.exe|*.EXE) ;;
+ *)
+ lt_outputfile="$lt_outputfile.exe"
+ lt_tool_outputfile="$lt_tool_outputfile.exe"
+ ;;
+ esac~
+ if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then
+ $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1;
+ $RM "$lt_outputfile.manifest";
+ fi'
+ ;;
+ *)
+ # Assume MSVC wrapper
+ hardcode_libdir_flag_spec=' '
+ allow_undefined_flag=unsupported
+ # Tell ltmain to make .lib files, not .a files.
+ libext=lib
+ # Tell ltmain to make .dll files, not .so files.
+ shrext_cmds=".dll"
+ # FIXME: Setting linknames here is a bad hack.
+ archive_cmds='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''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'
+ enable_shared_with_static_runtimes=yes
+ ;;
+ esac
+ ;;
+
+ darwin* | rhapsody*)
+
+
+ archive_cmds_need_lc=no
+ hardcode_direct=no
+ hardcode_automatic=yes
+ hardcode_shlibpath_var=unsupported
+ if test "$lt_cv_ld_force_load" = "yes"; then
+ whole_archive_flag_spec='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience ${wl}-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`'
+
+ else
+ whole_archive_flag_spec=''
+ fi
+ link_all_deplibs=yes
+ allow_undefined_flag="$_lt_dar_allow_undefined"
+ case $cc_basename in
+ ifort*) _lt_dar_can_shared=yes ;;
+ *) _lt_dar_can_shared=$GCC ;;
+ esac
+ if test "$_lt_dar_can_shared" = "yes"; then
+ output_verbose_link_cmd=func_echo_all
+ archive_cmds="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}"
+ module_cmds="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}"
+ archive_expsym_cmds="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}"
+ module_expsym_cmds="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}"
+
+ else
+ ld_shlibs=no
+ fi
+
+ ;;
+
+ dgux*)
+ archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_libdir_flag_spec='-L$libdir'
+ hardcode_shlibpath_var=no
+ ;;
+
+ # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor
+ # support. Future versions do this automatically, but an explicit c++rt0.o
+ # does not break anything, and helps significantly (at the cost of a little
+ # extra space).
+ freebsd2.2*)
+ archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o'
+ hardcode_libdir_flag_spec='-R$libdir'
+ hardcode_direct=yes
+ hardcode_shlibpath_var=no
+ ;;
+
+ # Unfortunately, older versions of FreeBSD 2 do not have this feature.
+ freebsd2.*)
+ archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_direct=yes
+ hardcode_minus_L=yes
+ hardcode_shlibpath_var=no
+ ;;
+
+ # FreeBSD 3 and greater uses gcc -shared to do shared libraries.
+ freebsd* | dragonfly*)
+ archive_cmds='$CC -shared $pic_flag -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 $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+ else
+ archive_cmds='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+ fi
+ hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
+ hardcode_libdir_separator=:
+ hardcode_direct=yes
+
+ # hardcode_minus_L: Not really in the search PATH,
+ # but as the default location of the library.
+ hardcode_minus_L=yes
+ export_dynamic_flag_spec='${wl}-E'
+ ;;
+
+ hpux10*)
+ if test "$GCC" = yes && test "$with_gnu_ld" = no; then
+ archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+ else
+ archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
+ fi
+ if test "$with_gnu_ld" = no; then
+ hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
+ hardcode_libdir_separator=:
+ hardcode_direct=yes
+ hardcode_direct_absolute=yes
+ export_dynamic_flag_spec='${wl}-E'
+ # hardcode_minus_L: Not really in the search PATH,
+ # but as the default location of the library.
+ hardcode_minus_L=yes
+ fi
+ ;;
+
+ hpux11*)
+ if test "$GCC" = yes && test "$with_gnu_ld" = no; then
+ case $host_cpu in
+ hppa*64*)
+ archive_cmds='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ ia64*)
+ archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ *)
+ archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ esac
+ else
+ case $host_cpu in
+ hppa*64*)
+ archive_cmds='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ ia64*)
+ archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ *)
+
+ # Older versions of the 11.00 compiler do not understand -b yet
+ # (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does)
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC understands -b" >&5
+$as_echo_n "checking if $CC understands -b... " >&6; }
+if ${lt_cv_prog_compiler__b+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ lt_cv_prog_compiler__b=no
+ save_LDFLAGS="$LDFLAGS"
+ LDFLAGS="$LDFLAGS -b"
+ echo "$lt_simple_link_test_code" > conftest.$ac_ext
+ if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
+ # The linker can only warn and ignore the option if not recognized
+ # So say no if there are warnings
+ if test -s conftest.err; then
+ # Append any errors to the config.log.
+ cat conftest.err 1>&5
+ $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp
+ $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+ if diff conftest.exp conftest.er2 >/dev/null; then
+ lt_cv_prog_compiler__b=yes
+ fi
+ else
+ lt_cv_prog_compiler__b=yes
+ fi
+ fi
+ $RM -r conftest*
+ LDFLAGS="$save_LDFLAGS"
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler__b" >&5
+$as_echo "$lt_cv_prog_compiler__b" >&6; }
+
+if test x"$lt_cv_prog_compiler__b" = xyes; then
+ archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+else
+ archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
+fi
+
+ ;;
+ esac
+ fi
+ if test "$with_gnu_ld" = no; then
+ hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
+ hardcode_libdir_separator=:
+
+ case $host_cpu in
+ hppa*64*|ia64*)
+ hardcode_direct=no
+ hardcode_shlibpath_var=no
+ ;;
+ *)
+ hardcode_direct=yes
+ hardcode_direct_absolute=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 $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+ # Try to use the -exported_symbol ld option, if it does not
+ # work, assume that -exports_file does not work either and
+ # implicitly export all symbols.
+ # This should be the same for all languages, so no per-tag cache variable.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $host_os linker accepts -exported_symbol" >&5
+$as_echo_n "checking whether the $host_os linker accepts -exported_symbol... " >&6; }
+if ${lt_cv_irix_exported_symbol+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ save_LDFLAGS="$LDFLAGS"
+ LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null"
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+int foo (void) { return 0; }
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ lt_cv_irix_exported_symbol=yes
+else
+ lt_cv_irix_exported_symbol=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ LDFLAGS="$save_LDFLAGS"
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_irix_exported_symbol" >&5
+$as_echo "$lt_cv_irix_exported_symbol" >&6; }
+ if test "$lt_cv_irix_exported_symbol" = yes; then
+ archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib'
+ fi
+ else
+ archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
+ archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib'
+ fi
+ archive_cmds_need_lc='no'
+ hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+ hardcode_libdir_separator=:
+ inherit_rpath=yes
+ link_all_deplibs=yes
+ ;;
+
+ netbsd* | netbsdelf*-gnu)
+ 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
+ ;;
+
+ *nto* | *qnx*)
+ ;;
+
+ openbsd*)
+ if test -f /usr/libexec/ld.so; then
+ hardcode_direct=yes
+ hardcode_shlibpath_var=no
+ hardcode_direct_absolute=yes
+ if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+ archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+ archive_expsym_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols'
+ hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
+ export_dynamic_flag_spec='${wl}-E'
+ else
+ case $host_os in
+ openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*)
+ archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_libdir_flag_spec='-R$libdir'
+ ;;
+ *)
+ archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+ hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
+ ;;
+ esac
+ fi
+ else
+ ld_shlibs=no
+ fi
+ ;;
+
+ os2*)
+ hardcode_libdir_flag_spec='-L$libdir'
+ hardcode_minus_L=yes
+ allow_undefined_flag=unsupported
+ archive_cmds='$ECHO "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~echo DATA >> $output_objdir/$libname.def~echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def'
+ old_archive_from_new_cmds='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def'
+ ;;
+
+ osf3*)
+ if test "$GCC" = yes; then
+ allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*'
+ archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+ else
+ allow_undefined_flag=' -expect_unresolved \*'
+ archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
+ fi
+ archive_cmds_need_lc='no'
+ 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} $pic_flag $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${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='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-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; printf "%s\\n" "-hidden">> $lib.exp~
+ $CC -shared${allow_undefined_flag} ${wl}-input ${wl}$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~$RM $lib.exp'
+
+ # Both c and cxx compiler support -rpath directly
+ hardcode_libdir_flag_spec='-rpath $libdir'
+ fi
+ archive_cmds_need_lc='no'
+ hardcode_libdir_separator=:
+ ;;
+
+ solaris*)
+ no_undefined_flag=' -z defs'
+ if test "$GCC" = yes; then
+ wlarc='${wl}'
+ archive_cmds='$CC -shared $pic_flag ${wl}-z ${wl}text ${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 $pic_flag ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
+ else
+ case `$CC -V 2>&1` in
+ *"Compilers 5.0"*)
+ wlarc=''
+ archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
+ $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp'
+ ;;
+ *)
+ wlarc='${wl}'
+ archive_cmds='$CC -G${allow_undefined_flag} -h $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 -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
+ ;;
+ esac
+ fi
+ hardcode_libdir_flag_spec='-R$libdir'
+ hardcode_shlibpath_var=no
+ case $host_os in
+ solaris2.[0-5] | solaris2.[0-5].*) ;;
+ *)
+ # The compiler driver will combine and reorder linker options,
+ # but understands `-z linker_flag'. GCC discards it without `$wl',
+ # but is careful enough not to reorder.
+ # Supported since Solaris 2.6 (maybe 2.5.1?)
+ if test "$GCC" = yes; then
+ whole_archive_flag_spec='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract'
+ else
+ whole_archive_flag_spec='-z allextract$convenience -z defaultextract'
+ fi
+ ;;
+ esac
+ link_all_deplibs=yes
+ ;;
+
+ sunos4*)
+ if test "x$host_vendor" = xsequent; then
+ # Use $CC to link under sequent, because it throws in some extra .o
+ # files that make .init and .fini sections work.
+ archive_cmds='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags'
+ else
+ archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags'
+ fi
+ hardcode_libdir_flag_spec='-L$libdir'
+ hardcode_direct=yes
+ hardcode_minus_L=yes
+ hardcode_shlibpath_var=no
+ ;;
+
+ sysv4)
+ case $host_vendor in
+ sni)
+ archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_direct=yes # is this really true???
+ ;;
+ siemens)
+ ## LD is ld it makes a PLAMLIB
+ ## CC just makes a GrossModule.
+ archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags'
+ reload_cmds='$CC -r -o $output$reload_objs'
+ hardcode_direct=no
+ ;;
+ motorola)
+ archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_direct=no #Motorola manual says yes, but my tests say they lie
+ ;;
+ esac
+ runpath_var='LD_RUN_PATH'
+ hardcode_shlibpath_var=no
+ ;;
+
+ sysv4.3*)
+ archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_shlibpath_var=no
+ export_dynamic_flag_spec='-Bexport'
+ ;;
+
+ sysv4*MP*)
+ if test -d /usr/nec; then
+ archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_shlibpath_var=no
+ runpath_var=LD_RUN_PATH
+ hardcode_runpath_var=yes
+ ld_shlibs=yes
+ fi
+ ;;
+
+ sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*)
+ no_undefined_flag='${wl}-z,text'
+ archive_cmds_need_lc=no
+ hardcode_shlibpath_var=no
+ runpath_var='LD_RUN_PATH'
+
+ if test "$GCC" = yes; then
+ archive_cmds='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ else
+ archive_cmds='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ fi
+ ;;
+
+ sysv5* | sco3.2v5* | sco5v6*)
+ # Note: We can NOT use -z defs as we might desire, because we do not
+ # link with -lc, and that would cause any symbols used from libc to
+ # always be unresolved, which means just about no library would
+ # ever link correctly. If we're not using GNU ld we use -z text
+ # though, which does catch some bad symbols but isn't as heavy-handed
+ # as -z defs.
+ no_undefined_flag='${wl}-z,text'
+ allow_undefined_flag='${wl}-z,nodefs'
+ archive_cmds_need_lc=no
+ hardcode_shlibpath_var=no
+ hardcode_libdir_flag_spec='${wl}-R,$libdir'
+ hardcode_libdir_separator=':'
+ link_all_deplibs=yes
+ export_dynamic_flag_spec='${wl}-Bexport'
+ runpath_var='LD_RUN_PATH'
+
+ if test "$GCC" = yes; then
+ archive_cmds='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ else
+ archive_cmds='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ fi
+ ;;
+
+ 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
+
+ if test x$host_vendor = xsni; then
+ case $host in
+ sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
+ export_dynamic_flag_spec='${wl}-Blargedynsym'
+ ;;
+ esac
+ fi
+ fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs" >&5
+$as_echo "$ld_shlibs" >&6; }
+test "$ld_shlibs" = no && can_build_shared=no
+
+with_gnu_ld=$with_gnu_ld
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#
+# Do we need to explicitly link libc?
+#
+case "x$archive_cmds_need_lc" in
+x|xyes)
+ # Assume -lc should be added
+ archive_cmds_need_lc=yes
+
+ if test "$enable_shared" = yes && test "$GCC" = yes; then
+ case $archive_cmds in
+ *'~'*)
+ # FIXME: we may have to deal with multi-command sequences.
+ ;;
+ '$CC '*)
+ # Test whether the compiler implicitly links with -lc since on some
+ # systems, -lgcc has to come before -lc. If gcc already passes -lc
+ # to ld, don't add -lc before -lgcc.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5
+$as_echo_n "checking whether -lc should be explicitly linked in... " >&6; }
+if ${lt_cv_archive_cmds_need_lc+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ $RM conftest*
+ echo "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+ if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; } 2>conftest.err; then
+ soname=conftest
+ lib=conftest
+ libobjs=conftest.$ac_objext
+ deplibs=
+ wl=$lt_prog_compiler_wl
+ pic_flag=$lt_prog_compiler_pic
+ compiler_flags=-v
+ linker_flags=-v
+ verstring=
+ output_objdir=.
+ libname=conftest
+ lt_save_allow_undefined_flag=$allow_undefined_flag
+ allow_undefined_flag=
+ if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\""; } >&5
+ (eval $archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }
+ then
+ lt_cv_archive_cmds_need_lc=no
+ else
+ lt_cv_archive_cmds_need_lc=yes
+ fi
+ allow_undefined_flag=$lt_save_allow_undefined_flag
+ else
+ cat conftest.err 1>&5
+ fi
+ $RM conftest*
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc" >&5
+$as_echo "$lt_cv_archive_cmds_need_lc" >&6; }
+ archive_cmds_need_lc=$lt_cv_archive_cmds_need_lc
+ ;;
+ esac
+ fi
+ ;;
+esac
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5
+$as_echo_n "checking dynamic linker characteristics... " >&6; }
+
+if test "$GCC" = yes; then
+ case $host_os in
+ darwin*) lt_awk_arg="/^libraries:/,/LR/" ;;
+ *) lt_awk_arg="/^libraries:/" ;;
+ esac
+ case $host_os in
+ mingw* | cegcc*) lt_sed_strip_eq="s,=\([A-Za-z]:\),\1,g" ;;
+ *) lt_sed_strip_eq="s,=/,/,g" ;;
+ esac
+ lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq`
+ case $lt_search_path_spec in
+ *\;*)
+ # if the path contains ";" then we assume it to be the separator
+ # otherwise default to the standard path separator (i.e. ":") - it is
+ # assumed that no part of a normal pathname contains ";" but that should
+ # okay in the real world where ";" in dirpaths is itself problematic.
+ lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED 's/;/ /g'`
+ ;;
+ *)
+ lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED "s/$PATH_SEPARATOR/ /g"`
+ ;;
+ esac
+ # Ok, now we have the path, separated by spaces, we can step through it
+ # and add multilib dir if necessary.
+ lt_tmp_lt_search_path_spec=
+ lt_multi_os_dir=`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null`
+ for lt_sys_path in $lt_search_path_spec; do
+ if test -d "$lt_sys_path/$lt_multi_os_dir"; then
+ lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path/$lt_multi_os_dir"
+ else
+ test -d "$lt_sys_path" && \
+ lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path"
+ fi
+ done
+ lt_search_path_spec=`$ECHO "$lt_tmp_lt_search_path_spec" | awk '
+BEGIN {RS=" "; FS="/|\n";} {
+ lt_foo="";
+ lt_count=0;
+ for (lt_i = NF; lt_i > 0; lt_i--) {
+ if ($lt_i != "" && $lt_i != ".") {
+ if ($lt_i == "..") {
+ lt_count++;
+ } else {
+ if (lt_count == 0) {
+ lt_foo="/" $lt_i lt_foo;
+ } else {
+ lt_count--;
+ }
+ }
+ }
+ }
+ if (lt_foo != "") { lt_freq[lt_foo]++; }
+ if (lt_freq[lt_foo] == 1) { print lt_foo; }
+}'`
+ # AWK program above erroneously prepends '/' to C:/dos/paths
+ # for these hosts.
+ case $host_os in
+ mingw* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\
+ $SED 's,/\([A-Za-z]:\),\1,g'` ;;
+ esac
+ sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP`
+else
+ sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
+fi
+library_names_spec=
+libname_spec='lib$name'
+soname_spec=
+shrext_cmds=".so"
+postinstall_cmds=
+postuninstall_cmds=
+finish_cmds=
+finish_eval=
+shlibpath_var=
+shlibpath_overrides_runpath=unknown
+version_type=none
+dynamic_linker="$host_os ld.so"
+sys_lib_dlsearch_path_spec="/lib /usr/lib"
+need_lib_prefix=unknown
+hardcode_into_libs=no
+
+# when you set need_version to no, make sure it does not cause -set_version
+# flags to be left without arguments
+need_version=unknown
+
+case $host_os in
+aix3*)
+ version_type=linux # correct to gnu/linux during the next big refactor
+ library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a'
+ shlibpath_var=LIBPATH
+
+ # AIX 3 has no versioning support, so we append a major version to the name.
+ soname_spec='${libname}${release}${shared_ext}$major'
+ ;;
+
+aix[4-9]*)
+ version_type=linux # correct to gnu/linux during the next big refactor
+ 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<name>.so
+ # instead of lib<name>.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*)
+ case $host_cpu in
+ powerpc)
+ # Since July 2007 AmigaOS4 officially supports .so libraries.
+ # When compiling the executable, add -use-dynld -Lsobjs: to the compileline.
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ ;;
+ m68k)
+ 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=`func_echo_all "$lib" | $SED '\''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'
+ ;;
+ esac
+ ;;
+
+beos*)
+ library_names_spec='${libname}${shared_ext}'
+ dynamic_linker="$host_os ld.so"
+ shlibpath_var=LIBRARY_PATH
+ ;;
+
+bsdi[45]*)
+ version_type=linux # correct to gnu/linux during the next big refactor
+ 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* | cegcc*)
+ version_type=windows
+ shrext_cmds=".dll"
+ need_version=no
+ need_lib_prefix=no
+
+ case $GCC,$cc_basename in
+ yes,*)
+ # gcc
+ library_names_spec='$libname.dll.a'
+ # DLL is installed to $(libdir)/../bin by postinstall_cmds
+ postinstall_cmds='base_file=`basename \${file}`~
+ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~
+ dldir=$destdir/`dirname \$dlpath`~
+ test -d \$dldir || mkdir -p \$dldir~
+ $install_prog $dir/$dlname \$dldir/$dlname~
+ chmod a+x \$dldir/$dlname~
+ if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then
+ eval '\''$striplib \$dldir/$dlname'\'' || exit \$?;
+ fi'
+ 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="$sys_lib_search_path_spec /usr/lib/w32api"
+ ;;
+ mingw* | cegcc*)
+ # MinGW DLLs use traditional 'lib' prefix
+ soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+ ;;
+ 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
+ dynamic_linker='Win32 ld.exe'
+ ;;
+
+ *,cl*)
+ # Native MSVC
+ libname_spec='$name'
+ soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+ library_names_spec='${libname}.dll.lib'
+
+ case $build_os in
+ mingw*)
+ sys_lib_search_path_spec=
+ lt_save_ifs=$IFS
+ IFS=';'
+ for lt_path in $LIB
+ do
+ IFS=$lt_save_ifs
+ # Let DOS variable expansion print the short 8.3 style file name.
+ lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"`
+ sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path"
+ done
+ IFS=$lt_save_ifs
+ # Convert to MSYS style.
+ sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([a-zA-Z]\\):| /\\1|g' -e 's|^ ||'`
+ ;;
+ cygwin*)
+ # Convert to unix form, then to dos form, then back to unix form
+ # but this time dos style (no spaces!) so that the unix form looks
+ # like /cygdrive/c/PROGRA~1:/cygdr...
+ sys_lib_search_path_spec=`cygpath --path --unix "$LIB"`
+ sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null`
+ sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
+ ;;
+ *)
+ sys_lib_search_path_spec="$LIB"
+ if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then
+ # It is most probably a Windows format PATH.
+ 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
+ # FIXME: find the short name or the path components, as spaces are
+ # common. (e.g. "Program Files" -> "PROGRA~1")
+ ;;
+ esac
+
+ # 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
+ dynamic_linker='Win32 link.exe'
+ ;;
+
+ *)
+ # Assume MSVC wrapper
+ library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib'
+ dynamic_linker='Win32 ld.exe'
+ ;;
+ esac
+ # FIXME: first we should search . and the directory the executable is in
+ shlibpath_var=PATH
+ ;;
+
+darwin* | rhapsody*)
+ dynamic_linker="$host_os dyld"
+ version_type=darwin
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${major}$shared_ext ${libname}$shared_ext'
+ soname_spec='${libname}${release}${major}$shared_ext'
+ shlibpath_overrides_runpath=yes
+ shlibpath_var=DYLD_LIBRARY_PATH
+ shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`'
+
+ sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib"
+ sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib'
+ ;;
+
+dgux*)
+ version_type=linux # correct to gnu/linux during the next big refactor
+ 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
+ ;;
+
+freebsd* | dragonfly*)
+ # DragonFly does not have aout. When/if they implement a new
+ # versioning mechanism, adjust this.
+ if test -x /usr/bin/objformat; then
+ objformat=`/usr/bin/objformat`
+ else
+ case $host_os in
+ freebsd[23].*) objformat=aout ;;
+ *) objformat=elf ;;
+ esac
+ fi
+ version_type=freebsd-$objformat
+ case $version_type in
+ freebsd-elf*)
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
+ need_version=no
+ need_lib_prefix=no
+ ;;
+ freebsd-*)
+ library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix'
+ need_version=yes
+ ;;
+ esac
+ shlibpath_var=LD_LIBRARY_PATH
+ case $host_os in
+ freebsd2.*)
+ shlibpath_overrides_runpath=yes
+ ;;
+ freebsd3.[01]* | freebsdelf3.[01]*)
+ shlibpath_overrides_runpath=yes
+ hardcode_into_libs=yes
+ ;;
+ freebsd3.[2-9]* | freebsdelf3.[2-9]* | \
+ freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1)
+ shlibpath_overrides_runpath=no
+ hardcode_into_libs=yes
+ ;;
+ *) # from 4.6 on, and DragonFly
+ shlibpath_overrides_runpath=yes
+ hardcode_into_libs=yes
+ ;;
+ esac
+ ;;
+
+gnu*)
+ version_type=linux # correct to gnu/linux during the next big refactor
+ 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=no
+ hardcode_into_libs=yes
+ ;;
+
+haiku*)
+ version_type=linux # correct to gnu/linux during the next big refactor
+ need_lib_prefix=no
+ need_version=no
+ dynamic_linker="$host_os runtime_loader"
+ 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=LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+ sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib'
+ hardcode_into_libs=yes
+ ;;
+
+hpux9* | hpux10* | hpux11*)
+ # Give a soname corresponding to the major version so that dld.sl refuses to
+ # link against other versions.
+ version_type=sunos
+ need_lib_prefix=no
+ need_version=no
+ case $host_cpu in
+ ia64*)
+ shrext_cmds='.so'
+ hardcode_into_libs=yes
+ dynamic_linker="$host_os dld.so"
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ if test "X$HPUX_IA64_MODE" = X32; then
+ sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib"
+ else
+ sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64"
+ fi
+ sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+ ;;
+ hppa*64*)
+ shrext_cmds='.sl'
+ hardcode_into_libs=yes
+ dynamic_linker="$host_os dld.sl"
+ shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH
+ shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64"
+ sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+ ;;
+ *)
+ shrext_cmds='.sl'
+ dynamic_linker="$host_os dld.sl"
+ shlibpath_var=SHLIB_PATH
+ shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ ;;
+ esac
+ # HP-UX runs *really* slowly unless shared libraries are mode 555, ...
+ postinstall_cmds='chmod 555 $lib'
+ # or fails outright, so override atomically:
+ install_override_mode=555
+ ;;
+
+interix[3-9]*)
+ version_type=linux # correct to gnu/linux during the next big refactor
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=no
+ hardcode_into_libs=yes
+ ;;
+
+irix5* | irix6* | nonstopux*)
+ case $host_os in
+ nonstopux*) version_type=nonstopux ;;
+ *)
+ if test "$lt_cv_prog_gnu_ld" = yes; then
+ version_type=linux # correct to gnu/linux during the next big refactor
+ 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 glibc/ELF.
+linux* | k*bsd*-gnu | kopensolaris*-gnu)
+ version_type=linux # correct to gnu/linux during the next big refactor
+ 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
+
+ # Some binutils ld are patched to set DT_RUNPATH
+ if ${lt_cv_shlibpath_overrides_runpath+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ lt_cv_shlibpath_overrides_runpath=no
+ save_LDFLAGS=$LDFLAGS
+ save_libdir=$libdir
+ eval "libdir=/foo; wl=\"$lt_prog_compiler_wl\"; \
+ LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec\""
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ if ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then :
+ lt_cv_shlibpath_overrides_runpath=yes
+fi
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ LDFLAGS=$save_LDFLAGS
+ libdir=$save_libdir
+
+fi
+
+ shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath
+
+ # 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
+
+ # Append ld.so.conf contents to the search path
+ if test -f /etc/ld.so.conf; then
+ lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '`
+ sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra"
+ fi
+
+ # We used to test for /lib/ld.so.1 and disable shared libraries on
+ # powerpc, because MkLinux only supported shared libraries with the
+ # GNU dynamic linker. Since this was broken with cross compilers,
+ # most powerpc-linux boxes support dynamic linking these days and
+ # people can always --disable-shared, the test was removed, and we
+ # assume the GNU/Linux dynamic linker is in use.
+ dynamic_linker='GNU/Linux ld.so'
+ ;;
+
+netbsdelf*-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
+ shlibpath_overrides_runpath=no
+ hardcode_into_libs=yes
+ dynamic_linker='NetBSD ld.elf_so'
+ ;;
+
+netbsd*)
+ version_type=sunos
+ need_lib_prefix=no
+ need_version=no
+ if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+ finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+ dynamic_linker='NetBSD (a.out) ld.so'
+ else
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ dynamic_linker='NetBSD ld.elf_so'
+ fi
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+ hardcode_into_libs=yes
+ ;;
+
+newsos6)
+ version_type=linux # correct to gnu/linux during the next big refactor
+ 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=qnx
+ 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=no
+ hardcode_into_libs=yes
+ dynamic_linker='ldqnx.so'
+ ;;
+
+openbsd*)
+ version_type=sunos
+ sys_lib_dlsearch_path_spec="/usr/lib"
+ need_lib_prefix=no
+ # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs.
+ case $host_os in
+ openbsd3.3 | openbsd3.3.*) need_version=yes ;;
+ *) need_version=no ;;
+ esac
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+ finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+ shlibpath_var=LD_LIBRARY_PATH
+ if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+ case $host_os in
+ openbsd2.[89] | openbsd2.[89].*)
+ shlibpath_overrides_runpath=no
+ ;;
+ *)
+ shlibpath_overrides_runpath=yes
+ ;;
+ esac
+ else
+ shlibpath_overrides_runpath=yes
+ fi
+ ;;
+
+os2*)
+ libname_spec='$name'
+ shrext_cmds=".dll"
+ need_lib_prefix=no
+ library_names_spec='$libname${shared_ext} $libname.a'
+ dynamic_linker='OS/2 ld.exe'
+ shlibpath_var=LIBPATH
+ ;;
+
+osf3* | osf4* | osf5*)
+ version_type=osf
+ need_lib_prefix=no
+ need_version=no
+ soname_spec='${libname}${release}${shared_ext}$major'
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ shlibpath_var=LD_LIBRARY_PATH
+ sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib"
+ sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec"
+ ;;
+
+rdos*)
+ dynamic_linker=no
+ ;;
+
+solaris*)
+ version_type=linux # correct to gnu/linux during the next big refactor
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+ hardcode_into_libs=yes
+ # ldd complains unless libraries are executable
+ postinstall_cmds='chmod +x $lib'
+ ;;
+
+sunos4*)
+ version_type=sunos
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+ finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+ if test "$with_gnu_ld" = yes; then
+ need_lib_prefix=no
+ fi
+ need_version=yes
+ ;;
+
+sysv4 | sysv4.3*)
+ version_type=linux # correct to gnu/linux during the next big refactor
+ 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
+ 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 # correct to gnu/linux during the next big refactor
+ library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}'
+ soname_spec='$libname${shared_ext}.$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ fi
+ ;;
+
+sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
+ version_type=freebsd-elf
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+ hardcode_into_libs=yes
+ if test "$with_gnu_ld" = yes; then
+ sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib'
+ else
+ sys_lib_search_path_spec='/usr/ccs/lib /usr/lib'
+ case $host_os in
+ sco3.2v5*)
+ sys_lib_search_path_spec="$sys_lib_search_path_spec /lib"
+ ;;
+ esac
+ fi
+ sys_lib_dlsearch_path_spec='/usr/lib'
+ ;;
+
+tpf*)
+ # TPF is a cross-target only. Preferred cross-host = GNU/Linux.
+ version_type=linux # correct to gnu/linux during the next big refactor
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=no
+ hardcode_into_libs=yes
+ ;;
+
+uts4*)
+ version_type=linux # correct to gnu/linux during the next big refactor
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ ;;
+
+*)
+ dynamic_linker=no
+ ;;
+esac
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5
+$as_echo "$dynamic_linker" >&6; }
+test "$dynamic_linker" = 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
+
+if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then
+ sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec"
+fi
+if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then
+ sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec"
+fi
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5
+$as_echo_n "checking how to hardcode library paths into programs... " >&6; }
+hardcode_action=
+if test -n "$hardcode_libdir_flag_spec" ||
+ test -n "$runpath_var" ||
+ test "X$hardcode_automatic" = "Xyes" ; then
+
+ # We can hardcode non-existent 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_TAGVAR(hardcode_shlibpath_var, )" != no &&
+ test "$hardcode_minus_L" != no; then
+ # Linking always hardcodes the temporary library directory.
+ hardcode_action=relink
+ else
+ # We can link without hardcoding, and we can hardcode nonexisting dirs.
+ hardcode_action=immediate
+ fi
+else
+ # We cannot hardcode anything, or else we can only hardcode existing
+ # directories.
+ hardcode_action=unsupported
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action" >&5
+$as_echo "$hardcode_action" >&6; }
+
+if test "$hardcode_action" = relink ||
+ test "$inherit_rpath" = yes; 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
+
+
+
+
+
+
+ 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* | cegcc*)
+ lt_cv_dlopen="LoadLibrary"
+ lt_cv_dlopen_libs=
+ ;;
+
+ cygwin*)
+ lt_cv_dlopen="dlopen"
+ lt_cv_dlopen_libs=
+ ;;
+
+ darwin*)
+ # if libdl is installed we need to link against it
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5
+$as_echo_n "checking for dlopen in -ldl... " >&6; }
+if ${ac_cv_lib_dl_dlopen+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldl $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char dlopen ();
+int
+main ()
+{
+return dlopen ();
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ ac_cv_lib_dl_dlopen=yes
+else
+ ac_cv_lib_dl_dlopen=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5
+$as_echo "$ac_cv_lib_dl_dlopen" >&6; }
+if test "x$ac_cv_lib_dl_dlopen" = xyes; 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
+
+ ;;
+
+ *)
+ ac_fn_c_check_func "$LINENO" "shl_load" "ac_cv_func_shl_load"
+if test "x$ac_cv_func_shl_load" = xyes; then :
+ lt_cv_dlopen="shl_load"
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for shl_load in -ldld" >&5
+$as_echo_n "checking for shl_load in -ldld... " >&6; }
+if ${ac_cv_lib_dld_shl_load+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldld $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char shl_load ();
+int
+main ()
+{
+return shl_load ();
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ ac_cv_lib_dld_shl_load=yes
+else
+ ac_cv_lib_dld_shl_load=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_shl_load" >&5
+$as_echo "$ac_cv_lib_dld_shl_load" >&6; }
+if test "x$ac_cv_lib_dld_shl_load" = xyes; then :
+ lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld"
+else
+ ac_fn_c_check_func "$LINENO" "dlopen" "ac_cv_func_dlopen"
+if test "x$ac_cv_func_dlopen" = xyes; then :
+ lt_cv_dlopen="dlopen"
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5
+$as_echo_n "checking for dlopen in -ldl... " >&6; }
+if ${ac_cv_lib_dl_dlopen+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldl $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char dlopen ();
+int
+main ()
+{
+return dlopen ();
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ ac_cv_lib_dl_dlopen=yes
+else
+ ac_cv_lib_dl_dlopen=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5
+$as_echo "$ac_cv_lib_dl_dlopen" >&6; }
+if test "x$ac_cv_lib_dl_dlopen" = xyes; then :
+ lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -lsvld" >&5
+$as_echo_n "checking for dlopen in -lsvld... " >&6; }
+if ${ac_cv_lib_svld_dlopen+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-lsvld $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char dlopen ();
+int
+main ()
+{
+return dlopen ();
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ ac_cv_lib_svld_dlopen=yes
+else
+ ac_cv_lib_svld_dlopen=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_svld_dlopen" >&5
+$as_echo "$ac_cv_lib_svld_dlopen" >&6; }
+if test "x$ac_cv_lib_svld_dlopen" = xyes; then :
+ lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dld_link in -ldld" >&5
+$as_echo_n "checking for dld_link in -ldld... " >&6; }
+if ${ac_cv_lib_dld_dld_link+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldld $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char dld_link ();
+int
+main ()
+{
+return dld_link ();
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ ac_cv_lib_dld_dld_link=yes
+else
+ ac_cv_lib_dld_dld_link=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_dld_link" >&5
+$as_echo "$ac_cv_lib_dld_dld_link" >&6; }
+if test "x$ac_cv_lib_dld_dld_link" = xyes; then :
+ lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld"
+fi
+
+
+fi
+
+
+fi
+
+
+fi
+
+
+fi
+
+
+fi
+
+ ;;
+ esac
+
+ if test "x$lt_cv_dlopen" != xno; then
+ enable_dlopen=yes
+ else
+ enable_dlopen=no
+ fi
+
+ case $lt_cv_dlopen in
+ dlopen)
+ save_CPPFLAGS="$CPPFLAGS"
+ test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H"
+
+ save_LDFLAGS="$LDFLAGS"
+ wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\"
+
+ save_LIBS="$LIBS"
+ LIBS="$lt_cv_dlopen_libs $LIBS"
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a program can dlopen itself" >&5
+$as_echo_n "checking whether a program can dlopen itself... " >&6; }
+if ${lt_cv_dlopen_self+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test "$cross_compiling" = yes; then :
+ lt_cv_dlopen_self=cross
+else
+ lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
+ lt_status=$lt_dlunknown
+ cat > conftest.$ac_ext <<_LT_EOF
+#line $LINENO "configure"
+#include "confdefs.h"
+
+#if HAVE_DLFCN_H
+#include <dlfcn.h>
+#endif
+
+#include <stdio.h>
+
+#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
+
+/* When -fvisbility=hidden is used, assume the code has been annotated
+ correspondingly for the symbols needed. */
+#if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3))
+int fnord () __attribute__((visibility("default")));
+#endif
+
+int fnord () { return 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;
+ else puts (dlerror ());
+ }
+ /* dlclose (self); */
+ }
+ else
+ puts (dlerror ());
+
+ return status;
+}
+_LT_EOF
+ if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; } && test -s conftest${ac_exeext} 2>/dev/null; then
+ (./conftest; exit; ) >&5 2>/dev/null
+ lt_status=$?
+ case x$lt_status in
+ x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;;
+ x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;;
+ x$lt_dlunknown|x*) lt_cv_dlopen_self=no ;;
+ esac
+ else :
+ # compilation failed
+ lt_cv_dlopen_self=no
+ fi
+fi
+rm -fr conftest*
+
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self" >&5
+$as_echo "$lt_cv_dlopen_self" >&6; }
+
+ if test "x$lt_cv_dlopen_self" = xyes; then
+ wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a statically linked program can dlopen itself" >&5
+$as_echo_n "checking whether a statically linked program can dlopen itself... " >&6; }
+if ${lt_cv_dlopen_self_static+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test "$cross_compiling" = yes; then :
+ lt_cv_dlopen_self_static=cross
+else
+ lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
+ lt_status=$lt_dlunknown
+ cat > conftest.$ac_ext <<_LT_EOF
+#line $LINENO "configure"
+#include "confdefs.h"
+
+#if HAVE_DLFCN_H
+#include <dlfcn.h>
+#endif
+
+#include <stdio.h>
+
+#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
+
+/* When -fvisbility=hidden is used, assume the code has been annotated
+ correspondingly for the symbols needed. */
+#if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3))
+int fnord () __attribute__((visibility("default")));
+#endif
+
+int fnord () { return 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;
+ else puts (dlerror ());
+ }
+ /* dlclose (self); */
+ }
+ else
+ puts (dlerror ());
+
+ return status;
+}
+_LT_EOF
+ if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; } && test -s conftest${ac_exeext} 2>/dev/null; then
+ (./conftest; exit; ) >&5 2>/dev/null
+ lt_status=$?
+ case x$lt_status in
+ x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;;
+ x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;;
+ x$lt_dlunknown|x*) lt_cv_dlopen_self_static=no ;;
+ esac
+ else :
+ # compilation failed
+ lt_cv_dlopen_self_static=no
+ fi
+fi
+rm -fr conftest*
+
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self_static" >&5
+$as_echo "$lt_cv_dlopen_self_static" >&6; }
+ fi
+
+ CPPFLAGS="$save_CPPFLAGS"
+ LDFLAGS="$save_LDFLAGS"
+ LIBS="$save_LIBS"
+ ;;
+ esac
+
+ case $lt_cv_dlopen_self in
+ yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;;
+ *) enable_dlopen_self=unknown ;;
+ esac
+
+ case $lt_cv_dlopen_self_static in
+ yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;;
+ *) enable_dlopen_self_static=unknown ;;
+ esac
+fi
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+striplib=
+old_striplib=
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether stripping libraries is possible" >&5
+$as_echo_n "checking whether stripping libraries is possible... " >&6; }
+if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then
+ test -z "$old_striplib" && old_striplib="$STRIP --strip-debug"
+ test -z "$striplib" && striplib="$STRIP --strip-unneeded"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+else
+# FIXME - insert some real tests, host_os isn't really good enough
+ case $host_os in
+ darwin*)
+ if test -n "$STRIP" ; then
+ striplib="$STRIP -x"
+ old_striplib="$STRIP -S"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+ fi
+ ;;
+ *)
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+ ;;
+ esac
+fi
+
+
+
+
+
+
+
+
+
+
+
+
+ # Report which library types will actually be built
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking if libtool supports shared libraries" >&5
+$as_echo_n "checking if libtool supports shared libraries... " >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $can_build_shared" >&5
+$as_echo "$can_build_shared" >&6; }
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build shared libraries" >&5
+$as_echo_n "checking whether to build shared libraries... " >&6; }
+ test "$can_build_shared" = "no" && enable_shared=no
+
+ # On AIX, shared libraries and static libraries use the same namespace, and
+ # are all built from PIC.
+ case $host_os in
+ aix3*)
+ test "$enable_shared" = yes && enable_static=no
+ if test -n "$RANLIB"; then
+ archive_cmds="$archive_cmds~\$RANLIB \$lib"
+ postinstall_cmds='$RANLIB $lib'
+ fi
+ ;;
+
+ aix[4-9]*)
+ if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then
+ test "$enable_shared" = yes && enable_static=no
+ fi
+ ;;
+ esac
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_shared" >&5
+$as_echo "$enable_shared" >&6; }
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build static libraries" >&5
+$as_echo_n "checking whether to build static libraries... " >&6; }
+ # Make sure either enable_shared or enable_static is yes.
+ test "$enable_shared" = yes || enable_static=yes
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_static" >&5
+$as_echo "$enable_static" >&6; }
+
+
+
+
+fi
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+CC="$lt_save_CC"
+
+ if test -n "$CXX" && ( test "X$CXX" != "Xno" &&
+ ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) ||
+ (test "X$CXX" != "Xg++"))) ; then
+ ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C++ preprocessor" >&5
+$as_echo_n "checking how to run the C++ preprocessor... " >&6; }
+if test -z "$CXXCPP"; then
+ if ${ac_cv_prog_CXXCPP+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ # Double quotes because CXXCPP needs to be expanded
+ for CXXCPP in "$CXX -E" "/lib/cpp"
+ do
+ ac_preproc_ok=false
+for ac_cxx_preproc_warn_flag in '' yes
+do
+ # Use a header file that comes with gcc, so configuring glibc
+ # with a fresh cross-compiler works.
+ # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ # <limits.h> 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 confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+ Syntax error
+_ACEOF
+if ac_fn_cxx_try_cpp "$LINENO"; then :
+
+else
+ # Broken: fails on valid input.
+continue
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+
+ # OK, works on sane cases. Now check whether nonexistent headers
+ # can be detected and how.
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <ac_nonexistent.h>
+_ACEOF
+if ac_fn_cxx_try_cpp "$LINENO"; then :
+ # Broken: success on invalid input.
+continue
+else
+ # Passes both tests.
+ac_preproc_ok=:
+break
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+
+done
+# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
+rm -f conftest.i conftest.err conftest.$ac_ext
+if $ac_preproc_ok; then :
+ break
+fi
+
+ done
+ ac_cv_prog_CXXCPP=$CXXCPP
+
+fi
+ CXXCPP=$ac_cv_prog_CXXCPP
+else
+ ac_cv_prog_CXXCPP=$CXXCPP
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXXCPP" >&5
+$as_echo "$CXXCPP" >&6; }
+ac_preproc_ok=false
+for ac_cxx_preproc_warn_flag in '' yes
+do
+ # Use a header file that comes with gcc, so configuring glibc
+ # with a fresh cross-compiler works.
+ # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ # <limits.h> 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 confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+ Syntax error
+_ACEOF
+if ac_fn_cxx_try_cpp "$LINENO"; then :
+
+else
+ # Broken: fails on valid input.
+continue
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+
+ # OK, works on sane cases. Now check whether nonexistent headers
+ # can be detected and how.
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <ac_nonexistent.h>
+_ACEOF
+if ac_fn_cxx_try_cpp "$LINENO"; then :
+ # Broken: success on invalid input.
+continue
+else
+ # Passes both tests.
+ac_preproc_ok=:
+break
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+
+done
+# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
+rm -f conftest.i conftest.err conftest.$ac_ext
+if $ac_preproc_ok; then :
+
+else
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "C++ preprocessor \"$CXXCPP\" fails sanity check
+See \`config.log' for more details" "$LINENO" 5; }
+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
+
+else
+ _lt_caught_CXX_error=yes
+fi
+
+ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+archive_cmds_need_lc_CXX=no
+allow_undefined_flag_CXX=
+always_export_symbols_CXX=no
+archive_expsym_cmds_CXX=
+compiler_needs_object_CXX=no
+export_dynamic_flag_spec_CXX=
+hardcode_direct_CXX=no
+hardcode_direct_absolute_CXX=no
+hardcode_libdir_flag_spec_CXX=
+hardcode_libdir_separator_CXX=
+hardcode_minus_L_CXX=no
+hardcode_shlibpath_var_CXX=unsupported
+hardcode_automatic_CXX=no
+inherit_rpath_CXX=no
+module_cmds_CXX=
+module_expsym_cmds_CXX=
+link_all_deplibs_CXX=unknown
+old_archive_cmds_CXX=$old_archive_cmds
+reload_flag_CXX=$reload_flag
+reload_cmds_CXX=$reload_cmds
+no_undefined_flag_CXX=
+whole_archive_flag_spec_CXX=
+enable_shared_with_static_runtimes_CXX=no
+
+# Source file extension for C++ test sources.
+ac_ext=cpp
+
+# Object file extension for compiled C++ test sources.
+objext=o
+objext_CXX=$objext
+
+# No sense in running all these tests if we already determined that
+# the CXX compiler isn't working. Some variables (like enable_shared)
+# are currently assumed to apply to all compilers on this platform,
+# and will be corrupted by setting them based on a non-working compiler.
+if test "$_lt_caught_CXX_error" != yes; then
+ # Code to be used in simple compile tests
+ lt_simple_compile_test_code="int some_variable = 0;"
+
+ # Code to be used in simple link tests
+ lt_simple_link_test_code='int main(int, char *[]) { return(0); }'
+
+ # ltmain only uses $CC for tagged configurations so make sure $CC is set.
+
+
+
+
+
+
+# If no C compiler was specified, use CC.
+LTCC=${LTCC-"$CC"}
+
+# If no C compiler flags were specified, use CFLAGS.
+LTCFLAGS=${LTCFLAGS-"$CFLAGS"}
+
+# Allow CC to be a program name with arguments.
+compiler=$CC
+
+
+ # save warnings/boilerplate of simple test code
+ ac_outfile=conftest.$ac_objext
+echo "$lt_simple_compile_test_code" >conftest.$ac_ext
+eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
+_lt_compiler_boilerplate=`cat conftest.err`
+$RM conftest*
+
+ ac_outfile=conftest.$ac_objext
+echo "$lt_simple_link_test_code" >conftest.$ac_ext
+eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
+_lt_linker_boilerplate=`cat conftest.err`
+$RM -r conftest*
+
+
+ # Allow CC to be a program name with arguments.
+ lt_save_CC=$CC
+ lt_save_CFLAGS=$CFLAGS
+ lt_save_LD=$LD
+ lt_save_GCC=$GCC
+ GCC=$GXX
+ lt_save_with_gnu_ld=$with_gnu_ld
+ lt_save_path_LD=$lt_cv_path_LD
+ if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then
+ lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx
+ else
+ $as_unset lt_cv_prog_gnu_ld
+ fi
+ if test -n "${lt_cv_path_LDCXX+set}"; then
+ lt_cv_path_LD=$lt_cv_path_LDCXX
+ else
+ $as_unset lt_cv_path_LD
+ fi
+ test -z "${LDCXX+set}" || LD=$LDCXX
+ CC=${CXX-"c++"}
+ CFLAGS=$CXXFLAGS
+ compiler=$CC
+ compiler_CXX=$CC
+ for cc_temp in $compiler""; do
+ case $cc_temp in
+ compile | *[\\/]compile | ccache | *[\\/]ccache ) ;;
+ distcc | *[\\/]distcc | purify | *[\\/]purify ) ;;
+ \-*) ;;
+ *) break;;
+ esac
+done
+cc_basename=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"`
+
+
+ if test -n "$compiler"; then
+ # We don't want -fno-exception when compiling C++ code, so set the
+ # no_builtin_flag separately
+ if test "$GXX" = yes; then
+ lt_prog_compiler_no_builtin_flag_CXX=' -fno-builtin'
+ else
+ lt_prog_compiler_no_builtin_flag_CXX=
+ fi
+
+ if test "$GXX" = yes; then
+ # Set up default GNU C++ configuration
+
+
+
+# Check whether --with-gnu-ld was given.
+if test "${with_gnu_ld+set}" = set; then :
+ withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes
+else
+ with_gnu_ld=no
+fi
+
+ac_prog=ld
+if test "$GCC" = yes; then
+ # Check if gcc -print-prog-name=ld gives a path.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5
+$as_echo_n "checking for ld used by $CC... " >&6; }
+ case $host in
+ *-*-mingw*)
+ # gcc leaves a trailing carriage return which upsets mingw
+ ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;;
+ *)
+ ac_prog=`($CC -print-prog-name=ld) 2>&5` ;;
+ esac
+ case $ac_prog in
+ # Accept absolute paths.
+ [\\/]* | ?:[\\/]*)
+ re_direlt='/[^/][^/]*/\.\./'
+ # Canonicalize the pathname of ld
+ ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'`
+ while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do
+ ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"`
+ done
+ test -z "$LD" && LD="$ac_prog"
+ ;;
+ "")
+ # If it fails, then pretend we aren't using GCC.
+ ac_prog=ld
+ ;;
+ *)
+ # If it is relative, then search for the first ld in PATH.
+ with_gnu_ld=unknown
+ ;;
+ esac
+elif test "$with_gnu_ld" = yes; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5
+$as_echo_n "checking for GNU ld... " >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5
+$as_echo_n "checking for non-GNU ld... " >&6; }
+fi
+if ${lt_cv_path_LD+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -z "$LD"; then
+ lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+ for ac_dir in $PATH; do
+ IFS="$lt_save_ifs"
+ test -z "$ac_dir" && ac_dir=.
+ if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
+ lt_cv_path_LD="$ac_dir/$ac_prog"
+ # Check to see if the program is GNU ld. I'd rather use --version,
+ # but apparently some variants of GNU ld only accept -v.
+ # Break only if it was the GNU/non-GNU ld that we prefer.
+ case `"$lt_cv_path_LD" -v 2>&1 </dev/null` in
+ *GNU* | *'with BFD'*)
+ test "$with_gnu_ld" != no && break
+ ;;
+ *)
+ test "$with_gnu_ld" != yes && break
+ ;;
+ esac
+ fi
+ done
+ IFS="$lt_save_ifs"
+else
+ lt_cv_path_LD="$LD" # Let the user override the test with a path.
+fi
+fi
+
+LD="$lt_cv_path_LD"
+if test -n "$LD"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LD" >&5
+$as_echo "$LD" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5
+$as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; }
+if ${lt_cv_prog_gnu_ld+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ # I'd rather use --version here, but apparently some GNU lds only accept -v.
+case `$LD -v 2>&1 </dev/null` in
+*GNU* | *'with BFD'*)
+ lt_cv_prog_gnu_ld=yes
+ ;;
+*)
+ lt_cv_prog_gnu_ld=no
+ ;;
+esac
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_gnu_ld" >&5
+$as_echo "$lt_cv_prog_gnu_ld" >&6; }
+with_gnu_ld=$lt_cv_prog_gnu_ld
+
+
+
+
+
+
+
+ # Check if GNU C++ uses GNU ld as the underlying linker, since the
+ # archiving commands below assume that GNU ld is being used.
+ if test "$with_gnu_ld" = yes; then
+ archive_cmds_CXX='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ archive_expsym_cmds_CXX='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+
+ hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir'
+ export_dynamic_flag_spec_CXX='${wl}--export-dynamic'
+
+ # If archive_cmds runs LD, not CC, wlarc should be empty
+ # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to
+ # investigate it a little bit more. (MM)
+ wlarc='${wl}'
+
+ # ancient GNU ld didn't support --whole-archive et. al.
+ if eval "`$CC -print-prog-name=ld` --help 2>&1" |
+ $GREP 'no-whole-archive' > /dev/null; then
+ whole_archive_flag_spec_CXX="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
+ else
+ whole_archive_flag_spec_CXX=
+ fi
+ else
+ with_gnu_ld=no
+ wlarc=
+
+ # A generic and very simple default shared library creation
+ # command for GNU C++ for the case where it uses the native
+ # linker, instead of GNU ld. If possible, this setting should
+ # overridden to take advantage of the native linker features on
+ # the platform it is being used on.
+ archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib'
+ fi
+
+ # Commands to make compiler produce verbose output that lists
+ # what "hidden" libraries, object files and flags are used when
+ # linking a shared library.
+ output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"'
+
+ else
+ GXX=no
+ with_gnu_ld=no
+ wlarc=
+ fi
+
+ # PORTME: fill in a description of your system's C++ link characteristics
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5
+$as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; }
+ ld_shlibs_CXX=yes
+ case $host_os in
+ aix3*)
+ # FIXME: insert proper C++ library support
+ ld_shlibs_CXX=no
+ ;;
+ aix[4-9]*)
+ if test "$host_cpu" = ia64; then
+ # On IA64, the linker does run time linking by default, so we don't
+ # have to do anything special.
+ aix_use_runtimelinking=no
+ exp_sym_flag='-Bexport'
+ no_entry_flag=""
+ else
+ aix_use_runtimelinking=no
+
+ # Test if we are trying to use run time linking or normal
+ # AIX style linking. If -brtl is somewhere in LDFLAGS, we
+ # need to do runtime linking.
+ case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*)
+ for ld_flag in $LDFLAGS; do
+ case $ld_flag in
+ *-brtl*)
+ aix_use_runtimelinking=yes
+ break
+ ;;
+ esac
+ done
+ ;;
+ esac
+
+ exp_sym_flag='-bexport'
+ no_entry_flag='-bnoentry'
+ fi
+
+ # When large executables or shared objects are built, AIX ld can
+ # have problems creating the table of contents. If linking a library
+ # or program results in "error TOC overflow" add -mminimal-toc to
+ # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not
+ # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
+
+ archive_cmds_CXX=''
+ hardcode_direct_CXX=yes
+ hardcode_direct_absolute_CXX=yes
+ hardcode_libdir_separator_CXX=':'
+ link_all_deplibs_CXX=yes
+ file_list_spec_CXX='${wl}-f,'
+
+ if test "$GXX" = yes; then
+ case $host_os in aix4.[012]|aix4.[012].*)
+ # We only want to do this on AIX 4.2 and lower, the check
+ # below for broken collect2 doesn't work under 4.3+
+ collect2name=`${CC} -print-prog-name=collect2`
+ if test -f "$collect2name" &&
+ strings "$collect2name" | $GREP resolve_lib_name >/dev/null
+ then
+ # We have reworked collect2
+ :
+ else
+ # We have old collect2
+ hardcode_direct_CXX=unsupported
+ # It fails to find uninstalled libraries when the uninstalled
+ # path is not listed in the libpath. Setting hardcode_minus_L
+ # to unsupported forces relinking
+ hardcode_minus_L_CXX=yes
+ hardcode_libdir_flag_spec_CXX='-L$libdir'
+ hardcode_libdir_separator_CXX=
+ fi
+ esac
+ shared_flag='-shared'
+ if test "$aix_use_runtimelinking" = yes; then
+ shared_flag="$shared_flag "'${wl}-G'
+ fi
+ else
+ # not using gcc
+ if test "$host_cpu" = ia64; then
+ # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
+ # chokes on -Wl,-G. The following line is correct:
+ shared_flag='-G'
+ else
+ if test "$aix_use_runtimelinking" = yes; then
+ shared_flag='${wl}-G'
+ else
+ shared_flag='${wl}-bM:SRE'
+ fi
+ fi
+ fi
+
+ export_dynamic_flag_spec_CXX='${wl}-bexpall'
+ # 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.
+ if test "${lt_cv_aix_libpath+set}" = set; then
+ aix_libpath=$lt_cv_aix_libpath
+else
+ if ${lt_cv_aix_libpath__CXX+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+
+ lt_aix_libpath_sed='
+ /Import File Strings/,/^$/ {
+ /^0/ {
+ s/^0 *\([^ ]*\) *$/\1/
+ p
+ }
+ }'
+ lt_cv_aix_libpath__CXX=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+ # Check for a 64-bit object if we didn't find anything.
+ if test -z "$lt_cv_aix_libpath__CXX"; then
+ lt_cv_aix_libpath__CXX=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+ fi
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ if test -z "$lt_cv_aix_libpath__CXX"; then
+ lt_cv_aix_libpath__CXX="/usr/lib:/lib"
+ fi
+
+fi
+
+ aix_libpath=$lt_cv_aix_libpath__CXX
+fi
+
+ hardcode_libdir_flag_spec_CXX='${wl}-blibpath:$libdir:'"$aix_libpath"
+
+ archive_expsym_cmds_CXX='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag"
+ else
+ if test "$host_cpu" = ia64; then
+ hardcode_libdir_flag_spec_CXX='${wl}-R $libdir:/usr/lib:/lib'
+ allow_undefined_flag_CXX="-z nodefs"
+ archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols"
+ else
+ # Determine the default libpath from the value encoded in an
+ # empty executable.
+ if test "${lt_cv_aix_libpath+set}" = set; then
+ aix_libpath=$lt_cv_aix_libpath
+else
+ if ${lt_cv_aix_libpath__CXX+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+
+ lt_aix_libpath_sed='
+ /Import File Strings/,/^$/ {
+ /^0/ {
+ s/^0 *\([^ ]*\) *$/\1/
+ p
+ }
+ }'
+ lt_cv_aix_libpath__CXX=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+ # Check for a 64-bit object if we didn't find anything.
+ if test -z "$lt_cv_aix_libpath__CXX"; then
+ lt_cv_aix_libpath__CXX=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+ fi
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ if test -z "$lt_cv_aix_libpath__CXX"; then
+ lt_cv_aix_libpath__CXX="/usr/lib:/lib"
+ fi
+
+fi
+
+ aix_libpath=$lt_cv_aix_libpath__CXX
+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'
+ if test "$with_gnu_ld" = yes; then
+ # We only use this code for GNU lds that support --whole-archive.
+ whole_archive_flag_spec_CXX='${wl}--whole-archive$convenience ${wl}--no-whole-archive'
+ else
+ # Exported symbols can be pulled into shared objects from archives
+ whole_archive_flag_spec_CXX='$convenience'
+ fi
+ archive_cmds_need_lc_CXX=yes
+ # This is similar to how AIX traditionally builds its shared
+ # libraries.
+ archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
+ fi
+ fi
+ ;;
+
+ beos*)
+ if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
+ allow_undefined_flag_CXX=unsupported
+ # Joseph Beckenbach <jrb3 at best.com> says some releases of gcc
+ # support --undefined. This deserves some investigation. FIXME
+ archive_cmds_CXX='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ else
+ ld_shlibs_CXX=no
+ fi
+ ;;
+
+ chorus*)
+ case $cc_basename in
+ *)
+ # FIXME: insert proper C++ library support
+ ld_shlibs_CXX=no
+ ;;
+ esac
+ ;;
+
+ cygwin* | mingw* | pw32* | cegcc*)
+ case $GXX,$cc_basename in
+ ,cl* | no,cl*)
+ # Native MSVC
+ # hardcode_libdir_flag_spec is actually meaningless, as there is
+ # no search path for DLLs.
+ hardcode_libdir_flag_spec_CXX=' '
+ allow_undefined_flag_CXX=unsupported
+ always_export_symbols_CXX=yes
+ file_list_spec_CXX='@'
+ # Tell ltmain to make .lib files, not .a files.
+ libext=lib
+ # Tell ltmain to make .dll files, not .so files.
+ shrext_cmds=".dll"
+ # FIXME: Setting linknames here is a bad hack.
+ archive_cmds_CXX='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames='
+ archive_expsym_cmds_CXX='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
+ $SED -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp;
+ else
+ $SED -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp;
+ fi~
+ $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~
+ linknames='
+ # The linker will not automatically build a static lib if we build a DLL.
+ # _LT_TAGVAR(old_archive_from_new_cmds, CXX)='true'
+ enable_shared_with_static_runtimes_CXX=yes
+ # Don't use ranlib
+ old_postinstall_cmds_CXX='chmod 644 $oldlib'
+ postlink_cmds_CXX='lt_outputfile="@OUTPUT@"~
+ lt_tool_outputfile="@TOOL_OUTPUT@"~
+ case $lt_outputfile in
+ *.exe|*.EXE) ;;
+ *)
+ lt_outputfile="$lt_outputfile.exe"
+ lt_tool_outputfile="$lt_tool_outputfile.exe"
+ ;;
+ esac~
+ func_to_tool_file "$lt_outputfile"~
+ if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then
+ $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1;
+ $RM "$lt_outputfile.manifest";
+ fi'
+ ;;
+ *)
+ # g++
+ # _LT_TAGVAR(hardcode_libdir_flag_spec, CXX) is actually meaningless,
+ # as there is no search path for DLLs.
+ hardcode_libdir_flag_spec_CXX='-L$libdir'
+ export_dynamic_flag_spec_CXX='${wl}--export-all-symbols'
+ allow_undefined_flag_CXX=unsupported
+ always_export_symbols_CXX=no
+ enable_shared_with_static_runtimes_CXX=yes
+
+ if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then
+ archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
+ # If the export-symbols file already is a .def file (1st line
+ # is EXPORTS), use it as is; otherwise, prepend...
+ archive_expsym_cmds_CXX='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
+ cp $export_symbols $output_objdir/$soname.def;
+ else
+ echo EXPORTS > $output_objdir/$soname.def;
+ cat $export_symbols >> $output_objdir/$soname.def;
+ fi~
+ $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
+ else
+ ld_shlibs_CXX=no
+ fi
+ ;;
+ esac
+ ;;
+ darwin* | rhapsody*)
+
+
+ archive_cmds_need_lc_CXX=no
+ hardcode_direct_CXX=no
+ hardcode_automatic_CXX=yes
+ hardcode_shlibpath_var_CXX=unsupported
+ if test "$lt_cv_ld_force_load" = "yes"; then
+ whole_archive_flag_spec_CXX='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience ${wl}-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`'
+
+ else
+ whole_archive_flag_spec_CXX=''
+ fi
+ link_all_deplibs_CXX=yes
+ allow_undefined_flag_CXX="$_lt_dar_allow_undefined"
+ case $cc_basename in
+ ifort*) _lt_dar_can_shared=yes ;;
+ *) _lt_dar_can_shared=$GCC ;;
+ esac
+ if test "$_lt_dar_can_shared" = "yes"; then
+ output_verbose_link_cmd=func_echo_all
+ archive_cmds_CXX="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}"
+ module_cmds_CXX="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}"
+ archive_expsym_cmds_CXX="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}"
+ module_expsym_cmds_CXX="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}"
+ if test "$lt_cv_apple_cc_single_mod" != "yes"; then
+ archive_cmds_CXX="\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dsymutil}"
+ archive_expsym_cmds_CXX="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dar_export_syms}${_lt_dsymutil}"
+ fi
+
+ else
+ ld_shlibs_CXX=no
+ 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
+ ;;
+
+ freebsd2.*)
+ # C++ shared libraries reported to be fairly broken before
+ # switch to ELF
+ ld_shlibs_CXX=no
+ ;;
+
+ freebsd-elf*)
+ archive_cmds_need_lc_CXX=no
+ ;;
+
+ freebsd* | dragonfly*)
+ # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF
+ # conventions
+ ld_shlibs_CXX=yes
+ ;;
+
+ gnu*)
+ ;;
+
+ haiku*)
+ archive_cmds_CXX='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ link_all_deplibs_CXX=yes
+ ;;
+
+ 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; func_echo_all "$list"'
+ ;;
+ *)
+ if test "$GXX" = yes; then
+ archive_cmds_CXX='$RM $output_objdir/$soname~$CC -shared -nostdlib $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+ else
+ # FIXME: insert proper C++ library support
+ ld_shlibs_CXX=no
+ fi
+ ;;
+ esac
+ ;;
+
+ hpux10*|hpux11*)
+ if test $with_gnu_ld = no; then
+ hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir'
+ hardcode_libdir_separator_CXX=:
+
+ case $host_cpu in
+ hppa*64*|ia64*)
+ ;;
+ *)
+ export_dynamic_flag_spec_CXX='${wl}-E'
+ ;;
+ esac
+ fi
+ case $host_cpu in
+ hppa*64*|ia64*)
+ hardcode_direct_CXX=no
+ hardcode_shlibpath_var_CXX=no
+ ;;
+ *)
+ hardcode_direct_CXX=yes
+ hardcode_direct_absolute_CXX=yes
+ hardcode_minus_L_CXX=yes # Not in the search PATH,
+ # but as the default
+ # location of the library.
+ ;;
+ esac
+
+ case $cc_basename in
+ CC*)
+ # FIXME: insert proper C++ library support
+ ld_shlibs_CXX=no
+ ;;
+ aCC*)
+ case $host_cpu in
+ hppa*64*)
+ archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+ ;;
+ ia64*)
+ archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+ ;;
+ *)
+ archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+ ;;
+ esac
+ # Commands to make compiler produce verbose output that lists
+ # what "hidden" libraries, object files and flags are used when
+ # linking a shared library.
+ #
+ # There doesn't appear to be a way to prevent this compiler from
+ # explicitly linking system object files so we need to strip them
+ # from the output so that they don't get included in the library
+ # dependencies.
+ output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"'
+ ;;
+ *)
+ if test "$GXX" = yes; then
+ if test $with_gnu_ld = no; then
+ case $host_cpu in
+ hppa*64*)
+ archive_cmds_CXX='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+ ;;
+ ia64*)
+ archive_cmds_CXX='$CC -shared -nostdlib $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+ ;;
+ *)
+ archive_cmds_CXX='$CC -shared -nostdlib $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+ ;;
+ esac
+ fi
+ else
+ # FIXME: insert proper C++ library support
+ ld_shlibs_CXX=no
+ fi
+ ;;
+ esac
+ ;;
+
+ interix[3-9]*)
+ hardcode_direct_CXX=no
+ hardcode_shlibpath_var_CXX=no
+ hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir'
+ export_dynamic_flag_spec_CXX='${wl}-E'
+ # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc.
+ # Instead, shared libraries are loaded at an image base (0x10000000 by
+ # default) and relocated if they conflict, which is a slow very memory
+ # consuming and fragmenting process. To avoid this, we pick a random,
+ # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link
+ # time. Moving up from 0x10000000 also allows more sbrk(2) space.
+ archive_cmds_CXX='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+ archive_expsym_cmds_CXX='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+ ;;
+ irix5* | irix6*)
+ case $cc_basename in
+ CC*)
+ # SGI C++
+ archive_cmds_CXX='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
+
+ # Archives containing C++ object files must be created using
+ # "CC -ar", where "CC" is the IRIX C++ compiler. This is
+ # necessary to make sure instantiated templates are included
+ # in the archive.
+ old_archive_cmds_CXX='$CC -ar -WR,-u -o $oldlib $oldobjs'
+ ;;
+ *)
+ if test "$GXX" = yes; then
+ if test "$with_gnu_ld" = no; then
+ archive_cmds_CXX='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+ else
+ archive_cmds_CXX='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${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=:
+ inherit_rpath_CXX=yes
+ ;;
+
+ linux* | k*bsd*-gnu | kopensolaris*-gnu)
+ case $cc_basename in
+ KCC*)
+ # Kuck and Associates, Inc. (KAI) C++ Compiler
+
+ # KCC will only create a shared library if the output file
+ # ends with ".so" (or ".sl" for HP-UX), so rename the library
+ # to its proper name (with version) after linking.
+ archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
+ archive_expsym_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib ${wl}-retain-symbols-file,$export_symbols; mv \$templib $lib'
+ # Commands to make compiler produce verbose output that lists
+ # what "hidden" libraries, object files and flags are used when
+ # linking a shared library.
+ #
+ # There doesn't appear to be a way to prevent this compiler from
+ # explicitly linking system object files so we need to strip them
+ # from the output so that they don't get included in the library
+ # dependencies.
+ output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | $GREP "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$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* | ecpc* )
+ # Intel C++
+ with_gnu_ld=yes
+ # version 8.0 and above of icpc choke on multiply defined symbols
+ # if we add $predep_objects and $postdep_objects, however 7.1 and
+ # earlier do not add the objects themselves.
+ case `$CC -V 2>&1` in
+ *"Version 7."*)
+ archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ ;;
+ *) # Version 8.0 or newer
+ tmp_idyn=
+ case $host_cpu in
+ ia64*) tmp_idyn=' -i_dynamic';;
+ esac
+ archive_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ archive_expsym_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ ;;
+ esac
+ archive_cmds_need_lc_CXX=no
+ hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir'
+ export_dynamic_flag_spec_CXX='${wl}--export-dynamic'
+ whole_archive_flag_spec_CXX='${wl}--whole-archive$convenience ${wl}--no-whole-archive'
+ ;;
+ pgCC* | pgcpp*)
+ # Portland Group C++ compiler
+ case `$CC -V` in
+ *pgCC\ [1-5].* | *pgcpp\ [1-5].*)
+ prelink_cmds_CXX='tpldir=Template.dir~
+ rm -rf $tpldir~
+ $CC --prelink_objects --instantiation_dir $tpldir $objs $libobjs $compile_deplibs~
+ compile_command="$compile_command `find $tpldir -name \*.o | sort | $NL2SP`"'
+ old_archive_cmds_CXX='tpldir=Template.dir~
+ rm -rf $tpldir~
+ $CC --prelink_objects --instantiation_dir $tpldir $oldobjs$old_deplibs~
+ $AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | sort | $NL2SP`~
+ $RANLIB $oldlib'
+ archive_cmds_CXX='tpldir=Template.dir~
+ rm -rf $tpldir~
+ $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~
+ $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib'
+ archive_expsym_cmds_CXX='tpldir=Template.dir~
+ rm -rf $tpldir~
+ $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~
+ $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib'
+ ;;
+ *) # Version 6 and above use weak symbols
+ archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib'
+ archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib'
+ ;;
+ esac
+
+ hardcode_libdir_flag_spec_CXX='${wl}--rpath ${wl}$libdir'
+ export_dynamic_flag_spec_CXX='${wl}--export-dynamic'
+ whole_archive_flag_spec_CXX='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
+ ;;
+ cxx*)
+ # Compaq C++
+ archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib ${wl}-retain-symbols-file $wl$export_symbols'
+
+ runpath_var=LD_RUN_PATH
+ hardcode_libdir_flag_spec_CXX='-rpath $libdir'
+ hardcode_libdir_separator_CXX=:
+
+ # Commands to make compiler produce verbose output that lists
+ # what "hidden" libraries, object files and flags are used when
+ # linking a shared library.
+ #
+ # There doesn't appear to be a way to prevent this compiler from
+ # explicitly linking system object files so we need to strip them
+ # from the output so that they don't get included in the library
+ # dependencies.
+ output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld"`; templist=`func_echo_all "$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; func_echo_all "X$list" | $Xsed'
+ ;;
+ xl* | mpixl* | bgxl*)
+ # IBM XL 8.0 on PPC, with GNU ld
+ hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir'
+ export_dynamic_flag_spec_CXX='${wl}--export-dynamic'
+ archive_cmds_CXX='$CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ if test "x$supports_anon_versioning" = xyes; then
+ archive_expsym_cmds_CXX='echo "{ global:" > $output_objdir/$libname.ver~
+ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
+ echo "local: *; };" >> $output_objdir/$libname.ver~
+ $CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
+ fi
+ ;;
+ *)
+ case `$CC -V 2>&1 | sed 5q` in
+ *Sun\ C*)
+ # Sun C++ 5.9
+ no_undefined_flag_CXX=' -zdefs'
+ archive_cmds_CXX='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+ archive_expsym_cmds_CXX='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file ${wl}$export_symbols'
+ hardcode_libdir_flag_spec_CXX='-R$libdir'
+ whole_archive_flag_spec_CXX='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
+ compiler_needs_object_CXX=yes
+
+ # Not sure whether something based on
+ # $CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1
+ # would be better.
+ output_verbose_link_cmd='func_echo_all'
+
+ # Archives containing C++ object files must be created using
+ # "CC -xar", where "CC" is the Sun C++ compiler. This is
+ # necessary to make sure instantiated templates are included
+ # in the archive.
+ old_archive_cmds_CXX='$CC -xar -o $oldlib $oldobjs'
+ ;;
+ esac
+ ;;
+ esac
+ ;;
+
+ lynxos*)
+ # FIXME: insert proper C++ library support
+ ld_shlibs_CXX=no
+ ;;
+
+ m88k*)
+ # FIXME: insert proper C++ library support
+ ld_shlibs_CXX=no
+ ;;
+
+ mvs*)
+ case $cc_basename in
+ cxx*)
+ # FIXME: insert proper C++ library support
+ ld_shlibs_CXX=no
+ ;;
+ *)
+ # FIXME: insert proper C++ library support
+ ld_shlibs_CXX=no
+ ;;
+ esac
+ ;;
+
+ netbsd*)
+ if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
+ archive_cmds_CXX='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags'
+ wlarc=
+ hardcode_libdir_flag_spec_CXX='-R$libdir'
+ hardcode_direct_CXX=yes
+ hardcode_shlibpath_var_CXX=no
+ fi
+ # Workaround some broken pre-1.5 toolchains
+ output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"'
+ ;;
+
+ *nto* | *qnx*)
+ ld_shlibs_CXX=yes
+ ;;
+
+ openbsd2*)
+ # C++ shared libraries are fairly broken
+ ld_shlibs_CXX=no
+ ;;
+
+ openbsd*)
+ if test -f /usr/libexec/ld.so; then
+ hardcode_direct_CXX=yes
+ hardcode_shlibpath_var_CXX=no
+ hardcode_direct_absolute_CXX=yes
+ archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib'
+ hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir'
+ if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+ archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib'
+ export_dynamic_flag_spec_CXX='${wl}-E'
+ whole_archive_flag_spec_CXX="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
+ fi
+ output_verbose_link_cmd=func_echo_all
+ else
+ ld_shlibs_CXX=no
+ fi
+ ;;
+
+ osf3* | 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.
+ case $host in
+ osf3*) old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs' ;;
+ *) old_archive_cmds_CXX='$CC -o $oldlib $oldobjs' ;;
+ esac
+ ;;
+ RCC*)
+ # Rational C++ 2.4.1
+ # FIXME: insert proper C++ library support
+ ld_shlibs_CXX=no
+ ;;
+ cxx*)
+ case $host in
+ osf3*)
+ 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" && func_echo_all "${wl}-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
+ hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir'
+ ;;
+ *)
+ 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" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
+ archive_expsym_cmds_CXX='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~
+ echo "-hidden">> $lib.exp~
+ $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname ${wl}-input ${wl}$lib.exp `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~
+ $RM $lib.exp'
+ hardcode_libdir_flag_spec_CXX='-rpath $libdir'
+ ;;
+ esac
+
+ 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=`func_echo_all "$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; func_echo_all "$list"'
+ ;;
+ *)
+ if test "$GXX" = yes && test "$with_gnu_ld" = no; then
+ allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*'
+ case $host in
+ osf3*)
+ archive_cmds_CXX='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+ ;;
+ *)
+ archive_cmds_CXX='$CC -shared $pic_flag -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+ ;;
+ esac
+
+ 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 -v "^Configured with:" | $GREP "\-L"'
+
+ else
+ # FIXME: insert proper C++ library support
+ ld_shlibs_CXX=no
+ fi
+ ;;
+ esac
+ ;;
+
+ psos*)
+ # FIXME: insert proper C++ library support
+ ld_shlibs_CXX=no
+ ;;
+
+ sunos4*)
+ case $cc_basename in
+ CC*)
+ # Sun C++ 4.x
+ # FIXME: insert proper C++ library support
+ ld_shlibs_CXX=no
+ ;;
+ lcc*)
+ # Lucid
+ # FIXME: insert proper C++ library support
+ ld_shlibs_CXX=no
+ ;;
+ *)
+ # FIXME: insert proper C++ library support
+ ld_shlibs_CXX=no
+ ;;
+ esac
+ ;;
+
+ solaris*)
+ case $cc_basename in
+ CC* | sunCC*)
+ # Sun C++ 4.2, 5.x and Centerline C++
+ archive_cmds_need_lc_CXX=yes
+ no_undefined_flag_CXX=' -zdefs'
+ archive_cmds_CXX='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+ archive_expsym_cmds_CXX='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
+ $CC -G${allow_undefined_flag} ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp'
+
+ hardcode_libdir_flag_spec_CXX='-R$libdir'
+ hardcode_shlibpath_var_CXX=no
+ case $host_os in
+ solaris2.[0-5] | solaris2.[0-5].*) ;;
+ *)
+ # The compiler driver will combine and reorder linker options,
+ # but understands `-z linker_flag'.
+ # Supported since Solaris 2.6 (maybe 2.5.1?)
+ whole_archive_flag_spec_CXX='-z allextract$convenience -z defaultextract'
+ ;;
+ esac
+ link_all_deplibs_CXX=yes
+
+ output_verbose_link_cmd='func_echo_all'
+
+ # 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 $pic_flag -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 $pic_flag -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 -v "^Configured with:" | $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 -v "^Configured with:" | $GREP "\-L"'
+ fi
+
+ hardcode_libdir_flag_spec_CXX='${wl}-R $wl$libdir'
+ case $host_os in
+ solaris2.[0-5] | solaris2.[0-5].*) ;;
+ *)
+ whole_archive_flag_spec_CXX='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract'
+ ;;
+ esac
+ fi
+ ;;
+ esac
+ ;;
+
+ sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*)
+ no_undefined_flag_CXX='${wl}-z,text'
+ archive_cmds_need_lc_CXX=no
+ hardcode_shlibpath_var_CXX=no
+ runpath_var='LD_RUN_PATH'
+
+ case $cc_basename in
+ CC*)
+ archive_cmds_CXX='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ archive_expsym_cmds_CXX='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ *)
+ archive_cmds_CXX='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ archive_expsym_cmds_CXX='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ esac
+ ;;
+
+ sysv5* | sco3.2v5* | sco5v6*)
+ # Note: We can NOT use -z defs as we might desire, because we do not
+ # link with -lc, and that would cause any symbols used from libc to
+ # always be unresolved, which means just about no library would
+ # ever link correctly. If we're not using GNU ld we use -z text
+ # though, which does catch some bad symbols but isn't as heavy-handed
+ # as -z defs.
+ no_undefined_flag_CXX='${wl}-z,text'
+ allow_undefined_flag_CXX='${wl}-z,nodefs'
+ archive_cmds_need_lc_CXX=no
+ hardcode_shlibpath_var_CXX=no
+ hardcode_libdir_flag_spec_CXX='${wl}-R,$libdir'
+ hardcode_libdir_separator_CXX=':'
+ link_all_deplibs_CXX=yes
+ export_dynamic_flag_spec_CXX='${wl}-Bexport'
+ runpath_var='LD_RUN_PATH'
+
+ case $cc_basename in
+ CC*)
+ archive_cmds_CXX='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ archive_expsym_cmds_CXX='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ old_archive_cmds_CXX='$CC -Tprelink_objects $oldobjs~
+ '"$old_archive_cmds_CXX"
+ reload_cmds_CXX='$CC -Tprelink_objects $reload_objs~
+ '"$reload_cmds_CXX"
+ ;;
+ *)
+ archive_cmds_CXX='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ archive_expsym_cmds_CXX='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ esac
+ ;;
+
+ tandem*)
+ case $cc_basename in
+ NCC*)
+ # NonStop-UX NCC 3.20
+ # FIXME: insert proper C++ library support
+ ld_shlibs_CXX=no
+ ;;
+ *)
+ # FIXME: insert proper C++ library support
+ ld_shlibs_CXX=no
+ ;;
+ esac
+ ;;
+
+ vxworks*)
+ # FIXME: insert proper C++ library support
+ ld_shlibs_CXX=no
+ ;;
+
+ *)
+ # FIXME: insert proper C++ library support
+ ld_shlibs_CXX=no
+ ;;
+ esac
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs_CXX" >&5
+$as_echo "$ld_shlibs_CXX" >&6; }
+ test "$ld_shlibs_CXX" = no && can_build_shared=no
+
+ GCC_CXX="$GXX"
+ LD_CXX="$LD"
+
+ ## CAVEAT EMPTOR:
+ ## There is no encapsulation within the following macros, do not change
+ ## the running order or otherwise move them around unless you know exactly
+ ## what you are doing...
+ # 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=
+
+cat > conftest.$ac_ext <<_LT_EOF
+class Foo
+{
+public:
+ Foo (void) { a = 0; }
+private:
+ int a;
+};
+_LT_EOF
+
+
+_lt_libdeps_save_CFLAGS=$CFLAGS
+case "$CC $CFLAGS " in #(
+*\ -flto*\ *) CFLAGS="$CFLAGS -fno-lto" ;;
+*\ -fwhopr*\ *) CFLAGS="$CFLAGS -fno-whopr" ;;
+*\ -fuse-linker-plugin*\ *) CFLAGS="$CFLAGS -fno-use-linker-plugin" ;;
+esac
+
+if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; 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
+
+ for p in `eval "$output_verbose_link_cmd"`; do
+ case ${prev}${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
+ fi
+
+ # Expand the sysroot to ease extracting the directories later.
+ if test -z "$prev"; then
+ case $p in
+ -L*) func_stripname_cnf '-L' '' "$p"; prev=-L; p=$func_stripname_result ;;
+ -R*) func_stripname_cnf '-R' '' "$p"; prev=-R; p=$func_stripname_result ;;
+ -l*) func_stripname_cnf '-l' '' "$p"; prev=-l; p=$func_stripname_result ;;
+ esac
+ fi
+ case $p in
+ =*) func_stripname_cnf '=' '' "$p"; p=$lt_sysroot$func_stripname_result ;;
+ esac
+ if test "$pre_test_object_deps_done" = no; then
+ case ${prev} 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
+ prev=
+ ;;
+
+ *.lto.$objext) ;; # Ignore GCC LTO objects
+ *.$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
+CFLAGS=$_lt_libdeps_save_CFLAGS
+
+# PORTME: override above test on systems where it is broken
+case $host_os in
+interix[3-9]*)
+ # Interix 3.5 installs completely hosed .la files for C++, so rather than
+ # hack all around it, let's just trust "g++" to DTRT.
+ predep_objects_CXX=
+ postdep_objects_CXX=
+ postdeps_CXX=
+ ;;
+
+linux*)
+ case `$CC -V 2>&1 | sed 5q` in
+ *Sun\ C*)
+ # Sun C++ 5.9
+
+ # The more standards-conforming stlport4 library is
+ # incompatible with the Cstd library. Avoid specifying
+ # it if it's in CXXFLAGS. Ignore libCrun as
+ # -library=stlport4 depends on it.
+ case " $CXX $CXXFLAGS " in
+ *" -library=stlport4 "*)
+ solaris_use_stlport4=yes
+ ;;
+ esac
+
+ if test "$solaris_use_stlport4" != yes; then
+ postdeps_CXX='-library=Cstd -library=Crun'
+ fi
+ ;;
+ esac
+ ;;
+
+solaris*)
+ case $cc_basename in
+ CC* | sunCC*)
+ # The more standards-conforming stlport4 library is
+ # incompatible with the Cstd library. Avoid specifying
+ # it if it's in CXXFLAGS. Ignore libCrun as
+ # -library=stlport4 depends on it.
+ case " $CXX $CXXFLAGS " in
+ *" -library=stlport4 "*)
+ solaris_use_stlport4=yes
+ ;;
+ esac
+
+ # Adding this requires a known-good setup of shared libraries for
+ # Sun compiler versions before 5.6, else PIC objects from an old
+ # archive will be linked into the output, leading to subtle bugs.
+ if test "$solaris_use_stlport4" != yes; then
+ postdeps_CXX='-library=Cstd -library=Crun'
+ fi
+ ;;
+ esac
+ ;;
+esac
+
+
+case " $postdeps_CXX " in
+*" -lc "*) archive_cmds_need_lc_CXX=no ;;
+esac
+ compiler_lib_search_dirs_CXX=
+if test -n "${compiler_lib_search_path_CXX}"; then
+ compiler_lib_search_dirs_CXX=`echo " ${compiler_lib_search_path_CXX}" | ${SED} -e 's! -L! !g' -e 's!^ !!'`
+fi
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ lt_prog_compiler_wl_CXX=
+lt_prog_compiler_pic_CXX=
+lt_prog_compiler_static_CXX=
+
+
+ # 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*)
+ case $host_cpu in
+ powerpc)
+ # see comment about AmigaOS4 .so support
+ lt_prog_compiler_pic_CXX='-fPIC'
+ ;;
+ m68k)
+ # 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'
+ ;;
+ esac
+ ;;
+
+ beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
+ # PIC is the default for these OSes.
+ ;;
+ mingw* | cygwin* | os2* | pw32* | cegcc*)
+ # This hack is so that the source file can tell whether it is being
+ # built for inclusion in a dll (and should export symbols for example).
+ # Although the cygwin gcc ignores -fPIC, still need this for old-style
+ # (--disable-auto-import) libraries
+ lt_prog_compiler_pic_CXX='-DDLL_EXPORT'
+ ;;
+ darwin* | rhapsody*)
+ # PIC is the default on this platform
+ # Common symbols not allowed in MH_DYLIB files
+ lt_prog_compiler_pic_CXX='-fno-common'
+ ;;
+ *djgpp*)
+ # DJGPP does not support shared libraries at all
+ lt_prog_compiler_pic_CXX=
+ ;;
+ haiku*)
+ # PIC is the default for Haiku.
+ # The "-static" flag exists, but is broken.
+ lt_prog_compiler_static_CXX=
+ ;;
+ interix[3-9]*)
+ # Interix 3.x gcc -fpic/-fPIC options generate broken code.
+ # Instead, we relocate shared libraries at runtime.
+ ;;
+ sysv4*MP*)
+ if test -d /usr/nec; then
+ lt_prog_compiler_pic_CXX=-Kconform_pic
+ fi
+ ;;
+ hpux*)
+ # PIC is the default for 64-bit PA HP-UX, but not for 32-bit
+ # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag
+ # sets the default TLS model and affects inlining.
+ case $host_cpu in
+ hppa*64*)
+ ;;
+ *)
+ lt_prog_compiler_pic_CXX='-fPIC'
+ ;;
+ esac
+ ;;
+ *qnx* | *nto*)
+ # QNX uses GNU C++, but need to define -shared option too, otherwise
+ # it will coredump.
+ lt_prog_compiler_pic_CXX='-fPIC -shared'
+ ;;
+ *)
+ lt_prog_compiler_pic_CXX='-fPIC'
+ ;;
+ esac
+ else
+ case $host_os in
+ aix[4-9]*)
+ # All AIX code is PIC.
+ if test "$host_cpu" = ia64; then
+ # AIX 5 now supports IA64 processor
+ lt_prog_compiler_static_CXX='-Bstatic'
+ else
+ lt_prog_compiler_static_CXX='-bnso -bI:/lib/syscalls.exp'
+ fi
+ ;;
+ chorus*)
+ case $cc_basename in
+ cxch68*)
+ # Green Hills C++ Compiler
+ # _LT_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
+ ;;
+ mingw* | cygwin* | os2* | pw32* | cegcc*)
+ # 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'
+ ;;
+ dgux*)
+ case $cc_basename in
+ ec++*)
+ lt_prog_compiler_pic_CXX='-KPIC'
+ ;;
+ ghcx*)
+ # Green Hills C++ Compiler
+ lt_prog_compiler_pic_CXX='-pic'
+ ;;
+ *)
+ ;;
+ esac
+ ;;
+ freebsd* | dragonfly*)
+ # FreeBSD uses GNU C++
+ ;;
+ hpux9* | hpux10* | hpux11*)
+ case $cc_basename in
+ CC*)
+ lt_prog_compiler_wl_CXX='-Wl,'
+ lt_prog_compiler_static_CXX='${wl}-a ${wl}archive'
+ if test "$host_cpu" != ia64; then
+ lt_prog_compiler_pic_CXX='+Z'
+ fi
+ ;;
+ aCC*)
+ lt_prog_compiler_wl_CXX='-Wl,'
+ lt_prog_compiler_static_CXX='${wl}-a ${wl}archive'
+ case $host_cpu in
+ hppa*64*|ia64*)
+ # +Z the default
+ ;;
+ *)
+ lt_prog_compiler_pic_CXX='+Z'
+ ;;
+ esac
+ ;;
+ *)
+ ;;
+ esac
+ ;;
+ interix*)
+ # This is c89, which is MS Visual C++ (no shared libs)
+ # Anyone wants to do a port?
+ ;;
+ irix5* | irix6* | nonstopux*)
+ case $cc_basename in
+ CC*)
+ lt_prog_compiler_wl_CXX='-Wl,'
+ lt_prog_compiler_static_CXX='-non_shared'
+ # CC pic flag -KPIC is the default.
+ ;;
+ *)
+ ;;
+ esac
+ ;;
+ linux* | k*bsd*-gnu | kopensolaris*-gnu)
+ case $cc_basename in
+ KCC*)
+ # KAI C++ Compiler
+ lt_prog_compiler_wl_CXX='--backend -Wl,'
+ lt_prog_compiler_pic_CXX='-fPIC'
+ ;;
+ ecpc* )
+ # old Intel C++ for x86_64 which still supported -KPIC.
+ lt_prog_compiler_wl_CXX='-Wl,'
+ lt_prog_compiler_pic_CXX='-KPIC'
+ lt_prog_compiler_static_CXX='-static'
+ ;;
+ icpc* )
+ # Intel C++, used to be incompatible with GCC.
+ # ICC 10 doesn't accept -KPIC any more.
+ lt_prog_compiler_wl_CXX='-Wl,'
+ lt_prog_compiler_pic_CXX='-fPIC'
+ lt_prog_compiler_static_CXX='-static'
+ ;;
+ pgCC* | pgcpp*)
+ # Portland Group C++ compiler
+ lt_prog_compiler_wl_CXX='-Wl,'
+ lt_prog_compiler_pic_CXX='-fpic'
+ lt_prog_compiler_static_CXX='-Bstatic'
+ ;;
+ cxx*)
+ # Compaq C++
+ # Make sure the PIC flag is empty. It appears that all Alpha
+ # Linux and Compaq Tru64 Unix objects are PIC.
+ lt_prog_compiler_pic_CXX=
+ lt_prog_compiler_static_CXX='-non_shared'
+ ;;
+ xlc* | xlC* | bgxl[cC]* | mpixl[cC]*)
+ # IBM XL 8.0, 9.0 on PPC and BlueGene
+ lt_prog_compiler_wl_CXX='-Wl,'
+ lt_prog_compiler_pic_CXX='-qpic'
+ lt_prog_compiler_static_CXX='-qstaticlink'
+ ;;
+ *)
+ case `$CC -V 2>&1 | sed 5q` in
+ *Sun\ C*)
+ # Sun C++ 5.9
+ lt_prog_compiler_pic_CXX='-KPIC'
+ lt_prog_compiler_static_CXX='-Bstatic'
+ lt_prog_compiler_wl_CXX='-Qoption ld '
+ ;;
+ esac
+ ;;
+ esac
+ ;;
+ lynxos*)
+ ;;
+ m88k*)
+ ;;
+ mvs*)
+ case $cc_basename in
+ cxx*)
+ lt_prog_compiler_pic_CXX='-W c,exportall'
+ ;;
+ *)
+ ;;
+ esac
+ ;;
+ netbsd* | netbsdelf*-gnu)
+ ;;
+ *qnx* | *nto*)
+ # QNX uses GNU C++, but need to define -shared option too, otherwise
+ # it will coredump.
+ lt_prog_compiler_pic_CXX='-fPIC -shared'
+ ;;
+ osf3* | osf4* | osf5*)
+ case $cc_basename in
+ KCC*)
+ lt_prog_compiler_wl_CXX='--backend -Wl,'
+ ;;
+ RCC*)
+ # Rational C++ 2.4.1
+ lt_prog_compiler_pic_CXX='-pic'
+ ;;
+ cxx*)
+ # Digital/Compaq C++
+ lt_prog_compiler_wl_CXX='-Wl,'
+ # Make sure the PIC flag is empty. It appears that all Alpha
+ # Linux and Compaq Tru64 Unix objects are PIC.
+ lt_prog_compiler_pic_CXX=
+ lt_prog_compiler_static_CXX='-non_shared'
+ ;;
+ *)
+ ;;
+ esac
+ ;;
+ psos*)
+ ;;
+ solaris*)
+ case $cc_basename in
+ CC* | sunCC*)
+ # 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
+ ;;
+ sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*)
+ case $cc_basename in
+ CC*)
+ lt_prog_compiler_wl_CXX='-Wl,'
+ lt_prog_compiler_pic_CXX='-KPIC'
+ lt_prog_compiler_static_CXX='-Bstatic'
+ ;;
+ esac
+ ;;
+ tandem*)
+ case $cc_basename in
+ NCC*)
+ # NonStop-UX NCC 3.20
+ lt_prog_compiler_pic_CXX='-KPIC'
+ ;;
+ *)
+ ;;
+ esac
+ ;;
+ vxworks*)
+ ;;
+ *)
+ lt_prog_compiler_can_build_shared_CXX=no
+ ;;
+ esac
+ 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
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5
+$as_echo_n "checking for $compiler option to produce PIC... " >&6; }
+if ${lt_cv_prog_compiler_pic_CXX+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ lt_cv_prog_compiler_pic_CXX=$lt_prog_compiler_pic_CXX
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_CXX" >&5
+$as_echo "$lt_cv_prog_compiler_pic_CXX" >&6; }
+lt_prog_compiler_pic_CXX=$lt_cv_prog_compiler_pic_CXX
+
+#
+# Check to make sure the PIC flag actually works.
+#
+if test -n "$lt_prog_compiler_pic_CXX"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works" >&5
+$as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works... " >&6; }
+if ${lt_cv_prog_compiler_pic_works_CXX+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ lt_cv_prog_compiler_pic_works_CXX=no
+ ac_outfile=conftest.$ac_objext
+ echo "$lt_simple_compile_test_code" > conftest.$ac_ext
+ lt_compiler_flag="$lt_prog_compiler_pic_CXX -DPIC"
+ # Insert the option either (1) after the last *FLAGS variable, or
+ # (2) before a word containing "conftest.", or (3) at the end.
+ # Note that $ac_compile itself does not contain backslashes and begins
+ # with a dollar sign (not a hyphen), so the echo should work correctly.
+ # The option is referenced via a variable to avoid confusing sed.
+ lt_compile=`echo "$ac_compile" | $SED \
+ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
+ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+ -e 's:$: $lt_compiler_flag:'`
+ (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5)
+ (eval "$lt_compile" 2>conftest.err)
+ ac_status=$?
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ if (exit $ac_status) && test -s "$ac_outfile"; then
+ # The compiler can only warn and ignore the option if not recognized
+ # So say no if there are warnings other than the usual output.
+ $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp
+ $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+ if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
+ lt_cv_prog_compiler_pic_works_CXX=yes
+ fi
+ fi
+ $RM conftest*
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works_CXX" >&5
+$as_echo "$lt_cv_prog_compiler_pic_works_CXX" >&6; }
+
+if test x"$lt_cv_prog_compiler_pic_works_CXX" = xyes; then
+ case $lt_prog_compiler_pic_CXX in
+ "" | " "*) ;;
+ *) lt_prog_compiler_pic_CXX=" $lt_prog_compiler_pic_CXX" ;;
+ esac
+else
+ lt_prog_compiler_pic_CXX=
+ lt_prog_compiler_can_build_shared_CXX=no
+fi
+
+fi
+
+
+
+
+
+#
+# Check to make sure the static flag actually works.
+#
+wl=$lt_prog_compiler_wl_CXX eval lt_tmp_static_flag=\"$lt_prog_compiler_static_CXX\"
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5
+$as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; }
+if ${lt_cv_prog_compiler_static_works_CXX+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ lt_cv_prog_compiler_static_works_CXX=no
+ save_LDFLAGS="$LDFLAGS"
+ LDFLAGS="$LDFLAGS $lt_tmp_static_flag"
+ echo "$lt_simple_link_test_code" > conftest.$ac_ext
+ if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
+ # The linker can only warn and ignore the option if not recognized
+ # So say no if there are warnings
+ if test -s conftest.err; then
+ # Append any errors to the config.log.
+ cat conftest.err 1>&5
+ $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp
+ $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+ if diff conftest.exp conftest.er2 >/dev/null; then
+ lt_cv_prog_compiler_static_works_CXX=yes
+ fi
+ else
+ lt_cv_prog_compiler_static_works_CXX=yes
+ fi
+ fi
+ $RM -r conftest*
+ LDFLAGS="$save_LDFLAGS"
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works_CXX" >&5
+$as_echo "$lt_cv_prog_compiler_static_works_CXX" >&6; }
+
+if test x"$lt_cv_prog_compiler_static_works_CXX" = xyes; then
+ :
+else
+ lt_prog_compiler_static_CXX=
+fi
+
+
+
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5
+$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; }
+if ${lt_cv_prog_compiler_c_o_CXX+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ lt_cv_prog_compiler_c_o_CXX=no
+ $RM -r conftest 2>/dev/null
+ mkdir conftest
+ cd conftest
+ mkdir out
+ echo "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+ lt_compiler_flag="-o out/conftest2.$ac_objext"
+ # Insert the option either (1) after the last *FLAGS variable, or
+ # (2) before a word containing "conftest.", or (3) at the end.
+ # Note that $ac_compile itself does not contain backslashes and begins
+ # with a dollar sign (not a hyphen), so the echo should work correctly.
+ lt_compile=`echo "$ac_compile" | $SED \
+ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
+ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+ -e 's:$: $lt_compiler_flag:'`
+ (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5)
+ (eval "$lt_compile" 2>out/conftest.err)
+ ac_status=$?
+ cat out/conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ if (exit $ac_status) && test -s out/conftest2.$ac_objext
+ then
+ # The compiler can only warn and ignore the option if not recognized
+ # So say no if there are warnings
+ $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp
+ $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2
+ if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then
+ lt_cv_prog_compiler_c_o_CXX=yes
+ fi
+ fi
+ chmod u+w . 2>&5
+ $RM conftest*
+ # SGI C++ compiler will create directory out/ii_files/ for
+ # template instantiation
+ test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files
+ $RM out/* && rmdir out
+ cd ..
+ $RM -r conftest
+ $RM conftest*
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o_CXX" >&5
+$as_echo "$lt_cv_prog_compiler_c_o_CXX" >&6; }
+
+
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5
+$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; }
+if ${lt_cv_prog_compiler_c_o_CXX+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ lt_cv_prog_compiler_c_o_CXX=no
+ $RM -r conftest 2>/dev/null
+ mkdir conftest
+ cd conftest
+ mkdir out
+ echo "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+ lt_compiler_flag="-o out/conftest2.$ac_objext"
+ # Insert the option either (1) after the last *FLAGS variable, or
+ # (2) before a word containing "conftest.", or (3) at the end.
+ # Note that $ac_compile itself does not contain backslashes and begins
+ # with a dollar sign (not a hyphen), so the echo should work correctly.
+ lt_compile=`echo "$ac_compile" | $SED \
+ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
+ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+ -e 's:$: $lt_compiler_flag:'`
+ (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5)
+ (eval "$lt_compile" 2>out/conftest.err)
+ ac_status=$?
+ cat out/conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ if (exit $ac_status) && test -s out/conftest2.$ac_objext
+ then
+ # The compiler can only warn and ignore the option if not recognized
+ # So say no if there are warnings
+ $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp
+ $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2
+ if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then
+ lt_cv_prog_compiler_c_o_CXX=yes
+ fi
+ fi
+ chmod u+w . 2>&5
+ $RM conftest*
+ # SGI C++ compiler will create directory out/ii_files/ for
+ # template instantiation
+ test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files
+ $RM out/* && rmdir out
+ cd ..
+ $RM -r conftest
+ $RM conftest*
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o_CXX" >&5
+$as_echo "$lt_cv_prog_compiler_c_o_CXX" >&6; }
+
+
+
+
+hard_links="nottested"
+if test "$lt_cv_prog_compiler_c_o_CXX" = no && test "$need_locks" != no; then
+ # do not overwrite the value of need_locks provided by the user
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5
+$as_echo_n "checking if we can lock with hard links... " >&6; }
+ hard_links=yes
+ $RM conftest*
+ ln conftest.a conftest.b 2>/dev/null && hard_links=no
+ touch conftest.a
+ ln conftest.a conftest.b 2>&5 || hard_links=no
+ ln conftest.a conftest.b 2>/dev/null && hard_links=no
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5
+$as_echo "$hard_links" >&6; }
+ if test "$hard_links" = no; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5
+$as_echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;}
+ need_locks=warn
+ fi
+else
+ need_locks=no
+fi
+
+
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5
+$as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; }
+
+ export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
+ exclude_expsyms_CXX='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'
+ case $host_os in
+ aix[4-9]*)
+ # If we're using GNU nm, then we don't want the "-C" option.
+ # -C means demangle to AIX nm, but means don't demangle with GNU nm
+ # Also, AIX nm treats weak defined symbols like other global defined
+ # symbols, whereas GNU nm marks them as "W".
+ 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") || (\$ 2 == "W")) && (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* | cegcc*)
+ case $cc_basename in
+ cl*)
+ exclude_expsyms_CXX='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*'
+ ;;
+ *)
+ export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.* //'\'' | sort | uniq > $export_symbols'
+ exclude_expsyms_CXX='[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname'
+ ;;
+ esac
+ ;;
+ linux* | k*bsd*-gnu | gnu*)
+ link_all_deplibs_CXX=no
+ ;;
+ *)
+ export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
+ ;;
+ esac
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs_CXX" >&5
+$as_echo "$ld_shlibs_CXX" >&6; }
+test "$ld_shlibs_CXX" = no && can_build_shared=no
+
+with_gnu_ld_CXX=$with_gnu_ld
+
+
+
+
+
+
+#
+# Do we need to explicitly link libc?
+#
+case "x$archive_cmds_need_lc_CXX" in
+x|xyes)
+ # Assume -lc should be added
+ archive_cmds_need_lc_CXX=yes
+
+ if test "$enable_shared" = yes && test "$GCC" = yes; then
+ case $archive_cmds_CXX in
+ *'~'*)
+ # FIXME: we may have to deal with multi-command sequences.
+ ;;
+ '$CC '*)
+ # Test whether the compiler implicitly links with -lc since on some
+ # systems, -lgcc has to come before -lc. If gcc already passes -lc
+ # to ld, don't add -lc before -lgcc.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5
+$as_echo_n "checking whether -lc should be explicitly linked in... " >&6; }
+if ${lt_cv_archive_cmds_need_lc_CXX+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ $RM conftest*
+ echo "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+ if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; } 2>conftest.err; then
+ soname=conftest
+ lib=conftest
+ libobjs=conftest.$ac_objext
+ deplibs=
+ wl=$lt_prog_compiler_wl_CXX
+ pic_flag=$lt_prog_compiler_pic_CXX
+ compiler_flags=-v
+ linker_flags=-v
+ verstring=
+ output_objdir=.
+ libname=conftest
+ lt_save_allow_undefined_flag=$allow_undefined_flag_CXX
+ allow_undefined_flag_CXX=
+ if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds_CXX 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\""; } >&5
+ (eval $archive_cmds_CXX 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }
+ then
+ lt_cv_archive_cmds_need_lc_CXX=no
+ else
+ lt_cv_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*
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc_CXX" >&5
+$as_echo "$lt_cv_archive_cmds_need_lc_CXX" >&6; }
+ archive_cmds_need_lc_CXX=$lt_cv_archive_cmds_need_lc_CXX
+ ;;
+ esac
+ fi
+ ;;
+esac
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5
+$as_echo_n "checking dynamic linker characteristics... " >&6; }
+
+library_names_spec=
+libname_spec='lib$name'
+soname_spec=
+shrext_cmds=".so"
+postinstall_cmds=
+postuninstall_cmds=
+finish_cmds=
+finish_eval=
+shlibpath_var=
+shlibpath_overrides_runpath=unknown
+version_type=none
+dynamic_linker="$host_os ld.so"
+sys_lib_dlsearch_path_spec="/lib /usr/lib"
+need_lib_prefix=unknown
+hardcode_into_libs=no
+
+# when you set need_version to no, make sure it does not cause -set_version
+# flags to be left without arguments
+need_version=unknown
+
+case $host_os in
+aix3*)
+ version_type=linux # correct to gnu/linux during the next big refactor
+ library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a'
+ shlibpath_var=LIBPATH
+
+ # AIX 3 has no versioning support, so we append a major version to the name.
+ soname_spec='${libname}${release}${shared_ext}$major'
+ ;;
+
+aix[4-9]*)
+ version_type=linux # correct to gnu/linux during the next big refactor
+ 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<name>.so
+ # instead of lib<name>.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*)
+ case $host_cpu in
+ powerpc)
+ # Since July 2007 AmigaOS4 officially supports .so libraries.
+ # When compiling the executable, add -use-dynld -Lsobjs: to the compileline.
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ ;;
+ m68k)
+ 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=`func_echo_all "$lib" | $SED '\''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'
+ ;;
+ esac
+ ;;
+
+beos*)
+ library_names_spec='${libname}${shared_ext}'
+ dynamic_linker="$host_os ld.so"
+ shlibpath_var=LIBRARY_PATH
+ ;;
+
+bsdi[45]*)
+ version_type=linux # correct to gnu/linux during the next big refactor
+ 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* | cegcc*)
+ version_type=windows
+ shrext_cmds=".dll"
+ need_version=no
+ need_lib_prefix=no
+
+ case $GCC,$cc_basename in
+ yes,*)
+ # gcc
+ library_names_spec='$libname.dll.a'
+ # DLL is installed to $(libdir)/../bin by postinstall_cmds
+ postinstall_cmds='base_file=`basename \${file}`~
+ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~
+ dldir=$destdir/`dirname \$dlpath`~
+ test -d \$dldir || mkdir -p \$dldir~
+ $install_prog $dir/$dlname \$dldir/$dlname~
+ chmod a+x \$dldir/$dlname~
+ if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then
+ eval '\''$striplib \$dldir/$dlname'\'' || exit \$?;
+ fi'
+ 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}'
+
+ ;;
+ mingw* | cegcc*)
+ # MinGW DLLs use traditional 'lib' prefix
+ soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+ ;;
+ 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
+ dynamic_linker='Win32 ld.exe'
+ ;;
+
+ *,cl*)
+ # Native MSVC
+ libname_spec='$name'
+ soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+ library_names_spec='${libname}.dll.lib'
+
+ case $build_os in
+ mingw*)
+ sys_lib_search_path_spec=
+ lt_save_ifs=$IFS
+ IFS=';'
+ for lt_path in $LIB
+ do
+ IFS=$lt_save_ifs
+ # Let DOS variable expansion print the short 8.3 style file name.
+ lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"`
+ sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path"
+ done
+ IFS=$lt_save_ifs
+ # Convert to MSYS style.
+ sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([a-zA-Z]\\):| /\\1|g' -e 's|^ ||'`
+ ;;
+ cygwin*)
+ # Convert to unix form, then to dos form, then back to unix form
+ # but this time dos style (no spaces!) so that the unix form looks
+ # like /cygdrive/c/PROGRA~1:/cygdr...
+ sys_lib_search_path_spec=`cygpath --path --unix "$LIB"`
+ sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null`
+ sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
+ ;;
+ *)
+ sys_lib_search_path_spec="$LIB"
+ if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then
+ # It is most probably a Windows format PATH.
+ 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
+ # FIXME: find the short name or the path components, as spaces are
+ # common. (e.g. "Program Files" -> "PROGRA~1")
+ ;;
+ esac
+
+ # 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
+ dynamic_linker='Win32 link.exe'
+ ;;
+
+ *)
+ # Assume MSVC wrapper
+ library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib'
+ dynamic_linker='Win32 ld.exe'
+ ;;
+ esac
+ # FIXME: first we should search . and the directory the executable is in
+ shlibpath_var=PATH
+ ;;
+
+darwin* | rhapsody*)
+ dynamic_linker="$host_os dyld"
+ version_type=darwin
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${major}$shared_ext ${libname}$shared_ext'
+ soname_spec='${libname}${release}${major}$shared_ext'
+ shlibpath_overrides_runpath=yes
+ shlibpath_var=DYLD_LIBRARY_PATH
+ shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`'
+
+ sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib'
+ ;;
+
+dgux*)
+ version_type=linux # correct to gnu/linux during the next big refactor
+ 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
+ ;;
+
+freebsd* | dragonfly*)
+ # DragonFly does not have aout. When/if they implement a new
+ # versioning mechanism, adjust this.
+ if test -x /usr/bin/objformat; then
+ objformat=`/usr/bin/objformat`
+ else
+ case $host_os in
+ freebsd[23].*) objformat=aout ;;
+ *) objformat=elf ;;
+ esac
+ fi
+ version_type=freebsd-$objformat
+ case $version_type in
+ freebsd-elf*)
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
+ need_version=no
+ need_lib_prefix=no
+ ;;
+ freebsd-*)
+ library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix'
+ need_version=yes
+ ;;
+ esac
+ shlibpath_var=LD_LIBRARY_PATH
+ case $host_os in
+ freebsd2.*)
+ shlibpath_overrides_runpath=yes
+ ;;
+ freebsd3.[01]* | freebsdelf3.[01]*)
+ shlibpath_overrides_runpath=yes
+ hardcode_into_libs=yes
+ ;;
+ freebsd3.[2-9]* | freebsdelf3.[2-9]* | \
+ freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1)
+ shlibpath_overrides_runpath=no
+ hardcode_into_libs=yes
+ ;;
+ *) # from 4.6 on, and DragonFly
+ shlibpath_overrides_runpath=yes
+ hardcode_into_libs=yes
+ ;;
+ esac
+ ;;
+
+gnu*)
+ version_type=linux # correct to gnu/linux during the next big refactor
+ 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=no
+ hardcode_into_libs=yes
+ ;;
+
+haiku*)
+ version_type=linux # correct to gnu/linux during the next big refactor
+ need_lib_prefix=no
+ need_version=no
+ dynamic_linker="$host_os runtime_loader"
+ 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=LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+ sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib'
+ hardcode_into_libs=yes
+ ;;
+
+hpux9* | hpux10* | hpux11*)
+ # Give a soname corresponding to the major version so that dld.sl refuses to
+ # link against other versions.
+ version_type=sunos
+ need_lib_prefix=no
+ need_version=no
+ case $host_cpu in
+ ia64*)
+ shrext_cmds='.so'
+ hardcode_into_libs=yes
+ dynamic_linker="$host_os dld.so"
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ if test "X$HPUX_IA64_MODE" = X32; then
+ sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib"
+ else
+ sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64"
+ fi
+ sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+ ;;
+ hppa*64*)
+ shrext_cmds='.sl'
+ hardcode_into_libs=yes
+ dynamic_linker="$host_os dld.sl"
+ shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH
+ shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64"
+ sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+ ;;
+ *)
+ shrext_cmds='.sl'
+ dynamic_linker="$host_os dld.sl"
+ shlibpath_var=SHLIB_PATH
+ shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ ;;
+ esac
+ # HP-UX runs *really* slowly unless shared libraries are mode 555, ...
+ postinstall_cmds='chmod 555 $lib'
+ # or fails outright, so override atomically:
+ install_override_mode=555
+ ;;
+
+interix[3-9]*)
+ version_type=linux # correct to gnu/linux during the next big refactor
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=no
+ hardcode_into_libs=yes
+ ;;
+
+irix5* | irix6* | nonstopux*)
+ case $host_os in
+ nonstopux*) version_type=nonstopux ;;
+ *)
+ if test "$lt_cv_prog_gnu_ld" = yes; then
+ version_type=linux # correct to gnu/linux during the next big refactor
+ 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 glibc/ELF.
+linux* | k*bsd*-gnu | kopensolaris*-gnu)
+ version_type=linux # correct to gnu/linux during the next big refactor
+ 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
+
+ # Some binutils ld are patched to set DT_RUNPATH
+ if ${lt_cv_shlibpath_overrides_runpath+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ lt_cv_shlibpath_overrides_runpath=no
+ save_LDFLAGS=$LDFLAGS
+ save_libdir=$libdir
+ eval "libdir=/foo; wl=\"$lt_prog_compiler_wl_CXX\"; \
+ LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec_CXX\""
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+ if ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then :
+ lt_cv_shlibpath_overrides_runpath=yes
+fi
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ LDFLAGS=$save_LDFLAGS
+ libdir=$save_libdir
+
+fi
+
+ shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath
+
+ # 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
+
+ # Append ld.so.conf contents to the search path
+ if test -f /etc/ld.so.conf; then
+ lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '`
+ sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra"
+ fi
+
+ # We used to test for /lib/ld.so.1 and disable shared libraries on
+ # powerpc, because MkLinux only supported shared libraries with the
+ # GNU dynamic linker. Since this was broken with cross compilers,
+ # most powerpc-linux boxes support dynamic linking these days and
+ # people can always --disable-shared, the test was removed, and we
+ # assume the GNU/Linux dynamic linker is in use.
+ dynamic_linker='GNU/Linux ld.so'
+ ;;
+
+netbsdelf*-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
+ shlibpath_overrides_runpath=no
+ hardcode_into_libs=yes
+ dynamic_linker='NetBSD ld.elf_so'
+ ;;
+
+netbsd*)
+ version_type=sunos
+ need_lib_prefix=no
+ need_version=no
+ if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+ finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+ dynamic_linker='NetBSD (a.out) ld.so'
+ else
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ dynamic_linker='NetBSD ld.elf_so'
+ fi
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+ hardcode_into_libs=yes
+ ;;
+
+newsos6)
+ version_type=linux # correct to gnu/linux during the next big refactor
+ 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=qnx
+ 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=no
+ hardcode_into_libs=yes
+ dynamic_linker='ldqnx.so'
+ ;;
+
+openbsd*)
+ version_type=sunos
+ sys_lib_dlsearch_path_spec="/usr/lib"
+ need_lib_prefix=no
+ # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs.
+ case $host_os in
+ openbsd3.3 | openbsd3.3.*) need_version=yes ;;
+ *) need_version=no ;;
+ esac
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+ finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+ shlibpath_var=LD_LIBRARY_PATH
+ if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+ case $host_os in
+ openbsd2.[89] | openbsd2.[89].*)
+ shlibpath_overrides_runpath=no
+ ;;
+ *)
+ shlibpath_overrides_runpath=yes
+ ;;
+ esac
+ else
+ shlibpath_overrides_runpath=yes
+ fi
+ ;;
+
+os2*)
+ libname_spec='$name'
+ shrext_cmds=".dll"
+ need_lib_prefix=no
+ library_names_spec='$libname${shared_ext} $libname.a'
+ dynamic_linker='OS/2 ld.exe'
+ shlibpath_var=LIBPATH
+ ;;
+
+osf3* | osf4* | osf5*)
+ version_type=osf
+ need_lib_prefix=no
+ need_version=no
+ soname_spec='${libname}${release}${shared_ext}$major'
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ shlibpath_var=LD_LIBRARY_PATH
+ sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib"
+ sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec"
+ ;;
+
+rdos*)
+ dynamic_linker=no
+ ;;
+
+solaris*)
+ version_type=linux # correct to gnu/linux during the next big refactor
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+ hardcode_into_libs=yes
+ # ldd complains unless libraries are executable
+ postinstall_cmds='chmod +x $lib'
+ ;;
+
+sunos4*)
+ version_type=sunos
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+ finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+ if test "$with_gnu_ld" = yes; then
+ need_lib_prefix=no
+ fi
+ need_version=yes
+ ;;
+
+sysv4 | sysv4.3*)
+ version_type=linux # correct to gnu/linux during the next big refactor
+ 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
+ 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 # correct to gnu/linux during the next big refactor
+ library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}'
+ soname_spec='$libname${shared_ext}.$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ fi
+ ;;
+
+sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
+ version_type=freebsd-elf
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+ hardcode_into_libs=yes
+ if test "$with_gnu_ld" = yes; then
+ sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib'
+ else
+ sys_lib_search_path_spec='/usr/ccs/lib /usr/lib'
+ case $host_os in
+ sco3.2v5*)
+ sys_lib_search_path_spec="$sys_lib_search_path_spec /lib"
+ ;;
+ esac
+ fi
+ sys_lib_dlsearch_path_spec='/usr/lib'
+ ;;
+
+tpf*)
+ # TPF is a cross-target only. Preferred cross-host = GNU/Linux.
+ version_type=linux # correct to gnu/linux during the next big refactor
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=no
+ hardcode_into_libs=yes
+ ;;
+
+uts4*)
+ version_type=linux # correct to gnu/linux during the next big refactor
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ ;;
+
+*)
+ dynamic_linker=no
+ ;;
+esac
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5
+$as_echo "$dynamic_linker" >&6; }
+test "$dynamic_linker" = 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
+
+if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then
+ sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec"
+fi
+if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then
+ sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec"
+fi
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5
+$as_echo_n "checking how to hardcode library paths into programs... " >&6; }
+hardcode_action_CXX=
+if test -n "$hardcode_libdir_flag_spec_CXX" ||
+ test -n "$runpath_var_CXX" ||
+ test "X$hardcode_automatic_CXX" = "Xyes" ; then
+
+ # We can hardcode non-existent 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_TAGVAR(hardcode_shlibpath_var, CXX)" != no &&
+ test "$hardcode_minus_L_CXX" != no; then
+ # Linking always hardcodes the temporary library directory.
+ hardcode_action_CXX=relink
+ else
+ # We can link without hardcoding, and we can hardcode nonexisting dirs.
+ hardcode_action_CXX=immediate
+ fi
+else
+ # We cannot hardcode anything, or else we can only hardcode existing
+ # directories.
+ hardcode_action_CXX=unsupported
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action_CXX" >&5
+$as_echo "$hardcode_action_CXX" >&6; }
+
+if test "$hardcode_action_CXX" = relink ||
+ test "$inherit_rpath_CXX" = yes; 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
+
+
+
+
+
+
+
+ fi # test -n "$compiler"
+
+ CC=$lt_save_CC
+ CFLAGS=$lt_save_CFLAGS
+ LDCXX=$LD
+ LD=$lt_save_LD
+ GCC=$lt_save_GCC
+ 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
+fi # test "$_lt_caught_CXX_error" != yes
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ac_config_commands="$ac_config_commands libtool"
+
+
+
+
+# Only expand once:
+
+
+
+
+# Checks for libraries.
+# FIXME: Replace `main' with a function in `-lm':
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for log in -lm" >&5
+$as_echo_n "checking for log in -lm... " >&6; }
+if ${ac_cv_lib_m_log+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-lm $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char log ();
+int
+main ()
+{
+return log ();
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ ac_cv_lib_m_log=yes
+else
+ ac_cv_lib_m_log=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_m_log" >&5
+$as_echo "$ac_cv_lib_m_log" >&6; }
+if test "x$ac_cv_lib_m_log" = xyes; then :
+ cat >>confdefs.h <<_ACEOF
+#define HAVE_LIBM 1
+_ACEOF
+
+ LIBS="-lm $LIBS"
+
+fi
+
+
+# Checks for header files.
+for ac_header in fcntl.h float.h limits.h malloc.h stddef.h stdint.h stdlib.h string.h strings.h sys/time.h unistd.h
+do :
+ as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default"
+if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
+ cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+
+# Checks for typedefs, structures, and compiler characteristics.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for stdbool.h that conforms to C99" >&5
+$as_echo_n "checking for stdbool.h that conforms to C99... " >&6; }
+if ${ac_cv_header_stdbool_h+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+ #include <stdbool.h>
+ #ifndef bool
+ "error: bool is not defined"
+ #endif
+ #ifndef false
+ "error: false is not defined"
+ #endif
+ #if false
+ "error: false is not 0"
+ #endif
+ #ifndef true
+ "error: true is not defined"
+ #endif
+ #if true != 1
+ "error: true is not 1"
+ #endif
+ #ifndef __bool_true_false_are_defined
+ "error: __bool_true_false_are_defined is not defined"
+ #endif
+
+ struct s { _Bool s: 1; _Bool t; } s;
+
+ char a[true == 1 ? 1 : -1];
+ char b[false == 0 ? 1 : -1];
+ char c[__bool_true_false_are_defined == 1 ? 1 : -1];
+ char d[(bool) 0.5 == true ? 1 : -1];
+ /* See body of main program for 'e'. */
+ char f[(_Bool) 0.0 == false ? 1 : -1];
+ char g[true];
+ char h[sizeof (_Bool)];
+ char i[sizeof s.t];
+ enum { j = false, k = true, l = false * true, m = true * 256 };
+ /* The following fails for
+ HP aC++/ANSI C B3910B A.05.55 [Dec 04 2003]. */
+ _Bool n[m];
+ char o[sizeof n == m * sizeof n[0] ? 1 : -1];
+ char p[-1 - (_Bool) 0 < 0 && -1 - (bool) 0 < 0 ? 1 : -1];
+ /* Catch a bug in an HP-UX C compiler. See
+ http://gcc.gnu.org/ml/gcc-patches/2003-12/msg02303.html
+ http://lists.gnu.org/archive/html/bug-coreutils/2005-11/msg00161.html
+ */
+ _Bool q = true;
+ _Bool *pq = &q;
+
+int
+main ()
+{
+
+ bool e = &s;
+ *pq |= q;
+ *pq |= ! q;
+ /* Refer to every declared value, to avoid compiler optimizations. */
+ return (!a + !b + !c + !d + !e + !f + !g + !h + !i + !!j + !k + !!l
+ + !m + !n + !o + !p + !q + !pq);
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ ac_cv_header_stdbool_h=yes
+else
+ ac_cv_header_stdbool_h=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdbool_h" >&5
+$as_echo "$ac_cv_header_stdbool_h" >&6; }
+ ac_fn_c_check_type "$LINENO" "_Bool" "ac_cv_type__Bool" "$ac_includes_default"
+if test "x$ac_cv_type__Bool" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE__BOOL 1
+_ACEOF
+
+
+fi
+
+
+if test $ac_cv_header_stdbool_h = yes; then
+
+$as_echo "#define HAVE_STDBOOL_H 1" >>confdefs.h
+
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for inline" >&5
+$as_echo_n "checking for inline... " >&6; }
+if ${ac_cv_c_inline+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_cv_c_inline=no
+for ac_kw in inline __inline__ __inline; do
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#ifndef __cplusplus
+typedef int foo_t;
+static $ac_kw foo_t static_foo () {return 0; }
+$ac_kw foo_t foo () {return 0; }
+#endif
+
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ ac_cv_c_inline=$ac_kw
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ test "$ac_cv_c_inline" != no && break
+done
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_inline" >&5
+$as_echo "$ac_cv_c_inline" >&6; }
+
+case $ac_cv_c_inline in
+ inline | yes) ;;
+ *)
+ case $ac_cv_c_inline in
+ no) ac_val=;;
+ *) ac_val=$ac_cv_c_inline;;
+ esac
+ cat >>confdefs.h <<_ACEOF
+#ifndef __cplusplus
+#define inline $ac_val
+#endif
+_ACEOF
+ ;;
+esac
+
+ac_fn_c_find_intX_t "$LINENO" "64" "ac_cv_c_int64_t"
+case $ac_cv_c_int64_t in #(
+ no|yes) ;; #(
+ *)
+
+cat >>confdefs.h <<_ACEOF
+#define int64_t $ac_cv_c_int64_t
+_ACEOF
+;;
+esac
+
+ac_fn_c_check_type "$LINENO" "size_t" "ac_cv_type_size_t" "$ac_includes_default"
+if test "x$ac_cv_type_size_t" = xyes; then :
+
+else
+
+cat >>confdefs.h <<_ACEOF
+#define size_t unsigned int
+_ACEOF
+
+fi
+
+ac_fn_c_check_type "$LINENO" "ssize_t" "ac_cv_type_ssize_t" "$ac_includes_default"
+if test "x$ac_cv_type_ssize_t" = xyes; then :
+
+else
+
+cat >>confdefs.h <<_ACEOF
+#define ssize_t int
+_ACEOF
+
+fi
+
+ac_fn_c_find_uintX_t "$LINENO" "32" "ac_cv_c_uint32_t"
+case $ac_cv_c_uint32_t in #(
+ no|yes) ;; #(
+ *)
+
+$as_echo "#define _UINT32_T 1" >>confdefs.h
+
+
+cat >>confdefs.h <<_ACEOF
+#define uint32_t $ac_cv_c_uint32_t
+_ACEOF
+;;
+ esac
+
+ac_fn_c_find_uintX_t "$LINENO" "64" "ac_cv_c_uint64_t"
+case $ac_cv_c_uint64_t in #(
+ no|yes) ;; #(
+ *)
+
+$as_echo "#define _UINT64_T 1" >>confdefs.h
+
+
+cat >>confdefs.h <<_ACEOF
+#define uint64_t $ac_cv_c_uint64_t
+_ACEOF
+;;
+ esac
+
+ac_fn_c_find_uintX_t "$LINENO" "8" "ac_cv_c_uint8_t"
+case $ac_cv_c_uint8_t in #(
+ no|yes) ;; #(
+ *)
+
+$as_echo "#define _UINT8_T 1" >>confdefs.h
+
+
+cat >>confdefs.h <<_ACEOF
+#define uint8_t $ac_cv_c_uint8_t
+_ACEOF
+;;
+ esac
+
+ac_fn_c_check_type "$LINENO" "ptrdiff_t" "ac_cv_type_ptrdiff_t" "$ac_includes_default"
+if test "x$ac_cv_type_ptrdiff_t" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_PTRDIFF_T 1
+_ACEOF
+
+
+fi
+
+
+# Checks for library functions.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for error_at_line" >&5
+$as_echo_n "checking for error_at_line... " >&6; }
+if ${ac_cv_lib_error_at_line+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <error.h>
+int
+main ()
+{
+error_at_line (0, 0, "", 0, "an error occurred");
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ ac_cv_lib_error_at_line=yes
+else
+ ac_cv_lib_error_at_line=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_error_at_line" >&5
+$as_echo "$ac_cv_lib_error_at_line" >&6; }
+if test $ac_cv_lib_error_at_line = no; then
+ case " $LIBOBJS " in
+ *" error.$ac_objext "* ) ;;
+ *) LIBOBJS="$LIBOBJS error.$ac_objext"
+ ;;
+esac
+
+fi
+
+for ac_header in stdlib.h
+do :
+ ac_fn_c_check_header_mongrel "$LINENO" "stdlib.h" "ac_cv_header_stdlib_h" "$ac_includes_default"
+if test "x$ac_cv_header_stdlib_h" = xyes; then :
+ cat >>confdefs.h <<_ACEOF
+#define HAVE_STDLIB_H 1
+_ACEOF
+
+fi
+
+done
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU libc compatible malloc" >&5
+$as_echo_n "checking for GNU libc compatible malloc... " >&6; }
+if ${ac_cv_func_malloc_0_nonnull+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test "$cross_compiling" = yes; then :
+ ac_cv_func_malloc_0_nonnull=no
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#if defined STDC_HEADERS || defined HAVE_STDLIB_H
+# include <stdlib.h>
+#else
+char *malloc ();
+#endif
+
+int
+main ()
+{
+return ! malloc (0);
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+ ac_cv_func_malloc_0_nonnull=yes
+else
+ ac_cv_func_malloc_0_nonnull=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+ conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_malloc_0_nonnull" >&5
+$as_echo "$ac_cv_func_malloc_0_nonnull" >&6; }
+if test $ac_cv_func_malloc_0_nonnull = yes; then :
+
+$as_echo "#define HAVE_MALLOC 1" >>confdefs.h
+
+else
+ $as_echo "#define HAVE_MALLOC 0" >>confdefs.h
+
+ case " $LIBOBJS " in
+ *" malloc.$ac_objext "* ) ;;
+ *) LIBOBJS="$LIBOBJS malloc.$ac_objext"
+ ;;
+esac
+
+
+$as_echo "#define malloc rpl_malloc" >>confdefs.h
+
+fi
+
+
+
+
+
+ for ac_header in $ac_header_list
+do :
+ as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default
+"
+if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
+ cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+
+
+
+
+
+
+
+for ac_func in getpagesize
+do :
+ ac_fn_c_check_func "$LINENO" "getpagesize" "ac_cv_func_getpagesize"
+if test "x$ac_cv_func_getpagesize" = xyes; then :
+ cat >>confdefs.h <<_ACEOF
+#define HAVE_GETPAGESIZE 1
+_ACEOF
+
+fi
+done
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for working mmap" >&5
+$as_echo_n "checking for working mmap... " >&6; }
+if ${ac_cv_func_mmap_fixed_mapped+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test "$cross_compiling" = yes; then :
+ ac_cv_func_mmap_fixed_mapped=no
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+$ac_includes_default
+/* malloc might have been renamed as rpl_malloc. */
+#undef malloc
+
+/* Thanks to Mike Haertel and Jim Avera for this test.
+ Here is a matrix of mmap possibilities:
+ mmap private not fixed
+ mmap private fixed at somewhere currently unmapped
+ mmap private fixed at somewhere already mapped
+ mmap shared not fixed
+ mmap shared fixed at somewhere currently unmapped
+ mmap shared fixed at somewhere already mapped
+ For private mappings, we should verify that changes cannot be read()
+ back from the file, nor mmap's back from the file at a different
+ address. (There have been systems where private was not correctly
+ implemented like the infamous i386 svr4.0, and systems where the
+ VM page cache was not coherent with the file system buffer cache
+ like early versions of FreeBSD and possibly contemporary NetBSD.)
+ For shared mappings, we should conversely verify that changes get
+ propagated back to all the places they're supposed to be.
+
+ Grep wants private fixed already mapped.
+ The main things grep needs to know about mmap are:
+ * does it exist and is it safe to write into the mmap'd area
+ * how to use it (BSD variants) */
+
+#include <fcntl.h>
+#include <sys/mman.h>
+
+#if !defined STDC_HEADERS && !defined HAVE_STDLIB_H
+char *malloc ();
+#endif
+
+/* This mess was copied from the GNU getpagesize.h. */
+#ifndef HAVE_GETPAGESIZE
+# ifdef _SC_PAGESIZE
+# define getpagesize() sysconf(_SC_PAGESIZE)
+# else /* no _SC_PAGESIZE */
+# ifdef HAVE_SYS_PARAM_H
+# include <sys/param.h>
+# ifdef EXEC_PAGESIZE
+# define getpagesize() EXEC_PAGESIZE
+# else /* no EXEC_PAGESIZE */
+# ifdef NBPG
+# define getpagesize() NBPG * CLSIZE
+# ifndef CLSIZE
+# define CLSIZE 1
+# endif /* no CLSIZE */
+# else /* no NBPG */
+# ifdef NBPC
+# define getpagesize() NBPC
+# else /* no NBPC */
+# ifdef PAGESIZE
+# define getpagesize() PAGESIZE
+# endif /* PAGESIZE */
+# endif /* no NBPC */
+# endif /* no NBPG */
+# endif /* no EXEC_PAGESIZE */
+# else /* no HAVE_SYS_PARAM_H */
+# define getpagesize() 8192 /* punt totally */
+# endif /* no HAVE_SYS_PARAM_H */
+# endif /* no _SC_PAGESIZE */
+
+#endif /* no HAVE_GETPAGESIZE */
+
+int
+main ()
+{
+ char *data, *data2, *data3;
+ const char *cdata2;
+ int i, pagesize;
+ int fd, fd2;
+
+ pagesize = getpagesize ();
+
+ /* First, make a file with some known garbage in it. */
+ data = (char *) malloc (pagesize);
+ if (!data)
+ return 1;
+ for (i = 0; i < pagesize; ++i)
+ *(data + i) = rand ();
+ umask (0);
+ fd = creat ("conftest.mmap", 0600);
+ if (fd < 0)
+ return 2;
+ if (write (fd, data, pagesize) != pagesize)
+ return 3;
+ close (fd);
+
+ /* Next, check that the tail of a page is zero-filled. File must have
+ non-zero length, otherwise we risk SIGBUS for entire page. */
+ fd2 = open ("conftest.txt", O_RDWR | O_CREAT | O_TRUNC, 0600);
+ if (fd2 < 0)
+ return 4;
+ cdata2 = "";
+ if (write (fd2, cdata2, 1) != 1)
+ return 5;
+ data2 = (char *) mmap (0, pagesize, PROT_READ | PROT_WRITE, MAP_SHARED, fd2, 0L);
+ if (data2 == MAP_FAILED)
+ return 6;
+ for (i = 0; i < pagesize; ++i)
+ if (*(data2 + i))
+ return 7;
+ close (fd2);
+ if (munmap (data2, pagesize))
+ return 8;
+
+ /* Next, try to mmap the file at a fixed address which already has
+ something else allocated at it. If we can, also make sure that
+ we see the same garbage. */
+ fd = open ("conftest.mmap", O_RDWR);
+ if (fd < 0)
+ return 9;
+ if (data2 != mmap (data2, pagesize, PROT_READ | PROT_WRITE,
+ MAP_PRIVATE | MAP_FIXED, fd, 0L))
+ return 10;
+ for (i = 0; i < pagesize; ++i)
+ if (*(data + i) != *(data2 + i))
+ return 11;
+
+ /* Finally, make sure that changes to the mapped area do not
+ percolate back to the file as seen by read(). (This is a bug on
+ some variants of i386 svr4.0.) */
+ for (i = 0; i < pagesize; ++i)
+ *(data2 + i) = *(data2 + i) + 1;
+ data3 = (char *) malloc (pagesize);
+ if (!data3)
+ return 12;
+ if (read (fd, data3, pagesize) != pagesize)
+ return 13;
+ for (i = 0; i < pagesize; ++i)
+ if (*(data + i) != *(data3 + i))
+ return 14;
+ close (fd);
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+ ac_cv_func_mmap_fixed_mapped=yes
+else
+ ac_cv_func_mmap_fixed_mapped=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+ conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_mmap_fixed_mapped" >&5
+$as_echo "$ac_cv_func_mmap_fixed_mapped" >&6; }
+if test $ac_cv_func_mmap_fixed_mapped = yes; then
+
+$as_echo "#define HAVE_MMAP 1" >>confdefs.h
+
+fi
+rm -f conftest.mmap conftest.txt
+
+for ac_header in stdlib.h
+do :
+ ac_fn_c_check_header_mongrel "$LINENO" "stdlib.h" "ac_cv_header_stdlib_h" "$ac_includes_default"
+if test "x$ac_cv_header_stdlib_h" = xyes; then :
+ cat >>confdefs.h <<_ACEOF
+#define HAVE_STDLIB_H 1
+_ACEOF
+
+fi
+
+done
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU libc compatible realloc" >&5
+$as_echo_n "checking for GNU libc compatible realloc... " >&6; }
+if ${ac_cv_func_realloc_0_nonnull+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test "$cross_compiling" = yes; then :
+ ac_cv_func_realloc_0_nonnull=no
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#if defined STDC_HEADERS || defined HAVE_STDLIB_H
+# include <stdlib.h>
+#else
+char *realloc ();
+#endif
+
+int
+main ()
+{
+return ! realloc (0, 0);
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+ ac_cv_func_realloc_0_nonnull=yes
+else
+ ac_cv_func_realloc_0_nonnull=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+ conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_realloc_0_nonnull" >&5
+$as_echo "$ac_cv_func_realloc_0_nonnull" >&6; }
+if test $ac_cv_func_realloc_0_nonnull = yes; then :
+
+$as_echo "#define HAVE_REALLOC 1" >>confdefs.h
+
+else
+ $as_echo "#define HAVE_REALLOC 0" >>confdefs.h
+
+ case " $LIBOBJS " in
+ *" realloc.$ac_objext "* ) ;;
+ *) LIBOBJS="$LIBOBJS realloc.$ac_objext"
+ ;;
+esac
+
+
+$as_echo "#define realloc rpl_realloc" >>confdefs.h
+
+fi
+
+
+for ac_func in atexit clock_gettime getcwd getpagesize gettimeofday memmove memset munmap pow sqrt strcasecmp strchr strdup strndup strstr
+do :
+ as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
+if eval test \"x\$"$as_ac_var"\" = x"yes"; then :
+ cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+
+have_pthreads=no
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing pthread_create" >&5
+$as_echo_n "checking for library containing pthread_create... " >&6; }
+if ${ac_cv_search_pthread_create+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_func_search_save_LIBS=$LIBS
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char pthread_create ();
+int
+main ()
+{
+return pthread_create ();
+ ;
+ return 0;
+}
+_ACEOF
+for ac_lib in '' pthread; do
+ if test -z "$ac_lib"; then
+ ac_res="none required"
+ else
+ ac_res=-l$ac_lib
+ LIBS="-l$ac_lib $ac_func_search_save_LIBS"
+ fi
+ if ac_fn_c_try_link "$LINENO"; then :
+ ac_cv_search_pthread_create=$ac_res
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext
+ if ${ac_cv_search_pthread_create+:} false; then :
+ break
+fi
+done
+if ${ac_cv_search_pthread_create+:} false; then :
+
+else
+ ac_cv_search_pthread_create=no
+fi
+rm conftest.$ac_ext
+LIBS=$ac_func_search_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_pthread_create" >&5
+$as_echo "$ac_cv_search_pthread_create" >&6; }
+ac_res=$ac_cv_search_pthread_create
+if test "$ac_res" != no; then :
+ test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
+ have_pthreads=yes
+fi
+
+
+if test "x${have_pthreads}" = xyes; then
+ for ac_header in pthread.h
+do :
+ ac_fn_c_check_header_mongrel "$LINENO" "pthread.h" "ac_cv_header_pthread_h" "$ac_includes_default"
+if test "x$ac_cv_header_pthread_h" = xyes; then :
+ cat >>confdefs.h <<_ACEOF
+#define HAVE_PTHREAD_H 1
+_ACEOF
+
+else
+ have_pthreads=no
+fi
+
+done
+
+fi
+
+
+have_generic=yes
+have_avx=no
+have_avx_pthreads=no
+have_avx_mpi=no
+have_sse3=no
+have_sse3_pthreads=no
+have_sse3_mpi=no
+
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for x86 cpuid output" >&5
+$as_echo_n "checking for x86 cpuid output... " >&6; }
+if ${ax_cv_gcc_x86_cpuid_+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test "$cross_compiling" = yes; then :
+ ax_cv_gcc_x86_cpuid_=unknown
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <stdio.h>
+int
+main ()
+{
+
+ int op = , eax, ebx, ecx, edx;
+ FILE *f;
+ __asm__("cpuid"
+ : "=a" (eax), "=b" (ebx), "=c" (ecx), "=d" (edx)
+ : "a" (op));
+ f = fopen("conftest_cpuid", "w"); if (!f) return 1;
+ fprintf(f, "%x:%x:%x:%x\n", eax, ebx, ecx, edx);
+ fclose(f);
+ return 0;
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+ ax_cv_gcc_x86_cpuid_=`cat conftest_cpuid`; rm -f conftest_cpuid
+else
+ ax_cv_gcc_x86_cpuid_=unknown; rm -f conftest_cpuid
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+ conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_gcc_x86_cpuid_" >&5
+$as_echo "$ax_cv_gcc_x86_cpuid_" >&6; }
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+
+
+
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for x86 cpuid 0x00000001 output" >&5
+$as_echo_n "checking for x86 cpuid 0x00000001 output... " >&6; }
+if ${ax_cv_gcc_x86_cpuid_0x00000001+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test "$cross_compiling" = yes; then :
+ ax_cv_gcc_x86_cpuid_0x00000001=unknown
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <stdio.h>
+int
+main ()
+{
+
+ int op = 0x00000001, eax, ebx, ecx, edx;
+ FILE *f;
+ __asm__("cpuid"
+ : "=a" (eax), "=b" (ebx), "=c" (ecx), "=d" (edx)
+ : "a" (op));
+ f = fopen("conftest_cpuid", "w"); if (!f) return 1;
+ fprintf(f, "%x:%x:%x:%x\n", eax, ebx, ecx, edx);
+ fclose(f);
+ return 0;
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+ ax_cv_gcc_x86_cpuid_0x00000001=`cat conftest_cpuid`; rm -f conftest_cpuid
+else
+ ax_cv_gcc_x86_cpuid_0x00000001=unknown; rm -f conftest_cpuid
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+ conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_gcc_x86_cpuid_0x00000001" >&5
+$as_echo "$ax_cv_gcc_x86_cpuid_0x00000001" >&6; }
+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
+
+
+ ecx=`echo $ax_cv_gcc_x86_cpuid_0x00000001 | cut -d ":" -f 3`
+ edx=`echo $ax_cv_gcc_x86_cpuid_0x00000001 | cut -d ":" -f 4`
+
+ for ac_header in mmintrin.h xmmintrin.h emmintrin.h pmmintrin.h tmmintrin.h smmintrin.h immintrin.h
+do :
+ as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default"
+if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
+ cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether mmx is supported" >&5
+$as_echo_n "checking whether mmx is supported... " >&6; }
+if ${ax_cv_have_mmx_ext+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+
+ ax_cv_have_mmx_ext=no
+ if test "$((0x$edx>>23&0x01))" = 1; then
+ ax_cv_have_mmx_ext=yes
+ fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_have_mmx_ext" >&5
+$as_echo "$ax_cv_have_mmx_ext" >&6; }
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether sse is supported" >&5
+$as_echo_n "checking whether sse is supported... " >&6; }
+if ${ax_cv_have_sse_ext+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+
+ ax_cv_have_sse_ext=no
+ if test "$((0x$edx>>25&0x01))" = 1; then
+ ax_cv_have_sse_ext=yes
+ fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_have_sse_ext" >&5
+$as_echo "$ax_cv_have_sse_ext" >&6; }
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether sse2 is supported" >&5
+$as_echo_n "checking whether sse2 is supported... " >&6; }
+if ${ax_cv_have_sse2_ext+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+
+ ax_cv_have_sse2_ext=no
+ if test "$((0x$edx>>26&0x01))" = 1; then
+ ax_cv_have_sse2_ext=yes
+ fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_have_sse2_ext" >&5
+$as_echo "$ax_cv_have_sse2_ext" >&6; }
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether sse3 is supported" >&5
+$as_echo_n "checking whether sse3 is supported... " >&6; }
+if ${ax_cv_have_sse3_ext+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+
+ ax_cv_have_sse3_ext=no
+ if test "$((0x$ecx&0x01))" = 1; then
+ ax_cv_have_sse3_ext=yes
+ fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_have_sse3_ext" >&5
+$as_echo "$ax_cv_have_sse3_ext" >&6; }
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ssse3 is supported" >&5
+$as_echo_n "checking whether ssse3 is supported... " >&6; }
+if ${ax_cv_have_ssse3_ext+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+
+ ax_cv_have_ssse3_ext=no
+ if test "$((0x$ecx>>9&0x01))" = 1; then
+ ax_cv_have_ssse3_ext=yes
+ fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_have_ssse3_ext" >&5
+$as_echo "$ax_cv_have_ssse3_ext" >&6; }
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether sse4.1 is supported" >&5
+$as_echo_n "checking whether sse4.1 is supported... " >&6; }
+if ${ax_cv_have_sse41_ext+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+
+ ax_cv_have_sse41_ext=no
+ if test "$((0x$ecx>>19&0x01))" = 1; then
+ ax_cv_have_sse41_ext=yes
+ fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_have_sse41_ext" >&5
+$as_echo "$ax_cv_have_sse41_ext" >&6; }
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether sse4.2 is supported" >&5
+$as_echo_n "checking whether sse4.2 is supported... " >&6; }
+if ${ax_cv_have_sse42_ext+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+
+ ax_cv_have_sse42_ext=no
+ if test "$((0x$ecx>>20&0x01))" = 1; then
+ ax_cv_have_sse42_ext=yes
+ fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_have_sse42_ext" >&5
+$as_echo "$ax_cv_have_sse42_ext" >&6; }
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether avx is supported" >&5
+$as_echo_n "checking whether avx is supported... " >&6; }
+if ${ax_cv_have_avx_ext+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+
+ ax_cv_have_avx_ext=no
+ if test "$((0x$ecx>>28&0x01))" = 1; then
+ ax_cv_have_avx_ext=yes
+ fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_have_avx_ext" >&5
+$as_echo "$ax_cv_have_avx_ext" >&6; }
+
+ if test "$ax_cv_have_mmx_ext" = yes && test "$ac_cv_header_mmintrin_h" = yes ; then
+
+$as_echo "#define HAVE_MMX /**/" >>confdefs.h
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts -mmmx" >&5
+$as_echo_n "checking whether C compiler accepts -mmmx... " >&6; }
+if ${ax_cv_check_cflags___mmmx+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+
+ ax_check_save_flags=$CFLAGS
+ CFLAGS="$CFLAGS -mmmx"
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ ax_cv_check_cflags___mmmx=yes
+else
+ ax_cv_check_cflags___mmmx=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ CFLAGS=$ax_check_save_flags
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_check_cflags___mmmx" >&5
+$as_echo "$ax_cv_check_cflags___mmmx" >&6; }
+if test x"$ax_cv_check_cflags___mmmx" = xyes; then :
+ SIMD_FLAGS="$SIMD_FLAGS -mmmx"
+else
+ :
+fi
+
+ fi
+
+ if test "$ax_cv_have_sse_ext" = yes && test "$ac_cv_header_xmmintrin_h" = yes ; then
+
+$as_echo "#define HAVE_SSE /**/" >>confdefs.h
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts -msse" >&5
+$as_echo_n "checking whether C compiler accepts -msse... " >&6; }
+if ${ax_cv_check_cflags___msse+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+
+ ax_check_save_flags=$CFLAGS
+ CFLAGS="$CFLAGS -msse"
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ ax_cv_check_cflags___msse=yes
+else
+ ax_cv_check_cflags___msse=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ CFLAGS=$ax_check_save_flags
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_check_cflags___msse" >&5
+$as_echo "$ax_cv_check_cflags___msse" >&6; }
+if test x"$ax_cv_check_cflags___msse" = xyes; then :
+ SIMD_FLAGS="$SIMD_FLAGS -msse"
+else
+ :
+fi
+
+ fi
+
+ if test "$ax_cv_have_sse2_ext" = yes && test "$ac_cv_header_emmintrin_h" = yes ; then
+
+$as_echo "#define HAVE_SSE2 /**/" >>confdefs.h
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts -msse2" >&5
+$as_echo_n "checking whether C compiler accepts -msse2... " >&6; }
+if ${ax_cv_check_cflags___msse2+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+
+ ax_check_save_flags=$CFLAGS
+ CFLAGS="$CFLAGS -msse2"
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ ax_cv_check_cflags___msse2=yes
+else
+ ax_cv_check_cflags___msse2=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ CFLAGS=$ax_check_save_flags
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_check_cflags___msse2" >&5
+$as_echo "$ax_cv_check_cflags___msse2" >&6; }
+if test x"$ax_cv_check_cflags___msse2" = xyes; then :
+ SIMD_FLAGS="$SIMD_FLAGS -msse2"
+else
+ :
+fi
+
+ fi
+
+ if test "$ax_cv_have_sse3_ext" = yes && test "$ac_cv_header_pmmintrin_h" = yes ; then
+
+$as_echo "#define HAVE_SSE3 /**/" >>confdefs.h
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts -msse3" >&5
+$as_echo_n "checking whether C compiler accepts -msse3... " >&6; }
+if ${ax_cv_check_cflags___msse3+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+
+ ax_check_save_flags=$CFLAGS
+ CFLAGS="$CFLAGS -msse3"
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ ax_cv_check_cflags___msse3=yes
+else
+ ax_cv_check_cflags___msse3=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ CFLAGS=$ax_check_save_flags
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_check_cflags___msse3" >&5
+$as_echo "$ax_cv_check_cflags___msse3" >&6; }
+if test x"$ax_cv_check_cflags___msse3" = xyes; then :
+ SIMD_FLAGS="$SIMD_FLAGS -msse3"
+else
+ :
+fi
+
+ fi
+
+ if test "$ax_cv_have_ssse3_ext" = yes && test "$ac_cv_header_tmmintrin_h" = yes ; then
+
+$as_echo "#define HAVE_SSSE3 /**/" >>confdefs.h
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts -mssse3" >&5
+$as_echo_n "checking whether C compiler accepts -mssse3... " >&6; }
+if ${ax_cv_check_cflags___mssse3+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+
+ ax_check_save_flags=$CFLAGS
+ CFLAGS="$CFLAGS -mssse3"
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ ax_cv_check_cflags___mssse3=yes
+else
+ ax_cv_check_cflags___mssse3=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ CFLAGS=$ax_check_save_flags
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_check_cflags___mssse3" >&5
+$as_echo "$ax_cv_check_cflags___mssse3" >&6; }
+if test x"$ax_cv_check_cflags___mssse3" = xyes; then :
+ SIMD_FLAGS="$SIMD_FLAGS -mssse3"
+else
+ :
+fi
+
+ fi
+
+ if test "$ax_cv_have_sse41_ext" = yes && test "$ac_cv_header_smmintrin_h" = yes ; then
+
+$as_echo "#define HAVE_SSE41 /**/" >>confdefs.h
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts -msse4.1" >&5
+$as_echo_n "checking whether C compiler accepts -msse4.1... " >&6; }
+if ${ax_cv_check_cflags___msse4_1+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+
+ ax_check_save_flags=$CFLAGS
+ CFLAGS="$CFLAGS -msse4.1"
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ ax_cv_check_cflags___msse4_1=yes
+else
+ ax_cv_check_cflags___msse4_1=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ CFLAGS=$ax_check_save_flags
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_check_cflags___msse4_1" >&5
+$as_echo "$ax_cv_check_cflags___msse4_1" >&6; }
+if test x"$ax_cv_check_cflags___msse4_1" = xyes; then :
+ SIMD_FLAGS="$SIMD_FLAGS -msse4.1"
+else
+ :
+fi
+
+ fi
+
+ if test "$ax_cv_have_sse42_ext" = yes && test "$ac_cv_header_smmintrin_h" = yes ; then
+
+$as_echo "#define HAVE_SSE42 1" >>confdefs.h
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts -msse4.2" >&5
+$as_echo_n "checking whether C compiler accepts -msse4.2... " >&6; }
+if ${ax_cv_check_cflags___msse4_2+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+
+ ax_check_save_flags=$CFLAGS
+ CFLAGS="$CFLAGS -msse4.2"
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ ax_cv_check_cflags___msse4_2=yes
+else
+ ax_cv_check_cflags___msse4_2=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ CFLAGS=$ax_check_save_flags
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_check_cflags___msse4_2" >&5
+$as_echo "$ax_cv_check_cflags___msse4_2" >&6; }
+if test x"$ax_cv_check_cflags___msse4_2" = xyes; then :
+ SIMD_FLAGS="$SIMD_FLAGS -msse4.2"
+else
+ :
+fi
+
+ fi
+
+ if test "$ax_cv_have_avx_ext" = yes && test "$ac_cv_header_immintrin_h" = yes ; then
+
+$as_echo "#define HAVE_AVX /**/" >>confdefs.h
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts -mavx" >&5
+$as_echo_n "checking whether C compiler accepts -mavx... " >&6; }
+if ${ax_cv_check_cflags___mavx+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+
+ ax_check_save_flags=$CFLAGS
+ CFLAGS="$CFLAGS -mavx"
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ ax_cv_check_cflags___mavx=yes
+else
+ ax_cv_check_cflags___mavx=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ CFLAGS=$ax_check_save_flags
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_check_cflags___mavx" >&5
+$as_echo "$ax_cv_check_cflags___mavx" >&6; }
+if test x"$ax_cv_check_cflags___mavx" = xyes; then :
+ SIMD_FLAGS="$SIMD_FLAGS -mavx"
+else
+ :
+fi
+
+ fi
+
+
+
+
+if test "x${ax_cv_have_avx_ext}" = "xyes"; then
+ have_avx=yes
+ if test "x${have_pthreads}"="xyes"; then
+ have_avx_pthreads=yes
+ fi
+fi
+
+if test "x${ax_cv_have_sse3_ext}" = "xyes"; then
+ have_sse3=yes
+ if test "x${have_pthreads}"="xyes"; then
+ have_sse3_pthreads=yes
+ fi
+fi
+
+# Check whether --enable-generic was given.
+if test "${enable_generic+set}" = set; then :
+ enableval=$enable_generic; have_generic=yes
+fi
+
+# Check whether --enable-generic was given.
+if test "${enable_generic+set}" = set; then :
+ enableval=$enable_generic; have_generic=no
+fi
+
+# Check whether --enable-avx was given.
+if test "${enable_avx+set}" = set; then :
+ enableval=$enable_avx; have_avx=yes
+fi
+
+# Check whether --enable-avx was given.
+if test "${enable_avx+set}" = set; then :
+ enableval=$enable_avx; have_avx=no
+fi
+
+# Check whether --enable-avx-pthreads was given.
+if test "${enable_avx_pthreads+set}" = set; then :
+ enableval=$enable_avx_pthreads; have_avx_pthreads=yes
+fi
+
+# Check whether --enable-avx-pthreads was given.
+if test "${enable_avx_pthreads+set}" = set; then :
+ enableval=$enable_avx_pthreads; have_avx_pthreads=no
+fi
+
+# Check whether --enable-avx-mpi was given.
+if test "${enable_avx_mpi+set}" = set; then :
+ enableval=$enable_avx_mpi; have_avx_mpi=yes
+fi
+
+# Check whether --enable-avx-mpi was given.
+if test "${enable_avx_mpi+set}" = set; then :
+ enableval=$enable_avx_mpi; have_avx_mpi=no
+fi
+
+# Check whether --enable-sse3 was given.
+if test "${enable_sse3+set}" = set; then :
+ enableval=$enable_sse3; have_sse3=yes
+fi
+
+# Check whether --enable-sse3 was given.
+if test "${enable_sse3+set}" = set; then :
+ enableval=$enable_sse3; have_sse3=no
+fi
+
+# Check whether --enable-sse3-pthreads was given.
+if test "${enable_sse3_pthreads+set}" = set; then :
+ enableval=$enable_sse3_pthreads; have_sse3_pthreads=yes
+fi
+
+# Check whether --enable-sse3-pthreads was given.
+if test "${enable_sse3_pthreads+set}" = set; then :
+ enableval=$enable_sse3_pthreads; have_sse3_pthreads=no
+fi
+
+# Check whether --enable-sse3-mpi was given.
+if test "${enable_sse3_mpi+set}" = set; then :
+ enableval=$enable_sse3_mpi; have_sse3_mpi=yes
+fi
+
+# Check whether --enable-sse3-mpi was given.
+if test "${enable_sse3_mpi+set}" = set; then :
+ enableval=$enable_sse3_mpi; have_sse3_mpi=no
+fi
+
+
+
+
+
+
+
+ for ac_prog in mpicc hcc mpxlc_r mpxlc mpcc cmpicc
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_MPICC+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$MPICC"; then
+ ac_cv_prog_MPICC="$MPICC" # 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_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_MPICC="$ac_prog"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+MPICC=$ac_cv_prog_MPICC
+if test -n "$MPICC"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MPICC" >&5
+$as_echo "$MPICC" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$MPICC" && break
+done
+test -n "$MPICC" || MPICC="$CC"
+
+ ax_mpi_save_CC="$CC"
+ CC="$MPICC"
+
+
+
+if test x = x"$MPILIBS"; then
+ ac_fn_c_check_func "$LINENO" "MPI_Init" "ac_cv_func_MPI_Init"
+if test "x$ac_cv_func_MPI_Init" = xyes; then :
+ MPILIBS=" "
+fi
+
+fi
+
+if test x = x"$MPILIBS"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for MPI_Init in -lmpi" >&5
+$as_echo_n "checking for MPI_Init in -lmpi... " >&6; }
+if ${ac_cv_lib_mpi_MPI_Init+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-lmpi $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char MPI_Init ();
+int
+main ()
+{
+return MPI_Init ();
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ ac_cv_lib_mpi_MPI_Init=yes
+else
+ ac_cv_lib_mpi_MPI_Init=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_mpi_MPI_Init" >&5
+$as_echo "$ac_cv_lib_mpi_MPI_Init" >&6; }
+if test "x$ac_cv_lib_mpi_MPI_Init" = xyes; then :
+ MPILIBS="-lmpi"
+fi
+
+fi
+if test x = x"$MPILIBS"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for MPI_Init in -lmpich" >&5
+$as_echo_n "checking for MPI_Init in -lmpich... " >&6; }
+if ${ac_cv_lib_mpich_MPI_Init+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-lmpich $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char MPI_Init ();
+int
+main ()
+{
+return MPI_Init ();
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ ac_cv_lib_mpich_MPI_Init=yes
+else
+ ac_cv_lib_mpich_MPI_Init=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_mpich_MPI_Init" >&5
+$as_echo "$ac_cv_lib_mpich_MPI_Init" >&6; }
+if test "x$ac_cv_lib_mpich_MPI_Init" = xyes; then :
+ MPILIBS="-lmpich"
+fi
+
+fi
+
+if test x != x"$MPILIBS"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for mpi.h" >&5
+$as_echo_n "checking for mpi.h... " >&6; }
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <mpi.h>
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+else
+ MPILIBS=""
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+
+CC="$ax_mpi_save_CC"
+
+
+
+# Finally, execute ACTION-IF-FOUND/ACTION-IF-NOT-FOUND:
+if test x = x"$MPILIBS"; then
+ have_mpi=no
+ :
+else
+ have_mpi=yes
+ :
+fi
+
+
+if test "`cd $srcdir && pwd`" != "`pwd`"; then
+ # Use -I$(srcdir) only when $(srcdir) != ., so that make's output
+ # is not polluted with repeated "-I."
+ am__isrc=' -I$(srcdir)'
+ # test to see if srcdir already configured
+ if test -f $srcdir/config.status; then
+ as_fn_error $? "source directory already configured; run \"make distclean\" there first" "$LINENO" 5
+ fi
+fi
+
+# test whether we have cygpath
+if test -z "$CYGPATH_W"; then
+ if (cygpath --version) >/dev/null 2>/dev/null; then
+ CYGPATH_W='cygpath -w'
+ else
+ CYGPATH_W=echo
+ fi
+fi
+
+
+# Define the identity of the package.
+ PACKAGE='libpll'
+ VERSION='1.0.11'
+
+
+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"}
+
+# For better backward compatibility. To be removed once Automake 1.9.x
+# dies out for good. For more background, see:
+# <http://lists.gnu.org/archive/html/automake/2012-07/msg00001.html>
+# <http://lists.gnu.org/archive/html/automake/2012-07/msg00014.html>
+mkdir_p='$(MKDIR_P)'
+
+# We need awk for the "check" target. The system "awk" is bad on
+# some platforms.
+# Always define AMTAR for backward compatibility. Yes, it's still used
+# in the wild :-( We should find a proper way to deprecate it ...
+AMTAR='$${TAR-tar}'
+
+
+# We'll loop over all known methods to create a tar archive until one works.
+_am_tools='gnutar pax cpio none'
+
+am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'
+
+
+
+
+
+depcc="$CC" am_compiler_list=
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5
+$as_echo_n "checking dependency style of $depcc... " >&6; }
+if ${am_cv_CC_dependencies_compiler_type+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
+ # We make a subdir and do the tests there. Otherwise we can end up
+ # making bogus files that we don't know about and never remove. For
+ # instance it was reported that on HP-UX the gcc test will end up
+ # making a dummy file named 'D' -- because '-MD' means "put the output
+ # in D".
+ rm -rf conftest.dir
+ mkdir conftest.dir
+ # Copy depcomp to subdir because otherwise we won't find it if we're
+ # using a relative directory.
+ cp "$am_depcomp" conftest.dir
+ cd conftest.dir
+ # We will build objects and dependencies in a subdirectory because
+ # it helps to detect inapplicable dependency modes. For instance
+ # both Tru64's cc and ICC support -MD to output dependencies as a
+ # side effect of compilation, but ICC will put the dependencies in
+ # the current directory while Tru64 will put them in the object
+ # directory.
+ mkdir sub
+
+ am_cv_CC_dependencies_compiler_type=none
+ if test "$am_compiler_list" = ""; then
+ am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp`
+ fi
+ am__universal=false
+ case " $depcc " in #(
+ *\ -arch\ *\ -arch\ *) am__universal=true ;;
+ esac
+
+ for depmode in $am_compiler_list; do
+ # Setup a source with many dependencies, because some compilers
+ # like to wrap large dependency lists on column 80 (with \), and
+ # we should not choose a depcomp mode which is confused by this.
+ #
+ # We need to recreate these files for each test, as the compiler may
+ # overwrite some of them when testing with obscure command lines.
+ # This happens at least with the AIX C compiler.
+ : > sub/conftest.c
+ for i in 1 2 3 4 5 6; do
+ echo '#include "conftst'$i'.h"' >> sub/conftest.c
+ # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with
+ # Solaris 10 /bin/sh.
+ echo '/* dummy */' > sub/conftst$i.h
+ done
+ echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
+
+ # We check with '-c' and '-o' for the sake of the "dashmstdout"
+ # mode. It turns out that the SunPro C++ compiler does not properly
+ # handle '-M -o', and we need to detect this. Also, some Intel
+ # versions had trouble with output in subdirs.
+ am__obj=sub/conftest.${OBJEXT-o}
+ am__minus_obj="-o $am__obj"
+ case $depmode in
+ gcc)
+ # This depmode causes a compiler race in universal mode.
+ test "$am__universal" = false || continue
+ ;;
+ nosideeffect)
+ # After this tag, mechanisms are not by side-effect, so they'll
+ # only be used when explicitly requested.
+ if test "x$enable_dependency_tracking" = xyes; then
+ continue
+ else
+ break
+ fi
+ ;;
+ msvc7 | msvc7msys | msvisualcpp | msvcmsys)
+ # This compiler won't grok '-c -o', but also, the minuso test has
+ # not run yet. These depmodes are late enough in the game, and
+ # so weak that their functioning should not be impacted.
+ am__obj=conftest.${OBJEXT-o}
+ am__minus_obj=
+ ;;
+ none) break ;;
+ esac
+ if depmode=$depmode \
+ source=sub/conftest.c object=$am__obj \
+ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
+ $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \
+ >/dev/null 2>conftest.err &&
+ grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 &&
+ grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
+ grep $am__obj sub/conftest.Po > /dev/null 2>&1 &&
+ ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
+ # icc doesn't choke on unknown options, it will just issue warnings
+ # or remarks (even with -Werror). So we grep stderr for any message
+ # that says an option was ignored or not supported.
+ # When given -MP, icc 7.0 and 7.1 complain thusly:
+ # icc: Command line warning: ignoring option '-M'; no argument required
+ # The diagnosis changed in icc 8.0:
+ # icc: Command line remark: option '-MP' not supported
+ if (grep 'ignoring option' conftest.err ||
+ grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
+ am_cv_CC_dependencies_compiler_type=$depmode
+ break
+ fi
+ fi
+ done
+
+ cd ..
+ rm -rf conftest.dir
+else
+ am_cv_CC_dependencies_compiler_type=none
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5
+$as_echo "$am_cv_CC_dependencies_compiler_type" >&6; }
+CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type
+
+ if
+ test "x$enable_dependency_tracking" != xno \
+ && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then
+ am__fastdepCC_TRUE=
+ am__fastdepCC_FALSE='#'
+else
+ am__fastdepCC_TRUE='#'
+ am__fastdepCC_FALSE=
+fi
+
+
+depcc="$CXX" am_compiler_list=
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5
+$as_echo_n "checking dependency style of $depcc... " >&6; }
+if ${am_cv_CXX_dependencies_compiler_type+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
+ # We make a subdir and do the tests there. Otherwise we can end up
+ # making bogus files that we don't know about and never remove. For
+ # instance it was reported that on HP-UX the gcc test will end up
+ # making a dummy file named 'D' -- because '-MD' means "put the output
+ # in D".
+ rm -rf conftest.dir
+ mkdir conftest.dir
+ # Copy depcomp to subdir because otherwise we won't find it if we're
+ # using a relative directory.
+ cp "$am_depcomp" conftest.dir
+ cd conftest.dir
+ # We will build objects and dependencies in a subdirectory because
+ # it helps to detect inapplicable dependency modes. For instance
+ # both Tru64's cc and ICC support -MD to output dependencies as a
+ # side effect of compilation, but ICC will put the dependencies in
+ # the current directory while Tru64 will put them in the object
+ # directory.
+ mkdir sub
+
+ am_cv_CXX_dependencies_compiler_type=none
+ if test "$am_compiler_list" = ""; then
+ am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp`
+ fi
+ am__universal=false
+ case " $depcc " in #(
+ *\ -arch\ *\ -arch\ *) am__universal=true ;;
+ esac
+
+ for depmode in $am_compiler_list; do
+ # Setup a source with many dependencies, because some compilers
+ # like to wrap large dependency lists on column 80 (with \), and
+ # we should not choose a depcomp mode which is confused by this.
+ #
+ # We need to recreate these files for each test, as the compiler may
+ # overwrite some of them when testing with obscure command lines.
+ # This happens at least with the AIX C compiler.
+ : > sub/conftest.c
+ for i in 1 2 3 4 5 6; do
+ echo '#include "conftst'$i'.h"' >> sub/conftest.c
+ # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with
+ # Solaris 10 /bin/sh.
+ echo '/* dummy */' > sub/conftst$i.h
+ done
+ echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
+
+ # We check with '-c' and '-o' for the sake of the "dashmstdout"
+ # mode. It turns out that the SunPro C++ compiler does not properly
+ # handle '-M -o', and we need to detect this. Also, some Intel
+ # versions had trouble with output in subdirs.
+ am__obj=sub/conftest.${OBJEXT-o}
+ am__minus_obj="-o $am__obj"
+ case $depmode in
+ gcc)
+ # This depmode causes a compiler race in universal mode.
+ test "$am__universal" = false || continue
+ ;;
+ nosideeffect)
+ # After this tag, mechanisms are not by side-effect, so they'll
+ # only be used when explicitly requested.
+ if test "x$enable_dependency_tracking" = xyes; then
+ continue
+ else
+ break
+ fi
+ ;;
+ msvc7 | msvc7msys | msvisualcpp | msvcmsys)
+ # This compiler won't grok '-c -o', but also, the minuso test has
+ # not run yet. These depmodes are late enough in the game, and
+ # so weak that their functioning should not be impacted.
+ am__obj=conftest.${OBJEXT-o}
+ am__minus_obj=
+ ;;
+ none) break ;;
+ esac
+ if depmode=$depmode \
+ source=sub/conftest.c object=$am__obj \
+ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
+ $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \
+ >/dev/null 2>conftest.err &&
+ grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 &&
+ grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
+ grep $am__obj sub/conftest.Po > /dev/null 2>&1 &&
+ ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
+ # icc doesn't choke on unknown options, it will just issue warnings
+ # or remarks (even with -Werror). So we grep stderr for any message
+ # that says an option was ignored or not supported.
+ # When given -MP, icc 7.0 and 7.1 complain thusly:
+ # icc: Command line warning: ignoring option '-M'; no argument required
+ # The diagnosis changed in icc 8.0:
+ # icc: Command line remark: option '-MP' not supported
+ if (grep 'ignoring option' conftest.err ||
+ grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
+ am_cv_CXX_dependencies_compiler_type=$depmode
+ break
+ fi
+ fi
+ done
+
+ cd ..
+ rm -rf conftest.dir
+else
+ am_cv_CXX_dependencies_compiler_type=none
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CXX_dependencies_compiler_type" >&5
+$as_echo "$am_cv_CXX_dependencies_compiler_type" >&6; }
+CXXDEPMODE=depmode=$am_cv_CXX_dependencies_compiler_type
+
+ if
+ test "x$enable_dependency_tracking" != xno \
+ && test "$am_cv_CXX_dependencies_compiler_type" = gcc3; then
+ am__fastdepCXX_TRUE=
+ am__fastdepCXX_FALSE='#'
+else
+ am__fastdepCXX_TRUE='#'
+ am__fastdepCXX_FALSE=
+fi
+
+
+
+# POSIX will say in a future version that running "rm -f" with no argument
+# is OK; and we want to be able to make that assumption in our Makefile
+# recipes. So use an aggressive probe to check that the usage we want is
+# actually supported "in the wild" to an acceptable degree.
+# See automake bug#10828.
+# To make any issue more visible, cause the running configure to be aborted
+# by default if the 'rm' program in use doesn't match our expectations; the
+# user can still override this though.
+if rm -f && rm -fr && rm -rf; then : OK; else
+ cat >&2 <<'END'
+Oops!
+
+Your 'rm' program seems unable to run without file operands specified
+on the command line, even when the '-f' option is present. This is contrary
+to the behaviour of most rm programs out there, and not conforming with
+the upcoming POSIX standard: <http://austingroupbugs.net/view.php?id=542>
+
+Please tell bug-automake at gnu.org about your system, including the value
+of your $PATH and any error possibly output before this message. This
+can help us improve future automake versions.
+
+END
+ if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then
+ echo 'Configuration will proceed anyway, since you have set the' >&2
+ echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2
+ echo >&2
+ else
+ cat >&2 <<'END'
+Aborting the configuration process, to ensure you take notice of the issue.
+
+You can download and install GNU coreutils to get an 'rm' implementation
+that behaves properly: <http://www.gnu.org/software/coreutils/>.
+
+If you want to complete the configuration process using your problematic
+'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM
+to "yes", and re-run configure.
+
+END
+ as_fn_error $? "Your 'rm' program is bad, sorry." "$LINENO" 5
+ fi
+fi
+ if test "x${have_generic}" = "xyes"; then
+ BUILD_GENERIC_TRUE=
+ BUILD_GENERIC_FALSE='#'
+else
+ BUILD_GENERIC_TRUE='#'
+ BUILD_GENERIC_FALSE=
+fi
+
+ if test "x${have_avx}" = "xyes"; then
+ BUILD_AVX_TRUE=
+ BUILD_AVX_FALSE='#'
+else
+ BUILD_AVX_TRUE='#'
+ BUILD_AVX_FALSE=
+fi
+
+ if test "x${have_avx_pthreads}" = "xyes"; then
+ BUILD_AVX_PTHREADS_TRUE=
+ BUILD_AVX_PTHREADS_FALSE='#'
+else
+ BUILD_AVX_PTHREADS_TRUE='#'
+ BUILD_AVX_PTHREADS_FALSE=
+fi
+
+ if test "x${have_sse3}" = "xyes"; then
+ BUILD_SSE3_TRUE=
+ BUILD_SSE3_FALSE='#'
+else
+ BUILD_SSE3_TRUE='#'
+ BUILD_SSE3_FALSE=
+fi
+
+ if test "x${have_sse3_pthreads}" = "xyes"; then
+ BUILD_SSE3_PTHREADS_TRUE=
+ BUILD_SSE3_PTHREADS_FALSE='#'
+else
+ BUILD_SSE3_PTHREADS_TRUE='#'
+ BUILD_SSE3_PTHREADS_FALSE=
+fi
+
+ if test "x${have_mpi}" = "xyes"; then
+ BUILD_MPI_TRUE=
+ BUILD_MPI_FALSE='#'
+else
+ BUILD_MPI_TRUE='#'
+ BUILD_MPI_FALSE=
+fi
+
+
+
+
+
+
+
+
+
+
+ac_config_files="$ac_config_files Makefile MPI/Makefile src/Makefile man/Makefile examples/Makefile examples/PLL/Makefile"
+
+cat >confcache <<\_ACEOF
+# This file is a shell script that caches the results of configure
+# tests run on this system so they can be shared between configure
+# scripts and configure runs, see configure's option --config-cache.
+# It is not useful on other systems. If it contains results you don't
+# want to keep, you may remove or edit it.
+#
+# config.status only pays attention to the cache file if you give it
+# the --recheck option to rerun configure.
+#
+# `ac_cv_env_foo' variables (set or unset) will be overridden when
+# loading this file, other *unset* `ac_cv_foo' will be assigned the
+# following values.
+
+_ACEOF
+
+# The following way of writing the cache mishandles newlines in values,
+# but we know of no workaround that is simple, portable, and efficient.
+# So, we kill variables containing newlines.
+# Ultrix sh set writes to stderr and can't be redirected directly,
+# and sets the high bit in the cache file unless we assign to the vars.
+(
+ for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do
+ eval ac_val=\$$ac_var
+ case $ac_val in #(
+ *${as_nl}*)
+ case $ac_var in #(
+ *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5
+$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
+ esac
+ case $ac_var in #(
+ _ | IFS | as_nl) ;; #(
+ BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #(
+ *) { eval $ac_var=; unset $ac_var;} ;;
+ esac ;;
+ esac
+ done
+
+ (set) 2>&1 |
+ case $as_nl`(ac_space=' '; set) 2>&1` in #(
+ *${as_nl}ac_space=\ *)
+ # `set' does not quote correctly, so add quotes: double-quote
+ # substitution turns \\\\ into \\, and sed turns \\ into \.
+ sed -n \
+ "s/'/'\\\\''/g;
+ s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p"
+ ;; #(
+ *)
+ # `set' quotes correctly as required by POSIX, so do not add quotes.
+ sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p"
+ ;;
+ esac |
+ sort
+) |
+ sed '
+ /^ac_cv_env_/b end
+ t clear
+ :clear
+ s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/
+ t end
+ s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/
+ :end' >>confcache
+if diff "$cache_file" confcache >/dev/null 2>&1; then :; else
+ if test -w "$cache_file"; then
+ if test "x$cache_file" != "x/dev/null"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5
+$as_echo "$as_me: updating cache $cache_file" >&6;}
+ if test ! -f "$cache_file" || test -h "$cache_file"; then
+ cat confcache >"$cache_file"
+ else
+ case $cache_file in #(
+ */* | ?:*)
+ mv -f confcache "$cache_file"$$ &&
+ mv -f "$cache_file"$$ "$cache_file" ;; #(
+ *)
+ mv -f confcache "$cache_file" ;;
+ esac
+ fi
+ fi
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5
+$as_echo "$as_me: not updating unwritable cache $cache_file" >&6;}
+ fi
+fi
+rm -f confcache
+
+test "x$prefix" = xNONE && prefix=$ac_default_prefix
+# Let make expand exec_prefix.
+test "x$exec_prefix" = xNONE && exec_prefix='${prefix}'
+
+DEFS=-DHAVE_CONFIG_H
+
+ac_libobjs=
+ac_ltlibobjs=
+U=
+for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue
+ # 1. Remove the extension, and $U if already installed.
+ ac_script='s/\$U\././;s/\.o$//;s/\.obj$//'
+ ac_i=`$as_echo "$ac_i" | sed "$ac_script"`
+ # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR
+ # will be set to the directory where LIBOBJS objects are built.
+ as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext"
+ as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo'
+done
+LIBOBJS=$ac_libobjs
+
+LTLIBOBJS=$ac_ltlibobjs
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking that generated files are newer than configure" >&5
+$as_echo_n "checking that generated files are newer than configure... " >&6; }
+ if test -n "$am_sleep_pid"; then
+ # Hide warnings about reused PIDs.
+ wait $am_sleep_pid 2>/dev/null
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: done" >&5
+$as_echo "done" >&6; }
+ if test -n "$EXEEXT"; then
+ am__EXEEXT_TRUE=
+ am__EXEEXT_FALSE='#'
+else
+ am__EXEEXT_TRUE='#'
+ am__EXEEXT_FALSE=
+fi
+
+if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then
+ as_fn_error $? "conditional \"AMDEP\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${am__fastdepCXX_TRUE}" && test -z "${am__fastdepCXX_FALSE}"; then
+ as_fn_error $? "conditional \"am__fastdepCXX\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then
+ as_fn_error $? "conditional \"am__fastdepCC\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then
+ as_fn_error $? "conditional \"am__fastdepCC\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${am__fastdepCXX_TRUE}" && test -z "${am__fastdepCXX_FALSE}"; then
+ as_fn_error $? "conditional \"am__fastdepCXX\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+ if test -n "$EXEEXT"; then
+ am__EXEEXT_TRUE=
+ am__EXEEXT_FALSE='#'
+else
+ am__EXEEXT_TRUE='#'
+ am__EXEEXT_FALSE=
+fi
+
+if test -z "${BUILD_GENERIC_TRUE}" && test -z "${BUILD_GENERIC_FALSE}"; then
+ as_fn_error $? "conditional \"BUILD_GENERIC\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${BUILD_AVX_TRUE}" && test -z "${BUILD_AVX_FALSE}"; then
+ as_fn_error $? "conditional \"BUILD_AVX\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${BUILD_AVX_PTHREADS_TRUE}" && test -z "${BUILD_AVX_PTHREADS_FALSE}"; then
+ as_fn_error $? "conditional \"BUILD_AVX_PTHREADS\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${BUILD_SSE3_TRUE}" && test -z "${BUILD_SSE3_FALSE}"; then
+ as_fn_error $? "conditional \"BUILD_SSE3\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${BUILD_SSE3_PTHREADS_TRUE}" && test -z "${BUILD_SSE3_PTHREADS_FALSE}"; then
+ as_fn_error $? "conditional \"BUILD_SSE3_PTHREADS\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${BUILD_MPI_TRUE}" && test -z "${BUILD_MPI_FALSE}"; then
+ as_fn_error $? "conditional \"BUILD_MPI\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+
+: "${CONFIG_STATUS=./config.status}"
+ac_write_fail=0
+ac_clean_files_save=$ac_clean_files
+ac_clean_files="$ac_clean_files $CONFIG_STATUS"
+{ $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5
+$as_echo "$as_me: creating $CONFIG_STATUS" >&6;}
+as_write_fail=0
+cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1
+#! $SHELL
+# Generated by $as_me.
+# Run this file to recreate the current configuration.
+# Compiler output produced by configure, useful for debugging
+# configure, is in config.log if it exists.
+
+debug=false
+ac_cs_recheck=false
+ac_cs_silent=false
+
+SHELL=\${CONFIG_SHELL-$SHELL}
+export SHELL
+_ASEOF
+cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1
+## -------------------- ##
+## M4sh Initialization. ##
+## -------------------- ##
+
+# Be more Bourne compatible
+DUALCASE=1; export DUALCASE # for MKS sh
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then :
+ emulate sh
+ NULLCMD=:
+ # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
+ # is contrary to our usage. Disable this feature.
+ alias -g '${1+"$@"}'='"$@"'
+ setopt NO_GLOB_SUBST
+else
+ case `(set -o) 2>/dev/null` in #(
+ *posix*) :
+ set -o posix ;; #(
+ *) :
+ ;;
+esac
+fi
+
+
+as_nl='
+'
+export as_nl
+# Printing a long string crashes Solaris 7 /usr/bin/printf.
+as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo
+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo
+# Prefer a ksh shell builtin over an external printf program on Solaris,
+# but without wasting forks for bash or zsh.
+if test -z "$BASH_VERSION$ZSH_VERSION" \
+ && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then
+ as_echo='print -r --'
+ as_echo_n='print -rn --'
+elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then
+ as_echo='printf %s\n'
+ as_echo_n='printf %s'
+else
+ if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then
+ as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"'
+ as_echo_n='/usr/ucb/echo -n'
+ else
+ as_echo_body='eval expr "X$1" : "X\\(.*\\)"'
+ as_echo_n_body='eval
+ arg=$1;
+ case $arg in #(
+ *"$as_nl"*)
+ expr "X$arg" : "X\\(.*\\)$as_nl";
+ arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;
+ esac;
+ expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl"
+ '
+ export as_echo_n_body
+ as_echo_n='sh -c $as_echo_n_body as_echo'
+ fi
+ export as_echo_body
+ as_echo='sh -c $as_echo_body as_echo'
+fi
+
+# The user is always right.
+if test "${PATH_SEPARATOR+set}" != set; then
+ PATH_SEPARATOR=:
+ (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && {
+ (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 ||
+ PATH_SEPARATOR=';'
+ }
+fi
+
+
+# IFS
+# We need space, tab and new line, in precisely that order. Quoting is
+# there to prevent editors from complaining about space-tab.
+# (If _AS_PATH_WALK were called with IFS unset, it would disable word
+# splitting by setting IFS to empty value.)
+IFS=" "" $as_nl"
+
+# Find who we are. Look in the path if we contain no directory separator.
+as_myself=
+case $0 in #((
+ *[\\/]* ) as_myself=$0 ;;
+ *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+# We did not find ourselves, most probably we were run as `sh COMMAND'
+# in which case we are not to be found in the path.
+if test "x$as_myself" = x; then
+ as_myself=$0
+fi
+if test ! -f "$as_myself"; then
+ $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
+ exit 1
+fi
+
+# Unset variables that we do not need and which cause bugs (e.g. in
+# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1"
+# suppresses any "Segmentation fault" message there. '((' could
+# trigger a bug in pdksh 5.2.14.
+for as_var in BASH_ENV ENV MAIL MAILPATH
+do eval test x\${$as_var+set} = xset \
+ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || :
+done
+PS1='$ '
+PS2='> '
+PS4='+ '
+
+# NLS nuisances.
+LC_ALL=C
+export LC_ALL
+LANGUAGE=C
+export LANGUAGE
+
+# CDPATH.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+
+
+# as_fn_error STATUS ERROR [LINENO LOG_FD]
+# ----------------------------------------
+# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are
+# provided, also output the error to LOG_FD, referencing LINENO. Then exit the
+# script with STATUS, using 1 if that was 0.
+as_fn_error ()
+{
+ as_status=$1; test $as_status -eq 0 && as_status=1
+ if test "$4"; then
+ as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+ $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4
+ fi
+ $as_echo "$as_me: error: $2" >&2
+ as_fn_exit $as_status
+} # as_fn_error
+
+
+# as_fn_set_status STATUS
+# -----------------------
+# Set $? to STATUS, without forking.
+as_fn_set_status ()
+{
+ return $1
+} # as_fn_set_status
+
+# as_fn_exit STATUS
+# -----------------
+# Exit the shell with STATUS, even in a "trap 0" or "set -e" context.
+as_fn_exit ()
+{
+ set +e
+ as_fn_set_status $1
+ exit $1
+} # as_fn_exit
+
+# as_fn_unset VAR
+# ---------------
+# Portably unset VAR.
+as_fn_unset ()
+{
+ { eval $1=; unset $1;}
+}
+as_unset=as_fn_unset
+# as_fn_append VAR VALUE
+# ----------------------
+# Append the text in VALUE to the end of the definition contained in VAR. Take
+# advantage of any shell optimizations that allow amortized linear growth over
+# repeated appends, instead of the typical quadratic growth present in naive
+# implementations.
+if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then :
+ eval 'as_fn_append ()
+ {
+ eval $1+=\$2
+ }'
+else
+ as_fn_append ()
+ {
+ eval $1=\$$1\$2
+ }
+fi # as_fn_append
+
+# as_fn_arith ARG...
+# ------------------
+# Perform arithmetic evaluation on the ARGs, and store the result in the
+# global $as_val. Take advantage of shells that can avoid forks. The arguments
+# must be portable across $(()) and expr.
+if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then :
+ eval 'as_fn_arith ()
+ {
+ as_val=$(( $* ))
+ }'
+else
+ as_fn_arith ()
+ {
+ as_val=`expr "$@" || test $? -eq 1`
+ }
+fi # as_fn_arith
+
+
+if expr a : '\(a\)' >/dev/null 2>&1 &&
+ test "X`expr 00001 : '.*\(...\)'`" = X001; then
+ as_expr=expr
+else
+ as_expr=false
+fi
+
+if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then
+ as_basename=basename
+else
+ as_basename=false
+fi
+
+if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
+ as_dirname=dirname
+else
+ as_dirname=false
+fi
+
+as_me=`$as_basename -- "$0" ||
+$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
+ X"$0" : 'X\(//\)$' \| \
+ X"$0" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X/"$0" |
+ sed '/^.*\/\([^/][^/]*\)\/*$/{
+ s//\1/
+ q
+ }
+ /^X\/\(\/\/\)$/{
+ s//\1/
+ q
+ }
+ /^X\/\(\/\).*/{
+ s//\1/
+ q
+ }
+ s/.*/./; q'`
+
+# 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
+
+ECHO_C= ECHO_N= ECHO_T=
+case `echo -n x` in #(((((
+-n*)
+ case `echo 'xy\c'` in
+ *c*) ECHO_T=' ';; # ECHO_T is single tab character.
+ xy) ECHO_C='\c';;
+ *) echo `echo ksh88 bug on AIX 6.1` > /dev/null
+ ECHO_T=' ';;
+ esac;;
+*)
+ ECHO_N='-n';;
+esac
+
+rm -f conf$$ conf$$.exe conf$$.file
+if test -d conf$$.dir; then
+ rm -f conf$$.dir/conf$$.file
+else
+ rm -f conf$$.dir
+ mkdir conf$$.dir 2>/dev/null
+fi
+if (echo >conf$$.file) 2>/dev/null; then
+ if ln -s conf$$.file conf$$ 2>/dev/null; then
+ as_ln_s='ln -s'
+ # ... but there are two gotchas:
+ # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
+ # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
+ # In both cases, we have to default to `cp -pR'.
+ ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
+ as_ln_s='cp -pR'
+ elif ln conf$$.file conf$$ 2>/dev/null; then
+ as_ln_s=ln
+ else
+ as_ln_s='cp -pR'
+ fi
+else
+ as_ln_s='cp -pR'
+fi
+rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
+rmdir conf$$.dir 2>/dev/null
+
+
+# as_fn_mkdir_p
+# -------------
+# Create "$as_dir" as a directory, including parents if necessary.
+as_fn_mkdir_p ()
+{
+
+ case $as_dir in #(
+ -*) as_dir=./$as_dir;;
+ esac
+ test -d "$as_dir" || eval $as_mkdir_p || {
+ as_dirs=
+ while :; do
+ case $as_dir in #(
+ *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
+ *) as_qdir=$as_dir;;
+ esac
+ as_dirs="'$as_qdir' $as_dirs"
+ as_dir=`$as_dirname -- "$as_dir" ||
+$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$as_dir" : 'X\(//\)[^/]' \| \
+ X"$as_dir" : 'X\(//\)$' \| \
+ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$as_dir" |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)[^/].*/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\).*/{
+ s//\1/
+ q
+ }
+ s/.*/./; q'`
+ test -d "$as_dir" && break
+ done
+ test -z "$as_dirs" || eval "mkdir $as_dirs"
+ } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir"
+
+
+} # as_fn_mkdir_p
+if mkdir -p . 2>/dev/null; then
+ as_mkdir_p='mkdir -p "$as_dir"'
+else
+ test -d ./-p && rmdir ./-p
+ as_mkdir_p=false
+fi
+
+
+# as_fn_executable_p FILE
+# -----------------------
+# Test if FILE is an executable regular file.
+as_fn_executable_p ()
+{
+ test -f "$1" && test -x "$1"
+} # as_fn_executable_p
+as_test_x='test -x'
+as_executable_p=as_fn_executable_p
+
+# Sed expression to map a string onto a valid CPP name.
+as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
+
+# Sed expression to map a string onto a valid variable name.
+as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
+
+
+exec 6>&1
+## ----------------------------------- ##
+## Main body of $CONFIG_STATUS script. ##
+## ----------------------------------- ##
+_ASEOF
+test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+# Save the log message, to keep $0 and so on meaningful, and to
+# report actual input values of CONFIG_FILES etc. instead of their
+# values after options handling.
+ac_log="
+This file was extended by libpll $as_me 1.0.11, which was
+generated by GNU Autoconf 2.69. Invocation command line was
+
+ CONFIG_FILES = $CONFIG_FILES
+ CONFIG_HEADERS = $CONFIG_HEADERS
+ CONFIG_LINKS = $CONFIG_LINKS
+ CONFIG_COMMANDS = $CONFIG_COMMANDS
+ $ $0 $@
+
+on `(hostname || uname -n) 2>/dev/null | sed 1q`
+"
+
+_ACEOF
+
+case $ac_config_files in *"
+"*) set x $ac_config_files; shift; ac_config_files=$*;;
+esac
+
+case $ac_config_headers in *"
+"*) set x $ac_config_headers; shift; ac_config_headers=$*;;
+esac
+
+
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+# Files that config.status was made for.
+config_files="$ac_config_files"
+config_headers="$ac_config_headers"
+config_commands="$ac_config_commands"
+
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+ac_cs_usage="\
+\`$as_me' instantiates files and other configuration actions
+from templates according to the current configuration. Unless the files
+and actions are specified as TAGs, all are instantiated by default.
+
+Usage: $0 [OPTION]... [TAG]...
+
+ -h, --help print this help, then exit
+ -V, --version print version number and configuration settings, then exit
+ --config print configuration, then exit
+ -q, --quiet, --silent
+ do not print progress messages
+ -d, --debug don't remove temporary files
+ --recheck update $as_me by reconfiguring in the same conditions
+ --file=FILE[:TEMPLATE]
+ instantiate the configuration file FILE
+ --header=FILE[:TEMPLATE]
+ instantiate the configuration header FILE
+
+Configuration files:
+$config_files
+
+Configuration headers:
+$config_headers
+
+Configuration commands:
+$config_commands
+
+Report bugs to <Tomas.Flouri at h-its.org>."
+
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
+ac_cs_version="\\
+libpll config.status 1.0.11
+configured by $0, generated by GNU Autoconf 2.69,
+ with options \\"\$ac_cs_config\\"
+
+Copyright (C) 2012 Free Software Foundation, Inc.
+This config.status script is free software; the Free Software Foundation
+gives unlimited permission to copy, distribute and modify it."
+
+ac_pwd='$ac_pwd'
+srcdir='$srcdir'
+INSTALL='$INSTALL'
+MKDIR_P='$MKDIR_P'
+AWK='$AWK'
+test -n "\$AWK" || AWK=awk
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+# The default lists apply if the user does not specify any file.
+ac_need_defaults=:
+while test $# != 0
+do
+ case $1 in
+ --*=?*)
+ ac_option=`expr "X$1" : 'X\([^=]*\)='`
+ ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'`
+ ac_shift=:
+ ;;
+ --*=)
+ ac_option=`expr "X$1" : 'X\([^=]*\)='`
+ ac_optarg=
+ ac_shift=:
+ ;;
+ *)
+ ac_option=$1
+ ac_optarg=$2
+ ac_shift=shift
+ ;;
+ esac
+
+ case $ac_option in
+ # Handling of the options.
+ -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)
+ ac_cs_recheck=: ;;
+ --version | --versio | --versi | --vers | --ver | --ve | --v | -V )
+ $as_echo "$ac_cs_version"; exit ;;
+ --config | --confi | --conf | --con | --co | --c )
+ $as_echo "$ac_cs_config"; exit ;;
+ --debug | --debu | --deb | --de | --d | -d )
+ debug=: ;;
+ --file | --fil | --fi | --f )
+ $ac_shift
+ case $ac_optarg in
+ *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;;
+ '') as_fn_error $? "missing file argument" ;;
+ esac
+ as_fn_append CONFIG_FILES " '$ac_optarg'"
+ ac_need_defaults=false;;
+ --header | --heade | --head | --hea )
+ $ac_shift
+ case $ac_optarg in
+ *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;;
+ esac
+ as_fn_append CONFIG_HEADERS " '$ac_optarg'"
+ ac_need_defaults=false;;
+ --he | --h)
+ # Conflict between --help and --header
+ as_fn_error $? "ambiguous option: \`$1'
+Try \`$0 --help' for more information.";;
+ --help | --hel | -h )
+ $as_echo "$ac_cs_usage"; exit ;;
+ -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+ | -silent | --silent | --silen | --sile | --sil | --si | --s)
+ ac_cs_silent=: ;;
+
+ # This is an error.
+ -*) as_fn_error $? "unrecognized option: \`$1'
+Try \`$0 --help' for more information." ;;
+
+ *) as_fn_append ac_config_targets " $1"
+ ac_need_defaults=false ;;
+
+ esac
+ shift
+done
+
+ac_configure_extra_args=
+
+if $ac_cs_silent; then
+ exec 6>/dev/null
+ ac_configure_extra_args="$ac_configure_extra_args --silent"
+fi
+
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+if \$ac_cs_recheck; then
+ set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion
+ shift
+ \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6
+ CONFIG_SHELL='$SHELL'
+ export CONFIG_SHELL
+ exec "\$@"
+fi
+
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+exec 5>>config.log
+{
+ echo
+ sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
+## Running $as_me. ##
+_ASBOX
+ $as_echo "$ac_log"
+} >&5
+
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+#
+# INIT-COMMANDS
+#
+AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"
+
+
+# The HP-UX ksh and POSIX shell print the target directory to stdout
+# if CDPATH is set.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+
+sed_quote_subst='$sed_quote_subst'
+double_quote_subst='$double_quote_subst'
+delay_variable_subst='$delay_variable_subst'
+macro_version='`$ECHO "$macro_version" | $SED "$delay_single_quote_subst"`'
+macro_revision='`$ECHO "$macro_revision" | $SED "$delay_single_quote_subst"`'
+enable_shared='`$ECHO "$enable_shared" | $SED "$delay_single_quote_subst"`'
+enable_static='`$ECHO "$enable_static" | $SED "$delay_single_quote_subst"`'
+pic_mode='`$ECHO "$pic_mode" | $SED "$delay_single_quote_subst"`'
+enable_fast_install='`$ECHO "$enable_fast_install" | $SED "$delay_single_quote_subst"`'
+SHELL='`$ECHO "$SHELL" | $SED "$delay_single_quote_subst"`'
+ECHO='`$ECHO "$ECHO" | $SED "$delay_single_quote_subst"`'
+PATH_SEPARATOR='`$ECHO "$PATH_SEPARATOR" | $SED "$delay_single_quote_subst"`'
+host_alias='`$ECHO "$host_alias" | $SED "$delay_single_quote_subst"`'
+host='`$ECHO "$host" | $SED "$delay_single_quote_subst"`'
+host_os='`$ECHO "$host_os" | $SED "$delay_single_quote_subst"`'
+build_alias='`$ECHO "$build_alias" | $SED "$delay_single_quote_subst"`'
+build='`$ECHO "$build" | $SED "$delay_single_quote_subst"`'
+build_os='`$ECHO "$build_os" | $SED "$delay_single_quote_subst"`'
+SED='`$ECHO "$SED" | $SED "$delay_single_quote_subst"`'
+Xsed='`$ECHO "$Xsed" | $SED "$delay_single_quote_subst"`'
+GREP='`$ECHO "$GREP" | $SED "$delay_single_quote_subst"`'
+EGREP='`$ECHO "$EGREP" | $SED "$delay_single_quote_subst"`'
+FGREP='`$ECHO "$FGREP" | $SED "$delay_single_quote_subst"`'
+LD='`$ECHO "$LD" | $SED "$delay_single_quote_subst"`'
+NM='`$ECHO "$NM" | $SED "$delay_single_quote_subst"`'
+LN_S='`$ECHO "$LN_S" | $SED "$delay_single_quote_subst"`'
+max_cmd_len='`$ECHO "$max_cmd_len" | $SED "$delay_single_quote_subst"`'
+ac_objext='`$ECHO "$ac_objext" | $SED "$delay_single_quote_subst"`'
+exeext='`$ECHO "$exeext" | $SED "$delay_single_quote_subst"`'
+lt_unset='`$ECHO "$lt_unset" | $SED "$delay_single_quote_subst"`'
+lt_SP2NL='`$ECHO "$lt_SP2NL" | $SED "$delay_single_quote_subst"`'
+lt_NL2SP='`$ECHO "$lt_NL2SP" | $SED "$delay_single_quote_subst"`'
+lt_cv_to_host_file_cmd='`$ECHO "$lt_cv_to_host_file_cmd" | $SED "$delay_single_quote_subst"`'
+lt_cv_to_tool_file_cmd='`$ECHO "$lt_cv_to_tool_file_cmd" | $SED "$delay_single_quote_subst"`'
+reload_flag='`$ECHO "$reload_flag" | $SED "$delay_single_quote_subst"`'
+reload_cmds='`$ECHO "$reload_cmds" | $SED "$delay_single_quote_subst"`'
+OBJDUMP='`$ECHO "$OBJDUMP" | $SED "$delay_single_quote_subst"`'
+deplibs_check_method='`$ECHO "$deplibs_check_method" | $SED "$delay_single_quote_subst"`'
+file_magic_cmd='`$ECHO "$file_magic_cmd" | $SED "$delay_single_quote_subst"`'
+file_magic_glob='`$ECHO "$file_magic_glob" | $SED "$delay_single_quote_subst"`'
+want_nocaseglob='`$ECHO "$want_nocaseglob" | $SED "$delay_single_quote_subst"`'
+DLLTOOL='`$ECHO "$DLLTOOL" | $SED "$delay_single_quote_subst"`'
+sharedlib_from_linklib_cmd='`$ECHO "$sharedlib_from_linklib_cmd" | $SED "$delay_single_quote_subst"`'
+AR='`$ECHO "$AR" | $SED "$delay_single_quote_subst"`'
+AR_FLAGS='`$ECHO "$AR_FLAGS" | $SED "$delay_single_quote_subst"`'
+archiver_list_spec='`$ECHO "$archiver_list_spec" | $SED "$delay_single_quote_subst"`'
+STRIP='`$ECHO "$STRIP" | $SED "$delay_single_quote_subst"`'
+RANLIB='`$ECHO "$RANLIB" | $SED "$delay_single_quote_subst"`'
+old_postinstall_cmds='`$ECHO "$old_postinstall_cmds" | $SED "$delay_single_quote_subst"`'
+old_postuninstall_cmds='`$ECHO "$old_postuninstall_cmds" | $SED "$delay_single_quote_subst"`'
+old_archive_cmds='`$ECHO "$old_archive_cmds" | $SED "$delay_single_quote_subst"`'
+lock_old_archive_extraction='`$ECHO "$lock_old_archive_extraction" | $SED "$delay_single_quote_subst"`'
+CC='`$ECHO "$CC" | $SED "$delay_single_quote_subst"`'
+CFLAGS='`$ECHO "$CFLAGS" | $SED "$delay_single_quote_subst"`'
+compiler='`$ECHO "$compiler" | $SED "$delay_single_quote_subst"`'
+GCC='`$ECHO "$GCC" | $SED "$delay_single_quote_subst"`'
+lt_cv_sys_global_symbol_pipe='`$ECHO "$lt_cv_sys_global_symbol_pipe" | $SED "$delay_single_quote_subst"`'
+lt_cv_sys_global_symbol_to_cdecl='`$ECHO "$lt_cv_sys_global_symbol_to_cdecl" | $SED "$delay_single_quote_subst"`'
+lt_cv_sys_global_symbol_to_c_name_address='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address" | $SED "$delay_single_quote_subst"`'
+lt_cv_sys_global_symbol_to_c_name_address_lib_prefix='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address_lib_prefix" | $SED "$delay_single_quote_subst"`'
+nm_file_list_spec='`$ECHO "$nm_file_list_spec" | $SED "$delay_single_quote_subst"`'
+lt_sysroot='`$ECHO "$lt_sysroot" | $SED "$delay_single_quote_subst"`'
+objdir='`$ECHO "$objdir" | $SED "$delay_single_quote_subst"`'
+MAGIC_CMD='`$ECHO "$MAGIC_CMD" | $SED "$delay_single_quote_subst"`'
+lt_prog_compiler_no_builtin_flag='`$ECHO "$lt_prog_compiler_no_builtin_flag" | $SED "$delay_single_quote_subst"`'
+lt_prog_compiler_pic='`$ECHO "$lt_prog_compiler_pic" | $SED "$delay_single_quote_subst"`'
+lt_prog_compiler_wl='`$ECHO "$lt_prog_compiler_wl" | $SED "$delay_single_quote_subst"`'
+lt_prog_compiler_static='`$ECHO "$lt_prog_compiler_static" | $SED "$delay_single_quote_subst"`'
+lt_cv_prog_compiler_c_o='`$ECHO "$lt_cv_prog_compiler_c_o" | $SED "$delay_single_quote_subst"`'
+need_locks='`$ECHO "$need_locks" | $SED "$delay_single_quote_subst"`'
+MANIFEST_TOOL='`$ECHO "$MANIFEST_TOOL" | $SED "$delay_single_quote_subst"`'
+DSYMUTIL='`$ECHO "$DSYMUTIL" | $SED "$delay_single_quote_subst"`'
+NMEDIT='`$ECHO "$NMEDIT" | $SED "$delay_single_quote_subst"`'
+LIPO='`$ECHO "$LIPO" | $SED "$delay_single_quote_subst"`'
+OTOOL='`$ECHO "$OTOOL" | $SED "$delay_single_quote_subst"`'
+OTOOL64='`$ECHO "$OTOOL64" | $SED "$delay_single_quote_subst"`'
+libext='`$ECHO "$libext" | $SED "$delay_single_quote_subst"`'
+shrext_cmds='`$ECHO "$shrext_cmds" | $SED "$delay_single_quote_subst"`'
+extract_expsyms_cmds='`$ECHO "$extract_expsyms_cmds" | $SED "$delay_single_quote_subst"`'
+archive_cmds_need_lc='`$ECHO "$archive_cmds_need_lc" | $SED "$delay_single_quote_subst"`'
+enable_shared_with_static_runtimes='`$ECHO "$enable_shared_with_static_runtimes" | $SED "$delay_single_quote_subst"`'
+export_dynamic_flag_spec='`$ECHO "$export_dynamic_flag_spec" | $SED "$delay_single_quote_subst"`'
+whole_archive_flag_spec='`$ECHO "$whole_archive_flag_spec" | $SED "$delay_single_quote_subst"`'
+compiler_needs_object='`$ECHO "$compiler_needs_object" | $SED "$delay_single_quote_subst"`'
+old_archive_from_new_cmds='`$ECHO "$old_archive_from_new_cmds" | $SED "$delay_single_quote_subst"`'
+old_archive_from_expsyms_cmds='`$ECHO "$old_archive_from_expsyms_cmds" | $SED "$delay_single_quote_subst"`'
+archive_cmds='`$ECHO "$archive_cmds" | $SED "$delay_single_quote_subst"`'
+archive_expsym_cmds='`$ECHO "$archive_expsym_cmds" | $SED "$delay_single_quote_subst"`'
+module_cmds='`$ECHO "$module_cmds" | $SED "$delay_single_quote_subst"`'
+module_expsym_cmds='`$ECHO "$module_expsym_cmds" | $SED "$delay_single_quote_subst"`'
+with_gnu_ld='`$ECHO "$with_gnu_ld" | $SED "$delay_single_quote_subst"`'
+allow_undefined_flag='`$ECHO "$allow_undefined_flag" | $SED "$delay_single_quote_subst"`'
+no_undefined_flag='`$ECHO "$no_undefined_flag" | $SED "$delay_single_quote_subst"`'
+hardcode_libdir_flag_spec='`$ECHO "$hardcode_libdir_flag_spec" | $SED "$delay_single_quote_subst"`'
+hardcode_libdir_separator='`$ECHO "$hardcode_libdir_separator" | $SED "$delay_single_quote_subst"`'
+hardcode_direct='`$ECHO "$hardcode_direct" | $SED "$delay_single_quote_subst"`'
+hardcode_direct_absolute='`$ECHO "$hardcode_direct_absolute" | $SED "$delay_single_quote_subst"`'
+hardcode_minus_L='`$ECHO "$hardcode_minus_L" | $SED "$delay_single_quote_subst"`'
+hardcode_shlibpath_var='`$ECHO "$hardcode_shlibpath_var" | $SED "$delay_single_quote_subst"`'
+hardcode_automatic='`$ECHO "$hardcode_automatic" | $SED "$delay_single_quote_subst"`'
+inherit_rpath='`$ECHO "$inherit_rpath" | $SED "$delay_single_quote_subst"`'
+link_all_deplibs='`$ECHO "$link_all_deplibs" | $SED "$delay_single_quote_subst"`'
+always_export_symbols='`$ECHO "$always_export_symbols" | $SED "$delay_single_quote_subst"`'
+export_symbols_cmds='`$ECHO "$export_symbols_cmds" | $SED "$delay_single_quote_subst"`'
+exclude_expsyms='`$ECHO "$exclude_expsyms" | $SED "$delay_single_quote_subst"`'
+include_expsyms='`$ECHO "$include_expsyms" | $SED "$delay_single_quote_subst"`'
+prelink_cmds='`$ECHO "$prelink_cmds" | $SED "$delay_single_quote_subst"`'
+postlink_cmds='`$ECHO "$postlink_cmds" | $SED "$delay_single_quote_subst"`'
+file_list_spec='`$ECHO "$file_list_spec" | $SED "$delay_single_quote_subst"`'
+variables_saved_for_relink='`$ECHO "$variables_saved_for_relink" | $SED "$delay_single_quote_subst"`'
+need_lib_prefix='`$ECHO "$need_lib_prefix" | $SED "$delay_single_quote_subst"`'
+need_version='`$ECHO "$need_version" | $SED "$delay_single_quote_subst"`'
+version_type='`$ECHO "$version_type" | $SED "$delay_single_quote_subst"`'
+runpath_var='`$ECHO "$runpath_var" | $SED "$delay_single_quote_subst"`'
+shlibpath_var='`$ECHO "$shlibpath_var" | $SED "$delay_single_quote_subst"`'
+shlibpath_overrides_runpath='`$ECHO "$shlibpath_overrides_runpath" | $SED "$delay_single_quote_subst"`'
+libname_spec='`$ECHO "$libname_spec" | $SED "$delay_single_quote_subst"`'
+library_names_spec='`$ECHO "$library_names_spec" | $SED "$delay_single_quote_subst"`'
+soname_spec='`$ECHO "$soname_spec" | $SED "$delay_single_quote_subst"`'
+install_override_mode='`$ECHO "$install_override_mode" | $SED "$delay_single_quote_subst"`'
+postinstall_cmds='`$ECHO "$postinstall_cmds" | $SED "$delay_single_quote_subst"`'
+postuninstall_cmds='`$ECHO "$postuninstall_cmds" | $SED "$delay_single_quote_subst"`'
+finish_cmds='`$ECHO "$finish_cmds" | $SED "$delay_single_quote_subst"`'
+finish_eval='`$ECHO "$finish_eval" | $SED "$delay_single_quote_subst"`'
+hardcode_into_libs='`$ECHO "$hardcode_into_libs" | $SED "$delay_single_quote_subst"`'
+sys_lib_search_path_spec='`$ECHO "$sys_lib_search_path_spec" | $SED "$delay_single_quote_subst"`'
+sys_lib_dlsearch_path_spec='`$ECHO "$sys_lib_dlsearch_path_spec" | $SED "$delay_single_quote_subst"`'
+hardcode_action='`$ECHO "$hardcode_action" | $SED "$delay_single_quote_subst"`'
+enable_dlopen='`$ECHO "$enable_dlopen" | $SED "$delay_single_quote_subst"`'
+enable_dlopen_self='`$ECHO "$enable_dlopen_self" | $SED "$delay_single_quote_subst"`'
+enable_dlopen_self_static='`$ECHO "$enable_dlopen_self_static" | $SED "$delay_single_quote_subst"`'
+old_striplib='`$ECHO "$old_striplib" | $SED "$delay_single_quote_subst"`'
+striplib='`$ECHO "$striplib" | $SED "$delay_single_quote_subst"`'
+compiler_lib_search_dirs='`$ECHO "$compiler_lib_search_dirs" | $SED "$delay_single_quote_subst"`'
+predep_objects='`$ECHO "$predep_objects" | $SED "$delay_single_quote_subst"`'
+postdep_objects='`$ECHO "$postdep_objects" | $SED "$delay_single_quote_subst"`'
+predeps='`$ECHO "$predeps" | $SED "$delay_single_quote_subst"`'
+postdeps='`$ECHO "$postdeps" | $SED "$delay_single_quote_subst"`'
+compiler_lib_search_path='`$ECHO "$compiler_lib_search_path" | $SED "$delay_single_quote_subst"`'
+LD_CXX='`$ECHO "$LD_CXX" | $SED "$delay_single_quote_subst"`'
+reload_flag_CXX='`$ECHO "$reload_flag_CXX" | $SED "$delay_single_quote_subst"`'
+reload_cmds_CXX='`$ECHO "$reload_cmds_CXX" | $SED "$delay_single_quote_subst"`'
+old_archive_cmds_CXX='`$ECHO "$old_archive_cmds_CXX" | $SED "$delay_single_quote_subst"`'
+compiler_CXX='`$ECHO "$compiler_CXX" | $SED "$delay_single_quote_subst"`'
+GCC_CXX='`$ECHO "$GCC_CXX" | $SED "$delay_single_quote_subst"`'
+lt_prog_compiler_no_builtin_flag_CXX='`$ECHO "$lt_prog_compiler_no_builtin_flag_CXX" | $SED "$delay_single_quote_subst"`'
+lt_prog_compiler_pic_CXX='`$ECHO "$lt_prog_compiler_pic_CXX" | $SED "$delay_single_quote_subst"`'
+lt_prog_compiler_wl_CXX='`$ECHO "$lt_prog_compiler_wl_CXX" | $SED "$delay_single_quote_subst"`'
+lt_prog_compiler_static_CXX='`$ECHO "$lt_prog_compiler_static_CXX" | $SED "$delay_single_quote_subst"`'
+lt_cv_prog_compiler_c_o_CXX='`$ECHO "$lt_cv_prog_compiler_c_o_CXX" | $SED "$delay_single_quote_subst"`'
+archive_cmds_need_lc_CXX='`$ECHO "$archive_cmds_need_lc_CXX" | $SED "$delay_single_quote_subst"`'
+enable_shared_with_static_runtimes_CXX='`$ECHO "$enable_shared_with_static_runtimes_CXX" | $SED "$delay_single_quote_subst"`'
+export_dynamic_flag_spec_CXX='`$ECHO "$export_dynamic_flag_spec_CXX" | $SED "$delay_single_quote_subst"`'
+whole_archive_flag_spec_CXX='`$ECHO "$whole_archive_flag_spec_CXX" | $SED "$delay_single_quote_subst"`'
+compiler_needs_object_CXX='`$ECHO "$compiler_needs_object_CXX" | $SED "$delay_single_quote_subst"`'
+old_archive_from_new_cmds_CXX='`$ECHO "$old_archive_from_new_cmds_CXX" | $SED "$delay_single_quote_subst"`'
+old_archive_from_expsyms_cmds_CXX='`$ECHO "$old_archive_from_expsyms_cmds_CXX" | $SED "$delay_single_quote_subst"`'
+archive_cmds_CXX='`$ECHO "$archive_cmds_CXX" | $SED "$delay_single_quote_subst"`'
+archive_expsym_cmds_CXX='`$ECHO "$archive_expsym_cmds_CXX" | $SED "$delay_single_quote_subst"`'
+module_cmds_CXX='`$ECHO "$module_cmds_CXX" | $SED "$delay_single_quote_subst"`'
+module_expsym_cmds_CXX='`$ECHO "$module_expsym_cmds_CXX" | $SED "$delay_single_quote_subst"`'
+with_gnu_ld_CXX='`$ECHO "$with_gnu_ld_CXX" | $SED "$delay_single_quote_subst"`'
+allow_undefined_flag_CXX='`$ECHO "$allow_undefined_flag_CXX" | $SED "$delay_single_quote_subst"`'
+no_undefined_flag_CXX='`$ECHO "$no_undefined_flag_CXX" | $SED "$delay_single_quote_subst"`'
+hardcode_libdir_flag_spec_CXX='`$ECHO "$hardcode_libdir_flag_spec_CXX" | $SED "$delay_single_quote_subst"`'
+hardcode_libdir_separator_CXX='`$ECHO "$hardcode_libdir_separator_CXX" | $SED "$delay_single_quote_subst"`'
+hardcode_direct_CXX='`$ECHO "$hardcode_direct_CXX" | $SED "$delay_single_quote_subst"`'
+hardcode_direct_absolute_CXX='`$ECHO "$hardcode_direct_absolute_CXX" | $SED "$delay_single_quote_subst"`'
+hardcode_minus_L_CXX='`$ECHO "$hardcode_minus_L_CXX" | $SED "$delay_single_quote_subst"`'
+hardcode_shlibpath_var_CXX='`$ECHO "$hardcode_shlibpath_var_CXX" | $SED "$delay_single_quote_subst"`'
+hardcode_automatic_CXX='`$ECHO "$hardcode_automatic_CXX" | $SED "$delay_single_quote_subst"`'
+inherit_rpath_CXX='`$ECHO "$inherit_rpath_CXX" | $SED "$delay_single_quote_subst"`'
+link_all_deplibs_CXX='`$ECHO "$link_all_deplibs_CXX" | $SED "$delay_single_quote_subst"`'
+always_export_symbols_CXX='`$ECHO "$always_export_symbols_CXX" | $SED "$delay_single_quote_subst"`'
+export_symbols_cmds_CXX='`$ECHO "$export_symbols_cmds_CXX" | $SED "$delay_single_quote_subst"`'
+exclude_expsyms_CXX='`$ECHO "$exclude_expsyms_CXX" | $SED "$delay_single_quote_subst"`'
+include_expsyms_CXX='`$ECHO "$include_expsyms_CXX" | $SED "$delay_single_quote_subst"`'
+prelink_cmds_CXX='`$ECHO "$prelink_cmds_CXX" | $SED "$delay_single_quote_subst"`'
+postlink_cmds_CXX='`$ECHO "$postlink_cmds_CXX" | $SED "$delay_single_quote_subst"`'
+file_list_spec_CXX='`$ECHO "$file_list_spec_CXX" | $SED "$delay_single_quote_subst"`'
+hardcode_action_CXX='`$ECHO "$hardcode_action_CXX" | $SED "$delay_single_quote_subst"`'
+compiler_lib_search_dirs_CXX='`$ECHO "$compiler_lib_search_dirs_CXX" | $SED "$delay_single_quote_subst"`'
+predep_objects_CXX='`$ECHO "$predep_objects_CXX" | $SED "$delay_single_quote_subst"`'
+postdep_objects_CXX='`$ECHO "$postdep_objects_CXX" | $SED "$delay_single_quote_subst"`'
+predeps_CXX='`$ECHO "$predeps_CXX" | $SED "$delay_single_quote_subst"`'
+postdeps_CXX='`$ECHO "$postdeps_CXX" | $SED "$delay_single_quote_subst"`'
+compiler_lib_search_path_CXX='`$ECHO "$compiler_lib_search_path_CXX" | $SED "$delay_single_quote_subst"`'
+
+LTCC='$LTCC'
+LTCFLAGS='$LTCFLAGS'
+compiler='$compiler_DEFAULT'
+
+# A function that is used when there is no print builtin or printf.
+func_fallback_echo ()
+{
+ eval 'cat <<_LTECHO_EOF
+\$1
+_LTECHO_EOF'
+}
+
+# Quote evaled strings.
+for var in SHELL \
+ECHO \
+PATH_SEPARATOR \
+SED \
+GREP \
+EGREP \
+FGREP \
+LD \
+NM \
+LN_S \
+lt_SP2NL \
+lt_NL2SP \
+reload_flag \
+OBJDUMP \
+deplibs_check_method \
+file_magic_cmd \
+file_magic_glob \
+want_nocaseglob \
+DLLTOOL \
+sharedlib_from_linklib_cmd \
+AR \
+AR_FLAGS \
+archiver_list_spec \
+STRIP \
+RANLIB \
+CC \
+CFLAGS \
+compiler \
+lt_cv_sys_global_symbol_pipe \
+lt_cv_sys_global_symbol_to_cdecl \
+lt_cv_sys_global_symbol_to_c_name_address \
+lt_cv_sys_global_symbol_to_c_name_address_lib_prefix \
+nm_file_list_spec \
+lt_prog_compiler_no_builtin_flag \
+lt_prog_compiler_pic \
+lt_prog_compiler_wl \
+lt_prog_compiler_static \
+lt_cv_prog_compiler_c_o \
+need_locks \
+MANIFEST_TOOL \
+DSYMUTIL \
+NMEDIT \
+LIPO \
+OTOOL \
+OTOOL64 \
+shrext_cmds \
+export_dynamic_flag_spec \
+whole_archive_flag_spec \
+compiler_needs_object \
+with_gnu_ld \
+allow_undefined_flag \
+no_undefined_flag \
+hardcode_libdir_flag_spec \
+hardcode_libdir_separator \
+exclude_expsyms \
+include_expsyms \
+file_list_spec \
+variables_saved_for_relink \
+libname_spec \
+library_names_spec \
+soname_spec \
+install_override_mode \
+finish_eval \
+old_striplib \
+striplib \
+compiler_lib_search_dirs \
+predep_objects \
+postdep_objects \
+predeps \
+postdeps \
+compiler_lib_search_path \
+LD_CXX \
+reload_flag_CXX \
+compiler_CXX \
+lt_prog_compiler_no_builtin_flag_CXX \
+lt_prog_compiler_pic_CXX \
+lt_prog_compiler_wl_CXX \
+lt_prog_compiler_static_CXX \
+lt_cv_prog_compiler_c_o_CXX \
+export_dynamic_flag_spec_CXX \
+whole_archive_flag_spec_CXX \
+compiler_needs_object_CXX \
+with_gnu_ld_CXX \
+allow_undefined_flag_CXX \
+no_undefined_flag_CXX \
+hardcode_libdir_flag_spec_CXX \
+hardcode_libdir_separator_CXX \
+exclude_expsyms_CXX \
+include_expsyms_CXX \
+file_list_spec_CXX \
+compiler_lib_search_dirs_CXX \
+predep_objects_CXX \
+postdep_objects_CXX \
+predeps_CXX \
+postdeps_CXX \
+compiler_lib_search_path_CXX; do
+ case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in
+ *[\\\\\\\`\\"\\\$]*)
+ eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\""
+ ;;
+ *)
+ eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\""
+ ;;
+ esac
+done
+
+# Double-quote double-evaled strings.
+for var in reload_cmds \
+old_postinstall_cmds \
+old_postuninstall_cmds \
+old_archive_cmds \
+extract_expsyms_cmds \
+old_archive_from_new_cmds \
+old_archive_from_expsyms_cmds \
+archive_cmds \
+archive_expsym_cmds \
+module_cmds \
+module_expsym_cmds \
+export_symbols_cmds \
+prelink_cmds \
+postlink_cmds \
+postinstall_cmds \
+postuninstall_cmds \
+finish_cmds \
+sys_lib_search_path_spec \
+sys_lib_dlsearch_path_spec \
+reload_cmds_CXX \
+old_archive_cmds_CXX \
+old_archive_from_new_cmds_CXX \
+old_archive_from_expsyms_cmds_CXX \
+archive_cmds_CXX \
+archive_expsym_cmds_CXX \
+module_cmds_CXX \
+module_expsym_cmds_CXX \
+export_symbols_cmds_CXX \
+prelink_cmds_CXX \
+postlink_cmds_CXX; do
+ case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in
+ *[\\\\\\\`\\"\\\$]*)
+ eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\""
+ ;;
+ *)
+ eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\""
+ ;;
+ esac
+done
+
+ac_aux_dir='$ac_aux_dir'
+xsi_shell='$xsi_shell'
+lt_shell_append='$lt_shell_append'
+
+# See if we are running on zsh, and set the options which allow our
+# commands through without removal of \ escapes INIT.
+if test -n "\${ZSH_VERSION+set}" ; then
+ setopt NO_GLOB_SUBST
+fi
+
+
+ PACKAGE='$PACKAGE'
+ VERSION='$VERSION'
+ TIMESTAMP='$TIMESTAMP'
+ RM='$RM'
+ ofile='$ofile'
+
+
+
+
+
+
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+
+# Handling of arguments.
+for ac_config_target in $ac_config_targets
+do
+ case $ac_config_target in
+ "config.h") CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;;
+ "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;;
+ "libtool") CONFIG_COMMANDS="$CONFIG_COMMANDS libtool" ;;
+ "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;;
+ "MPI/Makefile") CONFIG_FILES="$CONFIG_FILES MPI/Makefile" ;;
+ "src/Makefile") CONFIG_FILES="$CONFIG_FILES src/Makefile" ;;
+ "man/Makefile") CONFIG_FILES="$CONFIG_FILES man/Makefile" ;;
+ "examples/Makefile") CONFIG_FILES="$CONFIG_FILES examples/Makefile" ;;
+ "examples/PLL/Makefile") CONFIG_FILES="$CONFIG_FILES examples/PLL/Makefile" ;;
+
+ *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;;
+ esac
+done
+
+
+# If the user did not use the arguments to specify the items to instantiate,
+# then the envvar interface is used. Set only those that are not.
+# We use the long form for the default assignment because of an extremely
+# bizarre bug on SunOS 4.1.3.
+if $ac_need_defaults; then
+ test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files
+ test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers
+ test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands
+fi
+
+# Have a temporary directory for convenience. Make it in the build tree
+# simply because there is no reason against having it here, and in addition,
+# creating and moving files from /tmp can sometimes cause problems.
+# Hook for its removal unless debugging.
+# Note that there is a small window in which the directory will not be cleaned:
+# after its creation but before its name has been assigned to `$tmp'.
+$debug ||
+{
+ tmp= ac_tmp=
+ trap 'exit_status=$?
+ : "${ac_tmp:=$tmp}"
+ { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status
+' 0
+ trap 'as_fn_exit 1' 1 2 13 15
+}
+# Create a (secure) tmp directory for tmp files.
+
+{
+ tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` &&
+ test -d "$tmp"
+} ||
+{
+ tmp=./conf$$-$RANDOM
+ (umask 077 && mkdir "$tmp")
+} || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5
+ac_tmp=$tmp
+
+# Set up the scripts for CONFIG_FILES section.
+# No need to generate them if there are no CONFIG_FILES.
+# This happens for instance with `./config.status config.h'.
+if test -n "$CONFIG_FILES"; then
+
+
+ac_cr=`echo X | tr X '\015'`
+# On cygwin, bash can eat \r inside `` if the user requested igncr.
+# But we know of no other shell where ac_cr would be empty at this
+# point, so we can use a bashism as a fallback.
+if test "x$ac_cr" = x; then
+ eval ac_cr=\$\'\\r\'
+fi
+ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' </dev/null 2>/dev/null`
+if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then
+ ac_cs_awk_cr='\\r'
+else
+ ac_cs_awk_cr=$ac_cr
+fi
+
+echo 'BEGIN {' >"$ac_tmp/subs1.awk" &&
+_ACEOF
+
+
+{
+ echo "cat >conf$$subs.awk <<_ACEOF" &&
+ echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' &&
+ echo "_ACEOF"
+} >conf$$subs.sh ||
+ as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5
+ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'`
+ac_delim='%!_!# '
+for ac_last_try in false false false false false :; do
+ . ./conf$$subs.sh ||
+ as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5
+
+ ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X`
+ if test $ac_delim_n = $ac_delim_num; then
+ break
+ elif $ac_last_try; then
+ as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5
+ else
+ ac_delim="$ac_delim!$ac_delim _$ac_delim!! "
+ fi
+done
+rm -f conf$$subs.sh
+
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK &&
+_ACEOF
+sed -n '
+h
+s/^/S["/; s/!.*/"]=/
+p
+g
+s/^[^!]*!//
+:repl
+t repl
+s/'"$ac_delim"'$//
+t delim
+:nl
+h
+s/\(.\{148\}\)..*/\1/
+t more1
+s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/
+p
+n
+b repl
+:more1
+s/["\\]/\\&/g; s/^/"/; s/$/"\\/
+p
+g
+s/.\{148\}//
+t nl
+:delim
+h
+s/\(.\{148\}\)..*/\1/
+t more2
+s/["\\]/\\&/g; s/^/"/; s/$/"/
+p
+b
+:more2
+s/["\\]/\\&/g; s/^/"/; s/$/"\\/
+p
+g
+s/.\{148\}//
+t delim
+' <conf$$subs.awk | sed '
+/^[^""]/{
+ N
+ s/\n//
+}
+' >>$CONFIG_STATUS || ac_write_fail=1
+rm -f conf$$subs.awk
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+_ACAWK
+cat >>"\$ac_tmp/subs1.awk" <<_ACAWK &&
+ for (key in S) S_is_set[key] = 1
+ FS = ""
+
+}
+{
+ line = $ 0
+ nfields = split(line, field, "@")
+ substed = 0
+ len = length(field[1])
+ for (i = 2; i < nfields; i++) {
+ key = field[i]
+ keylen = length(key)
+ if (S_is_set[key]) {
+ value = S[key]
+ line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3)
+ len += length(value) + length(field[++i])
+ substed = 1
+ } else
+ len += 1 + keylen
+ }
+
+ print line
+}
+
+_ACAWK
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then
+ sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g"
+else
+ cat
+fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \
+ || as_fn_error $? "could not setup config files machinery" "$LINENO" 5
+_ACEOF
+
+# VPATH may cause trouble with some makes, so we remove sole $(srcdir),
+# ${srcdir} and @srcdir@ entries 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[ ]*=[ ]*/{
+h
+s///
+s/^/:/
+s/[ ]*$/:/
+s/:\$(srcdir):/:/g
+s/:\${srcdir}:/:/g
+s/:@srcdir@:/:/g
+s/^:*//
+s/:*$//
+x
+s/\(=[ ]*\).*/\1/
+G
+s/\n//
+s/^[^=]*=[ ]*$//
+}'
+fi
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+fi # test -n "$CONFIG_FILES"
+
+# Set up the scripts for CONFIG_HEADERS section.
+# No need to generate them if there are no CONFIG_HEADERS.
+# This happens for instance with `./config.status Makefile'.
+if test -n "$CONFIG_HEADERS"; then
+cat >"$ac_tmp/defines.awk" <<\_ACAWK ||
+BEGIN {
+_ACEOF
+
+# Transform confdefs.h into an awk script `defines.awk', embedded as
+# here-document in config.status, that substitutes the proper values into
+# config.h.in to produce config.h.
+
+# Create a delimiter string that does not exist in confdefs.h, to ease
+# handling of long lines.
+ac_delim='%!_!# '
+for ac_last_try in false false :; do
+ ac_tt=`sed -n "/$ac_delim/p" confdefs.h`
+ if test -z "$ac_tt"; then
+ break
+ elif $ac_last_try; then
+ as_fn_error $? "could not make $CONFIG_HEADERS" "$LINENO" 5
+ else
+ ac_delim="$ac_delim!$ac_delim _$ac_delim!! "
+ fi
+done
+
+# For the awk script, D is an array of macro values keyed by name,
+# likewise P contains macro parameters if any. Preserve backslash
+# newline sequences.
+
+ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]*
+sed -n '
+s/.\{148\}/&'"$ac_delim"'/g
+t rset
+:rset
+s/^[ ]*#[ ]*define[ ][ ]*/ /
+t def
+d
+:def
+s/\\$//
+t bsnl
+s/["\\]/\\&/g
+s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\
+D["\1"]=" \3"/p
+s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2"/p
+d
+:bsnl
+s/["\\]/\\&/g
+s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\
+D["\1"]=" \3\\\\\\n"\\/p
+t cont
+s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2\\\\\\n"\\/p
+t cont
+d
+:cont
+n
+s/.\{148\}/&'"$ac_delim"'/g
+t clear
+:clear
+s/\\$//
+t bsnlc
+s/["\\]/\\&/g; s/^/"/; s/$/"/p
+d
+:bsnlc
+s/["\\]/\\&/g; s/^/"/; s/$/\\\\\\n"\\/p
+b cont
+' <confdefs.h | sed '
+s/'"$ac_delim"'/"\\\
+"/g' >>$CONFIG_STATUS || ac_write_fail=1
+
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+ for (key in D) D_is_set[key] = 1
+ FS = ""
+}
+/^[\t ]*#[\t ]*(define|undef)[\t ]+$ac_word_re([\t (]|\$)/ {
+ line = \$ 0
+ split(line, arg, " ")
+ if (arg[1] == "#") {
+ defundef = arg[2]
+ mac1 = arg[3]
+ } else {
+ defundef = substr(arg[1], 2)
+ mac1 = arg[2]
+ }
+ split(mac1, mac2, "(") #)
+ macro = mac2[1]
+ prefix = substr(line, 1, index(line, defundef) - 1)
+ if (D_is_set[macro]) {
+ # Preserve the white space surrounding the "#".
+ print prefix "define", macro P[macro] D[macro]
+ next
+ } else {
+ # Replace #undef with comments. This is necessary, for example,
+ # in the case of _POSIX_SOURCE, which is predefined and required
+ # on some systems where configure will not decide to define it.
+ if (defundef == "undef") {
+ print "/*", prefix defundef, macro, "*/"
+ next
+ }
+ }
+}
+{ print }
+_ACAWK
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+ as_fn_error $? "could not setup config headers machinery" "$LINENO" 5
+fi # test -n "$CONFIG_HEADERS"
+
+
+eval set X " :F $CONFIG_FILES :H $CONFIG_HEADERS :C $CONFIG_COMMANDS"
+shift
+for ac_tag
+do
+ case $ac_tag in
+ :[FHLC]) ac_mode=$ac_tag; continue;;
+ esac
+ case $ac_mode$ac_tag in
+ :[FHL]*:*);;
+ :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;;
+ :[FH]-) ac_tag=-:-;;
+ :[FH]*) ac_tag=$ac_tag:$ac_tag.in;;
+ esac
+ ac_save_IFS=$IFS
+ IFS=:
+ set x $ac_tag
+ IFS=$ac_save_IFS
+ shift
+ ac_file=$1
+ shift
+
+ case $ac_mode in
+ :L) ac_source=$1;;
+ :[FH])
+ ac_file_inputs=
+ for ac_f
+ do
+ case $ac_f in
+ -) ac_f="$ac_tmp/stdin";;
+ *) # Look for the file first in the build tree, then in the source tree
+ # (if the path is not absolute). The absolute path cannot be DOS-style,
+ # because $ac_f cannot contain `:'.
+ test -f "$ac_f" ||
+ case $ac_f in
+ [\\/$]*) false;;
+ *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";;
+ esac ||
+ as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;;
+ esac
+ case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac
+ as_fn_append ac_file_inputs " '$ac_f'"
+ done
+
+ # Let's still pretend it is `configure' which instantiates (i.e., don't
+ # use $as_me), people would be surprised to read:
+ # /* config.h. Generated by config.status. */
+ configure_input='Generated from '`
+ $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g'
+ `' by configure.'
+ if test x"$ac_file" != x-; then
+ configure_input="$ac_file. $configure_input"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5
+$as_echo "$as_me: creating $ac_file" >&6;}
+ fi
+ # Neutralize special characters interpreted by sed in replacement strings.
+ case $configure_input in #(
+ *\&* | *\|* | *\\* )
+ ac_sed_conf_input=`$as_echo "$configure_input" |
+ sed 's/[\\\\&|]/\\\\&/g'`;; #(
+ *) ac_sed_conf_input=$configure_input;;
+ esac
+
+ case $ac_tag in
+ *:-:* | *:-) cat >"$ac_tmp/stdin" \
+ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;;
+ esac
+ ;;
+ esac
+
+ ac_dir=`$as_dirname -- "$ac_file" ||
+$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$ac_file" : 'X\(//\)[^/]' \| \
+ X"$ac_file" : 'X\(//\)$' \| \
+ X"$ac_file" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$ac_file" |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)[^/].*/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\).*/{
+ s//\1/
+ q
+ }
+ s/.*/./; q'`
+ as_dir="$ac_dir"; as_fn_mkdir_p
+ ac_builddir=.
+
+case "$ac_dir" in
+.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
+*)
+ ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'`
+ # A ".." for each directory in $ac_dir_suffix.
+ ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`
+ case $ac_top_builddir_sub in
+ "") ac_top_builddir_sub=. ac_top_build_prefix= ;;
+ *) ac_top_build_prefix=$ac_top_builddir_sub/ ;;
+ esac ;;
+esac
+ac_abs_top_builddir=$ac_pwd
+ac_abs_builddir=$ac_pwd$ac_dir_suffix
+# for backward compatibility:
+ac_top_builddir=$ac_top_build_prefix
+
+case $srcdir in
+ .) # We are building in place.
+ ac_srcdir=.
+ ac_top_srcdir=$ac_top_builddir_sub
+ ac_abs_top_srcdir=$ac_pwd ;;
+ [\\/]* | ?:[\\/]* ) # Absolute name.
+ ac_srcdir=$srcdir$ac_dir_suffix;
+ ac_top_srcdir=$srcdir
+ ac_abs_top_srcdir=$srcdir ;;
+ *) # Relative name.
+ ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix
+ ac_top_srcdir=$ac_top_build_prefix$srcdir
+ ac_abs_top_srcdir=$ac_pwd/$srcdir ;;
+esac
+ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
+
+
+ case $ac_mode in
+ :F)
+ #
+ # CONFIG_FILE
+ #
+
+ case $INSTALL in
+ [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;;
+ *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;;
+ esac
+ ac_MKDIR_P=$MKDIR_P
+ case $MKDIR_P in
+ [\\/$]* | ?:[\\/]* ) ;;
+ */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;;
+ esac
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+# If the template does not know about datarootdir, expand it.
+# FIXME: This hack should be removed a few years after 2.60.
+ac_datarootdir_hack=; ac_datarootdir_seen=
+ac_sed_dataroot='
+/datarootdir/ {
+ p
+ q
+}
+/@datadir@/p
+/@docdir@/p
+/@infodir@/p
+/@localedir@/p
+/@mandir@/p'
+case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in
+*datarootdir*) ac_datarootdir_seen=yes;;
+*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*)
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5
+$as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;}
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+ ac_datarootdir_hack='
+ s&@datadir@&$datadir&g
+ s&@docdir@&$docdir&g
+ s&@infodir@&$infodir&g
+ s&@localedir@&$localedir&g
+ s&@mandir@&$mandir&g
+ s&\\\${datarootdir}&$datarootdir&g' ;;
+esac
+_ACEOF
+
+# Neutralize VPATH when `$srcdir' = `.'.
+# Shell code in configure.ac might set extrasub.
+# FIXME: do we really want to maintain this feature?
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+ac_sed_extra="$ac_vpsub
+$extrasub
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+:t
+/@[a-zA-Z_][a-zA-Z_0-9]*@/!b
+s|@configure_input@|$ac_sed_conf_input|;t t
+s&@top_builddir@&$ac_top_builddir_sub&;t t
+s&@top_build_prefix@&$ac_top_build_prefix&;t t
+s&@srcdir@&$ac_srcdir&;t t
+s&@abs_srcdir@&$ac_abs_srcdir&;t t
+s&@top_srcdir@&$ac_top_srcdir&;t t
+s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t
+s&@builddir@&$ac_builddir&;t t
+s&@abs_builddir@&$ac_abs_builddir&;t t
+s&@abs_top_builddir@&$ac_abs_top_builddir&;t t
+s&@INSTALL@&$ac_INSTALL&;t t
+s&@MKDIR_P@&$ac_MKDIR_P&;t t
+$ac_datarootdir_hack
+"
+eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \
+ >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5
+
+test -z "$ac_datarootdir_hack$ac_datarootdir_seen" &&
+ { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } &&
+ { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \
+ "$ac_tmp/out"`; test -z "$ac_out"; } &&
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir'
+which seems to be undefined. Please make sure it is defined" >&5
+$as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir'
+which seems to be undefined. Please make sure it is defined" >&2;}
+
+ rm -f "$ac_tmp/stdin"
+ case $ac_file in
+ -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";;
+ *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";;
+ esac \
+ || as_fn_error $? "could not create $ac_file" "$LINENO" 5
+ ;;
+ :H)
+ #
+ # CONFIG_HEADER
+ #
+ if test x"$ac_file" != x-; then
+ {
+ $as_echo "/* $configure_input */" \
+ && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs"
+ } >"$ac_tmp/config.h" \
+ || as_fn_error $? "could not create $ac_file" "$LINENO" 5
+ if diff "$ac_file" "$ac_tmp/config.h" >/dev/null 2>&1; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5
+$as_echo "$as_me: $ac_file is unchanged" >&6;}
+ else
+ rm -f "$ac_file"
+ mv "$ac_tmp/config.h" "$ac_file" \
+ || as_fn_error $? "could not create $ac_file" "$LINENO" 5
+ fi
+ else
+ $as_echo "/* $configure_input */" \
+ && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" \
+ || as_fn_error $? "could not create -" "$LINENO" 5
+ fi
+# Compute "$ac_file"'s index in $config_headers.
+_am_arg="$ac_file"
+_am_stamp_count=1
+for _am_header in $config_headers :; do
+ case $_am_header in
+ $_am_arg | $_am_arg:* )
+ break ;;
+ * )
+ _am_stamp_count=`expr $_am_stamp_count + 1` ;;
+ esac
+done
+echo "timestamp for $_am_arg" >`$as_dirname -- "$_am_arg" ||
+$as_expr X"$_am_arg" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$_am_arg" : 'X\(//\)[^/]' \| \
+ X"$_am_arg" : 'X\(//\)$' \| \
+ X"$_am_arg" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$_am_arg" |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)[^/].*/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\).*/{
+ s//\1/
+ q
+ }
+ s/.*/./; q'`/stamp-h$_am_stamp_count
+ ;;
+
+ :C) { $as_echo "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5
+$as_echo "$as_me: executing $ac_file commands" >&6;}
+ ;;
+ esac
+
+
+ case $ac_file$ac_mode in
+ "depfiles":C) test x"$AMDEP_TRUE" != x"" || {
+ # Older Autoconf quotes --file arguments for eval, but not when files
+ # are listed without --file. Let's play safe and only enable the eval
+ # if we detect the quoting.
+ case $CONFIG_FILES in
+ *\'*) eval set x "$CONFIG_FILES" ;;
+ *) set x $CONFIG_FILES ;;
+ esac
+ shift
+ for mf
+ do
+ # Strip MF so we end up with the name of the file.
+ mf=`echo "$mf" | sed -e 's/:.*$//'`
+ # Check whether this is an Automake generated Makefile or not.
+ # We used to match only the files named 'Makefile.in', but
+ # some people rename them; so instead we look at the file content.
+ # Grep'ing the first line is not enough: some people post-process
+ # each Makefile.in and add a new line on top of each file to say so.
+ # Grep'ing the whole file is not good either: AIX grep has a line
+ # limit of 2048, but all sed's we know have understand at least 4000.
+ if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then
+ dirpart=`$as_dirname -- "$mf" ||
+$as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$mf" : 'X\(//\)[^/]' \| \
+ X"$mf" : 'X\(//\)$' \| \
+ X"$mf" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$mf" |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)[^/].*/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\).*/{
+ s//\1/
+ q
+ }
+ s/.*/./; q'`
+ else
+ continue
+ fi
+ # Extract the definition of DEPDIR, am__include, and am__quote
+ # from the Makefile without running 'make'.
+ DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"`
+ test -z "$DEPDIR" && continue
+ am__include=`sed -n 's/^am__include = //p' < "$mf"`
+ test -z "$am__include" && continue
+ am__quote=`sed -n 's/^am__quote = //p' < "$mf"`
+ # Find all dependency output files, they are included files with
+ # $(DEPDIR) in their names. We invoke sed twice because it is the
+ # simplest approach to changing $(DEPDIR) to its actual value in the
+ # expansion.
+ for file in `sed -n "
+ s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \
+ sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g'`; do
+ # Make sure the directory exists.
+ test -f "$dirpart/$file" && continue
+ fdir=`$as_dirname -- "$file" ||
+$as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$file" : 'X\(//\)[^/]' \| \
+ X"$file" : 'X\(//\)$' \| \
+ X"$file" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$file" |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)[^/].*/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\).*/{
+ s//\1/
+ q
+ }
+ s/.*/./; q'`
+ as_dir=$dirpart/$fdir; as_fn_mkdir_p
+ # echo "creating $dirpart/$file"
+ echo '# dummy' > "$dirpart/$file"
+ done
+ done
+}
+ ;;
+ "libtool":C)
+
+ # 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
+
+ cfgfile="${ofile}T"
+ trap "$RM \"$cfgfile\"; exit 1" 1 2 15
+ $RM "$cfgfile"
+
+ cat <<_LT_EOF >> "$cfgfile"
+#! $SHELL
+
+# `$ECHO "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services.
+# Generated automatically by $as_me ($PACKAGE$TIMESTAMP) $VERSION
+# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
+# NOTE: Changes made to this file will be lost: look at ltmain.sh.
+#
+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005,
+# 2006, 2007, 2008, 2009, 2010, 2011 Free Software
+# Foundation, Inc.
+# Written by Gordon Matzigkeit, 1996
+#
+# This file is part of GNU Libtool.
+#
+# GNU Libtool 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.
+#
+# As a special exception to the GNU General Public License,
+# if you distribute this file as part of a program or library that
+# is built using GNU Libtool, you may include this file under the
+# same distribution terms that you use for the rest of that program.
+#
+# GNU Libtool 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 GNU Libtool; see the file COPYING. If not, a copy
+# can be downloaded from http://www.gnu.org/licenses/gpl.html, or
+# obtained by writing to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+
+
+# The names of the tagged configurations supported by this script.
+available_tags="CXX "
+
+# ### BEGIN LIBTOOL CONFIG
+
+# Which release of libtool.m4 was used?
+macro_version=$macro_version
+macro_revision=$macro_revision
+
+# Whether or not to build shared libraries.
+build_libtool_libs=$enable_shared
+
+# Whether or not to build static libraries.
+build_old_libs=$enable_static
+
+# What type of objects to build.
+pic_mode=$pic_mode
+
+# Whether or not to optimize for fast installation.
+fast_install=$enable_fast_install
+
+# Shell to use when invoking shell scripts.
+SHELL=$lt_SHELL
+
+# An echo program that protects backslashes.
+ECHO=$lt_ECHO
+
+# The PATH separator for the build system.
+PATH_SEPARATOR=$lt_PATH_SEPARATOR
+
+# The host system.
+host_alias=$host_alias
+host=$host
+host_os=$host_os
+
+# The build system.
+build_alias=$build_alias
+build=$build
+build_os=$build_os
+
+# A sed program that does not truncate output.
+SED=$lt_SED
+
+# Sed that helps us avoid accidentally triggering echo(1) options like -n.
+Xsed="\$SED -e 1s/^X//"
+
+# A grep program that handles long lines.
+GREP=$lt_GREP
+
+# An ERE matcher.
+EGREP=$lt_EGREP
+
+# A literal string matcher.
+FGREP=$lt_FGREP
+
+# A BSD- or MS-compatible name lister.
+NM=$lt_NM
+
+# Whether we need soft or hard links.
+LN_S=$lt_LN_S
+
+# What is the maximum length of a command?
+max_cmd_len=$max_cmd_len
+
+# Object file suffix (normally "o").
+objext=$ac_objext
+
+# Executable file suffix (normally "").
+exeext=$exeext
+
+# whether the shell understands "unset".
+lt_unset=$lt_unset
+
+# turn spaces into newlines.
+SP2NL=$lt_lt_SP2NL
+
+# turn newlines into spaces.
+NL2SP=$lt_lt_NL2SP
+
+# convert \$build file names to \$host format.
+to_host_file_cmd=$lt_cv_to_host_file_cmd
+
+# convert \$build files to toolchain format.
+to_tool_file_cmd=$lt_cv_to_tool_file_cmd
+
+# An object symbol dumper.
+OBJDUMP=$lt_OBJDUMP
+
+# 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
+
+# How to find potential files when deplibs_check_method = "file_magic".
+file_magic_glob=$lt_file_magic_glob
+
+# Find potential files using nocaseglob when deplibs_check_method = "file_magic".
+want_nocaseglob=$lt_want_nocaseglob
+
+# DLL creation program.
+DLLTOOL=$lt_DLLTOOL
+
+# Command to associate shared and link libraries.
+sharedlib_from_linklib_cmd=$lt_sharedlib_from_linklib_cmd
+
+# The archiver.
+AR=$lt_AR
+
+# Flags to create an archive.
+AR_FLAGS=$lt_AR_FLAGS
+
+# How to feed a file listing to the archiver.
+archiver_list_spec=$lt_archiver_list_spec
+
+# A symbol stripping program.
+STRIP=$lt_STRIP
+
+# Commands used to install an old-style archive.
+RANLIB=$lt_RANLIB
+old_postinstall_cmds=$lt_old_postinstall_cmds
+old_postuninstall_cmds=$lt_old_postuninstall_cmds
+
+# Whether to use a lock for old archive extraction.
+lock_old_archive_extraction=$lock_old_archive_extraction
+
+# A C compiler.
+LTCC=$lt_CC
+
+# LTCC compiler flags.
+LTCFLAGS=$lt_CFLAGS
+
+# 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
+
+# Transform the output of nm in a C name address pair when lib prefix is needed.
+global_symbol_to_c_name_address_lib_prefix=$lt_lt_cv_sys_global_symbol_to_c_name_address_lib_prefix
+
+# Specify filename containing input files for \$NM.
+nm_file_list_spec=$lt_nm_file_list_spec
+
+# The root where to search for dependent libraries,and in which our libraries should be installed.
+lt_sysroot=$lt_sysroot
+
+# The name of the directory that contains temporary libtool files.
+objdir=$objdir
+
+# Used to examine libraries when file_magic_cmd begins with "file".
+MAGIC_CMD=$MAGIC_CMD
+
+# Must we lock files when doing compilation?
+need_locks=$lt_need_locks
+
+# Manifest tool.
+MANIFEST_TOOL=$lt_MANIFEST_TOOL
+
+# Tool to manipulate archived DWARF debug symbol files on Mac OS X.
+DSYMUTIL=$lt_DSYMUTIL
+
+# Tool to change global to local symbols on Mac OS X.
+NMEDIT=$lt_NMEDIT
+
+# Tool to manipulate fat objects and archives on Mac OS X.
+LIPO=$lt_LIPO
+
+# ldd/readelf like tool for Mach-O binaries on Mac OS X.
+OTOOL=$lt_OTOOL
+
+# ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4.
+OTOOL64=$lt_OTOOL64
+
+# Old archive suffix (normally "a").
+libext=$libext
+
+# Shared library suffix (normally ".so").
+shrext_cmds=$lt_shrext_cmds
+
+# The commands to extract the exported symbol list from a shared archive.
+extract_expsyms_cmds=$lt_extract_expsyms_cmds
+
+# Variables whose values should be saved in libtool wrapper scripts and
+# restored at link time.
+variables_saved_for_relink=$lt_variables_saved_for_relink
+
+# 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
+
+# Library versioning type.
+version_type=$version_type
+
+# Shared library runtime path variable.
+runpath_var=$runpath_var
+
+# Shared library path variable.
+shlibpath_var=$shlibpath_var
+
+# Is shlibpath searched before the hard-coded library search path?
+shlibpath_overrides_runpath=$shlibpath_overrides_runpath
+
+# 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
+
+# Permission mode override for installation of shared libraries.
+install_override_mode=$lt_install_override_mode
+
+# Command to use after installation of a shared archive.
+postinstall_cmds=$lt_postinstall_cmds
+
+# Command to use after uninstallation of a shared archive.
+postuninstall_cmds=$lt_postuninstall_cmds
+
+# Commands used to finish a libtool library installation in a directory.
+finish_cmds=$lt_finish_cmds
+
+# As "finish_cmds", except a single script fragment to be evaled but
+# not shown.
+finish_eval=$lt_finish_eval
+
+# Whether we should hardcode library paths into libraries.
+hardcode_into_libs=$hardcode_into_libs
+
+# 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
+
+# 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
+
+# Commands to strip libraries.
+old_striplib=$lt_old_striplib
+striplib=$lt_striplib
+
+
+# The linker used to build libraries.
+LD=$lt_LD
+
+# How to create reloadable object files.
+reload_flag=$lt_reload_flag
+reload_cmds=$lt_reload_cmds
+
+# Commands used to build an old-style archive.
+old_archive_cmds=$lt_old_archive_cmds
+
+# A language specific compiler.
+CC=$lt_compiler
+
+# Is the compiler the GNU compiler?
+with_gcc=$GCC
+
+# Compiler flag to turn off builtin functions.
+no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag
+
+# Additional compiler flags for building library objects.
+pic_flag=$lt_lt_prog_compiler_pic
+
+# How to pass a linker flag through the compiler.
+wl=$lt_lt_prog_compiler_wl
+
+# Compiler flag to prevent dynamic linking.
+link_static_flag=$lt_lt_prog_compiler_static
+
+# Does compiler simultaneously support -c and -o options?
+compiler_c_o=$lt_lt_cv_prog_compiler_c_o
+
+# 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
+
+# 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
+
+# Whether the compiler copes with passing no objects directly.
+compiler_needs_object=$lt_compiler_needs_object
+
+# 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 a shared archive.
+archive_cmds=$lt_archive_cmds
+archive_expsym_cmds=$lt_archive_expsym_cmds
+
+# Commands used to build a loadable module if different from building
+# a shared archive.
+module_cmds=$lt_module_cmds
+module_expsym_cmds=$lt_module_expsym_cmds
+
+# Whether we are building with GNU ld or not.
+with_gnu_ld=$lt_with_gnu_ld
+
+# Flag that allows shared libraries with undefined symbols to be built.
+allow_undefined_flag=$lt_allow_undefined_flag
+
+# Flag that enforces no undefined symbols.
+no_undefined_flag=$lt_no_undefined_flag
+
+# 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
+
+# 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 DIR/libNAME\${shared_ext} during linking hardcodes
+# DIR into the resulting binary and the resulting library dependency is
+# "absolute",i.e impossible to change by setting \${shlibpath_var} if the
+# library is relocated.
+hardcode_direct_absolute=$hardcode_direct_absolute
+
+# 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
+
+# Set to yes if linker adds runtime paths of dependent libraries
+# to runtime path list.
+inherit_rpath=$inherit_rpath
+
+# Whether libtool must link a program against all its dependency libraries.
+link_all_deplibs=$link_all_deplibs
+
+# 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
+
+# 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
+
+# Commands necessary for linking programs (against libraries) with templates.
+prelink_cmds=$lt_prelink_cmds
+
+# Commands necessary for finishing linking programs.
+postlink_cmds=$lt_postlink_cmds
+
+# Specify filename containing input files.
+file_list_spec=$lt_file_list_spec
+
+# How to hardcode a shared library path into an executable.
+hardcode_action=$hardcode_action
+
+# The directories searched by this compiler when creating a shared library.
+compiler_lib_search_dirs=$lt_compiler_lib_search_dirs
+
+# Dependencies to place before and after the objects being linked to
+# create a shared library.
+predep_objects=$lt_predep_objects
+postdep_objects=$lt_postdep_objects
+predeps=$lt_predeps
+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
+
+# ### END LIBTOOL CONFIG
+
+_LT_EOF
+
+ case $host_os in
+ aix3*)
+ cat <<\_LT_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
+_LT_EOF
+ ;;
+ esac
+
+
+ltmain="$ac_aux_dir/ltmain.sh"
+
+
+ # 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)
+
+ if test x"$xsi_shell" = xyes; then
+ sed -e '/^func_dirname ()$/,/^} # func_dirname /c\
+func_dirname ()\
+{\
+\ case ${1} in\
+\ */*) func_dirname_result="${1%/*}${2}" ;;\
+\ * ) func_dirname_result="${3}" ;;\
+\ esac\
+} # Extended-shell func_dirname implementation' "$cfgfile" > $cfgfile.tmp \
+ && mv -f "$cfgfile.tmp" "$cfgfile" \
+ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
+test 0 -eq $? || _lt_function_replace_fail=:
+
+
+ sed -e '/^func_basename ()$/,/^} # func_basename /c\
+func_basename ()\
+{\
+\ func_basename_result="${1##*/}"\
+} # Extended-shell func_basename implementation' "$cfgfile" > $cfgfile.tmp \
+ && mv -f "$cfgfile.tmp" "$cfgfile" \
+ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
+test 0 -eq $? || _lt_function_replace_fail=:
+
+
+ sed -e '/^func_dirname_and_basename ()$/,/^} # func_dirname_and_basename /c\
+func_dirname_and_basename ()\
+{\
+\ case ${1} in\
+\ */*) func_dirname_result="${1%/*}${2}" ;;\
+\ * ) func_dirname_result="${3}" ;;\
+\ esac\
+\ func_basename_result="${1##*/}"\
+} # Extended-shell func_dirname_and_basename implementation' "$cfgfile" > $cfgfile.tmp \
+ && mv -f "$cfgfile.tmp" "$cfgfile" \
+ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
+test 0 -eq $? || _lt_function_replace_fail=:
+
+
+ sed -e '/^func_stripname ()$/,/^} # func_stripname /c\
+func_stripname ()\
+{\
+\ # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are\
+\ # positional parameters, so assign one to ordinary parameter first.\
+\ func_stripname_result=${3}\
+\ func_stripname_result=${func_stripname_result#"${1}"}\
+\ func_stripname_result=${func_stripname_result%"${2}"}\
+} # Extended-shell func_stripname implementation' "$cfgfile" > $cfgfile.tmp \
+ && mv -f "$cfgfile.tmp" "$cfgfile" \
+ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
+test 0 -eq $? || _lt_function_replace_fail=:
+
+
+ sed -e '/^func_split_long_opt ()$/,/^} # func_split_long_opt /c\
+func_split_long_opt ()\
+{\
+\ func_split_long_opt_name=${1%%=*}\
+\ func_split_long_opt_arg=${1#*=}\
+} # Extended-shell func_split_long_opt implementation' "$cfgfile" > $cfgfile.tmp \
+ && mv -f "$cfgfile.tmp" "$cfgfile" \
+ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
+test 0 -eq $? || _lt_function_replace_fail=:
+
+
+ sed -e '/^func_split_short_opt ()$/,/^} # func_split_short_opt /c\
+func_split_short_opt ()\
+{\
+\ func_split_short_opt_arg=${1#??}\
+\ func_split_short_opt_name=${1%"$func_split_short_opt_arg"}\
+} # Extended-shell func_split_short_opt implementation' "$cfgfile" > $cfgfile.tmp \
+ && mv -f "$cfgfile.tmp" "$cfgfile" \
+ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
+test 0 -eq $? || _lt_function_replace_fail=:
+
+
+ sed -e '/^func_lo2o ()$/,/^} # func_lo2o /c\
+func_lo2o ()\
+{\
+\ case ${1} in\
+\ *.lo) func_lo2o_result=${1%.lo}.${objext} ;;\
+\ *) func_lo2o_result=${1} ;;\
+\ esac\
+} # Extended-shell func_lo2o implementation' "$cfgfile" > $cfgfile.tmp \
+ && mv -f "$cfgfile.tmp" "$cfgfile" \
+ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
+test 0 -eq $? || _lt_function_replace_fail=:
+
+
+ sed -e '/^func_xform ()$/,/^} # func_xform /c\
+func_xform ()\
+{\
+ func_xform_result=${1%.*}.lo\
+} # Extended-shell func_xform implementation' "$cfgfile" > $cfgfile.tmp \
+ && mv -f "$cfgfile.tmp" "$cfgfile" \
+ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
+test 0 -eq $? || _lt_function_replace_fail=:
+
+
+ sed -e '/^func_arith ()$/,/^} # func_arith /c\
+func_arith ()\
+{\
+ func_arith_result=$(( $* ))\
+} # Extended-shell func_arith implementation' "$cfgfile" > $cfgfile.tmp \
+ && mv -f "$cfgfile.tmp" "$cfgfile" \
+ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
+test 0 -eq $? || _lt_function_replace_fail=:
+
+
+ sed -e '/^func_len ()$/,/^} # func_len /c\
+func_len ()\
+{\
+ func_len_result=${#1}\
+} # Extended-shell func_len implementation' "$cfgfile" > $cfgfile.tmp \
+ && mv -f "$cfgfile.tmp" "$cfgfile" \
+ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
+test 0 -eq $? || _lt_function_replace_fail=:
+
+fi
+
+if test x"$lt_shell_append" = xyes; then
+ sed -e '/^func_append ()$/,/^} # func_append /c\
+func_append ()\
+{\
+ eval "${1}+=\\${2}"\
+} # Extended-shell func_append implementation' "$cfgfile" > $cfgfile.tmp \
+ && mv -f "$cfgfile.tmp" "$cfgfile" \
+ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
+test 0 -eq $? || _lt_function_replace_fail=:
+
+
+ sed -e '/^func_append_quoted ()$/,/^} # func_append_quoted /c\
+func_append_quoted ()\
+{\
+\ func_quote_for_eval "${2}"\
+\ eval "${1}+=\\\\ \\$func_quote_for_eval_result"\
+} # Extended-shell func_append_quoted implementation' "$cfgfile" > $cfgfile.tmp \
+ && mv -f "$cfgfile.tmp" "$cfgfile" \
+ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
+test 0 -eq $? || _lt_function_replace_fail=:
+
+
+ # Save a `func_append' function call where possible by direct use of '+='
+ sed -e 's%func_append \([a-zA-Z_]\{1,\}\) "%\1+="%g' $cfgfile > $cfgfile.tmp \
+ && mv -f "$cfgfile.tmp" "$cfgfile" \
+ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
+ test 0 -eq $? || _lt_function_replace_fail=:
+else
+ # Save a `func_append' function call even when '+=' is not available
+ sed -e 's%func_append \([a-zA-Z_]\{1,\}\) "%\1="$\1%g' $cfgfile > $cfgfile.tmp \
+ && mv -f "$cfgfile.tmp" "$cfgfile" \
+ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
+ test 0 -eq $? || _lt_function_replace_fail=:
+fi
+
+if test x"$_lt_function_replace_fail" = x":"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Unable to substitute extended shell functions in $ofile" >&5
+$as_echo "$as_me: WARNING: Unable to substitute extended shell functions in $ofile" >&2;}
+fi
+
+
+ mv -f "$cfgfile" "$ofile" ||
+ (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile")
+ chmod +x "$ofile"
+
+
+ cat <<_LT_EOF >> "$ofile"
+
+# ### BEGIN LIBTOOL TAG CONFIG: CXX
+
+# The linker used to build libraries.
+LD=$lt_LD_CXX
+
+# How to create reloadable object files.
+reload_flag=$lt_reload_flag_CXX
+reload_cmds=$lt_reload_cmds_CXX
+
+# Commands used to build an old-style archive.
+old_archive_cmds=$lt_old_archive_cmds_CXX
+
+# A language specific compiler.
+CC=$lt_compiler_CXX
+
+# Is the compiler the GNU compiler?
+with_gcc=$GCC_CXX
+
+# Compiler flag to turn off builtin functions.
+no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_CXX
+
+# Additional compiler flags for building library objects.
+pic_flag=$lt_lt_prog_compiler_pic_CXX
+
+# How to pass a linker flag through the compiler.
+wl=$lt_lt_prog_compiler_wl_CXX
+
+# Compiler flag to prevent dynamic linking.
+link_static_flag=$lt_lt_prog_compiler_static_CXX
+
+# Does compiler simultaneously support -c and -o options?
+compiler_c_o=$lt_lt_cv_prog_compiler_c_o_CXX
+
+# 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
+
+# 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
+
+# Whether the compiler copes with passing no objects directly.
+compiler_needs_object=$lt_compiler_needs_object_CXX
+
+# 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 a shared archive.
+archive_cmds=$lt_archive_cmds_CXX
+archive_expsym_cmds=$lt_archive_expsym_cmds_CXX
+
+# Commands used to build a loadable module if different from building
+# a shared archive.
+module_cmds=$lt_module_cmds_CXX
+module_expsym_cmds=$lt_module_expsym_cmds_CXX
+
+# Whether we are building with GNU ld or not.
+with_gnu_ld=$lt_with_gnu_ld_CXX
+
+# Flag that allows shared libraries with undefined symbols to be built.
+allow_undefined_flag=$lt_allow_undefined_flag_CXX
+
+# Flag that enforces no undefined symbols.
+no_undefined_flag=$lt_no_undefined_flag_CXX
+
+# 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
+
+# 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 DIR/libNAME\${shared_ext} during linking hardcodes
+# DIR into the resulting binary and the resulting library dependency is
+# "absolute",i.e impossible to change by setting \${shlibpath_var} if the
+# library is relocated.
+hardcode_direct_absolute=$hardcode_direct_absolute_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
+
+# Set to yes if linker adds runtime paths of dependent libraries
+# to runtime path list.
+inherit_rpath=$inherit_rpath_CXX
+
+# Whether libtool must link a program against all its dependency libraries.
+link_all_deplibs=$link_all_deplibs_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
+
+# 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
+
+# Commands necessary for linking programs (against libraries) with templates.
+prelink_cmds=$lt_prelink_cmds_CXX
+
+# Commands necessary for finishing linking programs.
+postlink_cmds=$lt_postlink_cmds_CXX
+
+# Specify filename containing input files.
+file_list_spec=$lt_file_list_spec_CXX
+
+# How to hardcode a shared library path into an executable.
+hardcode_action=$hardcode_action_CXX
+
+# The directories searched by this compiler when creating a shared library.
+compiler_lib_search_dirs=$lt_compiler_lib_search_dirs_CXX
+
+# Dependencies to place before and after the objects being linked to
+# create a shared library.
+predep_objects=$lt_predep_objects_CXX
+postdep_objects=$lt_postdep_objects_CXX
+predeps=$lt_predeps_CXX
+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
+
+# ### END LIBTOOL TAG CONFIG: CXX
+_LT_EOF
+
+ ;;
+
+ esac
+done # for ac_tag
+
+
+as_fn_exit 0
+_ACEOF
+ac_clean_files=$ac_clean_files_save
+
+test $ac_write_fail = 0 ||
+ as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5
+
+
+# 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 || as_fn_exit 1
+fi
+if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5
+$as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;}
+fi
+
diff --git a/configure.ac b/configure.ac
new file mode 100644
index 0000000..618b54f
--- /dev/null
+++ b/configure.ac
@@ -0,0 +1,124 @@
+# -*- Autoconf -*-
+# Process this file with autoconf to produce a configure script.
+
+AC_PREREQ([2.68])
+AC_INIT([libpll], [1.0.11], [Tomas.Flouri at h-its.org])
+AC_CONFIG_MACRO_DIR([m4])
+AM_INIT_AUTOMAKE
+
+# AM_MAINTAINER_MODE
+
+LIBPLL_VERSION=1.0.11
+LIBPLL_MAJOR=1
+LIBPLL_MINOR=0
+LIBPLL_REV=0
+
+AC_CONFIG_SRCDIR([src/pll.h])
+AC_CONFIG_HEADERS([config.h])
+
+# Checks for programs.
+AC_PROG_CXX
+AC_PROG_CC
+AC_PROG_MAKE_SET
+AC_PROG_RANLIB
+AC_PROG_CPP
+LT_INIT
+
+AM_PROG_CC_C_O
+# Checks for libraries.
+# FIXME: Replace `main' with a function in `-lm':
+AC_CHECK_LIB([m], [log])
+
+# Checks for header files.
+AC_CHECK_HEADERS([fcntl.h float.h limits.h malloc.h stddef.h stdint.h stdlib.h string.h strings.h sys/time.h unistd.h])
+
+# Checks for typedefs, structures, and compiler characteristics.
+AC_HEADER_STDBOOL
+AC_C_INLINE
+AC_TYPE_INT64_T
+AC_TYPE_SIZE_T
+AC_TYPE_SSIZE_T
+AC_TYPE_UINT32_T
+AC_TYPE_UINT64_T
+AC_TYPE_UINT8_T
+AC_CHECK_TYPES([ptrdiff_t])
+
+# Checks for library functions.
+AC_FUNC_ERROR_AT_LINE
+AC_FUNC_MALLOC
+AC_FUNC_MMAP
+AC_FUNC_REALLOC
+AC_CHECK_FUNCS([atexit clock_gettime getcwd getpagesize gettimeofday memmove memset munmap pow sqrt strcasecmp strchr strdup strndup strstr])
+
+have_pthreads=no
+AC_SEARCH_LIBS([pthread_create], [pthread], [have_pthreads=yes])
+
+if test "x${have_pthreads}" = xyes; then
+ AC_CHECK_HEADERS([pthread.h], [], [have_pthreads=no])
+fi
+
+
+have_generic=yes
+have_avx=no
+have_avx_pthreads=no
+have_avx_mpi=no
+have_sse3=no
+have_sse3_pthreads=no
+have_sse3_mpi=no
+
+AX_EXT
+
+if test "x${ax_cv_have_avx_ext}" = "xyes"; then
+ have_avx=yes
+ if test "x${have_pthreads}"="xyes"; then
+ have_avx_pthreads=yes
+ fi
+fi
+
+if test "x${ax_cv_have_sse3_ext}" = "xyes"; then
+ have_sse3=yes
+ if test "x${have_pthreads}"="xyes"; then
+ have_sse3_pthreads=yes
+ fi
+fi
+
+AC_ARG_ENABLE(generic,AC_HELP_STRING([--enable-generic],[build generic version of the library]),[have_generic=yes])
+AC_ARG_ENABLE(generic,AC_HELP_STRING([--disable-generic],[build generic version of the library]),[have_generic=no])
+AC_ARG_ENABLE(avx,AC_HELP_STRING([--enable-avx],[build AVX version of the library]),[have_avx=yes])
+AC_ARG_ENABLE(avx,AC_HELP_STRING([--disable-avx],[build AVX version of the library]),[have_avx=no])
+AC_ARG_ENABLE(avx-pthreads,AC_HELP_STRING([--enable-avx-pthreads],[build pthreads AVX version of the library]),[have_avx_pthreads=yes])
+AC_ARG_ENABLE(avx-pthreads,AC_HELP_STRING([--disable-avx-pthreads],[build pthreads AVX version of the library]),[have_avx_pthreads=no])
+AC_ARG_ENABLE(avx-mpi,AC_HELP_STRING([--enable-avx-mpi],[build MPI AVX version of the library]),[have_avx_mpi=yes])
+AC_ARG_ENABLE(avx-mpi,AC_HELP_STRING([--disable-avx-mpi],[build MPI AVX version of the library]),[have_avx_mpi=no])
+AC_ARG_ENABLE(sse3,AC_HELP_STRING([--enable-sse3],[build SSE3 version of the library]),[have_sse3=yes])
+AC_ARG_ENABLE(sse3,AC_HELP_STRING([--disable-sse3],[build SSE3 version of the library]),[have_sse3=no])
+AC_ARG_ENABLE(sse3-pthreads,AC_HELP_STRING([--enable-sse3-pthreads],[build pthreads SSE3 version of the library]),[have_sse3_pthreads=yes])
+AC_ARG_ENABLE(sse3-pthreads,AC_HELP_STRING([--disable-sse3-pthreads],[build pthreads SSE3 version of the library]),[have_sse3_pthreads=no])
+AC_ARG_ENABLE(sse3-mpi,AC_HELP_STRING([--enable-sse3-mpi],[build MPI SSE3 version of the library]),[have_sse3_mpi=yes])
+AC_ARG_ENABLE(sse3-mpi,AC_HELP_STRING([--disable-sse3-mpi],[build MPI SSE3 version of the library]),[have_sse3_mpi=no])
+
+AX_MPI([have_mpi=yes],[have_mpi=no])
+
+AM_INIT_AUTOMAKE([subdir-objects])
+AM_CONDITIONAL(BUILD_GENERIC, test "x${have_generic}" = "xyes")
+AM_CONDITIONAL(BUILD_AVX, test "x${have_avx}" = "xyes")
+AM_CONDITIONAL(BUILD_AVX_PTHREADS, test "x${have_avx_pthreads}" = "xyes")
+AM_CONDITIONAL(BUILD_SSE3, test "x${have_sse3}" = "xyes")
+AM_CONDITIONAL(BUILD_SSE3_PTHREADS, test "x${have_sse3_pthreads}" = "xyes")
+AM_CONDITIONAL(BUILD_MPI, test "x${have_mpi}" = "xyes")
+
+AC_SUBST(LIBPLL_VERSION)
+AC_SUBST(LIBPLL_MAJOR)
+AC_SUBST(LIBPLL_MINOR)
+AC_SUBST(LIBPLL_REV)
+AC_SUBST(MPICC)
+
+
+
+AC_CONFIG_FILES([Makefile
+ MPI/Makefile
+ src/Makefile
+ man/Makefile
+ examples/Makefile
+ examples/PLL/Makefile])
+AC_OUTPUT
diff --git a/depcomp b/depcomp
new file mode 100755
index 0000000..4ebd5b3
--- /dev/null
+++ b/depcomp
@@ -0,0 +1,791 @@
+#! /bin/sh
+# depcomp - compile a program generating dependencies as side-effects
+
+scriptversion=2013-05-30.07; # UTC
+
+# Copyright (C) 1999-2013 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+# 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 <oliva at dcc.unicamp.br>.
+
+case $1 in
+ '')
+ echo "$0: No command. Try '$0 --help' for more information." 1>&2
+ exit 1;
+ ;;
+ -h | --h*)
+ cat <<\EOF
+Usage: depcomp [--help] [--version] PROGRAM [ARGS]
+
+Run PROGRAMS ARGS to compile a file, generating dependencies
+as side-effects.
+
+Environment variables:
+ depmode Dependency tracking mode.
+ source Source file read by 'PROGRAMS ARGS'.
+ object Object file output by 'PROGRAMS ARGS'.
+ DEPDIR directory where to store dependencies.
+ depfile Dependency file to output.
+ tmpdepfile Temporary file to use when outputting dependencies.
+ libtool Whether libtool is used (yes/no).
+
+Report bugs to <bug-automake at gnu.org>.
+EOF
+ exit $?
+ ;;
+ -v | --v*)
+ echo "depcomp $scriptversion"
+ exit $?
+ ;;
+esac
+
+# Get the directory component of the given path, and save it in the
+# global variables '$dir'. Note that this directory component will
+# be either empty or ending with a '/' character. This is deliberate.
+set_dir_from ()
+{
+ case $1 in
+ */*) dir=`echo "$1" | sed -e 's|/[^/]*$|/|'`;;
+ *) dir=;;
+ esac
+}
+
+# Get the suffix-stripped basename of the given path, and save it the
+# global variable '$base'.
+set_base_from ()
+{
+ base=`echo "$1" | sed -e 's|^.*/||' -e 's/\.[^.]*$//'`
+}
+
+# If no dependency file was actually created by the compiler invocation,
+# we still have to create a dummy depfile, to avoid errors with the
+# Makefile "include basename.Plo" scheme.
+make_dummy_depfile ()
+{
+ echo "#dummy" > "$depfile"
+}
+
+# Factor out some common post-processing of the generated depfile.
+# Requires the auxiliary global variable '$tmpdepfile' to be set.
+aix_post_process_depfile ()
+{
+ # If the compiler actually managed to produce a dependency file,
+ # post-process it.
+ if test -f "$tmpdepfile"; then
+ # Each line is of the form 'foo.o: dependency.h'.
+ # Do two passes, one to just change these to
+ # $object: dependency.h
+ # and one to simply output
+ # dependency.h:
+ # which is needed to avoid the deleted-header problem.
+ { sed -e "s,^.*\.[$lower]*:,$object:," < "$tmpdepfile"
+ sed -e "s,^.*\.[$lower]*:[$tab ]*,," -e 's,$,:,' < "$tmpdepfile"
+ } > "$depfile"
+ rm -f "$tmpdepfile"
+ else
+ make_dummy_depfile
+ fi
+}
+
+# A tabulation character.
+tab=' '
+# A newline character.
+nl='
+'
+# Character ranges might be problematic outside the C locale.
+# These definitions help.
+upper=ABCDEFGHIJKLMNOPQRSTUVWXYZ
+lower=abcdefghijklmnopqrstuvwxyz
+digits=0123456789
+alpha=${upper}${lower}
+
+if test -z "$depmode" || test -z "$source" || test -z "$object"; then
+ echo "depcomp: Variables source, object and depmode must be set" 1>&2
+ exit 1
+fi
+
+# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po.
+depfile=${depfile-`echo "$object" |
+ sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`}
+tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`}
+
+rm -f "$tmpdepfile"
+
+# Avoid interferences from the environment.
+gccflag= dashmflag=
+
+# Some modes work just like other modes, but use different flags. We
+# parameterize here, but still list the modes in the big case below,
+# to make depend.m4 easier to write. Note that we *cannot* use a case
+# here, because this file can only contain one case statement.
+if test "$depmode" = hp; then
+ # HP compiler uses -M and no extra arg.
+ gccflag=-M
+ depmode=gcc
+fi
+
+if test "$depmode" = dashXmstdout; then
+ # This is just like dashmstdout with a different argument.
+ dashmflag=-xM
+ depmode=dashmstdout
+fi
+
+cygpath_u="cygpath -u -f -"
+if test "$depmode" = msvcmsys; then
+ # This is just like msvisualcpp but w/o cygpath translation.
+ # Just convert the backslash-escaped backslashes to single forward
+ # slashes to satisfy depend.m4
+ cygpath_u='sed s,\\\\,/,g'
+ depmode=msvisualcpp
+fi
+
+if test "$depmode" = msvc7msys; then
+ # This is just like msvc7 but w/o cygpath translation.
+ # Just convert the backslash-escaped backslashes to single forward
+ # slashes to satisfy depend.m4
+ cygpath_u='sed s,\\\\,/,g'
+ depmode=msvc7
+fi
+
+if test "$depmode" = xlc; then
+ # IBM C/C++ Compilers xlc/xlC can output gcc-like dependency information.
+ gccflag=-qmakedep=gcc,-MF
+ depmode=gcc
+fi
+
+case "$depmode" in
+gcc3)
+## gcc 3 implements dependency tracking that does exactly what
+## we want. Yay! Note: for some reason libtool 1.4 doesn't like
+## it if -MD -MP comes after the -MF stuff. Hmm.
+## Unfortunately, FreeBSD c89 acceptance of flags depends upon
+## the command line argument order; so add the flags where they
+## appear in depend2.am. Note that the slowdown incurred here
+## affects only configure: in makefiles, %FASTDEP% shortcuts this.
+ for arg
+ do
+ case $arg in
+ -c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;;
+ *) set fnord "$@" "$arg" ;;
+ esac
+ shift # fnord
+ shift # $arg
+ done
+ "$@"
+ stat=$?
+ if test $stat -ne 0; then
+ rm -f "$tmpdepfile"
+ exit $stat
+ fi
+ mv "$tmpdepfile" "$depfile"
+ ;;
+
+gcc)
+## Note that this doesn't just cater to obsosete pre-3.x GCC compilers.
+## but also to in-use compilers like IMB xlc/xlC and the HP C compiler.
+## (see the conditional assignment to $gccflag above).
+## 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). Also, it might not be
+## supported by the other compilers which use the 'gcc' depmode.
+## - 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 -ne 0; then
+ rm -f "$tmpdepfile"
+ exit $stat
+ fi
+ rm -f "$depfile"
+ echo "$object : \\" > "$depfile"
+ # 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.
+## 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. hp depmode also adds that space, but also prefixes the VPATH
+## to the object. Take care to not repeat it in the output.
+## Some versions of the HPUX 10.20 sed can't process this invocation
+## correctly. Breaking it into two sed invocations is a workaround.
+ tr ' ' "$nl" < "$tmpdepfile" \
+ | sed -e 's/^\\$//' -e '/^$/d' -e "s|.*$object$||" -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 -ne 0; then
+ 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 ' ' "$nl" < "$tmpdepfile" \
+ | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' \
+ | tr "$nl" ' ' >> "$depfile"
+ echo >> "$depfile"
+ # The second pass generates a dummy entry for each header file.
+ tr ' ' "$nl" < "$tmpdepfile" \
+ | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \
+ >> "$depfile"
+ else
+ make_dummy_depfile
+ fi
+ rm -f "$tmpdepfile"
+ ;;
+
+xlc)
+ # 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
+ ;;
+
+aix)
+ # The C for AIX Compiler uses -M and outputs the dependencies
+ # in a .u file. In older versions, this file always lives in the
+ # current directory. Also, the AIX compiler puts '$object:' at the
+ # start of each line; $object doesn't have directory information.
+ # Version 6 uses the directory in both cases.
+ set_dir_from "$object"
+ set_base_from "$object"
+ if test "$libtool" = yes; then
+ tmpdepfile1=$dir$base.u
+ tmpdepfile2=$base.u
+ tmpdepfile3=$dir.libs/$base.u
+ "$@" -Wc,-M
+ else
+ tmpdepfile1=$dir$base.u
+ tmpdepfile2=$dir$base.u
+ tmpdepfile3=$dir$base.u
+ "$@" -M
+ fi
+ stat=$?
+ if test $stat -ne 0; then
+ rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
+ exit $stat
+ fi
+
+ for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
+ do
+ test -f "$tmpdepfile" && break
+ done
+ aix_post_process_depfile
+ ;;
+
+tcc)
+ # tcc (Tiny C Compiler) understand '-MD -MF file' since version 0.9.26
+ # FIXME: That version still under development at the moment of writing.
+ # Make that this statement remains true also for stable, released
+ # versions.
+ # It will wrap lines (doesn't matter whether long or short) with a
+ # trailing '\', as in:
+ #
+ # foo.o : \
+ # foo.c \
+ # foo.h \
+ #
+ # It will put a trailing '\' even on the last line, and will use leading
+ # spaces rather than leading tabs (at least since its commit 0394caf7
+ # "Emit spaces for -MD").
+ "$@" -MD -MF "$tmpdepfile"
+ stat=$?
+ if test $stat -ne 0; then
+ rm -f "$tmpdepfile"
+ exit $stat
+ fi
+ rm -f "$depfile"
+ # Each non-empty line is of the form 'foo.o : \' or ' dep.h \'.
+ # We have to change lines of the first kind to '$object: \'.
+ sed -e "s|.*:|$object :|" < "$tmpdepfile" > "$depfile"
+ # And for each line of the second kind, we have to emit a 'dep.h:'
+ # dummy dependency, to avoid the deleted-header problem.
+ sed -n -e 's|^ *\(.*\) *\\$|\1:|p' < "$tmpdepfile" >> "$depfile"
+ rm -f "$tmpdepfile"
+ ;;
+
+## The order of this option in the case statement is important, since the
+## shell code in configure will try each of these formats in the order
+## listed in this file. A plain '-MD' option would be understood by many
+## compilers, so we must ensure this comes after the gcc and icc options.
+pgcc)
+ # Portland's C compiler understands '-MD'.
+ # Will always output deps to 'file.d' where file is the root name of the
+ # source file under compilation, even if file resides in a subdirectory.
+ # The object file name does not affect the name of the '.d' file.
+ # pgcc 10.2 will output
+ # foo.o: sub/foo.c sub/foo.h
+ # and will wrap long lines using '\' :
+ # foo.o: sub/foo.c ... \
+ # sub/foo.h ... \
+ # ...
+ set_dir_from "$object"
+ # Use the source, not the object, to determine the base name, since
+ # that's sadly what pgcc will do too.
+ set_base_from "$source"
+ tmpdepfile=$base.d
+
+ # For projects that build the same source file twice into different object
+ # files, the pgcc approach of using the *source* file root name can cause
+ # problems in parallel builds. Use a locking strategy to avoid stomping on
+ # the same $tmpdepfile.
+ lockdir=$base.d-lock
+ trap "
+ echo '$0: caught signal, cleaning up...' >&2
+ rmdir '$lockdir'
+ exit 1
+ " 1 2 13 15
+ numtries=100
+ i=$numtries
+ while test $i -gt 0; do
+ # mkdir is a portable test-and-set.
+ if mkdir "$lockdir" 2>/dev/null; then
+ # This process acquired the lock.
+ "$@" -MD
+ stat=$?
+ # Release the lock.
+ rmdir "$lockdir"
+ break
+ else
+ # If the lock is being held by a different process, wait
+ # until the winning process is done or we timeout.
+ while test -d "$lockdir" && test $i -gt 0; do
+ sleep 1
+ i=`expr $i - 1`
+ done
+ fi
+ i=`expr $i - 1`
+ done
+ trap - 1 2 13 15
+ if test $i -le 0; then
+ echo "$0: failed to acquire lock after $numtries attempts" >&2
+ echo "$0: check lockdir '$lockdir'" >&2
+ exit 1
+ fi
+
+ if test $stat -ne 0; then
+ rm -f "$tmpdepfile"
+ exit $stat
+ fi
+ rm -f "$depfile"
+ # Each line is of the form `foo.o: dependent.h',
+ # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'.
+ # Do two passes, one to just change these to
+ # `$object: dependent.h' and one to simply `dependent.h:'.
+ sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile"
+ # Some versions of the HPUX 10.20 sed can't process this invocation
+ # correctly. Breaking it into two sed invocations is a workaround.
+ sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" \
+ | sed -e 's/$/ :/' >> "$depfile"
+ rm -f "$tmpdepfile"
+ ;;
+
+hp2)
+ # The "hp" stanza above does not work with aCC (C++) and HP's ia64
+ # compilers, which have integrated preprocessors. The correct option
+ # to use with these is +Maked; it writes dependencies to a file named
+ # 'foo.d', which lands next to the object file, wherever that
+ # happens to be.
+ # Much of this is similar to the tru64 case; see comments there.
+ set_dir_from "$object"
+ set_base_from "$object"
+ if test "$libtool" = yes; then
+ tmpdepfile1=$dir$base.d
+ tmpdepfile2=$dir.libs/$base.d
+ "$@" -Wc,+Maked
+ else
+ tmpdepfile1=$dir$base.d
+ tmpdepfile2=$dir$base.d
+ "$@" +Maked
+ fi
+ stat=$?
+ if test $stat -ne 0; then
+ rm -f "$tmpdepfile1" "$tmpdepfile2"
+ exit $stat
+ fi
+
+ for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2"
+ do
+ test -f "$tmpdepfile" && break
+ done
+ if test -f "$tmpdepfile"; then
+ sed -e "s,^.*\.[$lower]*:,$object:," "$tmpdepfile" > "$depfile"
+ # Add 'dependent.h:' lines.
+ sed -ne '2,${
+ s/^ *//
+ s/ \\*$//
+ s/$/:/
+ p
+ }' "$tmpdepfile" >> "$depfile"
+ else
+ make_dummy_depfile
+ fi
+ rm -f "$tmpdepfile" "$tmpdepfile2"
+ ;;
+
+tru64)
+ # The Tru64 compiler uses -MD to generate dependencies as a side
+ # effect. 'cc -MD -o foo.o ...' puts the dependencies into 'foo.o.d'.
+ # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put
+ # dependencies in 'foo.d' instead, so we check for that too.
+ # Subdirectories are respected.
+ set_dir_from "$object"
+ set_base_from "$object"
+
+ if test "$libtool" = yes; then
+ # Libtool generates 2 separate objects for the 2 libraries. These
+ # two compilations output dependencies in $dir.libs/$base.o.d and
+ # in $dir$base.o.d. We have to check for both files, because
+ # one of the two compilations can be disabled. We should prefer
+ # $dir$base.o.d over $dir.libs/$base.o.d because the latter is
+ # automatically cleaned when .libs/ is deleted, while ignoring
+ # the former would cause a distcleancheck panic.
+ tmpdepfile1=$dir$base.o.d # libtool 1.5
+ tmpdepfile2=$dir.libs/$base.o.d # Likewise.
+ tmpdepfile3=$dir.libs/$base.d # Compaq CCC V6.2-504
+ "$@" -Wc,-MD
+ else
+ tmpdepfile1=$dir$base.d
+ tmpdepfile2=$dir$base.d
+ tmpdepfile3=$dir$base.d
+ "$@" -MD
+ fi
+
+ stat=$?
+ if test $stat -ne 0; then
+ rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
+ exit $stat
+ fi
+
+ for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
+ do
+ test -f "$tmpdepfile" && break
+ done
+ # Same post-processing that is required for AIX mode.
+ aix_post_process_depfile
+ ;;
+
+msvc7)
+ if test "$libtool" = yes; then
+ showIncludes=-Wc,-showIncludes
+ else
+ showIncludes=-showIncludes
+ fi
+ "$@" $showIncludes > "$tmpdepfile"
+ stat=$?
+ grep -v '^Note: including file: ' "$tmpdepfile"
+ if test $stat -ne 0; then
+ rm -f "$tmpdepfile"
+ exit $stat
+ fi
+ rm -f "$depfile"
+ echo "$object : \\" > "$depfile"
+ # The first sed program below extracts the file names and escapes
+ # backslashes for cygpath. The second sed program outputs the file
+ # name when reading, but also accumulates all include files in the
+ # hold buffer in order to output them again at the end. This only
+ # works with sed implementations that can handle large buffers.
+ sed < "$tmpdepfile" -n '
+/^Note: including file: *\(.*\)/ {
+ s//\1/
+ s/\\/\\\\/g
+ p
+}' | $cygpath_u | sort -u | sed -n '
+s/ /\\ /g
+s/\(.*\)/'"$tab"'\1 \\/p
+s/.\(.*\) \\/\1:/
+H
+$ {
+ s/.*/'"$tab"'/
+ G
+ p
+}' >> "$depfile"
+ echo >> "$depfile" # make sure the fragment doesn't end with a backslash
+ rm -f "$tmpdepfile"
+ ;;
+
+msvc7msys)
+ # 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
+ ;;
+
+#nosideeffect)
+ # This comment above is used by automake to tell side-effect
+ # dependency tracking mechanisms from slower ones.
+
+dashmstdout)
+ # Important note: in order to support this mode, a compiler *must*
+ # always write the preprocessed file to stdout, regardless of -o.
+ "$@" || exit $?
+
+ # Remove the call to Libtool.
+ if test "$libtool" = yes; then
+ while test "X$1" != 'X--mode=compile'; do
+ shift
+ done
+ shift
+ fi
+
+ # Remove '-o $object'.
+ IFS=" "
+ for arg
+ do
+ case $arg in
+ -o)
+ shift
+ ;;
+ $object)
+ shift
+ ;;
+ *)
+ set fnord "$@" "$arg"
+ shift # fnord
+ shift # $arg
+ ;;
+ esac
+ done
+
+ test -z "$dashmflag" && dashmflag=-M
+ # Require at least two characters before searching for ':'
+ # in the target name. This is to cope with DOS-style filenames:
+ # a dependency such as 'c:/foo/bar' could be seen as target 'c' otherwise.
+ "$@" $dashmflag |
+ sed "s|^[$tab ]*[^:$tab ][^:][^:]*:[$tab ]*|$object: |" > "$tmpdepfile"
+ rm -f "$depfile"
+ cat < "$tmpdepfile" > "$depfile"
+ # Some versions of the HPUX 10.20 sed can't process this sed invocation
+ # correctly. Breaking it into two sed invocations is a workaround.
+ tr ' ' "$nl" < "$tmpdepfile" \
+ | sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' \
+ | sed -e 's/$/ :/' >> "$depfile"
+ rm -f "$tmpdepfile"
+ ;;
+
+dashXmstdout)
+ # This case only exists to satisfy depend.m4. It is never actually
+ # run, as this mode is specially recognized in the preamble.
+ exit 1
+ ;;
+
+makedepend)
+ "$@" || exit $?
+ # Remove any Libtool call
+ if test "$libtool" = yes; then
+ while test "X$1" != 'X--mode=compile'; do
+ shift
+ done
+ shift
+ fi
+ # X makedepend
+ shift
+ cleared=no eat=no
+ for arg
+ do
+ case $cleared in
+ no)
+ set ""; shift
+ cleared=yes ;;
+ esac
+ if test $eat = yes; then
+ eat=no
+ continue
+ fi
+ case "$arg" in
+ -D*|-I*)
+ set fnord "$@" "$arg"; shift ;;
+ # Strip any option that makedepend may not understand. Remove
+ # the object too, otherwise makedepend will parse it as a source file.
+ -arch)
+ eat=yes ;;
+ -*|$object)
+ ;;
+ *)
+ set fnord "$@" "$arg"; shift ;;
+ esac
+ done
+ obj_suffix=`echo "$object" | sed 's/^.*\././'`
+ touch "$tmpdepfile"
+ ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@"
+ rm -f "$depfile"
+ # makedepend may prepend the VPATH from the source file name to the object.
+ # No need to regex-escape $object, excess matching of '.' is harmless.
+ sed "s|^.*\($object *:\)|\1|" "$tmpdepfile" > "$depfile"
+ # Some versions of the HPUX 10.20 sed can't process the last invocation
+ # correctly. Breaking it into two sed invocations is a workaround.
+ sed '1,2d' "$tmpdepfile" \
+ | tr ' ' "$nl" \
+ | sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' \
+ | sed -e 's/$/ :/' >> "$depfile"
+ rm -f "$tmpdepfile" "$tmpdepfile".bak
+ ;;
+
+cpp)
+ # Important note: in order to support this mode, a compiler *must*
+ # always write the preprocessed file to stdout.
+ "$@" || exit $?
+
+ # Remove the call to Libtool.
+ if test "$libtool" = yes; then
+ while test "X$1" != 'X--mode=compile'; do
+ shift
+ done
+ shift
+ fi
+
+ # Remove '-o $object'.
+ IFS=" "
+ for arg
+ do
+ case $arg in
+ -o)
+ shift
+ ;;
+ $object)
+ shift
+ ;;
+ *)
+ set fnord "$@" "$arg"
+ shift # fnord
+ shift # $arg
+ ;;
+ esac
+ done
+
+ "$@" -E \
+ | sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \
+ -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \
+ | sed '$ s: \\$::' > "$tmpdepfile"
+ rm -f "$depfile"
+ echo "$object : \\" > "$depfile"
+ cat < "$tmpdepfile" >> "$depfile"
+ sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile"
+ rm -f "$tmpdepfile"
+ ;;
+
+msvisualcpp)
+ # Important note: in order to support this mode, a compiler *must*
+ # always write the preprocessed file to stdout.
+ "$@" || exit $?
+
+ # Remove the call to Libtool.
+ if test "$libtool" = yes; then
+ while test "X$1" != 'X--mode=compile'; do
+ shift
+ done
+ shift
+ fi
+
+ IFS=" "
+ for arg
+ do
+ case "$arg" in
+ -o)
+ shift
+ ;;
+ $object)
+ shift
+ ;;
+ "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI")
+ set fnord "$@"
+ shift
+ shift
+ ;;
+ *)
+ set fnord "$@" "$arg"
+ shift
+ shift
+ ;;
+ esac
+ done
+ "$@" -E 2>/dev/null |
+ sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile"
+ rm -f "$depfile"
+ echo "$object : \\" > "$depfile"
+ sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::'"$tab"'\1 \\:p' >> "$depfile"
+ echo "$tab" >> "$depfile"
+ sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile"
+ rm -f "$tmpdepfile"
+ ;;
+
+msvcmsys)
+ # This case exists only to let depend.m4 do its work. It works by
+ # looking at the text of this script. This case will never be run,
+ # since it is checked for above.
+ exit 1
+ ;;
+
+none)
+ exec "$@"
+ ;;
+
+*)
+ echo "Unknown depmode $depmode" 1>&2
+ exit 1
+ ;;
+esac
+
+exit 0
+
+# Local Variables:
+# mode: shell-script
+# sh-indentation: 2
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "scriptversion="
+# time-stamp-format: "%:y-%02m-%02d.%02H"
+# time-stamp-time-zone: "UTC"
+# time-stamp-end: "; # UTC"
+# End:
diff --git a/examples/Makefile.am b/examples/Makefile.am
new file mode 100644
index 0000000..8619d67
--- /dev/null
+++ b/examples/Makefile.am
@@ -0,0 +1,3 @@
+#exampledir = $(docdir)/examples/PLL
+SUBDIRS = PLL
+#example_DATA = PLL/main.c PLL/Makefile.AVX PLL/Makefile.SSE3 PLL/Makefile.SSE3-PTHREADS PLL/Makefile.SSE3-MPI PLL/Makefile.AVX-PTHREADS PLL/Makefile.AVX-MPI PLL/Makefile.AVX.clang PLL/Makefile.SSE3.clang
diff --git a/examples/Makefile.in b/examples/Makefile.in
new file mode 100644
index 0000000..6614d12
--- /dev/null
+++ b/examples/Makefile.in
@@ -0,0 +1,620 @@
+# Makefile.in generated by automake 1.14.1 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994-2013 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.
+
+ at SET_MAKE@
+VPATH = @srcdir@
+am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__make_running_with_option = \
+ case $${target_option-} in \
+ ?) ;; \
+ *) echo "am__make_running_with_option: internal error: invalid" \
+ "target option '$${target_option-}' specified" >&2; \
+ exit 1;; \
+ esac; \
+ has_opt=no; \
+ sane_makeflags=$$MAKEFLAGS; \
+ if $(am__is_gnu_make); then \
+ sane_makeflags=$$MFLAGS; \
+ else \
+ case $$MAKEFLAGS in \
+ *\\[\ \ ]*) \
+ bs=\\; \
+ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
+ esac; \
+ fi; \
+ skip_next=no; \
+ strip_trailopt () \
+ { \
+ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+ }; \
+ for flg in $$sane_makeflags; do \
+ test $$skip_next = yes && { skip_next=no; continue; }; \
+ case $$flg in \
+ *=*|--*) continue;; \
+ -*I) strip_trailopt 'I'; skip_next=yes;; \
+ -*I?*) strip_trailopt 'I';; \
+ -*O) strip_trailopt 'O'; skip_next=yes;; \
+ -*O?*) strip_trailopt 'O';; \
+ -*l) strip_trailopt 'l'; skip_next=yes;; \
+ -*l?*) strip_trailopt 'l';; \
+ -[dEDm]) skip_next=yes;; \
+ -[JT]) skip_next=yes;; \
+ esac; \
+ case $$flg in \
+ *$$target_option*) has_opt=yes; break;; \
+ esac; \
+ done; \
+ test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+subdir = examples
+DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am README
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/ax_check_compile_flag.m4 \
+ $(top_srcdir)/m4/ax_ext.m4 \
+ $(top_srcdir)/m4/ax_gcc_x86_cpuid.m4 \
+ $(top_srcdir)/m4/ax_mpi.m4 $(top_srcdir)/m4/libtool.m4 \
+ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+ $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+AM_V_P = $(am__v_P_ at AM_V@)
+am__v_P_ = $(am__v_P_ at AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_ at AM_V@)
+am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
+am__v_GEN_0 = @echo " GEN " $@;
+am__v_GEN_1 =
+AM_V_at = $(am__v_at_ at AM_V@)
+am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 =
+SOURCES =
+DIST_SOURCES =
+RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \
+ ctags-recursive dvi-recursive html-recursive info-recursive \
+ install-data-recursive install-dvi-recursive \
+ install-exec-recursive install-html-recursive \
+ install-info-recursive install-pdf-recursive \
+ install-ps-recursive install-recursive installcheck-recursive \
+ installdirs-recursive pdf-recursive ps-recursive \
+ tags-recursive uninstall-recursive
+am__can_run_installinfo = \
+ case $$AM_UPDATE_INFO_DIR in \
+ n|no|NO) false;; \
+ *) (install-info --version) >/dev/null 2>&1;; \
+ esac
+RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \
+ distclean-recursive maintainer-clean-recursive
+am__recursive_targets = \
+ $(RECURSIVE_TARGETS) \
+ $(RECURSIVE_CLEAN_TARGETS) \
+ $(am__extra_recursive_targets)
+AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \
+ distdir
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates. Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+ BEGIN { nonempty = 0; } \
+ { items[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique. This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+ list='$(am__tagged_files)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | $(am__uniquify_input)`
+ETAGS = etags
+CTAGS = ctags
+DIST_SUBDIRS = $(SUBDIRS)
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+am__relativize = \
+ dir0=`pwd`; \
+ sed_first='s,^\([^/]*\)/.*$$,\1,'; \
+ sed_rest='s,^[^/]*/*,,'; \
+ sed_last='s,^.*/\([^/]*\)$$,\1,'; \
+ sed_butlast='s,/*[^/]*$$,,'; \
+ while test -n "$$dir1"; do \
+ first=`echo "$$dir1" | sed -e "$$sed_first"`; \
+ if test "$$first" != "."; then \
+ if test "$$first" = ".."; then \
+ dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
+ dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
+ else \
+ first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
+ if test "$$first2" = "$$first"; then \
+ dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
+ else \
+ dir2="../$$dir2"; \
+ fi; \
+ dir0="$$dir0"/"$$first"; \
+ fi; \
+ fi; \
+ dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
+ done; \
+ reldir="$$dir2"
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DLLTOOL = @DLLTOOL@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+GREP = @GREP@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBPLL_MAJOR = @LIBPLL_MAJOR@
+LIBPLL_MINOR = @LIBPLL_MINOR@
+LIBPLL_REV = @LIBPLL_REV@
+LIBPLL_VERSION = @LIBPLL_VERSION@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MKDIR_P = @MKDIR_P@
+MPICC = @MPICC@
+MPILIBS = @MPILIBS@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SIMD_FLAGS = @SIMD_FLAGS@
+STRIP = @STRIP@
+VERSION = @VERSION@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+
+#exampledir = $(docdir)/examples/PLL
+SUBDIRS = PLL
+all: all-recursive
+
+.SUFFIXES:
+$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu examples/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --gnu examples/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+
+# This directory's subdirectories are mostly independent; you can cd
+# into them and run 'make' without going through this Makefile.
+# To change the values of 'make' variables: instead of editing Makefiles,
+# (1) if the variable is set in 'config.status', edit 'config.status'
+# (which will cause the Makefiles to be regenerated when you run 'make');
+# (2) otherwise, pass the desired values on the 'make' command line.
+$(am__recursive_targets):
+ @fail=; \
+ if $(am__make_keepgoing); then \
+ failcom='fail=yes'; \
+ else \
+ failcom='exit 1'; \
+ fi; \
+ dot_seen=no; \
+ target=`echo $@ | sed s/-recursive//`; \
+ case "$@" in \
+ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
+ *) list='$(SUBDIRS)' ;; \
+ esac; \
+ for subdir in $$list; do \
+ echo "Making $$target in $$subdir"; \
+ if test "$$subdir" = "."; then \
+ dot_seen=yes; \
+ local_target="$$target-am"; \
+ else \
+ local_target="$$target"; \
+ fi; \
+ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+ || eval $$failcom; \
+ done; \
+ if test "$$dot_seen" = "no"; then \
+ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
+ fi; test -z "$$fail"
+
+ID: $(am__tagged_files)
+ $(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-recursive
+TAGS: tags
+
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+ set x; \
+ here=`pwd`; \
+ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
+ include_option=--etags-include; \
+ empty_fix=.; \
+ else \
+ include_option=--include; \
+ empty_fix=; \
+ fi; \
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ if test "$$subdir" = .; then :; else \
+ test ! -f $$subdir/TAGS || \
+ set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
+ fi; \
+ done; \
+ $(am__define_uniq_tagged_files); \
+ shift; \
+ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ if test $$# -gt 0; then \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ "$$@" $$unique; \
+ else \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$unique; \
+ fi; \
+ fi
+ctags: ctags-recursive
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+ $(am__define_uniq_tagged_files); \
+ test -z "$(CTAGS_ARGS)$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && $(am__cd) $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) "$$here"
+cscopelist: cscopelist-recursive
+
+cscopelist-am: $(am__tagged_files)
+ list='$(am__tagged_files)'; \
+ case "$(srcdir)" in \
+ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+ *) sdir=$(subdir)/$(srcdir) ;; \
+ esac; \
+ for i in $$list; do \
+ if test -f "$$i"; then \
+ echo "$(subdir)/$$i"; \
+ else \
+ echo "$$sdir/$$i"; \
+ fi; \
+ done >> $(top_builddir)/cscope.files
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+ else \
+ test -f "$(distdir)/$$file" \
+ || cp -p $$d/$$file "$(distdir)/$$file" \
+ || exit 1; \
+ fi; \
+ done
+ @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+ if test "$$subdir" = .; then :; else \
+ $(am__make_dryrun) \
+ || test -d "$(distdir)/$$subdir" \
+ || $(MKDIR_P) "$(distdir)/$$subdir" \
+ || exit 1; \
+ dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
+ $(am__relativize); \
+ new_distdir=$$reldir; \
+ dir1=$$subdir; dir2="$(top_distdir)"; \
+ $(am__relativize); \
+ new_top_distdir=$$reldir; \
+ echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
+ echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
+ ($(am__cd) $$subdir && \
+ $(MAKE) $(AM_MAKEFLAGS) \
+ top_distdir="$$new_top_distdir" \
+ distdir="$$new_distdir" \
+ am__remove_distdir=: \
+ am__skip_length_check=: \
+ am__skip_mode_fix=: \
+ distdir) \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+check: check-recursive
+all-am: Makefile
+installdirs: installdirs-recursive
+installdirs-am:
+install: install-recursive
+install-exec: install-exec-recursive
+install-data: install-data-recursive
+uninstall: uninstall-recursive
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-recursive
+install-strip:
+ if test -z '$(STRIP)'; then \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ install; \
+ else \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+ fi
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-recursive
+
+clean-am: clean-generic clean-libtool mostlyclean-am
+
+distclean: distclean-recursive
+ -rm -f Makefile
+distclean-am: clean-am distclean-generic distclean-tags
+
+dvi: dvi-recursive
+
+dvi-am:
+
+html: html-recursive
+
+html-am:
+
+info: info-recursive
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-recursive
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-recursive
+
+install-html-am:
+
+install-info: install-info-recursive
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-recursive
+
+install-pdf-am:
+
+install-ps: install-ps-recursive
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-recursive
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-recursive
+
+mostlyclean-am: mostlyclean-generic mostlyclean-libtool
+
+pdf: pdf-recursive
+
+pdf-am:
+
+ps: ps-recursive
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: $(am__recursive_targets) install-am install-strip
+
+.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am check \
+ check-am clean clean-generic clean-libtool cscopelist-am ctags \
+ ctags-am distclean distclean-generic distclean-libtool \
+ distclean-tags distdir dvi dvi-am html html-am info info-am \
+ install install-am install-data install-data-am install-dvi \
+ install-dvi-am install-exec install-exec-am install-html \
+ install-html-am install-info install-info-am install-man \
+ install-pdf install-pdf-am install-ps install-ps-am \
+ install-strip installcheck installcheck-am installdirs \
+ installdirs-am maintainer-clean maintainer-clean-generic \
+ mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \
+ ps ps-am tags tags-am uninstall uninstall-am
+
+#example_DATA = PLL/main.c PLL/Makefile.AVX PLL/Makefile.SSE3 PLL/Makefile.SSE3-PTHREADS PLL/Makefile.SSE3-MPI PLL/Makefile.AVX-PTHREADS PLL/Makefile.AVX-MPI PLL/Makefile.AVX.clang PLL/Makefile.SSE3.clang
+
+# 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/examples/PLL/Makefile.AVX b/examples/PLL/Makefile.AVX
new file mode 100644
index 0000000..d864fdf
--- /dev/null
+++ b/examples/PLL/Makefile.AVX
@@ -0,0 +1,21 @@
+CC = gcc
+MAKE = make
+LIBPATH = /usr/local/lib/
+INCPATH = /usr/local/include/pll/
+BIN = pll
+PLL = pll
+ARCH = avx
+LIBRARIES = -l$(PLL)-$(ARCH) -lm
+TARGET = $(BIN)-$(ARCH)
+RM = rm -f
+
+all: $(BIN)-$(ARCH)
+
+$(BIN)-$(ARCH): main.c
+ @echo "==> Building PLL example ($(BIN)-$(ARCH))"
+ $(CC) -g $+ -L $(LIBPATH) -I $(INCPATH) $(LIBRARIES) -o $@
+
+clean :
+ -$(RM) $(BIN)-$(ARCH)
+
+.PHONY: all clean
diff --git a/examples/PLL/Makefile.AVX-MPI b/examples/PLL/Makefile.AVX-MPI
new file mode 100644
index 0000000..55b464d
--- /dev/null
+++ b/examples/PLL/Makefile.AVX-MPI
@@ -0,0 +1,20 @@
+CC = mpicc
+MAKE = make
+LIBPATH = /usr/local/lib/
+INCPATH = /usr/local/include/pll/
+BIN = pll
+PLL = pll
+ARCH = avx-mpi
+LIBRARIES = -l$(PLL)-$(ARCH) -lm
+TARGET = $(BIN)-$(ARCH)
+RM = rm -f
+
+all: $(BIN)-$(ARCH)
+
+$(BIN)-$(ARCH): main.c
+ @echo "==> Building PLL example ($(BIN)-$(ARCH))"
+ $(CC) -D_FINE_GRAIN_MPI $+ -L $(LIBPATH) -I $(INCPATH) $(LIBRARIES) -o $@
+
+clean :
+ -$(RM) $(BIN)-$(ARCH)
+.PHONY: all clean
diff --git a/examples/PLL/Makefile.AVX-PTHREADS b/examples/PLL/Makefile.AVX-PTHREADS
new file mode 100644
index 0000000..bb56d7e
--- /dev/null
+++ b/examples/PLL/Makefile.AVX-PTHREADS
@@ -0,0 +1,21 @@
+CC = gcc
+MAKE = make
+LIBPATH = /usr/local/lib/
+INCPATH = /usr/local/include/pll/
+BIN = pll
+PLL = pll
+ARCH = avx-pthreads
+LIBRARIES = -l$(PLL)-$(ARCH) -lm -lpthread
+TARGET = $(BIN)-$(ARCH)
+RM = rm -f
+
+all: $(BIN)-$(ARCH)
+
+$(BIN)-$(ARCH): main.c
+ @echo "==> Building PLL example ($(BIN)-$(ARCH))"
+ $(CC) -D_USE_PTHREADS $+ -L $(LIBPATH) -I $(INCPATH) $(LIBRARIES) -o $@
+
+clean :
+ -$(RM) $(BIN)-$(ARCH)
+
+.PHONY: all clean
diff --git a/examples/PLL/Makefile.AVX.clang b/examples/PLL/Makefile.AVX.clang
new file mode 100644
index 0000000..f8956da
--- /dev/null
+++ b/examples/PLL/Makefile.AVX.clang
@@ -0,0 +1,21 @@
+CC = clang
+MAKE = make
+LIBPATH = /usr/local/lib/
+INCPATH = /usr/local/include/pll/
+BIN = pll
+PLL = pll
+ARCH = avx
+LIBRARIES = -l$(PLL)-$(ARCH) -lm
+TARGET = $(BIN)-$(ARCH)
+RM = rm -f
+
+all: $(BIN)-$(ARCH)
+
+$(BIN)-$(ARCH): main.c
+ @echo "==> Building PLL example ($(BIN)-$(ARCH))"
+ $(CC) -g $+ -L $(LIBPATH) -I $(INCPATH) $(LIBRARIES) -o $@
+
+clean :
+ -$(RM) $(BIN)-$(ARCH)
+
+.PHONY: all clean
diff --git a/examples/PLL/Makefile.SSE3 b/examples/PLL/Makefile.SSE3
new file mode 100644
index 0000000..e31cd50
--- /dev/null
+++ b/examples/PLL/Makefile.SSE3
@@ -0,0 +1,19 @@
+CC = gcc
+MAKE = make
+LIBPATH = /usr/local/lib/
+INCPATH = /usr/local/include/pll/
+BIN = pll
+PLL = pll
+ARCH = sse3
+LIBRARIES = -l$(PLL)-$(ARCH) -lm
+TARGET = $(BIN)-$(ARCH)
+RM = rm -f
+
+$(BIN)-$(ARCH): main.c
+ @echo "==> Building PLL example ($(BIN)-$(ARCH))"
+ $(CC) $+ -L $(LIBPATH) -I $(INCPATH) $(LIBRARIES) -o $@
+
+clean :
+ -$(RM) $(BIN)-$(ARCH)
+
+.PHONY: all clean
diff --git a/examples/PLL/Makefile.SSE3-MPI b/examples/PLL/Makefile.SSE3-MPI
new file mode 100644
index 0000000..31dd6b1
--- /dev/null
+++ b/examples/PLL/Makefile.SSE3-MPI
@@ -0,0 +1,20 @@
+CC = mpicc
+MAKE = make
+LIBPATH = /usr/local/lib/
+INCPATH = /usr/local/include/pll/
+BIN = pll
+PLL = pll
+ARCH = sse3-mpi
+LIBRARIES = -l$(PLL)-$(ARCH) -lm
+TARGET = $(BIN)-$(ARCH)
+RM = rm -f
+
+all: $(BIN)-$(ARCH)
+
+$(BIN)-$(ARCH): main.c
+ @echo "==> Building PLL example ($(BIN)-$(ARCH))"
+ $(CC) -D_FINE_GRAIN_MPI $+ -L $(LIBPATH) -I $(INCPATH) $(LIBRARIES) -o $@
+
+clean :
+ -$(RM) $(BIN)-$(ARCH)
+.PHONY: all clean
diff --git a/examples/PLL/Makefile.SSE3-PTHREADS b/examples/PLL/Makefile.SSE3-PTHREADS
new file mode 100644
index 0000000..589df33
--- /dev/null
+++ b/examples/PLL/Makefile.SSE3-PTHREADS
@@ -0,0 +1,21 @@
+CC = gcc
+MAKE = make
+LIBPATH = /usr/local/lib/
+INCPATH = /usr/local/include/pll/
+BIN = pll
+PLL = pll
+ARCH = sse3-pthreads
+LIBRARIES = -l$(PLL)-$(ARCH) -lm -lpthread
+TARGET = $(BIN)-$(ARCH)
+RM = rm -f
+
+all: $(BIN)-$(ARCH)
+
+$(BIN)-$(ARCH): main.c
+ @echo "==> Building PLL example ($(BIN)-$(ARCH))"
+ $(CC) -D_USE_PTHREADS $+ -L $(LIBPATH) -I $(INCPATH) $(LIBRARIES) -o $@
+
+clean :
+ -$(RM) $(BIN)-$(ARCH)
+
+.PHONY: all clean
diff --git a/examples/PLL/Makefile.SSE3.clang b/examples/PLL/Makefile.SSE3.clang
new file mode 100644
index 0000000..7b8cb34
--- /dev/null
+++ b/examples/PLL/Makefile.SSE3.clang
@@ -0,0 +1,21 @@
+CC = clang
+MAKE = make
+LIBPATH = /usr/local/lib/
+INCPATH = /usr/local/include/pll/
+BIN = pll
+PLL = pll
+ARCH = sse3
+LIBRARIES = -l$(PLL)-$(ARCH) -lm
+TARGET = $(BIN)-$(ARCH)
+RM = rm -f
+
+all: $(BIN)-$(ARCH)
+
+$(BIN)-$(ARCH): main.c
+ @echo "==> Building PLL example ($(BIN)-$(ARCH))"
+ $(CC) -g $+ -L $(LIBPATH) -I $(INCPATH) $(LIBRARIES) -o $@
+
+clean :
+ -$(RM) $(BIN)-$(ARCH)
+
+.PHONY: all clean
diff --git a/examples/PLL/Makefile.am b/examples/PLL/Makefile.am
new file mode 100644
index 0000000..f5b2814
--- /dev/null
+++ b/examples/PLL/Makefile.am
@@ -0,0 +1,3 @@
+exampledir = $(docdir)/examples/PLL
+# example_DATA = main.c Makefile.AVX Makefile.SSE3 Makefile.SSE3-PTHREADS Makefile.SSE3-MPI Makefile.AVX-PTHREADS Makefile.AVX-MPI Makefile.AVX.clang Makefile.SSE3.clang
+dist_example_DATA = main.c Makefile.AVX Makefile.SSE3 Makefile.SSE3-PTHREADS Makefile.SSE3-MPI Makefile.AVX-PTHREADS Makefile.AVX-MPI Makefile.AVX.clang Makefile.SSE3.clang
diff --git a/examples/PLL/Makefile.in b/examples/PLL/Makefile.in
new file mode 100644
index 0000000..4be138f
--- /dev/null
+++ b/examples/PLL/Makefile.in
@@ -0,0 +1,495 @@
+# Makefile.in generated by automake 1.14.1 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994-2013 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.
+
+ at SET_MAKE@
+
+VPATH = @srcdir@
+am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__make_running_with_option = \
+ case $${target_option-} in \
+ ?) ;; \
+ *) echo "am__make_running_with_option: internal error: invalid" \
+ "target option '$${target_option-}' specified" >&2; \
+ exit 1;; \
+ esac; \
+ has_opt=no; \
+ sane_makeflags=$$MAKEFLAGS; \
+ if $(am__is_gnu_make); then \
+ sane_makeflags=$$MFLAGS; \
+ else \
+ case $$MAKEFLAGS in \
+ *\\[\ \ ]*) \
+ bs=\\; \
+ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
+ esac; \
+ fi; \
+ skip_next=no; \
+ strip_trailopt () \
+ { \
+ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+ }; \
+ for flg in $$sane_makeflags; do \
+ test $$skip_next = yes && { skip_next=no; continue; }; \
+ case $$flg in \
+ *=*|--*) continue;; \
+ -*I) strip_trailopt 'I'; skip_next=yes;; \
+ -*I?*) strip_trailopt 'I';; \
+ -*O) strip_trailopt 'O'; skip_next=yes;; \
+ -*O?*) strip_trailopt 'O';; \
+ -*l) strip_trailopt 'l'; skip_next=yes;; \
+ -*l?*) strip_trailopt 'l';; \
+ -[dEDm]) skip_next=yes;; \
+ -[JT]) skip_next=yes;; \
+ esac; \
+ case $$flg in \
+ *$$target_option*) has_opt=yes; break;; \
+ esac; \
+ done; \
+ test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+subdir = examples/PLL
+DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
+ $(dist_example_DATA)
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/ax_check_compile_flag.m4 \
+ $(top_srcdir)/m4/ax_ext.m4 \
+ $(top_srcdir)/m4/ax_gcc_x86_cpuid.m4 \
+ $(top_srcdir)/m4/ax_mpi.m4 $(top_srcdir)/m4/libtool.m4 \
+ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+ $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+AM_V_P = $(am__v_P_ at AM_V@)
+am__v_P_ = $(am__v_P_ at AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_ at AM_V@)
+am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
+am__v_GEN_0 = @echo " GEN " $@;
+am__v_GEN_1 =
+AM_V_at = $(am__v_at_ at AM_V@)
+am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 =
+SOURCES =
+DIST_SOURCES =
+am__can_run_installinfo = \
+ case $$AM_UPDATE_INFO_DIR in \
+ n|no|NO) false;; \
+ *) (install-info --version) >/dev/null 2>&1;; \
+ esac
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+ *) f=$$p;; \
+ esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+ for p in $$list; do echo "$$p $$p"; done | \
+ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+ if (++n[$$2] == $(am__install_max)) \
+ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+ END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+ test -z "$$files" \
+ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+ $(am__cd) "$$dir" && rm -f $$files; }; \
+ }
+am__installdirs = "$(DESTDIR)$(exampledir)"
+DATA = $(dist_example_DATA)
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DLLTOOL = @DLLTOOL@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+GREP = @GREP@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBPLL_MAJOR = @LIBPLL_MAJOR@
+LIBPLL_MINOR = @LIBPLL_MINOR@
+LIBPLL_REV = @LIBPLL_REV@
+LIBPLL_VERSION = @LIBPLL_VERSION@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MKDIR_P = @MKDIR_P@
+MPICC = @MPICC@
+MPILIBS = @MPILIBS@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SIMD_FLAGS = @SIMD_FLAGS@
+STRIP = @STRIP@
+VERSION = @VERSION@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+exampledir = $(docdir)/examples/PLL
+# example_DATA = main.c Makefile.AVX Makefile.SSE3 Makefile.SSE3-PTHREADS Makefile.SSE3-MPI Makefile.AVX-PTHREADS Makefile.AVX-MPI Makefile.AVX.clang Makefile.SSE3.clang
+dist_example_DATA = main.c Makefile.AVX Makefile.SSE3 Makefile.SSE3-PTHREADS Makefile.SSE3-MPI Makefile.AVX-PTHREADS Makefile.AVX-MPI Makefile.AVX.clang Makefile.SSE3.clang
+all: all-am
+
+.SUFFIXES:
+$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu examples/PLL/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --gnu examples/PLL/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+install-dist_exampleDATA: $(dist_example_DATA)
+ @$(NORMAL_INSTALL)
+ @list='$(dist_example_DATA)'; test -n "$(exampledir)" || list=; \
+ if test -n "$$list"; then \
+ echo " $(MKDIR_P) '$(DESTDIR)$(exampledir)'"; \
+ $(MKDIR_P) "$(DESTDIR)$(exampledir)" || exit 1; \
+ fi; \
+ for p in $$list; do \
+ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+ echo "$$d$$p"; \
+ done | $(am__base_list) | \
+ while read files; do \
+ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(exampledir)'"; \
+ $(INSTALL_DATA) $$files "$(DESTDIR)$(exampledir)" || exit $$?; \
+ done
+
+uninstall-dist_exampleDATA:
+ @$(NORMAL_UNINSTALL)
+ @list='$(dist_example_DATA)'; test -n "$(exampledir)" || list=; \
+ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+ dir='$(DESTDIR)$(exampledir)'; $(am__uninstall_files_from_dir)
+tags TAGS:
+
+ctags CTAGS:
+
+cscope cscopelist:
+
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+ else \
+ test -f "$(distdir)/$$file" \
+ || cp -p $$d/$$file "$(distdir)/$$file" \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+check: check-am
+all-am: Makefile $(DATA)
+installdirs:
+ for dir in "$(DESTDIR)$(exampledir)"; do \
+ test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+ done
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ if test -z '$(STRIP)'; then \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ install; \
+ else \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+ fi
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic clean-libtool mostlyclean-am
+
+distclean: distclean-am
+ -rm -f Makefile
+distclean-am: clean-am distclean-generic
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am: install-dist_exampleDATA
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-generic mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-dist_exampleDATA
+
+.MAKE: install-am install-strip
+
+.PHONY: all all-am check check-am clean clean-generic clean-libtool \
+ cscopelist-am ctags-am distclean distclean-generic \
+ distclean-libtool distdir dvi dvi-am html html-am info info-am \
+ install install-am install-data install-data-am \
+ install-dist_exampleDATA install-dvi install-dvi-am \
+ install-exec install-exec-am install-html install-html-am \
+ install-info install-info-am install-man install-pdf \
+ install-pdf-am install-ps install-ps-am install-strip \
+ installcheck installcheck-am installdirs maintainer-clean \
+ maintainer-clean-generic mostlyclean mostlyclean-generic \
+ mostlyclean-libtool pdf pdf-am ps ps-am tags-am uninstall \
+ uninstall-am uninstall-dist_exampleDATA
+
+
+# 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/examples/PLL/main.c b/examples/PLL/main.c
new file mode 100644
index 0000000..732e346
--- /dev/null
+++ b/examples/PLL/main.c
@@ -0,0 +1,238 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <assert.h>
+#include <pll.h>
+
+int main (int argc, char * argv[])
+{
+ pllAlignmentData * alignmentData;
+ pllInstance * tree;
+ pllNewickTree * newick;
+ partitionList * partitions;
+ pllQueue * partitionInfo;
+ pllInstanceAttr attr;
+ pllRearrangeList * rearrangeList;
+
+ int i,
+ useDefaultBranchLengths = PLL_TRUE,
+ fullTraversal = PLL_TRUE,
+ perSiteLikelihoods = PLL_FALSE,
+ saveRollbackInfo = PLL_TRUE;
+
+#ifdef _FINE_GRAIN_MPI
+ pllInitMPI (&argc, &argv);
+#endif
+
+ if (argc < 4)
+ {
+ fprintf (stderr, "usage: %s [phylip-file] [newick-file] [partition-file] [threads]\n", argv[0]);
+ return (EXIT_FAILURE);
+ }
+
+#ifdef _USE_PTHREADS
+ /* The number of threads must be greater than 0 */
+ if ((argc > 4) && (atoi(argv[4]) <= 0)) {
+ fprintf (stderr, "Error: The number of threads must be greater than 0\n");
+ return (EXIT_FAILURE);
+ }
+#endif
+
+ /* Set the PLL instance attributes */
+ attr.rateHetModel = PLL_GAMMA;
+ attr.fastScaling = PLL_FALSE;
+ attr.saveMemory = PLL_FALSE;
+ attr.useRecom = PLL_FALSE;
+ attr.randomNumberSeed = 0xDEADBEEF;
+ attr.numberOfThreads = (argc > 4) ? atoi(argv[4]) : 2; /* This only affects the pthreads version */
+
+ /* Create a PLL tree */
+ tree = pllCreateInstance (&attr);
+
+ if (!tree) {
+ fprintf (stderr, "Error creating PLL instance\n");
+ return (EXIT_FAILURE);
+ }
+
+
+ /* Parse a PHYLIP file */
+ alignmentData = pllParseAlignmentFile (PLL_FORMAT_PHYLIP, argv[1]);
+
+ if (!alignmentData)
+ {
+ fprintf (stderr, "Error while parsing %s\n", argv[1]);
+ return (EXIT_FAILURE);
+ }
+
+
+ /* Parse a NEWICK file */
+ newick = pllNewickParseFile (argv[2]);
+
+ if (!newick)
+ {
+ fprintf (stderr, "Error while parsing newick file %s\n", argv[2]);
+ return (EXIT_FAILURE);
+ }
+
+ /* check whether the valid newick tree is also a tree that can be processed with our nodeptr structure */
+ if (!pllValidateNewick (newick))
+ {
+ fprintf (stderr, "Invalid phylogenetic tree\n");
+ printf ("%d\n", errno);
+ return (EXIT_FAILURE);
+ }
+
+ /* Parse the partitions file into a partition queue structure */
+ partitionInfo = pllPartitionParse (argv[3]);
+
+ if (!pllPartitionsValidate (partitionInfo, alignmentData))
+ {
+ fprintf (stderr, "Error: Partitions do not cover all sites\n");
+ return (EXIT_FAILURE);
+ }
+
+ /* Commit the partitions and build a partitions structure */
+ partitions = pllPartitionsCommit (partitionInfo, alignmentData);
+ partitions->perGeneBranchLengths = PLL_TRUE;
+
+ /* We don't need the the intermedia partition queue structure anymore */
+ pllQueuePartitionsDestroy (&partitionInfo);
+
+ /* eliminate duplicate sites from the alignment and update weights vector */
+ pllAlignmentRemoveDups (alignmentData, partitions);
+
+ /* Set the topology of the PLL tree from a parsed newick tree */
+ pllTreeInitTopologyNewick (tree, newick, useDefaultBranchLengths);
+
+ /* Or instead of the previous function use the next commented line to create
+ a random tree topology
+ pllTreeInitTopologyRandom (tree, alignmentData->sequenceCount, alignmentData->sequenceLabels); */
+
+ /* Connect the alignment and partition structure with the tree structure */
+ if (!pllLoadAlignment (tree, alignmentData, partitions))
+ {
+ fprintf (stderr, "Incompatible tree/alignment combination\n");
+ return (EXIT_FAILURE);
+ }
+
+ /* Initialize the model and starts PTHREADS (if it applies). Note that this function
+ will also perform a full tree traversal and evaluate the likelihood of the tree.
+ Therefore, you have the guarantee that tr->likelihood contains the valid likelihood */
+ pllInitModel(tree, partitions);
+
+ pllOptimizeBranchLengths (tree, partitions, 64);
+
+ printf ("Log-likelihood of topology: %f\n", tree->likelihood);
+
+ /* Create a list that will hold information for at most 20 rearrangement moves */
+ rearrangeList = pllCreateRearrangeList (20);
+
+
+ /* The next flag specifies that PLL optimizes the length of the new branch
+ that is created by an SPR move */
+ tree->thoroughInsertion = PLL_FALSE;
+
+ /* Note that the following commands will fill the list with at most 20
+ SPR and NNI rearrangement moves, i.e. the best 20 will appear in the
+ list */
+ printf ("Computing the best 20 SPR and NNI rearrangements in radius (1,20)\n");
+ pllRearrangeSearch (tree,
+ partitions,
+ PLL_REARRANGE_SPR,
+ tree->nodep[tree->mxtips + 1],
+ 1,
+ 20,
+ rearrangeList);
+
+ pllRearrangeSearch (tree,
+ partitions,
+ PLL_REARRANGE_NNI,
+ tree->nodep[tree->mxtips + 1],
+ 1,
+ 20,
+ rearrangeList);
+
+ printf ("Number of computed rearrangements: %d\n", rearrangeList->entries);
+ printf ("------------------------------------\n");
+
+ for (i = 0; i < rearrangeList->entries; ++ i)
+ {
+ printf ("%2d Type: %s Log-likelihood: %f\n",
+ i,
+ rearrangeList->rearr[i].rearrangeType == PLL_REARRANGE_SPR ?
+ "SPR" : "NNI",
+ rearrangeList->rearr[i].likelihood);
+ }
+
+
+ printf ("Committing move 0\n");
+ pllRearrangeCommit(tree, partitions, &(rearrangeList->rearr[0]), saveRollbackInfo);
+
+ fullTraversal = PLL_TRUE;
+ pllEvaluateLikelihood (tree, partitions, tree->start, fullTraversal, perSiteLikelihoods);
+ printf ("New log-likelihood: %f\n\n", tree->likelihood);
+
+ /* We don't need the rearrange list anymore */
+ pllDestroyRearrangeList (&rearrangeList);
+
+ /* Now let's create another list and compute 30 rearrangement moves */
+ rearrangeList = pllCreateRearrangeList (30);
+
+ /* The next flag specifies that the length of the new branch that is created
+ by an SPR move need not be optimized */
+ tree->thoroughInsertion = PLL_TRUE;
+
+ printf ("Computing the best 30 SPR in radius (1,30)\n");
+ pllRearrangeSearch (tree, partitions,
+ PLL_REARRANGE_SPR,
+ tree->nodep[tree->mxtips + 1],
+ 1,
+ 30,
+ rearrangeList);
+
+ printf ("Number of computed rearrangements: %d\n", rearrangeList->entries);
+ printf ("------------------------------------\n");
+ for (i = 0; i < rearrangeList->entries; ++ i)
+ {
+ printf ("%2d Type: SPR Likelihood: %f\n", i, rearrangeList->rearr[i].likelihood);
+ }
+
+ printf ("Committing rearrangeList->rearr[0]\n");
+ pllRearrangeCommit (tree, partitions, &(rearrangeList->rearr[0]), saveRollbackInfo);
+
+ fullTraversal = PLL_FALSE;
+ pllEvaluateLikelihood (tree, partitions, tree->start, fullTraversal, perSiteLikelihoods);
+ printf ("New log-likelihood: %f\n\n", tree->likelihood);
+
+ /* Rolling back to the previous topology. Note that if we evaluate the
+ likelihood with a partial traversal we might get an invalid log likelihood.
+ This is due to the fact that the likelihood vectors no longer correspond
+ to the old topology, hence we need to do full traversal. I left the
+ partial traversal here as an example */
+ printf ("Rolling back...\n");
+ pllRearrangeRollback (tree, partitions);
+ pllEvaluateLikelihood (tree, partitions, tree->start, fullTraversal, perSiteLikelihoods);
+ printf ("New log-likelihood: %f\n\n", tree->likelihood);
+
+ /* We do one more rollback to get to the original topology, but this time we
+ do a full traversal to fix the log-likelihood to the correct value plus we
+ do branch-length optimization */
+ printf ("Rolling back...\n");
+ pllRearrangeRollback (tree, partitions);
+
+ fullTraversal = PLL_TRUE;
+ pllEvaluateLikelihood (tree, partitions, tree->start, fullTraversal, perSiteLikelihoods);
+ pllOptimizeBranchLengths (tree, partitions, 64);
+ printf ("New log-likelihood: %f\n\n", tree->likelihood);
+
+ /* DEallocate the rearrange list */
+ pllDestroyRearrangeList (&rearrangeList);
+
+ /* Do some cleanup */
+ pllAlignmentDataDestroy (alignmentData);
+ pllNewickParseDestroy (&newick);
+ /* This function also stops PTHREADS if it applies */
+ pllPartitionsDestroy (tree, &partitions);
+ pllDestroyInstance (tree);
+
+ return (EXIT_SUCCESS);
+}
diff --git a/examples/README b/examples/README
new file mode 100644
index 0000000..ed591ae
--- /dev/null
+++ b/examples/README
@@ -0,0 +1,11 @@
+Some examples for using PLL
+
+PLL/
+
+A simple example that loads a multiple sequence alignment from a PHYLIP file, a starting tree from
+a newick file and a text file that describes partition and substitution model assignment. It then
+evaluates the log likelihood of that tree, and performs several SPR moves to obtain a topology that
+yields a better likelihood.
+
+complexTest/
+
diff --git a/install-sh b/install-sh
new file mode 100755
index 0000000..377bb86
--- /dev/null
+++ b/install-sh
@@ -0,0 +1,527 @@
+#!/bin/sh
+# install - install a program, script, or datafile
+
+scriptversion=2011-11-20.07; # UTC
+
+# This originates from X11R5 (mit/util/scripts/install.sh), which was
+# later released in X11R6 (xc/config/util/install.sh) with the
+# following copyright and license.
+#
+# Copyright (C) 1994 X Consortium
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documentation files (the "Software"), to
+# deal in the Software without restriction, including without limitation the
+# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
+# sell copies of the Software, and to permit persons to whom the Software is
+# furnished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+# AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC-
+# TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+#
+# Except as contained in this notice, the name of the X Consortium shall not
+# be used in advertising or otherwise to promote the sale, use or other deal-
+# ings in this Software without prior written authorization from the X Consor-
+# tium.
+#
+#
+# FSF changes to this file are in the public domain.
+#
+# Calling this script install-sh is preferred over install.sh, to prevent
+# 'make' implicit rules from creating a file called install from it
+# when there is no Makefile.
+#
+# This script is compatible with the BSD install script, but was written
+# from scratch.
+
+nl='
+'
+IFS=" "" $nl"
+
+# set DOITPROG to echo to test this script
+
+# Don't use :- since 4.3BSD and earlier shells don't like it.
+doit=${DOITPROG-}
+if test -z "$doit"; then
+ doit_exec=exec
+else
+ doit_exec=$doit
+fi
+
+# Put in absolute file names if you don't have them in your path;
+# or use environment vars.
+
+chgrpprog=${CHGRPPROG-chgrp}
+chmodprog=${CHMODPROG-chmod}
+chownprog=${CHOWNPROG-chown}
+cmpprog=${CMPPROG-cmp}
+cpprog=${CPPROG-cp}
+mkdirprog=${MKDIRPROG-mkdir}
+mvprog=${MVPROG-mv}
+rmprog=${RMPROG-rm}
+stripprog=${STRIPPROG-strip}
+
+posix_glob='?'
+initialize_posix_glob='
+ test "$posix_glob" != "?" || {
+ if (set -f) 2>/dev/null; then
+ posix_glob=
+ else
+ posix_glob=:
+ fi
+ }
+'
+
+posix_mkdir=
+
+# Desired mode of installed file.
+mode=0755
+
+chgrpcmd=
+chmodcmd=$chmodprog
+chowncmd=
+mvcmd=$mvprog
+rmcmd="$rmprog -f"
+stripcmd=
+
+src=
+dst=
+dir_arg=
+dst_arg=
+
+copy_on_change=false
+no_target_directory=
+
+usage="\
+Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE
+ or: $0 [OPTION]... SRCFILES... DIRECTORY
+ or: $0 [OPTION]... -t DIRECTORY SRCFILES...
+ or: $0 [OPTION]... -d DIRECTORIES...
+
+In the 1st form, copy SRCFILE to DSTFILE.
+In the 2nd and 3rd, copy all SRCFILES to DIRECTORY.
+In the 4th, create DIRECTORIES.
+
+Options:
+ --help display this help and exit.
+ --version display version info and exit.
+
+ -c (ignored)
+ -C install only if different (preserve the last data modification time)
+ -d create directories instead of installing files.
+ -g GROUP $chgrpprog installed files to GROUP.
+ -m MODE $chmodprog installed files to MODE.
+ -o USER $chownprog installed files to USER.
+ -s $stripprog installed files.
+ -t DIRECTORY install into DIRECTORY.
+ -T report an error if DSTFILE is a directory.
+
+Environment variables override the default commands:
+ CHGRPPROG CHMODPROG CHOWNPROG CMPPROG CPPROG MKDIRPROG MVPROG
+ RMPROG STRIPPROG
+"
+
+while test $# -ne 0; do
+ case $1 in
+ -c) ;;
+
+ -C) copy_on_change=true;;
+
+ -d) dir_arg=true;;
+
+ -g) chgrpcmd="$chgrpprog $2"
+ shift;;
+
+ --help) echo "$usage"; exit $?;;
+
+ -m) mode=$2
+ case $mode in
+ *' '* | *' '* | *'
+'* | *'*'* | *'?'* | *'['*)
+ echo "$0: invalid mode: $mode" >&2
+ exit 1;;
+ esac
+ shift;;
+
+ -o) chowncmd="$chownprog $2"
+ shift;;
+
+ -s) stripcmd=$stripprog;;
+
+ -t) dst_arg=$2
+ # Protect names problematic for 'test' and other utilities.
+ case $dst_arg in
+ -* | [=\(\)!]) dst_arg=./$dst_arg;;
+ esac
+ shift;;
+
+ -T) no_target_directory=true;;
+
+ --version) echo "$0 $scriptversion"; exit $?;;
+
+ --) shift
+ break;;
+
+ -*) echo "$0: invalid option: $1" >&2
+ exit 1;;
+
+ *) break;;
+ esac
+ shift
+done
+
+if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then
+ # When -d is used, all remaining arguments are directories to create.
+ # When -t is used, the destination is already specified.
+ # Otherwise, the last argument is the destination. Remove it from $@.
+ for arg
+ do
+ if test -n "$dst_arg"; then
+ # $@ is not empty: it contains at least $arg.
+ set fnord "$@" "$dst_arg"
+ shift # fnord
+ fi
+ shift # arg
+ dst_arg=$arg
+ # Protect names problematic for 'test' and other utilities.
+ case $dst_arg in
+ -* | [=\(\)!]) dst_arg=./$dst_arg;;
+ esac
+ done
+fi
+
+if test $# -eq 0; then
+ if test -z "$dir_arg"; then
+ echo "$0: no input file specified." >&2
+ exit 1
+ fi
+ # It's OK to call 'install-sh -d' without argument.
+ # This can happen when creating conditional directories.
+ exit 0
+fi
+
+if test -z "$dir_arg"; then
+ do_exit='(exit $ret); exit $ret'
+ trap "ret=129; $do_exit" 1
+ trap "ret=130; $do_exit" 2
+ trap "ret=141; $do_exit" 13
+ trap "ret=143; $do_exit" 15
+
+ # Set umask so as not to create temps with too-generous modes.
+ # However, 'strip' requires both read and write access to temps.
+ case $mode in
+ # Optimize common cases.
+ *644) cp_umask=133;;
+ *755) cp_umask=22;;
+
+ *[0-7])
+ if test -z "$stripcmd"; then
+ u_plus_rw=
+ else
+ u_plus_rw='% 200'
+ fi
+ cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;;
+ *)
+ if test -z "$stripcmd"; then
+ u_plus_rw=
+ else
+ u_plus_rw=,u+rw
+ fi
+ cp_umask=$mode$u_plus_rw;;
+ esac
+fi
+
+for src
+do
+ # Protect names problematic for 'test' and other utilities.
+ case $src in
+ -* | [=\(\)!]) src=./$src;;
+ esac
+
+ if test -n "$dir_arg"; then
+ dst=$src
+ dstdir=$dst
+ test -d "$dstdir"
+ dstdir_status=$?
+ else
+
+ # Waiting for this to be detected by the "$cpprog $src $dsttmp" command
+ # might cause directories to be created, which would be especially bad
+ # if $src (and thus $dsttmp) contains '*'.
+ if test ! -f "$src" && test ! -d "$src"; then
+ echo "$0: $src does not exist." >&2
+ exit 1
+ fi
+
+ if test -z "$dst_arg"; then
+ echo "$0: no destination specified." >&2
+ exit 1
+ fi
+ dst=$dst_arg
+
+ # If destination is a directory, append the input filename; won't work
+ # if double slashes aren't ignored.
+ if test -d "$dst"; then
+ if test -n "$no_target_directory"; then
+ echo "$0: $dst_arg: Is a directory" >&2
+ exit 1
+ fi
+ dstdir=$dst
+ dst=$dstdir/`basename "$src"`
+ dstdir_status=0
+ else
+ # Prefer dirname, but fall back on a substitute if dirname fails.
+ dstdir=`
+ (dirname "$dst") 2>/dev/null ||
+ expr X"$dst" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$dst" : 'X\(//\)[^/]' \| \
+ X"$dst" : 'X\(//\)$' \| \
+ X"$dst" : 'X\(/\)' \| . 2>/dev/null ||
+ echo X"$dst" |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)[^/].*/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\).*/{
+ s//\1/
+ q
+ }
+ s/.*/./; q'
+ `
+
+ test -d "$dstdir"
+ dstdir_status=$?
+ fi
+ fi
+
+ obsolete_mkdir_used=false
+
+ if test $dstdir_status != 0; then
+ case $posix_mkdir in
+ '')
+ # Create intermediate dirs using mode 755 as modified by the umask.
+ # This is like FreeBSD 'install' as of 1997-10-28.
+ umask=`umask`
+ case $stripcmd.$umask in
+ # Optimize common cases.
+ *[2367][2367]) mkdir_umask=$umask;;
+ .*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;;
+
+ *[0-7])
+ mkdir_umask=`expr $umask + 22 \
+ - $umask % 100 % 40 + $umask % 20 \
+ - $umask % 10 % 4 + $umask % 2
+ `;;
+ *) mkdir_umask=$umask,go-w;;
+ esac
+
+ # With -d, create the new directory with the user-specified mode.
+ # Otherwise, rely on $mkdir_umask.
+ if test -n "$dir_arg"; then
+ mkdir_mode=-m$mode
+ else
+ mkdir_mode=
+ fi
+
+ posix_mkdir=false
+ case $umask in
+ *[123567][0-7][0-7])
+ # POSIX mkdir -p sets u+wx bits regardless of umask, which
+ # is incompatible with FreeBSD 'install' when (umask & 300) != 0.
+ ;;
+ *)
+ tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$
+ trap 'ret=$?; rmdir "$tmpdir/d" "$tmpdir" 2>/dev/null; exit $ret' 0
+
+ if (umask $mkdir_umask &&
+ exec $mkdirprog $mkdir_mode -p -- "$tmpdir/d") >/dev/null 2>&1
+ then
+ if test -z "$dir_arg" || {
+ # Check for POSIX incompatibilities with -m.
+ # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or
+ # other-writable bit of parent directory when it shouldn't.
+ # FreeBSD 6.1 mkdir -m -p sets mode of existing directory.
+ ls_ld_tmpdir=`ls -ld "$tmpdir"`
+ case $ls_ld_tmpdir in
+ d????-?r-*) different_mode=700;;
+ d????-?--*) different_mode=755;;
+ *) false;;
+ esac &&
+ $mkdirprog -m$different_mode -p -- "$tmpdir" && {
+ ls_ld_tmpdir_1=`ls -ld "$tmpdir"`
+ test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1"
+ }
+ }
+ then posix_mkdir=:
+ fi
+ rmdir "$tmpdir/d" "$tmpdir"
+ else
+ # Remove any dirs left behind by ancient mkdir implementations.
+ rmdir ./$mkdir_mode ./-p ./-- 2>/dev/null
+ fi
+ trap '' 0;;
+ esac;;
+ esac
+
+ if
+ $posix_mkdir && (
+ umask $mkdir_umask &&
+ $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir"
+ )
+ then :
+ else
+
+ # The umask is ridiculous, or mkdir does not conform to POSIX,
+ # or it failed possibly due to a race condition. Create the
+ # directory the slow way, step by step, checking for races as we go.
+
+ case $dstdir in
+ /*) prefix='/';;
+ [-=\(\)!]*) prefix='./';;
+ *) prefix='';;
+ esac
+
+ eval "$initialize_posix_glob"
+
+ oIFS=$IFS
+ IFS=/
+ $posix_glob set -f
+ set fnord $dstdir
+ shift
+ $posix_glob set +f
+ IFS=$oIFS
+
+ prefixes=
+
+ for d
+ do
+ test X"$d" = X && continue
+
+ prefix=$prefix$d
+ if test -d "$prefix"; then
+ prefixes=
+ else
+ if $posix_mkdir; then
+ (umask=$mkdir_umask &&
+ $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break
+ # Don't fail if two instances are running concurrently.
+ test -d "$prefix" || exit 1
+ else
+ case $prefix in
+ *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;;
+ *) qprefix=$prefix;;
+ esac
+ prefixes="$prefixes '$qprefix'"
+ fi
+ fi
+ prefix=$prefix/
+ done
+
+ if test -n "$prefixes"; then
+ # Don't fail if two instances are running concurrently.
+ (umask $mkdir_umask &&
+ eval "\$doit_exec \$mkdirprog $prefixes") ||
+ test -d "$dstdir" || exit 1
+ obsolete_mkdir_used=true
+ fi
+ fi
+ fi
+
+ if test -n "$dir_arg"; then
+ { test -z "$chowncmd" || $doit $chowncmd "$dst"; } &&
+ { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } &&
+ { test "$obsolete_mkdir_used$chowncmd$chgrpcmd" = false ||
+ test -z "$chmodcmd" || $doit $chmodcmd $mode "$dst"; } || exit 1
+ else
+
+ # Make a couple of temp file names in the proper directory.
+ dsttmp=$dstdir/_inst.$$_
+ rmtmp=$dstdir/_rm.$$_
+
+ # Trap to clean up those temp files at exit.
+ trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0
+
+ # Copy the file name to the temp name.
+ (umask $cp_umask && $doit_exec $cpprog "$src" "$dsttmp") &&
+
+ # and set any options; do chmod last to preserve setuid bits.
+ #
+ # If any of these fail, we abort the whole thing. If we want to
+ # ignore errors from any of these, just make sure not to ignore
+ # errors from the above "$doit $cpprog $src $dsttmp" command.
+ #
+ { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } &&
+ { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } &&
+ { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } &&
+ { test -z "$chmodcmd" || $doit $chmodcmd $mode "$dsttmp"; } &&
+
+ # If -C, don't bother to copy if it wouldn't change the file.
+ if $copy_on_change &&
+ old=`LC_ALL=C ls -dlL "$dst" 2>/dev/null` &&
+ new=`LC_ALL=C ls -dlL "$dsttmp" 2>/dev/null` &&
+
+ eval "$initialize_posix_glob" &&
+ $posix_glob set -f &&
+ set X $old && old=:$2:$4:$5:$6 &&
+ set X $new && new=:$2:$4:$5:$6 &&
+ $posix_glob set +f &&
+
+ test "$old" = "$new" &&
+ $cmpprog "$dst" "$dsttmp" >/dev/null 2>&1
+ then
+ rm -f "$dsttmp"
+ else
+ # Rename the file to the real destination.
+ $doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null ||
+
+ # The rename failed, perhaps because mv can't rename something else
+ # to itself, or perhaps because mv is so ancient that it does not
+ # support -f.
+ {
+ # Now remove or move aside any old file at destination location.
+ # We try this two ways since rm can't unlink itself on some
+ # systems and the destination file might be busy for other
+ # reasons. In this case, the final cleanup might fail but the new
+ # file should still install successfully.
+ {
+ test ! -f "$dst" ||
+ $doit $rmcmd -f "$dst" 2>/dev/null ||
+ { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null &&
+ { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; }
+ } ||
+ { echo "$0: cannot unlink or rename $dst" >&2
+ (exit 1); exit 1
+ }
+ } &&
+
+ # Now rename the file to the real destination.
+ $doit $mvcmd "$dsttmp" "$dst"
+ }
+ fi || exit 1
+
+ trap '' 0
+ fi
+done
+
+# Local variables:
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "scriptversion="
+# time-stamp-format: "%:y-%02m-%02d.%02H"
+# time-stamp-time-zone: "UTC"
+# time-stamp-end: "; # UTC"
+# End:
diff --git a/ltmain.sh b/ltmain.sh
new file mode 100644
index 0000000..a356aca
--- /dev/null
+++ b/ltmain.sh
@@ -0,0 +1,9661 @@
+
+# libtool (GNU libtool) 2.4.2
+# Written by Gordon Matzigkeit <gord at gnu.ai.mit.edu>, 1996
+
+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006,
+# 2007, 2008, 2009, 2010, 2011 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.
+
+# GNU Libtool 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.
+#
+# As a special exception to the GNU General Public License,
+# if you distribute this file as part of a program or library that
+# is built using GNU Libtool, you may include this file under the
+# same distribution terms that you use for the rest of that program.
+#
+# GNU Libtool 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 GNU Libtool; see the file COPYING. If not, a copy
+# can be downloaded from http://www.gnu.org/licenses/gpl.html,
+# or obtained by writing to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+
+# Usage: $progname [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
+# --mode=MODE use operation mode MODE
+# --preserve-dup-deps don't remove duplicate dependency libraries
+# --quiet, --silent don't print informational messages
+# --no-quiet, --no-silent
+# print informational messages (default)
+# --no-warn don't display warning messages
+# --tag=TAG use configuration variables from tag TAG
+# -v, --verbose print more informational messages than default
+# --no-verbose don't print the extra informational messages
+# --version print version information
+# -h, --help, --help-all print short, long, or detailed help message
+#
+# 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. When passed as first option,
+# `--mode=MODE' may be abbreviated as `MODE' or a unique abbreviation of that.
+# Try `$progname --help --mode=MODE' for a more detailed description of MODE.
+#
+# When reporting a bug, please describe a test case to reproduce it and
+# include the following information:
+#
+# host-triplet: $host
+# shell: $SHELL
+# compiler: $LTCC
+# compiler flags: $LTCFLAGS
+# linker: $LD (gnu? $with_gnu_ld)
+# $progname: (GNU libtool) 2.4.2 Debian-2.4.2-1.7ubuntu1
+# automake: $automake_version
+# autoconf: $autoconf_version
+#
+# Report bugs to <bug-libtool at gnu.org>.
+# GNU libtool home page: <http://www.gnu.org/software/libtool/>.
+# General help using GNU software: <http://www.gnu.org/gethelp/>.
+
+PROGRAM=libtool
+PACKAGE=libtool
+VERSION="2.4.2 Debian-2.4.2-1.7ubuntu1"
+TIMESTAMP=""
+package_revision=1.3337
+
+# 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+"$@"}'='"$@"'
+ setopt NO_GLOB_SUBST
+else
+ case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac
+fi
+BIN_SH=xpg4; export BIN_SH # for Tru64
+DUALCASE=1; export DUALCASE # for MKS sh
+
+# A function that is used when there is no print builtin or printf.
+func_fallback_echo ()
+{
+ eval 'cat <<_LTECHO_EOF
+$1
+_LTECHO_EOF'
+}
+
+# NLS nuisances: We save the old values to restore during execute mode.
+lt_user_locale=
+lt_safe_locale=
+for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES
+do
+ eval "if test \"\${$lt_var+set}\" = set; then
+ save_$lt_var=\$$lt_var
+ $lt_var=C
+ export $lt_var
+ lt_user_locale=\"$lt_var=\\\$save_\$lt_var; \$lt_user_locale\"
+ lt_safe_locale=\"$lt_var=C; \$lt_safe_locale\"
+ fi"
+done
+LC_ALL=C
+LANGUAGE=C
+export LANGUAGE LC_ALL
+
+$lt_unset CDPATH
+
+
+# Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh
+# is ksh but when the shell is invoked as "sh" and the current value of
+# the _XPG environment variable is not equal to 1 (one), the special
+# positional parameter $0, within a function call, is the name of the
+# function.
+progpath="$0"
+
+
+
+: ${CP="cp -f"}
+test "${ECHO+set}" = set || ECHO=${as_echo-'printf %s\n'}
+: ${MAKE="make"}
+: ${MKDIR="mkdir"}
+: ${MV="mv -f"}
+: ${RM="rm -f"}
+: ${SHELL="${CONFIG_SHELL-/bin/sh}"}
+: ${Xsed="$SED -e 1s/^X//"}
+
+# Global variables:
+EXIT_SUCCESS=0
+EXIT_FAILURE=1
+EXIT_MISMATCH=63 # $? = 63 is used to indicate version mismatch to missing.
+EXIT_SKIP=77 # $? = 77 is used to indicate a skipped test to automake.
+
+exit_status=$EXIT_SUCCESS
+
+# Make sure IFS has a sensible default
+lt_nl='
+'
+IFS=" $lt_nl"
+
+dirname="s,/[^/]*$,,"
+basename="s,^.*/,,"
+
+# func_dirname file append nondir_replacement
+# Compute the dirname of FILE. If nonempty, add APPEND to the result,
+# otherwise set result to NONDIR_REPLACEMENT.
+func_dirname ()
+{
+ func_dirname_result=`$ECHO "${1}" | $SED "$dirname"`
+ if test "X$func_dirname_result" = "X${1}"; then
+ func_dirname_result="${3}"
+ else
+ func_dirname_result="$func_dirname_result${2}"
+ fi
+} # func_dirname may be replaced by extended shell implementation
+
+
+# func_basename file
+func_basename ()
+{
+ func_basename_result=`$ECHO "${1}" | $SED "$basename"`
+} # func_basename may be replaced by extended shell implementation
+
+
+# func_dirname_and_basename file append nondir_replacement
+# perform func_basename and func_dirname in a single function
+# call:
+# dirname: Compute the dirname of FILE. If nonempty,
+# add APPEND to the result, otherwise set result
+# to NONDIR_REPLACEMENT.
+# value returned in "$func_dirname_result"
+# basename: Compute filename of FILE.
+# value retuned in "$func_basename_result"
+# Implementation must be kept synchronized with func_dirname
+# and func_basename. For efficiency, we do not delegate to
+# those functions but instead duplicate the functionality here.
+func_dirname_and_basename ()
+{
+ # Extract subdirectory from the argument.
+ func_dirname_result=`$ECHO "${1}" | $SED -e "$dirname"`
+ if test "X$func_dirname_result" = "X${1}"; then
+ func_dirname_result="${3}"
+ else
+ func_dirname_result="$func_dirname_result${2}"
+ fi
+ func_basename_result=`$ECHO "${1}" | $SED -e "$basename"`
+} # func_dirname_and_basename may be replaced by extended shell implementation
+
+
+# func_stripname prefix suffix name
+# strip PREFIX and SUFFIX off of NAME.
+# PREFIX and SUFFIX must not contain globbing or regex special
+# characters, hashes, percent signs, but SUFFIX may contain a leading
+# dot (in which case that matches only a dot).
+# func_strip_suffix prefix name
+func_stripname ()
+{
+ case ${2} in
+ .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;;
+ *) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;;
+ esac
+} # func_stripname may be replaced by extended shell implementation
+
+
+# These SED scripts presuppose an absolute path with a trailing slash.
+pathcar='s,^/\([^/]*\).*$,\1,'
+pathcdr='s,^/[^/]*,,'
+removedotparts=':dotsl
+ s@/\./@/@g
+ t dotsl
+ s,/\.$,/,'
+collapseslashes='s@/\{1,\}@/@g'
+finalslash='s,/*$,/,'
+
+# func_normal_abspath PATH
+# Remove doubled-up and trailing slashes, "." path components,
+# and cancel out any ".." path components in PATH after making
+# it an absolute path.
+# value returned in "$func_normal_abspath_result"
+func_normal_abspath ()
+{
+ # Start from root dir and reassemble the path.
+ func_normal_abspath_result=
+ func_normal_abspath_tpath=$1
+ func_normal_abspath_altnamespace=
+ case $func_normal_abspath_tpath in
+ "")
+ # Empty path, that just means $cwd.
+ func_stripname '' '/' "`pwd`"
+ func_normal_abspath_result=$func_stripname_result
+ return
+ ;;
+ # The next three entries are used to spot a run of precisely
+ # two leading slashes without using negated character classes;
+ # we take advantage of case's first-match behaviour.
+ ///*)
+ # Unusual form of absolute path, do nothing.
+ ;;
+ //*)
+ # Not necessarily an ordinary path; POSIX reserves leading '//'
+ # and for example Cygwin uses it to access remote file shares
+ # over CIFS/SMB, so we conserve a leading double slash if found.
+ func_normal_abspath_altnamespace=/
+ ;;
+ /*)
+ # Absolute path, do nothing.
+ ;;
+ *)
+ # Relative path, prepend $cwd.
+ func_normal_abspath_tpath=`pwd`/$func_normal_abspath_tpath
+ ;;
+ esac
+ # Cancel out all the simple stuff to save iterations. We also want
+ # the path to end with a slash for ease of parsing, so make sure
+ # there is one (and only one) here.
+ func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \
+ -e "$removedotparts" -e "$collapseslashes" -e "$finalslash"`
+ while :; do
+ # Processed it all yet?
+ if test "$func_normal_abspath_tpath" = / ; then
+ # If we ascended to the root using ".." the result may be empty now.
+ if test -z "$func_normal_abspath_result" ; then
+ func_normal_abspath_result=/
+ fi
+ break
+ fi
+ func_normal_abspath_tcomponent=`$ECHO "$func_normal_abspath_tpath" | $SED \
+ -e "$pathcar"`
+ func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \
+ -e "$pathcdr"`
+ # Figure out what to do with it
+ case $func_normal_abspath_tcomponent in
+ "")
+ # Trailing empty path component, ignore it.
+ ;;
+ ..)
+ # Parent dir; strip last assembled component from result.
+ func_dirname "$func_normal_abspath_result"
+ func_normal_abspath_result=$func_dirname_result
+ ;;
+ *)
+ # Actual path component, append it.
+ func_normal_abspath_result=$func_normal_abspath_result/$func_normal_abspath_tcomponent
+ ;;
+ esac
+ done
+ # Restore leading double-slash if one was found on entry.
+ func_normal_abspath_result=$func_normal_abspath_altnamespace$func_normal_abspath_result
+}
+
+# func_relative_path SRCDIR DSTDIR
+# generates a relative path from SRCDIR to DSTDIR, with a trailing
+# slash if non-empty, suitable for immediately appending a filename
+# without needing to append a separator.
+# value returned in "$func_relative_path_result"
+func_relative_path ()
+{
+ func_relative_path_result=
+ func_normal_abspath "$1"
+ func_relative_path_tlibdir=$func_normal_abspath_result
+ func_normal_abspath "$2"
+ func_relative_path_tbindir=$func_normal_abspath_result
+
+ # Ascend the tree starting from libdir
+ while :; do
+ # check if we have found a prefix of bindir
+ case $func_relative_path_tbindir in
+ $func_relative_path_tlibdir)
+ # found an exact match
+ func_relative_path_tcancelled=
+ break
+ ;;
+ $func_relative_path_tlibdir*)
+ # found a matching prefix
+ func_stripname "$func_relative_path_tlibdir" '' "$func_relative_path_tbindir"
+ func_relative_path_tcancelled=$func_stripname_result
+ if test -z "$func_relative_path_result"; then
+ func_relative_path_result=.
+ fi
+ break
+ ;;
+ *)
+ func_dirname $func_relative_path_tlibdir
+ func_relative_path_tlibdir=${func_dirname_result}
+ if test "x$func_relative_path_tlibdir" = x ; then
+ # Have to descend all the way to the root!
+ func_relative_path_result=../$func_relative_path_result
+ func_relative_path_tcancelled=$func_relative_path_tbindir
+ break
+ fi
+ func_relative_path_result=../$func_relative_path_result
+ ;;
+ esac
+ done
+
+ # Now calculate path; take care to avoid doubling-up slashes.
+ func_stripname '' '/' "$func_relative_path_result"
+ func_relative_path_result=$func_stripname_result
+ func_stripname '/' '/' "$func_relative_path_tcancelled"
+ if test "x$func_stripname_result" != x ; then
+ func_relative_path_result=${func_relative_path_result}/${func_stripname_result}
+ fi
+
+ # Normalisation. If bindir is libdir, return empty string,
+ # else relative path ending with a slash; either way, target
+ # file name can be directly appended.
+ if test ! -z "$func_relative_path_result"; then
+ func_stripname './' '' "$func_relative_path_result/"
+ func_relative_path_result=$func_stripname_result
+ fi
+}
+
+# The name of this program:
+func_dirname_and_basename "$progpath"
+progname=$func_basename_result
+
+# Make sure we have an absolute path for reexecution:
+case $progpath in
+ [\\/]*|[A-Za-z]:\\*) ;;
+ *[\\/]*)
+ progdir=$func_dirname_result
+ progdir=`cd "$progdir" && pwd`
+ progpath="$progdir/$progname"
+ ;;
+ *)
+ save_IFS="$IFS"
+ IFS=${PATH_SEPARATOR-:}
+ for progdir in $PATH; do
+ IFS="$save_IFS"
+ test -x "$progdir/$progname" && break
+ done
+ IFS="$save_IFS"
+ test -n "$progdir" || progdir=`pwd`
+ progpath="$progdir/$progname"
+ ;;
+esac
+
+# Sed substitution that helps us do robust quoting. It backslashifies
+# metacharacters that are still active within double-quoted strings.
+Xsed="${SED}"' -e 1s/^X//'
+sed_quote_subst='s/\([`"$\\]\)/\\\1/g'
+
+# Same as above, but do not quote variable references.
+double_quote_subst='s/\(["`\\]\)/\\\1/g'
+
+# Sed substitution that turns a string into a regex matching for the
+# string literally.
+sed_make_literal_regex='s,[].[^$\\*\/],\\&,g'
+
+# Sed substitution that converts a w32 file name or path
+# which contains forward slashes, into one that contains
+# (escaped) backslashes. A very naive implementation.
+lt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g'
+
+# Re-`\' parameter expansions in output of double_quote_subst that were
+# `\'-ed in input to the same. If an odd number of `\' preceded a '$'
+# in input to double_quote_subst, that '$' was protected from expansion.
+# Since each input `\' is now two `\'s, look for any number of runs of
+# four `\'s followed by two `\'s and then a '$'. `\' that '$'.
+bs='\\'
+bs2='\\\\'
+bs4='\\\\\\\\'
+dollar='\$'
+sed_double_backslash="\
+ s/$bs4/&\\
+/g
+ s/^$bs2$dollar/$bs&/
+ s/\\([^$bs]\\)$bs2$dollar/\\1$bs2$bs$dollar/g
+ s/\n//g"
+
+# Standard options:
+opt_dry_run=false
+opt_help=false
+opt_quiet=false
+opt_verbose=false
+opt_warning=:
+
+# func_echo arg...
+# Echo program name prefixed message, along with the current mode
+# name if it has been set yet.
+func_echo ()
+{
+ $ECHO "$progname: ${opt_mode+$opt_mode: }$*"
+}
+
+# func_verbose arg...
+# Echo program name prefixed message in verbose mode only.
+func_verbose ()
+{
+ $opt_verbose && func_echo ${1+"$@"}
+
+ # A bug in bash halts the script if the last line of a function
+ # fails when set -e is in force, so we need another command to
+ # work around that:
+ :
+}
+
+# func_echo_all arg...
+# Invoke $ECHO with all args, space-separated.
+func_echo_all ()
+{
+ $ECHO "$*"
+}
+
+# func_error arg...
+# Echo program name prefixed message to standard error.
+func_error ()
+{
+ $ECHO "$progname: ${opt_mode+$opt_mode: }"${1+"$@"} 1>&2
+}
+
+# func_warning arg...
+# Echo program name prefixed warning message to standard error.
+func_warning ()
+{
+ $opt_warning && $ECHO "$progname: ${opt_mode+$opt_mode: }warning: "${1+"$@"} 1>&2
+
+ # bash bug again:
+ :
+}
+
+# func_fatal_error arg...
+# Echo program name prefixed message to standard error, and exit.
+func_fatal_error ()
+{
+ func_error ${1+"$@"}
+ exit $EXIT_FAILURE
+}
+
+# func_fatal_help arg...
+# Echo program name prefixed message to standard error, followed by
+# a help hint, and exit.
+func_fatal_help ()
+{
+ func_error ${1+"$@"}
+ func_fatal_error "$help"
+}
+help="Try \`$progname --help' for more information." ## default
+
+
+# func_grep expression filename
+# Check whether EXPRESSION matches any line of FILENAME, without output.
+func_grep ()
+{
+ $GREP "$1" "$2" >/dev/null 2>&1
+}
+
+
+# func_mkdir_p directory-path
+# Make sure the entire path to DIRECTORY-PATH is available.
+func_mkdir_p ()
+{
+ my_directory_path="$1"
+ my_dir_list=
+
+ if test -n "$my_directory_path" && test "$opt_dry_run" != ":"; then
+
+ # Protect directory names starting with `-'
+ case $my_directory_path in
+ -*) my_directory_path="./$my_directory_path" ;;
+ esac
+
+ # While some portion of DIR does not yet exist...
+ while test ! -d "$my_directory_path"; do
+ # ...make a list in topmost first order. Use a colon delimited
+ # list incase some portion of path contains whitespace.
+ my_dir_list="$my_directory_path:$my_dir_list"
+
+ # If the last portion added has no slash in it, the list is done
+ case $my_directory_path in */*) ;; *) break ;; esac
+
+ # ...otherwise throw away the child directory and loop
+ my_directory_path=`$ECHO "$my_directory_path" | $SED -e "$dirname"`
+ done
+ my_dir_list=`$ECHO "$my_dir_list" | $SED 's,:*$,,'`
+
+ save_mkdir_p_IFS="$IFS"; IFS=':'
+ for my_dir in $my_dir_list; do
+ IFS="$save_mkdir_p_IFS"
+ # mkdir can fail with a `File exist' error if two processes
+ # try to create one of the directories concurrently. Don't
+ # stop in that case!
+ $MKDIR "$my_dir" 2>/dev/null || :
+ done
+ IFS="$save_mkdir_p_IFS"
+
+ # Bail out if we (or some other process) failed to create a directory.
+ test -d "$my_directory_path" || \
+ func_fatal_error "Failed to create \`$1'"
+ fi
+}
+
+
+# func_mktempdir [string]
+# Make a temporary directory that won't clash with other running
+# libtool processes, and avoids race conditions if possible. If
+# given, STRING is the basename for that directory.
+func_mktempdir ()
+{
+ my_template="${TMPDIR-/tmp}/${1-$progname}"
+
+ if test "$opt_dry_run" = ":"; then
+ # Return a directory name, but don't create it in dry-run mode
+ my_tmpdir="${my_template}-$$"
+ else
+
+ # If mktemp works, use that first and foremost
+ my_tmpdir=`mktemp -d "${my_template}-XXXXXXXX" 2>/dev/null`
+
+ if test ! -d "$my_tmpdir"; then
+ # Failing that, at least try and use $RANDOM to avoid a race
+ my_tmpdir="${my_template}-${RANDOM-0}$$"
+
+ save_mktempdir_umask=`umask`
+ umask 0077
+ $MKDIR "$my_tmpdir"
+ umask $save_mktempdir_umask
+ fi
+
+ # If we're not in dry-run mode, bomb out on failure
+ test -d "$my_tmpdir" || \
+ func_fatal_error "cannot create temporary directory \`$my_tmpdir'"
+ fi
+
+ $ECHO "$my_tmpdir"
+}
+
+
+# func_quote_for_eval arg
+# Aesthetically quote ARG to be evaled later.
+# This function returns two values: FUNC_QUOTE_FOR_EVAL_RESULT
+# is double-quoted, suitable for a subsequent eval, whereas
+# FUNC_QUOTE_FOR_EVAL_UNQUOTED_RESULT has merely all characters
+# which are still active within double quotes backslashified.
+func_quote_for_eval ()
+{
+ case $1 in
+ *[\\\`\"\$]*)
+ func_quote_for_eval_unquoted_result=`$ECHO "$1" | $SED "$sed_quote_subst"` ;;
+ *)
+ func_quote_for_eval_unquoted_result="$1" ;;
+ esac
+
+ case $func_quote_for_eval_unquoted_result in
+ # Double-quote args containing shell metacharacters to delay
+ # word splitting, command substitution and and variable
+ # expansion for a subsequent eval.
+ # Many Bourne shells cannot handle close brackets correctly
+ # in scan sets, so we specify it separately.
+ *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
+ func_quote_for_eval_result="\"$func_quote_for_eval_unquoted_result\""
+ ;;
+ *)
+ func_quote_for_eval_result="$func_quote_for_eval_unquoted_result"
+ esac
+}
+
+
+# func_quote_for_expand arg
+# Aesthetically quote ARG to be evaled later; same as above,
+# but do not quote variable references.
+func_quote_for_expand ()
+{
+ case $1 in
+ *[\\\`\"]*)
+ my_arg=`$ECHO "$1" | $SED \
+ -e "$double_quote_subst" -e "$sed_double_backslash"` ;;
+ *)
+ my_arg="$1" ;;
+ esac
+
+ case $my_arg in
+ # Double-quote args containing shell metacharacters to delay
+ # word splitting and command substitution for a subsequent eval.
+ # Many Bourne shells cannot handle close brackets correctly
+ # in scan sets, so we specify it separately.
+ *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
+ my_arg="\"$my_arg\""
+ ;;
+ esac
+
+ func_quote_for_expand_result="$my_arg"
+}
+
+
+# func_show_eval cmd [fail_exp]
+# Unless opt_silent is true, then output CMD. Then, if opt_dryrun is
+# not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP
+# is given, then evaluate it.
+func_show_eval ()
+{
+ my_cmd="$1"
+ my_fail_exp="${2-:}"
+
+ ${opt_silent-false} || {
+ func_quote_for_expand "$my_cmd"
+ eval "func_echo $func_quote_for_expand_result"
+ }
+
+ if ${opt_dry_run-false}; then :; else
+ eval "$my_cmd"
+ my_status=$?
+ if test "$my_status" -eq 0; then :; else
+ eval "(exit $my_status); $my_fail_exp"
+ fi
+ fi
+}
+
+
+# func_show_eval_locale cmd [fail_exp]
+# Unless opt_silent is true, then output CMD. Then, if opt_dryrun is
+# not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP
+# is given, then evaluate it. Use the saved locale for evaluation.
+func_show_eval_locale ()
+{
+ my_cmd="$1"
+ my_fail_exp="${2-:}"
+
+ ${opt_silent-false} || {
+ func_quote_for_expand "$my_cmd"
+ eval "func_echo $func_quote_for_expand_result"
+ }
+
+ if ${opt_dry_run-false}; then :; else
+ eval "$lt_user_locale
+ $my_cmd"
+ my_status=$?
+ eval "$lt_safe_locale"
+ if test "$my_status" -eq 0; then :; else
+ eval "(exit $my_status); $my_fail_exp"
+ fi
+ fi
+}
+
+# func_tr_sh
+# Turn $1 into a string suitable for a shell variable name.
+# Result is stored in $func_tr_sh_result. All characters
+# not in the set a-zA-Z0-9_ are replaced with '_'. Further,
+# if $1 begins with a digit, a '_' is prepended as well.
+func_tr_sh ()
+{
+ case $1 in
+ [0-9]* | *[!a-zA-Z0-9_]*)
+ func_tr_sh_result=`$ECHO "$1" | $SED 's/^\([0-9]\)/_\1/; s/[^a-zA-Z0-9_]/_/g'`
+ ;;
+ * )
+ func_tr_sh_result=$1
+ ;;
+ esac
+}
+
+
+# func_version
+# Echo version message to standard output and exit.
+func_version ()
+{
+ $opt_debug
+
+ $SED -n '/(C)/!b go
+ :more
+ /\./!{
+ N
+ s/\n# / /
+ b more
+ }
+ :go
+ /^# '$PROGRAM' (GNU /,/# warranty; / {
+ s/^# //
+ s/^# *$//
+ s/\((C)\)[ 0-9,-]*\( [1-9][0-9]*\)/\1\2/
+ p
+ }' < "$progpath"
+ exit $?
+}
+
+# func_usage
+# Echo short help message to standard output and exit.
+func_usage ()
+{
+ $opt_debug
+
+ $SED -n '/^# Usage:/,/^# *.*--help/ {
+ s/^# //
+ s/^# *$//
+ s/\$progname/'$progname'/
+ p
+ }' < "$progpath"
+ echo
+ $ECHO "run \`$progname --help | more' for full usage"
+ exit $?
+}
+
+# func_help [NOEXIT]
+# Echo long help message to standard output and exit,
+# unless 'noexit' is passed as argument.
+func_help ()
+{
+ $opt_debug
+
+ $SED -n '/^# Usage:/,/# Report bugs to/ {
+ :print
+ s/^# //
+ s/^# *$//
+ s*\$progname*'$progname'*
+ s*\$host*'"$host"'*
+ s*\$SHELL*'"$SHELL"'*
+ s*\$LTCC*'"$LTCC"'*
+ s*\$LTCFLAGS*'"$LTCFLAGS"'*
+ s*\$LD*'"$LD"'*
+ s/\$with_gnu_ld/'"$with_gnu_ld"'/
+ s/\$automake_version/'"`(${AUTOMAKE-automake} --version) 2>/dev/null |$SED 1q`"'/
+ s/\$autoconf_version/'"`(${AUTOCONF-autoconf} --version) 2>/dev/null |$SED 1q`"'/
+ p
+ d
+ }
+ /^# .* home page:/b print
+ /^# General help using/b print
+ ' < "$progpath"
+ ret=$?
+ if test -z "$1"; then
+ exit $ret
+ fi
+}
+
+# func_missing_arg argname
+# Echo program name prefixed message to standard error and set global
+# exit_cmd.
+func_missing_arg ()
+{
+ $opt_debug
+
+ func_error "missing argument for $1."
+ exit_cmd=exit
+}
+
+
+# func_split_short_opt shortopt
+# Set func_split_short_opt_name and func_split_short_opt_arg shell
+# variables after splitting SHORTOPT after the 2nd character.
+func_split_short_opt ()
+{
+ my_sed_short_opt='1s/^\(..\).*$/\1/;q'
+ my_sed_short_rest='1s/^..\(.*\)$/\1/;q'
+
+ func_split_short_opt_name=`$ECHO "$1" | $SED "$my_sed_short_opt"`
+ func_split_short_opt_arg=`$ECHO "$1" | $SED "$my_sed_short_rest"`
+} # func_split_short_opt may be replaced by extended shell implementation
+
+
+# func_split_long_opt longopt
+# Set func_split_long_opt_name and func_split_long_opt_arg shell
+# variables after splitting LONGOPT at the `=' sign.
+func_split_long_opt ()
+{
+ my_sed_long_opt='1s/^\(--[^=]*\)=.*/\1/;q'
+ my_sed_long_arg='1s/^--[^=]*=//'
+
+ func_split_long_opt_name=`$ECHO "$1" | $SED "$my_sed_long_opt"`
+ func_split_long_opt_arg=`$ECHO "$1" | $SED "$my_sed_long_arg"`
+} # func_split_long_opt may be replaced by extended shell implementation
+
+exit_cmd=:
+
+
+
+
+
+magic="%%%MAGIC variable%%%"
+magic_exe="%%%MAGIC EXE variable%%%"
+
+# Global variables.
+nonopt=
+preserve_args=
+lo2o="s/\\.lo\$/.${objext}/"
+o2lo="s/\\.${objext}\$/.lo/"
+extracted_archives=
+extracted_serial=0
+
+# 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=
+
+# func_append var value
+# Append VALUE to the end of shell variable VAR.
+func_append ()
+{
+ eval "${1}=\$${1}\${2}"
+} # func_append may be replaced by extended shell implementation
+
+# func_append_quoted var value
+# Quote VALUE and append to the end of shell variable VAR, separated
+# by a space.
+func_append_quoted ()
+{
+ func_quote_for_eval "${2}"
+ eval "${1}=\$${1}\\ \$func_quote_for_eval_result"
+} # func_append_quoted may be replaced by extended shell implementation
+
+
+# func_arith arithmetic-term...
+func_arith ()
+{
+ func_arith_result=`expr "${@}"`
+} # func_arith may be replaced by extended shell implementation
+
+
+# func_len string
+# STRING may not start with a hyphen.
+func_len ()
+{
+ func_len_result=`expr "${1}" : ".*" 2>/dev/null || echo $max_cmd_len`
+} # func_len may be replaced by extended shell implementation
+
+
+# func_lo2o object
+func_lo2o ()
+{
+ func_lo2o_result=`$ECHO "${1}" | $SED "$lo2o"`
+} # func_lo2o may be replaced by extended shell implementation
+
+
+# func_xform libobj-or-source
+func_xform ()
+{
+ func_xform_result=`$ECHO "${1}" | $SED 's/\.[^.]*$/.lo/'`
+} # func_xform may be replaced by extended shell implementation
+
+
+# func_fatal_configuration arg...
+# Echo program name prefixed message to standard error, followed by
+# a configuration failure hint, and exit.
+func_fatal_configuration ()
+{
+ func_error ${1+"$@"}
+ func_error "See the $PACKAGE documentation for more information."
+ func_fatal_error "Fatal configuration error."
+}
+
+
+# func_config
+# Display the configuration for all the tags in this script.
+func_config ()
+{
+ re_begincf='^# ### BEGIN LIBTOOL'
+ re_endcf='^# ### END LIBTOOL'
+
+ # Default configuration.
+ $SED "1,/$re_begincf CONFIG/d;/$re_endcf CONFIG/,\$d" < "$progpath"
+
+ # Now print the configurations for the tags.
+ for tagname in $taglist; do
+ $SED -n "/$re_begincf TAG CONFIG: $tagname\$/,/$re_endcf TAG CONFIG: $tagname\$/p" < "$progpath"
+ done
+
+ exit $?
+}
+
+# func_features
+# Display the features supported by this script.
+func_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 $?
+}
+
+# func_enable_tag tagname
+# Verify that TAGNAME is valid, and either flag an error and exit, or
+# enable the TAGNAME tag. We also add TAGNAME to the global $taglist
+# variable here.
+func_enable_tag ()
+{
+ # Global variable:
+ tagname="$1"
+
+ re_begincf="^# ### BEGIN LIBTOOL TAG CONFIG: $tagname\$"
+ re_endcf="^# ### END LIBTOOL TAG CONFIG: $tagname\$"
+ sed_extractcf="/$re_begincf/,/$re_endcf/p"
+
+ # Validate tagname.
+ case $tagname in
+ *[!-_A-Za-z0-9,/]*)
+ func_fatal_error "invalid tag name: $tagname"
+ ;;
+ esac
+
+ # Don't test for the "default" C tag, as we know it's
+ # there but not specially marked.
+ case $tagname in
+ CC) ;;
+ *)
+ if $GREP "$re_begincf" "$progpath" >/dev/null 2>&1; then
+ taglist="$taglist $tagname"
+
+ # Evaluate the configuration. Be careful to quote the path
+ # and the sed script, to avoid splitting on whitespace, but
+ # also don't use non-portable quotes within backquotes within
+ # quotes we have to do it in 2 steps:
+ extractedcf=`$SED -n -e "$sed_extractcf" < "$progpath"`
+ eval "$extractedcf"
+ else
+ func_error "ignoring unknown tag $tagname"
+ fi
+ ;;
+ esac
+}
+
+# func_check_version_match
+# Ensure that we are using m4 macros, and libtool script from the same
+# release of libtool.
+func_check_version_match ()
+{
+ if test "$package_revision" != "$macro_revision"; then
+ if test "$VERSION" != "$macro_version"; then
+ if test -z "$macro_version"; then
+ cat >&2 <<_LT_EOF
+$progname: Version mismatch error. This is $PACKAGE $VERSION, but the
+$progname: definition of this LT_INIT comes from an older release.
+$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION
+$progname: and run autoconf again.
+_LT_EOF
+ else
+ cat >&2 <<_LT_EOF
+$progname: Version mismatch error. This is $PACKAGE $VERSION, but the
+$progname: definition of this LT_INIT comes from $PACKAGE $macro_version.
+$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION
+$progname: and run autoconf again.
+_LT_EOF
+ fi
+ else
+ cat >&2 <<_LT_EOF
+$progname: Version mismatch error. This is $PACKAGE $VERSION, revision $package_revision,
+$progname: but the definition of this LT_INIT comes from revision $macro_revision.
+$progname: You should recreate aclocal.m4 with macros from revision $package_revision
+$progname: of $PACKAGE $VERSION and run autoconf again.
+_LT_EOF
+ fi
+
+ exit $EXIT_MISMATCH
+ fi
+}
+
+
+# Shorthand for --mode=foo, only valid as the first argument
+case $1 in
+clean|clea|cle|cl)
+ shift; set dummy --mode clean ${1+"$@"}; shift
+ ;;
+compile|compil|compi|comp|com|co|c)
+ shift; set dummy --mode compile ${1+"$@"}; shift
+ ;;
+execute|execut|execu|exec|exe|ex|e)
+ shift; set dummy --mode execute ${1+"$@"}; shift
+ ;;
+finish|finis|fini|fin|fi|f)
+ shift; set dummy --mode finish ${1+"$@"}; shift
+ ;;
+install|instal|insta|inst|ins|in|i)
+ shift; set dummy --mode install ${1+"$@"}; shift
+ ;;
+link|lin|li|l)
+ shift; set dummy --mode link ${1+"$@"}; shift
+ ;;
+uninstall|uninstal|uninsta|uninst|unins|unin|uni|un|u)
+ shift; set dummy --mode uninstall ${1+"$@"}; shift
+ ;;
+esac
+
+
+
+# Option defaults:
+opt_debug=:
+opt_dry_run=false
+opt_config=false
+opt_preserve_dup_deps=false
+opt_features=false
+opt_finish=false
+opt_help=false
+opt_help_all=false
+opt_silent=:
+opt_warning=:
+opt_verbose=:
+opt_silent=false
+opt_verbose=false
+
+
+# Parse options once, thoroughly. This comes as soon as possible in the
+# script to make things like `--version' happen as quickly as we can.
+{
+ # this just eases exit handling
+ while test $# -gt 0; do
+ opt="$1"
+ shift
+ case $opt in
+ --debug|-x) opt_debug='set -x'
+ func_echo "enabling shell trace mode"
+ $opt_debug
+ ;;
+ --dry-run|--dryrun|-n)
+ opt_dry_run=:
+ ;;
+ --config)
+ opt_config=:
+func_config
+ ;;
+ --dlopen|-dlopen)
+ optarg="$1"
+ opt_dlopen="${opt_dlopen+$opt_dlopen
+}$optarg"
+ shift
+ ;;
+ --preserve-dup-deps)
+ opt_preserve_dup_deps=:
+ ;;
+ --features)
+ opt_features=:
+func_features
+ ;;
+ --finish)
+ opt_finish=:
+set dummy --mode finish ${1+"$@"}; shift
+ ;;
+ --help)
+ opt_help=:
+ ;;
+ --help-all)
+ opt_help_all=:
+opt_help=': help-all'
+ ;;
+ --mode)
+ test $# = 0 && func_missing_arg $opt && break
+ optarg="$1"
+ opt_mode="$optarg"
+case $optarg in
+ # Valid mode arguments:
+ clean|compile|execute|finish|install|link|relink|uninstall) ;;
+
+ # Catch anything else as an error
+ *) func_error "invalid argument for $opt"
+ exit_cmd=exit
+ break
+ ;;
+esac
+ shift
+ ;;
+ --no-silent|--no-quiet)
+ opt_silent=false
+func_append preserve_args " $opt"
+ ;;
+ --no-warning|--no-warn)
+ opt_warning=false
+func_append preserve_args " $opt"
+ ;;
+ --no-verbose)
+ opt_verbose=false
+func_append preserve_args " $opt"
+ ;;
+ --silent|--quiet)
+ opt_silent=:
+func_append preserve_args " $opt"
+ opt_verbose=false
+ ;;
+ --verbose|-v)
+ opt_verbose=:
+func_append preserve_args " $opt"
+opt_silent=false
+ ;;
+ --tag)
+ test $# = 0 && func_missing_arg $opt && break
+ optarg="$1"
+ opt_tag="$optarg"
+func_append preserve_args " $opt $optarg"
+func_enable_tag "$optarg"
+ shift
+ ;;
+
+ -\?|-h) func_usage ;;
+ --help) func_help ;;
+ --version) func_version ;;
+
+ # Separate optargs to long options:
+ --*=*)
+ func_split_long_opt "$opt"
+ set dummy "$func_split_long_opt_name" "$func_split_long_opt_arg" ${1+"$@"}
+ shift
+ ;;
+
+ # Separate non-argument short options:
+ -\?*|-h*|-n*|-v*)
+ func_split_short_opt "$opt"
+ set dummy "$func_split_short_opt_name" "-$func_split_short_opt_arg" ${1+"$@"}
+ shift
+ ;;
+
+ --) break ;;
+ -*) func_fatal_help "unrecognized option \`$opt'" ;;
+ *) set dummy "$opt" ${1+"$@"}; shift; break ;;
+ esac
+ done
+
+ # Validate options:
+
+ # save first non-option argument
+ if test "$#" -gt 0; then
+ nonopt="$opt"
+ shift
+ fi
+
+ # preserve --debug
+ test "$opt_debug" = : || func_append preserve_args " --debug"
+
+ case $host in
+ *cygwin* | *mingw* | *pw32* | *cegcc*)
+ # don't eliminate duplications in $postdeps and $predeps
+ opt_duplicate_compiler_generated_deps=:
+ ;;
+ *)
+ opt_duplicate_compiler_generated_deps=$opt_preserve_dup_deps
+ ;;
+ esac
+
+ $opt_help || {
+ # Sanity checks first:
+ func_check_version_match
+
+ if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then
+ func_fatal_configuration "not configured to build any kind of library"
+ fi
+
+ # Darwin sucks
+ eval std_shrext=\"$shrext_cmds\"
+
+ # Only execute mode is allowed to have -dlopen flags.
+ if test -n "$opt_dlopen" && test "$opt_mode" != execute; then
+ func_error "unrecognized option \`-dlopen'"
+ $ECHO "$help" 1>&2
+ exit $EXIT_FAILURE
+ fi
+
+ # Change the help message to a mode-specific one.
+ generic_help="$help"
+ help="Try \`$progname --help --mode=$opt_mode' for more information."
+ }
+
+
+ # Bail if the options were screwed
+ $exit_cmd $EXIT_FAILURE
+}
+
+
+
+
+## ----------- ##
+## Main. ##
+## ----------- ##
+
+# func_lalib_p file
+# True iff FILE is a libtool `.la' library or `.lo' object file.
+# This function is only a basic sanity check; it will hardly flush out
+# determined imposters.
+func_lalib_p ()
+{
+ test -f "$1" &&
+ $SED -e 4q "$1" 2>/dev/null \
+ | $GREP "^# Generated by .*$PACKAGE" > /dev/null 2>&1
+}
+
+# func_lalib_unsafe_p file
+# True iff FILE is a libtool `.la' library or `.lo' object file.
+# This function implements the same check as func_lalib_p without
+# resorting to external programs. To this end, it redirects stdin and
+# closes it afterwards, without saving the original file descriptor.
+# As a safety measure, use it only where a negative result would be
+# fatal anyway. Works if `file' does not exist.
+func_lalib_unsafe_p ()
+{
+ lalib_p=no
+ if test -f "$1" && test -r "$1" && exec 5<&0 <"$1"; then
+ for lalib_p_l in 1 2 3 4
+ do
+ read lalib_p_line
+ case "$lalib_p_line" in
+ \#\ Generated\ by\ *$PACKAGE* ) lalib_p=yes; break;;
+ esac
+ done
+ exec 0<&5 5<&-
+ fi
+ test "$lalib_p" = yes
+}
+
+# func_ltwrapper_script_p file
+# True iff FILE is a libtool wrapper script
+# This function is only a basic sanity check; it will hardly flush out
+# determined imposters.
+func_ltwrapper_script_p ()
+{
+ func_lalib_p "$1"
+}
+
+# func_ltwrapper_executable_p file
+# True iff FILE is a libtool wrapper executable
+# This function is only a basic sanity check; it will hardly flush out
+# determined imposters.
+func_ltwrapper_executable_p ()
+{
+ func_ltwrapper_exec_suffix=
+ case $1 in
+ *.exe) ;;
+ *) func_ltwrapper_exec_suffix=.exe ;;
+ esac
+ $GREP "$magic_exe" "$1$func_ltwrapper_exec_suffix" >/dev/null 2>&1
+}
+
+# func_ltwrapper_scriptname file
+# Assumes file is an ltwrapper_executable
+# uses $file to determine the appropriate filename for a
+# temporary ltwrapper_script.
+func_ltwrapper_scriptname ()
+{
+ func_dirname_and_basename "$1" "" "."
+ func_stripname '' '.exe' "$func_basename_result"
+ func_ltwrapper_scriptname_result="$func_dirname_result/$objdir/${func_stripname_result}_ltshwrapper"
+}
+
+# func_ltwrapper_p file
+# True iff FILE is a libtool wrapper script or wrapper executable
+# This function is only a basic sanity check; it will hardly flush out
+# determined imposters.
+func_ltwrapper_p ()
+{
+ func_ltwrapper_script_p "$1" || func_ltwrapper_executable_p "$1"
+}
+
+
+# func_execute_cmds commands fail_cmd
+# Execute tilde-delimited COMMANDS.
+# If FAIL_CMD is given, eval that upon failure.
+# FAIL_CMD may read-access the current command in variable CMD!
+func_execute_cmds ()
+{
+ $opt_debug
+ save_ifs=$IFS; IFS='~'
+ for cmd in $1; do
+ IFS=$save_ifs
+ eval cmd=\"$cmd\"
+ func_show_eval "$cmd" "${2-:}"
+ done
+ IFS=$save_ifs
+}
+
+
+# func_source file
+# Source FILE, adding directory component if necessary.
+# Note that it is not necessary on cygwin/mingw to append a dot to
+# FILE even if both FILE and FILE.exe exist: automatic-append-.exe
+# behavior happens only for exec(3), not for open(2)! Also, sourcing
+# `FILE.' does not work on cygwin managed mounts.
+func_source ()
+{
+ $opt_debug
+ case $1 in
+ */* | *\\*) . "$1" ;;
+ *) . "./$1" ;;
+ esac
+}
+
+
+# func_resolve_sysroot PATH
+# Replace a leading = in PATH with a sysroot. Store the result into
+# func_resolve_sysroot_result
+func_resolve_sysroot ()
+{
+ func_resolve_sysroot_result=$1
+ case $func_resolve_sysroot_result in
+ =*)
+ func_stripname '=' '' "$func_resolve_sysroot_result"
+ func_resolve_sysroot_result=$lt_sysroot$func_stripname_result
+ ;;
+ esac
+}
+
+# func_replace_sysroot PATH
+# If PATH begins with the sysroot, replace it with = and
+# store the result into func_replace_sysroot_result.
+func_replace_sysroot ()
+{
+ case "$lt_sysroot:$1" in
+ ?*:"$lt_sysroot"*)
+ func_stripname "$lt_sysroot" '' "$1"
+ func_replace_sysroot_result="=$func_stripname_result"
+ ;;
+ *)
+ # Including no sysroot.
+ func_replace_sysroot_result=$1
+ ;;
+ esac
+}
+
+# func_infer_tag arg
+# Infer tagged configuration to use if any are available and
+# if one wasn't chosen via the "--tag" command line option.
+# Only attempt this if the compiler in the base compile
+# command doesn't match the default compiler.
+# arg is usually of the form 'gcc ...'
+func_infer_tag ()
+{
+ $opt_debug
+ if test -n "$available_tags" && test -z "$tagname"; then
+ CC_quoted=
+ for arg in $CC; do
+ func_append_quoted CC_quoted "$arg"
+ done
+ CC_expanded=`func_echo_all $CC`
+ CC_quoted_expanded=`func_echo_all $CC_quoted`
+ case $@ in
+ # Blanks in the command may have been stripped by the calling shell,
+ # but not from the CC environment variable when configure was run.
+ " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \
+ " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*) ;;
+ # Blanks at the start of $base_compile will cause this to fail
+ # if we don't check for them as well.
+ *)
+ for z in $available_tags; do
+ if $GREP "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then
+ # Evaluate the configuration.
+ eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`"
+ CC_quoted=
+ for arg in $CC; do
+ # Double-quote args containing other shell metacharacters.
+ func_append_quoted CC_quoted "$arg"
+ done
+ CC_expanded=`func_echo_all $CC`
+ CC_quoted_expanded=`func_echo_all $CC_quoted`
+ case "$@ " in
+ " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \
+ " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*)
+ # 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
+ func_echo "unable to infer tagged configuration"
+ func_fatal_error "specify a tag with \`--tag'"
+# else
+# func_verbose "using $tagname tagged configuration"
+ fi
+ ;;
+ esac
+ fi
+}
+
+
+
+# func_write_libtool_object output_name pic_name nonpic_name
+# Create a libtool object file (analogous to a ".la" file),
+# but don't create it if we're doing a dry run.
+func_write_libtool_object ()
+{
+ write_libobj=${1}
+ if test "$build_libtool_libs" = yes; then
+ write_lobj=\'${2}\'
+ else
+ write_lobj=none
+ fi
+
+ if test "$build_old_libs" = yes; then
+ write_oldobj=\'${3}\'
+ else
+ write_oldobj=none
+ fi
+
+ $opt_dry_run || {
+ cat >${write_libobj}T <<EOF
+# $write_libobj - a libtool object file
+# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
+#
+# Please DO NOT delete this file!
+# It is necessary for linking the library.
+
+# Name of the PIC object.
+pic_object=$write_lobj
+
+# Name of the non-PIC object
+non_pic_object=$write_oldobj
+
+EOF
+ $MV "${write_libobj}T" "${write_libobj}"
+ }
+}
+
+
+##################################################
+# FILE NAME AND PATH CONVERSION HELPER FUNCTIONS #
+##################################################
+
+# func_convert_core_file_wine_to_w32 ARG
+# Helper function used by file name conversion functions when $build is *nix,
+# and $host is mingw, cygwin, or some other w32 environment. Relies on a
+# correctly configured wine environment available, with the winepath program
+# in $build's $PATH.
+#
+# ARG is the $build file name to be converted to w32 format.
+# Result is available in $func_convert_core_file_wine_to_w32_result, and will
+# be empty on error (or when ARG is empty)
+func_convert_core_file_wine_to_w32 ()
+{
+ $opt_debug
+ func_convert_core_file_wine_to_w32_result="$1"
+ if test -n "$1"; then
+ # Unfortunately, winepath does not exit with a non-zero error code, so we
+ # are forced to check the contents of stdout. On the other hand, if the
+ # command is not found, the shell will set an exit code of 127 and print
+ # *an error message* to stdout. So we must check for both error code of
+ # zero AND non-empty stdout, which explains the odd construction:
+ func_convert_core_file_wine_to_w32_tmp=`winepath -w "$1" 2>/dev/null`
+ if test "$?" -eq 0 && test -n "${func_convert_core_file_wine_to_w32_tmp}"; then
+ func_convert_core_file_wine_to_w32_result=`$ECHO "$func_convert_core_file_wine_to_w32_tmp" |
+ $SED -e "$lt_sed_naive_backslashify"`
+ else
+ func_convert_core_file_wine_to_w32_result=
+ fi
+ fi
+}
+# end: func_convert_core_file_wine_to_w32
+
+
+# func_convert_core_path_wine_to_w32 ARG
+# Helper function used by path conversion functions when $build is *nix, and
+# $host is mingw, cygwin, or some other w32 environment. Relies on a correctly
+# configured wine environment available, with the winepath program in $build's
+# $PATH. Assumes ARG has no leading or trailing path separator characters.
+#
+# ARG is path to be converted from $build format to win32.
+# Result is available in $func_convert_core_path_wine_to_w32_result.
+# Unconvertible file (directory) names in ARG are skipped; if no directory names
+# are convertible, then the result may be empty.
+func_convert_core_path_wine_to_w32 ()
+{
+ $opt_debug
+ # unfortunately, winepath doesn't convert paths, only file names
+ func_convert_core_path_wine_to_w32_result=""
+ if test -n "$1"; then
+ oldIFS=$IFS
+ IFS=:
+ for func_convert_core_path_wine_to_w32_f in $1; do
+ IFS=$oldIFS
+ func_convert_core_file_wine_to_w32 "$func_convert_core_path_wine_to_w32_f"
+ if test -n "$func_convert_core_file_wine_to_w32_result" ; then
+ if test -z "$func_convert_core_path_wine_to_w32_result"; then
+ func_convert_core_path_wine_to_w32_result="$func_convert_core_file_wine_to_w32_result"
+ else
+ func_append func_convert_core_path_wine_to_w32_result ";$func_convert_core_file_wine_to_w32_result"
+ fi
+ fi
+ done
+ IFS=$oldIFS
+ fi
+}
+# end: func_convert_core_path_wine_to_w32
+
+
+# func_cygpath ARGS...
+# Wrapper around calling the cygpath program via LT_CYGPATH. This is used when
+# when (1) $build is *nix and Cygwin is hosted via a wine environment; or (2)
+# $build is MSYS and $host is Cygwin, or (3) $build is Cygwin. In case (1) or
+# (2), returns the Cygwin file name or path in func_cygpath_result (input
+# file name or path is assumed to be in w32 format, as previously converted
+# from $build's *nix or MSYS format). In case (3), returns the w32 file name
+# or path in func_cygpath_result (input file name or path is assumed to be in
+# Cygwin format). Returns an empty string on error.
+#
+# ARGS are passed to cygpath, with the last one being the file name or path to
+# be converted.
+#
+# Specify the absolute *nix (or w32) name to cygpath in the LT_CYGPATH
+# environment variable; do not put it in $PATH.
+func_cygpath ()
+{
+ $opt_debug
+ if test -n "$LT_CYGPATH" && test -f "$LT_CYGPATH"; then
+ func_cygpath_result=`$LT_CYGPATH "$@" 2>/dev/null`
+ if test "$?" -ne 0; then
+ # on failure, ensure result is empty
+ func_cygpath_result=
+ fi
+ else
+ func_cygpath_result=
+ func_error "LT_CYGPATH is empty or specifies non-existent file: \`$LT_CYGPATH'"
+ fi
+}
+#end: func_cygpath
+
+
+# func_convert_core_msys_to_w32 ARG
+# Convert file name or path ARG from MSYS format to w32 format. Return
+# result in func_convert_core_msys_to_w32_result.
+func_convert_core_msys_to_w32 ()
+{
+ $opt_debug
+ # awkward: cmd appends spaces to result
+ func_convert_core_msys_to_w32_result=`( cmd //c echo "$1" ) 2>/dev/null |
+ $SED -e 's/[ ]*$//' -e "$lt_sed_naive_backslashify"`
+}
+#end: func_convert_core_msys_to_w32
+
+
+# func_convert_file_check ARG1 ARG2
+# Verify that ARG1 (a file name in $build format) was converted to $host
+# format in ARG2. Otherwise, emit an error message, but continue (resetting
+# func_to_host_file_result to ARG1).
+func_convert_file_check ()
+{
+ $opt_debug
+ if test -z "$2" && test -n "$1" ; then
+ func_error "Could not determine host file name corresponding to"
+ func_error " \`$1'"
+ func_error "Continuing, but uninstalled executables may not work."
+ # Fallback:
+ func_to_host_file_result="$1"
+ fi
+}
+# end func_convert_file_check
+
+
+# func_convert_path_check FROM_PATHSEP TO_PATHSEP FROM_PATH TO_PATH
+# Verify that FROM_PATH (a path in $build format) was converted to $host
+# format in TO_PATH. Otherwise, emit an error message, but continue, resetting
+# func_to_host_file_result to a simplistic fallback value (see below).
+func_convert_path_check ()
+{
+ $opt_debug
+ if test -z "$4" && test -n "$3"; then
+ func_error "Could not determine the host path corresponding to"
+ func_error " \`$3'"
+ func_error "Continuing, but uninstalled executables may not work."
+ # Fallback. This is a deliberately simplistic "conversion" and
+ # should not be "improved". See libtool.info.
+ if test "x$1" != "x$2"; then
+ lt_replace_pathsep_chars="s|$1|$2|g"
+ func_to_host_path_result=`echo "$3" |
+ $SED -e "$lt_replace_pathsep_chars"`
+ else
+ func_to_host_path_result="$3"
+ fi
+ fi
+}
+# end func_convert_path_check
+
+
+# func_convert_path_front_back_pathsep FRONTPAT BACKPAT REPL ORIG
+# Modifies func_to_host_path_result by prepending REPL if ORIG matches FRONTPAT
+# and appending REPL if ORIG matches BACKPAT.
+func_convert_path_front_back_pathsep ()
+{
+ $opt_debug
+ case $4 in
+ $1 ) func_to_host_path_result="$3$func_to_host_path_result"
+ ;;
+ esac
+ case $4 in
+ $2 ) func_append func_to_host_path_result "$3"
+ ;;
+ esac
+}
+# end func_convert_path_front_back_pathsep
+
+
+##################################################
+# $build to $host FILE NAME CONVERSION FUNCTIONS #
+##################################################
+# invoked via `$to_host_file_cmd ARG'
+#
+# In each case, ARG is the path to be converted from $build to $host format.
+# Result will be available in $func_to_host_file_result.
+
+
+# func_to_host_file ARG
+# Converts the file name ARG from $build format to $host format. Return result
+# in func_to_host_file_result.
+func_to_host_file ()
+{
+ $opt_debug
+ $to_host_file_cmd "$1"
+}
+# end func_to_host_file
+
+
+# func_to_tool_file ARG LAZY
+# converts the file name ARG from $build format to toolchain format. Return
+# result in func_to_tool_file_result. If the conversion in use is listed
+# in (the comma separated) LAZY, no conversion takes place.
+func_to_tool_file ()
+{
+ $opt_debug
+ case ,$2, in
+ *,"$to_tool_file_cmd",*)
+ func_to_tool_file_result=$1
+ ;;
+ *)
+ $to_tool_file_cmd "$1"
+ func_to_tool_file_result=$func_to_host_file_result
+ ;;
+ esac
+}
+# end func_to_tool_file
+
+
+# func_convert_file_noop ARG
+# Copy ARG to func_to_host_file_result.
+func_convert_file_noop ()
+{
+ func_to_host_file_result="$1"
+}
+# end func_convert_file_noop
+
+
+# func_convert_file_msys_to_w32 ARG
+# Convert file name ARG from (mingw) MSYS to (mingw) w32 format; automatic
+# conversion to w32 is not available inside the cwrapper. Returns result in
+# func_to_host_file_result.
+func_convert_file_msys_to_w32 ()
+{
+ $opt_debug
+ func_to_host_file_result="$1"
+ if test -n "$1"; then
+ func_convert_core_msys_to_w32 "$1"
+ func_to_host_file_result="$func_convert_core_msys_to_w32_result"
+ fi
+ func_convert_file_check "$1" "$func_to_host_file_result"
+}
+# end func_convert_file_msys_to_w32
+
+
+# func_convert_file_cygwin_to_w32 ARG
+# Convert file name ARG from Cygwin to w32 format. Returns result in
+# func_to_host_file_result.
+func_convert_file_cygwin_to_w32 ()
+{
+ $opt_debug
+ func_to_host_file_result="$1"
+ if test -n "$1"; then
+ # because $build is cygwin, we call "the" cygpath in $PATH; no need to use
+ # LT_CYGPATH in this case.
+ func_to_host_file_result=`cygpath -m "$1"`
+ fi
+ func_convert_file_check "$1" "$func_to_host_file_result"
+}
+# end func_convert_file_cygwin_to_w32
+
+
+# func_convert_file_nix_to_w32 ARG
+# Convert file name ARG from *nix to w32 format. Requires a wine environment
+# and a working winepath. Returns result in func_to_host_file_result.
+func_convert_file_nix_to_w32 ()
+{
+ $opt_debug
+ func_to_host_file_result="$1"
+ if test -n "$1"; then
+ func_convert_core_file_wine_to_w32 "$1"
+ func_to_host_file_result="$func_convert_core_file_wine_to_w32_result"
+ fi
+ func_convert_file_check "$1" "$func_to_host_file_result"
+}
+# end func_convert_file_nix_to_w32
+
+
+# func_convert_file_msys_to_cygwin ARG
+# Convert file name ARG from MSYS to Cygwin format. Requires LT_CYGPATH set.
+# Returns result in func_to_host_file_result.
+func_convert_file_msys_to_cygwin ()
+{
+ $opt_debug
+ func_to_host_file_result="$1"
+ if test -n "$1"; then
+ func_convert_core_msys_to_w32 "$1"
+ func_cygpath -u "$func_convert_core_msys_to_w32_result"
+ func_to_host_file_result="$func_cygpath_result"
+ fi
+ func_convert_file_check "$1" "$func_to_host_file_result"
+}
+# end func_convert_file_msys_to_cygwin
+
+
+# func_convert_file_nix_to_cygwin ARG
+# Convert file name ARG from *nix to Cygwin format. Requires Cygwin installed
+# in a wine environment, working winepath, and LT_CYGPATH set. Returns result
+# in func_to_host_file_result.
+func_convert_file_nix_to_cygwin ()
+{
+ $opt_debug
+ func_to_host_file_result="$1"
+ if test -n "$1"; then
+ # convert from *nix to w32, then use cygpath to convert from w32 to cygwin.
+ func_convert_core_file_wine_to_w32 "$1"
+ func_cygpath -u "$func_convert_core_file_wine_to_w32_result"
+ func_to_host_file_result="$func_cygpath_result"
+ fi
+ func_convert_file_check "$1" "$func_to_host_file_result"
+}
+# end func_convert_file_nix_to_cygwin
+
+
+#############################################
+# $build to $host PATH CONVERSION FUNCTIONS #
+#############################################
+# invoked via `$to_host_path_cmd ARG'
+#
+# In each case, ARG is the path to be converted from $build to $host format.
+# The result will be available in $func_to_host_path_result.
+#
+# Path separators are also converted from $build format to $host format. If
+# ARG begins or ends with a path separator character, it is preserved (but
+# converted to $host format) on output.
+#
+# All path conversion functions are named using the following convention:
+# file name conversion function : func_convert_file_X_to_Y ()
+# path conversion function : func_convert_path_X_to_Y ()
+# where, for any given $build/$host combination the 'X_to_Y' value is the
+# same. If conversion functions are added for new $build/$host combinations,
+# the two new functions must follow this pattern, or func_init_to_host_path_cmd
+# will break.
+
+
+# func_init_to_host_path_cmd
+# Ensures that function "pointer" variable $to_host_path_cmd is set to the
+# appropriate value, based on the value of $to_host_file_cmd.
+to_host_path_cmd=
+func_init_to_host_path_cmd ()
+{
+ $opt_debug
+ if test -z "$to_host_path_cmd"; then
+ func_stripname 'func_convert_file_' '' "$to_host_file_cmd"
+ to_host_path_cmd="func_convert_path_${func_stripname_result}"
+ fi
+}
+
+
+# func_to_host_path ARG
+# Converts the path ARG from $build format to $host format. Return result
+# in func_to_host_path_result.
+func_to_host_path ()
+{
+ $opt_debug
+ func_init_to_host_path_cmd
+ $to_host_path_cmd "$1"
+}
+# end func_to_host_path
+
+
+# func_convert_path_noop ARG
+# Copy ARG to func_to_host_path_result.
+func_convert_path_noop ()
+{
+ func_to_host_path_result="$1"
+}
+# end func_convert_path_noop
+
+
+# func_convert_path_msys_to_w32 ARG
+# Convert path ARG from (mingw) MSYS to (mingw) w32 format; automatic
+# conversion to w32 is not available inside the cwrapper. Returns result in
+# func_to_host_path_result.
+func_convert_path_msys_to_w32 ()
+{
+ $opt_debug
+ func_to_host_path_result="$1"
+ if test -n "$1"; then
+ # Remove leading and trailing path separator characters from ARG. MSYS
+ # behavior is inconsistent here; cygpath turns them into '.;' and ';.';
+ # and winepath ignores them completely.
+ func_stripname : : "$1"
+ func_to_host_path_tmp1=$func_stripname_result
+ func_convert_core_msys_to_w32 "$func_to_host_path_tmp1"
+ func_to_host_path_result="$func_convert_core_msys_to_w32_result"
+ func_convert_path_check : ";" \
+ "$func_to_host_path_tmp1" "$func_to_host_path_result"
+ func_convert_path_front_back_pathsep ":*" "*:" ";" "$1"
+ fi
+}
+# end func_convert_path_msys_to_w32
+
+
+# func_convert_path_cygwin_to_w32 ARG
+# Convert path ARG from Cygwin to w32 format. Returns result in
+# func_to_host_file_result.
+func_convert_path_cygwin_to_w32 ()
+{
+ $opt_debug
+ func_to_host_path_result="$1"
+ if test -n "$1"; then
+ # See func_convert_path_msys_to_w32:
+ func_stripname : : "$1"
+ func_to_host_path_tmp1=$func_stripname_result
+ func_to_host_path_result=`cygpath -m -p "$func_to_host_path_tmp1"`
+ func_convert_path_check : ";" \
+ "$func_to_host_path_tmp1" "$func_to_host_path_result"
+ func_convert_path_front_back_pathsep ":*" "*:" ";" "$1"
+ fi
+}
+# end func_convert_path_cygwin_to_w32
+
+
+# func_convert_path_nix_to_w32 ARG
+# Convert path ARG from *nix to w32 format. Requires a wine environment and
+# a working winepath. Returns result in func_to_host_file_result.
+func_convert_path_nix_to_w32 ()
+{
+ $opt_debug
+ func_to_host_path_result="$1"
+ if test -n "$1"; then
+ # See func_convert_path_msys_to_w32:
+ func_stripname : : "$1"
+ func_to_host_path_tmp1=$func_stripname_result
+ func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1"
+ func_to_host_path_result="$func_convert_core_path_wine_to_w32_result"
+ func_convert_path_check : ";" \
+ "$func_to_host_path_tmp1" "$func_to_host_path_result"
+ func_convert_path_front_back_pathsep ":*" "*:" ";" "$1"
+ fi
+}
+# end func_convert_path_nix_to_w32
+
+
+# func_convert_path_msys_to_cygwin ARG
+# Convert path ARG from MSYS to Cygwin format. Requires LT_CYGPATH set.
+# Returns result in func_to_host_file_result.
+func_convert_path_msys_to_cygwin ()
+{
+ $opt_debug
+ func_to_host_path_result="$1"
+ if test -n "$1"; then
+ # See func_convert_path_msys_to_w32:
+ func_stripname : : "$1"
+ func_to_host_path_tmp1=$func_stripname_result
+ func_convert_core_msys_to_w32 "$func_to_host_path_tmp1"
+ func_cygpath -u -p "$func_convert_core_msys_to_w32_result"
+ func_to_host_path_result="$func_cygpath_result"
+ func_convert_path_check : : \
+ "$func_to_host_path_tmp1" "$func_to_host_path_result"
+ func_convert_path_front_back_pathsep ":*" "*:" : "$1"
+ fi
+}
+# end func_convert_path_msys_to_cygwin
+
+
+# func_convert_path_nix_to_cygwin ARG
+# Convert path ARG from *nix to Cygwin format. Requires Cygwin installed in a
+# a wine environment, working winepath, and LT_CYGPATH set. Returns result in
+# func_to_host_file_result.
+func_convert_path_nix_to_cygwin ()
+{
+ $opt_debug
+ func_to_host_path_result="$1"
+ if test -n "$1"; then
+ # Remove leading and trailing path separator characters from
+ # ARG. msys behavior is inconsistent here, cygpath turns them
+ # into '.;' and ';.', and winepath ignores them completely.
+ func_stripname : : "$1"
+ func_to_host_path_tmp1=$func_stripname_result
+ func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1"
+ func_cygpath -u -p "$func_convert_core_path_wine_to_w32_result"
+ func_to_host_path_result="$func_cygpath_result"
+ func_convert_path_check : : \
+ "$func_to_host_path_tmp1" "$func_to_host_path_result"
+ func_convert_path_front_back_pathsep ":*" "*:" : "$1"
+ fi
+}
+# end func_convert_path_nix_to_cygwin
+
+
+# func_mode_compile arg...
+func_mode_compile ()
+{
+ $opt_debug
+ # Get the compilation command and the source file.
+ base_compile=
+ srcfile="$nonopt" # always keep a non-empty value in "srcfile"
+ suppress_opt=yes
+ suppress_output=
+ arg_mode=normal
+ libobj=
+ later=
+ pie_flag=
+
+ 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)
+ test -n "$libobj" && \
+ func_fatal_error "you cannot specify \`-o' more than once"
+ arg_mode=target
+ continue
+ ;;
+
+ -pie | -fpie | -fPIE)
+ func_append pie_flag " $arg"
+ continue
+ ;;
+
+ -shared | -static | -prefer-pic | -prefer-non-pic)
+ func_append later " $arg"
+ continue
+ ;;
+
+ -no-suppress)
+ suppress_opt=no
+ continue
+ ;;
+
+ -Xcompiler)
+ arg_mode=arg # the next one goes into the "base_compile" arg list
+ continue # The current "srcfile" will either be retained or
+ ;; # replaced later. I would guess that would be a bug.
+
+ -Wc,*)
+ func_stripname '-Wc,' '' "$arg"
+ args=$func_stripname_result
+ lastarg=
+ save_ifs="$IFS"; IFS=','
+ for arg in $args; do
+ IFS="$save_ifs"
+ func_append_quoted lastarg "$arg"
+ done
+ IFS="$save_ifs"
+ func_stripname ' ' '' "$lastarg"
+ lastarg=$func_stripname_result
+
+ # Add the arguments to base_compile.
+ func_append 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.
+ func_append_quoted base_compile "$lastarg"
+ done # for arg
+
+ case $arg_mode in
+ arg)
+ func_fatal_error "you must specify an argument for -Xcompile"
+ ;;
+ target)
+ func_fatal_error "you must specify a target with \`-o'"
+ ;;
+ *)
+ # Get the name of the library object.
+ test -z "$libobj" && {
+ func_basename "$srcfile"
+ libobj="$func_basename_result"
+ }
+ ;;
+ esac
+
+ # Recognize several different file suffixes.
+ # If the user specifies -o file.o, it is replaced with file.lo
+ case $libobj in
+ *.[cCFSifmso] | \
+ *.ada | *.adb | *.ads | *.asm | \
+ *.c++ | *.cc | *.ii | *.class | *.cpp | *.cxx | \
+ *.[fF][09]? | *.for | *.java | *.go | *.obj | *.sx | *.cu | *.cup)
+ func_xform "$libobj"
+ libobj=$func_xform_result
+ ;;
+ esac
+
+ case $libobj in
+ *.lo) func_lo2o "$libobj"; obj=$func_lo2o_result ;;
+ *)
+ func_fatal_error "cannot determine name of library object from \`$libobj'"
+ ;;
+ esac
+
+ func_infer_tag $base_compile
+
+ for arg in $later; do
+ case $arg in
+ -shared)
+ test "$build_libtool_libs" != yes && \
+ func_fatal_configuration "can not build a shared library"
+ build_old_libs=no
+ continue
+ ;;
+
+ -static)
+ build_libtool_libs=no
+ build_old_libs=yes
+ continue
+ ;;
+
+ -prefer-pic)
+ pic_mode=yes
+ continue
+ ;;
+
+ -prefer-non-pic)
+ pic_mode=no
+ continue
+ ;;
+ esac
+ done
+
+ func_quote_for_eval "$libobj"
+ test "X$libobj" != "X$func_quote_for_eval_result" \
+ && $ECHO "X$libobj" | $GREP '[]~#^*{};<>?"'"'"' &()|`$[]' \
+ && func_warning "libobj name \`$libobj' may not contain shell special characters."
+ func_dirname_and_basename "$obj" "/" ""
+ objname="$func_basename_result"
+ xdir="$func_dirname_result"
+ lobj=${xdir}$objdir/$objname
+
+ test -z "$base_compile" && \
+ func_fatal_help "you must specify a compilation command"
+
+ # 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
+
+ # On Cygwin there's no "real" PIC flag so we must build both object types
+ case $host_os in
+ cygwin* | mingw* | pw32* | os2* | cegcc*)
+ 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 "$srcfile" | $SED 's%^.*/%%; s%\.[^.]*$%%'`.${objext}
+ lockfile="$output_obj.lock"
+ 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 $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do
+ func_echo "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."
+
+ $opt_dry_run || $RM $removelist
+ exit $EXIT_FAILURE
+ fi
+ func_append removelist " $output_obj"
+ $ECHO "$srcfile" > "$lockfile"
+ fi
+
+ $opt_dry_run || $RM $removelist
+ func_append removelist " $lockfile"
+ trap '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' 1 2 15
+
+ func_to_tool_file "$srcfile" func_convert_file_msys_to_w32
+ srcfile=$func_to_tool_file_result
+ func_quote_for_eval "$srcfile"
+ qsrcfile=$func_quote_for_eval_result
+
+ # Only build a PIC object if we are building libtool libraries.
+ if test "$build_libtool_libs" = yes; then
+ # Without this assignment, base_compile gets emptied.
+ fbsd_hideous_sh_bug=$base_compile
+
+ if test "$pic_mode" != no; then
+ command="$base_compile $qsrcfile $pic_flag"
+ else
+ # Don't build PIC code
+ command="$base_compile $qsrcfile"
+ fi
+
+ func_mkdir_p "$xdir$objdir"
+
+ if test -z "$output_obj"; then
+ # Place PIC objects in $objdir
+ func_append command " -o $lobj"
+ fi
+
+ func_show_eval_locale "$command" \
+ 'test -n "$output_obj" && $RM $removelist; exit $EXIT_FAILURE'
+
+ if test "$need_locks" = warn &&
+ test "X`cat $lockfile 2>/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."
+
+ $opt_dry_run || $RM $removelist
+ exit $EXIT_FAILURE
+ fi
+
+ # Just move the object if needed, then go on to compile the next one
+ if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then
+ func_show_eval '$MV "$output_obj" "$lobj"' \
+ 'error=$?; $opt_dry_run || $RM $removelist; exit $error'
+ fi
+
+ # Allow error messages only from the first compilation.
+ if test "$suppress_opt" = yes; then
+ suppress_output=' >/dev/null 2>&1'
+ fi
+ fi
+
+ # Only build a position-dependent object if we build old libraries.
+ if test "$build_old_libs" = yes; then
+ if test "$pic_mode" != yes; then
+ # Don't build PIC code
+ command="$base_compile $qsrcfile$pie_flag"
+ else
+ command="$base_compile $qsrcfile $pic_flag"
+ fi
+ if test "$compiler_c_o" = yes; then
+ func_append command " -o $obj"
+ fi
+
+ # Suppress compiler output if we already did a PIC compilation.
+ func_append command "$suppress_output"
+ func_show_eval_locale "$command" \
+ '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE'
+
+ if test "$need_locks" = warn &&
+ test "X`cat $lockfile 2>/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."
+
+ $opt_dry_run || $RM $removelist
+ exit $EXIT_FAILURE
+ fi
+
+ # Just move the object if needed
+ if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then
+ func_show_eval '$MV "$output_obj" "$obj"' \
+ 'error=$?; $opt_dry_run || $RM $removelist; exit $error'
+ fi
+ fi
+
+ $opt_dry_run || {
+ func_write_libtool_object "$libobj" "$objdir/$objname" "$objname"
+
+ # Unlock the critical section if it was locked
+ if test "$need_locks" != no; then
+ removelist=$lockfile
+ $RM "$lockfile"
+ fi
+ }
+
+ exit $EXIT_SUCCESS
+}
+
+$opt_help || {
+ test "$opt_mode" = compile && func_mode_compile ${1+"$@"}
+}
+
+func_mode_help ()
+{
+ # We need to display help for each of the modes.
+ case $opt_mode in
+ "")
+ # Generic help is extracted from the usage comments
+ # at the start of this file.
+ func_help
+ ;;
+
+ clean)
+ $ECHO \
+"Usage: $progname [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: $progname [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
+ -no-suppress do not suppress compiler output for multiple passes
+ -prefer-pic try to build PIC objects only
+ -prefer-non-pic try to build non-PIC objects only
+ -shared do not build a \`.o' file suitable for static linking
+ -static only build a \`.o' file suitable for static linking
+ -Wc,FLAG pass FLAG directly to the compiler
+
+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: $progname [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: $progname [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: $progname [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 following components of INSTALL-COMMAND are treated specially:
+
+ -inst-prefix-dir PREFIX-DIR Use PREFIX-DIR as a staging area for installation
+
+The rest of the components are interpreted as arguments to that command (only
+BSD-compatible install options are recognized)."
+ ;;
+
+ link)
+ $ECHO \
+"Usage: $progname [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
+ -bindir BINDIR specify path to binaries directory (for systems where
+ libraries must be found in the PATH setting at runtime)
+ -dlopen FILE \`-dlpreopen' FILE if it cannot be dlopened at runtime
+ -dlpreopen FILE link in FILE and add its symbols to lt_preloaded_symbols
+ -export-dynamic allow symbols from OUTPUT-FILE to be resolved with dlsym(3)
+ -export-symbols SYMFILE
+ try to export only the symbols listed in SYMFILE
+ -export-symbols-regex REGEX
+ try to export only the symbols matching REGEX
+ -LLIBDIR search LIBDIR for required installed libraries
+ -lNAME OUTPUT-FILE requires the installed library libNAME
+ -module build a library that can dlopened
+ -no-fast-install disable the fast-install mode
+ -no-install link a not-installable executable
+ -no-undefined declare that a library does not refer to external symbols
+ -o OUTPUT-FILE create OUTPUT-FILE from the specified objects
+ -objectlist FILE Use a list of object files found in FILE to specify objects
+ -precious-files-regex REGEX
+ don't remove output files matching REGEX
+ -release RELEASE specify package release information
+ -rpath LIBDIR the created library will eventually be installed in LIBDIR
+ -R[ ]LIBDIR add LIBDIR to the runtime path of programs and libraries
+ -shared only do dynamic linking of libtool libraries
+ -shrext SUFFIX override the standard shared library file extension
+ -static do not do any dynamic linking of uninstalled libtool libraries
+ -static-libtool-libs
+ do not do any dynamic linking of libtool libraries
+ -version-info CURRENT[:REVISION[:AGE]]
+ specify library version info [each variable defaults to 0]
+ -weak LIBNAME declare that the target provides the LIBNAME interface
+ -Wc,FLAG
+ -Xcompiler FLAG pass linker-specific FLAG directly to the compiler
+ -Wl,FLAG
+ -Xlinker FLAG pass linker-specific FLAG directly to the linker
+ -XCClinker FLAG pass link-specific FLAG to the compiler driver (CC)
+
+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: $progname [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."
+ ;;
+
+ *)
+ func_fatal_help "invalid operation mode \`$opt_mode'"
+ ;;
+ esac
+
+ echo
+ $ECHO "Try \`$progname --help' for more information about other modes."
+}
+
+# Now that we've collected a possible --mode arg, show help if necessary
+if $opt_help; then
+ if test "$opt_help" = :; then
+ func_mode_help
+ else
+ {
+ func_help noexit
+ for opt_mode in compile link execute install finish uninstall clean; do
+ func_mode_help
+ done
+ } | sed -n '1p; 2,$s/^Usage:/ or: /p'
+ {
+ func_help noexit
+ for opt_mode in compile link execute install finish uninstall clean; do
+ echo
+ func_mode_help
+ done
+ } |
+ sed '1d
+ /^When reporting/,/^Report/{
+ H
+ d
+ }
+ $x
+ /information about other modes/d
+ /more detailed .*MODE/d
+ s/^Usage:.*--mode=\([^ ]*\) .*/Description of \1 mode:/'
+ fi
+ exit $?
+fi
+
+
+# func_mode_execute arg...
+func_mode_execute ()
+{
+ $opt_debug
+ # The first argument is the command name.
+ cmd="$nonopt"
+ test -z "$cmd" && \
+ func_fatal_help "you must specify a COMMAND"
+
+ # Handle -dlopen flags immediately.
+ for file in $opt_dlopen; do
+ test -f "$file" \
+ || func_fatal_help "\`$file' is not a file"
+
+ dir=
+ case $file in
+ *.la)
+ func_resolve_sysroot "$file"
+ file=$func_resolve_sysroot_result
+
+ # Check to see that this really is a libtool archive.
+ func_lalib_unsafe_p "$file" \
+ || func_fatal_help "\`$lib' is not a valid libtool archive"
+
+ # Read the libtool library.
+ dlname=
+ library_names=
+ func_source "$file"
+
+ # Skip this library if it cannot be dlopened.
+ if test -z "$dlname"; then
+ # Warn if it was a shared library.
+ test -n "$library_names" && \
+ func_warning "\`$file' was not linked with \`-export-dynamic'"
+ continue
+ fi
+
+ func_dirname "$file" "" "."
+ dir="$func_dirname_result"
+
+ if test -f "$dir/$objdir/$dlname"; then
+ func_append dir "/$objdir"
+ else
+ if test ! -f "$dir/$dlname"; then
+ func_fatal_error "cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'"
+ fi
+ fi
+ ;;
+
+ *.lo)
+ # Just add the directory containing the .lo file.
+ func_dirname "$file" "" "."
+ dir="$func_dirname_result"
+ ;;
+
+ *)
+ func_warning "\`-dlopen' is ignored for non-libtool libraries and objects"
+ 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
+ -* | *.la | *.lo ) ;;
+ *)
+ # Do a test to see if this is really a libtool program.
+ if func_ltwrapper_script_p "$file"; then
+ func_source "$file"
+ # Transform arg to wrapped name.
+ file="$progdir/$program"
+ elif func_ltwrapper_executable_p "$file"; then
+ func_ltwrapper_scriptname "$file"
+ func_source "$func_ltwrapper_scriptname_result"
+ # Transform arg to wrapped name.
+ file="$progdir/$program"
+ fi
+ ;;
+ esac
+ # Quote arguments (to preserve shell metacharacters).
+ func_append_quoted args "$file"
+ done
+
+ if test "X$opt_dry_run" = Xfalse; then
+ if test -n "$shlibpath_var"; then
+ # Export the shlibpath_var.
+ eval "export $shlibpath_var"
+ fi
+
+ # Restore saved environment variables
+ for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES
+ do
+ eval "if test \"\${save_$lt_var+set}\" = set; then
+ $lt_var=\$save_$lt_var; export $lt_var
+ else
+ $lt_unset $lt_var
+ fi"
+ done
+
+ # Now prepare to actually exec the command.
+ exec_cmd="\$cmd$args"
+ else
+ # Display what would be done.
+ if test -n "$shlibpath_var"; then
+ eval "\$ECHO \"\$shlibpath_var=\$$shlibpath_var\""
+ echo "export $shlibpath_var"
+ fi
+ $ECHO "$cmd$args"
+ exit $EXIT_SUCCESS
+ fi
+}
+
+test "$opt_mode" = execute && func_mode_execute ${1+"$@"}
+
+
+# func_mode_finish arg...
+func_mode_finish ()
+{
+ $opt_debug
+ libs=
+ libdirs=
+ admincmds=
+
+ for opt in "$nonopt" ${1+"$@"}
+ do
+ if test -d "$opt"; then
+ func_append libdirs " $opt"
+
+ elif test -f "$opt"; then
+ if func_lalib_unsafe_p "$opt"; then
+ func_append libs " $opt"
+ else
+ func_warning "\`$opt' is not a valid libtool archive"
+ fi
+
+ else
+ func_fatal_error "invalid argument \`$opt'"
+ fi
+ done
+
+ if test -n "$libs"; then
+ if test -n "$lt_sysroot"; then
+ sysroot_regex=`$ECHO "$lt_sysroot" | $SED "$sed_make_literal_regex"`
+ sysroot_cmd="s/\([ ']\)$sysroot_regex/\1/g;"
+ else
+ sysroot_cmd=
+ fi
+
+ # Remove sysroot references
+ if $opt_dry_run; then
+ for lib in $libs; do
+ echo "removing references to $lt_sysroot and \`=' prefixes from $lib"
+ done
+ else
+ tmpdir=`func_mktempdir`
+ for lib in $libs; do
+ sed -e "${sysroot_cmd} s/\([ ']-[LR]\)=/\1/g; s/\([ ']\)=/\1/g" $lib \
+ > $tmpdir/tmp-la
+ mv -f $tmpdir/tmp-la $lib
+ done
+ ${RM}r "$tmpdir"
+ fi
+ fi
+
+ if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then
+ for libdir in $libdirs; do
+ if test -n "$finish_cmds"; then
+ # Do each command in the finish commands.
+ func_execute_cmds "$finish_cmds" 'admincmds="$admincmds
+'"$cmd"'"'
+ fi
+ if test -n "$finish_eval"; then
+ # Do the single finish_eval.
+ eval cmds=\"$finish_eval\"
+ $opt_dry_run || eval "$cmds" || func_append admincmds "
+ $cmds"
+ fi
+ done
+ fi
+
+ # Exit here if they wanted silent mode.
+ $opt_silent && exit $EXIT_SUCCESS
+
+ if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then
+ 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"
+ case $host in
+ solaris2.[6789]|solaris2.1[0-9])
+ echo "more information, such as the ld(1), crle(1) and ld.so(8) manual"
+ echo "pages."
+ ;;
+ *)
+ echo "more information, such as the ld(1) and ld.so(8) manual pages."
+ ;;
+ esac
+ echo "----------------------------------------------------------------------"
+ fi
+ exit $EXIT_SUCCESS
+}
+
+test "$opt_mode" = finish && func_mode_finish ${1+"$@"}
+
+
+# func_mode_install arg...
+func_mode_install ()
+{
+ $opt_debug
+ # 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.
+ case $nonopt in *shtool*) :;; *) false;; esac; then
+ # Aesthetically quote it.
+ func_quote_for_eval "$nonopt"
+ install_prog="$func_quote_for_eval_result "
+ arg=$1
+ shift
+ else
+ install_prog=
+ arg=$nonopt
+ fi
+
+ # The real first argument should be the name of the installation program.
+ # Aesthetically quote it.
+ func_quote_for_eval "$arg"
+ func_append install_prog "$func_quote_for_eval_result"
+ install_shared_prog=$install_prog
+ case " $install_prog " in
+ *[\\\ /]cp\ *) install_cp=: ;;
+ *) install_cp=false ;;
+ esac
+
+ # We need to accept at least all the BSD install flags.
+ dest=
+ files=
+ opts=
+ prev=
+ install_type=
+ isdir=no
+ stripme=
+ no_mode=:
+ for arg
+ do
+ arg2=
+ if test -n "$dest"; then
+ func_append files " $dest"
+ dest=$arg
+ continue
+ fi
+
+ case $arg in
+ -d) isdir=yes ;;
+ -f)
+ if $install_cp; then :; else
+ prev=$arg
+ fi
+ ;;
+ -g | -m | -o)
+ prev=$arg
+ ;;
+ -s)
+ stripme=" -s"
+ continue
+ ;;
+ -*)
+ ;;
+ *)
+ # If the previous option needed an argument, then skip it.
+ if test -n "$prev"; then
+ if test "x$prev" = x-m && test -n "$install_override_mode"; then
+ arg2=$install_override_mode
+ no_mode=false
+ fi
+ prev=
+ else
+ dest=$arg
+ continue
+ fi
+ ;;
+ esac
+
+ # Aesthetically quote the argument.
+ func_quote_for_eval "$arg"
+ func_append install_prog " $func_quote_for_eval_result"
+ if test -n "$arg2"; then
+ func_quote_for_eval "$arg2"
+ fi
+ func_append install_shared_prog " $func_quote_for_eval_result"
+ done
+
+ test -z "$install_prog" && \
+ func_fatal_help "you must specify an install program"
+
+ test -n "$prev" && \
+ func_fatal_help "the \`$prev' option requires an argument"
+
+ if test -n "$install_override_mode" && $no_mode; then
+ if $install_cp; then :; else
+ func_quote_for_eval "$install_override_mode"
+ func_append install_shared_prog " -m $func_quote_for_eval_result"
+ fi
+ fi
+
+ if test -z "$files"; then
+ if test -z "$dest"; then
+ func_fatal_help "no file or destination specified"
+ else
+ func_fatal_help "you must specify a destination"
+ fi
+ fi
+
+ # Strip any trailing slash from the destination.
+ func_stripname '' '/' "$dest"
+ dest=$func_stripname_result
+
+ # Check to see that the destination is a directory.
+ test -d "$dest" && isdir=yes
+ if test "$isdir" = yes; then
+ destdir="$dest"
+ destname=
+ else
+ func_dirname_and_basename "$dest" "" "."
+ destdir="$func_dirname_result"
+ destname="$func_basename_result"
+
+ # Not a directory, so check to see that there is only one file specified.
+ set dummy $files; shift
+ test "$#" -gt 1 && \
+ func_fatal_help "\`$dest' is not a directory"
+ fi
+ case $destdir in
+ [\\/]* | [A-Za-z]:[\\/]*) ;;
+ *)
+ for file in $files; do
+ case $file in
+ *.lo) ;;
+ *)
+ func_fatal_help "\`$destdir' must be an absolute directory name"
+ ;;
+ 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.
+ func_append staticlibs " $file"
+ ;;
+
+ *.la)
+ func_resolve_sysroot "$file"
+ file=$func_resolve_sysroot_result
+
+ # Check to see that this really is a libtool archive.
+ func_lalib_unsafe_p "$file" \
+ || func_fatal_help "\`$file' is not a valid libtool archive"
+
+ library_names=
+ old_library=
+ relink_command=
+ func_source "$file"
+
+ # Add the libdir to current_libdirs if it is the destination.
+ if test "X$destdir" = "X$libdir"; then
+ case "$current_libdirs " in
+ *" $libdir "*) ;;
+ *) func_append current_libdirs " $libdir" ;;
+ esac
+ else
+ # Note the libdir as a future libdir.
+ case "$future_libdirs " in
+ *" $libdir "*) ;;
+ *) func_append future_libdirs " $libdir" ;;
+ esac
+ fi
+
+ func_dirname "$file" "/" ""
+ dir="$func_dirname_result"
+ func_append 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 -e "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.
+ test "$inst_prefix_dir" = "$destdir" && \
+ func_fatal_error "error: cannot install \`$file' to a directory not ending in $libdir"
+
+ 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
+
+ func_warning "relinking \`$file'"
+ func_show_eval "$relink_command" \
+ 'func_fatal_error "error: relink \`$file'\'' with the above command before installing it"'
+ fi
+
+ # See the names of the shared library.
+ set dummy $library_names; shift
+ if test -n "$1"; then
+ realname="$1"
+ shift
+
+ srcname="$realname"
+ test -n "$relink_command" && srcname="$realname"T
+
+ # Install the shared library and build the symlinks.
+ func_show_eval "$install_shared_prog $dir/$srcname $destdir/$realname" \
+ 'exit $?'
+ tstripme="$stripme"
+ case $host_os in
+ cygwin* | mingw* | pw32* | cegcc*)
+ case $realname in
+ *.dll.a)
+ tstripme=""
+ ;;
+ esac
+ ;;
+ esac
+ if test -n "$tstripme" && test -n "$striplib"; then
+ func_show_eval "$striplib $destdir/$realname" 'exit $?'
+ fi
+
+ if test "$#" -gt 0; then
+ # Delete the old symlinks, and create new ones.
+ # Try `ln -sf' first, because the `ln' binary might depend on
+ # the symlink we replace! Solaris /bin/ln does not understand -f,
+ # so we also need to try rm && ln -s.
+ for linkname
+ do
+ test "$linkname" != "$realname" \
+ && func_show_eval "(cd $destdir && { $LN_S -f $realname $linkname || { $RM $linkname && $LN_S $realname $linkname; }; })"
+ done
+ fi
+
+ # Do each command in the postinstall commands.
+ lib="$destdir/$realname"
+ func_execute_cmds "$postinstall_cmds" 'exit $?'
+ fi
+
+ # Install the pseudo-library for information purposes.
+ func_basename "$file"
+ name="$func_basename_result"
+ instname="$dir/$name"i
+ func_show_eval "$install_prog $instname $destdir/$name" 'exit $?'
+
+ # Maybe install the static library, too.
+ test -n "$old_library" && func_append 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
+ func_basename "$file"
+ destfile="$func_basename_result"
+ destfile="$destdir/$destfile"
+ fi
+
+ # Deduce the name of the destination old-style object file.
+ case $destfile in
+ *.lo)
+ func_lo2o "$destfile"
+ staticdest=$func_lo2o_result
+ ;;
+ *.$objext)
+ staticdest="$destfile"
+ destfile=
+ ;;
+ *)
+ func_fatal_help "cannot copy a libtool object to \`$destfile'"
+ ;;
+ esac
+
+ # Install the libtool object if requested.
+ test -n "$destfile" && \
+ func_show_eval "$install_prog $file $destfile" 'exit $?'
+
+ # Install the old object if enabled.
+ if test "$build_old_libs" = yes; then
+ # Deduce the name of the old-style object file.
+ func_lo2o "$file"
+ staticobj=$func_lo2o_result
+ func_show_eval "$install_prog \$staticobj \$staticdest" 'exit $?'
+ fi
+ exit $EXIT_SUCCESS
+ ;;
+
+ *)
+ # Figure out destination file name, if it wasn't already specified.
+ if test -n "$destname"; then
+ destfile="$destdir/$destname"
+ else
+ func_basename "$file"
+ destfile="$func_basename_result"
+ 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
+ func_stripname '' '.exe' "$file"
+ file=$func_stripname_result
+ stripped_ext=".exe"
+ fi
+ ;;
+ esac
+
+ # Do a test to see if this is really a libtool program.
+ case $host in
+ *cygwin* | *mingw*)
+ if func_ltwrapper_executable_p "$file"; then
+ func_ltwrapper_scriptname "$file"
+ wrapper=$func_ltwrapper_scriptname_result
+ else
+ func_stripname '' '.exe' "$file"
+ wrapper=$func_stripname_result
+ fi
+ ;;
+ *)
+ wrapper=$file
+ ;;
+ esac
+ if func_ltwrapper_script_p "$wrapper"; then
+ notinst_deplibs=
+ relink_command=
+
+ func_source "$wrapper"
+
+ # Check the variables that should have been set.
+ test -z "$generated_by_libtool_version" && \
+ func_fatal_error "invalid libtool wrapper script \`$wrapper'"
+
+ finalize=yes
+ for lib in $notinst_deplibs; do
+ # Check to see that each library is installed.
+ libdir=
+ if test -f "$lib"; then
+ func_source "$lib"
+ fi
+ libfile="$libdir/"`$ECHO "$lib" | $SED 's%^.*/%%g'` ### testsuite: skip nested quoting test
+ if test -n "$libdir" && test ! -f "$libfile"; then
+ func_warning "\`$lib' has not been installed in \`$libdir'"
+ finalize=no
+ fi
+ done
+
+ relink_command=
+ func_source "$wrapper"
+
+ outputname=
+ if test "$fast_install" = no && test -n "$relink_command"; then
+ $opt_dry_run || {
+ if test "$finalize" = yes; then
+ tmpdir=`func_mktempdir`
+ func_basename "$file$stripped_ext"
+ file="$func_basename_result"
+ outputname="$tmpdir/$file"
+ # Replace the output file specification.
+ relink_command=`$ECHO "$relink_command" | $SED 's%@OUTPUT@%'"$outputname"'%g'`
+
+ $opt_silent || {
+ func_quote_for_expand "$relink_command"
+ eval "func_echo $func_quote_for_expand_result"
+ }
+ if eval "$relink_command"; then :
+ else
+ func_error "error: relink \`$file' with the above command before installing it"
+ $opt_dry_run || ${RM}r "$tmpdir"
+ continue
+ fi
+ file="$outputname"
+ else
+ func_warning "cannot relink \`$file'"
+ fi
+ }
+ else
+ # Install the binary that we compiled earlier.
+ file=`$ECHO "$file$stripped_ext" | $SED "s%\([^/]*\)$%$objdir/\1%"`
+ fi
+ fi
+
+ # remove .exe since cygwin /usr/bin/install will append another
+ # one anyway
+ case $install_prog,$host in
+ */usr/bin/install*,*cygwin*)
+ case $file:$destfile in
+ *.exe:*.exe)
+ # this is ok
+ ;;
+ *.exe:*)
+ destfile=$destfile.exe
+ ;;
+ *:*.exe)
+ func_stripname '' '.exe' "$destfile"
+ destfile=$func_stripname_result
+ ;;
+ esac
+ ;;
+ esac
+ func_show_eval "$install_prog\$stripme \$file \$destfile" 'exit $?'
+ $opt_dry_run || if test -n "$outputname"; then
+ ${RM}r "$tmpdir"
+ fi
+ ;;
+ esac
+ done
+
+ for file in $staticlibs; do
+ func_basename "$file"
+ name="$func_basename_result"
+
+ # Set up the ranlib parameters.
+ oldlib="$destdir/$name"
+ func_to_tool_file "$oldlib" func_convert_file_msys_to_w32
+ tool_oldlib=$func_to_tool_file_result
+
+ func_show_eval "$install_prog \$file \$oldlib" 'exit $?'
+
+ if test -n "$stripme" && test -n "$old_striplib"; then
+ func_show_eval "$old_striplib $tool_oldlib" 'exit $?'
+ fi
+
+ # Do each command in the postinstall commands.
+ func_execute_cmds "$old_postinstall_cmds" 'exit $?'
+ done
+
+ test -n "$future_libdirs" && \
+ func_warning "remember to run \`$progname --finish$future_libdirs'"
+
+ if test -n "$current_libdirs"; then
+ # Maybe just do a dry run.
+ $opt_dry_run && current_libdirs=" -n$current_libdirs"
+ exec_cmd='$SHELL $progpath $preserve_args --finish$current_libdirs'
+ else
+ exit $EXIT_SUCCESS
+ fi
+}
+
+test "$opt_mode" = install && func_mode_install ${1+"$@"}
+
+
+# func_generate_dlsyms outputname originator pic_p
+# Extract symbols from dlprefiles and create ${outputname}S.o with
+# a dlpreopen symbol table.
+func_generate_dlsyms ()
+{
+ $opt_debug
+ my_outputname="$1"
+ my_originator="$2"
+ my_pic_p="${3-no}"
+ my_prefix=`$ECHO "$my_originator" | sed 's%[^a-zA-Z0-9]%_%g'`
+ my_dlsyms=
+
+ if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
+ if test -n "$NM" && test -n "$global_symbol_pipe"; then
+ my_dlsyms="${my_outputname}S.c"
+ else
+ func_error "not configured to extract global symbols from dlpreopened files"
+ fi
+ fi
+
+ if test -n "$my_dlsyms"; then
+ case $my_dlsyms in
+ "") ;;
+ *.c)
+ # Discover the nlist of each of the dlfiles.
+ nlist="$output_objdir/${my_outputname}.nm"
+
+ func_show_eval "$RM $nlist ${nlist}S ${nlist}T"
+
+ # Parse the name list into a source file.
+ func_verbose "creating $output_objdir/$my_dlsyms"
+
+ $opt_dry_run || $ECHO > "$output_objdir/$my_dlsyms" "\
+/* $my_dlsyms - symbol resolution table for \`$my_outputname' dlsym emulation. */
+/* Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION */
+
+#ifdef __cplusplus
+extern \"C\" {
+#endif
+
+#if defined(__GNUC__) && (((__GNUC__ == 4) && (__GNUC_MINOR__ >= 4)) || (__GNUC__ > 4))
+#pragma GCC diagnostic ignored \"-Wstrict-prototypes\"
+#endif
+
+/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */
+#if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE)
+/* DATA imports from DLLs on WIN32 con't be const, because runtime
+ relocations are performed -- see ld's documentation on pseudo-relocs. */
+# define LT_DLSYM_CONST
+#elif defined(__osf__)
+/* This system does not cope well with relocations in const data. */
+# define LT_DLSYM_CONST
+#else
+# define LT_DLSYM_CONST const
+#endif
+
+/* External symbol declarations for the compiler. */\
+"
+
+ if test "$dlself" = yes; then
+ func_verbose "generating symbol list for \`$output'"
+
+ $opt_dry_run || echo ': @PROGRAM@ ' > "$nlist"
+
+ # Add our own program objects to the symbol list.
+ progfiles=`$ECHO "$objs$old_deplibs" | $SP2NL | $SED "$lo2o" | $NL2SP`
+ for progfile in $progfiles; do
+ func_to_tool_file "$progfile" func_convert_file_msys_to_w32
+ func_verbose "extracting global C symbols from \`$func_to_tool_file_result'"
+ $opt_dry_run || eval "$NM $func_to_tool_file_result | $global_symbol_pipe >> '$nlist'"
+ done
+
+ if test -n "$exclude_expsyms"; then
+ $opt_dry_run || {
+ eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T'
+ eval '$MV "$nlist"T "$nlist"'
+ }
+ fi
+
+ if test -n "$export_symbols_regex"; then
+ $opt_dry_run || {
+ eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T'
+ eval '$MV "$nlist"T "$nlist"'
+ }
+ fi
+
+ # Prepare the list of exported symbols
+ if test -z "$export_symbols"; then
+ export_symbols="$output_objdir/$outputname.exp"
+ $opt_dry_run || {
+ $RM $export_symbols
+ eval "${SED} -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"'
+ case $host in
+ *cygwin* | *mingw* | *cegcc* )
+ eval "echo EXPORTS "'> "$output_objdir/$outputname.def"'
+ eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"'
+ ;;
+ esac
+ }
+ else
+ $opt_dry_run || {
+ eval "${SED} -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"'
+ eval '$GREP -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T'
+ eval '$MV "$nlist"T "$nlist"'
+ case $host in
+ *cygwin* | *mingw* | *cegcc* )
+ eval "echo EXPORTS "'> "$output_objdir/$outputname.def"'
+ eval 'cat "$nlist" >> "$output_objdir/$outputname.def"'
+ ;;
+ esac
+ }
+ fi
+ fi
+
+ for dlprefile in $dlprefiles; do
+ func_verbose "extracting global C symbols from \`$dlprefile'"
+ func_basename "$dlprefile"
+ name="$func_basename_result"
+ case $host in
+ *cygwin* | *mingw* | *cegcc* )
+ # if an import library, we need to obtain dlname
+ if func_win32_import_lib_p "$dlprefile"; then
+ func_tr_sh "$dlprefile"
+ eval "curr_lafile=\$libfile_$func_tr_sh_result"
+ dlprefile_dlbasename=""
+ if test -n "$curr_lafile" && func_lalib_p "$curr_lafile"; then
+ # Use subshell, to avoid clobbering current variable values
+ dlprefile_dlname=`source "$curr_lafile" && echo "$dlname"`
+ if test -n "$dlprefile_dlname" ; then
+ func_basename "$dlprefile_dlname"
+ dlprefile_dlbasename="$func_basename_result"
+ else
+ # no lafile. user explicitly requested -dlpreopen <import library>.
+ $sharedlib_from_linklib_cmd "$dlprefile"
+ dlprefile_dlbasename=$sharedlib_from_linklib_result
+ fi
+ fi
+ $opt_dry_run || {
+ if test -n "$dlprefile_dlbasename" ; then
+ eval '$ECHO ": $dlprefile_dlbasename" >> "$nlist"'
+ else
+ func_warning "Could not compute DLL name from $name"
+ eval '$ECHO ": $name " >> "$nlist"'
+ fi
+ func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32
+ eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe |
+ $SED -e '/I __imp/d' -e 's/I __nm_/D /;s/_nm__//' >> '$nlist'"
+ }
+ else # not an import lib
+ $opt_dry_run || {
+ eval '$ECHO ": $name " >> "$nlist"'
+ func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32
+ eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'"
+ }
+ fi
+ ;;
+ *)
+ $opt_dry_run || {
+ eval '$ECHO ": $name " >> "$nlist"'
+ func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32
+ eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'"
+ }
+ ;;
+ esac
+ done
+
+ $opt_dry_run || {
+ # 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 >/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/$my_dlsyms"'
+ else
+ echo '/* NONE */' >> "$output_objdir/$my_dlsyms"
+ fi
+
+ echo >> "$output_objdir/$my_dlsyms" "\
+
+/* The mapping between symbol names and symbols. */
+typedef struct {
+ const char *name;
+ void *address;
+} lt_dlsymlist;
+extern LT_DLSYM_CONST lt_dlsymlist
+lt_${my_prefix}_LTX_preloaded_symbols[];
+LT_DLSYM_CONST lt_dlsymlist
+lt_${my_prefix}_LTX_preloaded_symbols[] =
+{\
+ { \"$my_originator\", (void *) 0 },"
+
+ case $need_lib_prefix in
+ no)
+ eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$my_dlsyms"
+ ;;
+ *)
+ eval "$global_symbol_to_c_name_address_lib_prefix" < "$nlist" >> "$output_objdir/$my_dlsyms"
+ ;;
+ esac
+ echo >> "$output_objdir/$my_dlsyms" "\
+ {0, (void *) 0}
+};
+
+/* This works around a problem in FreeBSD linker */
+#ifdef FREEBSD_WORKAROUND
+static const void *lt_preloaded_setup() {
+ return lt_${my_prefix}_LTX_preloaded_symbols;
+}
+#endif
+
+#ifdef __cplusplus
+}
+#endif\
+"
+ } # !$opt_dry_run
+
+ pic_flag_for_symtable=
+ case "$compile_command " in
+ *" -static "*) ;;
+ *)
+ 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*)
+ pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND" ;;
+ *-*-hpux*)
+ pic_flag_for_symtable=" $pic_flag" ;;
+ *)
+ if test "X$my_pic_p" != Xno; then
+ pic_flag_for_symtable=" $pic_flag"
+ fi
+ ;;
+ esac
+ ;;
+ esac
+ symtab_cflags=
+ for arg in $LTCFLAGS; do
+ case $arg in
+ -pie | -fpie | -fPIE) ;;
+ *) func_append symtab_cflags " $arg" ;;
+ esac
+ done
+
+ # Now compile the dynamic symbol file.
+ func_show_eval '(cd $output_objdir && $LTCC$symtab_cflags -c$no_builtin_flag$pic_flag_for_symtable "$my_dlsyms")' 'exit $?'
+
+ # Clean up the generated files.
+ func_show_eval '$RM "$output_objdir/$my_dlsyms" "$nlist" "${nlist}S" "${nlist}T"'
+
+ # Transform the symbol file into the correct name.
+ symfileobj="$output_objdir/${my_outputname}S.$objext"
+ case $host in
+ *cygwin* | *mingw* | *cegcc* )
+ if test -f "$output_objdir/$my_outputname.def"; then
+ compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"`
+ finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"`
+ else
+ compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"`
+ finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"`
+ fi
+ ;;
+ *)
+ compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"`
+ finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"`
+ ;;
+ esac
+ ;;
+ *)
+ func_fatal_error "unknown suffix for \`$my_dlsyms'"
+ ;;
+ 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 "$compile_command" | $SED "s% @SYMFILE@%%"`
+ finalize_command=`$ECHO "$finalize_command" | $SED "s% @SYMFILE@%%"`
+ fi
+}
+
+# func_win32_libid arg
+# return the library type of file 'arg'
+#
+# Need a lot of goo to handle *both* DLLs and import libs
+# Has to be a shell function in order to 'eat' the argument
+# that is supplied when $file_magic_command is called.
+# Despite the name, also deal with 64 bit binaries.
+func_win32_libid ()
+{
+ $opt_debug
+ 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
+ # Keep the egrep pattern in sync with the one in _LT_CHECK_MAGIC_METHOD.
+ if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null |
+ $EGREP 'file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' >/dev/null; then
+ func_to_tool_file "$1" func_convert_file_msys_to_w32
+ win32_nmres=`eval $NM -f posix -A \"$func_to_tool_file_result\" |
+ $SED -n -e '
+ 1,100{
+ / I /{
+ s,.*,import,
+ p
+ q
+ }
+ }'`
+ case $win32_nmres in
+ import*) win32_libid_type="x86 archive import";;
+ *) win32_libid_type="x86 archive static";;
+ esac
+ fi
+ ;;
+ *DLL*)
+ win32_libid_type="x86 DLL"
+ ;;
+ *executable*) # but shell scripts are "executable" too...
+ case $win32_fileres in
+ *MS\ Windows\ PE\ Intel*)
+ win32_libid_type="x86 DLL"
+ ;;
+ esac
+ ;;
+ esac
+ $ECHO "$win32_libid_type"
+}
+
+# func_cygming_dll_for_implib ARG
+#
+# Platform-specific function to extract the
+# name of the DLL associated with the specified
+# import library ARG.
+# Invoked by eval'ing the libtool variable
+# $sharedlib_from_linklib_cmd
+# Result is available in the variable
+# $sharedlib_from_linklib_result
+func_cygming_dll_for_implib ()
+{
+ $opt_debug
+ sharedlib_from_linklib_result=`$DLLTOOL --identify-strict --identify "$1"`
+}
+
+# func_cygming_dll_for_implib_fallback_core SECTION_NAME LIBNAMEs
+#
+# The is the core of a fallback implementation of a
+# platform-specific function to extract the name of the
+# DLL associated with the specified import library LIBNAME.
+#
+# SECTION_NAME is either .idata$6 or .idata$7, depending
+# on the platform and compiler that created the implib.
+#
+# Echos the name of the DLL associated with the
+# specified import library.
+func_cygming_dll_for_implib_fallback_core ()
+{
+ $opt_debug
+ match_literal=`$ECHO "$1" | $SED "$sed_make_literal_regex"`
+ $OBJDUMP -s --section "$1" "$2" 2>/dev/null |
+ $SED '/^Contents of section '"$match_literal"':/{
+ # Place marker at beginning of archive member dllname section
+ s/.*/====MARK====/
+ p
+ d
+ }
+ # These lines can sometimes be longer than 43 characters, but
+ # are always uninteresting
+ /:[ ]*file format pe[i]\{,1\}-/d
+ /^In archive [^:]*:/d
+ # Ensure marker is printed
+ /^====MARK====/p
+ # Remove all lines with less than 43 characters
+ /^.\{43\}/!d
+ # From remaining lines, remove first 43 characters
+ s/^.\{43\}//' |
+ $SED -n '
+ # Join marker and all lines until next marker into a single line
+ /^====MARK====/ b para
+ H
+ $ b para
+ b
+ :para
+ x
+ s/\n//g
+ # Remove the marker
+ s/^====MARK====//
+ # Remove trailing dots and whitespace
+ s/[\. \t]*$//
+ # Print
+ /./p' |
+ # we now have a list, one entry per line, of the stringified
+ # contents of the appropriate section of all members of the
+ # archive which possess that section. Heuristic: eliminate
+ # all those which have a first or second character that is
+ # a '.' (that is, objdump's representation of an unprintable
+ # character.) This should work for all archives with less than
+ # 0x302f exports -- but will fail for DLLs whose name actually
+ # begins with a literal '.' or a single character followed by
+ # a '.'.
+ #
+ # Of those that remain, print the first one.
+ $SED -e '/^\./d;/^.\./d;q'
+}
+
+# func_cygming_gnu_implib_p ARG
+# This predicate returns with zero status (TRUE) if
+# ARG is a GNU/binutils-style import library. Returns
+# with nonzero status (FALSE) otherwise.
+func_cygming_gnu_implib_p ()
+{
+ $opt_debug
+ func_to_tool_file "$1" func_convert_file_msys_to_w32
+ func_cygming_gnu_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $EGREP ' (_head_[A-Za-z0-9_]+_[ad]l*|[A-Za-z0-9_]+_[ad]l*_iname)$'`
+ test -n "$func_cygming_gnu_implib_tmp"
+}
+
+# func_cygming_ms_implib_p ARG
+# This predicate returns with zero status (TRUE) if
+# ARG is an MS-style import library. Returns
+# with nonzero status (FALSE) otherwise.
+func_cygming_ms_implib_p ()
+{
+ $opt_debug
+ func_to_tool_file "$1" func_convert_file_msys_to_w32
+ func_cygming_ms_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $GREP '_NULL_IMPORT_DESCRIPTOR'`
+ test -n "$func_cygming_ms_implib_tmp"
+}
+
+# func_cygming_dll_for_implib_fallback ARG
+# Platform-specific function to extract the
+# name of the DLL associated with the specified
+# import library ARG.
+#
+# This fallback implementation is for use when $DLLTOOL
+# does not support the --identify-strict option.
+# Invoked by eval'ing the libtool variable
+# $sharedlib_from_linklib_cmd
+# Result is available in the variable
+# $sharedlib_from_linklib_result
+func_cygming_dll_for_implib_fallback ()
+{
+ $opt_debug
+ if func_cygming_gnu_implib_p "$1" ; then
+ # binutils import library
+ sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$7' "$1"`
+ elif func_cygming_ms_implib_p "$1" ; then
+ # ms-generated import library
+ sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$6' "$1"`
+ else
+ # unknown
+ sharedlib_from_linklib_result=""
+ fi
+}
+
+
+# func_extract_an_archive dir oldlib
+func_extract_an_archive ()
+{
+ $opt_debug
+ f_ex_an_ar_dir="$1"; shift
+ f_ex_an_ar_oldlib="$1"
+ if test "$lock_old_archive_extraction" = yes; then
+ lockfile=$f_ex_an_ar_oldlib.lock
+ until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do
+ func_echo "Waiting for $lockfile to be removed"
+ sleep 2
+ done
+ fi
+ func_show_eval "(cd \$f_ex_an_ar_dir && $AR x \"\$f_ex_an_ar_oldlib\")" \
+ 'stat=$?; rm -f "$lockfile"; exit $stat'
+ if test "$lock_old_archive_extraction" = yes; then
+ $opt_dry_run || rm -f "$lockfile"
+ fi
+ if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then
+ :
+ else
+ func_fatal_error "object name conflicts in archive: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib"
+ fi
+}
+
+
+# func_extract_archives gentop oldlib ...
+func_extract_archives ()
+{
+ $opt_debug
+ my_gentop="$1"; shift
+ my_oldlibs=${1+"$@"}
+ my_oldobjs=""
+ my_xlib=""
+ my_xabs=""
+ my_xdir=""
+
+ for my_xlib in $my_oldlibs; do
+ # Extract the objects.
+ case $my_xlib in
+ [\\/]* | [A-Za-z]:[\\/]*) my_xabs="$my_xlib" ;;
+ *) my_xabs=`pwd`"/$my_xlib" ;;
+ esac
+ func_basename "$my_xlib"
+ my_xlib="$func_basename_result"
+ my_xlib_u=$my_xlib
+ while :; do
+ case " $extracted_archives " in
+ *" $my_xlib_u "*)
+ func_arith $extracted_serial + 1
+ extracted_serial=$func_arith_result
+ my_xlib_u=lt$extracted_serial-$my_xlib ;;
+ *) break ;;
+ esac
+ done
+ extracted_archives="$extracted_archives $my_xlib_u"
+ my_xdir="$my_gentop/$my_xlib_u"
+
+ func_mkdir_p "$my_xdir"
+
+ case $host in
+ *-darwin*)
+ func_verbose "Extracting $my_xabs"
+ # Do not bother doing anything if just a dry run
+ $opt_dry_run || {
+ darwin_orig_dir=`pwd`
+ cd $my_xdir || exit $?
+ darwin_archive=$my_xabs
+ darwin_curdir=`pwd`
+ darwin_base_archive=`basename "$darwin_archive"`
+ darwin_arches=`$LIPO -info "$darwin_archive" 2>/dev/null | $GREP Architectures 2>/dev/null || true`
+ if test -n "$darwin_arches"; then
+ darwin_arches=`$ECHO "$darwin_arches" | $SED -e 's/.*are://'`
+ darwin_arch=
+ func_verbose "$darwin_base_archive has multiple architectures $darwin_arches"
+ for darwin_arch in $darwin_arches ; do
+ func_mkdir_p "unfat-$$/${darwin_base_archive}-${darwin_arch}"
+ $LIPO -thin $darwin_arch -output "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" "${darwin_archive}"
+ cd "unfat-$$/${darwin_base_archive}-${darwin_arch}"
+ func_extract_an_archive "`pwd`" "${darwin_base_archive}"
+ cd "$darwin_curdir"
+ $RM "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}"
+ done # $darwin_arches
+ ## Okay now we've a bunch of thin objects, gotta fatten them up :)
+ darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print | $SED -e "$basename" | sort -u`
+ darwin_file=
+ darwin_files=
+ for darwin_file in $darwin_filelist; do
+ darwin_files=`find unfat-$$ -name $darwin_file -print | sort | $NL2SP`
+ $LIPO -create -output "$darwin_file" $darwin_files
+ done # $darwin_filelist
+ $RM -rf unfat-$$
+ cd "$darwin_orig_dir"
+ else
+ cd $darwin_orig_dir
+ func_extract_an_archive "$my_xdir" "$my_xabs"
+ fi # $darwin_arches
+ } # !$opt_dry_run
+ ;;
+ *)
+ func_extract_an_archive "$my_xdir" "$my_xabs"
+ ;;
+ esac
+ my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | sort | $NL2SP`
+ done
+
+ func_extract_archives_result="$my_oldobjs"
+}
+
+
+# func_emit_wrapper [arg=no]
+#
+# Emit a libtool wrapper script on stdout.
+# Don't directly open a file because we may want to
+# incorporate the script contents within a cygwin/mingw
+# wrapper executable. Must ONLY be called from within
+# func_mode_link because it depends on a number of variables
+# set therein.
+#
+# ARG is the value that the WRAPPER_SCRIPT_BELONGS_IN_OBJDIR
+# variable will take. If 'yes', then the emitted script
+# will assume that the directory in which it is stored is
+# the $objdir directory. This is a cygwin/mingw-specific
+# behavior.
+func_emit_wrapper ()
+{
+ func_emit_wrapper_arg1=${1-no}
+
+ $ECHO "\
+#! $SHELL
+
+# $output - temporary wrapper script for $objdir/$outputname
+# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
+#
+# 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.
+sed_quote_subst='$sed_quote_subst'
+
+# 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+\"\$@\"}'='\"\$@\"'
+ setopt NO_GLOB_SUBST
+else
+ case \`(set -o) 2>/dev/null\` in *posix*) set -o posix;; esac
+fi
+BIN_SH=xpg4; export BIN_SH # for Tru64
+DUALCASE=1; export DUALCASE # for MKS sh
+
+# The HP-UX ksh and POSIX shell print the target directory to stdout
+# if CDPATH is set.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+
+relink_command=\"$relink_command\"
+
+# This environment variable determines our operation mode.
+if test \"\$libtool_install_magic\" = \"$magic\"; then
+ # install mode needs the following variables:
+ generated_by_libtool_version='$macro_version'
+ 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
+ file=\"\$0\""
+
+ qECHO=`$ECHO "$ECHO" | $SED "$sed_quote_subst"`
+ $ECHO "\
+
+# A function that is used when there is no print builtin or printf.
+func_fallback_echo ()
+{
+ eval 'cat <<_LTECHO_EOF
+\$1
+_LTECHO_EOF'
+}
+ ECHO=\"$qECHO\"
+ fi
+
+# Very basic option parsing. These options are (a) specific to
+# the libtool wrapper, (b) are identical between the wrapper
+# /script/ and the wrapper /executable/ which is used only on
+# windows platforms, and (c) all begin with the string "--lt-"
+# (application programs are unlikely to have options which match
+# this pattern).
+#
+# There are only two supported options: --lt-debug and
+# --lt-dump-script. There is, deliberately, no --lt-help.
+#
+# The first argument to this parsing function should be the
+# script's $0 value, followed by "$@".
+lt_option_debug=
+func_parse_lt_options ()
+{
+ lt_script_arg0=\$0
+ shift
+ for lt_opt
+ do
+ case \"\$lt_opt\" in
+ --lt-debug) lt_option_debug=1 ;;
+ --lt-dump-script)
+ lt_dump_D=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%/[^/]*$%%'\`
+ test \"X\$lt_dump_D\" = \"X\$lt_script_arg0\" && lt_dump_D=.
+ lt_dump_F=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%^.*/%%'\`
+ cat \"\$lt_dump_D/\$lt_dump_F\"
+ exit 0
+ ;;
+ --lt-*)
+ \$ECHO \"Unrecognized --lt- option: '\$lt_opt'\" 1>&2
+ exit 1
+ ;;
+ esac
+ done
+
+ # Print the debug banner immediately:
+ if test -n \"\$lt_option_debug\"; then
+ echo \"${outputname}:${output}:\${LINENO}: libtool wrapper (GNU $PACKAGE$TIMESTAMP) $VERSION\" 1>&2
+ fi
+}
+
+# Used when --lt-debug. Prints its arguments to stdout
+# (redirection is the responsibility of the caller)
+func_lt_dump_args ()
+{
+ lt_dump_args_N=1;
+ for lt_arg
+ do
+ \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[\$lt_dump_args_N]: \$lt_arg\"
+ lt_dump_args_N=\`expr \$lt_dump_args_N + 1\`
+ done
+}
+
+# Core function for launching the target application
+func_exec_program_core ()
+{
+"
+ case $host in
+ # Backslashes separate directories on plain windows
+ *-*-mingw | *-*-os2* | *-cegcc*)
+ $ECHO "\
+ if test -n \"\$lt_option_debug\"; then
+ \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[0]: \$progdir\\\\\$program\" 1>&2
+ func_lt_dump_args \${1+\"\$@\"} 1>&2
+ fi
+ exec \"\$progdir\\\\\$program\" \${1+\"\$@\"}
+"
+ ;;
+
+ *)
+ $ECHO "\
+ if test -n \"\$lt_option_debug\"; then
+ \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[0]: \$progdir/\$program\" 1>&2
+ func_lt_dump_args \${1+\"\$@\"} 1>&2
+ fi
+ exec \"\$progdir/\$program\" \${1+\"\$@\"}
+"
+ ;;
+ esac
+ $ECHO "\
+ \$ECHO \"\$0: cannot exec \$program \$*\" 1>&2
+ exit 1
+}
+
+# A function to encapsulate launching the target application
+# Strips options in the --lt-* namespace from \$@ and
+# launches target application with the remaining arguments.
+func_exec_program ()
+{
+ case \" \$* \" in
+ *\\ --lt-*)
+ for lt_wr_arg
+ do
+ case \$lt_wr_arg in
+ --lt-*) ;;
+ *) set x \"\$@\" \"\$lt_wr_arg\"; shift;;
+ esac
+ shift
+ done ;;
+ esac
+ func_exec_program_core \${1+\"\$@\"}
+}
+
+ # Parse options
+ func_parse_lt_options \"\$0\" \${1+\"\$@\"}
+
+ # Find the directory that this script lives in.
+ thisdir=\`\$ECHO \"\$file\" | $SED '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 \"\$file\" | $SED '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 \"\$file\" | $SED 's%^.*/%%'\`
+ file=\`ls -ld \"\$thisdir/\$file\" | $SED -n 's/.*-> //p'\`
+ done
+
+ # Usually 'no', except on cygwin/mingw when embedded into
+ # the cwrapper.
+ WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=$func_emit_wrapper_arg1
+ if test \"\$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR\" = \"yes\"; then
+ # special case for '.'
+ if test \"\$thisdir\" = \".\"; then
+ thisdir=\`pwd\`
+ fi
+ # remove .libs from thisdir
+ case \"\$thisdir\" in
+ *[\\\\/]$objdir ) thisdir=\`\$ECHO \"\$thisdir\" | $SED 's%[\\\\/][^\\\\/]*$%%'\` ;;
+ $objdir ) thisdir=. ;;
+ esac
+ fi
+
+ # Try to get the absolute directory name.
+ absdir=\`cd \"\$thisdir\" && pwd\`
+ test -n \"\$absdir\" && thisdir=\"\$absdir\"
+"
+
+ if test "$fast_install" = yes; then
+ $ECHO "\
+ 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 "\
+
+ # 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 "\
+ program='$outputname'
+ progdir=\"\$thisdir/$objdir\"
+"
+ fi
+
+ $ECHO "\
+
+ if test -f \"\$progdir/\$program\"; then"
+
+ # fixup the dll searchpath if we need to.
+ #
+ # Fix the DLL searchpath if we need to. Do this before prepending
+ # to shlibpath, because on Windows, both are PATH and uninstalled
+ # libraries must come first.
+ if test -n "$dllsearchpath"; then
+ $ECHO "\
+ # Add the dll search path components to the executable PATH
+ PATH=$dllsearchpath:\$PATH
+"
+ fi
+
+ # Export our shlibpath_var if we have one.
+ if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then
+ $ECHO "\
+ # 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 \"\$$shlibpath_var\" | $SED 's/::*\$//'\`
+
+ export $shlibpath_var
+"
+ fi
+
+ $ECHO "\
+ if test \"\$libtool_execute_magic\" != \"$magic\"; then
+ # Run the actual program with our arguments.
+ func_exec_program \${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\
+"
+}
+
+
+# func_emit_cwrapperexe_src
+# emit the source code for a wrapper executable on stdout
+# Must ONLY be called from within func_mode_link because
+# it depends on a number of variable set therein.
+func_emit_cwrapperexe_src ()
+{
+ cat <<EOF
+
+/* $cwrappersource - temporary wrapper executable for $objdir/$outputname
+ Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
+
+ The $output program cannot be directly executed until all the libtool
+ libraries that it depends on are installed.
+
+ This wrapper executable should never be moved out of the build directory.
+ If it is, it will not operate correctly.
+*/
+EOF
+ cat <<"EOF"
+#ifdef _MSC_VER
+# define _CRT_SECURE_NO_DEPRECATE 1
+#endif
+#include <stdio.h>
+#include <stdlib.h>
+#ifdef _MSC_VER
+# include <direct.h>
+# include <process.h>
+# include <io.h>
+#else
+# include <unistd.h>
+# include <stdint.h>
+# ifdef __CYGWIN__
+# include <io.h>
+# endif
+#endif
+#include <malloc.h>
+#include <stdarg.h>
+#include <assert.h>
+#include <string.h>
+#include <ctype.h>
+#include <errno.h>
+#include <fcntl.h>
+#include <sys/stat.h>
+
+/* declarations of non-ANSI functions */
+#if defined(__MINGW32__)
+# ifdef __STRICT_ANSI__
+int _putenv (const char *);
+# endif
+#elif defined(__CYGWIN__)
+# ifdef __STRICT_ANSI__
+char *realpath (const char *, char *);
+int putenv (char *);
+int setenv (const char *, const char *, int);
+# endif
+/* #elif defined (other platforms) ... */
+#endif
+
+/* portability defines, excluding path handling macros */
+#if defined(_MSC_VER)
+# define setmode _setmode
+# define stat _stat
+# define chmod _chmod
+# define getcwd _getcwd
+# define putenv _putenv
+# define S_IXUSR _S_IEXEC
+# ifndef _INTPTR_T_DEFINED
+# define _INTPTR_T_DEFINED
+# define intptr_t int
+# endif
+#elif defined(__MINGW32__)
+# define setmode _setmode
+# define stat _stat
+# define chmod _chmod
+# define getcwd _getcwd
+# define putenv _putenv
+#elif defined(__CYGWIN__)
+# define HAVE_SETENV
+# define FOPEN_WB "wb"
+/* #elif defined (other platforms) ... */
+#endif
+
+#if defined(PATH_MAX)
+# define LT_PATHMAX PATH_MAX
+#elif defined(MAXPATHLEN)
+# define LT_PATHMAX MAXPATHLEN
+#else
+# define LT_PATHMAX 1024
+#endif
+
+#ifndef S_IXOTH
+# define S_IXOTH 0
+#endif
+#ifndef S_IXGRP
+# define S_IXGRP 0
+#endif
+
+/* path handling portability macros */
+#ifndef DIR_SEPARATOR
+# define DIR_SEPARATOR '/'
+# define PATH_SEPARATOR ':'
+#endif
+
+#if defined (_WIN32) || defined (__MSDOS__) || defined (__DJGPP__) || \
+ defined (__OS2__)
+# define HAVE_DOS_BASED_FILE_SYSTEM
+# define FOPEN_WB "wb"
+# ifndef DIR_SEPARATOR_2
+# define DIR_SEPARATOR_2 '\\'
+# endif
+# ifndef PATH_SEPARATOR_2
+# define PATH_SEPARATOR_2 ';'
+# endif
+#endif
+
+#ifndef DIR_SEPARATOR_2
+# define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR)
+#else /* DIR_SEPARATOR_2 */
+# define IS_DIR_SEPARATOR(ch) \
+ (((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2))
+#endif /* DIR_SEPARATOR_2 */
+
+#ifndef PATH_SEPARATOR_2
+# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR)
+#else /* PATH_SEPARATOR_2 */
+# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2)
+#endif /* PATH_SEPARATOR_2 */
+
+#ifndef FOPEN_WB
+# define FOPEN_WB "w"
+#endif
+#ifndef _O_BINARY
+# define _O_BINARY 0
+#endif
+
+#define XMALLOC(type, num) ((type *) xmalloc ((num) * sizeof(type)))
+#define XFREE(stale) do { \
+ if (stale) { free ((void *) stale); stale = 0; } \
+} while (0)
+
+#if defined(LT_DEBUGWRAPPER)
+static int lt_debug = 1;
+#else
+static int lt_debug = 0;
+#endif
+
+const char *program_name = "libtool-wrapper"; /* in case xstrdup fails */
+
+void *xmalloc (size_t num);
+char *xstrdup (const char *string);
+const char *base_name (const char *name);
+char *find_executable (const char *wrapper);
+char *chase_symlinks (const char *pathspec);
+int make_executable (const char *path);
+int check_executable (const char *path);
+char *strendzap (char *str, const char *pat);
+void lt_debugprintf (const char *file, int line, const char *fmt, ...);
+void lt_fatal (const char *file, int line, const char *message, ...);
+static const char *nonnull (const char *s);
+static const char *nonempty (const char *s);
+void lt_setenv (const char *name, const char *value);
+char *lt_extend_str (const char *orig_value, const char *add, int to_end);
+void lt_update_exe_path (const char *name, const char *value);
+void lt_update_lib_path (const char *name, const char *value);
+char **prepare_spawn (char **argv);
+void lt_dump_script (FILE *f);
+EOF
+
+ cat <<EOF
+volatile const char * MAGIC_EXE = "$magic_exe";
+const char * LIB_PATH_VARNAME = "$shlibpath_var";
+EOF
+
+ if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then
+ func_to_host_path "$temp_rpath"
+ cat <<EOF
+const char * LIB_PATH_VALUE = "$func_to_host_path_result";
+EOF
+ else
+ cat <<"EOF"
+const char * LIB_PATH_VALUE = "";
+EOF
+ fi
+
+ if test -n "$dllsearchpath"; then
+ func_to_host_path "$dllsearchpath:"
+ cat <<EOF
+const char * EXE_PATH_VARNAME = "PATH";
+const char * EXE_PATH_VALUE = "$func_to_host_path_result";
+EOF
+ else
+ cat <<"EOF"
+const char * EXE_PATH_VARNAME = "";
+const char * EXE_PATH_VALUE = "";
+EOF
+ fi
+
+ if test "$fast_install" = yes; then
+ cat <<EOF
+const char * TARGET_PROGRAM_NAME = "lt-$outputname"; /* hopefully, no .exe */
+EOF
+ else
+ cat <<EOF
+const char * TARGET_PROGRAM_NAME = "$outputname"; /* hopefully, no .exe */
+EOF
+ fi
+
+
+ cat <<"EOF"
+
+#define LTWRAPPER_OPTION_PREFIX "--lt-"
+
+static const char *ltwrapper_option_prefix = LTWRAPPER_OPTION_PREFIX;
+static const char *dumpscript_opt = LTWRAPPER_OPTION_PREFIX "dump-script";
+static const char *debug_opt = LTWRAPPER_OPTION_PREFIX "debug";
+
+int
+main (int argc, char *argv[])
+{
+ char **newargz;
+ int newargc;
+ char *tmp_pathspec;
+ char *actual_cwrapper_path;
+ char *actual_cwrapper_name;
+ char *target_name;
+ char *lt_argv_zero;
+ intptr_t rval = 127;
+
+ int i;
+
+ program_name = (char *) xstrdup (base_name (argv[0]));
+ newargz = XMALLOC (char *, argc + 1);
+
+ /* very simple arg parsing; don't want to rely on getopt
+ * also, copy all non cwrapper options to newargz, except
+ * argz[0], which is handled differently
+ */
+ newargc=0;
+ for (i = 1; i < argc; i++)
+ {
+ if (strcmp (argv[i], dumpscript_opt) == 0)
+ {
+EOF
+ case "$host" in
+ *mingw* | *cygwin* )
+ # make stdout use "unix" line endings
+ echo " setmode(1,_O_BINARY);"
+ ;;
+ esac
+
+ cat <<"EOF"
+ lt_dump_script (stdout);
+ return 0;
+ }
+ if (strcmp (argv[i], debug_opt) == 0)
+ {
+ lt_debug = 1;
+ continue;
+ }
+ if (strcmp (argv[i], ltwrapper_option_prefix) == 0)
+ {
+ /* however, if there is an option in the LTWRAPPER_OPTION_PREFIX
+ namespace, but it is not one of the ones we know about and
+ have already dealt with, above (inluding dump-script), then
+ report an error. Otherwise, targets might begin to believe
+ they are allowed to use options in the LTWRAPPER_OPTION_PREFIX
+ namespace. The first time any user complains about this, we'll
+ need to make LTWRAPPER_OPTION_PREFIX a configure-time option
+ or a configure.ac-settable value.
+ */
+ lt_fatal (__FILE__, __LINE__,
+ "unrecognized %s option: '%s'",
+ ltwrapper_option_prefix, argv[i]);
+ }
+ /* otherwise ... */
+ newargz[++newargc] = xstrdup (argv[i]);
+ }
+ newargz[++newargc] = NULL;
+
+EOF
+ cat <<EOF
+ /* The GNU banner must be the first non-error debug message */
+ lt_debugprintf (__FILE__, __LINE__, "libtool wrapper (GNU $PACKAGE$TIMESTAMP) $VERSION\n");
+EOF
+ cat <<"EOF"
+ lt_debugprintf (__FILE__, __LINE__, "(main) argv[0]: %s\n", argv[0]);
+ lt_debugprintf (__FILE__, __LINE__, "(main) program_name: %s\n", program_name);
+
+ tmp_pathspec = find_executable (argv[0]);
+ if (tmp_pathspec == NULL)
+ lt_fatal (__FILE__, __LINE__, "couldn't find %s", argv[0]);
+ lt_debugprintf (__FILE__, __LINE__,
+ "(main) found exe (before symlink chase) at: %s\n",
+ tmp_pathspec);
+
+ actual_cwrapper_path = chase_symlinks (tmp_pathspec);
+ lt_debugprintf (__FILE__, __LINE__,
+ "(main) found exe (after symlink chase) at: %s\n",
+ actual_cwrapper_path);
+ XFREE (tmp_pathspec);
+
+ actual_cwrapper_name = xstrdup (base_name (actual_cwrapper_path));
+ strendzap (actual_cwrapper_path, actual_cwrapper_name);
+
+ /* wrapper name transforms */
+ strendzap (actual_cwrapper_name, ".exe");
+ tmp_pathspec = lt_extend_str (actual_cwrapper_name, ".exe", 1);
+ XFREE (actual_cwrapper_name);
+ actual_cwrapper_name = tmp_pathspec;
+ tmp_pathspec = 0;
+
+ /* target_name transforms -- use actual target program name; might have lt- prefix */
+ target_name = xstrdup (base_name (TARGET_PROGRAM_NAME));
+ strendzap (target_name, ".exe");
+ tmp_pathspec = lt_extend_str (target_name, ".exe", 1);
+ XFREE (target_name);
+ target_name = tmp_pathspec;
+ tmp_pathspec = 0;
+
+ lt_debugprintf (__FILE__, __LINE__,
+ "(main) libtool target name: %s\n",
+ target_name);
+EOF
+
+ cat <<EOF
+ newargz[0] =
+ XMALLOC (char, (strlen (actual_cwrapper_path) +
+ strlen ("$objdir") + 1 + strlen (actual_cwrapper_name) + 1));
+ strcpy (newargz[0], actual_cwrapper_path);
+ strcat (newargz[0], "$objdir");
+ strcat (newargz[0], "/");
+EOF
+
+ cat <<"EOF"
+ /* stop here, and copy so we don't have to do this twice */
+ tmp_pathspec = xstrdup (newargz[0]);
+
+ /* do NOT want the lt- prefix here, so use actual_cwrapper_name */
+ strcat (newargz[0], actual_cwrapper_name);
+
+ /* DO want the lt- prefix here if it exists, so use target_name */
+ lt_argv_zero = lt_extend_str (tmp_pathspec, target_name, 1);
+ XFREE (tmp_pathspec);
+ tmp_pathspec = NULL;
+EOF
+
+ case $host_os in
+ mingw*)
+ cat <<"EOF"
+ {
+ char* p;
+ while ((p = strchr (newargz[0], '\\')) != NULL)
+ {
+ *p = '/';
+ }
+ while ((p = strchr (lt_argv_zero, '\\')) != NULL)
+ {
+ *p = '/';
+ }
+ }
+EOF
+ ;;
+ esac
+
+ cat <<"EOF"
+ XFREE (target_name);
+ XFREE (actual_cwrapper_path);
+ XFREE (actual_cwrapper_name);
+
+ lt_setenv ("BIN_SH", "xpg4"); /* for Tru64 */
+ lt_setenv ("DUALCASE", "1"); /* for MSK sh */
+ /* Update the DLL searchpath. EXE_PATH_VALUE ($dllsearchpath) must
+ be prepended before (that is, appear after) LIB_PATH_VALUE ($temp_rpath)
+ because on Windows, both *_VARNAMEs are PATH but uninstalled
+ libraries must come first. */
+ lt_update_exe_path (EXE_PATH_VARNAME, EXE_PATH_VALUE);
+ lt_update_lib_path (LIB_PATH_VARNAME, LIB_PATH_VALUE);
+
+ lt_debugprintf (__FILE__, __LINE__, "(main) lt_argv_zero: %s\n",
+ nonnull (lt_argv_zero));
+ for (i = 0; i < newargc; i++)
+ {
+ lt_debugprintf (__FILE__, __LINE__, "(main) newargz[%d]: %s\n",
+ i, nonnull (newargz[i]));
+ }
+
+EOF
+
+ case $host_os in
+ mingw*)
+ cat <<"EOF"
+ /* execv doesn't actually work on mingw as expected on unix */
+ newargz = prepare_spawn (newargz);
+ rval = _spawnv (_P_WAIT, lt_argv_zero, (const char * const *) newargz);
+ if (rval == -1)
+ {
+ /* failed to start process */
+ lt_debugprintf (__FILE__, __LINE__,
+ "(main) failed to launch target \"%s\": %s\n",
+ lt_argv_zero, nonnull (strerror (errno)));
+ return 127;
+ }
+ return rval;
+EOF
+ ;;
+ *)
+ cat <<"EOF"
+ execv (lt_argv_zero, newargz);
+ return rval; /* =127, but avoids unused variable warning */
+EOF
+ ;;
+ esac
+
+ cat <<"EOF"
+}
+
+void *
+xmalloc (size_t num)
+{
+ void *p = (void *) malloc (num);
+ if (!p)
+ lt_fatal (__FILE__, __LINE__, "memory exhausted");
+
+ return p;
+}
+
+char *
+xstrdup (const char *string)
+{
+ return string ? strcpy ((char *) xmalloc (strlen (string) + 1),
+ string) : NULL;
+}
+
+const char *
+base_name (const char *name)
+{
+ const char *base;
+
+#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
+ /* Skip over the disk name in MSDOS pathnames. */
+ if (isalpha ((unsigned char) name[0]) && name[1] == ':')
+ name += 2;
+#endif
+
+ for (base = name; *name; name++)
+ if (IS_DIR_SEPARATOR (*name))
+ base = name + 1;
+ return base;
+}
+
+int
+check_executable (const char *path)
+{
+ struct stat st;
+
+ lt_debugprintf (__FILE__, __LINE__, "(check_executable): %s\n",
+ nonempty (path));
+ if ((!path) || (!*path))
+ return 0;
+
+ if ((stat (path, &st) >= 0)
+ && (st.st_mode & (S_IXUSR | S_IXGRP | S_IXOTH)))
+ return 1;
+ else
+ return 0;
+}
+
+int
+make_executable (const char *path)
+{
+ int rval = 0;
+ struct stat st;
+
+ lt_debugprintf (__FILE__, __LINE__, "(make_executable): %s\n",
+ nonempty (path));
+ if ((!path) || (!*path))
+ return 0;
+
+ if (stat (path, &st) >= 0)
+ {
+ rval = chmod (path, st.st_mode | S_IXOTH | S_IXGRP | S_IXUSR);
+ }
+ return rval;
+}
+
+/* Searches for the full path of the wrapper. Returns
+ newly allocated full path name if found, NULL otherwise
+ Does not chase symlinks, even on platforms that support them.
+*/
+char *
+find_executable (const char *wrapper)
+{
+ int has_slash = 0;
+ const char *p;
+ const char *p_next;
+ /* static buffer for getcwd */
+ char tmp[LT_PATHMAX + 1];
+ int tmp_len;
+ char *concat_name;
+
+ lt_debugprintf (__FILE__, __LINE__, "(find_executable): %s\n",
+ nonempty (wrapper));
+
+ if ((wrapper == NULL) || (*wrapper == '\0'))
+ return NULL;
+
+ /* Absolute path? */
+#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
+ if (isalpha ((unsigned char) wrapper[0]) && wrapper[1] == ':')
+ {
+ concat_name = xstrdup (wrapper);
+ if (check_executable (concat_name))
+ return concat_name;
+ XFREE (concat_name);
+ }
+ else
+ {
+#endif
+ if (IS_DIR_SEPARATOR (wrapper[0]))
+ {
+ concat_name = xstrdup (wrapper);
+ if (check_executable (concat_name))
+ return concat_name;
+ XFREE (concat_name);
+ }
+#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
+ }
+#endif
+
+ for (p = wrapper; *p; p++)
+ if (*p == '/')
+ {
+ has_slash = 1;
+ break;
+ }
+ if (!has_slash)
+ {
+ /* no slashes; search PATH */
+ const char *path = getenv ("PATH");
+ if (path != NULL)
+ {
+ for (p = path; *p; p = p_next)
+ {
+ const char *q;
+ size_t p_len;
+ for (q = p; *q; q++)
+ if (IS_PATH_SEPARATOR (*q))
+ break;
+ p_len = q - p;
+ p_next = (*q == '\0' ? q : q + 1);
+ if (p_len == 0)
+ {
+ /* empty path: current directory */
+ if (getcwd (tmp, LT_PATHMAX) == NULL)
+ lt_fatal (__FILE__, __LINE__, "getcwd failed: %s",
+ nonnull (strerror (errno)));
+ tmp_len = strlen (tmp);
+ concat_name =
+ XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1);
+ memcpy (concat_name, tmp, tmp_len);
+ concat_name[tmp_len] = '/';
+ strcpy (concat_name + tmp_len + 1, wrapper);
+ }
+ else
+ {
+ concat_name =
+ XMALLOC (char, p_len + 1 + strlen (wrapper) + 1);
+ memcpy (concat_name, p, p_len);
+ concat_name[p_len] = '/';
+ strcpy (concat_name + p_len + 1, wrapper);
+ }
+ if (check_executable (concat_name))
+ return concat_name;
+ XFREE (concat_name);
+ }
+ }
+ /* not found in PATH; assume curdir */
+ }
+ /* Relative path | not found in path: prepend cwd */
+ if (getcwd (tmp, LT_PATHMAX) == NULL)
+ lt_fatal (__FILE__, __LINE__, "getcwd failed: %s",
+ nonnull (strerror (errno)));
+ tmp_len = strlen (tmp);
+ concat_name = XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1);
+ memcpy (concat_name, tmp, tmp_len);
+ concat_name[tmp_len] = '/';
+ strcpy (concat_name + tmp_len + 1, wrapper);
+
+ if (check_executable (concat_name))
+ return concat_name;
+ XFREE (concat_name);
+ return NULL;
+}
+
+char *
+chase_symlinks (const char *pathspec)
+{
+#ifndef S_ISLNK
+ return xstrdup (pathspec);
+#else
+ char buf[LT_PATHMAX];
+ struct stat s;
+ char *tmp_pathspec = xstrdup (pathspec);
+ char *p;
+ int has_symlinks = 0;
+ while (strlen (tmp_pathspec) && !has_symlinks)
+ {
+ lt_debugprintf (__FILE__, __LINE__,
+ "checking path component for symlinks: %s\n",
+ tmp_pathspec);
+ if (lstat (tmp_pathspec, &s) == 0)
+ {
+ if (S_ISLNK (s.st_mode) != 0)
+ {
+ has_symlinks = 1;
+ break;
+ }
+
+ /* search backwards for last DIR_SEPARATOR */
+ p = tmp_pathspec + strlen (tmp_pathspec) - 1;
+ while ((p > tmp_pathspec) && (!IS_DIR_SEPARATOR (*p)))
+ p--;
+ if ((p == tmp_pathspec) && (!IS_DIR_SEPARATOR (*p)))
+ {
+ /* no more DIR_SEPARATORS left */
+ break;
+ }
+ *p = '\0';
+ }
+ else
+ {
+ lt_fatal (__FILE__, __LINE__,
+ "error accessing file \"%s\": %s",
+ tmp_pathspec, nonnull (strerror (errno)));
+ }
+ }
+ XFREE (tmp_pathspec);
+
+ if (!has_symlinks)
+ {
+ return xstrdup (pathspec);
+ }
+
+ tmp_pathspec = realpath (pathspec, buf);
+ if (tmp_pathspec == 0)
+ {
+ lt_fatal (__FILE__, __LINE__,
+ "could not follow symlinks for %s", pathspec);
+ }
+ return xstrdup (tmp_pathspec);
+#endif
+}
+
+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;
+}
+
+void
+lt_debugprintf (const char *file, int line, const char *fmt, ...)
+{
+ va_list args;
+ if (lt_debug)
+ {
+ (void) fprintf (stderr, "%s:%s:%d: ", program_name, file, line);
+ va_start (args, fmt);
+ (void) vfprintf (stderr, fmt, args);
+ va_end (args);
+ }
+}
+
+static void
+lt_error_core (int exit_status, const char *file,
+ int line, const char *mode,
+ const char *message, va_list ap)
+{
+ fprintf (stderr, "%s:%s:%d: %s: ", program_name, file, line, mode);
+ vfprintf (stderr, message, ap);
+ fprintf (stderr, ".\n");
+
+ if (exit_status >= 0)
+ exit (exit_status);
+}
+
+void
+lt_fatal (const char *file, int line, const char *message, ...)
+{
+ va_list ap;
+ va_start (ap, message);
+ lt_error_core (EXIT_FAILURE, file, line, "FATAL", message, ap);
+ va_end (ap);
+}
+
+static const char *
+nonnull (const char *s)
+{
+ return s ? s : "(null)";
+}
+
+static const char *
+nonempty (const char *s)
+{
+ return (s && !*s) ? "(empty)" : nonnull (s);
+}
+
+void
+lt_setenv (const char *name, const char *value)
+{
+ lt_debugprintf (__FILE__, __LINE__,
+ "(lt_setenv) setting '%s' to '%s'\n",
+ nonnull (name), nonnull (value));
+ {
+#ifdef HAVE_SETENV
+ /* always make a copy, for consistency with !HAVE_SETENV */
+ char *str = xstrdup (value);
+ setenv (name, str, 1);
+#else
+ int len = strlen (name) + 1 + strlen (value) + 1;
+ char *str = XMALLOC (char, len);
+ sprintf (str, "%s=%s", name, value);
+ if (putenv (str) != EXIT_SUCCESS)
+ {
+ XFREE (str);
+ }
+#endif
+ }
+}
+
+char *
+lt_extend_str (const char *orig_value, const char *add, int to_end)
+{
+ char *new_value;
+ if (orig_value && *orig_value)
+ {
+ int orig_value_len = strlen (orig_value);
+ int add_len = strlen (add);
+ new_value = XMALLOC (char, add_len + orig_value_len + 1);
+ if (to_end)
+ {
+ strcpy (new_value, orig_value);
+ strcpy (new_value + orig_value_len, add);
+ }
+ else
+ {
+ strcpy (new_value, add);
+ strcpy (new_value + add_len, orig_value);
+ }
+ }
+ else
+ {
+ new_value = xstrdup (add);
+ }
+ return new_value;
+}
+
+void
+lt_update_exe_path (const char *name, const char *value)
+{
+ lt_debugprintf (__FILE__, __LINE__,
+ "(lt_update_exe_path) modifying '%s' by prepending '%s'\n",
+ nonnull (name), nonnull (value));
+
+ if (name && *name && value && *value)
+ {
+ char *new_value = lt_extend_str (getenv (name), value, 0);
+ /* some systems can't cope with a ':'-terminated path #' */
+ int len = strlen (new_value);
+ while (((len = strlen (new_value)) > 0) && IS_PATH_SEPARATOR (new_value[len-1]))
+ {
+ new_value[len-1] = '\0';
+ }
+ lt_setenv (name, new_value);
+ XFREE (new_value);
+ }
+}
+
+void
+lt_update_lib_path (const char *name, const char *value)
+{
+ lt_debugprintf (__FILE__, __LINE__,
+ "(lt_update_lib_path) modifying '%s' by prepending '%s'\n",
+ nonnull (name), nonnull (value));
+
+ if (name && *name && value && *value)
+ {
+ char *new_value = lt_extend_str (getenv (name), value, 0);
+ lt_setenv (name, new_value);
+ XFREE (new_value);
+ }
+}
+
+EOF
+ case $host_os in
+ mingw*)
+ cat <<"EOF"
+
+/* Prepares an argument vector before calling spawn().
+ Note that spawn() does not by itself call the command interpreter
+ (getenv ("COMSPEC") != NULL ? getenv ("COMSPEC") :
+ ({ OSVERSIONINFO v; v.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
+ GetVersionEx(&v);
+ v.dwPlatformId == VER_PLATFORM_WIN32_NT;
+ }) ? "cmd.exe" : "command.com").
+ Instead it simply concatenates the arguments, separated by ' ', and calls
+ CreateProcess(). We must quote the arguments since Win32 CreateProcess()
+ interprets characters like ' ', '\t', '\\', '"' (but not '<' and '>') in a
+ special way:
+ - Space and tab are interpreted as delimiters. They are not treated as
+ delimiters if they are surrounded by double quotes: "...".
+ - Unescaped double quotes are removed from the input. Their only effect is
+ that within double quotes, space and tab are treated like normal
+ characters.
+ - Backslashes not followed by double quotes are not special.
+ - But 2*n+1 backslashes followed by a double quote become
+ n backslashes followed by a double quote (n >= 0):
+ \" -> "
+ \\\" -> \"
+ \\\\\" -> \\"
+ */
+#define SHELL_SPECIAL_CHARS "\"\\ \001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037"
+#define SHELL_SPACE_CHARS " \001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037"
+char **
+prepare_spawn (char **argv)
+{
+ size_t argc;
+ char **new_argv;
+ size_t i;
+
+ /* Count number of arguments. */
+ for (argc = 0; argv[argc] != NULL; argc++)
+ ;
+
+ /* Allocate new argument vector. */
+ new_argv = XMALLOC (char *, argc + 1);
+
+ /* Put quoted arguments into the new argument vector. */
+ for (i = 0; i < argc; i++)
+ {
+ const char *string = argv[i];
+
+ if (string[0] == '\0')
+ new_argv[i] = xstrdup ("\"\"");
+ else if (strpbrk (string, SHELL_SPECIAL_CHARS) != NULL)
+ {
+ int quote_around = (strpbrk (string, SHELL_SPACE_CHARS) != NULL);
+ size_t length;
+ unsigned int backslashes;
+ const char *s;
+ char *quoted_string;
+ char *p;
+
+ length = 0;
+ backslashes = 0;
+ if (quote_around)
+ length++;
+ for (s = string; *s != '\0'; s++)
+ {
+ char c = *s;
+ if (c == '"')
+ length += backslashes + 1;
+ length++;
+ if (c == '\\')
+ backslashes++;
+ else
+ backslashes = 0;
+ }
+ if (quote_around)
+ length += backslashes + 1;
+
+ quoted_string = XMALLOC (char, length + 1);
+
+ p = quoted_string;
+ backslashes = 0;
+ if (quote_around)
+ *p++ = '"';
+ for (s = string; *s != '\0'; s++)
+ {
+ char c = *s;
+ if (c == '"')
+ {
+ unsigned int j;
+ for (j = backslashes + 1; j > 0; j--)
+ *p++ = '\\';
+ }
+ *p++ = c;
+ if (c == '\\')
+ backslashes++;
+ else
+ backslashes = 0;
+ }
+ if (quote_around)
+ {
+ unsigned int j;
+ for (j = backslashes; j > 0; j--)
+ *p++ = '\\';
+ *p++ = '"';
+ }
+ *p = '\0';
+
+ new_argv[i] = quoted_string;
+ }
+ else
+ new_argv[i] = (char *) string;
+ }
+ new_argv[argc] = NULL;
+
+ return new_argv;
+}
+EOF
+ ;;
+ esac
+
+ cat <<"EOF"
+void lt_dump_script (FILE* f)
+{
+EOF
+ func_emit_wrapper yes |
+ $SED -n -e '
+s/^\(.\{79\}\)\(..*\)/\1\
+\2/
+h
+s/\([\\"]\)/\\\1/g
+s/$/\\n/
+s/\([^\n]*\).*/ fputs ("\1", f);/p
+g
+D'
+ cat <<"EOF"
+}
+EOF
+}
+# end: func_emit_cwrapperexe_src
+
+# func_win32_import_lib_p ARG
+# True if ARG is an import lib, as indicated by $file_magic_cmd
+func_win32_import_lib_p ()
+{
+ $opt_debug
+ case `eval $file_magic_cmd \"\$1\" 2>/dev/null | $SED -e 10q` in
+ *import*) : ;;
+ *) false ;;
+ esac
+}
+
+# func_mode_link arg...
+func_mode_link ()
+{
+ $opt_debug
+ case $host in
+ *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*)
+ # It is impossible to link a dll without this setting, and
+ # we shouldn't force the makefile maintainer to figure out
+ # which system we are compiling for in order to pass an extra
+ # flag for every libtool invocation.
+ # allow_undefined=no
+
+ # FIXME: Unfortunately, there are problems with the above when trying
+ # to make a dll which has undefined symbols, in which case not
+ # even a static library is built. For now, we need to specify
+ # -no-undefined on the libtool link line when we can be certain
+ # that all symbols are satisfied, otherwise we get a static library.
+ allow_undefined=yes
+ ;;
+ *)
+ allow_undefined=yes
+ ;;
+ esac
+ libtool_args=$nonopt
+ base_compile="$nonopt $@"
+ compile_command=$nonopt
+ finalize_command=$nonopt
+
+ compile_rpath=
+ finalize_rpath=
+ compile_shlibpath=
+ finalize_shlibpath=
+ convenience=
+ old_convenience=
+ deplibs=
+ old_deplibs=
+ compiler_flags=
+ linker_flags=
+ dllsearchpath=
+ lib_search_path=`pwd`
+ inst_prefix_dir=
+ new_inherited_linker_flags=
+
+ avoid_version=no
+ bindir=
+ dlfiles=
+ dlprefiles=
+ dlself=no
+ export_dynamic=no
+ export_symbols=
+ export_symbols_regex=
+ generated=
+ libobjs=
+ ltlibs=
+ module=no
+ no_install=no
+ objs=
+ non_pic_objects=
+ precious_files_regex=
+ prefer_static_libs=no
+ preload=no
+ prev=
+ prevarg=
+ release=
+ rpath=
+ xrpath=
+ perm_rpath=
+ temp_rpath=
+ thread_safe=no
+ vinfo=
+ vinfo_number=no
+ weak_libs=
+ single_module="${wl}-single_module"
+ func_infer_tag $base_compile
+
+ # We need to know -static, to get the right output filenames.
+ for arg
+ do
+ case $arg in
+ -shared)
+ test "$build_libtool_libs" != yes && \
+ func_fatal_configuration "can not build a shared library"
+ build_old_libs=no
+ break
+ ;;
+ -all-static | -static | -static-libtool-libs)
+ case $arg in
+ -all-static)
+ if test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then
+ func_warning "complete static linking is impossible in this configuration"
+ fi
+ if test -n "$link_static_flag"; then
+ dlopen_self=$dlopen_self_static
+ fi
+ prefer_static_libs=yes
+ ;;
+ -static)
+ if test -z "$pic_flag" && test -n "$link_static_flag"; then
+ dlopen_self=$dlopen_self_static
+ fi
+ prefer_static_libs=built
+ ;;
+ -static-libtool-libs)
+ if test -z "$pic_flag" && test -n "$link_static_flag"; then
+ dlopen_self=$dlopen_self_static
+ fi
+ prefer_static_libs=yes
+ ;;
+ esac
+ build_libtool_libs=no
+ build_old_libs=yes
+ break
+ ;;
+ esac
+ done
+
+ # See if our shared archives depend on static archives.
+ test -n "$old_archive_from_new_cmds" && build_old_libs=yes
+
+ # Go through the arguments, transforming them on the way.
+ while test "$#" -gt 0; do
+ arg="$1"
+ shift
+ func_quote_for_eval "$arg"
+ qarg=$func_quote_for_eval_unquoted_result
+ func_append libtool_args " $func_quote_for_eval_result"
+
+ # If the previous option needs an argument, assign it.
+ if test -n "$prev"; then
+ case $prev in
+ output)
+ func_append compile_command " @OUTPUT@"
+ func_append finalize_command " @OUTPUT@"
+ ;;
+ esac
+
+ case $prev in
+ bindir)
+ bindir="$arg"
+ prev=
+ continue
+ ;;
+ dlfiles|dlprefiles)
+ if test "$preload" = no; then
+ # Add the symbol object into the linking commands.
+ func_append compile_command " @SYMFILE@"
+ func_append 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
+ func_append dlfiles " $arg"
+ else
+ func_append dlprefiles " $arg"
+ fi
+ prev=
+ continue
+ ;;
+ esac
+ ;;
+ expsyms)
+ export_symbols="$arg"
+ test -f "$arg" \
+ || func_fatal_error "symbol file \`$arg' does not exist"
+ prev=
+ continue
+ ;;
+ expsyms_regex)
+ export_symbols_regex="$arg"
+ prev=
+ continue
+ ;;
+ framework)
+ case $host in
+ *-*-darwin*)
+ case "$deplibs " in
+ *" $qarg.ltframework "*) ;;
+ *) func_append deplibs " $qarg.ltframework" # this is fixed later
+ ;;
+ esac
+ ;;
+ esac
+ prev=
+ continue
+ ;;
+ inst_prefix)
+ inst_prefix_dir="$arg"
+ prev=
+ continue
+ ;;
+ objectlist)
+ if test -f "$arg"; then
+ save_arg=$arg
+ moreargs=
+ for fil in `cat "$save_arg"`
+ do
+# func_append moreargs " $fil"
+ arg=$fil
+ # A libtool-controlled object.
+
+ # Check to see that this really is a libtool object.
+ if func_lalib_unsafe_p "$arg"; then
+ pic_object=
+ non_pic_object=
+
+ # Read the .lo file
+ func_source "$arg"
+
+ if test -z "$pic_object" ||
+ test -z "$non_pic_object" ||
+ test "$pic_object" = none &&
+ test "$non_pic_object" = none; then
+ func_fatal_error "cannot find name of object for \`$arg'"
+ fi
+
+ # Extract subdirectory from the argument.
+ func_dirname "$arg" "/" ""
+ xdir="$func_dirname_result"
+
+ 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
+ func_append 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.
+ func_append dlprefiles " $pic_object"
+ prev=
+ fi
+
+ # A PIC object.
+ func_append 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
+ func_append non_pic_objects " $non_pic_object"
+ if test -z "$pic_object" || test "$pic_object" = none ; then
+ arg="$non_pic_object"
+ fi
+ else
+ # If the PIC object exists, use it instead.
+ # $xdir was prepended to $pic_object above.
+ non_pic_object="$pic_object"
+ func_append non_pic_objects " $non_pic_object"
+ fi
+ else
+ # Only an error if not doing a dry-run.
+ if $opt_dry_run; then
+ # Extract subdirectory from the argument.
+ func_dirname "$arg" "/" ""
+ xdir="$func_dirname_result"
+
+ func_lo2o "$arg"
+ pic_object=$xdir$objdir/$func_lo2o_result
+ non_pic_object=$xdir$func_lo2o_result
+ func_append libobjs " $pic_object"
+ func_append non_pic_objects " $non_pic_object"
+ else
+ func_fatal_error "\`$arg' is not a valid libtool object"
+ fi
+ fi
+ done
+ else
+ func_fatal_error "link input file \`$arg' does not exist"
+ fi
+ arg=$save_arg
+ prev=
+ continue
+ ;;
+ precious_regex)
+ precious_files_regex="$arg"
+ prev=
+ continue
+ ;;
+ release)
+ release="-$arg"
+ prev=
+ continue
+ ;;
+ rpath | xrpath)
+ # We need an absolute path.
+ case $arg in
+ [\\/]* | [A-Za-z]:[\\/]*) ;;
+ *)
+ func_fatal_error "only absolute run-paths are allowed"
+ ;;
+ esac
+ if test "$prev" = rpath; then
+ case "$rpath " in
+ *" $arg "*) ;;
+ *) func_append rpath " $arg" ;;
+ esac
+ else
+ case "$xrpath " in
+ *" $arg "*) ;;
+ *) func_append xrpath " $arg" ;;
+ esac
+ fi
+ prev=
+ continue
+ ;;
+ shrext)
+ shrext_cmds="$arg"
+ prev=
+ continue
+ ;;
+ weak)
+ func_append weak_libs " $arg"
+ prev=
+ continue
+ ;;
+ xcclinker)
+ func_append linker_flags " $qarg"
+ func_append compiler_flags " $qarg"
+ prev=
+ func_append compile_command " $qarg"
+ func_append finalize_command " $qarg"
+ continue
+ ;;
+ xcompiler)
+ func_append compiler_flags " $qarg"
+ prev=
+ func_append compile_command " $qarg"
+ func_append finalize_command " $qarg"
+ continue
+ ;;
+ xlinker)
+ func_append linker_flags " $qarg"
+ func_append compiler_flags " $wl$qarg"
+ prev=
+ func_append compile_command " $wl$qarg"
+ func_append finalize_command " $wl$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
+ # See comment for -static flag below, for more details.
+ func_append compile_command " $link_static_flag"
+ func_append finalize_command " $link_static_flag"
+ fi
+ continue
+ ;;
+
+ -allow-undefined)
+ # FIXME: remove this flag sometime in the future.
+ func_fatal_error "\`-allow-undefined' must not be used because it is the default"
+ ;;
+
+ -avoid-version)
+ avoid_version=yes
+ continue
+ ;;
+
+ -bindir)
+ prev=bindir
+ 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
+ func_fatal_error "more than one -exported-symbols argument is not allowed"
+ fi
+ if test "X$arg" = "X-export-symbols"; then
+ prev=expsyms
+ else
+ prev=expsyms_regex
+ fi
+ continue
+ ;;
+
+ -framework)
+ prev=framework
+ 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*)
+ func_append compile_command " $arg"
+ func_append finalize_command " $arg"
+ ;;
+ esac
+ continue
+ ;;
+
+ -L*)
+ func_stripname "-L" '' "$arg"
+ if test -z "$func_stripname_result"; then
+ if test "$#" -gt 0; then
+ func_fatal_error "require no space between \`-L' and \`$1'"
+ else
+ func_fatal_error "need path for \`-L' option"
+ fi
+ fi
+ func_resolve_sysroot "$func_stripname_result"
+ dir=$func_resolve_sysroot_result
+ # We need an absolute path.
+ case $dir in
+ [\\/]* | [A-Za-z]:[\\/]*) ;;
+ *)
+ absdir=`cd "$dir" && pwd`
+ test -z "$absdir" && \
+ func_fatal_error "cannot determine absolute directory name of \`$dir'"
+ dir="$absdir"
+ ;;
+ esac
+ case "$deplibs " in
+ *" -L$dir "* | *" $arg "*)
+ # Will only happen for absolute or sysroot arguments
+ ;;
+ *)
+ # Preserve sysroot, but never include relative directories
+ case $dir in
+ [\\/]* | [A-Za-z]:[\\/]* | =*) func_append deplibs " $arg" ;;
+ *) func_append deplibs " -L$dir" ;;
+ esac
+ func_append lib_search_path " $dir"
+ ;;
+ esac
+ case $host in
+ *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*)
+ testbindir=`$ECHO "$dir" | $SED 's*/lib$*/bin*'`
+ case :$dllsearchpath: in
+ *":$dir:"*) ;;
+ ::) dllsearchpath=$dir;;
+ *) func_append dllsearchpath ":$dir";;
+ esac
+ case :$dllsearchpath: in
+ *":$testbindir:"*) ;;
+ ::) dllsearchpath=$testbindir;;
+ *) func_append dllsearchpath ":$testbindir";;
+ esac
+ ;;
+ esac
+ continue
+ ;;
+
+ -l*)
+ if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then
+ case $host in
+ *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos* | *-cegcc* | *-*-haiku*)
+ # These systems don't actually have a C or math library (as such)
+ continue
+ ;;
+ *-*-os2*)
+ # These systems don't actually have a C library (as such)
+ test "X$arg" = "X-lc" && continue
+ ;;
+ *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
+ # Do not include libc due to us having libc/libc_r.
+ test "X$arg" = "X-lc" && continue
+ ;;
+ *-*-rhapsody* | *-*-darwin1.[012])
+ # Rhapsody C and math libraries are in the System framework
+ func_append deplibs " System.ltframework"
+ continue
+ ;;
+ *-*-sco3.2v5* | *-*-sco5v6*)
+ # Causes problems with __ctype
+ test "X$arg" = "X-lc" && continue
+ ;;
+ *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*)
+ # Compiler inserts libc in the correct place for threads to work
+ test "X$arg" = "X-lc" && continue
+ ;;
+ esac
+ elif test "X$arg" = "X-lc_r"; then
+ case $host in
+ *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
+ # Do not include libc_r directly, use -pthread flag.
+ continue
+ ;;
+ esac
+ fi
+ func_append deplibs " $arg"
+ continue
+ ;;
+
+ -module)
+ module=yes
+ continue
+ ;;
+
+ # Tru64 UNIX uses -model [arg] to determine the layout of C++
+ # classes, name mangling, and exception handling.
+ # Darwin uses the -arch flag to determine output architecture.
+ -model|-arch|-isysroot|--sysroot)
+ func_append compiler_flags " $arg"
+ func_append compile_command " $arg"
+ func_append finalize_command " $arg"
+ prev=xcompiler
+ continue
+ ;;
+
+ -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \
+ |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*)
+ func_append compiler_flags " $arg"
+ func_append compile_command " $arg"
+ func_append finalize_command " $arg"
+ case "$new_inherited_linker_flags " in
+ *" $arg "*) ;;
+ * ) func_append new_inherited_linker_flags " $arg" ;;
+ esac
+ continue
+ ;;
+
+ -multi_module)
+ single_module="${wl}-multi_module"
+ continue
+ ;;
+
+ -no-fast-install)
+ fast_install=no
+ continue
+ ;;
+
+ -no-install)
+ case $host in
+ *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-darwin* | *-cegcc*)
+ # The PATH hackery in wrapper scripts is required on Windows
+ # and Darwin in order for the loader to find any dlls it needs.
+ func_warning "\`-no-install' is ignored for $host"
+ func_warning "assuming \`-no-fast-install' instead"
+ fast_install=no
+ ;;
+ *) no_install=yes ;;
+ esac
+ continue
+ ;;
+
+ -no-undefined)
+ allow_undefined=no
+ continue
+ ;;
+
+ -objectlist)
+ prev=objectlist
+ continue
+ ;;
+
+ -o) prev=output ;;
+
+ -precious-files-regex)
+ prev=precious_regex
+ continue
+ ;;
+
+ -release)
+ prev=release
+ continue
+ ;;
+
+ -rpath)
+ prev=rpath
+ continue
+ ;;
+
+ -R)
+ prev=xrpath
+ continue
+ ;;
+
+ -R*)
+ func_stripname '-R' '' "$arg"
+ dir=$func_stripname_result
+ # We need an absolute path.
+ case $dir in
+ [\\/]* | [A-Za-z]:[\\/]*) ;;
+ =*)
+ func_stripname '=' '' "$dir"
+ dir=$lt_sysroot$func_stripname_result
+ ;;
+ *)
+ func_fatal_error "only absolute run-paths are allowed"
+ ;;
+ esac
+ case "$xrpath " in
+ *" $dir "*) ;;
+ *) func_append xrpath " $dir" ;;
+ esac
+ continue
+ ;;
+
+ -shared)
+ # The effects of -shared are defined in a previous loop.
+ continue
+ ;;
+
+ -shrext)
+ prev=shrext
+ continue
+ ;;
+
+ -static | -static-libtool-libs)
+ # The effects of -static are defined in a previous loop.
+ # We used to do the same as -all-static on platforms that
+ # didn't have a PIC flag, but the assumption that the effects
+ # would be equivalent was wrong. It would break on at least
+ # Digital Unix and AIX.
+ continue
+ ;;
+
+ -thread-safe)
+ thread_safe=yes
+ continue
+ ;;
+
+ -version-info)
+ prev=vinfo
+ continue
+ ;;
+
+ -version-number)
+ prev=vinfo
+ vinfo_number=yes
+ continue
+ ;;
+
+ -weak)
+ prev=weak
+ continue
+ ;;
+
+ -Wc,*)
+ func_stripname '-Wc,' '' "$arg"
+ args=$func_stripname_result
+ arg=
+ save_ifs="$IFS"; IFS=','
+ for flag in $args; do
+ IFS="$save_ifs"
+ func_quote_for_eval "$flag"
+ func_append arg " $func_quote_for_eval_result"
+ func_append compiler_flags " $func_quote_for_eval_result"
+ done
+ IFS="$save_ifs"
+ func_stripname ' ' '' "$arg"
+ arg=$func_stripname_result
+ ;;
+
+ -Wl,*)
+ func_stripname '-Wl,' '' "$arg"
+ args=$func_stripname_result
+ arg=
+ save_ifs="$IFS"; IFS=','
+ for flag in $args; do
+ IFS="$save_ifs"
+ func_quote_for_eval "$flag"
+ func_append arg " $wl$func_quote_for_eval_result"
+ func_append compiler_flags " $wl$func_quote_for_eval_result"
+ func_append linker_flags " $func_quote_for_eval_result"
+ done
+ IFS="$save_ifs"
+ func_stripname ' ' '' "$arg"
+ arg=$func_stripname_result
+ ;;
+
+ -Xcompiler)
+ prev=xcompiler
+ continue
+ ;;
+
+ -Xlinker)
+ prev=xlinker
+ continue
+ ;;
+
+ -XCClinker)
+ prev=xcclinker
+ continue
+ ;;
+
+ # -msg_* for osf cc
+ -msg_*)
+ func_quote_for_eval "$arg"
+ arg="$func_quote_for_eval_result"
+ ;;
+
+ # Flags to be passed through unchanged, with rationale:
+ # -64, -mips[0-9] enable 64-bit mode for the SGI compiler
+ # -r[0-9][0-9]* specify processor for the SGI compiler
+ # -xarch=*, -xtarget=* enable 64-bit mode for the Sun compiler
+ # +DA*, +DD* enable 64-bit mode for the HP compiler
+ # -q* compiler args for the IBM compiler
+ # -m*, -t[45]*, -txscale* architecture-specific flags for GCC
+ # -F/path path to uninstalled frameworks, gcc on darwin
+ # -p, -pg, --coverage, -fprofile-* profiling flags for GCC
+ # @file GCC response files
+ # -tp=* Portland pgcc target processor selection
+ # --sysroot=* for sysroot support
+ # -O*, -flto*, -fwhopr*, -fuse-linker-plugin GCC link-time optimization
+ -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \
+ -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*|-tp=*|--sysroot=*| \
+ -O*|-flto*|-fwhopr*|-fuse-linker-plugin)
+ func_quote_for_eval "$arg"
+ arg="$func_quote_for_eval_result"
+ func_append compile_command " $arg"
+ func_append finalize_command " $arg"
+ func_append compiler_flags " $arg"
+ continue
+ ;;
+
+ # Some other compiler flag.
+ -* | +*)
+ func_quote_for_eval "$arg"
+ arg="$func_quote_for_eval_result"
+ ;;
+
+ *.$objext)
+ # A standard object.
+ func_append objs " $arg"
+ ;;
+
+ *.lo)
+ # A libtool-controlled object.
+
+ # Check to see that this really is a libtool object.
+ if func_lalib_unsafe_p "$arg"; then
+ pic_object=
+ non_pic_object=
+
+ # Read the .lo file
+ func_source "$arg"
+
+ if test -z "$pic_object" ||
+ test -z "$non_pic_object" ||
+ test "$pic_object" = none &&
+ test "$non_pic_object" = none; then
+ func_fatal_error "cannot find name of object for \`$arg'"
+ fi
+
+ # Extract subdirectory from the argument.
+ func_dirname "$arg" "/" ""
+ xdir="$func_dirname_result"
+
+ 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
+ func_append 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.
+ func_append dlprefiles " $pic_object"
+ prev=
+ fi
+
+ # A PIC object.
+ func_append 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
+ func_append non_pic_objects " $non_pic_object"
+ if test -z "$pic_object" || test "$pic_object" = none ; then
+ arg="$non_pic_object"
+ fi
+ else
+ # If the PIC object exists, use it instead.
+ # $xdir was prepended to $pic_object above.
+ non_pic_object="$pic_object"
+ func_append non_pic_objects " $non_pic_object"
+ fi
+ else
+ # Only an error if not doing a dry-run.
+ if $opt_dry_run; then
+ # Extract subdirectory from the argument.
+ func_dirname "$arg" "/" ""
+ xdir="$func_dirname_result"
+
+ func_lo2o "$arg"
+ pic_object=$xdir$objdir/$func_lo2o_result
+ non_pic_object=$xdir$func_lo2o_result
+ func_append libobjs " $pic_object"
+ func_append non_pic_objects " $non_pic_object"
+ else
+ func_fatal_error "\`$arg' is not a valid libtool object"
+ fi
+ fi
+ ;;
+
+ *.$libext)
+ # An archive.
+ func_append deplibs " $arg"
+ func_append old_deplibs " $arg"
+ continue
+ ;;
+
+ *.la)
+ # A libtool-controlled library.
+
+ func_resolve_sysroot "$arg"
+ if test "$prev" = dlfiles; then
+ # This library was specified with -dlopen.
+ func_append dlfiles " $func_resolve_sysroot_result"
+ prev=
+ elif test "$prev" = dlprefiles; then
+ # The library was specified with -dlpreopen.
+ func_append dlprefiles " $func_resolve_sysroot_result"
+ prev=
+ else
+ func_append deplibs " $func_resolve_sysroot_result"
+ 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.
+ func_quote_for_eval "$arg"
+ arg="$func_quote_for_eval_result"
+ ;;
+ esac # arg
+
+ # Now actually substitute the argument into the commands.
+ if test -n "$arg"; then
+ func_append compile_command " $arg"
+ func_append finalize_command " $arg"
+ fi
+ done # argument parsing loop
+
+ test -n "$prev" && \
+ func_fatal_help "the \`$prevarg' option requires an argument"
+
+ if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then
+ eval arg=\"$export_dynamic_flag_spec\"
+ func_append compile_command " $arg"
+ func_append finalize_command " $arg"
+ fi
+
+ oldlibs=
+ # calculate the name of the file, without its directory
+ func_basename "$output"
+ outputname="$func_basename_result"
+ libobjs_save="$libobjs"
+
+ if test -n "$shlibpath_var"; then
+ # get the directories listed in $shlibpath_var
+ eval shlib_search_path=\`\$ECHO \"\${$shlibpath_var}\" \| \$SED \'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\"
+
+ func_dirname "$output" "/" ""
+ output_objdir="$func_dirname_result$objdir"
+ func_to_tool_file "$output_objdir/"
+ tool_output_objdir=$func_to_tool_file_result
+ # Create the object directory.
+ func_mkdir_p "$output_objdir"
+
+ # Determine the type of output
+ case $output in
+ "")
+ func_fatal_help "you must specify an output file"
+ ;;
+ *.$libext) linkmode=oldlib ;;
+ *.lo | *.$objext) linkmode=obj ;;
+ *.la) linkmode=lib ;;
+ *) linkmode=prog ;; # Anything else should be a program.
+ 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 $opt_preserve_dup_deps ; then
+ case "$libs " in
+ *" $deplib "*) func_append specialdeplibs " $deplib" ;;
+ esac
+ fi
+ func_append 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 $opt_duplicate_compiler_generated_deps; then
+ for pre_post_dep in $predeps $postdeps; do
+ case "$pre_post_deps " in
+ *" $pre_post_dep "*) func_append specialdeplibs " $pre_post_deps" ;;
+ esac
+ func_append 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 dlpreopen link"
+ for file in $dlfiles $dlprefiles; do
+ case $file in
+ *.la) ;;
+ *)
+ func_fatal_help "libraries can \`-dlopen' only libtool libraries: $file"
+ ;;
+ 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
+ # The preopen pass in lib mode reverses $deplibs; put it back here
+ # so that -L comes before libs that need it for instance...
+ if test "$linkmode,$pass" = "lib,link"; then
+ ## FIXME: Find the place where the list is rebuilt in the wrong
+ ## order, and fix it there properly
+ tmp_deplibs=
+ for deplib in $deplibs; do
+ tmp_deplibs="$deplib $tmp_deplibs"
+ done
+ deplibs="$tmp_deplibs"
+ fi
+
+ 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%"
+ test "X$link_all_deplibs" != Xno && libs="$libs $dependency_libs"
+ ;;
+ esac
+ fi
+ if test "$linkmode,$pass" = "lib,dlpreopen"; then
+ # Collect and forward deplibs of preopened libtool libs
+ for lib in $dlprefiles; do
+ # Ignore non-libtool-libs
+ dependency_libs=
+ func_resolve_sysroot "$lib"
+ case $lib in
+ *.la) func_source "$func_resolve_sysroot_result" ;;
+ esac
+
+ # Collect preopened libtool deplibs, except any this library
+ # has declared as weak libs
+ for deplib in $dependency_libs; do
+ func_basename "$deplib"
+ deplib_base=$func_basename_result
+ case " $weak_libs " in
+ *" $deplib_base "*) ;;
+ *) func_append deplibs " $deplib" ;;
+ esac
+ done
+ done
+ libs="$dlprefiles"
+ fi
+ if test "$pass" = dlopen; then
+ # Collect dlpreopened libraries
+ save_deplibs="$deplibs"
+ deplibs=
+ fi
+
+ for deplib in $libs; do
+ lib=
+ found=no
+ case $deplib in
+ -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \
+ |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*)
+ if test "$linkmode,$pass" = "prog,link"; then
+ compile_deplibs="$deplib $compile_deplibs"
+ finalize_deplibs="$deplib $finalize_deplibs"
+ else
+ func_append compiler_flags " $deplib"
+ if test "$linkmode" = lib ; then
+ case "$new_inherited_linker_flags " in
+ *" $deplib "*) ;;
+ * ) func_append new_inherited_linker_flags " $deplib" ;;
+ esac
+ fi
+ fi
+ continue
+ ;;
+ -l*)
+ if test "$linkmode" != lib && test "$linkmode" != prog; then
+ func_warning "\`-l' is ignored for archives/objects"
+ continue
+ fi
+ func_stripname '-l' '' "$deplib"
+ name=$func_stripname_result
+ if test "$linkmode" = lib; then
+ searchdirs="$newlib_search_path $lib_search_path $compiler_lib_search_dirs $sys_lib_search_path $shlib_search_path"
+ else
+ searchdirs="$newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path"
+ fi
+ for searchdir in $searchdirs; do
+ for search_ext in .la $std_shrext .so .a; do
+ # Search the libtool library
+ lib="$searchdir/lib${name}${search_ext}"
+ if test -f "$lib"; then
+ if test "$search_ext" = ".la"; then
+ found=yes
+ else
+ found=no
+ fi
+ break 2
+ fi
+ done
+ done
+ if test "$found" != yes; then
+ # deplib doesn't seem to be a libtool library
+ if test "$linkmode,$pass" = "prog,link"; then
+ compile_deplibs="$deplib $compile_deplibs"
+ finalize_deplibs="$deplib $finalize_deplibs"
+ else
+ deplibs="$deplib $deplibs"
+ test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs"
+ fi
+ continue
+ else # deplib is a libtool library
+ # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib,
+ # We need to do some special things here, and not later.
+ if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
+ case " $predeps $postdeps " in
+ *" $deplib "*)
+ if func_lalib_p "$lib"; then
+ library_names=
+ old_library=
+ func_source "$lib"
+ 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
+ func_dirname "$lib" "" "."
+ ladir="$func_dirname_result"
+ 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
+ *.ltframework)
+ if test "$linkmode,$pass" = "prog,link"; then
+ compile_deplibs="$deplib $compile_deplibs"
+ finalize_deplibs="$deplib $finalize_deplibs"
+ else
+ deplibs="$deplib $deplibs"
+ if test "$linkmode" = lib ; then
+ case "$new_inherited_linker_flags " in
+ *" $deplib "*) ;;
+ * ) func_append new_inherited_linker_flags " $deplib" ;;
+ esac
+ fi
+ fi
+ continue
+ ;;
+ -L*)
+ case $linkmode in
+ lib)
+ deplibs="$deplib $deplibs"
+ test "$pass" = conv && continue
+ newdependency_libs="$deplib $newdependency_libs"
+ func_stripname '-L' '' "$deplib"
+ func_resolve_sysroot "$func_stripname_result"
+ func_append newlib_search_path " $func_resolve_sysroot_result"
+ ;;
+ prog)
+ if test "$pass" = conv; then
+ deplibs="$deplib $deplibs"
+ continue
+ fi
+ if test "$pass" = scan; then
+ deplibs="$deplib $deplibs"
+ else
+ compile_deplibs="$deplib $compile_deplibs"
+ finalize_deplibs="$deplib $finalize_deplibs"
+ fi
+ func_stripname '-L' '' "$deplib"
+ func_resolve_sysroot "$func_stripname_result"
+ func_append newlib_search_path " $func_resolve_sysroot_result"
+ ;;
+ *)
+ func_warning "\`-L' is ignored for archives/objects"
+ ;;
+ esac # linkmode
+ continue
+ ;; # -L
+ -R*)
+ if test "$pass" = link; then
+ func_stripname '-R' '' "$deplib"
+ func_resolve_sysroot "$func_stripname_result"
+ dir=$func_resolve_sysroot_result
+ # Make sure the xrpath contains only unique directories.
+ case "$xrpath " in
+ *" $dir "*) ;;
+ *) func_append xrpath " $dir" ;;
+ esac
+ fi
+ deplibs="$deplib $deplibs"
+ continue
+ ;;
+ *.la)
+ func_resolve_sysroot "$deplib"
+ lib=$func_resolve_sysroot_result
+ ;;
+ *.$libext)
+ if test "$pass" = conv; then
+ deplibs="$deplib $deplibs"
+ continue
+ fi
+ case $linkmode in
+ lib)
+ # Linking convenience modules into shared libraries is allowed,
+ # but linking other static libraries is non-portable.
+ case " $dlpreconveniencelibs " in
+ *" $deplib "*) ;;
+ *)
+ valid_a_lib=no
+ case $deplibs_check_method in
+ match_pattern*)
+ set dummy $deplibs_check_method; shift
+ match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"`
+ if eval "\$ECHO \"$deplib\"" 2>/dev/null | $SED 10q \
+ | $EGREP "$match_pattern_regex" > /dev/null; then
+ valid_a_lib=yes
+ fi
+ ;;
+ pass_all)
+ valid_a_lib=yes
+ ;;
+ esac
+ if test "$valid_a_lib" != yes; then
+ echo
+ $ECHO "*** Warning: Trying to link with static lib archive $deplib."
+ echo "*** I have the capability to make that library automatically link in when"
+ echo "*** you link to this library. But I can only do this if you have a"
+ echo "*** shared version of the library, which you do not appear to have"
+ echo "*** because the file extensions .$libext of this argument makes me believe"
+ echo "*** that it is just a static archive that I should not use here."
+ else
+ echo
+ $ECHO "*** Warning: Linking the shared library $output against the"
+ $ECHO "*** static library $deplib is not portable!"
+ deplibs="$deplib $deplibs"
+ fi
+ ;;
+ esac
+ 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.
+ func_append newdlprefiles " $deplib"
+ compile_deplibs="$deplib $compile_deplibs"
+ finalize_deplibs="$deplib $finalize_deplibs"
+ else
+ func_append newdlfiles " $deplib"
+ fi
+ fi
+ continue
+ ;;
+ %DEPLIBS%)
+ alldeplibs=yes
+ continue
+ ;;
+ esac # case $deplib
+
+ if test "$found" = yes || test -f "$lib"; then :
+ else
+ func_fatal_error "cannot find the library \`$lib' or unhandled argument \`$deplib'"
+ fi
+
+ # Check to see that this really is a libtool archive.
+ func_lalib_unsafe_p "$lib" \
+ || func_fatal_error "\`$lib' is not a valid libtool archive"
+
+ func_dirname "$lib" "" "."
+ ladir="$func_dirname_result"
+
+ dlname=
+ dlopen=
+ dlpreopen=
+ libdir=
+ library_names=
+ old_library=
+ inherited_linker_flags=
+ # If the library was installed with an old release of libtool,
+ # it will not redefine variables installed, or shouldnotlink
+ installed=yes
+ shouldnotlink=no
+ avoidtemprpath=
+
+
+ # Read the .la file
+ func_source "$lib"
+
+ # Convert "-framework foo" to "foo.ltframework"
+ if test -n "$inherited_linker_flags"; then
+ tmp_inherited_linker_flags=`$ECHO "$inherited_linker_flags" | $SED 's/-framework \([^ $]*\)/\1.ltframework/g'`
+ for tmp_inherited_linker_flag in $tmp_inherited_linker_flags; do
+ case " $new_inherited_linker_flags " in
+ *" $tmp_inherited_linker_flag "*) ;;
+ *) func_append new_inherited_linker_flags " $tmp_inherited_linker_flag";;
+ esac
+ done
+ fi
+ dependency_libs=`$ECHO " $dependency_libs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
+ if test "$linkmode,$pass" = "lib,link" ||
+ test "$linkmode,$pass" = "prog,scan" ||
+ { test "$linkmode" != prog && test "$linkmode" != lib; }; then
+ test -n "$dlopen" && func_append dlfiles " $dlopen"
+ test -n "$dlpreopen" && func_append 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
+ func_fatal_error "cannot find name of link library for \`$lib'"
+ fi
+ # It is a libtool convenience library, so add in its objects.
+ func_append convenience " $ladir/$objdir/$old_library"
+ func_append old_convenience " $ladir/$objdir/$old_library"
+ tmp_libs=
+ for deplib in $dependency_libs; do
+ deplibs="$deplib $deplibs"
+ if $opt_preserve_dup_deps ; then
+ case "$tmp_libs " in
+ *" $deplib "*) func_append specialdeplibs " $deplib" ;;
+ esac
+ fi
+ func_append tmp_libs " $deplib"
+ done
+ elif test "$linkmode" != prog && test "$linkmode" != lib; then
+ func_fatal_error "\`$lib' is not a convenience library"
+ fi
+ continue
+ fi # $pass = conv
+
+
+ # Get the name of the library we link against.
+ linklib=
+ if test -n "$old_library" &&
+ { test "$prefer_static_libs" = yes ||
+ test "$prefer_static_libs,$installed" = "built,no"; }; then
+ linklib=$old_library
+ else
+ for l in $old_library $library_names; do
+ linklib="$l"
+ done
+ fi
+ if test -z "$linklib"; then
+ func_fatal_error "cannot find name of link library for \`$lib'"
+ fi
+
+ # This library was specified with -dlopen.
+ if test "$pass" = dlopen; then
+ if test -z "$libdir"; then
+ func_fatal_error "cannot -dlopen a convenience library: \`$lib'"
+ 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.
+ func_append dlprefiles " $lib $dependency_libs"
+ else
+ func_append 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
+ func_warning "cannot determine absolute directory name of \`$ladir'"
+ func_warning "passing it literally to the linker, although it might fail"
+ abs_ladir="$ladir"
+ fi
+ ;;
+ esac
+ func_basename "$lib"
+ laname="$func_basename_result"
+
+ # Find the relevant object directory and library name.
+ if test "X$installed" = Xyes; then
+ if test ! -f "$lt_sysroot$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then
+ func_warning "library \`$lib' was moved."
+ dir="$ladir"
+ absdir="$abs_ladir"
+ libdir="$abs_ladir"
+ else
+ dir="$lt_sysroot$libdir"
+ absdir="$lt_sysroot$libdir"
+ fi
+ test "X$hardcode_automatic" = Xyes && avoidtemprpath=yes
+ else
+ if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then
+ dir="$ladir"
+ absdir="$abs_ladir"
+ # Remove this search path later
+ func_append notinst_path " $abs_ladir"
+ else
+ dir="$ladir/$objdir"
+ absdir="$abs_ladir/$objdir"
+ # Remove this search path later
+ func_append notinst_path " $abs_ladir"
+ fi
+ fi # $installed = yes
+ func_stripname 'lib' '.la' "$laname"
+ name=$func_stripname_result
+
+ # This library was specified with -dlpreopen.
+ if test "$pass" = dlpreopen; then
+ if test -z "$libdir" && test "$linkmode" = prog; then
+ func_fatal_error "only libraries may -dlpreopen a convenience library: \`$lib'"
+ fi
+ case "$host" in
+ # special handling for platforms with PE-DLLs.
+ *cygwin* | *mingw* | *cegcc* )
+ # Linker will automatically link against shared library if both
+ # static and shared are present. Therefore, ensure we extract
+ # symbols from the import library if a shared library is present
+ # (otherwise, the dlopen module name will be incorrect). We do
+ # this by putting the import library name into $newdlprefiles.
+ # We recover the dlopen module name by 'saving' the la file
+ # name in a special purpose variable, and (later) extracting the
+ # dlname from the la file.
+ if test -n "$dlname"; then
+ func_tr_sh "$dir/$linklib"
+ eval "libfile_$func_tr_sh_result=\$abs_ladir/\$laname"
+ func_append newdlprefiles " $dir/$linklib"
+ else
+ func_append newdlprefiles " $dir/$old_library"
+ # Keep a list of preopened convenience libraries to check
+ # that they are being used correctly in the link pass.
+ test -z "$libdir" && \
+ func_append dlpreconveniencelibs " $dir/$old_library"
+ fi
+ ;;
+ * )
+ # Prefer using a static library (so that no silly _DYNAMIC symbols
+ # are required to link).
+ if test -n "$old_library"; then
+ func_append newdlprefiles " $dir/$old_library"
+ # Keep a list of preopened convenience libraries to check
+ # that they are being used correctly in the link pass.
+ test -z "$libdir" && \
+ func_append dlpreconveniencelibs " $dir/$old_library"
+ # Otherwise, use the dlname, so that lt_dlopen finds it.
+ elif test -n "$dlname"; then
+ func_append newdlprefiles " $dir/$dlname"
+ else
+ func_append newdlprefiles " $dir/$linklib"
+ fi
+ ;;
+ esac
+ 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
+ func_append 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*) func_stripname '-L' '' "$deplib"
+ func_resolve_sysroot "$func_stripname_result"
+ func_append newlib_search_path " $func_resolve_sysroot_result"
+ ;;
+ 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 $opt_preserve_dup_deps ; then
+ case "$tmp_libs " in
+ *" $deplib "*) func_append specialdeplibs " $deplib" ;;
+ esac
+ fi
+ func_append tmp_libs " $deplib"
+ done # for deplib
+ continue
+ fi # $linkmode = prog...
+
+ if test "$linkmode,$pass" = "prog,link"; then
+ if test -n "$library_names" &&
+ { { test "$prefer_static_libs" = no ||
+ test "$prefer_static_libs,$installed" = "built,yes"; } ||
+ test -z "$old_library"; }; then
+ # We need to hardcode the library path
+ if test -n "$shlibpath_var" && test -z "$avoidtemprpath" ; then
+ # Make sure the rpath contains only unique directories.
+ case "$temp_rpath:" in
+ *"$absdir:"*) ;;
+ *) func_append temp_rpath "$absdir:" ;;
+ esac
+ fi
+
+ # Hardcode the library path.
+ # Skip directories that are in the system default run-time
+ # search path.
+ case " $sys_lib_dlsearch_path " in
+ *" $absdir "*) ;;
+ *)
+ case "$compile_rpath " in
+ *" $absdir "*) ;;
+ *) func_append compile_rpath " $absdir" ;;
+ esac
+ ;;
+ esac
+ case " $sys_lib_dlsearch_path " in
+ *" $libdir "*) ;;
+ *)
+ case "$finalize_rpath " in
+ *" $libdir "*) ;;
+ *) func_append finalize_rpath " $libdir" ;;
+ esac
+ ;;
+ esac
+ fi # $linkmode,$pass = prog,link...
+
+ if test "$alldeplibs" = yes &&
+ { test "$deplibs_check_method" = pass_all ||
+ { test "$build_libtool_libs" = yes &&
+ test -n "$library_names"; }; }; then
+ # We only need to search for static libraries
+ continue
+ fi
+ fi
+
+ link_static=no # Whether the deplib will be linked statically
+ use_static_libs=$prefer_static_libs
+ if test "$use_static_libs" = built && test "$installed" = yes; then
+ use_static_libs=no
+ fi
+ if test -n "$library_names" &&
+ { test "$use_static_libs" = no || test -z "$old_library"; }; then
+ case $host in
+ *cygwin* | *mingw* | *cegcc*)
+ # No point in relinking DLLs because paths are not encoded
+ func_append notinst_deplibs " $lib"
+ need_relink=no
+ ;;
+ *)
+ if test "$installed" = no; then
+ func_append notinst_deplibs " $lib"
+ need_relink=yes
+ fi
+ ;;
+ esac
+ # This is a shared library
+
+ # Warn about portability, can't link against -module's on some
+ # systems (darwin). Don't bleat about dlopened modules though!
+ dlopenmodule=""
+ for dlpremoduletest in $dlprefiles; do
+ if test "X$dlpremoduletest" = "X$lib"; then
+ dlopenmodule="$dlpremoduletest"
+ break
+ fi
+ done
+ if test -z "$dlopenmodule" && 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 "*) ;;
+ *) func_append compile_rpath " $absdir" ;;
+ esac
+ ;;
+ esac
+ case " $sys_lib_dlsearch_path " in
+ *" $libdir "*) ;;
+ *)
+ case "$finalize_rpath " in
+ *" $libdir "*) ;;
+ *) func_append finalize_rpath " $libdir" ;;
+ esac
+ ;;
+ esac
+ fi
+
+ if test -n "$old_archive_from_expsyms_cmds"; then
+ # figure out the soname
+ set dummy $library_names
+ shift
+ realname="$1"
+ 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* | *cegcc*)
+ func_arith $current - $age
+ major=$func_arith_result
+ versuffix="-$major"
+ ;;
+ esac
+ eval soname=\"$soname_spec\"
+ else
+ soname="$realname"
+ fi
+
+ # Make a new name for the extract_expsyms_cmds to use
+ soroot="$soname"
+ func_basename "$soroot"
+ soname="$func_basename_result"
+ func_stripname 'lib' '.dll' "$soname"
+ newlib=libimp-$func_stripname_result.a
+
+ # If the library has no export list, then create one now
+ if test -f "$output_objdir/$soname-def"; then :
+ else
+ func_verbose "extracting exported symbol list from \`$soname'"
+ func_execute_cmds "$extract_expsyms_cmds" 'exit $?'
+ fi
+
+ # Create $newlib
+ if test -f "$output_objdir/$newlib"; then :; else
+ func_verbose "generating import library for \`$soname'"
+ func_execute_cmds "$old_archive_from_expsyms_cmds" 'exit $?'
+ 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 "$opt_mode" != relink; then
+ add_shlibpath=
+ add_dir=
+ add=
+ lib_linked=yes
+ case $hardcode_action in
+ immediate | unsupported)
+ if test "$hardcode_direct" = no; then
+ add="$dir/$linklib"
+ case $host in
+ *-*-sco3.2v5.0.[024]*) add_dir="-L$dir" ;;
+ *-*-sysv4*uw2*) add_dir="-L$dir" ;;
+ *-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \
+ *-*-unixware7*) add_dir="-L$dir" ;;
+ *-*-darwin* )
+ # if the lib is a (non-dlopened) module then we can not
+ # link against it, someone is ignoring the earlier warnings
+ if /usr/bin/file -L $add 2> /dev/null |
+ $GREP ": [^:]* bundle" >/dev/null ; then
+ if test "X$dlopenmodule" != "X$lib"; 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
+ elif test -n "$old_library"; then
+ 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 &&
+ test "$hardcode_direct_absolute" = no; then
+ add="$dir/$linklib"
+ elif test "$hardcode_minus_L" = yes; then
+ add_dir="-L$absdir"
+ # Try looking first in the location we're being installed to.
+ if test -n "$inst_prefix_dir"; then
+ case $libdir in
+ [\\/]*)
+ func_append add_dir " -L$inst_prefix_dir$libdir"
+ ;;
+ esac
+ fi
+ add="-l$name"
+ elif test "$hardcode_shlibpath_var" = yes; then
+ add_shlibpath="$dir"
+ add="-l$name"
+ else
+ lib_linked=no
+ fi
+ ;;
+ *) lib_linked=no ;;
+ esac
+
+ if test "$lib_linked" != yes; then
+ func_fatal_configuration "unsupported hardcode properties"
+ fi
+
+ if test -n "$add_shlibpath"; then
+ case :$compile_shlibpath: in
+ *":$add_shlibpath:"*) ;;
+ *) func_append 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:"*) ;;
+ *) func_append finalize_shlibpath "$libdir:" ;;
+ esac
+ fi
+ fi
+ fi
+
+ if test "$linkmode" = prog || test "$opt_mode" = relink; then
+ add_shlibpath=
+ add_dir=
+ add=
+ # Finalize command for both is simple: just hardcode it.
+ if test "$hardcode_direct" = yes &&
+ test "$hardcode_direct_absolute" = no; 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:"*) ;;
+ *) func_append 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
+ [\\/]*)
+ func_append add_dir " -L$inst_prefix_dir$libdir"
+ ;;
+ esac
+ fi
+ add="-l$name"
+ fi
+
+ if test "$linkmode" = prog; then
+ test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs"
+ test -n "$add" && finalize_deplibs="$add $finalize_deplibs"
+ else
+ test -n "$add_dir" && deplibs="$add_dir $deplibs"
+ test -n "$add" && deplibs="$add $deplibs"
+ fi
+ fi
+ elif test "$linkmode" = prog; then
+ # Here we assume that one of hardcode_direct or hardcode_minus_L
+ # is not unsupported. This is valid on all known static and
+ # shared platforms.
+ if test "$hardcode_direct" != unsupported; then
+ test -n "$old_library" && linklib="$old_library"
+ compile_deplibs="$dir/$linklib $compile_deplibs"
+ finalize_deplibs="$dir/$linklib $finalize_deplibs"
+ else
+ compile_deplibs="-l$name -L$dir $compile_deplibs"
+ finalize_deplibs="-l$name -L$dir $finalize_deplibs"
+ fi
+ elif test "$build_libtool_libs" = yes; then
+ # Not a shared library
+ if test "$deplibs_check_method" != pass_all; then
+ # We're trying link a shared library against a static one
+ # but the system doesn't support it.
+
+ # Just print a warning and add the library to dependency_libs so
+ # that the program can be linked against the static library.
+ echo
+ $ECHO "*** Warning: This system can not link to static lib archive $lib."
+ echo "*** I have the capability to make that library automatically link in when"
+ echo "*** you link to this library. But I can only do this if you have a"
+ echo "*** shared version of the library, which you do not appear to have."
+ if test "$module" = yes; then
+ echo "*** But as you try to build a module library, libtool will still create "
+ echo "*** a static module, that should work as long as the dlopening application"
+ echo "*** is linked with the -dlopen flag to resolve symbols at runtime."
+ if test -z "$global_symbol_pipe"; then
+ echo
+ echo "*** However, this would only work if libtool was able to extract symbol"
+ echo "*** lists from a program, using \`nm' or equivalent, but libtool could"
+ echo "*** not find such a program. So, this module is probably useless."
+ echo "*** \`nm' from GNU binutils and a full rebuild may help."
+ fi
+ if test "$build_old_libs" = no; then
+ build_libtool_libs=module
+ build_old_libs=yes
+ else
+ build_libtool_libs=no
+ fi
+ fi
+ else
+ deplibs="$dir/$old_library $deplibs"
+ link_static=yes
+ fi
+ fi # link shared/static library?
+
+ if test "$linkmode" = lib; then
+ if test -n "$dependency_libs" &&
+ { test "$hardcode_into_libs" != yes ||
+ test "$build_old_libs" = yes ||
+ test "$link_static" = yes; }; then
+ # Extract -R from dependency_libs
+ temp_deplibs=
+ for libdir in $dependency_libs; do
+ case $libdir in
+ -R*) func_stripname '-R' '' "$libdir"
+ temp_xrpath=$func_stripname_result
+ case " $xrpath " in
+ *" $temp_xrpath "*) ;;
+ *) func_append xrpath " $temp_xrpath";;
+ esac;;
+ *) func_append temp_deplibs " $libdir";;
+ esac
+ done
+ dependency_libs="$temp_deplibs"
+ fi
+
+ func_append 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"
+ case $deplib in
+ -L*) func_stripname '-L' '' "$deplib"
+ func_resolve_sysroot "$func_stripname_result";;
+ *) func_resolve_sysroot "$deplib" ;;
+ esac
+ if $opt_preserve_dup_deps ; then
+ case "$tmp_libs " in
+ *" $func_resolve_sysroot_result "*)
+ func_append specialdeplibs " $func_resolve_sysroot_result" ;;
+ esac
+ fi
+ func_append tmp_libs " $func_resolve_sysroot_result"
+ done
+
+ if test "$link_all_deplibs" != no; then
+ # Add the search paths of all dependency libraries
+ for deplib in $dependency_libs; do
+ path=
+ case $deplib in
+ -L*) path="$deplib" ;;
+ *.la)
+ func_resolve_sysroot "$deplib"
+ deplib=$func_resolve_sysroot_result
+ func_dirname "$deplib" "" "."
+ dir=$func_dirname_result
+ # We need an absolute path.
+ case $dir in
+ [\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;;
+ *)
+ absdir=`cd "$dir" && pwd`
+ if test -z "$absdir"; then
+ func_warning "cannot determine absolute directory name of \`$dir'"
+ absdir="$dir"
+ fi
+ ;;
+ esac
+ if $GREP "^installed=no" $deplib > /dev/null; then
+ case $host in
+ *-*-darwin*)
+ depdepl=
+ 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 "$absdir/$objdir/$depdepl" ; then
+ depdepl="$absdir/$objdir/$depdepl"
+ darwin_install_name=`${OTOOL} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'`
+ if test -z "$darwin_install_name"; then
+ darwin_install_name=`${OTOOL64} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'`
+ fi
+ func_append compiler_flags " ${wl}-dylib_file ${wl}${darwin_install_name}:${depdepl}"
+ func_append linker_flags " -dylib_file ${darwin_install_name}:${depdepl}"
+ path=
+ fi
+ fi
+ ;;
+ *)
+ path="-L$absdir/$objdir"
+ ;;
+ esac
+ else
+ eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
+ test -z "$libdir" && \
+ func_fatal_error "\`$deplib' is not a valid libtool archive"
+ test "$absdir" != "$libdir" && \
+ func_warning "\`$deplib' seems to be moved"
+
+ path="-L$absdir"
+ fi
+ ;;
+ esac
+ case " $deplibs " in
+ *" $path "*) ;;
+ *) deplibs="$path $deplibs" ;;
+ esac
+ done
+ fi # link_all_deplibs != no
+ fi # linkmode = lib
+ done # for deplib in $libs
+ if test "$pass" = link; then
+ if test "$linkmode" = "prog"; then
+ compile_deplibs="$new_inherited_linker_flags $compile_deplibs"
+ finalize_deplibs="$new_inherited_linker_flags $finalize_deplibs"
+ else
+ compiler_flags="$compiler_flags "`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
+ fi
+ fi
+ 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 "*) ;;
+ *) func_append 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 "*) ;;
+ *) func_append tmp_libs " $deplib" ;;
+ esac
+ ;;
+ *) func_append 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
+ func_append tmp_libs " $i"
+ fi
+ done
+ dependency_libs=$tmp_libs
+ done # for pass
+ if test "$linkmode" = prog; then
+ dlfiles="$newdlfiles"
+ fi
+ if test "$linkmode" = prog || test "$linkmode" = lib; then
+ dlprefiles="$newdlprefiles"
+ fi
+
+ case $linkmode in
+ oldlib)
+ if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
+ func_warning "\`-dlopen' is ignored for archives"
+ fi
+
+ case " $deplibs" in
+ *\ -l* | *\ -L*)
+ func_warning "\`-l' and \`-L' are ignored for archives" ;;
+ esac
+
+ test -n "$rpath" && \
+ func_warning "\`-rpath' is ignored for archives"
+
+ test -n "$xrpath" && \
+ func_warning "\`-R' is ignored for archives"
+
+ test -n "$vinfo" && \
+ func_warning "\`-version-info/-version-number' is ignored for archives"
+
+ test -n "$release" && \
+ func_warning "\`-release' is ignored for archives"
+
+ test -n "$export_symbols$export_symbols_regex" && \
+ func_warning "\`-export-symbols' is ignored for archives"
+
+ # Now set the variables for building old libraries.
+ build_libtool_libs=no
+ oldlibs="$output"
+ func_append objs "$old_deplibs"
+ ;;
+
+ lib)
+ # Make sure we only generate libraries of the form `libNAME.la'.
+ case $outputname in
+ lib*)
+ func_stripname 'lib' '.la' "$outputname"
+ name=$func_stripname_result
+ eval shared_ext=\"$shrext_cmds\"
+ eval libname=\"$libname_spec\"
+ ;;
+ *)
+ test "$module" = no && \
+ func_fatal_help "libtool library \`$output' must begin with \`lib'"
+
+ if test "$need_lib_prefix" != no; then
+ # Add the "lib" prefix for modules if required
+ func_stripname '' '.la' "$outputname"
+ name=$func_stripname_result
+ eval shared_ext=\"$shrext_cmds\"
+ eval libname=\"$libname_spec\"
+ else
+ func_stripname '' '.la' "$outputname"
+ libname=$func_stripname_result
+ fi
+ ;;
+ esac
+
+ if test -n "$objs"; then
+ if test "$deplibs_check_method" != pass_all; then
+ func_fatal_error "cannot build libtool library \`$output' from non-libtool objects on this host:$objs"
+ else
+ echo
+ $ECHO "*** Warning: Linking the shared library $output against the non-libtool"
+ $ECHO "*** objects $objs is not portable!"
+ func_append libobjs " $objs"
+ fi
+ fi
+
+ test "$dlself" != no && \
+ func_warning "\`-dlopen self' is ignored for libtool libraries"
+
+ set dummy $rpath
+ shift
+ test "$#" -gt 1 && \
+ func_warning "ignoring multiple \`-rpath's for a libtool library"
+
+ install_libdir="$1"
+
+ 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
+
+ test -n "$vinfo" && \
+ func_warning "\`-version-info/-version-number' is ignored for convenience libraries"
+
+ test -n "$release" && \
+ func_warning "\`-release' is ignored for convenience libraries"
+ else
+
+ # Parse the version information argument.
+ save_ifs="$IFS"; IFS=':'
+ set dummy $vinfo 0 0 0
+ shift
+ IFS="$save_ifs"
+
+ test -n "$7" && \
+ func_fatal_help "too many parameters to \`-version-info'"
+
+ # 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="$1"
+ number_minor="$2"
+ number_revision="$3"
+ #
+ # 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
+ # correct linux to gnu/linux during the next big refactor
+ darwin|linux|osf|windows|none)
+ func_arith $number_major + $number_minor
+ current=$func_arith_result
+ age="$number_minor"
+ revision="$number_revision"
+ ;;
+ freebsd-aout|freebsd-elf|qnx|sunos)
+ current="$number_major"
+ revision="$number_minor"
+ age="0"
+ ;;
+ irix|nonstopux)
+ func_arith $number_major + $number_minor
+ current=$func_arith_result
+ age="$number_minor"
+ revision="$number_minor"
+ lt_irix_increment=no
+ ;;
+ *)
+ func_fatal_configuration "$modename: unknown library version type \`$version_type'"
+ ;;
+ esac
+ ;;
+ no)
+ current="$1"
+ revision="$2"
+ age="$3"
+ ;;
+ esac
+
+ # Check that each of the things are valid numbers.
+ case $current in
+ 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;;
+ *)
+ func_error "CURRENT \`$current' must be a nonnegative integer"
+ func_fatal_error "\`$vinfo' is not valid version information"
+ ;;
+ esac
+
+ case $revision in
+ 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;;
+ *)
+ func_error "REVISION \`$revision' must be a nonnegative integer"
+ func_fatal_error "\`$vinfo' is not valid version information"
+ ;;
+ esac
+
+ case $age in
+ 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;;
+ *)
+ func_error "AGE \`$age' must be a nonnegative integer"
+ func_fatal_error "\`$vinfo' is not valid version information"
+ ;;
+ esac
+
+ if test "$age" -gt "$current"; then
+ func_error "AGE \`$age' is greater than the current interface number \`$current'"
+ func_fatal_error "\`$vinfo' is not valid version information"
+ 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
+ func_arith $current - $age
+ major=.$func_arith_result
+ versuffix="$major.$age.$revision"
+ # Darwin ld doesn't like 0 for these options...
+ func_arith $current + 1
+ minor_current=$func_arith_result
+ xlcverstring="${wl}-compatibility_version ${wl}$minor_current ${wl}-current_version ${wl}$minor_current.$revision"
+ verstring="-compatibility_version $minor_current -current_version $minor_current.$revision"
+ ;;
+
+ freebsd-aout)
+ major=".$current"
+ versuffix=".$current.$revision";
+ ;;
+
+ freebsd-elf)
+ major=".$current"
+ versuffix=".$current"
+ ;;
+
+ irix | nonstopux)
+ if test "X$lt_irix_increment" = "Xno"; then
+ func_arith $current - $age
+ else
+ func_arith $current - $age + 1
+ fi
+ major=$func_arith_result
+
+ 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
+ func_arith $revision - $loop
+ iface=$func_arith_result
+ func_arith $loop - 1
+ loop=$func_arith_result
+ verstring="$verstring_prefix$major.$iface:$verstring"
+ done
+
+ # Before this point, $major must not contain `.'.
+ major=.$major
+ versuffix="$major.$revision"
+ ;;
+
+ linux) # correct to gnu/linux during the next big refactor
+ func_arith $current - $age
+ major=.$func_arith_result
+ versuffix="$major.$age.$revision"
+ ;;
+
+ osf)
+ func_arith $current - $age
+ major=.$func_arith_result
+ 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
+ func_arith $current - $loop
+ iface=$func_arith_result
+ func_arith $loop - 1
+ loop=$func_arith_result
+ verstring="$verstring:${iface}.0"
+ done
+
+ # Make executables depend on our current version.
+ func_append verstring ":${current}.0"
+ ;;
+
+ qnx)
+ major=".$current"
+ versuffix=".$current"
+ ;;
+
+ sunos)
+ major=".$current"
+ versuffix=".$current.$revision"
+ ;;
+
+ windows)
+ # Use '-' rather than '.', since we only want one
+ # extension on DOS 8.3 filesystems.
+ func_arith $current - $age
+ major=$func_arith_result
+ versuffix="-$major"
+ ;;
+
+ *)
+ func_fatal_configuration "unknown library version type \`$version_type'"
+ ;;
+ 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
+ func_warning "undefined symbols not allowed in $host shared libraries"
+ build_libtool_libs=no
+ build_old_libs=yes
+ fi
+ else
+ # Don't allow undefined symbols.
+ allow_undefined_flag="$no_undefined_flag"
+ fi
+
+ fi
+
+ func_generate_dlsyms "$libname" "$libname" "yes"
+ func_append libobjs " $symfileobj"
+ test "X$libobjs" = "X " && libobjs=
+
+ if test "$opt_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 | *.gcno)
+ ;;
+ $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/${libname}${release}.*)
+ if test "X$precious_files_regex" != "X"; then
+ if $ECHO "$p" | $EGREP -e "$precious_files_regex" >/dev/null 2>&1
+ then
+ continue
+ fi
+ fi
+ func_append removelist " $p"
+ ;;
+ *) ;;
+ esac
+ done
+ test -n "$removelist" && \
+ func_show_eval "${RM}r \$removelist"
+ fi
+
+ # Now set the variables for building old libraries.
+ if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then
+ func_append oldlibs " $output_objdir/$libname.$libext"
+
+ # Transform .lo files to .o files.
+ oldobjs="$objs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.${libext}$/d; $lo2o" | $NL2SP`
+ fi
+
+ # Eliminate all temporary directories.
+ #for path in $notinst_path; do
+ # lib_search_path=`$ECHO "$lib_search_path " | $SED "s% $path % %g"`
+ # deplibs=`$ECHO "$deplibs " | $SED "s% -L$path % %g"`
+ # dependency_libs=`$ECHO "$dependency_libs " | $SED "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
+ func_replace_sysroot "$libdir"
+ func_append temp_xrpath " -R$func_replace_sysroot_result"
+ case "$finalize_rpath " in
+ *" $libdir "*) ;;
+ *) func_append 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 "*) ;;
+ *) func_append 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 "*) ;;
+ *) func_append dlprefiles " $lib" ;;
+ esac
+ done
+
+ if test "$build_libtool_libs" = yes; then
+ if test -n "$rpath"; then
+ case $host in
+ *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos* | *-cegcc* | *-*-haiku*)
+ # these systems don't actually have a c library (as such)!
+ ;;
+ *-*-rhapsody* | *-*-darwin1.[012])
+ # Rhapsody C library is in the System framework
+ func_append deplibs " System.ltframework"
+ ;;
+ *-*-netbsd*)
+ # Don't link with libc until the a.out ld.so is fixed.
+ ;;
+ *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
+ # Do not include libc due to us having libc/libc_r.
+ ;;
+ *-*-sco3.2v5* | *-*-sco5v6*)
+ # Causes problems with __ctype
+ ;;
+ *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*)
+ # Compiler inserts libc in the correct place for threads to work
+ ;;
+ *)
+ # Add libc to deplibs on all other systems if necessary.
+ if test "$build_libtool_need_lc" = "yes"; then
+ func_append 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.
+ $opt_dry_run || $RM conftest.c
+ cat > conftest.c <<EOF
+ int main() { return 0; }
+EOF
+ $opt_dry_run || $RM conftest
+ if $LTCC $LTCFLAGS -o conftest conftest.c $deplibs; then
+ ldd_output=`ldd conftest`
+ for i in $deplibs; do
+ case $i in
+ -l*)
+ func_stripname -l '' "$i"
+ name=$func_stripname_result
+ if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
+ case " $predeps $postdeps " in
+ *" $i "*)
+ func_append newdeplibs " $i"
+ i=""
+ ;;
+ esac
+ fi
+ if test -n "$i" ; then
+ libname=`eval "\\$ECHO \"$libname_spec\""`
+ deplib_matches=`eval "\\$ECHO \"$library_names_spec\""`
+ set dummy $deplib_matches; shift
+ deplib_match=$1
+ if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
+ func_append newdeplibs " $i"
+ else
+ droppeddeps=yes
+ echo
+ $ECHO "*** Warning: dynamic linker does not accept needed library $i."
+ 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 I believe you do not have"
+ echo "*** because a test_compile did reveal that the linker did not use it for"
+ echo "*** its dynamic dependency list that programs get resolved with at runtime."
+ fi
+ fi
+ ;;
+ *)
+ func_append newdeplibs " $i"
+ ;;
+ esac
+ done
+ else
+ # Error occurred in the first compile. Let's try to salvage
+ # the situation: Compile a separate program for each library.
+ for i in $deplibs; do
+ case $i in
+ -l*)
+ func_stripname -l '' "$i"
+ name=$func_stripname_result
+ $opt_dry_run || $RM conftest
+ if $LTCC $LTCFLAGS -o conftest conftest.c $i; then
+ ldd_output=`ldd conftest`
+ if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
+ case " $predeps $postdeps " in
+ *" $i "*)
+ func_append newdeplibs " $i"
+ i=""
+ ;;
+ esac
+ fi
+ if test -n "$i" ; then
+ libname=`eval "\\$ECHO \"$libname_spec\""`
+ deplib_matches=`eval "\\$ECHO \"$library_names_spec\""`
+ set dummy $deplib_matches; shift
+ deplib_match=$1
+ if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
+ func_append newdeplibs " $i"
+ else
+ droppeddeps=yes
+ echo
+ $ECHO "*** Warning: dynamic linker does not accept needed library $i."
+ 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 a test_compile did reveal that the linker did not use this one"
+ echo "*** as a dynamic dependency that programs can get resolved with at runtime."
+ fi
+ fi
+ else
+ droppeddeps=yes
+ echo
+ $ECHO "*** Warning! Library $i is needed by this library but I was not able to"
+ echo "*** make it link in! You will probably need to install it or some"
+ echo "*** library that it depends on before this library will be fully"
+ echo "*** functional. Installing it before continuing would be even better."
+ fi
+ ;;
+ *)
+ func_append newdeplibs " $i"
+ ;;
+ esac
+ done
+ fi
+ ;;
+ file_magic*)
+ set dummy $deplibs_check_method; shift
+ file_magic_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"`
+ for a_deplib in $deplibs; do
+ case $a_deplib in
+ -l*)
+ func_stripname -l '' "$a_deplib"
+ name=$func_stripname_result
+ if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
+ case " $predeps $postdeps " in
+ *" $a_deplib "*)
+ func_append newdeplibs " $a_deplib"
+ a_deplib=""
+ ;;
+ esac
+ fi
+ if test -n "$a_deplib" ; then
+ libname=`eval "\\$ECHO \"$libname_spec\""`
+ if test -n "$file_magic_glob"; then
+ libnameglob=`func_echo_all "$libname" | $SED -e $file_magic_glob`
+ else
+ libnameglob=$libname
+ fi
+ test "$want_nocaseglob" = yes && nocaseglob=`shopt -p nocaseglob`
+ for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do
+ if test "$want_nocaseglob" = yes; then
+ shopt -s nocaseglob
+ potential_libs=`ls $i/$libnameglob[.-]* 2>/dev/null`
+ $nocaseglob
+ else
+ potential_libs=`ls $i/$libnameglob[.-]* 2>/dev/null`
+ fi
+ 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 "$potlib" | $SED 's,[^/]*$,,'`"$potliblink";;
+ esac
+ done
+ if eval $file_magic_cmd \"\$potlib\" 2>/dev/null |
+ $SED -e 10q |
+ $EGREP "$file_magic_regex" > /dev/null; then
+ func_append 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
+ ;;
+ *)
+ # Add a -L argument.
+ func_append newdeplibs " $a_deplib"
+ ;;
+ esac
+ done # Gone through all deplibs.
+ ;;
+ match_pattern*)
+ set dummy $deplibs_check_method; shift
+ match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"`
+ for a_deplib in $deplibs; do
+ case $a_deplib in
+ -l*)
+ func_stripname -l '' "$a_deplib"
+ name=$func_stripname_result
+ if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
+ case " $predeps $postdeps " in
+ *" $a_deplib "*)
+ func_append 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
+ func_append 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
+ ;;
+ *)
+ # Add a -L argument.
+ func_append newdeplibs " $a_deplib"
+ ;;
+ esac
+ done # Gone through all deplibs.
+ ;;
+ none | unknown | *)
+ newdeplibs=""
+ tmp_deplibs=`$ECHO " $deplibs" | $SED 's/ -lc$//; 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 " $tmp_deplibs" | $SED "s,$i,,"`
+ done
+ fi
+ case $tmp_deplibs in
+ *[!\ \ ]*)
+ 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
+ ;;
+ esac
+ ;;
+ 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 with the System framework
+ newdeplibs=`$ECHO " $newdeplibs" | $SED 's/ -lc / System.ltframework /'`
+ ;;
+ 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
+ # Time to change all our "foo.ltframework" stuff back to "-framework foo"
+ case $host in
+ *-*-darwin*)
+ newdeplibs=`$ECHO " $newdeplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
+ new_inherited_linker_flags=`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
+ deplibs=`$ECHO " $deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
+ ;;
+ esac
+
+ # move library search paths that coincide with paths to not yet
+ # installed libraries to the beginning of the library search list
+ new_libs=
+ for path in $notinst_path; do
+ case " $new_libs " in
+ *" -L$path/$objdir "*) ;;
+ *)
+ case " $deplibs " in
+ *" -L$path/$objdir "*)
+ func_append new_libs " -L$path/$objdir" ;;
+ esac
+ ;;
+ esac
+ done
+ for deplib in $deplibs; do
+ case $deplib in
+ -L*)
+ case " $new_libs " in
+ *" $deplib "*) ;;
+ *) func_append new_libs " $deplib" ;;
+ esac
+ ;;
+ *) func_append new_libs " $deplib" ;;
+ esac
+ done
+ deplibs="$new_libs"
+
+ # All the library-specific variables (install_libdir is set above).
+ library_names=
+ old_library=
+ dlname=
+
+ # Test again, we may have decided not to build it any more
+ if test "$build_libtool_libs" = yes; then
+ # Remove ${wl} instances when linking with ld.
+ # FIXME: should test the right _cmds variable.
+ case $archive_cmds in
+ *\$LD\ *) wl= ;;
+ esac
+ if test "$hardcode_into_libs" = yes; then
+ # Hardcode the library paths
+ hardcode_libdirs=
+ dep_rpath=
+ rpath="$finalize_rpath"
+ test "$opt_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
+ func_replace_sysroot "$libdir"
+ libdir=$func_replace_sysroot_result
+ 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"*)
+ ;;
+ *)
+ func_append hardcode_libdirs "$hardcode_libdir_separator$libdir"
+ ;;
+ esac
+ fi
+ else
+ eval flag=\"$hardcode_libdir_flag_spec\"
+ func_append dep_rpath " $flag"
+ fi
+ elif test -n "$runpath_var"; then
+ case "$perm_rpath " in
+ *" $libdir "*) ;;
+ *) func_append 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 "dep_rpath=\"$hardcode_libdir_flag_spec\""
+ fi
+ if test -n "$runpath_var" && test -n "$perm_rpath"; then
+ # We should set the runpath_var.
+ rpath=
+ for dir in $perm_rpath; do
+ func_append 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 "$opt_mode" != relink && shlibpath="$compile_shlibpath$shlibpath"
+ if test -n "$shlibpath"; then
+ eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var"
+ fi
+
+ # Get the real and link names of the library.
+ eval shared_ext=\"$shrext_cmds\"
+ eval library_names=\"$library_names_spec\"
+ set dummy $library_names
+ shift
+ realname="$1"
+ shift
+
+ if test -n "$soname_spec"; then
+ eval soname=\"$soname_spec\"
+ else
+ soname="$realname"
+ fi
+ if test -z "$dlname"; then
+ dlname=$soname
+ fi
+
+ lib="$output_objdir/$realname"
+ linknames=
+ for link
+ do
+ func_append linknames " $link"
+ done
+
+ # Use standard objects if they are pic
+ test -z "$pic_flag" && libobjs=`$ECHO "$libobjs" | $SP2NL | $SED "$lo2o" | $NL2SP`
+ test "X$libobjs" = "X " && libobjs=
+
+ delfiles=
+ if test -n "$export_symbols" && test -n "$include_expsyms"; then
+ $opt_dry_run || cp "$export_symbols" "$output_objdir/$libname.uexp"
+ export_symbols="$output_objdir/$libname.uexp"
+ func_append delfiles " $export_symbols"
+ fi
+
+ orig_export_symbols=
+ case $host_os in
+ cygwin* | mingw* | cegcc*)
+ if test -n "$export_symbols" && test -z "$export_symbols_regex"; then
+ # exporting using user supplied symfile
+ if test "x`$SED 1q $export_symbols`" != xEXPORTS; then
+ # and it's NOT already a .def file. Must figure out
+ # which of the given symbols are data symbols and tag
+ # them as such. So, trigger use of export_symbols_cmds.
+ # export_symbols gets reassigned inside the "prepare
+ # the list of exported symbols" if statement, so the
+ # include_expsyms logic still works.
+ orig_export_symbols="$export_symbols"
+ export_symbols=
+ always_export_symbols=yes
+ fi
+ fi
+ ;;
+ esac
+
+ # Prepare the list of exported symbols
+ if test -z "$export_symbols"; then
+ if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then
+ func_verbose "generating symbol list for \`$libname.la'"
+ export_symbols="$output_objdir/$libname.exp"
+ $opt_dry_run || $RM $export_symbols
+ cmds=$export_symbols_cmds
+ save_ifs="$IFS"; IFS='~'
+ for cmd1 in $cmds; do
+ IFS="$save_ifs"
+ # Take the normal branch if the nm_file_list_spec branch
+ # doesn't work or if tool conversion is not needed.
+ case $nm_file_list_spec~$to_tool_file_cmd in
+ *~func_convert_file_noop | *~func_convert_file_msys_to_w32 | ~*)
+ try_normal_branch=yes
+ eval cmd=\"$cmd1\"
+ func_len " $cmd"
+ len=$func_len_result
+ ;;
+ *)
+ try_normal_branch=no
+ ;;
+ esac
+ if test "$try_normal_branch" = yes \
+ && { test "$len" -lt "$max_cmd_len" \
+ || test "$max_cmd_len" -le -1; }
+ then
+ func_show_eval "$cmd" 'exit $?'
+ skipped_export=false
+ elif test -n "$nm_file_list_spec"; then
+ func_basename "$output"
+ output_la=$func_basename_result
+ save_libobjs=$libobjs
+ save_output=$output
+ output=${output_objdir}/${output_la}.nm
+ func_to_tool_file "$output"
+ libobjs=$nm_file_list_spec$func_to_tool_file_result
+ func_append delfiles " $output"
+ func_verbose "creating $NM input file list: $output"
+ for obj in $save_libobjs; do
+ func_to_tool_file "$obj"
+ $ECHO "$func_to_tool_file_result"
+ done > "$output"
+ eval cmd=\"$cmd1\"
+ func_show_eval "$cmd" 'exit $?'
+ output=$save_output
+ libobjs=$save_libobjs
+ skipped_export=false
+ else
+ # The command line is too long to execute in one step.
+ func_verbose "using reloadable object file for export list..."
+ skipped_export=:
+ # Break out early, otherwise skipped_export may be
+ # set to false by a later but shorter cmd.
+ break
+ fi
+ done
+ IFS="$save_ifs"
+ if test -n "$export_symbols_regex" && test "X$skipped_export" != "X:"; then
+ func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"'
+ func_show_eval '$MV "${export_symbols}T" "$export_symbols"'
+ fi
+ fi
+ fi
+
+ if test -n "$export_symbols" && test -n "$include_expsyms"; then
+ tmp_export_symbols="$export_symbols"
+ test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols"
+ $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"'
+ fi
+
+ if test "X$skipped_export" != "X:" && test -n "$orig_export_symbols"; then
+ # The given exports_symbols file has to be filtered, so filter it.
+ func_verbose "filter symbol list for \`$libname.la' to tag DATA exports"
+ # FIXME: $output_objdir/$libname.filter potentially contains lots of
+ # 's' commands which not all seds can handle. GNU sed should be fine
+ # though. Also, the filter scales superlinearly with the number of
+ # global variables. join(1) would be nice here, but unfortunately
+ # isn't a blessed tool.
+ $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter
+ func_append delfiles " $export_symbols $output_objdir/$libname.filter"
+ export_symbols=$output_objdir/$libname.def
+ $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols
+ fi
+
+ tmp_deplibs=
+ for test_deplib in $deplibs; do
+ case " $convenience " in
+ *" $test_deplib "*) ;;
+ *)
+ func_append tmp_deplibs " $test_deplib"
+ ;;
+ esac
+ done
+ deplibs="$tmp_deplibs"
+
+ if test -n "$convenience"; then
+ if test -n "$whole_archive_flag_spec" &&
+ test "$compiler_needs_object" = yes &&
+ test -z "$libobjs"; then
+ # extract the archives, so we have objects to list.
+ # TODO: could optimize this to just extract one archive.
+ whole_archive_flag_spec=
+ fi
+ if test -n "$whole_archive_flag_spec"; then
+ save_libobjs=$libobjs
+ eval libobjs=\"\$libobjs $whole_archive_flag_spec\"
+ test "X$libobjs" = "X " && libobjs=
+ else
+ gentop="$output_objdir/${outputname}x"
+ func_append generated " $gentop"
+
+ func_extract_archives $gentop $convenience
+ func_append libobjs " $func_extract_archives_result"
+ test "X$libobjs" = "X " && libobjs=
+ fi
+ fi
+
+ if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then
+ eval flag=\"$thread_safe_flag_spec\"
+ func_append linker_flags " $flag"
+ fi
+
+ # Make a backup of the uninstalled library when relinking
+ if test "$opt_mode" = relink; then
+ $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}U && $MV $realname ${realname}U)' || exit $?
+ fi
+
+ # Do each of the archive commands.
+ if test "$module" = yes && test -n "$module_cmds" ; then
+ if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then
+ eval test_cmds=\"$module_expsym_cmds\"
+ cmds=$module_expsym_cmds
+ else
+ eval test_cmds=\"$module_cmds\"
+ cmds=$module_cmds
+ fi
+ else
+ if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then
+ eval test_cmds=\"$archive_expsym_cmds\"
+ cmds=$archive_expsym_cmds
+ else
+ eval test_cmds=\"$archive_cmds\"
+ cmds=$archive_cmds
+ fi
+ fi
+
+ if test "X$skipped_export" != "X:" &&
+ func_len " $test_cmds" &&
+ len=$func_len_result &&
+ test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then
+ :
+ else
+ # The command line is too long to link in one step, link piecewise
+ # or, if using GNU ld and skipped_export is not :, use a linker
+ # script.
+
+ # 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
+ func_basename "$output"
+ output_la=$func_basename_result
+
+ # Clear the reloadable object creation command queue and
+ # initialize k to one.
+ test_cmds=
+ concat_cmds=
+ objlist=
+ last_robj=
+ k=1
+
+ if test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "$with_gnu_ld" = yes; then
+ output=${output_objdir}/${output_la}.lnkscript
+ func_verbose "creating GNU ld script: $output"
+ echo 'INPUT (' > $output
+ for obj in $save_libobjs
+ do
+ func_to_tool_file "$obj"
+ $ECHO "$func_to_tool_file_result" >> $output
+ done
+ echo ')' >> $output
+ func_append delfiles " $output"
+ func_to_tool_file "$output"
+ output=$func_to_tool_file_result
+ elif test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "X$file_list_spec" != X; then
+ output=${output_objdir}/${output_la}.lnk
+ func_verbose "creating linker input file list: $output"
+ : > $output
+ set x $save_libobjs
+ shift
+ firstobj=
+ if test "$compiler_needs_object" = yes; then
+ firstobj="$1 "
+ shift
+ fi
+ for obj
+ do
+ func_to_tool_file "$obj"
+ $ECHO "$func_to_tool_file_result" >> $output
+ done
+ func_append delfiles " $output"
+ func_to_tool_file "$output"
+ output=$firstobj\"$file_list_spec$func_to_tool_file_result\"
+ else
+ if test -n "$save_libobjs"; then
+ func_verbose "creating reloadable object files..."
+ output=$output_objdir/$output_la-${k}.$objext
+ eval test_cmds=\"$reload_cmds\"
+ func_len " $test_cmds"
+ len0=$func_len_result
+ len=$len0
+
+ # Loop over the list of objects to be linked.
+ for obj in $save_libobjs
+ do
+ func_len " $obj"
+ func_arith $len + $func_len_result
+ len=$func_arith_result
+ if test "X$objlist" = X ||
+ test "$len" -lt "$max_cmd_len"; then
+ func_append 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.
+ reload_objs=$objlist
+ eval concat_cmds=\"$reload_cmds\"
+ else
+ # All subsequent reloadable object files will link in
+ # the last one created.
+ reload_objs="$objlist $last_robj"
+ eval concat_cmds=\"\$concat_cmds~$reload_cmds~\$RM $last_robj\"
+ fi
+ last_robj=$output_objdir/$output_la-${k}.$objext
+ func_arith $k + 1
+ k=$func_arith_result
+ output=$output_objdir/$output_la-${k}.$objext
+ objlist=" $obj"
+ func_len " $last_robj"
+ func_arith $len0 + $func_len_result
+ len=$func_arith_result
+ 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~
+ reload_objs="$objlist $last_robj"
+ eval concat_cmds=\"\${concat_cmds}$reload_cmds\"
+ if test -n "$last_robj"; then
+ eval concat_cmds=\"\${concat_cmds}~\$RM $last_robj\"
+ fi
+ func_append delfiles " $output"
+
+ else
+ output=
+ fi
+
+ if ${skipped_export-false}; then
+ func_verbose "generating symbol list for \`$libname.la'"
+ export_symbols="$output_objdir/$libname.exp"
+ $opt_dry_run || $RM $export_symbols
+ libobjs=$output
+ # Append the command to create the export file.
+ test -z "$concat_cmds" || concat_cmds=$concat_cmds~
+ eval concat_cmds=\"\$concat_cmds$export_symbols_cmds\"
+ if test -n "$last_robj"; then
+ eval concat_cmds=\"\$concat_cmds~\$RM $last_robj\"
+ fi
+ fi
+
+ test -n "$save_libobjs" &&
+ func_verbose "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"
+ $opt_silent || {
+ func_quote_for_expand "$cmd"
+ eval "func_echo $func_quote_for_expand_result"
+ }
+ $opt_dry_run || eval "$cmd" || {
+ lt_exit=$?
+
+ # Restore the uninstalled library and exit
+ if test "$opt_mode" = relink; then
+ ( cd "$output_objdir" && \
+ $RM "${realname}T" && \
+ $MV "${realname}U" "$realname" )
+ fi
+
+ exit $lt_exit
+ }
+ done
+ IFS="$save_ifs"
+
+ if test -n "$export_symbols_regex" && ${skipped_export-false}; then
+ func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"'
+ func_show_eval '$MV "${export_symbols}T" "$export_symbols"'
+ fi
+ fi
+
+ if ${skipped_export-false}; then
+ if test -n "$export_symbols" && test -n "$include_expsyms"; then
+ tmp_export_symbols="$export_symbols"
+ test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols"
+ $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"'
+ fi
+
+ if test -n "$orig_export_symbols"; then
+ # The given exports_symbols file has to be filtered, so filter it.
+ func_verbose "filter symbol list for \`$libname.la' to tag DATA exports"
+ # FIXME: $output_objdir/$libname.filter potentially contains lots of
+ # 's' commands which not all seds can handle. GNU sed should be fine
+ # though. Also, the filter scales superlinearly with the number of
+ # global variables. join(1) would be nice here, but unfortunately
+ # isn't a blessed tool.
+ $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter
+ func_append delfiles " $export_symbols $output_objdir/$libname.filter"
+ export_symbols=$output_objdir/$libname.def
+ $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols
+ fi
+ fi
+
+ 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\"
+ test "X$libobjs" = "X " && libobjs=
+ fi
+ # Expand the library linking commands again to reset the
+ # value of $libobjs for piecewise linking.
+
+ # Do each of the archive commands.
+ if test "$module" = yes && test -n "$module_cmds" ; then
+ if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then
+ cmds=$module_expsym_cmds
+ else
+ cmds=$module_cmds
+ fi
+ else
+ if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then
+ cmds=$archive_expsym_cmds
+ else
+ cmds=$archive_cmds
+ fi
+ fi
+ fi
+
+ if test -n "$delfiles"; then
+ # Append the command to remove temporary files to $cmds.
+ eval cmds=\"\$cmds~\$RM $delfiles\"
+ fi
+
+ # Add any objects from preloaded convenience libraries
+ if test -n "$dlprefiles"; then
+ gentop="$output_objdir/${outputname}x"
+ func_append generated " $gentop"
+
+ func_extract_archives $gentop $dlprefiles
+ func_append libobjs " $func_extract_archives_result"
+ test "X$libobjs" = "X " && libobjs=
+ fi
+
+ save_ifs="$IFS"; IFS='~'
+ for cmd in $cmds; do
+ IFS="$save_ifs"
+ eval cmd=\"$cmd\"
+ $opt_silent || {
+ func_quote_for_expand "$cmd"
+ eval "func_echo $func_quote_for_expand_result"
+ }
+ $opt_dry_run || eval "$cmd" || {
+ lt_exit=$?
+
+ # Restore the uninstalled library and exit
+ if test "$opt_mode" = relink; then
+ ( cd "$output_objdir" && \
+ $RM "${realname}T" && \
+ $MV "${realname}U" "$realname" )
+ fi
+
+ exit $lt_exit
+ }
+ done
+ IFS="$save_ifs"
+
+ # Restore the uninstalled library and exit
+ if test "$opt_mode" = relink; then
+ $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}T && $MV $realname ${realname}T && $MV ${realname}U $realname)' || exit $?
+
+ if test -n "$convenience"; then
+ if test -z "$whole_archive_flag_spec"; then
+ func_show_eval '${RM}r "$gentop"'
+ fi
+ fi
+
+ exit $EXIT_SUCCESS
+ fi
+
+ # Create links to the real library.
+ for linkname in $linknames; do
+ if test "$realname" != "$linkname"; then
+ func_show_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 "$dlfiles$dlprefiles" || test "$dlself" != no; then
+ func_warning "\`-dlopen' is ignored for objects"
+ fi
+
+ case " $deplibs" in
+ *\ -l* | *\ -L*)
+ func_warning "\`-l' and \`-L' are ignored for objects" ;;
+ esac
+
+ test -n "$rpath" && \
+ func_warning "\`-rpath' is ignored for objects"
+
+ test -n "$xrpath" && \
+ func_warning "\`-R' is ignored for objects"
+
+ test -n "$vinfo" && \
+ func_warning "\`-version-info' is ignored for objects"
+
+ test -n "$release" && \
+ func_warning "\`-release' is ignored for objects"
+
+ case $output in
+ *.lo)
+ test -n "$objs$old_deplibs" && \
+ func_fatal_error "cannot build library object \`$output' from non-libtool objects"
+
+ libobj=$output
+ func_lo2o "$libobj"
+ obj=$func_lo2o_result
+ ;;
+ *)
+ libobj=
+ obj="$output"
+ ;;
+ esac
+
+ # Delete the old objects.
+ $opt_dry_run || $RM $obj $libobj
+
+ # Objects from convenience libraries. This assumes
+ # single-version convenience libraries. Whenever we create
+ # different ones for PIC/non-PIC, this we'll have to duplicate
+ # the extraction.
+ reload_conv_objs=
+ gentop=
+ # reload_cmds runs $LD directly, so let us get rid of
+ # -Wl from whole_archive_flag_spec and hope we can get by with
+ # turning comma into space..
+ wl=
+
+ if test -n "$convenience"; then
+ if test -n "$whole_archive_flag_spec"; then
+ eval tmp_whole_archive_flags=\"$whole_archive_flag_spec\"
+ reload_conv_objs=$reload_objs\ `$ECHO "$tmp_whole_archive_flags" | $SED 's|,| |g'`
+ else
+ gentop="$output_objdir/${obj}x"
+ func_append generated " $gentop"
+
+ func_extract_archives $gentop $convenience
+ reload_conv_objs="$reload_objs $func_extract_archives_result"
+ fi
+ fi
+
+ # If we're not building shared, we need to use non_pic_objs
+ test "$build_libtool_libs" != yes && libobjs="$non_pic_objects"
+
+ # Create the old-style object.
+ reload_objs="$objs$old_deplibs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.${libext}$/d; /\.lib$/d; $lo2o" | $NL2SP`" $reload_conv_objs" ### testsuite: skip nested quoting test
+
+ output="$obj"
+ func_execute_cmds "$reload_cmds" 'exit $?'
+
+ # Exit if we aren't doing a library object file.
+ if test -z "$libobj"; then
+ if test -n "$gentop"; then
+ func_show_eval '${RM}r "$gentop"'
+ fi
+
+ exit $EXIT_SUCCESS
+ fi
+
+ if test "$build_libtool_libs" != yes; then
+ if test -n "$gentop"; then
+ func_show_eval '${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"
+ # $opt_dry_run || eval "echo timestamp > $libobj" || exit $?
+ exit $EXIT_SUCCESS
+ fi
+
+ if test -n "$pic_flag" || test "$pic_mode" != default; then
+ # Only do commands if we really have different PIC objects.
+ reload_objs="$libobjs $reload_conv_objs"
+ output="$libobj"
+ func_execute_cmds "$reload_cmds" 'exit $?'
+ fi
+
+ if test -n "$gentop"; then
+ func_show_eval '${RM}r "$gentop"'
+ fi
+
+ exit $EXIT_SUCCESS
+ ;;
+
+ prog)
+ case $host in
+ *cygwin*) func_stripname '' '.exe' "$output"
+ output=$func_stripname_result.exe;;
+ esac
+ test -n "$vinfo" && \
+ func_warning "\`-version-info' is ignored for programs"
+
+ test -n "$release" && \
+ func_warning "\`-release' is ignored for programs"
+
+ test "$preload" = yes \
+ && test "$dlopen_support" = unknown \
+ && test "$dlopen_self" = unknown \
+ && test "$dlopen_self_static" = unknown && \
+ func_warning "\`LT_INIT([dlopen])' not used. Assuming no dlopen support."
+
+ case $host in
+ *-*-rhapsody* | *-*-darwin1.[012])
+ # On Rhapsody replace the C library is the System framework
+ compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's/ -lc / System.ltframework /'`
+ finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's/ -lc / System.ltframework /'`
+ ;;
+ esac
+
+ case $host in
+ *-*-darwin*)
+ # Don't allow lazy linking, it breaks C++ global constructors
+ # But is supposedly fixed on 10.4 or later (yay!).
+ if test "$tagname" = CXX ; then
+ case ${MACOSX_DEPLOYMENT_TARGET-10.0} in
+ 10.[0123])
+ func_append compile_command " ${wl}-bind_at_load"
+ func_append finalize_command " ${wl}-bind_at_load"
+ ;;
+ esac
+ fi
+ # Time to change all our "foo.ltframework" stuff back to "-framework foo"
+ compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
+ finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
+ ;;
+ esac
+
+
+ # move library search paths that coincide with paths to not yet
+ # installed libraries to the beginning of the library search list
+ new_libs=
+ for path in $notinst_path; do
+ case " $new_libs " in
+ *" -L$path/$objdir "*) ;;
+ *)
+ case " $compile_deplibs " in
+ *" -L$path/$objdir "*)
+ func_append new_libs " -L$path/$objdir" ;;
+ esac
+ ;;
+ esac
+ done
+ for deplib in $compile_deplibs; do
+ case $deplib in
+ -L*)
+ case " $new_libs " in
+ *" $deplib "*) ;;
+ *) func_append new_libs " $deplib" ;;
+ esac
+ ;;
+ *) func_append new_libs " $deplib" ;;
+ esac
+ done
+ compile_deplibs="$new_libs"
+
+
+ func_append compile_command " $compile_deplibs"
+ func_append 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 "*) ;;
+ *) func_append 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"*)
+ ;;
+ *)
+ func_append hardcode_libdirs "$hardcode_libdir_separator$libdir"
+ ;;
+ esac
+ fi
+ else
+ eval flag=\"$hardcode_libdir_flag_spec\"
+ func_append rpath " $flag"
+ fi
+ elif test -n "$runpath_var"; then
+ case "$perm_rpath " in
+ *" $libdir "*) ;;
+ *) func_append perm_rpath " $libdir" ;;
+ esac
+ fi
+ case $host in
+ *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*)
+ testbindir=`${ECHO} "$libdir" | ${SED} -e 's*/lib$*/bin*'`
+ case :$dllsearchpath: in
+ *":$libdir:"*) ;;
+ ::) dllsearchpath=$libdir;;
+ *) func_append dllsearchpath ":$libdir";;
+ esac
+ case :$dllsearchpath: in
+ *":$testbindir:"*) ;;
+ ::) dllsearchpath=$testbindir;;
+ *) func_append dllsearchpath ":$testbindir";;
+ esac
+ ;;
+ esac
+ done
+ # Substitute the hardcoded libdirs into the rpath.
+ if test -n "$hardcode_libdir_separator" &&
+ test -n "$hardcode_libdirs"; then
+ libdir="$hardcode_libdirs"
+ eval rpath=\" $hardcode_libdir_flag_spec\"
+ fi
+ compile_rpath="$rpath"
+
+ rpath=
+ hardcode_libdirs=
+ for libdir in $finalize_rpath; do
+ if test -n "$hardcode_libdir_flag_spec"; then
+ if test -n "$hardcode_libdir_separator"; then
+ if test -z "$hardcode_libdirs"; then
+ hardcode_libdirs="$libdir"
+ else
+ # Just accumulate the unique libdirs.
+ case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
+ *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
+ ;;
+ *)
+ func_append hardcode_libdirs "$hardcode_libdir_separator$libdir"
+ ;;
+ esac
+ fi
+ else
+ eval flag=\"$hardcode_libdir_flag_spec\"
+ func_append rpath " $flag"
+ fi
+ elif test -n "$runpath_var"; then
+ case "$finalize_perm_rpath " in
+ *" $libdir "*) ;;
+ *) func_append 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 "$compile_command" | $SP2NL | $SED "$lo2o" | $NL2SP`
+ finalize_command=`$ECHO "$finalize_command" | $SP2NL | $SED "$lo2o" | $NL2SP`
+ fi
+
+ func_generate_dlsyms "$outputname" "@PROGRAM@" "no"
+
+ # template prelinking step
+ if test -n "$prelink_cmds"; then
+ func_execute_cmds "$prelink_cmds" 'exit $?'
+ fi
+
+ wrappers_required=yes
+ case $host in
+ *cegcc* | *mingw32ce*)
+ # Disable wrappers for cegcc and mingw32ce hosts, we are cross compiling anyway.
+ wrappers_required=no
+ ;;
+ *cygwin* | *mingw* )
+ if test "$build_libtool_libs" != yes; then
+ wrappers_required=no
+ fi
+ ;;
+ *)
+ if test "$need_relink" = no || test "$build_libtool_libs" != yes; then
+ wrappers_required=no
+ fi
+ ;;
+ esac
+ if test "$wrappers_required" = no; then
+ # Replace the output file specification.
+ compile_command=`$ECHO "$compile_command" | $SED 's%@OUTPUT@%'"$output"'%g'`
+ link_command="$compile_command$compile_rpath"
+
+ # We have no uninstalled library dependencies, so finalize right now.
+ exit_status=0
+ func_show_eval "$link_command" 'exit_status=$?'
+
+ if test -n "$postlink_cmds"; then
+ func_to_tool_file "$output"
+ postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'`
+ func_execute_cmds "$postlink_cmds" 'exit $?'
+ fi
+
+ # Delete the generated files.
+ if test -f "$output_objdir/${outputname}S.${objext}"; then
+ func_show_eval '$RM "$output_objdir/${outputname}S.${objext}"'
+ fi
+
+ exit $exit_status
+ 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
+ func_append 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
+ func_append 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 "$link_command" | $SED 's%@OUTPUT@%'"$output"'%g'`
+ # Delete the old output file.
+ $opt_dry_run || $RM $output
+ # Link the executable and exit
+ func_show_eval "$link_command" 'exit $?'
+
+ if test -n "$postlink_cmds"; then
+ func_to_tool_file "$output"
+ postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'`
+ func_execute_cmds "$postlink_cmds" 'exit $?'
+ fi
+
+ exit $EXIT_SUCCESS
+ fi
+
+ if test "$hardcode_action" = relink; then
+ # Fast installation is not supported
+ link_command="$compile_var$compile_command$compile_rpath"
+ relink_command="$finalize_var$finalize_command$finalize_rpath"
+
+ func_warning "this platform does not like uninstalled shared libraries"
+ func_warning "\`$output' will be relinked during installation"
+ else
+ if test "$fast_install" != no; then
+ link_command="$finalize_var$compile_command$finalize_rpath"
+ if test "$fast_install" = yes; then
+ relink_command=`$ECHO "$compile_var$compile_command$compile_rpath" | $SED '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 "$link_command" | $SED 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'`
+
+ # Delete the old output files.
+ $opt_dry_run || $RM $output $output_objdir/$outputname $output_objdir/lt-$outputname
+
+ func_show_eval "$link_command" 'exit $?'
+
+ if test -n "$postlink_cmds"; then
+ func_to_tool_file "$output_objdir/$outputname"
+ postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'`
+ func_execute_cmds "$postlink_cmds" 'exit $?'
+ fi
+
+ # Now create the wrapper script.
+ func_verbose "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}\" || $lt_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
+ func_quote_for_eval "$var_value"
+ relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command"
+ fi
+ done
+ relink_command="(cd `pwd`; $relink_command)"
+ relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"`
+ fi
+
+ # Only actually do things if not in dry run mode.
+ $opt_dry_run || {
+ # win32 will think the script is a binary if it has
+ # a .exe suffix, so we strip it off here.
+ case $output in
+ *.exe) func_stripname '' '.exe' "$output"
+ output=$func_stripname_result ;;
+ esac
+ # test for cygwin because mv fails w/o .exe extensions
+ case $host in
+ *cygwin*)
+ exeext=.exe
+ func_stripname '' '.exe' "$outputname"
+ outputname=$func_stripname_result ;;
+ *) exeext= ;;
+ esac
+ case $host in
+ *cygwin* | *mingw* )
+ func_dirname_and_basename "$output" "" "."
+ output_name=$func_basename_result
+ output_path=$func_dirname_result
+ cwrappersource="$output_path/$objdir/lt-$output_name.c"
+ cwrapper="$output_path/$output_name.exe"
+ $RM $cwrappersource $cwrapper
+ trap "$RM $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15
+
+ func_emit_cwrapperexe_src > $cwrappersource
+
+ # The wrapper executable is built using the $host compiler,
+ # because it contains $host paths and files. If cross-
+ # compiling, it, like the target executable, must be
+ # executed on the $host or under an emulation environment.
+ $opt_dry_run || {
+ $LTCC $LTCFLAGS -o $cwrapper $cwrappersource
+ $STRIP $cwrapper
+ }
+
+ # Now, create the wrapper script for func_source use:
+ func_ltwrapper_scriptname $cwrapper
+ $RM $func_ltwrapper_scriptname_result
+ trap "$RM $func_ltwrapper_scriptname_result; exit $EXIT_FAILURE" 1 2 15
+ $opt_dry_run || {
+ # note: this script will not be executed, so do not chmod.
+ if test "x$build" = "x$host" ; then
+ $cwrapper --lt-dump-script > $func_ltwrapper_scriptname_result
+ else
+ func_emit_wrapper no > $func_ltwrapper_scriptname_result
+ fi
+ }
+ ;;
+ * )
+ $RM $output
+ trap "$RM $output; exit $EXIT_FAILURE" 1 2 15
+
+ func_emit_wrapper no > $output
+ chmod +x $output
+ ;;
+ esac
+ }
+ exit $EXIT_SUCCESS
+ ;;
+ esac
+
+ # See if we need to build an old-fashioned archive.
+ for oldlib in $oldlibs; do
+
+ if test "$build_libtool_libs" = convenience; then
+ oldobjs="$libobjs_save $symfileobj"
+ 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"
+ if test "$preload" = yes && test -f "$symfileobj"; then
+ func_append oldobjs " $symfileobj"
+ fi
+ fi
+ addlibs="$old_convenience"
+ fi
+
+ if test -n "$addlibs"; then
+ gentop="$output_objdir/${outputname}x"
+ func_append generated " $gentop"
+
+ func_extract_archives $gentop $addlibs
+ func_append oldobjs " $func_extract_archives_result"
+ fi
+
+ # Do each command in the archive commands.
+ if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then
+ cmds=$old_archive_from_new_cmds
+ else
+
+ # Add any objects from preloaded convenience libraries
+ if test -n "$dlprefiles"; then
+ gentop="$output_objdir/${outputname}x"
+ func_append generated " $gentop"
+
+ func_extract_archives $gentop $dlprefiles
+ func_append oldobjs " $func_extract_archives_result"
+ fi
+
+ # POSIX demands no paths to be encoded in archives. We have
+ # to avoid creating archives with duplicate basenames if we
+ # might have to extract them afterwards, e.g., when creating a
+ # static archive out of a convenience library, or when linking
+ # the entirety of a libtool archive into another (currently
+ # not supported by libtool).
+ if (for obj in $oldobjs
+ do
+ func_basename "$obj"
+ $ECHO "$func_basename_result"
+ done | sort | sort -uc >/dev/null 2>&1); then
+ :
+ else
+ echo "copying selected object files to avoid basename conflicts..."
+ gentop="$output_objdir/${outputname}x"
+ func_append generated " $gentop"
+ func_mkdir_p "$gentop"
+ save_oldobjs=$oldobjs
+ oldobjs=
+ counter=1
+ for obj in $save_oldobjs
+ do
+ func_basename "$obj"
+ objbase="$func_basename_result"
+ case " $oldobjs " in
+ " ") oldobjs=$obj ;;
+ *[\ /]"$objbase "*)
+ while :; do
+ # Make sure we don't pick an alternate name that also
+ # overlaps.
+ newobj=lt$counter-$objbase
+ func_arith $counter + 1
+ counter=$func_arith_result
+ case " $oldobjs " in
+ *[\ /]"$newobj "*) ;;
+ *) if test ! -f "$gentop/$newobj"; then break; fi ;;
+ esac
+ done
+ func_show_eval "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj"
+ func_append oldobjs " $gentop/$newobj"
+ ;;
+ *) func_append oldobjs " $obj" ;;
+ esac
+ done
+ fi
+ func_to_tool_file "$oldlib" func_convert_file_msys_to_w32
+ tool_oldlib=$func_to_tool_file_result
+ eval cmds=\"$old_archive_cmds\"
+
+ func_len " $cmds"
+ len=$func_len_result
+ if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then
+ cmds=$old_archive_cmds
+ elif test -n "$archiver_list_spec"; then
+ func_verbose "using command file archive linking..."
+ for obj in $oldobjs
+ do
+ func_to_tool_file "$obj"
+ $ECHO "$func_to_tool_file_result"
+ done > $output_objdir/$libname.libcmd
+ func_to_tool_file "$output_objdir/$libname.libcmd"
+ oldobjs=" $archiver_list_spec$func_to_tool_file_result"
+ cmds=$old_archive_cmds
+ else
+ # the command line is too long to link in one step, link in parts
+ func_verbose "using piecewise archive linking..."
+ save_RANLIB=$RANLIB
+ RANLIB=:
+ objlist=
+ concat_cmds=
+ save_oldobjs=$oldobjs
+ oldobjs=
+ # Is there a better way of finding the last object in the list?
+ for obj in $save_oldobjs
+ do
+ last_oldobj=$obj
+ done
+ eval test_cmds=\"$old_archive_cmds\"
+ func_len " $test_cmds"
+ len0=$func_len_result
+ len=$len0
+ for obj in $save_oldobjs
+ do
+ func_len " $obj"
+ func_arith $len + $func_len_result
+ len=$func_arith_result
+ func_append objlist " $obj"
+ if test "$len" -lt "$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=
+ len=$len0
+ 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
+ func_execute_cmds "$cmds" 'exit $?'
+ done
+
+ test -n "$generated" && \
+ func_show_eval "${RM}r$generated"
+
+ # Now create the libtool archive.
+ case $output in
+ *.la)
+ old_library=
+ test "$build_old_libs" = yes && old_library="$libname.$libext"
+ func_verbose "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}\" || $lt_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
+ func_quote_for_eval "$var_value"
+ relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command"
+ fi
+ done
+ # Quote the link command for shipping.
+ relink_command="(cd `pwd`; $SHELL $progpath $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)"
+ relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"`
+ if test "$hardcode_automatic" = yes ; then
+ relink_command=
+ fi
+
+ # Only create the output if not a dry run.
+ $opt_dry_run || {
+ 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)
+ func_basename "$deplib"
+ name="$func_basename_result"
+ func_resolve_sysroot "$deplib"
+ eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $func_resolve_sysroot_result`
+ test -z "$libdir" && \
+ func_fatal_error "\`$deplib' is not a valid libtool archive"
+ func_append newdependency_libs " ${lt_sysroot:+=}$libdir/$name"
+ ;;
+ -L*)
+ func_stripname -L '' "$deplib"
+ func_replace_sysroot "$func_stripname_result"
+ func_append newdependency_libs " -L$func_replace_sysroot_result"
+ ;;
+ -R*)
+ func_stripname -R '' "$deplib"
+ func_replace_sysroot "$func_stripname_result"
+ func_append newdependency_libs " -R$func_replace_sysroot_result"
+ ;;
+ *) func_append newdependency_libs " $deplib" ;;
+ esac
+ done
+ dependency_libs="$newdependency_libs"
+ newdlfiles=
+
+ for lib in $dlfiles; do
+ case $lib in
+ *.la)
+ func_basename "$lib"
+ name="$func_basename_result"
+ eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
+ test -z "$libdir" && \
+ func_fatal_error "\`$lib' is not a valid libtool archive"
+ func_append newdlfiles " ${lt_sysroot:+=}$libdir/$name"
+ ;;
+ *) func_append newdlfiles " $lib" ;;
+ esac
+ done
+ dlfiles="$newdlfiles"
+ newdlprefiles=
+ for lib in $dlprefiles; do
+ case $lib in
+ *.la)
+ # Only pass preopened files to the pseudo-archive (for
+ # eventual linking with the app. that links it) if we
+ # didn't already link the preopened objects directly into
+ # the library:
+ func_basename "$lib"
+ name="$func_basename_result"
+ eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
+ test -z "$libdir" && \
+ func_fatal_error "\`$lib' is not a valid libtool archive"
+ func_append newdlprefiles " ${lt_sysroot:+=}$libdir/$name"
+ ;;
+ esac
+ done
+ dlprefiles="$newdlprefiles"
+ else
+ newdlfiles=
+ for lib in $dlfiles; do
+ case $lib in
+ [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;;
+ *) abs=`pwd`"/$lib" ;;
+ esac
+ func_append newdlfiles " $abs"
+ done
+ dlfiles="$newdlfiles"
+ newdlprefiles=
+ for lib in $dlprefiles; do
+ case $lib in
+ [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;;
+ *) abs=`pwd`"/$lib" ;;
+ esac
+ func_append newdlprefiles " $abs"
+ done
+ dlprefiles="$newdlprefiles"
+ fi
+ $RM $output
+ # place dlname in correct position for cygwin
+ # In fact, it would be nice if we could use this code for all target
+ # systems that can't hard-code library paths into their executables
+ # and that have no shared library path variable independent of PATH,
+ # but it turns out we can't easily determine that from inspecting
+ # libtool variables, so we have to hard-code the OSs to which it
+ # applies here; at the moment, that means platforms that use the PE
+ # object format with DLL files. See the long comment at the top of
+ # tests/bindir.at for full details.
+ tdlname=$dlname
+ case $host,$output,$installed,$module,$dlname in
+ *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll | *cegcc*,*lai,yes,no,*.dll)
+ # If a -bindir argument was supplied, place the dll there.
+ if test "x$bindir" != x ;
+ then
+ func_relative_path "$install_libdir" "$bindir"
+ tdlname=$func_relative_path_result$dlname
+ else
+ # Otherwise fall back on heuristic.
+ tdlname=../bin/$dlname
+ fi
+ ;;
+ esac
+ $ECHO > $output "\
+# $outputname - a libtool library file
+# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
+#
+# 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'
+
+# Linker flags that can not go in dependency_libs.
+inherited_linker_flags='$new_inherited_linker_flags'
+
+# Libraries that this one depends upon.
+dependency_libs='$dependency_libs'
+
+# Names of additional weak libraries provided by this library
+weak_library_names='$weak_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
+ }
+
+ # Do a symbolic link so that the libtool archive can be found in
+ # LD_LIBRARY_PATH before the program is installed.
+ func_show_eval '( cd "$output_objdir" && $RM "$outputname" && $LN_S "../$outputname" "$outputname" )' 'exit $?'
+ ;;
+ esac
+ exit $EXIT_SUCCESS
+}
+
+{ test "$opt_mode" = link || test "$opt_mode" = relink; } &&
+ func_mode_link ${1+"$@"}
+
+
+# func_mode_uninstall arg...
+func_mode_uninstall ()
+{
+ $opt_debug
+ 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) func_append RM " $arg"; rmforce=yes ;;
+ -*) func_append RM " $arg" ;;
+ *) func_append files " $arg" ;;
+ esac
+ done
+
+ test -z "$RM" && \
+ func_fatal_help "you must specify an RM program"
+
+ rmdirs=
+
+ for file in $files; do
+ func_dirname "$file" "" "."
+ dir="$func_dirname_result"
+ if test "X$dir" = X.; then
+ odir="$objdir"
+ else
+ odir="$dir/$objdir"
+ fi
+ func_basename "$file"
+ name="$func_basename_result"
+ test "$opt_mode" = uninstall && odir="$dir"
+
+ # Remember odir for removal later, being careful to avoid duplicates
+ if test "$opt_mode" = clean; then
+ case " $rmdirs " in
+ *" $odir "*) ;;
+ *) func_append rmdirs " $odir" ;;
+ 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 func_lalib_p "$file"; then
+ func_source $dir/$name
+
+ # Delete the libtool libraries and symlinks.
+ for n in $library_names; do
+ func_append rmfiles " $odir/$n"
+ done
+ test -n "$old_library" && func_append rmfiles " $odir/$old_library"
+
+ case "$opt_mode" in
+ clean)
+ case " $library_names " in
+ *" $dlname "*) ;;
+ *) test -n "$dlname" && func_append rmfiles " $odir/$dlname" ;;
+ esac
+ test -n "$libdir" && func_append rmfiles " $odir/$name $odir/${name}i"
+ ;;
+ uninstall)
+ if test -n "$library_names"; then
+ # Do each command in the postuninstall commands.
+ func_execute_cmds "$postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1'
+ fi
+
+ if test -n "$old_library"; then
+ # Do each command in the old_postuninstall commands.
+ func_execute_cmds "$old_postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1'
+ fi
+ # FIXME: should reinstall the best remaining shared library.
+ ;;
+ esac
+ fi
+ ;;
+
+ *.lo)
+ # Possibly a libtool object, so verify it.
+ if func_lalib_p "$file"; then
+
+ # Read the .lo file
+ func_source $dir/$name
+
+ # Add PIC object to the list of files to remove.
+ if test -n "$pic_object" &&
+ test "$pic_object" != none; then
+ func_append 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
+ func_append rmfiles " $dir/$non_pic_object"
+ fi
+ fi
+ ;;
+
+ *)
+ if test "$opt_mode" = clean ; then
+ noexename=$name
+ case $file in
+ *.exe)
+ func_stripname '' '.exe' "$file"
+ file=$func_stripname_result
+ func_stripname '' '.exe' "$name"
+ noexename=$func_stripname_result
+ # $file with .exe has already been added to rmfiles,
+ # add $file without .exe
+ func_append rmfiles " $file"
+ ;;
+ esac
+ # Do a test to see if this is a libtool program.
+ if func_ltwrapper_p "$file"; then
+ if func_ltwrapper_executable_p "$file"; then
+ func_ltwrapper_scriptname "$file"
+ relink_command=
+ func_source $func_ltwrapper_scriptname_result
+ func_append rmfiles " $func_ltwrapper_scriptname_result"
+ else
+ relink_command=
+ func_source $dir/$noexename
+ fi
+
+ # note $name still contains .exe if it was in $file originally
+ # as does the version of $file that was added into $rmfiles
+ func_append rmfiles " $odir/$name $odir/${name}S.${objext}"
+ if test "$fast_install" = yes && test -n "$relink_command"; then
+ func_append rmfiles " $odir/lt-$name"
+ fi
+ if test "X$noexename" != "X$name" ; then
+ func_append rmfiles " $odir/lt-${noexename}.c"
+ fi
+ fi
+ fi
+ ;;
+ esac
+ func_show_eval "$RM $rmfiles" 'exit_status=1'
+ done
+
+ # Try to remove the ${objdir}s in the directories where we deleted files
+ for dir in $rmdirs; do
+ if test -d "$dir"; then
+ func_show_eval "rmdir $dir >/dev/null 2>&1"
+ fi
+ done
+
+ exit $exit_status
+}
+
+{ test "$opt_mode" = uninstall || test "$opt_mode" = clean; } &&
+ func_mode_uninstall ${1+"$@"}
+
+test -z "$opt_mode" && {
+ help="$generic_help"
+ func_fatal_help "you must specify a MODE"
+}
+
+test -z "$exec_cmd" && \
+ func_fatal_help "invalid operation mode \`$opt_mode'"
+
+if test -n "$exec_cmd"; then
+ eval exec "$exec_cmd"
+ exit $EXIT_FAILURE
+fi
+
+exit $exit_status
+
+
+# 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:
+# vi:sw=2
+
diff --git a/m4/ax_check_compile_flag.m4 b/m4/ax_check_compile_flag.m4
new file mode 100644
index 0000000..c3a8d69
--- /dev/null
+++ b/m4/ax_check_compile_flag.m4
@@ -0,0 +1,72 @@
+# ===========================================================================
+# http://www.gnu.org/software/autoconf-archive/ax_check_compile_flag.html
+# ===========================================================================
+#
+# SYNOPSIS
+#
+# AX_CHECK_COMPILE_FLAG(FLAG, [ACTION-SUCCESS], [ACTION-FAILURE], [EXTRA-FLAGS])
+#
+# DESCRIPTION
+#
+# Check whether the given FLAG works with the current language's compiler
+# or gives an error. (Warnings, however, are ignored)
+#
+# ACTION-SUCCESS/ACTION-FAILURE are shell commands to execute on
+# success/failure.
+#
+# If EXTRA-FLAGS is defined, it is added to the current language's default
+# flags (e.g. CFLAGS) when the check is done. The check is thus made with
+# the flags: "CFLAGS EXTRA-FLAGS FLAG". This can for example be used to
+# force the compiler to issue an error when a bad flag is given.
+#
+# NOTE: Implementation based on AX_CFLAGS_GCC_OPTION. Please keep this
+# macro in sync with AX_CHECK_{PREPROC,LINK}_FLAG.
+#
+# LICENSE
+#
+# Copyright (c) 2008 Guido U. Draheim <guidod at gmx.de>
+# Copyright (c) 2011 Maarten Bosmans <mkbosmans at gmail.com>
+#
+# 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 3 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, see <http://www.gnu.org/licenses/>.
+#
+# As a special exception, the respective Autoconf Macro's copyright owner
+# gives unlimited permission to copy, distribute and modify the configure
+# scripts that are the output of Autoconf when processing the Macro. You
+# need not follow the terms of the GNU General Public License when using
+# or distributing such scripts, even though portions of the text of the
+# Macro appear in them. The GNU General Public License (GPL) does govern
+# all other use of the material that constitutes the Autoconf Macro.
+#
+# This special exception to the GPL applies to versions of the Autoconf
+# Macro released by the Autoconf Archive. When you make and distribute a
+# modified version of the Autoconf Macro, you may extend this special
+# exception to the GPL to apply to your modified version as well.
+
+#serial 2
+
+AC_DEFUN([AX_CHECK_COMPILE_FLAG],
+[AC_PREREQ(2.59)dnl for _AC_LANG_PREFIX
+AS_VAR_PUSHDEF([CACHEVAR],[ax_cv_check_[]_AC_LANG_ABBREV[]flags_$4_$1])dnl
+AC_CACHE_CHECK([whether _AC_LANG compiler accepts $1], CACHEVAR, [
+ ax_check_save_flags=$[]_AC_LANG_PREFIX[]FLAGS
+ _AC_LANG_PREFIX[]FLAGS="$[]_AC_LANG_PREFIX[]FLAGS $4 $1"
+ AC_COMPILE_IFELSE([AC_LANG_PROGRAM()],
+ [AS_VAR_SET(CACHEVAR,[yes])],
+ [AS_VAR_SET(CACHEVAR,[no])])
+ _AC_LANG_PREFIX[]FLAGS=$ax_check_save_flags])
+AS_IF([test x"AS_VAR_GET(CACHEVAR)" = xyes],
+ [m4_default([$2], :)],
+ [m4_default([$3], :)])
+AS_VAR_POPDEF([CACHEVAR])dnl
+])dnl AX_CHECK_COMPILE_FLAGS
diff --git a/m4/ax_ext.m4 b/m4/ax_ext.m4
new file mode 100644
index 0000000..a946c88
--- /dev/null
+++ b/m4/ax_ext.m4
@@ -0,0 +1,163 @@
+# ===========================================================================
+# http://www.gnu.org/software/autoconf-archive/ax_ext.html
+# ===========================================================================
+#
+# SYNOPSIS
+#
+# AX_EXT
+#
+# DESCRIPTION
+#
+# Find supported SIMD extensions by requesting cpuid. When an SIMD
+# extension is found, the -m"simdextensionname" is added to SIMD_FLAGS
+# (only if compilator support it) (ie : if "sse2" is available "-msse2" is
+# added to SIMD_FLAGS)
+#
+# This macro calls:
+#
+# AC_SUBST(SIMD_FLAGS)
+#
+# And defines:
+#
+# HAVE_MMX / HAVE_SSE / HAVE_SSE2 / HAVE_SSE3 / HAVE_SSSE3 /
+# HAVE_SSE41 / HAVE_SSE42 / HAVE_AVX
+#
+# LICENSE
+#
+# Copyright (c) 2008 Christophe Tournayre <turn3r at users.sourceforge.net>
+#
+# Copying and distribution of this file, with or without modification, are
+# permitted in any medium without royalty provided the copyright notice
+# and this notice are preserved. This file is offered as-is, without any
+# warranty.
+#
+# MODIFIED
+# * March 23, 2012 Joseph D. Gaeddert <jgaedder at vt.edu>
+# Including tests for proper intrinsics header files in addition to cpu
+# capabilities.
+# MMX : mmintrin.h
+# SSE : xmmintrin.h
+# SSE2 : emmintrin.h
+# SSE3 : pmmintrin.h
+# SSSE3 : tmmintrin.h
+# SSE4.1/4.2 : smmintrin.h
+# AVX : immintrin.h
+
+#serial 9
+
+AC_DEFUN([AX_EXT],
+[
+ AC_REQUIRE([AX_GCC_X86_CPUID])
+
+ AX_GCC_X86_CPUID(0x00000001)
+ ecx=`echo $ax_cv_gcc_x86_cpuid_0x00000001 | cut -d ":" -f 3`
+ edx=`echo $ax_cv_gcc_x86_cpuid_0x00000001 | cut -d ":" -f 4`
+
+ AC_CHECK_HEADERS(mmintrin.h xmmintrin.h emmintrin.h pmmintrin.h tmmintrin.h smmintrin.h immintrin.h)
+
+ AC_CACHE_CHECK([whether mmx is supported], [ax_cv_have_mmx_ext],
+ [
+ ax_cv_have_mmx_ext=no
+ if test "$((0x$edx>>23&0x01))" = 1; then
+ ax_cv_have_mmx_ext=yes
+ fi
+ ])
+
+ AC_CACHE_CHECK([whether sse is supported], [ax_cv_have_sse_ext],
+ [
+ ax_cv_have_sse_ext=no
+ if test "$((0x$edx>>25&0x01))" = 1; then
+ ax_cv_have_sse_ext=yes
+ fi
+ ])
+
+ AC_CACHE_CHECK([whether sse2 is supported], [ax_cv_have_sse2_ext],
+ [
+ ax_cv_have_sse2_ext=no
+ if test "$((0x$edx>>26&0x01))" = 1; then
+ ax_cv_have_sse2_ext=yes
+ fi
+ ])
+
+ AC_CACHE_CHECK([whether sse3 is supported], [ax_cv_have_sse3_ext],
+ [
+ ax_cv_have_sse3_ext=no
+ if test "$((0x$ecx&0x01))" = 1; then
+ ax_cv_have_sse3_ext=yes
+ fi
+ ])
+
+ AC_CACHE_CHECK([whether ssse3 is supported], [ax_cv_have_ssse3_ext],
+ [
+ ax_cv_have_ssse3_ext=no
+ if test "$((0x$ecx>>9&0x01))" = 1; then
+ ax_cv_have_ssse3_ext=yes
+ fi
+ ])
+
+ AC_CACHE_CHECK([whether sse4.1 is supported], [ax_cv_have_sse41_ext],
+ [
+ ax_cv_have_sse41_ext=no
+ if test "$((0x$ecx>>19&0x01))" = 1; then
+ ax_cv_have_sse41_ext=yes
+ fi
+ ])
+
+ AC_CACHE_CHECK([whether sse4.2 is supported], [ax_cv_have_sse42_ext],
+ [
+ ax_cv_have_sse42_ext=no
+ if test "$((0x$ecx>>20&0x01))" = 1; then
+ ax_cv_have_sse42_ext=yes
+ fi
+ ])
+
+ AC_CACHE_CHECK([whether avx is supported], [ax_cv_have_avx_ext],
+ [
+ ax_cv_have_avx_ext=no
+ if test "$((0x$ecx>>28&0x01))" = 1; then
+ ax_cv_have_avx_ext=yes
+ fi
+ ])
+
+ if [ test "$ax_cv_have_mmx_ext" = yes && test "$ac_cv_header_mmintrin_h" = yes ]; then
+ AC_DEFINE(HAVE_MMX,, [Support MMX instructions])
+ AX_CHECK_COMPILE_FLAG(-mmmx, SIMD_FLAGS="$SIMD_FLAGS -mmmx", [])
+ fi
+
+ if [ test "$ax_cv_have_sse_ext" = yes && test "$ac_cv_header_xmmintrin_h" = yes ]; then
+ AC_DEFINE(HAVE_SSE,, [Support SSE (Streaming SIMD Extensions) instructions])
+ AX_CHECK_COMPILE_FLAG(-msse, SIMD_FLAGS="$SIMD_FLAGS -msse", [])
+ fi
+
+ if [ test "$ax_cv_have_sse2_ext" = yes && test "$ac_cv_header_emmintrin_h" = yes ]; then
+ AC_DEFINE(HAVE_SSE2,, [Support SSE2 (Streaming SIMD Extensions 2) instructions])
+ AX_CHECK_COMPILE_FLAG(-msse2, SIMD_FLAGS="$SIMD_FLAGS -msse2", [])
+ fi
+
+ if [ test "$ax_cv_have_sse3_ext" = yes && test "$ac_cv_header_pmmintrin_h" = yes ]; then
+ AC_DEFINE(HAVE_SSE3,, [Support SSE3 (Streaming SIMD Extensions 3) instructions])
+ AX_CHECK_COMPILE_FLAG(-msse3, SIMD_FLAGS="$SIMD_FLAGS -msse3", [])
+ fi
+
+ if [ test "$ax_cv_have_ssse3_ext" = yes && test "$ac_cv_header_tmmintrin_h" = yes ]; then
+ AC_DEFINE(HAVE_SSSE3,, [Support SSSE3 (Supplemental Streaming SIMD Extensions 3) instructions])
+ AX_CHECK_COMPILE_FLAG(-mssse3, SIMD_FLAGS="$SIMD_FLAGS -mssse3", [])
+ fi
+
+ if [ test "$ax_cv_have_sse41_ext" = yes && test "$ac_cv_header_smmintrin_h" = yes ]; then
+ AC_DEFINE(HAVE_SSE41,, [Support SSE4.1 (Streaming SIMD Extensions 4.1) instructions])
+ AX_CHECK_COMPILE_FLAG(-msse4.1, SIMD_FLAGS="$SIMD_FLAGS -msse4.1", [])
+ fi
+
+ if [ test "$ax_cv_have_sse42_ext" = yes && test "$ac_cv_header_smmintrin_h" = yes ]; then
+ AC_DEFINE(HAVE_SSE42, 1,[Support SSE4.2 (Streaming SIMD Extensions 4.2) instructions])
+ AX_CHECK_COMPILE_FLAG(-msse4.2, SIMD_FLAGS="$SIMD_FLAGS -msse4.2", [])
+ fi
+
+ if [ test "$ax_cv_have_avx_ext" = yes && test "$ac_cv_header_immintrin_h" = yes ]; then
+ AC_DEFINE(HAVE_AVX,,[Support AVX (Advanced Vector Extensions) instructions])
+ AX_CHECK_COMPILE_FLAG(-mavx, SIMD_FLAGS="$SIMD_FLAGS -mavx", [])
+ fi
+
+ AC_SUBST(SIMD_FLAGS)
+])
diff --git a/m4/ax_gcc_x86_cpuid.m4 b/m4/ax_gcc_x86_cpuid.m4
new file mode 100644
index 0000000..7d46fee
--- /dev/null
+++ b/m4/ax_gcc_x86_cpuid.m4
@@ -0,0 +1,79 @@
+# ===========================================================================
+# http://www.gnu.org/software/autoconf-archive/ax_gcc_x86_cpuid.html
+# ===========================================================================
+#
+# SYNOPSIS
+#
+# AX_GCC_X86_CPUID(OP)
+#
+# DESCRIPTION
+#
+# On Pentium and later x86 processors, with gcc or a compiler that has a
+# compatible syntax for inline assembly instructions, run a small program
+# that executes the cpuid instruction with input OP. This can be used to
+# detect the CPU type.
+#
+# On output, the values of the eax, ebx, ecx, and edx registers are stored
+# as hexadecimal strings as "eax:ebx:ecx:edx" in the cache variable
+# ax_cv_gcc_x86_cpuid_OP.
+#
+# If the cpuid instruction fails (because you are running a
+# cross-compiler, or because you are not using gcc, or because you are on
+# a processor that doesn't have this instruction), ax_cv_gcc_x86_cpuid_OP
+# is set to the string "unknown".
+#
+# This macro mainly exists to be used in AX_GCC_ARCHFLAG.
+#
+# LICENSE
+#
+# Copyright (c) 2008 Steven G. Johnson <stevenj at alum.mit.edu>
+# Copyright (c) 2008 Matteo Frigo
+#
+# 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 3 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, see <http://www.gnu.org/licenses/>.
+#
+# As a special exception, the respective Autoconf Macro's copyright owner
+# gives unlimited permission to copy, distribute and modify the configure
+# scripts that are the output of Autoconf when processing the Macro. You
+# need not follow the terms of the GNU General Public License when using
+# or distributing such scripts, even though portions of the text of the
+# Macro appear in them. The GNU General Public License (GPL) does govern
+# all other use of the material that constitutes the Autoconf Macro.
+#
+# This special exception to the GPL applies to versions of the Autoconf
+# Macro released by the Autoconf Archive. When you make and distribute a
+# modified version of the Autoconf Macro, you may extend this special
+# exception to the GPL to apply to your modified version as well.
+
+#serial 7
+
+AC_DEFUN([AX_GCC_X86_CPUID],
+[AC_REQUIRE([AC_PROG_CC])
+AC_LANG_PUSH([C])
+AC_CACHE_CHECK(for x86 cpuid $1 output, ax_cv_gcc_x86_cpuid_$1,
+ [AC_RUN_IFELSE([AC_LANG_PROGRAM([#include <stdio.h>], [
+ int op = $1, eax, ebx, ecx, edx;
+ FILE *f;
+ __asm__("cpuid"
+ : "=a" (eax), "=b" (ebx), "=c" (ecx), "=d" (edx)
+ : "a" (op));
+ f = fopen("conftest_cpuid", "w"); if (!f) return 1;
+ fprintf(f, "%x:%x:%x:%x\n", eax, ebx, ecx, edx);
+ fclose(f);
+ return 0;
+])],
+ [ax_cv_gcc_x86_cpuid_$1=`cat conftest_cpuid`; rm -f conftest_cpuid],
+ [ax_cv_gcc_x86_cpuid_$1=unknown; rm -f conftest_cpuid],
+ [ax_cv_gcc_x86_cpuid_$1=unknown])])
+AC_LANG_POP([C])
+])
diff --git a/m4/ax_mpi.m4 b/m4/ax_mpi.m4
new file mode 100644
index 0000000..5b2322c
--- /dev/null
+++ b/m4/ax_mpi.m4
@@ -0,0 +1,176 @@
+# ===========================================================================
+# http://www.gnu.org/software/autoconf-archive/ax_mpi.html
+# ===========================================================================
+#
+# SYNOPSIS
+#
+# AX_MPI([ACTION-IF-FOUND[, ACTION-IF-NOT-FOUND]])
+#
+# DESCRIPTION
+#
+# This macro tries to find out how to compile programs that use MPI
+# (Message Passing Interface), a standard API for parallel process
+# communication (see http://www-unix.mcs.anl.gov/mpi/)
+#
+# On success, it sets the MPICC, MPICXX, MPIF77, or MPIFC output variable
+# to the name of the MPI compiler, depending upon the current language.
+# (This may just be $CC/$CXX/$F77/$FC, but is more often something like
+# mpicc/mpiCC/mpif77/mpif90.) It also sets MPILIBS to any libraries that
+# are needed for linking MPI (e.g. -lmpi or -lfmpi, if a special
+# MPICC/MPICXX/MPIF77/MPIFC was not found).
+#
+# Note that this macro should be used only if you just have a few source
+# files that need to be compiled using MPI. In particular, you should
+# neither overwrite CC/CXX/F77/FC with the values of
+# MPICC/MPICXX/MPIF77/MPIFC, nor assume that you can use the same flags
+# etc. as the standard compilers. If you want to compile a whole program
+# using the MPI compiler commands, use one of the macros
+# AX_PROG_{CC,CXX,FC}_MPI.
+#
+# ACTION-IF-FOUND is a list of shell commands to run if an MPI library is
+# found, and ACTION-IF-NOT-FOUND is a list of commands to run if it is not
+# found. If ACTION-IF-FOUND is not specified, the default action will
+# define HAVE_MPI.
+#
+# LICENSE
+#
+# Copyright (c) 2008 Steven G. Johnson <stevenj at alum.mit.edu>
+# Copyright (c) 2008 Julian C. Cummings <cummings at cacr.caltech.edu>
+#
+# 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 3 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, see <http://www.gnu.org/licenses/>.
+#
+# As a special exception, the respective Autoconf Macro's copyright owner
+# gives unlimited permission to copy, distribute and modify the configure
+# scripts that are the output of Autoconf when processing the Macro. You
+# need not follow the terms of the GNU General Public License when using
+# or distributing such scripts, even though portions of the text of the
+# Macro appear in them. The GNU General Public License (GPL) does govern
+# all other use of the material that constitutes the Autoconf Macro.
+#
+# This special exception to the GPL applies to versions of the Autoconf
+# Macro released by the Autoconf Archive. When you make and distribute a
+# modified version of the Autoconf Macro, you may extend this special
+# exception to the GPL to apply to your modified version as well.
+
+#serial 8
+
+AU_ALIAS([ACX_MPI], [AX_MPI])
+AC_DEFUN([AX_MPI], [
+AC_PREREQ(2.50) dnl for AC_LANG_CASE
+
+AC_LANG_CASE([C], [
+ AC_REQUIRE([AC_PROG_CC])
+ AC_ARG_VAR(MPICC,[MPI C compiler command])
+ AC_CHECK_PROGS(MPICC, mpicc hcc mpxlc_r mpxlc mpcc cmpicc, $CC)
+ ax_mpi_save_CC="$CC"
+ CC="$MPICC"
+ AC_SUBST(MPICC)
+],
+[C++], [
+ AC_REQUIRE([AC_PROG_CXX])
+ AC_ARG_VAR(MPICXX,[MPI C++ compiler command])
+ AC_CHECK_PROGS(MPICXX, mpic++ mpicxx mpiCC hcp mpxlC_r mpxlC mpCC cmpic++, $CXX)
+ ax_mpi_save_CXX="$CXX"
+ CXX="$MPICXX"
+ AC_SUBST(MPICXX)
+],
+[Fortran 77], [
+ AC_REQUIRE([AC_PROG_F77])
+ AC_ARG_VAR(MPIF77,[MPI Fortran 77 compiler command])
+ AC_CHECK_PROGS(MPIF77, mpif77 hf77 mpxlf_r mpxlf mpf77 cmpifc, $F77)
+ ax_mpi_save_F77="$F77"
+ F77="$MPIF77"
+ AC_SUBST(MPIF77)
+],
+[Fortran], [
+ AC_REQUIRE([AC_PROG_FC])
+ AC_ARG_VAR(MPIFC,[MPI Fortran compiler command])
+ AC_CHECK_PROGS(MPIFC, mpif90 mpxlf95_r mpxlf90_r mpxlf95 mpxlf90 mpf90 cmpif90c, $FC)
+ ax_mpi_save_FC="$FC"
+ FC="$MPIFC"
+ AC_SUBST(MPIFC)
+])
+
+if test x = x"$MPILIBS"; then
+ AC_LANG_CASE([C], [AC_CHECK_FUNC(MPI_Init, [MPILIBS=" "])],
+ [C++], [AC_CHECK_FUNC(MPI_Init, [MPILIBS=" "])],
+ [Fortran 77], [AC_MSG_CHECKING([for MPI_Init])
+ AC_LINK_IFELSE([AC_LANG_PROGRAM([],[ call MPI_Init])],[MPILIBS=" "
+ AC_MSG_RESULT(yes)], [AC_MSG_RESULT(no)])],
+ [Fortran], [AC_MSG_CHECKING([for MPI_Init])
+ AC_LINK_IFELSE([AC_LANG_PROGRAM([],[ call MPI_Init])],[MPILIBS=" "
+ AC_MSG_RESULT(yes)], [AC_MSG_RESULT(no)])])
+fi
+AC_LANG_CASE([Fortran 77], [
+ if test x = x"$MPILIBS"; then
+ AC_CHECK_LIB(fmpi, MPI_Init, [MPILIBS="-lfmpi"])
+ fi
+ if test x = x"$MPILIBS"; then
+ AC_CHECK_LIB(fmpich, MPI_Init, [MPILIBS="-lfmpich"])
+ fi
+],
+[Fortran], [
+ if test x = x"$MPILIBS"; then
+ AC_CHECK_LIB(fmpi, MPI_Init, [MPILIBS="-lfmpi"])
+ fi
+ if test x = x"$MPILIBS"; then
+ AC_CHECK_LIB(mpichf90, MPI_Init, [MPILIBS="-lmpichf90"])
+ fi
+])
+if test x = x"$MPILIBS"; then
+ AC_CHECK_LIB(mpi, MPI_Init, [MPILIBS="-lmpi"])
+fi
+if test x = x"$MPILIBS"; then
+ AC_CHECK_LIB(mpich, MPI_Init, [MPILIBS="-lmpich"])
+fi
+
+dnl We have to use AC_TRY_COMPILE and not AC_CHECK_HEADER because the
+dnl latter uses $CPP, not $CC (which may be mpicc).
+AC_LANG_CASE([C], [if test x != x"$MPILIBS"; then
+ AC_MSG_CHECKING([for mpi.h])
+ AC_TRY_COMPILE([#include <mpi.h>],[],[AC_MSG_RESULT(yes)], [MPILIBS=""
+ AC_MSG_RESULT(no)])
+fi],
+[C++], [if test x != x"$MPILIBS"; then
+ AC_MSG_CHECKING([for mpi.h])
+ AC_TRY_COMPILE([#include <mpi.h>],[],[AC_MSG_RESULT(yes)], [MPILIBS=""
+ AC_MSG_RESULT(no)])
+fi],
+[Fortran 77], [if test x != x"$MPILIBS"; then
+ AC_MSG_CHECKING([for mpif.h])
+ AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[ include 'mpif.h'])],[AC_MSG_RESULT(yes)], [MPILIBS=""
+ AC_MSG_RESULT(no)])
+fi],
+[Fortran], [if test x != x"$MPILIBS"; then
+ AC_MSG_CHECKING([for mpif.h])
+ AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[ include 'mpif.h'])],[AC_MSG_RESULT(yes)], [MPILIBS=""
+ AC_MSG_RESULT(no)])
+fi])
+
+AC_LANG_CASE([C], [CC="$ax_mpi_save_CC"],
+ [C++], [CXX="$ax_mpi_save_CXX"],
+ [Fortran 77], [F77="$ax_mpi_save_F77"],
+ [Fortran], [FC="$ax_mpi_save_FC"])
+
+AC_SUBST(MPILIBS)
+
+# Finally, execute ACTION-IF-FOUND/ACTION-IF-NOT-FOUND:
+if test x = x"$MPILIBS"; then
+ $2
+ :
+else
+ ifelse([$1],,[AC_DEFINE(HAVE_MPI,1,[Define if you have the MPI library.])],[$1])
+ :
+fi
+])dnl AX_MPI
diff --git a/m4/libtool.m4 b/m4/libtool.m4
new file mode 100644
index 0000000..828104c
--- /dev/null
+++ b/m4/libtool.m4
@@ -0,0 +1,8001 @@
+# libtool.m4 - Configure libtool for the host system. -*-Autoconf-*-
+#
+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005,
+# 2006, 2007, 2008, 2009, 2010, 2011 Free Software
+# Foundation, Inc.
+# Written by Gordon Matzigkeit, 1996
+#
+# 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.
+
+m4_define([_LT_COPYING], [dnl
+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005,
+# 2006, 2007, 2008, 2009, 2010, 2011 Free Software
+# Foundation, Inc.
+# Written by Gordon Matzigkeit, 1996
+#
+# This file is part of GNU Libtool.
+#
+# GNU Libtool 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.
+#
+# As a special exception to the GNU General Public License,
+# if you distribute this file as part of a program or library that
+# is built using GNU Libtool, you may include this file under the
+# same distribution terms that you use for the rest of that program.
+#
+# GNU Libtool 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 GNU Libtool; see the file COPYING. If not, a copy
+# can be downloaded from http://www.gnu.org/licenses/gpl.html, or
+# obtained by writing to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+])
+
+# serial 57 LT_INIT
+
+
+# LT_PREREQ(VERSION)
+# ------------------
+# Complain and exit if this libtool version is less that VERSION.
+m4_defun([LT_PREREQ],
+[m4_if(m4_version_compare(m4_defn([LT_PACKAGE_VERSION]), [$1]), -1,
+ [m4_default([$3],
+ [m4_fatal([Libtool version $1 or higher is required],
+ 63)])],
+ [$2])])
+
+
+# _LT_CHECK_BUILDDIR
+# ------------------
+# Complain if the absolute build directory name contains unusual characters
+m4_defun([_LT_CHECK_BUILDDIR],
+[case `pwd` in
+ *\ * | *\ *)
+ AC_MSG_WARN([Libtool does not cope well with whitespace in `pwd`]) ;;
+esac
+])
+
+
+# LT_INIT([OPTIONS])
+# ------------------
+AC_DEFUN([LT_INIT],
+[AC_PREREQ([2.58])dnl We use AC_INCLUDES_DEFAULT
+AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl
+AC_BEFORE([$0], [LT_LANG])dnl
+AC_BEFORE([$0], [LT_OUTPUT])dnl
+AC_BEFORE([$0], [LTDL_INIT])dnl
+m4_require([_LT_CHECK_BUILDDIR])dnl
+
+dnl Autoconf doesn't catch unexpanded LT_ macros by default:
+m4_pattern_forbid([^_?LT_[A-Z_]+$])dnl
+m4_pattern_allow([^(_LT_EOF|LT_DLGLOBAL|LT_DLLAZY_OR_NOW|LT_MULTI_MODULE)$])dnl
+dnl aclocal doesn't pull ltoptions.m4, ltsugar.m4, or ltversion.m4
+dnl unless we require an AC_DEFUNed macro:
+AC_REQUIRE([LTOPTIONS_VERSION])dnl
+AC_REQUIRE([LTSUGAR_VERSION])dnl
+AC_REQUIRE([LTVERSION_VERSION])dnl
+AC_REQUIRE([LTOBSOLETE_VERSION])dnl
+m4_require([_LT_PROG_LTMAIN])dnl
+
+_LT_SHELL_INIT([SHELL=${CONFIG_SHELL-/bin/sh}])
+
+dnl Parse OPTIONS
+_LT_SET_OPTIONS([$0], [$1])
+
+# This can be used to rebuild libtool when needed
+LIBTOOL_DEPS="$ltmain"
+
+# Always use our own libtool.
+LIBTOOL='$(SHELL) $(top_builddir)/libtool'
+AC_SUBST(LIBTOOL)dnl
+
+_LT_SETUP
+
+# Only expand once:
+m4_define([LT_INIT])
+])# LT_INIT
+
+# Old names:
+AU_ALIAS([AC_PROG_LIBTOOL], [LT_INIT])
+AU_ALIAS([AM_PROG_LIBTOOL], [LT_INIT])
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AC_PROG_LIBTOOL], [])
+dnl AC_DEFUN([AM_PROG_LIBTOOL], [])
+
+
+# _LT_CC_BASENAME(CC)
+# -------------------
+# Calculate cc_basename. Skip known compiler wrappers and cross-prefix.
+m4_defun([_LT_CC_BASENAME],
+[for cc_temp in $1""; do
+ case $cc_temp in
+ compile | *[[\\/]]compile | ccache | *[[\\/]]ccache ) ;;
+ distcc | *[[\\/]]distcc | purify | *[[\\/]]purify ) ;;
+ \-*) ;;
+ *) break;;
+ esac
+done
+cc_basename=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"`
+])
+
+
+# _LT_FILEUTILS_DEFAULTS
+# ----------------------
+# It is okay to use these file commands and assume they have been set
+# sensibly after `m4_require([_LT_FILEUTILS_DEFAULTS])'.
+m4_defun([_LT_FILEUTILS_DEFAULTS],
+[: ${CP="cp -f"}
+: ${MV="mv -f"}
+: ${RM="rm -f"}
+])# _LT_FILEUTILS_DEFAULTS
+
+
+# _LT_SETUP
+# ---------
+m4_defun([_LT_SETUP],
+[AC_REQUIRE([AC_CANONICAL_HOST])dnl
+AC_REQUIRE([AC_CANONICAL_BUILD])dnl
+AC_REQUIRE([_LT_PREPARE_SED_QUOTE_VARS])dnl
+AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH])dnl
+
+_LT_DECL([], [PATH_SEPARATOR], [1], [The PATH separator for the build system])dnl
+dnl
+_LT_DECL([], [host_alias], [0], [The host system])dnl
+_LT_DECL([], [host], [0])dnl
+_LT_DECL([], [host_os], [0])dnl
+dnl
+_LT_DECL([], [build_alias], [0], [The build system])dnl
+_LT_DECL([], [build], [0])dnl
+_LT_DECL([], [build_os], [0])dnl
+dnl
+AC_REQUIRE([AC_PROG_CC])dnl
+AC_REQUIRE([LT_PATH_LD])dnl
+AC_REQUIRE([LT_PATH_NM])dnl
+dnl
+AC_REQUIRE([AC_PROG_LN_S])dnl
+test -z "$LN_S" && LN_S="ln -s"
+_LT_DECL([], [LN_S], [1], [Whether we need soft or hard links])dnl
+dnl
+AC_REQUIRE([LT_CMD_MAX_LEN])dnl
+_LT_DECL([objext], [ac_objext], [0], [Object file suffix (normally "o")])dnl
+_LT_DECL([], [exeext], [0], [Executable file suffix (normally "")])dnl
+dnl
+m4_require([_LT_FILEUTILS_DEFAULTS])dnl
+m4_require([_LT_CHECK_SHELL_FEATURES])dnl
+m4_require([_LT_PATH_CONVERSION_FUNCTIONS])dnl
+m4_require([_LT_CMD_RELOAD])dnl
+m4_require([_LT_CHECK_MAGIC_METHOD])dnl
+m4_require([_LT_CHECK_SHAREDLIB_FROM_LINKLIB])dnl
+m4_require([_LT_CMD_OLD_ARCHIVE])dnl
+m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl
+m4_require([_LT_WITH_SYSROOT])dnl
+
+_LT_CONFIG_LIBTOOL_INIT([
+# See if we are running on zsh, and set the options which allow our
+# commands through without removal of \ escapes INIT.
+if test -n "\${ZSH_VERSION+set}" ; then
+ setopt NO_GLOB_SUBST
+fi
+])
+if test -n "${ZSH_VERSION+set}" ; then
+ setopt NO_GLOB_SUBST
+fi
+
+_LT_CHECK_OBJDIR
+
+m4_require([_LT_TAG_COMPILER])dnl
+
+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
+
+# Global variables:
+ofile=libtool
+can_build_shared=yes
+
+# All known linkers require a `.a' archive for static linking (except MSVC,
+# which needs '.lib').
+libext=a
+
+with_gnu_ld="$lt_cv_prog_gnu_ld"
+
+old_CC="$CC"
+old_CFLAGS="$CFLAGS"
+
+# Set sane defaults for various variables
+test -z "$CC" && CC=cc
+test -z "$LTCC" && LTCC=$CC
+test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS
+test -z "$LD" && LD=ld
+test -z "$ac_objext" && ac_objext=o
+
+_LT_CC_BASENAME([$compiler])
+
+# Only perform the check for file, if the check method requires it
+test -z "$MAGIC_CMD" && MAGIC_CMD=file
+case $deplibs_check_method in
+file_magic*)
+ if test "$file_magic_cmd" = '$MAGIC_CMD'; then
+ _LT_PATH_MAGIC
+ fi
+ ;;
+esac
+
+# Use C for the default configuration in the libtool script
+LT_SUPPORTED_TAG([CC])
+_LT_LANG_C_CONFIG
+_LT_LANG_DEFAULT_CONFIG
+_LT_CONFIG_COMMANDS
+])# _LT_SETUP
+
+
+# _LT_PREPARE_SED_QUOTE_VARS
+# --------------------------
+# Define a few sed substitution that help us do robust quoting.
+m4_defun([_LT_PREPARE_SED_QUOTE_VARS],
+[# Backslashify metacharacters that are still active within
+# double-quoted strings.
+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 delay expansion of an escaped single quote.
+delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g'
+
+# Sed substitution to avoid accidental globbing in evaled expressions
+no_glob_subst='s/\*/\\\*/g'
+])
+
+# _LT_PROG_LTMAIN
+# ---------------
+# Note that this code is called both from `configure', and `config.status'
+# now that we use AC_CONFIG_COMMANDS to generate libtool. Notably,
+# `config.status' has no value for ac_aux_dir unless we are using Automake,
+# so we pass a copy along to make sure it has a sensible value anyway.
+m4_defun([_LT_PROG_LTMAIN],
+[m4_ifdef([AC_REQUIRE_AUX_FILE], [AC_REQUIRE_AUX_FILE([ltmain.sh])])dnl
+_LT_CONFIG_LIBTOOL_INIT([ac_aux_dir='$ac_aux_dir'])
+ltmain="$ac_aux_dir/ltmain.sh"
+])# _LT_PROG_LTMAIN
+
+
+## ------------------------------------- ##
+## Accumulate code for creating libtool. ##
+## ------------------------------------- ##
+
+# So that we can recreate a full libtool script including additional
+# tags, we accumulate the chunks of code to send to AC_CONFIG_COMMANDS
+# in macros and then make a single call at the end using the `libtool'
+# label.
+
+
+# _LT_CONFIG_LIBTOOL_INIT([INIT-COMMANDS])
+# ----------------------------------------
+# Register INIT-COMMANDS to be passed to AC_CONFIG_COMMANDS later.
+m4_define([_LT_CONFIG_LIBTOOL_INIT],
+[m4_ifval([$1],
+ [m4_append([_LT_OUTPUT_LIBTOOL_INIT],
+ [$1
+])])])
+
+# Initialize.
+m4_define([_LT_OUTPUT_LIBTOOL_INIT])
+
+
+# _LT_CONFIG_LIBTOOL([COMMANDS])
+# ------------------------------
+# Register COMMANDS to be passed to AC_CONFIG_COMMANDS later.
+m4_define([_LT_CONFIG_LIBTOOL],
+[m4_ifval([$1],
+ [m4_append([_LT_OUTPUT_LIBTOOL_COMMANDS],
+ [$1
+])])])
+
+# Initialize.
+m4_define([_LT_OUTPUT_LIBTOOL_COMMANDS])
+
+
+# _LT_CONFIG_SAVE_COMMANDS([COMMANDS], [INIT_COMMANDS])
+# -----------------------------------------------------
+m4_defun([_LT_CONFIG_SAVE_COMMANDS],
+[_LT_CONFIG_LIBTOOL([$1])
+_LT_CONFIG_LIBTOOL_INIT([$2])
+])
+
+
+# _LT_FORMAT_COMMENT([COMMENT])
+# -----------------------------
+# Add leading comment marks to the start of each line, and a trailing
+# full-stop to the whole comment if one is not present already.
+m4_define([_LT_FORMAT_COMMENT],
+[m4_ifval([$1], [
+m4_bpatsubst([m4_bpatsubst([$1], [^ *], [# ])],
+ [['`$\]], [\\\&])]m4_bmatch([$1], [[!?.]$], [], [.])
+)])
+
+
+
+## ------------------------ ##
+## FIXME: Eliminate VARNAME ##
+## ------------------------ ##
+
+
+# _LT_DECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION], [IS-TAGGED?])
+# -------------------------------------------------------------------
+# CONFIGNAME is the name given to the value in the libtool script.
+# VARNAME is the (base) name used in the configure script.
+# VALUE may be 0, 1 or 2 for a computed quote escaped value based on
+# VARNAME. Any other value will be used directly.
+m4_define([_LT_DECL],
+[lt_if_append_uniq([lt_decl_varnames], [$2], [, ],
+ [lt_dict_add_subkey([lt_decl_dict], [$2], [libtool_name],
+ [m4_ifval([$1], [$1], [$2])])
+ lt_dict_add_subkey([lt_decl_dict], [$2], [value], [$3])
+ m4_ifval([$4],
+ [lt_dict_add_subkey([lt_decl_dict], [$2], [description], [$4])])
+ lt_dict_add_subkey([lt_decl_dict], [$2],
+ [tagged?], [m4_ifval([$5], [yes], [no])])])
+])
+
+
+# _LT_TAGDECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION])
+# --------------------------------------------------------
+m4_define([_LT_TAGDECL], [_LT_DECL([$1], [$2], [$3], [$4], [yes])])
+
+
+# lt_decl_tag_varnames([SEPARATOR], [VARNAME1...])
+# ------------------------------------------------
+m4_define([lt_decl_tag_varnames],
+[_lt_decl_filter([tagged?], [yes], $@)])
+
+
+# _lt_decl_filter(SUBKEY, VALUE, [SEPARATOR], [VARNAME1..])
+# ---------------------------------------------------------
+m4_define([_lt_decl_filter],
+[m4_case([$#],
+ [0], [m4_fatal([$0: too few arguments: $#])],
+ [1], [m4_fatal([$0: too few arguments: $#: $1])],
+ [2], [lt_dict_filter([lt_decl_dict], [$1], [$2], [], lt_decl_varnames)],
+ [3], [lt_dict_filter([lt_decl_dict], [$1], [$2], [$3], lt_decl_varnames)],
+ [lt_dict_filter([lt_decl_dict], $@)])[]dnl
+])
+
+
+# lt_decl_quote_varnames([SEPARATOR], [VARNAME1...])
+# --------------------------------------------------
+m4_define([lt_decl_quote_varnames],
+[_lt_decl_filter([value], [1], $@)])
+
+
+# lt_decl_dquote_varnames([SEPARATOR], [VARNAME1...])
+# ---------------------------------------------------
+m4_define([lt_decl_dquote_varnames],
+[_lt_decl_filter([value], [2], $@)])
+
+
+# lt_decl_varnames_tagged([SEPARATOR], [VARNAME1...])
+# ---------------------------------------------------
+m4_define([lt_decl_varnames_tagged],
+[m4_assert([$# <= 2])dnl
+_$0(m4_quote(m4_default([$1], [[, ]])),
+ m4_ifval([$2], [[$2]], [m4_dquote(lt_decl_tag_varnames)]),
+ m4_split(m4_normalize(m4_quote(_LT_TAGS)), [ ]))])
+m4_define([_lt_decl_varnames_tagged],
+[m4_ifval([$3], [lt_combine([$1], [$2], [_], $3)])])
+
+
+# lt_decl_all_varnames([SEPARATOR], [VARNAME1...])
+# ------------------------------------------------
+m4_define([lt_decl_all_varnames],
+[_$0(m4_quote(m4_default([$1], [[, ]])),
+ m4_if([$2], [],
+ m4_quote(lt_decl_varnames),
+ m4_quote(m4_shift($@))))[]dnl
+])
+m4_define([_lt_decl_all_varnames],
+[lt_join($@, lt_decl_varnames_tagged([$1],
+ lt_decl_tag_varnames([[, ]], m4_shift($@))))dnl
+])
+
+
+# _LT_CONFIG_STATUS_DECLARE([VARNAME])
+# ------------------------------------
+# Quote a variable value, and forward it to `config.status' so that its
+# declaration there will have the same value as in `configure'. VARNAME
+# must have a single quote delimited value for this to work.
+m4_define([_LT_CONFIG_STATUS_DECLARE],
+[$1='`$ECHO "$][$1" | $SED "$delay_single_quote_subst"`'])
+
+
+# _LT_CONFIG_STATUS_DECLARATIONS
+# ------------------------------
+# We delimit libtool config variables with single quotes, so when
+# we write them to config.status, we have to be sure to quote all
+# embedded single quotes properly. In configure, this macro expands
+# each variable declared with _LT_DECL (and _LT_TAGDECL) into:
+#
+# <var>='`$ECHO "$<var>" | $SED "$delay_single_quote_subst"`'
+m4_defun([_LT_CONFIG_STATUS_DECLARATIONS],
+[m4_foreach([_lt_var], m4_quote(lt_decl_all_varnames),
+ [m4_n([_LT_CONFIG_STATUS_DECLARE(_lt_var)])])])
+
+
+# _LT_LIBTOOL_TAGS
+# ----------------
+# Output comment and list of tags supported by the script
+m4_defun([_LT_LIBTOOL_TAGS],
+[_LT_FORMAT_COMMENT([The names of the tagged configurations supported by this script])dnl
+available_tags="_LT_TAGS"dnl
+])
+
+
+# _LT_LIBTOOL_DECLARE(VARNAME, [TAG])
+# -----------------------------------
+# Extract the dictionary values for VARNAME (optionally with TAG) and
+# expand to a commented shell variable setting:
+#
+# # Some comment about what VAR is for.
+# visible_name=$lt_internal_name
+m4_define([_LT_LIBTOOL_DECLARE],
+[_LT_FORMAT_COMMENT(m4_quote(lt_dict_fetch([lt_decl_dict], [$1],
+ [description])))[]dnl
+m4_pushdef([_libtool_name],
+ m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [libtool_name])))[]dnl
+m4_case(m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [value])),
+ [0], [_libtool_name=[$]$1],
+ [1], [_libtool_name=$lt_[]$1],
+ [2], [_libtool_name=$lt_[]$1],
+ [_libtool_name=lt_dict_fetch([lt_decl_dict], [$1], [value])])[]dnl
+m4_ifval([$2], [_$2])[]m4_popdef([_libtool_name])[]dnl
+])
+
+
+# _LT_LIBTOOL_CONFIG_VARS
+# -----------------------
+# Produce commented declarations of non-tagged libtool config variables
+# suitable for insertion in the LIBTOOL CONFIG section of the `libtool'
+# script. Tagged libtool config variables (even for the LIBTOOL CONFIG
+# section) are produced by _LT_LIBTOOL_TAG_VARS.
+m4_defun([_LT_LIBTOOL_CONFIG_VARS],
+[m4_foreach([_lt_var],
+ m4_quote(_lt_decl_filter([tagged?], [no], [], lt_decl_varnames)),
+ [m4_n([_LT_LIBTOOL_DECLARE(_lt_var)])])])
+
+
+# _LT_LIBTOOL_TAG_VARS(TAG)
+# -------------------------
+m4_define([_LT_LIBTOOL_TAG_VARS],
+[m4_foreach([_lt_var], m4_quote(lt_decl_tag_varnames),
+ [m4_n([_LT_LIBTOOL_DECLARE(_lt_var, [$1])])])])
+
+
+# _LT_TAGVAR(VARNAME, [TAGNAME])
+# ------------------------------
+m4_define([_LT_TAGVAR], [m4_ifval([$2], [$1_$2], [$1])])
+
+
+# _LT_CONFIG_COMMANDS
+# -------------------
+# Send accumulated output to $CONFIG_STATUS. Thanks to the lists of
+# variables for single and double quote escaping we saved from calls
+# to _LT_DECL, we can put quote escaped variables declarations
+# into `config.status', and then the shell code to quote escape them in
+# for loops in `config.status'. Finally, any additional code accumulated
+# from calls to _LT_CONFIG_LIBTOOL_INIT is expanded.
+m4_defun([_LT_CONFIG_COMMANDS],
+[AC_PROVIDE_IFELSE([LT_OUTPUT],
+ dnl If the libtool generation code has been placed in $CONFIG_LT,
+ dnl instead of duplicating it all over again into config.status,
+ dnl then we will have config.status run $CONFIG_LT later, so it
+ dnl needs to know what name is stored there:
+ [AC_CONFIG_COMMANDS([libtool],
+ [$SHELL $CONFIG_LT || AS_EXIT(1)], [CONFIG_LT='$CONFIG_LT'])],
+ dnl If the libtool generation code is destined for config.status,
+ dnl expand the accumulated commands and init code now:
+ [AC_CONFIG_COMMANDS([libtool],
+ [_LT_OUTPUT_LIBTOOL_COMMANDS], [_LT_OUTPUT_LIBTOOL_COMMANDS_INIT])])
+])#_LT_CONFIG_COMMANDS
+
+
+# Initialize.
+m4_define([_LT_OUTPUT_LIBTOOL_COMMANDS_INIT],
+[
+
+# The HP-UX ksh and POSIX shell print the target directory to stdout
+# if CDPATH is set.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+
+sed_quote_subst='$sed_quote_subst'
+double_quote_subst='$double_quote_subst'
+delay_variable_subst='$delay_variable_subst'
+_LT_CONFIG_STATUS_DECLARATIONS
+LTCC='$LTCC'
+LTCFLAGS='$LTCFLAGS'
+compiler='$compiler_DEFAULT'
+
+# A function that is used when there is no print builtin or printf.
+func_fallback_echo ()
+{
+ eval 'cat <<_LTECHO_EOF
+\$[]1
+_LTECHO_EOF'
+}
+
+# Quote evaled strings.
+for var in lt_decl_all_varnames([[ \
+]], lt_decl_quote_varnames); do
+ case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in
+ *[[\\\\\\\`\\"\\\$]]*)
+ eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\""
+ ;;
+ *)
+ eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\""
+ ;;
+ esac
+done
+
+# Double-quote double-evaled strings.
+for var in lt_decl_all_varnames([[ \
+]], lt_decl_dquote_varnames); do
+ case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in
+ *[[\\\\\\\`\\"\\\$]]*)
+ eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\""
+ ;;
+ *)
+ eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\""
+ ;;
+ esac
+done
+
+_LT_OUTPUT_LIBTOOL_INIT
+])
+
+# _LT_GENERATED_FILE_INIT(FILE, [COMMENT])
+# ------------------------------------
+# Generate a child script FILE with all initialization necessary to
+# reuse the environment learned by the parent script, and make the
+# file executable. If COMMENT is supplied, it is inserted after the
+# `#!' sequence but before initialization text begins. After this
+# macro, additional text can be appended to FILE to form the body of
+# the child script. The macro ends with non-zero status if the
+# file could not be fully written (such as if the disk is full).
+m4_ifdef([AS_INIT_GENERATED],
+[m4_defun([_LT_GENERATED_FILE_INIT],[AS_INIT_GENERATED($@)])],
+[m4_defun([_LT_GENERATED_FILE_INIT],
+[m4_require([AS_PREPARE])]dnl
+[m4_pushdef([AS_MESSAGE_LOG_FD])]dnl
+[lt_write_fail=0
+cat >$1 <<_ASEOF || lt_write_fail=1
+#! $SHELL
+# Generated by $as_me.
+$2
+SHELL=\${CONFIG_SHELL-$SHELL}
+export SHELL
+_ASEOF
+cat >>$1 <<\_ASEOF || lt_write_fail=1
+AS_SHELL_SANITIZE
+_AS_PREPARE
+exec AS_MESSAGE_FD>&1
+_ASEOF
+test $lt_write_fail = 0 && chmod +x $1[]dnl
+m4_popdef([AS_MESSAGE_LOG_FD])])])# _LT_GENERATED_FILE_INIT
+
+# LT_OUTPUT
+# ---------
+# This macro allows early generation of the libtool script (before
+# AC_OUTPUT is called), incase it is used in configure for compilation
+# tests.
+AC_DEFUN([LT_OUTPUT],
+[: ${CONFIG_LT=./config.lt}
+AC_MSG_NOTICE([creating $CONFIG_LT])
+_LT_GENERATED_FILE_INIT(["$CONFIG_LT"],
+[# Run this file to recreate a libtool stub with the current configuration.])
+
+cat >>"$CONFIG_LT" <<\_LTEOF
+lt_cl_silent=false
+exec AS_MESSAGE_LOG_FD>>config.log
+{
+ echo
+ AS_BOX([Running $as_me.])
+} >&AS_MESSAGE_LOG_FD
+
+lt_cl_help="\
+\`$as_me' creates a local libtool stub from the current configuration,
+for use in further configure time tests before the real libtool is
+generated.
+
+Usage: $[0] [[OPTIONS]]
+
+ -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
+
+Report bugs to <bug-libtool at gnu.org>."
+
+lt_cl_version="\
+m4_ifset([AC_PACKAGE_NAME], [AC_PACKAGE_NAME ])config.lt[]dnl
+m4_ifset([AC_PACKAGE_VERSION], [ AC_PACKAGE_VERSION])
+configured by $[0], generated by m4_PACKAGE_STRING.
+
+Copyright (C) 2011 Free Software Foundation, Inc.
+This config.lt script is free software; the Free Software Foundation
+gives unlimited permision to copy, distribute and modify it."
+
+while test $[#] != 0
+do
+ case $[1] in
+ --version | --v* | -V )
+ echo "$lt_cl_version"; exit 0 ;;
+ --help | --h* | -h )
+ echo "$lt_cl_help"; exit 0 ;;
+ --debug | --d* | -d )
+ debug=: ;;
+ --quiet | --q* | --silent | --s* | -q )
+ lt_cl_silent=: ;;
+
+ -*) AC_MSG_ERROR([unrecognized option: $[1]
+Try \`$[0] --help' for more information.]) ;;
+
+ *) AC_MSG_ERROR([unrecognized argument: $[1]
+Try \`$[0] --help' for more information.]) ;;
+ esac
+ shift
+done
+
+if $lt_cl_silent; then
+ exec AS_MESSAGE_FD>/dev/null
+fi
+_LTEOF
+
+cat >>"$CONFIG_LT" <<_LTEOF
+_LT_OUTPUT_LIBTOOL_COMMANDS_INIT
+_LTEOF
+
+cat >>"$CONFIG_LT" <<\_LTEOF
+AC_MSG_NOTICE([creating $ofile])
+_LT_OUTPUT_LIBTOOL_COMMANDS
+AS_EXIT(0)
+_LTEOF
+chmod +x "$CONFIG_LT"
+
+# configure is writing to config.log, but config.lt does its own redirection,
+# appending to config.log, which fails on DOS, as config.log is still kept
+# open by configure. Here we exec the FD to /dev/null, effectively closing
+# config.log, so it can be properly (re)opened and appended to by config.lt.
+lt_cl_success=:
+test "$silent" = yes &&
+ lt_config_lt_args="$lt_config_lt_args --quiet"
+exec AS_MESSAGE_LOG_FD>/dev/null
+$SHELL "$CONFIG_LT" $lt_config_lt_args || lt_cl_success=false
+exec AS_MESSAGE_LOG_FD>>config.log
+$lt_cl_success || AS_EXIT(1)
+])# LT_OUTPUT
+
+
+# _LT_CONFIG(TAG)
+# ---------------
+# If TAG is the built-in tag, create an initial libtool script with a
+# default configuration from the untagged config vars. Otherwise add code
+# to config.status for appending the configuration named by TAG from the
+# matching tagged config vars.
+m4_defun([_LT_CONFIG],
+[m4_require([_LT_FILEUTILS_DEFAULTS])dnl
+_LT_CONFIG_SAVE_COMMANDS([
+ m4_define([_LT_TAG], m4_if([$1], [], [C], [$1]))dnl
+ m4_if(_LT_TAG, [C], [
+ # 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
+
+ cfgfile="${ofile}T"
+ trap "$RM \"$cfgfile\"; exit 1" 1 2 15
+ $RM "$cfgfile"
+
+ cat <<_LT_EOF >> "$cfgfile"
+#! $SHELL
+
+# `$ECHO "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services.
+# Generated automatically by $as_me ($PACKAGE$TIMESTAMP) $VERSION
+# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
+# NOTE: Changes made to this file will be lost: look at ltmain.sh.
+#
+_LT_COPYING
+_LT_LIBTOOL_TAGS
+
+# ### BEGIN LIBTOOL CONFIG
+_LT_LIBTOOL_CONFIG_VARS
+_LT_LIBTOOL_TAG_VARS
+# ### END LIBTOOL CONFIG
+
+_LT_EOF
+
+ case $host_os in
+ aix3*)
+ cat <<\_LT_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
+_LT_EOF
+ ;;
+ esac
+
+ _LT_PROG_LTMAIN
+
+ # 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)
+
+ _LT_PROG_REPLACE_SHELLFNS
+
+ mv -f "$cfgfile" "$ofile" ||
+ (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile")
+ chmod +x "$ofile"
+],
+[cat <<_LT_EOF >> "$ofile"
+
+dnl Unfortunately we have to use $1 here, since _LT_TAG is not expanded
+dnl in a comment (ie after a #).
+# ### BEGIN LIBTOOL TAG CONFIG: $1
+_LT_LIBTOOL_TAG_VARS(_LT_TAG)
+# ### END LIBTOOL TAG CONFIG: $1
+_LT_EOF
+])dnl /m4_if
+],
+[m4_if([$1], [], [
+ PACKAGE='$PACKAGE'
+ VERSION='$VERSION'
+ TIMESTAMP='$TIMESTAMP'
+ RM='$RM'
+ ofile='$ofile'], [])
+])dnl /_LT_CONFIG_SAVE_COMMANDS
+])# _LT_CONFIG
+
+
+# LT_SUPPORTED_TAG(TAG)
+# ---------------------
+# Trace this macro to discover what tags are supported by the libtool
+# --tag option, using:
+# autoconf --trace 'LT_SUPPORTED_TAG:$1'
+AC_DEFUN([LT_SUPPORTED_TAG], [])
+
+
+# C support is built-in for now
+m4_define([_LT_LANG_C_enabled], [])
+m4_define([_LT_TAGS], [])
+
+
+# LT_LANG(LANG)
+# -------------
+# Enable libtool support for the given language if not already enabled.
+AC_DEFUN([LT_LANG],
+[AC_BEFORE([$0], [LT_OUTPUT])dnl
+m4_case([$1],
+ [C], [_LT_LANG(C)],
+ [C++], [_LT_LANG(CXX)],
+ [Go], [_LT_LANG(GO)],
+ [Java], [_LT_LANG(GCJ)],
+ [Fortran 77], [_LT_LANG(F77)],
+ [Fortran], [_LT_LANG(FC)],
+ [Windows Resource], [_LT_LANG(RC)],
+ [m4_ifdef([_LT_LANG_]$1[_CONFIG],
+ [_LT_LANG($1)],
+ [m4_fatal([$0: unsupported language: "$1"])])])dnl
+])# LT_LANG
+
+
+# _LT_LANG(LANGNAME)
+# ------------------
+m4_defun([_LT_LANG],
+[m4_ifdef([_LT_LANG_]$1[_enabled], [],
+ [LT_SUPPORTED_TAG([$1])dnl
+ m4_append([_LT_TAGS], [$1 ])dnl
+ m4_define([_LT_LANG_]$1[_enabled], [])dnl
+ _LT_LANG_$1_CONFIG($1)])dnl
+])# _LT_LANG
+
+
+m4_ifndef([AC_PROG_GO], [
+############################################################
+# NOTE: This macro has been submitted for inclusion into #
+# GNU Autoconf as AC_PROG_GO. When it is available in #
+# a released version of Autoconf we should remove this #
+# macro and use it instead. #
+############################################################
+m4_defun([AC_PROG_GO],
+[AC_LANG_PUSH(Go)dnl
+AC_ARG_VAR([GOC], [Go compiler command])dnl
+AC_ARG_VAR([GOFLAGS], [Go compiler flags])dnl
+_AC_ARG_VAR_LDFLAGS()dnl
+AC_CHECK_TOOL(GOC, gccgo)
+if test -z "$GOC"; then
+ if test -n "$ac_tool_prefix"; then
+ AC_CHECK_PROG(GOC, [${ac_tool_prefix}gccgo], [${ac_tool_prefix}gccgo])
+ fi
+fi
+if test -z "$GOC"; then
+ AC_CHECK_PROG(GOC, gccgo, gccgo, false)
+fi
+])#m4_defun
+])#m4_ifndef
+
+
+# _LT_LANG_DEFAULT_CONFIG
+# -----------------------
+m4_defun([_LT_LANG_DEFAULT_CONFIG],
+[AC_PROVIDE_IFELSE([AC_PROG_CXX],
+ [LT_LANG(CXX)],
+ [m4_define([AC_PROG_CXX], defn([AC_PROG_CXX])[LT_LANG(CXX)])])
+
+AC_PROVIDE_IFELSE([AC_PROG_F77],
+ [LT_LANG(F77)],
+ [m4_define([AC_PROG_F77], defn([AC_PROG_F77])[LT_LANG(F77)])])
+
+AC_PROVIDE_IFELSE([AC_PROG_FC],
+ [LT_LANG(FC)],
+ [m4_define([AC_PROG_FC], defn([AC_PROG_FC])[LT_LANG(FC)])])
+
+dnl The call to [A][M_PROG_GCJ] is quoted like that to stop aclocal
+dnl pulling things in needlessly.
+AC_PROVIDE_IFELSE([AC_PROG_GCJ],
+ [LT_LANG(GCJ)],
+ [AC_PROVIDE_IFELSE([A][M_PROG_GCJ],
+ [LT_LANG(GCJ)],
+ [AC_PROVIDE_IFELSE([LT_PROG_GCJ],
+ [LT_LANG(GCJ)],
+ [m4_ifdef([AC_PROG_GCJ],
+ [m4_define([AC_PROG_GCJ], defn([AC_PROG_GCJ])[LT_LANG(GCJ)])])
+ m4_ifdef([A][M_PROG_GCJ],
+ [m4_define([A][M_PROG_GCJ], defn([A][M_PROG_GCJ])[LT_LANG(GCJ)])])
+ m4_ifdef([LT_PROG_GCJ],
+ [m4_define([LT_PROG_GCJ], defn([LT_PROG_GCJ])[LT_LANG(GCJ)])])])])])
+
+AC_PROVIDE_IFELSE([AC_PROG_GO],
+ [LT_LANG(GO)],
+ [m4_define([AC_PROG_GO], defn([AC_PROG_GO])[LT_LANG(GO)])])
+
+AC_PROVIDE_IFELSE([LT_PROG_RC],
+ [LT_LANG(RC)],
+ [m4_define([LT_PROG_RC], defn([LT_PROG_RC])[LT_LANG(RC)])])
+])# _LT_LANG_DEFAULT_CONFIG
+
+# Obsolete macros:
+AU_DEFUN([AC_LIBTOOL_CXX], [LT_LANG(C++)])
+AU_DEFUN([AC_LIBTOOL_F77], [LT_LANG(Fortran 77)])
+AU_DEFUN([AC_LIBTOOL_FC], [LT_LANG(Fortran)])
+AU_DEFUN([AC_LIBTOOL_GCJ], [LT_LANG(Java)])
+AU_DEFUN([AC_LIBTOOL_RC], [LT_LANG(Windows Resource)])
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AC_LIBTOOL_CXX], [])
+dnl AC_DEFUN([AC_LIBTOOL_F77], [])
+dnl AC_DEFUN([AC_LIBTOOL_FC], [])
+dnl AC_DEFUN([AC_LIBTOOL_GCJ], [])
+dnl AC_DEFUN([AC_LIBTOOL_RC], [])
+
+
+# _LT_TAG_COMPILER
+# ----------------
+m4_defun([_LT_TAG_COMPILER],
+[AC_REQUIRE([AC_PROG_CC])dnl
+
+_LT_DECL([LTCC], [CC], [1], [A C compiler])dnl
+_LT_DECL([LTCFLAGS], [CFLAGS], [1], [LTCC compiler flags])dnl
+_LT_TAGDECL([CC], [compiler], [1], [A language specific compiler])dnl
+_LT_TAGDECL([with_gcc], [GCC], [0], [Is the compiler the GNU compiler?])dnl
+
+# If no C compiler was specified, use CC.
+LTCC=${LTCC-"$CC"}
+
+# If no C compiler flags were specified, use CFLAGS.
+LTCFLAGS=${LTCFLAGS-"$CFLAGS"}
+
+# Allow CC to be a program name with arguments.
+compiler=$CC
+])# _LT_TAG_COMPILER
+
+
+# _LT_COMPILER_BOILERPLATE
+# ------------------------
+# Check for compiler boilerplate output or warnings with
+# the simple compiler test code.
+m4_defun([_LT_COMPILER_BOILERPLATE],
+[m4_require([_LT_DECL_SED])dnl
+ac_outfile=conftest.$ac_objext
+echo "$lt_simple_compile_test_code" >conftest.$ac_ext
+eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
+_lt_compiler_boilerplate=`cat conftest.err`
+$RM conftest*
+])# _LT_COMPILER_BOILERPLATE
+
+
+# _LT_LINKER_BOILERPLATE
+# ----------------------
+# Check for linker boilerplate output or warnings with
+# the simple link test code.
+m4_defun([_LT_LINKER_BOILERPLATE],
+[m4_require([_LT_DECL_SED])dnl
+ac_outfile=conftest.$ac_objext
+echo "$lt_simple_link_test_code" >conftest.$ac_ext
+eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
+_lt_linker_boilerplate=`cat conftest.err`
+$RM -r conftest*
+])# _LT_LINKER_BOILERPLATE
+
+# _LT_REQUIRED_DARWIN_CHECKS
+# -------------------------
+m4_defun_once([_LT_REQUIRED_DARWIN_CHECKS],[
+ case $host_os in
+ rhapsody* | darwin*)
+ AC_CHECK_TOOL([DSYMUTIL], [dsymutil], [:])
+ AC_CHECK_TOOL([NMEDIT], [nmedit], [:])
+ AC_CHECK_TOOL([LIPO], [lipo], [:])
+ AC_CHECK_TOOL([OTOOL], [otool], [:])
+ AC_CHECK_TOOL([OTOOL64], [otool64], [:])
+ _LT_DECL([], [DSYMUTIL], [1],
+ [Tool to manipulate archived DWARF debug symbol files on Mac OS X])
+ _LT_DECL([], [NMEDIT], [1],
+ [Tool to change global to local symbols on Mac OS X])
+ _LT_DECL([], [LIPO], [1],
+ [Tool to manipulate fat objects and archives on Mac OS X])
+ _LT_DECL([], [OTOOL], [1],
+ [ldd/readelf like tool for Mach-O binaries on Mac OS X])
+ _LT_DECL([], [OTOOL64], [1],
+ [ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4])
+
+ AC_CACHE_CHECK([for -single_module linker flag],[lt_cv_apple_cc_single_mod],
+ [lt_cv_apple_cc_single_mod=no
+ if test -z "${LT_MULTI_MODULE}"; then
+ # By default we will add the -single_module flag. You can override
+ # by either setting the environment variable LT_MULTI_MODULE
+ # non-empty at configure time, or by adding -multi_module to the
+ # link flags.
+ rm -rf libconftest.dylib*
+ echo "int foo(void){return 1;}" > conftest.c
+ echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \
+-dynamiclib -Wl,-single_module conftest.c" >&AS_MESSAGE_LOG_FD
+ $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \
+ -dynamiclib -Wl,-single_module conftest.c 2>conftest.err
+ _lt_result=$?
+ # If there is a non-empty error log, and "single_module"
+ # appears in it, assume the flag caused a linker warning
+ if test -s conftest.err && $GREP single_module conftest.err; then
+ cat conftest.err >&AS_MESSAGE_LOG_FD
+ # Otherwise, if the output was created with a 0 exit code from
+ # the compiler, it worked.
+ elif test -f libconftest.dylib && test $_lt_result -eq 0; then
+ lt_cv_apple_cc_single_mod=yes
+ else
+ cat conftest.err >&AS_MESSAGE_LOG_FD
+ fi
+ rm -rf libconftest.dylib*
+ rm -f conftest.*
+ fi])
+
+ AC_CACHE_CHECK([for -exported_symbols_list linker flag],
+ [lt_cv_ld_exported_symbols_list],
+ [lt_cv_ld_exported_symbols_list=no
+ save_LDFLAGS=$LDFLAGS
+ echo "_main" > conftest.sym
+ LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym"
+ AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])],
+ [lt_cv_ld_exported_symbols_list=yes],
+ [lt_cv_ld_exported_symbols_list=no])
+ LDFLAGS="$save_LDFLAGS"
+ ])
+
+ AC_CACHE_CHECK([for -force_load linker flag],[lt_cv_ld_force_load],
+ [lt_cv_ld_force_load=no
+ cat > conftest.c << _LT_EOF
+int forced_loaded() { return 2;}
+_LT_EOF
+ echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&AS_MESSAGE_LOG_FD
+ $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&AS_MESSAGE_LOG_FD
+ echo "$AR cru libconftest.a conftest.o" >&AS_MESSAGE_LOG_FD
+ $AR cru libconftest.a conftest.o 2>&AS_MESSAGE_LOG_FD
+ echo "$RANLIB libconftest.a" >&AS_MESSAGE_LOG_FD
+ $RANLIB libconftest.a 2>&AS_MESSAGE_LOG_FD
+ cat > conftest.c << _LT_EOF
+int main() { return 0;}
+_LT_EOF
+ echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&AS_MESSAGE_LOG_FD
+ $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err
+ _lt_result=$?
+ if test -s conftest.err && $GREP force_load conftest.err; then
+ cat conftest.err >&AS_MESSAGE_LOG_FD
+ elif test -f conftest && test $_lt_result -eq 0 && $GREP forced_load conftest >/dev/null 2>&1 ; then
+ lt_cv_ld_force_load=yes
+ else
+ cat conftest.err >&AS_MESSAGE_LOG_FD
+ fi
+ rm -f conftest.err libconftest.a conftest conftest.c
+ rm -rf conftest.dSYM
+ ])
+ case $host_os in
+ rhapsody* | darwin1.[[012]])
+ _lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;;
+ darwin1.*)
+ _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;;
+ darwin*) # darwin 5.x on
+ # if running on 10.5 or later, the deployment target defaults
+ # to the OS version, if on x86, and 10.4, the deployment
+ # target defaults to 10.4. Don't you love it?
+ case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in
+ 10.0,*86*-darwin8*|10.0,*-darwin[[91]]*)
+ _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;;
+ 10.[[012]]*)
+ _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;;
+ 10.*)
+ _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;;
+ esac
+ ;;
+ esac
+ if test "$lt_cv_apple_cc_single_mod" = "yes"; then
+ _lt_dar_single_mod='$single_module'
+ fi
+ if test "$lt_cv_ld_exported_symbols_list" = "yes"; then
+ _lt_dar_export_syms=' ${wl}-exported_symbols_list,$output_objdir/${libname}-symbols.expsym'
+ else
+ _lt_dar_export_syms='~$NMEDIT -s $output_objdir/${libname}-symbols.expsym ${lib}'
+ fi
+ if test "$DSYMUTIL" != ":" && test "$lt_cv_ld_force_load" = "no"; then
+ _lt_dsymutil='~$DSYMUTIL $lib || :'
+ else
+ _lt_dsymutil=
+ fi
+ ;;
+ esac
+])
+
+
+# _LT_DARWIN_LINKER_FEATURES([TAG])
+# ---------------------------------
+# Checks for linker and compiler features on darwin
+m4_defun([_LT_DARWIN_LINKER_FEATURES],
+[
+ m4_require([_LT_REQUIRED_DARWIN_CHECKS])
+ _LT_TAGVAR(archive_cmds_need_lc, $1)=no
+ _LT_TAGVAR(hardcode_direct, $1)=no
+ _LT_TAGVAR(hardcode_automatic, $1)=yes
+ _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported
+ if test "$lt_cv_ld_force_load" = "yes"; then
+ _LT_TAGVAR(whole_archive_flag_spec, $1)='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience ${wl}-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`'
+ m4_case([$1], [F77], [_LT_TAGVAR(compiler_needs_object, $1)=yes],
+ [FC], [_LT_TAGVAR(compiler_needs_object, $1)=yes])
+ else
+ _LT_TAGVAR(whole_archive_flag_spec, $1)=''
+ fi
+ _LT_TAGVAR(link_all_deplibs, $1)=yes
+ _LT_TAGVAR(allow_undefined_flag, $1)="$_lt_dar_allow_undefined"
+ case $cc_basename in
+ ifort*) _lt_dar_can_shared=yes ;;
+ *) _lt_dar_can_shared=$GCC ;;
+ esac
+ if test "$_lt_dar_can_shared" = "yes"; then
+ output_verbose_link_cmd=func_echo_all
+ _LT_TAGVAR(archive_cmds, $1)="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}"
+ _LT_TAGVAR(module_cmds, $1)="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}"
+ _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}"
+ _LT_TAGVAR(module_expsym_cmds, $1)="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}"
+ m4_if([$1], [CXX],
+[ if test "$lt_cv_apple_cc_single_mod" != "yes"; then
+ _LT_TAGVAR(archive_cmds, $1)="\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dsymutil}"
+ _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dar_export_syms}${_lt_dsymutil}"
+ fi
+],[])
+ else
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ fi
+])
+
+# _LT_SYS_MODULE_PATH_AIX([TAGNAME])
+# ----------------------------------
+# 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.
+# Store the results from the different compilers for each TAGNAME.
+# Allow to override them for all tags through lt_cv_aix_libpath.
+m4_defun([_LT_SYS_MODULE_PATH_AIX],
+[m4_require([_LT_DECL_SED])dnl
+if test "${lt_cv_aix_libpath+set}" = set; then
+ aix_libpath=$lt_cv_aix_libpath
+else
+ AC_CACHE_VAL([_LT_TAGVAR([lt_cv_aix_libpath_], [$1])],
+ [AC_LINK_IFELSE([AC_LANG_PROGRAM],[
+ lt_aix_libpath_sed='[
+ /Import File Strings/,/^$/ {
+ /^0/ {
+ s/^0 *\([^ ]*\) *$/\1/
+ p
+ }
+ }]'
+ _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+ # Check for a 64-bit object if we didn't find anything.
+ if test -z "$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])"; then
+ _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+ fi],[])
+ if test -z "$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])"; then
+ _LT_TAGVAR([lt_cv_aix_libpath_], [$1])="/usr/lib:/lib"
+ fi
+ ])
+ aix_libpath=$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])
+fi
+])# _LT_SYS_MODULE_PATH_AIX
+
+
+# _LT_SHELL_INIT(ARG)
+# -------------------
+m4_define([_LT_SHELL_INIT],
+[m4_divert_text([M4SH-INIT], [$1
+])])# _LT_SHELL_INIT
+
+
+
+# _LT_PROG_ECHO_BACKSLASH
+# -----------------------
+# Find how we can fake an echo command that does not interpret backslash.
+# In particular, with Autoconf 2.60 or later we add some code to the start
+# of the generated configure script which will find a shell with a builtin
+# printf (which we can use as an echo command).
+m4_defun([_LT_PROG_ECHO_BACKSLASH],
+[ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
+ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO
+ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO
+
+AC_MSG_CHECKING([how to print strings])
+# Test print first, because it will be a builtin if present.
+if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \
+ test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then
+ ECHO='print -r --'
+elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then
+ ECHO='printf %s\n'
+else
+ # Use this function as a fallback that always works.
+ func_fallback_echo ()
+ {
+ eval 'cat <<_LTECHO_EOF
+$[]1
+_LTECHO_EOF'
+ }
+ ECHO='func_fallback_echo'
+fi
+
+# func_echo_all arg...
+# Invoke $ECHO with all args, space-separated.
+func_echo_all ()
+{
+ $ECHO "$*"
+}
+
+case "$ECHO" in
+ printf*) AC_MSG_RESULT([printf]) ;;
+ print*) AC_MSG_RESULT([print -r]) ;;
+ *) AC_MSG_RESULT([cat]) ;;
+esac
+
+m4_ifdef([_AS_DETECT_SUGGESTED],
+[_AS_DETECT_SUGGESTED([
+ test -n "${ZSH_VERSION+set}${BASH_VERSION+set}" || (
+ ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
+ ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO
+ ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO
+ PATH=/empty FPATH=/empty; export PATH FPATH
+ test "X`printf %s $ECHO`" = "X$ECHO" \
+ || test "X`print -r -- $ECHO`" = "X$ECHO" )])])
+
+_LT_DECL([], [SHELL], [1], [Shell to use when invoking shell scripts])
+_LT_DECL([], [ECHO], [1], [An echo program that protects backslashes])
+])# _LT_PROG_ECHO_BACKSLASH
+
+
+# _LT_WITH_SYSROOT
+# ----------------
+AC_DEFUN([_LT_WITH_SYSROOT],
+[AC_MSG_CHECKING([for sysroot])
+AC_ARG_WITH([sysroot],
+[ --with-sysroot[=DIR] Search for dependent libraries within DIR
+ (or the compiler's sysroot if not specified).],
+[], [with_sysroot=no])
+
+dnl lt_sysroot will always be passed unquoted. We quote it here
+dnl in case the user passed a directory name.
+lt_sysroot=
+case ${with_sysroot} in #(
+ yes)
+ if test "$GCC" = yes; then
+ lt_sysroot=`$CC --print-sysroot 2>/dev/null`
+ fi
+ ;; #(
+ /*)
+ lt_sysroot=`echo "$with_sysroot" | sed -e "$sed_quote_subst"`
+ ;; #(
+ no|'')
+ ;; #(
+ *)
+ AC_MSG_RESULT([${with_sysroot}])
+ AC_MSG_ERROR([The sysroot must be an absolute path.])
+ ;;
+esac
+
+ AC_MSG_RESULT([${lt_sysroot:-no}])
+_LT_DECL([], [lt_sysroot], [0], [The root where to search for ]dnl
+[dependent libraries, and in which our libraries should be installed.])])
+
+# _LT_ENABLE_LOCK
+# ---------------
+m4_defun([_LT_ENABLE_LOCK],
+[AC_ARG_ENABLE([libtool-lock],
+ [AS_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 '$LINENO' "configure"' > conftest.$ac_ext
+ if AC_TRY_EVAL(ac_compile); then
+ if test "$lt_cv_prog_gnu_ld" = yes; then
+ case `/usr/bin/file conftest.$ac_objext` in
+ *32-bit*)
+ LD="${LD-ld} -melf32bsmip"
+ ;;
+ *N32*)
+ LD="${LD-ld} -melf32bmipn32"
+ ;;
+ *64-bit*)
+ LD="${LD-ld} -melf64bmip"
+ ;;
+ esac
+ else
+ case `/usr/bin/file conftest.$ac_objext` in
+ *32-bit*)
+ LD="${LD-ld} -32"
+ ;;
+ *N32*)
+ LD="${LD-ld} -n32"
+ ;;
+ *64-bit*)
+ LD="${LD-ld} -64"
+ ;;
+ esac
+ fi
+ fi
+ rm -rf conftest*
+ ;;
+
+x86_64-*kfreebsd*-gnu|x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*| \
+s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
+ # Find out which ABI we are using.
+ echo 'int i;' > conftest.$ac_ext
+ if AC_TRY_EVAL(ac_compile); then
+ case `/usr/bin/file conftest.o` in
+ *32-bit*)
+ case $host in
+ x86_64-*kfreebsd*-gnu)
+ LD="${LD-ld} -m elf_i386_fbsd"
+ ;;
+ x86_64-*linux*)
+ LD="${LD-ld} -m elf_i386"
+ ;;
+ ppc64-*linux*|powerpc64-*linux*)
+ LD="${LD-ld} -m elf32ppclinux"
+ ;;
+ s390x-*linux*)
+ LD="${LD-ld} -m elf_s390"
+ ;;
+ sparc64-*linux*)
+ LD="${LD-ld} -m elf32_sparc"
+ ;;
+ esac
+ ;;
+ *64-bit*)
+ case $host in
+ x86_64-*kfreebsd*-gnu)
+ LD="${LD-ld} -m elf_x86_64_fbsd"
+ ;;
+ x86_64-*linux*)
+ LD="${LD-ld} -m elf_x86_64"
+ ;;
+ ppc*-*linux*|powerpc*-*linux*)
+ LD="${LD-ld} -m elf64ppc"
+ ;;
+ s390*-*linux*|s390*-*tpf*)
+ 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_LINK_IFELSE([AC_LANG_PROGRAM([[]],[[]])],[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
+ ;;
+*-*solaris*)
+ # Find out which ABI we are using.
+ echo 'int i;' > conftest.$ac_ext
+ if AC_TRY_EVAL(ac_compile); then
+ case `/usr/bin/file conftest.o` in
+ *64-bit*)
+ case $lt_cv_prog_gnu_ld in
+ yes*)
+ case $host in
+ i?86-*-solaris*)
+ LD="${LD-ld} -m elf_x86_64"
+ ;;
+ sparc*-*-solaris*)
+ LD="${LD-ld} -m elf64_sparc"
+ ;;
+ esac
+ # GNU ld 2.21 introduced _sol2 emulations. Use them if available.
+ if ${LD-ld} -V | grep _sol2 >/dev/null 2>&1; then
+ LD="${LD-ld}_sol2"
+ fi
+ ;;
+ *)
+ if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then
+ LD="${LD-ld} -64"
+ fi
+ ;;
+ esac
+ ;;
+ esac
+ fi
+ rm -rf conftest*
+ ;;
+esac
+
+need_locks="$enable_libtool_lock"
+])# _LT_ENABLE_LOCK
+
+
+# _LT_PROG_AR
+# -----------
+m4_defun([_LT_PROG_AR],
+[AC_CHECK_TOOLS(AR, [ar], false)
+: ${AR=ar}
+: ${AR_FLAGS=cru}
+_LT_DECL([], [AR], [1], [The archiver])
+_LT_DECL([], [AR_FLAGS], [1], [Flags to create an archive])
+
+AC_CACHE_CHECK([for archiver @FILE support], [lt_cv_ar_at_file],
+ [lt_cv_ar_at_file=no
+ AC_COMPILE_IFELSE([AC_LANG_PROGRAM],
+ [echo conftest.$ac_objext > conftest.lst
+ lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&AS_MESSAGE_LOG_FD'
+ AC_TRY_EVAL([lt_ar_try])
+ if test "$ac_status" -eq 0; then
+ # Ensure the archiver fails upon bogus file names.
+ rm -f conftest.$ac_objext libconftest.a
+ AC_TRY_EVAL([lt_ar_try])
+ if test "$ac_status" -ne 0; then
+ lt_cv_ar_at_file=@
+ fi
+ fi
+ rm -f conftest.* libconftest.a
+ ])
+ ])
+
+if test "x$lt_cv_ar_at_file" = xno; then
+ archiver_list_spec=
+else
+ archiver_list_spec=$lt_cv_ar_at_file
+fi
+_LT_DECL([], [archiver_list_spec], [1],
+ [How to feed a file listing to the archiver])
+])# _LT_PROG_AR
+
+
+# _LT_CMD_OLD_ARCHIVE
+# -------------------
+m4_defun([_LT_CMD_OLD_ARCHIVE],
+[_LT_PROG_AR
+
+AC_CHECK_TOOL(STRIP, strip, :)
+test -z "$STRIP" && STRIP=:
+_LT_DECL([], [STRIP], [1], [A symbol stripping program])
+
+AC_CHECK_TOOL(RANLIB, ranlib, :)
+test -z "$RANLIB" && RANLIB=:
+_LT_DECL([], [RANLIB], [1],
+ [Commands used to install an old-style archive])
+
+# Determine commands to create old-style static archives.
+old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs'
+old_postinstall_cmds='chmod 644 $oldlib'
+old_postuninstall_cmds=
+
+if test -n "$RANLIB"; then
+ case $host_os in
+ openbsd*)
+ old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$tool_oldlib"
+ ;;
+ *)
+ old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$tool_oldlib"
+ ;;
+ esac
+ old_archive_cmds="$old_archive_cmds~\$RANLIB \$tool_oldlib"
+fi
+
+case $host_os in
+ darwin*)
+ lock_old_archive_extraction=yes ;;
+ *)
+ lock_old_archive_extraction=no ;;
+esac
+_LT_DECL([], [old_postinstall_cmds], [2])
+_LT_DECL([], [old_postuninstall_cmds], [2])
+_LT_TAGDECL([], [old_archive_cmds], [2],
+ [Commands used to build an old-style archive])
+_LT_DECL([], [lock_old_archive_extraction], [0],
+ [Whether to use a lock for old archive extraction])
+])# _LT_CMD_OLD_ARCHIVE
+
+
+# _LT_COMPILER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS,
+# [OUTPUT-FILE], [ACTION-SUCCESS], [ACTION-FAILURE])
+# ----------------------------------------------------------------
+# Check whether the given compiler option works
+AC_DEFUN([_LT_COMPILER_OPTION],
+[m4_require([_LT_FILEUTILS_DEFAULTS])dnl
+m4_require([_LT_DECL_SED])dnl
+AC_CACHE_CHECK([$1], [$2],
+ [$2=no
+ m4_if([$4], , [ac_outfile=conftest.$ac_objext], [ac_outfile=$4])
+ echo "$lt_simple_compile_test_code" > conftest.$ac_ext
+ lt_compiler_flag="$3"
+ # Insert the option either (1) after the last *FLAGS variable, or
+ # (2) before a word containing "conftest.", or (3) at the end.
+ # Note that $ac_compile itself does not contain backslashes and begins
+ # with a dollar sign (not a hyphen), so the echo should work correctly.
+ # The option is referenced via a variable to avoid confusing sed.
+ lt_compile=`echo "$ac_compile" | $SED \
+ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
+ -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \
+ -e 's:$: $lt_compiler_flag:'`
+ (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&AS_MESSAGE_LOG_FD)
+ (eval "$lt_compile" 2>conftest.err)
+ ac_status=$?
+ cat conftest.err >&AS_MESSAGE_LOG_FD
+ echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD
+ if (exit $ac_status) && test -s "$ac_outfile"; then
+ # The compiler can only warn and ignore the option if not recognized
+ # So say no if there are warnings other than the usual output.
+ $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp
+ $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+ if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
+ $2=yes
+ fi
+ fi
+ $RM conftest*
+])
+
+if test x"[$]$2" = xyes; then
+ m4_if([$5], , :, [$5])
+else
+ m4_if([$6], , :, [$6])
+fi
+])# _LT_COMPILER_OPTION
+
+# Old name:
+AU_ALIAS([AC_LIBTOOL_COMPILER_OPTION], [_LT_COMPILER_OPTION])
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AC_LIBTOOL_COMPILER_OPTION], [])
+
+
+# _LT_LINKER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS,
+# [ACTION-SUCCESS], [ACTION-FAILURE])
+# ----------------------------------------------------
+# Check whether the given linker option works
+AC_DEFUN([_LT_LINKER_OPTION],
+[m4_require([_LT_FILEUTILS_DEFAULTS])dnl
+m4_require([_LT_DECL_SED])dnl
+AC_CACHE_CHECK([$1], [$2],
+ [$2=no
+ save_LDFLAGS="$LDFLAGS"
+ LDFLAGS="$LDFLAGS $3"
+ echo "$lt_simple_link_test_code" > conftest.$ac_ext
+ if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
+ # The linker can only warn and ignore the option if not recognized
+ # So say no if there are warnings
+ if test -s conftest.err; then
+ # Append any errors to the config.log.
+ cat conftest.err 1>&AS_MESSAGE_LOG_FD
+ $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp
+ $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+ if diff conftest.exp conftest.er2 >/dev/null; then
+ $2=yes
+ fi
+ else
+ $2=yes
+ fi
+ fi
+ $RM -r conftest*
+ LDFLAGS="$save_LDFLAGS"
+])
+
+if test x"[$]$2" = xyes; then
+ m4_if([$4], , :, [$4])
+else
+ m4_if([$5], , :, [$5])
+fi
+])# _LT_LINKER_OPTION
+
+# Old name:
+AU_ALIAS([AC_LIBTOOL_LINKER_OPTION], [_LT_LINKER_OPTION])
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AC_LIBTOOL_LINKER_OPTION], [])
+
+
+# LT_CMD_MAX_LEN
+#---------------
+AC_DEFUN([LT_CMD_MAX_LEN],
+[AC_REQUIRE([AC_CANONICAL_HOST])dnl
+# find the maximum length of command line arguments
+AC_MSG_CHECKING([the maximum length of command line arguments])
+AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl
+ i=0
+ teststring="ABCD"
+
+ case $build_os in
+ msdosdjgpp*)
+ # On DJGPP, this test can blow up pretty badly due to problems in libc
+ # (any single argument exceeding 2000 bytes causes a buffer overrun
+ # during glob expansion). Even if it were fixed, the result of this
+ # check would be larger than it should be.
+ lt_cv_sys_max_cmd_len=12288; # 12K is about right
+ ;;
+
+ gnu*)
+ # Under GNU Hurd, this test is not required because there is
+ # no limit to the length of command line arguments.
+ # Libtool will interpret -1 as no limit whatsoever
+ lt_cv_sys_max_cmd_len=-1;
+ ;;
+
+ cygwin* | mingw* | cegcc*)
+ # 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;
+ ;;
+
+ mint*)
+ # On MiNT this can take a long time and run out of memory.
+ lt_cv_sys_max_cmd_len=8192;
+ ;;
+
+ amigaos*)
+ # On AmigaOS with pdksh, this test takes hours, literally.
+ # So we just punt and use a minimum line length of 8192.
+ lt_cv_sys_max_cmd_len=8192;
+ ;;
+
+ netbsd* | freebsd* | openbsd* | darwin* | dragonfly*)
+ # This has been around since 386BSD, at least. Likely further.
+ if test -x /sbin/sysctl; then
+ lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax`
+ elif test -x /usr/sbin/sysctl; then
+ lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax`
+ else
+ lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs
+ fi
+ # And add a safety zone
+ lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4`
+ lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3`
+ ;;
+
+ interix*)
+ # We know the value 262144 and hardcode it with a safety zone (like BSD)
+ lt_cv_sys_max_cmd_len=196608
+ ;;
+
+ os2*)
+ # The test takes a long time on OS/2.
+ lt_cv_sys_max_cmd_len=8192
+ ;;
+
+ osf*)
+ # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure
+ # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not
+ # nice to cause kernel panics so lets avoid the loop below.
+ # First set a reasonable default.
+ lt_cv_sys_max_cmd_len=16384
+ #
+ if test -x /sbin/sysconfig; then
+ case `/sbin/sysconfig -q proc exec_disable_arg_limit` in
+ *1*) lt_cv_sys_max_cmd_len=-1 ;;
+ esac
+ fi
+ ;;
+ sco3.2v5*)
+ lt_cv_sys_max_cmd_len=102400
+ ;;
+ sysv5* | sco5v6* | sysv4.2uw2*)
+ kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null`
+ if test -n "$kargmax"; then
+ lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[[ ]]//'`
+ else
+ lt_cv_sys_max_cmd_len=32768
+ fi
+ ;;
+ *)
+ lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null`
+ if test -n "$lt_cv_sys_max_cmd_len"; then
+ lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4`
+ lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3`
+ else
+ # Make teststring a little bigger before we do anything with it.
+ # a 1K string should be a reasonable start.
+ for i in 1 2 3 4 5 6 7 8 ; do
+ teststring=$teststring$teststring
+ done
+ SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}}
+ # 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"`env echo "$teststring$teststring" 2>/dev/null` \
+ = "X$teststring$teststring"; } >/dev/null 2>&1 &&
+ test $i != 17 # 1/2 MB should be enough
+ do
+ i=`expr $i + 1`
+ teststring=$teststring$teststring
+ done
+ # Only check the string length outside the loop.
+ lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1`
+ teststring=
+ # Add a significant safety factor because C++ compilers can tack on
+ # massive amounts of additional arguments before passing them to the
+ # linker. It appears as though 1/2 is a usable value.
+ lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2`
+ fi
+ ;;
+ esac
+])
+if test -n $lt_cv_sys_max_cmd_len ; then
+ AC_MSG_RESULT($lt_cv_sys_max_cmd_len)
+else
+ AC_MSG_RESULT(none)
+fi
+max_cmd_len=$lt_cv_sys_max_cmd_len
+_LT_DECL([], [max_cmd_len], [0],
+ [What is the maximum length of a command?])
+])# LT_CMD_MAX_LEN
+
+# Old name:
+AU_ALIAS([AC_LIBTOOL_SYS_MAX_CMD_LEN], [LT_CMD_MAX_LEN])
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AC_LIBTOOL_SYS_MAX_CMD_LEN], [])
+
+
+# _LT_HEADER_DLFCN
+# ----------------
+m4_defun([_LT_HEADER_DLFCN],
+[AC_CHECK_HEADERS([dlfcn.h], [], [], [AC_INCLUDES_DEFAULT])dnl
+])# _LT_HEADER_DLFCN
+
+
+# _LT_TRY_DLOPEN_SELF (ACTION-IF-TRUE, ACTION-IF-TRUE-W-USCORE,
+# ACTION-IF-FALSE, ACTION-IF-CROSS-COMPILING)
+# ----------------------------------------------------------------
+m4_defun([_LT_TRY_DLOPEN_SELF],
+[m4_require([_LT_HEADER_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 <<_LT_EOF
+[#line $LINENO "configure"
+#include "confdefs.h"
+
+#if HAVE_DLFCN_H
+#include <dlfcn.h>
+#endif
+
+#include <stdio.h>
+
+#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
+
+/* When -fvisbility=hidden is used, assume the code has been annotated
+ correspondingly for the symbols needed. */
+#if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3))
+int fnord () __attribute__((visibility("default")));
+#endif
+
+int fnord () { return 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;
+ else puts (dlerror ());
+ }
+ /* dlclose (self); */
+ }
+ else
+ puts (dlerror ());
+
+ return status;
+}]
+_LT_EOF
+ if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext} 2>/dev/null; then
+ (./conftest; exit; ) >&AS_MESSAGE_LOG_FD 2>/dev/null
+ lt_status=$?
+ case x$lt_status in
+ x$lt_dlno_uscore) $1 ;;
+ x$lt_dlneed_uscore) $2 ;;
+ x$lt_dlunknown|x*) $3 ;;
+ esac
+ else :
+ # compilation failed
+ $3
+ fi
+fi
+rm -fr conftest*
+])# _LT_TRY_DLOPEN_SELF
+
+
+# LT_SYS_DLOPEN_SELF
+# ------------------
+AC_DEFUN([LT_SYS_DLOPEN_SELF],
+[m4_require([_LT_HEADER_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* | cegcc*)
+ lt_cv_dlopen="LoadLibrary"
+ lt_cv_dlopen_libs=
+ ;;
+
+ cygwin*)
+ lt_cv_dlopen="dlopen"
+ lt_cv_dlopen_libs=
+ ;;
+
+ darwin*)
+ # if libdl is installed we need to link against it
+ AC_CHECK_LIB([dl], [dlopen],
+ [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"],[
+ lt_cv_dlopen="dyld"
+ lt_cv_dlopen_libs=
+ lt_cv_dlopen_self=yes
+ ])
+ ;;
+
+ *)
+ AC_CHECK_FUNC([shl_load],
+ [lt_cv_dlopen="shl_load"],
+ [AC_CHECK_LIB([dld], [shl_load],
+ [lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld"],
+ [AC_CHECK_FUNC([dlopen],
+ [lt_cv_dlopen="dlopen"],
+ [AC_CHECK_LIB([dl], [dlopen],
+ [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"],
+ [AC_CHECK_LIB([svld], [dlopen],
+ [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"],
+ [AC_CHECK_LIB([dld], [dld_link],
+ [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld"])
+ ])
+ ])
+ ])
+ ])
+ ])
+ ;;
+ esac
+
+ if test "x$lt_cv_dlopen" != xno; then
+ enable_dlopen=yes
+ else
+ enable_dlopen=no
+ fi
+
+ case $lt_cv_dlopen in
+ dlopen)
+ save_CPPFLAGS="$CPPFLAGS"
+ test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H"
+
+ save_LDFLAGS="$LDFLAGS"
+ wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\"
+
+ save_LIBS="$LIBS"
+ LIBS="$lt_cv_dlopen_libs $LIBS"
+
+ AC_CACHE_CHECK([whether a program can dlopen itself],
+ lt_cv_dlopen_self, [dnl
+ _LT_TRY_DLOPEN_SELF(
+ lt_cv_dlopen_self=yes, lt_cv_dlopen_self=yes,
+ lt_cv_dlopen_self=no, lt_cv_dlopen_self=cross)
+ ])
+
+ if test "x$lt_cv_dlopen_self" = xyes; then
+ wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\"
+ AC_CACHE_CHECK([whether a statically linked program can dlopen itself],
+ lt_cv_dlopen_self_static, [dnl
+ _LT_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
+_LT_DECL([dlopen_support], [enable_dlopen], [0],
+ [Whether dlopen is supported])
+_LT_DECL([dlopen_self], [enable_dlopen_self], [0],
+ [Whether dlopen of programs is supported])
+_LT_DECL([dlopen_self_static], [enable_dlopen_self_static], [0],
+ [Whether dlopen of statically linked programs is supported])
+])# LT_SYS_DLOPEN_SELF
+
+# Old name:
+AU_ALIAS([AC_LIBTOOL_DLOPEN_SELF], [LT_SYS_DLOPEN_SELF])
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AC_LIBTOOL_DLOPEN_SELF], [])
+
+
+# _LT_COMPILER_C_O([TAGNAME])
+# ---------------------------
+# Check to see if options -c and -o are simultaneously supported by compiler.
+# This macro does not hard code the compiler like AC_PROG_CC_C_O.
+m4_defun([_LT_COMPILER_C_O],
+[m4_require([_LT_DECL_SED])dnl
+m4_require([_LT_FILEUTILS_DEFAULTS])dnl
+m4_require([_LT_TAG_COMPILER])dnl
+AC_CACHE_CHECK([if $compiler supports -c -o file.$ac_objext],
+ [_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)],
+ [_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=no
+ $RM -r conftest 2>/dev/null
+ mkdir conftest
+ cd conftest
+ mkdir out
+ echo "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+ lt_compiler_flag="-o out/conftest2.$ac_objext"
+ # Insert the option either (1) after the last *FLAGS variable, or
+ # (2) before a word containing "conftest.", or (3) at the end.
+ # Note that $ac_compile itself does not contain backslashes and begins
+ # with a dollar sign (not a hyphen), so the echo should work correctly.
+ lt_compile=`echo "$ac_compile" | $SED \
+ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
+ -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \
+ -e 's:$: $lt_compiler_flag:'`
+ (eval echo "\"\$as_me:$LINENO: $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:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD
+ if (exit $ac_status) && test -s out/conftest2.$ac_objext
+ then
+ # The compiler can only warn and ignore the option if not recognized
+ # So say no if there are warnings
+ $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp
+ $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2
+ if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then
+ _LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes
+ fi
+ fi
+ chmod u+w . 2>&AS_MESSAGE_LOG_FD
+ $RM conftest*
+ # SGI C++ compiler will create directory out/ii_files/ for
+ # template instantiation
+ test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files
+ $RM out/* && rmdir out
+ cd ..
+ $RM -r conftest
+ $RM conftest*
+])
+_LT_TAGDECL([compiler_c_o], [lt_cv_prog_compiler_c_o], [1],
+ [Does compiler simultaneously support -c and -o options?])
+])# _LT_COMPILER_C_O
+
+
+# _LT_COMPILER_FILE_LOCKS([TAGNAME])
+# ----------------------------------
+# Check to see if we can do hard links to lock some files if needed
+m4_defun([_LT_COMPILER_FILE_LOCKS],
+[m4_require([_LT_ENABLE_LOCK])dnl
+m4_require([_LT_FILEUTILS_DEFAULTS])dnl
+_LT_COMPILER_C_O([$1])
+
+hard_links="nottested"
+if test "$_LT_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
+_LT_DECL([], [need_locks], [1], [Must we lock files when doing compilation?])
+])# _LT_COMPILER_FILE_LOCKS
+
+
+# _LT_CHECK_OBJDIR
+# ----------------
+m4_defun([_LT_CHECK_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
+_LT_DECL([], [objdir], [0],
+ [The name of the directory that contains temporary libtool files])dnl
+m4_pattern_allow([LT_OBJDIR])dnl
+AC_DEFINE_UNQUOTED(LT_OBJDIR, "$lt_cv_objdir/",
+ [Define to the sub-directory in which libtool stores uninstalled libraries.])
+])# _LT_CHECK_OBJDIR
+
+
+# _LT_LINKER_HARDCODE_LIBPATH([TAGNAME])
+# --------------------------------------
+# Check hardcoding attributes.
+m4_defun([_LT_LINKER_HARDCODE_LIBPATH],
+[AC_MSG_CHECKING([how to hardcode library paths into programs])
+_LT_TAGVAR(hardcode_action, $1)=
+if test -n "$_LT_TAGVAR(hardcode_libdir_flag_spec, $1)" ||
+ test -n "$_LT_TAGVAR(runpath_var, $1)" ||
+ test "X$_LT_TAGVAR(hardcode_automatic, $1)" = "Xyes" ; then
+
+ # We can hardcode non-existent directories.
+ if test "$_LT_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_TAGVAR(hardcode_shlibpath_var, $1)" != no &&
+ test "$_LT_TAGVAR(hardcode_minus_L, $1)" != no; then
+ # Linking always hardcodes the temporary library directory.
+ _LT_TAGVAR(hardcode_action, $1)=relink
+ else
+ # We can link without hardcoding, and we can hardcode nonexisting dirs.
+ _LT_TAGVAR(hardcode_action, $1)=immediate
+ fi
+else
+ # We cannot hardcode anything, or else we can only hardcode existing
+ # directories.
+ _LT_TAGVAR(hardcode_action, $1)=unsupported
+fi
+AC_MSG_RESULT([$_LT_TAGVAR(hardcode_action, $1)])
+
+if test "$_LT_TAGVAR(hardcode_action, $1)" = relink ||
+ test "$_LT_TAGVAR(inherit_rpath, $1)" = yes; 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
+_LT_TAGDECL([], [hardcode_action], [0],
+ [How to hardcode a shared library path into an executable])
+])# _LT_LINKER_HARDCODE_LIBPATH
+
+
+# _LT_CMD_STRIPLIB
+# ----------------
+m4_defun([_LT_CMD_STRIPLIB],
+[m4_require([_LT_DECL_EGREP])
+striplib=
+old_striplib=
+AC_MSG_CHECKING([whether stripping libraries is possible])
+if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then
+ test -z "$old_striplib" && old_striplib="$STRIP --strip-debug"
+ test -z "$striplib" && striplib="$STRIP --strip-unneeded"
+ AC_MSG_RESULT([yes])
+else
+# FIXME - insert some real tests, host_os isn't really good enough
+ case $host_os in
+ darwin*)
+ if test -n "$STRIP" ; then
+ striplib="$STRIP -x"
+ old_striplib="$STRIP -S"
+ AC_MSG_RESULT([yes])
+ else
+ AC_MSG_RESULT([no])
+ fi
+ ;;
+ *)
+ AC_MSG_RESULT([no])
+ ;;
+ esac
+fi
+_LT_DECL([], [old_striplib], [1], [Commands to strip libraries])
+_LT_DECL([], [striplib], [1])
+])# _LT_CMD_STRIPLIB
+
+
+# _LT_SYS_DYNAMIC_LINKER([TAG])
+# -----------------------------
+# PORTME Fill in your ld.so characteristics
+m4_defun([_LT_SYS_DYNAMIC_LINKER],
+[AC_REQUIRE([AC_CANONICAL_HOST])dnl
+m4_require([_LT_DECL_EGREP])dnl
+m4_require([_LT_FILEUTILS_DEFAULTS])dnl
+m4_require([_LT_DECL_OBJDUMP])dnl
+m4_require([_LT_DECL_SED])dnl
+m4_require([_LT_CHECK_SHELL_FEATURES])dnl
+AC_MSG_CHECKING([dynamic linker characteristics])
+m4_if([$1],
+ [], [
+if test "$GCC" = yes; then
+ case $host_os in
+ darwin*) lt_awk_arg="/^libraries:/,/LR/" ;;
+ *) lt_awk_arg="/^libraries:/" ;;
+ esac
+ case $host_os in
+ mingw* | cegcc*) lt_sed_strip_eq="s,=\([[A-Za-z]]:\),\1,g" ;;
+ *) lt_sed_strip_eq="s,=/,/,g" ;;
+ esac
+ lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq`
+ case $lt_search_path_spec in
+ *\;*)
+ # if the path contains ";" then we assume it to be the separator
+ # otherwise default to the standard path separator (i.e. ":") - it is
+ # assumed that no part of a normal pathname contains ";" but that should
+ # okay in the real world where ";" in dirpaths is itself problematic.
+ lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED 's/;/ /g'`
+ ;;
+ *)
+ lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED "s/$PATH_SEPARATOR/ /g"`
+ ;;
+ esac
+ # Ok, now we have the path, separated by spaces, we can step through it
+ # and add multilib dir if necessary.
+ lt_tmp_lt_search_path_spec=
+ lt_multi_os_dir=`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null`
+ for lt_sys_path in $lt_search_path_spec; do
+ if test -d "$lt_sys_path/$lt_multi_os_dir"; then
+ lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path/$lt_multi_os_dir"
+ else
+ test -d "$lt_sys_path" && \
+ lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path"
+ fi
+ done
+ lt_search_path_spec=`$ECHO "$lt_tmp_lt_search_path_spec" | awk '
+BEGIN {RS=" "; FS="/|\n";} {
+ lt_foo="";
+ lt_count=0;
+ for (lt_i = NF; lt_i > 0; lt_i--) {
+ if ($lt_i != "" && $lt_i != ".") {
+ if ($lt_i == "..") {
+ lt_count++;
+ } else {
+ if (lt_count == 0) {
+ lt_foo="/" $lt_i lt_foo;
+ } else {
+ lt_count--;
+ }
+ }
+ }
+ }
+ if (lt_foo != "") { lt_freq[[lt_foo]]++; }
+ if (lt_freq[[lt_foo]] == 1) { print lt_foo; }
+}'`
+ # AWK program above erroneously prepends '/' to C:/dos/paths
+ # for these hosts.
+ case $host_os in
+ mingw* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\
+ $SED 's,/\([[A-Za-z]]:\),\1,g'` ;;
+ esac
+ sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP`
+else
+ sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
+fi])
+library_names_spec=
+libname_spec='lib$name'
+soname_spec=
+shrext_cmds=".so"
+postinstall_cmds=
+postuninstall_cmds=
+finish_cmds=
+finish_eval=
+shlibpath_var=
+shlibpath_overrides_runpath=unknown
+version_type=none
+dynamic_linker="$host_os ld.so"
+sys_lib_dlsearch_path_spec="/lib /usr/lib"
+need_lib_prefix=unknown
+hardcode_into_libs=no
+
+# when you set need_version to no, make sure it does not cause -set_version
+# flags to be left without arguments
+need_version=unknown
+
+case $host_os in
+aix3*)
+ version_type=linux # correct to gnu/linux during the next big refactor
+ library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a'
+ shlibpath_var=LIBPATH
+
+ # AIX 3 has no versioning support, so we append a major version to the name.
+ soname_spec='${libname}${release}${shared_ext}$major'
+ ;;
+
+aix[[4-9]]*)
+ version_type=linux # correct to gnu/linux during the next big refactor
+ 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<name>.so
+ # instead of lib<name>.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*)
+ case $host_cpu in
+ powerpc)
+ # Since July 2007 AmigaOS4 officially supports .so libraries.
+ # When compiling the executable, add -use-dynld -Lsobjs: to the compileline.
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ ;;
+ m68k)
+ 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=`func_echo_all "$lib" | $SED '\''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'
+ ;;
+ esac
+ ;;
+
+beos*)
+ library_names_spec='${libname}${shared_ext}'
+ dynamic_linker="$host_os ld.so"
+ shlibpath_var=LIBRARY_PATH
+ ;;
+
+bsdi[[45]]*)
+ version_type=linux # correct to gnu/linux during the next big refactor
+ 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* | cegcc*)
+ version_type=windows
+ shrext_cmds=".dll"
+ need_version=no
+ need_lib_prefix=no
+
+ case $GCC,$cc_basename in
+ yes,*)
+ # gcc
+ library_names_spec='$libname.dll.a'
+ # DLL is installed to $(libdir)/../bin by postinstall_cmds
+ postinstall_cmds='base_file=`basename \${file}`~
+ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~
+ dldir=$destdir/`dirname \$dlpath`~
+ test -d \$dldir || mkdir -p \$dldir~
+ $install_prog $dir/$dlname \$dldir/$dlname~
+ chmod a+x \$dldir/$dlname~
+ if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then
+ eval '\''$striplib \$dldir/$dlname'\'' || exit \$?;
+ fi'
+ 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}'
+m4_if([$1], [],[
+ sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api"])
+ ;;
+ mingw* | cegcc*)
+ # MinGW DLLs use traditional 'lib' prefix
+ soname_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}'
+ ;;
+ 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
+ dynamic_linker='Win32 ld.exe'
+ ;;
+
+ *,cl*)
+ # Native MSVC
+ libname_spec='$name'
+ soname_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}'
+ library_names_spec='${libname}.dll.lib'
+
+ case $build_os in
+ mingw*)
+ sys_lib_search_path_spec=
+ lt_save_ifs=$IFS
+ IFS=';'
+ for lt_path in $LIB
+ do
+ IFS=$lt_save_ifs
+ # Let DOS variable expansion print the short 8.3 style file name.
+ lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"`
+ sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path"
+ done
+ IFS=$lt_save_ifs
+ # Convert to MSYS style.
+ sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([[a-zA-Z]]\\):| /\\1|g' -e 's|^ ||'`
+ ;;
+ cygwin*)
+ # Convert to unix form, then to dos form, then back to unix form
+ # but this time dos style (no spaces!) so that the unix form looks
+ # like /cygdrive/c/PROGRA~1:/cygdr...
+ sys_lib_search_path_spec=`cygpath --path --unix "$LIB"`
+ sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null`
+ sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
+ ;;
+ *)
+ sys_lib_search_path_spec="$LIB"
+ if $ECHO "$sys_lib_search_path_spec" | [$GREP ';[c-zC-Z]:/' >/dev/null]; then
+ # It is most probably a Windows format PATH.
+ 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
+ # FIXME: find the short name or the path components, as spaces are
+ # common. (e.g. "Program Files" -> "PROGRA~1")
+ ;;
+ esac
+
+ # 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
+ dynamic_linker='Win32 link.exe'
+ ;;
+
+ *)
+ # Assume MSVC wrapper
+ library_names_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext} $libname.lib'
+ dynamic_linker='Win32 ld.exe'
+ ;;
+ esac
+ # FIXME: first we should search . and the directory the executable is in
+ shlibpath_var=PATH
+ ;;
+
+darwin* | rhapsody*)
+ dynamic_linker="$host_os dyld"
+ version_type=darwin
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${major}$shared_ext ${libname}$shared_ext'
+ soname_spec='${libname}${release}${major}$shared_ext'
+ shlibpath_overrides_runpath=yes
+ shlibpath_var=DYLD_LIBRARY_PATH
+ shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`'
+m4_if([$1], [],[
+ sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib"])
+ sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib'
+ ;;
+
+dgux*)
+ version_type=linux # correct to gnu/linux during the next big refactor
+ 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
+ ;;
+
+freebsd* | dragonfly*)
+ # DragonFly does not have aout. When/if they implement a new
+ # versioning mechanism, adjust this.
+ if test -x /usr/bin/objformat; then
+ objformat=`/usr/bin/objformat`
+ else
+ case $host_os in
+ freebsd[[23]].*) objformat=aout ;;
+ *) objformat=elf ;;
+ esac
+ fi
+ version_type=freebsd-$objformat
+ case $version_type in
+ freebsd-elf*)
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
+ need_version=no
+ need_lib_prefix=no
+ ;;
+ freebsd-*)
+ library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix'
+ need_version=yes
+ ;;
+ esac
+ shlibpath_var=LD_LIBRARY_PATH
+ case $host_os in
+ freebsd2.*)
+ shlibpath_overrides_runpath=yes
+ ;;
+ freebsd3.[[01]]* | freebsdelf3.[[01]]*)
+ shlibpath_overrides_runpath=yes
+ hardcode_into_libs=yes
+ ;;
+ freebsd3.[[2-9]]* | freebsdelf3.[[2-9]]* | \
+ freebsd4.[[0-5]] | freebsdelf4.[[0-5]] | freebsd4.1.1 | freebsdelf4.1.1)
+ shlibpath_overrides_runpath=no
+ hardcode_into_libs=yes
+ ;;
+ *) # from 4.6 on, and DragonFly
+ shlibpath_overrides_runpath=yes
+ hardcode_into_libs=yes
+ ;;
+ esac
+ ;;
+
+gnu*)
+ version_type=linux # correct to gnu/linux during the next big refactor
+ 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=no
+ hardcode_into_libs=yes
+ ;;
+
+haiku*)
+ version_type=linux # correct to gnu/linux during the next big refactor
+ need_lib_prefix=no
+ need_version=no
+ dynamic_linker="$host_os runtime_loader"
+ 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=LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+ sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib'
+ hardcode_into_libs=yes
+ ;;
+
+hpux9* | hpux10* | hpux11*)
+ # Give a soname corresponding to the major version so that dld.sl refuses to
+ # link against other versions.
+ version_type=sunos
+ need_lib_prefix=no
+ need_version=no
+ case $host_cpu in
+ ia64*)
+ shrext_cmds='.so'
+ hardcode_into_libs=yes
+ dynamic_linker="$host_os dld.so"
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ if test "X$HPUX_IA64_MODE" = X32; then
+ sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib"
+ else
+ sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64"
+ fi
+ sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+ ;;
+ hppa*64*)
+ shrext_cmds='.sl'
+ hardcode_into_libs=yes
+ dynamic_linker="$host_os dld.sl"
+ shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH
+ shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64"
+ sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+ ;;
+ *)
+ shrext_cmds='.sl'
+ dynamic_linker="$host_os dld.sl"
+ shlibpath_var=SHLIB_PATH
+ shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ ;;
+ esac
+ # HP-UX runs *really* slowly unless shared libraries are mode 555, ...
+ postinstall_cmds='chmod 555 $lib'
+ # or fails outright, so override atomically:
+ install_override_mode=555
+ ;;
+
+interix[[3-9]]*)
+ version_type=linux # correct to gnu/linux during the next big refactor
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=no
+ hardcode_into_libs=yes
+ ;;
+
+irix5* | irix6* | nonstopux*)
+ case $host_os in
+ nonstopux*) version_type=nonstopux ;;
+ *)
+ if test "$lt_cv_prog_gnu_ld" = yes; then
+ version_type=linux # correct to gnu/linux during the next big refactor
+ 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 glibc/ELF.
+linux* | k*bsd*-gnu | kopensolaris*-gnu)
+ version_type=linux # correct to gnu/linux during the next big refactor
+ 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
+
+ # Some binutils ld are patched to set DT_RUNPATH
+ AC_CACHE_VAL([lt_cv_shlibpath_overrides_runpath],
+ [lt_cv_shlibpath_overrides_runpath=no
+ save_LDFLAGS=$LDFLAGS
+ save_libdir=$libdir
+ eval "libdir=/foo; wl=\"$_LT_TAGVAR(lt_prog_compiler_wl, $1)\"; \
+ LDFLAGS=\"\$LDFLAGS $_LT_TAGVAR(hardcode_libdir_flag_spec, $1)\""
+ AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])],
+ [AS_IF([ ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null],
+ [lt_cv_shlibpath_overrides_runpath=yes])])
+ LDFLAGS=$save_LDFLAGS
+ libdir=$save_libdir
+ ])
+ shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath
+
+ # 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
+
+ # Append ld.so.conf contents to the search path
+ if test -f /etc/ld.so.conf; then
+ lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \[$]2)); skip = 1; } { if (!skip) print \[$]0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '`
+ sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra"
+ fi
+
+ # We used to test for /lib/ld.so.1 and disable shared libraries on
+ # powerpc, because MkLinux only supported shared libraries with the
+ # GNU dynamic linker. Since this was broken with cross compilers,
+ # most powerpc-linux boxes support dynamic linking these days and
+ # people can always --disable-shared, the test was removed, and we
+ # assume the GNU/Linux dynamic linker is in use.
+ dynamic_linker='GNU/Linux ld.so'
+ ;;
+
+netbsdelf*-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
+ shlibpath_overrides_runpath=no
+ hardcode_into_libs=yes
+ dynamic_linker='NetBSD ld.elf_so'
+ ;;
+
+netbsd*)
+ version_type=sunos
+ need_lib_prefix=no
+ need_version=no
+ if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+ finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+ dynamic_linker='NetBSD (a.out) ld.so'
+ else
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ dynamic_linker='NetBSD ld.elf_so'
+ fi
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+ hardcode_into_libs=yes
+ ;;
+
+newsos6)
+ version_type=linux # correct to gnu/linux during the next big refactor
+ 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=qnx
+ 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=no
+ hardcode_into_libs=yes
+ dynamic_linker='ldqnx.so'
+ ;;
+
+openbsd*)
+ version_type=sunos
+ sys_lib_dlsearch_path_spec="/usr/lib"
+ need_lib_prefix=no
+ # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs.
+ case $host_os in
+ openbsd3.3 | openbsd3.3.*) need_version=yes ;;
+ *) need_version=no ;;
+ esac
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+ finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+ shlibpath_var=LD_LIBRARY_PATH
+ if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+ case $host_os in
+ openbsd2.[[89]] | openbsd2.[[89]].*)
+ shlibpath_overrides_runpath=no
+ ;;
+ *)
+ shlibpath_overrides_runpath=yes
+ ;;
+ esac
+ else
+ shlibpath_overrides_runpath=yes
+ fi
+ ;;
+
+os2*)
+ libname_spec='$name'
+ shrext_cmds=".dll"
+ need_lib_prefix=no
+ library_names_spec='$libname${shared_ext} $libname.a'
+ dynamic_linker='OS/2 ld.exe'
+ shlibpath_var=LIBPATH
+ ;;
+
+osf3* | osf4* | osf5*)
+ version_type=osf
+ need_lib_prefix=no
+ need_version=no
+ soname_spec='${libname}${release}${shared_ext}$major'
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ shlibpath_var=LD_LIBRARY_PATH
+ sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib"
+ sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec"
+ ;;
+
+rdos*)
+ dynamic_linker=no
+ ;;
+
+solaris*)
+ version_type=linux # correct to gnu/linux during the next big refactor
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+ hardcode_into_libs=yes
+ # ldd complains unless libraries are executable
+ postinstall_cmds='chmod +x $lib'
+ ;;
+
+sunos4*)
+ version_type=sunos
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+ finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+ if test "$with_gnu_ld" = yes; then
+ need_lib_prefix=no
+ fi
+ need_version=yes
+ ;;
+
+sysv4 | sysv4.3*)
+ version_type=linux # correct to gnu/linux during the next big refactor
+ 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
+ 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 # correct to gnu/linux during the next big refactor
+ library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}'
+ soname_spec='$libname${shared_ext}.$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ fi
+ ;;
+
+sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
+ version_type=freebsd-elf
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+ hardcode_into_libs=yes
+ if test "$with_gnu_ld" = yes; then
+ sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib'
+ else
+ sys_lib_search_path_spec='/usr/ccs/lib /usr/lib'
+ case $host_os in
+ sco3.2v5*)
+ sys_lib_search_path_spec="$sys_lib_search_path_spec /lib"
+ ;;
+ esac
+ fi
+ sys_lib_dlsearch_path_spec='/usr/lib'
+ ;;
+
+tpf*)
+ # TPF is a cross-target only. Preferred cross-host = GNU/Linux.
+ version_type=linux # correct to gnu/linux during the next big refactor
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=no
+ hardcode_into_libs=yes
+ ;;
+
+uts4*)
+ version_type=linux # correct to gnu/linux during the next big refactor
+ 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
+
+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
+
+if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then
+ sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec"
+fi
+if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then
+ sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec"
+fi
+
+_LT_DECL([], [variables_saved_for_relink], [1],
+ [Variables whose values should be saved in libtool wrapper scripts and
+ restored at link time])
+_LT_DECL([], [need_lib_prefix], [0],
+ [Do we need the "lib" prefix for modules?])
+_LT_DECL([], [need_version], [0], [Do we need a version for libraries?])
+_LT_DECL([], [version_type], [0], [Library versioning type])
+_LT_DECL([], [runpath_var], [0], [Shared library runtime path variable])
+_LT_DECL([], [shlibpath_var], [0],[Shared library path variable])
+_LT_DECL([], [shlibpath_overrides_runpath], [0],
+ [Is shlibpath searched before the hard-coded library search path?])
+_LT_DECL([], [libname_spec], [1], [Format of library name prefix])
+_LT_DECL([], [library_names_spec], [1],
+ [[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]])
+_LT_DECL([], [soname_spec], [1],
+ [[The coded name of the library, if different from the real name]])
+_LT_DECL([], [install_override_mode], [1],
+ [Permission mode override for installation of shared libraries])
+_LT_DECL([], [postinstall_cmds], [2],
+ [Command to use after installation of a shared archive])
+_LT_DECL([], [postuninstall_cmds], [2],
+ [Command to use after uninstallation of a shared archive])
+_LT_DECL([], [finish_cmds], [2],
+ [Commands used to finish a libtool library installation in a directory])
+_LT_DECL([], [finish_eval], [1],
+ [[As "finish_cmds", except a single script fragment to be evaled but
+ not shown]])
+_LT_DECL([], [hardcode_into_libs], [0],
+ [Whether we should hardcode library paths into libraries])
+_LT_DECL([], [sys_lib_search_path_spec], [2],
+ [Compile-time system search path for libraries])
+_LT_DECL([], [sys_lib_dlsearch_path_spec], [2],
+ [Run-time system search path for libraries])
+])# _LT_SYS_DYNAMIC_LINKER
+
+
+# _LT_PATH_TOOL_PREFIX(TOOL)
+# --------------------------
+# find a file program which can recognize shared library
+AC_DEFUN([_LT_PATH_TOOL_PREFIX],
+[m4_require([_LT_DECL_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="m4_if([$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 <<_LT_EOF 1>&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 at gnu.org
+
+_LT_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
+_LT_DECL([], [MAGIC_CMD], [0],
+ [Used to examine libraries when file_magic_cmd begins with "file"])dnl
+])# _LT_PATH_TOOL_PREFIX
+
+# Old name:
+AU_ALIAS([AC_PATH_TOOL_PREFIX], [_LT_PATH_TOOL_PREFIX])
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AC_PATH_TOOL_PREFIX], [])
+
+
+# _LT_PATH_MAGIC
+# --------------
+# find a file program which can recognize a shared library
+m4_defun([_LT_PATH_MAGIC],
+[_LT_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
+ _LT_PATH_TOOL_PREFIX(file, /usr/bin$PATH_SEPARATOR$PATH)
+ else
+ MAGIC_CMD=:
+ fi
+fi
+])# _LT_PATH_MAGIC
+
+
+# LT_PATH_LD
+# ----------
+# find the pathname to the GNU or non-GNU linker
+AC_DEFUN([LT_PATH_LD],
+[AC_REQUIRE([AC_PROG_CC])dnl
+AC_REQUIRE([AC_CANONICAL_HOST])dnl
+AC_REQUIRE([AC_CANONICAL_BUILD])dnl
+m4_require([_LT_DECL_SED])dnl
+m4_require([_LT_DECL_EGREP])dnl
+m4_require([_LT_PROG_ECHO_BACKSLASH])dnl
+
+AC_ARG_WITH([gnu-ld],
+ [AS_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])dnl
+
+ac_prog=ld
+if test "$GCC" = yes; then
+ # Check if gcc -print-prog-name=ld gives a path.
+ AC_MSG_CHECKING([for ld used by $CC])
+ case $host in
+ *-*-mingw*)
+ # gcc leaves a trailing carriage return which upsets mingw
+ ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;;
+ *)
+ ac_prog=`($CC -print-prog-name=ld) 2>&5` ;;
+ esac
+ case $ac_prog in
+ # Accept absolute paths.
+ [[\\/]]* | ?:[[\\/]]*)
+ re_direlt='/[[^/]][[^/]]*/\.\./'
+ # Canonicalize the pathname of ld
+ ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'`
+ while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do
+ ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"`
+ done
+ test -z "$LD" && LD="$ac_prog"
+ ;;
+ "")
+ # If it fails, then pretend we aren't using GCC.
+ ac_prog=ld
+ ;;
+ *)
+ # If it is relative, then search for the first ld in PATH.
+ with_gnu_ld=unknown
+ ;;
+ esac
+elif test "$with_gnu_ld" = yes; then
+ AC_MSG_CHECKING([for GNU ld])
+else
+ AC_MSG_CHECKING([for non-GNU ld])
+fi
+AC_CACHE_VAL(lt_cv_path_LD,
+[if test -z "$LD"; then
+ lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+ for ac_dir in $PATH; do
+ IFS="$lt_save_ifs"
+ test -z "$ac_dir" && ac_dir=.
+ if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
+ lt_cv_path_LD="$ac_dir/$ac_prog"
+ # Check to see if the program is GNU ld. I'd rather use --version,
+ # but apparently some variants of GNU ld only accept -v.
+ # Break only if it was the GNU/non-GNU ld that we prefer.
+ case `"$lt_cv_path_LD" -v 2>&1 </dev/null` in
+ *GNU* | *'with BFD'*)
+ test "$with_gnu_ld" != no && break
+ ;;
+ *)
+ test "$with_gnu_ld" != yes && break
+ ;;
+ esac
+ fi
+ done
+ IFS="$lt_save_ifs"
+else
+ lt_cv_path_LD="$LD" # Let the user override the test with a path.
+fi])
+LD="$lt_cv_path_LD"
+if test -n "$LD"; then
+ AC_MSG_RESULT($LD)
+else
+ AC_MSG_RESULT(no)
+fi
+test -z "$LD" && AC_MSG_ERROR([no acceptable ld found in \$PATH])
+_LT_PATH_LD_GNU
+AC_SUBST([LD])
+
+_LT_TAGDECL([], [LD], [1], [The linker used to build libraries])
+])# LT_PATH_LD
+
+# Old names:
+AU_ALIAS([AM_PROG_LD], [LT_PATH_LD])
+AU_ALIAS([AC_PROG_LD], [LT_PATH_LD])
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AM_PROG_LD], [])
+dnl AC_DEFUN([AC_PROG_LD], [])
+
+
+# _LT_PATH_LD_GNU
+#- --------------
+m4_defun([_LT_PATH_LD_GNU],
+[AC_CACHE_CHECK([if the linker ($LD) is GNU ld], lt_cv_prog_gnu_ld,
+[# I'd rather use --version here, but apparently some GNU lds only accept -v.
+case `$LD -v 2>&1 </dev/null` in
+*GNU* | *'with BFD'*)
+ lt_cv_prog_gnu_ld=yes
+ ;;
+*)
+ lt_cv_prog_gnu_ld=no
+ ;;
+esac])
+with_gnu_ld=$lt_cv_prog_gnu_ld
+])# _LT_PATH_LD_GNU
+
+
+# _LT_CMD_RELOAD
+# --------------
+# find reload flag for linker
+# -- PORTME Some linkers may need a different reload flag.
+m4_defun([_LT_CMD_RELOAD],
+[AC_CACHE_CHECK([for $LD option to reload object files],
+ lt_cv_ld_reload_flag,
+ [lt_cv_ld_reload_flag='-r'])
+reload_flag=$lt_cv_ld_reload_flag
+case $reload_flag in
+"" | " "*) ;;
+*) reload_flag=" $reload_flag" ;;
+esac
+reload_cmds='$LD$reload_flag -o $output$reload_objs'
+case $host_os in
+ cygwin* | mingw* | pw32* | cegcc*)
+ if test "$GCC" != yes; then
+ reload_cmds=false
+ fi
+ ;;
+ darwin*)
+ if test "$GCC" = yes; then
+ reload_cmds='$LTCC $LTCFLAGS -nostdlib ${wl}-r -o $output$reload_objs'
+ else
+ reload_cmds='$LD$reload_flag -o $output$reload_objs'
+ fi
+ ;;
+esac
+_LT_TAGDECL([], [reload_flag], [1], [How to create reloadable object files])dnl
+_LT_TAGDECL([], [reload_cmds], [2])dnl
+])# _LT_CMD_RELOAD
+
+
+# _LT_CHECK_MAGIC_METHOD
+# ----------------------
+# how to check for library dependencies
+# -- PORTME fill in with the dynamic library characteristics
+m4_defun([_LT_CHECK_MAGIC_METHOD],
+[m4_require([_LT_DECL_EGREP])
+m4_require([_LT_DECL_OBJDUMP])
+AC_CACHE_CHECK([how to recognize dependent libraries],
+lt_cv_deplibs_check_method,
+[lt_cv_file_magic_cmd='$MAGIC_CMD'
+lt_cv_file_magic_test_file=
+lt_cv_deplibs_check_method='unknown'
+# Need to set the preceding variable on all platforms that support
+# interlibrary dependencies.
+# 'none' -- dependencies not supported.
+# `unknown' -- same as none, but documents that we really don't know.
+# 'pass_all' -- all dependencies passed with no checks.
+# 'test_compile' -- check by making test program.
+# 'file_magic [[regex]]' -- check by looking for files in library path
+# which responds to the $file_magic_cmd with a given extended regex.
+# If you have `file' or equivalent on your system and you're not sure
+# whether `pass_all' will *always* work, you probably want this one.
+
+case $host_os in
+aix[[4-9]]*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+beos*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+bsdi[[45]]*)
+ lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib)'
+ lt_cv_file_magic_cmd='/usr/bin/file -L'
+ lt_cv_file_magic_test_file=/shlib/libc.so
+ ;;
+
+cygwin*)
+ # func_win32_libid is a shell function defined in ltmain.sh
+ lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL'
+ lt_cv_file_magic_cmd='func_win32_libid'
+ ;;
+
+mingw* | pw32*)
+ # Base MSYS/MinGW do not provide the 'file' command needed by
+ # func_win32_libid shell function, so use a weaker test based on 'objdump',
+ # unless we find 'file', for example because we are cross-compiling.
+ # func_win32_libid assumes BSD nm, so disallow it if using MS dumpbin.
+ if ( test "$lt_cv_nm_interface" = "BSD nm" && file / ) >/dev/null 2>&1; then
+ lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL'
+ lt_cv_file_magic_cmd='func_win32_libid'
+ else
+ # Keep this pattern in sync with the one in func_win32_libid.
+ lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)'
+ lt_cv_file_magic_cmd='$OBJDUMP -f'
+ fi
+ ;;
+
+cegcc*)
+ # use the weaker test based on 'objdump'. See mingw*.
+ lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?'
+ lt_cv_file_magic_cmd='$OBJDUMP -f'
+ ;;
+
+darwin* | rhapsody*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+freebsd* | dragonfly*)
+ if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then
+ case $host_cpu in
+ i*86 )
+ # Not sure whether the presence of OpenBSD here was a mistake.
+ # Let's accept both of them until this is cleared up.
+ lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[[3-9]]86 (compact )?demand paged shared library'
+ lt_cv_file_magic_cmd=/usr/bin/file
+ lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*`
+ ;;
+ esac
+ else
+ lt_cv_deplibs_check_method=pass_all
+ fi
+ ;;
+
+gnu*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+haiku*)
+ 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])(-bit)?( [LM]SB)? shared object( file)?[, -]* PA-RISC [0-9]\.[0-9]']
+ lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl
+ ;;
+ *)
+ lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|PA-RISC[[0-9]]\.[[0-9]]) shared library'
+ lt_cv_file_magic_test_file=/usr/lib/libc.sl
+ ;;
+ esac
+ ;;
+
+interix[[3-9]]*)
+ # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here
+ lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|\.a)$'
+ ;;
+
+irix5* | irix6* | nonstopux*)
+ case $LD in
+ *-32|*"-32 ") libmagic=32-bit;;
+ *-n32|*"-n32 ") libmagic=N32;;
+ *-64|*"-64 ") libmagic=64-bit;;
+ *) libmagic=never-match;;
+ esac
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+# This must be glibc/ELF.
+linux* | k*bsd*-gnu | kopensolaris*-gnu)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+netbsd* | netbsdelf*-gnu)
+ 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=pass_all
+ ;;
+
+openbsd*)
+ if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+ lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|\.so|_pic\.a)$'
+ else
+ lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$'
+ fi
+ ;;
+
+osf3* | osf4* | osf5*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+rdos*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+solaris*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+sysv4 | sysv4.3*)
+ case $host_vendor in
+ motorola)
+ lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib) M[[0-9]][[0-9]]* Version [[0-9]]'
+ lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*`
+ ;;
+ ncr)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+ sequent)
+ lt_cv_file_magic_cmd='/bin/file'
+ lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB (shared object|dynamic lib )'
+ ;;
+ sni)
+ lt_cv_file_magic_cmd='/bin/file'
+ lt_cv_deplibs_check_method="file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB dynamic lib"
+ lt_cv_file_magic_test_file=/lib/libc.so
+ ;;
+ siemens)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+ pc)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+ esac
+ ;;
+
+tpf*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+esac
+])
+
+file_magic_glob=
+want_nocaseglob=no
+if test "$build" = "$host"; then
+ case $host_os in
+ mingw* | pw32*)
+ if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then
+ want_nocaseglob=yes
+ else
+ file_magic_glob=`echo aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ | $SED -e "s/\(..\)/s\/[[\1]]\/[[\1]]\/g;/g"`
+ fi
+ ;;
+ esac
+fi
+
+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
+
+_LT_DECL([], [deplibs_check_method], [1],
+ [Method to check whether dependent libraries are shared objects])
+_LT_DECL([], [file_magic_cmd], [1],
+ [Command to use when deplibs_check_method = "file_magic"])
+_LT_DECL([], [file_magic_glob], [1],
+ [How to find potential files when deplibs_check_method = "file_magic"])
+_LT_DECL([], [want_nocaseglob], [1],
+ [Find potential files using nocaseglob when deplibs_check_method = "file_magic"])
+])# _LT_CHECK_MAGIC_METHOD
+
+
+# LT_PATH_NM
+# ----------
+# find the pathname to a BSD- or MS-compatible name lister
+AC_DEFUN([LT_PATH_NM],
+[AC_REQUIRE([AC_PROG_CC])dnl
+AC_CACHE_CHECK([for BSD- or MS-compatible name lister (nm)], lt_cv_path_NM,
+[if test -n "$NM"; then
+ # Let the user override the test.
+ lt_cv_path_NM="$NM"
+else
+ lt_nm_to_check="${ac_tool_prefix}nm"
+ if test -n "$ac_tool_prefix" && test "$build" = "$host"; then
+ lt_nm_to_check="$lt_nm_to_check nm"
+ fi
+ for lt_tmp_nm in $lt_nm_to_check; do
+ lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+ for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do
+ IFS="$lt_save_ifs"
+ test -z "$ac_dir" && ac_dir=.
+ tmp_nm="$ac_dir/$lt_tmp_nm"
+ if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then
+ # Check to see if the nm accepts a BSD-compat flag.
+ # Adding the `sed 1q' prevents false positives on HP-UX, which says:
+ # nm: unknown option "B" ignored
+ # Tru64's nm complains that /dev/null is an invalid object file
+ case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in
+ */dev/null* | *'Invalid file or object type'*)
+ lt_cv_path_NM="$tmp_nm -B"
+ break
+ ;;
+ *)
+ case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in
+ */dev/null*)
+ lt_cv_path_NM="$tmp_nm -p"
+ break
+ ;;
+ *)
+ lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but
+ continue # so that we can try to find one that supports BSD flags
+ ;;
+ esac
+ ;;
+ esac
+ fi
+ done
+ IFS="$lt_save_ifs"
+ done
+ : ${lt_cv_path_NM=no}
+fi])
+if test "$lt_cv_path_NM" != "no"; then
+ NM="$lt_cv_path_NM"
+else
+ # Didn't find any BSD compatible name lister, look for dumpbin.
+ if test -n "$DUMPBIN"; then :
+ # Let the user override the test.
+ else
+ AC_CHECK_TOOLS(DUMPBIN, [dumpbin "link -dump"], :)
+ case `$DUMPBIN -symbols /dev/null 2>&1 | sed '1q'` in
+ *COFF*)
+ DUMPBIN="$DUMPBIN -symbols"
+ ;;
+ *)
+ DUMPBIN=:
+ ;;
+ esac
+ fi
+ AC_SUBST([DUMPBIN])
+ if test "$DUMPBIN" != ":"; then
+ NM="$DUMPBIN"
+ fi
+fi
+test -z "$NM" && NM=nm
+AC_SUBST([NM])
+_LT_DECL([], [NM], [1], [A BSD- or MS-compatible name lister])dnl
+
+AC_CACHE_CHECK([the name lister ($NM) interface], [lt_cv_nm_interface],
+ [lt_cv_nm_interface="BSD nm"
+ echo "int some_variable = 0;" > conftest.$ac_ext
+ (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&AS_MESSAGE_LOG_FD)
+ (eval "$ac_compile" 2>conftest.err)
+ cat conftest.err >&AS_MESSAGE_LOG_FD
+ (eval echo "\"\$as_me:$LINENO: $NM \\\"conftest.$ac_objext\\\"\"" >&AS_MESSAGE_LOG_FD)
+ (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out)
+ cat conftest.err >&AS_MESSAGE_LOG_FD
+ (eval echo "\"\$as_me:$LINENO: output\"" >&AS_MESSAGE_LOG_FD)
+ cat conftest.out >&AS_MESSAGE_LOG_FD
+ if $GREP 'External.*some_variable' conftest.out > /dev/null; then
+ lt_cv_nm_interface="MS dumpbin"
+ fi
+ rm -f conftest*])
+])# LT_PATH_NM
+
+# Old names:
+AU_ALIAS([AM_PROG_NM], [LT_PATH_NM])
+AU_ALIAS([AC_PROG_NM], [LT_PATH_NM])
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AM_PROG_NM], [])
+dnl AC_DEFUN([AC_PROG_NM], [])
+
+# _LT_CHECK_SHAREDLIB_FROM_LINKLIB
+# --------------------------------
+# how to determine the name of the shared library
+# associated with a specific link library.
+# -- PORTME fill in with the dynamic library characteristics
+m4_defun([_LT_CHECK_SHAREDLIB_FROM_LINKLIB],
+[m4_require([_LT_DECL_EGREP])
+m4_require([_LT_DECL_OBJDUMP])
+m4_require([_LT_DECL_DLLTOOL])
+AC_CACHE_CHECK([how to associate runtime and link libraries],
+lt_cv_sharedlib_from_linklib_cmd,
+[lt_cv_sharedlib_from_linklib_cmd='unknown'
+
+case $host_os in
+cygwin* | mingw* | pw32* | cegcc*)
+ # two different shell functions defined in ltmain.sh
+ # decide which to use based on capabilities of $DLLTOOL
+ case `$DLLTOOL --help 2>&1` in
+ *--identify-strict*)
+ lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib
+ ;;
+ *)
+ lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib_fallback
+ ;;
+ esac
+ ;;
+*)
+ # fallback: assume linklib IS sharedlib
+ lt_cv_sharedlib_from_linklib_cmd="$ECHO"
+ ;;
+esac
+])
+sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd
+test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO
+
+_LT_DECL([], [sharedlib_from_linklib_cmd], [1],
+ [Command to associate shared and link libraries])
+])# _LT_CHECK_SHAREDLIB_FROM_LINKLIB
+
+
+# _LT_PATH_MANIFEST_TOOL
+# ----------------------
+# locate the manifest tool
+m4_defun([_LT_PATH_MANIFEST_TOOL],
+[AC_CHECK_TOOL(MANIFEST_TOOL, mt, :)
+test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt
+AC_CACHE_CHECK([if $MANIFEST_TOOL is a manifest tool], [lt_cv_path_mainfest_tool],
+ [lt_cv_path_mainfest_tool=no
+ echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&AS_MESSAGE_LOG_FD
+ $MANIFEST_TOOL '-?' 2>conftest.err > conftest.out
+ cat conftest.err >&AS_MESSAGE_LOG_FD
+ if $GREP 'Manifest Tool' conftest.out > /dev/null; then
+ lt_cv_path_mainfest_tool=yes
+ fi
+ rm -f conftest*])
+if test "x$lt_cv_path_mainfest_tool" != xyes; then
+ MANIFEST_TOOL=:
+fi
+_LT_DECL([], [MANIFEST_TOOL], [1], [Manifest tool])dnl
+])# _LT_PATH_MANIFEST_TOOL
+
+
+# LT_LIB_M
+# --------
+# check for math library
+AC_DEFUN([LT_LIB_M],
+[AC_REQUIRE([AC_CANONICAL_HOST])dnl
+LIBM=
+case $host in
+*-*-beos* | *-*-cegcc* | *-*-cygwin* | *-*-haiku* | *-*-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_SUBST([LIBM])
+])# LT_LIB_M
+
+# Old name:
+AU_ALIAS([AC_CHECK_LIBM], [LT_LIB_M])
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AC_CHECK_LIBM], [])
+
+
+# _LT_COMPILER_NO_RTTI([TAGNAME])
+# -------------------------------
+m4_defun([_LT_COMPILER_NO_RTTI],
+[m4_require([_LT_TAG_COMPILER])dnl
+
+_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=
+
+if test "$GCC" = yes; then
+ case $cc_basename in
+ nvcc*)
+ _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -Xcompiler -fno-builtin' ;;
+ *)
+ _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' ;;
+ esac
+
+ _LT_COMPILER_OPTION([if $compiler supports -fno-rtti -fno-exceptions],
+ lt_cv_prog_compiler_rtti_exceptions,
+ [-fno-rtti -fno-exceptions], [],
+ [_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)="$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) -fno-rtti -fno-exceptions"])
+fi
+_LT_TAGDECL([no_builtin_flag], [lt_prog_compiler_no_builtin_flag], [1],
+ [Compiler flag to turn off builtin functions])
+])# _LT_COMPILER_NO_RTTI
+
+
+# _LT_CMD_GLOBAL_SYMBOLS
+# ----------------------
+m4_defun([_LT_CMD_GLOBAL_SYMBOLS],
+[AC_REQUIRE([AC_CANONICAL_HOST])dnl
+AC_REQUIRE([AC_PROG_CC])dnl
+AC_REQUIRE([AC_PROG_AWK])dnl
+AC_REQUIRE([LT_PATH_NM])dnl
+AC_REQUIRE([LT_PATH_LD])dnl
+m4_require([_LT_DECL_SED])dnl
+m4_require([_LT_DECL_EGREP])dnl
+m4_require([_LT_TAG_COMPILER])dnl
+
+# 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]]*\)'
+
+# Define system-specific variables.
+case $host_os in
+aix*)
+ symcode='[[BCDT]]'
+ ;;
+cygwin* | mingw* | pw32* | cegcc*)
+ symcode='[[ABCDGISTW]]'
+ ;;
+hpux*)
+ if test "$host_cpu" = ia64; then
+ symcode='[[ABCDEGRST]]'
+ fi
+ ;;
+irix* | nonstopux*)
+ symcode='[[BCDEGRST]]'
+ ;;
+osf*)
+ symcode='[[BCDEGQRST]]'
+ ;;
+solaris*)
+ symcode='[[BDRT]]'
+ ;;
+sco3.2v5*)
+ symcode='[[DT]]'
+ ;;
+sysv4.2uw2*)
+ symcode='[[DT]]'
+ ;;
+sysv5* | sco5v6* | unixware* | OpenUNIX*)
+ symcode='[[ABDT]]'
+ ;;
+sysv4)
+ symcode='[[DFNSTU]]'
+ ;;
+esac
+
+# If we're using GNU nm, then use its standard symbol codes.
+case `$NM -V 2>&1` in
+*GNU* | *'with BFD'*)
+ symcode='[[ABCDGIRSTW]]' ;;
+esac
+
+# Transform an extracted symbol line into a proper C declaration.
+# Some systems (esp. on ia64) link data and code symbols differently,
+# so use this general approach.
+lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \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\\\", (void *) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (void *) \&\2},/p'"
+lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([[^ ]]*\)[[ ]]*$/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \(lib[[^ ]]*\)$/ {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"lib\2\", (void *) \&\2},/p'"
+
+# 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
+
+# Try without a prefix underscore, then with it.
+for ac_symprfx in "" "_"; do
+
+ # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol.
+ symxfrm="\\1 $ac_symprfx\\2 \\2"
+
+ # Write the raw and C identifiers.
+ if test "$lt_cv_nm_interface" = "MS dumpbin"; then
+ # Fake it for dumpbin and say T for any non-static function
+ # and D for any global variable.
+ # Also find C++ and __fastcall symbols from MSVC++,
+ # which start with @ or ?.
+ lt_cv_sys_global_symbol_pipe="$AWK ['"\
+" {last_section=section; section=\$ 3};"\
+" /^COFF SYMBOL TABLE/{for(i in hide) delete hide[i]};"\
+" /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\
+" \$ 0!~/External *\|/{next};"\
+" / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\
+" {if(hide[section]) next};"\
+" {f=0}; \$ 0~/\(\).*\|/{f=1}; {printf f ? \"T \" : \"D \"};"\
+" {split(\$ 0, a, /\||\r/); split(a[2], s)};"\
+" s[1]~/^[@?]/{print s[1], s[1]; next};"\
+" s[1]~prfx {split(s[1],t,\"@\"); print t[1], substr(t[1],length(prfx))}"\
+" ' prfx=^$ac_symprfx]"
+ else
+ lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[[ ]]\($symcode$symcode*\)[[ ]][[ ]]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'"
+ fi
+ lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | sed '/ __gnu_lto/d'"
+
+ # Check to see that the pipe works correctly.
+ pipe_works=no
+
+ rm -f conftest*
+ cat > conftest.$ac_ext <<_LT_EOF
+#ifdef __cplusplus
+extern "C" {
+#endif
+char nm_test_var;
+void nm_test_func(void);
+void nm_test_func(void){}
+#ifdef __cplusplus
+}
+#endif
+int main(){nm_test_var='a';nm_test_func();return(0);}
+_LT_EOF
+
+ if AC_TRY_EVAL(ac_compile); then
+ # Now try to grab the symbols.
+ nlist=conftest.nm
+ if AC_TRY_EVAL(NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $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 <<_LT_EOF > conftest.$ac_ext
+/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */
+#if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE)
+/* DATA imports from DLLs on WIN32 con't be const, because runtime
+ relocations are performed -- see ld's documentation on pseudo-relocs. */
+# define LT@&t at _DLSYM_CONST
+#elif defined(__osf__)
+/* This system does not cope well with relocations in const data. */
+# define LT@&t at _DLSYM_CONST
+#else
+# define LT@&t at _DLSYM_CONST const
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+_LT_EOF
+ # Now generate the symbol file.
+ eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext'
+
+ cat <<_LT_EOF >> conftest.$ac_ext
+
+/* The mapping between symbol names and symbols. */
+LT@&t at _DLSYM_CONST struct {
+ const char *name;
+ void *address;
+}
+lt__PROGRAM__LTX_preloaded_symbols[[]] =
+{
+ { "@PROGRAM@", (void *) 0 },
+_LT_EOF
+ $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (void *) \&\2},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext
+ cat <<\_LT_EOF >> conftest.$ac_ext
+ {0, (void *) 0}
+};
+
+/* This works around a problem in FreeBSD linker */
+#ifdef FREEBSD_WORKAROUND
+static const void *lt_preloaded_setup() {
+ return lt__PROGRAM__LTX_preloaded_symbols;
+}
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+_LT_EOF
+ # Now try linking the two files.
+ mv conftest.$ac_objext conftstm.$ac_objext
+ lt_globsym_save_LIBS=$LIBS
+ lt_globsym_save_CFLAGS=$CFLAGS
+ LIBS="conftstm.$ac_objext"
+ CFLAGS="$CFLAGS$_LT_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_globsym_save_LIBS
+ CFLAGS=$lt_globsym_save_CFLAGS
+ else
+ echo "cannot find nm_test_func in $nlist" >&AS_MESSAGE_LOG_FD
+ fi
+ else
+ echo "cannot find nm_test_var in $nlist" >&AS_MESSAGE_LOG_FD
+ fi
+ else
+ echo "cannot run $lt_cv_sys_global_symbol_pipe" >&AS_MESSAGE_LOG_FD
+ fi
+ else
+ echo "$progname: failed program was:" >&AS_MESSAGE_LOG_FD
+ cat conftest.$ac_ext >&5
+ fi
+ rm -rf conftest* conftst*
+
+ # Do not use the global_symbol_pipe unless it works.
+ if test "$pipe_works" = yes; then
+ break
+ else
+ lt_cv_sys_global_symbol_pipe=
+ fi
+done
+])
+if test -z "$lt_cv_sys_global_symbol_pipe"; then
+ lt_cv_sys_global_symbol_to_cdecl=
+fi
+if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then
+ AC_MSG_RESULT(failed)
+else
+ AC_MSG_RESULT(ok)
+fi
+
+# Response file support.
+if test "$lt_cv_nm_interface" = "MS dumpbin"; then
+ nm_file_list_spec='@'
+elif $NM --help 2>/dev/null | grep '[[@]]FILE' >/dev/null; then
+ nm_file_list_spec='@'
+fi
+
+_LT_DECL([global_symbol_pipe], [lt_cv_sys_global_symbol_pipe], [1],
+ [Take the output of nm and produce a listing of raw symbols and C names])
+_LT_DECL([global_symbol_to_cdecl], [lt_cv_sys_global_symbol_to_cdecl], [1],
+ [Transform the output of nm in a proper C declaration])
+_LT_DECL([global_symbol_to_c_name_address],
+ [lt_cv_sys_global_symbol_to_c_name_address], [1],
+ [Transform the output of nm in a C name address pair])
+_LT_DECL([global_symbol_to_c_name_address_lib_prefix],
+ [lt_cv_sys_global_symbol_to_c_name_address_lib_prefix], [1],
+ [Transform the output of nm in a C name address pair when lib prefix is needed])
+_LT_DECL([], [nm_file_list_spec], [1],
+ [Specify filename containing input files for $NM])
+]) # _LT_CMD_GLOBAL_SYMBOLS
+
+
+# _LT_COMPILER_PIC([TAGNAME])
+# ---------------------------
+m4_defun([_LT_COMPILER_PIC],
+[m4_require([_LT_TAG_COMPILER])dnl
+_LT_TAGVAR(lt_prog_compiler_wl, $1)=
+_LT_TAGVAR(lt_prog_compiler_pic, $1)=
+_LT_TAGVAR(lt_prog_compiler_static, $1)=
+
+m4_if([$1], [CXX], [
+ # C++ specific cases for pic, static, wl, etc.
+ if test "$GXX" = yes; then
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_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_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ fi
+ ;;
+
+ amigaos*)
+ case $host_cpu in
+ powerpc)
+ # see comment about AmigaOS4 .so support
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+ ;;
+ m68k)
+ # 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_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4'
+ ;;
+ esac
+ ;;
+
+ beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
+ # PIC is the default for these OSes.
+ ;;
+ mingw* | cygwin* | os2* | pw32* | cegcc*)
+ # This hack is so that the source file can tell whether it is being
+ # built for inclusion in a dll (and should export symbols for example).
+ # Although the cygwin gcc ignores -fPIC, still need this for old-style
+ # (--disable-auto-import) libraries
+ m4_if([$1], [GCJ], [],
+ [_LT_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_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common'
+ ;;
+ *djgpp*)
+ # DJGPP does not support shared libraries at all
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)=
+ ;;
+ haiku*)
+ # PIC is the default for Haiku.
+ # The "-static" flag exists, but is broken.
+ _LT_TAGVAR(lt_prog_compiler_static, $1)=
+ ;;
+ interix[[3-9]]*)
+ # Interix 3.x gcc -fpic/-fPIC options generate broken code.
+ # Instead, we relocate shared libraries at runtime.
+ ;;
+ sysv4*MP*)
+ if test -d /usr/nec; then
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic
+ fi
+ ;;
+ hpux*)
+ # PIC is the default for 64-bit PA HP-UX, but not for 32-bit
+ # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag
+ # sets the default TLS model and affects inlining.
+ case $host_cpu in
+ hppa*64*)
+ ;;
+ *)
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+ ;;
+ esac
+ ;;
+ *qnx* | *nto*)
+ # QNX uses GNU C++, but need to define -shared option too, otherwise
+ # it will coredump.
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared'
+ ;;
+ *)
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+ ;;
+ esac
+ else
+ case $host_os in
+ aix[[4-9]]*)
+ # All AIX code is PIC.
+ if test "$host_cpu" = ia64; then
+ # AIX 5 now supports IA64 processor
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ else
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp'
+ fi
+ ;;
+ chorus*)
+ case $cc_basename in
+ cxch68*)
+ # Green Hills C++ Compiler
+ # _LT_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
+ ;;
+ mingw* | cygwin* | os2* | pw32* | cegcc*)
+ # This hack is so that the source file can tell whether it is being
+ # built for inclusion in a dll (and should export symbols for example).
+ m4_if([$1], [GCJ], [],
+ [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT'])
+ ;;
+ dgux*)
+ case $cc_basename in
+ ec++*)
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+ ;;
+ ghcx*)
+ # Green Hills C++ Compiler
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
+ ;;
+ *)
+ ;;
+ esac
+ ;;
+ freebsd* | dragonfly*)
+ # FreeBSD uses GNU C++
+ ;;
+ hpux9* | hpux10* | hpux11*)
+ case $cc_basename in
+ CC*)
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive'
+ if test "$host_cpu" != ia64; then
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z'
+ fi
+ ;;
+ aCC*)
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive'
+ case $host_cpu in
+ hppa*64*|ia64*)
+ # +Z the default
+ ;;
+ *)
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z'
+ ;;
+ esac
+ ;;
+ *)
+ ;;
+ esac
+ ;;
+ interix*)
+ # This is c89, which is MS Visual C++ (no shared libs)
+ # Anyone wants to do a port?
+ ;;
+ irix5* | irix6* | nonstopux*)
+ case $cc_basename in
+ CC*)
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
+ # CC pic flag -KPIC is the default.
+ ;;
+ *)
+ ;;
+ esac
+ ;;
+ linux* | k*bsd*-gnu | kopensolaris*-gnu)
+ case $cc_basename in
+ KCC*)
+ # KAI C++ Compiler
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,'
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+ ;;
+ ecpc* )
+ # old Intel C++ for x86_64 which still supported -KPIC.
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
+ ;;
+ icpc* )
+ # Intel C++, used to be incompatible with GCC.
+ # ICC 10 doesn't accept -KPIC any more.
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
+ ;;
+ pgCC* | pgcpp*)
+ # Portland Group C++ compiler
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic'
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ ;;
+ cxx*)
+ # Compaq C++
+ # Make sure the PIC flag is empty. It appears that all Alpha
+ # Linux and Compaq Tru64 Unix objects are PIC.
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)=
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
+ ;;
+ xlc* | xlC* | bgxl[[cC]]* | mpixl[[cC]]*)
+ # IBM XL 8.0, 9.0 on PPC and BlueGene
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic'
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink'
+ ;;
+ *)
+ case `$CC -V 2>&1 | sed 5q` in
+ *Sun\ C*)
+ # Sun C++ 5.9
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld '
+ ;;
+ esac
+ ;;
+ esac
+ ;;
+ lynxos*)
+ ;;
+ m88k*)
+ ;;
+ mvs*)
+ case $cc_basename in
+ cxx*)
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-W c,exportall'
+ ;;
+ *)
+ ;;
+ esac
+ ;;
+ netbsd* | netbsdelf*-gnu)
+ ;;
+ *qnx* | *nto*)
+ # QNX uses GNU C++, but need to define -shared option too, otherwise
+ # it will coredump.
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared'
+ ;;
+ osf3* | osf4* | osf5*)
+ case $cc_basename in
+ KCC*)
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,'
+ ;;
+ RCC*)
+ # Rational C++ 2.4.1
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
+ ;;
+ cxx*)
+ # Digital/Compaq C++
+ _LT_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_TAGVAR(lt_prog_compiler_pic, $1)=
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
+ ;;
+ *)
+ ;;
+ esac
+ ;;
+ psos*)
+ ;;
+ solaris*)
+ case $cc_basename in
+ CC* | sunCC*)
+ # Sun C++ 4.2, 5.x and Centerline C++
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld '
+ ;;
+ gcx*)
+ # Green Hills C++ Compiler
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC'
+ ;;
+ *)
+ ;;
+ esac
+ ;;
+ sunos4*)
+ case $cc_basename in
+ CC*)
+ # Sun C++ 4.x
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ ;;
+ lcc*)
+ # Lucid
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
+ ;;
+ *)
+ ;;
+ esac
+ ;;
+ sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*)
+ case $cc_basename in
+ CC*)
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ ;;
+ esac
+ ;;
+ tandem*)
+ case $cc_basename in
+ NCC*)
+ # NonStop-UX NCC 3.20
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+ ;;
+ *)
+ ;;
+ esac
+ ;;
+ vxworks*)
+ ;;
+ *)
+ _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no
+ ;;
+ esac
+ fi
+],
+[
+ if test "$GCC" = yes; then
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_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_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ fi
+ ;;
+
+ amigaos*)
+ case $host_cpu in
+ powerpc)
+ # see comment about AmigaOS4 .so support
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+ ;;
+ m68k)
+ # 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_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4'
+ ;;
+ esac
+ ;;
+
+ beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
+ # PIC is the default for these OSes.
+ ;;
+
+ mingw* | cygwin* | pw32* | os2* | cegcc*)
+ # This hack is so that the source file can tell whether it is being
+ # built for inclusion in a dll (and should export symbols for example).
+ # Although the cygwin gcc ignores -fPIC, still need this for old-style
+ # (--disable-auto-import) libraries
+ m4_if([$1], [GCJ], [],
+ [_LT_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_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common'
+ ;;
+
+ haiku*)
+ # PIC is the default for Haiku.
+ # The "-static" flag exists, but is broken.
+ _LT_TAGVAR(lt_prog_compiler_static, $1)=
+ ;;
+
+ hpux*)
+ # PIC is the default for 64-bit PA HP-UX, but not for 32-bit
+ # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag
+ # sets the default TLS model and affects inlining.
+ case $host_cpu in
+ hppa*64*)
+ # +Z the default
+ ;;
+ *)
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+ ;;
+ esac
+ ;;
+
+ interix[[3-9]]*)
+ # Interix 3.x gcc -fpic/-fPIC options generate broken code.
+ # Instead, we relocate shared libraries at runtime.
+ ;;
+
+ msdosdjgpp*)
+ # Just because we use GCC doesn't mean we suddenly get shared libraries
+ # on systems that don't support them.
+ _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no
+ enable_shared=no
+ ;;
+
+ *nto* | *qnx*)
+ # QNX uses GNU C++, but need to define -shared option too, otherwise
+ # it will coredump.
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared'
+ ;;
+
+ sysv4*MP*)
+ if test -d /usr/nec; then
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic
+ fi
+ ;;
+
+ *)
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+ ;;
+ esac
+
+ case $cc_basename in
+ nvcc*) # Cuda Compiler Driver 2.2
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Xlinker '
+ if test -n "$_LT_TAGVAR(lt_prog_compiler_pic, $1)"; then
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)="-Xcompiler $_LT_TAGVAR(lt_prog_compiler_pic, $1)"
+ fi
+ ;;
+ esac
+ else
+ # PORTME Check for flag to pass linker flags through the system compiler.
+ case $host_os in
+ aix*)
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ if test "$host_cpu" = ia64; then
+ # AIX 5 now supports IA64 processor
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ else
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp'
+ fi
+ ;;
+
+ mingw* | cygwin* | pw32* | os2* | cegcc*)
+ # This hack is so that the source file can tell whether it is being
+ # built for inclusion in a dll (and should export symbols for example).
+ m4_if([$1], [GCJ], [],
+ [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT'])
+ ;;
+
+ hpux9* | hpux10* | hpux11*)
+ _LT_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_TAGVAR(lt_prog_compiler_pic, $1)='+Z'
+ ;;
+ esac
+ # Is there a better lt_prog_compiler_static that works with the bundled CC?
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive'
+ ;;
+
+ irix5* | irix6* | nonstopux*)
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ # PIC (with -KPIC) is the default.
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
+ ;;
+
+ linux* | k*bsd*-gnu | kopensolaris*-gnu)
+ case $cc_basename in
+ # old Intel for x86_64 which still supported -KPIC.
+ ecc*)
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
+ ;;
+ # icc used to be incompatible with GCC.
+ # ICC 10 doesn't accept -KPIC any more.
+ icc* | ifort*)
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
+ ;;
+ # Lahey Fortran 8.1.
+ lf95*)
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='--shared'
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='--static'
+ ;;
+ nagfor*)
+ # NAG Fortran compiler
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,-Wl,,'
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC'
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ ;;
+ pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*)
+ # Portland Group compilers (*not* the Pentium gcc compiler,
+ # which looks to be a dead project)
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic'
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ ;;
+ ccc*)
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ # All Alpha code is PIC.
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
+ ;;
+ xl* | bgxl* | bgf* | mpixl*)
+ # IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic'
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink'
+ ;;
+ *)
+ case `$CC -V 2>&1 | sed 5q` in
+ *Sun\ Ceres\ Fortran* | *Sun*Fortran*\ [[1-7]].* | *Sun*Fortran*\ 8.[[0-3]]*)
+ # Sun Fortran 8.3 passes all unrecognized flags to the linker
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)=''
+ ;;
+ *Sun\ F* | *Sun*Fortran*)
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld '
+ ;;
+ *Sun\ C*)
+ # Sun C 5.9
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ ;;
+ *Intel*\ [[CF]]*Compiler*)
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
+ ;;
+ *Portland\ Group*)
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic'
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ ;;
+ esac
+ ;;
+ esac
+ ;;
+
+ newsos6)
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ ;;
+
+ *nto* | *qnx*)
+ # QNX uses GNU C++, but need to define -shared option too, otherwise
+ # it will coredump.
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared'
+ ;;
+
+ osf3* | osf4* | osf5*)
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ # All OSF/1 code is PIC.
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
+ ;;
+
+ rdos*)
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
+ ;;
+
+ solaris*)
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ case $cc_basename in
+ f77* | f90* | f95* | sunf77* | sunf90* | sunf95*)
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ';;
+ *)
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,';;
+ esac
+ ;;
+
+ sunos4*)
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld '
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC'
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ ;;
+
+ sysv4 | sysv4.2uw2* | sysv4.3*)
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ ;;
+
+ sysv4*MP*)
+ if test -d /usr/nec ;then
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-Kconform_pic'
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ fi
+ ;;
+
+ sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*)
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ ;;
+
+ unicos*)
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no
+ ;;
+
+ uts4*)
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ ;;
+
+ *)
+ _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no
+ ;;
+ esac
+ fi
+])
+case $host_os in
+ # For platforms which do not support PIC, -DPIC is meaningless:
+ *djgpp*)
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)=
+ ;;
+ *)
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)="$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t at m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])"
+ ;;
+esac
+
+AC_CACHE_CHECK([for $compiler option to produce PIC],
+ [_LT_TAGVAR(lt_cv_prog_compiler_pic, $1)],
+ [_LT_TAGVAR(lt_cv_prog_compiler_pic, $1)=$_LT_TAGVAR(lt_prog_compiler_pic, $1)])
+_LT_TAGVAR(lt_prog_compiler_pic, $1)=$_LT_TAGVAR(lt_cv_prog_compiler_pic, $1)
+
+#
+# Check to make sure the PIC flag actually works.
+#
+if test -n "$_LT_TAGVAR(lt_prog_compiler_pic, $1)"; then
+ _LT_COMPILER_OPTION([if $compiler PIC flag $_LT_TAGVAR(lt_prog_compiler_pic, $1) works],
+ [_LT_TAGVAR(lt_cv_prog_compiler_pic_works, $1)],
+ [$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t at m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])], [],
+ [case $_LT_TAGVAR(lt_prog_compiler_pic, $1) in
+ "" | " "*) ;;
+ *) _LT_TAGVAR(lt_prog_compiler_pic, $1)=" $_LT_TAGVAR(lt_prog_compiler_pic, $1)" ;;
+ esac],
+ [_LT_TAGVAR(lt_prog_compiler_pic, $1)=
+ _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no])
+fi
+_LT_TAGDECL([pic_flag], [lt_prog_compiler_pic], [1],
+ [Additional compiler flags for building library objects])
+
+_LT_TAGDECL([wl], [lt_prog_compiler_wl], [1],
+ [How to pass a linker flag through the compiler])
+#
+# Check to make sure the static flag actually works.
+#
+wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1) eval lt_tmp_static_flag=\"$_LT_TAGVAR(lt_prog_compiler_static, $1)\"
+_LT_LINKER_OPTION([if $compiler static flag $lt_tmp_static_flag works],
+ _LT_TAGVAR(lt_cv_prog_compiler_static_works, $1),
+ $lt_tmp_static_flag,
+ [],
+ [_LT_TAGVAR(lt_prog_compiler_static, $1)=])
+_LT_TAGDECL([link_static_flag], [lt_prog_compiler_static], [1],
+ [Compiler flag to prevent dynamic linking])
+])# _LT_COMPILER_PIC
+
+
+# _LT_LINKER_SHLIBS([TAGNAME])
+# ----------------------------
+# See if the linker supports building shared libraries.
+m4_defun([_LT_LINKER_SHLIBS],
+[AC_REQUIRE([LT_PATH_LD])dnl
+AC_REQUIRE([LT_PATH_NM])dnl
+m4_require([_LT_PATH_MANIFEST_TOOL])dnl
+m4_require([_LT_FILEUTILS_DEFAULTS])dnl
+m4_require([_LT_DECL_EGREP])dnl
+m4_require([_LT_DECL_SED])dnl
+m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl
+m4_require([_LT_TAG_COMPILER])dnl
+AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries])
+m4_if([$1], [CXX], [
+ _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
+ _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*']
+ case $host_os in
+ aix[[4-9]]*)
+ # If we're using GNU nm, then we don't want the "-C" option.
+ # -C means demangle to AIX nm, but means don't demangle with GNU nm
+ # Also, AIX nm treats weak defined symbols like other global defined
+ # symbols, whereas GNU nm marks them as "W".
+ if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then
+ _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
+ else
+ _LT_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_TAGVAR(export_symbols_cmds, $1)="$ltdll_cmds"
+ ;;
+ cygwin* | mingw* | cegcc*)
+ case $cc_basename in
+ cl*)
+ _LT_TAGVAR(exclude_expsyms, $1)='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*'
+ ;;
+ *)
+ _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols'
+ _LT_TAGVAR(exclude_expsyms, $1)=['[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname']
+ ;;
+ esac
+ ;;
+ linux* | k*bsd*-gnu | gnu*)
+ _LT_TAGVAR(link_all_deplibs, $1)=no
+ ;;
+ *)
+ _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
+ ;;
+ esac
+], [
+ runpath_var=
+ _LT_TAGVAR(allow_undefined_flag, $1)=
+ _LT_TAGVAR(always_export_symbols, $1)=no
+ _LT_TAGVAR(archive_cmds, $1)=
+ _LT_TAGVAR(archive_expsym_cmds, $1)=
+ _LT_TAGVAR(compiler_needs_object, $1)=no
+ _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no
+ _LT_TAGVAR(export_dynamic_flag_spec, $1)=
+ _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
+ _LT_TAGVAR(hardcode_automatic, $1)=no
+ _LT_TAGVAR(hardcode_direct, $1)=no
+ _LT_TAGVAR(hardcode_direct_absolute, $1)=no
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
+ _LT_TAGVAR(hardcode_libdir_separator, $1)=
+ _LT_TAGVAR(hardcode_minus_L, $1)=no
+ _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported
+ _LT_TAGVAR(inherit_rpath, $1)=no
+ _LT_TAGVAR(link_all_deplibs, $1)=unknown
+ _LT_TAGVAR(module_cmds, $1)=
+ _LT_TAGVAR(module_expsym_cmds, $1)=
+ _LT_TAGVAR(old_archive_from_new_cmds, $1)=
+ _LT_TAGVAR(old_archive_from_expsyms_cmds, $1)=
+ _LT_TAGVAR(thread_safe_flag_spec, $1)=
+ _LT_TAGVAR(whole_archive_flag_spec, $1)=
+ # include_expsyms should be a list of space-separated symbols to be *always*
+ # included in the symbol list
+ _LT_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_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*']
+ # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out
+ # platforms (ab)use it in PIC code, but their linkers get confused if
+ # the symbol is explicitly referenced. Since portable code cannot
+ # rely on this symbol name, it's probably fine to never include it in
+ # preloaded symbol tables.
+ # Exclude shared library initialization/finalization symbols.
+dnl Note also adjust exclude_expsyms for C++ above.
+ extract_expsyms_cmds=
+
+ case $host_os in
+ cygwin* | mingw* | pw32* | cegcc*)
+ # FIXME: the MSVC++ port hasn't been tested in a loooong time
+ # When not using gcc, we currently assume that we are using
+ # Microsoft Visual C++.
+ if test "$GCC" != yes; then
+ with_gnu_ld=no
+ fi
+ ;;
+ interix*)
+ # we just hope/assume this is gcc and not c89 (= MSVC++)
+ with_gnu_ld=yes
+ ;;
+ openbsd*)
+ with_gnu_ld=no
+ ;;
+ linux* | k*bsd*-gnu | gnu*)
+ _LT_TAGVAR(link_all_deplibs, $1)=no
+ ;;
+ esac
+
+ _LT_TAGVAR(ld_shlibs, $1)=yes
+
+ # On some targets, GNU ld is compatible enough with the native linker
+ # that we're better off using the native interface for both.
+ lt_use_gnu_ld_interface=no
+ if test "$with_gnu_ld" = yes; then
+ case $host_os in
+ aix*)
+ # The AIX port of GNU ld has always aspired to compatibility
+ # with the native linker. However, as the warning in the GNU ld
+ # block says, versions before 2.19.5* couldn't really create working
+ # shared libraries, regardless of the interface used.
+ case `$LD -v 2>&1` in
+ *\ \(GNU\ Binutils\)\ 2.19.5*) ;;
+ *\ \(GNU\ Binutils\)\ 2.[[2-9]]*) ;;
+ *\ \(GNU\ Binutils\)\ [[3-9]]*) ;;
+ *)
+ lt_use_gnu_ld_interface=yes
+ ;;
+ esac
+ ;;
+ *)
+ lt_use_gnu_ld_interface=yes
+ ;;
+ esac
+ fi
+
+ if test "$lt_use_gnu_ld_interface" = yes; then
+ # If archive_cmds runs LD, not CC, wlarc should be empty
+ wlarc='${wl}'
+
+ # Set some defaults for GNU ld with shared library support. These
+ # are reset later if shared libraries are not supported. Putting them
+ # here allows them to be overridden if necessary.
+ runpath_var=LD_RUN_PATH
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+ _LT_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_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
+ else
+ _LT_TAGVAR(whole_archive_flag_spec, $1)=
+ fi
+ supports_anon_versioning=no
+ case `$LD -v 2>&1` in
+ *GNU\ gold*) supports_anon_versioning=yes ;;
+ *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.10.*) ;; # catch versions < 2.11
+ *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ...
+ *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ...
+ *\ 2.11.*) ;; # other 2.11 versions
+ *) supports_anon_versioning=yes ;;
+ esac
+
+ # See if GNU ld supports shared libraries.
+ case $host_os in
+ aix[[3-9]]*)
+ # On AIX/PPC, the GNU linker is very broken
+ if test "$host_cpu" != ia64; then
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ cat <<_LT_EOF 1>&2
+
+*** Warning: the GNU linker, at least up to release 2.19, 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 install binutils
+*** 2.20 or above, or modify your PATH so that a non-GNU linker is found.
+*** You will then need to restart the configuration process.
+
+_LT_EOF
+ fi
+ ;;
+
+ amigaos*)
+ case $host_cpu in
+ powerpc)
+ # see comment about AmigaOS4 .so support
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ _LT_TAGVAR(archive_expsym_cmds, $1)=''
+ ;;
+ m68k)
+ _LT_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_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+ _LT_TAGVAR(hardcode_minus_L, $1)=yes
+ ;;
+ esac
+ ;;
+
+ beos*)
+ if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
+ _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
+ # Joseph Beckenbach <jrb3 at best.com> says some releases of gcc
+ # support --undefined. This deserves some investigation. FIXME
+ _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ else
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ fi
+ ;;
+
+ cygwin* | mingw* | pw32* | cegcc*)
+ # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless,
+ # as there is no search path for DLLs.
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+ _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-all-symbols'
+ _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
+ _LT_TAGVAR(always_export_symbols, $1)=no
+ _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
+ _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols'
+ _LT_TAGVAR(exclude_expsyms, $1)=['[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname']
+
+ if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
+ # If the export-symbols file already is a .def file (1st line
+ # is EXPORTS), use it as is; otherwise, prepend...
+ _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
+ cp $export_symbols $output_objdir/$soname.def;
+ else
+ echo EXPORTS > $output_objdir/$soname.def;
+ cat $export_symbols >> $output_objdir/$soname.def;
+ fi~
+ $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
+ else
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ fi
+ ;;
+
+ haiku*)
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ _LT_TAGVAR(link_all_deplibs, $1)=yes
+ ;;
+
+ interix[[3-9]]*)
+ _LT_TAGVAR(hardcode_direct, $1)=no
+ _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+ _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+ # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc.
+ # Instead, shared libraries are loaded at an image base (0x10000000 by
+ # default) and relocated if they conflict, which is a slow very memory
+ # consuming and fragmenting process. To avoid this, we pick a random,
+ # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link
+ # time. Moving up from 0x10000000 also allows more sbrk(2) space.
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+ ;;
+
+ gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu)
+ tmp_diet=no
+ if test "$host_os" = linux-dietlibc; then
+ case $cc_basename in
+ diet\ *) tmp_diet=yes;; # linux-dietlibc with static linking (!diet-dyn)
+ esac
+ fi
+ if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \
+ && test "$tmp_diet" = no
+ then
+ tmp_addflag=' $pic_flag'
+ tmp_sharedflag='-shared'
+ case $cc_basename,$host_cpu in
+ pgcc*) # Portland Group C compiler
+ _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
+ tmp_addflag=' $pic_flag'
+ ;;
+ pgf77* | pgf90* | pgf95* | pgfortran*)
+ # Portland Group f77 and f90 compilers
+ _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
+ tmp_addflag=' $pic_flag -Mnomain' ;;
+ ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64
+ tmp_addflag=' -i_dynamic' ;;
+ efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64
+ tmp_addflag=' -i_dynamic -nofor_main' ;;
+ ifc* | ifort*) # Intel Fortran compiler
+ tmp_addflag=' -nofor_main' ;;
+ lf95*) # Lahey Fortran 8.1
+ _LT_TAGVAR(whole_archive_flag_spec, $1)=
+ tmp_sharedflag='--shared' ;;
+ xl[[cC]]* | bgxl[[cC]]* | mpixl[[cC]]*) # IBM XL C 8.0 on PPC (deal with xlf below)
+ tmp_sharedflag='-qmkshrobj'
+ tmp_addflag= ;;
+ nvcc*) # Cuda Compiler Driver 2.2
+ _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
+ _LT_TAGVAR(compiler_needs_object, $1)=yes
+ ;;
+ esac
+ case `$CC -V 2>&1 | sed 5q` in
+ *Sun\ C*) # Sun C 5.9
+ _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
+ _LT_TAGVAR(compiler_needs_object, $1)=yes
+ tmp_sharedflag='-G' ;;
+ *Sun\ F*) # Sun Fortran 8.3
+ tmp_sharedflag='-G' ;;
+ esac
+ _LT_TAGVAR(archive_cmds, $1)='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+
+ if test "x$supports_anon_versioning" = xyes; then
+ _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~
+ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
+ echo "local: *; };" >> $output_objdir/$libname.ver~
+ $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
+ fi
+
+ case $cc_basename in
+ xlf* | bgf* | bgxlf* | mpixlf*)
+ # IBM XL Fortran 10.1 on PPC cannot create shared libs itself
+ _LT_TAGVAR(whole_archive_flag_spec, $1)='--whole-archive$convenience --no-whole-archive'
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+ _LT_TAGVAR(archive_cmds, $1)='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib'
+ if test "x$supports_anon_versioning" = xyes; then
+ _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~
+ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
+ echo "local: *; };" >> $output_objdir/$libname.ver~
+ $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib'
+ fi
+ ;;
+ esac
+ else
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ fi
+ ;;
+
+ netbsd* | netbsdelf*-gnu)
+ if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
+ _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
+ wlarc=
+ else
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ fi
+ ;;
+
+ solaris*)
+ if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ cat <<_LT_EOF 1>&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.
+
+_LT_EOF
+ elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ else
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ fi
+ ;;
+
+ sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*)
+ case `$LD -v 2>&1` in
+ *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.1[[0-5]].*)
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ cat <<_LT_EOF 1>&2
+
+*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not
+*** reliably create shared libraries on SCO systems. Therefore, libtool
+*** is disabling shared libraries support. We urge you to upgrade GNU
+*** binutils to release 2.16.91.0.3 or newer. Another option is to modify
+*** your PATH or compiler configuration so that the native linker is
+*** used, and then restart.
+
+_LT_EOF
+ ;;
+ *)
+ # For security reasons, it is highly recommended that you always
+ # use absolute paths for naming shared libraries, and exclude the
+ # DT_RUNPATH tag from executables and libraries. But doing so
+ # requires that you compile everything twice, which is a pain.
+ if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ _LT_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_TAGVAR(ld_shlibs, $1)=no
+ fi
+ ;;
+ esac
+ ;;
+
+ sunos4*)
+ _LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+ wlarc=
+ _LT_TAGVAR(hardcode_direct, $1)=yes
+ _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+ ;;
+
+ *)
+ if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ else
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ fi
+ ;;
+ esac
+
+ if test "$_LT_TAGVAR(ld_shlibs, $1)" = no; then
+ runpath_var=
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
+ _LT_TAGVAR(export_dynamic_flag_spec, $1)=
+ _LT_TAGVAR(whole_archive_flag_spec, $1)=
+ fi
+ else
+ # PORTME fill in a description of your system's linker (not GNU ld)
+ case $host_os in
+ aix3*)
+ _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
+ _LT_TAGVAR(always_export_symbols, $1)=yes
+ _LT_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_TAGVAR(hardcode_minus_L, $1)=yes
+ if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then
+ # Neither direct hardcoding nor static linking is supported with a
+ # broken collect2.
+ _LT_TAGVAR(hardcode_direct, $1)=unsupported
+ fi
+ ;;
+
+ aix[[4-9]]*)
+ if test "$host_cpu" = ia64; then
+ # On IA64, the linker does run time linking by default, so we don't
+ # have to do anything special.
+ aix_use_runtimelinking=no
+ exp_sym_flag='-Bexport'
+ no_entry_flag=""
+ else
+ # If we're using GNU nm, then we don't want the "-C" option.
+ # -C means demangle to AIX nm, but means don't demangle with GNU nm
+ # Also, AIX nm treats weak defined symbols like other global
+ # defined symbols, whereas GNU nm marks them as "W".
+ if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then
+ _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
+ else
+ _LT_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
+ fi
+ aix_use_runtimelinking=no
+
+ # Test if we are trying to use run time linking or normal
+ # AIX style linking. If -brtl is somewhere in LDFLAGS, we
+ # need to do runtime linking.
+ case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*)
+ for ld_flag in $LDFLAGS; do
+ if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then
+ aix_use_runtimelinking=yes
+ break
+ fi
+ done
+ ;;
+ esac
+
+ exp_sym_flag='-bexport'
+ no_entry_flag='-bnoentry'
+ fi
+
+ # When large executables or shared objects are built, AIX ld can
+ # have problems creating the table of contents. If linking a library
+ # or program results in "error TOC overflow" add -mminimal-toc to
+ # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not
+ # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
+
+ _LT_TAGVAR(archive_cmds, $1)=''
+ _LT_TAGVAR(hardcode_direct, $1)=yes
+ _LT_TAGVAR(hardcode_direct_absolute, $1)=yes
+ _LT_TAGVAR(hardcode_libdir_separator, $1)=':'
+ _LT_TAGVAR(link_all_deplibs, $1)=yes
+ _LT_TAGVAR(file_list_spec, $1)='${wl}-f,'
+
+ if test "$GCC" = yes; then
+ case $host_os in aix4.[[012]]|aix4.[[012]].*)
+ # We only want to do this on AIX 4.2 and lower, the check
+ # below for broken collect2 doesn't work under 4.3+
+ collect2name=`${CC} -print-prog-name=collect2`
+ if test -f "$collect2name" &&
+ strings "$collect2name" | $GREP resolve_lib_name >/dev/null
+ then
+ # We have reworked collect2
+ :
+ else
+ # We have old collect2
+ _LT_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_TAGVAR(hardcode_minus_L, $1)=yes
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+ _LT_TAGVAR(hardcode_libdir_separator, $1)=
+ fi
+ ;;
+ esac
+ shared_flag='-shared'
+ if test "$aix_use_runtimelinking" = yes; then
+ shared_flag="$shared_flag "'${wl}-G'
+ fi
+ _LT_TAGVAR(link_all_deplibs, $1)=no
+ 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
+
+ _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-bexpall'
+ # It seems that -bexpall does not export symbols beginning with
+ # underscore (_), so it is better to generate a list of symbols to export.
+ _LT_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_TAGVAR(allow_undefined_flag, $1)='-berok'
+ # Determine the default libpath from the value encoded in an
+ # empty executable.
+ _LT_SYS_MODULE_PATH_AIX([$1])
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath"
+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag"
+ else
+ if test "$host_cpu" = ia64; then
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib'
+ _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs"
+ _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols"
+ else
+ # Determine the default libpath from the value encoded in an
+ # empty executable.
+ _LT_SYS_MODULE_PATH_AIX([$1])
+ _LT_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_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok'
+ _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok'
+ if test "$with_gnu_ld" = yes; then
+ # We only use this code for GNU lds that support --whole-archive.
+ _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive'
+ else
+ # Exported symbols can be pulled into shared objects from archives
+ _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience'
+ fi
+ _LT_TAGVAR(archive_cmds_need_lc, $1)=yes
+ # This is similar to how AIX traditionally builds its shared libraries.
+ _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
+ fi
+ fi
+ ;;
+
+ amigaos*)
+ case $host_cpu in
+ powerpc)
+ # see comment about AmigaOS4 .so support
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ _LT_TAGVAR(archive_expsym_cmds, $1)=''
+ ;;
+ m68k)
+ _LT_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_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+ _LT_TAGVAR(hardcode_minus_L, $1)=yes
+ ;;
+ esac
+ ;;
+
+ bsdi[[45]]*)
+ _LT_TAGVAR(export_dynamic_flag_spec, $1)=-rdynamic
+ ;;
+
+ cygwin* | mingw* | pw32* | cegcc*)
+ # 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.
+ case $cc_basename in
+ cl*)
+ # Native MSVC
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' '
+ _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
+ _LT_TAGVAR(always_export_symbols, $1)=yes
+ _LT_TAGVAR(file_list_spec, $1)='@'
+ # Tell ltmain to make .lib files, not .a files.
+ libext=lib
+ # Tell ltmain to make .dll files, not .so files.
+ shrext_cmds=".dll"
+ # FIXME: Setting linknames here is a bad hack.
+ _LT_TAGVAR(archive_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames='
+ _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
+ sed -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp;
+ else
+ sed -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp;
+ fi~
+ $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~
+ linknames='
+ # The linker will not automatically build a static lib if we build a DLL.
+ # _LT_TAGVAR(old_archive_from_new_cmds, $1)='true'
+ _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
+ _LT_TAGVAR(exclude_expsyms, $1)='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*'
+ _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1,DATA/'\'' | $SED -e '\''/^[[AITW]][[ ]]/s/.*[[ ]]//'\'' | sort | uniq > $export_symbols'
+ # Don't use ranlib
+ _LT_TAGVAR(old_postinstall_cmds, $1)='chmod 644 $oldlib'
+ _LT_TAGVAR(postlink_cmds, $1)='lt_outputfile="@OUTPUT@"~
+ lt_tool_outputfile="@TOOL_OUTPUT@"~
+ case $lt_outputfile in
+ *.exe|*.EXE) ;;
+ *)
+ lt_outputfile="$lt_outputfile.exe"
+ lt_tool_outputfile="$lt_tool_outputfile.exe"
+ ;;
+ esac~
+ if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then
+ $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1;
+ $RM "$lt_outputfile.manifest";
+ fi'
+ ;;
+ *)
+ # Assume MSVC wrapper
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' '
+ _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
+ # Tell ltmain to make .lib files, not .a files.
+ libext=lib
+ # Tell ltmain to make .dll files, not .so files.
+ shrext_cmds=".dll"
+ # FIXME: Setting linknames here is a bad hack.
+ _LT_TAGVAR(archive_cmds, $1)='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames='
+ # The linker will automatically build a .lib file if we build a DLL.
+ _LT_TAGVAR(old_archive_from_new_cmds, $1)='true'
+ # FIXME: Should let the user specify the lib program.
+ _LT_TAGVAR(old_archive_cmds, $1)='lib -OUT:$oldlib$oldobjs$old_deplibs'
+ _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
+ ;;
+ esac
+ ;;
+
+ darwin* | rhapsody*)
+ _LT_DARWIN_LINKER_FEATURES($1)
+ ;;
+
+ dgux*)
+ _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+ _LT_TAGVAR(hardcode_shlibpath_var, $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_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o'
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+ _LT_TAGVAR(hardcode_direct, $1)=yes
+ _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+ ;;
+
+ # Unfortunately, older versions of FreeBSD 2 do not have this feature.
+ freebsd2.*)
+ _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+ _LT_TAGVAR(hardcode_direct, $1)=yes
+ _LT_TAGVAR(hardcode_minus_L, $1)=yes
+ _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+ ;;
+
+ # FreeBSD 3 and greater uses gcc -shared to do shared libraries.
+ freebsd* | dragonfly*)
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+ _LT_TAGVAR(hardcode_direct, $1)=yes
+ _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+ ;;
+
+ hpux9*)
+ if test "$GCC" = yes; then
+ _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared $pic_flag ${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_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_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
+ _LT_TAGVAR(hardcode_libdir_separator, $1)=:
+ _LT_TAGVAR(hardcode_direct, $1)=yes
+
+ # hardcode_minus_L: Not really in the search PATH,
+ # but as the default location of the library.
+ _LT_TAGVAR(hardcode_minus_L, $1)=yes
+ _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+ ;;
+
+ hpux10*)
+ if test "$GCC" = yes && test "$with_gnu_ld" = no; then
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+ else
+ _LT_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
+ fi
+ if test "$with_gnu_ld" = no; then
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
+ _LT_TAGVAR(hardcode_libdir_separator, $1)=:
+ _LT_TAGVAR(hardcode_direct, $1)=yes
+ _LT_TAGVAR(hardcode_direct_absolute, $1)=yes
+ _LT_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_TAGVAR(hardcode_minus_L, $1)=yes
+ fi
+ ;;
+
+ hpux11*)
+ if test "$GCC" = yes && test "$with_gnu_ld" = no; then
+ case $host_cpu in
+ hppa*64*)
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ ia64*)
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ *)
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ esac
+ else
+ case $host_cpu in
+ hppa*64*)
+ _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ ia64*)
+ _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ *)
+ m4_if($1, [], [
+ # Older versions of the 11.00 compiler do not understand -b yet
+ # (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does)
+ _LT_LINKER_OPTION([if $CC understands -b],
+ _LT_TAGVAR(lt_cv_prog_compiler__b, $1), [-b],
+ [_LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'],
+ [_LT_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'])],
+ [_LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'])
+ ;;
+ esac
+ fi
+ if test "$with_gnu_ld" = no; then
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
+ _LT_TAGVAR(hardcode_libdir_separator, $1)=:
+
+ case $host_cpu in
+ hppa*64*|ia64*)
+ _LT_TAGVAR(hardcode_direct, $1)=no
+ _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+ ;;
+ *)
+ _LT_TAGVAR(hardcode_direct, $1)=yes
+ _LT_TAGVAR(hardcode_direct_absolute, $1)=yes
+ _LT_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_TAGVAR(hardcode_minus_L, $1)=yes
+ ;;
+ esac
+ fi
+ ;;
+
+ irix5* | irix6* | nonstopux*)
+ if test "$GCC" = yes; then
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+ # Try to use the -exported_symbol ld option, if it does not
+ # work, assume that -exports_file does not work either and
+ # implicitly export all symbols.
+ # This should be the same for all languages, so no per-tag cache variable.
+ AC_CACHE_CHECK([whether the $host_os linker accepts -exported_symbol],
+ [lt_cv_irix_exported_symbol],
+ [save_LDFLAGS="$LDFLAGS"
+ LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null"
+ AC_LINK_IFELSE(
+ [AC_LANG_SOURCE(
+ [AC_LANG_CASE([C], [[int foo (void) { return 0; }]],
+ [C++], [[int foo (void) { return 0; }]],
+ [Fortran 77], [[
+ subroutine foo
+ end]],
+ [Fortran], [[
+ subroutine foo
+ end]])])],
+ [lt_cv_irix_exported_symbol=yes],
+ [lt_cv_irix_exported_symbol=no])
+ LDFLAGS="$save_LDFLAGS"])
+ if test "$lt_cv_irix_exported_symbol" = yes; then
+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib'
+ fi
+ else
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib'
+ fi
+ _LT_TAGVAR(archive_cmds_need_lc, $1)='no'
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+ _LT_TAGVAR(hardcode_libdir_separator, $1)=:
+ _LT_TAGVAR(inherit_rpath, $1)=yes
+ _LT_TAGVAR(link_all_deplibs, $1)=yes
+ ;;
+
+ netbsd* | netbsdelf*-gnu)
+ if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
+ _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out
+ else
+ _LT_TAGVAR(archive_cmds, $1)='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF
+ fi
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+ _LT_TAGVAR(hardcode_direct, $1)=yes
+ _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+ ;;
+
+ newsos6)
+ _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ _LT_TAGVAR(hardcode_direct, $1)=yes
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+ _LT_TAGVAR(hardcode_libdir_separator, $1)=:
+ _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+ ;;
+
+ *nto* | *qnx*)
+ ;;
+
+ openbsd*)
+ if test -f /usr/libexec/ld.so; then
+ _LT_TAGVAR(hardcode_direct, $1)=yes
+ _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+ _LT_TAGVAR(hardcode_direct_absolute, $1)=yes
+ if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols'
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+ _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+ else
+ case $host_os in
+ openbsd[[01]].* | openbsd2.[[0-7]] | openbsd2.[[0-7]].*)
+ _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+ ;;
+ *)
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+ ;;
+ esac
+ fi
+ else
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ fi
+ ;;
+
+ os2*)
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+ _LT_TAGVAR(hardcode_minus_L, $1)=yes
+ _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
+ _LT_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_TAGVAR(old_archive_from_new_cmds, $1)='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def'
+ ;;
+
+ osf3*)
+ if test "$GCC" = yes; then
+ _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+ else
+ _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*'
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
+ fi
+ _LT_TAGVAR(archive_cmds_need_lc, $1)='no'
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+ _LT_TAGVAR(hardcode_libdir_separator, $1)=:
+ ;;
+
+ osf4* | osf5*) # as osf3* with the addition of -msym flag
+ if test "$GCC" = yes; then
+ _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $pic_flag $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+ else
+ _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*'
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~
+ $CC -shared${allow_undefined_flag} ${wl}-input ${wl}$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~$RM $lib.exp'
+
+ # Both c and cxx compiler support -rpath directly
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir'
+ fi
+ _LT_TAGVAR(archive_cmds_need_lc, $1)='no'
+ _LT_TAGVAR(hardcode_libdir_separator, $1)=:
+ ;;
+
+ solaris*)
+ _LT_TAGVAR(no_undefined_flag, $1)=' -z defs'
+ if test "$GCC" = yes; then
+ wlarc='${wl}'
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
+ $CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
+ else
+ case `$CC -V 2>&1` in
+ *"Compilers 5.0"*)
+ wlarc=''
+ _LT_TAGVAR(archive_cmds, $1)='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ _LT_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'
+ ;;
+ *)
+ wlarc='${wl}'
+ _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $compiler_flags'
+ _LT_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} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
+ ;;
+ esac
+ fi
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+ _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+ case $host_os in
+ solaris2.[[0-5]] | solaris2.[[0-5]].*) ;;
+ *)
+ # The compiler driver will combine and reorder linker options,
+ # but understands `-z linker_flag'. GCC discards it without `$wl',
+ # but is careful enough not to reorder.
+ # Supported since Solaris 2.6 (maybe 2.5.1?)
+ if test "$GCC" = yes; then
+ _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract'
+ else
+ _LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract'
+ fi
+ ;;
+ esac
+ _LT_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_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags'
+ else
+ _LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags'
+ fi
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+ _LT_TAGVAR(hardcode_direct, $1)=yes
+ _LT_TAGVAR(hardcode_minus_L, $1)=yes
+ _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+ ;;
+
+ sysv4)
+ case $host_vendor in
+ sni)
+ _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ _LT_TAGVAR(hardcode_direct, $1)=yes # is this really true???
+ ;;
+ siemens)
+ ## LD is ld it makes a PLAMLIB
+ ## CC just makes a GrossModule.
+ _LT_TAGVAR(archive_cmds, $1)='$LD -G -o $lib $libobjs $deplibs $linker_flags'
+ _LT_TAGVAR(reload_cmds, $1)='$CC -r -o $output$reload_objs'
+ _LT_TAGVAR(hardcode_direct, $1)=no
+ ;;
+ motorola)
+ _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ _LT_TAGVAR(hardcode_direct, $1)=no #Motorola manual says yes, but my tests say they lie
+ ;;
+ esac
+ runpath_var='LD_RUN_PATH'
+ _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+ ;;
+
+ sysv4.3*)
+ _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+ _LT_TAGVAR(export_dynamic_flag_spec, $1)='-Bexport'
+ ;;
+
+ sysv4*MP*)
+ if test -d /usr/nec; then
+ _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+ runpath_var=LD_RUN_PATH
+ hardcode_runpath_var=yes
+ _LT_TAGVAR(ld_shlibs, $1)=yes
+ fi
+ ;;
+
+ sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*)
+ _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text'
+ _LT_TAGVAR(archive_cmds_need_lc, $1)=no
+ _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+ runpath_var='LD_RUN_PATH'
+
+ if test "$GCC" = yes; then
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ else
+ _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ fi
+ ;;
+
+ sysv5* | sco3.2v5* | sco5v6*)
+ # Note: We can NOT use -z defs as we might desire, because we do not
+ # link with -lc, and that would cause any symbols used from libc to
+ # always be unresolved, which means just about no library would
+ # ever link correctly. If we're not using GNU ld we use -z text
+ # though, which does catch some bad symbols but isn't as heavy-handed
+ # as -z defs.
+ _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text'
+ _LT_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs'
+ _LT_TAGVAR(archive_cmds_need_lc, $1)=no
+ _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R,$libdir'
+ _LT_TAGVAR(hardcode_libdir_separator, $1)=':'
+ _LT_TAGVAR(link_all_deplibs, $1)=yes
+ _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport'
+ runpath_var='LD_RUN_PATH'
+
+ if test "$GCC" = yes; then
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ else
+ _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ fi
+ ;;
+
+ uts4*)
+ _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+ _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+ ;;
+
+ *)
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ esac
+
+ if test x$host_vendor = xsni; then
+ case $host in
+ sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
+ _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Blargedynsym'
+ ;;
+ esac
+ fi
+ fi
+])
+AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)])
+test "$_LT_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no
+
+_LT_TAGVAR(with_gnu_ld, $1)=$with_gnu_ld
+
+_LT_DECL([], [libext], [0], [Old archive suffix (normally "a")])dnl
+_LT_DECL([], [shrext_cmds], [1], [Shared library suffix (normally ".so")])dnl
+_LT_DECL([], [extract_expsyms_cmds], [2],
+ [The commands to extract the exported symbol list from a shared archive])
+
+#
+# Do we need to explicitly link libc?
+#
+case "x$_LT_TAGVAR(archive_cmds_need_lc, $1)" in
+x|xyes)
+ # Assume -lc should be added
+ _LT_TAGVAR(archive_cmds_need_lc, $1)=yes
+
+ if test "$enable_shared" = yes && test "$GCC" = yes; then
+ case $_LT_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_CACHE_CHECK([whether -lc should be explicitly linked in],
+ [lt_cv_]_LT_TAGVAR(archive_cmds_need_lc, $1),
+ [$RM conftest*
+ echo "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+ if AC_TRY_EVAL(ac_compile) 2>conftest.err; then
+ soname=conftest
+ lib=conftest
+ libobjs=conftest.$ac_objext
+ deplibs=
+ wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1)
+ pic_flag=$_LT_TAGVAR(lt_prog_compiler_pic, $1)
+ compiler_flags=-v
+ linker_flags=-v
+ verstring=
+ output_objdir=.
+ libname=conftest
+ lt_save_allow_undefined_flag=$_LT_TAGVAR(allow_undefined_flag, $1)
+ _LT_TAGVAR(allow_undefined_flag, $1)=
+ if AC_TRY_EVAL(_LT_TAGVAR(archive_cmds, $1) 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1)
+ then
+ lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1)=no
+ else
+ lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1)=yes
+ fi
+ _LT_TAGVAR(allow_undefined_flag, $1)=$lt_save_allow_undefined_flag
+ else
+ cat conftest.err 1>&5
+ fi
+ $RM conftest*
+ ])
+ _LT_TAGVAR(archive_cmds_need_lc, $1)=$lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1)
+ ;;
+ esac
+ fi
+ ;;
+esac
+
+_LT_TAGDECL([build_libtool_need_lc], [archive_cmds_need_lc], [0],
+ [Whether or not to add -lc for building shared libraries])
+_LT_TAGDECL([allow_libtool_libs_with_static_runtimes],
+ [enable_shared_with_static_runtimes], [0],
+ [Whether or not to disallow shared libs when runtime libs are static])
+_LT_TAGDECL([], [export_dynamic_flag_spec], [1],
+ [Compiler flag to allow reflexive dlopens])
+_LT_TAGDECL([], [whole_archive_flag_spec], [1],
+ [Compiler flag to generate shared objects directly from archives])
+_LT_TAGDECL([], [compiler_needs_object], [1],
+ [Whether the compiler copes with passing no objects directly])
+_LT_TAGDECL([], [old_archive_from_new_cmds], [2],
+ [Create an old-style archive from a shared archive])
+_LT_TAGDECL([], [old_archive_from_expsyms_cmds], [2],
+ [Create a temporary old-style archive to link instead of a shared archive])
+_LT_TAGDECL([], [archive_cmds], [2], [Commands used to build a shared archive])
+_LT_TAGDECL([], [archive_expsym_cmds], [2])
+_LT_TAGDECL([], [module_cmds], [2],
+ [Commands used to build a loadable module if different from building
+ a shared archive.])
+_LT_TAGDECL([], [module_expsym_cmds], [2])
+_LT_TAGDECL([], [with_gnu_ld], [1],
+ [Whether we are building with GNU ld or not])
+_LT_TAGDECL([], [allow_undefined_flag], [1],
+ [Flag that allows shared libraries with undefined symbols to be built])
+_LT_TAGDECL([], [no_undefined_flag], [1],
+ [Flag that enforces no undefined symbols])
+_LT_TAGDECL([], [hardcode_libdir_flag_spec], [1],
+ [Flag to hardcode $libdir into a binary during linking.
+ This must work even if $libdir does not exist])
+_LT_TAGDECL([], [hardcode_libdir_separator], [1],
+ [Whether we need a single "-rpath" flag with a separated argument])
+_LT_TAGDECL([], [hardcode_direct], [0],
+ [Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes
+ DIR into the resulting binary])
+_LT_TAGDECL([], [hardcode_direct_absolute], [0],
+ [Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes
+ DIR into the resulting binary and the resulting library dependency is
+ "absolute", i.e impossible to change by setting ${shlibpath_var} if the
+ library is relocated])
+_LT_TAGDECL([], [hardcode_minus_L], [0],
+ [Set to "yes" if using the -LDIR flag during linking hardcodes DIR
+ into the resulting binary])
+_LT_TAGDECL([], [hardcode_shlibpath_var], [0],
+ [Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR
+ into the resulting binary])
+_LT_TAGDECL([], [hardcode_automatic], [0],
+ [Set to "yes" if building a shared library automatically hardcodes DIR
+ into the library and all subsequent libraries and executables linked
+ against it])
+_LT_TAGDECL([], [inherit_rpath], [0],
+ [Set to yes if linker adds runtime paths of dependent libraries
+ to runtime path list])
+_LT_TAGDECL([], [link_all_deplibs], [0],
+ [Whether libtool must link a program against all its dependency libraries])
+_LT_TAGDECL([], [always_export_symbols], [0],
+ [Set to "yes" if exported symbols are required])
+_LT_TAGDECL([], [export_symbols_cmds], [2],
+ [The commands to list exported symbols])
+_LT_TAGDECL([], [exclude_expsyms], [1],
+ [Symbols that should not be listed in the preloaded symbols])
+_LT_TAGDECL([], [include_expsyms], [1],
+ [Symbols that must always be exported])
+_LT_TAGDECL([], [prelink_cmds], [2],
+ [Commands necessary for linking programs (against libraries) with templates])
+_LT_TAGDECL([], [postlink_cmds], [2],
+ [Commands necessary for finishing linking programs])
+_LT_TAGDECL([], [file_list_spec], [1],
+ [Specify filename containing input files])
+dnl FIXME: Not yet implemented
+dnl _LT_TAGDECL([], [thread_safe_flag_spec], [1],
+dnl [Compiler flag to generate thread safe objects])
+])# _LT_LINKER_SHLIBS
+
+
+# _LT_LANG_C_CONFIG([TAG])
+# ------------------------
+# Ensure that the configuration variables for a C compiler are suitably
+# defined. These variables are subsequently used by _LT_CONFIG to write
+# the compiler configuration to `libtool'.
+m4_defun([_LT_LANG_C_CONFIG],
+[m4_require([_LT_DECL_EGREP])dnl
+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_TAGVAR(objext, $1)=$objext
+
+# Code to be used in simple compile tests
+lt_simple_compile_test_code="int some_variable = 0;"
+
+# Code to be used in simple link tests
+lt_simple_link_test_code='int main(){return(0);}'
+
+_LT_TAG_COMPILER
+# Save the default compiler, since it gets overwritten when the other
+# tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP.
+compiler_DEFAULT=$CC
+
+# save warnings/boilerplate of simple test code
+_LT_COMPILER_BOILERPLATE
+_LT_LINKER_BOILERPLATE
+
+## CAVEAT EMPTOR:
+## There is no encapsulation within the following macros, do not change
+## the running order or otherwise move them around unless you know exactly
+## what you are doing...
+if test -n "$compiler"; then
+ _LT_COMPILER_NO_RTTI($1)
+ _LT_COMPILER_PIC($1)
+ _LT_COMPILER_C_O($1)
+ _LT_COMPILER_FILE_LOCKS($1)
+ _LT_LINKER_SHLIBS($1)
+ _LT_SYS_DYNAMIC_LINKER($1)
+ _LT_LINKER_HARDCODE_LIBPATH($1)
+ LT_SYS_DLOPEN_SELF
+ _LT_CMD_STRIPLIB
+
+ # Report which library types will actually be built
+ AC_MSG_CHECKING([if libtool supports shared libraries])
+ AC_MSG_RESULT([$can_build_shared])
+
+ AC_MSG_CHECKING([whether to build shared libraries])
+ test "$can_build_shared" = "no" && enable_shared=no
+
+ # On AIX, shared libraries and static libraries use the same namespace, and
+ # are all built from PIC.
+ case $host_os in
+ aix3*)
+ test "$enable_shared" = yes && enable_static=no
+ if test -n "$RANLIB"; then
+ archive_cmds="$archive_cmds~\$RANLIB \$lib"
+ postinstall_cmds='$RANLIB $lib'
+ fi
+ ;;
+
+ aix[[4-9]]*)
+ if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then
+ test "$enable_shared" = yes && enable_static=no
+ fi
+ ;;
+ esac
+ AC_MSG_RESULT([$enable_shared])
+
+ AC_MSG_CHECKING([whether to build static libraries])
+ # Make sure either enable_shared or enable_static is yes.
+ test "$enable_shared" = yes || enable_static=yes
+ AC_MSG_RESULT([$enable_static])
+
+ _LT_CONFIG($1)
+fi
+AC_LANG_POP
+CC="$lt_save_CC"
+])# _LT_LANG_C_CONFIG
+
+
+# _LT_LANG_CXX_CONFIG([TAG])
+# --------------------------
+# Ensure that the configuration variables for a C++ compiler are suitably
+# defined. These variables are subsequently used by _LT_CONFIG to write
+# the compiler configuration to `libtool'.
+m4_defun([_LT_LANG_CXX_CONFIG],
+[m4_require([_LT_FILEUTILS_DEFAULTS])dnl
+m4_require([_LT_DECL_EGREP])dnl
+m4_require([_LT_PATH_MANIFEST_TOOL])dnl
+if test -n "$CXX" && ( test "X$CXX" != "Xno" &&
+ ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) ||
+ (test "X$CXX" != "Xg++"))) ; then
+ AC_PROG_CXXCPP
+else
+ _lt_caught_CXX_error=yes
+fi
+
+AC_LANG_PUSH(C++)
+_LT_TAGVAR(archive_cmds_need_lc, $1)=no
+_LT_TAGVAR(allow_undefined_flag, $1)=
+_LT_TAGVAR(always_export_symbols, $1)=no
+_LT_TAGVAR(archive_expsym_cmds, $1)=
+_LT_TAGVAR(compiler_needs_object, $1)=no
+_LT_TAGVAR(export_dynamic_flag_spec, $1)=
+_LT_TAGVAR(hardcode_direct, $1)=no
+_LT_TAGVAR(hardcode_direct_absolute, $1)=no
+_LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
+_LT_TAGVAR(hardcode_libdir_separator, $1)=
+_LT_TAGVAR(hardcode_minus_L, $1)=no
+_LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported
+_LT_TAGVAR(hardcode_automatic, $1)=no
+_LT_TAGVAR(inherit_rpath, $1)=no
+_LT_TAGVAR(module_cmds, $1)=
+_LT_TAGVAR(module_expsym_cmds, $1)=
+_LT_TAGVAR(link_all_deplibs, $1)=unknown
+_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds
+_LT_TAGVAR(reload_flag, $1)=$reload_flag
+_LT_TAGVAR(reload_cmds, $1)=$reload_cmds
+_LT_TAGVAR(no_undefined_flag, $1)=
+_LT_TAGVAR(whole_archive_flag_spec, $1)=
+_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no
+
+# Source file extension for C++ test sources.
+ac_ext=cpp
+
+# Object file extension for compiled C++ test sources.
+objext=o
+_LT_TAGVAR(objext, $1)=$objext
+
+# No sense in running all these tests if we already determined that
+# the CXX compiler isn't working. Some variables (like enable_shared)
+# are currently assumed to apply to all compilers on this platform,
+# and will be corrupted by setting them based on a non-working compiler.
+if test "$_lt_caught_CXX_error" != yes; then
+ # Code to be used in simple compile tests
+ lt_simple_compile_test_code="int some_variable = 0;"
+
+ # Code to be used in simple link tests
+ lt_simple_link_test_code='int main(int, char *[[]]) { return(0); }'
+
+ # ltmain only uses $CC for tagged configurations so make sure $CC is set.
+ _LT_TAG_COMPILER
+
+ # save warnings/boilerplate of simple test code
+ _LT_COMPILER_BOILERPLATE
+ _LT_LINKER_BOILERPLATE
+
+ # Allow CC to be a program name with arguments.
+ lt_save_CC=$CC
+ lt_save_CFLAGS=$CFLAGS
+ lt_save_LD=$LD
+ lt_save_GCC=$GCC
+ GCC=$GXX
+ lt_save_with_gnu_ld=$with_gnu_ld
+ lt_save_path_LD=$lt_cv_path_LD
+ if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then
+ lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx
+ else
+ $as_unset lt_cv_prog_gnu_ld
+ fi
+ if test -n "${lt_cv_path_LDCXX+set}"; then
+ lt_cv_path_LD=$lt_cv_path_LDCXX
+ else
+ $as_unset lt_cv_path_LD
+ fi
+ test -z "${LDCXX+set}" || LD=$LDCXX
+ CC=${CXX-"c++"}
+ CFLAGS=$CXXFLAGS
+ compiler=$CC
+ _LT_TAGVAR(compiler, $1)=$CC
+ _LT_CC_BASENAME([$compiler])
+
+ if test -n "$compiler"; then
+ # We don't want -fno-exception when compiling C++ code, so set the
+ # no_builtin_flag separately
+ if test "$GXX" = yes; then
+ _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin'
+ else
+ _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=
+ fi
+
+ if test "$GXX" = yes; then
+ # Set up default GNU C++ configuration
+
+ LT_PATH_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_TAGVAR(archive_cmds, $1)='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+ _LT_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_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
+ else
+ _LT_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_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib'
+ fi
+
+ # Commands to make compiler produce verbose output that lists
+ # what "hidden" libraries, object files and flags are used when
+ # linking a shared library.
+ output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $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_TAGVAR(ld_shlibs, $1)=yes
+ case $host_os in
+ aix3*)
+ # FIXME: insert proper C++ library support
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ aix[[4-9]]*)
+ if test "$host_cpu" = ia64; then
+ # On IA64, the linker does run time linking by default, so we don't
+ # have to do anything special.
+ aix_use_runtimelinking=no
+ exp_sym_flag='-Bexport'
+ no_entry_flag=""
+ else
+ aix_use_runtimelinking=no
+
+ # Test if we are trying to use run time linking or normal
+ # AIX style linking. If -brtl is somewhere in LDFLAGS, we
+ # need to do runtime linking.
+ case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*)
+ for ld_flag in $LDFLAGS; do
+ case $ld_flag in
+ *-brtl*)
+ aix_use_runtimelinking=yes
+ break
+ ;;
+ esac
+ done
+ ;;
+ esac
+
+ exp_sym_flag='-bexport'
+ no_entry_flag='-bnoentry'
+ fi
+
+ # When large executables or shared objects are built, AIX ld can
+ # have problems creating the table of contents. If linking a library
+ # or program results in "error TOC overflow" add -mminimal-toc to
+ # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not
+ # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
+
+ _LT_TAGVAR(archive_cmds, $1)=''
+ _LT_TAGVAR(hardcode_direct, $1)=yes
+ _LT_TAGVAR(hardcode_direct_absolute, $1)=yes
+ _LT_TAGVAR(hardcode_libdir_separator, $1)=':'
+ _LT_TAGVAR(link_all_deplibs, $1)=yes
+ _LT_TAGVAR(file_list_spec, $1)='${wl}-f,'
+
+ if test "$GXX" = yes; then
+ case $host_os in aix4.[[012]]|aix4.[[012]].*)
+ # We only want to do this on AIX 4.2 and lower, the check
+ # below for broken collect2 doesn't work under 4.3+
+ collect2name=`${CC} -print-prog-name=collect2`
+ if test -f "$collect2name" &&
+ strings "$collect2name" | $GREP resolve_lib_name >/dev/null
+ then
+ # We have reworked collect2
+ :
+ else
+ # We have old collect2
+ _LT_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_TAGVAR(hardcode_minus_L, $1)=yes
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+ _LT_TAGVAR(hardcode_libdir_separator, $1)=
+ fi
+ esac
+ shared_flag='-shared'
+ if test "$aix_use_runtimelinking" = yes; then
+ shared_flag="$shared_flag "'${wl}-G'
+ fi
+ else
+ # not using gcc
+ if test "$host_cpu" = ia64; then
+ # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
+ # chokes on -Wl,-G. The following line is correct:
+ shared_flag='-G'
+ else
+ if test "$aix_use_runtimelinking" = yes; then
+ shared_flag='${wl}-G'
+ else
+ shared_flag='${wl}-bM:SRE'
+ fi
+ fi
+ fi
+
+ _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-bexpall'
+ # It seems that -bexpall does not export symbols beginning with
+ # underscore (_), so it is better to generate a list of symbols to
+ # export.
+ _LT_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_TAGVAR(allow_undefined_flag, $1)='-berok'
+ # Determine the default libpath from the value encoded in an empty
+ # executable.
+ _LT_SYS_MODULE_PATH_AIX([$1])
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath"
+
+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag"
+ else
+ if test "$host_cpu" = ia64; then
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib'
+ _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs"
+ _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols"
+ else
+ # Determine the default libpath from the value encoded in an
+ # empty executable.
+ _LT_SYS_MODULE_PATH_AIX([$1])
+ _LT_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_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok'
+ _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok'
+ if test "$with_gnu_ld" = yes; then
+ # We only use this code for GNU lds that support --whole-archive.
+ _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive'
+ else
+ # Exported symbols can be pulled into shared objects from archives
+ _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience'
+ fi
+ _LT_TAGVAR(archive_cmds_need_lc, $1)=yes
+ # This is similar to how AIX traditionally builds its shared
+ # libraries.
+ _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
+ fi
+ fi
+ ;;
+
+ beos*)
+ if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
+ _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
+ # Joseph Beckenbach <jrb3 at best.com> says some releases of gcc
+ # support --undefined. This deserves some investigation. FIXME
+ _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ else
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ fi
+ ;;
+
+ chorus*)
+ case $cc_basename in
+ *)
+ # FIXME: insert proper C++ library support
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ esac
+ ;;
+
+ cygwin* | mingw* | pw32* | cegcc*)
+ case $GXX,$cc_basename in
+ ,cl* | no,cl*)
+ # Native MSVC
+ # hardcode_libdir_flag_spec is actually meaningless, as there is
+ # no search path for DLLs.
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' '
+ _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
+ _LT_TAGVAR(always_export_symbols, $1)=yes
+ _LT_TAGVAR(file_list_spec, $1)='@'
+ # Tell ltmain to make .lib files, not .a files.
+ libext=lib
+ # Tell ltmain to make .dll files, not .so files.
+ shrext_cmds=".dll"
+ # FIXME: Setting linknames here is a bad hack.
+ _LT_TAGVAR(archive_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames='
+ _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
+ $SED -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp;
+ else
+ $SED -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp;
+ fi~
+ $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~
+ linknames='
+ # The linker will not automatically build a static lib if we build a DLL.
+ # _LT_TAGVAR(old_archive_from_new_cmds, $1)='true'
+ _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
+ # Don't use ranlib
+ _LT_TAGVAR(old_postinstall_cmds, $1)='chmod 644 $oldlib'
+ _LT_TAGVAR(postlink_cmds, $1)='lt_outputfile="@OUTPUT@"~
+ lt_tool_outputfile="@TOOL_OUTPUT@"~
+ case $lt_outputfile in
+ *.exe|*.EXE) ;;
+ *)
+ lt_outputfile="$lt_outputfile.exe"
+ lt_tool_outputfile="$lt_tool_outputfile.exe"
+ ;;
+ esac~
+ func_to_tool_file "$lt_outputfile"~
+ if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then
+ $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1;
+ $RM "$lt_outputfile.manifest";
+ fi'
+ ;;
+ *)
+ # g++
+ # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless,
+ # as there is no search path for DLLs.
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+ _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-all-symbols'
+ _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
+ _LT_TAGVAR(always_export_symbols, $1)=no
+ _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
+
+ if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
+ # If the export-symbols file already is a .def file (1st line
+ # is EXPORTS), use it as is; otherwise, prepend...
+ _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
+ cp $export_symbols $output_objdir/$soname.def;
+ else
+ echo EXPORTS > $output_objdir/$soname.def;
+ cat $export_symbols >> $output_objdir/$soname.def;
+ fi~
+ $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
+ else
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ fi
+ ;;
+ esac
+ ;;
+ darwin* | rhapsody*)
+ _LT_DARWIN_LINKER_FEATURES($1)
+ ;;
+
+ dgux*)
+ case $cc_basename in
+ ec++*)
+ # FIXME: insert proper C++ library support
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ ghcx*)
+ # Green Hills C++ Compiler
+ # FIXME: insert proper C++ library support
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ *)
+ # FIXME: insert proper C++ library support
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ esac
+ ;;
+
+ freebsd2.*)
+ # C++ shared libraries reported to be fairly broken before
+ # switch to ELF
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ ;;
+
+ freebsd-elf*)
+ _LT_TAGVAR(archive_cmds_need_lc, $1)=no
+ ;;
+
+ freebsd* | dragonfly*)
+ # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF
+ # conventions
+ _LT_TAGVAR(ld_shlibs, $1)=yes
+ ;;
+
+ gnu*)
+ ;;
+
+ haiku*)
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ _LT_TAGVAR(link_all_deplibs, $1)=yes
+ ;;
+
+ hpux9*)
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
+ _LT_TAGVAR(hardcode_libdir_separator, $1)=:
+ _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+ _LT_TAGVAR(hardcode_direct, $1)=yes
+ _LT_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_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ aCC*)
+ _LT_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; func_echo_all "$list"'
+ ;;
+ *)
+ if test "$GXX" = yes; then
+ _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared -nostdlib $pic_flag ${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_TAGVAR(ld_shlibs, $1)=no
+ fi
+ ;;
+ esac
+ ;;
+
+ hpux10*|hpux11*)
+ if test $with_gnu_ld = no; then
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
+ _LT_TAGVAR(hardcode_libdir_separator, $1)=:
+
+ case $host_cpu in
+ hppa*64*|ia64*)
+ ;;
+ *)
+ _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+ ;;
+ esac
+ fi
+ case $host_cpu in
+ hppa*64*|ia64*)
+ _LT_TAGVAR(hardcode_direct, $1)=no
+ _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+ ;;
+ *)
+ _LT_TAGVAR(hardcode_direct, $1)=yes
+ _LT_TAGVAR(hardcode_direct_absolute, $1)=yes
+ _LT_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_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ aCC*)
+ case $host_cpu in
+ hppa*64*)
+ _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+ ;;
+ ia64*)
+ _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+ ;;
+ *)
+ _LT_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; func_echo_all "$list"'
+ ;;
+ *)
+ if test "$GXX" = yes; then
+ if test $with_gnu_ld = no; then
+ case $host_cpu in
+ hppa*64*)
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+ ;;
+ ia64*)
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+ ;;
+ *)
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $pic_flag ${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_TAGVAR(ld_shlibs, $1)=no
+ fi
+ ;;
+ esac
+ ;;
+
+ interix[[3-9]]*)
+ _LT_TAGVAR(hardcode_direct, $1)=no
+ _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+ _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+ # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc.
+ # Instead, shared libraries are loaded at an image base (0x10000000 by
+ # default) and relocated if they conflict, which is a slow very memory
+ # consuming and fragmenting process. To avoid this, we pick a random,
+ # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link
+ # time. Moving up from 0x10000000 also allows more sbrk(2) space.
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+ ;;
+ irix5* | irix6*)
+ case $cc_basename in
+ CC*)
+ # SGI C++
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
+
+ # Archives containing C++ object files must be created using
+ # "CC -ar", where "CC" is the IRIX C++ compiler. This is
+ # necessary to make sure instantiated templates are included
+ # in the archive.
+ _LT_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_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+ else
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` -o $lib'
+ fi
+ fi
+ _LT_TAGVAR(link_all_deplibs, $1)=yes
+ ;;
+ esac
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+ _LT_TAGVAR(hardcode_libdir_separator, $1)=:
+ _LT_TAGVAR(inherit_rpath, $1)=yes
+ ;;
+
+ linux* | k*bsd*-gnu | kopensolaris*-gnu)
+ case $cc_basename in
+ KCC*)
+ # Kuck and Associates, Inc. (KAI) C++ Compiler
+
+ # KCC will only create a shared library if the output file
+ # ends with ".so" (or ".sl" for HP-UX), so rename the library
+ # to its proper name (with version) after linking.
+ _LT_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_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; func_echo_all "$list"'
+
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+ _LT_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_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs'
+ ;;
+ icpc* | ecpc* )
+ # Intel C++
+ with_gnu_ld=yes
+ # version 8.0 and above of icpc choke on multiply defined symbols
+ # if we add $predep_objects and $postdep_objects, however 7.1 and
+ # earlier do not add the objects themselves.
+ case `$CC -V 2>&1` in
+ *"Version 7."*)
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ ;;
+ *) # Version 8.0 or newer
+ tmp_idyn=
+ case $host_cpu in
+ ia64*) tmp_idyn=' -i_dynamic';;
+ esac
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ ;;
+ esac
+ _LT_TAGVAR(archive_cmds_need_lc, $1)=no
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+ _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
+ _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive'
+ ;;
+ pgCC* | pgcpp*)
+ # Portland Group C++ compiler
+ case `$CC -V` in
+ *pgCC\ [[1-5]].* | *pgcpp\ [[1-5]].*)
+ _LT_TAGVAR(prelink_cmds, $1)='tpldir=Template.dir~
+ rm -rf $tpldir~
+ $CC --prelink_objects --instantiation_dir $tpldir $objs $libobjs $compile_deplibs~
+ compile_command="$compile_command `find $tpldir -name \*.o | sort | $NL2SP`"'
+ _LT_TAGVAR(old_archive_cmds, $1)='tpldir=Template.dir~
+ rm -rf $tpldir~
+ $CC --prelink_objects --instantiation_dir $tpldir $oldobjs$old_deplibs~
+ $AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | sort | $NL2SP`~
+ $RANLIB $oldlib'
+ _LT_TAGVAR(archive_cmds, $1)='tpldir=Template.dir~
+ rm -rf $tpldir~
+ $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~
+ $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='tpldir=Template.dir~
+ rm -rf $tpldir~
+ $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~
+ $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib'
+ ;;
+ *) # Version 6 and above use weak symbols
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib'
+ ;;
+ esac
+
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir'
+ _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
+ _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
+ ;;
+ cxx*)
+ # Compaq C++
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ _LT_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_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir'
+ _LT_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=`func_echo_all "$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; func_echo_all "X$list" | $Xsed'
+ ;;
+ xl* | mpixl* | bgxl*)
+ # IBM XL 8.0 on PPC, with GNU ld
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+ _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
+ _LT_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ if test "x$supports_anon_versioning" = xyes; then
+ _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~
+ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
+ echo "local: *; };" >> $output_objdir/$libname.ver~
+ $CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
+ fi
+ ;;
+ *)
+ case `$CC -V 2>&1 | sed 5q` in
+ *Sun\ C*)
+ # Sun C++ 5.9
+ _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs'
+ _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file ${wl}$export_symbols'
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+ _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
+ _LT_TAGVAR(compiler_needs_object, $1)=yes
+
+ # Not sure whether something based on
+ # $CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1
+ # would be better.
+ output_verbose_link_cmd='func_echo_all'
+
+ # 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_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs'
+ ;;
+ esac
+ ;;
+ esac
+ ;;
+
+ lynxos*)
+ # FIXME: insert proper C++ library support
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ ;;
+
+ m88k*)
+ # FIXME: insert proper C++ library support
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ ;;
+
+ mvs*)
+ case $cc_basename in
+ cxx*)
+ # FIXME: insert proper C++ library support
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ *)
+ # FIXME: insert proper C++ library support
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ esac
+ ;;
+
+ netbsd*)
+ if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
+ _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags'
+ wlarc=
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+ _LT_TAGVAR(hardcode_direct, $1)=yes
+ _LT_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::"'
+ ;;
+
+ *nto* | *qnx*)
+ _LT_TAGVAR(ld_shlibs, $1)=yes
+ ;;
+
+ openbsd2*)
+ # C++ shared libraries are fairly broken
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ ;;
+
+ openbsd*)
+ if test -f /usr/libexec/ld.so; then
+ _LT_TAGVAR(hardcode_direct, $1)=yes
+ _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+ _LT_TAGVAR(hardcode_direct_absolute, $1)=yes
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib'
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+ if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib'
+ _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+ _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
+ fi
+ output_verbose_link_cmd=func_echo_all
+ else
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ fi
+ ;;
+
+ osf3* | 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_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_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+ _LT_TAGVAR(hardcode_libdir_separator, $1)=:
+
+ # Archives containing C++ object files must be created using
+ # the KAI C++ compiler.
+ case $host in
+ osf3*) _LT_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' ;;
+ *) _LT_TAGVAR(old_archive_cmds, $1)='$CC -o $oldlib $oldobjs' ;;
+ esac
+ ;;
+ RCC*)
+ # Rational C++ 2.4.1
+ # FIXME: insert proper C++ library support
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ cxx*)
+ case $host in
+ osf3*)
+ _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && func_echo_all "${wl}-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+ ;;
+ *)
+ _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*'
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~
+ echo "-hidden">> $lib.exp~
+ $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname ${wl}-input ${wl}$lib.exp `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~
+ $RM $lib.exp'
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir'
+ ;;
+ esac
+
+ _LT_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=`func_echo_all "$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; func_echo_all "$list"'
+ ;;
+ *)
+ if test "$GXX" = yes && test "$with_gnu_ld" = no; then
+ _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
+ case $host in
+ osf3*)
+ _LT_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" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+ ;;
+ *)
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+ ;;
+ esac
+
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+ _LT_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 -v "^Configured with:" | $GREP "\-L"'
+
+ else
+ # FIXME: insert proper C++ library support
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ fi
+ ;;
+ esac
+ ;;
+
+ psos*)
+ # FIXME: insert proper C++ library support
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ ;;
+
+ sunos4*)
+ case $cc_basename in
+ CC*)
+ # Sun C++ 4.x
+ # FIXME: insert proper C++ library support
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ lcc*)
+ # Lucid
+ # FIXME: insert proper C++ library support
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ *)
+ # FIXME: insert proper C++ library support
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ esac
+ ;;
+
+ solaris*)
+ case $cc_basename in
+ CC* | sunCC*)
+ # Sun C++ 4.2, 5.x and Centerline C++
+ _LT_TAGVAR(archive_cmds_need_lc,$1)=yes
+ _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs'
+ _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
+ $CC -G${allow_undefined_flag} ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp'
+
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+ _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+ case $host_os in
+ solaris2.[[0-5]] | solaris2.[[0-5]].*) ;;
+ *)
+ # The compiler driver will combine and reorder linker options,
+ # but understands `-z linker_flag'.
+ # Supported since Solaris 2.6 (maybe 2.5.1?)
+ _LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract'
+ ;;
+ esac
+ _LT_TAGVAR(link_all_deplibs, $1)=yes
+
+ output_verbose_link_cmd='func_echo_all'
+
+ # 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_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs'
+ ;;
+ gcx*)
+ # Green Hills C++ Compiler
+ _LT_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_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_TAGVAR(no_undefined_flag, $1)=' ${wl}-z ${wl}defs'
+ if $CC --version | $GREP -v '^2\.7' > /dev/null; then
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
+ $CC -shared $pic_flag -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 -v "^Configured with:" | $GREP "\-L"'
+ else
+ # g++ 2.7 appears to require `-G' NOT `-shared' on this
+ # platform.
+ _LT_TAGVAR(archive_cmds, $1)='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
+ _LT_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 -v "^Configured with:" | $GREP "\-L"'
+ fi
+
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $wl$libdir'
+ case $host_os in
+ solaris2.[[0-5]] | solaris2.[[0-5]].*) ;;
+ *)
+ _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract'
+ ;;
+ esac
+ fi
+ ;;
+ esac
+ ;;
+
+ sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*)
+ _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text'
+ _LT_TAGVAR(archive_cmds_need_lc, $1)=no
+ _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+ runpath_var='LD_RUN_PATH'
+
+ case $cc_basename in
+ CC*)
+ _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ *)
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ esac
+ ;;
+
+ sysv5* | sco3.2v5* | sco5v6*)
+ # Note: We can NOT use -z defs as we might desire, because we do not
+ # link with -lc, and that would cause any symbols used from libc to
+ # always be unresolved, which means just about no library would
+ # ever link correctly. If we're not using GNU ld we use -z text
+ # though, which does catch some bad symbols but isn't as heavy-handed
+ # as -z defs.
+ _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text'
+ _LT_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs'
+ _LT_TAGVAR(archive_cmds_need_lc, $1)=no
+ _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R,$libdir'
+ _LT_TAGVAR(hardcode_libdir_separator, $1)=':'
+ _LT_TAGVAR(link_all_deplibs, $1)=yes
+ _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport'
+ runpath_var='LD_RUN_PATH'
+
+ case $cc_basename in
+ CC*)
+ _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ _LT_TAGVAR(old_archive_cmds, $1)='$CC -Tprelink_objects $oldobjs~
+ '"$_LT_TAGVAR(old_archive_cmds, $1)"
+ _LT_TAGVAR(reload_cmds, $1)='$CC -Tprelink_objects $reload_objs~
+ '"$_LT_TAGVAR(reload_cmds, $1)"
+ ;;
+ *)
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ esac
+ ;;
+
+ tandem*)
+ case $cc_basename in
+ NCC*)
+ # NonStop-UX NCC 3.20
+ # FIXME: insert proper C++ library support
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ *)
+ # FIXME: insert proper C++ library support
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ esac
+ ;;
+
+ vxworks*)
+ # FIXME: insert proper C++ library support
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ ;;
+
+ *)
+ # FIXME: insert proper C++ library support
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ esac
+
+ AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)])
+ test "$_LT_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no
+
+ _LT_TAGVAR(GCC, $1)="$GXX"
+ _LT_TAGVAR(LD, $1)="$LD"
+
+ ## CAVEAT EMPTOR:
+ ## There is no encapsulation within the following macros, do not change
+ ## the running order or otherwise move them around unless you know exactly
+ ## what you are doing...
+ _LT_SYS_HIDDEN_LIBDEPS($1)
+ _LT_COMPILER_PIC($1)
+ _LT_COMPILER_C_O($1)
+ _LT_COMPILER_FILE_LOCKS($1)
+ _LT_LINKER_SHLIBS($1)
+ _LT_SYS_DYNAMIC_LINKER($1)
+ _LT_LINKER_HARDCODE_LIBPATH($1)
+
+ _LT_CONFIG($1)
+ fi # test -n "$compiler"
+
+ CC=$lt_save_CC
+ CFLAGS=$lt_save_CFLAGS
+ LDCXX=$LD
+ LD=$lt_save_LD
+ GCC=$lt_save_GCC
+ 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
+fi # test "$_lt_caught_CXX_error" != yes
+
+AC_LANG_POP
+])# _LT_LANG_CXX_CONFIG
+
+
+# _LT_FUNC_STRIPNAME_CNF
+# ----------------------
+# func_stripname_cnf prefix suffix name
+# strip PREFIX and SUFFIX off of NAME.
+# PREFIX and SUFFIX must not contain globbing or regex special
+# characters, hashes, percent signs, but SUFFIX may contain a leading
+# dot (in which case that matches only a dot).
+#
+# This function is identical to the (non-XSI) version of func_stripname,
+# except this one can be used by m4 code that may be executed by configure,
+# rather than the libtool script.
+m4_defun([_LT_FUNC_STRIPNAME_CNF],[dnl
+AC_REQUIRE([_LT_DECL_SED])
+AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH])
+func_stripname_cnf ()
+{
+ case ${2} in
+ .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;;
+ *) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;;
+ esac
+} # func_stripname_cnf
+])# _LT_FUNC_STRIPNAME_CNF
+
+# _LT_SYS_HIDDEN_LIBDEPS([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.
+m4_defun([_LT_SYS_HIDDEN_LIBDEPS],
+[m4_require([_LT_FILEUTILS_DEFAULTS])dnl
+AC_REQUIRE([_LT_FUNC_STRIPNAME_CNF])dnl
+# Dependencies to place before and after the object being linked:
+_LT_TAGVAR(predep_objects, $1)=
+_LT_TAGVAR(postdep_objects, $1)=
+_LT_TAGVAR(predeps, $1)=
+_LT_TAGVAR(postdeps, $1)=
+_LT_TAGVAR(compiler_lib_search_path, $1)=
+
+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...
+m4_if([$1], [], [cat > conftest.$ac_ext <<_LT_EOF
+int a;
+void foo (void) { a = 0; }
+_LT_EOF
+], [$1], [CXX], [cat > conftest.$ac_ext <<_LT_EOF
+class Foo
+{
+public:
+ Foo (void) { a = 0; }
+private:
+ int a;
+};
+_LT_EOF
+], [$1], [F77], [cat > conftest.$ac_ext <<_LT_EOF
+ subroutine foo
+ implicit none
+ integer*4 a
+ a=0
+ return
+ end
+_LT_EOF
+], [$1], [FC], [cat > conftest.$ac_ext <<_LT_EOF
+ subroutine foo
+ implicit none
+ integer a
+ a=0
+ return
+ end
+_LT_EOF
+], [$1], [GCJ], [cat > conftest.$ac_ext <<_LT_EOF
+public class foo {
+ private int a;
+ public void bar (void) {
+ a = 0;
+ }
+};
+_LT_EOF
+], [$1], [GO], [cat > conftest.$ac_ext <<_LT_EOF
+package foo
+func foo() {
+}
+_LT_EOF
+])
+
+_lt_libdeps_save_CFLAGS=$CFLAGS
+case "$CC $CFLAGS " in #(
+*\ -flto*\ *) CFLAGS="$CFLAGS -fno-lto" ;;
+*\ -fwhopr*\ *) CFLAGS="$CFLAGS -fno-whopr" ;;
+*\ -fuse-linker-plugin*\ *) CFLAGS="$CFLAGS -fno-use-linker-plugin" ;;
+esac
+
+dnl Parse the compiler output and extract the necessary
+dnl objects, libraries and library flags.
+if AC_TRY_EVAL(ac_compile); 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
+
+ for p in `eval "$output_verbose_link_cmd"`; do
+ case ${prev}${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
+ fi
+
+ # Expand the sysroot to ease extracting the directories later.
+ if test -z "$prev"; then
+ case $p in
+ -L*) func_stripname_cnf '-L' '' "$p"; prev=-L; p=$func_stripname_result ;;
+ -R*) func_stripname_cnf '-R' '' "$p"; prev=-R; p=$func_stripname_result ;;
+ -l*) func_stripname_cnf '-l' '' "$p"; prev=-l; p=$func_stripname_result ;;
+ esac
+ fi
+ case $p in
+ =*) func_stripname_cnf '=' '' "$p"; p=$lt_sysroot$func_stripname_result ;;
+ esac
+ if test "$pre_test_object_deps_done" = no; then
+ case ${prev} 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 "$_LT_TAGVAR(compiler_lib_search_path, $1)"; then
+ _LT_TAGVAR(compiler_lib_search_path, $1)="${prev}${p}"
+ else
+ _LT_TAGVAR(compiler_lib_search_path, $1)="${_LT_TAGVAR(compiler_lib_search_path, $1)} ${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 "$_LT_TAGVAR(postdeps, $1)"; then
+ _LT_TAGVAR(postdeps, $1)="${prev}${p}"
+ else
+ _LT_TAGVAR(postdeps, $1)="${_LT_TAGVAR(postdeps, $1)} ${prev}${p}"
+ fi
+ fi
+ prev=
+ ;;
+
+ *.lto.$objext) ;; # Ignore GCC LTO objects
+ *.$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 "$_LT_TAGVAR(predep_objects, $1)"; then
+ _LT_TAGVAR(predep_objects, $1)="$p"
+ else
+ _LT_TAGVAR(predep_objects, $1)="$_LT_TAGVAR(predep_objects, $1) $p"
+ fi
+ else
+ if test -z "$_LT_TAGVAR(postdep_objects, $1)"; then
+ _LT_TAGVAR(postdep_objects, $1)="$p"
+ else
+ _LT_TAGVAR(postdep_objects, $1)="$_LT_TAGVAR(postdep_objects, $1) $p"
+ fi
+ fi
+ ;;
+
+ *) ;; # Ignore the rest.
+
+ esac
+ done
+
+ # Clean up.
+ rm -f a.out a.exe
+else
+ echo "libtool.m4: error: problem compiling $1 test program"
+fi
+
+$RM -f confest.$objext
+CFLAGS=$_lt_libdeps_save_CFLAGS
+
+# PORTME: override above test on systems where it is broken
+m4_if([$1], [CXX],
+[case $host_os in
+interix[[3-9]]*)
+ # Interix 3.5 installs completely hosed .la files for C++, so rather than
+ # hack all around it, let's just trust "g++" to DTRT.
+ _LT_TAGVAR(predep_objects,$1)=
+ _LT_TAGVAR(postdep_objects,$1)=
+ _LT_TAGVAR(postdeps,$1)=
+ ;;
+
+linux*)
+ case `$CC -V 2>&1 | sed 5q` in
+ *Sun\ C*)
+ # Sun C++ 5.9
+
+ # The more standards-conforming stlport4 library is
+ # incompatible with the Cstd library. Avoid specifying
+ # it if it's in CXXFLAGS. Ignore libCrun as
+ # -library=stlport4 depends on it.
+ case " $CXX $CXXFLAGS " in
+ *" -library=stlport4 "*)
+ solaris_use_stlport4=yes
+ ;;
+ esac
+
+ if test "$solaris_use_stlport4" != yes; then
+ _LT_TAGVAR(postdeps,$1)='-library=Cstd -library=Crun'
+ fi
+ ;;
+ esac
+ ;;
+
+solaris*)
+ case $cc_basename in
+ CC* | sunCC*)
+ # The more standards-conforming stlport4 library is
+ # incompatible with the Cstd library. Avoid specifying
+ # it if it's in CXXFLAGS. Ignore libCrun as
+ # -library=stlport4 depends on it.
+ case " $CXX $CXXFLAGS " in
+ *" -library=stlport4 "*)
+ solaris_use_stlport4=yes
+ ;;
+ esac
+
+ # Adding this requires a known-good setup of shared libraries for
+ # Sun compiler versions before 5.6, else PIC objects from an old
+ # archive will be linked into the output, leading to subtle bugs.
+ if test "$solaris_use_stlport4" != yes; then
+ _LT_TAGVAR(postdeps,$1)='-library=Cstd -library=Crun'
+ fi
+ ;;
+ esac
+ ;;
+esac
+])
+
+case " $_LT_TAGVAR(postdeps, $1) " in
+*" -lc "*) _LT_TAGVAR(archive_cmds_need_lc, $1)=no ;;
+esac
+ _LT_TAGVAR(compiler_lib_search_dirs, $1)=
+if test -n "${_LT_TAGVAR(compiler_lib_search_path, $1)}"; then
+ _LT_TAGVAR(compiler_lib_search_dirs, $1)=`echo " ${_LT_TAGVAR(compiler_lib_search_path, $1)}" | ${SED} -e 's! -L! !g' -e 's!^ !!'`
+fi
+_LT_TAGDECL([], [compiler_lib_search_dirs], [1],
+ [The directories searched by this compiler when creating a shared library])
+_LT_TAGDECL([], [predep_objects], [1],
+ [Dependencies to place before and after the objects being linked to
+ create a shared library])
+_LT_TAGDECL([], [postdep_objects], [1])
+_LT_TAGDECL([], [predeps], [1])
+_LT_TAGDECL([], [postdeps], [1])
+_LT_TAGDECL([], [compiler_lib_search_path], [1],
+ [The library search path used internally by the compiler when linking
+ a shared library])
+])# _LT_SYS_HIDDEN_LIBDEPS
+
+
+# _LT_LANG_F77_CONFIG([TAG])
+# --------------------------
+# Ensure that the configuration variables for a Fortran 77 compiler are
+# suitably defined. These variables are subsequently used by _LT_CONFIG
+# to write the compiler configuration to `libtool'.
+m4_defun([_LT_LANG_F77_CONFIG],
+[AC_LANG_PUSH(Fortran 77)
+if test -z "$F77" || test "X$F77" = "Xno"; then
+ _lt_disable_F77=yes
+fi
+
+_LT_TAGVAR(archive_cmds_need_lc, $1)=no
+_LT_TAGVAR(allow_undefined_flag, $1)=
+_LT_TAGVAR(always_export_symbols, $1)=no
+_LT_TAGVAR(archive_expsym_cmds, $1)=
+_LT_TAGVAR(export_dynamic_flag_spec, $1)=
+_LT_TAGVAR(hardcode_direct, $1)=no
+_LT_TAGVAR(hardcode_direct_absolute, $1)=no
+_LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
+_LT_TAGVAR(hardcode_libdir_separator, $1)=
+_LT_TAGVAR(hardcode_minus_L, $1)=no
+_LT_TAGVAR(hardcode_automatic, $1)=no
+_LT_TAGVAR(inherit_rpath, $1)=no
+_LT_TAGVAR(module_cmds, $1)=
+_LT_TAGVAR(module_expsym_cmds, $1)=
+_LT_TAGVAR(link_all_deplibs, $1)=unknown
+_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds
+_LT_TAGVAR(reload_flag, $1)=$reload_flag
+_LT_TAGVAR(reload_cmds, $1)=$reload_cmds
+_LT_TAGVAR(no_undefined_flag, $1)=
+_LT_TAGVAR(whole_archive_flag_spec, $1)=
+_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no
+
+# Source file extension for f77 test sources.
+ac_ext=f
+
+# Object file extension for compiled f77 test sources.
+objext=o
+_LT_TAGVAR(objext, $1)=$objext
+
+# No sense in running all these tests if we already determined that
+# the F77 compiler isn't working. Some variables (like enable_shared)
+# are currently assumed to apply to all compilers on this platform,
+# and will be corrupted by setting them based on a non-working compiler.
+if test "$_lt_disable_F77" != yes; then
+ # Code to be used in simple compile tests
+ lt_simple_compile_test_code="\
+ subroutine t
+ return
+ end
+"
+
+ # Code to be used in simple link tests
+ lt_simple_link_test_code="\
+ program t
+ end
+"
+
+ # ltmain only uses $CC for tagged configurations so make sure $CC is set.
+ _LT_TAG_COMPILER
+
+ # save warnings/boilerplate of simple test code
+ _LT_COMPILER_BOILERPLATE
+ _LT_LINKER_BOILERPLATE
+
+ # Allow CC to be a program name with arguments.
+ lt_save_CC="$CC"
+ lt_save_GCC=$GCC
+ lt_save_CFLAGS=$CFLAGS
+ CC=${F77-"f77"}
+ CFLAGS=$FFLAGS
+ compiler=$CC
+ _LT_TAGVAR(compiler, $1)=$CC
+ _LT_CC_BASENAME([$compiler])
+ GCC=$G77
+ if test -n "$compiler"; then
+ AC_MSG_CHECKING([if libtool supports shared libraries])
+ AC_MSG_RESULT([$can_build_shared])
+
+ AC_MSG_CHECKING([whether to build shared libraries])
+ test "$can_build_shared" = "no" && enable_shared=no
+
+ # On AIX, shared libraries and static libraries use the same namespace, and
+ # are all built from PIC.
+ case $host_os in
+ aix3*)
+ test "$enable_shared" = yes && enable_static=no
+ if test -n "$RANLIB"; then
+ archive_cmds="$archive_cmds~\$RANLIB \$lib"
+ postinstall_cmds='$RANLIB $lib'
+ fi
+ ;;
+ aix[[4-9]]*)
+ if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then
+ test "$enable_shared" = yes && enable_static=no
+ fi
+ ;;
+ esac
+ AC_MSG_RESULT([$enable_shared])
+
+ AC_MSG_CHECKING([whether to build static libraries])
+ # Make sure either enable_shared or enable_static is yes.
+ test "$enable_shared" = yes || enable_static=yes
+ AC_MSG_RESULT([$enable_static])
+
+ _LT_TAGVAR(GCC, $1)="$G77"
+ _LT_TAGVAR(LD, $1)="$LD"
+
+ ## CAVEAT EMPTOR:
+ ## There is no encapsulation within the following macros, do not change
+ ## the running order or otherwise move them around unless you know exactly
+ ## what you are doing...
+ _LT_COMPILER_PIC($1)
+ _LT_COMPILER_C_O($1)
+ _LT_COMPILER_FILE_LOCKS($1)
+ _LT_LINKER_SHLIBS($1)
+ _LT_SYS_DYNAMIC_LINKER($1)
+ _LT_LINKER_HARDCODE_LIBPATH($1)
+
+ _LT_CONFIG($1)
+ fi # test -n "$compiler"
+
+ GCC=$lt_save_GCC
+ CC="$lt_save_CC"
+ CFLAGS="$lt_save_CFLAGS"
+fi # test "$_lt_disable_F77" != yes
+
+AC_LANG_POP
+])# _LT_LANG_F77_CONFIG
+
+
+# _LT_LANG_FC_CONFIG([TAG])
+# -------------------------
+# Ensure that the configuration variables for a Fortran compiler are
+# suitably defined. These variables are subsequently used by _LT_CONFIG
+# to write the compiler configuration to `libtool'.
+m4_defun([_LT_LANG_FC_CONFIG],
+[AC_LANG_PUSH(Fortran)
+
+if test -z "$FC" || test "X$FC" = "Xno"; then
+ _lt_disable_FC=yes
+fi
+
+_LT_TAGVAR(archive_cmds_need_lc, $1)=no
+_LT_TAGVAR(allow_undefined_flag, $1)=
+_LT_TAGVAR(always_export_symbols, $1)=no
+_LT_TAGVAR(archive_expsym_cmds, $1)=
+_LT_TAGVAR(export_dynamic_flag_spec, $1)=
+_LT_TAGVAR(hardcode_direct, $1)=no
+_LT_TAGVAR(hardcode_direct_absolute, $1)=no
+_LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
+_LT_TAGVAR(hardcode_libdir_separator, $1)=
+_LT_TAGVAR(hardcode_minus_L, $1)=no
+_LT_TAGVAR(hardcode_automatic, $1)=no
+_LT_TAGVAR(inherit_rpath, $1)=no
+_LT_TAGVAR(module_cmds, $1)=
+_LT_TAGVAR(module_expsym_cmds, $1)=
+_LT_TAGVAR(link_all_deplibs, $1)=unknown
+_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds
+_LT_TAGVAR(reload_flag, $1)=$reload_flag
+_LT_TAGVAR(reload_cmds, $1)=$reload_cmds
+_LT_TAGVAR(no_undefined_flag, $1)=
+_LT_TAGVAR(whole_archive_flag_spec, $1)=
+_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no
+
+# Source file extension for fc test sources.
+ac_ext=${ac_fc_srcext-f}
+
+# Object file extension for compiled fc test sources.
+objext=o
+_LT_TAGVAR(objext, $1)=$objext
+
+# No sense in running all these tests if we already determined that
+# the FC compiler isn't working. Some variables (like enable_shared)
+# are currently assumed to apply to all compilers on this platform,
+# and will be corrupted by setting them based on a non-working compiler.
+if test "$_lt_disable_FC" != yes; then
+ # Code to be used in simple compile tests
+ lt_simple_compile_test_code="\
+ subroutine t
+ return
+ end
+"
+
+ # Code to be used in simple link tests
+ lt_simple_link_test_code="\
+ program t
+ end
+"
+
+ # ltmain only uses $CC for tagged configurations so make sure $CC is set.
+ _LT_TAG_COMPILER
+
+ # save warnings/boilerplate of simple test code
+ _LT_COMPILER_BOILERPLATE
+ _LT_LINKER_BOILERPLATE
+
+ # Allow CC to be a program name with arguments.
+ lt_save_CC="$CC"
+ lt_save_GCC=$GCC
+ lt_save_CFLAGS=$CFLAGS
+ CC=${FC-"f95"}
+ CFLAGS=$FCFLAGS
+ compiler=$CC
+ GCC=$ac_cv_fc_compiler_gnu
+
+ _LT_TAGVAR(compiler, $1)=$CC
+ _LT_CC_BASENAME([$compiler])
+
+ if test -n "$compiler"; then
+ AC_MSG_CHECKING([if libtool supports shared libraries])
+ AC_MSG_RESULT([$can_build_shared])
+
+ AC_MSG_CHECKING([whether to build shared libraries])
+ test "$can_build_shared" = "no" && enable_shared=no
+
+ # On AIX, shared libraries and static libraries use the same namespace, and
+ # are all built from PIC.
+ case $host_os in
+ aix3*)
+ test "$enable_shared" = yes && enable_static=no
+ if test -n "$RANLIB"; then
+ archive_cmds="$archive_cmds~\$RANLIB \$lib"
+ postinstall_cmds='$RANLIB $lib'
+ fi
+ ;;
+ aix[[4-9]]*)
+ if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then
+ test "$enable_shared" = yes && enable_static=no
+ fi
+ ;;
+ esac
+ AC_MSG_RESULT([$enable_shared])
+
+ AC_MSG_CHECKING([whether to build static libraries])
+ # Make sure either enable_shared or enable_static is yes.
+ test "$enable_shared" = yes || enable_static=yes
+ AC_MSG_RESULT([$enable_static])
+
+ _LT_TAGVAR(GCC, $1)="$ac_cv_fc_compiler_gnu"
+ _LT_TAGVAR(LD, $1)="$LD"
+
+ ## CAVEAT EMPTOR:
+ ## There is no encapsulation within the following macros, do not change
+ ## the running order or otherwise move them around unless you know exactly
+ ## what you are doing...
+ _LT_SYS_HIDDEN_LIBDEPS($1)
+ _LT_COMPILER_PIC($1)
+ _LT_COMPILER_C_O($1)
+ _LT_COMPILER_FILE_LOCKS($1)
+ _LT_LINKER_SHLIBS($1)
+ _LT_SYS_DYNAMIC_LINKER($1)
+ _LT_LINKER_HARDCODE_LIBPATH($1)
+
+ _LT_CONFIG($1)
+ fi # test -n "$compiler"
+
+ GCC=$lt_save_GCC
+ CC=$lt_save_CC
+ CFLAGS=$lt_save_CFLAGS
+fi # test "$_lt_disable_FC" != yes
+
+AC_LANG_POP
+])# _LT_LANG_FC_CONFIG
+
+
+# _LT_LANG_GCJ_CONFIG([TAG])
+# --------------------------
+# Ensure that the configuration variables for the GNU Java Compiler compiler
+# are suitably defined. These variables are subsequently used by _LT_CONFIG
+# to write the compiler configuration to `libtool'.
+m4_defun([_LT_LANG_GCJ_CONFIG],
+[AC_REQUIRE([LT_PROG_GCJ])dnl
+AC_LANG_SAVE
+
+# Source file extension for Java test sources.
+ac_ext=java
+
+# Object file extension for compiled Java test sources.
+objext=o
+_LT_TAGVAR(objext, $1)=$objext
+
+# Code to be used in simple compile tests
+lt_simple_compile_test_code="class foo {}"
+
+# Code to be used in simple link tests
+lt_simple_link_test_code='public class conftest { public static void main(String[[]] argv) {}; }'
+
+# ltmain only uses $CC for tagged configurations so make sure $CC is set.
+_LT_TAG_COMPILER
+
+# save warnings/boilerplate of simple test code
+_LT_COMPILER_BOILERPLATE
+_LT_LINKER_BOILERPLATE
+
+# Allow CC to be a program name with arguments.
+lt_save_CC=$CC
+lt_save_CFLAGS=$CFLAGS
+lt_save_GCC=$GCC
+GCC=yes
+CC=${GCJ-"gcj"}
+CFLAGS=$GCJFLAGS
+compiler=$CC
+_LT_TAGVAR(compiler, $1)=$CC
+_LT_TAGVAR(LD, $1)="$LD"
+_LT_CC_BASENAME([$compiler])
+
+# GCJ did not exist at the time GCC didn't implicitly link libc in.
+_LT_TAGVAR(archive_cmds_need_lc, $1)=no
+
+_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds
+_LT_TAGVAR(reload_flag, $1)=$reload_flag
+_LT_TAGVAR(reload_cmds, $1)=$reload_cmds
+
+## CAVEAT EMPTOR:
+## There is no encapsulation within the following macros, do not change
+## the running order or otherwise move them around unless you know exactly
+## what you are doing...
+if test -n "$compiler"; then
+ _LT_COMPILER_NO_RTTI($1)
+ _LT_COMPILER_PIC($1)
+ _LT_COMPILER_C_O($1)
+ _LT_COMPILER_FILE_LOCKS($1)
+ _LT_LINKER_SHLIBS($1)
+ _LT_LINKER_HARDCODE_LIBPATH($1)
+
+ _LT_CONFIG($1)
+fi
+
+AC_LANG_RESTORE
+
+GCC=$lt_save_GCC
+CC=$lt_save_CC
+CFLAGS=$lt_save_CFLAGS
+])# _LT_LANG_GCJ_CONFIG
+
+
+# _LT_LANG_GO_CONFIG([TAG])
+# --------------------------
+# Ensure that the configuration variables for the GNU Go compiler
+# are suitably defined. These variables are subsequently used by _LT_CONFIG
+# to write the compiler configuration to `libtool'.
+m4_defun([_LT_LANG_GO_CONFIG],
+[AC_REQUIRE([LT_PROG_GO])dnl
+AC_LANG_SAVE
+
+# Source file extension for Go test sources.
+ac_ext=go
+
+# Object file extension for compiled Go test sources.
+objext=o
+_LT_TAGVAR(objext, $1)=$objext
+
+# Code to be used in simple compile tests
+lt_simple_compile_test_code="package main; func main() { }"
+
+# Code to be used in simple link tests
+lt_simple_link_test_code='package main; func main() { }'
+
+# ltmain only uses $CC for tagged configurations so make sure $CC is set.
+_LT_TAG_COMPILER
+
+# save warnings/boilerplate of simple test code
+_LT_COMPILER_BOILERPLATE
+_LT_LINKER_BOILERPLATE
+
+# Allow CC to be a program name with arguments.
+lt_save_CC=$CC
+lt_save_CFLAGS=$CFLAGS
+lt_save_GCC=$GCC
+GCC=yes
+CC=${GOC-"gccgo"}
+CFLAGS=$GOFLAGS
+compiler=$CC
+_LT_TAGVAR(compiler, $1)=$CC
+_LT_TAGVAR(LD, $1)="$LD"
+_LT_CC_BASENAME([$compiler])
+
+# Go did not exist at the time GCC didn't implicitly link libc in.
+_LT_TAGVAR(archive_cmds_need_lc, $1)=no
+
+_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds
+_LT_TAGVAR(reload_flag, $1)=$reload_flag
+_LT_TAGVAR(reload_cmds, $1)=$reload_cmds
+
+## CAVEAT EMPTOR:
+## There is no encapsulation within the following macros, do not change
+## the running order or otherwise move them around unless you know exactly
+## what you are doing...
+if test -n "$compiler"; then
+ _LT_COMPILER_NO_RTTI($1)
+ _LT_COMPILER_PIC($1)
+ _LT_COMPILER_C_O($1)
+ _LT_COMPILER_FILE_LOCKS($1)
+ _LT_LINKER_SHLIBS($1)
+ _LT_LINKER_HARDCODE_LIBPATH($1)
+
+ _LT_CONFIG($1)
+fi
+
+AC_LANG_RESTORE
+
+GCC=$lt_save_GCC
+CC=$lt_save_CC
+CFLAGS=$lt_save_CFLAGS
+])# _LT_LANG_GO_CONFIG
+
+
+# _LT_LANG_RC_CONFIG([TAG])
+# -------------------------
+# Ensure that the configuration variables for the Windows resource compiler
+# are suitably defined. These variables are subsequently used by _LT_CONFIG
+# to write the compiler configuration to `libtool'.
+m4_defun([_LT_LANG_RC_CONFIG],
+[AC_REQUIRE([LT_PROG_RC])dnl
+AC_LANG_SAVE
+
+# Source file extension for RC test sources.
+ac_ext=rc
+
+# Object file extension for compiled RC test sources.
+objext=o
+_LT_TAGVAR(objext, $1)=$objext
+
+# Code to be used in simple compile tests
+lt_simple_compile_test_code='sample MENU { MENUITEM "&Soup", 100, CHECKED }'
+
+# Code to be used in simple link tests
+lt_simple_link_test_code="$lt_simple_compile_test_code"
+
+# ltmain only uses $CC for tagged configurations so make sure $CC is set.
+_LT_TAG_COMPILER
+
+# save warnings/boilerplate of simple test code
+_LT_COMPILER_BOILERPLATE
+_LT_LINKER_BOILERPLATE
+
+# Allow CC to be a program name with arguments.
+lt_save_CC="$CC"
+lt_save_CFLAGS=$CFLAGS
+lt_save_GCC=$GCC
+GCC=
+CC=${RC-"windres"}
+CFLAGS=
+compiler=$CC
+_LT_TAGVAR(compiler, $1)=$CC
+_LT_CC_BASENAME([$compiler])
+_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes
+
+if test -n "$compiler"; then
+ :
+ _LT_CONFIG($1)
+fi
+
+GCC=$lt_save_GCC
+AC_LANG_RESTORE
+CC=$lt_save_CC
+CFLAGS=$lt_save_CFLAGS
+])# _LT_LANG_RC_CONFIG
+
+
+# LT_PROG_GCJ
+# -----------
+AC_DEFUN([LT_PROG_GCJ],
+[m4_ifdef([AC_PROG_GCJ], [AC_PROG_GCJ],
+ [m4_ifdef([A][M_PROG_GCJ], [A][M_PROG_GCJ],
+ [AC_CHECK_TOOL(GCJ, gcj,)
+ test "x${GCJFLAGS+set}" = xset || GCJFLAGS="-g -O2"
+ AC_SUBST(GCJFLAGS)])])[]dnl
+])
+
+# Old name:
+AU_ALIAS([LT_AC_PROG_GCJ], [LT_PROG_GCJ])
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([LT_AC_PROG_GCJ], [])
+
+
+# LT_PROG_GO
+# ----------
+AC_DEFUN([LT_PROG_GO],
+[AC_CHECK_TOOL(GOC, gccgo,)
+])
+
+
+# LT_PROG_RC
+# ----------
+AC_DEFUN([LT_PROG_RC],
+[AC_CHECK_TOOL(RC, windres,)
+])
+
+# Old name:
+AU_ALIAS([LT_AC_PROG_RC], [LT_PROG_RC])
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([LT_AC_PROG_RC], [])
+
+
+# _LT_DECL_EGREP
+# --------------
+# If we don't have a new enough Autoconf to choose the best grep
+# available, choose the one first in the user's PATH.
+m4_defun([_LT_DECL_EGREP],
+[AC_REQUIRE([AC_PROG_EGREP])dnl
+AC_REQUIRE([AC_PROG_FGREP])dnl
+test -z "$GREP" && GREP=grep
+_LT_DECL([], [GREP], [1], [A grep program that handles long lines])
+_LT_DECL([], [EGREP], [1], [An ERE matcher])
+_LT_DECL([], [FGREP], [1], [A literal string matcher])
+dnl Non-bleeding-edge autoconf doesn't subst GREP, so do it here too
+AC_SUBST([GREP])
+])
+
+
+# _LT_DECL_OBJDUMP
+# --------------
+# If we don't have a new enough Autoconf to choose the best objdump
+# available, choose the one first in the user's PATH.
+m4_defun([_LT_DECL_OBJDUMP],
+[AC_CHECK_TOOL(OBJDUMP, objdump, false)
+test -z "$OBJDUMP" && OBJDUMP=objdump
+_LT_DECL([], [OBJDUMP], [1], [An object symbol dumper])
+AC_SUBST([OBJDUMP])
+])
+
+# _LT_DECL_DLLTOOL
+# ----------------
+# Ensure DLLTOOL variable is set.
+m4_defun([_LT_DECL_DLLTOOL],
+[AC_CHECK_TOOL(DLLTOOL, dlltool, false)
+test -z "$DLLTOOL" && DLLTOOL=dlltool
+_LT_DECL([], [DLLTOOL], [1], [DLL creation program])
+AC_SUBST([DLLTOOL])
+])
+
+# _LT_DECL_SED
+# ------------
+# Check for a fully-functional sed program, that truncates
+# as few characters as possible. Prefer GNU sed if found.
+m4_defun([_LT_DECL_SED],
+[AC_PROG_SED
+test -z "$SED" && SED=sed
+Xsed="$SED -e 1s/^X//"
+_LT_DECL([], [SED], [1], [A sed program that does not truncate output])
+_LT_DECL([], [Xsed], ["\$SED -e 1s/^X//"],
+ [Sed that helps us avoid accidentally triggering echo(1) options like -n])
+])# _LT_DECL_SED
+
+m4_ifndef([AC_PROG_SED], [
+############################################################
+# 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. #
+############################################################
+
+m4_defun([AC_PROG_SED],
+[AC_MSG_CHECKING([for a sed that does not truncate output])
+AC_CACHE_VAL(lt_cv_path_SED,
+[# Loop through the user's path and test for sed and gsed.
+# Then use that list of sed's as ones to test for truncation.
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for lt_ac_prog in sed gsed; do
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if $as_executable_p "$as_dir/$lt_ac_prog$ac_exec_ext"; then
+ lt_ac_sed_list="$lt_ac_sed_list $as_dir/$lt_ac_prog$ac_exec_ext"
+ fi
+ done
+ done
+done
+IFS=$as_save_IFS
+lt_ac_max=0
+lt_ac_count=0
+# Add /usr/xpg4/bin/sed as it is typically found on Solaris
+# along with /bin/sed that truncates output.
+for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do
+ test ! -f $lt_ac_sed && continue
+ cat /dev/null > conftest.in
+ lt_ac_count=0
+ echo $ECHO_N "0123456789$ECHO_C" >conftest.in
+ # Check for GNU sed and select it if it is found.
+ if "$lt_ac_sed" --version 2>&1 < /dev/null | grep 'GNU' > /dev/null; then
+ lt_cv_path_SED=$lt_ac_sed
+ break
+ fi
+ while true; do
+ cat conftest.in conftest.in >conftest.tmp
+ mv conftest.tmp conftest.in
+ cp conftest.in conftest.nl
+ echo >>conftest.nl
+ $lt_ac_sed -e 's/a$//' < conftest.nl >conftest.out || break
+ cmp -s conftest.out conftest.nl || break
+ # 10000 chars as input seems more than enough
+ test $lt_ac_count -gt 10 && break
+ lt_ac_count=`expr $lt_ac_count + 1`
+ if test $lt_ac_count -gt $lt_ac_max; then
+ lt_ac_max=$lt_ac_count
+ lt_cv_path_SED=$lt_ac_sed
+ fi
+ done
+done
+])
+SED=$lt_cv_path_SED
+AC_SUBST([SED])
+AC_MSG_RESULT([$SED])
+])#AC_PROG_SED
+])#m4_ifndef
+
+# Old name:
+AU_ALIAS([LT_AC_PROG_SED], [AC_PROG_SED])
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([LT_AC_PROG_SED], [])
+
+
+# _LT_CHECK_SHELL_FEATURES
+# ------------------------
+# Find out whether the shell is Bourne or XSI compatible,
+# or has some other useful features.
+m4_defun([_LT_CHECK_SHELL_FEATURES],
+[AC_MSG_CHECKING([whether the shell understands some XSI constructs])
+# Try some XSI features
+xsi_shell=no
+( _lt_dummy="a/b/c"
+ test "${_lt_dummy##*/},${_lt_dummy%/*},${_lt_dummy#??}"${_lt_dummy%"$_lt_dummy"}, \
+ = c,a/b,b/c, \
+ && eval 'test $(( 1 + 1 )) -eq 2 \
+ && test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \
+ && xsi_shell=yes
+AC_MSG_RESULT([$xsi_shell])
+_LT_CONFIG_LIBTOOL_INIT([xsi_shell='$xsi_shell'])
+
+AC_MSG_CHECKING([whether the shell understands "+="])
+lt_shell_append=no
+( foo=bar; set foo baz; eval "$[1]+=\$[2]" && test "$foo" = barbaz ) \
+ >/dev/null 2>&1 \
+ && lt_shell_append=yes
+AC_MSG_RESULT([$lt_shell_append])
+_LT_CONFIG_LIBTOOL_INIT([lt_shell_append='$lt_shell_append'])
+
+if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then
+ lt_unset=unset
+else
+ lt_unset=false
+fi
+_LT_DECL([], [lt_unset], [0], [whether the shell understands "unset"])dnl
+
+# test EBCDIC or ASCII
+case `echo X|tr X '\101'` in
+ A) # ASCII based system
+ # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr
+ lt_SP2NL='tr \040 \012'
+ lt_NL2SP='tr \015\012 \040\040'
+ ;;
+ *) # EBCDIC based system
+ lt_SP2NL='tr \100 \n'
+ lt_NL2SP='tr \r\n \100\100'
+ ;;
+esac
+_LT_DECL([SP2NL], [lt_SP2NL], [1], [turn spaces into newlines])dnl
+_LT_DECL([NL2SP], [lt_NL2SP], [1], [turn newlines into spaces])dnl
+])# _LT_CHECK_SHELL_FEATURES
+
+
+# _LT_PROG_FUNCTION_REPLACE (FUNCNAME, REPLACEMENT-BODY)
+# ------------------------------------------------------
+# In `$cfgfile', look for function FUNCNAME delimited by `^FUNCNAME ()$' and
+# '^} FUNCNAME ', and replace its body with REPLACEMENT-BODY.
+m4_defun([_LT_PROG_FUNCTION_REPLACE],
+[dnl {
+sed -e '/^$1 ()$/,/^} # $1 /c\
+$1 ()\
+{\
+m4_bpatsubsts([$2], [$], [\\], [^\([ ]\)], [\\\1])
+} # Extended-shell $1 implementation' "$cfgfile" > $cfgfile.tmp \
+ && mv -f "$cfgfile.tmp" "$cfgfile" \
+ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
+test 0 -eq $? || _lt_function_replace_fail=:
+])
+
+
+# _LT_PROG_REPLACE_SHELLFNS
+# -------------------------
+# Replace existing portable implementations of several shell functions with
+# equivalent extended shell implementations where those features are available..
+m4_defun([_LT_PROG_REPLACE_SHELLFNS],
+[if test x"$xsi_shell" = xyes; then
+ _LT_PROG_FUNCTION_REPLACE([func_dirname], [dnl
+ case ${1} in
+ */*) func_dirname_result="${1%/*}${2}" ;;
+ * ) func_dirname_result="${3}" ;;
+ esac])
+
+ _LT_PROG_FUNCTION_REPLACE([func_basename], [dnl
+ func_basename_result="${1##*/}"])
+
+ _LT_PROG_FUNCTION_REPLACE([func_dirname_and_basename], [dnl
+ case ${1} in
+ */*) func_dirname_result="${1%/*}${2}" ;;
+ * ) func_dirname_result="${3}" ;;
+ esac
+ func_basename_result="${1##*/}"])
+
+ _LT_PROG_FUNCTION_REPLACE([func_stripname], [dnl
+ # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are
+ # positional parameters, so assign one to ordinary parameter first.
+ func_stripname_result=${3}
+ func_stripname_result=${func_stripname_result#"${1}"}
+ func_stripname_result=${func_stripname_result%"${2}"}])
+
+ _LT_PROG_FUNCTION_REPLACE([func_split_long_opt], [dnl
+ func_split_long_opt_name=${1%%=*}
+ func_split_long_opt_arg=${1#*=}])
+
+ _LT_PROG_FUNCTION_REPLACE([func_split_short_opt], [dnl
+ func_split_short_opt_arg=${1#??}
+ func_split_short_opt_name=${1%"$func_split_short_opt_arg"}])
+
+ _LT_PROG_FUNCTION_REPLACE([func_lo2o], [dnl
+ case ${1} in
+ *.lo) func_lo2o_result=${1%.lo}.${objext} ;;
+ *) func_lo2o_result=${1} ;;
+ esac])
+
+ _LT_PROG_FUNCTION_REPLACE([func_xform], [ func_xform_result=${1%.*}.lo])
+
+ _LT_PROG_FUNCTION_REPLACE([func_arith], [ func_arith_result=$(( $[*] ))])
+
+ _LT_PROG_FUNCTION_REPLACE([func_len], [ func_len_result=${#1}])
+fi
+
+if test x"$lt_shell_append" = xyes; then
+ _LT_PROG_FUNCTION_REPLACE([func_append], [ eval "${1}+=\\${2}"])
+
+ _LT_PROG_FUNCTION_REPLACE([func_append_quoted], [dnl
+ func_quote_for_eval "${2}"
+dnl m4 expansion turns \\\\ into \\, and then the shell eval turns that into \
+ eval "${1}+=\\\\ \\$func_quote_for_eval_result"])
+
+ # Save a `func_append' function call where possible by direct use of '+='
+ sed -e 's%func_append \([[a-zA-Z_]]\{1,\}\) "%\1+="%g' $cfgfile > $cfgfile.tmp \
+ && mv -f "$cfgfile.tmp" "$cfgfile" \
+ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
+ test 0 -eq $? || _lt_function_replace_fail=:
+else
+ # Save a `func_append' function call even when '+=' is not available
+ sed -e 's%func_append \([[a-zA-Z_]]\{1,\}\) "%\1="$\1%g' $cfgfile > $cfgfile.tmp \
+ && mv -f "$cfgfile.tmp" "$cfgfile" \
+ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
+ test 0 -eq $? || _lt_function_replace_fail=:
+fi
+
+if test x"$_lt_function_replace_fail" = x":"; then
+ AC_MSG_WARN([Unable to substitute extended shell functions in $ofile])
+fi
+])
+
+# _LT_PATH_CONVERSION_FUNCTIONS
+# -----------------------------
+# Determine which file name conversion functions should be used by
+# func_to_host_file (and, implicitly, by func_to_host_path). These are needed
+# for certain cross-compile configurations and native mingw.
+m4_defun([_LT_PATH_CONVERSION_FUNCTIONS],
+[AC_REQUIRE([AC_CANONICAL_HOST])dnl
+AC_REQUIRE([AC_CANONICAL_BUILD])dnl
+AC_MSG_CHECKING([how to convert $build file names to $host format])
+AC_CACHE_VAL(lt_cv_to_host_file_cmd,
+[case $host in
+ *-*-mingw* )
+ case $build in
+ *-*-mingw* ) # actually msys
+ lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32
+ ;;
+ *-*-cygwin* )
+ lt_cv_to_host_file_cmd=func_convert_file_cygwin_to_w32
+ ;;
+ * ) # otherwise, assume *nix
+ lt_cv_to_host_file_cmd=func_convert_file_nix_to_w32
+ ;;
+ esac
+ ;;
+ *-*-cygwin* )
+ case $build in
+ *-*-mingw* ) # actually msys
+ lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin
+ ;;
+ *-*-cygwin* )
+ lt_cv_to_host_file_cmd=func_convert_file_noop
+ ;;
+ * ) # otherwise, assume *nix
+ lt_cv_to_host_file_cmd=func_convert_file_nix_to_cygwin
+ ;;
+ esac
+ ;;
+ * ) # unhandled hosts (and "normal" native builds)
+ lt_cv_to_host_file_cmd=func_convert_file_noop
+ ;;
+esac
+])
+to_host_file_cmd=$lt_cv_to_host_file_cmd
+AC_MSG_RESULT([$lt_cv_to_host_file_cmd])
+_LT_DECL([to_host_file_cmd], [lt_cv_to_host_file_cmd],
+ [0], [convert $build file names to $host format])dnl
+
+AC_MSG_CHECKING([how to convert $build file names to toolchain format])
+AC_CACHE_VAL(lt_cv_to_tool_file_cmd,
+[#assume ordinary cross tools, or native build.
+lt_cv_to_tool_file_cmd=func_convert_file_noop
+case $host in
+ *-*-mingw* )
+ case $build in
+ *-*-mingw* ) # actually msys
+ lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32
+ ;;
+ esac
+ ;;
+esac
+])
+to_tool_file_cmd=$lt_cv_to_tool_file_cmd
+AC_MSG_RESULT([$lt_cv_to_tool_file_cmd])
+_LT_DECL([to_tool_file_cmd], [lt_cv_to_tool_file_cmd],
+ [0], [convert $build files to toolchain format])dnl
+])# _LT_PATH_CONVERSION_FUNCTIONS
diff --git a/m4/ltoptions.m4 b/m4/ltoptions.m4
new file mode 100644
index 0000000..5d9acd8
--- /dev/null
+++ b/m4/ltoptions.m4
@@ -0,0 +1,384 @@
+# Helper functions for option handling. -*- Autoconf -*-
+#
+# Copyright (C) 2004, 2005, 2007, 2008, 2009 Free Software Foundation,
+# Inc.
+# Written by Gary V. Vaughan, 2004
+#
+# This file is free software; the Free Software Foundation gives
+# unlimited permission to copy and/or distribute it, with or without
+# modifications, as long as this notice is preserved.
+
+# serial 7 ltoptions.m4
+
+# This is to help aclocal find these macros, as it can't see m4_define.
+AC_DEFUN([LTOPTIONS_VERSION], [m4_if([1])])
+
+
+# _LT_MANGLE_OPTION(MACRO-NAME, OPTION-NAME)
+# ------------------------------------------
+m4_define([_LT_MANGLE_OPTION],
+[[_LT_OPTION_]m4_bpatsubst($1__$2, [[^a-zA-Z0-9_]], [_])])
+
+
+# _LT_SET_OPTION(MACRO-NAME, OPTION-NAME)
+# ---------------------------------------
+# Set option OPTION-NAME for macro MACRO-NAME, and if there is a
+# matching handler defined, dispatch to it. Other OPTION-NAMEs are
+# saved as a flag.
+m4_define([_LT_SET_OPTION],
+[m4_define(_LT_MANGLE_OPTION([$1], [$2]))dnl
+m4_ifdef(_LT_MANGLE_DEFUN([$1], [$2]),
+ _LT_MANGLE_DEFUN([$1], [$2]),
+ [m4_warning([Unknown $1 option `$2'])])[]dnl
+])
+
+
+# _LT_IF_OPTION(MACRO-NAME, OPTION-NAME, IF-SET, [IF-NOT-SET])
+# ------------------------------------------------------------
+# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise.
+m4_define([_LT_IF_OPTION],
+[m4_ifdef(_LT_MANGLE_OPTION([$1], [$2]), [$3], [$4])])
+
+
+# _LT_UNLESS_OPTIONS(MACRO-NAME, OPTION-LIST, IF-NOT-SET)
+# -------------------------------------------------------
+# Execute IF-NOT-SET unless all options in OPTION-LIST for MACRO-NAME
+# are set.
+m4_define([_LT_UNLESS_OPTIONS],
+[m4_foreach([_LT_Option], m4_split(m4_normalize([$2])),
+ [m4_ifdef(_LT_MANGLE_OPTION([$1], _LT_Option),
+ [m4_define([$0_found])])])[]dnl
+m4_ifdef([$0_found], [m4_undefine([$0_found])], [$3
+])[]dnl
+])
+
+
+# _LT_SET_OPTIONS(MACRO-NAME, OPTION-LIST)
+# ----------------------------------------
+# OPTION-LIST is a space-separated list of Libtool options associated
+# with MACRO-NAME. If any OPTION has a matching handler declared with
+# LT_OPTION_DEFINE, dispatch to that macro; otherwise complain about
+# the unknown option and exit.
+m4_defun([_LT_SET_OPTIONS],
+[# Set options
+m4_foreach([_LT_Option], m4_split(m4_normalize([$2])),
+ [_LT_SET_OPTION([$1], _LT_Option)])
+
+m4_if([$1],[LT_INIT],[
+ dnl
+ dnl Simply set some default values (i.e off) if boolean options were not
+ dnl specified:
+ _LT_UNLESS_OPTIONS([LT_INIT], [dlopen], [enable_dlopen=no
+ ])
+ _LT_UNLESS_OPTIONS([LT_INIT], [win32-dll], [enable_win32_dll=no
+ ])
+ dnl
+ dnl If no reference was made to various pairs of opposing options, then
+ dnl we run the default mode handler for the pair. For example, if neither
+ dnl `shared' nor `disable-shared' was passed, we enable building of shared
+ dnl archives by default:
+ _LT_UNLESS_OPTIONS([LT_INIT], [shared disable-shared], [_LT_ENABLE_SHARED])
+ _LT_UNLESS_OPTIONS([LT_INIT], [static disable-static], [_LT_ENABLE_STATIC])
+ _LT_UNLESS_OPTIONS([LT_INIT], [pic-only no-pic], [_LT_WITH_PIC])
+ _LT_UNLESS_OPTIONS([LT_INIT], [fast-install disable-fast-install],
+ [_LT_ENABLE_FAST_INSTALL])
+ ])
+])# _LT_SET_OPTIONS
+
+
+## --------------------------------- ##
+## Macros to handle LT_INIT options. ##
+## --------------------------------- ##
+
+# _LT_MANGLE_DEFUN(MACRO-NAME, OPTION-NAME)
+# -----------------------------------------
+m4_define([_LT_MANGLE_DEFUN],
+[[_LT_OPTION_DEFUN_]m4_bpatsubst(m4_toupper([$1__$2]), [[^A-Z0-9_]], [_])])
+
+
+# LT_OPTION_DEFINE(MACRO-NAME, OPTION-NAME, CODE)
+# -----------------------------------------------
+m4_define([LT_OPTION_DEFINE],
+[m4_define(_LT_MANGLE_DEFUN([$1], [$2]), [$3])[]dnl
+])# LT_OPTION_DEFINE
+
+
+# dlopen
+# ------
+LT_OPTION_DEFINE([LT_INIT], [dlopen], [enable_dlopen=yes
+])
+
+AU_DEFUN([AC_LIBTOOL_DLOPEN],
+[_LT_SET_OPTION([LT_INIT], [dlopen])
+AC_DIAGNOSE([obsolete],
+[$0: Remove this warning and the call to _LT_SET_OPTION when you
+put the `dlopen' option into LT_INIT's first parameter.])
+])
+
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AC_LIBTOOL_DLOPEN], [])
+
+
+# win32-dll
+# ---------
+# Declare package support for building win32 dll's.
+LT_OPTION_DEFINE([LT_INIT], [win32-dll],
+[enable_win32_dll=yes
+
+case $host in
+*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-cegcc*)
+ AC_CHECK_TOOL(AS, as, false)
+ AC_CHECK_TOOL(DLLTOOL, dlltool, false)
+ AC_CHECK_TOOL(OBJDUMP, objdump, false)
+ ;;
+esac
+
+test -z "$AS" && AS=as
+_LT_DECL([], [AS], [1], [Assembler program])dnl
+
+test -z "$DLLTOOL" && DLLTOOL=dlltool
+_LT_DECL([], [DLLTOOL], [1], [DLL creation program])dnl
+
+test -z "$OBJDUMP" && OBJDUMP=objdump
+_LT_DECL([], [OBJDUMP], [1], [Object dumper program])dnl
+])# win32-dll
+
+AU_DEFUN([AC_LIBTOOL_WIN32_DLL],
+[AC_REQUIRE([AC_CANONICAL_HOST])dnl
+_LT_SET_OPTION([LT_INIT], [win32-dll])
+AC_DIAGNOSE([obsolete],
+[$0: Remove this warning and the call to _LT_SET_OPTION when you
+put the `win32-dll' option into LT_INIT's first parameter.])
+])
+
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AC_LIBTOOL_WIN32_DLL], [])
+
+
+# _LT_ENABLE_SHARED([DEFAULT])
+# ----------------------------
+# implement the --enable-shared flag, and supports the `shared' and
+# `disable-shared' LT_INIT options.
+# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'.
+m4_define([_LT_ENABLE_SHARED],
+[m4_define([_LT_ENABLE_SHARED_DEFAULT], [m4_if($1, no, no, yes)])dnl
+AC_ARG_ENABLE([shared],
+ [AS_HELP_STRING([--enable-shared@<:@=PKGS@:>@],
+ [build shared libraries @<:@default=]_LT_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=]_LT_ENABLE_SHARED_DEFAULT)
+
+ _LT_DECL([build_libtool_libs], [enable_shared], [0],
+ [Whether or not to build shared libraries])
+])# _LT_ENABLE_SHARED
+
+LT_OPTION_DEFINE([LT_INIT], [shared], [_LT_ENABLE_SHARED([yes])])
+LT_OPTION_DEFINE([LT_INIT], [disable-shared], [_LT_ENABLE_SHARED([no])])
+
+# Old names:
+AC_DEFUN([AC_ENABLE_SHARED],
+[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[shared])
+])
+
+AC_DEFUN([AC_DISABLE_SHARED],
+[_LT_SET_OPTION([LT_INIT], [disable-shared])
+])
+
+AU_DEFUN([AM_ENABLE_SHARED], [AC_ENABLE_SHARED($@)])
+AU_DEFUN([AM_DISABLE_SHARED], [AC_DISABLE_SHARED($@)])
+
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AM_ENABLE_SHARED], [])
+dnl AC_DEFUN([AM_DISABLE_SHARED], [])
+
+
+
+# _LT_ENABLE_STATIC([DEFAULT])
+# ----------------------------
+# implement the --enable-static flag, and support the `static' and
+# `disable-static' LT_INIT options.
+# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'.
+m4_define([_LT_ENABLE_STATIC],
+[m4_define([_LT_ENABLE_STATIC_DEFAULT], [m4_if($1, no, no, yes)])dnl
+AC_ARG_ENABLE([static],
+ [AS_HELP_STRING([--enable-static@<:@=PKGS@:>@],
+ [build static libraries @<:@default=]_LT_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=]_LT_ENABLE_STATIC_DEFAULT)
+
+ _LT_DECL([build_old_libs], [enable_static], [0],
+ [Whether or not to build static libraries])
+])# _LT_ENABLE_STATIC
+
+LT_OPTION_DEFINE([LT_INIT], [static], [_LT_ENABLE_STATIC([yes])])
+LT_OPTION_DEFINE([LT_INIT], [disable-static], [_LT_ENABLE_STATIC([no])])
+
+# Old names:
+AC_DEFUN([AC_ENABLE_STATIC],
+[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[static])
+])
+
+AC_DEFUN([AC_DISABLE_STATIC],
+[_LT_SET_OPTION([LT_INIT], [disable-static])
+])
+
+AU_DEFUN([AM_ENABLE_STATIC], [AC_ENABLE_STATIC($@)])
+AU_DEFUN([AM_DISABLE_STATIC], [AC_DISABLE_STATIC($@)])
+
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AM_ENABLE_STATIC], [])
+dnl AC_DEFUN([AM_DISABLE_STATIC], [])
+
+
+
+# _LT_ENABLE_FAST_INSTALL([DEFAULT])
+# ----------------------------------
+# implement the --enable-fast-install flag, and support the `fast-install'
+# and `disable-fast-install' LT_INIT options.
+# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'.
+m4_define([_LT_ENABLE_FAST_INSTALL],
+[m4_define([_LT_ENABLE_FAST_INSTALL_DEFAULT], [m4_if($1, no, no, yes)])dnl
+AC_ARG_ENABLE([fast-install],
+ [AS_HELP_STRING([--enable-fast-install@<:@=PKGS@:>@],
+ [optimize for fast installation @<:@default=]_LT_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=]_LT_ENABLE_FAST_INSTALL_DEFAULT)
+
+_LT_DECL([fast_install], [enable_fast_install], [0],
+ [Whether or not to optimize for fast installation])dnl
+])# _LT_ENABLE_FAST_INSTALL
+
+LT_OPTION_DEFINE([LT_INIT], [fast-install], [_LT_ENABLE_FAST_INSTALL([yes])])
+LT_OPTION_DEFINE([LT_INIT], [disable-fast-install], [_LT_ENABLE_FAST_INSTALL([no])])
+
+# Old names:
+AU_DEFUN([AC_ENABLE_FAST_INSTALL],
+[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[fast-install])
+AC_DIAGNOSE([obsolete],
+[$0: Remove this warning and the call to _LT_SET_OPTION when you put
+the `fast-install' option into LT_INIT's first parameter.])
+])
+
+AU_DEFUN([AC_DISABLE_FAST_INSTALL],
+[_LT_SET_OPTION([LT_INIT], [disable-fast-install])
+AC_DIAGNOSE([obsolete],
+[$0: Remove this warning and the call to _LT_SET_OPTION when you put
+the `disable-fast-install' option into LT_INIT's first parameter.])
+])
+
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AC_ENABLE_FAST_INSTALL], [])
+dnl AC_DEFUN([AM_DISABLE_FAST_INSTALL], [])
+
+
+# _LT_WITH_PIC([MODE])
+# --------------------
+# implement the --with-pic flag, and support the `pic-only' and `no-pic'
+# LT_INIT options.
+# MODE is either `yes' or `no'. If omitted, it defaults to `both'.
+m4_define([_LT_WITH_PIC],
+[AC_ARG_WITH([pic],
+ [AS_HELP_STRING([--with-pic@<:@=PKGS@:>@],
+ [try to use only PIC/non-PIC objects @<:@default=use both@:>@])],
+ [lt_p=${PACKAGE-default}
+ case $withval in
+ yes|no) pic_mode=$withval ;;
+ *)
+ pic_mode=default
+ # Look at the argument we got. We use all the common list separators.
+ lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+ for lt_pkg in $withval; do
+ IFS="$lt_save_ifs"
+ if test "X$lt_pkg" = "X$lt_p"; then
+ pic_mode=yes
+ fi
+ done
+ IFS="$lt_save_ifs"
+ ;;
+ esac],
+ [pic_mode=default])
+
+test -z "$pic_mode" && pic_mode=m4_default([$1], [default])
+
+_LT_DECL([], [pic_mode], [0], [What type of objects to build])dnl
+])# _LT_WITH_PIC
+
+LT_OPTION_DEFINE([LT_INIT], [pic-only], [_LT_WITH_PIC([yes])])
+LT_OPTION_DEFINE([LT_INIT], [no-pic], [_LT_WITH_PIC([no])])
+
+# Old name:
+AU_DEFUN([AC_LIBTOOL_PICMODE],
+[_LT_SET_OPTION([LT_INIT], [pic-only])
+AC_DIAGNOSE([obsolete],
+[$0: Remove this warning and the call to _LT_SET_OPTION when you
+put the `pic-only' option into LT_INIT's first parameter.])
+])
+
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AC_LIBTOOL_PICMODE], [])
+
+## ----------------- ##
+## LTDL_INIT Options ##
+## ----------------- ##
+
+m4_define([_LTDL_MODE], [])
+LT_OPTION_DEFINE([LTDL_INIT], [nonrecursive],
+ [m4_define([_LTDL_MODE], [nonrecursive])])
+LT_OPTION_DEFINE([LTDL_INIT], [recursive],
+ [m4_define([_LTDL_MODE], [recursive])])
+LT_OPTION_DEFINE([LTDL_INIT], [subproject],
+ [m4_define([_LTDL_MODE], [subproject])])
+
+m4_define([_LTDL_TYPE], [])
+LT_OPTION_DEFINE([LTDL_INIT], [installable],
+ [m4_define([_LTDL_TYPE], [installable])])
+LT_OPTION_DEFINE([LTDL_INIT], [convenience],
+ [m4_define([_LTDL_TYPE], [convenience])])
diff --git a/m4/ltsugar.m4 b/m4/ltsugar.m4
new file mode 100644
index 0000000..9000a05
--- /dev/null
+++ b/m4/ltsugar.m4
@@ -0,0 +1,123 @@
+# ltsugar.m4 -- libtool m4 base layer. -*-Autoconf-*-
+#
+# Copyright (C) 2004, 2005, 2007, 2008 Free Software Foundation, Inc.
+# Written by Gary V. Vaughan, 2004
+#
+# This file is free software; the Free Software Foundation gives
+# unlimited permission to copy and/or distribute it, with or without
+# modifications, as long as this notice is preserved.
+
+# serial 6 ltsugar.m4
+
+# This is to help aclocal find these macros, as it can't see m4_define.
+AC_DEFUN([LTSUGAR_VERSION], [m4_if([0.1])])
+
+
+# lt_join(SEP, ARG1, [ARG2...])
+# -----------------------------
+# Produce ARG1SEPARG2...SEPARGn, omitting [] arguments and their
+# associated separator.
+# Needed until we can rely on m4_join from Autoconf 2.62, since all earlier
+# versions in m4sugar had bugs.
+m4_define([lt_join],
+[m4_if([$#], [1], [],
+ [$#], [2], [[$2]],
+ [m4_if([$2], [], [], [[$2]_])$0([$1], m4_shift(m4_shift($@)))])])
+m4_define([_lt_join],
+[m4_if([$#$2], [2], [],
+ [m4_if([$2], [], [], [[$1$2]])$0([$1], m4_shift(m4_shift($@)))])])
+
+
+# lt_car(LIST)
+# lt_cdr(LIST)
+# ------------
+# Manipulate m4 lists.
+# These macros are necessary as long as will still need to support
+# Autoconf-2.59 which quotes differently.
+m4_define([lt_car], [[$1]])
+m4_define([lt_cdr],
+[m4_if([$#], 0, [m4_fatal([$0: cannot be called without arguments])],
+ [$#], 1, [],
+ [m4_dquote(m4_shift($@))])])
+m4_define([lt_unquote], $1)
+
+
+# lt_append(MACRO-NAME, STRING, [SEPARATOR])
+# ------------------------------------------
+# Redefine MACRO-NAME to hold its former content plus `SEPARATOR'`STRING'.
+# Note that neither SEPARATOR nor STRING are expanded; they are appended
+# to MACRO-NAME as is (leaving the expansion for when MACRO-NAME is invoked).
+# No SEPARATOR is output if MACRO-NAME was previously undefined (different
+# than defined and empty).
+#
+# This macro is needed until we can rely on Autoconf 2.62, since earlier
+# versions of m4sugar mistakenly expanded SEPARATOR but not STRING.
+m4_define([lt_append],
+[m4_define([$1],
+ m4_ifdef([$1], [m4_defn([$1])[$3]])[$2])])
+
+
+
+# lt_combine(SEP, PREFIX-LIST, INFIX, SUFFIX1, [SUFFIX2...])
+# ----------------------------------------------------------
+# Produce a SEP delimited list of all paired combinations of elements of
+# PREFIX-LIST with SUFFIX1 through SUFFIXn. Each element of the list
+# has the form PREFIXmINFIXSUFFIXn.
+# Needed until we can rely on m4_combine added in Autoconf 2.62.
+m4_define([lt_combine],
+[m4_if(m4_eval([$# > 3]), [1],
+ [m4_pushdef([_Lt_sep], [m4_define([_Lt_sep], m4_defn([lt_car]))])]]dnl
+[[m4_foreach([_Lt_prefix], [$2],
+ [m4_foreach([_Lt_suffix],
+ ]m4_dquote(m4_dquote(m4_shift(m4_shift(m4_shift($@)))))[,
+ [_Lt_sep([$1])[]m4_defn([_Lt_prefix])[$3]m4_defn([_Lt_suffix])])])])])
+
+
+# lt_if_append_uniq(MACRO-NAME, VARNAME, [SEPARATOR], [UNIQ], [NOT-UNIQ])
+# -----------------------------------------------------------------------
+# Iff MACRO-NAME does not yet contain VARNAME, then append it (delimited
+# by SEPARATOR if supplied) and expand UNIQ, else NOT-UNIQ.
+m4_define([lt_if_append_uniq],
+[m4_ifdef([$1],
+ [m4_if(m4_index([$3]m4_defn([$1])[$3], [$3$2$3]), [-1],
+ [lt_append([$1], [$2], [$3])$4],
+ [$5])],
+ [lt_append([$1], [$2], [$3])$4])])
+
+
+# lt_dict_add(DICT, KEY, VALUE)
+# -----------------------------
+m4_define([lt_dict_add],
+[m4_define([$1($2)], [$3])])
+
+
+# lt_dict_add_subkey(DICT, KEY, SUBKEY, VALUE)
+# --------------------------------------------
+m4_define([lt_dict_add_subkey],
+[m4_define([$1($2:$3)], [$4])])
+
+
+# lt_dict_fetch(DICT, KEY, [SUBKEY])
+# ----------------------------------
+m4_define([lt_dict_fetch],
+[m4_ifval([$3],
+ m4_ifdef([$1($2:$3)], [m4_defn([$1($2:$3)])]),
+ m4_ifdef([$1($2)], [m4_defn([$1($2)])]))])
+
+
+# lt_if_dict_fetch(DICT, KEY, [SUBKEY], VALUE, IF-TRUE, [IF-FALSE])
+# -----------------------------------------------------------------
+m4_define([lt_if_dict_fetch],
+[m4_if(lt_dict_fetch([$1], [$2], [$3]), [$4],
+ [$5],
+ [$6])])
+
+
+# lt_dict_filter(DICT, [SUBKEY], VALUE, [SEPARATOR], KEY, [...])
+# --------------------------------------------------------------
+m4_define([lt_dict_filter],
+[m4_if([$5], [], [],
+ [lt_join(m4_quote(m4_default([$4], [[, ]])),
+ lt_unquote(m4_split(m4_normalize(m4_foreach(_Lt_key, lt_car([m4_shiftn(4, $@)]),
+ [lt_if_dict_fetch([$1], _Lt_key, [$2], [$3], [_Lt_key ])])))))])[]dnl
+])
diff --git a/m4/ltversion.m4 b/m4/ltversion.m4
new file mode 100644
index 0000000..07a8602
--- /dev/null
+++ b/m4/ltversion.m4
@@ -0,0 +1,23 @@
+# ltversion.m4 -- version numbers -*- Autoconf -*-
+#
+# Copyright (C) 2004 Free Software Foundation, Inc.
+# Written by Scott James Remnant, 2004
+#
+# 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.
+
+# @configure_input@
+
+# serial 3337 ltversion.m4
+# This file is part of GNU Libtool
+
+m4_define([LT_PACKAGE_VERSION], [2.4.2])
+m4_define([LT_PACKAGE_REVISION], [1.3337])
+
+AC_DEFUN([LTVERSION_VERSION],
+[macro_version='2.4.2'
+macro_revision='1.3337'
+_LT_DECL(, macro_version, 0, [Which release of libtool.m4 was used?])
+_LT_DECL(, macro_revision, 0)
+])
diff --git a/m4/lt~obsolete.m4 b/m4/lt~obsolete.m4
new file mode 100644
index 0000000..c573da9
--- /dev/null
+++ b/m4/lt~obsolete.m4
@@ -0,0 +1,98 @@
+# lt~obsolete.m4 -- aclocal satisfying obsolete definitions. -*-Autoconf-*-
+#
+# Copyright (C) 2004, 2005, 2007, 2009 Free Software Foundation, Inc.
+# Written by Scott James Remnant, 2004.
+#
+# This file is free software; the Free Software Foundation gives
+# unlimited permission to copy and/or distribute it, with or without
+# modifications, as long as this notice is preserved.
+
+# serial 5 lt~obsolete.m4
+
+# These exist entirely to fool aclocal when bootstrapping libtool.
+#
+# In the past libtool.m4 has provided macros via AC_DEFUN (or AU_DEFUN)
+# which have later been changed to m4_define as they aren't part of the
+# exported API, or moved to Autoconf or Automake where they belong.
+#
+# The trouble is, aclocal is a bit thick. It'll see the old AC_DEFUN
+# in /usr/share/aclocal/libtool.m4 and remember it, then when it sees us
+# using a macro with the same name in our local m4/libtool.m4 it'll
+# pull the old libtool.m4 in (it doesn't see our shiny new m4_define
+# and doesn't know about Autoconf macros at all.)
+#
+# So we provide this file, which has a silly filename so it's always
+# included after everything else. This provides aclocal with the
+# AC_DEFUNs it wants, but when m4 processes it, it doesn't do anything
+# because those macros already exist, or will be overwritten later.
+# We use AC_DEFUN over AU_DEFUN for compatibility with aclocal-1.6.
+#
+# Anytime we withdraw an AC_DEFUN or AU_DEFUN, remember to add it here.
+# Yes, that means every name once taken will need to remain here until
+# we give up compatibility with versions before 1.7, at which point
+# we need to keep only those names which we still refer to.
+
+# This is to help aclocal find these macros, as it can't see m4_define.
+AC_DEFUN([LTOBSOLETE_VERSION], [m4_if([1])])
+
+m4_ifndef([AC_LIBTOOL_LINKER_OPTION], [AC_DEFUN([AC_LIBTOOL_LINKER_OPTION])])
+m4_ifndef([AC_PROG_EGREP], [AC_DEFUN([AC_PROG_EGREP])])
+m4_ifndef([_LT_AC_PROG_ECHO_BACKSLASH], [AC_DEFUN([_LT_AC_PROG_ECHO_BACKSLASH])])
+m4_ifndef([_LT_AC_SHELL_INIT], [AC_DEFUN([_LT_AC_SHELL_INIT])])
+m4_ifndef([_LT_AC_SYS_LIBPATH_AIX], [AC_DEFUN([_LT_AC_SYS_LIBPATH_AIX])])
+m4_ifndef([_LT_PROG_LTMAIN], [AC_DEFUN([_LT_PROG_LTMAIN])])
+m4_ifndef([_LT_AC_TAGVAR], [AC_DEFUN([_LT_AC_TAGVAR])])
+m4_ifndef([AC_LTDL_ENABLE_INSTALL], [AC_DEFUN([AC_LTDL_ENABLE_INSTALL])])
+m4_ifndef([AC_LTDL_PREOPEN], [AC_DEFUN([AC_LTDL_PREOPEN])])
+m4_ifndef([_LT_AC_SYS_COMPILER], [AC_DEFUN([_LT_AC_SYS_COMPILER])])
+m4_ifndef([_LT_AC_LOCK], [AC_DEFUN([_LT_AC_LOCK])])
+m4_ifndef([AC_LIBTOOL_SYS_OLD_ARCHIVE], [AC_DEFUN([AC_LIBTOOL_SYS_OLD_ARCHIVE])])
+m4_ifndef([_LT_AC_TRY_DLOPEN_SELF], [AC_DEFUN([_LT_AC_TRY_DLOPEN_SELF])])
+m4_ifndef([AC_LIBTOOL_PROG_CC_C_O], [AC_DEFUN([AC_LIBTOOL_PROG_CC_C_O])])
+m4_ifndef([AC_LIBTOOL_SYS_HARD_LINK_LOCKS], [AC_DEFUN([AC_LIBTOOL_SYS_HARD_LINK_LOCKS])])
+m4_ifndef([AC_LIBTOOL_OBJDIR], [AC_DEFUN([AC_LIBTOOL_OBJDIR])])
+m4_ifndef([AC_LTDL_OBJDIR], [AC_DEFUN([AC_LTDL_OBJDIR])])
+m4_ifndef([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH], [AC_DEFUN([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH])])
+m4_ifndef([AC_LIBTOOL_SYS_LIB_STRIP], [AC_DEFUN([AC_LIBTOOL_SYS_LIB_STRIP])])
+m4_ifndef([AC_PATH_MAGIC], [AC_DEFUN([AC_PATH_MAGIC])])
+m4_ifndef([AC_PROG_LD_GNU], [AC_DEFUN([AC_PROG_LD_GNU])])
+m4_ifndef([AC_PROG_LD_RELOAD_FLAG], [AC_DEFUN([AC_PROG_LD_RELOAD_FLAG])])
+m4_ifndef([AC_DEPLIBS_CHECK_METHOD], [AC_DEFUN([AC_DEPLIBS_CHECK_METHOD])])
+m4_ifndef([AC_LIBTOOL_PROG_COMPILER_NO_RTTI], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_NO_RTTI])])
+m4_ifndef([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE], [AC_DEFUN([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE])])
+m4_ifndef([AC_LIBTOOL_PROG_COMPILER_PIC], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_PIC])])
+m4_ifndef([AC_LIBTOOL_PROG_LD_SHLIBS], [AC_DEFUN([AC_LIBTOOL_PROG_LD_SHLIBS])])
+m4_ifndef([AC_LIBTOOL_POSTDEP_PREDEP], [AC_DEFUN([AC_LIBTOOL_POSTDEP_PREDEP])])
+m4_ifndef([LT_AC_PROG_EGREP], [AC_DEFUN([LT_AC_PROG_EGREP])])
+m4_ifndef([LT_AC_PROG_SED], [AC_DEFUN([LT_AC_PROG_SED])])
+m4_ifndef([_LT_CC_BASENAME], [AC_DEFUN([_LT_CC_BASENAME])])
+m4_ifndef([_LT_COMPILER_BOILERPLATE], [AC_DEFUN([_LT_COMPILER_BOILERPLATE])])
+m4_ifndef([_LT_LINKER_BOILERPLATE], [AC_DEFUN([_LT_LINKER_BOILERPLATE])])
+m4_ifndef([_AC_PROG_LIBTOOL], [AC_DEFUN([_AC_PROG_LIBTOOL])])
+m4_ifndef([AC_LIBTOOL_SETUP], [AC_DEFUN([AC_LIBTOOL_SETUP])])
+m4_ifndef([_LT_AC_CHECK_DLFCN], [AC_DEFUN([_LT_AC_CHECK_DLFCN])])
+m4_ifndef([AC_LIBTOOL_SYS_DYNAMIC_LINKER], [AC_DEFUN([AC_LIBTOOL_SYS_DYNAMIC_LINKER])])
+m4_ifndef([_LT_AC_TAGCONFIG], [AC_DEFUN([_LT_AC_TAGCONFIG])])
+m4_ifndef([AC_DISABLE_FAST_INSTALL], [AC_DEFUN([AC_DISABLE_FAST_INSTALL])])
+m4_ifndef([_LT_AC_LANG_CXX], [AC_DEFUN([_LT_AC_LANG_CXX])])
+m4_ifndef([_LT_AC_LANG_F77], [AC_DEFUN([_LT_AC_LANG_F77])])
+m4_ifndef([_LT_AC_LANG_GCJ], [AC_DEFUN([_LT_AC_LANG_GCJ])])
+m4_ifndef([AC_LIBTOOL_LANG_C_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_C_CONFIG])])
+m4_ifndef([_LT_AC_LANG_C_CONFIG], [AC_DEFUN([_LT_AC_LANG_C_CONFIG])])
+m4_ifndef([AC_LIBTOOL_LANG_CXX_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_CXX_CONFIG])])
+m4_ifndef([_LT_AC_LANG_CXX_CONFIG], [AC_DEFUN([_LT_AC_LANG_CXX_CONFIG])])
+m4_ifndef([AC_LIBTOOL_LANG_F77_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_F77_CONFIG])])
+m4_ifndef([_LT_AC_LANG_F77_CONFIG], [AC_DEFUN([_LT_AC_LANG_F77_CONFIG])])
+m4_ifndef([AC_LIBTOOL_LANG_GCJ_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_GCJ_CONFIG])])
+m4_ifndef([_LT_AC_LANG_GCJ_CONFIG], [AC_DEFUN([_LT_AC_LANG_GCJ_CONFIG])])
+m4_ifndef([AC_LIBTOOL_LANG_RC_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_RC_CONFIG])])
+m4_ifndef([_LT_AC_LANG_RC_CONFIG], [AC_DEFUN([_LT_AC_LANG_RC_CONFIG])])
+m4_ifndef([AC_LIBTOOL_CONFIG], [AC_DEFUN([AC_LIBTOOL_CONFIG])])
+m4_ifndef([_LT_AC_FILE_LTDLL_C], [AC_DEFUN([_LT_AC_FILE_LTDLL_C])])
+m4_ifndef([_LT_REQUIRED_DARWIN_CHECKS], [AC_DEFUN([_LT_REQUIRED_DARWIN_CHECKS])])
+m4_ifndef([_LT_AC_PROG_CXXCPP], [AC_DEFUN([_LT_AC_PROG_CXXCPP])])
+m4_ifndef([_LT_PREPARE_SED_QUOTE_VARS], [AC_DEFUN([_LT_PREPARE_SED_QUOTE_VARS])])
+m4_ifndef([_LT_PROG_ECHO_BACKSLASH], [AC_DEFUN([_LT_PROG_ECHO_BACKSLASH])])
+m4_ifndef([_LT_PROG_F77], [AC_DEFUN([_LT_PROG_F77])])
+m4_ifndef([_LT_PROG_FC], [AC_DEFUN([_LT_PROG_FC])])
+m4_ifndef([_LT_PROG_CXX], [AC_DEFUN([_LT_PROG_CXX])])
diff --git a/man/Makefile.am b/man/Makefile.am
new file mode 100644
index 0000000..a41f647
--- /dev/null
+++ b/man/Makefile.am
@@ -0,0 +1 @@
+dist_man_MANS=libpll.3
diff --git a/man/Makefile.in b/man/Makefile.in
new file mode 100644
index 0000000..f936ab0
--- /dev/null
+++ b/man/Makefile.in
@@ -0,0 +1,518 @@
+# Makefile.in generated by automake 1.14.1 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994-2013 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.
+
+ at SET_MAKE@
+VPATH = @srcdir@
+am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__make_running_with_option = \
+ case $${target_option-} in \
+ ?) ;; \
+ *) echo "am__make_running_with_option: internal error: invalid" \
+ "target option '$${target_option-}' specified" >&2; \
+ exit 1;; \
+ esac; \
+ has_opt=no; \
+ sane_makeflags=$$MAKEFLAGS; \
+ if $(am__is_gnu_make); then \
+ sane_makeflags=$$MFLAGS; \
+ else \
+ case $$MAKEFLAGS in \
+ *\\[\ \ ]*) \
+ bs=\\; \
+ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
+ esac; \
+ fi; \
+ skip_next=no; \
+ strip_trailopt () \
+ { \
+ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+ }; \
+ for flg in $$sane_makeflags; do \
+ test $$skip_next = yes && { skip_next=no; continue; }; \
+ case $$flg in \
+ *=*|--*) continue;; \
+ -*I) strip_trailopt 'I'; skip_next=yes;; \
+ -*I?*) strip_trailopt 'I';; \
+ -*O) strip_trailopt 'O'; skip_next=yes;; \
+ -*O?*) strip_trailopt 'O';; \
+ -*l) strip_trailopt 'l'; skip_next=yes;; \
+ -*l?*) strip_trailopt 'l';; \
+ -[dEDm]) skip_next=yes;; \
+ -[JT]) skip_next=yes;; \
+ esac; \
+ case $$flg in \
+ *$$target_option*) has_opt=yes; break;; \
+ esac; \
+ done; \
+ test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+subdir = man
+DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
+ $(dist_man_MANS)
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/ax_check_compile_flag.m4 \
+ $(top_srcdir)/m4/ax_ext.m4 \
+ $(top_srcdir)/m4/ax_gcc_x86_cpuid.m4 \
+ $(top_srcdir)/m4/ax_mpi.m4 $(top_srcdir)/m4/libtool.m4 \
+ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+ $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+AM_V_P = $(am__v_P_ at AM_V@)
+am__v_P_ = $(am__v_P_ at AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_ at AM_V@)
+am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
+am__v_GEN_0 = @echo " GEN " $@;
+am__v_GEN_1 =
+AM_V_at = $(am__v_at_ at AM_V@)
+am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 =
+SOURCES =
+DIST_SOURCES =
+am__can_run_installinfo = \
+ case $$AM_UPDATE_INFO_DIR in \
+ n|no|NO) false;; \
+ *) (install-info --version) >/dev/null 2>&1;; \
+ esac
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+ *) f=$$p;; \
+ esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+ for p in $$list; do echo "$$p $$p"; done | \
+ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+ if (++n[$$2] == $(am__install_max)) \
+ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+ END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+ test -z "$$files" \
+ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+ $(am__cd) "$$dir" && rm -f $$files; }; \
+ }
+man3dir = $(mandir)/man3
+am__installdirs = "$(DESTDIR)$(man3dir)"
+NROFF = nroff
+MANS = $(dist_man_MANS)
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DLLTOOL = @DLLTOOL@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+GREP = @GREP@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBPLL_MAJOR = @LIBPLL_MAJOR@
+LIBPLL_MINOR = @LIBPLL_MINOR@
+LIBPLL_REV = @LIBPLL_REV@
+LIBPLL_VERSION = @LIBPLL_VERSION@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MKDIR_P = @MKDIR_P@
+MPICC = @MPICC@
+MPILIBS = @MPILIBS@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SIMD_FLAGS = @SIMD_FLAGS@
+STRIP = @STRIP@
+VERSION = @VERSION@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+dist_man_MANS = libpll.3
+all: all-am
+
+.SUFFIXES:
+$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu man/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --gnu man/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+install-man3: $(dist_man_MANS)
+ @$(NORMAL_INSTALL)
+ @list1=''; \
+ list2='$(dist_man_MANS)'; \
+ test -n "$(man3dir)" \
+ && test -n "`echo $$list1$$list2`" \
+ || exit 0; \
+ echo " $(MKDIR_P) '$(DESTDIR)$(man3dir)'"; \
+ $(MKDIR_P) "$(DESTDIR)$(man3dir)" || exit 1; \
+ { for i in $$list1; do echo "$$i"; done; \
+ if test -n "$$list2"; then \
+ for i in $$list2; do echo "$$i"; done \
+ | sed -n '/\.3[a-z]*$$/p'; \
+ fi; \
+ } | while read p; do \
+ if test -f $$p; then d=; else d="$(srcdir)/"; fi; \
+ echo "$$d$$p"; echo "$$p"; \
+ done | \
+ sed -e 'n;s,.*/,,;p;h;s,.*\.,,;s,^[^3][0-9a-z]*$$,3,;x' \
+ -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,' | \
+ sed 'N;N;s,\n, ,g' | { \
+ list=; while read file base inst; do \
+ if test "$$base" = "$$inst"; then list="$$list $$file"; else \
+ echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man3dir)/$$inst'"; \
+ $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man3dir)/$$inst" || exit $$?; \
+ fi; \
+ done; \
+ for i in $$list; do echo "$$i"; done | $(am__base_list) | \
+ while read files; do \
+ test -z "$$files" || { \
+ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(man3dir)'"; \
+ $(INSTALL_DATA) $$files "$(DESTDIR)$(man3dir)" || exit $$?; }; \
+ done; }
+
+uninstall-man3:
+ @$(NORMAL_UNINSTALL)
+ @list=''; test -n "$(man3dir)" || exit 0; \
+ files=`{ for i in $$list; do echo "$$i"; done; \
+ l2='$(dist_man_MANS)'; for i in $$l2; do echo "$$i"; done | \
+ sed -n '/\.3[a-z]*$$/p'; \
+ } | sed -e 's,.*/,,;h;s,.*\.,,;s,^[^3][0-9a-z]*$$,3,;x' \
+ -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,'`; \
+ dir='$(DESTDIR)$(man3dir)'; $(am__uninstall_files_from_dir)
+tags TAGS:
+
+ctags CTAGS:
+
+cscope cscopelist:
+
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+ else \
+ test -f "$(distdir)/$$file" \
+ || cp -p $$d/$$file "$(distdir)/$$file" \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+check: check-am
+all-am: Makefile $(MANS)
+installdirs:
+ for dir in "$(DESTDIR)$(man3dir)"; do \
+ test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+ done
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ if test -z '$(STRIP)'; then \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ install; \
+ else \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+ fi
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic clean-libtool mostlyclean-am
+
+distclean: distclean-am
+ -rm -f Makefile
+distclean-am: clean-am distclean-generic
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am: install-man
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man: install-man3
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-generic mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-man
+
+uninstall-man: uninstall-man3
+
+.MAKE: install-am install-strip
+
+.PHONY: all all-am check check-am clean clean-generic clean-libtool \
+ cscopelist-am ctags-am distclean distclean-generic \
+ distclean-libtool distdir dvi dvi-am html html-am info info-am \
+ install install-am install-data install-data-am install-dvi \
+ install-dvi-am install-exec install-exec-am install-html \
+ install-html-am install-info install-info-am install-man \
+ install-man3 install-pdf install-pdf-am install-ps \
+ install-ps-am install-strip installcheck installcheck-am \
+ installdirs maintainer-clean maintainer-clean-generic \
+ mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \
+ ps ps-am tags-am uninstall uninstall-am uninstall-man \
+ uninstall-man3
+
+
+# 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/man/libpll.3 b/man/libpll.3
new file mode 100644
index 0000000..31cbf5d
--- /dev/null
+++ b/man/libpll.3
@@ -0,0 +1,94 @@
+.TH PLL 3 "1 Sep 2013"
+.SH NAME
+PLL \- Phylogenetic Likelihood Library
+.SH SYNOPSIS
+.NF
+#include <pll.h>
+.sp
+[see
+.I pll.h
+for full description]
+.SH DESCRIPTION
+.I PLL
+is a software library for phylogenetic inference. The code is thread safe, and
+optimized for the
+.I Advanced Vector Extensions
+(AVX) and the
+.I Streaming SIMD Extensions
+(SSE)
+instruction set extensions to the x86 architecture.
+.LP
+.I PLL
+supports DNA and protein partitioned analysis. For DNA partitions the GTR model is supported
+and for protein partitions the models
+.IR DAYHOFF ,
+.IR DCMUT ,
+.IR JTT ,
+.IR MTREV ,
+.IR WAG ,
+.IR RTREV ,
+.IR CPREV ,
+.IR VT ,
+.IR BLOSUM62 ,
+.IR MTMAM ,
+.IR LG
+.IR MTART ,
+.IR MTZOA ,
+.IR PMB ,
+.IR HIVB ,
+.IR HIVW ,
+.IR JTTDCMUT ,
+.IR FLU ,
+.IR LG4
+and
+.IR GTR
+are supported. In addition the model
+.IR AUTO
+is available for auto-detecting the best model for the specific partition.
+.LP
+.IR PLL
+is available at
+.IP
+http://www.libpll.org
+.SH "SEE ALSO"
+The
+.I PLL
+web site can be found at
+.IP
+http://www.libpll.org
+.LP
+Another library for phylogenetic inference is
+.I beagle-lib
+which is available at
+.IP
+https://code.google.com/p/beagle-lib/
+.SH "REPORTING PROBLEMS"
+Before reporting a problem,
+please check the
+.I PLL
+web site to verify that you have the latest version of
+.IR PLL ;
+otherwise,
+obtain the latest version and see if the problem persists.
+Please browse through the
+.I PLL
+mailing list before asking for help.
+.SH AUTHORS
+Version 0.9.0
+Copyright (C) 2013 Tomas Flouri (Tomas.Flouri at h-its.org) and Alexandros Stamatakis (Alexandros.Stamatakis at h-its.org).
+.LP
+This software is provided "as-is,"
+without any express or implied warranty.
+In no event will the authors be help liable for any damages
+arising from the use of this software.
+See the distribution directory with respect to requirements
+governing redistribution.
+The
+.IR PLL
+codebase started from
+.IR RAxML
+by Alexandros Stamatakis.
+Thanks to all people who contributed to the code and suggested various
+implrovements in
+.IR PLL ;
+who are too numerous to cite here.
diff --git a/missing b/missing
new file mode 100755
index 0000000..db98974
--- /dev/null
+++ b/missing
@@ -0,0 +1,215 @@
+#! /bin/sh
+# Common wrapper for a few potentially missing GNU programs.
+
+scriptversion=2013-10-28.13; # UTC
+
+# Copyright (C) 1996-2013 Free Software Foundation, Inc.
+# Originally written by Fran,cois Pinard <pinard at iro.umontreal.ca>, 1996.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+# 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
+
+case $1 in
+
+ --is-lightweight)
+ # Used by our autoconf macros to check whether the available missing
+ # script is modern enough.
+ exit 0
+ ;;
+
+ --run)
+ # Back-compat with the calling convention used by older automake.
+ shift
+ ;;
+
+ -h|--h|--he|--hel|--help)
+ echo "\
+$0 [OPTION]... PROGRAM [ARGUMENT]...
+
+Run 'PROGRAM [ARGUMENT]...', returning a proper advice when this fails due
+to PROGRAM being missing or too old.
+
+Options:
+ -h, --help display this help and exit
+ -v, --version output version information and exit
+
+Supported PROGRAM values:
+ aclocal autoconf autoheader autom4te automake makeinfo
+ bison yacc flex lex help2man
+
+Version suffixes to PROGRAM as well as the prefixes 'gnu-', 'gnu', and
+'g' are ignored when checking the name.
+
+Send bug reports to <bug-automake at gnu.org>."
+ exit $?
+ ;;
+
+ -v|--v|--ve|--ver|--vers|--versi|--versio|--version)
+ echo "missing $scriptversion (GNU Automake)"
+ exit $?
+ ;;
+
+ -*)
+ echo 1>&2 "$0: unknown '$1' option"
+ echo 1>&2 "Try '$0 --help' for more information"
+ exit 1
+ ;;
+
+esac
+
+# Run the given program, remember its exit status.
+"$@"; st=$?
+
+# If it succeeded, we are done.
+test $st -eq 0 && exit 0
+
+# Also exit now if we it failed (or wasn't found), and '--version' was
+# passed; such an option is passed most likely to detect whether the
+# program is present and works.
+case $2 in --version|--help) exit $st;; esac
+
+# Exit code 63 means version mismatch. This often happens when the user
+# tries to use an ancient version of a tool on a file that requires a
+# minimum version.
+if test $st -eq 63; then
+ msg="probably too old"
+elif test $st -eq 127; then
+ # Program was missing.
+ msg="missing on your system"
+else
+ # Program was found and executed, but failed. Give up.
+ exit $st
+fi
+
+perl_URL=http://www.perl.org/
+flex_URL=http://flex.sourceforge.net/
+gnu_software_URL=http://www.gnu.org/software
+
+program_details ()
+{
+ case $1 in
+ aclocal|automake)
+ echo "The '$1' program is part of the GNU Automake package:"
+ echo "<$gnu_software_URL/automake>"
+ echo "It also requires GNU Autoconf, GNU m4 and Perl in order to run:"
+ echo "<$gnu_software_URL/autoconf>"
+ echo "<$gnu_software_URL/m4/>"
+ echo "<$perl_URL>"
+ ;;
+ autoconf|autom4te|autoheader)
+ echo "The '$1' program is part of the GNU Autoconf package:"
+ echo "<$gnu_software_URL/autoconf/>"
+ echo "It also requires GNU m4 and Perl in order to run:"
+ echo "<$gnu_software_URL/m4/>"
+ echo "<$perl_URL>"
+ ;;
+ esac
+}
+
+give_advice ()
+{
+ # Normalize program name to check for.
+ normalized_program=`echo "$1" | sed '
+ s/^gnu-//; t
+ s/^gnu//; t
+ s/^g//; t'`
+
+ printf '%s\n' "'$1' is $msg."
+
+ configure_deps="'configure.ac' or m4 files included by 'configure.ac'"
+ case $normalized_program in
+ autoconf*)
+ echo "You should only need it if you modified 'configure.ac',"
+ echo "or m4 files included by it."
+ program_details 'autoconf'
+ ;;
+ autoheader*)
+ echo "You should only need it if you modified 'acconfig.h' or"
+ echo "$configure_deps."
+ program_details 'autoheader'
+ ;;
+ automake*)
+ echo "You should only need it if you modified 'Makefile.am' or"
+ echo "$configure_deps."
+ program_details 'automake'
+ ;;
+ aclocal*)
+ echo "You should only need it if you modified 'acinclude.m4' or"
+ echo "$configure_deps."
+ program_details 'aclocal'
+ ;;
+ autom4te*)
+ echo "You might have modified some maintainer files that require"
+ echo "the 'autom4te' program to be rebuilt."
+ program_details 'autom4te'
+ ;;
+ bison*|yacc*)
+ echo "You should only need it if you modified a '.y' file."
+ echo "You may want to install the GNU Bison package:"
+ echo "<$gnu_software_URL/bison/>"
+ ;;
+ lex*|flex*)
+ echo "You should only need it if you modified a '.l' file."
+ echo "You may want to install the Fast Lexical Analyzer package:"
+ echo "<$flex_URL>"
+ ;;
+ help2man*)
+ echo "You should only need it if you modified a dependency" \
+ "of a man page."
+ echo "You may want to install the GNU Help2man package:"
+ echo "<$gnu_software_URL/help2man/>"
+ ;;
+ makeinfo*)
+ echo "You should only need it if you modified a '.texi' file, or"
+ echo "any other file indirectly affecting the aspect of the manual."
+ echo "You might want to install the Texinfo package:"
+ echo "<$gnu_software_URL/texinfo/>"
+ echo "The spurious makeinfo call might also be the consequence of"
+ echo "using a buggy 'make' (AIX, DU, IRIX), in which case you might"
+ echo "want to install GNU make:"
+ echo "<$gnu_software_URL/make/>"
+ ;;
+ *)
+ echo "You might have modified some files without having the proper"
+ echo "tools for further handling them. Check the 'README' file, it"
+ echo "often tells you about the needed prerequisites for installing"
+ echo "this package. You may also peek at any GNU archive site, in"
+ echo "case some other package contains this missing '$1' program."
+ ;;
+ esac
+}
+
+give_advice "$1" | sed -e '1s/^/WARNING: /' \
+ -e '2,$s/^/ /' >&2
+
+# Propagate the correct exit status (expected to be 127 for a program
+# not found, 63 for a program that failed due to version mismatch).
+exit $st
+
+# Local variables:
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "scriptversion="
+# time-stamp-format: "%:y-%02m-%02d.%02H"
+# time-stamp-time-zone: "UTC"
+# time-stamp-end: "; # UTC"
+# End:
diff --git a/sources.am b/sources.am
new file mode 100644
index 0000000..22a89c4
--- /dev/null
+++ b/sources.am
@@ -0,0 +1,2 @@
+ALL_SOURCES = ../src/genericParallelization.c ../src/hash.c ../src/stack.c ../src/ssort.c ../src/queue.c ../src/utils.c ../src/randomTree.c ../src/optimizeModel.c ../src/trash.c ../src/searchAlgo.c ../src/topologies.c ../src/fastDNAparsimony.c ../src/treeIO.c ../src/models.c ../src/evaluatePartialGenericSpecial.c ../src/evaluateGenericSpecial.c ../src/newviewGenericSpecial.c ../src/makenewzGenericSpecial.c ../src/bipartitionList.c ../src/restartHashTable.c ../src/recom.c ../src/lexer.c . [...]
+AVX_SOURCES = ../src/avxLikelihood.c $(ALL_SOURCES)
diff --git a/src/Makefile.am b/src/Makefile.am
new file mode 100644
index 0000000..a9f436a
--- /dev/null
+++ b/src/Makefile.am
@@ -0,0 +1,55 @@
+#lib_LTLIBRARIES = libpll-generic.la
+lib_LTLIBRARIES =
+#lib_LIBRARIES = libpll-generic.a
+lib_LIBRARIES =
+libpll_generic_la_SOURCES = hash.c stack.c ssort.c queue.c utils.c randomTree.c optimizeModel.c trash.c searchAlgo.c topologies.c fastDNAparsimony.c treeIO.c models.c evaluatePartialGenericSpecial.c evaluateGenericSpecial.c newviewGenericSpecial.c makenewzGenericSpecial.c bipartitionList.c restartHashTable.c recom.c lexer.c alignment.c newick.c parsePartition.c parsimony.c
+libpll_generic_la_CFLAGS = -c -D_GNU_SOURCE -O2 -fomit-frame-pointer -funroll-loops -Wall -Wredundant-decls -Wreturn-type -Wswitch-default -Wimplicit -Wimplicit-function-declaration -Wimplicit-int -Wimport -Wunused-label -Wno-int-to-pointer-cast -Wbad-function-cast -Wmissing-declarations -Wmissing-prototypes -Wnested-externs -Wold-style-definition -Wstrict-prototypes -Wpointer-sign -Wextra -Wredundant-decls -Wunused -Wunused-function -Wunused-parameter -Wunused-value -Wunused-var [...]
+libpll_generic_la_LDFLAGS = -version-info @LIBPLL_MAJOR@:@LIBPLL_MINOR@:@LIBPLL_REV@
+libpll_generic_a_SOURCES = $(libpll_generic_la_SOURCES)
+libpll_generic_a_CFLAGS = $(libpll_generic_la_CFLAGS)
+
+if BUILD_SSE3
+lib_LTLIBRARIES += libpll-sse3.la
+libpll_sse3_la_SOURCES = $(libpll_generic_la_SOURCES)
+libpll_sse3_la_CFLAGS = -D__SSE3 -msse3 $(libpll_generic_la_CFLAGS)
+libpll_sse3_la_LDFLAGS = -version-info @LIBPLL_MAJOR@:@LIBPLL_MINOR@:@LIBPLL_REV@
+lib_LIBRARIES += libpll-sse3.a
+libpll_sse3_a_SOURCES = $(libpll_sse3_la_SOURCES)
+libpll_sse3_a_CFLAGS = $(libpll_sse3_la_CFLAGS)
+endif
+
+
+if BUILD_AVX
+lib_LTLIBRARIES += libpll-avx.la
+libpll_avx_la_SOURCES = avxLikelihood.c $(libpll_generic_la_SOURCES)
+libpll_avx_la_CFLAGS = -D__SSE3 -D__AVX -mavx -msse3 $(libpll_generic_la_CFLAGS)
+libpll_avx_la_LDFLAGS = -version-info @LIBPLL_MAJOR@:@LIBPLL_MINOR@:@LIBPLL_REV@
+lib_LIBRARIES += libpll-avx.a
+libpll_avx_a_SOURCES = $(libpll_avx_la_SOURCES)
+libpll_avx_a_CFLAGS = $(libpll_avx_la_CFLAGS)
+endif
+
+if BUILD_SSE3_PTHREADS
+lib_LTLIBRARIES += libpll-sse3-pthreads.la
+libpll_sse3_pthreads_la_SOURCES = genericParallelization.c $(libpll_generic_la_SOURCES)
+libpll_sse3_pthreads_la_CFLAGS = -D_USE_PTHREADS -D__SSE3 -msse3 $(libpll_generic_la_CFLAGS)
+libpll_sse3_pthreads_la_LDFLAGS = -version-info @LIBPLL_MAJOR@:@LIBPLL_MINOR@:@LIBPLL_REV@
+lib_LIBRARIES += libpll-sse3-pthreads.a
+libpll_sse3_pthreads_a_SOURCES = $(libpll_sse3_pthreads_la_SOURCES)
+libpll_sse3_pthreads_a_CFLAGS = $(libpll_sse3_pthreads_la_CFLAGS)
+endif
+
+if BUILD_AVX_PTHREADS
+lib_LTLIBRARIES += libpll-avx-pthreads.la
+libpll_avx_pthreads_la_SOURCES = avxLikelihood.c genericParallelization.c $(libpll_generic_la_SOURCES)
+libpll_avx_pthreads_la_CFLAGS = -D_USE_PTHREADS -D__AVX -mavx -D__SSE3 -msse3 $(libpll_generic_la_CFLAGS)
+libpll_avx_pthreads_la_LDFLAGS = -version-info @LIBPLL_MAJOR@:@LIBPLL_MINOR@:@LIBPLL_REV@
+lib_LIBRARIES += libpll-avx-pthreads.a
+libpll_avx_pthreads_a_SOURCES = $(libpll_avx_pthreads_la_SOURCES)
+libpll_avx_pthreads_a_CFLAGS = $(libpll_avx_pthreads_la_CFLAGS)
+endif
+
+pkgincludedir=$(includedir)/pll
+pkginclude_HEADERS = pll.h stack.h queue.h parsePartition.h
+EXTRA_DIST = cycle.h genericParallelization.h hardware.h lexer.h mic_native.h pll.h queue.h \
+ errcodes.h globalVariables.h hash.h mem_alloc.h parsePartition.h pllInternal.h stack.h
diff --git a/src/Makefile.in b/src/Makefile.in
new file mode 100644
index 0000000..ff686f2
--- /dev/null
+++ b/src/Makefile.in
@@ -0,0 +1,3475 @@
+# Makefile.in generated by automake 1.14.1 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994-2013 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.
+
+ at SET_MAKE@
+
+
+
+VPATH = @srcdir@
+am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__make_running_with_option = \
+ case $${target_option-} in \
+ ?) ;; \
+ *) echo "am__make_running_with_option: internal error: invalid" \
+ "target option '$${target_option-}' specified" >&2; \
+ exit 1;; \
+ esac; \
+ has_opt=no; \
+ sane_makeflags=$$MAKEFLAGS; \
+ if $(am__is_gnu_make); then \
+ sane_makeflags=$$MFLAGS; \
+ else \
+ case $$MAKEFLAGS in \
+ *\\[\ \ ]*) \
+ bs=\\; \
+ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
+ esac; \
+ fi; \
+ skip_next=no; \
+ strip_trailopt () \
+ { \
+ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+ }; \
+ for flg in $$sane_makeflags; do \
+ test $$skip_next = yes && { skip_next=no; continue; }; \
+ case $$flg in \
+ *=*|--*) continue;; \
+ -*I) strip_trailopt 'I'; skip_next=yes;; \
+ -*I?*) strip_trailopt 'I';; \
+ -*O) strip_trailopt 'O'; skip_next=yes;; \
+ -*O?*) strip_trailopt 'O';; \
+ -*l) strip_trailopt 'l'; skip_next=yes;; \
+ -*l?*) strip_trailopt 'l';; \
+ -[dEDm]) skip_next=yes;; \
+ -[JT]) skip_next=yes;; \
+ esac; \
+ case $$flg in \
+ *$$target_option*) has_opt=yes; break;; \
+ esac; \
+ done; \
+ test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+ at BUILD_SSE3_TRUE@am__append_1 = libpll-sse3.la
+ at BUILD_SSE3_TRUE@am__append_2 = libpll-sse3.a
+ at BUILD_AVX_TRUE@am__append_3 = libpll-avx.la
+ at BUILD_AVX_TRUE@am__append_4 = libpll-avx.a
+ at BUILD_SSE3_PTHREADS_TRUE@am__append_5 = libpll-sse3-pthreads.la
+ at BUILD_SSE3_PTHREADS_TRUE@am__append_6 = libpll-sse3-pthreads.a
+ at BUILD_AVX_PTHREADS_TRUE@am__append_7 = libpll-avx-pthreads.la
+ at BUILD_AVX_PTHREADS_TRUE@am__append_8 = libpll-avx-pthreads.a
+subdir = src
+DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
+ $(top_srcdir)/depcomp $(pkginclude_HEADERS)
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/ax_check_compile_flag.m4 \
+ $(top_srcdir)/m4/ax_ext.m4 \
+ $(top_srcdir)/m4/ax_gcc_x86_cpuid.m4 \
+ $(top_srcdir)/m4/ax_mpi.m4 $(top_srcdir)/m4/libtool.m4 \
+ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+ $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+ *) f=$$p;; \
+ esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+ for p in $$list; do echo "$$p $$p"; done | \
+ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+ if (++n[$$2] == $(am__install_max)) \
+ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+ END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+ test -z "$$files" \
+ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+ $(am__cd) "$$dir" && rm -f $$files; }; \
+ }
+am__installdirs = "$(DESTDIR)$(libdir)" "$(DESTDIR)$(libdir)" \
+ "$(DESTDIR)$(pkgincludedir)"
+LIBRARIES = $(lib_LIBRARIES)
+ARFLAGS = cru
+AM_V_AR = $(am__v_AR_ at AM_V@)
+am__v_AR_ = $(am__v_AR_ at AM_DEFAULT_V@)
+am__v_AR_0 = @echo " AR " $@;
+am__v_AR_1 =
+libpll_avx_pthreads_a_AR = $(AR) $(ARFLAGS)
+libpll_avx_pthreads_a_LIBADD =
+am__libpll_avx_pthreads_a_SOURCES_DIST = avxLikelihood.c \
+ genericParallelization.c hash.c stack.c ssort.c queue.c \
+ utils.c randomTree.c optimizeModel.c trash.c searchAlgo.c \
+ topologies.c fastDNAparsimony.c treeIO.c models.c \
+ evaluatePartialGenericSpecial.c evaluateGenericSpecial.c \
+ newviewGenericSpecial.c makenewzGenericSpecial.c \
+ bipartitionList.c restartHashTable.c recom.c lexer.c \
+ alignment.c newick.c parsePartition.c parsimony.c
+am__objects_1 = libpll_avx_pthreads_a-hash.$(OBJEXT) \
+ libpll_avx_pthreads_a-stack.$(OBJEXT) \
+ libpll_avx_pthreads_a-ssort.$(OBJEXT) \
+ libpll_avx_pthreads_a-queue.$(OBJEXT) \
+ libpll_avx_pthreads_a-utils.$(OBJEXT) \
+ libpll_avx_pthreads_a-randomTree.$(OBJEXT) \
+ libpll_avx_pthreads_a-optimizeModel.$(OBJEXT) \
+ libpll_avx_pthreads_a-trash.$(OBJEXT) \
+ libpll_avx_pthreads_a-searchAlgo.$(OBJEXT) \
+ libpll_avx_pthreads_a-topologies.$(OBJEXT) \
+ libpll_avx_pthreads_a-fastDNAparsimony.$(OBJEXT) \
+ libpll_avx_pthreads_a-treeIO.$(OBJEXT) \
+ libpll_avx_pthreads_a-models.$(OBJEXT) \
+ libpll_avx_pthreads_a-evaluatePartialGenericSpecial.$(OBJEXT) \
+ libpll_avx_pthreads_a-evaluateGenericSpecial.$(OBJEXT) \
+ libpll_avx_pthreads_a-newviewGenericSpecial.$(OBJEXT) \
+ libpll_avx_pthreads_a-makenewzGenericSpecial.$(OBJEXT) \
+ libpll_avx_pthreads_a-bipartitionList.$(OBJEXT) \
+ libpll_avx_pthreads_a-restartHashTable.$(OBJEXT) \
+ libpll_avx_pthreads_a-recom.$(OBJEXT) \
+ libpll_avx_pthreads_a-lexer.$(OBJEXT) \
+ libpll_avx_pthreads_a-alignment.$(OBJEXT) \
+ libpll_avx_pthreads_a-newick.$(OBJEXT) \
+ libpll_avx_pthreads_a-parsePartition.$(OBJEXT) \
+ libpll_avx_pthreads_a-parsimony.$(OBJEXT)
+ at BUILD_AVX_PTHREADS_TRUE@am__objects_2 = libpll_avx_pthreads_a-avxLikelihood.$(OBJEXT) \
+ at BUILD_AVX_PTHREADS_TRUE@ libpll_avx_pthreads_a-genericParallelization.$(OBJEXT) \
+ at BUILD_AVX_PTHREADS_TRUE@ $(am__objects_1)
+ at BUILD_AVX_PTHREADS_TRUE@am_libpll_avx_pthreads_a_OBJECTS = \
+ at BUILD_AVX_PTHREADS_TRUE@ $(am__objects_2)
+libpll_avx_pthreads_a_OBJECTS = $(am_libpll_avx_pthreads_a_OBJECTS)
+libpll_avx_a_AR = $(AR) $(ARFLAGS)
+libpll_avx_a_LIBADD =
+am__libpll_avx_a_SOURCES_DIST = avxLikelihood.c hash.c stack.c ssort.c \
+ queue.c utils.c randomTree.c optimizeModel.c trash.c \
+ searchAlgo.c topologies.c fastDNAparsimony.c treeIO.c models.c \
+ evaluatePartialGenericSpecial.c evaluateGenericSpecial.c \
+ newviewGenericSpecial.c makenewzGenericSpecial.c \
+ bipartitionList.c restartHashTable.c recom.c lexer.c \
+ alignment.c newick.c parsePartition.c parsimony.c
+am__objects_3 = libpll_avx_a-hash.$(OBJEXT) \
+ libpll_avx_a-stack.$(OBJEXT) libpll_avx_a-ssort.$(OBJEXT) \
+ libpll_avx_a-queue.$(OBJEXT) libpll_avx_a-utils.$(OBJEXT) \
+ libpll_avx_a-randomTree.$(OBJEXT) \
+ libpll_avx_a-optimizeModel.$(OBJEXT) \
+ libpll_avx_a-trash.$(OBJEXT) libpll_avx_a-searchAlgo.$(OBJEXT) \
+ libpll_avx_a-topologies.$(OBJEXT) \
+ libpll_avx_a-fastDNAparsimony.$(OBJEXT) \
+ libpll_avx_a-treeIO.$(OBJEXT) libpll_avx_a-models.$(OBJEXT) \
+ libpll_avx_a-evaluatePartialGenericSpecial.$(OBJEXT) \
+ libpll_avx_a-evaluateGenericSpecial.$(OBJEXT) \
+ libpll_avx_a-newviewGenericSpecial.$(OBJEXT) \
+ libpll_avx_a-makenewzGenericSpecial.$(OBJEXT) \
+ libpll_avx_a-bipartitionList.$(OBJEXT) \
+ libpll_avx_a-restartHashTable.$(OBJEXT) \
+ libpll_avx_a-recom.$(OBJEXT) libpll_avx_a-lexer.$(OBJEXT) \
+ libpll_avx_a-alignment.$(OBJEXT) libpll_avx_a-newick.$(OBJEXT) \
+ libpll_avx_a-parsePartition.$(OBJEXT) \
+ libpll_avx_a-parsimony.$(OBJEXT)
+ at BUILD_AVX_TRUE@am__objects_4 = libpll_avx_a-avxLikelihood.$(OBJEXT) \
+ at BUILD_AVX_TRUE@ $(am__objects_3)
+ at BUILD_AVX_TRUE@am_libpll_avx_a_OBJECTS = $(am__objects_4)
+libpll_avx_a_OBJECTS = $(am_libpll_avx_a_OBJECTS)
+libpll_sse3_pthreads_a_AR = $(AR) $(ARFLAGS)
+libpll_sse3_pthreads_a_LIBADD =
+am__libpll_sse3_pthreads_a_SOURCES_DIST = genericParallelization.c \
+ hash.c stack.c ssort.c queue.c utils.c randomTree.c \
+ optimizeModel.c trash.c searchAlgo.c topologies.c \
+ fastDNAparsimony.c treeIO.c models.c \
+ evaluatePartialGenericSpecial.c evaluateGenericSpecial.c \
+ newviewGenericSpecial.c makenewzGenericSpecial.c \
+ bipartitionList.c restartHashTable.c recom.c lexer.c \
+ alignment.c newick.c parsePartition.c parsimony.c
+am__objects_5 = libpll_sse3_pthreads_a-hash.$(OBJEXT) \
+ libpll_sse3_pthreads_a-stack.$(OBJEXT) \
+ libpll_sse3_pthreads_a-ssort.$(OBJEXT) \
+ libpll_sse3_pthreads_a-queue.$(OBJEXT) \
+ libpll_sse3_pthreads_a-utils.$(OBJEXT) \
+ libpll_sse3_pthreads_a-randomTree.$(OBJEXT) \
+ libpll_sse3_pthreads_a-optimizeModel.$(OBJEXT) \
+ libpll_sse3_pthreads_a-trash.$(OBJEXT) \
+ libpll_sse3_pthreads_a-searchAlgo.$(OBJEXT) \
+ libpll_sse3_pthreads_a-topologies.$(OBJEXT) \
+ libpll_sse3_pthreads_a-fastDNAparsimony.$(OBJEXT) \
+ libpll_sse3_pthreads_a-treeIO.$(OBJEXT) \
+ libpll_sse3_pthreads_a-models.$(OBJEXT) \
+ libpll_sse3_pthreads_a-evaluatePartialGenericSpecial.$(OBJEXT) \
+ libpll_sse3_pthreads_a-evaluateGenericSpecial.$(OBJEXT) \
+ libpll_sse3_pthreads_a-newviewGenericSpecial.$(OBJEXT) \
+ libpll_sse3_pthreads_a-makenewzGenericSpecial.$(OBJEXT) \
+ libpll_sse3_pthreads_a-bipartitionList.$(OBJEXT) \
+ libpll_sse3_pthreads_a-restartHashTable.$(OBJEXT) \
+ libpll_sse3_pthreads_a-recom.$(OBJEXT) \
+ libpll_sse3_pthreads_a-lexer.$(OBJEXT) \
+ libpll_sse3_pthreads_a-alignment.$(OBJEXT) \
+ libpll_sse3_pthreads_a-newick.$(OBJEXT) \
+ libpll_sse3_pthreads_a-parsePartition.$(OBJEXT) \
+ libpll_sse3_pthreads_a-parsimony.$(OBJEXT)
+ at BUILD_SSE3_PTHREADS_TRUE@am__objects_6 = libpll_sse3_pthreads_a-genericParallelization.$(OBJEXT) \
+ at BUILD_SSE3_PTHREADS_TRUE@ $(am__objects_5)
+ at BUILD_SSE3_PTHREADS_TRUE@am_libpll_sse3_pthreads_a_OBJECTS = \
+ at BUILD_SSE3_PTHREADS_TRUE@ $(am__objects_6)
+libpll_sse3_pthreads_a_OBJECTS = $(am_libpll_sse3_pthreads_a_OBJECTS)
+libpll_sse3_a_AR = $(AR) $(ARFLAGS)
+libpll_sse3_a_LIBADD =
+am__libpll_sse3_a_SOURCES_DIST = hash.c stack.c ssort.c queue.c \
+ utils.c randomTree.c optimizeModel.c trash.c searchAlgo.c \
+ topologies.c fastDNAparsimony.c treeIO.c models.c \
+ evaluatePartialGenericSpecial.c evaluateGenericSpecial.c \
+ newviewGenericSpecial.c makenewzGenericSpecial.c \
+ bipartitionList.c restartHashTable.c recom.c lexer.c \
+ alignment.c newick.c parsePartition.c parsimony.c
+am__objects_7 = libpll_sse3_a-hash.$(OBJEXT) \
+ libpll_sse3_a-stack.$(OBJEXT) libpll_sse3_a-ssort.$(OBJEXT) \
+ libpll_sse3_a-queue.$(OBJEXT) libpll_sse3_a-utils.$(OBJEXT) \
+ libpll_sse3_a-randomTree.$(OBJEXT) \
+ libpll_sse3_a-optimizeModel.$(OBJEXT) \
+ libpll_sse3_a-trash.$(OBJEXT) \
+ libpll_sse3_a-searchAlgo.$(OBJEXT) \
+ libpll_sse3_a-topologies.$(OBJEXT) \
+ libpll_sse3_a-fastDNAparsimony.$(OBJEXT) \
+ libpll_sse3_a-treeIO.$(OBJEXT) libpll_sse3_a-models.$(OBJEXT) \
+ libpll_sse3_a-evaluatePartialGenericSpecial.$(OBJEXT) \
+ libpll_sse3_a-evaluateGenericSpecial.$(OBJEXT) \
+ libpll_sse3_a-newviewGenericSpecial.$(OBJEXT) \
+ libpll_sse3_a-makenewzGenericSpecial.$(OBJEXT) \
+ libpll_sse3_a-bipartitionList.$(OBJEXT) \
+ libpll_sse3_a-restartHashTable.$(OBJEXT) \
+ libpll_sse3_a-recom.$(OBJEXT) libpll_sse3_a-lexer.$(OBJEXT) \
+ libpll_sse3_a-alignment.$(OBJEXT) \
+ libpll_sse3_a-newick.$(OBJEXT) \
+ libpll_sse3_a-parsePartition.$(OBJEXT) \
+ libpll_sse3_a-parsimony.$(OBJEXT)
+ at BUILD_SSE3_TRUE@am__objects_8 = $(am__objects_7)
+ at BUILD_SSE3_TRUE@am_libpll_sse3_a_OBJECTS = $(am__objects_8)
+libpll_sse3_a_OBJECTS = $(am_libpll_sse3_a_OBJECTS)
+LTLIBRARIES = $(lib_LTLIBRARIES)
+libpll_avx_pthreads_la_LIBADD =
+am__libpll_avx_pthreads_la_SOURCES_DIST = avxLikelihood.c \
+ genericParallelization.c hash.c stack.c ssort.c queue.c \
+ utils.c randomTree.c optimizeModel.c trash.c searchAlgo.c \
+ topologies.c fastDNAparsimony.c treeIO.c models.c \
+ evaluatePartialGenericSpecial.c evaluateGenericSpecial.c \
+ newviewGenericSpecial.c makenewzGenericSpecial.c \
+ bipartitionList.c restartHashTable.c recom.c lexer.c \
+ alignment.c newick.c parsePartition.c parsimony.c
+am__objects_9 = libpll_avx_pthreads_la-hash.lo \
+ libpll_avx_pthreads_la-stack.lo \
+ libpll_avx_pthreads_la-ssort.lo \
+ libpll_avx_pthreads_la-queue.lo \
+ libpll_avx_pthreads_la-utils.lo \
+ libpll_avx_pthreads_la-randomTree.lo \
+ libpll_avx_pthreads_la-optimizeModel.lo \
+ libpll_avx_pthreads_la-trash.lo \
+ libpll_avx_pthreads_la-searchAlgo.lo \
+ libpll_avx_pthreads_la-topologies.lo \
+ libpll_avx_pthreads_la-fastDNAparsimony.lo \
+ libpll_avx_pthreads_la-treeIO.lo \
+ libpll_avx_pthreads_la-models.lo \
+ libpll_avx_pthreads_la-evaluatePartialGenericSpecial.lo \
+ libpll_avx_pthreads_la-evaluateGenericSpecial.lo \
+ libpll_avx_pthreads_la-newviewGenericSpecial.lo \
+ libpll_avx_pthreads_la-makenewzGenericSpecial.lo \
+ libpll_avx_pthreads_la-bipartitionList.lo \
+ libpll_avx_pthreads_la-restartHashTable.lo \
+ libpll_avx_pthreads_la-recom.lo \
+ libpll_avx_pthreads_la-lexer.lo \
+ libpll_avx_pthreads_la-alignment.lo \
+ libpll_avx_pthreads_la-newick.lo \
+ libpll_avx_pthreads_la-parsePartition.lo \
+ libpll_avx_pthreads_la-parsimony.lo
+ at BUILD_AVX_PTHREADS_TRUE@am_libpll_avx_pthreads_la_OBJECTS = libpll_avx_pthreads_la-avxLikelihood.lo \
+ at BUILD_AVX_PTHREADS_TRUE@ libpll_avx_pthreads_la-genericParallelization.lo \
+ at BUILD_AVX_PTHREADS_TRUE@ $(am__objects_9)
+libpll_avx_pthreads_la_OBJECTS = $(am_libpll_avx_pthreads_la_OBJECTS)
+AM_V_lt = $(am__v_lt_ at AM_V@)
+am__v_lt_ = $(am__v_lt_ at AM_DEFAULT_V@)
+am__v_lt_0 = --silent
+am__v_lt_1 =
+libpll_avx_pthreads_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
+ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
+ $(libpll_avx_pthreads_la_CFLAGS) $(CFLAGS) \
+ $(libpll_avx_pthreads_la_LDFLAGS) $(LDFLAGS) -o $@
+ at BUILD_AVX_PTHREADS_TRUE@am_libpll_avx_pthreads_la_rpath = -rpath \
+ at BUILD_AVX_PTHREADS_TRUE@ $(libdir)
+libpll_avx_la_LIBADD =
+am__libpll_avx_la_SOURCES_DIST = avxLikelihood.c hash.c stack.c \
+ ssort.c queue.c utils.c randomTree.c optimizeModel.c trash.c \
+ searchAlgo.c topologies.c fastDNAparsimony.c treeIO.c models.c \
+ evaluatePartialGenericSpecial.c evaluateGenericSpecial.c \
+ newviewGenericSpecial.c makenewzGenericSpecial.c \
+ bipartitionList.c restartHashTable.c recom.c lexer.c \
+ alignment.c newick.c parsePartition.c parsimony.c
+am__objects_10 = libpll_avx_la-hash.lo libpll_avx_la-stack.lo \
+ libpll_avx_la-ssort.lo libpll_avx_la-queue.lo \
+ libpll_avx_la-utils.lo libpll_avx_la-randomTree.lo \
+ libpll_avx_la-optimizeModel.lo libpll_avx_la-trash.lo \
+ libpll_avx_la-searchAlgo.lo libpll_avx_la-topologies.lo \
+ libpll_avx_la-fastDNAparsimony.lo libpll_avx_la-treeIO.lo \
+ libpll_avx_la-models.lo \
+ libpll_avx_la-evaluatePartialGenericSpecial.lo \
+ libpll_avx_la-evaluateGenericSpecial.lo \
+ libpll_avx_la-newviewGenericSpecial.lo \
+ libpll_avx_la-makenewzGenericSpecial.lo \
+ libpll_avx_la-bipartitionList.lo \
+ libpll_avx_la-restartHashTable.lo libpll_avx_la-recom.lo \
+ libpll_avx_la-lexer.lo libpll_avx_la-alignment.lo \
+ libpll_avx_la-newick.lo libpll_avx_la-parsePartition.lo \
+ libpll_avx_la-parsimony.lo
+ at BUILD_AVX_TRUE@am_libpll_avx_la_OBJECTS = \
+ at BUILD_AVX_TRUE@ libpll_avx_la-avxLikelihood.lo \
+ at BUILD_AVX_TRUE@ $(am__objects_10)
+libpll_avx_la_OBJECTS = $(am_libpll_avx_la_OBJECTS)
+libpll_avx_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(libpll_avx_la_CFLAGS) \
+ $(CFLAGS) $(libpll_avx_la_LDFLAGS) $(LDFLAGS) -o $@
+ at BUILD_AVX_TRUE@am_libpll_avx_la_rpath = -rpath $(libdir)
+libpll_sse3_pthreads_la_LIBADD =
+am__libpll_sse3_pthreads_la_SOURCES_DIST = genericParallelization.c \
+ hash.c stack.c ssort.c queue.c utils.c randomTree.c \
+ optimizeModel.c trash.c searchAlgo.c topologies.c \
+ fastDNAparsimony.c treeIO.c models.c \
+ evaluatePartialGenericSpecial.c evaluateGenericSpecial.c \
+ newviewGenericSpecial.c makenewzGenericSpecial.c \
+ bipartitionList.c restartHashTable.c recom.c lexer.c \
+ alignment.c newick.c parsePartition.c parsimony.c
+am__objects_11 = libpll_sse3_pthreads_la-hash.lo \
+ libpll_sse3_pthreads_la-stack.lo \
+ libpll_sse3_pthreads_la-ssort.lo \
+ libpll_sse3_pthreads_la-queue.lo \
+ libpll_sse3_pthreads_la-utils.lo \
+ libpll_sse3_pthreads_la-randomTree.lo \
+ libpll_sse3_pthreads_la-optimizeModel.lo \
+ libpll_sse3_pthreads_la-trash.lo \
+ libpll_sse3_pthreads_la-searchAlgo.lo \
+ libpll_sse3_pthreads_la-topologies.lo \
+ libpll_sse3_pthreads_la-fastDNAparsimony.lo \
+ libpll_sse3_pthreads_la-treeIO.lo \
+ libpll_sse3_pthreads_la-models.lo \
+ libpll_sse3_pthreads_la-evaluatePartialGenericSpecial.lo \
+ libpll_sse3_pthreads_la-evaluateGenericSpecial.lo \
+ libpll_sse3_pthreads_la-newviewGenericSpecial.lo \
+ libpll_sse3_pthreads_la-makenewzGenericSpecial.lo \
+ libpll_sse3_pthreads_la-bipartitionList.lo \
+ libpll_sse3_pthreads_la-restartHashTable.lo \
+ libpll_sse3_pthreads_la-recom.lo \
+ libpll_sse3_pthreads_la-lexer.lo \
+ libpll_sse3_pthreads_la-alignment.lo \
+ libpll_sse3_pthreads_la-newick.lo \
+ libpll_sse3_pthreads_la-parsePartition.lo \
+ libpll_sse3_pthreads_la-parsimony.lo
+ at BUILD_SSE3_PTHREADS_TRUE@am_libpll_sse3_pthreads_la_OBJECTS = libpll_sse3_pthreads_la-genericParallelization.lo \
+ at BUILD_SSE3_PTHREADS_TRUE@ $(am__objects_11)
+libpll_sse3_pthreads_la_OBJECTS = \
+ $(am_libpll_sse3_pthreads_la_OBJECTS)
+libpll_sse3_pthreads_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
+ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
+ $(libpll_sse3_pthreads_la_CFLAGS) $(CFLAGS) \
+ $(libpll_sse3_pthreads_la_LDFLAGS) $(LDFLAGS) -o $@
+ at BUILD_SSE3_PTHREADS_TRUE@am_libpll_sse3_pthreads_la_rpath = -rpath \
+ at BUILD_SSE3_PTHREADS_TRUE@ $(libdir)
+libpll_sse3_la_LIBADD =
+am__libpll_sse3_la_SOURCES_DIST = hash.c stack.c ssort.c queue.c \
+ utils.c randomTree.c optimizeModel.c trash.c searchAlgo.c \
+ topologies.c fastDNAparsimony.c treeIO.c models.c \
+ evaluatePartialGenericSpecial.c evaluateGenericSpecial.c \
+ newviewGenericSpecial.c makenewzGenericSpecial.c \
+ bipartitionList.c restartHashTable.c recom.c lexer.c \
+ alignment.c newick.c parsePartition.c parsimony.c
+am__objects_12 = libpll_sse3_la-hash.lo libpll_sse3_la-stack.lo \
+ libpll_sse3_la-ssort.lo libpll_sse3_la-queue.lo \
+ libpll_sse3_la-utils.lo libpll_sse3_la-randomTree.lo \
+ libpll_sse3_la-optimizeModel.lo libpll_sse3_la-trash.lo \
+ libpll_sse3_la-searchAlgo.lo libpll_sse3_la-topologies.lo \
+ libpll_sse3_la-fastDNAparsimony.lo libpll_sse3_la-treeIO.lo \
+ libpll_sse3_la-models.lo \
+ libpll_sse3_la-evaluatePartialGenericSpecial.lo \
+ libpll_sse3_la-evaluateGenericSpecial.lo \
+ libpll_sse3_la-newviewGenericSpecial.lo \
+ libpll_sse3_la-makenewzGenericSpecial.lo \
+ libpll_sse3_la-bipartitionList.lo \
+ libpll_sse3_la-restartHashTable.lo libpll_sse3_la-recom.lo \
+ libpll_sse3_la-lexer.lo libpll_sse3_la-alignment.lo \
+ libpll_sse3_la-newick.lo libpll_sse3_la-parsePartition.lo \
+ libpll_sse3_la-parsimony.lo
+ at BUILD_SSE3_TRUE@am_libpll_sse3_la_OBJECTS = $(am__objects_12)
+libpll_sse3_la_OBJECTS = $(am_libpll_sse3_la_OBJECTS)
+libpll_sse3_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
+ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
+ $(libpll_sse3_la_CFLAGS) $(CFLAGS) $(libpll_sse3_la_LDFLAGS) \
+ $(LDFLAGS) -o $@
+ at BUILD_SSE3_TRUE@am_libpll_sse3_la_rpath = -rpath $(libdir)
+AM_V_P = $(am__v_P_ at AM_V@)
+am__v_P_ = $(am__v_P_ at AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_ at AM_V@)
+am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
+am__v_GEN_0 = @echo " GEN " $@;
+am__v_GEN_1 =
+AM_V_at = $(am__v_at_ at AM_V@)
+am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 =
+DEFAULT_INCLUDES = -I. at am__isrc@ -I$(top_builddir)
+depcomp = $(SHELL) $(top_srcdir)/depcomp
+am__depfiles_maybe = depfiles
+am__mv = mv -f
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
+ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+ $(AM_CFLAGS) $(CFLAGS)
+AM_V_CC = $(am__v_CC_ at AM_V@)
+am__v_CC_ = $(am__v_CC_ at AM_DEFAULT_V@)
+am__v_CC_0 = @echo " CC " $@;
+am__v_CC_1 =
+CCLD = $(CC)
+LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+ $(AM_LDFLAGS) $(LDFLAGS) -o $@
+AM_V_CCLD = $(am__v_CCLD_ at AM_V@)
+am__v_CCLD_ = $(am__v_CCLD_ at AM_DEFAULT_V@)
+am__v_CCLD_0 = @echo " CCLD " $@;
+am__v_CCLD_1 =
+SOURCES = $(libpll_avx_pthreads_a_SOURCES) $(libpll_avx_a_SOURCES) \
+ $(libpll_sse3_pthreads_a_SOURCES) $(libpll_sse3_a_SOURCES) \
+ $(libpll_avx_pthreads_la_SOURCES) $(libpll_avx_la_SOURCES) \
+ $(libpll_sse3_pthreads_la_SOURCES) $(libpll_sse3_la_SOURCES)
+DIST_SOURCES = $(am__libpll_avx_pthreads_a_SOURCES_DIST) \
+ $(am__libpll_avx_a_SOURCES_DIST) \
+ $(am__libpll_sse3_pthreads_a_SOURCES_DIST) \
+ $(am__libpll_sse3_a_SOURCES_DIST) \
+ $(am__libpll_avx_pthreads_la_SOURCES_DIST) \
+ $(am__libpll_avx_la_SOURCES_DIST) \
+ $(am__libpll_sse3_pthreads_la_SOURCES_DIST) \
+ $(am__libpll_sse3_la_SOURCES_DIST)
+am__can_run_installinfo = \
+ case $$AM_UPDATE_INFO_DIR in \
+ n|no|NO) false;; \
+ *) (install-info --version) >/dev/null 2>&1;; \
+ esac
+HEADERS = $(pkginclude_HEADERS)
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates. Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+ BEGIN { nonempty = 0; } \
+ { items[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique. This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+ list='$(am__tagged_files)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | $(am__uniquify_input)`
+ETAGS = etags
+CTAGS = ctags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+pkgincludedir = $(includedir)/pll
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DLLTOOL = @DLLTOOL@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+GREP = @GREP@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBPLL_MAJOR = @LIBPLL_MAJOR@
+LIBPLL_MINOR = @LIBPLL_MINOR@
+LIBPLL_REV = @LIBPLL_REV@
+LIBPLL_VERSION = @LIBPLL_VERSION@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MKDIR_P = @MKDIR_P@
+MPICC = @MPICC@
+MPILIBS = @MPILIBS@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SIMD_FLAGS = @SIMD_FLAGS@
+STRIP = @STRIP@
+VERSION = @VERSION@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+
+#lib_LTLIBRARIES = libpll-generic.la
+lib_LTLIBRARIES = $(am__append_1) $(am__append_3) $(am__append_5) \
+ $(am__append_7)
+#lib_LIBRARIES = libpll-generic.a
+lib_LIBRARIES = $(am__append_2) $(am__append_4) $(am__append_6) \
+ $(am__append_8)
+libpll_generic_la_SOURCES = hash.c stack.c ssort.c queue.c utils.c randomTree.c optimizeModel.c trash.c searchAlgo.c topologies.c fastDNAparsimony.c treeIO.c models.c evaluatePartialGenericSpecial.c evaluateGenericSpecial.c newviewGenericSpecial.c makenewzGenericSpecial.c bipartitionList.c restartHashTable.c recom.c lexer.c alignment.c newick.c parsePartition.c parsimony.c
+libpll_generic_la_CFLAGS = -c -D_GNU_SOURCE -O2 -fomit-frame-pointer -funroll-loops -Wall -Wredundant-decls -Wreturn-type -Wswitch-default -Wimplicit -Wimplicit-function-declaration -Wimplicit-int -Wimport -Wunused-label -Wno-int-to-pointer-cast -Wbad-function-cast -Wmissing-declarations -Wmissing-prototypes -Wnested-externs -Wold-style-definition -Wstrict-prototypes -Wpointer-sign -Wextra -Wredundant-decls -Wunused -Wunused-function -Wunused-parameter -Wunused-value -Wunused-var [...]
+libpll_generic_la_LDFLAGS = -version-info @LIBPLL_MAJOR@:@LIBPLL_MINOR@:@LIBPLL_REV@
+libpll_generic_a_SOURCES = $(libpll_generic_la_SOURCES)
+libpll_generic_a_CFLAGS = $(libpll_generic_la_CFLAGS)
+ at BUILD_SSE3_TRUE@libpll_sse3_la_SOURCES = $(libpll_generic_la_SOURCES)
+ at BUILD_SSE3_TRUE@libpll_sse3_la_CFLAGS = -D__SSE3 -msse3 $(libpll_generic_la_CFLAGS)
+ at BUILD_SSE3_TRUE@libpll_sse3_la_LDFLAGS = -version-info @LIBPLL_MAJOR@:@LIBPLL_MINOR@:@LIBPLL_REV@
+ at BUILD_SSE3_TRUE@libpll_sse3_a_SOURCES = $(libpll_sse3_la_SOURCES)
+ at BUILD_SSE3_TRUE@libpll_sse3_a_CFLAGS = $(libpll_sse3_la_CFLAGS)
+ at BUILD_AVX_TRUE@libpll_avx_la_SOURCES = avxLikelihood.c $(libpll_generic_la_SOURCES)
+ at BUILD_AVX_TRUE@libpll_avx_la_CFLAGS = -D__SSE3 -D__AVX -mavx -msse3 $(libpll_generic_la_CFLAGS)
+ at BUILD_AVX_TRUE@libpll_avx_la_LDFLAGS = -version-info @LIBPLL_MAJOR@:@LIBPLL_MINOR@:@LIBPLL_REV@
+ at BUILD_AVX_TRUE@libpll_avx_a_SOURCES = $(libpll_avx_la_SOURCES)
+ at BUILD_AVX_TRUE@libpll_avx_a_CFLAGS = $(libpll_avx_la_CFLAGS)
+ at BUILD_SSE3_PTHREADS_TRUE@libpll_sse3_pthreads_la_SOURCES = genericParallelization.c $(libpll_generic_la_SOURCES)
+ at BUILD_SSE3_PTHREADS_TRUE@libpll_sse3_pthreads_la_CFLAGS = -D_USE_PTHREADS -D__SSE3 -msse3 $(libpll_generic_la_CFLAGS)
+ at BUILD_SSE3_PTHREADS_TRUE@libpll_sse3_pthreads_la_LDFLAGS = -version-info @LIBPLL_MAJOR@:@LIBPLL_MINOR@:@LIBPLL_REV@
+ at BUILD_SSE3_PTHREADS_TRUE@libpll_sse3_pthreads_a_SOURCES = $(libpll_sse3_pthreads_la_SOURCES)
+ at BUILD_SSE3_PTHREADS_TRUE@libpll_sse3_pthreads_a_CFLAGS = $(libpll_sse3_pthreads_la_CFLAGS)
+ at BUILD_AVX_PTHREADS_TRUE@libpll_avx_pthreads_la_SOURCES = avxLikelihood.c genericParallelization.c $(libpll_generic_la_SOURCES)
+ at BUILD_AVX_PTHREADS_TRUE@libpll_avx_pthreads_la_CFLAGS = -D_USE_PTHREADS -D__AVX -mavx -D__SSE3 -msse3 $(libpll_generic_la_CFLAGS)
+ at BUILD_AVX_PTHREADS_TRUE@libpll_avx_pthreads_la_LDFLAGS = -version-info @LIBPLL_MAJOR@:@LIBPLL_MINOR@:@LIBPLL_REV@
+ at BUILD_AVX_PTHREADS_TRUE@libpll_avx_pthreads_a_SOURCES = $(libpll_avx_pthreads_la_SOURCES)
+ at BUILD_AVX_PTHREADS_TRUE@libpll_avx_pthreads_a_CFLAGS = $(libpll_avx_pthreads_la_CFLAGS)
+pkginclude_HEADERS = pll.h stack.h queue.h parsePartition.h
+EXTRA_DIST = cycle.h genericParallelization.h hardware.h lexer.h mic_native.h pll.h queue.h \
+ errcodes.h globalVariables.h hash.h mem_alloc.h parsePartition.h pllInternal.h stack.h
+
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .lo .o .obj
+$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --gnu src/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+install-libLIBRARIES: $(lib_LIBRARIES)
+ @$(NORMAL_INSTALL)
+ @list='$(lib_LIBRARIES)'; test -n "$(libdir)" || list=; \
+ list2=; for p in $$list; do \
+ if test -f $$p; then \
+ list2="$$list2 $$p"; \
+ else :; fi; \
+ done; \
+ test -z "$$list2" || { \
+ echo " $(MKDIR_P) '$(DESTDIR)$(libdir)'"; \
+ $(MKDIR_P) "$(DESTDIR)$(libdir)" || exit 1; \
+ echo " $(INSTALL_DATA) $$list2 '$(DESTDIR)$(libdir)'"; \
+ $(INSTALL_DATA) $$list2 "$(DESTDIR)$(libdir)" || exit $$?; }
+ @$(POST_INSTALL)
+ @list='$(lib_LIBRARIES)'; test -n "$(libdir)" || list=; \
+ for p in $$list; do \
+ if test -f $$p; then \
+ $(am__strip_dir) \
+ echo " ( cd '$(DESTDIR)$(libdir)' && $(RANLIB) $$f )"; \
+ ( cd "$(DESTDIR)$(libdir)" && $(RANLIB) $$f ) || exit $$?; \
+ else :; fi; \
+ done
+
+uninstall-libLIBRARIES:
+ @$(NORMAL_UNINSTALL)
+ @list='$(lib_LIBRARIES)'; test -n "$(libdir)" || list=; \
+ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+ dir='$(DESTDIR)$(libdir)'; $(am__uninstall_files_from_dir)
+
+clean-libLIBRARIES:
+ -test -z "$(lib_LIBRARIES)" || rm -f $(lib_LIBRARIES)
+
+libpll-avx-pthreads.a: $(libpll_avx_pthreads_a_OBJECTS) $(libpll_avx_pthreads_a_DEPENDENCIES) $(EXTRA_libpll_avx_pthreads_a_DEPENDENCIES)
+ $(AM_V_at)-rm -f libpll-avx-pthreads.a
+ $(AM_V_AR)$(libpll_avx_pthreads_a_AR) libpll-avx-pthreads.a $(libpll_avx_pthreads_a_OBJECTS) $(libpll_avx_pthreads_a_LIBADD)
+ $(AM_V_at)$(RANLIB) libpll-avx-pthreads.a
+
+libpll-avx.a: $(libpll_avx_a_OBJECTS) $(libpll_avx_a_DEPENDENCIES) $(EXTRA_libpll_avx_a_DEPENDENCIES)
+ $(AM_V_at)-rm -f libpll-avx.a
+ $(AM_V_AR)$(libpll_avx_a_AR) libpll-avx.a $(libpll_avx_a_OBJECTS) $(libpll_avx_a_LIBADD)
+ $(AM_V_at)$(RANLIB) libpll-avx.a
+
+libpll-sse3-pthreads.a: $(libpll_sse3_pthreads_a_OBJECTS) $(libpll_sse3_pthreads_a_DEPENDENCIES) $(EXTRA_libpll_sse3_pthreads_a_DEPENDENCIES)
+ $(AM_V_at)-rm -f libpll-sse3-pthreads.a
+ $(AM_V_AR)$(libpll_sse3_pthreads_a_AR) libpll-sse3-pthreads.a $(libpll_sse3_pthreads_a_OBJECTS) $(libpll_sse3_pthreads_a_LIBADD)
+ $(AM_V_at)$(RANLIB) libpll-sse3-pthreads.a
+
+libpll-sse3.a: $(libpll_sse3_a_OBJECTS) $(libpll_sse3_a_DEPENDENCIES) $(EXTRA_libpll_sse3_a_DEPENDENCIES)
+ $(AM_V_at)-rm -f libpll-sse3.a
+ $(AM_V_AR)$(libpll_sse3_a_AR) libpll-sse3.a $(libpll_sse3_a_OBJECTS) $(libpll_sse3_a_LIBADD)
+ $(AM_V_at)$(RANLIB) libpll-sse3.a
+
+install-libLTLIBRARIES: $(lib_LTLIBRARIES)
+ @$(NORMAL_INSTALL)
+ @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \
+ list2=; for p in $$list; do \
+ if test -f $$p; then \
+ list2="$$list2 $$p"; \
+ else :; fi; \
+ done; \
+ test -z "$$list2" || { \
+ echo " $(MKDIR_P) '$(DESTDIR)$(libdir)'"; \
+ $(MKDIR_P) "$(DESTDIR)$(libdir)" || exit 1; \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(libdir)'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(libdir)"; \
+ }
+
+uninstall-libLTLIBRARIES:
+ @$(NORMAL_UNINSTALL)
+ @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \
+ for p in $$list; do \
+ $(am__strip_dir) \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$f'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$f"; \
+ done
+
+clean-libLTLIBRARIES:
+ -test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES)
+ @list='$(lib_LTLIBRARIES)'; \
+ locs=`for p in $$list; do echo $$p; done | \
+ sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \
+ sort -u`; \
+ test -z "$$locs" || { \
+ echo rm -f $${locs}; \
+ rm -f $${locs}; \
+ }
+
+libpll-avx-pthreads.la: $(libpll_avx_pthreads_la_OBJECTS) $(libpll_avx_pthreads_la_DEPENDENCIES) $(EXTRA_libpll_avx_pthreads_la_DEPENDENCIES)
+ $(AM_V_CCLD)$(libpll_avx_pthreads_la_LINK) $(am_libpll_avx_pthreads_la_rpath) $(libpll_avx_pthreads_la_OBJECTS) $(libpll_avx_pthreads_la_LIBADD) $(LIBS)
+
+libpll-avx.la: $(libpll_avx_la_OBJECTS) $(libpll_avx_la_DEPENDENCIES) $(EXTRA_libpll_avx_la_DEPENDENCIES)
+ $(AM_V_CCLD)$(libpll_avx_la_LINK) $(am_libpll_avx_la_rpath) $(libpll_avx_la_OBJECTS) $(libpll_avx_la_LIBADD) $(LIBS)
+
+libpll-sse3-pthreads.la: $(libpll_sse3_pthreads_la_OBJECTS) $(libpll_sse3_pthreads_la_DEPENDENCIES) $(EXTRA_libpll_sse3_pthreads_la_DEPENDENCIES)
+ $(AM_V_CCLD)$(libpll_sse3_pthreads_la_LINK) $(am_libpll_sse3_pthreads_la_rpath) $(libpll_sse3_pthreads_la_OBJECTS) $(libpll_sse3_pthreads_la_LIBADD) $(LIBS)
+
+libpll-sse3.la: $(libpll_sse3_la_OBJECTS) $(libpll_sse3_la_DEPENDENCIES) $(EXTRA_libpll_sse3_la_DEPENDENCIES)
+ $(AM_V_CCLD)$(libpll_sse3_la_LINK) $(am_libpll_sse3_la_rpath) $(libpll_sse3_la_OBJECTS) $(libpll_sse3_la_LIBADD) $(LIBS)
+
+mostlyclean-compile:
+ -rm -f *.$(OBJEXT)
+
+distclean-compile:
+ -rm -f *.tab.c
+
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libpll_avx_a-alignment.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libpll_avx_a-avxLikelihood.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libpll_avx_a-bipartitionList.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libpll_avx_a-evaluateGenericSpecial.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libpll_avx_a-evaluatePartialGenericSpecial.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libpll_avx_a-fastDNAparsimony.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libpll_avx_a-hash.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libpll_avx_a-lexer.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libpll_avx_a-makenewzGenericSpecial.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libpll_avx_a-models.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libpll_avx_a-newick.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libpll_avx_a-newviewGenericSpecial.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libpll_avx_a-optimizeModel.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libpll_avx_a-parsePartition.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libpll_avx_a-parsimony.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libpll_avx_a-queue.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libpll_avx_a-randomTree.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libpll_avx_a-recom.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libpll_avx_a-restartHashTable.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libpll_avx_a-searchAlgo.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libpll_avx_a-ssort.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libpll_avx_a-stack.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libpll_avx_a-topologies.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libpll_avx_a-trash.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libpll_avx_a-treeIO.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libpll_avx_a-utils.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libpll_avx_la-alignment.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libpll_avx_la-avxLikelihood.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libpll_avx_la-bipartitionList.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libpll_avx_la-evaluateGenericSpecial.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libpll_avx_la-evaluatePartialGenericSpecial.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libpll_avx_la-fastDNAparsimony.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libpll_avx_la-hash.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libpll_avx_la-lexer.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libpll_avx_la-makenewzGenericSpecial.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libpll_avx_la-models.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libpll_avx_la-newick.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libpll_avx_la-newviewGenericSpecial.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libpll_avx_la-optimizeModel.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libpll_avx_la-parsePartition.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libpll_avx_la-parsimony.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libpll_avx_la-queue.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libpll_avx_la-randomTree.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libpll_avx_la-recom.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libpll_avx_la-restartHashTable.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libpll_avx_la-searchAlgo.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libpll_avx_la-ssort.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libpll_avx_la-stack.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libpll_avx_la-topologies.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libpll_avx_la-trash.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libpll_avx_la-treeIO.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libpll_avx_la-utils.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libpll_avx_pthreads_a-alignment.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libpll_avx_pthreads_a-avxLikelihood.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libpll_avx_pthreads_a-bipartitionList.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libpll_avx_pthreads_a-evaluateGenericSpecial.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libpll_avx_pthreads_a-evaluatePartialGenericSpecial.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libpll_avx_pthreads_a-fastDNAparsimony.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libpll_avx_pthreads_a-genericParallelization.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libpll_avx_pthreads_a-hash.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libpll_avx_pthreads_a-lexer.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libpll_avx_pthreads_a-makenewzGenericSpecial.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libpll_avx_pthreads_a-models.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libpll_avx_pthreads_a-newick.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libpll_avx_pthreads_a-newviewGenericSpecial.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libpll_avx_pthreads_a-optimizeModel.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libpll_avx_pthreads_a-parsePartition.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libpll_avx_pthreads_a-parsimony.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libpll_avx_pthreads_a-queue.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libpll_avx_pthreads_a-randomTree.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libpll_avx_pthreads_a-recom.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libpll_avx_pthreads_a-restartHashTable.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libpll_avx_pthreads_a-searchAlgo.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libpll_avx_pthreads_a-ssort.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libpll_avx_pthreads_a-stack.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libpll_avx_pthreads_a-topologies.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libpll_avx_pthreads_a-trash.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libpll_avx_pthreads_a-treeIO.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libpll_avx_pthreads_a-utils.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libpll_avx_pthreads_la-alignment.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libpll_avx_pthreads_la-avxLikelihood.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libpll_avx_pthreads_la-bipartitionList.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libpll_avx_pthreads_la-evaluateGenericSpecial.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libpll_avx_pthreads_la-evaluatePartialGenericSpecial.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libpll_avx_pthreads_la-fastDNAparsimony.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libpll_avx_pthreads_la-genericParallelization.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libpll_avx_pthreads_la-hash.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libpll_avx_pthreads_la-lexer.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libpll_avx_pthreads_la-makenewzGenericSpecial.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libpll_avx_pthreads_la-models.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libpll_avx_pthreads_la-newick.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libpll_avx_pthreads_la-newviewGenericSpecial.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libpll_avx_pthreads_la-optimizeModel.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libpll_avx_pthreads_la-parsePartition.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libpll_avx_pthreads_la-parsimony.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libpll_avx_pthreads_la-queue.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libpll_avx_pthreads_la-randomTree.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libpll_avx_pthreads_la-recom.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libpll_avx_pthreads_la-restartHashTable.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libpll_avx_pthreads_la-searchAlgo.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libpll_avx_pthreads_la-ssort.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libpll_avx_pthreads_la-stack.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libpll_avx_pthreads_la-topologies.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libpll_avx_pthreads_la-trash.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libpll_avx_pthreads_la-treeIO.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libpll_avx_pthreads_la-utils.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libpll_sse3_a-alignment.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libpll_sse3_a-bipartitionList.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libpll_sse3_a-evaluateGenericSpecial.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libpll_sse3_a-evaluatePartialGenericSpecial.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libpll_sse3_a-fastDNAparsimony.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libpll_sse3_a-hash.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libpll_sse3_a-lexer.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libpll_sse3_a-makenewzGenericSpecial.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libpll_sse3_a-models.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libpll_sse3_a-newick.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libpll_sse3_a-newviewGenericSpecial.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libpll_sse3_a-optimizeModel.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libpll_sse3_a-parsePartition.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libpll_sse3_a-parsimony.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libpll_sse3_a-queue.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libpll_sse3_a-randomTree.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libpll_sse3_a-recom.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libpll_sse3_a-restartHashTable.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libpll_sse3_a-searchAlgo.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libpll_sse3_a-ssort.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libpll_sse3_a-stack.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libpll_sse3_a-topologies.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libpll_sse3_a-trash.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libpll_sse3_a-treeIO.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libpll_sse3_a-utils.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libpll_sse3_la-alignment.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libpll_sse3_la-bipartitionList.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libpll_sse3_la-evaluateGenericSpecial.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libpll_sse3_la-evaluatePartialGenericSpecial.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libpll_sse3_la-fastDNAparsimony.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libpll_sse3_la-hash.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libpll_sse3_la-lexer.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libpll_sse3_la-makenewzGenericSpecial.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libpll_sse3_la-models.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libpll_sse3_la-newick.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libpll_sse3_la-newviewGenericSpecial.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libpll_sse3_la-optimizeModel.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libpll_sse3_la-parsePartition.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libpll_sse3_la-parsimony.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libpll_sse3_la-queue.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libpll_sse3_la-randomTree.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libpll_sse3_la-recom.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libpll_sse3_la-restartHashTable.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libpll_sse3_la-searchAlgo.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libpll_sse3_la-ssort.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libpll_sse3_la-stack.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libpll_sse3_la-topologies.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libpll_sse3_la-trash.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libpll_sse3_la-treeIO.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libpll_sse3_la-utils.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libpll_sse3_pthreads_a-alignment.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libpll_sse3_pthreads_a-bipartitionList.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libpll_sse3_pthreads_a-evaluateGenericSpecial.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libpll_sse3_pthreads_a-evaluatePartialGenericSpecial.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libpll_sse3_pthreads_a-fastDNAparsimony.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libpll_sse3_pthreads_a-genericParallelization.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libpll_sse3_pthreads_a-hash.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libpll_sse3_pthreads_a-lexer.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libpll_sse3_pthreads_a-makenewzGenericSpecial.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libpll_sse3_pthreads_a-models.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libpll_sse3_pthreads_a-newick.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libpll_sse3_pthreads_a-newviewGenericSpecial.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libpll_sse3_pthreads_a-optimizeModel.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libpll_sse3_pthreads_a-parsePartition.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libpll_sse3_pthreads_a-parsimony.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libpll_sse3_pthreads_a-queue.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libpll_sse3_pthreads_a-randomTree.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libpll_sse3_pthreads_a-recom.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libpll_sse3_pthreads_a-restartHashTable.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libpll_sse3_pthreads_a-searchAlgo.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libpll_sse3_pthreads_a-ssort.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libpll_sse3_pthreads_a-stack.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libpll_sse3_pthreads_a-topologies.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libpll_sse3_pthreads_a-trash.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libpll_sse3_pthreads_a-treeIO.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libpll_sse3_pthreads_a-utils.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libpll_sse3_pthreads_la-alignment.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libpll_sse3_pthreads_la-bipartitionList.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libpll_sse3_pthreads_la-evaluateGenericSpecial.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libpll_sse3_pthreads_la-evaluatePartialGenericSpecial.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libpll_sse3_pthreads_la-fastDNAparsimony.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libpll_sse3_pthreads_la-genericParallelization.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libpll_sse3_pthreads_la-hash.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libpll_sse3_pthreads_la-lexer.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libpll_sse3_pthreads_la-makenewzGenericSpecial.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libpll_sse3_pthreads_la-models.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libpll_sse3_pthreads_la-newick.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libpll_sse3_pthreads_la-newviewGenericSpecial.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libpll_sse3_pthreads_la-optimizeModel.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libpll_sse3_pthreads_la-parsePartition.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libpll_sse3_pthreads_la-parsimony.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libpll_sse3_pthreads_la-queue.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libpll_sse3_pthreads_la-randomTree.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libpll_sse3_pthreads_la-recom.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libpll_sse3_pthreads_la-restartHashTable.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libpll_sse3_pthreads_la-searchAlgo.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libpll_sse3_pthreads_la-ssort.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libpll_sse3_pthreads_la-stack.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libpll_sse3_pthreads_la-topologies.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libpll_sse3_pthreads_la-trash.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libpll_sse3_pthreads_la-treeIO.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libpll_sse3_pthreads_la-utils.Plo at am__quote@
+
+.c.o:
+ at am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
+ at am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
+ at am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(COMPILE) -c -o $@ $<
+
+.c.obj:
+ at am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\
+ at am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\
+ at am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
+
+.c.lo:
+ at am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\
+ at am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
+ at am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LTCOMPILE) -c -o $@ $<
+
+libpll_avx_pthreads_a-avxLikelihood.o: avxLikelihood.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_pthreads_a_CFLAGS) $(CFLAGS) -MT libpll_avx_pthreads_a-avxLikelihood.o -MD -MP -MF $(DEPDIR)/libpll_avx_pthreads_a-avxLikelihood.Tpo -c -o libpll_avx_pthreads_a-avxLikelihood.o `test -f 'avxLikelihood.c' || echo '$(srcdir)/'`avxLikelihood.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_avx_pthreads_a-avxLikelihood.Tpo $(DEPDIR)/libpll_avx_pthreads_a-avxLikelihood.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='avxLikelihood.c' object='libpll_avx_pthreads_a-avxLikelihood.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_pthreads_a_CFLAGS) $(CFLAGS) -c -o libpll_avx_pthreads_a-avxLikelihood.o `test -f 'avxLikelihood.c' || echo '$(srcdir)/'`avxLikelihood.c
+
+libpll_avx_pthreads_a-avxLikelihood.obj: avxLikelihood.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_pthreads_a_CFLAGS) $(CFLAGS) -MT libpll_avx_pthreads_a-avxLikelihood.obj -MD -MP -MF $(DEPDIR)/libpll_avx_pthreads_a-avxLikelihood.Tpo -c -o libpll_avx_pthreads_a-avxLikelihood.obj `if test -f 'avxLikelihood.c'; then $(CYGPATH_W) 'avxLikelihood.c'; else $(CYGPATH_W) '$(srcdir)/avxLikelihood.c'; fi`
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_avx_pthreads_a-avxLikelihood.Tpo $(DEPDIR)/libpll_avx_pthreads_a-avxLikelihood.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='avxLikelihood.c' object='libpll_avx_pthreads_a-avxLikelihood.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_pthreads_a_CFLAGS) $(CFLAGS) -c -o libpll_avx_pthreads_a-avxLikelihood.obj `if test -f 'avxLikelihood.c'; then $(CYGPATH_W) 'avxLikelihood.c'; else $(CYGPATH_W) '$(srcdir)/avxLikelihood.c'; fi`
+
+libpll_avx_pthreads_a-genericParallelization.o: genericParallelization.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_pthreads_a_CFLAGS) $(CFLAGS) -MT libpll_avx_pthreads_a-genericParallelization.o -MD -MP -MF $(DEPDIR)/libpll_avx_pthreads_a-genericParallelization.Tpo -c -o libpll_avx_pthreads_a-genericParallelization.o `test -f 'genericParallelization.c' || echo '$(srcdir)/'`genericParallelization.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_avx_pthreads_a-genericParallelization.Tpo $(DEPDIR)/libpll_avx_pthreads_a-genericParallelization.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='genericParallelization.c' object='libpll_avx_pthreads_a-genericParallelization.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_pthreads_a_CFLAGS) $(CFLAGS) -c -o libpll_avx_pthreads_a-genericParallelization.o `test -f 'genericParallelization.c' || echo '$(srcdir)/'`genericParallelization.c
+
+libpll_avx_pthreads_a-genericParallelization.obj: genericParallelization.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_pthreads_a_CFLAGS) $(CFLAGS) -MT libpll_avx_pthreads_a-genericParallelization.obj -MD -MP -MF $(DEPDIR)/libpll_avx_pthreads_a-genericParallelization.Tpo -c -o libpll_avx_pthreads_a-genericParallelization.obj `if test -f 'genericParallelization.c'; then $(CYGPATH_W) 'genericParallelization.c'; else $(CYGPATH_W) '$(srcdir)/genericParallelization.c'; fi`
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_avx_pthreads_a-genericParallelization.Tpo $(DEPDIR)/libpll_avx_pthreads_a-genericParallelization.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='genericParallelization.c' object='libpll_avx_pthreads_a-genericParallelization.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_pthreads_a_CFLAGS) $(CFLAGS) -c -o libpll_avx_pthreads_a-genericParallelization.obj `if test -f 'genericParallelization.c'; then $(CYGPATH_W) 'genericParallelization.c'; else $(CYGPATH_W) '$(srcdir)/genericParallelization.c'; fi`
+
+libpll_avx_pthreads_a-hash.o: hash.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_pthreads_a_CFLAGS) $(CFLAGS) -MT libpll_avx_pthreads_a-hash.o -MD -MP -MF $(DEPDIR)/libpll_avx_pthreads_a-hash.Tpo -c -o libpll_avx_pthreads_a-hash.o `test -f 'hash.c' || echo '$(srcdir)/'`hash.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_avx_pthreads_a-hash.Tpo $(DEPDIR)/libpll_avx_pthreads_a-hash.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='hash.c' object='libpll_avx_pthreads_a-hash.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_pthreads_a_CFLAGS) $(CFLAGS) -c -o libpll_avx_pthreads_a-hash.o `test -f 'hash.c' || echo '$(srcdir)/'`hash.c
+
+libpll_avx_pthreads_a-hash.obj: hash.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_pthreads_a_CFLAGS) $(CFLAGS) -MT libpll_avx_pthreads_a-hash.obj -MD -MP -MF $(DEPDIR)/libpll_avx_pthreads_a-hash.Tpo -c -o libpll_avx_pthreads_a-hash.obj `if test -f 'hash.c'; then $(CYGPATH_W) 'hash.c'; else $(CYGPATH_W) '$(srcdir)/hash.c'; fi`
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_avx_pthreads_a-hash.Tpo $(DEPDIR)/libpll_avx_pthreads_a-hash.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='hash.c' object='libpll_avx_pthreads_a-hash.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_pthreads_a_CFLAGS) $(CFLAGS) -c -o libpll_avx_pthreads_a-hash.obj `if test -f 'hash.c'; then $(CYGPATH_W) 'hash.c'; else $(CYGPATH_W) '$(srcdir)/hash.c'; fi`
+
+libpll_avx_pthreads_a-stack.o: stack.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_pthreads_a_CFLAGS) $(CFLAGS) -MT libpll_avx_pthreads_a-stack.o -MD -MP -MF $(DEPDIR)/libpll_avx_pthreads_a-stack.Tpo -c -o libpll_avx_pthreads_a-stack.o `test -f 'stack.c' || echo '$(srcdir)/'`stack.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_avx_pthreads_a-stack.Tpo $(DEPDIR)/libpll_avx_pthreads_a-stack.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='stack.c' object='libpll_avx_pthreads_a-stack.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_pthreads_a_CFLAGS) $(CFLAGS) -c -o libpll_avx_pthreads_a-stack.o `test -f 'stack.c' || echo '$(srcdir)/'`stack.c
+
+libpll_avx_pthreads_a-stack.obj: stack.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_pthreads_a_CFLAGS) $(CFLAGS) -MT libpll_avx_pthreads_a-stack.obj -MD -MP -MF $(DEPDIR)/libpll_avx_pthreads_a-stack.Tpo -c -o libpll_avx_pthreads_a-stack.obj `if test -f 'stack.c'; then $(CYGPATH_W) 'stack.c'; else $(CYGPATH_W) '$(srcdir)/stack.c'; fi`
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_avx_pthreads_a-stack.Tpo $(DEPDIR)/libpll_avx_pthreads_a-stack.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='stack.c' object='libpll_avx_pthreads_a-stack.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_pthreads_a_CFLAGS) $(CFLAGS) -c -o libpll_avx_pthreads_a-stack.obj `if test -f 'stack.c'; then $(CYGPATH_W) 'stack.c'; else $(CYGPATH_W) '$(srcdir)/stack.c'; fi`
+
+libpll_avx_pthreads_a-ssort.o: ssort.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_pthreads_a_CFLAGS) $(CFLAGS) -MT libpll_avx_pthreads_a-ssort.o -MD -MP -MF $(DEPDIR)/libpll_avx_pthreads_a-ssort.Tpo -c -o libpll_avx_pthreads_a-ssort.o `test -f 'ssort.c' || echo '$(srcdir)/'`ssort.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_avx_pthreads_a-ssort.Tpo $(DEPDIR)/libpll_avx_pthreads_a-ssort.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ssort.c' object='libpll_avx_pthreads_a-ssort.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_pthreads_a_CFLAGS) $(CFLAGS) -c -o libpll_avx_pthreads_a-ssort.o `test -f 'ssort.c' || echo '$(srcdir)/'`ssort.c
+
+libpll_avx_pthreads_a-ssort.obj: ssort.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_pthreads_a_CFLAGS) $(CFLAGS) -MT libpll_avx_pthreads_a-ssort.obj -MD -MP -MF $(DEPDIR)/libpll_avx_pthreads_a-ssort.Tpo -c -o libpll_avx_pthreads_a-ssort.obj `if test -f 'ssort.c'; then $(CYGPATH_W) 'ssort.c'; else $(CYGPATH_W) '$(srcdir)/ssort.c'; fi`
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_avx_pthreads_a-ssort.Tpo $(DEPDIR)/libpll_avx_pthreads_a-ssort.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ssort.c' object='libpll_avx_pthreads_a-ssort.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_pthreads_a_CFLAGS) $(CFLAGS) -c -o libpll_avx_pthreads_a-ssort.obj `if test -f 'ssort.c'; then $(CYGPATH_W) 'ssort.c'; else $(CYGPATH_W) '$(srcdir)/ssort.c'; fi`
+
+libpll_avx_pthreads_a-queue.o: queue.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_pthreads_a_CFLAGS) $(CFLAGS) -MT libpll_avx_pthreads_a-queue.o -MD -MP -MF $(DEPDIR)/libpll_avx_pthreads_a-queue.Tpo -c -o libpll_avx_pthreads_a-queue.o `test -f 'queue.c' || echo '$(srcdir)/'`queue.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_avx_pthreads_a-queue.Tpo $(DEPDIR)/libpll_avx_pthreads_a-queue.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='queue.c' object='libpll_avx_pthreads_a-queue.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_pthreads_a_CFLAGS) $(CFLAGS) -c -o libpll_avx_pthreads_a-queue.o `test -f 'queue.c' || echo '$(srcdir)/'`queue.c
+
+libpll_avx_pthreads_a-queue.obj: queue.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_pthreads_a_CFLAGS) $(CFLAGS) -MT libpll_avx_pthreads_a-queue.obj -MD -MP -MF $(DEPDIR)/libpll_avx_pthreads_a-queue.Tpo -c -o libpll_avx_pthreads_a-queue.obj `if test -f 'queue.c'; then $(CYGPATH_W) 'queue.c'; else $(CYGPATH_W) '$(srcdir)/queue.c'; fi`
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_avx_pthreads_a-queue.Tpo $(DEPDIR)/libpll_avx_pthreads_a-queue.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='queue.c' object='libpll_avx_pthreads_a-queue.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_pthreads_a_CFLAGS) $(CFLAGS) -c -o libpll_avx_pthreads_a-queue.obj `if test -f 'queue.c'; then $(CYGPATH_W) 'queue.c'; else $(CYGPATH_W) '$(srcdir)/queue.c'; fi`
+
+libpll_avx_pthreads_a-utils.o: utils.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_pthreads_a_CFLAGS) $(CFLAGS) -MT libpll_avx_pthreads_a-utils.o -MD -MP -MF $(DEPDIR)/libpll_avx_pthreads_a-utils.Tpo -c -o libpll_avx_pthreads_a-utils.o `test -f 'utils.c' || echo '$(srcdir)/'`utils.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_avx_pthreads_a-utils.Tpo $(DEPDIR)/libpll_avx_pthreads_a-utils.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='utils.c' object='libpll_avx_pthreads_a-utils.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_pthreads_a_CFLAGS) $(CFLAGS) -c -o libpll_avx_pthreads_a-utils.o `test -f 'utils.c' || echo '$(srcdir)/'`utils.c
+
+libpll_avx_pthreads_a-utils.obj: utils.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_pthreads_a_CFLAGS) $(CFLAGS) -MT libpll_avx_pthreads_a-utils.obj -MD -MP -MF $(DEPDIR)/libpll_avx_pthreads_a-utils.Tpo -c -o libpll_avx_pthreads_a-utils.obj `if test -f 'utils.c'; then $(CYGPATH_W) 'utils.c'; else $(CYGPATH_W) '$(srcdir)/utils.c'; fi`
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_avx_pthreads_a-utils.Tpo $(DEPDIR)/libpll_avx_pthreads_a-utils.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='utils.c' object='libpll_avx_pthreads_a-utils.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_pthreads_a_CFLAGS) $(CFLAGS) -c -o libpll_avx_pthreads_a-utils.obj `if test -f 'utils.c'; then $(CYGPATH_W) 'utils.c'; else $(CYGPATH_W) '$(srcdir)/utils.c'; fi`
+
+libpll_avx_pthreads_a-randomTree.o: randomTree.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_pthreads_a_CFLAGS) $(CFLAGS) -MT libpll_avx_pthreads_a-randomTree.o -MD -MP -MF $(DEPDIR)/libpll_avx_pthreads_a-randomTree.Tpo -c -o libpll_avx_pthreads_a-randomTree.o `test -f 'randomTree.c' || echo '$(srcdir)/'`randomTree.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_avx_pthreads_a-randomTree.Tpo $(DEPDIR)/libpll_avx_pthreads_a-randomTree.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='randomTree.c' object='libpll_avx_pthreads_a-randomTree.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_pthreads_a_CFLAGS) $(CFLAGS) -c -o libpll_avx_pthreads_a-randomTree.o `test -f 'randomTree.c' || echo '$(srcdir)/'`randomTree.c
+
+libpll_avx_pthreads_a-randomTree.obj: randomTree.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_pthreads_a_CFLAGS) $(CFLAGS) -MT libpll_avx_pthreads_a-randomTree.obj -MD -MP -MF $(DEPDIR)/libpll_avx_pthreads_a-randomTree.Tpo -c -o libpll_avx_pthreads_a-randomTree.obj `if test -f 'randomTree.c'; then $(CYGPATH_W) 'randomTree.c'; else $(CYGPATH_W) '$(srcdir)/randomTree.c'; fi`
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_avx_pthreads_a-randomTree.Tpo $(DEPDIR)/libpll_avx_pthreads_a-randomTree.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='randomTree.c' object='libpll_avx_pthreads_a-randomTree.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_pthreads_a_CFLAGS) $(CFLAGS) -c -o libpll_avx_pthreads_a-randomTree.obj `if test -f 'randomTree.c'; then $(CYGPATH_W) 'randomTree.c'; else $(CYGPATH_W) '$(srcdir)/randomTree.c'; fi`
+
+libpll_avx_pthreads_a-optimizeModel.o: optimizeModel.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_pthreads_a_CFLAGS) $(CFLAGS) -MT libpll_avx_pthreads_a-optimizeModel.o -MD -MP -MF $(DEPDIR)/libpll_avx_pthreads_a-optimizeModel.Tpo -c -o libpll_avx_pthreads_a-optimizeModel.o `test -f 'optimizeModel.c' || echo '$(srcdir)/'`optimizeModel.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_avx_pthreads_a-optimizeModel.Tpo $(DEPDIR)/libpll_avx_pthreads_a-optimizeModel.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='optimizeModel.c' object='libpll_avx_pthreads_a-optimizeModel.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_pthreads_a_CFLAGS) $(CFLAGS) -c -o libpll_avx_pthreads_a-optimizeModel.o `test -f 'optimizeModel.c' || echo '$(srcdir)/'`optimizeModel.c
+
+libpll_avx_pthreads_a-optimizeModel.obj: optimizeModel.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_pthreads_a_CFLAGS) $(CFLAGS) -MT libpll_avx_pthreads_a-optimizeModel.obj -MD -MP -MF $(DEPDIR)/libpll_avx_pthreads_a-optimizeModel.Tpo -c -o libpll_avx_pthreads_a-optimizeModel.obj `if test -f 'optimizeModel.c'; then $(CYGPATH_W) 'optimizeModel.c'; else $(CYGPATH_W) '$(srcdir)/optimizeModel.c'; fi`
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_avx_pthreads_a-optimizeModel.Tpo $(DEPDIR)/libpll_avx_pthreads_a-optimizeModel.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='optimizeModel.c' object='libpll_avx_pthreads_a-optimizeModel.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_pthreads_a_CFLAGS) $(CFLAGS) -c -o libpll_avx_pthreads_a-optimizeModel.obj `if test -f 'optimizeModel.c'; then $(CYGPATH_W) 'optimizeModel.c'; else $(CYGPATH_W) '$(srcdir)/optimizeModel.c'; fi`
+
+libpll_avx_pthreads_a-trash.o: trash.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_pthreads_a_CFLAGS) $(CFLAGS) -MT libpll_avx_pthreads_a-trash.o -MD -MP -MF $(DEPDIR)/libpll_avx_pthreads_a-trash.Tpo -c -o libpll_avx_pthreads_a-trash.o `test -f 'trash.c' || echo '$(srcdir)/'`trash.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_avx_pthreads_a-trash.Tpo $(DEPDIR)/libpll_avx_pthreads_a-trash.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='trash.c' object='libpll_avx_pthreads_a-trash.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_pthreads_a_CFLAGS) $(CFLAGS) -c -o libpll_avx_pthreads_a-trash.o `test -f 'trash.c' || echo '$(srcdir)/'`trash.c
+
+libpll_avx_pthreads_a-trash.obj: trash.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_pthreads_a_CFLAGS) $(CFLAGS) -MT libpll_avx_pthreads_a-trash.obj -MD -MP -MF $(DEPDIR)/libpll_avx_pthreads_a-trash.Tpo -c -o libpll_avx_pthreads_a-trash.obj `if test -f 'trash.c'; then $(CYGPATH_W) 'trash.c'; else $(CYGPATH_W) '$(srcdir)/trash.c'; fi`
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_avx_pthreads_a-trash.Tpo $(DEPDIR)/libpll_avx_pthreads_a-trash.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='trash.c' object='libpll_avx_pthreads_a-trash.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_pthreads_a_CFLAGS) $(CFLAGS) -c -o libpll_avx_pthreads_a-trash.obj `if test -f 'trash.c'; then $(CYGPATH_W) 'trash.c'; else $(CYGPATH_W) '$(srcdir)/trash.c'; fi`
+
+libpll_avx_pthreads_a-searchAlgo.o: searchAlgo.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_pthreads_a_CFLAGS) $(CFLAGS) -MT libpll_avx_pthreads_a-searchAlgo.o -MD -MP -MF $(DEPDIR)/libpll_avx_pthreads_a-searchAlgo.Tpo -c -o libpll_avx_pthreads_a-searchAlgo.o `test -f 'searchAlgo.c' || echo '$(srcdir)/'`searchAlgo.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_avx_pthreads_a-searchAlgo.Tpo $(DEPDIR)/libpll_avx_pthreads_a-searchAlgo.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='searchAlgo.c' object='libpll_avx_pthreads_a-searchAlgo.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_pthreads_a_CFLAGS) $(CFLAGS) -c -o libpll_avx_pthreads_a-searchAlgo.o `test -f 'searchAlgo.c' || echo '$(srcdir)/'`searchAlgo.c
+
+libpll_avx_pthreads_a-searchAlgo.obj: searchAlgo.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_pthreads_a_CFLAGS) $(CFLAGS) -MT libpll_avx_pthreads_a-searchAlgo.obj -MD -MP -MF $(DEPDIR)/libpll_avx_pthreads_a-searchAlgo.Tpo -c -o libpll_avx_pthreads_a-searchAlgo.obj `if test -f 'searchAlgo.c'; then $(CYGPATH_W) 'searchAlgo.c'; else $(CYGPATH_W) '$(srcdir)/searchAlgo.c'; fi`
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_avx_pthreads_a-searchAlgo.Tpo $(DEPDIR)/libpll_avx_pthreads_a-searchAlgo.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='searchAlgo.c' object='libpll_avx_pthreads_a-searchAlgo.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_pthreads_a_CFLAGS) $(CFLAGS) -c -o libpll_avx_pthreads_a-searchAlgo.obj `if test -f 'searchAlgo.c'; then $(CYGPATH_W) 'searchAlgo.c'; else $(CYGPATH_W) '$(srcdir)/searchAlgo.c'; fi`
+
+libpll_avx_pthreads_a-topologies.o: topologies.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_pthreads_a_CFLAGS) $(CFLAGS) -MT libpll_avx_pthreads_a-topologies.o -MD -MP -MF $(DEPDIR)/libpll_avx_pthreads_a-topologies.Tpo -c -o libpll_avx_pthreads_a-topologies.o `test -f 'topologies.c' || echo '$(srcdir)/'`topologies.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_avx_pthreads_a-topologies.Tpo $(DEPDIR)/libpll_avx_pthreads_a-topologies.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='topologies.c' object='libpll_avx_pthreads_a-topologies.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_pthreads_a_CFLAGS) $(CFLAGS) -c -o libpll_avx_pthreads_a-topologies.o `test -f 'topologies.c' || echo '$(srcdir)/'`topologies.c
+
+libpll_avx_pthreads_a-topologies.obj: topologies.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_pthreads_a_CFLAGS) $(CFLAGS) -MT libpll_avx_pthreads_a-topologies.obj -MD -MP -MF $(DEPDIR)/libpll_avx_pthreads_a-topologies.Tpo -c -o libpll_avx_pthreads_a-topologies.obj `if test -f 'topologies.c'; then $(CYGPATH_W) 'topologies.c'; else $(CYGPATH_W) '$(srcdir)/topologies.c'; fi`
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_avx_pthreads_a-topologies.Tpo $(DEPDIR)/libpll_avx_pthreads_a-topologies.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='topologies.c' object='libpll_avx_pthreads_a-topologies.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_pthreads_a_CFLAGS) $(CFLAGS) -c -o libpll_avx_pthreads_a-topologies.obj `if test -f 'topologies.c'; then $(CYGPATH_W) 'topologies.c'; else $(CYGPATH_W) '$(srcdir)/topologies.c'; fi`
+
+libpll_avx_pthreads_a-fastDNAparsimony.o: fastDNAparsimony.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_pthreads_a_CFLAGS) $(CFLAGS) -MT libpll_avx_pthreads_a-fastDNAparsimony.o -MD -MP -MF $(DEPDIR)/libpll_avx_pthreads_a-fastDNAparsimony.Tpo -c -o libpll_avx_pthreads_a-fastDNAparsimony.o `test -f 'fastDNAparsimony.c' || echo '$(srcdir)/'`fastDNAparsimony.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_avx_pthreads_a-fastDNAparsimony.Tpo $(DEPDIR)/libpll_avx_pthreads_a-fastDNAparsimony.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='fastDNAparsimony.c' object='libpll_avx_pthreads_a-fastDNAparsimony.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_pthreads_a_CFLAGS) $(CFLAGS) -c -o libpll_avx_pthreads_a-fastDNAparsimony.o `test -f 'fastDNAparsimony.c' || echo '$(srcdir)/'`fastDNAparsimony.c
+
+libpll_avx_pthreads_a-fastDNAparsimony.obj: fastDNAparsimony.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_pthreads_a_CFLAGS) $(CFLAGS) -MT libpll_avx_pthreads_a-fastDNAparsimony.obj -MD -MP -MF $(DEPDIR)/libpll_avx_pthreads_a-fastDNAparsimony.Tpo -c -o libpll_avx_pthreads_a-fastDNAparsimony.obj `if test -f 'fastDNAparsimony.c'; then $(CYGPATH_W) 'fastDNAparsimony.c'; else $(CYGPATH_W) '$(srcdir)/fastDNAparsimony.c'; fi`
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_avx_pthreads_a-fastDNAparsimony.Tpo $(DEPDIR)/libpll_avx_pthreads_a-fastDNAparsimony.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='fastDNAparsimony.c' object='libpll_avx_pthreads_a-fastDNAparsimony.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_pthreads_a_CFLAGS) $(CFLAGS) -c -o libpll_avx_pthreads_a-fastDNAparsimony.obj `if test -f 'fastDNAparsimony.c'; then $(CYGPATH_W) 'fastDNAparsimony.c'; else $(CYGPATH_W) '$(srcdir)/fastDNAparsimony.c'; fi`
+
+libpll_avx_pthreads_a-treeIO.o: treeIO.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_pthreads_a_CFLAGS) $(CFLAGS) -MT libpll_avx_pthreads_a-treeIO.o -MD -MP -MF $(DEPDIR)/libpll_avx_pthreads_a-treeIO.Tpo -c -o libpll_avx_pthreads_a-treeIO.o `test -f 'treeIO.c' || echo '$(srcdir)/'`treeIO.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_avx_pthreads_a-treeIO.Tpo $(DEPDIR)/libpll_avx_pthreads_a-treeIO.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='treeIO.c' object='libpll_avx_pthreads_a-treeIO.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_pthreads_a_CFLAGS) $(CFLAGS) -c -o libpll_avx_pthreads_a-treeIO.o `test -f 'treeIO.c' || echo '$(srcdir)/'`treeIO.c
+
+libpll_avx_pthreads_a-treeIO.obj: treeIO.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_pthreads_a_CFLAGS) $(CFLAGS) -MT libpll_avx_pthreads_a-treeIO.obj -MD -MP -MF $(DEPDIR)/libpll_avx_pthreads_a-treeIO.Tpo -c -o libpll_avx_pthreads_a-treeIO.obj `if test -f 'treeIO.c'; then $(CYGPATH_W) 'treeIO.c'; else $(CYGPATH_W) '$(srcdir)/treeIO.c'; fi`
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_avx_pthreads_a-treeIO.Tpo $(DEPDIR)/libpll_avx_pthreads_a-treeIO.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='treeIO.c' object='libpll_avx_pthreads_a-treeIO.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_pthreads_a_CFLAGS) $(CFLAGS) -c -o libpll_avx_pthreads_a-treeIO.obj `if test -f 'treeIO.c'; then $(CYGPATH_W) 'treeIO.c'; else $(CYGPATH_W) '$(srcdir)/treeIO.c'; fi`
+
+libpll_avx_pthreads_a-models.o: models.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_pthreads_a_CFLAGS) $(CFLAGS) -MT libpll_avx_pthreads_a-models.o -MD -MP -MF $(DEPDIR)/libpll_avx_pthreads_a-models.Tpo -c -o libpll_avx_pthreads_a-models.o `test -f 'models.c' || echo '$(srcdir)/'`models.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_avx_pthreads_a-models.Tpo $(DEPDIR)/libpll_avx_pthreads_a-models.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='models.c' object='libpll_avx_pthreads_a-models.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_pthreads_a_CFLAGS) $(CFLAGS) -c -o libpll_avx_pthreads_a-models.o `test -f 'models.c' || echo '$(srcdir)/'`models.c
+
+libpll_avx_pthreads_a-models.obj: models.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_pthreads_a_CFLAGS) $(CFLAGS) -MT libpll_avx_pthreads_a-models.obj -MD -MP -MF $(DEPDIR)/libpll_avx_pthreads_a-models.Tpo -c -o libpll_avx_pthreads_a-models.obj `if test -f 'models.c'; then $(CYGPATH_W) 'models.c'; else $(CYGPATH_W) '$(srcdir)/models.c'; fi`
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_avx_pthreads_a-models.Tpo $(DEPDIR)/libpll_avx_pthreads_a-models.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='models.c' object='libpll_avx_pthreads_a-models.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_pthreads_a_CFLAGS) $(CFLAGS) -c -o libpll_avx_pthreads_a-models.obj `if test -f 'models.c'; then $(CYGPATH_W) 'models.c'; else $(CYGPATH_W) '$(srcdir)/models.c'; fi`
+
+libpll_avx_pthreads_a-evaluatePartialGenericSpecial.o: evaluatePartialGenericSpecial.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_pthreads_a_CFLAGS) $(CFLAGS) -MT libpll_avx_pthreads_a-evaluatePartialGenericSpecial.o -MD -MP -MF $(DEPDIR)/libpll_avx_pthreads_a-evaluatePartialGenericSpecial.Tpo -c -o libpll_avx_pthreads_a-evaluatePartialGenericSpecial.o `test -f 'evaluatePartialGenericSpecial.c' || echo '$(srcdir)/'`evaluatePartialGenericSpecial.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_avx_pthreads_a-evaluatePartialGenericSpecial.Tpo $(DEPDIR)/libpll_avx_pthreads_a-evaluatePartialGenericSpecial.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='evaluatePartialGenericSpecial.c' object='libpll_avx_pthreads_a-evaluatePartialGenericSpecial.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_pthreads_a_CFLAGS) $(CFLAGS) -c -o libpll_avx_pthreads_a-evaluatePartialGenericSpecial.o `test -f 'evaluatePartialGenericSpecial.c' || echo '$(srcdir)/'`evaluatePartialGenericSpecial.c
+
+libpll_avx_pthreads_a-evaluatePartialGenericSpecial.obj: evaluatePartialGenericSpecial.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_pthreads_a_CFLAGS) $(CFLAGS) -MT libpll_avx_pthreads_a-evaluatePartialGenericSpecial.obj -MD -MP -MF $(DEPDIR)/libpll_avx_pthreads_a-evaluatePartialGenericSpecial.Tpo -c -o libpll_avx_pthreads_a-evaluatePartialGenericSpecial.obj `if test -f 'evaluatePartialGenericSpecial.c'; then $(CYGPATH_W) 'evaluatePartialGenericSpecial.c'; else $(CYGPATH_W) '$(srcdir)/evaluatePartialGe [...]
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_avx_pthreads_a-evaluatePartialGenericSpecial.Tpo $(DEPDIR)/libpll_avx_pthreads_a-evaluatePartialGenericSpecial.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='evaluatePartialGenericSpecial.c' object='libpll_avx_pthreads_a-evaluatePartialGenericSpecial.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_pthreads_a_CFLAGS) $(CFLAGS) -c -o libpll_avx_pthreads_a-evaluatePartialGenericSpecial.obj `if test -f 'evaluatePartialGenericSpecial.c'; then $(CYGPATH_W) 'evaluatePartialGenericSpecial.c'; else $(CYGPATH_W) '$(srcdir)/evaluatePartialGenericSpecial.c'; fi`
+
+libpll_avx_pthreads_a-evaluateGenericSpecial.o: evaluateGenericSpecial.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_pthreads_a_CFLAGS) $(CFLAGS) -MT libpll_avx_pthreads_a-evaluateGenericSpecial.o -MD -MP -MF $(DEPDIR)/libpll_avx_pthreads_a-evaluateGenericSpecial.Tpo -c -o libpll_avx_pthreads_a-evaluateGenericSpecial.o `test -f 'evaluateGenericSpecial.c' || echo '$(srcdir)/'`evaluateGenericSpecial.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_avx_pthreads_a-evaluateGenericSpecial.Tpo $(DEPDIR)/libpll_avx_pthreads_a-evaluateGenericSpecial.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='evaluateGenericSpecial.c' object='libpll_avx_pthreads_a-evaluateGenericSpecial.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_pthreads_a_CFLAGS) $(CFLAGS) -c -o libpll_avx_pthreads_a-evaluateGenericSpecial.o `test -f 'evaluateGenericSpecial.c' || echo '$(srcdir)/'`evaluateGenericSpecial.c
+
+libpll_avx_pthreads_a-evaluateGenericSpecial.obj: evaluateGenericSpecial.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_pthreads_a_CFLAGS) $(CFLAGS) -MT libpll_avx_pthreads_a-evaluateGenericSpecial.obj -MD -MP -MF $(DEPDIR)/libpll_avx_pthreads_a-evaluateGenericSpecial.Tpo -c -o libpll_avx_pthreads_a-evaluateGenericSpecial.obj `if test -f 'evaluateGenericSpecial.c'; then $(CYGPATH_W) 'evaluateGenericSpecial.c'; else $(CYGPATH_W) '$(srcdir)/evaluateGenericSpecial.c'; fi`
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_avx_pthreads_a-evaluateGenericSpecial.Tpo $(DEPDIR)/libpll_avx_pthreads_a-evaluateGenericSpecial.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='evaluateGenericSpecial.c' object='libpll_avx_pthreads_a-evaluateGenericSpecial.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_pthreads_a_CFLAGS) $(CFLAGS) -c -o libpll_avx_pthreads_a-evaluateGenericSpecial.obj `if test -f 'evaluateGenericSpecial.c'; then $(CYGPATH_W) 'evaluateGenericSpecial.c'; else $(CYGPATH_W) '$(srcdir)/evaluateGenericSpecial.c'; fi`
+
+libpll_avx_pthreads_a-newviewGenericSpecial.o: newviewGenericSpecial.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_pthreads_a_CFLAGS) $(CFLAGS) -MT libpll_avx_pthreads_a-newviewGenericSpecial.o -MD -MP -MF $(DEPDIR)/libpll_avx_pthreads_a-newviewGenericSpecial.Tpo -c -o libpll_avx_pthreads_a-newviewGenericSpecial.o `test -f 'newviewGenericSpecial.c' || echo '$(srcdir)/'`newviewGenericSpecial.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_avx_pthreads_a-newviewGenericSpecial.Tpo $(DEPDIR)/libpll_avx_pthreads_a-newviewGenericSpecial.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='newviewGenericSpecial.c' object='libpll_avx_pthreads_a-newviewGenericSpecial.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_pthreads_a_CFLAGS) $(CFLAGS) -c -o libpll_avx_pthreads_a-newviewGenericSpecial.o `test -f 'newviewGenericSpecial.c' || echo '$(srcdir)/'`newviewGenericSpecial.c
+
+libpll_avx_pthreads_a-newviewGenericSpecial.obj: newviewGenericSpecial.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_pthreads_a_CFLAGS) $(CFLAGS) -MT libpll_avx_pthreads_a-newviewGenericSpecial.obj -MD -MP -MF $(DEPDIR)/libpll_avx_pthreads_a-newviewGenericSpecial.Tpo -c -o libpll_avx_pthreads_a-newviewGenericSpecial.obj `if test -f 'newviewGenericSpecial.c'; then $(CYGPATH_W) 'newviewGenericSpecial.c'; else $(CYGPATH_W) '$(srcdir)/newviewGenericSpecial.c'; fi`
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_avx_pthreads_a-newviewGenericSpecial.Tpo $(DEPDIR)/libpll_avx_pthreads_a-newviewGenericSpecial.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='newviewGenericSpecial.c' object='libpll_avx_pthreads_a-newviewGenericSpecial.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_pthreads_a_CFLAGS) $(CFLAGS) -c -o libpll_avx_pthreads_a-newviewGenericSpecial.obj `if test -f 'newviewGenericSpecial.c'; then $(CYGPATH_W) 'newviewGenericSpecial.c'; else $(CYGPATH_W) '$(srcdir)/newviewGenericSpecial.c'; fi`
+
+libpll_avx_pthreads_a-makenewzGenericSpecial.o: makenewzGenericSpecial.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_pthreads_a_CFLAGS) $(CFLAGS) -MT libpll_avx_pthreads_a-makenewzGenericSpecial.o -MD -MP -MF $(DEPDIR)/libpll_avx_pthreads_a-makenewzGenericSpecial.Tpo -c -o libpll_avx_pthreads_a-makenewzGenericSpecial.o `test -f 'makenewzGenericSpecial.c' || echo '$(srcdir)/'`makenewzGenericSpecial.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_avx_pthreads_a-makenewzGenericSpecial.Tpo $(DEPDIR)/libpll_avx_pthreads_a-makenewzGenericSpecial.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='makenewzGenericSpecial.c' object='libpll_avx_pthreads_a-makenewzGenericSpecial.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_pthreads_a_CFLAGS) $(CFLAGS) -c -o libpll_avx_pthreads_a-makenewzGenericSpecial.o `test -f 'makenewzGenericSpecial.c' || echo '$(srcdir)/'`makenewzGenericSpecial.c
+
+libpll_avx_pthreads_a-makenewzGenericSpecial.obj: makenewzGenericSpecial.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_pthreads_a_CFLAGS) $(CFLAGS) -MT libpll_avx_pthreads_a-makenewzGenericSpecial.obj -MD -MP -MF $(DEPDIR)/libpll_avx_pthreads_a-makenewzGenericSpecial.Tpo -c -o libpll_avx_pthreads_a-makenewzGenericSpecial.obj `if test -f 'makenewzGenericSpecial.c'; then $(CYGPATH_W) 'makenewzGenericSpecial.c'; else $(CYGPATH_W) '$(srcdir)/makenewzGenericSpecial.c'; fi`
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_avx_pthreads_a-makenewzGenericSpecial.Tpo $(DEPDIR)/libpll_avx_pthreads_a-makenewzGenericSpecial.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='makenewzGenericSpecial.c' object='libpll_avx_pthreads_a-makenewzGenericSpecial.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_pthreads_a_CFLAGS) $(CFLAGS) -c -o libpll_avx_pthreads_a-makenewzGenericSpecial.obj `if test -f 'makenewzGenericSpecial.c'; then $(CYGPATH_W) 'makenewzGenericSpecial.c'; else $(CYGPATH_W) '$(srcdir)/makenewzGenericSpecial.c'; fi`
+
+libpll_avx_pthreads_a-bipartitionList.o: bipartitionList.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_pthreads_a_CFLAGS) $(CFLAGS) -MT libpll_avx_pthreads_a-bipartitionList.o -MD -MP -MF $(DEPDIR)/libpll_avx_pthreads_a-bipartitionList.Tpo -c -o libpll_avx_pthreads_a-bipartitionList.o `test -f 'bipartitionList.c' || echo '$(srcdir)/'`bipartitionList.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_avx_pthreads_a-bipartitionList.Tpo $(DEPDIR)/libpll_avx_pthreads_a-bipartitionList.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='bipartitionList.c' object='libpll_avx_pthreads_a-bipartitionList.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_pthreads_a_CFLAGS) $(CFLAGS) -c -o libpll_avx_pthreads_a-bipartitionList.o `test -f 'bipartitionList.c' || echo '$(srcdir)/'`bipartitionList.c
+
+libpll_avx_pthreads_a-bipartitionList.obj: bipartitionList.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_pthreads_a_CFLAGS) $(CFLAGS) -MT libpll_avx_pthreads_a-bipartitionList.obj -MD -MP -MF $(DEPDIR)/libpll_avx_pthreads_a-bipartitionList.Tpo -c -o libpll_avx_pthreads_a-bipartitionList.obj `if test -f 'bipartitionList.c'; then $(CYGPATH_W) 'bipartitionList.c'; else $(CYGPATH_W) '$(srcdir)/bipartitionList.c'; fi`
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_avx_pthreads_a-bipartitionList.Tpo $(DEPDIR)/libpll_avx_pthreads_a-bipartitionList.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='bipartitionList.c' object='libpll_avx_pthreads_a-bipartitionList.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_pthreads_a_CFLAGS) $(CFLAGS) -c -o libpll_avx_pthreads_a-bipartitionList.obj `if test -f 'bipartitionList.c'; then $(CYGPATH_W) 'bipartitionList.c'; else $(CYGPATH_W) '$(srcdir)/bipartitionList.c'; fi`
+
+libpll_avx_pthreads_a-restartHashTable.o: restartHashTable.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_pthreads_a_CFLAGS) $(CFLAGS) -MT libpll_avx_pthreads_a-restartHashTable.o -MD -MP -MF $(DEPDIR)/libpll_avx_pthreads_a-restartHashTable.Tpo -c -o libpll_avx_pthreads_a-restartHashTable.o `test -f 'restartHashTable.c' || echo '$(srcdir)/'`restartHashTable.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_avx_pthreads_a-restartHashTable.Tpo $(DEPDIR)/libpll_avx_pthreads_a-restartHashTable.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='restartHashTable.c' object='libpll_avx_pthreads_a-restartHashTable.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_pthreads_a_CFLAGS) $(CFLAGS) -c -o libpll_avx_pthreads_a-restartHashTable.o `test -f 'restartHashTable.c' || echo '$(srcdir)/'`restartHashTable.c
+
+libpll_avx_pthreads_a-restartHashTable.obj: restartHashTable.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_pthreads_a_CFLAGS) $(CFLAGS) -MT libpll_avx_pthreads_a-restartHashTable.obj -MD -MP -MF $(DEPDIR)/libpll_avx_pthreads_a-restartHashTable.Tpo -c -o libpll_avx_pthreads_a-restartHashTable.obj `if test -f 'restartHashTable.c'; then $(CYGPATH_W) 'restartHashTable.c'; else $(CYGPATH_W) '$(srcdir)/restartHashTable.c'; fi`
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_avx_pthreads_a-restartHashTable.Tpo $(DEPDIR)/libpll_avx_pthreads_a-restartHashTable.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='restartHashTable.c' object='libpll_avx_pthreads_a-restartHashTable.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_pthreads_a_CFLAGS) $(CFLAGS) -c -o libpll_avx_pthreads_a-restartHashTable.obj `if test -f 'restartHashTable.c'; then $(CYGPATH_W) 'restartHashTable.c'; else $(CYGPATH_W) '$(srcdir)/restartHashTable.c'; fi`
+
+libpll_avx_pthreads_a-recom.o: recom.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_pthreads_a_CFLAGS) $(CFLAGS) -MT libpll_avx_pthreads_a-recom.o -MD -MP -MF $(DEPDIR)/libpll_avx_pthreads_a-recom.Tpo -c -o libpll_avx_pthreads_a-recom.o `test -f 'recom.c' || echo '$(srcdir)/'`recom.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_avx_pthreads_a-recom.Tpo $(DEPDIR)/libpll_avx_pthreads_a-recom.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='recom.c' object='libpll_avx_pthreads_a-recom.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_pthreads_a_CFLAGS) $(CFLAGS) -c -o libpll_avx_pthreads_a-recom.o `test -f 'recom.c' || echo '$(srcdir)/'`recom.c
+
+libpll_avx_pthreads_a-recom.obj: recom.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_pthreads_a_CFLAGS) $(CFLAGS) -MT libpll_avx_pthreads_a-recom.obj -MD -MP -MF $(DEPDIR)/libpll_avx_pthreads_a-recom.Tpo -c -o libpll_avx_pthreads_a-recom.obj `if test -f 'recom.c'; then $(CYGPATH_W) 'recom.c'; else $(CYGPATH_W) '$(srcdir)/recom.c'; fi`
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_avx_pthreads_a-recom.Tpo $(DEPDIR)/libpll_avx_pthreads_a-recom.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='recom.c' object='libpll_avx_pthreads_a-recom.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_pthreads_a_CFLAGS) $(CFLAGS) -c -o libpll_avx_pthreads_a-recom.obj `if test -f 'recom.c'; then $(CYGPATH_W) 'recom.c'; else $(CYGPATH_W) '$(srcdir)/recom.c'; fi`
+
+libpll_avx_pthreads_a-lexer.o: lexer.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_pthreads_a_CFLAGS) $(CFLAGS) -MT libpll_avx_pthreads_a-lexer.o -MD -MP -MF $(DEPDIR)/libpll_avx_pthreads_a-lexer.Tpo -c -o libpll_avx_pthreads_a-lexer.o `test -f 'lexer.c' || echo '$(srcdir)/'`lexer.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_avx_pthreads_a-lexer.Tpo $(DEPDIR)/libpll_avx_pthreads_a-lexer.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='lexer.c' object='libpll_avx_pthreads_a-lexer.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_pthreads_a_CFLAGS) $(CFLAGS) -c -o libpll_avx_pthreads_a-lexer.o `test -f 'lexer.c' || echo '$(srcdir)/'`lexer.c
+
+libpll_avx_pthreads_a-lexer.obj: lexer.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_pthreads_a_CFLAGS) $(CFLAGS) -MT libpll_avx_pthreads_a-lexer.obj -MD -MP -MF $(DEPDIR)/libpll_avx_pthreads_a-lexer.Tpo -c -o libpll_avx_pthreads_a-lexer.obj `if test -f 'lexer.c'; then $(CYGPATH_W) 'lexer.c'; else $(CYGPATH_W) '$(srcdir)/lexer.c'; fi`
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_avx_pthreads_a-lexer.Tpo $(DEPDIR)/libpll_avx_pthreads_a-lexer.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='lexer.c' object='libpll_avx_pthreads_a-lexer.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_pthreads_a_CFLAGS) $(CFLAGS) -c -o libpll_avx_pthreads_a-lexer.obj `if test -f 'lexer.c'; then $(CYGPATH_W) 'lexer.c'; else $(CYGPATH_W) '$(srcdir)/lexer.c'; fi`
+
+libpll_avx_pthreads_a-alignment.o: alignment.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_pthreads_a_CFLAGS) $(CFLAGS) -MT libpll_avx_pthreads_a-alignment.o -MD -MP -MF $(DEPDIR)/libpll_avx_pthreads_a-alignment.Tpo -c -o libpll_avx_pthreads_a-alignment.o `test -f 'alignment.c' || echo '$(srcdir)/'`alignment.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_avx_pthreads_a-alignment.Tpo $(DEPDIR)/libpll_avx_pthreads_a-alignment.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='alignment.c' object='libpll_avx_pthreads_a-alignment.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_pthreads_a_CFLAGS) $(CFLAGS) -c -o libpll_avx_pthreads_a-alignment.o `test -f 'alignment.c' || echo '$(srcdir)/'`alignment.c
+
+libpll_avx_pthreads_a-alignment.obj: alignment.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_pthreads_a_CFLAGS) $(CFLAGS) -MT libpll_avx_pthreads_a-alignment.obj -MD -MP -MF $(DEPDIR)/libpll_avx_pthreads_a-alignment.Tpo -c -o libpll_avx_pthreads_a-alignment.obj `if test -f 'alignment.c'; then $(CYGPATH_W) 'alignment.c'; else $(CYGPATH_W) '$(srcdir)/alignment.c'; fi`
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_avx_pthreads_a-alignment.Tpo $(DEPDIR)/libpll_avx_pthreads_a-alignment.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='alignment.c' object='libpll_avx_pthreads_a-alignment.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_pthreads_a_CFLAGS) $(CFLAGS) -c -o libpll_avx_pthreads_a-alignment.obj `if test -f 'alignment.c'; then $(CYGPATH_W) 'alignment.c'; else $(CYGPATH_W) '$(srcdir)/alignment.c'; fi`
+
+libpll_avx_pthreads_a-newick.o: newick.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_pthreads_a_CFLAGS) $(CFLAGS) -MT libpll_avx_pthreads_a-newick.o -MD -MP -MF $(DEPDIR)/libpll_avx_pthreads_a-newick.Tpo -c -o libpll_avx_pthreads_a-newick.o `test -f 'newick.c' || echo '$(srcdir)/'`newick.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_avx_pthreads_a-newick.Tpo $(DEPDIR)/libpll_avx_pthreads_a-newick.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='newick.c' object='libpll_avx_pthreads_a-newick.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_pthreads_a_CFLAGS) $(CFLAGS) -c -o libpll_avx_pthreads_a-newick.o `test -f 'newick.c' || echo '$(srcdir)/'`newick.c
+
+libpll_avx_pthreads_a-newick.obj: newick.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_pthreads_a_CFLAGS) $(CFLAGS) -MT libpll_avx_pthreads_a-newick.obj -MD -MP -MF $(DEPDIR)/libpll_avx_pthreads_a-newick.Tpo -c -o libpll_avx_pthreads_a-newick.obj `if test -f 'newick.c'; then $(CYGPATH_W) 'newick.c'; else $(CYGPATH_W) '$(srcdir)/newick.c'; fi`
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_avx_pthreads_a-newick.Tpo $(DEPDIR)/libpll_avx_pthreads_a-newick.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='newick.c' object='libpll_avx_pthreads_a-newick.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_pthreads_a_CFLAGS) $(CFLAGS) -c -o libpll_avx_pthreads_a-newick.obj `if test -f 'newick.c'; then $(CYGPATH_W) 'newick.c'; else $(CYGPATH_W) '$(srcdir)/newick.c'; fi`
+
+libpll_avx_pthreads_a-parsePartition.o: parsePartition.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_pthreads_a_CFLAGS) $(CFLAGS) -MT libpll_avx_pthreads_a-parsePartition.o -MD -MP -MF $(DEPDIR)/libpll_avx_pthreads_a-parsePartition.Tpo -c -o libpll_avx_pthreads_a-parsePartition.o `test -f 'parsePartition.c' || echo '$(srcdir)/'`parsePartition.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_avx_pthreads_a-parsePartition.Tpo $(DEPDIR)/libpll_avx_pthreads_a-parsePartition.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='parsePartition.c' object='libpll_avx_pthreads_a-parsePartition.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_pthreads_a_CFLAGS) $(CFLAGS) -c -o libpll_avx_pthreads_a-parsePartition.o `test -f 'parsePartition.c' || echo '$(srcdir)/'`parsePartition.c
+
+libpll_avx_pthreads_a-parsePartition.obj: parsePartition.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_pthreads_a_CFLAGS) $(CFLAGS) -MT libpll_avx_pthreads_a-parsePartition.obj -MD -MP -MF $(DEPDIR)/libpll_avx_pthreads_a-parsePartition.Tpo -c -o libpll_avx_pthreads_a-parsePartition.obj `if test -f 'parsePartition.c'; then $(CYGPATH_W) 'parsePartition.c'; else $(CYGPATH_W) '$(srcdir)/parsePartition.c'; fi`
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_avx_pthreads_a-parsePartition.Tpo $(DEPDIR)/libpll_avx_pthreads_a-parsePartition.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='parsePartition.c' object='libpll_avx_pthreads_a-parsePartition.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_pthreads_a_CFLAGS) $(CFLAGS) -c -o libpll_avx_pthreads_a-parsePartition.obj `if test -f 'parsePartition.c'; then $(CYGPATH_W) 'parsePartition.c'; else $(CYGPATH_W) '$(srcdir)/parsePartition.c'; fi`
+
+libpll_avx_pthreads_a-parsimony.o: parsimony.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_pthreads_a_CFLAGS) $(CFLAGS) -MT libpll_avx_pthreads_a-parsimony.o -MD -MP -MF $(DEPDIR)/libpll_avx_pthreads_a-parsimony.Tpo -c -o libpll_avx_pthreads_a-parsimony.o `test -f 'parsimony.c' || echo '$(srcdir)/'`parsimony.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_avx_pthreads_a-parsimony.Tpo $(DEPDIR)/libpll_avx_pthreads_a-parsimony.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='parsimony.c' object='libpll_avx_pthreads_a-parsimony.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_pthreads_a_CFLAGS) $(CFLAGS) -c -o libpll_avx_pthreads_a-parsimony.o `test -f 'parsimony.c' || echo '$(srcdir)/'`parsimony.c
+
+libpll_avx_pthreads_a-parsimony.obj: parsimony.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_pthreads_a_CFLAGS) $(CFLAGS) -MT libpll_avx_pthreads_a-parsimony.obj -MD -MP -MF $(DEPDIR)/libpll_avx_pthreads_a-parsimony.Tpo -c -o libpll_avx_pthreads_a-parsimony.obj `if test -f 'parsimony.c'; then $(CYGPATH_W) 'parsimony.c'; else $(CYGPATH_W) '$(srcdir)/parsimony.c'; fi`
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_avx_pthreads_a-parsimony.Tpo $(DEPDIR)/libpll_avx_pthreads_a-parsimony.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='parsimony.c' object='libpll_avx_pthreads_a-parsimony.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_pthreads_a_CFLAGS) $(CFLAGS) -c -o libpll_avx_pthreads_a-parsimony.obj `if test -f 'parsimony.c'; then $(CYGPATH_W) 'parsimony.c'; else $(CYGPATH_W) '$(srcdir)/parsimony.c'; fi`
+
+libpll_avx_a-avxLikelihood.o: avxLikelihood.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_a_CFLAGS) $(CFLAGS) -MT libpll_avx_a-avxLikelihood.o -MD -MP -MF $(DEPDIR)/libpll_avx_a-avxLikelihood.Tpo -c -o libpll_avx_a-avxLikelihood.o `test -f 'avxLikelihood.c' || echo '$(srcdir)/'`avxLikelihood.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_avx_a-avxLikelihood.Tpo $(DEPDIR)/libpll_avx_a-avxLikelihood.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='avxLikelihood.c' object='libpll_avx_a-avxLikelihood.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_a_CFLAGS) $(CFLAGS) -c -o libpll_avx_a-avxLikelihood.o `test -f 'avxLikelihood.c' || echo '$(srcdir)/'`avxLikelihood.c
+
+libpll_avx_a-avxLikelihood.obj: avxLikelihood.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_a_CFLAGS) $(CFLAGS) -MT libpll_avx_a-avxLikelihood.obj -MD -MP -MF $(DEPDIR)/libpll_avx_a-avxLikelihood.Tpo -c -o libpll_avx_a-avxLikelihood.obj `if test -f 'avxLikelihood.c'; then $(CYGPATH_W) 'avxLikelihood.c'; else $(CYGPATH_W) '$(srcdir)/avxLikelihood.c'; fi`
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_avx_a-avxLikelihood.Tpo $(DEPDIR)/libpll_avx_a-avxLikelihood.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='avxLikelihood.c' object='libpll_avx_a-avxLikelihood.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_a_CFLAGS) $(CFLAGS) -c -o libpll_avx_a-avxLikelihood.obj `if test -f 'avxLikelihood.c'; then $(CYGPATH_W) 'avxLikelihood.c'; else $(CYGPATH_W) '$(srcdir)/avxLikelihood.c'; fi`
+
+libpll_avx_a-hash.o: hash.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_a_CFLAGS) $(CFLAGS) -MT libpll_avx_a-hash.o -MD -MP -MF $(DEPDIR)/libpll_avx_a-hash.Tpo -c -o libpll_avx_a-hash.o `test -f 'hash.c' || echo '$(srcdir)/'`hash.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_avx_a-hash.Tpo $(DEPDIR)/libpll_avx_a-hash.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='hash.c' object='libpll_avx_a-hash.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_a_CFLAGS) $(CFLAGS) -c -o libpll_avx_a-hash.o `test -f 'hash.c' || echo '$(srcdir)/'`hash.c
+
+libpll_avx_a-hash.obj: hash.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_a_CFLAGS) $(CFLAGS) -MT libpll_avx_a-hash.obj -MD -MP -MF $(DEPDIR)/libpll_avx_a-hash.Tpo -c -o libpll_avx_a-hash.obj `if test -f 'hash.c'; then $(CYGPATH_W) 'hash.c'; else $(CYGPATH_W) '$(srcdir)/hash.c'; fi`
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_avx_a-hash.Tpo $(DEPDIR)/libpll_avx_a-hash.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='hash.c' object='libpll_avx_a-hash.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_a_CFLAGS) $(CFLAGS) -c -o libpll_avx_a-hash.obj `if test -f 'hash.c'; then $(CYGPATH_W) 'hash.c'; else $(CYGPATH_W) '$(srcdir)/hash.c'; fi`
+
+libpll_avx_a-stack.o: stack.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_a_CFLAGS) $(CFLAGS) -MT libpll_avx_a-stack.o -MD -MP -MF $(DEPDIR)/libpll_avx_a-stack.Tpo -c -o libpll_avx_a-stack.o `test -f 'stack.c' || echo '$(srcdir)/'`stack.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_avx_a-stack.Tpo $(DEPDIR)/libpll_avx_a-stack.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='stack.c' object='libpll_avx_a-stack.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_a_CFLAGS) $(CFLAGS) -c -o libpll_avx_a-stack.o `test -f 'stack.c' || echo '$(srcdir)/'`stack.c
+
+libpll_avx_a-stack.obj: stack.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_a_CFLAGS) $(CFLAGS) -MT libpll_avx_a-stack.obj -MD -MP -MF $(DEPDIR)/libpll_avx_a-stack.Tpo -c -o libpll_avx_a-stack.obj `if test -f 'stack.c'; then $(CYGPATH_W) 'stack.c'; else $(CYGPATH_W) '$(srcdir)/stack.c'; fi`
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_avx_a-stack.Tpo $(DEPDIR)/libpll_avx_a-stack.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='stack.c' object='libpll_avx_a-stack.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_a_CFLAGS) $(CFLAGS) -c -o libpll_avx_a-stack.obj `if test -f 'stack.c'; then $(CYGPATH_W) 'stack.c'; else $(CYGPATH_W) '$(srcdir)/stack.c'; fi`
+
+libpll_avx_a-ssort.o: ssort.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_a_CFLAGS) $(CFLAGS) -MT libpll_avx_a-ssort.o -MD -MP -MF $(DEPDIR)/libpll_avx_a-ssort.Tpo -c -o libpll_avx_a-ssort.o `test -f 'ssort.c' || echo '$(srcdir)/'`ssort.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_avx_a-ssort.Tpo $(DEPDIR)/libpll_avx_a-ssort.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ssort.c' object='libpll_avx_a-ssort.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_a_CFLAGS) $(CFLAGS) -c -o libpll_avx_a-ssort.o `test -f 'ssort.c' || echo '$(srcdir)/'`ssort.c
+
+libpll_avx_a-ssort.obj: ssort.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_a_CFLAGS) $(CFLAGS) -MT libpll_avx_a-ssort.obj -MD -MP -MF $(DEPDIR)/libpll_avx_a-ssort.Tpo -c -o libpll_avx_a-ssort.obj `if test -f 'ssort.c'; then $(CYGPATH_W) 'ssort.c'; else $(CYGPATH_W) '$(srcdir)/ssort.c'; fi`
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_avx_a-ssort.Tpo $(DEPDIR)/libpll_avx_a-ssort.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ssort.c' object='libpll_avx_a-ssort.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_a_CFLAGS) $(CFLAGS) -c -o libpll_avx_a-ssort.obj `if test -f 'ssort.c'; then $(CYGPATH_W) 'ssort.c'; else $(CYGPATH_W) '$(srcdir)/ssort.c'; fi`
+
+libpll_avx_a-queue.o: queue.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_a_CFLAGS) $(CFLAGS) -MT libpll_avx_a-queue.o -MD -MP -MF $(DEPDIR)/libpll_avx_a-queue.Tpo -c -o libpll_avx_a-queue.o `test -f 'queue.c' || echo '$(srcdir)/'`queue.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_avx_a-queue.Tpo $(DEPDIR)/libpll_avx_a-queue.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='queue.c' object='libpll_avx_a-queue.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_a_CFLAGS) $(CFLAGS) -c -o libpll_avx_a-queue.o `test -f 'queue.c' || echo '$(srcdir)/'`queue.c
+
+libpll_avx_a-queue.obj: queue.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_a_CFLAGS) $(CFLAGS) -MT libpll_avx_a-queue.obj -MD -MP -MF $(DEPDIR)/libpll_avx_a-queue.Tpo -c -o libpll_avx_a-queue.obj `if test -f 'queue.c'; then $(CYGPATH_W) 'queue.c'; else $(CYGPATH_W) '$(srcdir)/queue.c'; fi`
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_avx_a-queue.Tpo $(DEPDIR)/libpll_avx_a-queue.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='queue.c' object='libpll_avx_a-queue.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_a_CFLAGS) $(CFLAGS) -c -o libpll_avx_a-queue.obj `if test -f 'queue.c'; then $(CYGPATH_W) 'queue.c'; else $(CYGPATH_W) '$(srcdir)/queue.c'; fi`
+
+libpll_avx_a-utils.o: utils.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_a_CFLAGS) $(CFLAGS) -MT libpll_avx_a-utils.o -MD -MP -MF $(DEPDIR)/libpll_avx_a-utils.Tpo -c -o libpll_avx_a-utils.o `test -f 'utils.c' || echo '$(srcdir)/'`utils.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_avx_a-utils.Tpo $(DEPDIR)/libpll_avx_a-utils.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='utils.c' object='libpll_avx_a-utils.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_a_CFLAGS) $(CFLAGS) -c -o libpll_avx_a-utils.o `test -f 'utils.c' || echo '$(srcdir)/'`utils.c
+
+libpll_avx_a-utils.obj: utils.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_a_CFLAGS) $(CFLAGS) -MT libpll_avx_a-utils.obj -MD -MP -MF $(DEPDIR)/libpll_avx_a-utils.Tpo -c -o libpll_avx_a-utils.obj `if test -f 'utils.c'; then $(CYGPATH_W) 'utils.c'; else $(CYGPATH_W) '$(srcdir)/utils.c'; fi`
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_avx_a-utils.Tpo $(DEPDIR)/libpll_avx_a-utils.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='utils.c' object='libpll_avx_a-utils.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_a_CFLAGS) $(CFLAGS) -c -o libpll_avx_a-utils.obj `if test -f 'utils.c'; then $(CYGPATH_W) 'utils.c'; else $(CYGPATH_W) '$(srcdir)/utils.c'; fi`
+
+libpll_avx_a-randomTree.o: randomTree.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_a_CFLAGS) $(CFLAGS) -MT libpll_avx_a-randomTree.o -MD -MP -MF $(DEPDIR)/libpll_avx_a-randomTree.Tpo -c -o libpll_avx_a-randomTree.o `test -f 'randomTree.c' || echo '$(srcdir)/'`randomTree.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_avx_a-randomTree.Tpo $(DEPDIR)/libpll_avx_a-randomTree.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='randomTree.c' object='libpll_avx_a-randomTree.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_a_CFLAGS) $(CFLAGS) -c -o libpll_avx_a-randomTree.o `test -f 'randomTree.c' || echo '$(srcdir)/'`randomTree.c
+
+libpll_avx_a-randomTree.obj: randomTree.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_a_CFLAGS) $(CFLAGS) -MT libpll_avx_a-randomTree.obj -MD -MP -MF $(DEPDIR)/libpll_avx_a-randomTree.Tpo -c -o libpll_avx_a-randomTree.obj `if test -f 'randomTree.c'; then $(CYGPATH_W) 'randomTree.c'; else $(CYGPATH_W) '$(srcdir)/randomTree.c'; fi`
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_avx_a-randomTree.Tpo $(DEPDIR)/libpll_avx_a-randomTree.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='randomTree.c' object='libpll_avx_a-randomTree.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_a_CFLAGS) $(CFLAGS) -c -o libpll_avx_a-randomTree.obj `if test -f 'randomTree.c'; then $(CYGPATH_W) 'randomTree.c'; else $(CYGPATH_W) '$(srcdir)/randomTree.c'; fi`
+
+libpll_avx_a-optimizeModel.o: optimizeModel.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_a_CFLAGS) $(CFLAGS) -MT libpll_avx_a-optimizeModel.o -MD -MP -MF $(DEPDIR)/libpll_avx_a-optimizeModel.Tpo -c -o libpll_avx_a-optimizeModel.o `test -f 'optimizeModel.c' || echo '$(srcdir)/'`optimizeModel.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_avx_a-optimizeModel.Tpo $(DEPDIR)/libpll_avx_a-optimizeModel.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='optimizeModel.c' object='libpll_avx_a-optimizeModel.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_a_CFLAGS) $(CFLAGS) -c -o libpll_avx_a-optimizeModel.o `test -f 'optimizeModel.c' || echo '$(srcdir)/'`optimizeModel.c
+
+libpll_avx_a-optimizeModel.obj: optimizeModel.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_a_CFLAGS) $(CFLAGS) -MT libpll_avx_a-optimizeModel.obj -MD -MP -MF $(DEPDIR)/libpll_avx_a-optimizeModel.Tpo -c -o libpll_avx_a-optimizeModel.obj `if test -f 'optimizeModel.c'; then $(CYGPATH_W) 'optimizeModel.c'; else $(CYGPATH_W) '$(srcdir)/optimizeModel.c'; fi`
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_avx_a-optimizeModel.Tpo $(DEPDIR)/libpll_avx_a-optimizeModel.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='optimizeModel.c' object='libpll_avx_a-optimizeModel.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_a_CFLAGS) $(CFLAGS) -c -o libpll_avx_a-optimizeModel.obj `if test -f 'optimizeModel.c'; then $(CYGPATH_W) 'optimizeModel.c'; else $(CYGPATH_W) '$(srcdir)/optimizeModel.c'; fi`
+
+libpll_avx_a-trash.o: trash.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_a_CFLAGS) $(CFLAGS) -MT libpll_avx_a-trash.o -MD -MP -MF $(DEPDIR)/libpll_avx_a-trash.Tpo -c -o libpll_avx_a-trash.o `test -f 'trash.c' || echo '$(srcdir)/'`trash.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_avx_a-trash.Tpo $(DEPDIR)/libpll_avx_a-trash.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='trash.c' object='libpll_avx_a-trash.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_a_CFLAGS) $(CFLAGS) -c -o libpll_avx_a-trash.o `test -f 'trash.c' || echo '$(srcdir)/'`trash.c
+
+libpll_avx_a-trash.obj: trash.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_a_CFLAGS) $(CFLAGS) -MT libpll_avx_a-trash.obj -MD -MP -MF $(DEPDIR)/libpll_avx_a-trash.Tpo -c -o libpll_avx_a-trash.obj `if test -f 'trash.c'; then $(CYGPATH_W) 'trash.c'; else $(CYGPATH_W) '$(srcdir)/trash.c'; fi`
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_avx_a-trash.Tpo $(DEPDIR)/libpll_avx_a-trash.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='trash.c' object='libpll_avx_a-trash.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_a_CFLAGS) $(CFLAGS) -c -o libpll_avx_a-trash.obj `if test -f 'trash.c'; then $(CYGPATH_W) 'trash.c'; else $(CYGPATH_W) '$(srcdir)/trash.c'; fi`
+
+libpll_avx_a-searchAlgo.o: searchAlgo.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_a_CFLAGS) $(CFLAGS) -MT libpll_avx_a-searchAlgo.o -MD -MP -MF $(DEPDIR)/libpll_avx_a-searchAlgo.Tpo -c -o libpll_avx_a-searchAlgo.o `test -f 'searchAlgo.c' || echo '$(srcdir)/'`searchAlgo.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_avx_a-searchAlgo.Tpo $(DEPDIR)/libpll_avx_a-searchAlgo.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='searchAlgo.c' object='libpll_avx_a-searchAlgo.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_a_CFLAGS) $(CFLAGS) -c -o libpll_avx_a-searchAlgo.o `test -f 'searchAlgo.c' || echo '$(srcdir)/'`searchAlgo.c
+
+libpll_avx_a-searchAlgo.obj: searchAlgo.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_a_CFLAGS) $(CFLAGS) -MT libpll_avx_a-searchAlgo.obj -MD -MP -MF $(DEPDIR)/libpll_avx_a-searchAlgo.Tpo -c -o libpll_avx_a-searchAlgo.obj `if test -f 'searchAlgo.c'; then $(CYGPATH_W) 'searchAlgo.c'; else $(CYGPATH_W) '$(srcdir)/searchAlgo.c'; fi`
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_avx_a-searchAlgo.Tpo $(DEPDIR)/libpll_avx_a-searchAlgo.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='searchAlgo.c' object='libpll_avx_a-searchAlgo.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_a_CFLAGS) $(CFLAGS) -c -o libpll_avx_a-searchAlgo.obj `if test -f 'searchAlgo.c'; then $(CYGPATH_W) 'searchAlgo.c'; else $(CYGPATH_W) '$(srcdir)/searchAlgo.c'; fi`
+
+libpll_avx_a-topologies.o: topologies.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_a_CFLAGS) $(CFLAGS) -MT libpll_avx_a-topologies.o -MD -MP -MF $(DEPDIR)/libpll_avx_a-topologies.Tpo -c -o libpll_avx_a-topologies.o `test -f 'topologies.c' || echo '$(srcdir)/'`topologies.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_avx_a-topologies.Tpo $(DEPDIR)/libpll_avx_a-topologies.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='topologies.c' object='libpll_avx_a-topologies.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_a_CFLAGS) $(CFLAGS) -c -o libpll_avx_a-topologies.o `test -f 'topologies.c' || echo '$(srcdir)/'`topologies.c
+
+libpll_avx_a-topologies.obj: topologies.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_a_CFLAGS) $(CFLAGS) -MT libpll_avx_a-topologies.obj -MD -MP -MF $(DEPDIR)/libpll_avx_a-topologies.Tpo -c -o libpll_avx_a-topologies.obj `if test -f 'topologies.c'; then $(CYGPATH_W) 'topologies.c'; else $(CYGPATH_W) '$(srcdir)/topologies.c'; fi`
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_avx_a-topologies.Tpo $(DEPDIR)/libpll_avx_a-topologies.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='topologies.c' object='libpll_avx_a-topologies.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_a_CFLAGS) $(CFLAGS) -c -o libpll_avx_a-topologies.obj `if test -f 'topologies.c'; then $(CYGPATH_W) 'topologies.c'; else $(CYGPATH_W) '$(srcdir)/topologies.c'; fi`
+
+libpll_avx_a-fastDNAparsimony.o: fastDNAparsimony.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_a_CFLAGS) $(CFLAGS) -MT libpll_avx_a-fastDNAparsimony.o -MD -MP -MF $(DEPDIR)/libpll_avx_a-fastDNAparsimony.Tpo -c -o libpll_avx_a-fastDNAparsimony.o `test -f 'fastDNAparsimony.c' || echo '$(srcdir)/'`fastDNAparsimony.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_avx_a-fastDNAparsimony.Tpo $(DEPDIR)/libpll_avx_a-fastDNAparsimony.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='fastDNAparsimony.c' object='libpll_avx_a-fastDNAparsimony.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_a_CFLAGS) $(CFLAGS) -c -o libpll_avx_a-fastDNAparsimony.o `test -f 'fastDNAparsimony.c' || echo '$(srcdir)/'`fastDNAparsimony.c
+
+libpll_avx_a-fastDNAparsimony.obj: fastDNAparsimony.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_a_CFLAGS) $(CFLAGS) -MT libpll_avx_a-fastDNAparsimony.obj -MD -MP -MF $(DEPDIR)/libpll_avx_a-fastDNAparsimony.Tpo -c -o libpll_avx_a-fastDNAparsimony.obj `if test -f 'fastDNAparsimony.c'; then $(CYGPATH_W) 'fastDNAparsimony.c'; else $(CYGPATH_W) '$(srcdir)/fastDNAparsimony.c'; fi`
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_avx_a-fastDNAparsimony.Tpo $(DEPDIR)/libpll_avx_a-fastDNAparsimony.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='fastDNAparsimony.c' object='libpll_avx_a-fastDNAparsimony.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_a_CFLAGS) $(CFLAGS) -c -o libpll_avx_a-fastDNAparsimony.obj `if test -f 'fastDNAparsimony.c'; then $(CYGPATH_W) 'fastDNAparsimony.c'; else $(CYGPATH_W) '$(srcdir)/fastDNAparsimony.c'; fi`
+
+libpll_avx_a-treeIO.o: treeIO.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_a_CFLAGS) $(CFLAGS) -MT libpll_avx_a-treeIO.o -MD -MP -MF $(DEPDIR)/libpll_avx_a-treeIO.Tpo -c -o libpll_avx_a-treeIO.o `test -f 'treeIO.c' || echo '$(srcdir)/'`treeIO.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_avx_a-treeIO.Tpo $(DEPDIR)/libpll_avx_a-treeIO.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='treeIO.c' object='libpll_avx_a-treeIO.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_a_CFLAGS) $(CFLAGS) -c -o libpll_avx_a-treeIO.o `test -f 'treeIO.c' || echo '$(srcdir)/'`treeIO.c
+
+libpll_avx_a-treeIO.obj: treeIO.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_a_CFLAGS) $(CFLAGS) -MT libpll_avx_a-treeIO.obj -MD -MP -MF $(DEPDIR)/libpll_avx_a-treeIO.Tpo -c -o libpll_avx_a-treeIO.obj `if test -f 'treeIO.c'; then $(CYGPATH_W) 'treeIO.c'; else $(CYGPATH_W) '$(srcdir)/treeIO.c'; fi`
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_avx_a-treeIO.Tpo $(DEPDIR)/libpll_avx_a-treeIO.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='treeIO.c' object='libpll_avx_a-treeIO.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_a_CFLAGS) $(CFLAGS) -c -o libpll_avx_a-treeIO.obj `if test -f 'treeIO.c'; then $(CYGPATH_W) 'treeIO.c'; else $(CYGPATH_W) '$(srcdir)/treeIO.c'; fi`
+
+libpll_avx_a-models.o: models.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_a_CFLAGS) $(CFLAGS) -MT libpll_avx_a-models.o -MD -MP -MF $(DEPDIR)/libpll_avx_a-models.Tpo -c -o libpll_avx_a-models.o `test -f 'models.c' || echo '$(srcdir)/'`models.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_avx_a-models.Tpo $(DEPDIR)/libpll_avx_a-models.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='models.c' object='libpll_avx_a-models.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_a_CFLAGS) $(CFLAGS) -c -o libpll_avx_a-models.o `test -f 'models.c' || echo '$(srcdir)/'`models.c
+
+libpll_avx_a-models.obj: models.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_a_CFLAGS) $(CFLAGS) -MT libpll_avx_a-models.obj -MD -MP -MF $(DEPDIR)/libpll_avx_a-models.Tpo -c -o libpll_avx_a-models.obj `if test -f 'models.c'; then $(CYGPATH_W) 'models.c'; else $(CYGPATH_W) '$(srcdir)/models.c'; fi`
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_avx_a-models.Tpo $(DEPDIR)/libpll_avx_a-models.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='models.c' object='libpll_avx_a-models.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_a_CFLAGS) $(CFLAGS) -c -o libpll_avx_a-models.obj `if test -f 'models.c'; then $(CYGPATH_W) 'models.c'; else $(CYGPATH_W) '$(srcdir)/models.c'; fi`
+
+libpll_avx_a-evaluatePartialGenericSpecial.o: evaluatePartialGenericSpecial.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_a_CFLAGS) $(CFLAGS) -MT libpll_avx_a-evaluatePartialGenericSpecial.o -MD -MP -MF $(DEPDIR)/libpll_avx_a-evaluatePartialGenericSpecial.Tpo -c -o libpll_avx_a-evaluatePartialGenericSpecial.o `test -f 'evaluatePartialGenericSpecial.c' || echo '$(srcdir)/'`evaluatePartialGenericSpecial.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_avx_a-evaluatePartialGenericSpecial.Tpo $(DEPDIR)/libpll_avx_a-evaluatePartialGenericSpecial.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='evaluatePartialGenericSpecial.c' object='libpll_avx_a-evaluatePartialGenericSpecial.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_a_CFLAGS) $(CFLAGS) -c -o libpll_avx_a-evaluatePartialGenericSpecial.o `test -f 'evaluatePartialGenericSpecial.c' || echo '$(srcdir)/'`evaluatePartialGenericSpecial.c
+
+libpll_avx_a-evaluatePartialGenericSpecial.obj: evaluatePartialGenericSpecial.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_a_CFLAGS) $(CFLAGS) -MT libpll_avx_a-evaluatePartialGenericSpecial.obj -MD -MP -MF $(DEPDIR)/libpll_avx_a-evaluatePartialGenericSpecial.Tpo -c -o libpll_avx_a-evaluatePartialGenericSpecial.obj `if test -f 'evaluatePartialGenericSpecial.c'; then $(CYGPATH_W) 'evaluatePartialGenericSpecial.c'; else $(CYGPATH_W) '$(srcdir)/evaluatePartialGenericSpecial.c'; fi`
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_avx_a-evaluatePartialGenericSpecial.Tpo $(DEPDIR)/libpll_avx_a-evaluatePartialGenericSpecial.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='evaluatePartialGenericSpecial.c' object='libpll_avx_a-evaluatePartialGenericSpecial.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_a_CFLAGS) $(CFLAGS) -c -o libpll_avx_a-evaluatePartialGenericSpecial.obj `if test -f 'evaluatePartialGenericSpecial.c'; then $(CYGPATH_W) 'evaluatePartialGenericSpecial.c'; else $(CYGPATH_W) '$(srcdir)/evaluatePartialGenericSpecial.c'; fi`
+
+libpll_avx_a-evaluateGenericSpecial.o: evaluateGenericSpecial.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_a_CFLAGS) $(CFLAGS) -MT libpll_avx_a-evaluateGenericSpecial.o -MD -MP -MF $(DEPDIR)/libpll_avx_a-evaluateGenericSpecial.Tpo -c -o libpll_avx_a-evaluateGenericSpecial.o `test -f 'evaluateGenericSpecial.c' || echo '$(srcdir)/'`evaluateGenericSpecial.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_avx_a-evaluateGenericSpecial.Tpo $(DEPDIR)/libpll_avx_a-evaluateGenericSpecial.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='evaluateGenericSpecial.c' object='libpll_avx_a-evaluateGenericSpecial.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_a_CFLAGS) $(CFLAGS) -c -o libpll_avx_a-evaluateGenericSpecial.o `test -f 'evaluateGenericSpecial.c' || echo '$(srcdir)/'`evaluateGenericSpecial.c
+
+libpll_avx_a-evaluateGenericSpecial.obj: evaluateGenericSpecial.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_a_CFLAGS) $(CFLAGS) -MT libpll_avx_a-evaluateGenericSpecial.obj -MD -MP -MF $(DEPDIR)/libpll_avx_a-evaluateGenericSpecial.Tpo -c -o libpll_avx_a-evaluateGenericSpecial.obj `if test -f 'evaluateGenericSpecial.c'; then $(CYGPATH_W) 'evaluateGenericSpecial.c'; else $(CYGPATH_W) '$(srcdir)/evaluateGenericSpecial.c'; fi`
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_avx_a-evaluateGenericSpecial.Tpo $(DEPDIR)/libpll_avx_a-evaluateGenericSpecial.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='evaluateGenericSpecial.c' object='libpll_avx_a-evaluateGenericSpecial.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_a_CFLAGS) $(CFLAGS) -c -o libpll_avx_a-evaluateGenericSpecial.obj `if test -f 'evaluateGenericSpecial.c'; then $(CYGPATH_W) 'evaluateGenericSpecial.c'; else $(CYGPATH_W) '$(srcdir)/evaluateGenericSpecial.c'; fi`
+
+libpll_avx_a-newviewGenericSpecial.o: newviewGenericSpecial.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_a_CFLAGS) $(CFLAGS) -MT libpll_avx_a-newviewGenericSpecial.o -MD -MP -MF $(DEPDIR)/libpll_avx_a-newviewGenericSpecial.Tpo -c -o libpll_avx_a-newviewGenericSpecial.o `test -f 'newviewGenericSpecial.c' || echo '$(srcdir)/'`newviewGenericSpecial.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_avx_a-newviewGenericSpecial.Tpo $(DEPDIR)/libpll_avx_a-newviewGenericSpecial.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='newviewGenericSpecial.c' object='libpll_avx_a-newviewGenericSpecial.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_a_CFLAGS) $(CFLAGS) -c -o libpll_avx_a-newviewGenericSpecial.o `test -f 'newviewGenericSpecial.c' || echo '$(srcdir)/'`newviewGenericSpecial.c
+
+libpll_avx_a-newviewGenericSpecial.obj: newviewGenericSpecial.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_a_CFLAGS) $(CFLAGS) -MT libpll_avx_a-newviewGenericSpecial.obj -MD -MP -MF $(DEPDIR)/libpll_avx_a-newviewGenericSpecial.Tpo -c -o libpll_avx_a-newviewGenericSpecial.obj `if test -f 'newviewGenericSpecial.c'; then $(CYGPATH_W) 'newviewGenericSpecial.c'; else $(CYGPATH_W) '$(srcdir)/newviewGenericSpecial.c'; fi`
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_avx_a-newviewGenericSpecial.Tpo $(DEPDIR)/libpll_avx_a-newviewGenericSpecial.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='newviewGenericSpecial.c' object='libpll_avx_a-newviewGenericSpecial.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_a_CFLAGS) $(CFLAGS) -c -o libpll_avx_a-newviewGenericSpecial.obj `if test -f 'newviewGenericSpecial.c'; then $(CYGPATH_W) 'newviewGenericSpecial.c'; else $(CYGPATH_W) '$(srcdir)/newviewGenericSpecial.c'; fi`
+
+libpll_avx_a-makenewzGenericSpecial.o: makenewzGenericSpecial.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_a_CFLAGS) $(CFLAGS) -MT libpll_avx_a-makenewzGenericSpecial.o -MD -MP -MF $(DEPDIR)/libpll_avx_a-makenewzGenericSpecial.Tpo -c -o libpll_avx_a-makenewzGenericSpecial.o `test -f 'makenewzGenericSpecial.c' || echo '$(srcdir)/'`makenewzGenericSpecial.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_avx_a-makenewzGenericSpecial.Tpo $(DEPDIR)/libpll_avx_a-makenewzGenericSpecial.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='makenewzGenericSpecial.c' object='libpll_avx_a-makenewzGenericSpecial.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_a_CFLAGS) $(CFLAGS) -c -o libpll_avx_a-makenewzGenericSpecial.o `test -f 'makenewzGenericSpecial.c' || echo '$(srcdir)/'`makenewzGenericSpecial.c
+
+libpll_avx_a-makenewzGenericSpecial.obj: makenewzGenericSpecial.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_a_CFLAGS) $(CFLAGS) -MT libpll_avx_a-makenewzGenericSpecial.obj -MD -MP -MF $(DEPDIR)/libpll_avx_a-makenewzGenericSpecial.Tpo -c -o libpll_avx_a-makenewzGenericSpecial.obj `if test -f 'makenewzGenericSpecial.c'; then $(CYGPATH_W) 'makenewzGenericSpecial.c'; else $(CYGPATH_W) '$(srcdir)/makenewzGenericSpecial.c'; fi`
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_avx_a-makenewzGenericSpecial.Tpo $(DEPDIR)/libpll_avx_a-makenewzGenericSpecial.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='makenewzGenericSpecial.c' object='libpll_avx_a-makenewzGenericSpecial.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_a_CFLAGS) $(CFLAGS) -c -o libpll_avx_a-makenewzGenericSpecial.obj `if test -f 'makenewzGenericSpecial.c'; then $(CYGPATH_W) 'makenewzGenericSpecial.c'; else $(CYGPATH_W) '$(srcdir)/makenewzGenericSpecial.c'; fi`
+
+libpll_avx_a-bipartitionList.o: bipartitionList.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_a_CFLAGS) $(CFLAGS) -MT libpll_avx_a-bipartitionList.o -MD -MP -MF $(DEPDIR)/libpll_avx_a-bipartitionList.Tpo -c -o libpll_avx_a-bipartitionList.o `test -f 'bipartitionList.c' || echo '$(srcdir)/'`bipartitionList.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_avx_a-bipartitionList.Tpo $(DEPDIR)/libpll_avx_a-bipartitionList.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='bipartitionList.c' object='libpll_avx_a-bipartitionList.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_a_CFLAGS) $(CFLAGS) -c -o libpll_avx_a-bipartitionList.o `test -f 'bipartitionList.c' || echo '$(srcdir)/'`bipartitionList.c
+
+libpll_avx_a-bipartitionList.obj: bipartitionList.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_a_CFLAGS) $(CFLAGS) -MT libpll_avx_a-bipartitionList.obj -MD -MP -MF $(DEPDIR)/libpll_avx_a-bipartitionList.Tpo -c -o libpll_avx_a-bipartitionList.obj `if test -f 'bipartitionList.c'; then $(CYGPATH_W) 'bipartitionList.c'; else $(CYGPATH_W) '$(srcdir)/bipartitionList.c'; fi`
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_avx_a-bipartitionList.Tpo $(DEPDIR)/libpll_avx_a-bipartitionList.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='bipartitionList.c' object='libpll_avx_a-bipartitionList.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_a_CFLAGS) $(CFLAGS) -c -o libpll_avx_a-bipartitionList.obj `if test -f 'bipartitionList.c'; then $(CYGPATH_W) 'bipartitionList.c'; else $(CYGPATH_W) '$(srcdir)/bipartitionList.c'; fi`
+
+libpll_avx_a-restartHashTable.o: restartHashTable.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_a_CFLAGS) $(CFLAGS) -MT libpll_avx_a-restartHashTable.o -MD -MP -MF $(DEPDIR)/libpll_avx_a-restartHashTable.Tpo -c -o libpll_avx_a-restartHashTable.o `test -f 'restartHashTable.c' || echo '$(srcdir)/'`restartHashTable.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_avx_a-restartHashTable.Tpo $(DEPDIR)/libpll_avx_a-restartHashTable.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='restartHashTable.c' object='libpll_avx_a-restartHashTable.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_a_CFLAGS) $(CFLAGS) -c -o libpll_avx_a-restartHashTable.o `test -f 'restartHashTable.c' || echo '$(srcdir)/'`restartHashTable.c
+
+libpll_avx_a-restartHashTable.obj: restartHashTable.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_a_CFLAGS) $(CFLAGS) -MT libpll_avx_a-restartHashTable.obj -MD -MP -MF $(DEPDIR)/libpll_avx_a-restartHashTable.Tpo -c -o libpll_avx_a-restartHashTable.obj `if test -f 'restartHashTable.c'; then $(CYGPATH_W) 'restartHashTable.c'; else $(CYGPATH_W) '$(srcdir)/restartHashTable.c'; fi`
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_avx_a-restartHashTable.Tpo $(DEPDIR)/libpll_avx_a-restartHashTable.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='restartHashTable.c' object='libpll_avx_a-restartHashTable.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_a_CFLAGS) $(CFLAGS) -c -o libpll_avx_a-restartHashTable.obj `if test -f 'restartHashTable.c'; then $(CYGPATH_W) 'restartHashTable.c'; else $(CYGPATH_W) '$(srcdir)/restartHashTable.c'; fi`
+
+libpll_avx_a-recom.o: recom.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_a_CFLAGS) $(CFLAGS) -MT libpll_avx_a-recom.o -MD -MP -MF $(DEPDIR)/libpll_avx_a-recom.Tpo -c -o libpll_avx_a-recom.o `test -f 'recom.c' || echo '$(srcdir)/'`recom.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_avx_a-recom.Tpo $(DEPDIR)/libpll_avx_a-recom.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='recom.c' object='libpll_avx_a-recom.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_a_CFLAGS) $(CFLAGS) -c -o libpll_avx_a-recom.o `test -f 'recom.c' || echo '$(srcdir)/'`recom.c
+
+libpll_avx_a-recom.obj: recom.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_a_CFLAGS) $(CFLAGS) -MT libpll_avx_a-recom.obj -MD -MP -MF $(DEPDIR)/libpll_avx_a-recom.Tpo -c -o libpll_avx_a-recom.obj `if test -f 'recom.c'; then $(CYGPATH_W) 'recom.c'; else $(CYGPATH_W) '$(srcdir)/recom.c'; fi`
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_avx_a-recom.Tpo $(DEPDIR)/libpll_avx_a-recom.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='recom.c' object='libpll_avx_a-recom.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_a_CFLAGS) $(CFLAGS) -c -o libpll_avx_a-recom.obj `if test -f 'recom.c'; then $(CYGPATH_W) 'recom.c'; else $(CYGPATH_W) '$(srcdir)/recom.c'; fi`
+
+libpll_avx_a-lexer.o: lexer.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_a_CFLAGS) $(CFLAGS) -MT libpll_avx_a-lexer.o -MD -MP -MF $(DEPDIR)/libpll_avx_a-lexer.Tpo -c -o libpll_avx_a-lexer.o `test -f 'lexer.c' || echo '$(srcdir)/'`lexer.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_avx_a-lexer.Tpo $(DEPDIR)/libpll_avx_a-lexer.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='lexer.c' object='libpll_avx_a-lexer.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_a_CFLAGS) $(CFLAGS) -c -o libpll_avx_a-lexer.o `test -f 'lexer.c' || echo '$(srcdir)/'`lexer.c
+
+libpll_avx_a-lexer.obj: lexer.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_a_CFLAGS) $(CFLAGS) -MT libpll_avx_a-lexer.obj -MD -MP -MF $(DEPDIR)/libpll_avx_a-lexer.Tpo -c -o libpll_avx_a-lexer.obj `if test -f 'lexer.c'; then $(CYGPATH_W) 'lexer.c'; else $(CYGPATH_W) '$(srcdir)/lexer.c'; fi`
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_avx_a-lexer.Tpo $(DEPDIR)/libpll_avx_a-lexer.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='lexer.c' object='libpll_avx_a-lexer.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_a_CFLAGS) $(CFLAGS) -c -o libpll_avx_a-lexer.obj `if test -f 'lexer.c'; then $(CYGPATH_W) 'lexer.c'; else $(CYGPATH_W) '$(srcdir)/lexer.c'; fi`
+
+libpll_avx_a-alignment.o: alignment.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_a_CFLAGS) $(CFLAGS) -MT libpll_avx_a-alignment.o -MD -MP -MF $(DEPDIR)/libpll_avx_a-alignment.Tpo -c -o libpll_avx_a-alignment.o `test -f 'alignment.c' || echo '$(srcdir)/'`alignment.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_avx_a-alignment.Tpo $(DEPDIR)/libpll_avx_a-alignment.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='alignment.c' object='libpll_avx_a-alignment.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_a_CFLAGS) $(CFLAGS) -c -o libpll_avx_a-alignment.o `test -f 'alignment.c' || echo '$(srcdir)/'`alignment.c
+
+libpll_avx_a-alignment.obj: alignment.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_a_CFLAGS) $(CFLAGS) -MT libpll_avx_a-alignment.obj -MD -MP -MF $(DEPDIR)/libpll_avx_a-alignment.Tpo -c -o libpll_avx_a-alignment.obj `if test -f 'alignment.c'; then $(CYGPATH_W) 'alignment.c'; else $(CYGPATH_W) '$(srcdir)/alignment.c'; fi`
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_avx_a-alignment.Tpo $(DEPDIR)/libpll_avx_a-alignment.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='alignment.c' object='libpll_avx_a-alignment.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_a_CFLAGS) $(CFLAGS) -c -o libpll_avx_a-alignment.obj `if test -f 'alignment.c'; then $(CYGPATH_W) 'alignment.c'; else $(CYGPATH_W) '$(srcdir)/alignment.c'; fi`
+
+libpll_avx_a-newick.o: newick.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_a_CFLAGS) $(CFLAGS) -MT libpll_avx_a-newick.o -MD -MP -MF $(DEPDIR)/libpll_avx_a-newick.Tpo -c -o libpll_avx_a-newick.o `test -f 'newick.c' || echo '$(srcdir)/'`newick.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_avx_a-newick.Tpo $(DEPDIR)/libpll_avx_a-newick.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='newick.c' object='libpll_avx_a-newick.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_a_CFLAGS) $(CFLAGS) -c -o libpll_avx_a-newick.o `test -f 'newick.c' || echo '$(srcdir)/'`newick.c
+
+libpll_avx_a-newick.obj: newick.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_a_CFLAGS) $(CFLAGS) -MT libpll_avx_a-newick.obj -MD -MP -MF $(DEPDIR)/libpll_avx_a-newick.Tpo -c -o libpll_avx_a-newick.obj `if test -f 'newick.c'; then $(CYGPATH_W) 'newick.c'; else $(CYGPATH_W) '$(srcdir)/newick.c'; fi`
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_avx_a-newick.Tpo $(DEPDIR)/libpll_avx_a-newick.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='newick.c' object='libpll_avx_a-newick.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_a_CFLAGS) $(CFLAGS) -c -o libpll_avx_a-newick.obj `if test -f 'newick.c'; then $(CYGPATH_W) 'newick.c'; else $(CYGPATH_W) '$(srcdir)/newick.c'; fi`
+
+libpll_avx_a-parsePartition.o: parsePartition.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_a_CFLAGS) $(CFLAGS) -MT libpll_avx_a-parsePartition.o -MD -MP -MF $(DEPDIR)/libpll_avx_a-parsePartition.Tpo -c -o libpll_avx_a-parsePartition.o `test -f 'parsePartition.c' || echo '$(srcdir)/'`parsePartition.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_avx_a-parsePartition.Tpo $(DEPDIR)/libpll_avx_a-parsePartition.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='parsePartition.c' object='libpll_avx_a-parsePartition.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_a_CFLAGS) $(CFLAGS) -c -o libpll_avx_a-parsePartition.o `test -f 'parsePartition.c' || echo '$(srcdir)/'`parsePartition.c
+
+libpll_avx_a-parsePartition.obj: parsePartition.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_a_CFLAGS) $(CFLAGS) -MT libpll_avx_a-parsePartition.obj -MD -MP -MF $(DEPDIR)/libpll_avx_a-parsePartition.Tpo -c -o libpll_avx_a-parsePartition.obj `if test -f 'parsePartition.c'; then $(CYGPATH_W) 'parsePartition.c'; else $(CYGPATH_W) '$(srcdir)/parsePartition.c'; fi`
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_avx_a-parsePartition.Tpo $(DEPDIR)/libpll_avx_a-parsePartition.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='parsePartition.c' object='libpll_avx_a-parsePartition.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_a_CFLAGS) $(CFLAGS) -c -o libpll_avx_a-parsePartition.obj `if test -f 'parsePartition.c'; then $(CYGPATH_W) 'parsePartition.c'; else $(CYGPATH_W) '$(srcdir)/parsePartition.c'; fi`
+
+libpll_avx_a-parsimony.o: parsimony.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_a_CFLAGS) $(CFLAGS) -MT libpll_avx_a-parsimony.o -MD -MP -MF $(DEPDIR)/libpll_avx_a-parsimony.Tpo -c -o libpll_avx_a-parsimony.o `test -f 'parsimony.c' || echo '$(srcdir)/'`parsimony.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_avx_a-parsimony.Tpo $(DEPDIR)/libpll_avx_a-parsimony.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='parsimony.c' object='libpll_avx_a-parsimony.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_a_CFLAGS) $(CFLAGS) -c -o libpll_avx_a-parsimony.o `test -f 'parsimony.c' || echo '$(srcdir)/'`parsimony.c
+
+libpll_avx_a-parsimony.obj: parsimony.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_a_CFLAGS) $(CFLAGS) -MT libpll_avx_a-parsimony.obj -MD -MP -MF $(DEPDIR)/libpll_avx_a-parsimony.Tpo -c -o libpll_avx_a-parsimony.obj `if test -f 'parsimony.c'; then $(CYGPATH_W) 'parsimony.c'; else $(CYGPATH_W) '$(srcdir)/parsimony.c'; fi`
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_avx_a-parsimony.Tpo $(DEPDIR)/libpll_avx_a-parsimony.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='parsimony.c' object='libpll_avx_a-parsimony.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_a_CFLAGS) $(CFLAGS) -c -o libpll_avx_a-parsimony.obj `if test -f 'parsimony.c'; then $(CYGPATH_W) 'parsimony.c'; else $(CYGPATH_W) '$(srcdir)/parsimony.c'; fi`
+
+libpll_sse3_pthreads_a-genericParallelization.o: genericParallelization.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_pthreads_a_CFLAGS) $(CFLAGS) -MT libpll_sse3_pthreads_a-genericParallelization.o -MD -MP -MF $(DEPDIR)/libpll_sse3_pthreads_a-genericParallelization.Tpo -c -o libpll_sse3_pthreads_a-genericParallelization.o `test -f 'genericParallelization.c' || echo '$(srcdir)/'`genericParallelization.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_sse3_pthreads_a-genericParallelization.Tpo $(DEPDIR)/libpll_sse3_pthreads_a-genericParallelization.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='genericParallelization.c' object='libpll_sse3_pthreads_a-genericParallelization.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_pthreads_a_CFLAGS) $(CFLAGS) -c -o libpll_sse3_pthreads_a-genericParallelization.o `test -f 'genericParallelization.c' || echo '$(srcdir)/'`genericParallelization.c
+
+libpll_sse3_pthreads_a-genericParallelization.obj: genericParallelization.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_pthreads_a_CFLAGS) $(CFLAGS) -MT libpll_sse3_pthreads_a-genericParallelization.obj -MD -MP -MF $(DEPDIR)/libpll_sse3_pthreads_a-genericParallelization.Tpo -c -o libpll_sse3_pthreads_a-genericParallelization.obj `if test -f 'genericParallelization.c'; then $(CYGPATH_W) 'genericParallelization.c'; else $(CYGPATH_W) '$(srcdir)/genericParallelization.c'; fi`
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_sse3_pthreads_a-genericParallelization.Tpo $(DEPDIR)/libpll_sse3_pthreads_a-genericParallelization.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='genericParallelization.c' object='libpll_sse3_pthreads_a-genericParallelization.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_pthreads_a_CFLAGS) $(CFLAGS) -c -o libpll_sse3_pthreads_a-genericParallelization.obj `if test -f 'genericParallelization.c'; then $(CYGPATH_W) 'genericParallelization.c'; else $(CYGPATH_W) '$(srcdir)/genericParallelization.c'; fi`
+
+libpll_sse3_pthreads_a-hash.o: hash.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_pthreads_a_CFLAGS) $(CFLAGS) -MT libpll_sse3_pthreads_a-hash.o -MD -MP -MF $(DEPDIR)/libpll_sse3_pthreads_a-hash.Tpo -c -o libpll_sse3_pthreads_a-hash.o `test -f 'hash.c' || echo '$(srcdir)/'`hash.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_sse3_pthreads_a-hash.Tpo $(DEPDIR)/libpll_sse3_pthreads_a-hash.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='hash.c' object='libpll_sse3_pthreads_a-hash.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_pthreads_a_CFLAGS) $(CFLAGS) -c -o libpll_sse3_pthreads_a-hash.o `test -f 'hash.c' || echo '$(srcdir)/'`hash.c
+
+libpll_sse3_pthreads_a-hash.obj: hash.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_pthreads_a_CFLAGS) $(CFLAGS) -MT libpll_sse3_pthreads_a-hash.obj -MD -MP -MF $(DEPDIR)/libpll_sse3_pthreads_a-hash.Tpo -c -o libpll_sse3_pthreads_a-hash.obj `if test -f 'hash.c'; then $(CYGPATH_W) 'hash.c'; else $(CYGPATH_W) '$(srcdir)/hash.c'; fi`
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_sse3_pthreads_a-hash.Tpo $(DEPDIR)/libpll_sse3_pthreads_a-hash.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='hash.c' object='libpll_sse3_pthreads_a-hash.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_pthreads_a_CFLAGS) $(CFLAGS) -c -o libpll_sse3_pthreads_a-hash.obj `if test -f 'hash.c'; then $(CYGPATH_W) 'hash.c'; else $(CYGPATH_W) '$(srcdir)/hash.c'; fi`
+
+libpll_sse3_pthreads_a-stack.o: stack.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_pthreads_a_CFLAGS) $(CFLAGS) -MT libpll_sse3_pthreads_a-stack.o -MD -MP -MF $(DEPDIR)/libpll_sse3_pthreads_a-stack.Tpo -c -o libpll_sse3_pthreads_a-stack.o `test -f 'stack.c' || echo '$(srcdir)/'`stack.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_sse3_pthreads_a-stack.Tpo $(DEPDIR)/libpll_sse3_pthreads_a-stack.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='stack.c' object='libpll_sse3_pthreads_a-stack.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_pthreads_a_CFLAGS) $(CFLAGS) -c -o libpll_sse3_pthreads_a-stack.o `test -f 'stack.c' || echo '$(srcdir)/'`stack.c
+
+libpll_sse3_pthreads_a-stack.obj: stack.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_pthreads_a_CFLAGS) $(CFLAGS) -MT libpll_sse3_pthreads_a-stack.obj -MD -MP -MF $(DEPDIR)/libpll_sse3_pthreads_a-stack.Tpo -c -o libpll_sse3_pthreads_a-stack.obj `if test -f 'stack.c'; then $(CYGPATH_W) 'stack.c'; else $(CYGPATH_W) '$(srcdir)/stack.c'; fi`
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_sse3_pthreads_a-stack.Tpo $(DEPDIR)/libpll_sse3_pthreads_a-stack.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='stack.c' object='libpll_sse3_pthreads_a-stack.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_pthreads_a_CFLAGS) $(CFLAGS) -c -o libpll_sse3_pthreads_a-stack.obj `if test -f 'stack.c'; then $(CYGPATH_W) 'stack.c'; else $(CYGPATH_W) '$(srcdir)/stack.c'; fi`
+
+libpll_sse3_pthreads_a-ssort.o: ssort.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_pthreads_a_CFLAGS) $(CFLAGS) -MT libpll_sse3_pthreads_a-ssort.o -MD -MP -MF $(DEPDIR)/libpll_sse3_pthreads_a-ssort.Tpo -c -o libpll_sse3_pthreads_a-ssort.o `test -f 'ssort.c' || echo '$(srcdir)/'`ssort.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_sse3_pthreads_a-ssort.Tpo $(DEPDIR)/libpll_sse3_pthreads_a-ssort.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ssort.c' object='libpll_sse3_pthreads_a-ssort.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_pthreads_a_CFLAGS) $(CFLAGS) -c -o libpll_sse3_pthreads_a-ssort.o `test -f 'ssort.c' || echo '$(srcdir)/'`ssort.c
+
+libpll_sse3_pthreads_a-ssort.obj: ssort.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_pthreads_a_CFLAGS) $(CFLAGS) -MT libpll_sse3_pthreads_a-ssort.obj -MD -MP -MF $(DEPDIR)/libpll_sse3_pthreads_a-ssort.Tpo -c -o libpll_sse3_pthreads_a-ssort.obj `if test -f 'ssort.c'; then $(CYGPATH_W) 'ssort.c'; else $(CYGPATH_W) '$(srcdir)/ssort.c'; fi`
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_sse3_pthreads_a-ssort.Tpo $(DEPDIR)/libpll_sse3_pthreads_a-ssort.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ssort.c' object='libpll_sse3_pthreads_a-ssort.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_pthreads_a_CFLAGS) $(CFLAGS) -c -o libpll_sse3_pthreads_a-ssort.obj `if test -f 'ssort.c'; then $(CYGPATH_W) 'ssort.c'; else $(CYGPATH_W) '$(srcdir)/ssort.c'; fi`
+
+libpll_sse3_pthreads_a-queue.o: queue.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_pthreads_a_CFLAGS) $(CFLAGS) -MT libpll_sse3_pthreads_a-queue.o -MD -MP -MF $(DEPDIR)/libpll_sse3_pthreads_a-queue.Tpo -c -o libpll_sse3_pthreads_a-queue.o `test -f 'queue.c' || echo '$(srcdir)/'`queue.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_sse3_pthreads_a-queue.Tpo $(DEPDIR)/libpll_sse3_pthreads_a-queue.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='queue.c' object='libpll_sse3_pthreads_a-queue.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_pthreads_a_CFLAGS) $(CFLAGS) -c -o libpll_sse3_pthreads_a-queue.o `test -f 'queue.c' || echo '$(srcdir)/'`queue.c
+
+libpll_sse3_pthreads_a-queue.obj: queue.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_pthreads_a_CFLAGS) $(CFLAGS) -MT libpll_sse3_pthreads_a-queue.obj -MD -MP -MF $(DEPDIR)/libpll_sse3_pthreads_a-queue.Tpo -c -o libpll_sse3_pthreads_a-queue.obj `if test -f 'queue.c'; then $(CYGPATH_W) 'queue.c'; else $(CYGPATH_W) '$(srcdir)/queue.c'; fi`
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_sse3_pthreads_a-queue.Tpo $(DEPDIR)/libpll_sse3_pthreads_a-queue.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='queue.c' object='libpll_sse3_pthreads_a-queue.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_pthreads_a_CFLAGS) $(CFLAGS) -c -o libpll_sse3_pthreads_a-queue.obj `if test -f 'queue.c'; then $(CYGPATH_W) 'queue.c'; else $(CYGPATH_W) '$(srcdir)/queue.c'; fi`
+
+libpll_sse3_pthreads_a-utils.o: utils.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_pthreads_a_CFLAGS) $(CFLAGS) -MT libpll_sse3_pthreads_a-utils.o -MD -MP -MF $(DEPDIR)/libpll_sse3_pthreads_a-utils.Tpo -c -o libpll_sse3_pthreads_a-utils.o `test -f 'utils.c' || echo '$(srcdir)/'`utils.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_sse3_pthreads_a-utils.Tpo $(DEPDIR)/libpll_sse3_pthreads_a-utils.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='utils.c' object='libpll_sse3_pthreads_a-utils.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_pthreads_a_CFLAGS) $(CFLAGS) -c -o libpll_sse3_pthreads_a-utils.o `test -f 'utils.c' || echo '$(srcdir)/'`utils.c
+
+libpll_sse3_pthreads_a-utils.obj: utils.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_pthreads_a_CFLAGS) $(CFLAGS) -MT libpll_sse3_pthreads_a-utils.obj -MD -MP -MF $(DEPDIR)/libpll_sse3_pthreads_a-utils.Tpo -c -o libpll_sse3_pthreads_a-utils.obj `if test -f 'utils.c'; then $(CYGPATH_W) 'utils.c'; else $(CYGPATH_W) '$(srcdir)/utils.c'; fi`
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_sse3_pthreads_a-utils.Tpo $(DEPDIR)/libpll_sse3_pthreads_a-utils.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='utils.c' object='libpll_sse3_pthreads_a-utils.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_pthreads_a_CFLAGS) $(CFLAGS) -c -o libpll_sse3_pthreads_a-utils.obj `if test -f 'utils.c'; then $(CYGPATH_W) 'utils.c'; else $(CYGPATH_W) '$(srcdir)/utils.c'; fi`
+
+libpll_sse3_pthreads_a-randomTree.o: randomTree.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_pthreads_a_CFLAGS) $(CFLAGS) -MT libpll_sse3_pthreads_a-randomTree.o -MD -MP -MF $(DEPDIR)/libpll_sse3_pthreads_a-randomTree.Tpo -c -o libpll_sse3_pthreads_a-randomTree.o `test -f 'randomTree.c' || echo '$(srcdir)/'`randomTree.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_sse3_pthreads_a-randomTree.Tpo $(DEPDIR)/libpll_sse3_pthreads_a-randomTree.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='randomTree.c' object='libpll_sse3_pthreads_a-randomTree.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_pthreads_a_CFLAGS) $(CFLAGS) -c -o libpll_sse3_pthreads_a-randomTree.o `test -f 'randomTree.c' || echo '$(srcdir)/'`randomTree.c
+
+libpll_sse3_pthreads_a-randomTree.obj: randomTree.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_pthreads_a_CFLAGS) $(CFLAGS) -MT libpll_sse3_pthreads_a-randomTree.obj -MD -MP -MF $(DEPDIR)/libpll_sse3_pthreads_a-randomTree.Tpo -c -o libpll_sse3_pthreads_a-randomTree.obj `if test -f 'randomTree.c'; then $(CYGPATH_W) 'randomTree.c'; else $(CYGPATH_W) '$(srcdir)/randomTree.c'; fi`
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_sse3_pthreads_a-randomTree.Tpo $(DEPDIR)/libpll_sse3_pthreads_a-randomTree.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='randomTree.c' object='libpll_sse3_pthreads_a-randomTree.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_pthreads_a_CFLAGS) $(CFLAGS) -c -o libpll_sse3_pthreads_a-randomTree.obj `if test -f 'randomTree.c'; then $(CYGPATH_W) 'randomTree.c'; else $(CYGPATH_W) '$(srcdir)/randomTree.c'; fi`
+
+libpll_sse3_pthreads_a-optimizeModel.o: optimizeModel.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_pthreads_a_CFLAGS) $(CFLAGS) -MT libpll_sse3_pthreads_a-optimizeModel.o -MD -MP -MF $(DEPDIR)/libpll_sse3_pthreads_a-optimizeModel.Tpo -c -o libpll_sse3_pthreads_a-optimizeModel.o `test -f 'optimizeModel.c' || echo '$(srcdir)/'`optimizeModel.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_sse3_pthreads_a-optimizeModel.Tpo $(DEPDIR)/libpll_sse3_pthreads_a-optimizeModel.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='optimizeModel.c' object='libpll_sse3_pthreads_a-optimizeModel.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_pthreads_a_CFLAGS) $(CFLAGS) -c -o libpll_sse3_pthreads_a-optimizeModel.o `test -f 'optimizeModel.c' || echo '$(srcdir)/'`optimizeModel.c
+
+libpll_sse3_pthreads_a-optimizeModel.obj: optimizeModel.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_pthreads_a_CFLAGS) $(CFLAGS) -MT libpll_sse3_pthreads_a-optimizeModel.obj -MD -MP -MF $(DEPDIR)/libpll_sse3_pthreads_a-optimizeModel.Tpo -c -o libpll_sse3_pthreads_a-optimizeModel.obj `if test -f 'optimizeModel.c'; then $(CYGPATH_W) 'optimizeModel.c'; else $(CYGPATH_W) '$(srcdir)/optimizeModel.c'; fi`
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_sse3_pthreads_a-optimizeModel.Tpo $(DEPDIR)/libpll_sse3_pthreads_a-optimizeModel.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='optimizeModel.c' object='libpll_sse3_pthreads_a-optimizeModel.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_pthreads_a_CFLAGS) $(CFLAGS) -c -o libpll_sse3_pthreads_a-optimizeModel.obj `if test -f 'optimizeModel.c'; then $(CYGPATH_W) 'optimizeModel.c'; else $(CYGPATH_W) '$(srcdir)/optimizeModel.c'; fi`
+
+libpll_sse3_pthreads_a-trash.o: trash.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_pthreads_a_CFLAGS) $(CFLAGS) -MT libpll_sse3_pthreads_a-trash.o -MD -MP -MF $(DEPDIR)/libpll_sse3_pthreads_a-trash.Tpo -c -o libpll_sse3_pthreads_a-trash.o `test -f 'trash.c' || echo '$(srcdir)/'`trash.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_sse3_pthreads_a-trash.Tpo $(DEPDIR)/libpll_sse3_pthreads_a-trash.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='trash.c' object='libpll_sse3_pthreads_a-trash.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_pthreads_a_CFLAGS) $(CFLAGS) -c -o libpll_sse3_pthreads_a-trash.o `test -f 'trash.c' || echo '$(srcdir)/'`trash.c
+
+libpll_sse3_pthreads_a-trash.obj: trash.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_pthreads_a_CFLAGS) $(CFLAGS) -MT libpll_sse3_pthreads_a-trash.obj -MD -MP -MF $(DEPDIR)/libpll_sse3_pthreads_a-trash.Tpo -c -o libpll_sse3_pthreads_a-trash.obj `if test -f 'trash.c'; then $(CYGPATH_W) 'trash.c'; else $(CYGPATH_W) '$(srcdir)/trash.c'; fi`
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_sse3_pthreads_a-trash.Tpo $(DEPDIR)/libpll_sse3_pthreads_a-trash.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='trash.c' object='libpll_sse3_pthreads_a-trash.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_pthreads_a_CFLAGS) $(CFLAGS) -c -o libpll_sse3_pthreads_a-trash.obj `if test -f 'trash.c'; then $(CYGPATH_W) 'trash.c'; else $(CYGPATH_W) '$(srcdir)/trash.c'; fi`
+
+libpll_sse3_pthreads_a-searchAlgo.o: searchAlgo.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_pthreads_a_CFLAGS) $(CFLAGS) -MT libpll_sse3_pthreads_a-searchAlgo.o -MD -MP -MF $(DEPDIR)/libpll_sse3_pthreads_a-searchAlgo.Tpo -c -o libpll_sse3_pthreads_a-searchAlgo.o `test -f 'searchAlgo.c' || echo '$(srcdir)/'`searchAlgo.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_sse3_pthreads_a-searchAlgo.Tpo $(DEPDIR)/libpll_sse3_pthreads_a-searchAlgo.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='searchAlgo.c' object='libpll_sse3_pthreads_a-searchAlgo.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_pthreads_a_CFLAGS) $(CFLAGS) -c -o libpll_sse3_pthreads_a-searchAlgo.o `test -f 'searchAlgo.c' || echo '$(srcdir)/'`searchAlgo.c
+
+libpll_sse3_pthreads_a-searchAlgo.obj: searchAlgo.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_pthreads_a_CFLAGS) $(CFLAGS) -MT libpll_sse3_pthreads_a-searchAlgo.obj -MD -MP -MF $(DEPDIR)/libpll_sse3_pthreads_a-searchAlgo.Tpo -c -o libpll_sse3_pthreads_a-searchAlgo.obj `if test -f 'searchAlgo.c'; then $(CYGPATH_W) 'searchAlgo.c'; else $(CYGPATH_W) '$(srcdir)/searchAlgo.c'; fi`
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_sse3_pthreads_a-searchAlgo.Tpo $(DEPDIR)/libpll_sse3_pthreads_a-searchAlgo.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='searchAlgo.c' object='libpll_sse3_pthreads_a-searchAlgo.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_pthreads_a_CFLAGS) $(CFLAGS) -c -o libpll_sse3_pthreads_a-searchAlgo.obj `if test -f 'searchAlgo.c'; then $(CYGPATH_W) 'searchAlgo.c'; else $(CYGPATH_W) '$(srcdir)/searchAlgo.c'; fi`
+
+libpll_sse3_pthreads_a-topologies.o: topologies.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_pthreads_a_CFLAGS) $(CFLAGS) -MT libpll_sse3_pthreads_a-topologies.o -MD -MP -MF $(DEPDIR)/libpll_sse3_pthreads_a-topologies.Tpo -c -o libpll_sse3_pthreads_a-topologies.o `test -f 'topologies.c' || echo '$(srcdir)/'`topologies.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_sse3_pthreads_a-topologies.Tpo $(DEPDIR)/libpll_sse3_pthreads_a-topologies.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='topologies.c' object='libpll_sse3_pthreads_a-topologies.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_pthreads_a_CFLAGS) $(CFLAGS) -c -o libpll_sse3_pthreads_a-topologies.o `test -f 'topologies.c' || echo '$(srcdir)/'`topologies.c
+
+libpll_sse3_pthreads_a-topologies.obj: topologies.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_pthreads_a_CFLAGS) $(CFLAGS) -MT libpll_sse3_pthreads_a-topologies.obj -MD -MP -MF $(DEPDIR)/libpll_sse3_pthreads_a-topologies.Tpo -c -o libpll_sse3_pthreads_a-topologies.obj `if test -f 'topologies.c'; then $(CYGPATH_W) 'topologies.c'; else $(CYGPATH_W) '$(srcdir)/topologies.c'; fi`
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_sse3_pthreads_a-topologies.Tpo $(DEPDIR)/libpll_sse3_pthreads_a-topologies.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='topologies.c' object='libpll_sse3_pthreads_a-topologies.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_pthreads_a_CFLAGS) $(CFLAGS) -c -o libpll_sse3_pthreads_a-topologies.obj `if test -f 'topologies.c'; then $(CYGPATH_W) 'topologies.c'; else $(CYGPATH_W) '$(srcdir)/topologies.c'; fi`
+
+libpll_sse3_pthreads_a-fastDNAparsimony.o: fastDNAparsimony.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_pthreads_a_CFLAGS) $(CFLAGS) -MT libpll_sse3_pthreads_a-fastDNAparsimony.o -MD -MP -MF $(DEPDIR)/libpll_sse3_pthreads_a-fastDNAparsimony.Tpo -c -o libpll_sse3_pthreads_a-fastDNAparsimony.o `test -f 'fastDNAparsimony.c' || echo '$(srcdir)/'`fastDNAparsimony.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_sse3_pthreads_a-fastDNAparsimony.Tpo $(DEPDIR)/libpll_sse3_pthreads_a-fastDNAparsimony.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='fastDNAparsimony.c' object='libpll_sse3_pthreads_a-fastDNAparsimony.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_pthreads_a_CFLAGS) $(CFLAGS) -c -o libpll_sse3_pthreads_a-fastDNAparsimony.o `test -f 'fastDNAparsimony.c' || echo '$(srcdir)/'`fastDNAparsimony.c
+
+libpll_sse3_pthreads_a-fastDNAparsimony.obj: fastDNAparsimony.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_pthreads_a_CFLAGS) $(CFLAGS) -MT libpll_sse3_pthreads_a-fastDNAparsimony.obj -MD -MP -MF $(DEPDIR)/libpll_sse3_pthreads_a-fastDNAparsimony.Tpo -c -o libpll_sse3_pthreads_a-fastDNAparsimony.obj `if test -f 'fastDNAparsimony.c'; then $(CYGPATH_W) 'fastDNAparsimony.c'; else $(CYGPATH_W) '$(srcdir)/fastDNAparsimony.c'; fi`
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_sse3_pthreads_a-fastDNAparsimony.Tpo $(DEPDIR)/libpll_sse3_pthreads_a-fastDNAparsimony.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='fastDNAparsimony.c' object='libpll_sse3_pthreads_a-fastDNAparsimony.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_pthreads_a_CFLAGS) $(CFLAGS) -c -o libpll_sse3_pthreads_a-fastDNAparsimony.obj `if test -f 'fastDNAparsimony.c'; then $(CYGPATH_W) 'fastDNAparsimony.c'; else $(CYGPATH_W) '$(srcdir)/fastDNAparsimony.c'; fi`
+
+libpll_sse3_pthreads_a-treeIO.o: treeIO.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_pthreads_a_CFLAGS) $(CFLAGS) -MT libpll_sse3_pthreads_a-treeIO.o -MD -MP -MF $(DEPDIR)/libpll_sse3_pthreads_a-treeIO.Tpo -c -o libpll_sse3_pthreads_a-treeIO.o `test -f 'treeIO.c' || echo '$(srcdir)/'`treeIO.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_sse3_pthreads_a-treeIO.Tpo $(DEPDIR)/libpll_sse3_pthreads_a-treeIO.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='treeIO.c' object='libpll_sse3_pthreads_a-treeIO.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_pthreads_a_CFLAGS) $(CFLAGS) -c -o libpll_sse3_pthreads_a-treeIO.o `test -f 'treeIO.c' || echo '$(srcdir)/'`treeIO.c
+
+libpll_sse3_pthreads_a-treeIO.obj: treeIO.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_pthreads_a_CFLAGS) $(CFLAGS) -MT libpll_sse3_pthreads_a-treeIO.obj -MD -MP -MF $(DEPDIR)/libpll_sse3_pthreads_a-treeIO.Tpo -c -o libpll_sse3_pthreads_a-treeIO.obj `if test -f 'treeIO.c'; then $(CYGPATH_W) 'treeIO.c'; else $(CYGPATH_W) '$(srcdir)/treeIO.c'; fi`
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_sse3_pthreads_a-treeIO.Tpo $(DEPDIR)/libpll_sse3_pthreads_a-treeIO.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='treeIO.c' object='libpll_sse3_pthreads_a-treeIO.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_pthreads_a_CFLAGS) $(CFLAGS) -c -o libpll_sse3_pthreads_a-treeIO.obj `if test -f 'treeIO.c'; then $(CYGPATH_W) 'treeIO.c'; else $(CYGPATH_W) '$(srcdir)/treeIO.c'; fi`
+
+libpll_sse3_pthreads_a-models.o: models.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_pthreads_a_CFLAGS) $(CFLAGS) -MT libpll_sse3_pthreads_a-models.o -MD -MP -MF $(DEPDIR)/libpll_sse3_pthreads_a-models.Tpo -c -o libpll_sse3_pthreads_a-models.o `test -f 'models.c' || echo '$(srcdir)/'`models.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_sse3_pthreads_a-models.Tpo $(DEPDIR)/libpll_sse3_pthreads_a-models.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='models.c' object='libpll_sse3_pthreads_a-models.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_pthreads_a_CFLAGS) $(CFLAGS) -c -o libpll_sse3_pthreads_a-models.o `test -f 'models.c' || echo '$(srcdir)/'`models.c
+
+libpll_sse3_pthreads_a-models.obj: models.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_pthreads_a_CFLAGS) $(CFLAGS) -MT libpll_sse3_pthreads_a-models.obj -MD -MP -MF $(DEPDIR)/libpll_sse3_pthreads_a-models.Tpo -c -o libpll_sse3_pthreads_a-models.obj `if test -f 'models.c'; then $(CYGPATH_W) 'models.c'; else $(CYGPATH_W) '$(srcdir)/models.c'; fi`
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_sse3_pthreads_a-models.Tpo $(DEPDIR)/libpll_sse3_pthreads_a-models.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='models.c' object='libpll_sse3_pthreads_a-models.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_pthreads_a_CFLAGS) $(CFLAGS) -c -o libpll_sse3_pthreads_a-models.obj `if test -f 'models.c'; then $(CYGPATH_W) 'models.c'; else $(CYGPATH_W) '$(srcdir)/models.c'; fi`
+
+libpll_sse3_pthreads_a-evaluatePartialGenericSpecial.o: evaluatePartialGenericSpecial.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_pthreads_a_CFLAGS) $(CFLAGS) -MT libpll_sse3_pthreads_a-evaluatePartialGenericSpecial.o -MD -MP -MF $(DEPDIR)/libpll_sse3_pthreads_a-evaluatePartialGenericSpecial.Tpo -c -o libpll_sse3_pthreads_a-evaluatePartialGenericSpecial.o `test -f 'evaluatePartialGenericSpecial.c' || echo '$(srcdir)/'`evaluatePartialGenericSpecial.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_sse3_pthreads_a-evaluatePartialGenericSpecial.Tpo $(DEPDIR)/libpll_sse3_pthreads_a-evaluatePartialGenericSpecial.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='evaluatePartialGenericSpecial.c' object='libpll_sse3_pthreads_a-evaluatePartialGenericSpecial.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_pthreads_a_CFLAGS) $(CFLAGS) -c -o libpll_sse3_pthreads_a-evaluatePartialGenericSpecial.o `test -f 'evaluatePartialGenericSpecial.c' || echo '$(srcdir)/'`evaluatePartialGenericSpecial.c
+
+libpll_sse3_pthreads_a-evaluatePartialGenericSpecial.obj: evaluatePartialGenericSpecial.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_pthreads_a_CFLAGS) $(CFLAGS) -MT libpll_sse3_pthreads_a-evaluatePartialGenericSpecial.obj -MD -MP -MF $(DEPDIR)/libpll_sse3_pthreads_a-evaluatePartialGenericSpecial.Tpo -c -o libpll_sse3_pthreads_a-evaluatePartialGenericSpecial.obj `if test -f 'evaluatePartialGenericSpecial.c'; then $(CYGPATH_W) 'evaluatePartialGenericSpecial.c'; else $(CYGPATH_W) '$(srcdir)/evaluateParti [...]
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_sse3_pthreads_a-evaluatePartialGenericSpecial.Tpo $(DEPDIR)/libpll_sse3_pthreads_a-evaluatePartialGenericSpecial.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='evaluatePartialGenericSpecial.c' object='libpll_sse3_pthreads_a-evaluatePartialGenericSpecial.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_pthreads_a_CFLAGS) $(CFLAGS) -c -o libpll_sse3_pthreads_a-evaluatePartialGenericSpecial.obj `if test -f 'evaluatePartialGenericSpecial.c'; then $(CYGPATH_W) 'evaluatePartialGenericSpecial.c'; else $(CYGPATH_W) '$(srcdir)/evaluatePartialGenericSpecial.c'; fi`
+
+libpll_sse3_pthreads_a-evaluateGenericSpecial.o: evaluateGenericSpecial.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_pthreads_a_CFLAGS) $(CFLAGS) -MT libpll_sse3_pthreads_a-evaluateGenericSpecial.o -MD -MP -MF $(DEPDIR)/libpll_sse3_pthreads_a-evaluateGenericSpecial.Tpo -c -o libpll_sse3_pthreads_a-evaluateGenericSpecial.o `test -f 'evaluateGenericSpecial.c' || echo '$(srcdir)/'`evaluateGenericSpecial.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_sse3_pthreads_a-evaluateGenericSpecial.Tpo $(DEPDIR)/libpll_sse3_pthreads_a-evaluateGenericSpecial.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='evaluateGenericSpecial.c' object='libpll_sse3_pthreads_a-evaluateGenericSpecial.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_pthreads_a_CFLAGS) $(CFLAGS) -c -o libpll_sse3_pthreads_a-evaluateGenericSpecial.o `test -f 'evaluateGenericSpecial.c' || echo '$(srcdir)/'`evaluateGenericSpecial.c
+
+libpll_sse3_pthreads_a-evaluateGenericSpecial.obj: evaluateGenericSpecial.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_pthreads_a_CFLAGS) $(CFLAGS) -MT libpll_sse3_pthreads_a-evaluateGenericSpecial.obj -MD -MP -MF $(DEPDIR)/libpll_sse3_pthreads_a-evaluateGenericSpecial.Tpo -c -o libpll_sse3_pthreads_a-evaluateGenericSpecial.obj `if test -f 'evaluateGenericSpecial.c'; then $(CYGPATH_W) 'evaluateGenericSpecial.c'; else $(CYGPATH_W) '$(srcdir)/evaluateGenericSpecial.c'; fi`
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_sse3_pthreads_a-evaluateGenericSpecial.Tpo $(DEPDIR)/libpll_sse3_pthreads_a-evaluateGenericSpecial.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='evaluateGenericSpecial.c' object='libpll_sse3_pthreads_a-evaluateGenericSpecial.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_pthreads_a_CFLAGS) $(CFLAGS) -c -o libpll_sse3_pthreads_a-evaluateGenericSpecial.obj `if test -f 'evaluateGenericSpecial.c'; then $(CYGPATH_W) 'evaluateGenericSpecial.c'; else $(CYGPATH_W) '$(srcdir)/evaluateGenericSpecial.c'; fi`
+
+libpll_sse3_pthreads_a-newviewGenericSpecial.o: newviewGenericSpecial.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_pthreads_a_CFLAGS) $(CFLAGS) -MT libpll_sse3_pthreads_a-newviewGenericSpecial.o -MD -MP -MF $(DEPDIR)/libpll_sse3_pthreads_a-newviewGenericSpecial.Tpo -c -o libpll_sse3_pthreads_a-newviewGenericSpecial.o `test -f 'newviewGenericSpecial.c' || echo '$(srcdir)/'`newviewGenericSpecial.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_sse3_pthreads_a-newviewGenericSpecial.Tpo $(DEPDIR)/libpll_sse3_pthreads_a-newviewGenericSpecial.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='newviewGenericSpecial.c' object='libpll_sse3_pthreads_a-newviewGenericSpecial.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_pthreads_a_CFLAGS) $(CFLAGS) -c -o libpll_sse3_pthreads_a-newviewGenericSpecial.o `test -f 'newviewGenericSpecial.c' || echo '$(srcdir)/'`newviewGenericSpecial.c
+
+libpll_sse3_pthreads_a-newviewGenericSpecial.obj: newviewGenericSpecial.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_pthreads_a_CFLAGS) $(CFLAGS) -MT libpll_sse3_pthreads_a-newviewGenericSpecial.obj -MD -MP -MF $(DEPDIR)/libpll_sse3_pthreads_a-newviewGenericSpecial.Tpo -c -o libpll_sse3_pthreads_a-newviewGenericSpecial.obj `if test -f 'newviewGenericSpecial.c'; then $(CYGPATH_W) 'newviewGenericSpecial.c'; else $(CYGPATH_W) '$(srcdir)/newviewGenericSpecial.c'; fi`
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_sse3_pthreads_a-newviewGenericSpecial.Tpo $(DEPDIR)/libpll_sse3_pthreads_a-newviewGenericSpecial.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='newviewGenericSpecial.c' object='libpll_sse3_pthreads_a-newviewGenericSpecial.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_pthreads_a_CFLAGS) $(CFLAGS) -c -o libpll_sse3_pthreads_a-newviewGenericSpecial.obj `if test -f 'newviewGenericSpecial.c'; then $(CYGPATH_W) 'newviewGenericSpecial.c'; else $(CYGPATH_W) '$(srcdir)/newviewGenericSpecial.c'; fi`
+
+libpll_sse3_pthreads_a-makenewzGenericSpecial.o: makenewzGenericSpecial.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_pthreads_a_CFLAGS) $(CFLAGS) -MT libpll_sse3_pthreads_a-makenewzGenericSpecial.o -MD -MP -MF $(DEPDIR)/libpll_sse3_pthreads_a-makenewzGenericSpecial.Tpo -c -o libpll_sse3_pthreads_a-makenewzGenericSpecial.o `test -f 'makenewzGenericSpecial.c' || echo '$(srcdir)/'`makenewzGenericSpecial.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_sse3_pthreads_a-makenewzGenericSpecial.Tpo $(DEPDIR)/libpll_sse3_pthreads_a-makenewzGenericSpecial.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='makenewzGenericSpecial.c' object='libpll_sse3_pthreads_a-makenewzGenericSpecial.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_pthreads_a_CFLAGS) $(CFLAGS) -c -o libpll_sse3_pthreads_a-makenewzGenericSpecial.o `test -f 'makenewzGenericSpecial.c' || echo '$(srcdir)/'`makenewzGenericSpecial.c
+
+libpll_sse3_pthreads_a-makenewzGenericSpecial.obj: makenewzGenericSpecial.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_pthreads_a_CFLAGS) $(CFLAGS) -MT libpll_sse3_pthreads_a-makenewzGenericSpecial.obj -MD -MP -MF $(DEPDIR)/libpll_sse3_pthreads_a-makenewzGenericSpecial.Tpo -c -o libpll_sse3_pthreads_a-makenewzGenericSpecial.obj `if test -f 'makenewzGenericSpecial.c'; then $(CYGPATH_W) 'makenewzGenericSpecial.c'; else $(CYGPATH_W) '$(srcdir)/makenewzGenericSpecial.c'; fi`
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_sse3_pthreads_a-makenewzGenericSpecial.Tpo $(DEPDIR)/libpll_sse3_pthreads_a-makenewzGenericSpecial.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='makenewzGenericSpecial.c' object='libpll_sse3_pthreads_a-makenewzGenericSpecial.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_pthreads_a_CFLAGS) $(CFLAGS) -c -o libpll_sse3_pthreads_a-makenewzGenericSpecial.obj `if test -f 'makenewzGenericSpecial.c'; then $(CYGPATH_W) 'makenewzGenericSpecial.c'; else $(CYGPATH_W) '$(srcdir)/makenewzGenericSpecial.c'; fi`
+
+libpll_sse3_pthreads_a-bipartitionList.o: bipartitionList.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_pthreads_a_CFLAGS) $(CFLAGS) -MT libpll_sse3_pthreads_a-bipartitionList.o -MD -MP -MF $(DEPDIR)/libpll_sse3_pthreads_a-bipartitionList.Tpo -c -o libpll_sse3_pthreads_a-bipartitionList.o `test -f 'bipartitionList.c' || echo '$(srcdir)/'`bipartitionList.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_sse3_pthreads_a-bipartitionList.Tpo $(DEPDIR)/libpll_sse3_pthreads_a-bipartitionList.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='bipartitionList.c' object='libpll_sse3_pthreads_a-bipartitionList.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_pthreads_a_CFLAGS) $(CFLAGS) -c -o libpll_sse3_pthreads_a-bipartitionList.o `test -f 'bipartitionList.c' || echo '$(srcdir)/'`bipartitionList.c
+
+libpll_sse3_pthreads_a-bipartitionList.obj: bipartitionList.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_pthreads_a_CFLAGS) $(CFLAGS) -MT libpll_sse3_pthreads_a-bipartitionList.obj -MD -MP -MF $(DEPDIR)/libpll_sse3_pthreads_a-bipartitionList.Tpo -c -o libpll_sse3_pthreads_a-bipartitionList.obj `if test -f 'bipartitionList.c'; then $(CYGPATH_W) 'bipartitionList.c'; else $(CYGPATH_W) '$(srcdir)/bipartitionList.c'; fi`
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_sse3_pthreads_a-bipartitionList.Tpo $(DEPDIR)/libpll_sse3_pthreads_a-bipartitionList.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='bipartitionList.c' object='libpll_sse3_pthreads_a-bipartitionList.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_pthreads_a_CFLAGS) $(CFLAGS) -c -o libpll_sse3_pthreads_a-bipartitionList.obj `if test -f 'bipartitionList.c'; then $(CYGPATH_W) 'bipartitionList.c'; else $(CYGPATH_W) '$(srcdir)/bipartitionList.c'; fi`
+
+libpll_sse3_pthreads_a-restartHashTable.o: restartHashTable.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_pthreads_a_CFLAGS) $(CFLAGS) -MT libpll_sse3_pthreads_a-restartHashTable.o -MD -MP -MF $(DEPDIR)/libpll_sse3_pthreads_a-restartHashTable.Tpo -c -o libpll_sse3_pthreads_a-restartHashTable.o `test -f 'restartHashTable.c' || echo '$(srcdir)/'`restartHashTable.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_sse3_pthreads_a-restartHashTable.Tpo $(DEPDIR)/libpll_sse3_pthreads_a-restartHashTable.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='restartHashTable.c' object='libpll_sse3_pthreads_a-restartHashTable.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_pthreads_a_CFLAGS) $(CFLAGS) -c -o libpll_sse3_pthreads_a-restartHashTable.o `test -f 'restartHashTable.c' || echo '$(srcdir)/'`restartHashTable.c
+
+libpll_sse3_pthreads_a-restartHashTable.obj: restartHashTable.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_pthreads_a_CFLAGS) $(CFLAGS) -MT libpll_sse3_pthreads_a-restartHashTable.obj -MD -MP -MF $(DEPDIR)/libpll_sse3_pthreads_a-restartHashTable.Tpo -c -o libpll_sse3_pthreads_a-restartHashTable.obj `if test -f 'restartHashTable.c'; then $(CYGPATH_W) 'restartHashTable.c'; else $(CYGPATH_W) '$(srcdir)/restartHashTable.c'; fi`
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_sse3_pthreads_a-restartHashTable.Tpo $(DEPDIR)/libpll_sse3_pthreads_a-restartHashTable.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='restartHashTable.c' object='libpll_sse3_pthreads_a-restartHashTable.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_pthreads_a_CFLAGS) $(CFLAGS) -c -o libpll_sse3_pthreads_a-restartHashTable.obj `if test -f 'restartHashTable.c'; then $(CYGPATH_W) 'restartHashTable.c'; else $(CYGPATH_W) '$(srcdir)/restartHashTable.c'; fi`
+
+libpll_sse3_pthreads_a-recom.o: recom.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_pthreads_a_CFLAGS) $(CFLAGS) -MT libpll_sse3_pthreads_a-recom.o -MD -MP -MF $(DEPDIR)/libpll_sse3_pthreads_a-recom.Tpo -c -o libpll_sse3_pthreads_a-recom.o `test -f 'recom.c' || echo '$(srcdir)/'`recom.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_sse3_pthreads_a-recom.Tpo $(DEPDIR)/libpll_sse3_pthreads_a-recom.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='recom.c' object='libpll_sse3_pthreads_a-recom.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_pthreads_a_CFLAGS) $(CFLAGS) -c -o libpll_sse3_pthreads_a-recom.o `test -f 'recom.c' || echo '$(srcdir)/'`recom.c
+
+libpll_sse3_pthreads_a-recom.obj: recom.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_pthreads_a_CFLAGS) $(CFLAGS) -MT libpll_sse3_pthreads_a-recom.obj -MD -MP -MF $(DEPDIR)/libpll_sse3_pthreads_a-recom.Tpo -c -o libpll_sse3_pthreads_a-recom.obj `if test -f 'recom.c'; then $(CYGPATH_W) 'recom.c'; else $(CYGPATH_W) '$(srcdir)/recom.c'; fi`
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_sse3_pthreads_a-recom.Tpo $(DEPDIR)/libpll_sse3_pthreads_a-recom.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='recom.c' object='libpll_sse3_pthreads_a-recom.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_pthreads_a_CFLAGS) $(CFLAGS) -c -o libpll_sse3_pthreads_a-recom.obj `if test -f 'recom.c'; then $(CYGPATH_W) 'recom.c'; else $(CYGPATH_W) '$(srcdir)/recom.c'; fi`
+
+libpll_sse3_pthreads_a-lexer.o: lexer.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_pthreads_a_CFLAGS) $(CFLAGS) -MT libpll_sse3_pthreads_a-lexer.o -MD -MP -MF $(DEPDIR)/libpll_sse3_pthreads_a-lexer.Tpo -c -o libpll_sse3_pthreads_a-lexer.o `test -f 'lexer.c' || echo '$(srcdir)/'`lexer.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_sse3_pthreads_a-lexer.Tpo $(DEPDIR)/libpll_sse3_pthreads_a-lexer.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='lexer.c' object='libpll_sse3_pthreads_a-lexer.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_pthreads_a_CFLAGS) $(CFLAGS) -c -o libpll_sse3_pthreads_a-lexer.o `test -f 'lexer.c' || echo '$(srcdir)/'`lexer.c
+
+libpll_sse3_pthreads_a-lexer.obj: lexer.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_pthreads_a_CFLAGS) $(CFLAGS) -MT libpll_sse3_pthreads_a-lexer.obj -MD -MP -MF $(DEPDIR)/libpll_sse3_pthreads_a-lexer.Tpo -c -o libpll_sse3_pthreads_a-lexer.obj `if test -f 'lexer.c'; then $(CYGPATH_W) 'lexer.c'; else $(CYGPATH_W) '$(srcdir)/lexer.c'; fi`
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_sse3_pthreads_a-lexer.Tpo $(DEPDIR)/libpll_sse3_pthreads_a-lexer.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='lexer.c' object='libpll_sse3_pthreads_a-lexer.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_pthreads_a_CFLAGS) $(CFLAGS) -c -o libpll_sse3_pthreads_a-lexer.obj `if test -f 'lexer.c'; then $(CYGPATH_W) 'lexer.c'; else $(CYGPATH_W) '$(srcdir)/lexer.c'; fi`
+
+libpll_sse3_pthreads_a-alignment.o: alignment.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_pthreads_a_CFLAGS) $(CFLAGS) -MT libpll_sse3_pthreads_a-alignment.o -MD -MP -MF $(DEPDIR)/libpll_sse3_pthreads_a-alignment.Tpo -c -o libpll_sse3_pthreads_a-alignment.o `test -f 'alignment.c' || echo '$(srcdir)/'`alignment.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_sse3_pthreads_a-alignment.Tpo $(DEPDIR)/libpll_sse3_pthreads_a-alignment.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='alignment.c' object='libpll_sse3_pthreads_a-alignment.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_pthreads_a_CFLAGS) $(CFLAGS) -c -o libpll_sse3_pthreads_a-alignment.o `test -f 'alignment.c' || echo '$(srcdir)/'`alignment.c
+
+libpll_sse3_pthreads_a-alignment.obj: alignment.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_pthreads_a_CFLAGS) $(CFLAGS) -MT libpll_sse3_pthreads_a-alignment.obj -MD -MP -MF $(DEPDIR)/libpll_sse3_pthreads_a-alignment.Tpo -c -o libpll_sse3_pthreads_a-alignment.obj `if test -f 'alignment.c'; then $(CYGPATH_W) 'alignment.c'; else $(CYGPATH_W) '$(srcdir)/alignment.c'; fi`
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_sse3_pthreads_a-alignment.Tpo $(DEPDIR)/libpll_sse3_pthreads_a-alignment.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='alignment.c' object='libpll_sse3_pthreads_a-alignment.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_pthreads_a_CFLAGS) $(CFLAGS) -c -o libpll_sse3_pthreads_a-alignment.obj `if test -f 'alignment.c'; then $(CYGPATH_W) 'alignment.c'; else $(CYGPATH_W) '$(srcdir)/alignment.c'; fi`
+
+libpll_sse3_pthreads_a-newick.o: newick.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_pthreads_a_CFLAGS) $(CFLAGS) -MT libpll_sse3_pthreads_a-newick.o -MD -MP -MF $(DEPDIR)/libpll_sse3_pthreads_a-newick.Tpo -c -o libpll_sse3_pthreads_a-newick.o `test -f 'newick.c' || echo '$(srcdir)/'`newick.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_sse3_pthreads_a-newick.Tpo $(DEPDIR)/libpll_sse3_pthreads_a-newick.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='newick.c' object='libpll_sse3_pthreads_a-newick.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_pthreads_a_CFLAGS) $(CFLAGS) -c -o libpll_sse3_pthreads_a-newick.o `test -f 'newick.c' || echo '$(srcdir)/'`newick.c
+
+libpll_sse3_pthreads_a-newick.obj: newick.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_pthreads_a_CFLAGS) $(CFLAGS) -MT libpll_sse3_pthreads_a-newick.obj -MD -MP -MF $(DEPDIR)/libpll_sse3_pthreads_a-newick.Tpo -c -o libpll_sse3_pthreads_a-newick.obj `if test -f 'newick.c'; then $(CYGPATH_W) 'newick.c'; else $(CYGPATH_W) '$(srcdir)/newick.c'; fi`
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_sse3_pthreads_a-newick.Tpo $(DEPDIR)/libpll_sse3_pthreads_a-newick.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='newick.c' object='libpll_sse3_pthreads_a-newick.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_pthreads_a_CFLAGS) $(CFLAGS) -c -o libpll_sse3_pthreads_a-newick.obj `if test -f 'newick.c'; then $(CYGPATH_W) 'newick.c'; else $(CYGPATH_W) '$(srcdir)/newick.c'; fi`
+
+libpll_sse3_pthreads_a-parsePartition.o: parsePartition.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_pthreads_a_CFLAGS) $(CFLAGS) -MT libpll_sse3_pthreads_a-parsePartition.o -MD -MP -MF $(DEPDIR)/libpll_sse3_pthreads_a-parsePartition.Tpo -c -o libpll_sse3_pthreads_a-parsePartition.o `test -f 'parsePartition.c' || echo '$(srcdir)/'`parsePartition.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_sse3_pthreads_a-parsePartition.Tpo $(DEPDIR)/libpll_sse3_pthreads_a-parsePartition.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='parsePartition.c' object='libpll_sse3_pthreads_a-parsePartition.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_pthreads_a_CFLAGS) $(CFLAGS) -c -o libpll_sse3_pthreads_a-parsePartition.o `test -f 'parsePartition.c' || echo '$(srcdir)/'`parsePartition.c
+
+libpll_sse3_pthreads_a-parsePartition.obj: parsePartition.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_pthreads_a_CFLAGS) $(CFLAGS) -MT libpll_sse3_pthreads_a-parsePartition.obj -MD -MP -MF $(DEPDIR)/libpll_sse3_pthreads_a-parsePartition.Tpo -c -o libpll_sse3_pthreads_a-parsePartition.obj `if test -f 'parsePartition.c'; then $(CYGPATH_W) 'parsePartition.c'; else $(CYGPATH_W) '$(srcdir)/parsePartition.c'; fi`
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_sse3_pthreads_a-parsePartition.Tpo $(DEPDIR)/libpll_sse3_pthreads_a-parsePartition.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='parsePartition.c' object='libpll_sse3_pthreads_a-parsePartition.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_pthreads_a_CFLAGS) $(CFLAGS) -c -o libpll_sse3_pthreads_a-parsePartition.obj `if test -f 'parsePartition.c'; then $(CYGPATH_W) 'parsePartition.c'; else $(CYGPATH_W) '$(srcdir)/parsePartition.c'; fi`
+
+libpll_sse3_pthreads_a-parsimony.o: parsimony.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_pthreads_a_CFLAGS) $(CFLAGS) -MT libpll_sse3_pthreads_a-parsimony.o -MD -MP -MF $(DEPDIR)/libpll_sse3_pthreads_a-parsimony.Tpo -c -o libpll_sse3_pthreads_a-parsimony.o `test -f 'parsimony.c' || echo '$(srcdir)/'`parsimony.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_sse3_pthreads_a-parsimony.Tpo $(DEPDIR)/libpll_sse3_pthreads_a-parsimony.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='parsimony.c' object='libpll_sse3_pthreads_a-parsimony.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_pthreads_a_CFLAGS) $(CFLAGS) -c -o libpll_sse3_pthreads_a-parsimony.o `test -f 'parsimony.c' || echo '$(srcdir)/'`parsimony.c
+
+libpll_sse3_pthreads_a-parsimony.obj: parsimony.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_pthreads_a_CFLAGS) $(CFLAGS) -MT libpll_sse3_pthreads_a-parsimony.obj -MD -MP -MF $(DEPDIR)/libpll_sse3_pthreads_a-parsimony.Tpo -c -o libpll_sse3_pthreads_a-parsimony.obj `if test -f 'parsimony.c'; then $(CYGPATH_W) 'parsimony.c'; else $(CYGPATH_W) '$(srcdir)/parsimony.c'; fi`
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_sse3_pthreads_a-parsimony.Tpo $(DEPDIR)/libpll_sse3_pthreads_a-parsimony.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='parsimony.c' object='libpll_sse3_pthreads_a-parsimony.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_pthreads_a_CFLAGS) $(CFLAGS) -c -o libpll_sse3_pthreads_a-parsimony.obj `if test -f 'parsimony.c'; then $(CYGPATH_W) 'parsimony.c'; else $(CYGPATH_W) '$(srcdir)/parsimony.c'; fi`
+
+libpll_sse3_a-hash.o: hash.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_a_CFLAGS) $(CFLAGS) -MT libpll_sse3_a-hash.o -MD -MP -MF $(DEPDIR)/libpll_sse3_a-hash.Tpo -c -o libpll_sse3_a-hash.o `test -f 'hash.c' || echo '$(srcdir)/'`hash.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_sse3_a-hash.Tpo $(DEPDIR)/libpll_sse3_a-hash.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='hash.c' object='libpll_sse3_a-hash.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_a_CFLAGS) $(CFLAGS) -c -o libpll_sse3_a-hash.o `test -f 'hash.c' || echo '$(srcdir)/'`hash.c
+
+libpll_sse3_a-hash.obj: hash.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_a_CFLAGS) $(CFLAGS) -MT libpll_sse3_a-hash.obj -MD -MP -MF $(DEPDIR)/libpll_sse3_a-hash.Tpo -c -o libpll_sse3_a-hash.obj `if test -f 'hash.c'; then $(CYGPATH_W) 'hash.c'; else $(CYGPATH_W) '$(srcdir)/hash.c'; fi`
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_sse3_a-hash.Tpo $(DEPDIR)/libpll_sse3_a-hash.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='hash.c' object='libpll_sse3_a-hash.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_a_CFLAGS) $(CFLAGS) -c -o libpll_sse3_a-hash.obj `if test -f 'hash.c'; then $(CYGPATH_W) 'hash.c'; else $(CYGPATH_W) '$(srcdir)/hash.c'; fi`
+
+libpll_sse3_a-stack.o: stack.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_a_CFLAGS) $(CFLAGS) -MT libpll_sse3_a-stack.o -MD -MP -MF $(DEPDIR)/libpll_sse3_a-stack.Tpo -c -o libpll_sse3_a-stack.o `test -f 'stack.c' || echo '$(srcdir)/'`stack.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_sse3_a-stack.Tpo $(DEPDIR)/libpll_sse3_a-stack.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='stack.c' object='libpll_sse3_a-stack.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_a_CFLAGS) $(CFLAGS) -c -o libpll_sse3_a-stack.o `test -f 'stack.c' || echo '$(srcdir)/'`stack.c
+
+libpll_sse3_a-stack.obj: stack.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_a_CFLAGS) $(CFLAGS) -MT libpll_sse3_a-stack.obj -MD -MP -MF $(DEPDIR)/libpll_sse3_a-stack.Tpo -c -o libpll_sse3_a-stack.obj `if test -f 'stack.c'; then $(CYGPATH_W) 'stack.c'; else $(CYGPATH_W) '$(srcdir)/stack.c'; fi`
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_sse3_a-stack.Tpo $(DEPDIR)/libpll_sse3_a-stack.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='stack.c' object='libpll_sse3_a-stack.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_a_CFLAGS) $(CFLAGS) -c -o libpll_sse3_a-stack.obj `if test -f 'stack.c'; then $(CYGPATH_W) 'stack.c'; else $(CYGPATH_W) '$(srcdir)/stack.c'; fi`
+
+libpll_sse3_a-ssort.o: ssort.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_a_CFLAGS) $(CFLAGS) -MT libpll_sse3_a-ssort.o -MD -MP -MF $(DEPDIR)/libpll_sse3_a-ssort.Tpo -c -o libpll_sse3_a-ssort.o `test -f 'ssort.c' || echo '$(srcdir)/'`ssort.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_sse3_a-ssort.Tpo $(DEPDIR)/libpll_sse3_a-ssort.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ssort.c' object='libpll_sse3_a-ssort.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_a_CFLAGS) $(CFLAGS) -c -o libpll_sse3_a-ssort.o `test -f 'ssort.c' || echo '$(srcdir)/'`ssort.c
+
+libpll_sse3_a-ssort.obj: ssort.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_a_CFLAGS) $(CFLAGS) -MT libpll_sse3_a-ssort.obj -MD -MP -MF $(DEPDIR)/libpll_sse3_a-ssort.Tpo -c -o libpll_sse3_a-ssort.obj `if test -f 'ssort.c'; then $(CYGPATH_W) 'ssort.c'; else $(CYGPATH_W) '$(srcdir)/ssort.c'; fi`
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_sse3_a-ssort.Tpo $(DEPDIR)/libpll_sse3_a-ssort.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ssort.c' object='libpll_sse3_a-ssort.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_a_CFLAGS) $(CFLAGS) -c -o libpll_sse3_a-ssort.obj `if test -f 'ssort.c'; then $(CYGPATH_W) 'ssort.c'; else $(CYGPATH_W) '$(srcdir)/ssort.c'; fi`
+
+libpll_sse3_a-queue.o: queue.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_a_CFLAGS) $(CFLAGS) -MT libpll_sse3_a-queue.o -MD -MP -MF $(DEPDIR)/libpll_sse3_a-queue.Tpo -c -o libpll_sse3_a-queue.o `test -f 'queue.c' || echo '$(srcdir)/'`queue.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_sse3_a-queue.Tpo $(DEPDIR)/libpll_sse3_a-queue.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='queue.c' object='libpll_sse3_a-queue.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_a_CFLAGS) $(CFLAGS) -c -o libpll_sse3_a-queue.o `test -f 'queue.c' || echo '$(srcdir)/'`queue.c
+
+libpll_sse3_a-queue.obj: queue.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_a_CFLAGS) $(CFLAGS) -MT libpll_sse3_a-queue.obj -MD -MP -MF $(DEPDIR)/libpll_sse3_a-queue.Tpo -c -o libpll_sse3_a-queue.obj `if test -f 'queue.c'; then $(CYGPATH_W) 'queue.c'; else $(CYGPATH_W) '$(srcdir)/queue.c'; fi`
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_sse3_a-queue.Tpo $(DEPDIR)/libpll_sse3_a-queue.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='queue.c' object='libpll_sse3_a-queue.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_a_CFLAGS) $(CFLAGS) -c -o libpll_sse3_a-queue.obj `if test -f 'queue.c'; then $(CYGPATH_W) 'queue.c'; else $(CYGPATH_W) '$(srcdir)/queue.c'; fi`
+
+libpll_sse3_a-utils.o: utils.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_a_CFLAGS) $(CFLAGS) -MT libpll_sse3_a-utils.o -MD -MP -MF $(DEPDIR)/libpll_sse3_a-utils.Tpo -c -o libpll_sse3_a-utils.o `test -f 'utils.c' || echo '$(srcdir)/'`utils.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_sse3_a-utils.Tpo $(DEPDIR)/libpll_sse3_a-utils.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='utils.c' object='libpll_sse3_a-utils.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_a_CFLAGS) $(CFLAGS) -c -o libpll_sse3_a-utils.o `test -f 'utils.c' || echo '$(srcdir)/'`utils.c
+
+libpll_sse3_a-utils.obj: utils.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_a_CFLAGS) $(CFLAGS) -MT libpll_sse3_a-utils.obj -MD -MP -MF $(DEPDIR)/libpll_sse3_a-utils.Tpo -c -o libpll_sse3_a-utils.obj `if test -f 'utils.c'; then $(CYGPATH_W) 'utils.c'; else $(CYGPATH_W) '$(srcdir)/utils.c'; fi`
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_sse3_a-utils.Tpo $(DEPDIR)/libpll_sse3_a-utils.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='utils.c' object='libpll_sse3_a-utils.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_a_CFLAGS) $(CFLAGS) -c -o libpll_sse3_a-utils.obj `if test -f 'utils.c'; then $(CYGPATH_W) 'utils.c'; else $(CYGPATH_W) '$(srcdir)/utils.c'; fi`
+
+libpll_sse3_a-randomTree.o: randomTree.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_a_CFLAGS) $(CFLAGS) -MT libpll_sse3_a-randomTree.o -MD -MP -MF $(DEPDIR)/libpll_sse3_a-randomTree.Tpo -c -o libpll_sse3_a-randomTree.o `test -f 'randomTree.c' || echo '$(srcdir)/'`randomTree.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_sse3_a-randomTree.Tpo $(DEPDIR)/libpll_sse3_a-randomTree.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='randomTree.c' object='libpll_sse3_a-randomTree.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_a_CFLAGS) $(CFLAGS) -c -o libpll_sse3_a-randomTree.o `test -f 'randomTree.c' || echo '$(srcdir)/'`randomTree.c
+
+libpll_sse3_a-randomTree.obj: randomTree.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_a_CFLAGS) $(CFLAGS) -MT libpll_sse3_a-randomTree.obj -MD -MP -MF $(DEPDIR)/libpll_sse3_a-randomTree.Tpo -c -o libpll_sse3_a-randomTree.obj `if test -f 'randomTree.c'; then $(CYGPATH_W) 'randomTree.c'; else $(CYGPATH_W) '$(srcdir)/randomTree.c'; fi`
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_sse3_a-randomTree.Tpo $(DEPDIR)/libpll_sse3_a-randomTree.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='randomTree.c' object='libpll_sse3_a-randomTree.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_a_CFLAGS) $(CFLAGS) -c -o libpll_sse3_a-randomTree.obj `if test -f 'randomTree.c'; then $(CYGPATH_W) 'randomTree.c'; else $(CYGPATH_W) '$(srcdir)/randomTree.c'; fi`
+
+libpll_sse3_a-optimizeModel.o: optimizeModel.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_a_CFLAGS) $(CFLAGS) -MT libpll_sse3_a-optimizeModel.o -MD -MP -MF $(DEPDIR)/libpll_sse3_a-optimizeModel.Tpo -c -o libpll_sse3_a-optimizeModel.o `test -f 'optimizeModel.c' || echo '$(srcdir)/'`optimizeModel.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_sse3_a-optimizeModel.Tpo $(DEPDIR)/libpll_sse3_a-optimizeModel.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='optimizeModel.c' object='libpll_sse3_a-optimizeModel.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_a_CFLAGS) $(CFLAGS) -c -o libpll_sse3_a-optimizeModel.o `test -f 'optimizeModel.c' || echo '$(srcdir)/'`optimizeModel.c
+
+libpll_sse3_a-optimizeModel.obj: optimizeModel.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_a_CFLAGS) $(CFLAGS) -MT libpll_sse3_a-optimizeModel.obj -MD -MP -MF $(DEPDIR)/libpll_sse3_a-optimizeModel.Tpo -c -o libpll_sse3_a-optimizeModel.obj `if test -f 'optimizeModel.c'; then $(CYGPATH_W) 'optimizeModel.c'; else $(CYGPATH_W) '$(srcdir)/optimizeModel.c'; fi`
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_sse3_a-optimizeModel.Tpo $(DEPDIR)/libpll_sse3_a-optimizeModel.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='optimizeModel.c' object='libpll_sse3_a-optimizeModel.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_a_CFLAGS) $(CFLAGS) -c -o libpll_sse3_a-optimizeModel.obj `if test -f 'optimizeModel.c'; then $(CYGPATH_W) 'optimizeModel.c'; else $(CYGPATH_W) '$(srcdir)/optimizeModel.c'; fi`
+
+libpll_sse3_a-trash.o: trash.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_a_CFLAGS) $(CFLAGS) -MT libpll_sse3_a-trash.o -MD -MP -MF $(DEPDIR)/libpll_sse3_a-trash.Tpo -c -o libpll_sse3_a-trash.o `test -f 'trash.c' || echo '$(srcdir)/'`trash.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_sse3_a-trash.Tpo $(DEPDIR)/libpll_sse3_a-trash.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='trash.c' object='libpll_sse3_a-trash.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_a_CFLAGS) $(CFLAGS) -c -o libpll_sse3_a-trash.o `test -f 'trash.c' || echo '$(srcdir)/'`trash.c
+
+libpll_sse3_a-trash.obj: trash.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_a_CFLAGS) $(CFLAGS) -MT libpll_sse3_a-trash.obj -MD -MP -MF $(DEPDIR)/libpll_sse3_a-trash.Tpo -c -o libpll_sse3_a-trash.obj `if test -f 'trash.c'; then $(CYGPATH_W) 'trash.c'; else $(CYGPATH_W) '$(srcdir)/trash.c'; fi`
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_sse3_a-trash.Tpo $(DEPDIR)/libpll_sse3_a-trash.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='trash.c' object='libpll_sse3_a-trash.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_a_CFLAGS) $(CFLAGS) -c -o libpll_sse3_a-trash.obj `if test -f 'trash.c'; then $(CYGPATH_W) 'trash.c'; else $(CYGPATH_W) '$(srcdir)/trash.c'; fi`
+
+libpll_sse3_a-searchAlgo.o: searchAlgo.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_a_CFLAGS) $(CFLAGS) -MT libpll_sse3_a-searchAlgo.o -MD -MP -MF $(DEPDIR)/libpll_sse3_a-searchAlgo.Tpo -c -o libpll_sse3_a-searchAlgo.o `test -f 'searchAlgo.c' || echo '$(srcdir)/'`searchAlgo.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_sse3_a-searchAlgo.Tpo $(DEPDIR)/libpll_sse3_a-searchAlgo.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='searchAlgo.c' object='libpll_sse3_a-searchAlgo.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_a_CFLAGS) $(CFLAGS) -c -o libpll_sse3_a-searchAlgo.o `test -f 'searchAlgo.c' || echo '$(srcdir)/'`searchAlgo.c
+
+libpll_sse3_a-searchAlgo.obj: searchAlgo.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_a_CFLAGS) $(CFLAGS) -MT libpll_sse3_a-searchAlgo.obj -MD -MP -MF $(DEPDIR)/libpll_sse3_a-searchAlgo.Tpo -c -o libpll_sse3_a-searchAlgo.obj `if test -f 'searchAlgo.c'; then $(CYGPATH_W) 'searchAlgo.c'; else $(CYGPATH_W) '$(srcdir)/searchAlgo.c'; fi`
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_sse3_a-searchAlgo.Tpo $(DEPDIR)/libpll_sse3_a-searchAlgo.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='searchAlgo.c' object='libpll_sse3_a-searchAlgo.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_a_CFLAGS) $(CFLAGS) -c -o libpll_sse3_a-searchAlgo.obj `if test -f 'searchAlgo.c'; then $(CYGPATH_W) 'searchAlgo.c'; else $(CYGPATH_W) '$(srcdir)/searchAlgo.c'; fi`
+
+libpll_sse3_a-topologies.o: topologies.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_a_CFLAGS) $(CFLAGS) -MT libpll_sse3_a-topologies.o -MD -MP -MF $(DEPDIR)/libpll_sse3_a-topologies.Tpo -c -o libpll_sse3_a-topologies.o `test -f 'topologies.c' || echo '$(srcdir)/'`topologies.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_sse3_a-topologies.Tpo $(DEPDIR)/libpll_sse3_a-topologies.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='topologies.c' object='libpll_sse3_a-topologies.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_a_CFLAGS) $(CFLAGS) -c -o libpll_sse3_a-topologies.o `test -f 'topologies.c' || echo '$(srcdir)/'`topologies.c
+
+libpll_sse3_a-topologies.obj: topologies.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_a_CFLAGS) $(CFLAGS) -MT libpll_sse3_a-topologies.obj -MD -MP -MF $(DEPDIR)/libpll_sse3_a-topologies.Tpo -c -o libpll_sse3_a-topologies.obj `if test -f 'topologies.c'; then $(CYGPATH_W) 'topologies.c'; else $(CYGPATH_W) '$(srcdir)/topologies.c'; fi`
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_sse3_a-topologies.Tpo $(DEPDIR)/libpll_sse3_a-topologies.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='topologies.c' object='libpll_sse3_a-topologies.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_a_CFLAGS) $(CFLAGS) -c -o libpll_sse3_a-topologies.obj `if test -f 'topologies.c'; then $(CYGPATH_W) 'topologies.c'; else $(CYGPATH_W) '$(srcdir)/topologies.c'; fi`
+
+libpll_sse3_a-fastDNAparsimony.o: fastDNAparsimony.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_a_CFLAGS) $(CFLAGS) -MT libpll_sse3_a-fastDNAparsimony.o -MD -MP -MF $(DEPDIR)/libpll_sse3_a-fastDNAparsimony.Tpo -c -o libpll_sse3_a-fastDNAparsimony.o `test -f 'fastDNAparsimony.c' || echo '$(srcdir)/'`fastDNAparsimony.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_sse3_a-fastDNAparsimony.Tpo $(DEPDIR)/libpll_sse3_a-fastDNAparsimony.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='fastDNAparsimony.c' object='libpll_sse3_a-fastDNAparsimony.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_a_CFLAGS) $(CFLAGS) -c -o libpll_sse3_a-fastDNAparsimony.o `test -f 'fastDNAparsimony.c' || echo '$(srcdir)/'`fastDNAparsimony.c
+
+libpll_sse3_a-fastDNAparsimony.obj: fastDNAparsimony.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_a_CFLAGS) $(CFLAGS) -MT libpll_sse3_a-fastDNAparsimony.obj -MD -MP -MF $(DEPDIR)/libpll_sse3_a-fastDNAparsimony.Tpo -c -o libpll_sse3_a-fastDNAparsimony.obj `if test -f 'fastDNAparsimony.c'; then $(CYGPATH_W) 'fastDNAparsimony.c'; else $(CYGPATH_W) '$(srcdir)/fastDNAparsimony.c'; fi`
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_sse3_a-fastDNAparsimony.Tpo $(DEPDIR)/libpll_sse3_a-fastDNAparsimony.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='fastDNAparsimony.c' object='libpll_sse3_a-fastDNAparsimony.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_a_CFLAGS) $(CFLAGS) -c -o libpll_sse3_a-fastDNAparsimony.obj `if test -f 'fastDNAparsimony.c'; then $(CYGPATH_W) 'fastDNAparsimony.c'; else $(CYGPATH_W) '$(srcdir)/fastDNAparsimony.c'; fi`
+
+libpll_sse3_a-treeIO.o: treeIO.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_a_CFLAGS) $(CFLAGS) -MT libpll_sse3_a-treeIO.o -MD -MP -MF $(DEPDIR)/libpll_sse3_a-treeIO.Tpo -c -o libpll_sse3_a-treeIO.o `test -f 'treeIO.c' || echo '$(srcdir)/'`treeIO.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_sse3_a-treeIO.Tpo $(DEPDIR)/libpll_sse3_a-treeIO.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='treeIO.c' object='libpll_sse3_a-treeIO.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_a_CFLAGS) $(CFLAGS) -c -o libpll_sse3_a-treeIO.o `test -f 'treeIO.c' || echo '$(srcdir)/'`treeIO.c
+
+libpll_sse3_a-treeIO.obj: treeIO.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_a_CFLAGS) $(CFLAGS) -MT libpll_sse3_a-treeIO.obj -MD -MP -MF $(DEPDIR)/libpll_sse3_a-treeIO.Tpo -c -o libpll_sse3_a-treeIO.obj `if test -f 'treeIO.c'; then $(CYGPATH_W) 'treeIO.c'; else $(CYGPATH_W) '$(srcdir)/treeIO.c'; fi`
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_sse3_a-treeIO.Tpo $(DEPDIR)/libpll_sse3_a-treeIO.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='treeIO.c' object='libpll_sse3_a-treeIO.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_a_CFLAGS) $(CFLAGS) -c -o libpll_sse3_a-treeIO.obj `if test -f 'treeIO.c'; then $(CYGPATH_W) 'treeIO.c'; else $(CYGPATH_W) '$(srcdir)/treeIO.c'; fi`
+
+libpll_sse3_a-models.o: models.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_a_CFLAGS) $(CFLAGS) -MT libpll_sse3_a-models.o -MD -MP -MF $(DEPDIR)/libpll_sse3_a-models.Tpo -c -o libpll_sse3_a-models.o `test -f 'models.c' || echo '$(srcdir)/'`models.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_sse3_a-models.Tpo $(DEPDIR)/libpll_sse3_a-models.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='models.c' object='libpll_sse3_a-models.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_a_CFLAGS) $(CFLAGS) -c -o libpll_sse3_a-models.o `test -f 'models.c' || echo '$(srcdir)/'`models.c
+
+libpll_sse3_a-models.obj: models.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_a_CFLAGS) $(CFLAGS) -MT libpll_sse3_a-models.obj -MD -MP -MF $(DEPDIR)/libpll_sse3_a-models.Tpo -c -o libpll_sse3_a-models.obj `if test -f 'models.c'; then $(CYGPATH_W) 'models.c'; else $(CYGPATH_W) '$(srcdir)/models.c'; fi`
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_sse3_a-models.Tpo $(DEPDIR)/libpll_sse3_a-models.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='models.c' object='libpll_sse3_a-models.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_a_CFLAGS) $(CFLAGS) -c -o libpll_sse3_a-models.obj `if test -f 'models.c'; then $(CYGPATH_W) 'models.c'; else $(CYGPATH_W) '$(srcdir)/models.c'; fi`
+
+libpll_sse3_a-evaluatePartialGenericSpecial.o: evaluatePartialGenericSpecial.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_a_CFLAGS) $(CFLAGS) -MT libpll_sse3_a-evaluatePartialGenericSpecial.o -MD -MP -MF $(DEPDIR)/libpll_sse3_a-evaluatePartialGenericSpecial.Tpo -c -o libpll_sse3_a-evaluatePartialGenericSpecial.o `test -f 'evaluatePartialGenericSpecial.c' || echo '$(srcdir)/'`evaluatePartialGenericSpecial.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_sse3_a-evaluatePartialGenericSpecial.Tpo $(DEPDIR)/libpll_sse3_a-evaluatePartialGenericSpecial.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='evaluatePartialGenericSpecial.c' object='libpll_sse3_a-evaluatePartialGenericSpecial.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_a_CFLAGS) $(CFLAGS) -c -o libpll_sse3_a-evaluatePartialGenericSpecial.o `test -f 'evaluatePartialGenericSpecial.c' || echo '$(srcdir)/'`evaluatePartialGenericSpecial.c
+
+libpll_sse3_a-evaluatePartialGenericSpecial.obj: evaluatePartialGenericSpecial.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_a_CFLAGS) $(CFLAGS) -MT libpll_sse3_a-evaluatePartialGenericSpecial.obj -MD -MP -MF $(DEPDIR)/libpll_sse3_a-evaluatePartialGenericSpecial.Tpo -c -o libpll_sse3_a-evaluatePartialGenericSpecial.obj `if test -f 'evaluatePartialGenericSpecial.c'; then $(CYGPATH_W) 'evaluatePartialGenericSpecial.c'; else $(CYGPATH_W) '$(srcdir)/evaluatePartialGenericSpecial.c'; fi`
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_sse3_a-evaluatePartialGenericSpecial.Tpo $(DEPDIR)/libpll_sse3_a-evaluatePartialGenericSpecial.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='evaluatePartialGenericSpecial.c' object='libpll_sse3_a-evaluatePartialGenericSpecial.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_a_CFLAGS) $(CFLAGS) -c -o libpll_sse3_a-evaluatePartialGenericSpecial.obj `if test -f 'evaluatePartialGenericSpecial.c'; then $(CYGPATH_W) 'evaluatePartialGenericSpecial.c'; else $(CYGPATH_W) '$(srcdir)/evaluatePartialGenericSpecial.c'; fi`
+
+libpll_sse3_a-evaluateGenericSpecial.o: evaluateGenericSpecial.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_a_CFLAGS) $(CFLAGS) -MT libpll_sse3_a-evaluateGenericSpecial.o -MD -MP -MF $(DEPDIR)/libpll_sse3_a-evaluateGenericSpecial.Tpo -c -o libpll_sse3_a-evaluateGenericSpecial.o `test -f 'evaluateGenericSpecial.c' || echo '$(srcdir)/'`evaluateGenericSpecial.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_sse3_a-evaluateGenericSpecial.Tpo $(DEPDIR)/libpll_sse3_a-evaluateGenericSpecial.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='evaluateGenericSpecial.c' object='libpll_sse3_a-evaluateGenericSpecial.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_a_CFLAGS) $(CFLAGS) -c -o libpll_sse3_a-evaluateGenericSpecial.o `test -f 'evaluateGenericSpecial.c' || echo '$(srcdir)/'`evaluateGenericSpecial.c
+
+libpll_sse3_a-evaluateGenericSpecial.obj: evaluateGenericSpecial.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_a_CFLAGS) $(CFLAGS) -MT libpll_sse3_a-evaluateGenericSpecial.obj -MD -MP -MF $(DEPDIR)/libpll_sse3_a-evaluateGenericSpecial.Tpo -c -o libpll_sse3_a-evaluateGenericSpecial.obj `if test -f 'evaluateGenericSpecial.c'; then $(CYGPATH_W) 'evaluateGenericSpecial.c'; else $(CYGPATH_W) '$(srcdir)/evaluateGenericSpecial.c'; fi`
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_sse3_a-evaluateGenericSpecial.Tpo $(DEPDIR)/libpll_sse3_a-evaluateGenericSpecial.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='evaluateGenericSpecial.c' object='libpll_sse3_a-evaluateGenericSpecial.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_a_CFLAGS) $(CFLAGS) -c -o libpll_sse3_a-evaluateGenericSpecial.obj `if test -f 'evaluateGenericSpecial.c'; then $(CYGPATH_W) 'evaluateGenericSpecial.c'; else $(CYGPATH_W) '$(srcdir)/evaluateGenericSpecial.c'; fi`
+
+libpll_sse3_a-newviewGenericSpecial.o: newviewGenericSpecial.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_a_CFLAGS) $(CFLAGS) -MT libpll_sse3_a-newviewGenericSpecial.o -MD -MP -MF $(DEPDIR)/libpll_sse3_a-newviewGenericSpecial.Tpo -c -o libpll_sse3_a-newviewGenericSpecial.o `test -f 'newviewGenericSpecial.c' || echo '$(srcdir)/'`newviewGenericSpecial.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_sse3_a-newviewGenericSpecial.Tpo $(DEPDIR)/libpll_sse3_a-newviewGenericSpecial.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='newviewGenericSpecial.c' object='libpll_sse3_a-newviewGenericSpecial.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_a_CFLAGS) $(CFLAGS) -c -o libpll_sse3_a-newviewGenericSpecial.o `test -f 'newviewGenericSpecial.c' || echo '$(srcdir)/'`newviewGenericSpecial.c
+
+libpll_sse3_a-newviewGenericSpecial.obj: newviewGenericSpecial.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_a_CFLAGS) $(CFLAGS) -MT libpll_sse3_a-newviewGenericSpecial.obj -MD -MP -MF $(DEPDIR)/libpll_sse3_a-newviewGenericSpecial.Tpo -c -o libpll_sse3_a-newviewGenericSpecial.obj `if test -f 'newviewGenericSpecial.c'; then $(CYGPATH_W) 'newviewGenericSpecial.c'; else $(CYGPATH_W) '$(srcdir)/newviewGenericSpecial.c'; fi`
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_sse3_a-newviewGenericSpecial.Tpo $(DEPDIR)/libpll_sse3_a-newviewGenericSpecial.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='newviewGenericSpecial.c' object='libpll_sse3_a-newviewGenericSpecial.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_a_CFLAGS) $(CFLAGS) -c -o libpll_sse3_a-newviewGenericSpecial.obj `if test -f 'newviewGenericSpecial.c'; then $(CYGPATH_W) 'newviewGenericSpecial.c'; else $(CYGPATH_W) '$(srcdir)/newviewGenericSpecial.c'; fi`
+
+libpll_sse3_a-makenewzGenericSpecial.o: makenewzGenericSpecial.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_a_CFLAGS) $(CFLAGS) -MT libpll_sse3_a-makenewzGenericSpecial.o -MD -MP -MF $(DEPDIR)/libpll_sse3_a-makenewzGenericSpecial.Tpo -c -o libpll_sse3_a-makenewzGenericSpecial.o `test -f 'makenewzGenericSpecial.c' || echo '$(srcdir)/'`makenewzGenericSpecial.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_sse3_a-makenewzGenericSpecial.Tpo $(DEPDIR)/libpll_sse3_a-makenewzGenericSpecial.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='makenewzGenericSpecial.c' object='libpll_sse3_a-makenewzGenericSpecial.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_a_CFLAGS) $(CFLAGS) -c -o libpll_sse3_a-makenewzGenericSpecial.o `test -f 'makenewzGenericSpecial.c' || echo '$(srcdir)/'`makenewzGenericSpecial.c
+
+libpll_sse3_a-makenewzGenericSpecial.obj: makenewzGenericSpecial.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_a_CFLAGS) $(CFLAGS) -MT libpll_sse3_a-makenewzGenericSpecial.obj -MD -MP -MF $(DEPDIR)/libpll_sse3_a-makenewzGenericSpecial.Tpo -c -o libpll_sse3_a-makenewzGenericSpecial.obj `if test -f 'makenewzGenericSpecial.c'; then $(CYGPATH_W) 'makenewzGenericSpecial.c'; else $(CYGPATH_W) '$(srcdir)/makenewzGenericSpecial.c'; fi`
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_sse3_a-makenewzGenericSpecial.Tpo $(DEPDIR)/libpll_sse3_a-makenewzGenericSpecial.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='makenewzGenericSpecial.c' object='libpll_sse3_a-makenewzGenericSpecial.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_a_CFLAGS) $(CFLAGS) -c -o libpll_sse3_a-makenewzGenericSpecial.obj `if test -f 'makenewzGenericSpecial.c'; then $(CYGPATH_W) 'makenewzGenericSpecial.c'; else $(CYGPATH_W) '$(srcdir)/makenewzGenericSpecial.c'; fi`
+
+libpll_sse3_a-bipartitionList.o: bipartitionList.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_a_CFLAGS) $(CFLAGS) -MT libpll_sse3_a-bipartitionList.o -MD -MP -MF $(DEPDIR)/libpll_sse3_a-bipartitionList.Tpo -c -o libpll_sse3_a-bipartitionList.o `test -f 'bipartitionList.c' || echo '$(srcdir)/'`bipartitionList.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_sse3_a-bipartitionList.Tpo $(DEPDIR)/libpll_sse3_a-bipartitionList.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='bipartitionList.c' object='libpll_sse3_a-bipartitionList.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_a_CFLAGS) $(CFLAGS) -c -o libpll_sse3_a-bipartitionList.o `test -f 'bipartitionList.c' || echo '$(srcdir)/'`bipartitionList.c
+
+libpll_sse3_a-bipartitionList.obj: bipartitionList.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_a_CFLAGS) $(CFLAGS) -MT libpll_sse3_a-bipartitionList.obj -MD -MP -MF $(DEPDIR)/libpll_sse3_a-bipartitionList.Tpo -c -o libpll_sse3_a-bipartitionList.obj `if test -f 'bipartitionList.c'; then $(CYGPATH_W) 'bipartitionList.c'; else $(CYGPATH_W) '$(srcdir)/bipartitionList.c'; fi`
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_sse3_a-bipartitionList.Tpo $(DEPDIR)/libpll_sse3_a-bipartitionList.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='bipartitionList.c' object='libpll_sse3_a-bipartitionList.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_a_CFLAGS) $(CFLAGS) -c -o libpll_sse3_a-bipartitionList.obj `if test -f 'bipartitionList.c'; then $(CYGPATH_W) 'bipartitionList.c'; else $(CYGPATH_W) '$(srcdir)/bipartitionList.c'; fi`
+
+libpll_sse3_a-restartHashTable.o: restartHashTable.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_a_CFLAGS) $(CFLAGS) -MT libpll_sse3_a-restartHashTable.o -MD -MP -MF $(DEPDIR)/libpll_sse3_a-restartHashTable.Tpo -c -o libpll_sse3_a-restartHashTable.o `test -f 'restartHashTable.c' || echo '$(srcdir)/'`restartHashTable.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_sse3_a-restartHashTable.Tpo $(DEPDIR)/libpll_sse3_a-restartHashTable.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='restartHashTable.c' object='libpll_sse3_a-restartHashTable.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_a_CFLAGS) $(CFLAGS) -c -o libpll_sse3_a-restartHashTable.o `test -f 'restartHashTable.c' || echo '$(srcdir)/'`restartHashTable.c
+
+libpll_sse3_a-restartHashTable.obj: restartHashTable.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_a_CFLAGS) $(CFLAGS) -MT libpll_sse3_a-restartHashTable.obj -MD -MP -MF $(DEPDIR)/libpll_sse3_a-restartHashTable.Tpo -c -o libpll_sse3_a-restartHashTable.obj `if test -f 'restartHashTable.c'; then $(CYGPATH_W) 'restartHashTable.c'; else $(CYGPATH_W) '$(srcdir)/restartHashTable.c'; fi`
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_sse3_a-restartHashTable.Tpo $(DEPDIR)/libpll_sse3_a-restartHashTable.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='restartHashTable.c' object='libpll_sse3_a-restartHashTable.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_a_CFLAGS) $(CFLAGS) -c -o libpll_sse3_a-restartHashTable.obj `if test -f 'restartHashTable.c'; then $(CYGPATH_W) 'restartHashTable.c'; else $(CYGPATH_W) '$(srcdir)/restartHashTable.c'; fi`
+
+libpll_sse3_a-recom.o: recom.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_a_CFLAGS) $(CFLAGS) -MT libpll_sse3_a-recom.o -MD -MP -MF $(DEPDIR)/libpll_sse3_a-recom.Tpo -c -o libpll_sse3_a-recom.o `test -f 'recom.c' || echo '$(srcdir)/'`recom.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_sse3_a-recom.Tpo $(DEPDIR)/libpll_sse3_a-recom.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='recom.c' object='libpll_sse3_a-recom.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_a_CFLAGS) $(CFLAGS) -c -o libpll_sse3_a-recom.o `test -f 'recom.c' || echo '$(srcdir)/'`recom.c
+
+libpll_sse3_a-recom.obj: recom.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_a_CFLAGS) $(CFLAGS) -MT libpll_sse3_a-recom.obj -MD -MP -MF $(DEPDIR)/libpll_sse3_a-recom.Tpo -c -o libpll_sse3_a-recom.obj `if test -f 'recom.c'; then $(CYGPATH_W) 'recom.c'; else $(CYGPATH_W) '$(srcdir)/recom.c'; fi`
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_sse3_a-recom.Tpo $(DEPDIR)/libpll_sse3_a-recom.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='recom.c' object='libpll_sse3_a-recom.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_a_CFLAGS) $(CFLAGS) -c -o libpll_sse3_a-recom.obj `if test -f 'recom.c'; then $(CYGPATH_W) 'recom.c'; else $(CYGPATH_W) '$(srcdir)/recom.c'; fi`
+
+libpll_sse3_a-lexer.o: lexer.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_a_CFLAGS) $(CFLAGS) -MT libpll_sse3_a-lexer.o -MD -MP -MF $(DEPDIR)/libpll_sse3_a-lexer.Tpo -c -o libpll_sse3_a-lexer.o `test -f 'lexer.c' || echo '$(srcdir)/'`lexer.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_sse3_a-lexer.Tpo $(DEPDIR)/libpll_sse3_a-lexer.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='lexer.c' object='libpll_sse3_a-lexer.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_a_CFLAGS) $(CFLAGS) -c -o libpll_sse3_a-lexer.o `test -f 'lexer.c' || echo '$(srcdir)/'`lexer.c
+
+libpll_sse3_a-lexer.obj: lexer.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_a_CFLAGS) $(CFLAGS) -MT libpll_sse3_a-lexer.obj -MD -MP -MF $(DEPDIR)/libpll_sse3_a-lexer.Tpo -c -o libpll_sse3_a-lexer.obj `if test -f 'lexer.c'; then $(CYGPATH_W) 'lexer.c'; else $(CYGPATH_W) '$(srcdir)/lexer.c'; fi`
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_sse3_a-lexer.Tpo $(DEPDIR)/libpll_sse3_a-lexer.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='lexer.c' object='libpll_sse3_a-lexer.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_a_CFLAGS) $(CFLAGS) -c -o libpll_sse3_a-lexer.obj `if test -f 'lexer.c'; then $(CYGPATH_W) 'lexer.c'; else $(CYGPATH_W) '$(srcdir)/lexer.c'; fi`
+
+libpll_sse3_a-alignment.o: alignment.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_a_CFLAGS) $(CFLAGS) -MT libpll_sse3_a-alignment.o -MD -MP -MF $(DEPDIR)/libpll_sse3_a-alignment.Tpo -c -o libpll_sse3_a-alignment.o `test -f 'alignment.c' || echo '$(srcdir)/'`alignment.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_sse3_a-alignment.Tpo $(DEPDIR)/libpll_sse3_a-alignment.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='alignment.c' object='libpll_sse3_a-alignment.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_a_CFLAGS) $(CFLAGS) -c -o libpll_sse3_a-alignment.o `test -f 'alignment.c' || echo '$(srcdir)/'`alignment.c
+
+libpll_sse3_a-alignment.obj: alignment.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_a_CFLAGS) $(CFLAGS) -MT libpll_sse3_a-alignment.obj -MD -MP -MF $(DEPDIR)/libpll_sse3_a-alignment.Tpo -c -o libpll_sse3_a-alignment.obj `if test -f 'alignment.c'; then $(CYGPATH_W) 'alignment.c'; else $(CYGPATH_W) '$(srcdir)/alignment.c'; fi`
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_sse3_a-alignment.Tpo $(DEPDIR)/libpll_sse3_a-alignment.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='alignment.c' object='libpll_sse3_a-alignment.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_a_CFLAGS) $(CFLAGS) -c -o libpll_sse3_a-alignment.obj `if test -f 'alignment.c'; then $(CYGPATH_W) 'alignment.c'; else $(CYGPATH_W) '$(srcdir)/alignment.c'; fi`
+
+libpll_sse3_a-newick.o: newick.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_a_CFLAGS) $(CFLAGS) -MT libpll_sse3_a-newick.o -MD -MP -MF $(DEPDIR)/libpll_sse3_a-newick.Tpo -c -o libpll_sse3_a-newick.o `test -f 'newick.c' || echo '$(srcdir)/'`newick.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_sse3_a-newick.Tpo $(DEPDIR)/libpll_sse3_a-newick.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='newick.c' object='libpll_sse3_a-newick.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_a_CFLAGS) $(CFLAGS) -c -o libpll_sse3_a-newick.o `test -f 'newick.c' || echo '$(srcdir)/'`newick.c
+
+libpll_sse3_a-newick.obj: newick.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_a_CFLAGS) $(CFLAGS) -MT libpll_sse3_a-newick.obj -MD -MP -MF $(DEPDIR)/libpll_sse3_a-newick.Tpo -c -o libpll_sse3_a-newick.obj `if test -f 'newick.c'; then $(CYGPATH_W) 'newick.c'; else $(CYGPATH_W) '$(srcdir)/newick.c'; fi`
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_sse3_a-newick.Tpo $(DEPDIR)/libpll_sse3_a-newick.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='newick.c' object='libpll_sse3_a-newick.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_a_CFLAGS) $(CFLAGS) -c -o libpll_sse3_a-newick.obj `if test -f 'newick.c'; then $(CYGPATH_W) 'newick.c'; else $(CYGPATH_W) '$(srcdir)/newick.c'; fi`
+
+libpll_sse3_a-parsePartition.o: parsePartition.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_a_CFLAGS) $(CFLAGS) -MT libpll_sse3_a-parsePartition.o -MD -MP -MF $(DEPDIR)/libpll_sse3_a-parsePartition.Tpo -c -o libpll_sse3_a-parsePartition.o `test -f 'parsePartition.c' || echo '$(srcdir)/'`parsePartition.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_sse3_a-parsePartition.Tpo $(DEPDIR)/libpll_sse3_a-parsePartition.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='parsePartition.c' object='libpll_sse3_a-parsePartition.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_a_CFLAGS) $(CFLAGS) -c -o libpll_sse3_a-parsePartition.o `test -f 'parsePartition.c' || echo '$(srcdir)/'`parsePartition.c
+
+libpll_sse3_a-parsePartition.obj: parsePartition.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_a_CFLAGS) $(CFLAGS) -MT libpll_sse3_a-parsePartition.obj -MD -MP -MF $(DEPDIR)/libpll_sse3_a-parsePartition.Tpo -c -o libpll_sse3_a-parsePartition.obj `if test -f 'parsePartition.c'; then $(CYGPATH_W) 'parsePartition.c'; else $(CYGPATH_W) '$(srcdir)/parsePartition.c'; fi`
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_sse3_a-parsePartition.Tpo $(DEPDIR)/libpll_sse3_a-parsePartition.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='parsePartition.c' object='libpll_sse3_a-parsePartition.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_a_CFLAGS) $(CFLAGS) -c -o libpll_sse3_a-parsePartition.obj `if test -f 'parsePartition.c'; then $(CYGPATH_W) 'parsePartition.c'; else $(CYGPATH_W) '$(srcdir)/parsePartition.c'; fi`
+
+libpll_sse3_a-parsimony.o: parsimony.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_a_CFLAGS) $(CFLAGS) -MT libpll_sse3_a-parsimony.o -MD -MP -MF $(DEPDIR)/libpll_sse3_a-parsimony.Tpo -c -o libpll_sse3_a-parsimony.o `test -f 'parsimony.c' || echo '$(srcdir)/'`parsimony.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_sse3_a-parsimony.Tpo $(DEPDIR)/libpll_sse3_a-parsimony.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='parsimony.c' object='libpll_sse3_a-parsimony.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_a_CFLAGS) $(CFLAGS) -c -o libpll_sse3_a-parsimony.o `test -f 'parsimony.c' || echo '$(srcdir)/'`parsimony.c
+
+libpll_sse3_a-parsimony.obj: parsimony.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_a_CFLAGS) $(CFLAGS) -MT libpll_sse3_a-parsimony.obj -MD -MP -MF $(DEPDIR)/libpll_sse3_a-parsimony.Tpo -c -o libpll_sse3_a-parsimony.obj `if test -f 'parsimony.c'; then $(CYGPATH_W) 'parsimony.c'; else $(CYGPATH_W) '$(srcdir)/parsimony.c'; fi`
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_sse3_a-parsimony.Tpo $(DEPDIR)/libpll_sse3_a-parsimony.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='parsimony.c' object='libpll_sse3_a-parsimony.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_a_CFLAGS) $(CFLAGS) -c -o libpll_sse3_a-parsimony.obj `if test -f 'parsimony.c'; then $(CYGPATH_W) 'parsimony.c'; else $(CYGPATH_W) '$(srcdir)/parsimony.c'; fi`
+
+libpll_avx_pthreads_la-avxLikelihood.lo: avxLikelihood.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_pthreads_la_CFLAGS) $(CFLAGS) -MT libpll_avx_pthreads_la-avxLikelihood.lo -MD -MP -MF $(DEPDIR)/libpll_avx_pthreads_la-avxLikelihood.Tpo -c -o libpll_avx_pthreads_la-avxLikelihood.lo `test -f 'avxLikelihood.c' || echo '$(srcdir)/'`avxLikelihood.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_avx_pthreads_la-avxLikelihood.Tpo $(DEPDIR)/libpll_avx_pthreads_la-avxLikelihood.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='avxLikelihood.c' object='libpll_avx_pthreads_la-avxLikelihood.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_pthreads_la_CFLAGS) $(CFLAGS) -c -o libpll_avx_pthreads_la-avxLikelihood.lo `test -f 'avxLikelihood.c' || echo '$(srcdir)/'`avxLikelihood.c
+
+libpll_avx_pthreads_la-genericParallelization.lo: genericParallelization.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_pthreads_la_CFLAGS) $(CFLAGS) -MT libpll_avx_pthreads_la-genericParallelization.lo -MD -MP -MF $(DEPDIR)/libpll_avx_pthreads_la-genericParallelization.Tpo -c -o libpll_avx_pthreads_la-genericParallelization.lo `test -f 'genericParallelization.c' || echo '$(srcdir)/'`genericParallelization.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_avx_pthreads_la-genericParallelization.Tpo $(DEPDIR)/libpll_avx_pthreads_la-genericParallelization.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='genericParallelization.c' object='libpll_avx_pthreads_la-genericParallelization.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_pthreads_la_CFLAGS) $(CFLAGS) -c -o libpll_avx_pthreads_la-genericParallelization.lo `test -f 'genericParallelization.c' || echo '$(srcdir)/'`genericParallelization.c
+
+libpll_avx_pthreads_la-hash.lo: hash.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_pthreads_la_CFLAGS) $(CFLAGS) -MT libpll_avx_pthreads_la-hash.lo -MD -MP -MF $(DEPDIR)/libpll_avx_pthreads_la-hash.Tpo -c -o libpll_avx_pthreads_la-hash.lo `test -f 'hash.c' || echo '$(srcdir)/'`hash.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_avx_pthreads_la-hash.Tpo $(DEPDIR)/libpll_avx_pthreads_la-hash.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='hash.c' object='libpll_avx_pthreads_la-hash.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_pthreads_la_CFLAGS) $(CFLAGS) -c -o libpll_avx_pthreads_la-hash.lo `test -f 'hash.c' || echo '$(srcdir)/'`hash.c
+
+libpll_avx_pthreads_la-stack.lo: stack.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_pthreads_la_CFLAGS) $(CFLAGS) -MT libpll_avx_pthreads_la-stack.lo -MD -MP -MF $(DEPDIR)/libpll_avx_pthreads_la-stack.Tpo -c -o libpll_avx_pthreads_la-stack.lo `test -f 'stack.c' || echo '$(srcdir)/'`stack.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_avx_pthreads_la-stack.Tpo $(DEPDIR)/libpll_avx_pthreads_la-stack.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='stack.c' object='libpll_avx_pthreads_la-stack.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_pthreads_la_CFLAGS) $(CFLAGS) -c -o libpll_avx_pthreads_la-stack.lo `test -f 'stack.c' || echo '$(srcdir)/'`stack.c
+
+libpll_avx_pthreads_la-ssort.lo: ssort.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_pthreads_la_CFLAGS) $(CFLAGS) -MT libpll_avx_pthreads_la-ssort.lo -MD -MP -MF $(DEPDIR)/libpll_avx_pthreads_la-ssort.Tpo -c -o libpll_avx_pthreads_la-ssort.lo `test -f 'ssort.c' || echo '$(srcdir)/'`ssort.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_avx_pthreads_la-ssort.Tpo $(DEPDIR)/libpll_avx_pthreads_la-ssort.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ssort.c' object='libpll_avx_pthreads_la-ssort.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_pthreads_la_CFLAGS) $(CFLAGS) -c -o libpll_avx_pthreads_la-ssort.lo `test -f 'ssort.c' || echo '$(srcdir)/'`ssort.c
+
+libpll_avx_pthreads_la-queue.lo: queue.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_pthreads_la_CFLAGS) $(CFLAGS) -MT libpll_avx_pthreads_la-queue.lo -MD -MP -MF $(DEPDIR)/libpll_avx_pthreads_la-queue.Tpo -c -o libpll_avx_pthreads_la-queue.lo `test -f 'queue.c' || echo '$(srcdir)/'`queue.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_avx_pthreads_la-queue.Tpo $(DEPDIR)/libpll_avx_pthreads_la-queue.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='queue.c' object='libpll_avx_pthreads_la-queue.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_pthreads_la_CFLAGS) $(CFLAGS) -c -o libpll_avx_pthreads_la-queue.lo `test -f 'queue.c' || echo '$(srcdir)/'`queue.c
+
+libpll_avx_pthreads_la-utils.lo: utils.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_pthreads_la_CFLAGS) $(CFLAGS) -MT libpll_avx_pthreads_la-utils.lo -MD -MP -MF $(DEPDIR)/libpll_avx_pthreads_la-utils.Tpo -c -o libpll_avx_pthreads_la-utils.lo `test -f 'utils.c' || echo '$(srcdir)/'`utils.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_avx_pthreads_la-utils.Tpo $(DEPDIR)/libpll_avx_pthreads_la-utils.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='utils.c' object='libpll_avx_pthreads_la-utils.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_pthreads_la_CFLAGS) $(CFLAGS) -c -o libpll_avx_pthreads_la-utils.lo `test -f 'utils.c' || echo '$(srcdir)/'`utils.c
+
+libpll_avx_pthreads_la-randomTree.lo: randomTree.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_pthreads_la_CFLAGS) $(CFLAGS) -MT libpll_avx_pthreads_la-randomTree.lo -MD -MP -MF $(DEPDIR)/libpll_avx_pthreads_la-randomTree.Tpo -c -o libpll_avx_pthreads_la-randomTree.lo `test -f 'randomTree.c' || echo '$(srcdir)/'`randomTree.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_avx_pthreads_la-randomTree.Tpo $(DEPDIR)/libpll_avx_pthreads_la-randomTree.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='randomTree.c' object='libpll_avx_pthreads_la-randomTree.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_pthreads_la_CFLAGS) $(CFLAGS) -c -o libpll_avx_pthreads_la-randomTree.lo `test -f 'randomTree.c' || echo '$(srcdir)/'`randomTree.c
+
+libpll_avx_pthreads_la-optimizeModel.lo: optimizeModel.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_pthreads_la_CFLAGS) $(CFLAGS) -MT libpll_avx_pthreads_la-optimizeModel.lo -MD -MP -MF $(DEPDIR)/libpll_avx_pthreads_la-optimizeModel.Tpo -c -o libpll_avx_pthreads_la-optimizeModel.lo `test -f 'optimizeModel.c' || echo '$(srcdir)/'`optimizeModel.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_avx_pthreads_la-optimizeModel.Tpo $(DEPDIR)/libpll_avx_pthreads_la-optimizeModel.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='optimizeModel.c' object='libpll_avx_pthreads_la-optimizeModel.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_pthreads_la_CFLAGS) $(CFLAGS) -c -o libpll_avx_pthreads_la-optimizeModel.lo `test -f 'optimizeModel.c' || echo '$(srcdir)/'`optimizeModel.c
+
+libpll_avx_pthreads_la-trash.lo: trash.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_pthreads_la_CFLAGS) $(CFLAGS) -MT libpll_avx_pthreads_la-trash.lo -MD -MP -MF $(DEPDIR)/libpll_avx_pthreads_la-trash.Tpo -c -o libpll_avx_pthreads_la-trash.lo `test -f 'trash.c' || echo '$(srcdir)/'`trash.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_avx_pthreads_la-trash.Tpo $(DEPDIR)/libpll_avx_pthreads_la-trash.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='trash.c' object='libpll_avx_pthreads_la-trash.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_pthreads_la_CFLAGS) $(CFLAGS) -c -o libpll_avx_pthreads_la-trash.lo `test -f 'trash.c' || echo '$(srcdir)/'`trash.c
+
+libpll_avx_pthreads_la-searchAlgo.lo: searchAlgo.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_pthreads_la_CFLAGS) $(CFLAGS) -MT libpll_avx_pthreads_la-searchAlgo.lo -MD -MP -MF $(DEPDIR)/libpll_avx_pthreads_la-searchAlgo.Tpo -c -o libpll_avx_pthreads_la-searchAlgo.lo `test -f 'searchAlgo.c' || echo '$(srcdir)/'`searchAlgo.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_avx_pthreads_la-searchAlgo.Tpo $(DEPDIR)/libpll_avx_pthreads_la-searchAlgo.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='searchAlgo.c' object='libpll_avx_pthreads_la-searchAlgo.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_pthreads_la_CFLAGS) $(CFLAGS) -c -o libpll_avx_pthreads_la-searchAlgo.lo `test -f 'searchAlgo.c' || echo '$(srcdir)/'`searchAlgo.c
+
+libpll_avx_pthreads_la-topologies.lo: topologies.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_pthreads_la_CFLAGS) $(CFLAGS) -MT libpll_avx_pthreads_la-topologies.lo -MD -MP -MF $(DEPDIR)/libpll_avx_pthreads_la-topologies.Tpo -c -o libpll_avx_pthreads_la-topologies.lo `test -f 'topologies.c' || echo '$(srcdir)/'`topologies.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_avx_pthreads_la-topologies.Tpo $(DEPDIR)/libpll_avx_pthreads_la-topologies.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='topologies.c' object='libpll_avx_pthreads_la-topologies.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_pthreads_la_CFLAGS) $(CFLAGS) -c -o libpll_avx_pthreads_la-topologies.lo `test -f 'topologies.c' || echo '$(srcdir)/'`topologies.c
+
+libpll_avx_pthreads_la-fastDNAparsimony.lo: fastDNAparsimony.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_pthreads_la_CFLAGS) $(CFLAGS) -MT libpll_avx_pthreads_la-fastDNAparsimony.lo -MD -MP -MF $(DEPDIR)/libpll_avx_pthreads_la-fastDNAparsimony.Tpo -c -o libpll_avx_pthreads_la-fastDNAparsimony.lo `test -f 'fastDNAparsimony.c' || echo '$(srcdir)/'`fastDNAparsimony.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_avx_pthreads_la-fastDNAparsimony.Tpo $(DEPDIR)/libpll_avx_pthreads_la-fastDNAparsimony.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='fastDNAparsimony.c' object='libpll_avx_pthreads_la-fastDNAparsimony.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_pthreads_la_CFLAGS) $(CFLAGS) -c -o libpll_avx_pthreads_la-fastDNAparsimony.lo `test -f 'fastDNAparsimony.c' || echo '$(srcdir)/'`fastDNAparsimony.c
+
+libpll_avx_pthreads_la-treeIO.lo: treeIO.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_pthreads_la_CFLAGS) $(CFLAGS) -MT libpll_avx_pthreads_la-treeIO.lo -MD -MP -MF $(DEPDIR)/libpll_avx_pthreads_la-treeIO.Tpo -c -o libpll_avx_pthreads_la-treeIO.lo `test -f 'treeIO.c' || echo '$(srcdir)/'`treeIO.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_avx_pthreads_la-treeIO.Tpo $(DEPDIR)/libpll_avx_pthreads_la-treeIO.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='treeIO.c' object='libpll_avx_pthreads_la-treeIO.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_pthreads_la_CFLAGS) $(CFLAGS) -c -o libpll_avx_pthreads_la-treeIO.lo `test -f 'treeIO.c' || echo '$(srcdir)/'`treeIO.c
+
+libpll_avx_pthreads_la-models.lo: models.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_pthreads_la_CFLAGS) $(CFLAGS) -MT libpll_avx_pthreads_la-models.lo -MD -MP -MF $(DEPDIR)/libpll_avx_pthreads_la-models.Tpo -c -o libpll_avx_pthreads_la-models.lo `test -f 'models.c' || echo '$(srcdir)/'`models.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_avx_pthreads_la-models.Tpo $(DEPDIR)/libpll_avx_pthreads_la-models.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='models.c' object='libpll_avx_pthreads_la-models.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_pthreads_la_CFLAGS) $(CFLAGS) -c -o libpll_avx_pthreads_la-models.lo `test -f 'models.c' || echo '$(srcdir)/'`models.c
+
+libpll_avx_pthreads_la-evaluatePartialGenericSpecial.lo: evaluatePartialGenericSpecial.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_pthreads_la_CFLAGS) $(CFLAGS) -MT libpll_avx_pthreads_la-evaluatePartialGenericSpecial.lo -MD -MP -MF $(DEPDIR)/libpll_avx_pthreads_la-evaluatePartialGenericSpecial.Tpo -c -o libpll_avx_pthreads_la-evaluatePartialGenericSpecial.lo `test -f 'evaluatePartialGenericSpecial.c' || echo '$(srcdir)/' [...]
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_avx_pthreads_la-evaluatePartialGenericSpecial.Tpo $(DEPDIR)/libpll_avx_pthreads_la-evaluatePartialGenericSpecial.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='evaluatePartialGenericSpecial.c' object='libpll_avx_pthreads_la-evaluatePartialGenericSpecial.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_pthreads_la_CFLAGS) $(CFLAGS) -c -o libpll_avx_pthreads_la-evaluatePartialGenericSpecial.lo `test -f 'evaluatePartialGenericSpecial.c' || echo '$(srcdir)/'`evaluatePartialGenericSpecial.c
+
+libpll_avx_pthreads_la-evaluateGenericSpecial.lo: evaluateGenericSpecial.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_pthreads_la_CFLAGS) $(CFLAGS) -MT libpll_avx_pthreads_la-evaluateGenericSpecial.lo -MD -MP -MF $(DEPDIR)/libpll_avx_pthreads_la-evaluateGenericSpecial.Tpo -c -o libpll_avx_pthreads_la-evaluateGenericSpecial.lo `test -f 'evaluateGenericSpecial.c' || echo '$(srcdir)/'`evaluateGenericSpecial.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_avx_pthreads_la-evaluateGenericSpecial.Tpo $(DEPDIR)/libpll_avx_pthreads_la-evaluateGenericSpecial.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='evaluateGenericSpecial.c' object='libpll_avx_pthreads_la-evaluateGenericSpecial.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_pthreads_la_CFLAGS) $(CFLAGS) -c -o libpll_avx_pthreads_la-evaluateGenericSpecial.lo `test -f 'evaluateGenericSpecial.c' || echo '$(srcdir)/'`evaluateGenericSpecial.c
+
+libpll_avx_pthreads_la-newviewGenericSpecial.lo: newviewGenericSpecial.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_pthreads_la_CFLAGS) $(CFLAGS) -MT libpll_avx_pthreads_la-newviewGenericSpecial.lo -MD -MP -MF $(DEPDIR)/libpll_avx_pthreads_la-newviewGenericSpecial.Tpo -c -o libpll_avx_pthreads_la-newviewGenericSpecial.lo `test -f 'newviewGenericSpecial.c' || echo '$(srcdir)/'`newviewGenericSpecial.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_avx_pthreads_la-newviewGenericSpecial.Tpo $(DEPDIR)/libpll_avx_pthreads_la-newviewGenericSpecial.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='newviewGenericSpecial.c' object='libpll_avx_pthreads_la-newviewGenericSpecial.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_pthreads_la_CFLAGS) $(CFLAGS) -c -o libpll_avx_pthreads_la-newviewGenericSpecial.lo `test -f 'newviewGenericSpecial.c' || echo '$(srcdir)/'`newviewGenericSpecial.c
+
+libpll_avx_pthreads_la-makenewzGenericSpecial.lo: makenewzGenericSpecial.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_pthreads_la_CFLAGS) $(CFLAGS) -MT libpll_avx_pthreads_la-makenewzGenericSpecial.lo -MD -MP -MF $(DEPDIR)/libpll_avx_pthreads_la-makenewzGenericSpecial.Tpo -c -o libpll_avx_pthreads_la-makenewzGenericSpecial.lo `test -f 'makenewzGenericSpecial.c' || echo '$(srcdir)/'`makenewzGenericSpecial.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_avx_pthreads_la-makenewzGenericSpecial.Tpo $(DEPDIR)/libpll_avx_pthreads_la-makenewzGenericSpecial.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='makenewzGenericSpecial.c' object='libpll_avx_pthreads_la-makenewzGenericSpecial.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_pthreads_la_CFLAGS) $(CFLAGS) -c -o libpll_avx_pthreads_la-makenewzGenericSpecial.lo `test -f 'makenewzGenericSpecial.c' || echo '$(srcdir)/'`makenewzGenericSpecial.c
+
+libpll_avx_pthreads_la-bipartitionList.lo: bipartitionList.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_pthreads_la_CFLAGS) $(CFLAGS) -MT libpll_avx_pthreads_la-bipartitionList.lo -MD -MP -MF $(DEPDIR)/libpll_avx_pthreads_la-bipartitionList.Tpo -c -o libpll_avx_pthreads_la-bipartitionList.lo `test -f 'bipartitionList.c' || echo '$(srcdir)/'`bipartitionList.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_avx_pthreads_la-bipartitionList.Tpo $(DEPDIR)/libpll_avx_pthreads_la-bipartitionList.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='bipartitionList.c' object='libpll_avx_pthreads_la-bipartitionList.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_pthreads_la_CFLAGS) $(CFLAGS) -c -o libpll_avx_pthreads_la-bipartitionList.lo `test -f 'bipartitionList.c' || echo '$(srcdir)/'`bipartitionList.c
+
+libpll_avx_pthreads_la-restartHashTable.lo: restartHashTable.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_pthreads_la_CFLAGS) $(CFLAGS) -MT libpll_avx_pthreads_la-restartHashTable.lo -MD -MP -MF $(DEPDIR)/libpll_avx_pthreads_la-restartHashTable.Tpo -c -o libpll_avx_pthreads_la-restartHashTable.lo `test -f 'restartHashTable.c' || echo '$(srcdir)/'`restartHashTable.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_avx_pthreads_la-restartHashTable.Tpo $(DEPDIR)/libpll_avx_pthreads_la-restartHashTable.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='restartHashTable.c' object='libpll_avx_pthreads_la-restartHashTable.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_pthreads_la_CFLAGS) $(CFLAGS) -c -o libpll_avx_pthreads_la-restartHashTable.lo `test -f 'restartHashTable.c' || echo '$(srcdir)/'`restartHashTable.c
+
+libpll_avx_pthreads_la-recom.lo: recom.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_pthreads_la_CFLAGS) $(CFLAGS) -MT libpll_avx_pthreads_la-recom.lo -MD -MP -MF $(DEPDIR)/libpll_avx_pthreads_la-recom.Tpo -c -o libpll_avx_pthreads_la-recom.lo `test -f 'recom.c' || echo '$(srcdir)/'`recom.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_avx_pthreads_la-recom.Tpo $(DEPDIR)/libpll_avx_pthreads_la-recom.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='recom.c' object='libpll_avx_pthreads_la-recom.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_pthreads_la_CFLAGS) $(CFLAGS) -c -o libpll_avx_pthreads_la-recom.lo `test -f 'recom.c' || echo '$(srcdir)/'`recom.c
+
+libpll_avx_pthreads_la-lexer.lo: lexer.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_pthreads_la_CFLAGS) $(CFLAGS) -MT libpll_avx_pthreads_la-lexer.lo -MD -MP -MF $(DEPDIR)/libpll_avx_pthreads_la-lexer.Tpo -c -o libpll_avx_pthreads_la-lexer.lo `test -f 'lexer.c' || echo '$(srcdir)/'`lexer.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_avx_pthreads_la-lexer.Tpo $(DEPDIR)/libpll_avx_pthreads_la-lexer.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='lexer.c' object='libpll_avx_pthreads_la-lexer.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_pthreads_la_CFLAGS) $(CFLAGS) -c -o libpll_avx_pthreads_la-lexer.lo `test -f 'lexer.c' || echo '$(srcdir)/'`lexer.c
+
+libpll_avx_pthreads_la-alignment.lo: alignment.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_pthreads_la_CFLAGS) $(CFLAGS) -MT libpll_avx_pthreads_la-alignment.lo -MD -MP -MF $(DEPDIR)/libpll_avx_pthreads_la-alignment.Tpo -c -o libpll_avx_pthreads_la-alignment.lo `test -f 'alignment.c' || echo '$(srcdir)/'`alignment.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_avx_pthreads_la-alignment.Tpo $(DEPDIR)/libpll_avx_pthreads_la-alignment.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='alignment.c' object='libpll_avx_pthreads_la-alignment.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_pthreads_la_CFLAGS) $(CFLAGS) -c -o libpll_avx_pthreads_la-alignment.lo `test -f 'alignment.c' || echo '$(srcdir)/'`alignment.c
+
+libpll_avx_pthreads_la-newick.lo: newick.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_pthreads_la_CFLAGS) $(CFLAGS) -MT libpll_avx_pthreads_la-newick.lo -MD -MP -MF $(DEPDIR)/libpll_avx_pthreads_la-newick.Tpo -c -o libpll_avx_pthreads_la-newick.lo `test -f 'newick.c' || echo '$(srcdir)/'`newick.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_avx_pthreads_la-newick.Tpo $(DEPDIR)/libpll_avx_pthreads_la-newick.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='newick.c' object='libpll_avx_pthreads_la-newick.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_pthreads_la_CFLAGS) $(CFLAGS) -c -o libpll_avx_pthreads_la-newick.lo `test -f 'newick.c' || echo '$(srcdir)/'`newick.c
+
+libpll_avx_pthreads_la-parsePartition.lo: parsePartition.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_pthreads_la_CFLAGS) $(CFLAGS) -MT libpll_avx_pthreads_la-parsePartition.lo -MD -MP -MF $(DEPDIR)/libpll_avx_pthreads_la-parsePartition.Tpo -c -o libpll_avx_pthreads_la-parsePartition.lo `test -f 'parsePartition.c' || echo '$(srcdir)/'`parsePartition.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_avx_pthreads_la-parsePartition.Tpo $(DEPDIR)/libpll_avx_pthreads_la-parsePartition.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='parsePartition.c' object='libpll_avx_pthreads_la-parsePartition.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_pthreads_la_CFLAGS) $(CFLAGS) -c -o libpll_avx_pthreads_la-parsePartition.lo `test -f 'parsePartition.c' || echo '$(srcdir)/'`parsePartition.c
+
+libpll_avx_pthreads_la-parsimony.lo: parsimony.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_pthreads_la_CFLAGS) $(CFLAGS) -MT libpll_avx_pthreads_la-parsimony.lo -MD -MP -MF $(DEPDIR)/libpll_avx_pthreads_la-parsimony.Tpo -c -o libpll_avx_pthreads_la-parsimony.lo `test -f 'parsimony.c' || echo '$(srcdir)/'`parsimony.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_avx_pthreads_la-parsimony.Tpo $(DEPDIR)/libpll_avx_pthreads_la-parsimony.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='parsimony.c' object='libpll_avx_pthreads_la-parsimony.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_pthreads_la_CFLAGS) $(CFLAGS) -c -o libpll_avx_pthreads_la-parsimony.lo `test -f 'parsimony.c' || echo '$(srcdir)/'`parsimony.c
+
+libpll_avx_la-avxLikelihood.lo: avxLikelihood.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_la_CFLAGS) $(CFLAGS) -MT libpll_avx_la-avxLikelihood.lo -MD -MP -MF $(DEPDIR)/libpll_avx_la-avxLikelihood.Tpo -c -o libpll_avx_la-avxLikelihood.lo `test -f 'avxLikelihood.c' || echo '$(srcdir)/'`avxLikelihood.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_avx_la-avxLikelihood.Tpo $(DEPDIR)/libpll_avx_la-avxLikelihood.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='avxLikelihood.c' object='libpll_avx_la-avxLikelihood.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_la_CFLAGS) $(CFLAGS) -c -o libpll_avx_la-avxLikelihood.lo `test -f 'avxLikelihood.c' || echo '$(srcdir)/'`avxLikelihood.c
+
+libpll_avx_la-hash.lo: hash.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_la_CFLAGS) $(CFLAGS) -MT libpll_avx_la-hash.lo -MD -MP -MF $(DEPDIR)/libpll_avx_la-hash.Tpo -c -o libpll_avx_la-hash.lo `test -f 'hash.c' || echo '$(srcdir)/'`hash.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_avx_la-hash.Tpo $(DEPDIR)/libpll_avx_la-hash.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='hash.c' object='libpll_avx_la-hash.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_la_CFLAGS) $(CFLAGS) -c -o libpll_avx_la-hash.lo `test -f 'hash.c' || echo '$(srcdir)/'`hash.c
+
+libpll_avx_la-stack.lo: stack.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_la_CFLAGS) $(CFLAGS) -MT libpll_avx_la-stack.lo -MD -MP -MF $(DEPDIR)/libpll_avx_la-stack.Tpo -c -o libpll_avx_la-stack.lo `test -f 'stack.c' || echo '$(srcdir)/'`stack.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_avx_la-stack.Tpo $(DEPDIR)/libpll_avx_la-stack.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='stack.c' object='libpll_avx_la-stack.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_la_CFLAGS) $(CFLAGS) -c -o libpll_avx_la-stack.lo `test -f 'stack.c' || echo '$(srcdir)/'`stack.c
+
+libpll_avx_la-ssort.lo: ssort.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_la_CFLAGS) $(CFLAGS) -MT libpll_avx_la-ssort.lo -MD -MP -MF $(DEPDIR)/libpll_avx_la-ssort.Tpo -c -o libpll_avx_la-ssort.lo `test -f 'ssort.c' || echo '$(srcdir)/'`ssort.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_avx_la-ssort.Tpo $(DEPDIR)/libpll_avx_la-ssort.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ssort.c' object='libpll_avx_la-ssort.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_la_CFLAGS) $(CFLAGS) -c -o libpll_avx_la-ssort.lo `test -f 'ssort.c' || echo '$(srcdir)/'`ssort.c
+
+libpll_avx_la-queue.lo: queue.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_la_CFLAGS) $(CFLAGS) -MT libpll_avx_la-queue.lo -MD -MP -MF $(DEPDIR)/libpll_avx_la-queue.Tpo -c -o libpll_avx_la-queue.lo `test -f 'queue.c' || echo '$(srcdir)/'`queue.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_avx_la-queue.Tpo $(DEPDIR)/libpll_avx_la-queue.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='queue.c' object='libpll_avx_la-queue.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_la_CFLAGS) $(CFLAGS) -c -o libpll_avx_la-queue.lo `test -f 'queue.c' || echo '$(srcdir)/'`queue.c
+
+libpll_avx_la-utils.lo: utils.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_la_CFLAGS) $(CFLAGS) -MT libpll_avx_la-utils.lo -MD -MP -MF $(DEPDIR)/libpll_avx_la-utils.Tpo -c -o libpll_avx_la-utils.lo `test -f 'utils.c' || echo '$(srcdir)/'`utils.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_avx_la-utils.Tpo $(DEPDIR)/libpll_avx_la-utils.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='utils.c' object='libpll_avx_la-utils.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_la_CFLAGS) $(CFLAGS) -c -o libpll_avx_la-utils.lo `test -f 'utils.c' || echo '$(srcdir)/'`utils.c
+
+libpll_avx_la-randomTree.lo: randomTree.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_la_CFLAGS) $(CFLAGS) -MT libpll_avx_la-randomTree.lo -MD -MP -MF $(DEPDIR)/libpll_avx_la-randomTree.Tpo -c -o libpll_avx_la-randomTree.lo `test -f 'randomTree.c' || echo '$(srcdir)/'`randomTree.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_avx_la-randomTree.Tpo $(DEPDIR)/libpll_avx_la-randomTree.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='randomTree.c' object='libpll_avx_la-randomTree.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_la_CFLAGS) $(CFLAGS) -c -o libpll_avx_la-randomTree.lo `test -f 'randomTree.c' || echo '$(srcdir)/'`randomTree.c
+
+libpll_avx_la-optimizeModel.lo: optimizeModel.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_la_CFLAGS) $(CFLAGS) -MT libpll_avx_la-optimizeModel.lo -MD -MP -MF $(DEPDIR)/libpll_avx_la-optimizeModel.Tpo -c -o libpll_avx_la-optimizeModel.lo `test -f 'optimizeModel.c' || echo '$(srcdir)/'`optimizeModel.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_avx_la-optimizeModel.Tpo $(DEPDIR)/libpll_avx_la-optimizeModel.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='optimizeModel.c' object='libpll_avx_la-optimizeModel.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_la_CFLAGS) $(CFLAGS) -c -o libpll_avx_la-optimizeModel.lo `test -f 'optimizeModel.c' || echo '$(srcdir)/'`optimizeModel.c
+
+libpll_avx_la-trash.lo: trash.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_la_CFLAGS) $(CFLAGS) -MT libpll_avx_la-trash.lo -MD -MP -MF $(DEPDIR)/libpll_avx_la-trash.Tpo -c -o libpll_avx_la-trash.lo `test -f 'trash.c' || echo '$(srcdir)/'`trash.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_avx_la-trash.Tpo $(DEPDIR)/libpll_avx_la-trash.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='trash.c' object='libpll_avx_la-trash.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_la_CFLAGS) $(CFLAGS) -c -o libpll_avx_la-trash.lo `test -f 'trash.c' || echo '$(srcdir)/'`trash.c
+
+libpll_avx_la-searchAlgo.lo: searchAlgo.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_la_CFLAGS) $(CFLAGS) -MT libpll_avx_la-searchAlgo.lo -MD -MP -MF $(DEPDIR)/libpll_avx_la-searchAlgo.Tpo -c -o libpll_avx_la-searchAlgo.lo `test -f 'searchAlgo.c' || echo '$(srcdir)/'`searchAlgo.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_avx_la-searchAlgo.Tpo $(DEPDIR)/libpll_avx_la-searchAlgo.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='searchAlgo.c' object='libpll_avx_la-searchAlgo.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_la_CFLAGS) $(CFLAGS) -c -o libpll_avx_la-searchAlgo.lo `test -f 'searchAlgo.c' || echo '$(srcdir)/'`searchAlgo.c
+
+libpll_avx_la-topologies.lo: topologies.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_la_CFLAGS) $(CFLAGS) -MT libpll_avx_la-topologies.lo -MD -MP -MF $(DEPDIR)/libpll_avx_la-topologies.Tpo -c -o libpll_avx_la-topologies.lo `test -f 'topologies.c' || echo '$(srcdir)/'`topologies.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_avx_la-topologies.Tpo $(DEPDIR)/libpll_avx_la-topologies.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='topologies.c' object='libpll_avx_la-topologies.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_la_CFLAGS) $(CFLAGS) -c -o libpll_avx_la-topologies.lo `test -f 'topologies.c' || echo '$(srcdir)/'`topologies.c
+
+libpll_avx_la-fastDNAparsimony.lo: fastDNAparsimony.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_la_CFLAGS) $(CFLAGS) -MT libpll_avx_la-fastDNAparsimony.lo -MD -MP -MF $(DEPDIR)/libpll_avx_la-fastDNAparsimony.Tpo -c -o libpll_avx_la-fastDNAparsimony.lo `test -f 'fastDNAparsimony.c' || echo '$(srcdir)/'`fastDNAparsimony.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_avx_la-fastDNAparsimony.Tpo $(DEPDIR)/libpll_avx_la-fastDNAparsimony.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='fastDNAparsimony.c' object='libpll_avx_la-fastDNAparsimony.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_la_CFLAGS) $(CFLAGS) -c -o libpll_avx_la-fastDNAparsimony.lo `test -f 'fastDNAparsimony.c' || echo '$(srcdir)/'`fastDNAparsimony.c
+
+libpll_avx_la-treeIO.lo: treeIO.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_la_CFLAGS) $(CFLAGS) -MT libpll_avx_la-treeIO.lo -MD -MP -MF $(DEPDIR)/libpll_avx_la-treeIO.Tpo -c -o libpll_avx_la-treeIO.lo `test -f 'treeIO.c' || echo '$(srcdir)/'`treeIO.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_avx_la-treeIO.Tpo $(DEPDIR)/libpll_avx_la-treeIO.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='treeIO.c' object='libpll_avx_la-treeIO.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_la_CFLAGS) $(CFLAGS) -c -o libpll_avx_la-treeIO.lo `test -f 'treeIO.c' || echo '$(srcdir)/'`treeIO.c
+
+libpll_avx_la-models.lo: models.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_la_CFLAGS) $(CFLAGS) -MT libpll_avx_la-models.lo -MD -MP -MF $(DEPDIR)/libpll_avx_la-models.Tpo -c -o libpll_avx_la-models.lo `test -f 'models.c' || echo '$(srcdir)/'`models.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_avx_la-models.Tpo $(DEPDIR)/libpll_avx_la-models.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='models.c' object='libpll_avx_la-models.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_la_CFLAGS) $(CFLAGS) -c -o libpll_avx_la-models.lo `test -f 'models.c' || echo '$(srcdir)/'`models.c
+
+libpll_avx_la-evaluatePartialGenericSpecial.lo: evaluatePartialGenericSpecial.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_la_CFLAGS) $(CFLAGS) -MT libpll_avx_la-evaluatePartialGenericSpecial.lo -MD -MP -MF $(DEPDIR)/libpll_avx_la-evaluatePartialGenericSpecial.Tpo -c -o libpll_avx_la-evaluatePartialGenericSpecial.lo `test -f 'evaluatePartialGenericSpecial.c' || echo '$(srcdir)/'`evaluatePartialGenericSpecial.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_avx_la-evaluatePartialGenericSpecial.Tpo $(DEPDIR)/libpll_avx_la-evaluatePartialGenericSpecial.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='evaluatePartialGenericSpecial.c' object='libpll_avx_la-evaluatePartialGenericSpecial.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_la_CFLAGS) $(CFLAGS) -c -o libpll_avx_la-evaluatePartialGenericSpecial.lo `test -f 'evaluatePartialGenericSpecial.c' || echo '$(srcdir)/'`evaluatePartialGenericSpecial.c
+
+libpll_avx_la-evaluateGenericSpecial.lo: evaluateGenericSpecial.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_la_CFLAGS) $(CFLAGS) -MT libpll_avx_la-evaluateGenericSpecial.lo -MD -MP -MF $(DEPDIR)/libpll_avx_la-evaluateGenericSpecial.Tpo -c -o libpll_avx_la-evaluateGenericSpecial.lo `test -f 'evaluateGenericSpecial.c' || echo '$(srcdir)/'`evaluateGenericSpecial.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_avx_la-evaluateGenericSpecial.Tpo $(DEPDIR)/libpll_avx_la-evaluateGenericSpecial.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='evaluateGenericSpecial.c' object='libpll_avx_la-evaluateGenericSpecial.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_la_CFLAGS) $(CFLAGS) -c -o libpll_avx_la-evaluateGenericSpecial.lo `test -f 'evaluateGenericSpecial.c' || echo '$(srcdir)/'`evaluateGenericSpecial.c
+
+libpll_avx_la-newviewGenericSpecial.lo: newviewGenericSpecial.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_la_CFLAGS) $(CFLAGS) -MT libpll_avx_la-newviewGenericSpecial.lo -MD -MP -MF $(DEPDIR)/libpll_avx_la-newviewGenericSpecial.Tpo -c -o libpll_avx_la-newviewGenericSpecial.lo `test -f 'newviewGenericSpecial.c' || echo '$(srcdir)/'`newviewGenericSpecial.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_avx_la-newviewGenericSpecial.Tpo $(DEPDIR)/libpll_avx_la-newviewGenericSpecial.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='newviewGenericSpecial.c' object='libpll_avx_la-newviewGenericSpecial.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_la_CFLAGS) $(CFLAGS) -c -o libpll_avx_la-newviewGenericSpecial.lo `test -f 'newviewGenericSpecial.c' || echo '$(srcdir)/'`newviewGenericSpecial.c
+
+libpll_avx_la-makenewzGenericSpecial.lo: makenewzGenericSpecial.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_la_CFLAGS) $(CFLAGS) -MT libpll_avx_la-makenewzGenericSpecial.lo -MD -MP -MF $(DEPDIR)/libpll_avx_la-makenewzGenericSpecial.Tpo -c -o libpll_avx_la-makenewzGenericSpecial.lo `test -f 'makenewzGenericSpecial.c' || echo '$(srcdir)/'`makenewzGenericSpecial.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_avx_la-makenewzGenericSpecial.Tpo $(DEPDIR)/libpll_avx_la-makenewzGenericSpecial.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='makenewzGenericSpecial.c' object='libpll_avx_la-makenewzGenericSpecial.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_la_CFLAGS) $(CFLAGS) -c -o libpll_avx_la-makenewzGenericSpecial.lo `test -f 'makenewzGenericSpecial.c' || echo '$(srcdir)/'`makenewzGenericSpecial.c
+
+libpll_avx_la-bipartitionList.lo: bipartitionList.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_la_CFLAGS) $(CFLAGS) -MT libpll_avx_la-bipartitionList.lo -MD -MP -MF $(DEPDIR)/libpll_avx_la-bipartitionList.Tpo -c -o libpll_avx_la-bipartitionList.lo `test -f 'bipartitionList.c' || echo '$(srcdir)/'`bipartitionList.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_avx_la-bipartitionList.Tpo $(DEPDIR)/libpll_avx_la-bipartitionList.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='bipartitionList.c' object='libpll_avx_la-bipartitionList.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_la_CFLAGS) $(CFLAGS) -c -o libpll_avx_la-bipartitionList.lo `test -f 'bipartitionList.c' || echo '$(srcdir)/'`bipartitionList.c
+
+libpll_avx_la-restartHashTable.lo: restartHashTable.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_la_CFLAGS) $(CFLAGS) -MT libpll_avx_la-restartHashTable.lo -MD -MP -MF $(DEPDIR)/libpll_avx_la-restartHashTable.Tpo -c -o libpll_avx_la-restartHashTable.lo `test -f 'restartHashTable.c' || echo '$(srcdir)/'`restartHashTable.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_avx_la-restartHashTable.Tpo $(DEPDIR)/libpll_avx_la-restartHashTable.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='restartHashTable.c' object='libpll_avx_la-restartHashTable.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_la_CFLAGS) $(CFLAGS) -c -o libpll_avx_la-restartHashTable.lo `test -f 'restartHashTable.c' || echo '$(srcdir)/'`restartHashTable.c
+
+libpll_avx_la-recom.lo: recom.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_la_CFLAGS) $(CFLAGS) -MT libpll_avx_la-recom.lo -MD -MP -MF $(DEPDIR)/libpll_avx_la-recom.Tpo -c -o libpll_avx_la-recom.lo `test -f 'recom.c' || echo '$(srcdir)/'`recom.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_avx_la-recom.Tpo $(DEPDIR)/libpll_avx_la-recom.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='recom.c' object='libpll_avx_la-recom.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_la_CFLAGS) $(CFLAGS) -c -o libpll_avx_la-recom.lo `test -f 'recom.c' || echo '$(srcdir)/'`recom.c
+
+libpll_avx_la-lexer.lo: lexer.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_la_CFLAGS) $(CFLAGS) -MT libpll_avx_la-lexer.lo -MD -MP -MF $(DEPDIR)/libpll_avx_la-lexer.Tpo -c -o libpll_avx_la-lexer.lo `test -f 'lexer.c' || echo '$(srcdir)/'`lexer.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_avx_la-lexer.Tpo $(DEPDIR)/libpll_avx_la-lexer.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='lexer.c' object='libpll_avx_la-lexer.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_la_CFLAGS) $(CFLAGS) -c -o libpll_avx_la-lexer.lo `test -f 'lexer.c' || echo '$(srcdir)/'`lexer.c
+
+libpll_avx_la-alignment.lo: alignment.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_la_CFLAGS) $(CFLAGS) -MT libpll_avx_la-alignment.lo -MD -MP -MF $(DEPDIR)/libpll_avx_la-alignment.Tpo -c -o libpll_avx_la-alignment.lo `test -f 'alignment.c' || echo '$(srcdir)/'`alignment.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_avx_la-alignment.Tpo $(DEPDIR)/libpll_avx_la-alignment.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='alignment.c' object='libpll_avx_la-alignment.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_la_CFLAGS) $(CFLAGS) -c -o libpll_avx_la-alignment.lo `test -f 'alignment.c' || echo '$(srcdir)/'`alignment.c
+
+libpll_avx_la-newick.lo: newick.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_la_CFLAGS) $(CFLAGS) -MT libpll_avx_la-newick.lo -MD -MP -MF $(DEPDIR)/libpll_avx_la-newick.Tpo -c -o libpll_avx_la-newick.lo `test -f 'newick.c' || echo '$(srcdir)/'`newick.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_avx_la-newick.Tpo $(DEPDIR)/libpll_avx_la-newick.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='newick.c' object='libpll_avx_la-newick.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_la_CFLAGS) $(CFLAGS) -c -o libpll_avx_la-newick.lo `test -f 'newick.c' || echo '$(srcdir)/'`newick.c
+
+libpll_avx_la-parsePartition.lo: parsePartition.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_la_CFLAGS) $(CFLAGS) -MT libpll_avx_la-parsePartition.lo -MD -MP -MF $(DEPDIR)/libpll_avx_la-parsePartition.Tpo -c -o libpll_avx_la-parsePartition.lo `test -f 'parsePartition.c' || echo '$(srcdir)/'`parsePartition.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_avx_la-parsePartition.Tpo $(DEPDIR)/libpll_avx_la-parsePartition.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='parsePartition.c' object='libpll_avx_la-parsePartition.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_la_CFLAGS) $(CFLAGS) -c -o libpll_avx_la-parsePartition.lo `test -f 'parsePartition.c' || echo '$(srcdir)/'`parsePartition.c
+
+libpll_avx_la-parsimony.lo: parsimony.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_la_CFLAGS) $(CFLAGS) -MT libpll_avx_la-parsimony.lo -MD -MP -MF $(DEPDIR)/libpll_avx_la-parsimony.Tpo -c -o libpll_avx_la-parsimony.lo `test -f 'parsimony.c' || echo '$(srcdir)/'`parsimony.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_avx_la-parsimony.Tpo $(DEPDIR)/libpll_avx_la-parsimony.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='parsimony.c' object='libpll_avx_la-parsimony.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_avx_la_CFLAGS) $(CFLAGS) -c -o libpll_avx_la-parsimony.lo `test -f 'parsimony.c' || echo '$(srcdir)/'`parsimony.c
+
+libpll_sse3_pthreads_la-genericParallelization.lo: genericParallelization.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_pthreads_la_CFLAGS) $(CFLAGS) -MT libpll_sse3_pthreads_la-genericParallelization.lo -MD -MP -MF $(DEPDIR)/libpll_sse3_pthreads_la-genericParallelization.Tpo -c -o libpll_sse3_pthreads_la-genericParallelization.lo `test -f 'genericParallelization.c' || echo '$(srcdir)/'`genericParallelization.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_sse3_pthreads_la-genericParallelization.Tpo $(DEPDIR)/libpll_sse3_pthreads_la-genericParallelization.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='genericParallelization.c' object='libpll_sse3_pthreads_la-genericParallelization.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_pthreads_la_CFLAGS) $(CFLAGS) -c -o libpll_sse3_pthreads_la-genericParallelization.lo `test -f 'genericParallelization.c' || echo '$(srcdir)/'`genericParallelization.c
+
+libpll_sse3_pthreads_la-hash.lo: hash.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_pthreads_la_CFLAGS) $(CFLAGS) -MT libpll_sse3_pthreads_la-hash.lo -MD -MP -MF $(DEPDIR)/libpll_sse3_pthreads_la-hash.Tpo -c -o libpll_sse3_pthreads_la-hash.lo `test -f 'hash.c' || echo '$(srcdir)/'`hash.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_sse3_pthreads_la-hash.Tpo $(DEPDIR)/libpll_sse3_pthreads_la-hash.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='hash.c' object='libpll_sse3_pthreads_la-hash.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_pthreads_la_CFLAGS) $(CFLAGS) -c -o libpll_sse3_pthreads_la-hash.lo `test -f 'hash.c' || echo '$(srcdir)/'`hash.c
+
+libpll_sse3_pthreads_la-stack.lo: stack.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_pthreads_la_CFLAGS) $(CFLAGS) -MT libpll_sse3_pthreads_la-stack.lo -MD -MP -MF $(DEPDIR)/libpll_sse3_pthreads_la-stack.Tpo -c -o libpll_sse3_pthreads_la-stack.lo `test -f 'stack.c' || echo '$(srcdir)/'`stack.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_sse3_pthreads_la-stack.Tpo $(DEPDIR)/libpll_sse3_pthreads_la-stack.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='stack.c' object='libpll_sse3_pthreads_la-stack.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_pthreads_la_CFLAGS) $(CFLAGS) -c -o libpll_sse3_pthreads_la-stack.lo `test -f 'stack.c' || echo '$(srcdir)/'`stack.c
+
+libpll_sse3_pthreads_la-ssort.lo: ssort.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_pthreads_la_CFLAGS) $(CFLAGS) -MT libpll_sse3_pthreads_la-ssort.lo -MD -MP -MF $(DEPDIR)/libpll_sse3_pthreads_la-ssort.Tpo -c -o libpll_sse3_pthreads_la-ssort.lo `test -f 'ssort.c' || echo '$(srcdir)/'`ssort.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_sse3_pthreads_la-ssort.Tpo $(DEPDIR)/libpll_sse3_pthreads_la-ssort.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ssort.c' object='libpll_sse3_pthreads_la-ssort.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_pthreads_la_CFLAGS) $(CFLAGS) -c -o libpll_sse3_pthreads_la-ssort.lo `test -f 'ssort.c' || echo '$(srcdir)/'`ssort.c
+
+libpll_sse3_pthreads_la-queue.lo: queue.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_pthreads_la_CFLAGS) $(CFLAGS) -MT libpll_sse3_pthreads_la-queue.lo -MD -MP -MF $(DEPDIR)/libpll_sse3_pthreads_la-queue.Tpo -c -o libpll_sse3_pthreads_la-queue.lo `test -f 'queue.c' || echo '$(srcdir)/'`queue.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_sse3_pthreads_la-queue.Tpo $(DEPDIR)/libpll_sse3_pthreads_la-queue.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='queue.c' object='libpll_sse3_pthreads_la-queue.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_pthreads_la_CFLAGS) $(CFLAGS) -c -o libpll_sse3_pthreads_la-queue.lo `test -f 'queue.c' || echo '$(srcdir)/'`queue.c
+
+libpll_sse3_pthreads_la-utils.lo: utils.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_pthreads_la_CFLAGS) $(CFLAGS) -MT libpll_sse3_pthreads_la-utils.lo -MD -MP -MF $(DEPDIR)/libpll_sse3_pthreads_la-utils.Tpo -c -o libpll_sse3_pthreads_la-utils.lo `test -f 'utils.c' || echo '$(srcdir)/'`utils.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_sse3_pthreads_la-utils.Tpo $(DEPDIR)/libpll_sse3_pthreads_la-utils.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='utils.c' object='libpll_sse3_pthreads_la-utils.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_pthreads_la_CFLAGS) $(CFLAGS) -c -o libpll_sse3_pthreads_la-utils.lo `test -f 'utils.c' || echo '$(srcdir)/'`utils.c
+
+libpll_sse3_pthreads_la-randomTree.lo: randomTree.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_pthreads_la_CFLAGS) $(CFLAGS) -MT libpll_sse3_pthreads_la-randomTree.lo -MD -MP -MF $(DEPDIR)/libpll_sse3_pthreads_la-randomTree.Tpo -c -o libpll_sse3_pthreads_la-randomTree.lo `test -f 'randomTree.c' || echo '$(srcdir)/'`randomTree.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_sse3_pthreads_la-randomTree.Tpo $(DEPDIR)/libpll_sse3_pthreads_la-randomTree.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='randomTree.c' object='libpll_sse3_pthreads_la-randomTree.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_pthreads_la_CFLAGS) $(CFLAGS) -c -o libpll_sse3_pthreads_la-randomTree.lo `test -f 'randomTree.c' || echo '$(srcdir)/'`randomTree.c
+
+libpll_sse3_pthreads_la-optimizeModel.lo: optimizeModel.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_pthreads_la_CFLAGS) $(CFLAGS) -MT libpll_sse3_pthreads_la-optimizeModel.lo -MD -MP -MF $(DEPDIR)/libpll_sse3_pthreads_la-optimizeModel.Tpo -c -o libpll_sse3_pthreads_la-optimizeModel.lo `test -f 'optimizeModel.c' || echo '$(srcdir)/'`optimizeModel.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_sse3_pthreads_la-optimizeModel.Tpo $(DEPDIR)/libpll_sse3_pthreads_la-optimizeModel.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='optimizeModel.c' object='libpll_sse3_pthreads_la-optimizeModel.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_pthreads_la_CFLAGS) $(CFLAGS) -c -o libpll_sse3_pthreads_la-optimizeModel.lo `test -f 'optimizeModel.c' || echo '$(srcdir)/'`optimizeModel.c
+
+libpll_sse3_pthreads_la-trash.lo: trash.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_pthreads_la_CFLAGS) $(CFLAGS) -MT libpll_sse3_pthreads_la-trash.lo -MD -MP -MF $(DEPDIR)/libpll_sse3_pthreads_la-trash.Tpo -c -o libpll_sse3_pthreads_la-trash.lo `test -f 'trash.c' || echo '$(srcdir)/'`trash.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_sse3_pthreads_la-trash.Tpo $(DEPDIR)/libpll_sse3_pthreads_la-trash.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='trash.c' object='libpll_sse3_pthreads_la-trash.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_pthreads_la_CFLAGS) $(CFLAGS) -c -o libpll_sse3_pthreads_la-trash.lo `test -f 'trash.c' || echo '$(srcdir)/'`trash.c
+
+libpll_sse3_pthreads_la-searchAlgo.lo: searchAlgo.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_pthreads_la_CFLAGS) $(CFLAGS) -MT libpll_sse3_pthreads_la-searchAlgo.lo -MD -MP -MF $(DEPDIR)/libpll_sse3_pthreads_la-searchAlgo.Tpo -c -o libpll_sse3_pthreads_la-searchAlgo.lo `test -f 'searchAlgo.c' || echo '$(srcdir)/'`searchAlgo.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_sse3_pthreads_la-searchAlgo.Tpo $(DEPDIR)/libpll_sse3_pthreads_la-searchAlgo.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='searchAlgo.c' object='libpll_sse3_pthreads_la-searchAlgo.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_pthreads_la_CFLAGS) $(CFLAGS) -c -o libpll_sse3_pthreads_la-searchAlgo.lo `test -f 'searchAlgo.c' || echo '$(srcdir)/'`searchAlgo.c
+
+libpll_sse3_pthreads_la-topologies.lo: topologies.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_pthreads_la_CFLAGS) $(CFLAGS) -MT libpll_sse3_pthreads_la-topologies.lo -MD -MP -MF $(DEPDIR)/libpll_sse3_pthreads_la-topologies.Tpo -c -o libpll_sse3_pthreads_la-topologies.lo `test -f 'topologies.c' || echo '$(srcdir)/'`topologies.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_sse3_pthreads_la-topologies.Tpo $(DEPDIR)/libpll_sse3_pthreads_la-topologies.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='topologies.c' object='libpll_sse3_pthreads_la-topologies.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_pthreads_la_CFLAGS) $(CFLAGS) -c -o libpll_sse3_pthreads_la-topologies.lo `test -f 'topologies.c' || echo '$(srcdir)/'`topologies.c
+
+libpll_sse3_pthreads_la-fastDNAparsimony.lo: fastDNAparsimony.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_pthreads_la_CFLAGS) $(CFLAGS) -MT libpll_sse3_pthreads_la-fastDNAparsimony.lo -MD -MP -MF $(DEPDIR)/libpll_sse3_pthreads_la-fastDNAparsimony.Tpo -c -o libpll_sse3_pthreads_la-fastDNAparsimony.lo `test -f 'fastDNAparsimony.c' || echo '$(srcdir)/'`fastDNAparsimony.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_sse3_pthreads_la-fastDNAparsimony.Tpo $(DEPDIR)/libpll_sse3_pthreads_la-fastDNAparsimony.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='fastDNAparsimony.c' object='libpll_sse3_pthreads_la-fastDNAparsimony.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_pthreads_la_CFLAGS) $(CFLAGS) -c -o libpll_sse3_pthreads_la-fastDNAparsimony.lo `test -f 'fastDNAparsimony.c' || echo '$(srcdir)/'`fastDNAparsimony.c
+
+libpll_sse3_pthreads_la-treeIO.lo: treeIO.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_pthreads_la_CFLAGS) $(CFLAGS) -MT libpll_sse3_pthreads_la-treeIO.lo -MD -MP -MF $(DEPDIR)/libpll_sse3_pthreads_la-treeIO.Tpo -c -o libpll_sse3_pthreads_la-treeIO.lo `test -f 'treeIO.c' || echo '$(srcdir)/'`treeIO.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_sse3_pthreads_la-treeIO.Tpo $(DEPDIR)/libpll_sse3_pthreads_la-treeIO.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='treeIO.c' object='libpll_sse3_pthreads_la-treeIO.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_pthreads_la_CFLAGS) $(CFLAGS) -c -o libpll_sse3_pthreads_la-treeIO.lo `test -f 'treeIO.c' || echo '$(srcdir)/'`treeIO.c
+
+libpll_sse3_pthreads_la-models.lo: models.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_pthreads_la_CFLAGS) $(CFLAGS) -MT libpll_sse3_pthreads_la-models.lo -MD -MP -MF $(DEPDIR)/libpll_sse3_pthreads_la-models.Tpo -c -o libpll_sse3_pthreads_la-models.lo `test -f 'models.c' || echo '$(srcdir)/'`models.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_sse3_pthreads_la-models.Tpo $(DEPDIR)/libpll_sse3_pthreads_la-models.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='models.c' object='libpll_sse3_pthreads_la-models.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_pthreads_la_CFLAGS) $(CFLAGS) -c -o libpll_sse3_pthreads_la-models.lo `test -f 'models.c' || echo '$(srcdir)/'`models.c
+
+libpll_sse3_pthreads_la-evaluatePartialGenericSpecial.lo: evaluatePartialGenericSpecial.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_pthreads_la_CFLAGS) $(CFLAGS) -MT libpll_sse3_pthreads_la-evaluatePartialGenericSpecial.lo -MD -MP -MF $(DEPDIR)/libpll_sse3_pthreads_la-evaluatePartialGenericSpecial.Tpo -c -o libpll_sse3_pthreads_la-evaluatePartialGenericSpecial.lo `test -f 'evaluatePartialGenericSpecial.c' || echo '$(srcdi [...]
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_sse3_pthreads_la-evaluatePartialGenericSpecial.Tpo $(DEPDIR)/libpll_sse3_pthreads_la-evaluatePartialGenericSpecial.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='evaluatePartialGenericSpecial.c' object='libpll_sse3_pthreads_la-evaluatePartialGenericSpecial.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_pthreads_la_CFLAGS) $(CFLAGS) -c -o libpll_sse3_pthreads_la-evaluatePartialGenericSpecial.lo `test -f 'evaluatePartialGenericSpecial.c' || echo '$(srcdir)/'`evaluatePartialGenericSpecial.c
+
+libpll_sse3_pthreads_la-evaluateGenericSpecial.lo: evaluateGenericSpecial.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_pthreads_la_CFLAGS) $(CFLAGS) -MT libpll_sse3_pthreads_la-evaluateGenericSpecial.lo -MD -MP -MF $(DEPDIR)/libpll_sse3_pthreads_la-evaluateGenericSpecial.Tpo -c -o libpll_sse3_pthreads_la-evaluateGenericSpecial.lo `test -f 'evaluateGenericSpecial.c' || echo '$(srcdir)/'`evaluateGenericSpecial.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_sse3_pthreads_la-evaluateGenericSpecial.Tpo $(DEPDIR)/libpll_sse3_pthreads_la-evaluateGenericSpecial.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='evaluateGenericSpecial.c' object='libpll_sse3_pthreads_la-evaluateGenericSpecial.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_pthreads_la_CFLAGS) $(CFLAGS) -c -o libpll_sse3_pthreads_la-evaluateGenericSpecial.lo `test -f 'evaluateGenericSpecial.c' || echo '$(srcdir)/'`evaluateGenericSpecial.c
+
+libpll_sse3_pthreads_la-newviewGenericSpecial.lo: newviewGenericSpecial.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_pthreads_la_CFLAGS) $(CFLAGS) -MT libpll_sse3_pthreads_la-newviewGenericSpecial.lo -MD -MP -MF $(DEPDIR)/libpll_sse3_pthreads_la-newviewGenericSpecial.Tpo -c -o libpll_sse3_pthreads_la-newviewGenericSpecial.lo `test -f 'newviewGenericSpecial.c' || echo '$(srcdir)/'`newviewGenericSpecial.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_sse3_pthreads_la-newviewGenericSpecial.Tpo $(DEPDIR)/libpll_sse3_pthreads_la-newviewGenericSpecial.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='newviewGenericSpecial.c' object='libpll_sse3_pthreads_la-newviewGenericSpecial.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_pthreads_la_CFLAGS) $(CFLAGS) -c -o libpll_sse3_pthreads_la-newviewGenericSpecial.lo `test -f 'newviewGenericSpecial.c' || echo '$(srcdir)/'`newviewGenericSpecial.c
+
+libpll_sse3_pthreads_la-makenewzGenericSpecial.lo: makenewzGenericSpecial.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_pthreads_la_CFLAGS) $(CFLAGS) -MT libpll_sse3_pthreads_la-makenewzGenericSpecial.lo -MD -MP -MF $(DEPDIR)/libpll_sse3_pthreads_la-makenewzGenericSpecial.Tpo -c -o libpll_sse3_pthreads_la-makenewzGenericSpecial.lo `test -f 'makenewzGenericSpecial.c' || echo '$(srcdir)/'`makenewzGenericSpecial.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_sse3_pthreads_la-makenewzGenericSpecial.Tpo $(DEPDIR)/libpll_sse3_pthreads_la-makenewzGenericSpecial.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='makenewzGenericSpecial.c' object='libpll_sse3_pthreads_la-makenewzGenericSpecial.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_pthreads_la_CFLAGS) $(CFLAGS) -c -o libpll_sse3_pthreads_la-makenewzGenericSpecial.lo `test -f 'makenewzGenericSpecial.c' || echo '$(srcdir)/'`makenewzGenericSpecial.c
+
+libpll_sse3_pthreads_la-bipartitionList.lo: bipartitionList.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_pthreads_la_CFLAGS) $(CFLAGS) -MT libpll_sse3_pthreads_la-bipartitionList.lo -MD -MP -MF $(DEPDIR)/libpll_sse3_pthreads_la-bipartitionList.Tpo -c -o libpll_sse3_pthreads_la-bipartitionList.lo `test -f 'bipartitionList.c' || echo '$(srcdir)/'`bipartitionList.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_sse3_pthreads_la-bipartitionList.Tpo $(DEPDIR)/libpll_sse3_pthreads_la-bipartitionList.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='bipartitionList.c' object='libpll_sse3_pthreads_la-bipartitionList.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_pthreads_la_CFLAGS) $(CFLAGS) -c -o libpll_sse3_pthreads_la-bipartitionList.lo `test -f 'bipartitionList.c' || echo '$(srcdir)/'`bipartitionList.c
+
+libpll_sse3_pthreads_la-restartHashTable.lo: restartHashTable.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_pthreads_la_CFLAGS) $(CFLAGS) -MT libpll_sse3_pthreads_la-restartHashTable.lo -MD -MP -MF $(DEPDIR)/libpll_sse3_pthreads_la-restartHashTable.Tpo -c -o libpll_sse3_pthreads_la-restartHashTable.lo `test -f 'restartHashTable.c' || echo '$(srcdir)/'`restartHashTable.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_sse3_pthreads_la-restartHashTable.Tpo $(DEPDIR)/libpll_sse3_pthreads_la-restartHashTable.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='restartHashTable.c' object='libpll_sse3_pthreads_la-restartHashTable.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_pthreads_la_CFLAGS) $(CFLAGS) -c -o libpll_sse3_pthreads_la-restartHashTable.lo `test -f 'restartHashTable.c' || echo '$(srcdir)/'`restartHashTable.c
+
+libpll_sse3_pthreads_la-recom.lo: recom.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_pthreads_la_CFLAGS) $(CFLAGS) -MT libpll_sse3_pthreads_la-recom.lo -MD -MP -MF $(DEPDIR)/libpll_sse3_pthreads_la-recom.Tpo -c -o libpll_sse3_pthreads_la-recom.lo `test -f 'recom.c' || echo '$(srcdir)/'`recom.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_sse3_pthreads_la-recom.Tpo $(DEPDIR)/libpll_sse3_pthreads_la-recom.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='recom.c' object='libpll_sse3_pthreads_la-recom.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_pthreads_la_CFLAGS) $(CFLAGS) -c -o libpll_sse3_pthreads_la-recom.lo `test -f 'recom.c' || echo '$(srcdir)/'`recom.c
+
+libpll_sse3_pthreads_la-lexer.lo: lexer.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_pthreads_la_CFLAGS) $(CFLAGS) -MT libpll_sse3_pthreads_la-lexer.lo -MD -MP -MF $(DEPDIR)/libpll_sse3_pthreads_la-lexer.Tpo -c -o libpll_sse3_pthreads_la-lexer.lo `test -f 'lexer.c' || echo '$(srcdir)/'`lexer.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_sse3_pthreads_la-lexer.Tpo $(DEPDIR)/libpll_sse3_pthreads_la-lexer.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='lexer.c' object='libpll_sse3_pthreads_la-lexer.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_pthreads_la_CFLAGS) $(CFLAGS) -c -o libpll_sse3_pthreads_la-lexer.lo `test -f 'lexer.c' || echo '$(srcdir)/'`lexer.c
+
+libpll_sse3_pthreads_la-alignment.lo: alignment.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_pthreads_la_CFLAGS) $(CFLAGS) -MT libpll_sse3_pthreads_la-alignment.lo -MD -MP -MF $(DEPDIR)/libpll_sse3_pthreads_la-alignment.Tpo -c -o libpll_sse3_pthreads_la-alignment.lo `test -f 'alignment.c' || echo '$(srcdir)/'`alignment.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_sse3_pthreads_la-alignment.Tpo $(DEPDIR)/libpll_sse3_pthreads_la-alignment.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='alignment.c' object='libpll_sse3_pthreads_la-alignment.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_pthreads_la_CFLAGS) $(CFLAGS) -c -o libpll_sse3_pthreads_la-alignment.lo `test -f 'alignment.c' || echo '$(srcdir)/'`alignment.c
+
+libpll_sse3_pthreads_la-newick.lo: newick.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_pthreads_la_CFLAGS) $(CFLAGS) -MT libpll_sse3_pthreads_la-newick.lo -MD -MP -MF $(DEPDIR)/libpll_sse3_pthreads_la-newick.Tpo -c -o libpll_sse3_pthreads_la-newick.lo `test -f 'newick.c' || echo '$(srcdir)/'`newick.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_sse3_pthreads_la-newick.Tpo $(DEPDIR)/libpll_sse3_pthreads_la-newick.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='newick.c' object='libpll_sse3_pthreads_la-newick.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_pthreads_la_CFLAGS) $(CFLAGS) -c -o libpll_sse3_pthreads_la-newick.lo `test -f 'newick.c' || echo '$(srcdir)/'`newick.c
+
+libpll_sse3_pthreads_la-parsePartition.lo: parsePartition.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_pthreads_la_CFLAGS) $(CFLAGS) -MT libpll_sse3_pthreads_la-parsePartition.lo -MD -MP -MF $(DEPDIR)/libpll_sse3_pthreads_la-parsePartition.Tpo -c -o libpll_sse3_pthreads_la-parsePartition.lo `test -f 'parsePartition.c' || echo '$(srcdir)/'`parsePartition.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_sse3_pthreads_la-parsePartition.Tpo $(DEPDIR)/libpll_sse3_pthreads_la-parsePartition.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='parsePartition.c' object='libpll_sse3_pthreads_la-parsePartition.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_pthreads_la_CFLAGS) $(CFLAGS) -c -o libpll_sse3_pthreads_la-parsePartition.lo `test -f 'parsePartition.c' || echo '$(srcdir)/'`parsePartition.c
+
+libpll_sse3_pthreads_la-parsimony.lo: parsimony.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_pthreads_la_CFLAGS) $(CFLAGS) -MT libpll_sse3_pthreads_la-parsimony.lo -MD -MP -MF $(DEPDIR)/libpll_sse3_pthreads_la-parsimony.Tpo -c -o libpll_sse3_pthreads_la-parsimony.lo `test -f 'parsimony.c' || echo '$(srcdir)/'`parsimony.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_sse3_pthreads_la-parsimony.Tpo $(DEPDIR)/libpll_sse3_pthreads_la-parsimony.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='parsimony.c' object='libpll_sse3_pthreads_la-parsimony.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_pthreads_la_CFLAGS) $(CFLAGS) -c -o libpll_sse3_pthreads_la-parsimony.lo `test -f 'parsimony.c' || echo '$(srcdir)/'`parsimony.c
+
+libpll_sse3_la-hash.lo: hash.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_la_CFLAGS) $(CFLAGS) -MT libpll_sse3_la-hash.lo -MD -MP -MF $(DEPDIR)/libpll_sse3_la-hash.Tpo -c -o libpll_sse3_la-hash.lo `test -f 'hash.c' || echo '$(srcdir)/'`hash.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_sse3_la-hash.Tpo $(DEPDIR)/libpll_sse3_la-hash.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='hash.c' object='libpll_sse3_la-hash.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_la_CFLAGS) $(CFLAGS) -c -o libpll_sse3_la-hash.lo `test -f 'hash.c' || echo '$(srcdir)/'`hash.c
+
+libpll_sse3_la-stack.lo: stack.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_la_CFLAGS) $(CFLAGS) -MT libpll_sse3_la-stack.lo -MD -MP -MF $(DEPDIR)/libpll_sse3_la-stack.Tpo -c -o libpll_sse3_la-stack.lo `test -f 'stack.c' || echo '$(srcdir)/'`stack.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_sse3_la-stack.Tpo $(DEPDIR)/libpll_sse3_la-stack.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='stack.c' object='libpll_sse3_la-stack.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_la_CFLAGS) $(CFLAGS) -c -o libpll_sse3_la-stack.lo `test -f 'stack.c' || echo '$(srcdir)/'`stack.c
+
+libpll_sse3_la-ssort.lo: ssort.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_la_CFLAGS) $(CFLAGS) -MT libpll_sse3_la-ssort.lo -MD -MP -MF $(DEPDIR)/libpll_sse3_la-ssort.Tpo -c -o libpll_sse3_la-ssort.lo `test -f 'ssort.c' || echo '$(srcdir)/'`ssort.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_sse3_la-ssort.Tpo $(DEPDIR)/libpll_sse3_la-ssort.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ssort.c' object='libpll_sse3_la-ssort.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_la_CFLAGS) $(CFLAGS) -c -o libpll_sse3_la-ssort.lo `test -f 'ssort.c' || echo '$(srcdir)/'`ssort.c
+
+libpll_sse3_la-queue.lo: queue.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_la_CFLAGS) $(CFLAGS) -MT libpll_sse3_la-queue.lo -MD -MP -MF $(DEPDIR)/libpll_sse3_la-queue.Tpo -c -o libpll_sse3_la-queue.lo `test -f 'queue.c' || echo '$(srcdir)/'`queue.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_sse3_la-queue.Tpo $(DEPDIR)/libpll_sse3_la-queue.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='queue.c' object='libpll_sse3_la-queue.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_la_CFLAGS) $(CFLAGS) -c -o libpll_sse3_la-queue.lo `test -f 'queue.c' || echo '$(srcdir)/'`queue.c
+
+libpll_sse3_la-utils.lo: utils.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_la_CFLAGS) $(CFLAGS) -MT libpll_sse3_la-utils.lo -MD -MP -MF $(DEPDIR)/libpll_sse3_la-utils.Tpo -c -o libpll_sse3_la-utils.lo `test -f 'utils.c' || echo '$(srcdir)/'`utils.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_sse3_la-utils.Tpo $(DEPDIR)/libpll_sse3_la-utils.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='utils.c' object='libpll_sse3_la-utils.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_la_CFLAGS) $(CFLAGS) -c -o libpll_sse3_la-utils.lo `test -f 'utils.c' || echo '$(srcdir)/'`utils.c
+
+libpll_sse3_la-randomTree.lo: randomTree.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_la_CFLAGS) $(CFLAGS) -MT libpll_sse3_la-randomTree.lo -MD -MP -MF $(DEPDIR)/libpll_sse3_la-randomTree.Tpo -c -o libpll_sse3_la-randomTree.lo `test -f 'randomTree.c' || echo '$(srcdir)/'`randomTree.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_sse3_la-randomTree.Tpo $(DEPDIR)/libpll_sse3_la-randomTree.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='randomTree.c' object='libpll_sse3_la-randomTree.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_la_CFLAGS) $(CFLAGS) -c -o libpll_sse3_la-randomTree.lo `test -f 'randomTree.c' || echo '$(srcdir)/'`randomTree.c
+
+libpll_sse3_la-optimizeModel.lo: optimizeModel.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_la_CFLAGS) $(CFLAGS) -MT libpll_sse3_la-optimizeModel.lo -MD -MP -MF $(DEPDIR)/libpll_sse3_la-optimizeModel.Tpo -c -o libpll_sse3_la-optimizeModel.lo `test -f 'optimizeModel.c' || echo '$(srcdir)/'`optimizeModel.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_sse3_la-optimizeModel.Tpo $(DEPDIR)/libpll_sse3_la-optimizeModel.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='optimizeModel.c' object='libpll_sse3_la-optimizeModel.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_la_CFLAGS) $(CFLAGS) -c -o libpll_sse3_la-optimizeModel.lo `test -f 'optimizeModel.c' || echo '$(srcdir)/'`optimizeModel.c
+
+libpll_sse3_la-trash.lo: trash.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_la_CFLAGS) $(CFLAGS) -MT libpll_sse3_la-trash.lo -MD -MP -MF $(DEPDIR)/libpll_sse3_la-trash.Tpo -c -o libpll_sse3_la-trash.lo `test -f 'trash.c' || echo '$(srcdir)/'`trash.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_sse3_la-trash.Tpo $(DEPDIR)/libpll_sse3_la-trash.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='trash.c' object='libpll_sse3_la-trash.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_la_CFLAGS) $(CFLAGS) -c -o libpll_sse3_la-trash.lo `test -f 'trash.c' || echo '$(srcdir)/'`trash.c
+
+libpll_sse3_la-searchAlgo.lo: searchAlgo.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_la_CFLAGS) $(CFLAGS) -MT libpll_sse3_la-searchAlgo.lo -MD -MP -MF $(DEPDIR)/libpll_sse3_la-searchAlgo.Tpo -c -o libpll_sse3_la-searchAlgo.lo `test -f 'searchAlgo.c' || echo '$(srcdir)/'`searchAlgo.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_sse3_la-searchAlgo.Tpo $(DEPDIR)/libpll_sse3_la-searchAlgo.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='searchAlgo.c' object='libpll_sse3_la-searchAlgo.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_la_CFLAGS) $(CFLAGS) -c -o libpll_sse3_la-searchAlgo.lo `test -f 'searchAlgo.c' || echo '$(srcdir)/'`searchAlgo.c
+
+libpll_sse3_la-topologies.lo: topologies.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_la_CFLAGS) $(CFLAGS) -MT libpll_sse3_la-topologies.lo -MD -MP -MF $(DEPDIR)/libpll_sse3_la-topologies.Tpo -c -o libpll_sse3_la-topologies.lo `test -f 'topologies.c' || echo '$(srcdir)/'`topologies.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_sse3_la-topologies.Tpo $(DEPDIR)/libpll_sse3_la-topologies.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='topologies.c' object='libpll_sse3_la-topologies.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_la_CFLAGS) $(CFLAGS) -c -o libpll_sse3_la-topologies.lo `test -f 'topologies.c' || echo '$(srcdir)/'`topologies.c
+
+libpll_sse3_la-fastDNAparsimony.lo: fastDNAparsimony.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_la_CFLAGS) $(CFLAGS) -MT libpll_sse3_la-fastDNAparsimony.lo -MD -MP -MF $(DEPDIR)/libpll_sse3_la-fastDNAparsimony.Tpo -c -o libpll_sse3_la-fastDNAparsimony.lo `test -f 'fastDNAparsimony.c' || echo '$(srcdir)/'`fastDNAparsimony.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_sse3_la-fastDNAparsimony.Tpo $(DEPDIR)/libpll_sse3_la-fastDNAparsimony.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='fastDNAparsimony.c' object='libpll_sse3_la-fastDNAparsimony.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_la_CFLAGS) $(CFLAGS) -c -o libpll_sse3_la-fastDNAparsimony.lo `test -f 'fastDNAparsimony.c' || echo '$(srcdir)/'`fastDNAparsimony.c
+
+libpll_sse3_la-treeIO.lo: treeIO.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_la_CFLAGS) $(CFLAGS) -MT libpll_sse3_la-treeIO.lo -MD -MP -MF $(DEPDIR)/libpll_sse3_la-treeIO.Tpo -c -o libpll_sse3_la-treeIO.lo `test -f 'treeIO.c' || echo '$(srcdir)/'`treeIO.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_sse3_la-treeIO.Tpo $(DEPDIR)/libpll_sse3_la-treeIO.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='treeIO.c' object='libpll_sse3_la-treeIO.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_la_CFLAGS) $(CFLAGS) -c -o libpll_sse3_la-treeIO.lo `test -f 'treeIO.c' || echo '$(srcdir)/'`treeIO.c
+
+libpll_sse3_la-models.lo: models.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_la_CFLAGS) $(CFLAGS) -MT libpll_sse3_la-models.lo -MD -MP -MF $(DEPDIR)/libpll_sse3_la-models.Tpo -c -o libpll_sse3_la-models.lo `test -f 'models.c' || echo '$(srcdir)/'`models.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_sse3_la-models.Tpo $(DEPDIR)/libpll_sse3_la-models.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='models.c' object='libpll_sse3_la-models.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_la_CFLAGS) $(CFLAGS) -c -o libpll_sse3_la-models.lo `test -f 'models.c' || echo '$(srcdir)/'`models.c
+
+libpll_sse3_la-evaluatePartialGenericSpecial.lo: evaluatePartialGenericSpecial.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_la_CFLAGS) $(CFLAGS) -MT libpll_sse3_la-evaluatePartialGenericSpecial.lo -MD -MP -MF $(DEPDIR)/libpll_sse3_la-evaluatePartialGenericSpecial.Tpo -c -o libpll_sse3_la-evaluatePartialGenericSpecial.lo `test -f 'evaluatePartialGenericSpecial.c' || echo '$(srcdir)/'`evaluatePartialGenericSpecial.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_sse3_la-evaluatePartialGenericSpecial.Tpo $(DEPDIR)/libpll_sse3_la-evaluatePartialGenericSpecial.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='evaluatePartialGenericSpecial.c' object='libpll_sse3_la-evaluatePartialGenericSpecial.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_la_CFLAGS) $(CFLAGS) -c -o libpll_sse3_la-evaluatePartialGenericSpecial.lo `test -f 'evaluatePartialGenericSpecial.c' || echo '$(srcdir)/'`evaluatePartialGenericSpecial.c
+
+libpll_sse3_la-evaluateGenericSpecial.lo: evaluateGenericSpecial.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_la_CFLAGS) $(CFLAGS) -MT libpll_sse3_la-evaluateGenericSpecial.lo -MD -MP -MF $(DEPDIR)/libpll_sse3_la-evaluateGenericSpecial.Tpo -c -o libpll_sse3_la-evaluateGenericSpecial.lo `test -f 'evaluateGenericSpecial.c' || echo '$(srcdir)/'`evaluateGenericSpecial.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_sse3_la-evaluateGenericSpecial.Tpo $(DEPDIR)/libpll_sse3_la-evaluateGenericSpecial.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='evaluateGenericSpecial.c' object='libpll_sse3_la-evaluateGenericSpecial.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_la_CFLAGS) $(CFLAGS) -c -o libpll_sse3_la-evaluateGenericSpecial.lo `test -f 'evaluateGenericSpecial.c' || echo '$(srcdir)/'`evaluateGenericSpecial.c
+
+libpll_sse3_la-newviewGenericSpecial.lo: newviewGenericSpecial.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_la_CFLAGS) $(CFLAGS) -MT libpll_sse3_la-newviewGenericSpecial.lo -MD -MP -MF $(DEPDIR)/libpll_sse3_la-newviewGenericSpecial.Tpo -c -o libpll_sse3_la-newviewGenericSpecial.lo `test -f 'newviewGenericSpecial.c' || echo '$(srcdir)/'`newviewGenericSpecial.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_sse3_la-newviewGenericSpecial.Tpo $(DEPDIR)/libpll_sse3_la-newviewGenericSpecial.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='newviewGenericSpecial.c' object='libpll_sse3_la-newviewGenericSpecial.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_la_CFLAGS) $(CFLAGS) -c -o libpll_sse3_la-newviewGenericSpecial.lo `test -f 'newviewGenericSpecial.c' || echo '$(srcdir)/'`newviewGenericSpecial.c
+
+libpll_sse3_la-makenewzGenericSpecial.lo: makenewzGenericSpecial.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_la_CFLAGS) $(CFLAGS) -MT libpll_sse3_la-makenewzGenericSpecial.lo -MD -MP -MF $(DEPDIR)/libpll_sse3_la-makenewzGenericSpecial.Tpo -c -o libpll_sse3_la-makenewzGenericSpecial.lo `test -f 'makenewzGenericSpecial.c' || echo '$(srcdir)/'`makenewzGenericSpecial.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_sse3_la-makenewzGenericSpecial.Tpo $(DEPDIR)/libpll_sse3_la-makenewzGenericSpecial.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='makenewzGenericSpecial.c' object='libpll_sse3_la-makenewzGenericSpecial.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_la_CFLAGS) $(CFLAGS) -c -o libpll_sse3_la-makenewzGenericSpecial.lo `test -f 'makenewzGenericSpecial.c' || echo '$(srcdir)/'`makenewzGenericSpecial.c
+
+libpll_sse3_la-bipartitionList.lo: bipartitionList.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_la_CFLAGS) $(CFLAGS) -MT libpll_sse3_la-bipartitionList.lo -MD -MP -MF $(DEPDIR)/libpll_sse3_la-bipartitionList.Tpo -c -o libpll_sse3_la-bipartitionList.lo `test -f 'bipartitionList.c' || echo '$(srcdir)/'`bipartitionList.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_sse3_la-bipartitionList.Tpo $(DEPDIR)/libpll_sse3_la-bipartitionList.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='bipartitionList.c' object='libpll_sse3_la-bipartitionList.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_la_CFLAGS) $(CFLAGS) -c -o libpll_sse3_la-bipartitionList.lo `test -f 'bipartitionList.c' || echo '$(srcdir)/'`bipartitionList.c
+
+libpll_sse3_la-restartHashTable.lo: restartHashTable.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_la_CFLAGS) $(CFLAGS) -MT libpll_sse3_la-restartHashTable.lo -MD -MP -MF $(DEPDIR)/libpll_sse3_la-restartHashTable.Tpo -c -o libpll_sse3_la-restartHashTable.lo `test -f 'restartHashTable.c' || echo '$(srcdir)/'`restartHashTable.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_sse3_la-restartHashTable.Tpo $(DEPDIR)/libpll_sse3_la-restartHashTable.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='restartHashTable.c' object='libpll_sse3_la-restartHashTable.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_la_CFLAGS) $(CFLAGS) -c -o libpll_sse3_la-restartHashTable.lo `test -f 'restartHashTable.c' || echo '$(srcdir)/'`restartHashTable.c
+
+libpll_sse3_la-recom.lo: recom.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_la_CFLAGS) $(CFLAGS) -MT libpll_sse3_la-recom.lo -MD -MP -MF $(DEPDIR)/libpll_sse3_la-recom.Tpo -c -o libpll_sse3_la-recom.lo `test -f 'recom.c' || echo '$(srcdir)/'`recom.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_sse3_la-recom.Tpo $(DEPDIR)/libpll_sse3_la-recom.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='recom.c' object='libpll_sse3_la-recom.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_la_CFLAGS) $(CFLAGS) -c -o libpll_sse3_la-recom.lo `test -f 'recom.c' || echo '$(srcdir)/'`recom.c
+
+libpll_sse3_la-lexer.lo: lexer.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_la_CFLAGS) $(CFLAGS) -MT libpll_sse3_la-lexer.lo -MD -MP -MF $(DEPDIR)/libpll_sse3_la-lexer.Tpo -c -o libpll_sse3_la-lexer.lo `test -f 'lexer.c' || echo '$(srcdir)/'`lexer.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_sse3_la-lexer.Tpo $(DEPDIR)/libpll_sse3_la-lexer.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='lexer.c' object='libpll_sse3_la-lexer.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_la_CFLAGS) $(CFLAGS) -c -o libpll_sse3_la-lexer.lo `test -f 'lexer.c' || echo '$(srcdir)/'`lexer.c
+
+libpll_sse3_la-alignment.lo: alignment.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_la_CFLAGS) $(CFLAGS) -MT libpll_sse3_la-alignment.lo -MD -MP -MF $(DEPDIR)/libpll_sse3_la-alignment.Tpo -c -o libpll_sse3_la-alignment.lo `test -f 'alignment.c' || echo '$(srcdir)/'`alignment.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_sse3_la-alignment.Tpo $(DEPDIR)/libpll_sse3_la-alignment.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='alignment.c' object='libpll_sse3_la-alignment.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_la_CFLAGS) $(CFLAGS) -c -o libpll_sse3_la-alignment.lo `test -f 'alignment.c' || echo '$(srcdir)/'`alignment.c
+
+libpll_sse3_la-newick.lo: newick.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_la_CFLAGS) $(CFLAGS) -MT libpll_sse3_la-newick.lo -MD -MP -MF $(DEPDIR)/libpll_sse3_la-newick.Tpo -c -o libpll_sse3_la-newick.lo `test -f 'newick.c' || echo '$(srcdir)/'`newick.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_sse3_la-newick.Tpo $(DEPDIR)/libpll_sse3_la-newick.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='newick.c' object='libpll_sse3_la-newick.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_la_CFLAGS) $(CFLAGS) -c -o libpll_sse3_la-newick.lo `test -f 'newick.c' || echo '$(srcdir)/'`newick.c
+
+libpll_sse3_la-parsePartition.lo: parsePartition.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_la_CFLAGS) $(CFLAGS) -MT libpll_sse3_la-parsePartition.lo -MD -MP -MF $(DEPDIR)/libpll_sse3_la-parsePartition.Tpo -c -o libpll_sse3_la-parsePartition.lo `test -f 'parsePartition.c' || echo '$(srcdir)/'`parsePartition.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_sse3_la-parsePartition.Tpo $(DEPDIR)/libpll_sse3_la-parsePartition.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='parsePartition.c' object='libpll_sse3_la-parsePartition.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_la_CFLAGS) $(CFLAGS) -c -o libpll_sse3_la-parsePartition.lo `test -f 'parsePartition.c' || echo '$(srcdir)/'`parsePartition.c
+
+libpll_sse3_la-parsimony.lo: parsimony.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_la_CFLAGS) $(CFLAGS) -MT libpll_sse3_la-parsimony.lo -MD -MP -MF $(DEPDIR)/libpll_sse3_la-parsimony.Tpo -c -o libpll_sse3_la-parsimony.lo `test -f 'parsimony.c' || echo '$(srcdir)/'`parsimony.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpll_sse3_la-parsimony.Tpo $(DEPDIR)/libpll_sse3_la-parsimony.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='parsimony.c' object='libpll_sse3_la-parsimony.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpll_sse3_la_CFLAGS) $(CFLAGS) -c -o libpll_sse3_la-parsimony.lo `test -f 'parsimony.c' || echo '$(srcdir)/'`parsimony.c
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+install-pkgincludeHEADERS: $(pkginclude_HEADERS)
+ @$(NORMAL_INSTALL)
+ @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \
+ if test -n "$$list"; then \
+ echo " $(MKDIR_P) '$(DESTDIR)$(pkgincludedir)'"; \
+ $(MKDIR_P) "$(DESTDIR)$(pkgincludedir)" || exit 1; \
+ fi; \
+ for p in $$list; do \
+ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+ echo "$$d$$p"; \
+ done | $(am__base_list) | \
+ while read files; do \
+ echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(pkgincludedir)'"; \
+ $(INSTALL_HEADER) $$files "$(DESTDIR)$(pkgincludedir)" || exit $$?; \
+ done
+
+uninstall-pkgincludeHEADERS:
+ @$(NORMAL_UNINSTALL)
+ @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \
+ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+ dir='$(DESTDIR)$(pkgincludedir)'; $(am__uninstall_files_from_dir)
+
+ID: $(am__tagged_files)
+ $(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-am
+TAGS: tags
+
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+ set x; \
+ here=`pwd`; \
+ $(am__define_uniq_tagged_files); \
+ shift; \
+ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ if test $$# -gt 0; then \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ "$$@" $$unique; \
+ else \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$unique; \
+ fi; \
+ fi
+ctags: ctags-am
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+ $(am__define_uniq_tagged_files); \
+ test -z "$(CTAGS_ARGS)$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && $(am__cd) $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) "$$here"
+cscopelist: cscopelist-am
+
+cscopelist-am: $(am__tagged_files)
+ list='$(am__tagged_files)'; \
+ case "$(srcdir)" in \
+ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+ *) sdir=$(subdir)/$(srcdir) ;; \
+ esac; \
+ for i in $$list; do \
+ if test -f "$$i"; then \
+ echo "$(subdir)/$$i"; \
+ else \
+ echo "$$sdir/$$i"; \
+ fi; \
+ done >> $(top_builddir)/cscope.files
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+ else \
+ test -f "$(distdir)/$$file" \
+ || cp -p $$d/$$file "$(distdir)/$$file" \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+check: check-am
+all-am: Makefile $(LIBRARIES) $(LTLIBRARIES) $(HEADERS)
+installdirs:
+ for dir in "$(DESTDIR)$(libdir)" "$(DESTDIR)$(libdir)" "$(DESTDIR)$(pkgincludedir)"; do \
+ test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+ done
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ if test -z '$(STRIP)'; then \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ install; \
+ else \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+ fi
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic clean-libLIBRARIES clean-libLTLIBRARIES \
+ clean-libtool mostlyclean-am
+
+distclean: distclean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+ distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am: install-pkgincludeHEADERS
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am: install-libLIBRARIES install-libLTLIBRARIES
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-libLIBRARIES uninstall-libLTLIBRARIES \
+ uninstall-pkgincludeHEADERS
+
+.MAKE: install-am install-strip
+
+.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \
+ clean-libLIBRARIES clean-libLTLIBRARIES clean-libtool \
+ cscopelist-am ctags ctags-am distclean distclean-compile \
+ distclean-generic distclean-libtool distclean-tags distdir dvi \
+ dvi-am html html-am info info-am install install-am \
+ install-data install-data-am install-dvi install-dvi-am \
+ install-exec install-exec-am install-html install-html-am \
+ install-info install-info-am install-libLIBRARIES \
+ install-libLTLIBRARIES install-man install-pdf install-pdf-am \
+ install-pkgincludeHEADERS install-ps install-ps-am \
+ install-strip installcheck installcheck-am installdirs \
+ maintainer-clean maintainer-clean-generic mostlyclean \
+ mostlyclean-compile mostlyclean-generic mostlyclean-libtool \
+ pdf pdf-am ps ps-am tags tags-am uninstall uninstall-am \
+ uninstall-libLIBRARIES uninstall-libLTLIBRARIES \
+ uninstall-pkgincludeHEADERS
+
+
+# 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/src/alignment.c b/src/alignment.c
new file mode 100644
index 0000000..e5a09ca
--- /dev/null
+++ b/src/alignment.c
@@ -0,0 +1,832 @@
+/**
+ * PLL (version 1.0.0) a software library for phylogenetic inference
+ * Copyright (C) 2013 Tomas Flouri and Alexandros Stamatakis
+ *
+ * Derived from
+ * RAxML-HPC, a program for sequential and parallel estimation of phylogenetic
+ * trees by Alexandros Stamatakis
+ *
+ * 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 3 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, see <http://www.gnu.org/licenses/>.
+ *
+ * For any other enquiries send an Email to Tomas Flouri
+ * Tomas.Flouri at h-its.org
+ *
+ * When publishing work that uses PLL please cite PLL
+ *
+ * @file alignment.c
+ *
+ * @brief Collection of routines for reading alignments
+ *
+ * Auxiliary functions for storing alignments read from predefined file formats
+ */
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <assert.h>
+
+#include "pll.h"
+#include "pllInternal.h"
+
+/** @defgroup alignmentGroup Reading and parsing multiple sequence alignments
+
+ This set of functions handles the reading and parsing of several file formats that describe multiple sequence alignments. They are also responsible for storing the alignment in an internal structure
+*/
+static pllAlignmentData * pllParsePHYLIP (const char * filename);
+static pllAlignmentData * pllParseFASTA (const char * filename);
+static int read_phylip_header (int * inp, int * sequenceCount, int * sequenceLength);
+static inline int parsedOk (int * actLen, int sequenceCount, int sequenceLength);
+static int parse_phylip (pllAlignmentData * alignmentData, int input);
+//static int getFastaAlignmentInfo (int * inp, int * seqCount, int * seqLen);
+//static int parseFastaAlignment (pllAlignmentData * alignmentData, int input);
+
+static int query_getnext(char ** head, int * head_len,
+ char ** seq, int * seq_len, int * qno);
+static int query_open(const char * filename);
+static void query_close(void);
+
+#define PLL_MEMCHUNK 4096
+#define PLL_LINEALLOC 1048576
+
+static FILE * query_fp;
+static char query_line[PLL_LINEALLOC];
+
+static int query_no = -1;
+static char * query_head = 0;
+static char * query_seq = 0;
+
+static long query_head_len = 0;
+static long query_seq_len = 0;
+
+static long query_head_alloc = 0;
+static long query_seq_alloc = 0;
+
+static long query_filesize = 0;
+static int query_lineno;
+
+static unsigned int chrstatus[256] =
+ {
+ /*
+
+ How to handle input characters
+
+ 0=stripped, 1=legal, 2=fatal, 3=silently stripped
+
+ @ A B C D E F G H I J K L M N O
+ P Q R S T U V W X Y Z [ \ ] ^ _
+ */
+
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 3, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0,
+ 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,
+ 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0,
+ 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
+ };
+
+#ifdef __PLL_DEBUG_PARSER
+static int
+printTokens (int input)
+{
+ pllLexToken token;
+
+ do
+ {
+ NEXT_TOKEN
+
+ /* begin of parser */
+ switch (token.tokenType)
+ {
+ case PLL_TOKEN_NUMBER:
+ printf ("PLL_TOKEN_NUMBER (%.*s, %d)\n", token.len, token.lexeme, token.len);
+ break;
+ case PLL_TOKEN_STRING:
+ printf ("PLL_TOKEN_STRING (%.*s, %d)\n", token.len, token.lexeme, token.len);
+ break;
+ case PLL_TOKEN_EOF:
+ printf ("PLL_TOKEN_EOF\n");
+ break;
+ case PLL_TOKEN_WHITESPACE:
+ printf ("PLL_TOKEN_WHITESPACE\n");
+ break;
+ case PLL_TOKEN_NEWLINE:
+ printf ("PLL_TOKEN_NEWLINE\n");
+ break;
+ case PLL_TOKEN_UNKNOWN:
+ printf ("PLL_TOKEN_UNKNOWN (%.*s, %d)\n", token.len, token.lexeme, token.len);
+ break;
+ default:
+ break;
+ }
+ /* end of parser */
+
+
+ }
+ while (token.tokenType != PLL_TOKEN_EOF && token.tokenType != PLL_TOKEN_UNKNOWN);
+
+ if (token.tokenType == PLL_TOKEN_UNKNOWN) return (0);
+
+ return (1);
+}
+#endif
+
+/** @ingroup alignmentGroup
+ @brief Initialize alignment structure fields
+
+ Allocates memory for the data structure that will hold the alignment and
+ initializes it. It requires the number of sequences \a sequenceCount and
+ the length of sequences \a sequenceLength. It returns a pointer to the
+ initialized data structure.
+
+ @param sequenceCount
+ Number of sequences in the alignment
+
+ @param sequenceLength
+ Length of the sequences
+
+ @param
+ Initialized alignment data structured
+*/
+pllAlignmentData *
+pllInitAlignmentData (int sequenceCount, int sequenceLength)
+ {
+ int i;
+ pllAlignmentData * alignmentData;
+ void * mem;
+
+ /** TODO */
+ alignmentData = (pllAlignmentData *) malloc (sizeof (pllAlignmentData));
+ alignmentData->sequenceData = (unsigned char **) malloc ((sequenceCount + 1) * sizeof (unsigned char *));
+ mem = (void *) malloc (sizeof (unsigned char) * (sequenceLength + 1) * sequenceCount);
+ for (i = 1; i <= sequenceCount; ++i)
+ {
+ alignmentData->sequenceData[i] = (unsigned char *) (mem + (i - 1) * (sequenceLength + 1) * sizeof (unsigned char));
+ alignmentData->sequenceData[i][sequenceLength] = 0;
+ }
+ alignmentData->sequenceData[0] = NULL;
+
+ alignmentData->sequenceLabels = (char **) calloc ((sequenceCount + 1), sizeof (char *));
+
+ alignmentData->sequenceCount = sequenceCount;
+ alignmentData->sequenceLength = sequenceLength;
+ alignmentData->originalSeqLength = sequenceLength;
+
+ /** TODO: remove siteWeights from alignment */
+ alignmentData->siteWeights = NULL;
+
+ return (alignmentData);
+ }
+
+/** @ingroup alignmentGroup
+ @brief Deallocates the memory associated with the alignment data structure
+
+ Deallocates the memory associated with the alignment data structure \a alignmentData.
+
+ @param alignmentData
+ The alignment data structure
+*/
+void
+pllAlignmentDataDestroy (pllAlignmentData * alignmentData)
+{
+ int i;
+
+ for (i = 1; i <= alignmentData->sequenceCount; ++ i)
+ {
+ rax_free (alignmentData->sequenceLabels[i]);
+ }
+ rax_free (alignmentData->sequenceData[1]);
+ rax_free (alignmentData->sequenceLabels);
+ rax_free (alignmentData->sequenceData);
+ rax_free (alignmentData->siteWeights);
+ rax_free (alignmentData);
+}
+
+
+/** @ingroup alignmentGroup
+ @brief Prints the alignment to the console
+
+ @param alignmentData
+ The alignment data structure
+*/
+void pllAlignmentDataDumpConsole (pllAlignmentData * alignmentData)
+ {
+ int i;
+
+ printf ("%d %d\n", alignmentData->sequenceCount, alignmentData->sequenceLength);
+ for (i = 1; i <= alignmentData->sequenceCount; ++ i)
+ {
+ printf ("%s %s\n", alignmentData->sequenceLabels[i], alignmentData->sequenceData[i]);
+ }
+ }
+
+
+
+static void dump_fasta_content(FILE * fp, pllAlignmentData * alignmentData)
+{
+ int i;
+
+ for (i = 1; i <= alignmentData->sequenceCount; ++i)
+ fprintf (fp, ">%s\n%s\n", alignmentData->sequenceLabels[i], alignmentData->sequenceData[i]);
+}
+
+static void dump_phylip_content(FILE * fp, pllAlignmentData * alignmentData)
+{
+ int i;
+
+ for (i = 1; i <= alignmentData->sequenceCount; ++i)
+ fprintf (fp, "%s %s\n", alignmentData->sequenceLabels[i], alignmentData->sequenceData[i]);
+}
+
+/** @ingroup alignmentGroup
+ @brief Dump the alignment to a file of format \a fileFormat
+
+ Dumps the alignment contained in \a alignmentData to file \a filename of type \a fileFormat.
+
+ @note If \a filename exists, all contents will be erased
+
+ @param alignmentData
+ Alignment data structure
+
+ @param fileFormat
+ Format of output file. Can take the value \b PLL_FORMAT_PHYLIP or \b PLL_FORMAT_FASTA
+
+ @param filename
+ Output filename
+
+ @return
+ Returns \b PLL_TRUE on success, otherwise \b PLL_FALSE.
+*/
+int
+pllAlignmentDataDumpFile (pllAlignmentData * alignmentData, int fileFormat, const char * filename)
+{
+ FILE * fp;
+ void (*outfun)(FILE *, pllAlignmentData *);
+
+ if (fileFormat != PLL_FORMAT_PHYLIP && fileFormat != PLL_FORMAT_FASTA) return (PLL_FALSE);
+
+ outfun = (fileFormat == PLL_FORMAT_PHYLIP) ? dump_phylip_content : dump_fasta_content;
+
+ fp = fopen (filename, "w");
+ if (!fp) return (PLL_FALSE);
+
+ /* if PHYLIP print the silly header at the beginning */
+ if (fileFormat == PLL_FORMAT_PHYLIP)
+ {
+ fprintf (fp, "%d %d\n", alignmentData->sequenceCount, alignmentData->sequenceLength);
+ }
+
+ outfun(fp, alignmentData);
+
+ fclose (fp);
+ return (PLL_TRUE);
+}
+
+
+
+/* ROUTINES FOR PHYLIP PARSING */
+/** @ingroup alignmentGroup
+ @brief Parse the PHYLIP file header
+*/
+static int
+read_phylip_header (int * inp, int * sequenceCount, int * sequenceLength)
+{
+ pllLexToken token;
+ int input;
+
+ input = *inp;
+
+
+ NEXT_TOKEN
+ CONSUME(PLL_TOKEN_WHITESPACE | PLL_TOKEN_NEWLINE)
+
+ if (token.tokenType != PLL_TOKEN_NUMBER) return (0);
+
+ *sequenceCount = atoi (token.lexeme);
+
+ NEXT_TOKEN
+ CONSUME(PLL_TOKEN_WHITESPACE | PLL_TOKEN_NEWLINE)
+ if (token.tokenType != PLL_TOKEN_NUMBER) return (0);
+
+ *sequenceLength = atoi (token.lexeme);
+
+ *inp = input;
+
+ return (*sequenceCount && *sequenceLength);
+}
+
+static inline int
+parsedOk (int * actLen, int sequenceCount, int sequenceLength)
+{
+ int i;
+
+ for (i = 1; i <= sequenceCount; ++ i)
+ {
+ if (actLen[i] != sequenceLength) return (0);
+ }
+
+ return (1);
+}
+
+
+/** @ingroup alignmentGroup
+ @brief Parse the PHYLIP file body
+*/
+static int
+parse_phylip (pllAlignmentData * alignmentData, int input)
+{
+ int i,j;
+ pllLexToken token;
+ int * sequenceLength;
+ int rc;
+
+ sequenceLength = (int *) rax_calloc (alignmentData->sequenceCount + 1, sizeof (int));
+
+ NEXT_TOKEN
+ for (i = 0; ; ++i)
+ {
+ j = i % alignmentData->sequenceCount;
+ if (i < alignmentData->sequenceCount)
+ {
+ if (token.tokenType == PLL_TOKEN_EOF)
+ {
+ rc = parsedOk (sequenceLength, alignmentData->sequenceCount, alignmentData->sequenceLength);
+ rax_free (sequenceLength);
+ return (rc);
+ }
+
+ if (token.tokenType == PLL_TOKEN_UNKNOWN)
+ {
+ rax_free (sequenceLength);
+ return (0);
+ }
+
+ CONSUME(PLL_TOKEN_WHITESPACE | PLL_TOKEN_NEWLINE)
+
+
+ if (token.tokenType != PLL_TOKEN_STRING && token.tokenType != PLL_TOKEN_NUMBER && token.tokenType != PLL_TOKEN_FLOAT)
+ {
+ rax_free (sequenceLength);
+ return (0);
+ }
+ alignmentData->sequenceLabels[i + 1] = strndup (token.lexeme, token.len);
+ NEXT_TOKEN
+ CONSUME(PLL_TOKEN_WHITESPACE | PLL_TOKEN_NEWLINE)
+ }
+
+ while (1)
+ {
+ if (token.tokenType == PLL_TOKEN_EOF)
+ {
+ rc = parsedOk (sequenceLength, alignmentData->sequenceCount, alignmentData->sequenceLength);
+ rax_free (sequenceLength);
+ return (rc);
+ }
+
+ if (token.tokenType == PLL_TOKEN_UNKNOWN)
+ {
+ rax_free (sequenceLength);
+ return (0);
+ }
+
+ if (token.tokenType == PLL_TOKEN_NEWLINE) break;
+
+ if (token.tokenType != PLL_TOKEN_STRING)
+ {
+ rax_free (sequenceLength);
+ return (0);
+ }
+
+ if (sequenceLength[j + 1] + token.len > alignmentData->sequenceLength)
+ {
+ fprintf (stderr, "Sequence %d is larger than specified\n", j + 1);
+ rax_free (sequenceLength);
+ return (0);
+ }
+ memmove (alignmentData->sequenceData[j + 1] + sequenceLength[j + 1], token.lexeme, token.len);
+ sequenceLength[j + 1] += token.len;
+
+ NEXT_TOKEN
+ CONSUME (PLL_TOKEN_WHITESPACE)
+ }
+ CONSUME(PLL_TOKEN_WHITESPACE | PLL_TOKEN_NEWLINE);
+ }
+}
+
+/* Phylip parsers. Use the following attributed grammar
+ *
+ * S -> HEADER ENDL DATA
+ * HEADER -> PLL_TOKEN_NUMBER PLL_TOKEN_WHITESPACE PLL_TOKEN_NUMBER ENDL |
+ * PLL_TOKEN_WHITESPACE PLL_TOKEN_NUMBER PLL_TOKEN_WHITESPACE PLL_TOKEN_NUMBER ENDL
+ * ENDL -> PLL_TOKEN_WHITESPACE PLL_TOKEN_NEWLINE | PLL_TOKEN_NEWLINE
+ * DATA -> PLL_TOKEN_STRING PLL_TOKEN_WHITESPACE PLL_TOKEN_STRING ENDL DATA |
+ * PLL_TOKEN_WHITESPACE PLL_TOKEN_STRING PLL_TOKEN_WHITESPACE PLL_TOKEN_STRING ENDL DATA |
+ * PLL_TOKEN_STRING PLL_TOKEN_WHITESPACE PLL_TOKEN_STRING PLL_TOKEN_EOF |
+ * PLL_TOKEN_WHITESPACE PLL_TOKEN_STRING PLL_TOKEN_WHITESPACE PLL_TOKEN_STRING PLL_TOKEN_EOF
+ */
+
+/** @ingroup alignmentGroup
+ @brief Parse a PHYLIP file
+
+ Parses the PHYLIP file \a filename and returns a ::pllAlignmentData structure
+ with the alignment.
+
+ @param filename
+ Name of file to be parsed
+
+ @return
+ Returns a structure of type ::pllAlignmentData that contains the alignment, or \b NULL
+ in case of failure.
+*/
+static pllAlignmentData *
+pllParsePHYLIP (const char * filename)
+{
+ int i, input, sequenceCount, sequenceLength;
+ char * rawdata;
+ long filesize;
+ pllAlignmentData * alignmentData;
+
+ rawdata = pllReadFile (filename, &filesize);
+ if (!rawdata)
+ {
+ errno = PLL_ERROR_FILE_OPEN;
+ return (NULL);
+ }
+
+ init_lexan (rawdata, filesize);
+ input = get_next_symbol();
+
+ /* parse the header to obtain the number of taxa and sequence length */
+ if (!read_phylip_header (&input, &sequenceCount, &sequenceLength))
+ {
+ rax_free (rawdata);
+ fprintf (stderr, "Error while parsing PHYLIP header (number of taxa and sequence length)\n");
+ errno = PLL_ERROR_PHYLIP_HEADER_SYNTAX;
+ return (NULL);
+ }
+
+ lex_table_amend_phylip();
+
+ /* allocate alignment structure */
+ alignmentData = pllInitAlignmentData (sequenceCount, sequenceLength);
+
+ if (! parse_phylip (alignmentData, input))
+ {
+ errno = PLL_ERROR_PHYLIP_BODY_SYNTAX;
+ pllAlignmentDataDestroy (alignmentData);
+ lex_table_restore();
+ rax_free (rawdata);
+ return (NULL);
+ }
+
+ lex_table_restore();
+ rax_free (rawdata);
+
+ alignmentData->siteWeights = (int *) rax_malloc (alignmentData->sequenceLength * sizeof (int));
+ for (i = 0; i < alignmentData->sequenceLength; ++ i)
+ alignmentData->siteWeights[i] = 1;
+
+ return (alignmentData);
+}
+
+
+/* FASTA routines */
+
+static void query_close(void)
+{
+ fclose(query_fp);
+
+ if (query_seq)
+ free(query_seq);
+ if (query_head)
+ free(query_head);
+
+ query_head = 0;
+ query_seq = 0;
+}
+
+static int query_open(const char * filename)
+{
+ query_head = NULL;
+ query_seq = NULL;
+
+ query_head_len = 0;
+ query_seq_len = 0;
+
+ query_head_alloc = PLL_MEMCHUNK;
+ query_seq_alloc = PLL_MEMCHUNK;
+
+ query_head = (char *) malloc((size_t)query_head_alloc);
+ if (!query_head) return 0;
+ query_seq = (char *) malloc((size_t)query_seq_alloc);
+ if (!query_seq)
+ {
+ free(query_head);
+ return 0;
+ }
+
+ query_no = -1;
+
+ /* open query file */
+ query_fp = NULL;
+ query_fp = fopen(filename, "r");
+ if (!query_fp)
+ {
+ free(query_head);
+ free(query_seq);
+ return 0;
+ }
+
+ if (fseek(query_fp, 0, SEEK_END))
+ {
+ free(query_head);
+ free(query_seq);
+ return 0;
+ }
+
+ query_filesize = ftell(query_fp);
+
+ rewind(query_fp);
+
+ query_line[0] = 0;
+ fgets(query_line, PLL_LINEALLOC, query_fp);
+ query_lineno = 1;
+
+ return 1;
+}
+
+static int query_getnext(char ** head, int * head_len,
+ char ** seq, int * seq_len, int * qno)
+{
+ while (query_line[0])
+ {
+ /* read header */
+
+ if (query_line[0] != '>')
+ return -1;
+
+ if (strlen(query_line) + 1 == PLL_LINEALLOC)
+ return -1;
+
+ /* terminate header at first space or end of line */
+
+ char * z0 = query_line + 1;
+ char * z = z0;
+ while (*z)
+ {
+ if (*z == '\n')
+ break;
+ z++;
+ }
+ long headerlen = z - z0;
+ query_head_len = headerlen;
+
+ /* store the header */
+
+ if (headerlen + 1 > query_head_alloc)
+ {
+ query_head_alloc = headerlen + 1;
+ query_head = (char *) realloc(query_head, (size_t)query_head_alloc);
+ if (!query_head) return -1;
+ }
+
+ memcpy(query_head, query_line + 1, (size_t)headerlen);
+ query_head[headerlen] = 0;
+
+ /* get next line */
+
+ query_line[0] = 0;
+ fgets(query_line, PLL_LINEALLOC, query_fp);
+ query_lineno++;
+
+ /* read sequence */
+
+ query_seq_len = 0;
+
+ while (query_line[0] && (query_line[0] != '>'))
+ {
+ char c;
+ char m;
+ char * p = query_line;
+
+ while((c = *p++))
+ {
+ m = chrstatus[(int)c];
+ switch(m)
+ {
+ case 0:
+ /* fatal character */
+ return -1;
+ break;
+
+ case 1:
+ /* legal character */
+ if (query_seq_len + 1 > query_seq_alloc)
+ {
+ query_seq_alloc += PLL_MEMCHUNK;
+ query_seq = (char *) realloc(query_seq, (size_t)query_seq_alloc);
+ if (!query_seq) return -1;
+ }
+ *(query_seq + query_seq_len) = c;
+ query_seq_len++;
+
+ break;
+
+ case 2:
+ /* silently stripped chars */
+ break;
+ default:
+ return -1;
+
+ }
+ }
+
+ query_line[0] = 0;
+ fgets(query_line, PLL_LINEALLOC, query_fp);
+ query_lineno++;
+ }
+
+ /* add zero after sequence */
+
+ if (query_seq_len + 1 > query_seq_alloc)
+ {
+ query_seq_alloc += PLL_MEMCHUNK;
+ query_seq = (char *) realloc(query_seq, (size_t)query_seq_alloc);
+ if (!query_seq) return -1;
+ }
+ *(query_seq + query_seq_len) = 0;
+
+ query_no++;
+ *head = query_head;
+ *seq = query_seq;
+ *head_len = query_head_len;
+ *seq_len = query_seq_len;
+ *qno = query_no;
+
+ return 1;
+ }
+
+ return 0;
+}
+
+static void _pll_free_temp_alignment(pllAlignmentData * alignmentData, int count)
+{
+ int i;
+
+ for (i = 1; i <= count; ++i)
+ {
+ free(alignmentData->sequenceData[i]);
+ free(alignmentData->sequenceLabels[i]);
+ }
+ free(alignmentData->sequenceData);
+ free(alignmentData->sequenceLabels);
+ free(alignmentData);
+}
+
+static pllAlignmentData *
+pllParseFASTA (const char * filename)
+{
+ int i,j;
+ int status;
+
+ pllAlignmentData * alignmentData;
+
+ if (!query_open(filename))
+ {
+ errno = PLL_ERROR_FILE_OPEN;
+ return NULL;
+ }
+
+ alignmentData = (pllAlignmentData *) malloc(sizeof(pllAlignmentData));
+ alignmentData->sequenceData = NULL;
+ alignmentData->sequenceLabels = NULL;
+
+ int prev_qseqlen = -1;
+ while(1)
+ {
+ char * qhead;
+ int query_head_len;
+ char *qseq;
+ int qseqlen;
+// int query_no = -1;
+
+ if ((status = query_getnext(&qhead, &query_head_len,
+ &qseq, &qseqlen, &query_no)) > 0)
+ {
+ alignmentData->sequenceData = (unsigned char **)realloc(alignmentData->sequenceData,
+ (query_no + 2)*sizeof(unsigned char *));
+ alignmentData->sequenceLabels = (char **)realloc(alignmentData->sequenceLabels,
+ (query_no + 2)*sizeof(char *));
+
+ /* remove trailing whitespace from sequence names */
+ j = query_head_len-1;
+ while(j>0 && (qhead[j] == ' ' || qhead[j] == '\t'))
+ {
+ qhead[j] = 0;
+ }
+ alignmentData->sequenceData[query_no+1] = (unsigned char *)strdup(qseq);
+ alignmentData->sequenceLabels[query_no+1] = strdup(qhead);
+
+ if (prev_qseqlen != -1)
+ {
+ /* fasta sequences not aligned, free everything except last read
+ which will be freed by query_close() */
+ if (qseqlen != prev_qseqlen)
+ {
+ errno = PLL_ERROR_FASTA_SYNTAX;
+ _pll_free_temp_alignment(alignmentData, query_no+1);
+ query_close();
+ return NULL;
+ }
+ }
+ else
+ {
+ alignmentData->sequenceLength = qseqlen;
+ alignmentData->originalSeqLength = qseqlen;
+ prev_qseqlen = qseqlen;
+ }
+ }
+ else if (status == -1)
+ {
+ errno = PLL_ERROR_FASTA_SYNTAX;
+ _pll_free_temp_alignment(alignmentData, query_no+1);
+ query_close();
+ return NULL;
+ }
+ else break;
+ }
+ alignmentData->sequenceCount = query_no+1;
+ query_close();
+
+ alignmentData->siteWeights = (int *) rax_malloc (alignmentData->sequenceLength * sizeof (int));
+ for (i = 0; i < alignmentData->sequenceLength; ++ i)
+ alignmentData->siteWeights[i] = 1;
+
+ /* ugly hack to turn it to one contiguous block of memory. This should be redesigned */
+ void * mem = malloc((alignmentData->sequenceCount)*(alignmentData->sequenceLength+1)*sizeof(unsigned char));
+ for (i = 1; i <= alignmentData->sequenceCount; ++i)
+ {
+ void * tmp = alignmentData->sequenceData[i];
+ alignmentData->sequenceData[i] = (unsigned char *) (mem + (i - 1) * (alignmentData->sequenceLength + 1) * sizeof (unsigned char));
+ memcpy(alignmentData->sequenceData[i], tmp, alignmentData->sequenceLength);
+ alignmentData->sequenceData[i][alignmentData->sequenceLength] = 0;
+ free(tmp);
+ }
+ alignmentData->sequenceData[0] = NULL;
+
+ return (alignmentData);
+}
+
+
+/** @ingroup alignmentGroup
+ @brief Parse a file that contains a multiple sequence alignment
+
+ Parses the file \a filename of type \a fileType which contains a multiple sequence alignment.
+ The supported file types are the sequential and interleaved versions of PHYLIP format, and
+ the FASTA format. The parsed alignment is returned as a pointer to a structure of type
+ ::pllAlignmentData
+
+ @param fileType
+ Type of file to parse. Can be either \b PLL_FORMAT_PHYLIP or \b PLL_FORMAT_FASTA
+
+ @param filename
+ Name of file to parse
+
+ @return
+ Returns a structure of type ::pllAlignmentData that contains the multiple sequence alignment,
+ otherwise returns \b NULL in case of failure.
+*/
+pllAlignmentData * pllParseAlignmentFile (int fileType, const char * filename)
+{
+ switch (fileType)
+ {
+ case PLL_FORMAT_PHYLIP:
+ return (pllParsePHYLIP (filename));
+ case PLL_FORMAT_FASTA:
+ return (pllParseFASTA (filename));
+ default:
+ /* RTFM */
+ errno = PLL_ERROR_INVALID_FILETYPE;
+ return (NULL);
+ }
+
+}
diff --git a/src/avxLikelihood.c b/src/avxLikelihood.c
new file mode 100644
index 0000000..d306695
--- /dev/null
+++ b/src/avxLikelihood.c
@@ -0,0 +1,4106 @@
+/**
+ * PLL (version 1.0.0) a software library for phylogenetic inference
+ * Copyright (C) 2013 Tomas Flouri and Alexandros Stamatakis
+ *
+ * Derived from
+ * RAxML-HPC, a program for sequential and parallel estimation of phylogenetic
+ * trees by Alexandros Stamatakis
+ *
+ * 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 3 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, see <http://www.gnu.org/licenses/>.
+ *
+ * For any other enquiries send an Email to Tomas Flouri
+ * Tomas.Flouri at h-its.org
+ *
+ * When publishing work that uses PLL please cite PLL
+ *
+ * @file avxLikelihood.c
+ *
+ * @brief AVX versions of the likelihood functions
+ *
+ * AVX versions of the likelihood functions
+ */
+#include <unistd.h>
+#include <math.h>
+#include <time.h>
+#include <stdlib.h>
+#include <stdio.h>
+#include <ctype.h>
+#include <string.h>
+#include <stdint.h>
+#include <limits.h>
+#include <stdint.h>
+#include <xmmintrin.h>
+#include <pmmintrin.h>
+#include <immintrin.h>
+#include <assert.h>
+
+#ifdef _FMA
+#include <x86intrin.h>
+#define FMAMACC(a,b,c) _mm256_fmadd_pd(b,c,a)
+#endif
+
+#include "pll.h"
+#include "pllInternal.h"
+
+extern const unsigned int mask32[32];
+
+const union __attribute__ ((aligned (PLL_BYTE_ALIGNMENT)))
+{
+ uint64_t i[4];
+ __m256d m;
+
+} absMask_AVX = {{0x7fffffffffffffffULL, 0x7fffffffffffffffULL, 0x7fffffffffffffffULL, 0x7fffffffffffffffULL}};
+
+
+
+static inline __m256d hadd4(__m256d v, __m256d u)
+{
+ __m256d
+ a, b;
+
+ v = _mm256_hadd_pd(v, v);
+ a = _mm256_permute2f128_pd(v, v, 1);
+ v = _mm256_add_pd(a, v);
+
+ u = _mm256_hadd_pd(u, u);
+ b = _mm256_permute2f128_pd(u, u, 1);
+ u = _mm256_add_pd(b, u);
+
+ v = _mm256_mul_pd(v, u);
+
+ return v;
+}
+
+static inline __m256d hadd3(__m256d v)
+{
+ __m256d
+ a;
+
+ v = _mm256_hadd_pd(v, v);
+ a = _mm256_permute2f128_pd(v, v, 1);
+ v = _mm256_add_pd(a, v);
+
+ return v;
+}
+
+
+void newviewGTRGAMMA_AVX(int tipCase,
+ double *x1, double *x2, double *x3,
+ double *extEV, double *tipVector,
+ int *ex3, unsigned char *tipX1, unsigned char *tipX2,
+ const int n, double *left, double *right, int *wgt, int *scalerIncrement, const boolean useFastScaling
+ )
+{
+
+ int
+ i,
+ k,
+ scale,
+ addScale = 0;
+
+ __m256d
+ minlikelihood_avx = _mm256_set1_pd(PLL_MINLIKELIHOOD),
+ twoto = _mm256_set1_pd(PLL_TWOTOTHE256);
+
+
+ switch(tipCase)
+ {
+ case PLL_TIP_TIP:
+ {
+ double
+ *uX1,
+ umpX1[1024] __attribute__ ((aligned (PLL_BYTE_ALIGNMENT))),
+ *uX2,
+ umpX2[1024] __attribute__ ((aligned (PLL_BYTE_ALIGNMENT)));
+
+ for (i = 1; i < 16; i++)
+ {
+ __m256d
+ tv = _mm256_load_pd(&(tipVector[i * 4]));
+
+ int
+ j;
+
+ for (j = 0; j < 4; j++)
+ for (k = 0; k < 4; k++)
+ {
+ __m256d
+ left1 = _mm256_load_pd(&left[j * 16 + k * 4]);
+
+ left1 = _mm256_mul_pd(left1, tv);
+ left1 = hadd3(left1);
+
+ _mm256_store_pd(&umpX1[i * 64 + j * 16 + k * 4], left1);
+ }
+
+ for (j = 0; j < 4; j++)
+ for (k = 0; k < 4; k++)
+ {
+ __m256d
+ left1 = _mm256_load_pd(&right[j * 16 + k * 4]);
+
+ left1 = _mm256_mul_pd(left1, tv);
+ left1 = hadd3(left1);
+
+ _mm256_store_pd(&umpX2[i * 64 + j * 16 + k * 4], left1);
+ }
+ }
+
+
+ for(i = 0; i < n; i++)
+ {
+ uX1 = &umpX1[64 * tipX1[i]];
+ uX2 = &umpX2[64 * tipX2[i]];
+
+ for(k = 0; k < 4; k++)
+ {
+ __m256d
+ xv = _mm256_setzero_pd();
+
+ int
+ l;
+
+ for(l = 0; l < 4; l++)
+ {
+ __m256d
+ x1v = _mm256_mul_pd(_mm256_load_pd(&uX1[k * 16 + l * 4]), _mm256_load_pd(&uX2[k * 16 + l * 4]));
+
+ __m256d
+ evv = _mm256_load_pd(&extEV[l * 4]);
+#ifdef _FMA
+ xv = FMAMACC(xv,x1v,evv);
+#else
+ xv = _mm256_add_pd(xv, _mm256_mul_pd(x1v, evv));
+#endif
+ }
+
+ _mm256_store_pd(&x3[16 * i + 4 * k], xv);
+ }
+ }
+ }
+ break;
+ case PLL_TIP_INNER:
+ {
+ double
+ *uX1,
+ umpX1[1024] __attribute__ ((aligned (PLL_BYTE_ALIGNMENT)));
+
+ for (i = 1; i < 16; i++)
+ {
+ __m256d
+ tv = _mm256_load_pd(&(tipVector[i*4]));
+
+ int
+ j;
+
+ for (j = 0; j < 4; j++)
+ for (k = 0; k < 4; k++)
+ {
+ __m256d
+ left1 = _mm256_load_pd(&left[j * 16 + k * 4]);
+
+ left1 = _mm256_mul_pd(left1, tv);
+ left1 = hadd3(left1);
+
+ _mm256_store_pd(&umpX1[i * 64 + j * 16 + k * 4], left1);
+ }
+ }
+
+ for(i = 0; i < n; i++)
+ {
+ __m256d
+ xv[4];
+
+ scale = 1;
+ uX1 = &umpX1[64 * tipX1[i]];
+
+ for(k = 0; k < 4; k++)
+ {
+ __m256d
+ xvr = _mm256_load_pd(&(x2[i * 16 + k * 4]));
+
+ int
+ l;
+
+ xv[k] = _mm256_setzero_pd();
+
+ for(l = 0; l < 4; l++)
+ {
+ __m256d
+ x1v = _mm256_load_pd(&uX1[k * 16 + l * 4]),
+ x2v = _mm256_mul_pd(xvr, _mm256_load_pd(&right[k * 16 + l * 4]));
+
+ x2v = hadd3(x2v);
+ x1v = _mm256_mul_pd(x1v, x2v);
+
+ __m256d
+ evv = _mm256_load_pd(&extEV[l * 4]);
+
+#ifdef _FMA
+ xv[k] = FMAMACC(xv[k],x1v,evv);
+#else
+ xv[k] = _mm256_add_pd(xv[k], _mm256_mul_pd(x1v, evv));
+#endif
+ }
+
+ if(scale)
+ {
+ __m256d
+ v1 = _mm256_and_pd(xv[k], absMask_AVX.m);
+
+ v1 = _mm256_cmp_pd(v1, minlikelihood_avx, _CMP_LT_OS);
+
+ if(_mm256_movemask_pd( v1 ) != 15)
+ scale = 0;
+ }
+ }
+
+ if(scale)
+ {
+ xv[0] = _mm256_mul_pd(xv[0], twoto);
+ xv[1] = _mm256_mul_pd(xv[1], twoto);
+ xv[2] = _mm256_mul_pd(xv[2], twoto);
+ xv[3] = _mm256_mul_pd(xv[3], twoto);
+
+ if(useFastScaling)
+ addScale += wgt[i];
+ else
+ ex3[i] += 1;
+ }
+
+ _mm256_store_pd(&x3[16 * i], xv[0]);
+ _mm256_store_pd(&x3[16 * i + 4], xv[1]);
+ _mm256_store_pd(&x3[16 * i + 8], xv[2]);
+ _mm256_store_pd(&x3[16 * i + 12], xv[3]);
+ }
+ }
+ break;
+ case PLL_INNER_INNER:
+ {
+ for(i = 0; i < n; i++)
+ {
+ __m256d
+ xv[4];
+
+ scale = 1;
+
+ for(k = 0; k < 4; k++)
+ {
+ __m256d
+
+ xvl = _mm256_load_pd(&(x1[i * 16 + k * 4])),
+ xvr = _mm256_load_pd(&(x2[i * 16 + k * 4]));
+
+ int
+ l;
+
+ xv[k] = _mm256_setzero_pd();
+
+ for(l = 0; l < 4; l++)
+ {
+ __m256d
+ x1v = _mm256_mul_pd(xvl, _mm256_load_pd(&left[k * 16 + l * 4])),
+ x2v = _mm256_mul_pd(xvr, _mm256_load_pd(&right[k * 16 + l * 4]));
+
+ x1v = hadd4(x1v, x2v);
+
+ __m256d
+ evv = _mm256_load_pd(&extEV[l * 4]);
+
+ xv[k] = _mm256_add_pd(xv[k], _mm256_mul_pd(x1v, evv));
+ }
+
+ if(scale)
+ {
+ __m256d
+ v1 = _mm256_and_pd(xv[k], absMask_AVX.m);
+
+ v1 = _mm256_cmp_pd(v1, minlikelihood_avx, _CMP_LT_OS);
+
+ if(_mm256_movemask_pd( v1 ) != 15)
+ scale = 0;
+ }
+ }
+
+ if(scale)
+ {
+ xv[0] = _mm256_mul_pd(xv[0], twoto);
+ xv[1] = _mm256_mul_pd(xv[1], twoto);
+ xv[2] = _mm256_mul_pd(xv[2], twoto);
+ xv[3] = _mm256_mul_pd(xv[3], twoto);
+
+ if(useFastScaling)
+ addScale += wgt[i];
+ else
+ ex3[i] += 1;
+ }
+
+ _mm256_store_pd(&x3[16 * i], xv[0]);
+ _mm256_store_pd(&x3[16 * i + 4], xv[1]);
+ _mm256_store_pd(&x3[16 * i + 8], xv[2]);
+ _mm256_store_pd(&x3[16 * i + 12], xv[3]);
+ }
+ }
+ break;
+ default:
+ assert(0);
+ }
+
+ if(useFastScaling)
+ *scalerIncrement = addScale;
+
+}
+
+void newviewGTRGAMMA_AVX_GAPPED_SAVE(int tipCase,
+ double *x1_start, double *x2_start, double *x3_start,
+ double *extEV, double *tipVector,
+ int *ex3, unsigned char *tipX1, unsigned char *tipX2,
+ const int n, double *left, double *right, int *wgt, int *scalerIncrement, const boolean useFastScaling,
+ unsigned int *x1_gap, unsigned int *x2_gap, unsigned int *x3_gap,
+ double *x1_gapColumn, double *x2_gapColumn, double *x3_gapColumn
+ )
+{
+
+ int
+ i,
+ k,
+ scale,
+ scaleGap,
+ addScale = 0;
+
+ __m256d
+ minlikelihood_avx = _mm256_set1_pd( PLL_MINLIKELIHOOD ),
+ twoto = _mm256_set1_pd(PLL_TWOTOTHE256);
+
+ double
+ *x1,
+ *x2,
+ *x3,
+ *x1_ptr = x1_start,
+ *x2_ptr = x2_start;
+
+ switch(tipCase)
+ {
+ case PLL_TIP_TIP:
+ {
+ double
+ *uX1,
+ umpX1[1024] __attribute__ ((aligned (PLL_BYTE_ALIGNMENT))),
+ *uX2,
+ umpX2[1024] __attribute__ ((aligned (PLL_BYTE_ALIGNMENT)));
+
+ for (i = 1; i < 16; i++)
+ {
+ __m256d
+ tv = _mm256_load_pd(&(tipVector[i * 4]));
+
+ int
+ j;
+
+ for (j = 0; j < 4; j++)
+ for (k = 0; k < 4; k++)
+ {
+ __m256d
+ left1 = _mm256_load_pd(&left[j * 16 + k * 4]);
+
+ left1 = _mm256_mul_pd(left1, tv);
+ left1 = hadd3(left1);
+
+ _mm256_store_pd(&umpX1[i * 64 + j * 16 + k * 4], left1);
+ }
+
+ for (j = 0; j < 4; j++)
+ for (k = 0; k < 4; k++)
+ {
+ __m256d
+ left1 = _mm256_load_pd(&right[j * 16 + k * 4]);
+
+ left1 = _mm256_mul_pd(left1, tv);
+ left1 = hadd3(left1);
+
+ _mm256_store_pd(&umpX2[i * 64 + j * 16 + k * 4], left1);
+ }
+ }
+
+ x3 = x3_gapColumn;
+
+ {
+ uX1 = &umpX1[960];
+ uX2 = &umpX2[960];
+
+ for(k = 0; k < 4; k++)
+ {
+ __m256d
+ xv = _mm256_setzero_pd();
+
+ int
+ l;
+
+ for(l = 0; l < 4; l++)
+ {
+ __m256d
+ x1v = _mm256_mul_pd(_mm256_load_pd(&uX1[k * 16 + l * 4]), _mm256_load_pd(&uX2[k * 16 + l * 4]));
+
+ __m256d
+ evv = _mm256_load_pd(&extEV[l * 4]);
+#ifdef _FMA
+ xv = FMAMACC(xv,x1v,evv);
+#else
+ xv = _mm256_add_pd(xv, _mm256_mul_pd(x1v, evv));
+#endif
+ }
+
+ _mm256_store_pd(&x3[4 * k], xv);
+ }
+ }
+
+ x3 = x3_start;
+
+ for(i = 0; i < n; i++)
+ {
+ if(!(x3_gap[i / 32] & mask32[i % 32]))
+ {
+ uX1 = &umpX1[64 * tipX1[i]];
+ uX2 = &umpX2[64 * tipX2[i]];
+
+ for(k = 0; k < 4; k++)
+ {
+ __m256d
+ xv = _mm256_setzero_pd();
+
+ int
+ l;
+
+ for(l = 0; l < 4; l++)
+ {
+ __m256d
+ x1v = _mm256_mul_pd(_mm256_load_pd(&uX1[k * 16 + l * 4]), _mm256_load_pd(&uX2[k * 16 + l * 4]));
+
+ __m256d
+ evv = _mm256_load_pd(&extEV[l * 4]);
+#ifdef _FMA
+ xv = FMAMACC(xv,x1v,evv);
+#else
+ xv = _mm256_add_pd(xv, _mm256_mul_pd(x1v, evv));
+#endif
+ }
+
+ _mm256_store_pd(&x3[4 * k], xv);
+ }
+
+ x3 += 16;
+ }
+ }
+ }
+ break;
+ case PLL_TIP_INNER:
+ {
+ double
+ *uX1,
+ umpX1[1024] __attribute__ ((aligned (PLL_BYTE_ALIGNMENT)));
+
+ for (i = 1; i < 16; i++)
+ {
+ __m256d
+ tv = _mm256_load_pd(&(tipVector[i*4]));
+
+ int
+ j;
+
+ for (j = 0; j < 4; j++)
+ for (k = 0; k < 4; k++)
+ {
+ __m256d
+ left1 = _mm256_load_pd(&left[j * 16 + k * 4]);
+
+ left1 = _mm256_mul_pd(left1, tv);
+ left1 = hadd3(left1);
+
+ _mm256_store_pd(&umpX1[i * 64 + j * 16 + k * 4], left1);
+ }
+ }
+
+ {
+ __m256d
+ xv[4];
+
+ scaleGap = 1;
+ uX1 = &umpX1[960];
+
+ x2 = x2_gapColumn;
+ x3 = x3_gapColumn;
+
+ for(k = 0; k < 4; k++)
+ {
+ __m256d
+ xvr = _mm256_load_pd(&(x2[k * 4]));
+
+ int
+ l;
+
+ xv[k] = _mm256_setzero_pd();
+
+ for(l = 0; l < 4; l++)
+ {
+ __m256d
+ x1v = _mm256_load_pd(&uX1[k * 16 + l * 4]),
+ x2v = _mm256_mul_pd(xvr, _mm256_load_pd(&right[k * 16 + l * 4]));
+
+ x2v = hadd3(x2v);
+ x1v = _mm256_mul_pd(x1v, x2v);
+
+ __m256d
+ evv = _mm256_load_pd(&extEV[l * 4]);
+
+#ifdef _FMA
+ xv[k] = FMAMACC(xv[k],x1v,evv);
+#else
+ xv[k] = _mm256_add_pd(xv[k], _mm256_mul_pd(x1v, evv));
+#endif
+ }
+
+ if(scaleGap)
+ {
+ __m256d
+ v1 = _mm256_and_pd(xv[k], absMask_AVX.m);
+
+ v1 = _mm256_cmp_pd(v1, minlikelihood_avx, _CMP_LT_OS);
+
+ if(_mm256_movemask_pd( v1 ) != 15)
+ scaleGap = 0;
+ }
+ }
+
+ if(scaleGap)
+ {
+ xv[0] = _mm256_mul_pd(xv[0], twoto);
+ xv[1] = _mm256_mul_pd(xv[1], twoto);
+ xv[2] = _mm256_mul_pd(xv[2], twoto);
+ xv[3] = _mm256_mul_pd(xv[3], twoto);
+ }
+
+ _mm256_store_pd(&x3[0], xv[0]);
+ _mm256_store_pd(&x3[4], xv[1]);
+ _mm256_store_pd(&x3[8], xv[2]);
+ _mm256_store_pd(&x3[12], xv[3]);
+ }
+
+ x3 = x3_start;
+
+ for(i = 0; i < n; i++)
+ {
+ if((x3_gap[i / 32] & mask32[i % 32]))
+ {
+ if(scaleGap)
+ {
+ if(useFastScaling)
+ addScale += wgt[i];
+ else
+ ex3[i] += 1;
+ }
+ }
+ else
+ {
+ if(x2_gap[i / 32] & mask32[i % 32])
+ x2 = x2_gapColumn;
+ else
+ {
+ x2 = x2_ptr;
+ x2_ptr += 16;
+ }
+
+ __m256d
+ xv[4];
+
+ scale = 1;
+ uX1 = &umpX1[64 * tipX1[i]];
+
+ for(k = 0; k < 4; k++)
+ {
+ __m256d
+ xvr = _mm256_load_pd(&(x2[k * 4]));
+
+ int
+ l;
+
+ xv[k] = _mm256_setzero_pd();
+
+ for(l = 0; l < 4; l++)
+ {
+ __m256d
+ x1v = _mm256_load_pd(&uX1[k * 16 + l * 4]),
+ x2v = _mm256_mul_pd(xvr, _mm256_load_pd(&right[k * 16 + l * 4]));
+
+ x2v = hadd3(x2v);
+ x1v = _mm256_mul_pd(x1v, x2v);
+
+ __m256d
+ evv = _mm256_load_pd(&extEV[l * 4]);
+
+#ifdef _FMA
+ xv[k] = FMAMACC(xv[k],x1v,evv);
+#else
+ xv[k] = _mm256_add_pd(xv[k], _mm256_mul_pd(x1v, evv));
+#endif
+ }
+
+ if(scale)
+ {
+ __m256d
+ v1 = _mm256_and_pd(xv[k], absMask_AVX.m);
+
+ v1 = _mm256_cmp_pd(v1, minlikelihood_avx, _CMP_LT_OS);
+
+ if(_mm256_movemask_pd( v1 ) != 15)
+ scale = 0;
+ }
+ }
+
+ if(scale)
+ {
+ xv[0] = _mm256_mul_pd(xv[0], twoto);
+ xv[1] = _mm256_mul_pd(xv[1], twoto);
+ xv[2] = _mm256_mul_pd(xv[2], twoto);
+ xv[3] = _mm256_mul_pd(xv[3], twoto);
+
+ if(useFastScaling)
+ addScale += wgt[i];
+ else
+ ex3[i] += 1;
+ }
+
+ _mm256_store_pd(&x3[0], xv[0]);
+ _mm256_store_pd(&x3[4], xv[1]);
+ _mm256_store_pd(&x3[8], xv[2]);
+ _mm256_store_pd(&x3[12], xv[3]);
+
+ x3 += 16;
+ }
+ }
+ }
+ break;
+ case PLL_INNER_INNER:
+ {
+ {
+ x1 = x1_gapColumn;
+ x2 = x2_gapColumn;
+ x3 = x3_gapColumn;
+
+ __m256d
+ xv[4];
+
+ scaleGap = 1;
+
+ for(k = 0; k < 4; k++)
+ {
+ __m256d
+
+ xvl = _mm256_load_pd(&(x1[k * 4])),
+ xvr = _mm256_load_pd(&(x2[k * 4]));
+
+ int
+ l;
+
+ xv[k] = _mm256_setzero_pd();
+
+ for(l = 0; l < 4; l++)
+ {
+ __m256d
+ x1v = _mm256_mul_pd(xvl, _mm256_load_pd(&left[k * 16 + l * 4])),
+ x2v = _mm256_mul_pd(xvr, _mm256_load_pd(&right[k * 16 + l * 4]));
+
+ x1v = hadd4(x1v, x2v);
+
+ __m256d
+ evv = _mm256_load_pd(&extEV[l * 4]);
+
+ xv[k] = _mm256_add_pd(xv[k], _mm256_mul_pd(x1v, evv));
+ }
+
+ if(scaleGap)
+ {
+ __m256d
+ v1 = _mm256_and_pd(xv[k], absMask_AVX.m);
+
+ v1 = _mm256_cmp_pd(v1, minlikelihood_avx, _CMP_LT_OS);
+
+ if(_mm256_movemask_pd( v1 ) != 15)
+ scaleGap = 0;
+ }
+ }
+
+ if(scaleGap)
+ {
+ xv[0] = _mm256_mul_pd(xv[0], twoto);
+ xv[1] = _mm256_mul_pd(xv[1], twoto);
+ xv[2] = _mm256_mul_pd(xv[2], twoto);
+ xv[3] = _mm256_mul_pd(xv[3], twoto);
+ }
+
+ _mm256_store_pd(&x3[0], xv[0]);
+ _mm256_store_pd(&x3[4], xv[1]);
+ _mm256_store_pd(&x3[8], xv[2]);
+ _mm256_store_pd(&x3[12], xv[3]);
+ }
+
+ x3 = x3_start;
+
+ for(i = 0; i < n; i++)
+ {
+ if(x3_gap[i / 32] & mask32[i % 32])
+ {
+ if(scaleGap)
+ {
+ if(useFastScaling)
+ addScale += wgt[i];
+ else
+ ex3[i] += 1;
+ }
+ }
+ else
+ {
+ if(x1_gap[i / 32] & mask32[i % 32])
+ x1 = x1_gapColumn;
+ else
+ {
+ x1 = x1_ptr;
+ x1_ptr += 16;
+ }
+
+ if(x2_gap[i / 32] & mask32[i % 32])
+ x2 = x2_gapColumn;
+ else
+ {
+ x2 = x2_ptr;
+ x2_ptr += 16;
+ }
+
+ __m256d
+ xv[4];
+
+ scale = 1;
+
+ for(k = 0; k < 4; k++)
+ {
+ __m256d
+
+ xvl = _mm256_load_pd(&(x1[k * 4])),
+ xvr = _mm256_load_pd(&(x2[k * 4]));
+
+ int
+ l;
+
+ xv[k] = _mm256_setzero_pd();
+
+ for(l = 0; l < 4; l++)
+ {
+ __m256d
+ x1v = _mm256_mul_pd(xvl, _mm256_load_pd(&left[k * 16 + l * 4])),
+ x2v = _mm256_mul_pd(xvr, _mm256_load_pd(&right[k * 16 + l * 4]));
+
+ x1v = hadd4(x1v, x2v);
+
+ __m256d
+ evv = _mm256_load_pd(&extEV[l * 4]);
+
+ xv[k] = _mm256_add_pd(xv[k], _mm256_mul_pd(x1v, evv));
+ }
+
+ if(scale)
+ {
+ __m256d
+ v1 = _mm256_and_pd(xv[k], absMask_AVX.m);
+
+ v1 = _mm256_cmp_pd(v1, minlikelihood_avx, _CMP_LT_OS);
+
+ if(_mm256_movemask_pd( v1 ) != 15)
+ scale = 0;
+ }
+ }
+
+ if(scale)
+ {
+ xv[0] = _mm256_mul_pd(xv[0], twoto);
+ xv[1] = _mm256_mul_pd(xv[1], twoto);
+ xv[2] = _mm256_mul_pd(xv[2], twoto);
+ xv[3] = _mm256_mul_pd(xv[3], twoto);
+
+ if(useFastScaling)
+ addScale += wgt[i];
+ else
+ ex3[i] += 1;
+ }
+
+ _mm256_store_pd(&x3[0], xv[0]);
+ _mm256_store_pd(&x3[4], xv[1]);
+ _mm256_store_pd(&x3[8], xv[2]);
+ _mm256_store_pd(&x3[12], xv[3]);
+
+ x3 += 16;
+ }
+ }
+ }
+ break;
+ default:
+ assert(0);
+ }
+
+ if(useFastScaling)
+ *scalerIncrement = addScale;
+
+}
+
+
+
+
+void newviewGTRCAT_AVX(int tipCase, double *EV, int *cptr,
+ double *x1_start, double *x2_start, double *x3_start, double *tipVector,
+ int *ex3, unsigned char *tipX1, unsigned char *tipX2,
+ int n, double *left, double *right, int *wgt, int *scalerIncrement, const boolean useFastScaling)
+{
+ double
+ *le,
+ *ri,
+ *x1,
+ *x2;
+
+ int
+ i,
+ addScale = 0;
+
+ __m256d
+ minlikelihood_avx = _mm256_set1_pd( PLL_MINLIKELIHOOD ),
+ twoto = _mm256_set1_pd(PLL_TWOTOTHE256);
+
+ switch(tipCase)
+ {
+ case PLL_TIP_TIP:
+ for (i = 0; i < n; i++)
+ {
+ int
+ l;
+
+ le = &left[cptr[i] * 16];
+ ri = &right[cptr[i] * 16];
+
+ x1 = &(tipVector[4 * tipX1[i]]);
+ x2 = &(tipVector[4 * tipX2[i]]);
+
+ __m256d
+ vv = _mm256_setzero_pd();
+
+ for(l = 0; l < 4; l++)
+ {
+ __m256d
+ x1v = _mm256_mul_pd(_mm256_load_pd(x1), _mm256_load_pd(&le[l * 4])),
+ x2v = _mm256_mul_pd(_mm256_load_pd(x2), _mm256_load_pd(&ri[l * 4]));
+
+ x1v = hadd4(x1v, x2v);
+
+ __m256d
+ evv = _mm256_load_pd(&EV[l * 4]);
+#ifdef _FMA
+ vv = FMAMACC(vv,x1v,evv);
+#else
+ vv = _mm256_add_pd(vv, _mm256_mul_pd(x1v, evv));
+#endif
+ }
+
+ _mm256_store_pd(&x3_start[4 * i], vv);
+ }
+ break;
+ case PLL_TIP_INNER:
+ for (i = 0; i < n; i++)
+ {
+ int
+ l;
+
+ x1 = &(tipVector[4 * tipX1[i]]);
+ x2 = &x2_start[4 * i];
+
+ le = &left[cptr[i] * 16];
+ ri = &right[cptr[i] * 16];
+
+ __m256d
+ vv = _mm256_setzero_pd();
+
+ for(l = 0; l < 4; l++)
+ {
+ __m256d
+ x1v = _mm256_mul_pd(_mm256_load_pd(x1), _mm256_load_pd(&le[l * 4])),
+ x2v = _mm256_mul_pd(_mm256_load_pd(x2), _mm256_load_pd(&ri[l * 4]));
+
+ x1v = hadd4(x1v, x2v);
+
+ __m256d
+ evv = _mm256_load_pd(&EV[l * 4]);
+
+#ifdef _FMA
+ vv = FMAMACC(vv,x1v,evv);
+#else
+ vv = _mm256_add_pd(vv, _mm256_mul_pd(x1v, evv));
+#endif
+ }
+
+
+ __m256d
+ v1 = _mm256_and_pd(vv, absMask_AVX.m);
+
+ v1 = _mm256_cmp_pd(v1, minlikelihood_avx, _CMP_LT_OS);
+
+ if(_mm256_movemask_pd( v1 ) == 15)
+ {
+ vv = _mm256_mul_pd(vv, twoto);
+
+ if(useFastScaling)
+ addScale += wgt[i];
+ else
+ ex3[i] += 1;
+ }
+
+ _mm256_store_pd(&x3_start[4 * i], vv);
+ }
+ break;
+ case PLL_INNER_INNER:
+ for (i = 0; i < n; i++)
+ {
+ int
+ l;
+
+ x1 = &x1_start[4 * i];
+ x2 = &x2_start[4 * i];
+
+
+ le = &left[cptr[i] * 16];
+ ri = &right[cptr[i] * 16];
+
+ __m256d
+ vv = _mm256_setzero_pd();
+
+ for(l = 0; l < 4; l++)
+ {
+ __m256d
+ x1v = _mm256_mul_pd(_mm256_load_pd(x1), _mm256_load_pd(&le[l * 4])),
+ x2v = _mm256_mul_pd(_mm256_load_pd(x2), _mm256_load_pd(&ri[l * 4]));
+
+ x1v = hadd4(x1v, x2v);
+
+ __m256d
+ evv = _mm256_load_pd(&EV[l * 4]);
+#ifdef _FMA
+ vv = FMAMACC(vv,x1v,evv);
+#else
+ vv = _mm256_add_pd(vv, _mm256_mul_pd(x1v, evv));
+#endif
+ }
+
+
+ __m256d
+ v1 = _mm256_and_pd(vv, absMask_AVX.m);
+
+ v1 = _mm256_cmp_pd(v1, minlikelihood_avx, _CMP_LT_OS);
+
+ if(_mm256_movemask_pd( v1 ) == 15)
+ {
+ vv = _mm256_mul_pd(vv, twoto);
+
+ if(useFastScaling)
+ addScale += wgt[i];
+ else
+ ex3[i] += 1;
+ }
+
+ _mm256_store_pd(&x3_start[4 * i], vv);
+
+ }
+ break;
+ default:
+ assert(0);
+ }
+
+ if(useFastScaling)
+ *scalerIncrement = addScale;
+}
+
+
+void newviewGTRCAT_AVX_GAPPED_SAVE(int tipCase, double *EV, int *cptr,
+ double *x1_start, double *x2_start, double *x3_start, double *tipVector,
+ int *ex3, unsigned char *tipX1, unsigned char *tipX2,
+ int n, double *left, double *right, int *wgt, int *scalerIncrement, const boolean useFastScaling,
+ unsigned int *x1_gap, unsigned int *x2_gap, unsigned int *x3_gap,
+ double *x1_gapColumn, double *x2_gapColumn, double *x3_gapColumn, const int maxCats)
+{
+ double
+ *le,
+ *ri,
+ *x1,
+ *x2,
+ *x3,
+ *x1_ptr = x1_start,
+ *x2_ptr = x2_start,
+ *x3_ptr = x3_start;
+
+ int
+ i,
+ scaleGap = 0,
+ addScale = 0;
+
+ __m256d
+ minlikelihood_avx = _mm256_set1_pd( PLL_MINLIKELIHOOD ),
+ twoto = _mm256_set1_pd(PLL_TWOTOTHE256);
+
+
+ {
+ int
+ l;
+
+ x1 = x1_gapColumn;
+ x2 = x2_gapColumn;
+ x3 = x3_gapColumn;
+
+ le = &left[maxCats * 16];
+ ri = &right[maxCats * 16];
+
+ __m256d
+ vv = _mm256_setzero_pd();
+
+ for(l = 0; l < 4; l++)
+ {
+ __m256d
+ x1v = _mm256_mul_pd(_mm256_load_pd(x1), _mm256_load_pd(&le[l * 4])),
+ x2v = _mm256_mul_pd(_mm256_load_pd(x2), _mm256_load_pd(&ri[l * 4]));
+
+ x1v = hadd4(x1v, x2v);
+
+ __m256d
+ evv = _mm256_load_pd(&EV[l * 4]);
+#ifdef _FMA
+ vv = FMAMACC(vv,x1v,evv);
+#else
+ vv = _mm256_add_pd(vv, _mm256_mul_pd(x1v, evv));
+#endif
+ }
+
+ if(tipCase != PLL_TIP_TIP)
+ {
+ __m256d
+ v1 = _mm256_and_pd(vv, absMask_AVX.m);
+
+ v1 = _mm256_cmp_pd(v1, minlikelihood_avx, _CMP_LT_OS);
+
+ if(_mm256_movemask_pd( v1 ) == 15)
+ {
+ vv = _mm256_mul_pd(vv, twoto);
+ scaleGap = 1;
+ }
+ }
+
+ _mm256_store_pd(x3, vv);
+ }
+
+ switch(tipCase)
+ {
+ case PLL_TIP_TIP:
+ for (i = 0; i < n; i++)
+ {
+ if(noGap(x3_gap, i))
+ {
+ int
+ l;
+
+ x1 = &(tipVector[4 * tipX1[i]]);
+ x2 = &(tipVector[4 * tipX2[i]]);
+
+ x3 = x3_ptr;
+
+ if(isGap(x1_gap, i))
+ le = &left[maxCats * 16];
+ else
+ le = &left[cptr[i] * 16];
+
+ if(isGap(x2_gap, i))
+ ri = &right[maxCats * 16];
+ else
+ ri = &right[cptr[i] * 16];
+
+ __m256d
+ vv = _mm256_setzero_pd();
+
+ for(l = 0; l < 4; l++)
+ {
+ __m256d
+ x1v = _mm256_mul_pd(_mm256_load_pd(x1), _mm256_load_pd(&le[l * 4])),
+ x2v = _mm256_mul_pd(_mm256_load_pd(x2), _mm256_load_pd(&ri[l * 4]));
+
+ x1v = hadd4(x1v, x2v);
+
+ __m256d
+ evv = _mm256_load_pd(&EV[l * 4]);
+#ifdef _FMA
+ vv = FMAMACC(vv,x1v,evv);
+#else
+ vv = _mm256_add_pd(vv, _mm256_mul_pd(x1v, evv));
+#endif
+ }
+
+ _mm256_store_pd(x3, vv);
+
+ x3_ptr += 4;
+ }
+ }
+ break;
+ case PLL_TIP_INNER:
+ for (i = 0; i < n; i++)
+ {
+ if(isGap(x3_gap, i))
+ {
+ if(scaleGap)
+ {
+ if(useFastScaling)
+ addScale += wgt[i];
+ else
+ ex3[i] += 1;
+ }
+ }
+ else
+ {
+ int
+ l;
+
+ x1 = &(tipVector[4 * tipX1[i]]);
+ x3 = x3_ptr;
+
+ if(isGap(x1_gap, i))
+ le = &left[maxCats * 16];
+ else
+ le = &left[cptr[i] * 16];
+
+ if(isGap(x2_gap, i))
+ {
+ ri = &right[maxCats * 16];
+ x2 = x2_gapColumn;
+ }
+ else
+ {
+ ri = &right[cptr[i] * 16];
+ x2 = x2_ptr;
+ x2_ptr += 4;
+ }
+
+ __m256d
+ vv = _mm256_setzero_pd();
+
+ for(l = 0; l < 4; l++)
+ {
+ __m256d
+ x1v = _mm256_mul_pd(_mm256_load_pd(x1), _mm256_load_pd(&le[l * 4])),
+ x2v = _mm256_mul_pd(_mm256_load_pd(x2), _mm256_load_pd(&ri[l * 4]));
+
+ x1v = hadd4(x1v, x2v);
+
+ __m256d
+ evv = _mm256_load_pd(&EV[l * 4]);
+
+#ifdef _FMA
+ vv = FMAMACC(vv,x1v,evv);
+#else
+ vv = _mm256_add_pd(vv, _mm256_mul_pd(x1v, evv));
+#endif
+ }
+
+
+ __m256d
+ v1 = _mm256_and_pd(vv, absMask_AVX.m);
+
+ v1 = _mm256_cmp_pd(v1, minlikelihood_avx, _CMP_LT_OS);
+
+ if(_mm256_movemask_pd( v1 ) == 15)
+ {
+ vv = _mm256_mul_pd(vv, twoto);
+
+ if(useFastScaling)
+ addScale += wgt[i];
+ else
+ ex3[i] += 1;
+ }
+
+ _mm256_store_pd(x3, vv);
+
+ x3_ptr += 4;
+ }
+ }
+ break;
+ case PLL_INNER_INNER:
+ for (i = 0; i < n; i++)
+ {
+ if(isGap(x3_gap, i))
+ {
+ if(scaleGap)
+ {
+ if(useFastScaling)
+ addScale += wgt[i];
+ else
+ ex3[i] += 1;
+ }
+ }
+ else
+ {
+ int
+ l;
+
+ x3 = x3_ptr;
+
+ if(isGap(x1_gap, i))
+ {
+ x1 = x1_gapColumn;
+ le = &left[maxCats * 16];
+ }
+ else
+ {
+ le = &left[cptr[i] * 16];
+ x1 = x1_ptr;
+ x1_ptr += 4;
+ }
+
+ if(isGap(x2_gap, i))
+ {
+ x2 = x2_gapColumn;
+ ri = &right[maxCats * 16];
+ }
+ else
+ {
+ ri = &right[cptr[i] * 16];
+ x2 = x2_ptr;
+ x2_ptr += 4;
+ }
+
+ __m256d
+ vv = _mm256_setzero_pd();
+
+ for(l = 0; l < 4; l++)
+ {
+ __m256d
+ x1v = _mm256_mul_pd(_mm256_load_pd(x1), _mm256_load_pd(&le[l * 4])),
+ x2v = _mm256_mul_pd(_mm256_load_pd(x2), _mm256_load_pd(&ri[l * 4]));
+
+ x1v = hadd4(x1v, x2v);
+
+ __m256d
+ evv = _mm256_load_pd(&EV[l * 4]);
+#ifdef _FMA
+ vv = FMAMACC(vv,x1v,evv);
+#else
+ vv = _mm256_add_pd(vv, _mm256_mul_pd(x1v, evv));
+#endif
+ }
+
+
+ __m256d
+ v1 = _mm256_and_pd(vv, absMask_AVX.m);
+
+ v1 = _mm256_cmp_pd(v1, minlikelihood_avx, _CMP_LT_OS);
+
+ if(_mm256_movemask_pd( v1 ) == 15)
+ {
+ vv = _mm256_mul_pd(vv, twoto);
+
+ if(useFastScaling)
+ addScale += wgt[i];
+ else
+ ex3[i] += 1;
+ }
+
+ _mm256_store_pd(x3, vv);
+
+ x3_ptr += 4;
+ }
+ }
+ break;
+ default:
+ assert(0);
+ }
+
+ if(useFastScaling)
+ *scalerIncrement = addScale;
+}
+
+void newviewGTRCATPROT_AVX(int tipCase, double *extEV,
+ int *cptr,
+ double *x1, double *x2, double *x3, double *tipVector,
+ int *ex3, unsigned char *tipX1, unsigned char *tipX2,
+ int n, double *left, double *right, int *wgt, int *scalerIncrement, const boolean useFastScaling)
+{
+ double
+ *le, *ri, *v, *vl, *vr;
+
+ int i, l, scale, addScale = 0;
+
+#ifdef _FMA
+ int k;
+#endif
+
+ switch(tipCase)
+ {
+ case PLL_TIP_TIP:
+ {
+ for (i = 0; i < n; i++)
+ {
+ le = &left[cptr[i] * 400];
+ ri = &right[cptr[i] * 400];
+
+ vl = &(tipVector[20 * tipX1[i]]);
+ vr = &(tipVector[20 * tipX2[i]]);
+ v = &x3[20 * i];
+
+ __m256d vv[5];
+
+ vv[0] = _mm256_setzero_pd();
+ vv[1] = _mm256_setzero_pd();
+ vv[2] = _mm256_setzero_pd();
+ vv[3] = _mm256_setzero_pd();
+ vv[4] = _mm256_setzero_pd();
+
+ for(l = 0; l < 20; l++)
+ {
+ __m256d
+ x1v = _mm256_setzero_pd(),
+ x2v = _mm256_setzero_pd();
+
+ double
+ *ev = &extEV[l * 20],
+ *lv = &le[l * 20],
+ *rv = &ri[l * 20];
+
+#ifdef _FMA
+ for(k = 0; k < 20; k += 4)
+ {
+ __m256d vlv = _mm256_load_pd(&vl[k]);
+ __m256d lvv = _mm256_load_pd(&lv[k]);
+ x1v = FMAMACC(x1v,vlv,lvv);
+ __m256d vrv = _mm256_load_pd(&vr[k]);
+ __m256d rvv = _mm256_load_pd(&rv[k]);
+ x2v = FMAMACC(x2v,vrv,rvv);
+ }
+#else
+ x1v = _mm256_add_pd(x1v, _mm256_mul_pd(_mm256_load_pd(&vl[0]), _mm256_load_pd(&lv[0])));
+ x1v = _mm256_add_pd(x1v, _mm256_mul_pd(_mm256_load_pd(&vl[4]), _mm256_load_pd(&lv[4])));
+ x1v = _mm256_add_pd(x1v, _mm256_mul_pd(_mm256_load_pd(&vl[8]), _mm256_load_pd(&lv[8])));
+ x1v = _mm256_add_pd(x1v, _mm256_mul_pd(_mm256_load_pd(&vl[12]), _mm256_load_pd(&lv[12])));
+ x1v = _mm256_add_pd(x1v, _mm256_mul_pd(_mm256_load_pd(&vl[16]), _mm256_load_pd(&lv[16])));
+
+ x2v = _mm256_add_pd(x2v, _mm256_mul_pd(_mm256_load_pd(&vr[0]), _mm256_load_pd(&rv[0])));
+ x2v = _mm256_add_pd(x2v, _mm256_mul_pd(_mm256_load_pd(&vr[4]), _mm256_load_pd(&rv[4])));
+ x2v = _mm256_add_pd(x2v, _mm256_mul_pd(_mm256_load_pd(&vr[8]), _mm256_load_pd(&rv[8])));
+ x2v = _mm256_add_pd(x2v, _mm256_mul_pd(_mm256_load_pd(&vr[12]), _mm256_load_pd(&rv[12])));
+ x2v = _mm256_add_pd(x2v, _mm256_mul_pd(_mm256_load_pd(&vr[16]), _mm256_load_pd(&rv[16])));
+#endif
+
+ x1v = hadd4(x1v, x2v);
+#ifdef _FMA
+ for(k = 0; k < 5; k++)
+ {
+ __m256d evv = _mm256_load_pd(&ev[k*4]);
+ vv[k] = FMAMACC(vv[k],x1v,evv);
+ }
+#else
+ __m256d
+ evv[5];
+
+ evv[0] = _mm256_load_pd(&ev[0]);
+ evv[1] = _mm256_load_pd(&ev[4]);
+ evv[2] = _mm256_load_pd(&ev[8]);
+ evv[3] = _mm256_load_pd(&ev[12]);
+ evv[4] = _mm256_load_pd(&ev[16]);
+
+ vv[0] = _mm256_add_pd(vv[0], _mm256_mul_pd(x1v, evv[0]));
+ vv[1] = _mm256_add_pd(vv[1], _mm256_mul_pd(x1v, evv[1]));
+ vv[2] = _mm256_add_pd(vv[2], _mm256_mul_pd(x1v, evv[2]));
+ vv[3] = _mm256_add_pd(vv[3], _mm256_mul_pd(x1v, evv[3]));
+ vv[4] = _mm256_add_pd(vv[4], _mm256_mul_pd(x1v, evv[4]));
+#endif
+ }
+ _mm256_store_pd(&v[0], vv[0]);
+ _mm256_store_pd(&v[4], vv[1]);
+ _mm256_store_pd(&v[8], vv[2]);
+ _mm256_store_pd(&v[12], vv[3]);
+ _mm256_store_pd(&v[16], vv[4]);
+ }
+ }
+ break;
+ case PLL_TIP_INNER:
+ for (i = 0; i < n; i++)
+ {
+ le = &left[cptr[i] * 400];
+ ri = &right[cptr[i] * 400];
+
+ vl = &(tipVector[20 * tipX1[i]]);
+ vr = &x2[20 * i];
+ v = &x3[20 * i];
+
+ __m256d vv[5];
+
+ vv[0] = _mm256_setzero_pd();
+ vv[1] = _mm256_setzero_pd();
+ vv[2] = _mm256_setzero_pd();
+ vv[3] = _mm256_setzero_pd();
+ vv[4] = _mm256_setzero_pd();
+
+
+
+ for(l = 0; l < 20; l++)
+ {
+ __m256d
+ x1v = _mm256_setzero_pd(),
+ x2v = _mm256_setzero_pd();
+
+ double
+ *ev = &extEV[l * 20],
+ *lv = &le[l * 20],
+ *rv = &ri[l * 20];
+#ifdef _FMA
+ for(k = 0; k < 20; k += 4)
+ {
+ __m256d vlv = _mm256_load_pd(&vl[k]);
+ __m256d lvv = _mm256_load_pd(&lv[k]);
+ x1v = FMAMACC(x1v,vlv,lvv);
+ __m256d vrv = _mm256_load_pd(&vr[k]);
+ __m256d rvv = _mm256_load_pd(&rv[k]);
+ x2v = FMAMACC(x2v,vrv,rvv);
+ }
+#else
+ x1v = _mm256_add_pd(x1v, _mm256_mul_pd(_mm256_load_pd(&vl[0]), _mm256_load_pd(&lv[0])));
+ x1v = _mm256_add_pd(x1v, _mm256_mul_pd(_mm256_load_pd(&vl[4]), _mm256_load_pd(&lv[4])));
+ x1v = _mm256_add_pd(x1v, _mm256_mul_pd(_mm256_load_pd(&vl[8]), _mm256_load_pd(&lv[8])));
+ x1v = _mm256_add_pd(x1v, _mm256_mul_pd(_mm256_load_pd(&vl[12]), _mm256_load_pd(&lv[12])));
+ x1v = _mm256_add_pd(x1v, _mm256_mul_pd(_mm256_load_pd(&vl[16]), _mm256_load_pd(&lv[16])));
+
+ x2v = _mm256_add_pd(x2v, _mm256_mul_pd(_mm256_load_pd(&vr[0]), _mm256_load_pd(&rv[0])));
+ x2v = _mm256_add_pd(x2v, _mm256_mul_pd(_mm256_load_pd(&vr[4]), _mm256_load_pd(&rv[4])));
+ x2v = _mm256_add_pd(x2v, _mm256_mul_pd(_mm256_load_pd(&vr[8]), _mm256_load_pd(&rv[8])));
+ x2v = _mm256_add_pd(x2v, _mm256_mul_pd(_mm256_load_pd(&vr[12]), _mm256_load_pd(&rv[12])));
+ x2v = _mm256_add_pd(x2v, _mm256_mul_pd(_mm256_load_pd(&vr[16]), _mm256_load_pd(&rv[16])));
+#endif
+
+ x1v = hadd4(x1v, x2v);
+
+ __m256d
+ evv[5];
+
+ evv[0] = _mm256_load_pd(&ev[0]);
+ evv[1] = _mm256_load_pd(&ev[4]);
+ evv[2] = _mm256_load_pd(&ev[8]);
+ evv[3] = _mm256_load_pd(&ev[12]);
+ evv[4] = _mm256_load_pd(&ev[16]);
+
+#ifdef _FMA
+ for(k = 0; k < 5; k++)
+ vv[k] = FMAMACC(vv[k],x1v,evv[k]);
+#else
+ vv[0] = _mm256_add_pd(vv[0], _mm256_mul_pd(x1v, evv[0]));
+ vv[1] = _mm256_add_pd(vv[1], _mm256_mul_pd(x1v, evv[1]));
+ vv[2] = _mm256_add_pd(vv[2], _mm256_mul_pd(x1v, evv[2]));
+ vv[3] = _mm256_add_pd(vv[3], _mm256_mul_pd(x1v, evv[3]));
+ vv[4] = _mm256_add_pd(vv[4], _mm256_mul_pd(x1v, evv[4]));
+#endif
+ }
+
+
+ __m256d minlikelihood_avx = _mm256_set1_pd( PLL_MINLIKELIHOOD );
+
+ scale = 1;
+
+ for(l = 0; scale && (l < 20); l += 4)
+ {
+ __m256d
+ v1 = _mm256_and_pd(vv[l / 4], absMask_AVX.m);
+ v1 = _mm256_cmp_pd(v1, minlikelihood_avx, _CMP_LT_OS);
+
+ if(_mm256_movemask_pd( v1 ) != 15)
+ scale = 0;
+ }
+
+
+ if(scale)
+ {
+ __m256d
+ twoto = _mm256_set1_pd(PLL_TWOTOTHE256);
+
+ for(l = 0; l < 20; l += 4)
+ vv[l / 4] = _mm256_mul_pd(vv[l / 4] , twoto);
+
+ if(useFastScaling)
+ addScale += wgt[i];
+ else
+ ex3[i] += 1;
+ }
+
+ _mm256_store_pd(&v[0], vv[0]);
+ _mm256_store_pd(&v[4], vv[1]);
+ _mm256_store_pd(&v[8], vv[2]);
+ _mm256_store_pd(&v[12], vv[3]);
+ _mm256_store_pd(&v[16], vv[4]);
+ }
+ break;
+ case PLL_INNER_INNER:
+ for(i = 0; i < n; i++)
+ {
+ le = &left[cptr[i] * 400];
+ ri = &right[cptr[i] * 400];
+
+ vl = &x1[20 * i];
+ vr = &x2[20 * i];
+ v = &x3[20 * i];
+
+ __m256d vv[5];
+
+ vv[0] = _mm256_setzero_pd();
+ vv[1] = _mm256_setzero_pd();
+ vv[2] = _mm256_setzero_pd();
+ vv[3] = _mm256_setzero_pd();
+ vv[4] = _mm256_setzero_pd();
+
+ for(l = 0; l < 20; l++)
+ {
+ __m256d
+ x1v = _mm256_setzero_pd(),
+ x2v = _mm256_setzero_pd();
+
+ double
+ *ev = &extEV[l * 20],
+ *lv = &le[l * 20],
+ *rv = &ri[l * 20];
+
+ x1v = _mm256_add_pd(x1v, _mm256_mul_pd(_mm256_load_pd(&vl[0]), _mm256_load_pd(&lv[0])));
+ x1v = _mm256_add_pd(x1v, _mm256_mul_pd(_mm256_load_pd(&vl[4]), _mm256_load_pd(&lv[4])));
+ x1v = _mm256_add_pd(x1v, _mm256_mul_pd(_mm256_load_pd(&vl[8]), _mm256_load_pd(&lv[8])));
+ x1v = _mm256_add_pd(x1v, _mm256_mul_pd(_mm256_load_pd(&vl[12]), _mm256_load_pd(&lv[12])));
+ x1v = _mm256_add_pd(x1v, _mm256_mul_pd(_mm256_load_pd(&vl[16]), _mm256_load_pd(&lv[16])));
+
+ x2v = _mm256_add_pd(x2v, _mm256_mul_pd(_mm256_load_pd(&vr[0]), _mm256_load_pd(&rv[0])));
+ x2v = _mm256_add_pd(x2v, _mm256_mul_pd(_mm256_load_pd(&vr[4]), _mm256_load_pd(&rv[4])));
+ x2v = _mm256_add_pd(x2v, _mm256_mul_pd(_mm256_load_pd(&vr[8]), _mm256_load_pd(&rv[8])));
+ x2v = _mm256_add_pd(x2v, _mm256_mul_pd(_mm256_load_pd(&vr[12]), _mm256_load_pd(&rv[12])));
+ x2v = _mm256_add_pd(x2v, _mm256_mul_pd(_mm256_load_pd(&vr[16]), _mm256_load_pd(&rv[16])));
+
+ x1v = hadd4(x1v, x2v);
+#ifdef _FMA
+ for(k = 0; k < 5; k++)
+ {
+ __m256d evv = _mm256_load_pd(&ev[k*4]);
+ vv[k] = FMAMACC(vv[k],x1v,evv);
+ }
+#else
+ __m256d
+ evv[5];
+
+ evv[0] = _mm256_load_pd(&ev[0]);
+ evv[1] = _mm256_load_pd(&ev[4]);
+ evv[2] = _mm256_load_pd(&ev[8]);
+ evv[3] = _mm256_load_pd(&ev[12]);
+ evv[4] = _mm256_load_pd(&ev[16]);
+
+ vv[0] = _mm256_add_pd(vv[0], _mm256_mul_pd(x1v, evv[0]));
+ vv[1] = _mm256_add_pd(vv[1], _mm256_mul_pd(x1v, evv[1]));
+ vv[2] = _mm256_add_pd(vv[2], _mm256_mul_pd(x1v, evv[2]));
+ vv[3] = _mm256_add_pd(vv[3], _mm256_mul_pd(x1v, evv[3]));
+ vv[4] = _mm256_add_pd(vv[4], _mm256_mul_pd(x1v, evv[4]));
+#endif
+ }
+
+
+ __m256d minlikelihood_avx = _mm256_set1_pd( PLL_MINLIKELIHOOD );
+
+ scale = 1;
+
+ for(l = 0; scale && (l < 20); l += 4)
+ {
+ __m256d
+ v1 = _mm256_and_pd(vv[l / 4], absMask_AVX.m);
+ v1 = _mm256_cmp_pd(v1, minlikelihood_avx, _CMP_LT_OS);
+
+ if(_mm256_movemask_pd( v1 ) != 15)
+ scale = 0;
+ }
+
+ if(scale)
+ {
+ __m256d
+ twoto = _mm256_set1_pd(PLL_TWOTOTHE256);
+
+ for(l = 0; l < 20; l += 4)
+ vv[l / 4] = _mm256_mul_pd(vv[l / 4] , twoto);
+
+ if(useFastScaling)
+ addScale += wgt[i];
+ else
+ ex3[i] += 1;
+ }
+
+ _mm256_store_pd(&v[0], vv[0]);
+ _mm256_store_pd(&v[4], vv[1]);
+ _mm256_store_pd(&v[8], vv[2]);
+ _mm256_store_pd(&v[12], vv[3]);
+ _mm256_store_pd(&v[16], vv[4]);
+
+ }
+ break;
+ default:
+ assert(0);
+ }
+
+ if(useFastScaling)
+ *scalerIncrement = addScale;
+}
+
+void newviewGTRCATPROT_AVX_GAPPED_SAVE(int tipCase, double *extEV,
+ int *cptr,
+ double *x1, double *x2, double *x3, double *tipVector,
+ int *ex3, unsigned char *tipX1, unsigned char *tipX2,
+ int n, double *left, double *right, int *wgt, int *scalerIncrement, const boolean useFastScaling,
+ unsigned int *x1_gap, unsigned int *x2_gap, unsigned int *x3_gap,
+ double *x1_gapColumn, double *x2_gapColumn, double *x3_gapColumn, const int maxCats)
+{
+ double
+ *le,
+ *ri,
+ *v,
+ *vl,
+ *vr,
+ *x1_ptr = x1,
+ *x2_ptr = x2,
+ *x3_ptr = x3;
+
+ int
+ i,
+ l,
+ scale,
+ addScale = 0,
+ scaleGap = 0;
+
+#ifdef _FMA
+ int k;
+#endif
+
+ {
+ le = &left[maxCats * 400];
+ ri = &right[maxCats * 400];
+
+ vl = x1_gapColumn;
+ vr = x2_gapColumn;
+ v = x3_gapColumn;
+
+ __m256d vv[5];
+
+ vv[0] = _mm256_setzero_pd();
+ vv[1] = _mm256_setzero_pd();
+ vv[2] = _mm256_setzero_pd();
+ vv[3] = _mm256_setzero_pd();
+ vv[4] = _mm256_setzero_pd();
+
+ for(l = 0; l < 20; l++)
+ {
+ __m256d
+ x1v = _mm256_setzero_pd(),
+ x2v = _mm256_setzero_pd();
+
+ double
+ *ev = &extEV[l * 20],
+ *lv = &le[l * 20],
+ *rv = &ri[l * 20];
+
+ x1v = _mm256_add_pd(x1v, _mm256_mul_pd(_mm256_load_pd(&vl[0]), _mm256_load_pd(&lv[0])));
+ x1v = _mm256_add_pd(x1v, _mm256_mul_pd(_mm256_load_pd(&vl[4]), _mm256_load_pd(&lv[4])));
+ x1v = _mm256_add_pd(x1v, _mm256_mul_pd(_mm256_load_pd(&vl[8]), _mm256_load_pd(&lv[8])));
+ x1v = _mm256_add_pd(x1v, _mm256_mul_pd(_mm256_load_pd(&vl[12]), _mm256_load_pd(&lv[12])));
+ x1v = _mm256_add_pd(x1v, _mm256_mul_pd(_mm256_load_pd(&vl[16]), _mm256_load_pd(&lv[16])));
+
+ x2v = _mm256_add_pd(x2v, _mm256_mul_pd(_mm256_load_pd(&vr[0]), _mm256_load_pd(&rv[0])));
+ x2v = _mm256_add_pd(x2v, _mm256_mul_pd(_mm256_load_pd(&vr[4]), _mm256_load_pd(&rv[4])));
+ x2v = _mm256_add_pd(x2v, _mm256_mul_pd(_mm256_load_pd(&vr[8]), _mm256_load_pd(&rv[8])));
+ x2v = _mm256_add_pd(x2v, _mm256_mul_pd(_mm256_load_pd(&vr[12]), _mm256_load_pd(&rv[12])));
+ x2v = _mm256_add_pd(x2v, _mm256_mul_pd(_mm256_load_pd(&vr[16]), _mm256_load_pd(&rv[16])));
+
+ x1v = hadd4(x1v, x2v);
+#ifdef _FMA
+ for(k = 0; k < 5; k++)
+ {
+ __m256d evv = _mm256_load_pd(&ev[k*4]);
+ vv[k] = FMAMACC(vv[k],x1v,evv);
+ }
+#else
+ __m256d
+ evv[5];
+
+ evv[0] = _mm256_load_pd(&ev[0]);
+ evv[1] = _mm256_load_pd(&ev[4]);
+ evv[2] = _mm256_load_pd(&ev[8]);
+ evv[3] = _mm256_load_pd(&ev[12]);
+ evv[4] = _mm256_load_pd(&ev[16]);
+
+ vv[0] = _mm256_add_pd(vv[0], _mm256_mul_pd(x1v, evv[0]));
+ vv[1] = _mm256_add_pd(vv[1], _mm256_mul_pd(x1v, evv[1]));
+ vv[2] = _mm256_add_pd(vv[2], _mm256_mul_pd(x1v, evv[2]));
+ vv[3] = _mm256_add_pd(vv[3], _mm256_mul_pd(x1v, evv[3]));
+ vv[4] = _mm256_add_pd(vv[4], _mm256_mul_pd(x1v, evv[4]));
+#endif
+ }
+
+
+ if(tipCase != PLL_TIP_TIP)
+ {
+ __m256d minlikelihood_avx = _mm256_set1_pd( PLL_MINLIKELIHOOD );
+
+ scale = 1;
+
+ for(l = 0; scale && (l < 20); l += 4)
+ {
+ __m256d
+ v1 = _mm256_and_pd(vv[l / 4], absMask_AVX.m);
+ v1 = _mm256_cmp_pd(v1, minlikelihood_avx, _CMP_LT_OS);
+
+ if(_mm256_movemask_pd( v1 ) != 15)
+ scale = 0;
+ }
+
+ if(scale)
+ {
+ __m256d
+ twoto = _mm256_set1_pd(PLL_TWOTOTHE256);
+
+ for(l = 0; l < 20; l += 4)
+ vv[l / 4] = _mm256_mul_pd(vv[l / 4] , twoto);
+
+ scaleGap = 1;
+ }
+ }
+
+ _mm256_store_pd(&v[0], vv[0]);
+ _mm256_store_pd(&v[4], vv[1]);
+ _mm256_store_pd(&v[8], vv[2]);
+ _mm256_store_pd(&v[12], vv[3]);
+ _mm256_store_pd(&v[16], vv[4]);
+ }
+
+
+
+ switch(tipCase)
+ {
+ case PLL_TIP_TIP:
+ {
+ for (i = 0; i < n; i++)
+ {
+ if(noGap(x3_gap, i))
+ {
+ vl = &(tipVector[20 * tipX1[i]]);
+ vr = &(tipVector[20 * tipX2[i]]);
+ v = x3_ptr;
+
+ if(isGap(x1_gap, i))
+ le = &left[maxCats * 400];
+ else
+ le = &left[cptr[i] * 400];
+
+ if(isGap(x2_gap, i))
+ ri = &right[maxCats * 400];
+ else
+ ri = &right[cptr[i] * 400];
+
+ __m256d vv[5];
+
+ vv[0] = _mm256_setzero_pd();
+ vv[1] = _mm256_setzero_pd();
+ vv[2] = _mm256_setzero_pd();
+ vv[3] = _mm256_setzero_pd();
+ vv[4] = _mm256_setzero_pd();
+
+ for(l = 0; l < 20; l++)
+ {
+ __m256d
+ x1v = _mm256_setzero_pd(),
+ x2v = _mm256_setzero_pd();
+
+ double
+ *ev = &extEV[l * 20],
+ *lv = &le[l * 20],
+ *rv = &ri[l * 20];
+
+#ifdef _FMA
+ for(k = 0; k < 20; k += 4)
+ {
+ __m256d vlv = _mm256_load_pd(&vl[k]);
+ __m256d lvv = _mm256_load_pd(&lv[k]);
+ x1v = FMAMACC(x1v,vlv,lvv);
+ __m256d vrv = _mm256_load_pd(&vr[k]);
+ __m256d rvv = _mm256_load_pd(&rv[k]);
+ x2v = FMAMACC(x2v,vrv,rvv);
+ }
+#else
+ x1v = _mm256_add_pd(x1v, _mm256_mul_pd(_mm256_load_pd(&vl[0]), _mm256_load_pd(&lv[0])));
+ x1v = _mm256_add_pd(x1v, _mm256_mul_pd(_mm256_load_pd(&vl[4]), _mm256_load_pd(&lv[4])));
+ x1v = _mm256_add_pd(x1v, _mm256_mul_pd(_mm256_load_pd(&vl[8]), _mm256_load_pd(&lv[8])));
+ x1v = _mm256_add_pd(x1v, _mm256_mul_pd(_mm256_load_pd(&vl[12]), _mm256_load_pd(&lv[12])));
+ x1v = _mm256_add_pd(x1v, _mm256_mul_pd(_mm256_load_pd(&vl[16]), _mm256_load_pd(&lv[16])));
+
+ x2v = _mm256_add_pd(x2v, _mm256_mul_pd(_mm256_load_pd(&vr[0]), _mm256_load_pd(&rv[0])));
+ x2v = _mm256_add_pd(x2v, _mm256_mul_pd(_mm256_load_pd(&vr[4]), _mm256_load_pd(&rv[4])));
+ x2v = _mm256_add_pd(x2v, _mm256_mul_pd(_mm256_load_pd(&vr[8]), _mm256_load_pd(&rv[8])));
+ x2v = _mm256_add_pd(x2v, _mm256_mul_pd(_mm256_load_pd(&vr[12]), _mm256_load_pd(&rv[12])));
+ x2v = _mm256_add_pd(x2v, _mm256_mul_pd(_mm256_load_pd(&vr[16]), _mm256_load_pd(&rv[16])));
+#endif
+
+ x1v = hadd4(x1v, x2v);
+#ifdef _FMA
+ for(k = 0; k < 5; k++)
+ {
+ __m256d evv = _mm256_load_pd(&ev[k*4]);
+ vv[k] = FMAMACC(vv[k],x1v,evv);
+ }
+#else
+ __m256d
+ evv[5];
+
+ evv[0] = _mm256_load_pd(&ev[0]);
+ evv[1] = _mm256_load_pd(&ev[4]);
+ evv[2] = _mm256_load_pd(&ev[8]);
+ evv[3] = _mm256_load_pd(&ev[12]);
+ evv[4] = _mm256_load_pd(&ev[16]);
+
+ vv[0] = _mm256_add_pd(vv[0], _mm256_mul_pd(x1v, evv[0]));
+ vv[1] = _mm256_add_pd(vv[1], _mm256_mul_pd(x1v, evv[1]));
+ vv[2] = _mm256_add_pd(vv[2], _mm256_mul_pd(x1v, evv[2]));
+ vv[3] = _mm256_add_pd(vv[3], _mm256_mul_pd(x1v, evv[3]));
+ vv[4] = _mm256_add_pd(vv[4], _mm256_mul_pd(x1v, evv[4]));
+#endif
+ }
+
+ _mm256_store_pd(&v[0], vv[0]);
+ _mm256_store_pd(&v[4], vv[1]);
+ _mm256_store_pd(&v[8], vv[2]);
+ _mm256_store_pd(&v[12], vv[3]);
+ _mm256_store_pd(&v[16], vv[4]);
+
+ x3_ptr += 20;
+ }
+ }
+ }
+ break;
+ case PLL_TIP_INNER:
+ for (i = 0; i < n; i++)
+ {
+ if(isGap(x3_gap, i))
+ {
+ if(scaleGap)
+ {
+ if(useFastScaling)
+ addScale += wgt[i];
+ else
+ ex3[i] += 1;
+ }
+ }
+ else
+ {
+ vl = &(tipVector[20 * tipX1[i]]);
+
+ vr = x2_ptr;
+ v = x3_ptr;
+
+ if(isGap(x1_gap, i))
+ le = &left[maxCats * 400];
+ else
+ le = &left[cptr[i] * 400];
+
+ if(isGap(x2_gap, i))
+ {
+ ri = &right[maxCats * 400];
+ vr = x2_gapColumn;
+ }
+ else
+ {
+ ri = &right[cptr[i] * 400];
+ vr = x2_ptr;
+ x2_ptr += 20;
+ }
+
+ __m256d vv[5];
+
+ vv[0] = _mm256_setzero_pd();
+ vv[1] = _mm256_setzero_pd();
+ vv[2] = _mm256_setzero_pd();
+ vv[3] = _mm256_setzero_pd();
+ vv[4] = _mm256_setzero_pd();
+
+ for(l = 0; l < 20; l++)
+ {
+ __m256d
+ x1v = _mm256_setzero_pd(),
+ x2v = _mm256_setzero_pd();
+
+ double
+ *ev = &extEV[l * 20],
+ *lv = &le[l * 20],
+ *rv = &ri[l * 20];
+#ifdef _FMA
+ for(k = 0; k < 20; k += 4)
+ {
+ __m256d vlv = _mm256_load_pd(&vl[k]);
+ __m256d lvv = _mm256_load_pd(&lv[k]);
+ x1v = FMAMACC(x1v,vlv,lvv);
+ __m256d vrv = _mm256_load_pd(&vr[k]);
+ __m256d rvv = _mm256_load_pd(&rv[k]);
+ x2v = FMAMACC(x2v,vrv,rvv);
+ }
+#else
+ x1v = _mm256_add_pd(x1v, _mm256_mul_pd(_mm256_load_pd(&vl[0]), _mm256_load_pd(&lv[0])));
+ x1v = _mm256_add_pd(x1v, _mm256_mul_pd(_mm256_load_pd(&vl[4]), _mm256_load_pd(&lv[4])));
+ x1v = _mm256_add_pd(x1v, _mm256_mul_pd(_mm256_load_pd(&vl[8]), _mm256_load_pd(&lv[8])));
+ x1v = _mm256_add_pd(x1v, _mm256_mul_pd(_mm256_load_pd(&vl[12]), _mm256_load_pd(&lv[12])));
+ x1v = _mm256_add_pd(x1v, _mm256_mul_pd(_mm256_load_pd(&vl[16]), _mm256_load_pd(&lv[16])));
+
+ x2v = _mm256_add_pd(x2v, _mm256_mul_pd(_mm256_load_pd(&vr[0]), _mm256_load_pd(&rv[0])));
+ x2v = _mm256_add_pd(x2v, _mm256_mul_pd(_mm256_load_pd(&vr[4]), _mm256_load_pd(&rv[4])));
+ x2v = _mm256_add_pd(x2v, _mm256_mul_pd(_mm256_load_pd(&vr[8]), _mm256_load_pd(&rv[8])));
+ x2v = _mm256_add_pd(x2v, _mm256_mul_pd(_mm256_load_pd(&vr[12]), _mm256_load_pd(&rv[12])));
+ x2v = _mm256_add_pd(x2v, _mm256_mul_pd(_mm256_load_pd(&vr[16]), _mm256_load_pd(&rv[16])));
+#endif
+
+ x1v = hadd4(x1v, x2v);
+
+ __m256d
+ evv[5];
+
+ evv[0] = _mm256_load_pd(&ev[0]);
+ evv[1] = _mm256_load_pd(&ev[4]);
+ evv[2] = _mm256_load_pd(&ev[8]);
+ evv[3] = _mm256_load_pd(&ev[12]);
+ evv[4] = _mm256_load_pd(&ev[16]);
+
+#ifdef _FMA
+ for(k = 0; k < 5; k++)
+ vv[k] = FMAMACC(vv[k],x1v,evv[k]);
+#else
+ vv[0] = _mm256_add_pd(vv[0], _mm256_mul_pd(x1v, evv[0]));
+ vv[1] = _mm256_add_pd(vv[1], _mm256_mul_pd(x1v, evv[1]));
+ vv[2] = _mm256_add_pd(vv[2], _mm256_mul_pd(x1v, evv[2]));
+ vv[3] = _mm256_add_pd(vv[3], _mm256_mul_pd(x1v, evv[3]));
+ vv[4] = _mm256_add_pd(vv[4], _mm256_mul_pd(x1v, evv[4]));
+#endif
+ }
+
+
+ __m256d minlikelihood_avx = _mm256_set1_pd( PLL_MINLIKELIHOOD );
+
+ scale = 1;
+
+ for(l = 0; scale && (l < 20); l += 4)
+ {
+ __m256d
+ v1 = _mm256_and_pd(vv[l / 4], absMask_AVX.m);
+ v1 = _mm256_cmp_pd(v1, minlikelihood_avx, _CMP_LT_OS);
+
+ if(_mm256_movemask_pd( v1 ) != 15)
+ scale = 0;
+ }
+
+ if(scale)
+ {
+ __m256d
+ twoto = _mm256_set1_pd(PLL_TWOTOTHE256);
+
+ for(l = 0; l < 20; l += 4)
+ vv[l / 4] = _mm256_mul_pd(vv[l / 4] , twoto);
+
+ if(useFastScaling)
+ addScale += wgt[i];
+ else
+ ex3[i] += 1;
+ }
+
+ _mm256_store_pd(&v[0], vv[0]);
+ _mm256_store_pd(&v[4], vv[1]);
+ _mm256_store_pd(&v[8], vv[2]);
+ _mm256_store_pd(&v[12], vv[3]);
+ _mm256_store_pd(&v[16], vv[4]);
+
+ x3_ptr += 20;
+ }
+ }
+ break;
+ case PLL_INNER_INNER:
+ for(i = 0; i < n; i++)
+ {
+ if(isGap(x3_gap, i))
+ {
+ if(scaleGap)
+ {
+ if(useFastScaling)
+ addScale += wgt[i];
+ else
+ ex3[i] += 1;
+ }
+ }
+ else
+ {
+
+ v = x3_ptr;
+
+ if(isGap(x1_gap, i))
+ {
+ vl = x1_gapColumn;
+ le = &left[maxCats * 400];
+ }
+ else
+ {
+ le = &left[cptr[i] * 400];
+ vl = x1_ptr;
+ x1_ptr += 20;
+ }
+
+ if(isGap(x2_gap, i))
+ {
+ vr = x2_gapColumn;
+ ri = &right[maxCats * 400];
+ }
+ else
+ {
+ ri = &right[cptr[i] * 400];
+ vr = x2_ptr;
+ x2_ptr += 20;
+ }
+
+ __m256d vv[5];
+
+ vv[0] = _mm256_setzero_pd();
+ vv[1] = _mm256_setzero_pd();
+ vv[2] = _mm256_setzero_pd();
+ vv[3] = _mm256_setzero_pd();
+ vv[4] = _mm256_setzero_pd();
+
+ for(l = 0; l < 20; l++)
+ {
+ __m256d
+ x1v = _mm256_setzero_pd(),
+ x2v = _mm256_setzero_pd();
+
+ double
+ *ev = &extEV[l * 20],
+ *lv = &le[l * 20],
+ *rv = &ri[l * 20];
+
+ x1v = _mm256_add_pd(x1v, _mm256_mul_pd(_mm256_load_pd(&vl[0]), _mm256_load_pd(&lv[0])));
+ x1v = _mm256_add_pd(x1v, _mm256_mul_pd(_mm256_load_pd(&vl[4]), _mm256_load_pd(&lv[4])));
+ x1v = _mm256_add_pd(x1v, _mm256_mul_pd(_mm256_load_pd(&vl[8]), _mm256_load_pd(&lv[8])));
+ x1v = _mm256_add_pd(x1v, _mm256_mul_pd(_mm256_load_pd(&vl[12]), _mm256_load_pd(&lv[12])));
+ x1v = _mm256_add_pd(x1v, _mm256_mul_pd(_mm256_load_pd(&vl[16]), _mm256_load_pd(&lv[16])));
+
+ x2v = _mm256_add_pd(x2v, _mm256_mul_pd(_mm256_load_pd(&vr[0]), _mm256_load_pd(&rv[0])));
+ x2v = _mm256_add_pd(x2v, _mm256_mul_pd(_mm256_load_pd(&vr[4]), _mm256_load_pd(&rv[4])));
+ x2v = _mm256_add_pd(x2v, _mm256_mul_pd(_mm256_load_pd(&vr[8]), _mm256_load_pd(&rv[8])));
+ x2v = _mm256_add_pd(x2v, _mm256_mul_pd(_mm256_load_pd(&vr[12]), _mm256_load_pd(&rv[12])));
+ x2v = _mm256_add_pd(x2v, _mm256_mul_pd(_mm256_load_pd(&vr[16]), _mm256_load_pd(&rv[16])));
+
+ x1v = hadd4(x1v, x2v);
+#ifdef _FMA
+ for(k = 0; k < 5; k++)
+ {
+ __m256d evv = _mm256_load_pd(&ev[k*4]);
+ vv[k] = FMAMACC(vv[k],x1v,evv);
+ }
+#else
+ __m256d
+ evv[5];
+
+ evv[0] = _mm256_load_pd(&ev[0]);
+ evv[1] = _mm256_load_pd(&ev[4]);
+ evv[2] = _mm256_load_pd(&ev[8]);
+ evv[3] = _mm256_load_pd(&ev[12]);
+ evv[4] = _mm256_load_pd(&ev[16]);
+
+ vv[0] = _mm256_add_pd(vv[0], _mm256_mul_pd(x1v, evv[0]));
+ vv[1] = _mm256_add_pd(vv[1], _mm256_mul_pd(x1v, evv[1]));
+ vv[2] = _mm256_add_pd(vv[2], _mm256_mul_pd(x1v, evv[2]));
+ vv[3] = _mm256_add_pd(vv[3], _mm256_mul_pd(x1v, evv[3]));
+ vv[4] = _mm256_add_pd(vv[4], _mm256_mul_pd(x1v, evv[4]));
+#endif
+ }
+
+
+ __m256d minlikelihood_avx = _mm256_set1_pd( PLL_MINLIKELIHOOD );
+
+ scale = 1;
+
+ for(l = 0; scale && (l < 20); l += 4)
+ {
+ __m256d
+ v1 = _mm256_and_pd(vv[l / 4], absMask_AVX.m);
+ v1 = _mm256_cmp_pd(v1, minlikelihood_avx, _CMP_LT_OS);
+
+ if(_mm256_movemask_pd( v1 ) != 15)
+ scale = 0;
+ }
+
+ if(scale)
+ {
+ __m256d
+ twoto = _mm256_set1_pd(PLL_TWOTOTHE256);
+
+ for(l = 0; l < 20; l += 4)
+ vv[l / 4] = _mm256_mul_pd(vv[l / 4] , twoto);
+
+ if(useFastScaling)
+ addScale += wgt[i];
+ else
+ ex3[i] += 1;
+ }
+
+ _mm256_store_pd(&v[0], vv[0]);
+ _mm256_store_pd(&v[4], vv[1]);
+ _mm256_store_pd(&v[8], vv[2]);
+ _mm256_store_pd(&v[12], vv[3]);
+ _mm256_store_pd(&v[16], vv[4]);
+
+ x3_ptr += 20;
+ }
+ }
+ break;
+ default:
+ assert(0);
+ }
+
+ if(useFastScaling)
+ *scalerIncrement = addScale;
+}
+
+
+
+void newviewGTRGAMMAPROT_AVX_LG4(int tipCase,
+ double *x1, double *x2, double *x3, double *extEV[4], double *tipVector[4],
+ int *ex3, unsigned char *tipX1, unsigned char *tipX2, int n,
+ double *left, double *right, int *wgt, int *scalerIncrement, const boolean useFastScaling)
+{
+ double
+ *uX1,
+ *uX2,
+ *v,
+ x1px2,
+ *vl,
+ *vr;
+
+ int
+ i,
+ j,
+ l,
+ k,
+ scale,
+ addScale = 0;
+
+
+#ifndef GCC_VERSION
+#define GCC_VERSION (__GNUC__ * 10000 + __GNUC_MINOR__ * 100 + __GNUC_PATCHLEVEL__)
+#endif
+
+
+#if GCC_VERSION < 40500
+ __m256d
+ bitmask = _mm256_set_pd(0,0,0,-1);
+#else
+ __m256i
+ bitmask = _mm256_set_epi32(0, 0, 0, 0, 0, 0, -1, -1);
+#endif
+
+ switch(tipCase)
+ {
+ case PLL_TIP_TIP:
+ {
+
+ double
+ umpX1[1840] __attribute__ ((aligned (PLL_BYTE_ALIGNMENT))),
+ umpX2[1840] __attribute__ ((aligned (PLL_BYTE_ALIGNMENT)));
+
+
+ for(i = 0; i < 23; i++)
+ {
+ for(k = 0; k < 80; k++)
+ {
+ double
+ *ll = &left[k * 20],
+ *rr = &right[k * 20];
+
+ __m256d
+ umpX1v = _mm256_setzero_pd(),
+ umpX2v = _mm256_setzero_pd();
+
+ v = &(tipVector[k / 20][20 * i]);
+
+ for(l = 0; l < 20; l+=4)
+ {
+ __m256d vv = _mm256_load_pd(&v[l]);
+#ifdef _FMA
+ __m256d llv = _mm256_load_pd(&ll[l]);
+ umpX1v = FMAMACC(umpX1v,vv,llv);
+ __m256d rrv = _mm256_load_pd(&rr[l]);
+ umpX2v = FMAMACC(umpX2v,vv,rrv);
+#else
+ umpX1v = _mm256_add_pd(umpX1v,_mm256_mul_pd(vv,_mm256_load_pd(&ll[l])));
+ umpX2v = _mm256_add_pd(umpX2v,_mm256_mul_pd(vv,_mm256_load_pd(&rr[l])));
+#endif
+ }
+
+ umpX1v = hadd3(umpX1v);
+ umpX2v = hadd3(umpX2v);
+ _mm256_maskstore_pd(&umpX1[80 * i + k], bitmask, umpX1v);
+ _mm256_maskstore_pd(&umpX2[80 * i + k], bitmask, umpX2v);
+ }
+ }
+
+ for(i = 0; i < n; i++)
+ {
+ uX1 = &umpX1[80 * tipX1[i]];
+ uX2 = &umpX2[80 * tipX2[i]];
+
+ for(j = 0; j < 4; j++)
+ {
+ __m256d vv[5];
+
+ v = &x3[i * 80 + j * 20];
+
+ vv[0] = _mm256_setzero_pd();
+ vv[1] = _mm256_setzero_pd();
+ vv[2] = _mm256_setzero_pd();
+ vv[3] = _mm256_setzero_pd();
+ vv[4] = _mm256_setzero_pd();
+
+ for(k = 0; k < 20; k++)
+ {
+ x1px2 = uX1[j * 20 + k] * uX2[j * 20 + k];
+
+ __m256d x1px2v = _mm256_set1_pd(x1px2);
+
+ __m256d extEvv = _mm256_load_pd(&extEV[j][20 * k]);
+#ifdef _FMA
+ vv[0] = FMAMACC(vv[0],x1px2v,extEvv);
+#else
+ vv[0] = _mm256_add_pd(vv[0],_mm256_mul_pd(x1px2v,extEvv));
+#endif
+ _mm256_store_pd(&v[0],vv[0]);
+
+ extEvv = _mm256_load_pd(&extEV[j][20 * k + 4]);
+#ifdef _FMA
+ vv[1] = FMAMACC(vv[1],x1px2v,extEvv);
+#else
+ vv[1] = _mm256_add_pd(vv[1],_mm256_mul_pd(x1px2v,extEvv));
+#endif
+ _mm256_store_pd(&v[4],vv[1]);
+
+ extEvv = _mm256_load_pd(&extEV[j][20 * k + 8]);
+#ifdef _FMA
+ vv[2] = FMAMACC(vv[2],x1px2v,extEvv);
+#else
+ vv[2] = _mm256_add_pd(vv[2],_mm256_mul_pd(x1px2v,extEvv));
+#endif
+ _mm256_store_pd(&v[8],vv[2]);
+
+ extEvv = _mm256_load_pd(&extEV[j][20 * k + 12]);
+#ifdef _FMA
+ vv[3] = FMAMACC(vv[3],x1px2v,extEvv);
+#else
+ vv[3] = _mm256_add_pd(vv[3],_mm256_mul_pd(x1px2v,extEvv));
+#endif
+ _mm256_store_pd(&v[12],vv[3]);
+
+ extEvv = _mm256_load_pd(&extEV[j][20 * k + 16]);
+#ifdef _FMA
+ vv[4] = FMAMACC(vv[4],x1px2v,extEvv);
+#else
+ vv[4] = _mm256_add_pd(vv[4],_mm256_mul_pd(x1px2v,extEvv));
+#endif
+ _mm256_store_pd(&v[16],vv[4]);
+ }
+ }
+ }
+ }
+ break;
+ case PLL_TIP_INNER:
+ {
+
+ double
+ umpX1[1840] __attribute__ ((aligned (PLL_BYTE_ALIGNMENT))),
+ ump_x2[20] __attribute__ ((aligned (PLL_BYTE_ALIGNMENT)));
+
+ for(i = 0; i < 23; i++)
+ {
+ for(k = 0; k < 80; k++)
+ {
+ __m256d umpX1v = _mm256_setzero_pd();
+
+ v = &(tipVector[k / 20][20 * i]);
+
+ for(l = 0; l < 20; l+=4)
+ {
+ __m256d vv = _mm256_load_pd(&v[l]);
+ __m256d leftv = _mm256_load_pd(&left[k * 20 + l]);
+#ifdef _FMA
+
+ umpX1v = FMAMACC(umpX1v, vv, leftv);
+#else
+ umpX1v = _mm256_add_pd(umpX1v, _mm256_mul_pd(vv, leftv));
+#endif
+ }
+ umpX1v = hadd3(umpX1v);
+ _mm256_maskstore_pd(&umpX1[80 * i + k], bitmask, umpX1v);
+ }
+ }
+
+ for (i = 0; i < n; i++)
+ {
+ uX1 = &umpX1[80 * tipX1[i]];
+
+ for(k = 0; k < 4; k++)
+ {
+ v = &(x2[80 * i + k * 20]);
+
+ for(l = 0; l < 20; l++)
+ {
+ __m256d ump_x2v = _mm256_setzero_pd();
+
+ __m256d vv = _mm256_load_pd(&v[0]);
+ __m256d rightv = _mm256_load_pd(&right[k*400+l*20+0]);
+#ifdef _FMA
+ ump_x2v = FMAMACC(ump_x2v,vv,rightv);
+#else
+ ump_x2v = _mm256_add_pd(ump_x2v, _mm256_mul_pd(vv, rightv));
+#endif
+
+ vv = _mm256_load_pd(&v[4]);
+ rightv = _mm256_load_pd(&right[k*400+l*20+4]);
+#ifdef _FMA
+ ump_x2v = FMAMACC(ump_x2v,vv,rightv);
+#else
+ ump_x2v = _mm256_add_pd(ump_x2v, _mm256_mul_pd(vv, rightv));
+#endif
+
+ vv = _mm256_load_pd(&v[8]);
+ rightv = _mm256_load_pd(&right[k*400+l*20+8]);
+#ifdef _FMA
+ ump_x2v = FMAMACC(ump_x2v,vv,rightv);
+#else
+ ump_x2v = _mm256_add_pd(ump_x2v, _mm256_mul_pd(vv, rightv));
+#endif
+
+ vv = _mm256_load_pd(&v[12]);
+ rightv = _mm256_load_pd(&right[k*400+l*20+12]);
+#ifdef _FMA
+ ump_x2v = FMAMACC(ump_x2v,vv,rightv);
+#else
+ ump_x2v = _mm256_add_pd(ump_x2v, _mm256_mul_pd(vv, rightv));
+#endif
+
+ vv = _mm256_load_pd(&v[16]);
+ rightv = _mm256_load_pd(&right[k*400+l*20+16]);
+#ifdef _FMA
+ ump_x2v = FMAMACC(ump_x2v,vv,rightv);
+#else
+ ump_x2v = _mm256_add_pd(ump_x2v, _mm256_mul_pd(vv, rightv));
+#endif
+
+ ump_x2v = hadd3(ump_x2v);
+ _mm256_maskstore_pd(&ump_x2[l], bitmask, ump_x2v);
+ }
+
+ v = &(x3[80 * i + 20 * k]);
+
+
+ __m256d vv[5];
+
+ vv[0] = _mm256_setzero_pd();
+ vv[1] = _mm256_setzero_pd();
+ vv[2] = _mm256_setzero_pd();
+ vv[3] = _mm256_setzero_pd();
+ vv[4] = _mm256_setzero_pd();
+
+ for(l = 0; l < 20; l++)
+ {
+ x1px2 = uX1[k * 20 + l] * ump_x2[l];
+ __m256d x1px2v = _mm256_set1_pd(x1px2);
+
+#ifdef _FMA
+ __m256d ev = _mm256_load_pd(&extEV[k][l * 20 + 0]);
+ vv[0] = FMAMACC(vv[0],x1px2v, ev);
+#else
+ vv[0] = _mm256_add_pd(vv[0],_mm256_mul_pd(x1px2v, _mm256_load_pd(&extEV[k][l * 20 + 0])));
+#endif
+ _mm256_store_pd(&v[0],vv[0]);
+
+#ifdef _FMA
+ ev = _mm256_load_pd(&extEV[k][l * 20 + 4]);
+ vv[1] = FMAMACC(vv[1],x1px2v, ev);
+#else
+ vv[1] = _mm256_add_pd(vv[1],_mm256_mul_pd(x1px2v, _mm256_load_pd(&extEV[k][l * 20 + 4])));
+#endif
+ _mm256_store_pd(&v[4],vv[1]);
+
+#ifdef _FMA
+ ev = _mm256_load_pd(&extEV[k][l * 20 + 8]);
+ vv[2] = FMAMACC(vv[2],x1px2v, ev);
+#else
+ vv[2] = _mm256_add_pd(vv[2],_mm256_mul_pd(x1px2v, _mm256_load_pd(&extEV[k][l * 20 + 8])));
+#endif
+ _mm256_store_pd(&v[8],vv[2]);
+
+#ifdef _FMA
+ ev = _mm256_load_pd(&extEV[k][l * 20 + 12]);
+ vv[3] = FMAMACC(vv[3],x1px2v, ev);
+#else
+ vv[3] = _mm256_add_pd(vv[3],_mm256_mul_pd(x1px2v, _mm256_load_pd(&extEV[k][l * 20 + 12])));
+#endif
+ _mm256_store_pd(&v[12],vv[3]);
+
+
+#ifdef _FMA
+ ev = _mm256_load_pd(&extEV[k][l * 20 + 16]);
+ vv[4] = FMAMACC(vv[4],x1px2v, ev);
+#else
+ vv[4] = _mm256_add_pd(vv[4],_mm256_mul_pd(x1px2v, _mm256_load_pd(&extEV[k][l * 20 + 16])));
+#endif
+ _mm256_store_pd(&v[16],vv[4]);
+
+ }
+ }
+
+ v = &x3[80 * i];
+ __m256d minlikelihood_avx = _mm256_set1_pd(PLL_MINLIKELIHOOD);
+ scale = 1;
+ for(l = 0; scale && (l < 80); l += 4)
+ {
+ __m256d vv = _mm256_load_pd(&v[l]);
+ __m256d vv_abs = _mm256_and_pd(vv,absMask_AVX.m);
+ vv_abs = _mm256_cmp_pd(vv_abs,minlikelihood_avx,_CMP_LT_OS);
+ if(_mm256_movemask_pd(vv_abs) != 15)
+ scale = 0;
+ }
+
+ if(scale)
+ {
+ __m256d PLL_TWOTOTHE256v = _mm256_set_pd(PLL_TWOTOTHE256,PLL_TWOTOTHE256,PLL_TWOTOTHE256,PLL_TWOTOTHE256);
+ for(l = 0; l < 80; l += 4)
+ {
+ __m256d vv = _mm256_load_pd(&v[l]);
+ _mm256_store_pd(&v[l],_mm256_mul_pd(vv,PLL_TWOTOTHE256v));
+ }
+ if(useFastScaling)
+ addScale += wgt[i];
+ else
+ ex3[i] += 1;
+ }
+ }
+ }
+ break;
+ case PLL_INNER_INNER:
+ for(i = 0; i < n; i++)
+ {
+ scale = 1;
+
+ for(k = 0; k < 4; k++)
+ {
+ vl = &(x1[80 * i + 20 * k]);
+ vr = &(x2[80 * i + 20 * k]);
+ v = &(x3[80 * i + 20 * k]);
+
+ __m256d vv[5];
+
+ vv[0] = _mm256_setzero_pd();
+ vv[1] = _mm256_setzero_pd();
+ vv[2] = _mm256_setzero_pd();
+ vv[3] = _mm256_setzero_pd();
+ vv[4] = _mm256_setzero_pd();
+
+ for(l = 0; l < 20; l++)
+ {
+ __m256d al = _mm256_setzero_pd();
+ __m256d ar = _mm256_setzero_pd();
+
+ __m256d leftv = _mm256_load_pd(&left[k * 400 + l * 20 + 0]);
+ __m256d rightv = _mm256_load_pd(&right[k * 400 + l * 20 + 0]);
+ __m256d vlv = _mm256_load_pd(&vl[0]);
+ __m256d vrv = _mm256_load_pd(&vr[0]);
+
+#ifdef _FMA
+
+ al = FMAMACC(al, vlv, leftv);
+ ar = FMAMACC(ar, vrv, rightv);
+#else
+ al = _mm256_add_pd(al,_mm256_mul_pd(vlv,leftv));
+ ar = _mm256_add_pd(ar,_mm256_mul_pd(vrv,rightv));
+#endif
+
+ leftv = _mm256_load_pd(&left[k * 400 + l * 20 + 4]);
+ rightv = _mm256_load_pd(&right[k * 400 + l * 20 + 4]);
+ vlv = _mm256_load_pd(&vl[4]);
+ vrv = _mm256_load_pd(&vr[4]);
+#ifdef _FMA
+
+ al = FMAMACC(al, vlv, leftv);
+ ar = FMAMACC(ar, vrv, rightv);
+#else
+ al = _mm256_add_pd(al,_mm256_mul_pd(vlv,leftv));
+ ar = _mm256_add_pd(ar,_mm256_mul_pd(vrv,rightv));
+#endif
+
+ leftv = _mm256_load_pd(&left[k * 400 + l * 20 + 8]);
+ rightv = _mm256_load_pd(&right[k * 400 + l * 20 + 8]);
+ vlv = _mm256_load_pd(&vl[8]);
+ vrv = _mm256_load_pd(&vr[8]);
+#ifdef _FMA
+
+ al = FMAMACC(al, vlv, leftv);
+ ar = FMAMACC(ar, vrv, rightv);
+#else
+ al = _mm256_add_pd(al,_mm256_mul_pd(vlv,leftv));
+ ar = _mm256_add_pd(ar,_mm256_mul_pd(vrv,rightv));
+#endif
+
+ leftv = _mm256_load_pd(&left[k * 400 + l * 20 + 12]);
+ rightv = _mm256_load_pd(&right[k * 400 + l * 20 + 12]);
+ vlv = _mm256_load_pd(&vl[12]);
+ vrv = _mm256_load_pd(&vr[12]);
+#ifdef _FMA
+
+ al = FMAMACC(al, vlv, leftv);
+ ar = FMAMACC(ar, vrv, rightv);
+#else
+ al = _mm256_add_pd(al,_mm256_mul_pd(vlv,leftv));
+ ar = _mm256_add_pd(ar,_mm256_mul_pd(vrv,rightv));
+#endif
+
+ leftv = _mm256_load_pd(&left[k * 400 + l * 20 + 16]);
+ rightv = _mm256_load_pd(&right[k * 400 + l * 20 + 16]);
+ vlv = _mm256_load_pd(&vl[16]);
+ vrv = _mm256_load_pd(&vr[16]);
+
+#ifdef _FMA
+ al = FMAMACC(al, vlv, leftv);
+ ar = FMAMACC(ar, vrv, rightv);
+#else
+ al = _mm256_add_pd(al,_mm256_mul_pd(vlv,leftv));
+ ar = _mm256_add_pd(ar,_mm256_mul_pd(vrv,rightv));
+#endif
+
+ /**************************************************************************************************************/
+
+ al = hadd3(al);
+ ar = hadd3(ar);
+ al = _mm256_mul_pd(ar,al);
+
+ /************************************************************************************************************/
+#ifdef _FMA
+ __m256d ev = _mm256_load_pd(&extEV[k][20 * l + 0]);
+ vv[0] = FMAMACC(vv[0], al, ev);
+#else
+ vv[0] = _mm256_add_pd(vv[0],_mm256_mul_pd(al, _mm256_load_pd(&extEV[k][20 * l + 0])));
+#endif
+ _mm256_store_pd(&v[0],vv[0]);
+
+#ifdef _FMA
+ ev = _mm256_load_pd(&extEV[k][20 * l + 4]);
+ vv[1] = FMAMACC(vv[1], al, ev);
+#else
+ vv[1] = _mm256_add_pd(vv[1],_mm256_mul_pd(al, _mm256_load_pd(&extEV[k][20 * l + 4])));
+#endif
+ _mm256_store_pd(&v[4],vv[1]);
+
+#ifdef _FMA
+ ev = _mm256_load_pd(&extEV[k][20 * l + 8]);
+ vv[2] = FMAMACC(vv[2], al, ev);
+#else
+ vv[2] = _mm256_add_pd(vv[2],_mm256_mul_pd(al, _mm256_load_pd(&extEV[k][20 * l + 8])));
+#endif
+ _mm256_store_pd(&v[8],vv[2]);
+
+#ifdef _FMA
+ ev = _mm256_load_pd(&extEV[k][20 * l + 12]);
+ vv[3] = FMAMACC(vv[3], al, ev);
+#else
+ vv[3] = _mm256_add_pd(vv[3],_mm256_mul_pd(al, _mm256_load_pd(&extEV[k][20 * l + 12])));
+#endif
+ _mm256_store_pd(&v[12],vv[3]);
+
+#ifdef _FMA
+ ev = _mm256_load_pd(&extEV[k][20 * l + 16]);
+ vv[4] = FMAMACC(vv[4], al, ev);
+#else
+ vv[4] = _mm256_add_pd(vv[4],_mm256_mul_pd(al, _mm256_load_pd(&extEV[k][20 * l + 16])));
+#endif
+ _mm256_store_pd(&v[16],vv[4]);
+ }
+ }
+ v = &(x3[80 * i]);
+ scale = 1;
+ __m256d minlikelihood_avx = _mm256_set1_pd(PLL_MINLIKELIHOOD);
+
+ for(l = 0; scale && (l < 80); l += 4)
+ {
+ __m256d vv = _mm256_load_pd(&v[l]);
+ __m256d vv_abs = _mm256_and_pd(vv,absMask_AVX.m);
+ vv_abs = _mm256_cmp_pd(vv_abs,minlikelihood_avx,_CMP_LT_OS);
+ if(_mm256_movemask_pd(vv_abs) != 15)
+ scale = 0;
+ }
+
+ if(scale)
+ {
+ __m256d PLL_TWOTOTHE256v = _mm256_set_pd(PLL_TWOTOTHE256,PLL_TWOTOTHE256,PLL_TWOTOTHE256,PLL_TWOTOTHE256);
+ for(l = 0; l < 80; l += 4)
+ {
+ __m256d vv = _mm256_load_pd(&v[l]);
+ _mm256_store_pd(&v[l],_mm256_mul_pd(vv,PLL_TWOTOTHE256v));
+ }
+ if(useFastScaling)
+ addScale += wgt[i];
+ else
+ ex3[i] += 1;
+ }
+ }
+ break;
+ default:
+ assert(0);
+ }
+
+ if(useFastScaling)
+ *scalerIncrement = addScale;
+}
+
+
+void newviewGTRGAMMAPROT_AVX(int tipCase,
+ double *x1, double *x2, double *x3, double *extEV, double *tipVector,
+ int *ex3, unsigned char *tipX1, unsigned char *tipX2, int n,
+ double *left, double *right, int *wgt, int *scalerIncrement, const boolean useFastScaling)
+{
+ double
+ *uX1,
+ *uX2,
+ *v,
+ x1px2,
+ *vl,
+ *vr;
+
+ int
+ i,
+ j,
+ l,
+ k,
+ scale,
+ addScale = 0;
+
+
+#ifndef GCC_VERSION
+#define GCC_VERSION (__GNUC__ * 10000 + __GNUC_MINOR__ * 100 + __GNUC_PATCHLEVEL__)
+#endif
+
+
+#if GCC_VERSION < 40500
+ __m256d
+ bitmask = _mm256_set_pd(0,0,0,-1);
+#else
+ __m256i
+ bitmask = _mm256_set_epi32(0, 0, 0, 0, 0, 0, -1, -1);
+#endif
+
+ switch(tipCase)
+ {
+ case PLL_TIP_TIP:
+ {
+
+ double
+ umpX1[1840] __attribute__ ((aligned (PLL_BYTE_ALIGNMENT))),
+ umpX2[1840] __attribute__ ((aligned (PLL_BYTE_ALIGNMENT)));
+
+ for(i = 0; i < 23; i++)
+ {
+ v = &(tipVector[20 * i]);
+
+ for(k = 0; k < 80; k++)
+ {
+ double
+ *ll = &left[k * 20],
+ *rr = &right[k * 20];
+
+ __m256d
+ umpX1v = _mm256_setzero_pd(),
+ umpX2v = _mm256_setzero_pd();
+
+ for(l = 0; l < 20; l+=4)
+ {
+ __m256d vv = _mm256_load_pd(&v[l]);
+#ifdef _FMA
+ __m256d llv = _mm256_load_pd(&ll[l]);
+ umpX1v = FMAMACC(umpX1v,vv,llv);
+ __m256d rrv = _mm256_load_pd(&rr[l]);
+ umpX2v = FMAMACC(umpX2v,vv,rrv);
+#else
+ umpX1v = _mm256_add_pd(umpX1v,_mm256_mul_pd(vv,_mm256_load_pd(&ll[l])));
+ umpX2v = _mm256_add_pd(umpX2v,_mm256_mul_pd(vv,_mm256_load_pd(&rr[l])));
+#endif
+ }
+
+ umpX1v = hadd3(umpX1v);
+ umpX2v = hadd3(umpX2v);
+ _mm256_maskstore_pd(&umpX1[80 * i + k], bitmask, umpX1v);
+ _mm256_maskstore_pd(&umpX2[80 * i + k], bitmask, umpX2v);
+ }
+ }
+
+ for(i = 0; i < n; i++)
+ {
+ uX1 = &umpX1[80 * tipX1[i]];
+ uX2 = &umpX2[80 * tipX2[i]];
+
+ for(j = 0; j < 4; j++)
+ {
+ __m256d vv[5];
+
+ v = &x3[i * 80 + j * 20];
+
+ vv[0] = _mm256_setzero_pd();
+ vv[1] = _mm256_setzero_pd();
+ vv[2] = _mm256_setzero_pd();
+ vv[3] = _mm256_setzero_pd();
+ vv[4] = _mm256_setzero_pd();
+
+ for(k = 0; k < 20; k++)
+ {
+ x1px2 = uX1[j * 20 + k] * uX2[j * 20 + k];
+
+ __m256d x1px2v = _mm256_set1_pd(x1px2);
+
+ __m256d extEvv = _mm256_load_pd(&extEV[20 * k]);
+#ifdef _FMA
+ vv[0] = FMAMACC(vv[0],x1px2v,extEvv);
+#else
+ vv[0] = _mm256_add_pd(vv[0],_mm256_mul_pd(x1px2v,extEvv));
+#endif
+ _mm256_store_pd(&v[0],vv[0]);
+
+ extEvv = _mm256_load_pd(&extEV[20 * k + 4]);
+#ifdef _FMA
+ vv[1] = FMAMACC(vv[1],x1px2v,extEvv);
+#else
+ vv[1] = _mm256_add_pd(vv[1],_mm256_mul_pd(x1px2v,extEvv));
+#endif
+ _mm256_store_pd(&v[4],vv[1]);
+
+ extEvv = _mm256_load_pd(&extEV[20 * k + 8]);
+#ifdef _FMA
+ vv[2] = FMAMACC(vv[2],x1px2v,extEvv);
+#else
+ vv[2] = _mm256_add_pd(vv[2],_mm256_mul_pd(x1px2v,extEvv));
+#endif
+ _mm256_store_pd(&v[8],vv[2]);
+
+ extEvv = _mm256_load_pd(&extEV[20 * k + 12]);
+#ifdef _FMA
+ vv[3] = FMAMACC(vv[3],x1px2v,extEvv);
+#else
+ vv[3] = _mm256_add_pd(vv[3],_mm256_mul_pd(x1px2v,extEvv));
+#endif
+ _mm256_store_pd(&v[12],vv[3]);
+
+ extEvv = _mm256_load_pd(&extEV[20 * k + 16]);
+#ifdef _FMA
+ vv[4] = FMAMACC(vv[4],x1px2v,extEvv);
+#else
+ vv[4] = _mm256_add_pd(vv[4],_mm256_mul_pd(x1px2v,extEvv));
+#endif
+ _mm256_store_pd(&v[16],vv[4]);
+ }
+ }
+ }
+ }
+ break;
+ case PLL_TIP_INNER:
+ {
+
+ double
+ umpX1[1840] __attribute__ ((aligned (PLL_BYTE_ALIGNMENT))),
+ ump_x2[20] __attribute__ ((aligned (PLL_BYTE_ALIGNMENT)));
+
+ for(i = 0; i < 23; i++)
+ {
+ v = &(tipVector[20 * i]);
+
+ for(k = 0; k < 80; k++)
+ {
+ __m256d umpX1v = _mm256_setzero_pd();
+ for(l = 0; l < 20; l+=4)
+ {
+ __m256d vv = _mm256_load_pd(&v[l]);
+ __m256d leftv = _mm256_load_pd(&left[k * 20 + l]);
+#ifdef _FMA
+
+ umpX1v = FMAMACC(umpX1v, vv, leftv);
+#else
+ umpX1v = _mm256_add_pd(umpX1v, _mm256_mul_pd(vv, leftv));
+#endif
+ }
+ umpX1v = hadd3(umpX1v);
+ _mm256_maskstore_pd(&umpX1[80 * i + k], bitmask, umpX1v);
+ }
+ }
+
+ for (i = 0; i < n; i++)
+ {
+ uX1 = &umpX1[80 * tipX1[i]];
+
+ for(k = 0; k < 4; k++)
+ {
+ v = &(x2[80 * i + k * 20]);
+
+ for(l = 0; l < 20; l++)
+ {
+ __m256d ump_x2v = _mm256_setzero_pd();
+
+ __m256d vv = _mm256_load_pd(&v[0]);
+ __m256d rightv = _mm256_load_pd(&right[k*400+l*20+0]);
+#ifdef _FMA
+ ump_x2v = FMAMACC(ump_x2v,vv,rightv);
+#else
+ ump_x2v = _mm256_add_pd(ump_x2v, _mm256_mul_pd(vv, rightv));
+#endif
+
+ vv = _mm256_load_pd(&v[4]);
+ rightv = _mm256_load_pd(&right[k*400+l*20+4]);
+#ifdef _FMA
+ ump_x2v = FMAMACC(ump_x2v,vv,rightv);
+#else
+ ump_x2v = _mm256_add_pd(ump_x2v, _mm256_mul_pd(vv, rightv));
+#endif
+
+ vv = _mm256_load_pd(&v[8]);
+ rightv = _mm256_load_pd(&right[k*400+l*20+8]);
+#ifdef _FMA
+ ump_x2v = FMAMACC(ump_x2v,vv,rightv);
+#else
+ ump_x2v = _mm256_add_pd(ump_x2v, _mm256_mul_pd(vv, rightv));
+#endif
+
+ vv = _mm256_load_pd(&v[12]);
+ rightv = _mm256_load_pd(&right[k*400+l*20+12]);
+#ifdef _FMA
+ ump_x2v = FMAMACC(ump_x2v,vv,rightv);
+#else
+ ump_x2v = _mm256_add_pd(ump_x2v, _mm256_mul_pd(vv, rightv));
+#endif
+
+ vv = _mm256_load_pd(&v[16]);
+ rightv = _mm256_load_pd(&right[k*400+l*20+16]);
+#ifdef _FMA
+ ump_x2v = FMAMACC(ump_x2v,vv,rightv);
+#else
+ ump_x2v = _mm256_add_pd(ump_x2v, _mm256_mul_pd(vv, rightv));
+#endif
+
+ ump_x2v = hadd3(ump_x2v);
+ _mm256_maskstore_pd(&ump_x2[l], bitmask, ump_x2v);
+ }
+
+ v = &(x3[80 * i + 20 * k]);
+
+
+ __m256d vv[5];
+
+ vv[0] = _mm256_setzero_pd();
+ vv[1] = _mm256_setzero_pd();
+ vv[2] = _mm256_setzero_pd();
+ vv[3] = _mm256_setzero_pd();
+ vv[4] = _mm256_setzero_pd();
+
+ for(l = 0; l < 20; l++)
+ {
+ x1px2 = uX1[k * 20 + l] * ump_x2[l];
+ __m256d x1px2v = _mm256_set1_pd(x1px2);
+
+#ifdef _FMA
+ __m256d ev = _mm256_load_pd(&extEV[l * 20 + 0]);
+ vv[0] = FMAMACC(vv[0],x1px2v, ev);
+#else
+ vv[0] = _mm256_add_pd(vv[0],_mm256_mul_pd(x1px2v, _mm256_load_pd(&extEV[l * 20 + 0])));
+#endif
+ _mm256_store_pd(&v[0],vv[0]);
+
+#ifdef _FMA
+ ev = _mm256_load_pd(&extEV[l * 20 + 4]);
+ vv[1] = FMAMACC(vv[1],x1px2v, ev);
+#else
+ vv[1] = _mm256_add_pd(vv[1],_mm256_mul_pd(x1px2v, _mm256_load_pd(&extEV[l * 20 + 4])));
+#endif
+ _mm256_store_pd(&v[4],vv[1]);
+
+#ifdef _FMA
+ ev = _mm256_load_pd(&extEV[l * 20 + 8]);
+ vv[2] = FMAMACC(vv[2],x1px2v, ev);
+#else
+ vv[2] = _mm256_add_pd(vv[2],_mm256_mul_pd(x1px2v, _mm256_load_pd(&extEV[l * 20 + 8])));
+#endif
+ _mm256_store_pd(&v[8],vv[2]);
+
+#ifdef _FMA
+ ev = _mm256_load_pd(&extEV[l * 20 + 12]);
+ vv[3] = FMAMACC(vv[3],x1px2v, ev);
+#else
+ vv[3] = _mm256_add_pd(vv[3],_mm256_mul_pd(x1px2v, _mm256_load_pd(&extEV[l * 20 + 12])));
+#endif
+ _mm256_store_pd(&v[12],vv[3]);
+
+
+#ifdef _FMA
+ ev = _mm256_load_pd(&extEV[l * 20 + 16]);
+ vv[4] = FMAMACC(vv[4],x1px2v, ev);
+#else
+ vv[4] = _mm256_add_pd(vv[4],_mm256_mul_pd(x1px2v, _mm256_load_pd(&extEV[l * 20 + 16])));
+#endif
+ _mm256_store_pd(&v[16],vv[4]);
+
+ }
+ }
+
+ v = &x3[80 * i];
+ __m256d minlikelihood_avx = _mm256_set1_pd(PLL_MINLIKELIHOOD);
+ scale = 1;
+ for(l = 0; scale && (l < 80); l += 4)
+ {
+ __m256d vv = _mm256_load_pd(&v[l]);
+ __m256d vv_abs = _mm256_and_pd(vv,absMask_AVX.m);
+ vv_abs = _mm256_cmp_pd(vv_abs,minlikelihood_avx,_CMP_LT_OS);
+ if(_mm256_movemask_pd(vv_abs) != 15)
+ scale = 0;
+ }
+
+ if(scale)
+ {
+ __m256d PLL_TWOTOTHE256v = _mm256_set_pd(PLL_TWOTOTHE256,PLL_TWOTOTHE256,PLL_TWOTOTHE256,PLL_TWOTOTHE256);
+ for(l = 0; l < 80; l += 4)
+ {
+ __m256d vv = _mm256_load_pd(&v[l]);
+ _mm256_store_pd(&v[l],_mm256_mul_pd(vv,PLL_TWOTOTHE256v));
+ }
+ if(useFastScaling)
+ addScale += wgt[i];
+ else
+ ex3[i] += 1;
+ }
+ }
+ }
+ break;
+ case PLL_INNER_INNER:
+ for(i = 0; i < n; i++)
+ {
+ scale = 1;
+
+ for(k = 0; k < 4; k++)
+ {
+ vl = &(x1[80 * i + 20 * k]);
+ vr = &(x2[80 * i + 20 * k]);
+ v = &(x3[80 * i + 20 * k]);
+
+ __m256d vv[5];
+
+ vv[0] = _mm256_setzero_pd();
+ vv[1] = _mm256_setzero_pd();
+ vv[2] = _mm256_setzero_pd();
+ vv[3] = _mm256_setzero_pd();
+ vv[4] = _mm256_setzero_pd();
+
+ for(l = 0; l < 20; l++)
+ {
+ __m256d al = _mm256_setzero_pd();
+ __m256d ar = _mm256_setzero_pd();
+
+ __m256d leftv = _mm256_load_pd(&left[k * 400 + l * 20 + 0]);
+ __m256d rightv = _mm256_load_pd(&right[k * 400 + l * 20 + 0]);
+ __m256d vlv = _mm256_load_pd(&vl[0]);
+ __m256d vrv = _mm256_load_pd(&vr[0]);
+
+#ifdef _FMA
+
+ al = FMAMACC(al, vlv, leftv);
+ ar = FMAMACC(ar, vrv, rightv);
+#else
+ al = _mm256_add_pd(al,_mm256_mul_pd(vlv,leftv));
+ ar = _mm256_add_pd(ar,_mm256_mul_pd(vrv,rightv));
+#endif
+
+ leftv = _mm256_load_pd(&left[k * 400 + l * 20 + 4]);
+ rightv = _mm256_load_pd(&right[k * 400 + l * 20 + 4]);
+ vlv = _mm256_load_pd(&vl[4]);
+ vrv = _mm256_load_pd(&vr[4]);
+#ifdef _FMA
+
+ al = FMAMACC(al, vlv, leftv);
+ ar = FMAMACC(ar, vrv, rightv);
+#else
+ al = _mm256_add_pd(al,_mm256_mul_pd(vlv,leftv));
+ ar = _mm256_add_pd(ar,_mm256_mul_pd(vrv,rightv));
+#endif
+
+ leftv = _mm256_load_pd(&left[k * 400 + l * 20 + 8]);
+ rightv = _mm256_load_pd(&right[k * 400 + l * 20 + 8]);
+ vlv = _mm256_load_pd(&vl[8]);
+ vrv = _mm256_load_pd(&vr[8]);
+#ifdef _FMA
+
+ al = FMAMACC(al, vlv, leftv);
+ ar = FMAMACC(ar, vrv, rightv);
+#else
+ al = _mm256_add_pd(al,_mm256_mul_pd(vlv,leftv));
+ ar = _mm256_add_pd(ar,_mm256_mul_pd(vrv,rightv));
+#endif
+
+ leftv = _mm256_load_pd(&left[k * 400 + l * 20 + 12]);
+ rightv = _mm256_load_pd(&right[k * 400 + l * 20 + 12]);
+ vlv = _mm256_load_pd(&vl[12]);
+ vrv = _mm256_load_pd(&vr[12]);
+#ifdef _FMA
+
+ al = FMAMACC(al, vlv, leftv);
+ ar = FMAMACC(ar, vrv, rightv);
+#else
+ al = _mm256_add_pd(al,_mm256_mul_pd(vlv,leftv));
+ ar = _mm256_add_pd(ar,_mm256_mul_pd(vrv,rightv));
+#endif
+
+ leftv = _mm256_load_pd(&left[k * 400 + l * 20 + 16]);
+ rightv = _mm256_load_pd(&right[k * 400 + l * 20 + 16]);
+ vlv = _mm256_load_pd(&vl[16]);
+ vrv = _mm256_load_pd(&vr[16]);
+
+#ifdef _FMA
+ al = FMAMACC(al, vlv, leftv);
+ ar = FMAMACC(ar, vrv, rightv);
+#else
+ al = _mm256_add_pd(al,_mm256_mul_pd(vlv,leftv));
+ ar = _mm256_add_pd(ar,_mm256_mul_pd(vrv,rightv));
+#endif
+
+ /**************************************************************************************************************/
+
+ al = hadd3(al);
+ ar = hadd3(ar);
+ al = _mm256_mul_pd(ar,al);
+
+ /************************************************************************************************************/
+#ifdef _FMA
+ __m256d ev = _mm256_load_pd(&extEV[20 * l + 0]);
+ vv[0] = FMAMACC(vv[0], al, ev);
+#else
+ vv[0] = _mm256_add_pd(vv[0],_mm256_mul_pd(al, _mm256_load_pd(&extEV[20 * l + 0])));
+#endif
+ _mm256_store_pd(&v[0],vv[0]);
+
+#ifdef _FMA
+ ev = _mm256_load_pd(&extEV[20 * l + 4]);
+ vv[1] = FMAMACC(vv[1], al, ev);
+#else
+ vv[1] = _mm256_add_pd(vv[1],_mm256_mul_pd(al, _mm256_load_pd(&extEV[20 * l + 4])));
+#endif
+ _mm256_store_pd(&v[4],vv[1]);
+
+#ifdef _FMA
+ ev = _mm256_load_pd(&extEV[20 * l + 8]);
+ vv[2] = FMAMACC(vv[2], al, ev);
+#else
+ vv[2] = _mm256_add_pd(vv[2],_mm256_mul_pd(al, _mm256_load_pd(&extEV[20 * l + 8])));
+#endif
+ _mm256_store_pd(&v[8],vv[2]);
+
+#ifdef _FMA
+ ev = _mm256_load_pd(&extEV[20 * l + 12]);
+ vv[3] = FMAMACC(vv[3], al, ev);
+#else
+ vv[3] = _mm256_add_pd(vv[3],_mm256_mul_pd(al, _mm256_load_pd(&extEV[20 * l + 12])));
+#endif
+ _mm256_store_pd(&v[12],vv[3]);
+
+#ifdef _FMA
+ ev = _mm256_load_pd(&extEV[20 * l + 16]);
+ vv[4] = FMAMACC(vv[4], al, ev);
+#else
+ vv[4] = _mm256_add_pd(vv[4],_mm256_mul_pd(al, _mm256_load_pd(&extEV[20 * l + 16])));
+#endif
+ _mm256_store_pd(&v[16],vv[4]);
+ }
+ }
+ v = &(x3[80 * i]);
+ scale = 1;
+ __m256d minlikelihood_avx = _mm256_set1_pd(PLL_MINLIKELIHOOD);
+
+ for(l = 0; scale && (l < 80); l += 4)
+ {
+ __m256d vv = _mm256_load_pd(&v[l]);
+ __m256d vv_abs = _mm256_and_pd(vv,absMask_AVX.m);
+ vv_abs = _mm256_cmp_pd(vv_abs,minlikelihood_avx,_CMP_LT_OS);
+ if(_mm256_movemask_pd(vv_abs) != 15)
+ scale = 0;
+ }
+
+ if(scale)
+ {
+ __m256d PLL_TWOTOTHE256v = _mm256_set_pd(PLL_TWOTOTHE256,PLL_TWOTOTHE256,PLL_TWOTOTHE256,PLL_TWOTOTHE256);
+ for(l = 0; l < 80; l += 4)
+ {
+ __m256d vv = _mm256_load_pd(&v[l]);
+ _mm256_store_pd(&v[l],_mm256_mul_pd(vv,PLL_TWOTOTHE256v));
+ }
+ if(useFastScaling)
+ addScale += wgt[i];
+ else
+ ex3[i] += 1;
+ }
+ }
+ break;
+ default:
+ assert(0);
+ }
+
+ if(useFastScaling)
+ *scalerIncrement = addScale;
+}
+
+
+
+void newviewGTRGAMMAPROT_AVX_GAPPED_SAVE(int tipCase,
+ double *x1_start, double *x2_start, double *x3_start, double *extEV, double *tipVector,
+ int *ex3, unsigned char *tipX1, unsigned char *tipX2, int n,
+ double *left, double *right, int *wgt, int *scalerIncrement, const boolean useFastScaling,
+ unsigned int *x1_gap, unsigned int *x2_gap, unsigned int *x3_gap,
+ double *x1_gapColumn, double *x2_gapColumn, double *x3_gapColumn)
+{
+ double
+ *x1 = x1_start,
+ *x2 = x2_start,
+ *x3_ptr = x3_start,
+ *x2_ptr = x2_start,
+ *x1_ptr = x1_start,
+ *uX1,
+ *uX2,
+ *v,
+ x1px2,
+ *vl,
+ *vr;
+
+ int
+ i,
+ j,
+ l,
+ k,
+ gapScaling = 0,
+ scale,
+ addScale = 0;
+
+
+#ifndef GCC_VERSION
+#define GCC_VERSION (__GNUC__ * 10000 + __GNUC_MINOR__ * 100 + __GNUC_PATCHLEVEL__)
+#endif
+
+
+#if GCC_VERSION < 40500
+ __m256d
+ bitmask = _mm256_set_pd(0,0,0,-1);
+#else
+ __m256i
+ bitmask = _mm256_set_epi32(0, 0, 0, 0, 0, 0, -1, -1);
+#endif
+
+ switch(tipCase)
+ {
+ case PLL_TIP_TIP:
+ {
+ double
+ umpX1[1840] __attribute__ ((aligned (PLL_BYTE_ALIGNMENT))),
+ umpX2[1840] __attribute__ ((aligned (PLL_BYTE_ALIGNMENT)));
+
+
+
+ for(i = 0; i < 23; i++)
+ {
+ v = &(tipVector[20 * i]);
+
+ for(k = 0; k < 80; k++)
+ {
+ double
+ *ll = &left[k * 20],
+ *rr = &right[k * 20];
+
+ __m256d
+ umpX1v = _mm256_setzero_pd(),
+ umpX2v = _mm256_setzero_pd();
+
+ for(l = 0; l < 20; l+=4)
+ {
+ __m256d vv = _mm256_load_pd(&v[l]);
+#ifdef _FMA
+ __m256d llv = _mm256_load_pd(&ll[l]);
+ umpX1v = FMAMACC(umpX1v,vv,llv);
+ __m256d rrv = _mm256_load_pd(&rr[l]);
+ umpX2v = FMAMACC(umpX2v,vv,rrv);
+#else
+ umpX1v = _mm256_add_pd(umpX1v,_mm256_mul_pd(vv,_mm256_load_pd(&ll[l])));
+ umpX2v = _mm256_add_pd(umpX2v,_mm256_mul_pd(vv,_mm256_load_pd(&rr[l])));
+#endif
+ }
+
+ umpX1v = hadd3(umpX1v);
+ umpX2v = hadd3(umpX2v);
+ _mm256_maskstore_pd(&umpX1[80 * i + k], bitmask, umpX1v);
+ _mm256_maskstore_pd(&umpX2[80 * i + k], bitmask, umpX2v);
+ }
+ }
+
+
+ {
+ uX1 = &umpX1[1760];
+ uX2 = &umpX2[1760];
+
+ for(j = 0; j < 4; j++)
+ {
+ __m256d vv[5];
+
+ v = &x3_gapColumn[j * 20];
+
+ vv[0] = _mm256_setzero_pd();
+ vv[1] = _mm256_setzero_pd();
+ vv[2] = _mm256_setzero_pd();
+ vv[3] = _mm256_setzero_pd();
+ vv[4] = _mm256_setzero_pd();
+
+ for(k = 0; k < 20; k++)
+ {
+ x1px2 = uX1[j * 20 + k] * uX2[j * 20 + k];
+
+ __m256d x1px2v = _mm256_set1_pd(x1px2);
+
+ __m256d extEvv = _mm256_load_pd(&extEV[20 * k]);
+#ifdef _FMA
+ vv[0] = FMAMACC(vv[0],x1px2v,extEvv);
+#else
+ vv[0] = _mm256_add_pd(vv[0],_mm256_mul_pd(x1px2v,extEvv));
+#endif
+ _mm256_store_pd(&v[0],vv[0]);
+
+ extEvv = _mm256_load_pd(&extEV[20 * k + 4]);
+#ifdef _FMA
+ vv[1] = FMAMACC(vv[1],x1px2v,extEvv);
+#else
+ vv[1] = _mm256_add_pd(vv[1],_mm256_mul_pd(x1px2v,extEvv));
+#endif
+ _mm256_store_pd(&v[4],vv[1]);
+
+ extEvv = _mm256_load_pd(&extEV[20 * k + 8]);
+#ifdef _FMA
+ vv[2] = FMAMACC(vv[2],x1px2v,extEvv);
+#else
+ vv[2] = _mm256_add_pd(vv[2],_mm256_mul_pd(x1px2v,extEvv));
+#endif
+ _mm256_store_pd(&v[8],vv[2]);
+
+ extEvv = _mm256_load_pd(&extEV[20 * k + 12]);
+#ifdef _FMA
+ vv[3] = FMAMACC(vv[3],x1px2v,extEvv);
+#else
+ vv[3] = _mm256_add_pd(vv[3],_mm256_mul_pd(x1px2v,extEvv));
+#endif
+ _mm256_store_pd(&v[12],vv[3]);
+
+ extEvv = _mm256_load_pd(&extEV[20 * k + 16]);
+#ifdef _FMA
+ vv[4] = FMAMACC(vv[4],x1px2v,extEvv);
+#else
+ vv[4] = _mm256_add_pd(vv[4],_mm256_mul_pd(x1px2v,extEvv));
+#endif
+ _mm256_store_pd(&v[16],vv[4]);
+ }
+ }
+ }
+
+
+ for(i = 0; i < n; i++)
+ {
+ if(!(x3_gap[i / 32] & mask32[i % 32]))
+ {
+ uX1 = &umpX1[80 * tipX1[i]];
+ uX2 = &umpX2[80 * tipX2[i]];
+
+ for(j = 0; j < 4; j++)
+ {
+ __m256d vv[5];
+
+ v = &x3_ptr[j * 20];
+
+ vv[0] = _mm256_setzero_pd();
+ vv[1] = _mm256_setzero_pd();
+ vv[2] = _mm256_setzero_pd();
+ vv[3] = _mm256_setzero_pd();
+ vv[4] = _mm256_setzero_pd();
+
+ for(k = 0; k < 20; k++)
+ {
+ x1px2 = uX1[j * 20 + k] * uX2[j * 20 + k];
+
+ __m256d x1px2v = _mm256_set1_pd(x1px2);
+
+ __m256d extEvv = _mm256_load_pd(&extEV[20 * k]);
+#ifdef _FMA
+ vv[0] = FMAMACC(vv[0],x1px2v,extEvv);
+#else
+ vv[0] = _mm256_add_pd(vv[0],_mm256_mul_pd(x1px2v,extEvv));
+#endif
+ _mm256_store_pd(&v[0],vv[0]);
+
+ extEvv = _mm256_load_pd(&extEV[20 * k + 4]);
+#ifdef _FMA
+ vv[1] = FMAMACC(vv[1],x1px2v,extEvv);
+#else
+ vv[1] = _mm256_add_pd(vv[1],_mm256_mul_pd(x1px2v,extEvv));
+#endif
+ _mm256_store_pd(&v[4],vv[1]);
+
+ extEvv = _mm256_load_pd(&extEV[20 * k + 8]);
+#ifdef _FMA
+ vv[2] = FMAMACC(vv[2],x1px2v,extEvv);
+#else
+ vv[2] = _mm256_add_pd(vv[2],_mm256_mul_pd(x1px2v,extEvv));
+#endif
+ _mm256_store_pd(&v[8],vv[2]);
+
+ extEvv = _mm256_load_pd(&extEV[20 * k + 12]);
+#ifdef _FMA
+ vv[3] = FMAMACC(vv[3],x1px2v,extEvv);
+#else
+ vv[3] = _mm256_add_pd(vv[3],_mm256_mul_pd(x1px2v,extEvv));
+#endif
+ _mm256_store_pd(&v[12],vv[3]);
+
+ extEvv = _mm256_load_pd(&extEV[20 * k + 16]);
+#ifdef _FMA
+ vv[4] = FMAMACC(vv[4],x1px2v,extEvv);
+#else
+ vv[4] = _mm256_add_pd(vv[4],_mm256_mul_pd(x1px2v,extEvv));
+#endif
+ _mm256_store_pd(&v[16],vv[4]);
+ }
+ }
+ x3_ptr += 80;
+ }
+ }
+ }
+ break;
+ case PLL_TIP_INNER:
+ {
+ double
+ umpX1[1840] __attribute__ ((aligned (PLL_BYTE_ALIGNMENT))),
+ ump_x2[20] __attribute__ ((aligned (PLL_BYTE_ALIGNMENT)));
+
+
+
+ for(i = 0; i < 23; i++)
+ {
+ v = &(tipVector[20 * i]);
+
+ for(k = 0; k < 80; k++)
+ {
+ __m256d umpX1v = _mm256_setzero_pd();
+ for(l = 0; l < 20; l+=4)
+ {
+ __m256d vv = _mm256_load_pd(&v[l]);
+ __m256d leftv = _mm256_load_pd(&left[k * 20 + l]);
+#ifdef _FMA
+
+ umpX1v = FMAMACC(umpX1v, vv, leftv);
+#else
+ umpX1v = _mm256_add_pd(umpX1v, _mm256_mul_pd(vv, leftv));
+#endif
+ }
+ umpX1v = hadd3(umpX1v);
+ _mm256_maskstore_pd(&umpX1[80 * i + k], bitmask, umpX1v);
+ }
+ }
+
+ {
+ uX1 = &umpX1[1760];
+
+ for(k = 0; k < 4; k++)
+ {
+ v = &(x2_gapColumn[k * 20]);
+
+ for(l = 0; l < 20; l++)
+ {
+ __m256d ump_x2v = _mm256_setzero_pd();
+
+ __m256d vv = _mm256_load_pd(&v[0]);
+ __m256d rightv = _mm256_load_pd(&right[k*400+l*20+0]);
+#ifdef _FMA
+ ump_x2v = FMAMACC(ump_x2v,vv,rightv);
+#else
+ ump_x2v = _mm256_add_pd(ump_x2v, _mm256_mul_pd(vv, rightv));
+#endif
+
+ vv = _mm256_load_pd(&v[4]);
+ rightv = _mm256_load_pd(&right[k*400+l*20+4]);
+#ifdef _FMA
+ ump_x2v = FMAMACC(ump_x2v,vv,rightv);
+#else
+ ump_x2v = _mm256_add_pd(ump_x2v, _mm256_mul_pd(vv, rightv));
+#endif
+
+ vv = _mm256_load_pd(&v[8]);
+ rightv = _mm256_load_pd(&right[k*400+l*20+8]);
+#ifdef _FMA
+ ump_x2v = FMAMACC(ump_x2v,vv,rightv);
+#else
+ ump_x2v = _mm256_add_pd(ump_x2v, _mm256_mul_pd(vv, rightv));
+#endif
+
+ vv = _mm256_load_pd(&v[12]);
+ rightv = _mm256_load_pd(&right[k*400+l*20+12]);
+#ifdef _FMA
+ ump_x2v = FMAMACC(ump_x2v,vv,rightv);
+#else
+ ump_x2v = _mm256_add_pd(ump_x2v, _mm256_mul_pd(vv, rightv));
+#endif
+
+ vv = _mm256_load_pd(&v[16]);
+ rightv = _mm256_load_pd(&right[k*400+l*20+16]);
+#ifdef _FMA
+ ump_x2v = FMAMACC(ump_x2v,vv,rightv);
+#else
+ ump_x2v = _mm256_add_pd(ump_x2v, _mm256_mul_pd(vv, rightv));
+#endif
+
+ ump_x2v = hadd3(ump_x2v);
+ _mm256_maskstore_pd(&ump_x2[l], bitmask, ump_x2v);
+ }
+
+ v = &x3_gapColumn[20 * k];
+
+ __m256d vv[5];
+
+ vv[0] = _mm256_setzero_pd();
+ vv[1] = _mm256_setzero_pd();
+ vv[2] = _mm256_setzero_pd();
+ vv[3] = _mm256_setzero_pd();
+ vv[4] = _mm256_setzero_pd();
+
+ for(l = 0; l < 20; l++)
+ {
+ x1px2 = uX1[k * 20 + l] * ump_x2[l];
+ __m256d x1px2v = _mm256_set1_pd(x1px2);
+
+#ifdef _FMA
+ __m256d ev = _mm256_load_pd(&extEV[l * 20 + 0]);
+ vv[0] = FMAMACC(vv[0],x1px2v, ev);
+#else
+ vv[0] = _mm256_add_pd(vv[0],_mm256_mul_pd(x1px2v, _mm256_load_pd(&extEV[l * 20 + 0])));
+#endif
+ _mm256_store_pd(&v[0],vv[0]);
+
+#ifdef _FMA
+ ev = _mm256_load_pd(&extEV[l * 20 + 4]);
+ vv[1] = FMAMACC(vv[1],x1px2v, ev);
+#else
+ vv[1] = _mm256_add_pd(vv[1],_mm256_mul_pd(x1px2v, _mm256_load_pd(&extEV[l * 20 + 4])));
+#endif
+ _mm256_store_pd(&v[4],vv[1]);
+
+#ifdef _FMA
+ ev = _mm256_load_pd(&extEV[l * 20 + 8]);
+ vv[2] = FMAMACC(vv[2],x1px2v, ev);
+#else
+ vv[2] = _mm256_add_pd(vv[2],_mm256_mul_pd(x1px2v, _mm256_load_pd(&extEV[l * 20 + 8])));
+#endif
+ _mm256_store_pd(&v[8],vv[2]);
+
+#ifdef _FMA
+ ev = _mm256_load_pd(&extEV[l * 20 + 12]);
+ vv[3] = FMAMACC(vv[3],x1px2v, ev);
+#else
+ vv[3] = _mm256_add_pd(vv[3],_mm256_mul_pd(x1px2v, _mm256_load_pd(&extEV[l * 20 + 12])));
+#endif
+ _mm256_store_pd(&v[12],vv[3]);
+
+
+#ifdef _FMA
+ ev = _mm256_load_pd(&extEV[l * 20 + 16]);
+ vv[4] = FMAMACC(vv[4],x1px2v, ev);
+#else
+ vv[4] = _mm256_add_pd(vv[4],_mm256_mul_pd(x1px2v, _mm256_load_pd(&extEV[l * 20 + 16])));
+#endif
+ _mm256_store_pd(&v[16],vv[4]);
+
+ }
+ }
+
+ v = x3_gapColumn;
+ __m256d minlikelihood_avx = _mm256_set1_pd(PLL_MINLIKELIHOOD);
+ scale = 1;
+ for(l = 0; scale && (l < 80); l += 4)
+ {
+ __m256d vv = _mm256_load_pd(&v[l]);
+ __m256d vv_abs = _mm256_and_pd(vv,absMask_AVX.m);
+ vv_abs = _mm256_cmp_pd(vv_abs,minlikelihood_avx,_CMP_LT_OS);
+ if(_mm256_movemask_pd(vv_abs) != 15)
+ scale = 0;
+ }
+
+ if(scale)
+ {
+ __m256d PLL_TWOTOTHE256v = _mm256_set_pd(PLL_TWOTOTHE256,PLL_TWOTOTHE256,PLL_TWOTOTHE256,PLL_TWOTOTHE256);
+ gapScaling = 1;
+
+ for(l = 0; l < 80; l += 4)
+ {
+ __m256d vv = _mm256_load_pd(&v[l]);
+ _mm256_store_pd(&v[l],_mm256_mul_pd(vv,PLL_TWOTOTHE256v));
+ }
+ }
+ }
+
+ for (i = 0; i < n; i++)
+ {
+ if((x3_gap[i / 32] & mask32[i % 32]))
+ {
+ if(gapScaling)
+ {
+ if(useFastScaling)
+ addScale += wgt[i];
+ else
+ ex3[i] += 1;
+ }
+ }
+ else
+ {
+ uX1 = &umpX1[80 * tipX1[i]];
+
+ if(x2_gap[i / 32] & mask32[i % 32])
+ x2 = x2_gapColumn;
+ else
+ {
+ x2 = x2_ptr;
+ x2_ptr += 80;
+ }
+
+ for(k = 0; k < 4; k++)
+ {
+ v = &(x2[k * 20]);
+
+ for(l = 0; l < 20; l++)
+ {
+ __m256d ump_x2v = _mm256_setzero_pd();
+
+ __m256d vv = _mm256_load_pd(&v[0]);
+ __m256d rightv = _mm256_load_pd(&right[k*400+l*20+0]);
+#ifdef _FMA
+ ump_x2v = FMAMACC(ump_x2v,vv,rightv);
+#else
+ ump_x2v = _mm256_add_pd(ump_x2v, _mm256_mul_pd(vv, rightv));
+#endif
+
+ vv = _mm256_load_pd(&v[4]);
+ rightv = _mm256_load_pd(&right[k*400+l*20+4]);
+#ifdef _FMA
+ ump_x2v = FMAMACC(ump_x2v,vv,rightv);
+#else
+ ump_x2v = _mm256_add_pd(ump_x2v, _mm256_mul_pd(vv, rightv));
+#endif
+
+ vv = _mm256_load_pd(&v[8]);
+ rightv = _mm256_load_pd(&right[k*400+l*20+8]);
+#ifdef _FMA
+ ump_x2v = FMAMACC(ump_x2v,vv,rightv);
+#else
+ ump_x2v = _mm256_add_pd(ump_x2v, _mm256_mul_pd(vv, rightv));
+#endif
+
+ vv = _mm256_load_pd(&v[12]);
+ rightv = _mm256_load_pd(&right[k*400+l*20+12]);
+#ifdef _FMA
+ ump_x2v = FMAMACC(ump_x2v,vv,rightv);
+#else
+ ump_x2v = _mm256_add_pd(ump_x2v, _mm256_mul_pd(vv, rightv));
+#endif
+
+ vv = _mm256_load_pd(&v[16]);
+ rightv = _mm256_load_pd(&right[k*400+l*20+16]);
+#ifdef _FMA
+ ump_x2v = FMAMACC(ump_x2v,vv,rightv);
+#else
+ ump_x2v = _mm256_add_pd(ump_x2v, _mm256_mul_pd(vv, rightv));
+#endif
+
+ ump_x2v = hadd3(ump_x2v);
+ _mm256_maskstore_pd(&ump_x2[l], bitmask, ump_x2v);
+ }
+
+
+ v = &x3_ptr[k * 20];
+
+ __m256d vv[5];
+
+ vv[0] = _mm256_setzero_pd();
+ vv[1] = _mm256_setzero_pd();
+ vv[2] = _mm256_setzero_pd();
+ vv[3] = _mm256_setzero_pd();
+ vv[4] = _mm256_setzero_pd();
+
+ for(l = 0; l < 20; l++)
+ {
+ x1px2 = uX1[k * 20 + l] * ump_x2[l];
+ __m256d x1px2v = _mm256_set1_pd(x1px2);
+
+#ifdef _FMA
+ __m256d ev = _mm256_load_pd(&extEV[l * 20 + 0]);
+ vv[0] = FMAMACC(vv[0],x1px2v, ev);
+#else
+ vv[0] = _mm256_add_pd(vv[0],_mm256_mul_pd(x1px2v, _mm256_load_pd(&extEV[l * 20 + 0])));
+#endif
+ _mm256_store_pd(&v[0],vv[0]);
+
+#ifdef _FMA
+ ev = _mm256_load_pd(&extEV[l * 20 + 4]);
+ vv[1] = FMAMACC(vv[1],x1px2v, ev);
+#else
+ vv[1] = _mm256_add_pd(vv[1],_mm256_mul_pd(x1px2v, _mm256_load_pd(&extEV[l * 20 + 4])));
+#endif
+ _mm256_store_pd(&v[4],vv[1]);
+
+#ifdef _FMA
+ ev = _mm256_load_pd(&extEV[l * 20 + 8]);
+ vv[2] = FMAMACC(vv[2],x1px2v, ev);
+#else
+ vv[2] = _mm256_add_pd(vv[2],_mm256_mul_pd(x1px2v, _mm256_load_pd(&extEV[l * 20 + 8])));
+#endif
+ _mm256_store_pd(&v[8],vv[2]);
+
+#ifdef _FMA
+ ev = _mm256_load_pd(&extEV[l * 20 + 12]);
+ vv[3] = FMAMACC(vv[3],x1px2v, ev);
+#else
+ vv[3] = _mm256_add_pd(vv[3],_mm256_mul_pd(x1px2v, _mm256_load_pd(&extEV[l * 20 + 12])));
+#endif
+ _mm256_store_pd(&v[12],vv[3]);
+
+
+#ifdef _FMA
+ ev = _mm256_load_pd(&extEV[l * 20 + 16]);
+ vv[4] = FMAMACC(vv[4],x1px2v, ev);
+#else
+ vv[4] = _mm256_add_pd(vv[4],_mm256_mul_pd(x1px2v, _mm256_load_pd(&extEV[l * 20 + 16])));
+#endif
+ _mm256_store_pd(&v[16],vv[4]);
+
+ }
+ }
+
+ v = x3_ptr;
+ __m256d minlikelihood_avx = _mm256_set1_pd(PLL_MINLIKELIHOOD);
+ scale = 1;
+ for(l = 0; scale && (l < 80); l += 4)
+ {
+ __m256d vv = _mm256_load_pd(&v[l]);
+ __m256d vv_abs = _mm256_and_pd(vv,absMask_AVX.m);
+ vv_abs = _mm256_cmp_pd(vv_abs,minlikelihood_avx,_CMP_LT_OS);
+ if(_mm256_movemask_pd(vv_abs) != 15)
+ scale = 0;
+ }
+
+ if(scale)
+ {
+ __m256d PLL_TWOTOTHE256v = _mm256_set_pd(PLL_TWOTOTHE256,PLL_TWOTOTHE256,PLL_TWOTOTHE256,PLL_TWOTOTHE256);
+ for(l = 0; l < 80; l += 4)
+ {
+ __m256d vv = _mm256_load_pd(&v[l]);
+ _mm256_store_pd(&v[l],_mm256_mul_pd(vv,PLL_TWOTOTHE256v));
+ }
+ if(useFastScaling)
+ addScale += wgt[i];
+ else
+ ex3[i] += 1;
+ }
+ x3_ptr += 80;
+ }
+ }
+ }
+ break;
+ case PLL_INNER_INNER:
+ for(k = 0; k < 4; k++)
+ {
+ vl = &(x1_gapColumn[20 * k]);
+ vr = &(x2_gapColumn[20 * k]);
+ v = &(x3_gapColumn[20 * k]);
+
+ __m256d vv[5];
+
+ vv[0] = _mm256_setzero_pd();
+ vv[1] = _mm256_setzero_pd();
+ vv[2] = _mm256_setzero_pd();
+ vv[3] = _mm256_setzero_pd();
+ vv[4] = _mm256_setzero_pd();
+
+ for(l = 0; l < 20; l++)
+ {
+ __m256d al = _mm256_setzero_pd();
+ __m256d ar = _mm256_setzero_pd();
+
+ __m256d leftv = _mm256_load_pd(&left[k * 400 + l * 20 + 0]);
+ __m256d rightv = _mm256_load_pd(&right[k * 400 + l * 20 + 0]);
+ __m256d vlv = _mm256_load_pd(&vl[0]);
+ __m256d vrv = _mm256_load_pd(&vr[0]);
+
+#ifdef _FMA
+
+ al = FMAMACC(al, vlv, leftv);
+ ar = FMAMACC(ar, vrv, rightv);
+#else
+ al = _mm256_add_pd(al,_mm256_mul_pd(vlv,leftv));
+ ar = _mm256_add_pd(ar,_mm256_mul_pd(vrv,rightv));
+#endif
+
+ leftv = _mm256_load_pd(&left[k * 400 + l * 20 + 4]);
+ rightv = _mm256_load_pd(&right[k * 400 + l * 20 + 4]);
+ vlv = _mm256_load_pd(&vl[4]);
+ vrv = _mm256_load_pd(&vr[4]);
+#ifdef _FMA
+
+ al = FMAMACC(al, vlv, leftv);
+ ar = FMAMACC(ar, vrv, rightv);
+#else
+ al = _mm256_add_pd(al,_mm256_mul_pd(vlv,leftv));
+ ar = _mm256_add_pd(ar,_mm256_mul_pd(vrv,rightv));
+#endif
+
+ leftv = _mm256_load_pd(&left[k * 400 + l * 20 + 8]);
+ rightv = _mm256_load_pd(&right[k * 400 + l * 20 + 8]);
+ vlv = _mm256_load_pd(&vl[8]);
+ vrv = _mm256_load_pd(&vr[8]);
+#ifdef _FMA
+
+ al = FMAMACC(al, vlv, leftv);
+ ar = FMAMACC(ar, vrv, rightv);
+#else
+ al = _mm256_add_pd(al,_mm256_mul_pd(vlv,leftv));
+ ar = _mm256_add_pd(ar,_mm256_mul_pd(vrv,rightv));
+#endif
+
+ leftv = _mm256_load_pd(&left[k * 400 + l * 20 + 12]);
+ rightv = _mm256_load_pd(&right[k * 400 + l * 20 + 12]);
+ vlv = _mm256_load_pd(&vl[12]);
+ vrv = _mm256_load_pd(&vr[12]);
+#ifdef _FMA
+
+ al = FMAMACC(al, vlv, leftv);
+ ar = FMAMACC(ar, vrv, rightv);
+#else
+ al = _mm256_add_pd(al,_mm256_mul_pd(vlv,leftv));
+ ar = _mm256_add_pd(ar,_mm256_mul_pd(vrv,rightv));
+#endif
+
+ leftv = _mm256_load_pd(&left[k * 400 + l * 20 + 16]);
+ rightv = _mm256_load_pd(&right[k * 400 + l * 20 + 16]);
+ vlv = _mm256_load_pd(&vl[16]);
+ vrv = _mm256_load_pd(&vr[16]);
+
+#ifdef _FMA
+ al = FMAMACC(al, vlv, leftv);
+ ar = FMAMACC(ar, vrv, rightv);
+#else
+ al = _mm256_add_pd(al,_mm256_mul_pd(vlv,leftv));
+ ar = _mm256_add_pd(ar,_mm256_mul_pd(vrv,rightv));
+#endif
+
+ /**************************************************************************************************************/
+
+ al = hadd3(al);
+ ar = hadd3(ar);
+ al = _mm256_mul_pd(ar,al);
+
+ /************************************************************************************************************/
+#ifdef _FMA
+ __m256d ev = _mm256_load_pd(&extEV[20 * l + 0]);
+ vv[0] = FMAMACC(vv[0], al, ev);
+#else
+ vv[0] = _mm256_add_pd(vv[0],_mm256_mul_pd(al, _mm256_load_pd(&extEV[20 * l + 0])));
+#endif
+ _mm256_store_pd(&v[0],vv[0]);
+
+#ifdef _FMA
+ ev = _mm256_load_pd(&extEV[20 * l + 4]);
+ vv[1] = FMAMACC(vv[1], al, ev);
+#else
+ vv[1] = _mm256_add_pd(vv[1],_mm256_mul_pd(al, _mm256_load_pd(&extEV[20 * l + 4])));
+#endif
+ _mm256_store_pd(&v[4],vv[1]);
+
+#ifdef _FMA
+ ev = _mm256_load_pd(&extEV[20 * l + 8]);
+ vv[2] = FMAMACC(vv[2], al, ev);
+#else
+ vv[2] = _mm256_add_pd(vv[2],_mm256_mul_pd(al, _mm256_load_pd(&extEV[20 * l + 8])));
+#endif
+ _mm256_store_pd(&v[8],vv[2]);
+
+#ifdef _FMA
+ ev = _mm256_load_pd(&extEV[20 * l + 12]);
+ vv[3] = FMAMACC(vv[3], al, ev);
+#else
+ vv[3] = _mm256_add_pd(vv[3],_mm256_mul_pd(al, _mm256_load_pd(&extEV[20 * l + 12])));
+#endif
+ _mm256_store_pd(&v[12],vv[3]);
+
+#ifdef _FMA
+ ev = _mm256_load_pd(&extEV[20 * l + 16]);
+ vv[4] = FMAMACC(vv[4], al, ev);
+#else
+ vv[4] = _mm256_add_pd(vv[4],_mm256_mul_pd(al, _mm256_load_pd(&extEV[20 * l + 16])));
+#endif
+ _mm256_store_pd(&v[16],vv[4]);
+ }
+ }
+
+ v = x3_gapColumn;
+ scale = 1;
+ __m256d minlikelihood_avx = _mm256_set1_pd(PLL_MINLIKELIHOOD);
+
+ for(l = 0; scale && (l < 80); l += 4)
+ {
+ __m256d vv = _mm256_load_pd(&v[l]);
+ __m256d vv_abs = _mm256_and_pd(vv,absMask_AVX.m);
+ vv_abs = _mm256_cmp_pd(vv_abs,minlikelihood_avx,_CMP_LT_OS);
+ if(_mm256_movemask_pd(vv_abs) != 15)
+ scale = 0;
+ }
+
+ if(scale)
+ {
+ __m256d PLL_TWOTOTHE256v = _mm256_set_pd(PLL_TWOTOTHE256,PLL_TWOTOTHE256,PLL_TWOTOTHE256,PLL_TWOTOTHE256);
+ gapScaling = 1;
+
+ for(l = 0; l < 80; l += 4)
+ {
+ __m256d vv = _mm256_load_pd(&v[l]);
+ _mm256_store_pd(&v[l],_mm256_mul_pd(vv,PLL_TWOTOTHE256v));
+ }
+
+ }
+
+
+
+ for(i = 0; i < n; i++)
+ {
+
+ if(x3_gap[i / 32] & mask32[i % 32])
+ {
+ if(gapScaling)
+ {
+ if(useFastScaling)
+ addScale += wgt[i];
+ else
+ ex3[i] += 1;
+ }
+ }
+ else
+ {
+ if(x1_gap[i / 32] & mask32[i % 32])
+ x1 = x1_gapColumn;
+ else
+ {
+ x1 = x1_ptr;
+ x1_ptr += 80;
+ }
+
+ if(x2_gap[i / 32] & mask32[i % 32])
+ x2 = x2_gapColumn;
+ else
+ {
+ x2 = x2_ptr;
+ x2_ptr += 80;
+ }
+
+ for(k = 0; k < 4; k++)
+ {
+ vl = &(x1[20 * k]);
+ vr = &(x2[20 * k]);
+ v = &(x3_ptr[20 * k]);
+
+ __m256d vv[5];
+
+ vv[0] = _mm256_setzero_pd();
+ vv[1] = _mm256_setzero_pd();
+ vv[2] = _mm256_setzero_pd();
+ vv[3] = _mm256_setzero_pd();
+ vv[4] = _mm256_setzero_pd();
+
+ for(l = 0; l < 20; l++)
+ {
+ __m256d al = _mm256_setzero_pd();
+ __m256d ar = _mm256_setzero_pd();
+
+ __m256d leftv = _mm256_load_pd(&left[k * 400 + l * 20 + 0]);
+ __m256d rightv = _mm256_load_pd(&right[k * 400 + l * 20 + 0]);
+ __m256d vlv = _mm256_load_pd(&vl[0]);
+ __m256d vrv = _mm256_load_pd(&vr[0]);
+
+#ifdef _FMA
+
+ al = FMAMACC(al, vlv, leftv);
+ ar = FMAMACC(ar, vrv, rightv);
+#else
+ al = _mm256_add_pd(al,_mm256_mul_pd(vlv,leftv));
+ ar = _mm256_add_pd(ar,_mm256_mul_pd(vrv,rightv));
+#endif
+
+ leftv = _mm256_load_pd(&left[k * 400 + l * 20 + 4]);
+ rightv = _mm256_load_pd(&right[k * 400 + l * 20 + 4]);
+ vlv = _mm256_load_pd(&vl[4]);
+ vrv = _mm256_load_pd(&vr[4]);
+#ifdef _FMA
+
+ al = FMAMACC(al, vlv, leftv);
+ ar = FMAMACC(ar, vrv, rightv);
+#else
+ al = _mm256_add_pd(al,_mm256_mul_pd(vlv,leftv));
+ ar = _mm256_add_pd(ar,_mm256_mul_pd(vrv,rightv));
+#endif
+
+ leftv = _mm256_load_pd(&left[k * 400 + l * 20 + 8]);
+ rightv = _mm256_load_pd(&right[k * 400 + l * 20 + 8]);
+ vlv = _mm256_load_pd(&vl[8]);
+ vrv = _mm256_load_pd(&vr[8]);
+#ifdef _FMA
+
+ al = FMAMACC(al, vlv, leftv);
+ ar = FMAMACC(ar, vrv, rightv);
+#else
+ al = _mm256_add_pd(al,_mm256_mul_pd(vlv,leftv));
+ ar = _mm256_add_pd(ar,_mm256_mul_pd(vrv,rightv));
+#endif
+
+ leftv = _mm256_load_pd(&left[k * 400 + l * 20 + 12]);
+ rightv = _mm256_load_pd(&right[k * 400 + l * 20 + 12]);
+ vlv = _mm256_load_pd(&vl[12]);
+ vrv = _mm256_load_pd(&vr[12]);
+#ifdef _FMA
+
+ al = FMAMACC(al, vlv, leftv);
+ ar = FMAMACC(ar, vrv, rightv);
+#else
+ al = _mm256_add_pd(al,_mm256_mul_pd(vlv,leftv));
+ ar = _mm256_add_pd(ar,_mm256_mul_pd(vrv,rightv));
+#endif
+
+ leftv = _mm256_load_pd(&left[k * 400 + l * 20 + 16]);
+ rightv = _mm256_load_pd(&right[k * 400 + l * 20 + 16]);
+ vlv = _mm256_load_pd(&vl[16]);
+ vrv = _mm256_load_pd(&vr[16]);
+
+#ifdef _FMA
+ al = FMAMACC(al, vlv, leftv);
+ ar = FMAMACC(ar, vrv, rightv);
+#else
+ al = _mm256_add_pd(al,_mm256_mul_pd(vlv,leftv));
+ ar = _mm256_add_pd(ar,_mm256_mul_pd(vrv,rightv));
+#endif
+
+ /**************************************************************************************************************/
+
+ al = hadd3(al);
+ ar = hadd3(ar);
+ al = _mm256_mul_pd(ar,al);
+
+ /************************************************************************************************************/
+#ifdef _FMA
+ __m256d ev = _mm256_load_pd(&extEV[20 * l + 0]);
+ vv[0] = FMAMACC(vv[0], al, ev);
+#else
+ vv[0] = _mm256_add_pd(vv[0],_mm256_mul_pd(al, _mm256_load_pd(&extEV[20 * l + 0])));
+#endif
+ _mm256_store_pd(&v[0],vv[0]);
+
+#ifdef _FMA
+ ev = _mm256_load_pd(&extEV[20 * l + 4]);
+ vv[1] = FMAMACC(vv[1], al, ev);
+#else
+ vv[1] = _mm256_add_pd(vv[1],_mm256_mul_pd(al, _mm256_load_pd(&extEV[20 * l + 4])));
+#endif
+ _mm256_store_pd(&v[4],vv[1]);
+
+#ifdef _FMA
+ ev = _mm256_load_pd(&extEV[20 * l + 8]);
+ vv[2] = FMAMACC(vv[2], al, ev);
+#else
+ vv[2] = _mm256_add_pd(vv[2],_mm256_mul_pd(al, _mm256_load_pd(&extEV[20 * l + 8])));
+#endif
+ _mm256_store_pd(&v[8],vv[2]);
+
+#ifdef _FMA
+ ev = _mm256_load_pd(&extEV[20 * l + 12]);
+ vv[3] = FMAMACC(vv[3], al, ev);
+#else
+ vv[3] = _mm256_add_pd(vv[3],_mm256_mul_pd(al, _mm256_load_pd(&extEV[20 * l + 12])));
+#endif
+ _mm256_store_pd(&v[12],vv[3]);
+
+#ifdef _FMA
+ ev = _mm256_load_pd(&extEV[20 * l + 16]);
+ vv[4] = FMAMACC(vv[4], al, ev);
+#else
+ vv[4] = _mm256_add_pd(vv[4],_mm256_mul_pd(al, _mm256_load_pd(&extEV[20 * l + 16])));
+#endif
+ _mm256_store_pd(&v[16],vv[4]);
+ }
+ }
+
+ v = x3_ptr;
+ scale = 1;
+
+ __m256d minlikelihood_avx = _mm256_set1_pd(PLL_MINLIKELIHOOD);
+
+ for(l = 0; scale && (l < 80); l += 4)
+ {
+ __m256d vv = _mm256_load_pd(&v[l]);
+ __m256d vv_abs = _mm256_and_pd(vv,absMask_AVX.m);
+ vv_abs = _mm256_cmp_pd(vv_abs,minlikelihood_avx,_CMP_LT_OS);
+ if(_mm256_movemask_pd(vv_abs) != 15)
+ scale = 0;
+ }
+
+ if(scale)
+ {
+ __m256d PLL_TWOTOTHE256v = _mm256_set_pd(PLL_TWOTOTHE256,PLL_TWOTOTHE256,PLL_TWOTOTHE256,PLL_TWOTOTHE256);
+ for(l = 0; l < 80; l += 4)
+ {
+ __m256d vv = _mm256_load_pd(&v[l]);
+ _mm256_store_pd(&v[l],_mm256_mul_pd(vv,PLL_TWOTOTHE256v));
+ }
+ if(useFastScaling)
+ addScale += wgt[i];
+ else
+ ex3[i] += 1;
+ }
+ x3_ptr += 80;
+ }
+ }
+ break;
+ default:
+ assert(0);
+ }
+
+ if(useFastScaling)
+ *scalerIncrement = addScale;
+}
diff --git a/src/bipartitionList.c b/src/bipartitionList.c
new file mode 100644
index 0000000..c1791da
--- /dev/null
+++ b/src/bipartitionList.c
@@ -0,0 +1,434 @@
+/**
+ * PLL (version 1.0.0) a software library for phylogenetic inference
+ * Copyright (C) 2013 Tomas Flouri and Alexandros Stamatakis
+ *
+ * Derived from
+ * RAxML-HPC, a program for sequential and parallel estimation of phylogenetic
+ * trees by Alexandros Stamatakis
+ *
+ * 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 3 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, see <http://www.gnu.org/licenses/>.
+ *
+ * For any other enquiries send an Email to Tomas Flouri
+ * Tomas.Flouri at h-its.org
+ *
+ * When publishing work that uses PLL please cite PLL
+ *
+ * @file bipartitionList.c
+ */
+#include "mem_alloc.h"
+
+#ifndef WIN32
+#include <sys/times.h>
+#include <sys/types.h>
+#include <sys/time.h>
+#include <unistd.h>
+#endif
+
+#include <limits.h>
+#include <math.h>
+#include <time.h>
+#include <stdlib.h>
+#include <stdio.h>
+#include <ctype.h>
+#include <string.h>
+#include <stdint.h>
+#include <assert.h>
+
+#include "pll.h"
+#include "pllInternal.h"
+
+
+static pllBipartitionEntry *initEntry(void);
+static void getxnodeBips (nodeptr p);
+static void newviewBipartitions(unsigned int **bitVectors,
+ nodeptr p,
+ int numsp,
+ unsigned int vectorLength,
+ int processID);
+
+static void insertHashRF(unsigned int *bitVector,
+ pllHashTable *h,
+ unsigned int vectorLength,
+ int treeNumber,
+ int treeVectorLength,
+ hashNumberType position,
+ int support,
+ boolean computeWRF);
+
+extern const unsigned int mask32[32];
+
+
+static void getxnodeBips (nodeptr p)
+{
+ nodeptr s;
+
+ if ((s = p->next)->xBips || (s = s->next)->xBips)
+ {
+ p->xBips = s->xBips;
+ s->xBips = 0;
+ }
+
+ assert(p->xBips);
+}
+
+
+static pllBipartitionEntry *initEntry(void)
+{
+ pllBipartitionEntry * e = (pllBipartitionEntry *)rax_malloc(sizeof(pllBipartitionEntry));
+
+ e->bitVector = (unsigned int*)NULL;
+ e->treeVector = (unsigned int*)NULL;
+ e->supportVector = (int*)NULL;
+ e->bipNumber = 0;
+ e->bipNumber2 = 0;
+ e->supportFromTreeset[0] = 0;
+ e->supportFromTreeset[1] = 0;
+ e->next = (pllBipartitionEntry *)NULL;
+
+ return e;
+}
+
+void cleanupHashTable(pllHashTable *h, int state)
+{
+ unsigned int
+ k,
+ entryCount = 0,
+ removeCount = 0;
+
+ assert(state == 1 || state == 0);
+
+ for(k = 0, entryCount = 0; k < h->size; k++)
+ {
+ pllHashItem * start = NULL;
+ pllHashItem * lastValid = NULL;
+
+ pllHashItem * hitem = h->Items[k];
+ while (hitem)
+ {
+ pllBipartitionEntry *e = (pllBipartitionEntry *)(hitem->data);
+ if(state == 0)
+ {
+ e->treeVector[0] = e->treeVector[0] & 2;
+ assert(!(e->treeVector[0] & 1));
+ }
+ else
+ {
+ e->treeVector[0] = e->treeVector[0] & 1;
+ assert(!(e->treeVector[0] & 2));
+ }
+
+ if(e->treeVector[0] != 0)
+ {
+ if(!start)
+ start = hitem;
+ lastValid = hitem;
+ hitem = hitem->next;
+ }
+ else
+ {
+ pllHashItem *tmp = hitem;
+ pllBipartitionEntry *remove = e;
+ hitem = hitem->next;
+
+ removeCount++;
+
+ if(lastValid) lastValid->next = hitem;
+
+ if(remove->bitVector) rax_free(remove->bitVector);
+ if(remove->treeVector) rax_free(remove->treeVector);
+ if(remove->supportVector) rax_free(remove->supportVector);
+ rax_free(remove);
+ rax_free(tmp);
+ }
+ entryCount++;
+ }
+
+ if(!start)
+ {
+ assert(!lastValid);
+ h->Items[k] = NULL;
+ }
+ else
+ {
+ h->Items[k] = start;
+ }
+ }
+
+ assert(entryCount == h->entries);
+ h->entries-= removeCount;
+}
+
+
+
+
+
+
+
+
+
+
+
+unsigned int **initBitVector(int mxtips, unsigned int *vectorLength)
+{
+ unsigned int
+ **bitVectors = (unsigned int **)rax_malloc(sizeof(unsigned int*) * 2 * (size_t)mxtips);
+
+ int
+ i;
+
+ if(mxtips % PLL_MASK_LENGTH == 0)
+ *vectorLength = mxtips / PLL_MASK_LENGTH;
+ else
+ *vectorLength = 1 + (mxtips / PLL_MASK_LENGTH);
+
+ for(i = 1; i <= mxtips; i++)
+ {
+ bitVectors[i] = (unsigned int *)rax_calloc((size_t)(*vectorLength), sizeof(unsigned int));
+ assert(bitVectors[i]);
+ bitVectors[i][(i - 1) / PLL_MASK_LENGTH] |= mask32[(i - 1) % PLL_MASK_LENGTH];
+ }
+
+ for(i = mxtips + 1; i < 2 * mxtips; i++)
+ {
+ bitVectors[i] = (unsigned int *)rax_malloc(sizeof(unsigned int) * (size_t)(*vectorLength));
+ assert(bitVectors[i]);
+ }
+
+ return bitVectors;
+}
+
+void freeBitVectors(unsigned int **v, int n)
+{
+ int i;
+
+ for(i = 1; i < n; i++)
+ rax_free(v[i]);
+}
+
+
+static void newviewBipartitions(unsigned int **bitVectors,
+ nodeptr p,
+ int numsp,
+ unsigned int vectorLength,
+ int processID)
+{
+
+ if(isTip(p->number, numsp))
+ return;
+ {
+ nodeptr
+ q = p->next->back,
+ r = p->next->next->back;
+
+
+
+ unsigned int
+ *vector = bitVectors[p->number],
+ *left = bitVectors[q->number],
+ *right = bitVectors[r->number];
+ unsigned
+ int i;
+
+ assert(processID == 0);
+
+
+ while(!p->xBips)
+ {
+ if(!p->xBips)
+ getxnodeBips(p);
+ }
+
+ p->hash = q->hash ^ r->hash;
+
+ if(isTip(q->number, numsp) && isTip(r->number, numsp))
+ {
+ for(i = 0; i < vectorLength; i++)
+ vector[i] = left[i] | right[i];
+ }
+ else
+ {
+ if(isTip(q->number, numsp) || isTip(r->number, numsp))
+ {
+ if(isTip(r->number, numsp))
+ {
+ nodeptr tmp = r;
+ r = q;
+ q = tmp;
+ }
+
+ while(!r->xBips)
+ {
+ if(!r->xBips)
+ newviewBipartitions(bitVectors, r, numsp, vectorLength, processID);
+ }
+
+ for(i = 0; i < vectorLength; i++)
+ vector[i] = left[i] | right[i];
+ }
+ else
+ {
+ while((!r->xBips) || (!q->xBips))
+ {
+ if(!q->xBips)
+ newviewBipartitions(bitVectors, q, numsp, vectorLength, processID);
+ if(!r->xBips)
+ newviewBipartitions(bitVectors, r, numsp, vectorLength, processID);
+ }
+
+ for(i = 0; i < vectorLength; i++)
+ vector[i] = left[i] | right[i];
+ }
+
+ }
+ }
+}
+
+
+
+
+static void insertHashRF(unsigned int *bitVector,
+ pllHashTable *h,
+ unsigned int vectorLength,
+ int treeNumber,
+ int treeVectorLength,
+ hashNumberType position,
+ int support,
+ boolean computeWRF)
+{
+ pllBipartitionEntry * e;
+ pllHashItem * hitem;
+
+ if(h->Items[position] != NULL)
+ {
+ for (hitem = h->Items[position]; hitem; hitem = hitem->next)
+ {
+ e = (pllBipartitionEntry *)(hitem->data);
+
+ if (!memcmp(bitVector, e->bitVector, vectorLength * sizeof(unsigned int)))
+ {
+ e->treeVector[treeNumber / PLL_MASK_LENGTH] |= mask32[treeNumber % PLL_MASK_LENGTH];
+ if(computeWRF)
+ {
+ e->supportVector[treeNumber] = support;
+ assert(0 <= treeNumber && treeNumber < treeVectorLength * PLL_MASK_LENGTH);
+ }
+ return;
+ }
+ }
+ }
+ e = initEntry();
+
+ rax_posix_memalign ((void **)&(e->bitVector), PLL_BYTE_ALIGNMENT, (size_t)vectorLength * sizeof(unsigned int));
+ memset(e->bitVector, 0, vectorLength * sizeof(unsigned int));
+
+ e->treeVector = (unsigned int*)rax_calloc((size_t)treeVectorLength, sizeof(unsigned int));
+ if(computeWRF)
+ e->supportVector = (int*)rax_calloc((size_t)treeVectorLength * PLL_MASK_LENGTH, sizeof(int));
+
+ e->treeVector[treeNumber / PLL_MASK_LENGTH] |= mask32[treeNumber % PLL_MASK_LENGTH];
+ if(computeWRF)
+ {
+ e->supportVector[treeNumber] = support;
+
+ assert(0 <= treeNumber && treeNumber < treeVectorLength * PLL_MASK_LENGTH);
+ }
+
+ memcpy(e->bitVector, bitVector, sizeof(unsigned int) * vectorLength);
+
+ pllHashAdd (h, position, NULL, (void *)e);
+}
+
+
+
+void bitVectorInitravSpecial(unsigned int **bitVectors, nodeptr p, int numsp, unsigned int vectorLength, pllHashTable *h, int treeNumber, int function, branchInfo *bInf,
+ int *countBranches, int treeVectorLength, boolean traverseOnly, boolean computeWRF, int processID)
+{
+ if(isTip(p->number, numsp))
+ return;
+ else
+ {
+ nodeptr
+ q = p->next;
+
+ do
+ {
+ bitVectorInitravSpecial(bitVectors, q->back, numsp, vectorLength, h, treeNumber, function, bInf, countBranches, treeVectorLength, traverseOnly, computeWRF, processID);
+ q = q->next;
+ }
+ while(q != p);
+
+ newviewBipartitions(bitVectors, p, numsp, vectorLength, processID);
+
+ assert(p->xBips);
+
+ assert(!traverseOnly);
+
+ if(!(isTip(p->back->number, numsp)))
+ {
+ unsigned int
+ *toInsert = bitVectors[p->number];
+
+ hashNumberType
+ position = p->hash % h->size;
+
+ assert(!(toInsert[0] & 1));
+ assert(!computeWRF);
+
+ switch(function)
+ {
+ case PLL_BIPARTITIONS_RF:
+ insertHashRF(toInsert, h, vectorLength, treeNumber, treeVectorLength, position, 0, computeWRF);
+ *countBranches = *countBranches + 1;
+ break;
+ default:
+ assert(0);
+ }
+ }
+
+ }
+}
+
+double convergenceCriterion(pllHashTable *h, int mxtips)
+{
+ int
+ rf = 0;
+
+ unsigned int
+ k = 0,
+ entryCount = 0;
+
+ double
+ rrf;
+
+ pllHashItem * hitem;
+
+ for(k = 0, entryCount = 0; k < h->size; k++)
+ {
+ for (hitem = h->Items[k]; hitem; hitem = hitem->next)
+ {
+ pllBipartitionEntry *e = hitem->data;
+ unsigned int *vector = e->treeVector;
+
+ if(((vector[0] & 1) > 0) + ((vector[0] & 2) > 0) == 1)
+ rf++;
+
+ entryCount++;
+ e = e->next;
+ }
+ }
+
+ assert(entryCount == h->entries);
+ rrf = (double)rf/((double)(2 * (mxtips - 3)));
+ return rrf;
+}
diff --git a/src/cycle.h b/src/cycle.h
new file mode 100644
index 0000000..6b86140
--- /dev/null
+++ b/src/cycle.h
@@ -0,0 +1,516 @@
+/*
+ * Copyright (c) 2003, 2007-8 Matteo Frigo
+ * Copyright (c) 2003, 2007-8 Massachusetts Institute of Technology
+ *
+ * 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 AUTHORS OR COPYRIGHT HOLDERS BE
+ * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+ * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+ * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ *
+ */
+
+
+/* machine-dependent cycle counters code. Needs to be inlined. */
+
+/***************************************************************************/
+/* To use the cycle counters in your code, simply #include "cycle.h" (this
+ file), and then use the functions/macros:
+
+ ticks getticks(void);
+
+ ticks is an opaque typedef defined below, representing the current time.
+ You extract the elapsed time between two calls to gettick() via:
+
+ double elapsed(ticks t1, ticks t0);
+
+ which returns a double-precision variable in arbitrary units. You
+ are not expected to convert this into human units like seconds; it
+ is intended only for *comparisons* of time intervals.
+
+ (In order to use some of the OS-dependent timer routines like
+ Solaris' gethrtime, you need to paste the autoconf snippet below
+ into your configure.ac file and #include "config.h" before cycle.h,
+ or define the relevant macros manually if you are not using autoconf.)
+*/
+
+/***************************************************************************/
+/* This file uses macros like HAVE_GETHRTIME that are assumed to be
+ defined according to whether the corresponding function/type/header
+ is available on your system. The necessary macros are most
+ conveniently defined if you are using GNU autoconf, via the tests:
+
+ dnl ---------------------------------------------------------------------
+
+ AC_C_INLINE
+ AC_HEADER_TIME
+ AC_CHECK_HEADERS([sys/time.h c_asm.h intrinsics.h mach/mach_time.h])
+
+ AC_CHECK_TYPE([hrtime_t],[AC_DEFINE(HAVE_HRTIME_T, 1, [Define to 1 if hrtime_t is defined in <sys/time.h>])],,[#if HAVE_SYS_TIME_H
+#include <sys/time.h>
+#endif])
+
+ AC_CHECK_FUNCS([gethrtime read_real_time time_base_to_time clock_gettime mach_absolute_time])
+
+ dnl Cray UNICOS _rtc() (real-time clock) intrinsic
+ AC_MSG_CHECKING([for _rtc intrinsic])
+ rtc_ok=yes
+ AC_TRY_LINK([#ifdef HAVE_INTRINSICS_H
+#include <intrinsics.h>
+#endif], [_rtc()], [AC_DEFINE(HAVE__RTC,1,[Define if you have the UNICOS _rtc() intrinsic.])], [rtc_ok=no])
+ AC_MSG_RESULT($rtc_ok)
+
+ dnl ---------------------------------------------------------------------
+*/
+
+/***************************************************************************/
+
+#ifdef TIME_WITH_SYS_TIME
+# include <sys/time.h>
+# include <time.h>
+#else
+# ifdef HAVE_SYS_TIME_H
+# include <sys/time.h>
+# else
+# include <time.h>
+# endif
+#endif
+
+
+
+
+#define INLINE_ELAPSED(INL) static INL double elapsed(ticks t1, ticks t0) \
+{ \
+ return (double)t1 - (double)t0; \
+}
+
+/*----------------------------------------------------------------*/
+/* Solaris */
+#if defined(HAVE_GETHRTIME) && defined(HAVE_HRTIME_T) && !defined(HAVE_TICK_COUNTER)
+typedef hrtime_t ticks;
+
+#define getticks gethrtime
+
+INLINE_ELAPSED(inline)
+
+#define HAVE_TICK_COUNTER
+#endif
+
+/*----------------------------------------------------------------*/
+/* AIX v. 4+ routines to read the real-time clock or time-base register */
+#if defined(HAVE_READ_REAL_TIME) && defined(HAVE_TIME_BASE_TO_TIME) && !defined(HAVE_TICK_COUNTER)
+typedef timebasestruct_t ticks;
+
+static __inline ticks getticks(void)
+{
+ ticks t;
+ read_real_time(&t, TIMEBASE_SZ);
+ return t;
+}
+
+static __inline double elapsed(ticks t1, ticks t0) /* time in nanoseconds */
+{
+ time_base_to_time(&t1, TIMEBASE_SZ);
+ time_base_to_time(&t0, TIMEBASE_SZ);
+ return (((double)t1.tb_high - (double)t0.tb_high) * 1.0e9 +
+ ((double)t1.tb_low - (double)t0.tb_low));
+}
+
+#define HAVE_TICK_COUNTER
+#endif
+
+/*----------------------------------------------------------------*/
+/*
+ * PowerPC ``cycle'' counter using the time base register.
+ */
+#if ((((defined(__GNUC__) && (defined(__powerpc__) || defined(__ppc__))) || (defined(__MWERKS__) && defined(macintosh)))) || (defined(__IBM_GCC_ASM) && (defined(__powerpc__) || defined(__ppc__)))) && !defined(HAVE_TICK_COUNTER)
+typedef unsigned long long ticks;
+
+static __inline__ ticks getticks(void)
+{
+ unsigned int tbl, tbu0, tbu1;
+
+ do {
+ __asm__ __volatile__ ("mftbu %0" : "=r"(tbu0));
+ __asm__ __volatile__ ("mftb %0" : "=r"(tbl));
+ __asm__ __volatile__ ("mftbu %0" : "=r"(tbu1));
+ } while (tbu0 != tbu1);
+
+ return (((unsigned long long)tbu0) << 32) | tbl;
+}
+
+INLINE_ELAPSED(__inline__)
+
+#define HAVE_TICK_COUNTER
+#endif
+
+/* MacOS/Mach (Darwin) time-base register interface (unlike UpTime,
+ from Carbon, requires no additional libraries to be linked). */
+#if defined(HAVE_MACH_ABSOLUTE_TIME) && defined(HAVE_MACH_MACH_TIME_H) && !defined(HAVE_TICK_COUNTER)
+#include <mach/mach_time.h>
+typedef uint64_t ticks;
+#define getticks mach_absolute_time
+INLINE_ELAPSED(__inline__)
+#define HAVE_TICK_COUNTER
+#endif
+
+/*----------------------------------------------------------------*/
+/*
+ * Pentium cycle counter
+ */
+#if (defined(__GNUC__) || defined(__ICC)) && defined(__i386__) && !defined(HAVE_TICK_COUNTER)
+typedef unsigned long long ticks;
+
+static __inline__ ticks getticks(void)
+{
+ ticks ret;
+
+ __asm__ __volatile__("rdtsc": "=A" (ret));
+ /* no input, nothing else clobbered */
+ return ret;
+}
+
+INLINE_ELAPSED(__inline__)
+
+#define HAVE_TICK_COUNTER
+#define TIME_MIN 5000.0 /* unreliable pentium IV cycle counter */
+#endif
+
+/* Visual C++ -- thanks to Morten Nissov for his help with this */
+#if defined(_MSC_VER) && _MSC_VER >= 1200 && _M_IX86 >= 500 && !defined(HAVE_TICK_COUNTER)
+#include <windows.h>
+typedef LARGE_INTEGER ticks;
+#define RDTSC __asm __emit 0fh __asm __emit 031h /* hack for VC++ 5.0 */
+
+static __inline ticks getticks(void)
+{
+ ticks retval;
+
+ __asm {
+ RDTSC
+ mov retval.HighPart, edx
+ mov retval.LowPart, eax
+ }
+ return retval;
+}
+
+static __inline double elapsed(ticks t1, ticks t0)
+{
+ return (double)t1.QuadPart - (double)t0.QuadPart;
+}
+
+#define HAVE_TICK_COUNTER
+#define TIME_MIN 5000.0 /* unreliable pentium IV cycle counter */
+#endif
+
+/*----------------------------------------------------------------*/
+/*
+ * X86-64 cycle counter
+ */
+#if (defined(__GNUC__) || defined(__ICC) || defined(__SUNPRO_C)) && defined(__x86_64__) && !defined(HAVE_TICK_COUNTER)
+typedef unsigned long long ticks;
+
+static __inline__ ticks getticks(void)
+{
+ unsigned a, d;
+ __asm volatile("rdtsc" : "=a" (a), "=d" (d));
+ return ((ticks)a) | (((ticks)d) << 32);
+}
+
+INLINE_ELAPSED(__inline__)
+
+#define HAVE_TICK_COUNTER
+#endif
+
+/* PGI compiler, courtesy Cristiano Calonaci, Andrea Tarsi, & Roberto Gori.
+ NOTE: this code will fail to link unless you use the -Masmkeyword compiler
+ option (grrr). */
+#if defined(__PGI) && defined(__x86_64__) && !defined(HAVE_TICK_COUNTER)
+typedef unsigned long long ticks;
+static ticks getticks(void)
+{
+ asm(" rdtsc; shl $0x20,%rdx; mov %eax,%eax; or %rdx,%rax; ");
+}
+INLINE_ELAPSED(__inline__)
+#define HAVE_TICK_COUNTER
+#endif
+
+/* Visual C++, courtesy of Dirk Michaelis */
+#if defined(_MSC_VER) && _MSC_VER >= 1400 && (defined(_M_AMD64) || defined(_M_X64)) && !defined(HAVE_TICK_COUNTER)
+
+#include <intrin.h>
+#pragma intrinsic(__rdtsc)
+typedef unsigned __int64 ticks;
+#define getticks __rdtsc
+INLINE_ELAPSED(__inline)
+
+#define HAVE_TICK_COUNTER
+#endif
+
+/*----------------------------------------------------------------*/
+/*
+ * IA64 cycle counter
+ */
+
+/* intel's icc/ecc compiler */
+#if (defined(__EDG_VERSION) || defined(__ECC)) && defined(__ia64__) && !defined(HAVE_TICK_COUNTER)
+typedef unsigned long ticks;
+#include <ia64intrin.h>
+
+static __inline__ ticks getticks(void)
+{
+ return __getReg(_IA64_REG_AR_ITC);
+}
+
+INLINE_ELAPSED(__inline__)
+
+#define HAVE_TICK_COUNTER
+#endif
+
+/* gcc */
+#if defined(__GNUC__) && defined(__ia64__) && !defined(HAVE_TICK_COUNTER)
+typedef unsigned long ticks;
+
+static __inline__ ticks getticks(void)
+{
+ ticks ret;
+
+ __asm__ __volatile__ ("mov %0=ar.itc" : "=r"(ret));
+ return ret;
+}
+
+INLINE_ELAPSED(__inline__)
+
+#define HAVE_TICK_COUNTER
+#endif
+
+/* HP/UX IA64 compiler, courtesy Teresa L. Johnson: */
+#if defined(__hpux) && defined(__ia64) && !defined(HAVE_TICK_COUNTER)
+#include <machine/sys/inline.h>
+typedef unsigned long ticks;
+
+static inline ticks getticks(void)
+{
+ ticks ret;
+
+ ret = _Asm_mov_from_ar (_AREG_ITC);
+ return ret;
+}
+
+INLINE_ELAPSED(inline)
+
+#define HAVE_TICK_COUNTER
+#endif
+
+/* Microsoft Visual C++ */
+#if defined(_MSC_VER) && defined(_M_IA64) && !defined(HAVE_TICK_COUNTER)
+typedef unsigned __int64 ticks;
+
+# ifdef __cplusplus
+extern "C"
+# endif
+ticks __getReg(int whichReg);
+#pragma intrinsic(__getReg)
+
+static __inline ticks getticks(void)
+{
+ volatile ticks temp;
+ temp = __getReg(3116);
+ return temp;
+}
+
+INLINE_ELAPSED(inline)
+
+#define HAVE_TICK_COUNTER
+#endif
+
+/*----------------------------------------------------------------*/
+/*
+ * PA-RISC cycle counter
+ */
+#if defined(__hppa__) || defined(__hppa) && !defined(HAVE_TICK_COUNTER)
+typedef unsigned long ticks;
+
+# ifdef __GNUC__
+static __inline__ ticks getticks(void)
+{
+ ticks ret;
+
+ __asm__ __volatile__("mfctl 16, %0": "=r" (ret));
+ /* no input, nothing else clobbered */
+ return ret;
+}
+# else
+# include <machine/inline.h>
+static inline unsigned long getticks(void)
+{
+ register ticks ret;
+ _MFCTL(16, ret);
+ return ret;
+}
+# endif
+
+INLINE_ELAPSED(inline)
+
+#define HAVE_TICK_COUNTER
+#endif
+
+/*----------------------------------------------------------------*/
+/* S390, courtesy of James Treacy */
+#if defined(__GNUC__) && defined(__s390__) && !defined(HAVE_TICK_COUNTER)
+typedef unsigned long long ticks;
+
+static __inline__ ticks getticks(void)
+{
+ ticks cycles;
+ __asm__("stck 0(%0)" : : "a" (&(cycles)) : "memory", "cc");
+ return cycles;
+}
+
+INLINE_ELAPSED(__inline__)
+
+#define HAVE_TICK_COUNTER
+#endif
+/*----------------------------------------------------------------*/
+#if defined(__GNUC__) && defined(__alpha__) && !defined(HAVE_TICK_COUNTER)
+/*
+ * The 32-bit cycle counter on alpha overflows pretty quickly,
+ * unfortunately. A 1GHz machine overflows in 4 seconds.
+ */
+typedef unsigned int ticks;
+
+static __inline__ ticks getticks(void)
+{
+ unsigned long cc;
+ __asm__ __volatile__ ("rpcc %0" : "=r"(cc));
+ return (cc & 0xFFFFFFFF);
+}
+
+INLINE_ELAPSED(__inline__)
+
+#define HAVE_TICK_COUNTER
+#endif
+
+/*----------------------------------------------------------------*/
+#if defined(__GNUC__) && defined(__sparc_v9__) && !defined(HAVE_TICK_COUNTER)
+typedef unsigned long ticks;
+
+static __inline__ ticks getticks(void)
+{
+ ticks ret;
+ __asm__ __volatile__("rd %%tick, %0" : "=r" (ret));
+ return ret;
+}
+
+INLINE_ELAPSED(__inline__)
+
+#define HAVE_TICK_COUNTER
+#endif
+
+/*----------------------------------------------------------------*/
+#if (defined(__DECC) || defined(__DECCXX)) && defined(__alpha) && defined(HAVE_C_ASM_H) && !defined(HAVE_TICK_COUNTER)
+# include <c_asm.h>
+typedef unsigned int ticks;
+
+static __inline ticks getticks(void)
+{
+ unsigned long cc;
+ cc = asm("rpcc %v0");
+ return (cc & 0xFFFFFFFF);
+}
+
+INLINE_ELAPSED(__inline)
+
+#define HAVE_TICK_COUNTER
+#endif
+/*----------------------------------------------------------------*/
+/* SGI/Irix */
+#if defined(HAVE_CLOCK_GETTIME) && defined(CLOCK_SGI_CYCLE) && !defined(HAVE_TICK_COUNTER)
+typedef struct timespec ticks;
+
+static inline ticks getticks(void)
+{
+ struct timespec t;
+ clock_gettime(CLOCK_SGI_CYCLE, &t);
+ return t;
+}
+
+static inline double elapsed(ticks t1, ticks t0)
+{
+ return ((double)t1.tv_sec - (double)t0.tv_sec) * 1.0E9 +
+ ((double)t1.tv_nsec - (double)t0.tv_nsec);
+}
+#define HAVE_TICK_COUNTER
+#endif
+
+/*----------------------------------------------------------------*/
+/* Cray UNICOS _rtc() intrinsic function */
+#if defined(HAVE__RTC) && !defined(HAVE_TICK_COUNTER)
+#ifdef HAVE_INTRINSICS_H
+# include <intrinsics.h>
+#endif
+
+typedef long long ticks;
+
+#define getticks _rtc
+
+INLINE_ELAPSED(inline)
+
+#define HAVE_TICK_COUNTER
+#endif
+
+/*----------------------------------------------------------------*/
+/* MIPS ZBus */
+#ifdef HAVE_MIPS_ZBUS_TIMER
+#if defined(__mips__) && !defined(HAVE_TICK_COUNTER)
+#include <sys/mman.h>
+#include <unistd.h>
+#include <fcntl.h>
+
+typedef uint64_t ticks;
+
+static inline ticks getticks(void)
+{
+ static uint64_t* addr = 0;
+
+ if (addr == 0)
+ {
+ uint32_t rq_addr = 0x10030000;
+ int fd;
+ int pgsize;
+
+ pgsize = getpagesize();
+ fd = open ("/dev/mem", O_RDONLY | O_SYNC, 0);
+ if (fd < 0) {
+ perror("open");
+ return NULL;
+ }
+ addr = mmap(0, pgsize, PROT_READ, MAP_SHARED, fd, rq_addr);
+ close(fd);
+ if (addr == (uint64_t *)-1) {
+ perror("mmap");
+ return NULL;
+ }
+ }
+
+ return *addr;
+}
+
+INLINE_ELAPSED(inline)
+
+#define HAVE_TICK_COUNTER
+#endif
+#endif /* HAVE_MIPS_ZBUS_TIMER */
diff --git a/src/errcodes.h b/src/errcodes.h
new file mode 100644
index 0000000..577a0b0
--- /dev/null
+++ b/src/errcodes.h
@@ -0,0 +1,68 @@
+/**
+ * PLL (version 1.0.0) a software library for phylogenetic inference
+ * Copyright (C) 2013 Tomas Flouri and Alexandros Stamatakis
+ *
+ * Derived from
+ * RAxML-HPC, a program for sequential and parallel estimation of phylogenetic
+ * trees by Alexandros Stamatakis
+ *
+ * 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 3 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, see <http://www.gnu.org/licenses/>.
+ *
+ * For any other enquiries send an Email to Tomas Flouri
+ * Tomas.Flouri at h-its.org
+ *
+ * When publishing work that uses PLL please cite PLL
+ *
+ * @file errcodes.h
+ */
+#ifndef ERRCODES_H
+#define ERRCODES_H
+
+#define PLL_ERROR_FILE_OPEN 1 /**< Error while opening file */
+#define PLL_ERROR_INVALID_FILETYPE 2 /**< Invalid fileType given at pllParseAlignmeFile */
+
+#define PLL_NNI_P_TIP 1 << 0 /**< Node p is a tip */
+#define PLL_NNI_Q_TIP 1 << 1 /**< Node p->back is a tip */
+
+#define PLL_PARTITION_OUT_OF_BOUNDS 1 << 0 /**< Trying to access a partition index that is out of bounds */
+#define PLL_BASE_FREQUENCIES_DO_NOT_SUM_TO_1 1 << 1 /**< base frequencies don't sum to 1.0 */
+
+#define PLL_LINKAGE_LIST_OUT_OF_BOUNDS 1 << 0 /**< trying to link a partition index that is out of bounds */
+
+#define PLL_SUBSTITUTION_RATE_OUT_OF_BOUNDS 1 << 0 /**< trying to set a substitution rate to a value that is out of bounds */
+#define PLL_INVALID_Q_MATRIX_SYMMETRY 1 << 1 /**< specifyng an invalid parameter symmetry in the Q matrix */
+#define PLL_Q_MATRIX_SYMMETRY_OUT_OF_BOUNDS 1 << 2 /**<specifying a Q matrix symmetry that is out of bounds */
+
+#define PLL_UNKNOWN_MOLECULAR_DATA_TYPE 1 << 0 /**<PLL is trying to do something for an unknown data type */
+
+#define PLL_INCONSISTENT_SUBST_RATE_OPTIMIZATION_SETTING 1 << 0 /**<PLL detected an inconsistent setting for the Q matrix rate optimization */
+#define PLL_INCONSISTENT_Q_MATRIX_SYMMETRIES_ACROSS_LINKED_PARTITIONS 1 << 1 /**<Q matrix symmetry vector is not identical for linked partitions */
+#define PLL_INCONSISTENT_Q_MATRIX_ENTRIES_ACROSS_LINKED_PARTITIONS 1 << 2 /**<Q matrix entries are not identical for linked partitions */
+#define PLL_INCONSISTENT_ALPHA_STATES_ACROSS_LINKED_PARTITIONS 1 << 3 /**<alpha states are not identical across linked partitions */
+#define PLL_INCONSISTENT_ALPHA_VALUES_ACROSS_LINKED_PARTITIONS 1 << 4 /**<alpha values are not identical across linked partitions */
+#define PLL_INCONSISTENT_FREQUENCY_STATES_ACROSS_LINKED_PARTITIONS 1 << 5 /**<frequency states are not identical across linked partitions */
+#define PLL_INCONSISTENT_FREQUENCY_VALUES_ACROSS_LINKED_PARTITIONS 1 << 6 /**<frequency values are not identical across linked partitions */
+
+#define PLL_NEWICK_ROOTED_TREE 1 << 0 /**< @brief Binary root detected */
+#define PLL_NEWICK_BAD_STRUCTURE 1 << 1 /**< @brief Errornous tree detected */
+
+#define PLL_TBR_INVALID_NODE 1 /**< @brief Node p does not belong to the tree */
+#define PLL_TBR_NOT_INNER_BRANCH 2 /**< @brief Selected branch is connecting 2 tips */
+#define PLL_TBR_MISSING_FREE_BRANCH 3 /**< @brief There is no missing branch for joining the subtrees */
+
+#define PLL_ERROR_PHYLIP_HEADER_SYNTAX 5
+#define PLL_ERROR_PHYLIP_BODY_SYNTAX 6
+#define PLL_ERROR_FASTA_SYNTAX 7
+
+#endif
diff --git a/src/evaluateGenericSpecial.c b/src/evaluateGenericSpecial.c
new file mode 100644
index 0000000..ba9fa5c
--- /dev/null
+++ b/src/evaluateGenericSpecial.c
@@ -0,0 +1,3322 @@
+/**
+ * PLL (version 1.0.0) a software library for phylogenetic inference
+ * Copyright (C) 2013 Tomas Flouri and Alexandros Stamatakis
+ *
+ * Derived from
+ * RAxML-HPC, a program for sequential and parallel estimation of phylogenetic
+ * trees by Alexandros Stamatakis
+ *
+ * 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 3 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, see <http://www.gnu.org/licenses/>.
+ *
+ * For any other enquiries send an Email to Tomas Flouri
+ * Tomas.Flouri at h-its.org
+ *
+ * When publishing work that uses PLL please cite PLL
+ *
+ * @file evaluateGenericSpecial.c
+ *
+ * @brief Functions for computing the log likelihood at a given branch of the tree (i.e. a virtual root that is placed at this branch)
+ */
+#include "mem_alloc.h"
+
+#ifndef WIN32
+#include <unistd.h>
+#endif
+
+#include <math.h>
+#include <time.h>
+#include <stdlib.h>
+#include <stdio.h>
+#include <ctype.h>
+#include <string.h>
+#include <assert.h>
+
+#include "pll.h"
+#include "pllInternal.h"
+
+#ifdef __MIC_NATIVE
+#include "mic_native.h"
+#endif
+
+/* the set of functions in here computes the log likelihood at a given branch (the virtual root of a tree) */
+
+/* includes for using SSE3 intrinsics */
+
+#ifdef __SSE3
+#include <xmmintrin.h>
+#include <pmmintrin.h>
+/*#include <tmmintrin.h>*/
+#endif
+
+
+/** @defgroup evaluateLikelihoodGroup Likelihood evaluation
+
+ This set of functions deals with the evaluation of likelihood for the current topology
+*/
+
+
+
+
+
+
+
+/* below are the function headers for unreadeble highly optimized versions of the above functions
+ for DNA and protein data that also use SSE3 intrinsics and implement some memory saving tricks.
+ The actual functions can be found at the end of this source file.
+ All other likelihood function implementation files:
+
+ newviewGenericSpacial.c
+ makenewzSpecial.c
+ evaluatePartialGenericSpecial.c
+
+ are also structured like this
+
+ To decide which set of function implementations to use you will have to undefine or define _OPTIMIZED_FUNCTIONS
+ in the Makefile
+ */
+#if (defined(__SSE3) || defined(__AVX))
+
+static double evaluateGTRGAMMAPROT_LG4(int *ex1, int *ex2, int *wptr,
+ double *x1, double *x2,
+ double *tipVector[4],
+ unsigned char *tipX1, int n, double *diagptable, const boolean fastScaling,
+ double * lg4_weights);
+
+/* GAMMA for proteins with memory saving */
+
+static double evaluateGTRGAMMAPROT_GAPPED_SAVE (const boolean fastScaling, int *ex1, int *ex2, int *wptr,
+ double *x1, double *x2,
+ double *tipVector,
+ unsigned char *tipX1, int n, double *diagptable,
+ double *x1_gapColumn, double *x2_gapColumn, unsigned int *x1_gap, unsigned int *x2_gap);
+
+
+/* GAMMA for proteins */
+
+static double evaluateGTRGAMMAPROT (const boolean fastScaling, int *ex1, int *ex2, int *wptr,
+ double *x1, double *x2,
+ double *tipVector,
+ unsigned char *tipX1, int n, double *diagptable);
+
+/* CAT for proteins */
+
+static double evaluateGTRCATPROT (const boolean fastScaling, int *ex1, int *ex2, int *cptr, int *wptr,
+ double *x1, double *x2, double *tipVector,
+ unsigned char *tipX1, int n, double *diagptable_start);
+
+
+/* CAT for proteins with memory saving */
+
+static double evaluateGTRCATPROT_SAVE (const boolean fastScaling, int *ex1, int *ex2, int *cptr, int *wptr,
+ double *x1, double *x2, double *tipVector,
+ unsigned char *tipX1, int n, double *diagptable_start,
+ double *x1_gapColumn, double *x2_gapColumn, unsigned int *x1_gap, unsigned int *x2_gap);
+
+/* analogous DNA fuctions */
+
+static double evaluateGTRCAT_SAVE (const boolean fastScaling, int *ex1, int *ex2, int *cptr, int *wptr,
+ double *x1_start, double *x2_start, double *tipVector,
+ unsigned char *tipX1, int n, double *diagptable_start,
+ double *x1_gapColumn, double *x2_gapColumn, unsigned int *x1_gap, unsigned int *x2_gap);
+
+static double evaluateGTRGAMMA_GAPPED_SAVE(const boolean fastScaling, int *ex1, int *ex2, int *wptr,
+ double *x1_start, double *x2_start,
+ double *tipVector,
+ unsigned char *tipX1, const int n, double *diagptable,
+ double *x1_gapColumn, double *x2_gapColumn, unsigned int *x1_gap, unsigned int *x2_gap);
+
+static double evaluateGTRGAMMA(const boolean fastScaling, int *ex1, int *ex2, int *wptr,
+ double *x1_start, double *x2_start,
+ double *tipVector,
+ unsigned char *tipX1, const int n, double *diagptable);
+
+
+static double evaluateGTRCAT (const boolean fastScaling, int *ex1, int *ex2, int *cptr, int *wptr,
+ double *x1_start, double *x2_start, double *tipVector,
+ unsigned char *tipX1, int n, double *diagptable_start);
+
+
+#endif
+
+#if (defined(__AVX) || defined(__SSE3))
+static double evaluateGTRGAMMA_BINARY(int *ex1, int *ex2, int *wptr,
+ double *x1_start, double *x2_start,
+ double *tipVector,
+ unsigned char *tipX1, const int n, double *diagptable, const boolean fastScaling);
+
+static double evaluateGTRCAT_BINARY (int *ex1, int *ex2, int *cptr, int *wptr,
+ double *x1_start, double *x2_start, double *tipVector,
+ unsigned char *tipX1, int n, double *diagptable_start, const boolean fastScaling);
+#endif
+
+
+/*
+ global variables of pthreads version, reductionBuffer is the global array
+ that is used for implementing deterministic reduction operations, that is,
+ the total log likelihood over the partial log lieklihoods for the sites that each thread has computed
+
+ NumberOfThreads is just the number of threads.
+
+ Note the volatile modifier here, that guarantees that the compiler will not do weird optimizations
+ rearraengements of the code accessing those variables, because it does not know that several concurrent threads
+ will access those variables simulatenously
+
+ UPDATE: reductionBuffer is now merged with globalResult
+ */
+
+
+/* a pre-computed 32-bit integer mask */
+
+extern const unsigned int mask32[32];
+
+/* the function below computes the P matrix from the decomposition of the Q matrix and the respective rate categories for a single partition */
+
+/** @brief Compute the diagonal of P matrix for a specific edge
+
+ This function computes the diagonal of P matrix for a branch of length \a z
+ from the decomposition of the Q matrix specified in \a EIGN and the respective
+ rate categories \a rptr for a single partition. The diagonal is then stored in
+ \a diagptable.
+
+ @param z Length of edge
+ @param states Number of states
+ @param numberOfCategories Number of categories in the rate heterogeneity rate arrays
+ @param rptr Rate heterogeneity rate arrays
+ @param EIGN Eigenvalues
+ @param diagptable Where to store the resulting P matrix
+*/
+static void calcDiagptable(const double z, const int states, const int numberOfCategories, const double *rptr, const double *EIGN, double *diagptable)
+{
+ int
+ i,
+ l;
+
+ double
+ lz,
+ *lza = (double *)rax_malloc(sizeof(double) * states);
+
+ /* transform the root branch length to the log and check if it is not too small */
+
+ if (z < PLL_ZMIN)
+ lz = log(PLL_ZMIN);
+ else
+ lz = log(z);
+
+ /* do some pre-computations to avoid redundant computations further below */
+
+ for(i = 1; i < states; i++)
+ lza[i] = EIGN[i] * lz;
+
+ /* loop over the number of per-site or discrete gamma rate categories */
+
+ for(i = 0; i < numberOfCategories; i++)
+ {
+ /*
+ diagptable is a pre-allocated array of doubles that stores the P-Matrix
+ the first entry is always 1.0
+ */
+ diagptable[i * states] = 1.0;
+
+ /* compute the P matrix for all remaining states of the model */
+
+ for(l = 1; l < states; l++)
+ diagptable[i * states + l] = exp(rptr[i] * lza[l]);
+ }
+
+ rax_free(lza);
+}
+
+/** @brief Compute the diagonal of P matrix for a specific edge for the LG4 model
+
+ This function computes the diagonal of P matrix for a branch of length \a z
+ from the decomposition of the 4 LG4 Q matrices specified in \a EIGN and the respective
+ rate categories \a rptr for a single partition. The diagonal is then stored in
+ \a diagptable.
+
+ @param z
+ Length of edge
+
+ @param states
+ Number of states
+
+ @param numberOfCategories
+ Number of categories in the rate heterogeneity rate arrays
+
+ @param rptr
+ Rate heterogeneity rate arrays
+
+ @param EIGN
+ Eigenvalues of the 4 Q matrices
+
+ @param diagptable
+ Where to store the resulting P matrix
+
+ @param numStates
+ Number of states
+*/
+static void calcDiagptableFlex_LG4(double z, int numberOfCategories, double *rptr, double *EIGN[4], double *diagptable, const int numStates)
+{
+ int
+ i,
+ l;
+
+ double
+ lz;
+
+ assert(numStates <= 64);
+
+ if (z < PLL_ZMIN)
+ lz = log(PLL_ZMIN);
+ else
+ lz = log(z);
+
+ for(i = 0; i < numberOfCategories; i++)
+ {
+ diagptable[i * numStates + 0] = 1.0;
+
+ for(l = 1; l < numStates; l++)
+ diagptable[i * numStates + l] = exp(rptr[i] * EIGN[i][l] * lz);
+ }
+}
+
+static void ascertainmentBiasSequence(unsigned char tip[32], int numStates)
+{
+ assert(numStates <= 32 && numStates > 1);
+
+ switch(numStates)
+ {
+ case 2:
+ tip[0] = 1;
+ tip[1] = 2;
+ break;
+ case 4:
+ tip[0] = 1;
+ tip[1] = 2;
+ tip[2] = 4;
+ tip[3] = 8;
+ break;
+ default:
+ {
+ int
+ i;
+ for(i = 0; i < numStates; i++)
+ {
+ tip[i] = i;
+ //printf("%c ", inverseMeaningPROT[i]);
+ }
+ //printf("\n");
+ }
+ break;
+ }
+}
+
+static double evaluateCatAsc(int *ex1, int *ex2,
+ double *x1, double *x2,
+ double *tipVector,
+ unsigned char *tipX1, int n, double *diagptable, const int numStates)
+{
+ double
+ exponent,
+ sum = 0.0,
+ unobserved,
+ term,
+ *left,
+ *right;
+
+ int
+ i,
+ l;
+
+ unsigned char
+ tip[32];
+
+ ascertainmentBiasSequence(tip, numStates);
+
+ if(tipX1)
+ {
+ for (i = 0; i < n; i++)
+ {
+ left = &(tipVector[numStates * tip[i]]);
+ right = &(x2[i * numStates]);
+
+ term = 0.0;
+
+ for(l = 0; l < numStates; l++)
+ term += left[l] * right[l] * diagptable[l];
+
+ /* assumes that pow behaves as expected/specified for underflows
+ from the man page:
+ If result underflows, and is not representable,
+ a range error occurs and 0.0 is returned.
+ */
+
+ exponent = pow(PLL_MINLIKELIHOOD, (double)ex2[i]);
+
+ unobserved = fabs(term) * exponent;
+
+#ifdef _DEBUG_ASC
+ if(ex2[i] > 0)
+ {
+ printf("s %d\n", ex2[i]);
+ assert(0);
+ }
+#endif
+
+ sum += unobserved;
+ }
+ }
+ else
+ {
+ for (i = 0; i < n; i++)
+ {
+ term = 0.0;
+
+ left = &(x1[i * numStates]);
+ right = &(x2[i * numStates]);
+
+ for(l = 0; l < numStates; l++)
+ term += left[l] * right[l] * diagptable[l];
+
+ /* assumes that pow behaves as expected/specified for underflows
+ from the man page:
+ If result underflows, and is not representable,
+ a range error occurs and 0.0 is returned.
+ */
+
+ exponent = pow(PLL_MINLIKELIHOOD, (double)(ex1[i] + ex2[i]));
+
+ unobserved = fabs(term) * exponent;
+
+#ifdef _DEBUG_ASC
+ if(ex2[i] > 0 || ex1[i] > 0)
+ {
+ printf("s %d %d\n", ex1[i], ex2[i]);
+ assert(0);
+ }
+#endif
+
+ sum += unobserved;
+ }
+ }
+
+ return sum;
+}
+
+
+static double evaluateGammaAsc(int *ex1, int *ex2,
+ double *x1, double *x2,
+ double *tipVector,
+ unsigned char *tipX1, int n, double *diagptable, const int numStates)
+{
+ double
+ exponent,
+ sum = 0.0,
+ unobserved,
+ term,
+ *left,
+ *right;
+
+ int
+ i,
+ j,
+ l;
+
+ const int
+ gammaStates = numStates * 4;
+
+ unsigned char
+ tip[32];
+
+ ascertainmentBiasSequence(tip, numStates);
+
+ if(tipX1)
+ {
+ for (i = 0; i < n; i++)
+ {
+ left = &(tipVector[numStates * tip[i]]);
+
+ for(j = 0, term = 0.0; j < 4; j++)
+ {
+ right = &(x2[gammaStates * i + numStates * j]);
+
+ for(l = 0; l < numStates; l++)
+ term += left[l] * right[l] * diagptable[j * numStates + l];
+ }
+
+ /* assumes that pow behaves as expected/specified for underflows
+ from the man page:
+ If result underflows, and is not representable,
+ a range error occurs and 0.0 is returned.
+ */
+
+ exponent = pow(PLL_MINLIKELIHOOD, (double)ex2[i]);
+
+ unobserved = fabs(term) * exponent;
+
+#ifdef _DEBUG_ASC
+ if(ex2[i] > 0)
+ {
+ printf("s %d\n", ex2[i]);
+ assert(0);
+ }
+#endif
+
+ sum += unobserved;
+ }
+ }
+ else
+ {
+ for (i = 0; i < n; i++)
+ {
+
+ for(j = 0, term = 0.0; j < 4; j++)
+ {
+ left = &(x1[gammaStates * i + numStates * j]);
+ right = &(x2[gammaStates * i + numStates * j]);
+
+ for(l = 0; l < numStates; l++)
+ term += left[l] * right[l] * diagptable[j * numStates + l];
+ }
+
+ /* assumes that pow behaves as expected/specified for underflows
+ from the man page:
+ If result underflows, and is not representable,
+ a range error occurs and 0.0 is returned.
+ */
+
+ exponent = pow(PLL_MINLIKELIHOOD, (double)(ex1[i] + ex2[i]));
+
+ unobserved = fabs(term) * exponent;
+
+#ifdef _DEBUG_ASC
+ if(ex2[i] > 0 || ex1[i] > 0)
+ {
+ printf("s %d %d\n", ex1[i], ex2[i]);
+ assert(0);
+ }
+#endif
+
+ sum += unobserved;
+ }
+ }
+
+ return sum;
+}
+
+
+/** @ingroup evaluateLikelihoodGroup
+ @brief A generic (and slow) implementation of log likelihood evaluation of a tree using the GAMMA model of rate heterogeneity
+
+ Computes the log likelihood of the topology for a specific partition, assuming
+ that the GAMMA model of rate heterogeneity is used. The likelihood is computed at
+ a virtual root placed at an edge whose two end-points (nodes) have the conditional
+ likelihood vectors \a x1 and \a x2.
+ Furthermore, if \a getPerSiteLikelihoods is set to \b PLL_TRUE, then the log
+ likelihood for each site is also computed and stored at the corresponding position
+ in the array \a perSiteLikelihoods.
+
+ @param fastScaling
+ If set to \b PLL_FALSE, then the likelihood of each site is also multiplied by \a log(PLL_MINLIKELIHOOD) times the number
+ of times it has been scaled down
+
+ @param ex1
+ An array that holds how many times a site has been scaled and points at the entries for node \a p. This
+ parameter is used if \a fastScaling is set to \b PLL_FALSE.
+
+ @param ex2
+ An array that holds how many times a site has been scaled and points at the entries for node \a q. This
+ parameter is used if \a fastScaling is set to \b PLL_TRUE.
+
+ @param wptr
+ Array holding the weight for each site in the compressed partition alignment
+
+ @param x1_start
+ Conditional likelihood vectors for one of the two end-points of the specific edge for which we are evaluating the likelihood
+
+ @param x2_start
+ Conditional likelihood vectors for the other end-point of the specific edge for which we are evaluating the likelihood
+
+ @param tipVector
+ Precomputed table where the number of rows is equal to the number of possible basepair characters for the current data
+ type, i.e.16 for DNA and 23 for AA, and each rows contains \a states elements each of which contains transition
+ probabilities computed from the eigenvectors of the decomposed Q matrix.
+
+ @param tipX1
+ If one of the two end-points (nodes) of the specific edge (for which we are evaluating the likelihood) is a tip, then
+ this holds a pointer to the sequence data (basepairs) already converted in the internal integer representation, and \a x2
+ holds the conditional likelihood vectors for the internal node.
+
+ @param n
+ Number of sites for which we are doing the evaluation. For the single-thread version this is the
+ number of sites in the current partition, for multi-threads this is the number of sites assigned
+ to the running thread from the current partition.
+
+ @param diagptable
+ Start of the array that contains the P-Matrix diagonal of the specific edge for which we are
+ evaluating the likehood, and for each category of the GAMMA model
+
+ @param states
+ Number of states (4 for DNA, 20 for AA)
+
+ @param perSiteLikelihoods
+ Array to store per-site log likelihoods if \a getPerSiteLikelihoods is set to \b PLL_TRUE
+
+ @param getPerSiteLikelihoods
+ If set to \b PLL_TRUE then per-site log likelihoods are also computed and stored in \a perSiteLikelihoods
+
+ @return
+ The evaluated log likelihood of the tree topology
+*/
+static double evaluateGAMMA_FLEX(const boolean fastScaling, int *ex1, int *ex2, int *wptr,
+ double *x1_start, double *x2_start,
+ double *tipVector,
+ unsigned char *tipX1, const int n, double *diagptable, const int states, double *perSiteLikelihoods, boolean getPerSiteLikelihoods)
+{
+ double
+ sum = 0.0,
+ term,
+ *x1,
+ *x2;
+
+ int
+ i,
+ j,
+ k;
+
+ /* span is the offset within the likelihood array at an inner node that gets us from the values
+ of site i to the values of site i + 1 */
+
+ const int
+ span = states * 4;
+
+
+ /* we distingusih between two cases here: one node of the two nodes defining the branch at which we put the virtual root is
+ a tip. Both nodes can not be tips because we do not allow for two-taxon trees ;-)
+ Nota that, if a node is a tip, this will always be tipX1. This is done for code simplicity and the flipping of the nodes
+ is done before when we compute the traversal descriptor.
+ */
+
+ /* the left node is a tip */
+ if(tipX1)
+ {
+ /* loop over the sites of this partition */
+ for (i = 0; i < n; i++)
+ {
+ /* access pre-computed tip vector values via a lookup table */
+ x1 = &(tipVector[states * tipX1[i]]);
+ /* access the other(inner) node at the other end of the branch */
+ x2 = &(x2_start[span * i]);
+
+ /* loop over GAMMA rate categories, hard-coded as 4 in RAxML */
+ for(j = 0, term = 0.0; j < 4; j++)
+ /* loop over states and multiply them with the P matrix */
+ for(k = 0; k < states; k++)
+ term += x1[k] * x2[j * states + k] * diagptable[j * states + k];
+
+ /* take the log of the likelihood and multiply the per-gamma rate likelihood by 1/4.
+ Under the GAMMA model the 4 discrete GAMMA rates all have the same probability
+ of 0.25 */
+
+ if(!fastScaling)
+ term = log(0.25 * fabs(term)) + (ex2[i] * log(PLL_MINLIKELIHOOD));
+ else
+ term = log(0.25 * fabs(term));
+
+ /* if required get the per-site log likelihoods.
+ note that these are the plain per site log-likes, not
+ multiplied with the pattern weight value */
+
+ if(getPerSiteLikelihoods)
+ perSiteLikelihoods[i] = term;
+
+ sum += wptr[i] * term;
+ }
+ }
+ else
+ {
+ for (i = 0; i < n; i++)
+ {
+ /* same as before, only that now we access two inner likelihood vectors x1 and x2 */
+
+ x1 = &(x1_start[span * i]);
+ x2 = &(x2_start[span * i]);
+
+ for(j = 0, term = 0.0; j < 4; j++)
+ for(k = 0; k < states; k++)
+ term += x1[j * states + k] * x2[j * states + k] * diagptable[j * states + k];
+
+ if(!fastScaling)
+ term = log(0.25 * fabs(term)) + ((ex1[i] + ex2[i])*log(PLL_MINLIKELIHOOD));
+ else
+ term = log(0.25 * fabs(term));
+
+ if(getPerSiteLikelihoods)
+ perSiteLikelihoods[i] = term;
+
+ sum += wptr[i] * term;
+ }
+ }
+
+ return sum;
+}
+
+#if (defined(__SSE3) || defined(__AVX))
+/** @ingroup evaluateLikelihoodGroup
+ @brief Memory saving version of the generic (and slow) implementation of log likelihood evaluation of a tree using the GAMMA model of rate heterogeneity
+
+ Computes the log likelihood of the topology for a specific partition, assuming
+ that the GAMMA model of rate heterogeneity is used and memory saving technique
+ is enabled. The likelihood is computed at a virtual root placed at an edge whose
+ two end-points (nodes) have the conditional likelihood vectors \a x1 and \a x2.
+ Furthermore, if \a getPerSiteLikelihoods is set to \b PLL_TRUE, then the log
+ likelihood for each site is also computed and stored at the corresponding position
+ in the array \a perSiteLikelihoods.
+
+ @param fastScaling
+ If set to \b PLL_FALSE, then the likelihood of each site is also multiplied by \a log(PLL_MINLIKELIHOOD) times the number
+ of times it has been scaled down
+
+ @param ex1
+ An array that holds how many times a site has been scaled and points at the entries for node \a p. This
+ parameter is used if \a fastScaling is set to \b PLL_FALSE.
+
+ @param ex2
+ An array that holds how many times a site has been scaled and points at the entries for node \a q. This
+ parameter is used if \a fastScaling is set to \b PLL_TRUE.
+
+ @param wptr
+ Array holding the weight for each site in the compressed partition alignment
+
+ @param x1_start
+ Conditional likelihood vectors for one of the two end-points of the specific edge for which we are evaluating the likelihood
+
+ @param x2_start
+ Conditional likelihood vectors for the other end-point of the specific edge for which we are evaluating the likelihood
+
+ @param tipVector
+ Precomputed table where the number of rows is equal to the number of possible basepair characters for the current data
+ type, i.e.16 for DNA and 23 for AA, and each rows contains \a states elements each of which contains transition
+ probabilities computed from the eigenvectors of the decomposed Q matrix.
+
+ @param tipX1
+ If one of the two end-points (nodes) of the specific edge (for which we are evaluating the likelihood) is a tip, then
+ this holds a pointer to the sequence data (basepairs) already converted in the internal integer representation, and \a x2
+ holds the conditional likelihood vectors for the internal node.
+
+ @param n
+ Number of sites for which we are doing the evaluation. For the single-thread version this is the
+ number of sites in the current partition, for multi-threads this is the number of sites assigned
+ to the running thread from the current partition.
+
+ @param diagptable
+ Start of the array that contains the P-Matrix diagonal of the specific edge for which we are
+ evaluating the likehood, and for each category of the GAMMA model
+
+ @param states
+ Number of states (4 for DNA, 20 for AA)
+
+ @param perSiteLikelihoods
+ Array to store per-site log likelihoods if \a getPerSiteLikelihoods is set to \b PLL_TRUE
+
+ @param getPerSiteLikelihoods
+ If set to \b PLL_TRUE then per-site log likelihoods are also computed and stored in \a perSiteLikelihoods
+
+ @param x1_gapColumn
+
+ @param x2_gapColumn
+
+ @param x1_gap
+ Gap bitvector for the left child node
+
+ @param x2_gap
+ Gap bitvector for the right child node
+
+ @return
+ The evaluated log likelihood of the tree topology
+
+ @todo
+ Document x1_gapColumn, x2_gapColumn, x1_gap, x2_gap and add a brief description of how this technique works
+*/
+static double evaluateGAMMA_FLEX_SAVE(const boolean fastScaling, int *ex1, int *ex2, int *wptr,
+ double *x1_start, double *x2_start,
+ double *tipVector,
+ unsigned char *tipX1, const int n, double *diagptable, const int states, double *perSiteLikelihoods, boolean getPerSiteLikelihoods,
+ double *x1_gapColumn, double *x2_gapColumn, unsigned int *x1_gap, unsigned int *x2_gap)
+{
+ double
+ sum = 0.0,
+ term,
+ *x1,
+ *x2,
+ *x1_ptr = x1_start,
+ *x2_ptr = x2_start;
+
+ int
+ i,
+ j,
+ k;
+
+ /* span is the offset within the likelihood array at an inner node that gets us from the values
+ of site i to the values of site i + 1 */
+
+ const int
+ span = states * 4;
+
+
+ /* we distingusih between two cases here: one node of the two nodes defining the branch at which we put the virtual root is
+ a tip. Both nodes can not be tips because we do not allow for two-taxon trees ;-)
+ Nota that, if a node is a tip, this will always be tipX1. This is done for code simplicity and the flipping of the nodes
+ is done before when we compute the traversal descriptor.
+ */
+
+ /* the left node is a tip */
+ if(tipX1)
+ {
+ /* loop over the sites of this partition */
+ for (i = 0; i < n; i++)
+ {
+ /* access pre-computed tip vector values via a lookup table */
+ x1 = &(tipVector[states * tipX1[i]]);
+ /* access the other(inner) node at the other end of the branch */
+
+ if(x2_gap[i / 32] & mask32[i % 32])
+ x2 = x2_gapColumn;
+ else
+ {
+ x2 = x2_ptr;
+ x2_ptr += span;
+ }
+
+ /* loop over GAMMA rate categories, hard-coded as 4 in RAxML */
+ for(j = 0, term = 0.0; j < 4; j++)
+ /* loop over states and multiply them with the P matrix */
+ for(k = 0; k < states; k++)
+ term += x1[k] * x2[j * states + k] * diagptable[j * states + k];
+
+ /* take the log of the likelihood and multiply the per-gamma rate likelihood by 1/4.
+ Under the GAMMA model the 4 discrete GAMMA rates all have the same probability
+ of 0.25 */
+
+ if(!fastScaling)
+ term = log(0.25 * fabs(term)) + (ex2[i] * log(PLL_MINLIKELIHOOD));
+ else
+ term = log(0.25 * fabs(term));
+
+ /* if required get the per-site log likelihoods.
+ note that these are the plain per site log-likes, not
+ multiplied with the pattern weight value */
+
+ if(getPerSiteLikelihoods)
+ perSiteLikelihoods[i] = term;
+
+ sum += wptr[i] * term;
+ }
+ }
+ else
+ {
+ for (i = 0; i < n; i++)
+ {
+ /* same as before, only that now we access two inner likelihood vectors x1 and x2 */
+
+ if(x1_gap[i / 32] & mask32[i % 32])
+ x1 = x1_gapColumn;
+ else
+ {
+ x1 = x1_ptr;
+ x1_ptr += span;
+ }
+
+ if(x2_gap[i / 32] & mask32[i % 32])
+ x2 = x2_gapColumn;
+ else
+ {
+ x2 = x2_ptr;
+ x2_ptr += span;
+ }
+
+ for(j = 0, term = 0.0; j < 4; j++)
+ for(k = 0; k < states; k++)
+ term += x1[j * states + k] * x2[j * states + k] * diagptable[j * states + k];
+
+ if(!fastScaling)
+ term = log(0.25 * fabs(term)) + ((ex1[i] + ex2[i])*log(PLL_MINLIKELIHOOD));
+ else
+ term = log(0.25 * fabs(term));
+
+ if(getPerSiteLikelihoods)
+ perSiteLikelihoods[i] = term;
+
+ sum += wptr[i] * term;
+ }
+ }
+
+ return sum;
+}
+#endif
+
+/** @ingroup evaluateLikelihoodGroup
+ @brief A generic (and slow) implementation of log likelihood evaluation of a tree using the CAT model of rate heterogeneity
+
+ Computes the log likelihood of the topology for a specific partition, assuming
+ that the CAT model of rate heterogeneity is used. The likelihood is computed at
+ a virtual root placed at an edge whose two end-points (nodes) have the conditional
+ likelihood vectors \a x1 and \a x2.
+ Furthermore, if \a getPerSiteLikelihoods is set to \b PLL_TRUE, then the log
+ likelihood for each site is also computed and stored at the corresponding position
+ in the array \a perSiteLikelihoods.
+
+ @param fastScaling
+ If set to \b PLL_FALSE, then the likelihood of each site is also multiplied by \a log(PLL_MINLIKELIHOOD) times the number
+ of times it has been scaled down
+
+ @param ex1
+ An array that holds how many times a site has been scaled and points at the entries for node \a p. This
+ parameter is used if \a fastScaling is set to \b PLL_FALSE.
+
+ @param ex2
+ An array that holds how many times a site has been scaled and points at the entries for node \a q. This
+ parameter is used if \a fastScaling is set to \b PLL_TRUE.
+
+ @param cptr
+ Array holding the rate for each site in the compressed partition alignment
+
+ @param wptr
+ Array holding the weight for each site in the compressed partition alignment
+
+ @param x1
+ Conditional likelihood vectors for one of the two end-points of the specific edge for which we are evaluating the likelihood
+
+ @param x2
+ Conditional likelihood vectors for the other end-point of the specific edge for which we are evaluating the likelihood
+
+ @param tipVector
+ Precomputed table where the number of rows is equal to the number of possible basepair characters for the current data type,
+ i.e.16 for DNA and 23 for AA, and each rows contains \a states elements each of which contains transition probabilities
+ computed from the eigenvectors of the decomposed Q matrix.
+
+ @param tipX1
+ If one of the two end-points (nodes) of the specific edge (for which we are evaluating the likelihood) is a tip, then
+ this holds a pointer to the sequence data (basepairs) already converted in the internal integer representation, and \a x2
+ holds the conditional likelihood vectors for the internal node.
+
+ @param n
+ Number of sites for which we are doing the evaluation. For the single-thread version this is the number of sites in the
+ current partition, for multi-threads this is the number of sites assigned to the running thread from the current partition.
+
+ @param diagptable_start
+ Start of the array that contains the P-Matrix diagonal of the specific edge for which we are evaluating the likehood,
+ and for each category of the CAT model
+
+ @param states
+ Number of states (4 for DNA, 20 for AA)
+
+ @param perSiteLikelihoods
+ Array to store per-site log likelihoods if \a getPerSiteLikelihoods is set to \b PLL_TRUE
+
+ @param getPerSiteLikelihoods
+ If set to \b PLL_TRUE then per-site log likelihoods are also computed and stored in \a perSiteLikelihoods
+
+ @return
+ The evaluated log likelihood of the tree topology
+*/
+static double evaluateCAT_FLEX (const boolean fastScaling, int *ex1, int *ex2, int *cptr, int *wptr,
+ double *x1, double *x2, double *tipVector,
+ unsigned char *tipX1, int n, double *diagptable_start, const int states, double *perSiteLikelihoods, boolean getPerSiteLikelihoods)
+{
+ double
+ sum = 0.0,
+ term,
+ *diagptable,
+ *left,
+ *right;
+
+ int
+ i,
+ l;
+
+ /* chosing between tip vectors and non tip vectors is identical in all flavors of this function ,regardless
+ of whether we are using CAT, GAMMA, DNA or protein data etc */
+
+ if(tipX1)
+ {
+ for (i = 0; i < n; i++)
+ {
+ /* same as in the GAMMA implementation */
+ left = &(tipVector[states * tipX1[i]]);
+ right = &(x2[states * i]);
+
+ /* important difference here, we do not have, as for GAMMA
+ 4 P matrices assigned to each site, but just one. However those
+ P-Matrices can be different for the sites.
+ Hence we index into the precalculated P-matrices for individual sites
+ via the category pointer cptr[i]
+ */
+ diagptable = &diagptable_start[states * cptr[i]];
+
+ /* similar to gamma, with the only difference that we do not integrate (sum)
+ over the discrete gamma rates, but simply compute the likelihood of the
+ site and the given P-matrix */
+
+ for(l = 0, term = 0.0; l < states; l++)
+ term += left[l] * right[l] * diagptable[l];
+
+ /* take the log */
+ if(!fastScaling)
+ term = log(fabs(term)) + (ex2[i] * log(PLL_MINLIKELIHOOD));
+ else
+ term = log(fabs(term));
+
+ /* if required get the per-site log likelihoods.
+ note that these are the plain per site log-likes, not
+ multiplied with the pattern weight value */
+
+ if(getPerSiteLikelihoods)
+ perSiteLikelihoods[i] = term;
+
+ /*
+ multiply the log with the pattern weight of this site.
+ The site pattern for which we just computed the likelihood may
+ represent several alignment columns sites that have been compressed
+ into one site pattern if they are exactly identical AND evolve under the same model,
+ i.e., form part of the same partition.
+ */
+
+ sum += wptr[i] * term;
+ }
+ }
+ else
+ {
+ for (i = 0; i < n; i++)
+ {
+ /* as before we now access the likelihood arrayes of two inner nodes */
+ left = &x1[states * i];
+ right = &x2[states * i];
+
+ diagptable = &diagptable_start[states * cptr[i]];
+
+ for(l = 0, term = 0.0; l < states; l++)
+ term += left[l] * right[l] * diagptable[l];
+
+ if(!fastScaling)
+ term = log(fabs(term)) + ((ex1[i] + ex2[i]) * log(PLL_MINLIKELIHOOD));
+ else
+ term = log(fabs(term));
+
+ if(getPerSiteLikelihoods)
+ perSiteLikelihoods[i] = term;
+
+ sum += wptr[i] * term;
+ }
+ }
+
+ return sum;
+}
+
+#if (defined(__SSE3) || defined(__AVX))
+/** @ingroup evaluateLikelihoodGroup
+ @brief A generic (and slow) implementation of log likelihood evaluation of a tree using the CAT model of rate heterogeneity with memory saving
+
+ This is the same as ::evaluateCAT_FLEX but with the memory saving technique enabled.
+ Please check ::evaluateCAT_FLEX for more information and a description of the common
+ input parameters
+
+ @param x1_gapColumn
+
+ @param x2_gapColumn
+
+ @param x1_gap
+ Gap bitvector for the left child node
+
+ @param x2_gap
+ Gap bitvector for the right child node
+
+ @todo
+ Comment on x1_gapColumn and x2_gapColumn
+*/
+static double evaluateCAT_FLEX_SAVE (const boolean fastScaling, int *ex1, int *ex2, int *cptr, int *wptr,
+ double *x1, double *x2, double *tipVector,
+ unsigned char *tipX1, int n, double *diagptable_start, const int states, double *perSiteLikelihoods, boolean getPerSiteLikelihoods,
+ double *x1_gapColumn, double *x2_gapColumn, unsigned int *x1_gap, unsigned int *x2_gap)
+{
+ double
+ sum = 0.0,
+ term,
+ *diagptable,
+ *left,
+ *right,
+ *left_ptr = x1,
+ *right_ptr = x2;
+
+ int
+ i,
+ l;
+
+ /* chosing between tip vectors and non tip vectors is identical in all flavors of this function ,regardless
+ of whether we are using CAT, GAMMA, DNA or protein data etc */
+
+ if(tipX1)
+ {
+ for (i = 0; i < n; i++)
+ {
+ /* same as in the GAMMA implementation */
+ left = &(tipVector[states * tipX1[i]]);
+
+ if(isGap(x2_gap, i))
+ right = x2_gapColumn;
+ else
+ {
+ right = right_ptr;
+ right_ptr += states;
+ }
+ /* important difference here, we do not have, as for GAMMA
+ 4 P matrices assigned to each site, but just one. However those
+ P-Matrices can be different for the sites.
+ Hence we index into the precalculated P-matrices for individual sites
+ via the category pointer cptr[i]
+ */
+ diagptable = &diagptable_start[states * cptr[i]];
+
+ /* similar to gamma, with the only difference that we do not integrate (sum)
+ over the discrete gamma rates, but simply compute the likelihood of the
+ site and the given P-matrix */
+
+ for(l = 0, term = 0.0; l < states; l++)
+ term += left[l] * right[l] * diagptable[l];
+
+ /* take the log */
+ if(!fastScaling)
+ term = log(fabs(term)) + (ex2[i] * log(PLL_MINLIKELIHOOD));
+ else
+ term = log(fabs(term));
+
+ /* if required get the per-site log likelihoods.
+ note that these are the plain per site log-likes, not
+ multiplied with the pattern weight value */
+
+ if(getPerSiteLikelihoods)
+ perSiteLikelihoods[i] = term;
+
+ /*
+ multiply the log with the pattern weight of this site.
+ The site pattern for which we just computed the likelihood may
+ represent several alignment columns sites that have been compressed
+ into one site pattern if they are exactly identical AND evolve under the same model,
+ i.e., form part of the same partition.
+ */
+
+ sum += wptr[i] * term;
+ }
+ }
+ else
+ {
+ for (i = 0; i < n; i++)
+ {
+ /* as before we now access the likelihood arrayes of two inner nodes */
+
+ if(isGap(x1_gap, i))
+ left = x1_gapColumn;
+ else
+ {
+ left = left_ptr;
+ left_ptr += states;
+ }
+
+ if(isGap(x2_gap, i))
+ right = x2_gapColumn;
+ else
+ {
+ right = right_ptr;
+ right_ptr += states;
+ }
+
+ diagptable = &diagptable_start[states * cptr[i]];
+
+ for(l = 0, term = 0.0; l < states; l++)
+ term += left[l] * right[l] * diagptable[l];
+
+ if(!fastScaling)
+ term = log(fabs(term)) + ((ex1[i] + ex2[i]) * log(PLL_MINLIKELIHOOD));
+ else
+ term = log(fabs(term));
+
+ if(getPerSiteLikelihoods)
+ perSiteLikelihoods[i] = term;
+
+ sum += wptr[i] * term;
+ }
+ }
+
+ return sum;
+}
+#endif
+
+
+/* This is the core function for computing the log likelihood at a branch */
+/** @ingroup evaluateLikelihoodGroup
+ @brief Evaluate the log likelihood of a specific branch of the topology
+
+ Evaluates the likelihood of the tree topology assuming a virtual root is
+ placed at the edge whose end-points are node with number \a pNumber and \a
+ qNumber in the first slot of the traversal descriptor. The function first
+ computes the conditional likelihoods for all necessary nodes (the ones in
+ the traversal descriptor list) by calling the function \a pllNewviewIterative
+ and then evaluates the likelihood at the root. In addition, if \a
+ getPerSiteLikelihoods is set to \b PLL_TRUE, the per-site likelihoods are
+ stored in \a tr->lhs.
+
+ @param tr
+ PLL instance
+
+ @param pr
+ List of partitions
+
+ @param getPerSiteLikelihoods
+ If set to \b PLL_TRUE, compute the log likelihood for each site.
+
+ @note
+ This is an internal function and should not be called by the user. It assumes
+ that a valid traversal descriptor has already been computed. It also assumes
+ that the edge we are referring to is an edge that leads to a tip, i.e. either
+ p or q of the first entry of traversal descriptor are tips.
+*/
+void pllEvaluateIterative(pllInstance *tr, partitionList *pr, boolean getPerSiteLikelihoods)
+{
+ /* the branch lengths and node indices of the virtual root branch are always the first one that
+ are stored in the very important traversal array data structure that describes a partial or full tree traversal */
+
+ /* get the branch length at the root */
+ double
+ *pz = tr->td[0].ti[0].qz;
+
+ /* get the node number of the node to the left and right of the branch that defines the virtual rooting */
+
+ int
+ pNumber = tr->td[0].ti[0].pNumber,
+ qNumber = tr->td[0].ti[0].qNumber,
+ p_slot,
+ q_slot,
+ model;
+
+ boolean
+ fastScaling = tr->fastScaling;
+
+ /* the slots are the entries in xVector where the LH vector is available */
+ if(tr->useRecom)
+ {
+ p_slot = tr->td[0].ti[0].slot_p;
+ q_slot = tr->td[0].ti[0].slot_q;
+ }
+ else
+ {
+ p_slot = pNumber - tr->mxtips - 1;
+ q_slot = qNumber - tr->mxtips - 1;
+ }
+
+ /* before we can compute the likelihood at the virtual root, we need to do a partial or full tree traversal to compute
+ the conditional likelihoods of the vectors as specified in the traversal descriptor. Maintaining this tarversal descriptor consistent
+ will unfortunately be the responsibility of users. This is tricky, if as planned for here, we use a rooted view (described somewhere in Felsenstein's book)
+ for the conditional vectors with respect to the tree
+ */
+
+ /* iterate over all valid entries in the traversal descriptor */
+
+ pllNewviewIterative(tr, pr, 1);
+
+ /* after the above call we are sure that we have properly and consistently computed the
+ conditionals to the right and left of the virtual root and we can now invoke the
+ the log likelihood computation */
+
+ /* we need to loop over all partitions. Note that we may have a mix of DNA, protein binary data etc partitions */
+
+ for(model = 0; model < pr->numberOfPartitions; model++)
+ {
+ /* whats' the number of sites of this partition (at the current thread) */
+ int
+ width = pr->partitionData[model]->width;
+
+ /*
+ Important part of the tarversal descriptor:
+ figure out if we need to recalculate the likelihood of this
+ partition:
+
+ The reasons why this is important in terms of performance are given in this paper
+ here which you should actually read:
+
+ A. Stamatakis, M. Ott: "Load Balance in the Phylogenetic Likelihood Kernel". Proceedings of ICPP 2009, accepted for publication, Vienna, Austria, September 2009
+
+ The width > 0 check is for checking if under the cyclic data distribution of per-partition sites to threads this thread does indeed have a site
+ of the current partition.
+
+ */
+
+ if(tr->td[0].executeModel[model] && width > 0)
+ {
+ int
+#if (defined(__SSE3) || defined(__AVX))
+ rateHet = (int)discreteRateCategories(tr->rateHetModel),
+#endif
+ categories,
+ ascWidth = pr->partitionData[model]->states,
+
+ /* get the number of states in the partition, e.g.: 4 = DNA, 20 = Protein */
+
+ states = pr->partitionData[model]->states,
+ *ex1 = NULL,
+ *ex2 = NULL,
+ *ex1_asc = NULL,
+ *ex2_asc = NULL;
+
+ double
+ *rateCategories = (double*)NULL,
+ z,
+ partitionLikelihood = 0.0,
+ *x1_start = NULL,
+ *x2_start = NULL,
+ *diagptable = NULL,
+ *x1_start_asc = NULL,
+ *x2_start_asc = NULL;
+
+#if (defined(__SSE3) || defined(__AVX))
+ double
+ *x1_gapColumn = (double*)NULL,
+ *x2_gapColumn = (double*)NULL;
+#endif
+
+#if (defined(__SSE3) || defined(__AVX))
+ unsigned int
+ *x1_gap = (unsigned int*)NULL,
+ *x2_gap = (unsigned int*)NULL;
+#endif
+
+ unsigned char
+ *tip = (unsigned char*)NULL;
+
+ /*
+ figure out if we are using the CAT or GAMMA model of rate heterogeneity
+ and set pointers to the rate heterogeneity rate arrays and also set the
+ number of distinct rate categories appropriately.
+
+ Under GAMMA this is constant and hard-coded as 4, weheras under CAT
+ the number of site-wise rate categories can vary in the course of computations
+ up to a user defined maximum value of site categories (default: 25)
+ */
+
+ if(tr->rateHetModel == PLL_CAT)
+ {
+ rateCategories = pr->partitionData[model]->perSiteRates;
+ categories = pr->partitionData[model]->numberOfCategories;
+ }
+ else /* GAMMA */
+ {
+ rateCategories = pr->partitionData[model]->gammaRates;
+ categories = 4;
+ }
+
+ /* set this pointer to the memory area where space has been reserved a priori for storing the
+ P matrix at the root */
+
+ diagptable = pr->partitionData[model]->left;
+
+ /* figure out if we need to address tip vectors (a char array that indexes into a precomputed tip likelihood
+ value array) or if we need to address inner vectors */
+
+ /* either node p or node q is a tip */
+
+ if(isTip(pNumber, tr->mxtips) || isTip(qNumber, tr->mxtips))
+ {
+ /* q is a tip */
+
+ if(isTip(qNumber, tr->mxtips))
+ {
+ /* get the start address of the inner likelihood vector x2 for partition model,
+ note that inner nodes are enumerated/indexed starting at 0 to save allocating some
+ space for additional pointers */
+
+ x2_start = pr->partitionData[model]->xVector[p_slot];
+
+ /* get the corresponding tip vector */
+
+ tip = pr->partitionData[model]->yVector[qNumber];
+
+#if (defined(_FINE_GRAIN_MPI) || defined(_USE_PTHREADS))
+ if (tr->threadID == 0 && pr->partitionData[model]->ascBias)
+#else
+ if (pr->partitionData[model]->ascBias)
+#endif
+ {
+ x2_start_asc = &pr->partitionData[model]->ascVector[(pNumber - tr->mxtips - 1) * pr->partitionData[model]->ascOffset];
+ ex2_asc = &pr->partitionData[model]->ascExpVector[(pNumber - tr->mxtips - 1) * ascWidth];
+ }
+
+
+ /* memory saving stuff, let's deal with this later or ask Fernando ;-) */
+
+#if (defined(__SSE3) || defined(__AVX))
+ if(tr->saveMemory)
+ {
+ x2_gap = &(pr->partitionData[model]->gapVector[pNumber * pr->partitionData[model]->gapVectorLength]);
+ x2_gapColumn = &(pr->partitionData[model]->gapColumn[(pNumber - tr->mxtips - 1) * states * rateHet]);
+ }
+#endif
+ /* per site likelihood scaling */
+
+ if(!fastScaling)
+ ex2 = pr->partitionData[model]->expVector[p_slot];
+ }
+ else
+ {
+ /* p is a tip, same as above */
+
+ x2_start = pr->partitionData[model]->xVector[q_slot];
+ tip = pr->partitionData[model]->yVector[pNumber];
+
+
+#if (defined(_FINE_GRAIN_MPI) || defined(_USE_PTHREADS))
+ if (tr->threadID == 0 && pr->partitionData[model]->ascBias)
+#else
+ if (pr->partitionData[model]->ascBias)
+#endif
+ {
+ x2_start_asc = &pr->partitionData[model]->ascVector[(qNumber - tr->mxtips - 1) * pr->partitionData[model]->ascOffset];
+ ex2_asc = &pr->partitionData[model]->ascExpVector[(qNumber - tr->mxtips - 1) * ascWidth];
+ }
+
+#if (defined(__SSE3) || defined(__AVX))
+ if(tr->saveMemory)
+ {
+ x2_gap = &(pr->partitionData[model]->gapVector[qNumber * pr->partitionData[model]->gapVectorLength]);
+ x2_gapColumn = &(pr->partitionData[model]->gapColumn[(qNumber - tr->mxtips - 1) * states * rateHet]);
+ }
+#endif
+
+ /* per site likelihood scaling */
+
+ if(!fastScaling)
+ ex2 = pr->partitionData[model]->expVector[q_slot];
+ }
+ }
+ else
+ {
+
+ assert(p_slot != q_slot);
+ /* neither p nor q are tips, hence we need to get the addresses of two inner vectors */
+
+ x1_start = pr->partitionData[model]->xVector[p_slot];
+ x2_start = pr->partitionData[model]->xVector[q_slot];
+
+ /* memory saving option */
+
+#if (defined(__SSE3) || defined(__AVX))
+ if(tr->saveMemory)
+ {
+ x1_gap = &(pr->partitionData[model]->gapVector[pNumber * pr->partitionData[model]->gapVectorLength]);
+ x2_gap = &(pr->partitionData[model]->gapVector[qNumber * pr->partitionData[model]->gapVectorLength]);
+ x1_gapColumn = &pr->partitionData[model]->gapColumn[(pNumber - tr->mxtips - 1) * states * rateHet];
+ x2_gapColumn = &pr->partitionData[model]->gapColumn[(qNumber - tr->mxtips - 1) * states * rateHet];
+ }
+#endif
+
+ /* per site likelihood scaling */
+
+ if(!fastScaling)
+ {
+ ex1 = pr->partitionData[model]->expVector[p_slot];
+ ex2 = pr->partitionData[model]->expVector[q_slot];
+ }
+
+#if (defined(_FINE_GRAIN_MPI) || defined(_USE_PTHREADS))
+ if (tr->threadID == 0 && pr->partitionData[model]->ascBias)
+#else
+ if (pr->partitionData[model]->ascBias)
+#endif
+ {
+ x1_start_asc = &pr->partitionData[model]->ascVector[(pNumber - tr->mxtips - 1) * pr->partitionData[model]->ascOffset];
+ x2_start_asc = &pr->partitionData[model]->ascVector[(qNumber - tr->mxtips - 1) * pr->partitionData[model]->ascOffset];
+
+ ex1_asc = &pr->partitionData[model]->ascExpVector[(pNumber - tr->mxtips - 1) * ascWidth];
+ ex2_asc = &pr->partitionData[model]->ascExpVector[(qNumber - tr->mxtips - 1) * ascWidth];
+ }
+
+
+
+ }
+
+
+ /* if we are using a per-partition branch length estimate, the branch has an index, otherwise, for a joint branch length
+ estimate over all partitions we just use the branch length value with index 0 */
+
+ if(pr->perGeneBranchLengths)
+ z = pz[model];
+ else
+ z = pz[0];
+
+ /* calc P-Matrix at root for branch z connecting nodes p and q */
+
+ if(pr->partitionData[model]->dataType == PLL_AA_DATA && (pr->partitionData[model]->protModels == PLL_LG4M || pr->partitionData[model]->protModels == PLL_LG4X))
+ calcDiagptableFlex_LG4(z, 4, pr->partitionData[model]->gammaRates, pr->partitionData[model]->EIGN_LG4, diagptable, 20);
+ else
+ calcDiagptable(z, states, categories, rateCategories, pr->partitionData[model]->EIGN, diagptable);
+
+#if (!defined(__SSE3) && !defined(__AVX) && !defined(__MIC_NATIVE))
+
+ /* generic slow functions, memory saving option is not implemented for these */
+
+ assert(!tr->saveMemory);
+
+ /* decide wheter CAT or GAMMA is used and compute log like */
+ if(tr->rateHetModel == PLL_CAT)
+ partitionLikelihood = evaluateCAT_FLEX(fastScaling, ex1, ex2, pr->partitionData[model]->rateCategory, pr->partitionData[model]->wgt,
+ x1_start, x2_start, pr->partitionData[model]->tipVector,
+ tip, width, diagptable, states, pr->partitionData[model]->perSiteLikelihoods, getPerSiteLikelihoods);
+ else
+ partitionLikelihood = evaluateGAMMA_FLEX(fastScaling, ex1, ex2, pr->partitionData[model]->wgt,
+ x1_start, x2_start, pr->partitionData[model]->tipVector,
+ tip, width, diagptable, states, pr->partitionData[model]->perSiteLikelihoods, getPerSiteLikelihoods);
+#else
+
+ /* if we want to compute the per-site likelihoods, we use the generic evaluate function implementations
+ for this, because the slowdown is not that dramatic */
+
+ if(getPerSiteLikelihoods)
+ {
+#ifdef __MIC_NATIVE
+ // not supported on MIC!
+ assert(0 && "Per-site LH calculations is not implemented on Intel MIC");
+#else
+ if(tr->rateHetModel == PLL_CAT)
+ {
+ if(tr->saveMemory)
+ partitionLikelihood = evaluateCAT_FLEX_SAVE(fastScaling, ex1, ex2, pr->partitionData[model]->rateCategory, pr->partitionData[model]->wgt,
+ x1_start, x2_start, pr->partitionData[model]->tipVector,
+ tip, width, diagptable, states, pr->partitionData[model]->perSiteLikelihoods, PLL_TRUE,
+ x1_gapColumn, x2_gapColumn, x1_gap, x2_gap);
+ else
+ partitionLikelihood = evaluateCAT_FLEX(fastScaling, ex1, ex2, pr->partitionData[model]->rateCategory, pr->partitionData[model]->wgt,
+ x1_start, x2_start, pr->partitionData[model]->tipVector,
+ tip, width, diagptable, states, pr->partitionData[model]->perSiteLikelihoods, PLL_TRUE);
+ }
+ else
+ {
+ if(tr->saveMemory)
+ partitionLikelihood = evaluateGAMMA_FLEX_SAVE(fastScaling, ex1, ex2, pr->partitionData[model]->wgt,
+ x1_start, x2_start, pr->partitionData[model]->tipVector,
+ tip, width, diagptable, states, pr->partitionData[model]->perSiteLikelihoods, PLL_TRUE,
+ x1_gapColumn, x2_gapColumn, x1_gap, x2_gap);
+ else
+ partitionLikelihood = evaluateGAMMA_FLEX(fastScaling, ex1, ex2, pr->partitionData[model]->wgt,
+ x1_start, x2_start, pr->partitionData[model]->tipVector,
+ tip, width, diagptable, states, pr->partitionData[model]->perSiteLikelihoods, PLL_TRUE);
+ }
+#endif
+ }
+ else
+ {
+ /* for the optimized functions we have a dedicated, optimized function implementation
+ for each rate heterogeneity and data type combination, we switch over the number of states
+ and the rate heterogeneity model */
+
+ switch(states)
+ {
+ case 2: /* binary */
+#ifdef __MIC_NATIVE
+ assert(0 && "Binary data model is not implemented on Intel MIC");
+#else
+ assert (!tr->saveMemory);
+ if (tr->rateHetModel == PLL_CAT)
+ {
+ partitionLikelihood = evaluateGTRCAT_BINARY(ex1, ex2, pr->partitionData[model]->rateCategory, pr->partitionData[model]->wgt,
+ x1_start, x2_start, pr->partitionData[model]->tipVector,
+ tip, width, diagptable, fastScaling);
+ }
+ else
+ {
+ partitionLikelihood = evaluateGTRGAMMA_BINARY(ex1, ex2, pr->partitionData[model]->wgt,
+ x1_start, x2_start, pr->partitionData[model]->tipVector,
+ tip, width, diagptable, fastScaling);
+ }
+#endif
+ break;
+ case 4: /* DNA */
+ {
+#ifdef __MIC_NATIVE
+
+ /* CAT & memory saving are not supported on MIC */
+
+ assert(!tr->saveMemory);
+ assert(tr->rateHetModel == PLL_GAMMA);
+
+ partitionLikelihood = evaluateGTRGAMMA_MIC(ex1, ex2, pr->partitionData[model]->wgt,
+ x1_start, x2_start, pr->partitionData[model]->tipVector,
+ tip, width, diagptable, fastScaling);
+#else
+ if(tr->rateHetModel == PLL_CAT)
+ {
+ if(tr->saveMemory)
+ partitionLikelihood = evaluateGTRCAT_SAVE(fastScaling, ex1, ex2, pr->partitionData[model]->rateCategory, pr->partitionData[model]->wgt,
+ x1_start, x2_start, pr->partitionData[model]->tipVector,
+ tip, width, diagptable, x1_gapColumn, x2_gapColumn, x1_gap, x2_gap);
+ else
+ partitionLikelihood = evaluateGTRCAT(fastScaling, ex1, ex2, pr->partitionData[model]->rateCategory, pr->partitionData[model]->wgt,
+ x1_start, x2_start, pr->partitionData[model]->tipVector,
+ tip, width, diagptable);
+ }
+ else
+ {
+ if(tr->saveMemory)
+ partitionLikelihood = evaluateGTRGAMMA_GAPPED_SAVE(fastScaling, ex1, ex2, pr->partitionData[model]->wgt,
+ x1_start, x2_start, pr->partitionData[model]->tipVector,
+ tip, width, diagptable,
+ x1_gapColumn, x2_gapColumn, x1_gap, x2_gap);
+ else
+ partitionLikelihood = evaluateGTRGAMMA(fastScaling, ex1, ex2, pr->partitionData[model]->wgt,
+ x1_start, x2_start, pr->partitionData[model]->tipVector,
+ tip, width, diagptable);
+ }
+#endif
+ }
+ break;
+ case 20: /* proteins */
+ {
+
+#ifdef __MIC_NATIVE
+
+ /* CAT & memory saving are not supported on MIC */
+
+ assert(!tr->saveMemory);
+ assert(tr->rateHetModel == PLL_GAMMA);
+
+ if(pr->partitionData[model]->protModels == PLL_LG4M || pr->partitionData[model]->protModels == PLL_LG4X)
+ partitionLikelihood = evaluateGTRGAMMAPROT_LG4_MIC(pr->partitionData[model]->wgt,
+ x1_start, x2_start, pr->partitionData[model]->tipVector_LG4,
+ tip, width, diagptable, pr->partitionData[model]->lg4x_weights);
+ else
+ partitionLikelihood = evaluateGTRGAMMAPROT_MIC(ex1, ex2, pr->partitionData[model]->wgt,
+ x1_start, x2_start, pr->partitionData[model]->tipVector,
+ tip, width, diagptable, fastScaling);
+
+// printf("tip: %p, width: %d, lh: %f\n", tip, width, partitionLikelihood);
+// int g;
+// if (x1_start)
+// for (g = 0; g < 20; ++g)
+// printf("%f \t", x1_start[g]);
+// printf("\n");
+// if (x2_start)
+// for (g = 0; g < 20; ++g)
+// printf("%f \t", x2_start[g]);
+#else
+
+ if(tr->rateHetModel == PLL_CAT)
+ {
+ if(tr->saveMemory)
+ partitionLikelihood = evaluateGTRCATPROT_SAVE(fastScaling, ex1, ex2, pr->partitionData[model]->rateCategory, pr->partitionData[model]->wgt,
+ x1_start, x2_start, pr->partitionData[model]->tipVector,
+ tip, width, diagptable, x1_gapColumn, x2_gapColumn, x1_gap, x2_gap);
+ else
+ partitionLikelihood = evaluateGTRCATPROT(fastScaling, ex1, ex2, pr->partitionData[model]->rateCategory, pr->partitionData[model]->wgt,
+ x1_start, x2_start, pr->partitionData[model]->tipVector,
+ tip, width, diagptable);
+ }
+ else
+ {
+ if(tr->saveMemory)
+ partitionLikelihood = evaluateGTRGAMMAPROT_GAPPED_SAVE(fastScaling, ex1, ex2, pr->partitionData[model]->wgt,
+ x1_start, x2_start, pr->partitionData[model]->tipVector,
+ tip, width, diagptable,
+ x1_gapColumn, x2_gapColumn, x1_gap, x2_gap);
+ else
+ {
+ if(pr->partitionData[model]->protModels == PLL_LG4M || pr->partitionData[model]->protModels == PLL_LG4X)
+ partitionLikelihood = evaluateGTRGAMMAPROT_LG4((int *)NULL, (int *)NULL, pr->partitionData[model]->wgt,
+ x1_start, x2_start, pr->partitionData[model]->tipVector_LG4,
+ tip, width, diagptable, PLL_TRUE, pr->partitionData[model]->lg4x_weights);
+ else
+ partitionLikelihood = evaluateGTRGAMMAPROT(fastScaling, ex1, ex2, pr->partitionData[model]->wgt,
+ x1_start, x2_start, pr->partitionData[model]->tipVector,
+ tip, width, diagptable);
+ }
+ }
+#endif
+ }
+ break;
+ default:
+ assert(0);
+ }
+ }
+#endif
+
+ /* check that there was no major numerical screw-up, the log likelihood should be < 0.0 always */
+
+ assert(partitionLikelihood < 0.0);
+
+ /* now here is a nasty part, for each partition and each node we maintain an integer counter to count how often
+ how many entries per node were scaled by a constant factor. Here we use this information generated during Felsenstein's
+ pruning algorithm by the newview() functions to undo the preceding scaling multiplications at the root, for mathematical details
+ you should actually read:
+
+ A. Stamatakis: "Orchestrating the Phylogenetic Likelihood Function on Emerging Parallel Architectures".
+ In B. Schmidt, editor, Bioinformatics: High Performance Parallel Computer Architectures, 85-115, CRC Press, Taylor & Francis, 2010.
+
+ There's a copy of this book in my office
+ */
+
+ if(fastScaling)
+ partitionLikelihood += (pr->partitionData[model]->globalScaler[pNumber] + pr->partitionData[model]->globalScaler[qNumber]) * log(PLL_MINLIKELIHOOD);
+
+ /* now we have the correct log likelihood for the current partition after undoing scaling multiplications */
+
+ /* finally, we also store the per partition log likelihood which is important for optimizing the alpha parameter
+ of this partition for example */
+
+ /* asc bias stuff */
+
+#if (defined(_FINE_GRAIN_MPI) || defined(_USE_PTHREADS))
+ if (tr->threadID == 0 && pr->partitionData[model]->ascBias)
+#else
+ if (pr->partitionData[model]->ascBias)
+#endif
+ {
+ size_t
+ i;
+
+ int
+ w = 0;
+
+ double
+ correction;
+
+ switch(tr->rateHetModel)
+ {
+ case PLL_CAT:
+ {
+ double
+ rates = 1.0;
+
+ //need to re-calculate P-matrix for the correction here assuming a rate of 1.0
+ calcDiagptable(z, states, 1, &rates, pr->partitionData[model]->EIGN, diagptable);
+
+
+ correction = evaluateCatAsc(ex1_asc, ex2_asc, x1_start_asc, x2_start_asc, pr->partitionData[model]->tipVector,
+ tip, ascWidth, diagptable, ascWidth);
+ }
+ break;
+ case PLL_GAMMA:
+ correction = evaluateGammaAsc(ex1_asc, ex2_asc, x1_start_asc, x2_start_asc, pr->partitionData[model]->tipVector,
+ tip, ascWidth, diagptable, ascWidth);
+ break;
+ default:
+ assert(0);
+ }
+
+
+
+ for(i = (size_t)pr->partitionData[model]->lower; i < (size_t)pr->partitionData[model]->upper; i++)
+ w += tr->aliaswgt[i];
+
+ partitionLikelihood = partitionLikelihood - (double)w * log(1.0 - correction);
+
+ }
+#if (defined(_FINE_GRAIN_MPI) || defined(_USE_PTHREADS))
+ if(!(pr->partitionData[model]->ascBias && tr->threadID == 0))
+ {
+#endif
+ if(partitionLikelihood >= 0.0)
+ {
+ printf("positive log like: %f for partition %d\n", partitionLikelihood, model);
+ assert(0);
+ }
+#if (defined(_FINE_GRAIN_MPI) || defined(_USE_PTHREADS))
+ }
+#endif
+
+
+ pr->partitionData[model]->partitionLH = partitionLikelihood;
+ }
+ else
+ {
+ /* if the current thread does not have a single site of this partition
+ it is important to set the per partition log like to 0.0 because
+ of the reduction operation that will take place later-on.
+ That is, the values of tr->perPartitionLH across all threads
+ need to be in a consistent state, always !
+ */
+
+ if(width == 0)
+ pr->partitionData[model]->partitionLH = 0.0;
+ }
+ }
+
+
+#ifdef DEBUG_PERSITE_LNL
+ /* per persite-stuff */
+ {
+ int model = 0;
+ for(model = 0; model < pr->numberOfPartitions ; ++model)
+ {
+ int j= 0;
+ pInfo *partition = pr->partitionData[model];
+ for(j = 0; j < partition->width; ++j)
+ printf("[%d] lnl[%d]=%f\n", tr->threadID, j, partition->perSiteLikelihoods[j]);
+
+ }
+ }
+
+#endif
+}
+
+
+
+/** @ingroup evaluateLikelihoodGroup
+ @brief Evaluate the log likelihood of the tree topology
+
+ Evaluate the log likelihood of the tree topology of instance \a tr by
+ assuming a virtual root between nodes \a p and \a p->back. If
+ \a fullTraversal is set to \b PLL_TRUE then the log likelihood vectors for
+ each node are recomputed from scratch.
+
+ @param tr
+ PLL instance
+
+ @param pr
+ List of partitions
+
+ @param p
+ Specifies the virtual root, which is assumed to be a (virtual node) connecting \a p and \a p->back
+
+ @param fullTraversal
+ If set to \b PLL_TRUE, then the likelihood vectors at all nodes are recomputed, otherwise only the
+ necessary vectors (those that are not oriented in the right direction) are recomputed.
+
+ @param getPerSiteLikelihoods
+ Also compute and store (in \a tr->lhs) the log likelihood of each site of the (compressed) alignment
+
+ @note
+ If \a getPerSiteLikelihoods is set to \b PLL_TRUE, then make sure that \a tr->fastScaling is set to
+ \b PLL_FALSE, otherwise an assertion will fail.
+*/
+void pllEvaluateLikelihood (pllInstance *tr, partitionList *pr, nodeptr p, boolean fullTraversal, boolean getPerSiteLikelihoods)
+{
+ /* now this may be the entry point of the library to compute
+ the log like at a branch defined by p and p->back == q */
+
+ volatile double
+ result = 0.0;
+
+ nodeptr
+ q = p->back;
+
+
+ boolean
+ p_recom = PLL_FALSE, /* if one of was missing, we will need to force recomputation */
+ q_recom = PLL_FALSE;
+
+ int
+ i,
+ model,
+ numBranches = pr->perGeneBranchLengths?pr->numberOfPartitions : 1;
+
+ /* if evaluate shall return the per-site log likelihoods
+ fastScaling needs to be disabled, otherwise this will
+ not work */
+
+ if(getPerSiteLikelihoods)
+ assert(!(tr->fastScaling));
+
+ /* set the first entry of the traversal descriptor to contain the indices
+ of nodes p and q */
+
+ tr->td[0].ti[0].pNumber = p->number;
+ tr->td[0].ti[0].qNumber = q->number;
+
+ /* copy the branch lengths of the tree into the first entry of the traversal descriptor.
+ if -M is not used tr->numBranches must be 1 */
+
+ for(i = 0; i < numBranches; i++)
+ tr->td[0].ti[0].qz[i] = q->z[i];
+
+ /* recom part */
+ if(tr->useRecom)
+ {
+ int slot = -1;
+ if(!isTip(q->number, tr->mxtips))
+ {
+ q_recom = getxVector(tr->rvec, q->number, &slot, tr->mxtips);
+ tr->td[0].ti[0].slot_q = slot;
+ }
+ if(!isTip(p->number, tr->mxtips))
+ {
+ p_recom = getxVector(tr->rvec, p->number, &slot, tr->mxtips);
+ tr->td[0].ti[0].slot_p = slot;
+ }
+ if(!isTip(p->number, tr->mxtips) && !isTip(q->number, tr->mxtips))
+ assert(tr->td[0].ti[0].slot_q != tr->td[0].ti[0].slot_p);
+ }
+
+
+ /* now compute how many conditionals must be re-computed/re-oriented by newview
+ to be able to calculate the likelihood at the root defined by p and q.
+ */
+
+ /* one entry in the traversal descriptor is already used, hence set the tarversal length counter to 1 */
+ tr->td[0].count = 1;
+
+ if(fullTraversal)
+ {
+ assert(isTip(q->back->number, tr->mxtips));
+ computeTraversal(tr, q, PLL_FALSE, numBranches);
+ }
+ else
+ {
+ if(p_recom || needsRecomp(tr->useRecom, tr->rvec, p, tr->mxtips))
+ computeTraversal(tr, p, PLL_TRUE, numBranches);
+
+ if(q_recom || needsRecomp(tr->useRecom, tr->rvec, q, tr->mxtips))
+ computeTraversal(tr, q, PLL_TRUE, numBranches);
+ }
+
+
+ /* now we copy this partition execute mask into the traversal descriptor which must come from the
+ calling program, the logic of this should not form part of the library */
+
+ storeExecuteMaskInTraversalDescriptor(tr, pr);
+
+ /* also store in the traversal descriptor that something has changed i.e., in the parallel case that the
+ traversal descriptor list of nodes needs to be broadcast once again */
+
+ tr->td[0].traversalHasChanged = PLL_TRUE;
+#if (defined(_FINE_GRAIN_MPI) || defined(_USE_PTHREADS))
+
+ /* now here we enter the fork-join region for Pthreads */
+
+
+ /* start the parallel region and tell all threads to compute the log likelihood for
+ their fraction of the data. This call is implemented in the case switch of execFunction in axml.c
+ */
+ if(getPerSiteLikelihoods)
+ {
+ memset(tr->lhs, 0, sizeof(double) * tr->originalCrunchedLength);
+ pllMasterBarrier(tr, pr, PLL_THREAD_EVALUATE_PER_SITE_LIKES);
+ }
+ else
+ pllMasterBarrier (tr, pr, PLL_THREAD_EVALUATE);
+
+ /* and now here we explicitly do the reduction operation , that is add over the
+ per-thread and per-partition log likelihoods to obtain the overall log like
+ over all sites and partitions */
+
+
+ /*
+ for unpartitioned data that's easy, we just sum over the log likes computed
+ by each thread, thread 0 stores his results in reductionBuffer[0] thread 1 in
+ reductionBuffer[1] and so on
+ */
+
+ /* This reduction for the partitioned case is more complicated because each thread
+ needs to store the partial log like of each partition and we then need to collect
+ and add everything */
+
+#else
+ /* and here is just the sequential case, we directly call pllEvaluateIterative() above
+ without having to tell the threads/processes that they need to compute this function now */
+
+ pllEvaluateIterative(tr, pr, getPerSiteLikelihoods); //PLL_TRUE
+
+ /*
+ if we want to obtain per-site rates they have initially been stored
+ in arrays that are associated to the partition, now we
+ copy them into the vector tr->lhs[].
+ We may also chose that the user needs to rpovide an array, but this can be decided later-on.
+ */
+
+ if(getPerSiteLikelihoods) //PLL_TRUE
+ {
+ for(model = 0; model < pr->numberOfPartitions; model++)
+ memcpy(&(tr->lhs[pr->partitionData[model]->lower]), pr->partitionData[model]->perSiteLikelihoods, pr->partitionData[model]->width * sizeof(double));
+ }
+
+#endif
+
+ for(model = 0; model < pr->numberOfPartitions; model++)
+ result += pr->partitionData[model]->partitionLH;
+
+ /* set the tree data structure likelihood value to the total likelihood */
+
+ tr->likelihood = result;
+
+ /* the code below is mainly for testing if the per-site log
+ likelihoods we have stored in tr->lhs yield the same
+ likelihood as the likelihood we computed.
+ For numerical reasons we need to make a dirt PLL_ABS(difference) < epsilon
+ comparison */
+
+ if(getPerSiteLikelihoods) //PLL_TRUE
+ {
+ double
+ likelihood = 0;
+ int i;
+
+ /* note that in tr->lhs, we just store the likelihood of
+ one representative of a potentially compressed pattern,
+ hence, we need to multiply the elemnts with the pattern
+ weight vector */
+
+
+ for(i = 0; i < tr->originalCrunchedLength; i++)
+ {
+// printf("lhs[%d]=%f * %d\n", i, tr->lhs[i], tr->aliaswgt[i]);
+ likelihood += (tr->lhs[i] * tr->aliaswgt[i] );
+ }
+
+ if( PLL_ABS(tr->likelihood - likelihood) > 0.00001)
+ {
+ // printf("likelihood was %f\t summed/weighted per-site-lnl was %f\n", tr->likelihood, likelihood);
+ }
+
+ assert(PLL_ABS(tr->likelihood - likelihood) < 0.00001);
+ }
+
+
+ if(tr->useRecom)
+ {
+ unpinNode(tr->rvec, p->number, tr->mxtips);
+ unpinNode(tr->rvec, q->number, tr->mxtips);
+ }
+
+ /* do some bookkeeping to have traversalHasChanged in a consistent state */
+
+ tr->td[0].traversalHasChanged = PLL_FALSE;
+}
+
+
+void perSiteLogLikelihoods(pllInstance *tr, partitionList *pr, double *logLikelihoods)
+{
+#if (!defined(_USE_PTHREADS) && !defined(_FINE_GRAIN_MPI))
+ double
+ //likelihood,
+ accumulatedPerSiteLikelihood = 0.0;
+
+ size_t
+ localCount,
+ i,
+ //globalCounter,
+ lower,
+ upper;
+ int model;
+#endif
+ /* compute the likelihood of the tree with the standard function to:
+ 1. obtain the current score for error checking
+ 2. store a full tree traversal in the traversal descriptor that
+ will then be used for calculating per-site log likelihoods
+ for each site individually and independently */
+
+ pllEvaluateLikelihood (tr, pr, tr->start, PLL_TRUE, PLL_FALSE);
+
+ //likelihood = tr->likelihood;
+
+ /* now compute per-site log likelihoods using the respective functions */
+
+#if (defined( _USE_PTHREADS ) || defined(_FINE_GRAIN_MPI))
+ /* here we need a barrier to invoke a parallel region that calls
+ function
+ perSiteLogLikelihoodsPthreads(tree *tr, partitionList *pr, double *lhs, int n, int tid)
+ defined above and subsequently collects the per-site log likelihoods
+ computed by the threads and stored in local per-thread memory
+ and stores them in buffer tr->lhs.
+ This corresponds to a gather operation in MPI.
+ */
+
+ pllMasterBarrier (tr, pr, PLL_THREAD_PER_SITE_LIKELIHOODS);
+
+ /*
+ when the parallel region has terminated, the per-site log likelihoods
+ are stored in array tr->lhs of the master thread which we copy to the result buffer
+ */
+
+ memcpy(logLikelihoods, tr->lhs, sizeof(double) * tr->originalCrunchedLength);
+
+
+#else
+
+ /* sequential case: just loop over all partitions and compute per site log likelihoods */
+
+ for(model = 0; model < pr->numberOfPartitions; model++)
+ {
+ lower = pr->partitionData[model]->lower;
+ upper = pr->partitionData[model]->upper;
+
+ for(i = lower, localCount = 0; i < upper; i++, localCount++)
+ {
+ double
+ l;
+
+ /*
+ we need to switch of rate heterogeneity implementations here.
+ when we have PSR we actually need to provide the per-site rate
+ to the function evaluatePartialGeneric() that computes the
+ per-site log likelihood.
+ Under GAMMA, the rate will just be ignored, here we just set it to 1.0
+ */
+
+ switch(tr->rateHetModel)
+ {
+ case PLL_CAT:
+ l = evaluatePartialGeneric (tr, pr, i, pr->partitionData[model]->perSiteRates[pr->partitionData[model]->rateCategory[localCount]], model);
+ break;
+ case PLL_GAMMA:
+ l = evaluatePartialGeneric (tr, pr, i, 1.0, model);
+ break;
+ default:
+ assert(0);
+ }
+
+ /* store value in result array and add the likelihood of this site to the overall likelihood */
+
+ logLikelihoods[i] = l;
+ accumulatedPerSiteLikelihood += l;
+ }
+ }
+
+
+ /* error checking. We need a dirt PLL_ABS() < epsilon here, because the implementations
+ (standard versus per-site) are pretty different and hence slight numerical
+ deviations are expected */
+
+ assert(PLL_ABS(tr->likelihood - accumulatedPerSiteLikelihood) < 0.00001);
+
+#endif
+
+
+
+}
+
+#if (defined(__SSE3) || defined(__AVX))
+static double evaluateGTRCAT_BINARY (int *ex1, int *ex2, int *cptr, int *wptr,
+ double *x1_start, double *x2_start, double *tipVector,
+ unsigned char *tipX1, int n, double *diagptable_start, const boolean fastScaling)
+{
+ double sum = 0.0, term;
+ int i;
+#if (!defined(__SSE3) && !defined(__AVX))
+ int j;
+#endif
+ double *diagptable, *x1, *x2;
+
+ if(tipX1)
+ {
+ for (i = 0; i < n; i++)
+ {
+#if (defined(__SSE3) || defined(__AVX))
+ double t[2] __attribute__ ((aligned (PLL_BYTE_ALIGNMENT)));
+#endif
+ x1 = &(tipVector[2 * tipX1[i]]);
+ x2 = &(x2_start[2 * i]);
+
+ diagptable = &(diagptable_start[2 * cptr[i]]);
+
+#if (defined(__SSE3) || defined(__AVX))
+ _mm_store_pd(t, _mm_mul_pd(_mm_load_pd(x1), _mm_mul_pd(_mm_load_pd(x2), _mm_load_pd(diagptable))));
+
+ if(fastScaling)
+ term = log(fabs(t[0] + t[1]));
+ else
+ term = log(fabs(t[0] + t[1])) + (ex2[i] * log(PLL_MINLIKELIHOOD));
+#else
+ for(j = 0, term = 0.0; j < 2; j++)
+ term += x1[j] * x2[j] * diagptable[j];
+
+ if(fastScaling)
+ term = log(fabs(term));
+ else
+ term = log(fabs(term)) + (ex2[i] * log(PLL_MINLIKELIHOOD));
+#endif
+
+ sum += wptr[i] * term;
+ }
+ }
+ else
+ {
+ for (i = 0; i < n; i++)
+ {
+#if (defined(__SSE3) || defined(__AVX))
+ double t[2] __attribute__ ((aligned (PLL_BYTE_ALIGNMENT)));
+#endif
+ x1 = &x1_start[2 * i];
+ x2 = &x2_start[2 * i];
+
+ diagptable = &diagptable_start[2 * cptr[i]];
+#if (defined(__SSE3) || defined(__AVX))
+ _mm_store_pd(t, _mm_mul_pd(_mm_load_pd(x1), _mm_mul_pd(_mm_load_pd(x2), _mm_load_pd(diagptable))));
+
+ if(fastScaling)
+ term = log(fabs(t[0] + t[1]));
+ else
+ term = log(fabs(t[0] + t[1])) + ((ex1[i] + ex2[i]) * log(PLL_MINLIKELIHOOD));
+#else
+ for(j = 0, term = 0.0; j < 2; j++)
+ term += x1[j] * x2[j] * diagptable[j];
+
+ if(fastScaling)
+ term = log(fabs(term));
+ else
+ term = log(fabs(term)) + ((ex1[i] + ex2[i]) * log(PLL_MINLIKELIHOOD));
+#endif
+
+ sum += wptr[i] * term;
+ }
+ }
+
+ return sum;
+}
+
+
+static double evaluateGTRGAMMA_BINARY(int *ex1, int *ex2, int *wptr,
+ double *x1_start, double *x2_start,
+ double *tipVector,
+ unsigned char *tipX1, const int n, double *diagptable, const boolean fastScaling)
+{
+ double sum = 0.0, term;
+ int i, j;
+#if (!defined(__SSE3) && !defined(__AVX))
+ int k;
+#endif
+ double *x1, *x2;
+
+ if(tipX1)
+ {
+ for (i = 0; i < n; i++)
+ {
+#if (defined(__SSE3) || defined(__AVX))
+ double t[2] __attribute__ ((aligned (PLL_BYTE_ALIGNMENT)));
+ __m128d termv, x1v, x2v, dv;
+#endif
+ x1 = &(tipVector[2 * tipX1[i]]);
+ x2 = &x2_start[8 * i];
+#if (defined(__SSE3) || defined(__AVX))
+ termv = _mm_set1_pd(0.0);
+
+ for(j = 0; j < 4; j++)
+ {
+ x1v = _mm_load_pd(&x1[0]);
+ x2v = _mm_load_pd(&x2[j * 2]);
+ dv = _mm_load_pd(&diagptable[j * 2]);
+
+ x1v = _mm_mul_pd(x1v, x2v);
+ x1v = _mm_mul_pd(x1v, dv);
+
+ termv = _mm_add_pd(termv, x1v);
+ }
+
+ _mm_store_pd(t, termv);
+
+ if(fastScaling)
+ term = log(0.25 * (fabs(t[0] + t[1])));
+ else
+ term = log(0.25 * (fabs(t[0] + t[1]))) + (ex2[i] * log(PLL_MINLIKELIHOOD));
+#else
+ for(j = 0, term = 0.0; j < 4; j++)
+ for(k = 0; k < 2; k++)
+ term += x1[k] * x2[j * 2 + k] * diagptable[j * 2 + k];
+
+ if(fastScaling)
+ term = log(0.25 * fabs(term));
+ else
+ term = log(0.25 * fabs(term)) + ex2[i] * log(PLL_MINLIKELIHOOD);
+#endif
+
+ sum += wptr[i] * term;
+ }
+ }
+ else
+ {
+ for (i = 0; i < n; i++)
+ {
+#if (defined(__SSE3) || defined(__AVX))
+ double t[2] __attribute__ ((aligned (PLL_BYTE_ALIGNMENT)));
+ __m128d termv, x1v, x2v, dv;
+#endif
+ x1 = &x1_start[8 * i];
+ x2 = &x2_start[8 * i];
+
+#if (defined(__SSE3) || defined(__AVX))
+ termv = _mm_set1_pd(0.0);
+
+ for(j = 0; j < 4; j++)
+ {
+ x1v = _mm_load_pd(&x1[j * 2]);
+ x2v = _mm_load_pd(&x2[j * 2]);
+ dv = _mm_load_pd(&diagptable[j * 2]);
+
+ x1v = _mm_mul_pd(x1v, x2v);
+ x1v = _mm_mul_pd(x1v, dv);
+
+ termv = _mm_add_pd(termv, x1v);
+ }
+
+ _mm_store_pd(t, termv);
+
+
+ if(fastScaling)
+ term = log(0.25 * (fabs(t[0] + t[1])));
+ else
+ term = log(0.25 * (fabs(t[0] + t[1]))) + ((ex1[i] +ex2[i]) * log(PLL_MINLIKELIHOOD));
+#else
+ for(j = 0, term = 0.0; j < 4; j++)
+ for(k = 0; k < 2; k++)
+ term += x1[j * 2 + k] * x2[j * 2 + k] * diagptable[j * 2 + k];
+
+ if(fastScaling)
+ term = log(0.25 * fabs(term));
+ else
+ term = log(0.25 * fabs(term)) + (ex1[i] + ex2[i]) * log(PLL_MINLIKELIHOOD);
+#endif
+
+ sum += wptr[i] * term;
+ }
+ }
+
+ return sum;
+}
+#endif
+
+
+
+/* below are the optimized function versions with geeky intrinsics */
+
+/** @ingroup evaluateLikelihoodGroup
+ @brief Evaluation of log likelihood of a tree under the GAMMA model of rate heterogeneity and LG4 model of evolution
+
+ This is the same as ::evaluateGAMMA_FLEX but for the LG4 model. It contains two implementations,
+ one which is the generic, and one that is optimized with SSE3 instructions. The two implementations
+ are separated by preprocessor macros.
+ The difference from ::evaluateGAMMA_FLEX is that we have 4 different tipVectors computed from the 4 different
+ Q matrix decompositions.
+ Please check ::evaluateGAMMA_FLEX for more information and a description of the common
+ input parameters.
+*/
+static double evaluateGTRGAMMAPROT_LG4(int *ex1, int *ex2, int *wptr,
+ double *x1, double *x2,
+ double *tipVector[4],
+ unsigned char *tipX1, int n, double *diagptable, const boolean fastScaling,
+ double * lg4_weights)
+{
+ double sum = 0.0, term;
+ int i, j, l;
+ double *left, *right;
+
+ if(tipX1)
+ {
+ for (i = 0; i < n; i++)
+ {
+#if (defined(__SSE3) || defined(__AVX))
+ __m128d tv = _mm_setzero_pd();
+
+ for(j = 0, term = 0.0; j < 4; j++)
+ {
+ double *d = &diagptable[j * 20];
+
+ __m128d
+ t = _mm_setzero_pd(),
+ w = _mm_set1_pd(lg4_weights[j]);
+
+ left = &(tipVector[j][20 * tipX1[i]]);
+ right = &(x2[80 * i + 20 * j]);
+ for(l = 0; l < 20; l+=2)
+ {
+ __m128d mul = _mm_mul_pd(_mm_load_pd(&left[l]), _mm_load_pd(&right[l]));
+ t = _mm_add_pd(t, _mm_mul_pd(mul, _mm_load_pd(&d[l])));
+ }
+ tv = _mm_add_pd(tv, _mm_mul_pd(t, w));
+ }
+
+ tv = _mm_hadd_pd(tv, tv);
+ _mm_storel_pd(&term, tv);
+
+
+#else
+ for(j = 0, term = 0.0; j < 4; j++)
+ {
+ double t = 0.0;
+
+ left = &(tipVector[j][20 * tipX1[i]]);
+ right = &(x2[80 * i + 20 * j]);
+
+ for(l = 0; l < 20; l++)
+ t += left[l] * right[l] * diagptable[j * 20 + l];
+
+ term += lg4_weights[j] * t;
+ }
+#endif
+
+ if(fastScaling)
+ term = log(fabs(term));
+ else
+ term = log(fabs(term)) + (ex2[i] * log(PLL_MINLIKELIHOOD));
+
+ sum += wptr[i] * term;
+
+ }
+ }
+ else
+ {
+ for (i = 0; i < n; i++)
+ {
+#if (defined(__SSE3) || defined(__AVX))
+ __m128d tv = _mm_setzero_pd();
+
+ for(j = 0, term = 0.0; j < 4; j++)
+ {
+ double *d = &diagptable[j * 20];
+
+ __m128d
+ t = _mm_setzero_pd(),
+ w = _mm_set1_pd(lg4_weights[j]);
+
+ left = &(x1[80 * i + 20 * j]);
+ right = &(x2[80 * i + 20 * j]);
+
+ for(l = 0; l < 20; l+=2)
+ {
+ __m128d mul = _mm_mul_pd(_mm_load_pd(&left[l]), _mm_load_pd(&right[l]));
+ t = _mm_add_pd(t, _mm_mul_pd(mul, _mm_load_pd(&d[l])));
+ }
+ tv = _mm_add_pd(tv, _mm_mul_pd(t, w));
+ }
+ tv = _mm_hadd_pd(tv, tv);
+ _mm_storel_pd(&term, tv);
+#else
+ for(j = 0, term = 0.0; j < 4; j++)
+ {
+ double t = 0.0;
+
+ left = &(x1[80 * i + 20 * j]);
+ right = &(x2[80 * i + 20 * j]);
+
+ for(l = 0; l < 20; l++)
+ t += left[l] * right[l] * diagptable[j * 20 + l];
+
+ term += lg4_weights[j] * t;
+ }
+#endif
+
+ if(fastScaling)
+ term = log(fabs(term));
+ else
+ term = log(fabs(term)) + ((ex1[i] + ex2[i])*log(PLL_MINLIKELIHOOD));
+
+ sum += wptr[i] * term;
+ }
+ }
+
+ return sum;
+}
+
+#if (defined(__SSE3) || defined(__AVX))
+/** @ingroup evaluateLikelihoodGroup
+ @brief Evaluation of log likelihood of a tree using the \b GAMMA model of rate heterogeneity
+ and the memory saving technique (Optimized SSE3 version for AA data)
+
+ This is the SSE3 optimized version of ::evaluateGAMMA_FLEX_SAVE for evaluating the log
+ likelihood at some edge whose two end-points (nodes) have the conditional likelihood
+ vectors \a x1 and \a x2. Please check ::evaluateGAMMA_FLEX_SAVE for more information and
+ a description of the input parameters
+*/
+static double evaluateGTRGAMMAPROT_GAPPED_SAVE (const boolean fastScaling, int *ex1, int *ex2, int *wptr,
+ double *x1, double *x2,
+ double *tipVector,
+ unsigned char *tipX1, int n, double *diagptable,
+ double *x1_gapColumn, double *x2_gapColumn, unsigned int *x1_gap, unsigned int *x2_gap)
+{
+ double sum = 0.0, term;
+ int i, j, l;
+ double
+ *left,
+ *right,
+ *x1_ptr = x1,
+ *x2_ptr = x2,
+ *x1v,
+ *x2v;
+
+ if(tipX1)
+ {
+ for (i = 0; i < n; i++)
+ {
+ if(x2_gap[i / 32] & mask32[i % 32])
+ x2v = x2_gapColumn;
+ else
+ {
+ x2v = x2_ptr;
+ x2_ptr += 80;
+ }
+
+ __m128d tv = _mm_setzero_pd();
+ left = &(tipVector[20 * tipX1[i]]);
+
+ for(j = 0, term = 0.0; j < 4; j++)
+ {
+ double *d = &diagptable[j * 20];
+ right = &(x2v[20 * j]);
+ for(l = 0; l < 20; l+=2)
+ {
+ __m128d mul = _mm_mul_pd(_mm_load_pd(&left[l]), _mm_load_pd(&right[l]));
+ tv = _mm_add_pd(tv, _mm_mul_pd(mul, _mm_load_pd(&d[l])));
+ }
+ }
+
+ tv = _mm_hadd_pd(tv, tv);
+ _mm_storel_pd(&term, tv);
+
+
+ if(!fastScaling)
+ term = log(0.25 * fabs(term)) + (ex2[i] * log(PLL_MINLIKELIHOOD));
+ else
+ term = log(0.25 * fabs(term));
+
+ sum += wptr[i] * term;
+ }
+ }
+ else
+ {
+ for (i = 0; i < n; i++)
+ {
+ if(x1_gap[i / 32] & mask32[i % 32])
+ x1v = x1_gapColumn;
+ else
+ {
+ x1v = x1_ptr;
+ x1_ptr += 80;
+ }
+
+ if(x2_gap[i / 32] & mask32[i % 32])
+ x2v = x2_gapColumn;
+ else
+ {
+ x2v = x2_ptr;
+ x2_ptr += 80;
+ }
+
+ __m128d tv = _mm_setzero_pd();
+
+ for(j = 0, term = 0.0; j < 4; j++)
+ {
+ double *d = &diagptable[j * 20];
+ left = &(x1v[20 * j]);
+ right = &(x2v[20 * j]);
+
+ for(l = 0; l < 20; l+=2)
+ {
+ __m128d mul = _mm_mul_pd(_mm_load_pd(&left[l]), _mm_load_pd(&right[l]));
+ tv = _mm_add_pd(tv, _mm_mul_pd(mul, _mm_load_pd(&d[l])));
+ }
+ }
+ tv = _mm_hadd_pd(tv, tv);
+ _mm_storel_pd(&term, tv);
+
+
+ if(!fastScaling)
+ term = log(0.25 * fabs(term)) + ((ex1[i] + ex2[i]) * log(PLL_MINLIKELIHOOD));
+ else
+ term = log(0.25 * fabs(term));
+
+
+ sum += wptr[i] * term;
+ }
+ }
+
+ return sum;
+}
+
+
+
+/** @ingroup evaluateLikelihoodGroup
+ @brief Evaluation of log likelihood of a tree using the \b GAMMA model of rate heterogeneity
+ (Optimized SSE3 version for AA data)
+
+ This is the SSE3 optimized version of ::evaluateGAMMA_FLEX for evaluating the log
+ likelihood at some edge whose two end-points (nodes) have the conditional likelihood
+ vectors \a x1 and \a x2. Please check ::evaluateGAMMA_FLEX for more information and
+ a description of the common input parameters
+*/
+static double evaluateGTRGAMMAPROT (const boolean fastScaling, int *ex1, int *ex2, int *wptr,
+ double *x1, double *x2,
+ double *tipVector,
+ unsigned char *tipX1, int n, double *diagptable)
+{
+ double sum = 0.0, term;
+ int i, j, l;
+ double *left, *right;
+
+ if(tipX1)
+ {
+ for (i = 0; i < n; i++)
+ {
+
+ __m128d tv = _mm_setzero_pd();
+ left = &(tipVector[20 * tipX1[i]]);
+
+ for(j = 0, term = 0.0; j < 4; j++)
+ {
+ double *d = &diagptable[j * 20];
+ right = &(x2[80 * i + 20 * j]);
+ for(l = 0; l < 20; l+=2)
+ {
+ __m128d mul = _mm_mul_pd(_mm_load_pd(&left[l]), _mm_load_pd(&right[l]));
+ tv = _mm_add_pd(tv, _mm_mul_pd(mul, _mm_load_pd(&d[l])));
+ }
+ }
+ tv = _mm_hadd_pd(tv, tv);
+ _mm_storel_pd(&term, tv);
+
+
+ if(!fastScaling)
+ term = log(0.25 * fabs(term)) + (ex2[i] * log(PLL_MINLIKELIHOOD));
+ else
+ term = log(0.25 * fabs(term));
+
+
+ sum += wptr[i] * term;
+ }
+ }
+ else
+ {
+ for (i = 0; i < n; i++)
+ {
+ __m128d tv = _mm_setzero_pd();
+
+ for(j = 0, term = 0.0; j < 4; j++)
+ {
+ double *d = &diagptable[j * 20];
+ left = &(x1[80 * i + 20 * j]);
+ right = &(x2[80 * i + 20 * j]);
+
+ for(l = 0; l < 20; l+=2)
+ {
+ __m128d mul = _mm_mul_pd(_mm_load_pd(&left[l]), _mm_load_pd(&right[l]));
+ tv = _mm_add_pd(tv, _mm_mul_pd(mul, _mm_load_pd(&d[l])));
+ }
+ }
+ tv = _mm_hadd_pd(tv, tv);
+ _mm_storel_pd(&term, tv);
+
+
+ if(!fastScaling)
+ term = log(0.25 * fabs(term)) + ((ex1[i] + ex2[i]) * log(PLL_MINLIKELIHOOD));
+ else
+ term = log(0.25 * fabs(term));
+
+
+ sum += wptr[i] * term;
+ }
+ }
+
+ return sum;
+}
+
+
+/** @ingroup evaluateLikelihoodGroup
+ @brief Evaluation of log likelihood of a tree using the \b CAT model of rate heterogeneity
+ (Optimized SSE3 version for AA data)
+
+ This is the SSE3 optimized version of ::evaluateCAT_FLEX for evaluating the log
+ likelihood at some edge whose two end-points (nodes) have the conditional likelihood
+ vectors \a x1 and \a x2. Please check ::evaluateCAT_FLEX for more information and
+ a description of the common input parameters
+*/
+static double evaluateGTRCATPROT (const boolean fastScaling, int *ex1, int *ex2, int *cptr, int *wptr,
+ double *x1, double *x2, double *tipVector,
+ unsigned char *tipX1, int n, double *diagptable_start)
+{
+ double sum = 0.0, term;
+ double *diagptable, *left, *right;
+ int i, l;
+
+ if(tipX1)
+ {
+ for (i = 0; i < n; i++)
+ {
+ left = &(tipVector[20 * tipX1[i]]);
+ right = &(x2[20 * i]);
+
+ diagptable = &diagptable_start[20 * cptr[i]];
+
+ __m128d tv = _mm_setzero_pd();
+
+ for(l = 0; l < 20; l+=2)
+ {
+ __m128d lv = _mm_load_pd(&left[l]);
+ __m128d rv = _mm_load_pd(&right[l]);
+ __m128d mul = _mm_mul_pd(lv, rv);
+ __m128d dv = _mm_load_pd(&diagptable[l]);
+
+ tv = _mm_add_pd(tv, _mm_mul_pd(mul, dv));
+ }
+
+ tv = _mm_hadd_pd(tv, tv);
+ _mm_storel_pd(&term, tv);
+
+ if(!fastScaling)
+ term = log(fabs(term)) + (ex2[i] * log(PLL_MINLIKELIHOOD));
+ else
+ term = log(fabs(term));
+
+ sum += wptr[i] * term;
+ }
+ }
+ else
+ {
+
+ for (i = 0; i < n; i++)
+ {
+ left = &x1[20 * i];
+ right = &x2[20 * i];
+
+ diagptable = &diagptable_start[20 * cptr[i]];
+
+ __m128d tv = _mm_setzero_pd();
+
+ for(l = 0; l < 20; l+=2)
+ {
+ __m128d lv = _mm_load_pd(&left[l]);
+ __m128d rv = _mm_load_pd(&right[l]);
+ __m128d mul = _mm_mul_pd(lv, rv);
+ __m128d dv = _mm_load_pd(&diagptable[l]);
+
+ tv = _mm_add_pd(tv, _mm_mul_pd(mul, dv));
+ }
+
+ tv = _mm_hadd_pd(tv, tv);
+ _mm_storel_pd(&term, tv);
+
+ if(!fastScaling)
+ term = log(fabs(term)) + ((ex1[i] + ex2[i]) * log(PLL_MINLIKELIHOOD));
+ else
+ term = log(fabs(term));
+
+ sum += wptr[i] * term;
+ }
+ }
+
+ return sum;
+}
+
+
+/** @ingroup evaluateLikelihoodGroup
+ @brief Evaluation of log likelihood of a tree using the \b CAT model of rate heterogeneity with memory saving
+ (Optimized SSE3 version for AA data)
+
+ This is the SSE3 optimized version of ::evaluateCAT_FLEX_SAVE for evaluating the log
+ likelihood at some edge whose two end-points (nodes) have the conditional likelihood
+ vectors \a x1 and \a x2. Please check ::evaluateCAT_FLEX_SAVE for more information and
+ a description of the common input parameters
+*/
+static double evaluateGTRCATPROT_SAVE (const boolean fastScaling, int *ex1, int *ex2, int *cptr, int *wptr,
+ double *x1, double *x2, double *tipVector,
+ unsigned char *tipX1, int n, double *diagptable_start,
+ double *x1_gapColumn, double *x2_gapColumn, unsigned int *x1_gap, unsigned int *x2_gap)
+{
+ double
+ sum = 0.0,
+ term,
+ *diagptable,
+ *left,
+ *right,
+ *left_ptr = x1,
+ *right_ptr = x2;
+
+ int
+ i,
+ l;
+
+ if(tipX1)
+ {
+ for (i = 0; i < n; i++)
+ {
+ left = &(tipVector[20 * tipX1[i]]);
+
+ if(isGap(x2_gap, i))
+ right = x2_gapColumn;
+ else
+ {
+ right = right_ptr;
+ right_ptr += 20;
+ }
+
+ diagptable = &diagptable_start[20 * cptr[i]];
+
+ __m128d tv = _mm_setzero_pd();
+
+ for(l = 0; l < 20; l+=2)
+ {
+ __m128d lv = _mm_load_pd(&left[l]);
+ __m128d rv = _mm_load_pd(&right[l]);
+ __m128d mul = _mm_mul_pd(lv, rv);
+ __m128d dv = _mm_load_pd(&diagptable[l]);
+
+ tv = _mm_add_pd(tv, _mm_mul_pd(mul, dv));
+ }
+
+ tv = _mm_hadd_pd(tv, tv);
+ _mm_storel_pd(&term, tv);
+
+ if(!fastScaling)
+ term = log(fabs(term)) + (ex2[i] * log(PLL_MINLIKELIHOOD));
+ else
+ term = log(fabs(term));
+
+ sum += wptr[i] * term;
+ }
+ }
+ else
+ {
+
+ for (i = 0; i < n; i++)
+ {
+ if(isGap(x1_gap, i))
+ left = x1_gapColumn;
+ else
+ {
+ left = left_ptr;
+ left_ptr += 20;
+ }
+
+ if(isGap(x2_gap, i))
+ right = x2_gapColumn;
+ else
+ {
+ right = right_ptr;
+ right_ptr += 20;
+ }
+
+ diagptable = &diagptable_start[20 * cptr[i]];
+
+ __m128d tv = _mm_setzero_pd();
+
+ for(l = 0; l < 20; l+=2)
+ {
+ __m128d lv = _mm_load_pd(&left[l]);
+ __m128d rv = _mm_load_pd(&right[l]);
+ __m128d mul = _mm_mul_pd(lv, rv);
+ __m128d dv = _mm_load_pd(&diagptable[l]);
+
+ tv = _mm_add_pd(tv, _mm_mul_pd(mul, dv));
+ }
+
+ tv = _mm_hadd_pd(tv, tv);
+ _mm_storel_pd(&term, tv);
+
+ if(!fastScaling)
+ term = log(fabs(term)) + ((ex1[i] + ex2[i]) * log(PLL_MINLIKELIHOOD));
+ else
+ term = log(fabs(term));
+
+ sum += wptr[i] * term;
+ }
+ }
+
+ return sum;
+}
+
+
+/** @ingroup evaluateLikelihoodGroup
+ @brief Evaluation of log likelihood of a tree using the \b CAT model of rate heterogeneity with memory saving
+ (Optimized SSE3 version for DNA data)
+
+ This is the SSE3 optimized version of ::evaluateCAT_FLEX_SAVE for evaluating the log
+ likelihood at some edge whose two end-points (nodes) have the conditional likelihood
+ vectors \a x1 and \a x2. Please check ::evaluateCAT_FLEX_SAVE for more information and
+ a description of the common input parameters
+*/
+static double evaluateGTRCAT_SAVE (const boolean fastScaling, int *ex1, int *ex2, int *cptr, int *wptr,
+ double *x1_start, double *x2_start, double *tipVector,
+ unsigned char *tipX1, int n, double *diagptable_start,
+ double *x1_gapColumn, double *x2_gapColumn, unsigned int *x1_gap, unsigned int *x2_gap)
+{
+ double sum = 0.0, term;
+ int i;
+
+ double *diagptable,
+ *x1,
+ *x2,
+ *x1_ptr = x1_start,
+ *x2_ptr = x2_start;
+
+ if(tipX1)
+ {
+ for (i = 0; i < n; i++)
+ {
+ double t[2] __attribute__ ((aligned (PLL_BYTE_ALIGNMENT)));
+ __m128d x1v1, x1v2, x2v1, x2v2, dv1, dv2;
+
+ x1 = &(tipVector[4 * tipX1[i]]);
+
+ if(isGap(x2_gap, i))
+ x2 = x2_gapColumn;
+ else
+ {
+ x2 = x2_ptr;
+ x2_ptr += 4;
+ }
+
+ diagptable = &diagptable_start[4 * cptr[i]];
+
+ x1v1 = _mm_load_pd(&x1[0]);
+ x1v2 = _mm_load_pd(&x1[2]);
+ x2v1 = _mm_load_pd(&x2[0]);
+ x2v2 = _mm_load_pd(&x2[2]);
+ dv1 = _mm_load_pd(&diagptable[0]);
+ dv2 = _mm_load_pd(&diagptable[2]);
+
+ x1v1 = _mm_mul_pd(x1v1, x2v1);
+ x1v1 = _mm_mul_pd(x1v1, dv1);
+
+ x1v2 = _mm_mul_pd(x1v2, x2v2);
+ x1v2 = _mm_mul_pd(x1v2, dv2);
+
+ x1v1 = _mm_add_pd(x1v1, x1v2);
+
+ _mm_store_pd(t, x1v1);
+
+ if(!fastScaling)
+ term = log(fabs(t[0] + t[1])) + (ex2[i] * log(PLL_MINLIKELIHOOD));
+ else
+ term = log(fabs(t[0] + t[1]));
+
+
+
+ sum += wptr[i] * term;
+ }
+ }
+ else
+ {
+ for (i = 0; i < n; i++)
+ {
+ double t[2] __attribute__ ((aligned (PLL_BYTE_ALIGNMENT)));
+ __m128d x1v1, x1v2, x2v1, x2v2, dv1, dv2;
+
+ if(isGap(x1_gap, i))
+ x1 = x1_gapColumn;
+ else
+ {
+ x1 = x1_ptr;
+ x1_ptr += 4;
+ }
+
+ if(isGap(x2_gap, i))
+ x2 = x2_gapColumn;
+ else
+ {
+ x2 = x2_ptr;
+ x2_ptr += 4;
+ }
+
+ diagptable = &diagptable_start[4 * cptr[i]];
+
+ x1v1 = _mm_load_pd(&x1[0]);
+ x1v2 = _mm_load_pd(&x1[2]);
+ x2v1 = _mm_load_pd(&x2[0]);
+ x2v2 = _mm_load_pd(&x2[2]);
+ dv1 = _mm_load_pd(&diagptable[0]);
+ dv2 = _mm_load_pd(&diagptable[2]);
+
+ x1v1 = _mm_mul_pd(x1v1, x2v1);
+ x1v1 = _mm_mul_pd(x1v1, dv1);
+
+ x1v2 = _mm_mul_pd(x1v2, x2v2);
+ x1v2 = _mm_mul_pd(x1v2, dv2);
+
+ x1v1 = _mm_add_pd(x1v1, x1v2);
+
+ _mm_store_pd(t, x1v1);
+
+
+ if(!fastScaling)
+ term = log(fabs(t[0] + t[1])) + ((ex1[i] + ex2[i]) * log(PLL_MINLIKELIHOOD));
+ else
+ term = log(fabs(t[0] + t[1]));
+
+ sum += wptr[i] * term;
+ }
+ }
+
+ return sum;
+}
+
+
+/** @ingroup evaluateLikelihoodGroup
+ @brief Evaluation of log likelihood of a tree using the \b GAMMA model of rate heterogeneity with memory saving
+ (Optimized SSE3 version for DNA data)
+
+ This is the SSE3 optimized version of ::evaluateGAMMA_FLEX_SAVE for evaluating the log
+ likelihood at some edge whose two end-points (nodes) have the conditional likelihood
+ vectors \a x1 and \a x2. Please check ::evaluateGAMMA_FLEX_SAVE for more information and
+ a description of the common input parameters
+*/
+static double evaluateGTRGAMMA_GAPPED_SAVE(const boolean fastScaling, int *ex1, int *ex2, int *wptr,
+ double *x1_start, double *x2_start,
+ double *tipVector,
+ unsigned char *tipX1, const int n, double *diagptable,
+ double *x1_gapColumn, double *x2_gapColumn, unsigned int *x1_gap, unsigned int *x2_gap)
+{
+ double sum = 0.0, term;
+ int i, j;
+ double
+ *x1,
+ *x2,
+ *x1_ptr = x1_start,
+ *x2_ptr = x2_start;
+
+
+
+ if(tipX1)
+ {
+
+
+ for (i = 0; i < n; i++)
+ {
+ double t[2] __attribute__ ((aligned (PLL_BYTE_ALIGNMENT)));
+ __m128d termv, x1v, x2v, dv;
+
+ x1 = &(tipVector[4 * tipX1[i]]);
+ if(x2_gap[i / 32] & mask32[i % 32])
+ x2 = x2_gapColumn;
+ else
+ {
+ x2 = x2_ptr;
+ x2_ptr += 16;
+ }
+
+
+ termv = _mm_set1_pd(0.0);
+
+ for(j = 0; j < 4; j++)
+ {
+ x1v = _mm_load_pd(&x1[0]);
+ x2v = _mm_load_pd(&x2[j * 4]);
+ dv = _mm_load_pd(&diagptable[j * 4]);
+
+ x1v = _mm_mul_pd(x1v, x2v);
+ x1v = _mm_mul_pd(x1v, dv);
+
+ termv = _mm_add_pd(termv, x1v);
+
+ x1v = _mm_load_pd(&x1[2]);
+ x2v = _mm_load_pd(&x2[j * 4 + 2]);
+ dv = _mm_load_pd(&diagptable[j * 4 + 2]);
+
+ x1v = _mm_mul_pd(x1v, x2v);
+ x1v = _mm_mul_pd(x1v, dv);
+
+ termv = _mm_add_pd(termv, x1v);
+ }
+
+ _mm_store_pd(t, termv);
+
+ if(!fastScaling)
+ term = log(0.25 * fabs(t[0] + t[1])) + (ex2[i] * log(PLL_MINLIKELIHOOD));
+ else
+ term = log(0.25 * fabs(t[0] + t[1]));
+
+
+ sum += wptr[i] * term;
+ }
+ }
+ else
+ {
+
+ for (i = 0; i < n; i++)
+ {
+
+ double t[2] __attribute__ ((aligned (PLL_BYTE_ALIGNMENT)));
+ __m128d termv, x1v, x2v, dv;
+
+ if(x1_gap[i / 32] & mask32[i % 32])
+ x1 = x1_gapColumn;
+ else
+ {
+ x1 = x1_ptr;
+ x1_ptr += 16;
+ }
+
+ if(x2_gap[i / 32] & mask32[i % 32])
+ x2 = x2_gapColumn;
+ else
+ {
+ x2 = x2_ptr;
+ x2_ptr += 16;
+ }
+
+ termv = _mm_set1_pd(0.0);
+
+ for(j = 0; j < 4; j++)
+ {
+ x1v = _mm_load_pd(&x1[j * 4]);
+ x2v = _mm_load_pd(&x2[j * 4]);
+ dv = _mm_load_pd(&diagptable[j * 4]);
+
+ x1v = _mm_mul_pd(x1v, x2v);
+ x1v = _mm_mul_pd(x1v, dv);
+
+ termv = _mm_add_pd(termv, x1v);
+
+ x1v = _mm_load_pd(&x1[j * 4 + 2]);
+ x2v = _mm_load_pd(&x2[j * 4 + 2]);
+ dv = _mm_load_pd(&diagptable[j * 4 + 2]);
+
+ x1v = _mm_mul_pd(x1v, x2v);
+ x1v = _mm_mul_pd(x1v, dv);
+
+ termv = _mm_add_pd(termv, x1v);
+ }
+
+ _mm_store_pd(t, termv);
+
+ if(!fastScaling)
+ term = log(0.25 * fabs(t[0] + t[1])) + ((ex1[i] + ex2[i]) * log(PLL_MINLIKELIHOOD));
+ else
+ term = log(0.25 * fabs(t[0] + t[1]));
+
+
+ sum += wptr[i] * term;
+ }
+ }
+
+ return sum;
+}
+
+
+/** @ingroup evaluateLikelihoodGroup
+ @brief Evaluation of log likelihood of a tree using the \b GAMMA model of rate heterogeneity (Optimized SSE3 version for DNA data)
+
+ This is the SSE3 optimized version of ::evaluateGAMMA_FLEX for evaluating the log
+ likelihood at some edge whose two end-points (nodes) have the conditional likelihood
+ vectors \a x1 and \a x2. Please check ::evaluateGAMMA_FLEX for more information and
+ a description of the common input parameters
+*/
+static double evaluateGTRGAMMA(const boolean fastScaling, int *ex1, int *ex2, int *wptr,
+ double *x1_start, double *x2_start,
+ double *tipVector,
+ unsigned char *tipX1, const int n, double *diagptable)
+{
+ double sum = 0.0, term;
+ int i, j;
+
+ double *x1, *x2;
+
+
+
+ if(tipX1)
+ {
+ for (i = 0; i < n; i++)
+ {
+
+ double t[2] __attribute__ ((aligned (PLL_BYTE_ALIGNMENT)));
+ __m128d termv, x1v, x2v, dv;
+
+ x1 = &(tipVector[4 * tipX1[i]]);
+ x2 = &x2_start[16 * i];
+
+
+ termv = _mm_set1_pd(0.0);
+
+ for(j = 0; j < 4; j++)
+ {
+ x1v = _mm_load_pd(&x1[0]);
+ x2v = _mm_load_pd(&x2[j * 4]);
+ dv = _mm_load_pd(&diagptable[j * 4]);
+
+ x1v = _mm_mul_pd(x1v, x2v);
+ x1v = _mm_mul_pd(x1v, dv);
+
+ termv = _mm_add_pd(termv, x1v);
+
+ x1v = _mm_load_pd(&x1[2]);
+ x2v = _mm_load_pd(&x2[j * 4 + 2]);
+ dv = _mm_load_pd(&diagptable[j * 4 + 2]);
+
+ x1v = _mm_mul_pd(x1v, x2v);
+ x1v = _mm_mul_pd(x1v, dv);
+
+ termv = _mm_add_pd(termv, x1v);
+ }
+
+ _mm_store_pd(t, termv);
+
+
+ if(!fastScaling)
+ term = log(0.25 * fabs(t[0] + t[1])) + (ex2[i] * log(PLL_MINLIKELIHOOD));
+ else
+ term = log(0.25 * fabs(t[0] + t[1]));
+
+
+
+ sum += wptr[i] * term;
+ }
+ }
+ else
+ {
+ for (i = 0; i < n; i++)
+ {
+
+ double t[2] __attribute__ ((aligned (PLL_BYTE_ALIGNMENT)));
+ __m128d termv, x1v, x2v, dv;
+
+
+ x1 = &x1_start[16 * i];
+ x2 = &x2_start[16 * i];
+
+
+ termv = _mm_set1_pd(0.0);
+
+ for(j = 0; j < 4; j++)
+ {
+ x1v = _mm_load_pd(&x1[j * 4]);
+ x2v = _mm_load_pd(&x2[j * 4]);
+ dv = _mm_load_pd(&diagptable[j * 4]);
+
+ x1v = _mm_mul_pd(x1v, x2v);
+ x1v = _mm_mul_pd(x1v, dv);
+
+ termv = _mm_add_pd(termv, x1v);
+
+ x1v = _mm_load_pd(&x1[j * 4 + 2]);
+ x2v = _mm_load_pd(&x2[j * 4 + 2]);
+ dv = _mm_load_pd(&diagptable[j * 4 + 2]);
+
+ x1v = _mm_mul_pd(x1v, x2v);
+ x1v = _mm_mul_pd(x1v, dv);
+
+ termv = _mm_add_pd(termv, x1v);
+ }
+
+ _mm_store_pd(t, termv);
+
+ if(!fastScaling)
+ term = log(0.25 * fabs(t[0] + t[1])) + ((ex1[i] + ex2[i]) * log(PLL_MINLIKELIHOOD));
+ else
+ term = log(0.25 * fabs(t[0] + t[1]));
+
+
+
+ sum += wptr[i] * term;
+ }
+ }
+
+ return sum;
+}
+
+
+/** @ingroup evaluateLikelihoodGroup
+ @brief Evaluation of log likelihood of a tree using the \b CAT model of rate heterogeneity (Optimized SSE3 version for DNA data)
+
+ This is the SSE3 optimized version of ::evaluateCAT_FLEX for evaluating the log
+ likelihood at some edge whose two end-points (nodes) have the conditional likelihood
+ vectors \a x1 and \a x2. Please check ::evaluateCAT_FLEX for more information and
+ a description of the common input parameters
+*/
+static double evaluateGTRCAT (const boolean fastScaling, int *ex1, int *ex2, int *cptr, int *wptr,
+ double *x1_start, double *x2_start, double *tipVector,
+ unsigned char *tipX1, int n, double *diagptable_start)
+{
+ double sum = 0.0, term;
+ int i;
+
+ double *diagptable, *x1, *x2;
+
+ if(tipX1)
+ {
+ for (i = 0; i < n; i++)
+ {
+
+ double t[2] __attribute__ ((aligned (PLL_BYTE_ALIGNMENT)));
+ __m128d x1v1, x1v2, x2v1, x2v2, dv1, dv2;
+
+ x1 = &(tipVector[4 * tipX1[i]]);
+ x2 = &x2_start[4 * i];
+
+ diagptable = &diagptable_start[4 * cptr[i]];
+
+
+ x1v1 = _mm_load_pd(&x1[0]);
+ x1v2 = _mm_load_pd(&x1[2]);
+ x2v1 = _mm_load_pd(&x2[0]);
+ x2v2 = _mm_load_pd(&x2[2]);
+ dv1 = _mm_load_pd(&diagptable[0]);
+ dv2 = _mm_load_pd(&diagptable[2]);
+
+ x1v1 = _mm_mul_pd(x1v1, x2v1);
+ x1v1 = _mm_mul_pd(x1v1, dv1);
+
+ x1v2 = _mm_mul_pd(x1v2, x2v2);
+ x1v2 = _mm_mul_pd(x1v2, dv2);
+
+ x1v1 = _mm_add_pd(x1v1, x1v2);
+
+ _mm_store_pd(t, x1v1);
+
+ if(!fastScaling)
+ term = log(fabs(t[0] + t[1])) + (ex2[i] * log(PLL_MINLIKELIHOOD));
+ else
+ term = log(fabs(t[0] + t[1]));
+
+
+ sum += wptr[i] * term;
+ }
+ }
+ else
+ {
+ for (i = 0; i < n; i++)
+ {
+
+ double t[2] __attribute__ ((aligned (PLL_BYTE_ALIGNMENT)));
+ __m128d x1v1, x1v2, x2v1, x2v2, dv1, dv2;
+
+ x1 = &x1_start[4 * i];
+ x2 = &x2_start[4 * i];
+
+ diagptable = &diagptable_start[4 * cptr[i]];
+
+
+ x1v1 = _mm_load_pd(&x1[0]);
+ x1v2 = _mm_load_pd(&x1[2]);
+ x2v1 = _mm_load_pd(&x2[0]);
+ x2v2 = _mm_load_pd(&x2[2]);
+ dv1 = _mm_load_pd(&diagptable[0]);
+ dv2 = _mm_load_pd(&diagptable[2]);
+
+ x1v1 = _mm_mul_pd(x1v1, x2v1);
+ x1v1 = _mm_mul_pd(x1v1, dv1);
+
+ x1v2 = _mm_mul_pd(x1v2, x2v2);
+ x1v2 = _mm_mul_pd(x1v2, dv2);
+
+ x1v1 = _mm_add_pd(x1v1, x1v2);
+
+ _mm_store_pd(t, x1v1);
+
+ if(!fastScaling)
+ term = log(fabs(t[0] + t[1])) + ((ex1[i] + ex2[i]) * log(PLL_MINLIKELIHOOD));
+ else
+ term = log(fabs(t[0] + t[1]));
+
+
+ sum += wptr[i] * term;
+ }
+ }
+
+ return sum;
+}
+
+
+
+
+
+#endif
diff --git a/src/evaluatePartialGenericSpecial.c b/src/evaluatePartialGenericSpecial.c
new file mode 100644
index 0000000..f23156b
--- /dev/null
+++ b/src/evaluatePartialGenericSpecial.c
@@ -0,0 +1,1373 @@
+/* RAxML-VI-HPC (version 2.2) a program for sequential and parallel estimation of phylogenetic trees
+ * Copyright August 2006 by Alexandros Stamatakis
+ *
+ * Partially derived from
+ * fastDNAml, a program for estimation of phylogenetic trees from sequences by Gary J. Olsen
+ *
+ * and
+ *
+ * Programs of the PHYLIP package by Joe Felsenstein.
+
+ * This program is free software; you may redistribute it and/or modify its
+ * 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.
+ *
+ *
+ * For any other enquiries send an Email to Alexandros Stamatakis
+ * Alexandros.Stamatakis at epfl.ch
+ *
+ * When publishing work that is based on the results from RAxML-VI-HPC please cite:
+ *
+ * Alexandros Stamatakis:"RAxML-VI-HPC: maximum likelihood-based phylogenetic analyses with thousands of taxa and mixed models".
+ * Bioinformatics 2006; doi: 10.1093/bioinformatics/btl446
+ */
+
+#include "mem_alloc.h"
+
+#ifndef WIN32
+#include <unistd.h>
+#endif
+
+#include <math.h>
+#include <time.h>
+#include <stdlib.h>
+#include <stdio.h>
+#include <ctype.h>
+#include <string.h>
+#include <assert.h>
+#include "pll.h"
+#include "pllInternal.h"
+
+#ifdef __SSE3
+#include <xmmintrin.h>
+#include <pmmintrin.h>
+#endif
+
+
+/* optimized implementation for computing per-site log likelihoods under CAT and GAMMA for DNA and protein data */
+
+#if (defined(__SSE3) || defined(__AVX))
+static inline void computeVectorGTRCATPROT(double *lVector, int *eVector, double ki, int i, double qz, double rz,
+ traversalInfo *ti, double *EIGN, double *EI, double *EV, double *tipVector,
+ unsigned char **yVector, int mxtips);
+
+static double evaluatePartialGTRCATPROT(int i, double ki, int counter, traversalInfo *ti, double qz,
+ int w, double *EIGN, double *EI, double *EV,
+ double *tipVector, unsigned char **yVector,
+ int branchReference, int mxtips);
+
+static inline void computeVectorGTRGAMMAPROT(double *lVector, int *eVector, double *gammaRates, int i, double qz, double rz,
+ traversalInfo *ti, double *EIGN, double *EI, double *EV, double *tipVector,
+ unsigned char **yVector, int mxtips);
+
+static double evaluatePartialGTRGAMMAPROT(int i, int counter, traversalInfo *ti, double qz,
+ int w, double *EIGN, double *EI, double *EV,
+ double *tipVector, unsigned char **yVector,
+ double *gammaRates,
+ int branchReference, int mxtips);
+
+static inline void computeVectorGTRCAT(double *lVector, int *eVector, double ki, int i, double qz, double rz,
+ traversalInfo *ti, double *EIGN, double *EI, double *EV, double *tipVector,
+ unsigned char **yVector, int mxtips);
+
+static double evaluatePartialGTRCAT(int i, double ki, int counter, traversalInfo *ti, double qz,
+ int w, double *EIGN, double *EI, double *EV,
+ double *tipVector, unsigned char **yVector,
+ int branchReference, int mxtips);
+
+static inline void computeVectorGTRCAT_BINARY(double *lVector, int *eVector, double ki, int i, double qz, double rz,
+ traversalInfo *ti, double *EIGN, double *EI, double *EV, double *tipVector,
+ unsigned char **yVector, int mxtips);
+
+static double evaluatePartialGTRCAT_BINARY(int i, double ki, int counter, traversalInfo *ti, double qz,
+ int w, double *EIGN, double *EI, double *EV,
+ double *tipVector, unsigned char **yVector,
+ int branchReference, int mxtips);
+
+static double evaluatePartialGTRGAMMA(int i, int counter, traversalInfo *ti, double qz,
+ int w, double *EIGN, double *EI, double *EV,
+ double *tipVector, unsigned char **yVector,
+ double *gammaRates,
+ int branchReference, int mxtips);
+#endif
+
+/* the next two functions are generic non-optimized versions of the per-site log likelihood calculations,
+ but only under the CAT model. There are no generic implementations available for GAMMA yet, since
+ these functions were not needed in RAxML. However there exist optimized functions for GAMMA further below.
+ The only use of the CAT functions was to optimize per-site rates based on their likelihood for the CAT
+ model of rate heterogeneity. */
+
+
+static inline void computeVectorCAT_FLEX(double *lVector, int *eVector, double ki, int i, double qz, double rz,
+ traversalInfo *ti, double *EIGN, double *EI, double *EV, double *tipVector,
+ unsigned char **yVector, int mxtips, const int states)
+{
+ /* allocate some space we need */
+
+ double
+ *d1 = (double *)rax_malloc(sizeof(double) * states),
+ *d2 = (double *)rax_malloc(sizeof(double) * states),
+ *x1px2 = (double *)rax_malloc(sizeof(double) * states),
+ ump_x1,
+ ump_x2,
+ lz1,
+ lz2,
+ *x1,
+ *x2,
+ *x3;
+
+ int
+ scale,
+ j,
+ k,
+ pNumber = ti->pNumber,
+ rNumber = ti->rNumber,
+ qNumber = ti->qNumber;
+
+ /*
+ lVector holds the space for computing ancestral probablities on a single column of the tree
+ hence under CAT we index the current space required to store the parent ancestral probability vector
+ by multiplying the number of states with the offset in the array given by the inner node number
+ */
+
+ x3 = &lVector[states * (pNumber - mxtips)];
+
+ /* do a case switch to figure out how to index the child nodes x1 and x2,
+ analogous to the standard newview implementation.
+ Note the index i that we use to index the specific tip poistion/index
+ for which we want to compute the per-site log likelihood */
+
+ switch(ti->tipCase)
+ {
+ case PLL_TIP_TIP:
+ x1 = &(tipVector[states * yVector[qNumber][i]]);
+ x2 = &(tipVector[states * yVector[rNumber][i]]);
+ break;
+ case PLL_TIP_INNER:
+ x1 = &(tipVector[states * yVector[qNumber][i]]);
+ x2 = &(lVector[states * (rNumber - mxtips)]);
+ break;
+ case PLL_INNER_INNER:
+ x1 = &(lVector[states * (qNumber - mxtips)]);
+ x2 = &(lVector[states * (rNumber - mxtips)]);
+ break;
+ default:
+ assert(0);
+ }
+
+ /* multiply the branch lengths with the evolutionary rate */
+
+ lz1 = qz * ki;
+ lz2 = rz * ki;
+
+
+ /* exponentiate the branch lengths using the eigenvalues */
+
+ d1[0] = x1[0];
+ d2[0] = x2[0];
+
+
+ for(j = 1; j < states; j++)
+ {
+ d1[j] = x1[j] * exp(EIGN[j] * lz1);
+ d2[j] = x2[j] * exp(EIGN[j] * lz2);
+ }
+
+
+ /* now loop over all states */
+
+ for(j = 0; j < states; j++)
+ {
+ ump_x1 = 0.0;
+ ump_x2 = 0.0;
+
+ for(k = 0; k < states; k++)
+ {
+ ump_x1 += d1[k] * EI[j * states + k];
+ ump_x2 += d2[k] * EI[j * states + k];
+ }
+
+ x1px2[j] = ump_x1 * ump_x2;
+ }
+
+ for(j = 0; j < states; j++)
+ x3[j] = 0.0;
+
+ /* multiply the result of looping over all states with the eigenvector matrix EV */
+
+ for(j = 0; j < states; j++)
+ for(k = 0; k < states; k++)
+ x3[k] += x1px2[j] * EV[states * j + k];
+
+ /* now determine if we need to scale the #states entries in x[3] to avoid
+ numerical underflow. */
+
+
+ scale = 1;
+ for(j = 0; scale && (j < states); j++)
+ scale = ((x3[j] < PLL_MINLIKELIHOOD) && (x3[j] > PLL_MINUSMINLIKELIHOOD));
+
+ /* if we need to scale, we multiply all probabilities of the site with 2^256
+ and increment the scaling counter by 1.
+ The counter eVector is used for tracking/counting the number of scaling events
+ at the site i for which we are computing the per-site log likelihood such that
+ we can "undo" the scaling multiplications when we compute the log likelihood of the site
+ at the virtual root */
+
+ if(scale)
+ {
+ for(j = 0; j < states; j++)
+ x3[j] *= PLL_TWOTOTHE256;
+ *eVector = *eVector + 1;
+ }
+
+ rax_free(d1);
+ rax_free(d2);
+ rax_free(x1px2);
+
+ return;
+}
+
+
+/* the following function computes the per-site log likelihood of a given site i at the virtual root of the tree.
+ as input it takes the indeix i, of the site, the evolutionary rate ki (for computing Q^(rt) where r = ki)
+ the traversalDescriptor defining the full tree traversal (felsenstein pruning algo)
+ the branch length at the root qz, the weigth of the site pattern w, i.e., how many identical sites have been compressed
+ into the current site pattern, the eigenvalues etc (EIGN, EI, EV) associated to the Eigenvector/Eigenvalue decomposition
+ of the given instataneous substitution matrix Q, the tipVector lookup table for obtaining tip probability vectors,
+ a pointer to the raw sequence data at the tips, a branch index (to get the correct branch length/index into the correct branch
+ if -M is used, i.e., a per-partition branch length estimate is deployed, and finally the maximum number of tips in the comprehensive tree
+ as well as the number of states in the current model. */
+
+#if (!defined(__SSE3) && !defined(__AVX))
+static double evaluatePartialCAT_FLEX(int i, double ki, int counter, traversalInfo *ti, double qz,
+ int w, double *EIGN, double *EI, double *EV,
+ double *tipVector, unsigned char **yVector,
+ int branchReference, int mxtips, const int states)
+{
+ int
+ scale = 0,
+ k;
+
+ double
+ /* lVector is a temporary buffer to store the ancestral probability vactors of
+ a single site, thus we allocate states * mxtips space for storing probability values.
+ Essentially only (states * (mxtips - 2)) space would be required, but I was to lazy
+ to think if it has to be -1 or -2 here */
+ * lVector = NULL,
+ * d = NULL,
+ lz,
+ term,
+ *x1,
+ *x2;
+
+
+
+ traversalInfo
+ *trav = &ti[0];
+
+ rax_posix_memalign ((void **)&lVector, PLL_BYTE_ALIGNMENT, sizeof(double) * states * mxtips);
+ rax_posix_memalign ((void **)&d, PLL_BYTE_ALIGNMENT, sizeof(double) * states);
+ /* make sure that at one end of the branch into which we have placed the virtual root
+ there actually is a tip!*/
+
+ assert(isTip(trav->pNumber, mxtips));
+
+ /* for the tip we alread have the data, so just set the left probability vector to the
+ corresponding address in the pre-computed tipVector[] lookup table */
+
+ x1 = &(tipVector[states * yVector[trav->pNumber][i]]);
+
+ /* now iterate over the traversal descriptor that contains the nodes of the tree in the order required
+ by the Felsenstein pruning algorithm */
+
+ for(k = 1; k < counter; k++)
+ {
+ /* obtain the branch lengths and take the logarithms */
+
+ double
+ qz = ti[k].qz[branchReference],
+ rz = ti[k].rz[branchReference];
+
+ qz = (qz > PLL_ZMIN) ? log(qz) : log(PLL_ZMIN);
+ rz = (rz > PLL_ZMIN) ? log(rz) : log(PLL_ZMIN);
+
+ /* invoke essentially a newview() for one site on the entry k of the traversal descriptor.
+ counter should always correspond to the number of inner nodes in the tree for which we need
+ to compute ancestral probability values */
+
+ computeVectorCAT_FLEX(lVector, &scale, ki, i, qz, rz, &ti[k],
+ EIGN, EI, EV,
+ tipVector, yVector, mxtips, states);
+ }
+
+ /* now the ancestral probability values for site i at the node to the right of the virtual root
+ are available and correctly computed, such that we can set the pointer to the right vector x2
+ to the corresponding entry */
+
+ x2 = &lVector[states * (trav->qNumber - mxtips)];
+
+ /* a paranoic assertion */
+
+ assert(0 <= (trav->qNumber - mxtips) && (trav->qNumber - mxtips) < mxtips);
+
+ /* now just compute the log likelihood score of this site */
+
+ if(qz < PLL_ZMIN)
+ lz = PLL_ZMIN;
+ lz = log(qz);
+ lz *= ki;
+
+ d[0] = 1.0;
+
+ for(k = 1; k < states; k++)
+ d[k] = exp (EIGN[k] * lz);
+
+ term = 0.0;
+
+ for(k = 0; k < states; k++)
+ term += x1[k] * x2[k] * d[k];
+
+ /* note the "scale * log(PLL_MINLIKELIHOOD)" term here which we use to undo/revert the scaling multiplications
+ such that we obtain a correct log likelihood score. The integer variable scale, contains the number of times
+ we had to scale (multiply by 2^256) for site i only during a full tree traversal using Felsenstein's algorithm */
+
+ term = log(fabs(term)) + (scale * log(PLL_MINLIKELIHOOD));
+
+ /* multiply with the site pattern weight (site pattern compression factor */
+
+ term = term * w;
+
+ /* free the memory space used for likelihood computations on this site */
+
+ rax_free(lVector);
+ rax_free(d);
+
+ return term;
+}
+#endif
+
+/* this is the top-level function that can be called from other parts of the code.
+ As input it takes the tree data structure, the site index, the evolutionary rate ki,
+ and the model index (partition index. It will return the
+ log likelihood of site i.
+ An important pre-condition is that the tree traversal descriptor must contain
+ a full tree traversal starting at a tip !
+
+ Note that, if you wamt to obtain per-site log likes for other altered model parameters such
+ as the Q matrix, you will have do re-invoke the eigenvalue/eigenvector decomposition prior
+ to calling the function below.
+*/
+
+double evaluatePartialGeneric (pllInstance *tr, partitionList *pr, int i, double ki, int _model)
+{
+ double
+ result;
+
+
+ int
+ branchReference,
+
+ /* number of states of the data type in this partition */
+ states = pr->partitionData[_model]->states;
+
+ /* SOS ATTENTION: note the different indexing used for the parallel and sequential versions ! */
+
+#if (defined(_FINE_GRAIN_MPI) || defined(_USE_PTHREADS))
+ int index = i;
+#else
+ int index = i - pr->partitionData[_model]->lower;
+#endif
+
+ /* here we figure out if all partitions are linked via the same branch length, that is,
+ if we are conducting a joint branch length estimate or a per-partition branch length estimate */
+
+ if(pr->perGeneBranchLengths && pr->numberOfPartitions>1)
+ branchReference = _model;
+ else
+ branchReference = 0;
+
+ /* for the generic function implementation we only offer the CAT implementation for computing/optimizing per-site evolutionary rates */
+
+#if (!defined(__SSE3) && !defined(__AVX))
+ if(tr->rateHetModel == PLL_CAT)
+ result = evaluatePartialCAT_FLEX(index, ki, tr->td[0].count, tr->td[0].ti, tr->td[0].ti[0].qz[branchReference],
+ pr->partitionData[_model]->wgt[index],
+ pr->partitionData[_model]->EIGN,
+ pr->partitionData[_model]->EI,
+ pr->partitionData[_model]->EV,
+ pr->partitionData[_model]->tipVector,
+ pr->partitionData[_model]->yVector, branchReference, tr->mxtips, states);
+ else
+ /*
+ the per-site site likelihood function should only be called for the CAT model
+ under the GAMMA model this is required only for estimating per-site protein models
+ which has however been removed in this version of the code
+ */
+ assert(0);
+
+
+#else
+ /* switch over the number of states of the data in the current model/partition */
+ switch(states)
+ {
+ case 2: /* BINARY */
+ assert(!tr->saveMemory);
+ assert(tr->rateHetModel == PLL_CAT);
+
+ result = evaluatePartialGTRCAT_BINARY(index, ki, tr->td[0].count, tr->td[0].ti,
+ tr->td[0].ti[0].qz[branchReference],
+ pr->partitionData[_model]->wgt[index],
+ pr->partitionData[_model]->EIGN,
+ pr->partitionData[_model]->EI,
+ pr->partitionData[_model]->EV,
+ pr->partitionData[_model]->tipVector,
+ pr->partitionData[_model]->yVector,
+ branchReference,
+ tr->mxtips);
+ break;
+
+ case 4: /* DNA */
+ /* switch over CAT versus GAMMA and pass all model parameters for the respective partition to the respective functions */
+ if(tr->rateHetModel == PLL_CAT)
+ result = evaluatePartialGTRCAT(index, ki, tr->td[0].count, tr->td[0].ti, tr->td[0].ti[0].qz[branchReference],
+ pr->partitionData[_model]->wgt[index],
+ pr->partitionData[_model]->EIGN,
+ pr->partitionData[_model]->EI,
+ pr->partitionData[_model]->EV,
+ pr->partitionData[_model]->tipVector,
+ pr->partitionData[_model]->yVector, branchReference, tr->mxtips);
+ else
+ result = evaluatePartialGTRGAMMA(index, tr->td[0].count, tr->td[0].ti, tr->td[0].ti[0].qz[branchReference],
+ pr->partitionData[_model]->wgt[index],
+ pr->partitionData[_model]->EIGN,
+ pr->partitionData[_model]->EI,
+ pr->partitionData[_model]->EV,
+ pr->partitionData[_model]->tipVector,
+ pr->partitionData[_model]->yVector,
+ pr->partitionData[_model]->gammaRates,
+ branchReference, tr->mxtips);
+
+ break;
+ case 20: /* proteins */
+ if(tr->rateHetModel == PLL_CAT)
+ result = evaluatePartialGTRCATPROT(index, ki, tr->td[0].count, tr->td[0].ti, tr->td[0].ti[0].qz[branchReference],
+ pr->partitionData[_model]->wgt[index],
+ pr->partitionData[_model]->EIGN,
+ pr->partitionData[_model]->EI,
+ pr->partitionData[_model]->EV,
+ pr->partitionData[_model]->tipVector,
+ pr->partitionData[_model]->yVector, branchReference, tr->mxtips);
+ else
+ result = evaluatePartialGTRGAMMAPROT(index, tr->td[0].count, tr->td[0].ti, tr->td[0].ti[0].qz[branchReference],
+ pr->partitionData[_model]->wgt[index],
+ pr->partitionData[_model]->EIGN,
+ pr->partitionData[_model]->EI,
+ pr->partitionData[_model]->EV,
+ pr->partitionData[_model]->tipVector,
+ pr->partitionData[_model]->yVector,
+ pr->partitionData[_model]->gammaRates,
+ branchReference, tr->mxtips);
+ break;
+ default:
+ assert(0);
+ }
+ #endif
+
+
+ return result;
+}
+
+#if (defined(__SSE3) || defined(__AVX))
+/* optimized function implementations for computing per-site log likelihoods under CAT and GAMMA for protein and
+ DNA data.
+ The structure is analoguous as above with some data- and model-specific optimizations and vectorizations.
+*/
+
+static inline void computeVectorGTRCAT_BINARY(double *lVector, int *eVector, double ki, int i, double qz, double rz,
+ traversalInfo *ti, double *EIGN, double *EI, double *EV, double *tipVector,
+ unsigned char **yVector, int mxtips)
+{
+ double d1, d2, ump_x1, ump_x2, x1px2[2], lz1, lz2;
+ double *x1, *x2, *x3;
+ int
+ j, k,
+ pNumber = ti->pNumber,
+ rNumber = ti->rNumber,
+ qNumber = ti->qNumber;
+
+ x3 = &lVector[2 * (pNumber - mxtips)];
+
+ switch(ti->tipCase)
+ {
+ case PLL_TIP_TIP:
+ x1 = &(tipVector[2 * yVector[qNumber][i]]);
+ x2 = &(tipVector[2 * yVector[rNumber][i]]);
+ break;
+ case PLL_TIP_INNER:
+ x1 = &(tipVector[2 * yVector[qNumber][i]]);
+ x2 = &lVector[2 * (rNumber - mxtips)];
+ break;
+ case PLL_INNER_INNER:
+ x1 = &lVector[2 * (qNumber - mxtips)];
+ x2 = &lVector[2 * (rNumber - mxtips)];
+ break;
+ default:
+ assert(0);
+ }
+
+ lz1 = qz * ki;
+ lz2 = rz * ki;
+
+
+ d1 = x1[1] * exp(EIGN[1] * lz1);
+ d2 = x2[1] * exp(EIGN[1] * lz2);
+
+ for(j = 0; j < 2; j++)
+ {
+ ump_x1 = x1[0];
+ ump_x2 = x2[0];
+
+ ump_x1 += d1 * EI[j * 2 + 1];
+ ump_x2 += d2 * EI[j * 2 + 1];
+
+ x1px2[j] = ump_x1 * ump_x2;
+ }
+
+ for(j = 0; j < 2; j++)
+ x3[j] = 0.0;
+
+ for(j = 0; j < 2; j++)
+ for(k = 0; k < 2; k++)
+ x3[k] += x1px2[j] * EV[2 * j + k];
+
+
+ if (x3[0] < PLL_MINLIKELIHOOD && x3[0] > PLL_MINUSMINLIKELIHOOD &&
+ x3[1] < PLL_MINLIKELIHOOD && x3[1] > PLL_MINUSMINLIKELIHOOD
+ )
+ {
+ x3[0] *= PLL_TWOTOTHE256;
+ x3[1] *= PLL_TWOTOTHE256;
+ *eVector = *eVector + 1;
+ }
+
+ return;
+}
+
+static double evaluatePartialGTRCAT_BINARY(int i, double ki, int counter, traversalInfo *ti, double qz,
+ int w, double *EIGN, double *EI, double *EV,
+ double *tipVector, unsigned char **yVector,
+ int branchReference, int mxtips)
+{
+ double lz, term;
+ double d;
+ double *x1, *x2;
+ int scale = 0, k;
+ double *lVector = (double *)malloc(sizeof(double) * 2 * mxtips);
+ traversalInfo *trav = &ti[0];
+
+ assert(isTip(trav->pNumber, mxtips));
+
+ x1 = &(tipVector[2 * yVector[trav->pNumber][i]]);
+
+ for(k = 1; k < counter; k++)
+ {
+ double
+ qz = ti[k].qz[branchReference],
+ rz = ti[k].rz[branchReference];
+
+ qz = (qz > PLL_ZMIN) ? log(qz) : log(PLL_ZMIN);
+ rz = (rz > PLL_ZMIN) ? log(rz) : log(PLL_ZMIN);
+
+ computeVectorGTRCAT_BINARY(lVector, &scale, ki, i, qz, rz, &ti[k],
+ EIGN, EI, EV,
+ tipVector, yVector, mxtips);
+ }
+
+ x2 = &lVector[2 * (trav->qNumber - mxtips)];
+
+ assert(0 <= (trav->qNumber - mxtips) && (trav->qNumber - mxtips) < mxtips);
+
+ if(qz < PLL_ZMIN)
+ lz = PLL_ZMIN;
+ lz = log(qz);
+ lz *= ki;
+
+ d = exp(EIGN[1] * lz);
+
+ term = x1[0] * x2[0];
+ term += x1[1] * x2[1] * d;
+
+ term = log(fabs(term)) + (scale * log(PLL_MINLIKELIHOOD));
+
+ term = term * w;
+
+ free(lVector);
+
+ return term;
+}
+
+
+
+static inline void computeVectorGTRGAMMAPROT(double *lVector, int *eVector, double *gammaRates, int i, double qz, double rz,
+ traversalInfo *ti, double *EIGN, double *EI, double *EV, double *tipVector,
+ unsigned char **yVector, int mxtips)
+{
+ double
+ *x1,
+ *x2,
+ *x3;
+
+ int
+ s,
+ pNumber = ti->pNumber,
+ rNumber = ti->rNumber,
+ qNumber = ti->qNumber,
+ index1[4],
+ index2[4];
+
+
+ x3 = &(lVector[80 * (pNumber - mxtips)]);
+
+ switch(ti->tipCase)
+ {
+ case PLL_TIP_TIP:
+ x1 = &(tipVector[20 * yVector[qNumber][i]]);
+ x2 = &(tipVector[20 * yVector[rNumber][i]]);
+ for(s = 0; s < 4; s++)
+ {
+ index1[s] = 0;
+ index2[s] = 0;
+ }
+ break;
+ case PLL_TIP_INNER:
+ x1 = &(tipVector[20 * yVector[qNumber][i]]);
+ x2 = &( lVector[80 * (rNumber - mxtips)]);
+ for(s = 0; s < 4; s++)
+ index1[s] = 0;
+ for(s = 0; s < 4; s++)
+ index2[s] = s;
+ break;
+ case PLL_INNER_INNER:
+ x1 = &(lVector[80 * (qNumber - mxtips)]);
+ x2 = &(lVector[80 * (rNumber - mxtips)]);
+ for(s = 0; s < 4; s++)
+ {
+ index1[s] = s;
+ index2[s] = s;
+ }
+ break;
+ default:
+ assert(0);
+ }
+
+ {
+ double
+ e1[20] __attribute__ ((aligned (PLL_BYTE_ALIGNMENT))),
+ e2[20] __attribute__ ((aligned (PLL_BYTE_ALIGNMENT))),
+ d1[20] __attribute__ ((aligned (PLL_BYTE_ALIGNMENT))),
+ d2[20] __attribute__ ((aligned (PLL_BYTE_ALIGNMENT))),
+ lz1, lz2;
+
+ int
+ l,
+ k,
+ scale,
+ j;
+
+ for(j = 0; j < 4; j++)
+ {
+ lz1 = qz * gammaRates[j];
+ lz2 = rz * gammaRates[j];
+
+ e1[0] = 1.0;
+ e2[0] = 1.0;
+
+ for(l = 1; l < 20; l++)
+ {
+ e1[l] = exp(EIGN[l] * lz1);
+ e2[l] = exp(EIGN[l] * lz2);
+ }
+
+ for(l = 0; l < 20; l+=2)
+ {
+ __m128d d1v = _mm_mul_pd(_mm_load_pd(&x1[20 * index1[j] + l]), _mm_load_pd(&e1[l]));
+ __m128d d2v = _mm_mul_pd(_mm_load_pd(&x2[20 * index2[j] + l]), _mm_load_pd(&e2[l]));
+
+ _mm_store_pd(&d1[l], d1v);
+ _mm_store_pd(&d2[l], d2v);
+ }
+
+ __m128d zero = _mm_setzero_pd();
+
+ for(l = 0; l < 20; l+=2)
+ _mm_store_pd(&x3[j * 20 + l], zero);
+
+ for(l = 0; l < 20; l++)
+ {
+ double *ev = &EV[l * 20];
+ __m128d ump_x1v = _mm_setzero_pd();
+ __m128d ump_x2v = _mm_setzero_pd();
+ __m128d x1px2v;
+
+ for(k = 0; k < 20; k+=2)
+ {
+ __m128d eiv = _mm_load_pd(&EI[20 * l + k]);
+ __m128d d1v = _mm_load_pd(&d1[k]);
+ __m128d d2v = _mm_load_pd(&d2[k]);
+ ump_x1v = _mm_add_pd(ump_x1v, _mm_mul_pd(d1v, eiv));
+ ump_x2v = _mm_add_pd(ump_x2v, _mm_mul_pd(d2v, eiv));
+ }
+
+ ump_x1v = _mm_hadd_pd(ump_x1v, ump_x1v);
+ ump_x2v = _mm_hadd_pd(ump_x2v, ump_x2v);
+
+ x1px2v = _mm_mul_pd(ump_x1v, ump_x2v);
+
+ for(k = 0; k < 20; k+=2)
+ {
+ __m128d ex3v = _mm_load_pd(&x3[j * 20 + k]);
+ __m128d EVV = _mm_load_pd(&ev[k]);
+ ex3v = _mm_add_pd(ex3v, _mm_mul_pd(x1px2v, EVV));
+
+ _mm_store_pd(&x3[j * 20 + k], ex3v);
+ }
+ }
+ }
+
+ scale = 1;
+ for(l = 0; scale && (l < 80); l++)
+ scale = ((x3[l] < PLL_MINLIKELIHOOD) && (x3[l] > PLL_MINUSMINLIKELIHOOD));
+
+ if(scale)
+ {
+ __m128d twoto = _mm_set_pd(PLL_TWOTOTHE256, PLL_TWOTOTHE256);
+
+ for(l = 0; l < 80; l+=2)
+ {
+ __m128d ex3v = _mm_mul_pd(_mm_load_pd(&x3[l]),twoto);
+ _mm_store_pd(&x3[l], ex3v);
+ }
+
+ *eVector = *eVector + 1;
+ }
+
+ return;
+ }
+}
+
+static void computeVectorGTRGAMMA(double *lVector, int *eVector, double *gammaRates, int i, double qz, double rz,
+ traversalInfo *ti, double *EIGN, double *EI, double *EV, double *tipVector,
+ unsigned char **yVector, int mxtips)
+{
+ double
+ *x1,
+ *x2,
+ *x3;
+
+ int
+ s,
+ pNumber = ti->pNumber,
+ rNumber = ti->rNumber,
+ qNumber = ti->qNumber,
+ index1[4],
+ index2[4];
+
+
+ x3 = &(lVector[16 * (pNumber - mxtips)]);
+
+ switch(ti->tipCase)
+ {
+ case PLL_TIP_TIP:
+ x1 = &(tipVector[4 * yVector[qNumber][i]]);
+ x2 = &(tipVector[4 * yVector[rNumber][i]]);
+
+ for(s = 0; s < 4; s++)
+ {
+ index1[s] = 0;
+ index2[s] = 0;
+ }
+ break;
+ case PLL_TIP_INNER:
+ x1 = &(tipVector[4 * yVector[qNumber][i]]);
+ x2 = &(lVector[16 * (rNumber - mxtips)]);
+ for(s = 0; s < 4; s++)
+ {
+ index1[s] = 0;
+ index2[s] = s;
+ }
+ break;
+ case PLL_INNER_INNER:
+ x1 = &(lVector[16 * (qNumber - mxtips)]);
+ x2 = &(lVector[16 * (rNumber - mxtips)]);
+ for(s = 0; s < 4; s++)
+ {
+ index1[s] = s;
+ index2[s] = s;
+ }
+ break;
+ default:
+ assert(0);
+ }
+
+ {
+ double
+ e1[4] __attribute__ ((aligned (PLL_BYTE_ALIGNMENT))),
+ e2[4] __attribute__ ((aligned (PLL_BYTE_ALIGNMENT))),
+ d1[4] __attribute__ ((aligned (PLL_BYTE_ALIGNMENT))),
+ d2[4] __attribute__ ((aligned (PLL_BYTE_ALIGNMENT))),
+ lz1, lz2;
+
+ int
+ l,
+ k,
+ scale,
+ j;
+
+ for(j = 0; j < 4; j++)
+ {
+ lz1 = qz * gammaRates[j];
+ lz2 = rz * gammaRates[j];
+
+ e1[0] = 1.0;
+ e2[0] = 1.0;
+
+ for(l = 1; l < 4; l++)
+ {
+ e1[l] = exp(EIGN[l] * lz1);
+ e2[l] = exp(EIGN[l] * lz2);
+ }
+
+ for(l = 0; l < 4; l+=2)
+ {
+ __m128d d1v = _mm_mul_pd(_mm_load_pd(&x1[4 * index1[j] + l]), _mm_load_pd(&e1[l]));
+ __m128d d2v = _mm_mul_pd(_mm_load_pd(&x2[4 * index2[j] + l]), _mm_load_pd(&e2[l]));
+
+ _mm_store_pd(&d1[l], d1v);
+ _mm_store_pd(&d2[l], d2v);
+ }
+
+ __m128d zero = _mm_setzero_pd();
+
+ for(l = 0; l < 4; l+=2)
+ _mm_store_pd(&x3[j * 4 + l], zero);
+
+ for(l = 0; l < 4; l++)
+ {
+ double *ev = &EV[l * 4];
+ __m128d ump_x1v = _mm_setzero_pd();
+ __m128d ump_x2v = _mm_setzero_pd();
+ __m128d x1px2v;
+
+ for(k = 0; k < 4; k+=2)
+ {
+ __m128d eiv = _mm_load_pd(&EI[4 * l + k]);
+ __m128d d1v = _mm_load_pd(&d1[k]);
+ __m128d d2v = _mm_load_pd(&d2[k]);
+ ump_x1v = _mm_add_pd(ump_x1v, _mm_mul_pd(d1v, eiv));
+ ump_x2v = _mm_add_pd(ump_x2v, _mm_mul_pd(d2v, eiv));
+ }
+
+ ump_x1v = _mm_hadd_pd(ump_x1v, ump_x1v);
+ ump_x2v = _mm_hadd_pd(ump_x2v, ump_x2v);
+
+ x1px2v = _mm_mul_pd(ump_x1v, ump_x2v);
+
+ for(k = 0; k < 4; k+=2)
+ {
+ __m128d ex3v = _mm_load_pd(&x3[j * 4 + k]);
+ __m128d EVV = _mm_load_pd(&ev[k]);
+ ex3v = _mm_add_pd(ex3v, _mm_mul_pd(x1px2v, EVV));
+
+ _mm_store_pd(&x3[j * 4 + k], ex3v);
+ }
+ }
+ }
+
+
+ scale = 1;
+ for(l = 0; scale && (l < 16); l++)
+ scale = (PLL_ABS(x3[l]) < PLL_MINLIKELIHOOD);
+
+ if(scale)
+ {
+ __m128d twoto = _mm_set_pd(PLL_TWOTOTHE256, PLL_TWOTOTHE256);
+
+ for(l = 0; l < 16; l+=2)
+ {
+ __m128d ex3v = _mm_mul_pd(_mm_load_pd(&x3[l]),twoto);
+ _mm_store_pd(&x3[l], ex3v);
+ }
+
+ *eVector = *eVector + 1;
+ }
+
+ return;
+ }
+}
+
+
+static double evaluatePartialGTRGAMMAPROT(int i, int counter, traversalInfo *ti, double qz,
+ int w, double *EIGN, double *EI, double *EV,
+ double *tipVector, unsigned char **yVector,
+ double *gammaRates,
+ int branchReference, int mxtips)
+{
+ double lz, term;
+ double d[80];
+ double *x1, *x2;
+ int scale = 0, k, l, j;
+ double
+ *lVector = NULL,
+ myEI[400] __attribute__ ((aligned (PLL_BYTE_ALIGNMENT)));
+
+ traversalInfo
+ *trav = &ti[0];
+
+ rax_posix_memalign ((void **)&lVector, PLL_BYTE_ALIGNMENT, sizeof(double) * 80 * mxtips);
+
+ for(k = 0; k < 20; k++)
+ {
+ for(l = 0; l < 20; l++)
+ myEI[k * 20 + l] = EI[k * 20 + l];
+ }
+
+ assert(isTip(trav->pNumber, mxtips));
+
+ x1 = &(tipVector[20 * yVector[trav->pNumber][i]]);
+
+ for(k = 1; k < counter; k++)
+ {
+ double
+ qz = ti[k].qz[branchReference],
+ rz = ti[k].rz[branchReference];
+
+ qz = (qz > PLL_ZMIN) ? log(qz) : log(PLL_ZMIN);
+ rz = (rz > PLL_ZMIN) ? log(rz) : log(PLL_ZMIN);
+
+ computeVectorGTRGAMMAPROT(lVector, &scale, gammaRates, i, qz, rz,
+ &ti[k], EIGN, myEI, EV,
+ tipVector, yVector, mxtips);
+ }
+
+ x2 = &lVector[80 * (trav->qNumber - mxtips)];
+
+ assert(0 <= (trav->qNumber - mxtips) && (trav->qNumber - mxtips) < mxtips);
+
+ lz = qz;
+
+ if(qz < PLL_ZMIN)
+ lz = PLL_ZMIN;
+ lz = log(qz);
+
+
+
+ for(j = 0; j < 4; j++)
+ {
+ d[20 * j] = 1.0;
+ for(l = 1; l < 20; l++)
+ d[20 * j + l] = exp(EIGN[l] * lz * gammaRates[j]);
+ }
+
+
+ for(j = 0, term = 0.0; j < 4; j++)
+ {
+ for(l = 0; l < 20; l++)
+ term += x1[l] * x2[20 * j + l] * d[j * 20 + l];
+ }
+
+ term = log(0.25 * fabs(term)) + (scale * log(PLL_MINLIKELIHOOD));
+
+ term = term * w;
+
+ rax_free(lVector);
+
+
+ return term;
+}
+
+static double evaluatePartialGTRGAMMA(int i, int counter, traversalInfo *ti, double qz,
+ int w, double *EIGN, double *EI, double *EV,
+ double *tipVector, unsigned char **yVector,
+ double *gammaRates,
+ int branchReference, int mxtips)
+{
+ double lz, term;
+ double d[16];
+ double *x1, *x2;
+ int scale = 0, k, l, j;
+ double
+ *lVector = NULL,
+ myEI[16] __attribute__ ((aligned (PLL_BYTE_ALIGNMENT)));
+
+ traversalInfo
+ *trav = &ti[0];
+
+ rax_posix_memalign ((void **)&lVector, PLL_BYTE_ALIGNMENT, sizeof(double) * 16 * mxtips);
+
+ for(k = 0; k < 4; k++)
+ {
+ for(l = 0; l < 4; l++)
+ myEI[k * 4 + l] = EI[k * 4 + l];
+ }
+
+ assert(isTip(trav->pNumber, mxtips));
+
+ x1 = &(tipVector[4 * yVector[trav->pNumber][i]]);
+
+ for(k = 1; k < counter; k++)
+ {
+ double
+ qz = ti[k].qz[branchReference],
+ rz = ti[k].rz[branchReference];
+
+ qz = (qz > PLL_ZMIN) ? log(qz) : log(PLL_ZMIN);
+ rz = (rz > PLL_ZMIN) ? log(rz) : log(PLL_ZMIN);
+
+ computeVectorGTRGAMMA(lVector, &scale, gammaRates, i, qz, rz,
+ &ti[k], EIGN, myEI, EV,
+ tipVector, yVector, mxtips);
+ }
+
+ x2 = &lVector[16 * (trav->qNumber - mxtips)];
+
+ assert(0 <= (trav->qNumber - mxtips) && (trav->qNumber - mxtips) < mxtips);
+
+ if(qz < PLL_ZMIN)
+ lz = PLL_ZMIN;
+ lz = log(qz);
+
+ for(j = 0; j < 4; j++)
+ {
+ d[4 * j] = 1.0;
+ for(l = 1; l < 4; l++)
+ d[4 * j + l] = exp(EIGN[l] * lz * gammaRates[j]);
+ }
+
+
+ for(j = 0, term = 0.0; j < 4; j++)
+ {
+ for(l = 0; l < 4; l++)
+ term += x1[l] * x2[4 * j + l] * d[j * 4 + l];
+ }
+
+ term = log(0.25 * fabs(term)) + (scale * log(PLL_MINLIKELIHOOD));
+
+ term = term * w;
+
+ rax_free(lVector);
+
+
+ return term;
+}
+
+
+
+
+static inline void computeVectorGTRCAT(double *lVector, int *eVector, double ki, int i, double qz, double rz,
+ traversalInfo *ti, double *EIGN, double *EI, double *EV, double *tipVector,
+ unsigned char **yVector, int mxtips)
+{
+ double d1[3], d2[3], ump_x1, ump_x2, x1px2[4], lz1, lz2;
+ double *x1, *x2, *x3;
+ int j, k,
+ pNumber = ti->pNumber,
+ rNumber = ti->rNumber,
+ qNumber = ti->qNumber;
+
+ x3 = &lVector[4 * (pNumber - mxtips)];
+
+
+ switch(ti->tipCase)
+ {
+ case PLL_TIP_TIP:
+ x1 = &(tipVector[4 * yVector[qNumber][i]]);
+ x2 = &(tipVector[4 * yVector[rNumber][i]]);
+ break;
+ case PLL_TIP_INNER:
+ x1 = &(tipVector[4 * yVector[qNumber][i]]);
+ x2 = &lVector[4 * (rNumber - mxtips)];
+ break;
+ case PLL_INNER_INNER:
+ x1 = &lVector[4 * (qNumber - mxtips)];
+ x2 = &lVector[4 * (rNumber - mxtips)];
+ break;
+ default:
+ assert(0);
+ }
+
+ lz1 = qz * ki;
+ lz2 = rz * ki;
+
+ for(j = 0; j < 3; j++)
+ {
+ d1[j] =
+ x1[j + 1] *
+ exp(EIGN[j + 1] * lz1);
+ d2[j] = x2[j + 1] * exp(EIGN[j + 1] * lz2);
+ }
+
+
+ for(j = 0; j < 4; j++)
+ {
+ ump_x1 = x1[0];
+ ump_x2 = x2[0];
+ for(k = 0; k < 3; k++)
+ {
+ ump_x1 += d1[k] * EI[j * 4 + k + 1];
+ ump_x2 += d2[k] * EI[j * 4 + k + 1];
+ }
+ x1px2[j] = ump_x1 * ump_x2;
+ }
+
+ for(j = 0; j < 4; j++)
+ x3[j] = 0.0;
+
+ for(j = 0; j < 4; j++)
+ for(k = 0; k < 4; k++)
+ x3[k] += x1px2[j] * EV[4 * j + k];
+
+
+ if (x3[0] < PLL_MINLIKELIHOOD && x3[0] > PLL_MINUSMINLIKELIHOOD &&
+ x3[1] < PLL_MINLIKELIHOOD && x3[1] > PLL_MINUSMINLIKELIHOOD &&
+ x3[2] < PLL_MINLIKELIHOOD && x3[2] > PLL_MINUSMINLIKELIHOOD &&
+ x3[3] < PLL_MINLIKELIHOOD && x3[3] > PLL_MINUSMINLIKELIHOOD)
+ {
+ x3[0] *= PLL_TWOTOTHE256;
+ x3[1] *= PLL_TWOTOTHE256;
+ x3[2] *= PLL_TWOTOTHE256;
+ x3[3] *= PLL_TWOTOTHE256;
+ *eVector = *eVector + 1;
+ }
+
+ return;
+}
+
+
+
+
+
+
+
+
+static double evaluatePartialGTRCAT(int i, double ki, int counter, traversalInfo *ti, double qz,
+ int w, double *EIGN, double *EI, double *EV,
+ double *tipVector, unsigned char **yVector,
+ int branchReference, int mxtips)
+{
+ double lz, term;
+ double d[3];
+ double *x1, *x2, *lVector = NULL;
+ int scale = 0, k;
+ traversalInfo *trav = &ti[0];
+
+ rax_posix_memalign ((void **) &lVector, PLL_BYTE_ALIGNMENT, sizeof(double) * 4 * mxtips);
+
+ assert(isTip(trav->pNumber, mxtips));
+
+ x1 = &(tipVector[4 * yVector[trav->pNumber][i]]);
+
+ for(k = 1; k < counter; k++)
+ {
+ double
+ qz = ti[k].qz[branchReference],
+ rz = ti[k].rz[branchReference];
+
+ qz = (qz > PLL_ZMIN) ? log(qz) : log(PLL_ZMIN);
+ rz = (rz > PLL_ZMIN) ? log(rz) : log(PLL_ZMIN);
+
+ computeVectorGTRCAT(lVector, &scale, ki, i, qz, rz, &ti[k],
+ EIGN, EI, EV,
+ tipVector, yVector, mxtips);
+ }
+
+ x2 = &lVector[4 * (trav->qNumber - mxtips)];
+
+ assert(0 <= (trav->qNumber - mxtips) && (trav->qNumber - mxtips) < mxtips);
+
+ if(qz < PLL_ZMIN)
+ lz = PLL_ZMIN;
+ lz = log(qz);
+ lz *= ki;
+
+ d[0] = exp (EIGN[1] * lz);
+ d[1] = exp (EIGN[2] * lz);
+ d[2] = exp (EIGN[3] * lz);
+
+ term = x1[0] * x2[0];
+ term += x1[1] * x2[1] * d[0];
+ term += x1[2] * x2[2] * d[1];
+ term += x1[3] * x2[3] * d[2];
+
+ term = log(fabs(term)) + (scale * log(PLL_MINLIKELIHOOD));
+
+ term = term * w;
+
+ rax_free(lVector);
+
+ return term;
+}
+
+/**********************************************************************************/
+
+static inline void computeVectorGTRCATPROT(double *lVector, int *eVector, double ki, int i, double qz, double rz,
+ traversalInfo *ti, double *EIGN, double *EI, double *EV, double *tipVector,
+ unsigned char **yVector, int mxtips)
+{
+ double d1[20], d2[20], ump_x1, ump_x2, x1px2[20], lz1, lz2;
+ double *x1, *x2, *x3;
+ int j, k,
+ scale = 1,
+ pNumber = ti->pNumber,
+ rNumber = ti->rNumber,
+ qNumber = ti->qNumber;
+
+ x3 = &lVector[20 * (pNumber - mxtips)];
+
+
+ switch(ti->tipCase)
+ {
+ case PLL_TIP_TIP:
+ x1 = &(tipVector[20 * yVector[qNumber][i]]);
+ x2 = &(tipVector[20 * yVector[rNumber][i]]);
+ break;
+ case PLL_TIP_INNER:
+ x1 = &(tipVector[20 * yVector[qNumber][i]]);
+ x2 = &lVector[20 * (rNumber - mxtips)];
+ break;
+ case PLL_INNER_INNER:
+ x1 = &lVector[20 * (qNumber - mxtips)];
+ x2 = &lVector[20 * (rNumber - mxtips)];
+ break;
+ default:
+ assert(0);
+ }
+
+ lz1 = qz * ki;
+ lz2 = rz * ki;
+
+ d1[0] = x1[0];
+ d2[0] = x2[0];
+
+ for(j = 1; j < 20; j++)
+ {
+ d1[j] = x1[j] * exp(EIGN[j] * lz1);
+ d2[j] = x2[j] * exp(EIGN[j] * lz2);
+ }
+
+
+ for(j = 0; j < 20; j++)
+ {
+ ump_x1 = 0;
+ ump_x2 = 0;
+
+ for(k = 0; k < 20; k++)
+ {
+ ump_x1 += d1[k] * EI[j * 20 + k];
+ ump_x2 += d2[k] * EI[j * 20 + k];
+ }
+
+ x1px2[j] = ump_x1 * ump_x2;
+ }
+
+ for(j = 0; j < 20; j++)
+ x3[j] = 0.0;
+
+ for(j = 0; j < 20; j++)
+ for(k = 0; k < 20; k++)
+ x3[k] += x1px2[j] * EV[20 * j + k];
+
+ scale = 1;
+ for(k = 0; (k < 20) && scale; k++)
+ scale = ((x3[k] < PLL_MINLIKELIHOOD) && (x3[k] > PLL_MINUSMINLIKELIHOOD));
+
+ if(scale)
+ {
+
+ for(k = 0; k < 20; k++)
+ x3[k] *= PLL_TWOTOTHE256;
+
+ *eVector = *eVector + 1;
+ }
+
+ return;
+}
+
+
+
+
+
+
+
+
+static double evaluatePartialGTRCATPROT(int i, double ki, int counter, traversalInfo *ti, double qz,
+ int w, double *EIGN, double *EI, double *EV,
+ double *tipVector, unsigned char **yVector,
+ int branchReference, int mxtips)
+{
+ double lz, term;
+ double d[20];
+ double *x1, *x2, *lVector = NULL;
+ int scale = 0, k;
+
+ traversalInfo *trav = &ti[0];
+
+ rax_posix_memalign ((void **)&lVector, PLL_BYTE_ALIGNMENT, sizeof(double) * 20 * mxtips);
+
+ assert(isTip(trav->pNumber, mxtips));
+
+ x1 = &(tipVector[20 * yVector[trav->pNumber][i]]);
+
+ for(k = 1; k < counter; k++)
+ {
+ double
+ qz = ti[k].qz[branchReference],
+ rz = ti[k].rz[branchReference];
+
+ qz = (qz > PLL_ZMIN) ? log(qz) : log(PLL_ZMIN);
+ rz = (rz > PLL_ZMIN) ? log(rz) : log(PLL_ZMIN);
+
+ computeVectorGTRCATPROT(lVector, &scale, ki, i, qz, rz, &ti[k],
+ EIGN, EI, EV,
+ tipVector, yVector, mxtips);
+ }
+
+ x2 = &lVector[20 * (trav->qNumber - mxtips)];
+
+ assert(0 <= (trav->qNumber - mxtips) && (trav->qNumber - mxtips) < mxtips);
+
+ if(qz < PLL_ZMIN)
+ lz = PLL_ZMIN;
+ lz = log(qz);
+ lz *= ki;
+
+ d[0] = 1.0;
+
+ for(k = 1; k < 20; k++)
+ d[k] = exp (EIGN[k] * lz);
+
+
+ term = 0.0;
+ for(k = 0; k < 20; k++)
+ term += x1[k] * x2[k] * d[k];
+
+ term = log(fabs(term)) + (scale * log(PLL_MINLIKELIHOOD));
+
+ term = term * w;
+
+ rax_free(lVector);
+
+ return term;
+}
+
+/******************************************/
+
+
+
+#endif
diff --git a/src/fastDNAparsimony.c b/src/fastDNAparsimony.c
new file mode 100644
index 0000000..a12fcb1
--- /dev/null
+++ b/src/fastDNAparsimony.c
@@ -0,0 +1,1893 @@
+/**
+ * PLL (version 1.0.0) a software library for phylogenetic inference
+ * Copyright (C) 2013 Tomas Flouri and Alexandros Stamatakis
+ *
+ * Derived from
+ * RAxML-HPC, a program for sequential and parallel estimation of phylogenetic
+ * trees by Alexandros Stamatakis
+ *
+ * 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 3 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, see <http://www.gnu.org/licenses/>.
+ *
+ * For any other enquiries send an Email to Tomas Flouri
+ * Tomas.Flouri at h-its.org
+ *
+ * When publishing work that uses PLL please cite PLL
+ *
+ * @file fastDNAparsimony.c
+ */
+#include "mem_alloc.h"
+
+#ifndef WIN32
+#include <sys/times.h>
+#include <sys/types.h>
+#include <sys/time.h>
+#include <unistd.h>
+#endif
+
+#include <limits.h>
+#include <math.h>
+#include <time.h>
+#include <stdlib.h>
+#include <stdio.h>
+#include <ctype.h>
+#include <string.h>
+#include <stdint.h>
+#include <assert.h>
+
+#if defined(__MIC_NATIVE)
+
+#include <immintrin.h>
+
+#define INTS_PER_VECTOR 16
+#define LONG_INTS_PER_VECTOR 8
+#define INT_TYPE __m512i
+#define CAST double*
+#define SET_ALL_BITS_ONE _mm512_set1_epi32(0xFFFFFFFF)
+#define SET_ALL_BITS_ZERO _mm512_setzero_epi32()
+#define VECTOR_LOAD _mm512_load_epi32
+#define VECTOR_STORE _mm512_store_epi32
+#define VECTOR_BIT_AND _mm512_and_epi32
+#define VECTOR_BIT_OR _mm512_or_epi32
+#define VECTOR_AND_NOT _mm512_andnot_epi32
+
+#elif defined(__AVX)
+
+#include <xmmintrin.h>
+#include <immintrin.h>
+#include <pmmintrin.h>
+
+#define INTS_PER_VECTOR 8
+#define LONG_INTS_PER_VECTOR 4
+#define INT_TYPE __m256d
+#define CAST double*
+#define SET_ALL_BITS_ONE (__m256d)_mm256_set_epi32(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF)
+#define SET_ALL_BITS_ZERO (__m256d)_mm256_set_epi32(0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000)
+#define VECTOR_LOAD _mm256_load_pd
+#define VECTOR_BIT_AND _mm256_and_pd
+#define VECTOR_BIT_OR _mm256_or_pd
+#define VECTOR_STORE _mm256_store_pd
+#define VECTOR_AND_NOT _mm256_andnot_pd
+
+#elif (defined(__SSE3))
+
+#include <xmmintrin.h>
+#include <pmmintrin.h>
+
+#define INTS_PER_VECTOR 4
+#ifdef __i386__
+#define LONG_INTS_PER_VECTOR 4
+#else
+#define LONG_INTS_PER_VECTOR 2
+#endif
+#define INT_TYPE __m128i
+#define CAST __m128i*
+#define SET_ALL_BITS_ONE _mm_set_epi32(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF)
+#define SET_ALL_BITS_ZERO _mm_set_epi32(0x00000000, 0x00000000, 0x00000000, 0x00000000)
+#define VECTOR_LOAD _mm_load_si128
+#define VECTOR_BIT_AND _mm_and_si128
+#define VECTOR_BIT_OR _mm_or_si128
+#define VECTOR_STORE _mm_store_si128
+#define VECTOR_AND_NOT _mm_andnot_si128
+
+#endif
+
+
+#include "pll.h"
+#include "pllInternal.h"
+
+static boolean tipHomogeneityCheckerPars(pllInstance *tr, nodeptr p, int grouping);
+
+extern const unsigned int mask32[32];
+/* vector-specific stuff */
+
+
+extern double masterTime;
+
+/************************************************ pop count stuff ***********************************************/
+
+ unsigned int bitcount_32_bit(unsigned int i)
+{
+ return ((unsigned int) __builtin_popcount(i));
+}
+
+/* bit count for 64 bit integers */
+
+inline unsigned int bitcount_64_bit(unsigned long i)
+{
+ return ((unsigned int) __builtin_popcountl(i));
+}
+
+/* bit count for 128 bit SSE3 and 256 bit AVX registers */
+
+#if (defined(__SSE3) || defined(__AVX))
+static inline unsigned int vectorPopcount(INT_TYPE v)
+{
+ unsigned long
+ counts[LONG_INTS_PER_VECTOR] __attribute__ ((aligned (PLL_BYTE_ALIGNMENT)));
+
+ int
+ i,
+ sum = 0;
+
+ VECTOR_STORE((CAST)counts, v);
+
+ for(i = 0; i < LONG_INTS_PER_VECTOR; i++)
+ sum += __builtin_popcountl(counts[i]);
+
+ return ((unsigned int)sum);
+}
+#endif
+
+
+
+/********************************DNA FUNCTIONS *****************************************************************/
+
+
+static int checkerPars(pllInstance *tr, nodeptr p)
+{
+ int group = tr->constraintVector[p->number];
+
+ if(isTip(p->number, tr->mxtips))
+ {
+ group = tr->constraintVector[p->number];
+ return group;
+ }
+ else
+ {
+ if(group != -9)
+ return group;
+
+ group = checkerPars(tr, p->next->back);
+ if(group != -9)
+ return group;
+
+ group = checkerPars(tr, p->next->next->back);
+ if(group != -9)
+ return group;
+
+ return -9;
+ }
+}
+
+static boolean tipHomogeneityCheckerPars(pllInstance *tr, nodeptr p, int grouping)
+{
+ if(isTip(p->number, tr->mxtips))
+ {
+ if(tr->constraintVector[p->number] != grouping)
+ return PLL_FALSE;
+ else
+ return PLL_TRUE;
+ }
+ else
+ {
+ return (tipHomogeneityCheckerPars(tr, p->next->back, grouping) && tipHomogeneityCheckerPars(tr, p->next->next->back,grouping));
+ }
+}
+
+static void getxnodeLocal (nodeptr p)
+{
+ nodeptr s;
+
+ if((s = p->next)->xPars || (s = s->next)->xPars)
+ {
+ p->xPars = s->xPars;
+ s->xPars = 0;
+ }
+
+ assert(p->next->xPars || p->next->next->xPars || p->xPars);
+
+}
+
+static void computeTraversalInfoParsimony(nodeptr p, int *ti, int *counter, int maxTips, boolean full)
+{
+ nodeptr
+ q = p->next->back,
+ r = p->next->next->back;
+
+ if(! p->xPars)
+ getxnodeLocal(p);
+
+ if(full)
+ {
+ if(q->number > maxTips)
+ computeTraversalInfoParsimony(q, ti, counter, maxTips, full);
+
+ if(r->number > maxTips)
+ computeTraversalInfoParsimony(r, ti, counter, maxTips, full);
+ }
+ else
+ {
+ if(q->number > maxTips && !q->xPars)
+ computeTraversalInfoParsimony(q, ti, counter, maxTips, full);
+
+ if(r->number > maxTips && !r->xPars)
+ computeTraversalInfoParsimony(r, ti, counter, maxTips, full);
+ }
+
+
+ ti[*counter] = p->number;
+ ti[*counter + 1] = q->number;
+ ti[*counter + 2] = r->number;
+ *counter = *counter + 4;
+}
+
+
+
+
+
+
+
+#if (defined(__SSE3) || defined(__AVX))
+
+static void newviewParsimonyIterativeFast(pllInstance *tr, partitionList *pr)
+{
+ INT_TYPE
+ allOne = SET_ALL_BITS_ONE;
+
+ int
+ model,
+ *ti = tr->ti,
+ count = ti[0],
+ index;
+
+ for(index = 4; index < count; index += 4)
+ {
+ unsigned int
+ totalScore = 0;
+
+ size_t
+ pNumber = (size_t)ti[index],
+ qNumber = (size_t)ti[index + 1],
+ rNumber = (size_t)ti[index + 2];
+
+ for(model = 0; model < pr->numberOfPartitions; model++)
+ {
+ size_t
+ k,
+ states = pr->partitionData[model]->states,
+ width = pr->partitionData[model]->parsimonyLength;
+
+ unsigned int
+ i;
+
+ switch(states)
+ {
+ case 2:
+ {
+ parsimonyNumber
+ *left[2],
+ *right[2],
+ *this[2];
+
+ for(k = 0; k < 2; k++)
+ {
+ left[k] = &(pr->partitionData[model]->parsVect[(width * 2 * qNumber) + width * k]);
+ right[k] = &(pr->partitionData[model]->parsVect[(width * 2 * rNumber) + width * k]);
+ this[k] = &(pr->partitionData[model]->parsVect[(width * 2 * pNumber) + width * k]);
+ }
+
+ for(i = 0; i < width; i += INTS_PER_VECTOR)
+ {
+ INT_TYPE
+ s_r, s_l, v_N,
+ l_A, l_C,
+ v_A, v_C;
+
+ s_l = VECTOR_LOAD((CAST)(&left[0][i]));
+ s_r = VECTOR_LOAD((CAST)(&right[0][i]));
+ l_A = VECTOR_BIT_AND(s_l, s_r);
+ v_A = VECTOR_BIT_OR(s_l, s_r);
+
+ s_l = VECTOR_LOAD((CAST)(&left[1][i]));
+ s_r = VECTOR_LOAD((CAST)(&right[1][i]));
+ l_C = VECTOR_BIT_AND(s_l, s_r);
+ v_C = VECTOR_BIT_OR(s_l, s_r);
+
+ v_N = VECTOR_BIT_OR(l_A, l_C);
+
+ VECTOR_STORE((CAST)(&this[0][i]), VECTOR_BIT_OR(l_A, VECTOR_AND_NOT(v_N, v_A)));
+ VECTOR_STORE((CAST)(&this[1][i]), VECTOR_BIT_OR(l_C, VECTOR_AND_NOT(v_N, v_C)));
+
+ v_N = VECTOR_AND_NOT(v_N, allOne);
+
+ totalScore += vectorPopcount(v_N);
+ }
+ }
+ break;
+ case 4:
+ {
+ parsimonyNumber
+ *left[4],
+ *right[4],
+ *this[4];
+
+ for(k = 0; k < 4; k++)
+ {
+ left[k] = &(pr->partitionData[model]->parsVect[(width * 4 * qNumber) + width * k]);
+ right[k] = &(pr->partitionData[model]->parsVect[(width * 4 * rNumber) + width * k]);
+ this[k] = &(pr->partitionData[model]->parsVect[(width * 4 * pNumber) + width * k]);
+ }
+
+ for(i = 0; i < width; i += INTS_PER_VECTOR)
+ {
+ INT_TYPE
+ s_r, s_l, v_N,
+ l_A, l_C, l_G, l_T,
+ v_A, v_C, v_G, v_T;
+
+ s_l = VECTOR_LOAD((CAST)(&left[0][i]));
+ s_r = VECTOR_LOAD((CAST)(&right[0][i]));
+ l_A = VECTOR_BIT_AND(s_l, s_r);
+ v_A = VECTOR_BIT_OR(s_l, s_r);
+
+ s_l = VECTOR_LOAD((CAST)(&left[1][i]));
+ s_r = VECTOR_LOAD((CAST)(&right[1][i]));
+ l_C = VECTOR_BIT_AND(s_l, s_r);
+ v_C = VECTOR_BIT_OR(s_l, s_r);
+
+ s_l = VECTOR_LOAD((CAST)(&left[2][i]));
+ s_r = VECTOR_LOAD((CAST)(&right[2][i]));
+ l_G = VECTOR_BIT_AND(s_l, s_r);
+ v_G = VECTOR_BIT_OR(s_l, s_r);
+
+ s_l = VECTOR_LOAD((CAST)(&left[3][i]));
+ s_r = VECTOR_LOAD((CAST)(&right[3][i]));
+ l_T = VECTOR_BIT_AND(s_l, s_r);
+ v_T = VECTOR_BIT_OR(s_l, s_r);
+
+ v_N = VECTOR_BIT_OR(VECTOR_BIT_OR(l_A, l_C), VECTOR_BIT_OR(l_G, l_T));
+
+ VECTOR_STORE((CAST)(&this[0][i]), VECTOR_BIT_OR(l_A, VECTOR_AND_NOT(v_N, v_A)));
+ VECTOR_STORE((CAST)(&this[1][i]), VECTOR_BIT_OR(l_C, VECTOR_AND_NOT(v_N, v_C)));
+ VECTOR_STORE((CAST)(&this[2][i]), VECTOR_BIT_OR(l_G, VECTOR_AND_NOT(v_N, v_G)));
+ VECTOR_STORE((CAST)(&this[3][i]), VECTOR_BIT_OR(l_T, VECTOR_AND_NOT(v_N, v_T)));
+
+ v_N = VECTOR_AND_NOT(v_N, allOne);
+
+ totalScore += vectorPopcount(v_N);
+ }
+ }
+ break;
+ case 20:
+ {
+ parsimonyNumber
+ *left[20],
+ *right[20],
+ *this[20];
+
+ for(k = 0; k < 20; k++)
+ {
+ left[k] = &(pr->partitionData[model]->parsVect[(width * 20 * qNumber) + width * k]);
+ right[k] = &(pr->partitionData[model]->parsVect[(width * 20 * rNumber) + width * k]);
+ this[k] = &(pr->partitionData[model]->parsVect[(width * 20 * pNumber) + width * k]);
+ }
+
+ for(i = 0; i < width; i += INTS_PER_VECTOR)
+ {
+ size_t j;
+
+ INT_TYPE
+ s_r, s_l,
+ v_N = SET_ALL_BITS_ZERO,
+ l_A[20],
+ v_A[20];
+
+ for(j = 0; j < 20; j++)
+ {
+ s_l = VECTOR_LOAD((CAST)(&left[j][i]));
+ s_r = VECTOR_LOAD((CAST)(&right[j][i]));
+ l_A[j] = VECTOR_BIT_AND(s_l, s_r);
+ v_A[j] = VECTOR_BIT_OR(s_l, s_r);
+
+ v_N = VECTOR_BIT_OR(v_N, l_A[j]);
+ }
+
+ for(j = 0; j < 20; j++)
+ VECTOR_STORE((CAST)(&this[j][i]), VECTOR_BIT_OR(l_A[j], VECTOR_AND_NOT(v_N, v_A[j])));
+
+ v_N = VECTOR_AND_NOT(v_N, allOne);
+
+ totalScore += vectorPopcount(v_N);
+ }
+ }
+ break;
+ default:
+ {
+ parsimonyNumber
+ *left[32],
+ *right[32],
+ *this[32];
+
+ assert(states <= 32);
+
+ for(k = 0; k < states; k++)
+ {
+ left[k] = &(pr->partitionData[model]->parsVect[(width * states * qNumber) + width * k]);
+ right[k] = &(pr->partitionData[model]->parsVect[(width * states * rNumber) + width * k]);
+ this[k] = &(pr->partitionData[model]->parsVect[(width * states * pNumber) + width * k]);
+ }
+
+ for(i = 0; i < width; i += INTS_PER_VECTOR)
+ {
+ size_t j;
+
+ INT_TYPE
+ s_r, s_l,
+ v_N = SET_ALL_BITS_ZERO,
+ l_A[32],
+ v_A[32];
+
+ for(j = 0; j < states; j++)
+ {
+ s_l = VECTOR_LOAD((CAST)(&left[j][i]));
+ s_r = VECTOR_LOAD((CAST)(&right[j][i]));
+ l_A[j] = VECTOR_BIT_AND(s_l, s_r);
+ v_A[j] = VECTOR_BIT_OR(s_l, s_r);
+
+ v_N = VECTOR_BIT_OR(v_N, l_A[j]);
+ }
+
+ for(j = 0; j < states; j++)
+ VECTOR_STORE((CAST)(&this[j][i]), VECTOR_BIT_OR(l_A[j], VECTOR_AND_NOT(v_N, v_A[j])));
+
+ v_N = VECTOR_AND_NOT(v_N, allOne);
+
+ totalScore += vectorPopcount(v_N);
+ }
+ }
+ }
+ }
+
+ tr->parsimonyScore[pNumber] = totalScore + tr->parsimonyScore[rNumber] + tr->parsimonyScore[qNumber];
+ }
+}
+
+
+
+static unsigned int evaluateParsimonyIterativeFast(pllInstance *tr, partitionList *pr)
+{
+ INT_TYPE
+ allOne = SET_ALL_BITS_ONE;
+
+ size_t
+ pNumber = (size_t)tr->ti[1],
+ qNumber = (size_t)tr->ti[2];
+
+ int
+ model;
+
+ unsigned int
+ bestScore = tr->bestParsimony,
+ sum;
+
+ if(tr->ti[0] > 4)
+ newviewParsimonyIterativeFast(tr, pr);
+
+ sum = tr->parsimonyScore[pNumber] + tr->parsimonyScore[qNumber];
+
+ for(model = 0; model < pr->numberOfPartitions; model++)
+ {
+ size_t
+ k,
+ states = pr->partitionData[model]->states,
+ width = pr->partitionData[model]->parsimonyLength,
+ i;
+
+ switch(states)
+ {
+ case 2:
+ {
+ parsimonyNumber
+ *left[2],
+ *right[2];
+
+ for(k = 0; k < 2; k++)
+ {
+ left[k] = &(pr->partitionData[model]->parsVect[(width * 2 * qNumber) + width * k]);
+ right[k] = &(pr->partitionData[model]->parsVect[(width * 2 * pNumber) + width * k]);
+ }
+
+ for(i = 0; i < width; i += INTS_PER_VECTOR)
+ {
+ INT_TYPE
+ l_A = VECTOR_BIT_AND(VECTOR_LOAD((CAST)(&left[0][i])), VECTOR_LOAD((CAST)(&right[0][i]))),
+ l_C = VECTOR_BIT_AND(VECTOR_LOAD((CAST)(&left[1][i])), VECTOR_LOAD((CAST)(&right[1][i]))),
+ v_N = VECTOR_BIT_OR(l_A, l_C);
+
+ v_N = VECTOR_AND_NOT(v_N, allOne);
+
+ sum += vectorPopcount(v_N);
+
+ if(sum >= bestScore)
+ return sum;
+ }
+ }
+ break;
+ case 4:
+ {
+ parsimonyNumber
+ *left[4],
+ *right[4];
+
+ for(k = 0; k < 4; k++)
+ {
+ left[k] = &(pr->partitionData[model]->parsVect[(width * 4 * qNumber) + width * k]);
+ right[k] = &(pr->partitionData[model]->parsVect[(width * 4 * pNumber) + width * k]);
+ }
+
+ for(i = 0; i < width; i += INTS_PER_VECTOR)
+ {
+ INT_TYPE
+ l_A = VECTOR_BIT_AND(VECTOR_LOAD((CAST)(&left[0][i])), VECTOR_LOAD((CAST)(&right[0][i]))),
+ l_C = VECTOR_BIT_AND(VECTOR_LOAD((CAST)(&left[1][i])), VECTOR_LOAD((CAST)(&right[1][i]))),
+ l_G = VECTOR_BIT_AND(VECTOR_LOAD((CAST)(&left[2][i])), VECTOR_LOAD((CAST)(&right[2][i]))),
+ l_T = VECTOR_BIT_AND(VECTOR_LOAD((CAST)(&left[3][i])), VECTOR_LOAD((CAST)(&right[3][i]))),
+ v_N = VECTOR_BIT_OR(VECTOR_BIT_OR(l_A, l_C), VECTOR_BIT_OR(l_G, l_T));
+
+ v_N = VECTOR_AND_NOT(v_N, allOne);
+
+ sum += vectorPopcount(v_N);
+
+ if(sum >= bestScore)
+ return sum;
+ }
+ }
+ break;
+ case 20:
+ {
+ parsimonyNumber
+ *left[20],
+ *right[20];
+
+ for(k = 0; k < 20; k++)
+ {
+ left[k] = &(pr->partitionData[model]->parsVect[(width * 20 * qNumber) + width * k]);
+ right[k] = &(pr->partitionData[model]->parsVect[(width * 20 * pNumber) + width * k]);
+ }
+
+ for(i = 0; i < width; i += INTS_PER_VECTOR)
+ {
+ int
+ j;
+
+ INT_TYPE
+ l_A,
+ v_N = SET_ALL_BITS_ZERO;
+
+ for(j = 0; j < 20; j++)
+ {
+ l_A = VECTOR_BIT_AND(VECTOR_LOAD((CAST)(&left[j][i])), VECTOR_LOAD((CAST)(&right[j][i])));
+ v_N = VECTOR_BIT_OR(l_A, v_N);
+ }
+
+ v_N = VECTOR_AND_NOT(v_N, allOne);
+
+ sum += vectorPopcount(v_N);
+
+ if(sum >= bestScore)
+ return sum;
+ }
+ }
+ break;
+ default:
+ {
+ parsimonyNumber
+ *left[32],
+ *right[32];
+
+ assert(states <= 32);
+
+ for(k = 0; k < states; k++)
+ {
+ left[k] = &(pr->partitionData[model]->parsVect[(width * states * qNumber) + width * k]);
+ right[k] = &(pr->partitionData[model]->parsVect[(width * states * pNumber) + width * k]);
+ }
+
+ for(i = 0; i < width; i += INTS_PER_VECTOR)
+ {
+ size_t
+ j;
+
+ INT_TYPE
+ l_A,
+ v_N = SET_ALL_BITS_ZERO;
+
+ for(j = 0; j < states; j++)
+ {
+ l_A = VECTOR_BIT_AND(VECTOR_LOAD((CAST)(&left[j][i])), VECTOR_LOAD((CAST)(&right[j][i])));
+ v_N = VECTOR_BIT_OR(l_A, v_N);
+ }
+
+ v_N = VECTOR_AND_NOT(v_N, allOne);
+
+ sum += vectorPopcount(v_N);
+
+ if(sum >= bestScore)
+ return sum;
+ }
+ }
+ }
+ }
+
+ return sum;
+}
+
+
+#else
+static void newviewParsimonyIterativeFast(pllInstance *tr, partitionList * pr)
+{
+ int
+ model,
+ *ti = tr->ti,
+ count = ti[0],
+ index;
+
+ for(index = 4; index < count; index += 4)
+ {
+ unsigned int
+ totalScore = 0;
+
+ size_t
+ pNumber = (size_t)ti[index],
+ qNumber = (size_t)ti[index + 1],
+ rNumber = (size_t)ti[index + 2];
+
+ for(model = 0; model < pr->numberOfPartitions; model++)
+ {
+ size_t
+ k,
+ states = pr->partitionData[model]->states,
+ width = pr->partitionData[model]->parsimonyLength;
+
+ unsigned int
+ i;
+
+ switch(states)
+ {
+ case 2:
+ {
+ parsimonyNumber
+ *left[2],
+ *right[2],
+ *this[2];
+
+ parsimonyNumber
+ o_A,
+ o_C,
+ t_A,
+ t_C,
+ t_N;
+
+ for(k = 0; k < 2; k++)
+ {
+ left[k] = &(pr->partitionData[model]->parsVect[(width * 2 * qNumber) + width * k]);
+ right[k] = &(pr->partitionData[model]->parsVect[(width * 2 * rNumber) + width * k]);
+ this[k] = &(pr->partitionData[model]->parsVect[(width * 2 * pNumber) + width * k]);
+ }
+
+ for(i = 0; i < width; i++)
+ {
+ t_A = left[0][i] & right[0][i];
+ t_C = left[1][i] & right[1][i];
+
+ o_A = left[0][i] | right[0][i];
+ o_C = left[1][i] | right[1][i];
+
+ t_N = ~(t_A | t_C);
+
+ this[0][i] = t_A | (t_N & o_A);
+ this[1][i] = t_C | (t_N & o_C);
+
+ totalScore += ((unsigned int) __builtin_popcount(t_N));
+ }
+ }
+ break;
+ case 4:
+ {
+ parsimonyNumber
+ *left[4],
+ *right[4],
+ *this[4];
+
+ for(k = 0; k < 4; k++)
+ {
+ left[k] = &(pr->partitionData[model]->parsVect[(width * 4 * qNumber) + width * k]);
+ right[k] = &(pr->partitionData[model]->parsVect[(width * 4 * rNumber) + width * k]);
+ this[k] = &(pr->partitionData[model]->parsVect[(width * 4 * pNumber) + width * k]);
+ }
+
+ parsimonyNumber
+ o_A,
+ o_C,
+ o_G,
+ o_T,
+ t_A,
+ t_C,
+ t_G,
+ t_T,
+ t_N;
+
+ for(i = 0; i < width; i++)
+ {
+ t_A = left[0][i] & right[0][i];
+ t_C = left[1][i] & right[1][i];
+ t_G = left[2][i] & right[2][i];
+ t_T = left[3][i] & right[3][i];
+
+ o_A = left[0][i] | right[0][i];
+ o_C = left[1][i] | right[1][i];
+ o_G = left[2][i] | right[2][i];
+ o_T = left[3][i] | right[3][i];
+
+ t_N = ~(t_A | t_C | t_G | t_T);
+
+ this[0][i] = t_A | (t_N & o_A);
+ this[1][i] = t_C | (t_N & o_C);
+ this[2][i] = t_G | (t_N & o_G);
+ this[3][i] = t_T | (t_N & o_T);
+
+ totalScore += ((unsigned int) __builtin_popcount(t_N));
+ }
+ }
+ break;
+ case 20:
+ {
+ parsimonyNumber
+ *left[20],
+ *right[20],
+ *this[20];
+
+ parsimonyNumber
+ o_A[20],
+ t_A[20],
+ t_N;
+
+ for(k = 0; k < 20; k++)
+ {
+ left[k] = &(pr->partitionData[model]->parsVect[(width * 20 * qNumber) + width * k]);
+ right[k] = &(pr->partitionData[model]->parsVect[(width * 20 * rNumber) + width * k]);
+ this[k] = &(pr->partitionData[model]->parsVect[(width * 20 * pNumber) + width * k]);
+ }
+
+ for(i = 0; i < width; i++)
+ {
+ size_t k;
+
+ t_N = 0;
+
+ for(k = 0; k < 20; k++)
+ {
+ t_A[k] = left[k][i] & right[k][i];
+ o_A[k] = left[k][i] | right[k][i];
+ t_N = t_N | t_A[k];
+ }
+
+ t_N = ~t_N;
+
+ for(k = 0; k < 20; k++)
+ this[k][i] = t_A[k] | (t_N & o_A[k]);
+
+ totalScore += ((unsigned int) __builtin_popcount(t_N));
+ }
+ }
+ break;
+ default:
+ {
+ parsimonyNumber
+ *left[32],
+ *right[32],
+ *this[32];
+
+ parsimonyNumber
+ o_A[32],
+ t_A[32],
+ t_N;
+
+ assert(states <= 32);
+
+ for(k = 0; k < states; k++)
+ {
+ left[k] = &(pr->partitionData[model]->parsVect[(width * states * qNumber) + width * k]);
+ right[k] = &(pr->partitionData[model]->parsVect[(width * states * rNumber) + width * k]);
+ this[k] = &(pr->partitionData[model]->parsVect[(width * states * pNumber) + width * k]);
+ }
+
+ for(i = 0; i < width; i++)
+ {
+ t_N = 0;
+
+ for(k = 0; k < states; k++)
+ {
+ t_A[k] = left[k][i] & right[k][i];
+ o_A[k] = left[k][i] | right[k][i];
+ t_N = t_N | t_A[k];
+ }
+
+ t_N = ~t_N;
+
+ for(k = 0; k < states; k++)
+ this[k][i] = t_A[k] | (t_N & o_A[k]);
+
+ totalScore += ((unsigned int) __builtin_popcount(t_N));
+ }
+ }
+ }
+ }
+
+ tr->parsimonyScore[pNumber] = totalScore + tr->parsimonyScore[rNumber] + tr->parsimonyScore[qNumber];
+ }
+}
+
+
+static unsigned int evaluateParsimonyIterativeFast(pllInstance *tr, partitionList * pr)
+{
+ size_t
+ pNumber = (size_t)tr->ti[1],
+ qNumber = (size_t)tr->ti[2];
+
+ int
+ model;
+
+ unsigned int
+ bestScore = tr->bestParsimony,
+ sum;
+
+ if(tr->ti[0] > 4)
+ newviewParsimonyIterativeFast(tr, pr);
+
+ sum = tr->parsimonyScore[pNumber] + tr->parsimonyScore[qNumber];
+
+ for(model = 0; model < pr->numberOfPartitions; model++)
+ {
+ size_t
+ k,
+ states = pr->partitionData[model]->states,
+ width = pr->partitionData[model]->parsimonyLength,
+ i;
+
+ switch(states)
+ {
+ case 2:
+ {
+ parsimonyNumber
+ t_A,
+ t_C,
+ t_N,
+ *left[2],
+ *right[2];
+
+ for(k = 0; k < 2; k++)
+ {
+ left[k] = &(pr->partitionData[model]->parsVect[(width * 2 * qNumber) + width * k]);
+ right[k] = &(pr->partitionData[model]->parsVect[(width * 2 * pNumber) + width * k]);
+ }
+
+ for(i = 0; i < width; i++)
+ {
+ t_A = left[0][i] & right[0][i];
+ t_C = left[1][i] & right[1][i];
+
+ t_N = ~(t_A | t_C);
+
+ sum += ((unsigned int) __builtin_popcount(t_N));
+
+ if(sum >= bestScore)
+ return sum;
+ }
+ }
+ break;
+ case 4:
+ {
+ parsimonyNumber
+ t_A,
+ t_C,
+ t_G,
+ t_T,
+ t_N,
+ *left[4],
+ *right[4];
+
+ for(k = 0; k < 4; k++)
+ {
+ left[k] = &(pr->partitionData[model]->parsVect[(width * 4 * qNumber) + width * k]);
+ right[k] = &(pr->partitionData[model]->parsVect[(width * 4 * pNumber) + width * k]);
+ }
+
+ for(i = 0; i < width; i++)
+ {
+ t_A = left[0][i] & right[0][i];
+ t_C = left[1][i] & right[1][i];
+ t_G = left[2][i] & right[2][i];
+ t_T = left[3][i] & right[3][i];
+
+ t_N = ~(t_A | t_C | t_G | t_T);
+
+ sum += ((unsigned int) __builtin_popcount(t_N));
+
+ if(sum >= bestScore)
+ return sum;
+ }
+ }
+ break;
+ case 20:
+ {
+ parsimonyNumber
+ t_A,
+ t_N,
+ *left[20],
+ *right[20];
+
+ for(k = 0; k < 20; k++)
+ {
+ left[k] = &(pr->partitionData[model]->parsVect[(width * 20 * qNumber) + width * k]);
+ right[k] = &(pr->partitionData[model]->parsVect[(width * 20 * pNumber) + width * k]);
+ }
+
+ for(i = 0; i < width; i++)
+ {
+ t_N = 0;
+
+ for(k = 0; k < 20; k++)
+ {
+ t_A = left[k][i] & right[k][i];
+ t_N = t_N | t_A;
+ }
+
+ t_N = ~t_N;
+
+ sum += ((unsigned int) __builtin_popcount(t_N));
+
+ if(sum >= bestScore)
+ return sum;
+ }
+ }
+ break;
+ default:
+ {
+ parsimonyNumber
+ t_A,
+ t_N,
+ *left[32],
+ *right[32];
+
+ assert(states <= 32);
+
+ for(k = 0; k < states; k++)
+ {
+ left[k] = &(pr->partitionData[model]->parsVect[(width * states * qNumber) + width * k]);
+ right[k] = &(pr->partitionData[model]->parsVect[(width * states * pNumber) + width * k]);
+ }
+
+ for(i = 0; i < width; i++)
+ {
+ t_N = 0;
+
+ for(k = 0; k < states; k++)
+ {
+ t_A = left[k][i] & right[k][i];
+ t_N = t_N | t_A;
+ }
+
+ t_N = ~t_N;
+
+ sum += ((unsigned int) __builtin_popcount(t_N));
+
+ if(sum >= bestScore)
+ return sum;
+ }
+ }
+ }
+ }
+
+ return sum;
+}
+
+#endif
+
+
+
+
+
+
+static unsigned int evaluateParsimony(pllInstance *tr, partitionList *pr, nodeptr p, boolean full)
+{
+ volatile unsigned int result;
+ nodeptr q = p->back;
+ int
+ *ti = tr->ti,
+ counter = 4;
+
+ ti[1] = p->number;
+ ti[2] = q->number;
+
+ if(full)
+ {
+ if(p->number > tr->mxtips)
+ computeTraversalInfoParsimony(p, ti, &counter, tr->mxtips, full);
+ if(q->number > tr->mxtips)
+ computeTraversalInfoParsimony(q, ti, &counter, tr->mxtips, full);
+ }
+ else
+ {
+ if(p->number > tr->mxtips && !p->xPars)
+ computeTraversalInfoParsimony(p, ti, &counter, tr->mxtips, full);
+ if(q->number > tr->mxtips && !q->xPars)
+ computeTraversalInfoParsimony(q, ti, &counter, tr->mxtips, full);
+ }
+
+ ti[0] = counter;
+
+ result = evaluateParsimonyIterativeFast(tr, pr);
+
+ return result;
+}
+
+
+static void newviewParsimony(pllInstance *tr, partitionList *pr, nodeptr p)
+{
+ if(p->number <= tr->mxtips)
+ return;
+
+ {
+ int
+ counter = 4;
+
+ computeTraversalInfoParsimony(p, tr->ti, &counter, tr->mxtips, PLL_FALSE);
+ tr->ti[0] = counter;
+
+ newviewParsimonyIterativeFast(tr, pr);
+ }
+}
+
+
+
+
+
+/****************************************************************************************************************************************/
+
+static void insertParsimony (pllInstance *tr, partitionList *pr, nodeptr p, nodeptr q)
+{
+ nodeptr r;
+
+ r = q->back;
+
+ hookupDefault(p->next, q);
+ hookupDefault(p->next->next, r);
+
+ newviewParsimony(tr, pr, p);
+}
+
+
+
+static nodeptr buildNewTip (pllInstance *tr, nodeptr p)
+{
+ nodeptr q;
+
+ q = tr->nodep[(tr->nextnode)++];
+ hookupDefault(p, q);
+ q->next->back = (nodeptr)NULL;
+ q->next->next->back = (nodeptr)NULL;
+
+ return q;
+}
+
+static void buildSimpleTree (pllInstance *tr, partitionList *pr, int ip, int iq, int ir)
+{
+ nodeptr p, s;
+ int i;
+
+ i = PLL_MIN(ip, iq);
+ if (ir < i) i = ir;
+ tr->start = tr->nodep[i];
+ tr->ntips = 3;
+ p = tr->nodep[ip];
+ hookupDefault(p, tr->nodep[iq]);
+ s = buildNewTip(tr, tr->nodep[ir]);
+ insertParsimony(tr, pr, s, p);
+}
+
+
+static void testInsertParsimony (pllInstance *tr, partitionList *pr, nodeptr p, nodeptr q, boolean saveBranches)
+{
+ unsigned int
+ mp;
+
+ nodeptr
+ r = q->back;
+
+ boolean
+ doIt = PLL_TRUE;
+
+ int numBranches = pr->perGeneBranchLengths?pr->numberOfPartitions:1;
+
+ if(tr->grouped)
+ {
+ int
+ rNumber = tr->constraintVector[r->number],
+ qNumber = tr->constraintVector[q->number],
+ pNumber = tr->constraintVector[p->number];
+
+ doIt = PLL_FALSE;
+
+ if(pNumber == -9)
+ pNumber = checkerPars(tr, p->back);
+ if(pNumber == -9)
+ doIt = PLL_TRUE;
+ else
+ {
+ if(qNumber == -9)
+ qNumber = checkerPars(tr, q);
+
+ if(rNumber == -9)
+ rNumber = checkerPars(tr, r);
+
+ if(pNumber == rNumber || pNumber == qNumber)
+ doIt = PLL_TRUE;
+ }
+ }
+
+ if(doIt)
+ {
+ double
+ z[PLL_NUM_BRANCHES];
+
+ if(saveBranches)
+ {
+ int i;
+
+ for(i = 0; i < numBranches; i++)
+ z[i] = q->z[i];
+ }
+
+ insertParsimony(tr, pr, p, q);
+
+ mp = evaluateParsimony(tr, pr, p->next->next, PLL_FALSE);
+
+ if(mp < tr->bestParsimony)
+ {
+ tr->bestParsimony = mp;
+ tr->insertNode = q;
+ tr->removeNode = p;
+ }
+
+ if(saveBranches)
+ hookup(q, r, z, numBranches);
+ else
+ hookupDefault(q, r);
+
+ p->next->next->back = p->next->back = (nodeptr) NULL;
+ }
+
+ return;
+}
+
+
+static void restoreTreeParsimony(pllInstance *tr, partitionList *pr, nodeptr p, nodeptr q)
+{
+ nodeptr
+ r = q->back;
+
+ int counter = 4;
+
+ hookupDefault(p->next, q);
+ hookupDefault(p->next->next, r);
+
+ computeTraversalInfoParsimony(p, tr->ti, &counter, tr->mxtips, PLL_FALSE);
+ tr->ti[0] = counter;
+
+ newviewParsimonyIterativeFast(tr, pr);
+}
+
+
+static void addTraverseParsimony (pllInstance *tr, partitionList *pr, nodeptr p, nodeptr q, int mintrav, int maxtrav, boolean doAll, boolean saveBranches)
+{
+ if (doAll || (--mintrav <= 0))
+ testInsertParsimony(tr, pr, p, q, saveBranches);
+
+ if (((q->number > tr->mxtips)) && ((--maxtrav > 0) || doAll))
+ {
+ addTraverseParsimony(tr, pr, p, q->next->back, mintrav, maxtrav, doAll, saveBranches);
+ addTraverseParsimony(tr, pr, p, q->next->next->back, mintrav, maxtrav, doAll, saveBranches);
+ }
+}
+
+
+
+
+
+static void makePermutationFast(int *perm, int n, pllInstance *tr)
+{
+ int
+ i,
+ j,
+ k;
+
+ for (i = 1; i <= n; i++)
+ perm[i] = i;
+
+ for (i = 1; i <= n; i++)
+ {
+ double d = randum(&tr->randomNumberSeed);
+
+ k = (int)((double)(n + 1 - i) * d);
+
+ j = perm[i];
+
+ perm[i] = perm[i + k];
+ perm[i + k] = j;
+ }
+}
+
+//static nodeptr removeNodeParsimony (nodeptr p, tree *tr)
+static nodeptr removeNodeParsimony (nodeptr p)
+{
+ nodeptr q, r;
+
+ q = p->next->back;
+ r = p->next->next->back;
+
+ hookupDefault(q, r);
+
+ p->next->next->back = p->next->back = (node *) NULL;
+
+ return q;
+}
+
+static int rearrangeParsimony(pllInstance *tr, partitionList *pr, nodeptr p, int mintrav, int maxtrav, boolean doAll)
+{
+ nodeptr
+ p1,
+ p2,
+ q,
+ q1,
+ q2;
+
+ int
+ mintrav2;
+
+ boolean
+ doP = PLL_TRUE,
+ doQ = PLL_TRUE;
+
+ if (maxtrav > tr->ntips - 3)
+ maxtrav = tr->ntips - 3;
+
+ assert(mintrav == 1);
+
+ if(maxtrav < mintrav)
+ return 0;
+
+ q = p->back;
+
+ if(tr->constrained)
+ {
+ if(! tipHomogeneityCheckerPars(tr, p->back, 0))
+ doP = PLL_FALSE;
+
+ if(! tipHomogeneityCheckerPars(tr, q->back, 0))
+ doQ = PLL_FALSE;
+
+ if(doQ == PLL_FALSE && doP == PLL_FALSE)
+ return 0;
+ }
+
+ if((p->number > tr->mxtips) && doP)
+ {
+ p1 = p->next->back;
+ p2 = p->next->next->back;
+
+ if ((p1->number > tr->mxtips) || (p2->number > tr->mxtips))
+ {
+ //removeNodeParsimony(p, tr);
+ removeNodeParsimony(p);
+
+ if ((p1->number > tr->mxtips))
+ {
+ addTraverseParsimony(tr, pr, p, p1->next->back, mintrav, maxtrav, doAll, PLL_FALSE);
+ addTraverseParsimony(tr, pr, p, p1->next->next->back, mintrav, maxtrav, doAll, PLL_FALSE);
+ }
+
+ if ((p2->number > tr->mxtips))
+ {
+ addTraverseParsimony(tr, pr, p, p2->next->back, mintrav, maxtrav, doAll, PLL_FALSE);
+ addTraverseParsimony(tr, pr, p, p2->next->next->back, mintrav, maxtrav, doAll, PLL_FALSE);
+ }
+
+
+ hookupDefault(p->next, p1);
+ hookupDefault(p->next->next, p2);
+
+ newviewParsimony(tr, pr, p);
+ }
+ }
+
+ if ((q->number > tr->mxtips) && (maxtrav > 0) && doQ)
+ {
+ q1 = q->next->back;
+ q2 = q->next->next->back;
+
+ if (
+ (
+ (q1->number > tr->mxtips) &&
+ ((q1->next->back->number > tr->mxtips) || (q1->next->next->back->number > tr->mxtips))
+ )
+ ||
+ (
+ (q2->number > tr->mxtips) &&
+ ((q2->next->back->number > tr->mxtips) || (q2->next->next->back->number > tr->mxtips))
+ )
+ )
+ {
+
+ //removeNodeParsimony(q, tr);
+ removeNodeParsimony(q);
+
+ mintrav2 = mintrav > 2 ? mintrav : 2;
+
+ if ((q1->number > tr->mxtips))
+ {
+ addTraverseParsimony(tr, pr, q, q1->next->back, mintrav2 , maxtrav, doAll, PLL_FALSE);
+ addTraverseParsimony(tr, pr, q, q1->next->next->back, mintrav2 , maxtrav, doAll, PLL_FALSE);
+ }
+
+ if ((q2->number > tr->mxtips))
+ {
+ addTraverseParsimony(tr, pr, q, q2->next->back, mintrav2 , maxtrav, doAll, PLL_FALSE);
+ addTraverseParsimony(tr, pr, q, q2->next->next->back, mintrav2 , maxtrav, doAll, PLL_FALSE);
+ }
+
+ hookupDefault(q->next, q1);
+ hookupDefault(q->next->next, q2);
+
+ newviewParsimony(tr, pr, q);
+ }
+ }
+
+ return 1;
+}
+
+
+static void restoreTreeRearrangeParsimony(pllInstance *tr, partitionList *pr)
+{
+ removeNodeParsimony(tr->removeNode);
+ //removeNodeParsimony(tr->removeNode, tr);
+ restoreTreeParsimony(tr, pr, tr->removeNode, tr->insertNode);
+}
+
+/*
+static boolean isInformative2(pllInstance *tr, int site)
+{
+ int
+ informativeCounter = 0,
+ check[256],
+ j,
+ undetermined = 15;
+
+ unsigned char
+ nucleotide,
+ target = 0;
+
+ for(j = 0; j < 256; j++)
+ check[j] = 0;
+
+ for(j = 1; j <= tr->mxtips; j++)
+ {
+ nucleotide = tr->yVector[j][site];
+ check[nucleotide] = check[nucleotide] + 1;
+ }
+
+
+ if(check[1] > 1)
+ {
+ informativeCounter++;
+ target = target | 1;
+ }
+ if(check[2] > 1)
+ {
+ informativeCounter++;
+ target = target | 2;
+ }
+ if(check[4] > 1)
+ {
+ informativeCounter++;
+ target = target | 4;
+ }
+ if(check[8] > 1)
+ {
+ informativeCounter++;
+ target = target | 8;
+ }
+
+ if(informativeCounter >= 2)
+ return PLL_TRUE;
+ else
+ {
+ for(j = 0; j < undetermined; j++)
+ {
+ if(j == 3 || j == 5 || j == 6 || j == 7 || j == 9 || j == 10 || j == 11 ||
+ j == 12 || j == 13 || j == 14)
+ {
+ if(check[j] > 1)
+ {
+ if(!(target & j))
+ return PLL_TRUE;
+ }
+ }
+ }
+ }
+
+ return PLL_FALSE;
+}
+*/
+
+static boolean isInformative(pllInstance *tr, int dataType, int site)
+{
+ int
+ informativeCounter = 0,
+ check[256],
+ j,
+ undetermined = getUndetermined(dataType);
+
+ const unsigned int
+ *bitVector = getBitVector(dataType);
+
+ unsigned char
+ nucleotide;
+
+
+ for(j = 0; j < 256; j++)
+ check[j] = 0;
+
+ for(j = 1; j <= tr->mxtips; j++)
+ {
+ nucleotide = tr->yVector[j][site];
+ check[nucleotide] = check[nucleotide] + 1;
+ assert(bitVector[nucleotide] > 0);
+ }
+
+ for(j = 0; j < undetermined; j++)
+ {
+ if(check[j] > 0)
+ informativeCounter++;
+ }
+
+ if(informativeCounter <= 1)
+ return PLL_FALSE;
+ else
+ {
+ for(j = 0; j < undetermined; j++)
+ {
+ if(check[j] > 1)
+ return PLL_TRUE;
+ }
+ }
+
+ return PLL_FALSE;
+}
+
+
+static void determineUninformativeSites(pllInstance *tr, partitionList *pr, int *informative)
+{
+ int
+ model,
+ number = 0,
+ i;
+
+ /*
+ Not all characters are useful in constructing a parsimony tree.
+ Invariant characters, those that have the same state in all taxa,
+ are obviously useless and are ignored by the method. Characters in
+ which a state occurs in only one taxon are also ignored.
+ All these characters are called parsimony uninformative.
+
+ Alternative definition: informative columns contain at least two types
+ of nucleotides, and each nucleotide must appear at least twice in each
+ column. Kind of a pain if we intend to check for this when using, e.g.,
+ amibiguous DNA encoding.
+ */
+
+
+ for(model = 0; model < pr->numberOfPartitions; model++)
+ {
+ for(i = pr->partitionData[model]->lower; i < pr->partitionData[model]->upper; i++)
+ {
+ if(isInformative(tr, pr->partitionData[model]->dataType, i))
+ informative[i] = 1;
+ else
+ {
+ informative[i] = 0;
+ number++;
+ }
+ }
+ }
+
+
+ /* printf("Uninformative Patterns: %d\n", number); */
+}
+
+
+static void reorderNodes(pllInstance *tr, nodeptr *np, nodeptr p, int *count)
+{
+ int i, found = 0;
+
+ if((p->number <= tr->mxtips))
+ return;
+ else
+ {
+ for(i = tr->mxtips + 1; (i <= (tr->mxtips + tr->mxtips - 1)) && (found == 0); i++)
+ {
+ if (p == np[i] || p == np[i]->next || p == np[i]->next->next)
+ {
+ if(p == np[i])
+ tr->nodep[*count + tr->mxtips + 1] = np[i];
+ else
+ {
+ if(p == np[i]->next)
+ tr->nodep[*count + tr->mxtips + 1] = np[i]->next;
+ else
+ tr->nodep[*count + tr->mxtips + 1] = np[i]->next->next;
+ }
+
+ found = 1;
+ *count = *count + 1;
+ }
+ }
+
+ assert(found != 0);
+
+ reorderNodes(tr, np, p->next->back, count);
+ reorderNodes(tr, np, p->next->next->back, count);
+ }
+}
+
+
+
+static void nodeRectifierPars(pllInstance *tr)
+{
+ nodeptr *np = (nodeptr *)rax_malloc(2 * tr->mxtips * sizeof(nodeptr));
+ int i;
+ int count = 0;
+
+ tr->start = tr->nodep[1];
+ tr->rooted = PLL_FALSE;
+
+ /* TODO why is tr->rooted set to PLL_FALSE here ?*/
+
+ for(i = tr->mxtips + 1; i <= (tr->mxtips + tr->mxtips - 1); i++)
+ np[i] = tr->nodep[i];
+
+ reorderNodes(tr, np, tr->start->back, &count);
+
+
+ rax_free(np);
+}
+
+
+
+static void compressDNA(pllInstance *tr, partitionList *pr, int *informative)
+{
+ size_t
+ totalNodes,
+ i,
+ model;
+
+ totalNodes = 2 * (size_t)tr->mxtips;
+
+
+
+ for(model = 0; model < (size_t) pr->numberOfPartitions; model++)
+ {
+ size_t
+ k,
+ states = (size_t)pr->partitionData[model]->states,
+ compressedEntries,
+ compressedEntriesPadded,
+ entries = 0,
+ lower = pr->partitionData[model]->lower,
+ upper = pr->partitionData[model]->upper;
+
+ parsimonyNumber
+ **compressedTips = (parsimonyNumber **)rax_malloc(states * sizeof(parsimonyNumber*)),
+ *compressedValues = (parsimonyNumber *)rax_malloc(states * sizeof(parsimonyNumber));
+
+ for(i = lower; i < upper; i++)
+ if(informative[i])
+ entries += (size_t)tr->aliaswgt[i];
+
+ compressedEntries = entries / PLL_PCF;
+
+ if(entries % PLL_PCF != 0)
+ compressedEntries++;
+
+#if (defined(__SSE3) || defined(__AVX))
+ if(compressedEntries % INTS_PER_VECTOR != 0)
+ compressedEntriesPadded = compressedEntries + (INTS_PER_VECTOR - (compressedEntries % INTS_PER_VECTOR));
+ else
+ compressedEntriesPadded = compressedEntries;
+#else
+ compressedEntriesPadded = compressedEntries;
+#endif
+
+
+ rax_posix_memalign ((void **) &(pr->partitionData[model]->parsVect), PLL_BYTE_ALIGNMENT, (size_t)compressedEntriesPadded * states * totalNodes * sizeof(parsimonyNumber));
+
+ for(i = 0; i < compressedEntriesPadded * states * totalNodes; i++)
+ pr->partitionData[model]->parsVect[i] = 0;
+
+ for(i = 0; i < (size_t)tr->mxtips; i++)
+ {
+ size_t
+ w = 0,
+ compressedIndex = 0,
+ compressedCounter = 0,
+ index = 0;
+
+ for(k = 0; k < states; k++)
+ {
+ compressedTips[k] = &(pr->partitionData[model]->parsVect[(compressedEntriesPadded * states * (i + 1)) + (compressedEntriesPadded * k)]);
+ compressedValues[k] = 0;
+ }
+
+ for(index = lower; index < (size_t)upper; index++)
+ {
+ if(informative[index])
+ {
+ const unsigned int
+ *bitValue = getBitVector(pr->partitionData[model]->dataType);
+
+ parsimonyNumber
+ value = bitValue[tr->yVector[i + 1][index]];
+
+ for(w = 0; w < (size_t)tr->aliaswgt[index]; w++)
+ {
+ for(k = 0; k < states; k++)
+ {
+ if(value & mask32[k])
+ compressedValues[k] |= mask32[compressedCounter];
+ }
+
+ compressedCounter++;
+
+ if(compressedCounter == PLL_PCF)
+ {
+ for(k = 0; k < states; k++)
+ {
+ compressedTips[k][compressedIndex] = compressedValues[k];
+ compressedValues[k] = 0;
+ }
+
+ compressedCounter = 0;
+ compressedIndex++;
+ }
+ }
+ }
+ }
+
+ for(;compressedIndex < compressedEntriesPadded; compressedIndex++)
+ {
+ for(;compressedCounter < PLL_PCF; compressedCounter++)
+ for(k = 0; k < states; k++)
+ compressedValues[k] |= mask32[compressedCounter];
+
+ for(k = 0; k < states; k++)
+ {
+ compressedTips[k][compressedIndex] = compressedValues[k];
+ compressedValues[k] = 0;
+ }
+
+ compressedCounter = 0;
+ }
+ }
+
+ pr->partitionData[model]->parsimonyLength = compressedEntriesPadded;
+
+ rax_free(compressedTips);
+ rax_free(compressedValues);
+ }
+
+ rax_posix_memalign ((void **) &(tr->parsimonyScore), PLL_BYTE_ALIGNMENT, sizeof(unsigned int) * totalNodes);
+
+ for(i = 0; i < totalNodes; i++)
+ tr->parsimonyScore[i] = 0;
+}
+
+
+
+static void stepwiseAddition(pllInstance *tr, partitionList *pr, nodeptr p, nodeptr q)
+{
+ nodeptr
+ r = q->back;
+
+ unsigned int
+ mp;
+
+ int
+ counter = 4;
+
+ p->next->back = q;
+ q->back = p->next;
+
+ p->next->next->back = r;
+ r->back = p->next->next;
+
+ computeTraversalInfoParsimony(p, tr->ti, &counter, tr->mxtips, PLL_FALSE);
+ tr->ti[0] = counter;
+ tr->ti[1] = p->number;
+ tr->ti[2] = p->back->number;
+
+ mp = evaluateParsimonyIterativeFast(tr, pr);
+
+ if(mp < tr->bestParsimony)
+ {
+ tr->bestParsimony = mp;
+ tr->insertNode = q;
+ }
+
+ q->back = r;
+ r->back = q;
+
+ if(q->number > tr->mxtips && tr->parsimonyScore[q->number] > 0)
+ {
+ stepwiseAddition(tr, pr, p, q->next->back);
+ stepwiseAddition(tr, pr, p, q->next->next->back);
+ }
+}
+
+
+
+void allocateParsimonyDataStructures(pllInstance *tr, partitionList *pr)
+{
+ int
+ i,
+ *informative = (int *)rax_malloc(sizeof(int) * (size_t)tr->originalCrunchedLength);
+
+ determineUninformativeSites(tr, pr, informative);
+
+ compressDNA(tr, pr, informative);
+
+ for(i = tr->mxtips + 1; i <= tr->mxtips + tr->mxtips - 1; i++)
+ {
+ nodeptr
+ p = tr->nodep[i];
+
+ p->xPars = 1;
+ p->next->xPars = 0;
+ p->next->next->xPars = 0;
+ }
+
+ tr->ti = (int*)rax_malloc(sizeof(int) * 4 * (size_t)tr->mxtips);
+
+ rax_free(informative);
+}
+
+void pllFreeParsimonyDataStructures(pllInstance *tr, partitionList *pr)
+{
+ size_t
+ model;
+
+ rax_free(tr->parsimonyScore);
+
+ for(model = 0; model < (size_t) pr->numberOfPartitions; ++model)
+ rax_free(pr->partitionData[model]->parsVect);
+
+ rax_free(tr->ti);
+}
+
+
+void pllMakeParsimonyTreeFast(pllInstance *tr, partitionList *pr)
+{
+ nodeptr
+ p,
+ f;
+
+ int
+ i,
+ nextsp,
+ *perm = (int *)rax_malloc((size_t)(tr->mxtips + 1) * sizeof(int));
+
+ unsigned int
+ randomMP,
+ startMP;
+
+ assert(!tr->constrained);
+
+ makePermutationFast(perm, tr->mxtips, tr);
+
+ tr->ntips = 0;
+
+ tr->nextnode = tr->mxtips + 1;
+
+ buildSimpleTree(tr, pr, perm[1], perm[2], perm[3]);
+
+ f = tr->start;
+
+ while(tr->ntips < tr->mxtips)
+ {
+ nodeptr q;
+
+ tr->bestParsimony = INT_MAX;
+ nextsp = ++(tr->ntips);
+ p = tr->nodep[perm[nextsp]];
+ q = tr->nodep[(tr->nextnode)++];
+ p->back = q;
+ q->back = p;
+
+ if(tr->grouped)
+ {
+ int
+ number = p->back->number;
+
+ tr->constraintVector[number] = -9;
+ }
+
+ stepwiseAddition(tr, pr, q, f->back);
+
+ {
+ nodeptr
+ r = tr->insertNode->back;
+
+ int counter = 4;
+
+ hookupDefault(q->next, tr->insertNode);
+ hookupDefault(q->next->next, r);
+
+ computeTraversalInfoParsimony(q, tr->ti, &counter, tr->mxtips, PLL_FALSE);
+ tr->ti[0] = counter;
+
+ newviewParsimonyIterativeFast(tr, pr);
+ }
+ }
+
+ nodeRectifierPars(tr);
+
+ randomMP = tr->bestParsimony;
+
+ do
+ {
+ startMP = randomMP;
+ nodeRectifierPars(tr);
+ for(i = 1; i <= tr->mxtips + tr->mxtips - 2; i++)
+ {
+ rearrangeParsimony(tr, pr, tr->nodep[i], 1, 20, PLL_FALSE);
+ if(tr->bestParsimony < randomMP)
+ {
+ restoreTreeRearrangeParsimony(tr, pr);
+ randomMP = tr->bestParsimony;
+ }
+ }
+ }
+ while(randomMP < startMP);
+
+ rax_free(perm);
+}
diff --git a/src/genericParallelization.c b/src/genericParallelization.c
new file mode 100644
index 0000000..61055b6
--- /dev/null
+++ b/src/genericParallelization.c
@@ -0,0 +1,2302 @@
+/**
+ * PLL (version 1.0.0) a software library for phylogenetic inference
+ * Copyright (C) 2013 Tomas Flouri and Alexandros Stamatakis
+ *
+ * Derived from
+ * RAxML-HPC, a program for sequential and parallel estimation of phylogenetic
+ * trees by Alexandros Stamatakis
+ *
+ * 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 3 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, see <http://www.gnu.org/licenses/>.
+ *
+ * For any other enquiries send an Email to Tomas Flouri
+ * Tomas.Flouri at h-its.org
+ *
+ * When publishing work that uses PLL please cite PLL
+ *
+ * @file genericParallelization.c
+ */
+#include "mem_alloc.h"
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <stdint.h>
+#include <limits.h>
+
+#ifdef MEASURE_TIME_PARALLEL
+#include <time.h>
+#endif
+
+#include <assert.h>
+
+#include "genericParallelization.h"
+#include "pllInternal.h"
+#include "pll.h"
+
+/** @file genericParallelization.c
+
+ @brief Generic master-worker parallelization with either pthreads or MPI.
+
+ Worker threads/processes mostly work on a local
+ tree. Implementationwise, MPI operations are abstracted as good as
+ possible via defines (that translate to no-ops or memcpy-calls in
+ the pthreads version).
+
+ @todo the code still contains many memory copy operations that
+ could be executed more efficiently in-place
+*/
+
+
+
+void perSiteLogLikelihoodsPthreads(pllInstance *tr, partitionList *pr, double *lhs, int n, int tid);
+void broadcastAfterRateOpt(pllInstance *tr, pllInstance *localTree, partitionList *pr, int n, int tid);
+void branchLength_parallelReduce(pllInstance *tr, double *dlnLdlz, double *d2lnLdlz2, int numBranches );
+void pllMasterPostBarrier(pllInstance *tr, partitionList *pr, int jobType);
+static void distributeYVectors(pllInstance *localTree, pllInstance *tr, partitionList *localPr);
+static void distributeWeights(pllInstance *localTree, pllInstance *tr, partitionList *localPr);
+static boolean execFunction(pllInstance *tr, pllInstance *localTree, partitionList *pr, partitionList *localPr, int tid, int n);
+
+static void *likelihoodThread(void *tData);
+
+static void multiprocessorScheduling(pllInstance * tr, partitionList *pr, int tid);
+
+static void computeFraction(partitionList *localPr, int tid, int n);
+static void computeFractionMany(partitionList *localPr, int tid);
+static void initializePartitionsMaster(pllInstance *tr, pllInstance *localTree, partitionList *pr, partitionList *localPr, int tid, int n);
+
+#ifdef _FINE_GRAIN_MPI
+static char* addBytes(char *buf, void *toAdd, size_t numBytes);
+static char* popBytes(char *buf, void *result, size_t numBytes);
+static void defineTraversalInfoMPI(void);
+static boolean pllWorkerTrap(pllInstance *tr, partitionList *pr);
+#endif
+
+#ifdef _USE_PTHREADS
+static pthread_t *threads;
+static threadData *tData;
+#endif
+
+extern volatile int jobCycle;
+extern volatile int threadJob; /**< current job to be done by worker threads/processes */
+extern boolean treeIsInitialized;
+
+#ifdef MEASURE_TIME_PARALLEL
+extern double masterTimePerPhase;
+double timeBuffer[NUM_PAR_JOBS];
+double timePerRegion[NUM_PAR_JOBS];
+#endif
+
+extern char* getJobName(int tmp);
+
+//extern double *globalResult;
+extern volatile char *barrierBuffer;
+
+
+#ifdef _FINE_GRAIN_MPI
+extern MPI_Datatype TRAVERSAL_MPI;
+
+/** @brief Pthreads helper function for adding bytes to communication buffer.
+
+ Copy from \toAdd to \a buf \a numBytes bytes
+
+ @param buf
+ Where to place bytes
+
+ @pram toAdd
+ Where to copy them from
+
+ @para numBytes
+ How many to copy
+
+ @return
+ Pointer to the end of placed data in communication buffer (first free slot)
+ */
+static char* addBytes(char *buf, void *toAdd, size_t numBytes)
+{
+ memcpy(buf, toAdd, numBytes);
+ return buf + numBytes;
+}
+
+/** @brief Pthreads helper function for removing bytes from communication buffer
+
+ Copies \a numBytes from communication buffer \a buf to some local buffer \a buf
+
+ @param buf
+ Where to store the bytes
+
+ @param result
+ Where to copy from
+
+ @param numBytes
+ How many to copy
+
+ @return
+ Pointer to the end of read data in communication buffer (first free slot)
+ */
+static char* popBytes(char *buf, void *result, size_t numBytes)
+{
+ memcpy(result, buf, numBytes);
+ return buf + numBytes;
+}
+
+/** @brief Lock the MPI slave processes prior allocating partitions
+
+ MPI slave processes are locked and wait until the master process
+ has read the number of partitions, which it then broadcasts
+ to slaves, effectively unlocking them. The slave processes will
+ then allocate their own data structures and be locked in the
+ likelihood function.
+
+ @param tr
+ PLL instance
+
+ @todo
+ This function should not be called by the user. It is called
+ at \a pllCreateInstance. Probably this function should be removed
+ and inline code be placed in \a pllCreateInstance.
+*/
+void pllLockMPI (pllInstance * tr)
+{
+ int numberOfPartitions;
+ partitionList * pr;
+
+ if (!MASTER_P)
+ {
+ //MPI_Bcast (&numberOfPartitions, 1, MPI_INT, MPI_ROOT, MPI_COMM_WORLD);
+ MPI_Bcast (&numberOfPartitions, 1, MPI_INT, 0, MPI_COMM_WORLD);
+ pr = (partitionList *) calloc (1, sizeof (partitionList));
+ pr->numberOfPartitions = numberOfPartitions;
+
+ pllWorkerTrap (tr, pr);
+ MPI_Barrier (MPI_COMM_WORLD);
+ MPI_Finalize ();
+ exit(0);
+ }
+}
+
+/** Finalize MPI run
+
+ Finalizes MPI run by synchronizing all processes (master + slaves) with a
+ barrier so that all free their allocated resources. Then \a MPI_Finalize ()
+ is called.
+
+ @todo
+ Similarly as with the \a pllLockMPI function, this should not be called
+ by the user, but it is called implicitly at the end of \a pllDestroyInstance.
+ Probably this function should be removed and inline code be placed in
+ \a pllDestroyInstance.
+*/
+void pllFinalizeMPI (void)
+{
+ MPI_Barrier (MPI_COMM_WORLD);
+ MPI_Finalize ();
+}
+
+/**
+ @brief Sets up the MPI environment.
+
+ Calls the \a MPI_Init function and makes sure all processes store
+ their process ID and the total number of processes, using a barrier.
+
+ @note this should be the first call that is executed in your main
+ method.
+
+ @param argc
+ Address of argc from main
+ @param argv
+ Address of argv from main
+ */
+void pllInitMPI(int * argc, char **argv[])
+{
+ MPI_Init(argc, argv);
+ MPI_Comm_rank(MPI_COMM_WORLD, &processID);
+ MPI_Comm_size(MPI_COMM_WORLD, &processes);
+
+ /* if(MASTER_P) */
+ /* printf("\nThis is RAxML Process Number: %d (MASTER)\n", processID); */
+ MPI_Barrier(MPI_COMM_WORLD);
+
+}
+
+
+/**
+ @brief Traps worker MPI processes.
+
+ @note This function should be called immediately after initMPI()
+
+ @param tr
+ PLL instance
+
+ @param pr
+ List of partitions
+
+ @return
+ Returns /b PLL_FALSE if the callee was the master thread/process, otherwise /b PLL_TRUE
+ */
+static boolean pllWorkerTrap(pllInstance *tr, partitionList *pr)
+{
+ /// @note for the broadcasting, we need to, if the tree structure has already been initialized
+ treeIsInitialized = PLL_FALSE;
+
+ if(NOT MASTER_P)
+ {
+ threadData tData;
+ tData.tr = tr;
+ tData.threadNumber = processID;
+ tData.pr = pr;
+
+ likelihoodThread(&tData);
+
+ /* notice: the next call MUST be the return call from the main method */
+ return PLL_TRUE;
+ }
+ return PLL_FALSE;
+}
+
+
+#define ELEMS_IN_TRAV_INFO 9
+/** @brief Create a datastructure for sending the traversal descriptor.
+
+ @note This seems to be a very safe method to define your own mpi
+ datatypes (often there are problems with padding). But it is not
+ entirely for the weak of heart...
+ */
+static void defineTraversalInfoMPI (void)
+{
+ MPI_Datatype *result = &TRAVERSAL_MPI;
+
+ int i ;
+ MPI_Aint base;
+ int blocklen[ELEMS_IN_TRAV_INFO+1] = {1, 1, 1, 1, PLL_NUM_BRANCHES, PLL_NUM_BRANCHES, 1,1,1,1};
+ MPI_Aint disp[ELEMS_IN_TRAV_INFO+1];
+ MPI_Datatype type[ELEMS_IN_TRAV_INFO+1] = {MPI_INT, MPI_INT, MPI_INT, MPI_INT, MPI_DOUBLE, MPI_DOUBLE, MPI_INT, MPI_INT, MPI_INT, MPI_UB};
+ traversalInfo desc[2];
+
+ MPI_Get_address( desc, disp);
+ MPI_Get_address( &(desc[0].pNumber), disp + 1 );
+ MPI_Get_address( &(desc[0].qNumber), disp + 2 );
+ MPI_Get_address( &(desc[0].rNumber), disp + 3);
+ MPI_Get_address( desc[0].qz, disp + 4 );
+ MPI_Get_address( desc[0].rz, disp + 5 );
+ MPI_Get_address( &(desc[0].slot_p), disp + 6);
+ MPI_Get_address( &(desc[0].slot_q), disp + 7);
+ MPI_Get_address( &(desc[0].slot_r), disp + 8);
+ MPI_Get_address( desc + 1, disp + 9);
+
+ base = disp[0];
+ for(i = 0; i < ELEMS_IN_TRAV_INFO+1; ++i)
+ disp[i] -= base;
+
+ MPI_Type_create_struct( ELEMS_IN_TRAV_INFO+1 , blocklen, disp, type, result);
+ MPI_Type_commit(result);
+}
+
+
+#endif
+
+
+/********************/
+/* PTHREAD-SPECIFIC */
+/********************/
+#ifdef _USE_PTHREADS
+
+#ifndef _PORTABLE_PTHREADS
+/** @brief Pins a thread to a core (for efficiency).
+
+ This is a non-portable function that works only on some linux distributions of pthreads.
+ It sets the affinity of each thread to a specific core so that the performance is not
+ degraded due to threads migration.
+
+ @note
+ It is only called if \a _PORTABLE_PTHREADS is not defined
+
+ @param tid the thread id
+ */
+void pinToCore(int tid)
+{
+ static int nextCore = 0;
+
+ cpu_set_t cpuset;
+
+ CPU_ZERO(&cpuset);
+ CPU_SET(nextCore++, &cpuset);
+
+ if(pthread_setaffinity_np(pthread_self(), sizeof(cpu_set_t), &cpuset) != 0)
+ {
+ assert(0);
+ }
+}
+#endif
+
+/** Start PThreads
+
+ Start JOINABLE threads by executing \a pthread_create. The threads
+ are attached to the \a pllLikelihoodThread function
+
+ @param tr
+ PLL instance
+
+ @param pr
+ List of partitions
+
+ @todo
+ This function should never be called by the user. It is called
+ implicitly at \a pllInitModel. Perhaps we should add a check
+ or inline the code
+ */
+void pllStartPthreads (pllInstance *tr, partitionList *pr)
+{
+ pthread_attr_t attr;
+ int rc, t;
+ treeIsInitialized = PLL_FALSE;
+
+ jobCycle = 0;
+ threadJob = 0;
+
+ /* printf("\nThis is the RAxML Master Pthread\n"); */
+
+#if (NOT defined(_USE_PTHREADS) && defined( MEASURE_TIME_PARALLEL))
+ timeBuffer = rax_calloc(NUM_PAR_JOBS * tr->numberOfThreads, sizeof(double));
+#endif
+
+ pthread_attr_init(&attr);
+ pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_JOINABLE);
+
+ threads = (pthread_t *)rax_malloc((size_t)tr->numberOfThreads * sizeof(pthread_t));
+ tData = (threadData *)rax_malloc((size_t)tr->numberOfThreads * sizeof(threadData));
+
+ barrierBuffer = (volatile char *) rax_malloc(sizeof(volatile char) * (size_t)tr->numberOfThreads);
+
+ for(t = 0; t < tr->numberOfThreads; t++)
+ barrierBuffer[t] = 0;
+
+ for(t = 1; t < tr->numberOfThreads; t++)
+ {
+ tData[t].tr = tr;
+ tData[t].pr = pr;
+ tData[t].threadNumber = t;
+ rc = pthread_create(&threads[t], &attr, likelihoodThread, (void *)(&tData[t]));
+ if(rc)
+ {
+ printf("ERROR; return code from pthread_create() is %d\n", rc);
+ exit(-1);
+ }
+ }
+ pthread_attr_destroy (&attr);
+}
+
+/** Stop PThread
+
+ Stop threads by \a pthread_join
+
+ @param tr
+ PLL instance
+
+ @todo
+ This function should never be called by the user. It is implicitly called
+ at \a pllPartitionsDestroy. We should inline the code
+*/
+void pllStopPthreads (pllInstance * tr)
+{
+ int i;
+
+ for (i = 1; i < tr->numberOfThreads; ++ i)
+ {
+ pthread_join (threads[i], NULL);
+ }
+
+ rax_free (threads);
+ rax_free (tData);
+ rax_free ((void *)barrierBuffer);
+ rax_free (globalResult);
+
+}
+#endif
+
+
+/** Compute per-site log likelihoods (PThreads version)
+
+ Worker threads evaluate the likelihood on their sites
+
+ @param tr
+ Tree instance
+
+ @param lhs
+ Likelihood array
+
+ @param n
+ Number of threads
+
+ @param tid
+ Thread id
+ */
+void perSiteLogLikelihoodsPthreads(pllInstance *tr, partitionList *pr, double *lhs, int n, int tid)
+{
+ size_t
+ model,
+ i;
+
+ for(model = 0; model < (size_t)pr->numberOfPartitions; model++)
+ {
+ size_t
+ localIndex = 0;
+
+ /* decide if this partition is handled by the thread when -Q is ativated
+ or when -Q is not activated figure out which sites have been assigned to the
+ current thread */
+
+ boolean
+ execute = ((tr->manyPartitions && isThisMyPartition(pr, tid, model)) || (!tr->manyPartitions));
+
+ /* if the entire partition has been assigned to this thread (-Q) or if -Q is not activated
+ we need to compute some per-site log likelihoods with thread tid for this partition */
+
+ if(execute)
+ for(i = (size_t)(pr->partitionData[model]->lower); i < (size_t)(pr->partitionData[model]->upper); i++)
+ {
+ /* if -Q is active we compute all per-site log likelihoods for the partition,
+ othwerise we only compute those that have been assigned to thread tid
+ using the cyclic distribution scheme */
+
+ if(tr->manyPartitions || (i % n == (size_t)tid))
+ {
+ double
+ l;
+
+ /* now compute the per-site log likelihood at the current site */
+
+ switch(tr->rateHetModel)
+ {
+ case PLL_CAT:
+ l = evaluatePartialGeneric (tr, pr, localIndex, pr->partitionData[model]->perSiteRates[pr->partitionData[model]->rateCategory[localIndex]], model);
+ break;
+ case PLL_GAMMA:
+ l = evaluatePartialGeneric (tr, pr, localIndex, 1.0, model);
+ break;
+ default:
+ assert(0);
+ }
+
+ /* store it in an array that is local in memory to the current thread,
+ see function collectDouble() in axml.c for understanding how we then collect these
+ values stored in local arrays from the threads */
+
+ lhs[i] = l;
+
+ localIndex++;
+ }
+ }
+ }
+}
+
+/** @brief Check if a partition is assign to a thread/process.
+
+ Checks whether partition \a model from partition list \a localPr is
+ assigned to be processed by process/thread with id \a tid.
+
+ @param localTree
+ Local PLL instance
+
+ @param tid
+ Thread/Process id
+
+ @param model
+ Partition number
+ */
+boolean isThisMyPartition(partitionList *localPr, int tid, int model)
+{
+ if(localPr->partitionData[model]->partitionAssignment == tid)
+ return PLL_TRUE;
+ else
+ return PLL_FALSE;
+}
+
+/** @brief Computes partition size for all partitions (in case full partitions are assigns to workers).
+
+ @param localPr the local partitions instance
+
+ @param tid thread id
+ */
+static void computeFractionMany(partitionList *localPr, int tid)
+{
+ int
+ sites = 0;
+
+ int
+ model;
+
+ for(model = 0; model < localPr->numberOfPartitions; model++)
+ {
+ if(isThisMyPartition(localPr, tid, model))
+ {
+ localPr->partitionData[model]->width = localPr->partitionData[model]->upper - localPr->partitionData[model]->lower;
+ sites += localPr->partitionData[model]->width;
+ }
+ else
+ localPr->partitionData[model]->width = 0;
+ }
+
+
+}
+
+
+/** @brief Computes partition size for all partitions (for cyclic distribution of sites)
+
+ @param localPr the local partitions instance
+ @param tid thread id
+ @param n number of workers
+ */
+static void computeFraction(partitionList *localPr, int tid, int n)
+{
+ int
+ i,
+ model;
+
+ for(model = 0; model < localPr->numberOfPartitions; model++)
+ {
+ int width = 0;
+
+ for(i = localPr->partitionData[model]->lower; i < localPr->partitionData[model]->upper; i++)
+ if(i % n == tid)
+ width++;
+ localPr->partitionData[model]->width = width;
+ }
+}
+
+
+
+/** @brief Compare partition sizes.
+ @param p1 pointer to a partition
+ @param p2 pointer to another partition
+ */
+static int partCompare(const void *p1, const void *p2)
+{
+ partitionType
+ *rc1 = (partitionType *)p1,
+ *rc2 = (partitionType *)p2;
+
+ int
+ i = rc1->partitionLength,
+ j = rc2->partitionLength;
+
+ if (i > j)
+ return (-1);
+ if (i < j)
+ return (1);
+ return (0);
+}
+
+
+/** @brief Top-level function for the multi processor scheduling
+ scheme (assigns full partitions to workers).
+
+ tr->manyPartitions is set to PLL_TRUE if the user has indicated via -Q
+ that there are substantially more partitions than threads/cores
+ available. In that case we do not distribute sites from each
+ partition in a cyclic fashion to the cores , but distribute entire
+ partitions to cores. Achieving a good balance of alignment sites
+ to cores boils down to the multi-processor scheduling problem known
+ from theoretical comp. sci. which is NP-complete. We have
+ implemented very simple "standard" heuristics for solving the
+ multiprocessor scheduling problem that turn out to work very well
+ and are cheap to compute.
+
+ @param pr
+ List of partitions
+
+ @param tid
+ Id of current process/thread
+*/
+static void multiprocessorScheduling(pllInstance * tr, partitionList *pr, int tid)
+{
+ int
+ s,
+ model,
+ modelStates[2] = {4, 20},
+ numberOfPartitions[2] = {0 , 0},
+ arrayLength = sizeof(modelStates) / sizeof(int);
+
+ /* check that we have not addedd any new models for data types with a different number of states
+ and forgot to update modelStates */
+
+ for(model = 0; model < pr->numberOfPartitions; model++)
+ {
+ boolean
+ exists = PLL_FALSE;
+
+ for(s = 0; s < arrayLength; s++)
+ {
+ exists = exists || (pr->partitionData[model]->states == modelStates[s]);
+ if(pr->partitionData[model]->states == modelStates[s])
+ numberOfPartitions[s] += 1;
+ }
+
+ assert(exists);
+ }
+
+ for(s = 0; s < arrayLength; s++)
+ {
+ if(numberOfPartitions[s] > 0)
+ {
+ size_t
+ checkSum = 0,
+ sum = 0;
+
+ int
+ i,
+ k,
+#ifndef _FINE_GRAIN_MPI
+ n = tr->numberOfThreads,
+#else
+ n = processes,
+#endif
+ p = numberOfPartitions[s],
+ *assignments = (int *)rax_calloc((size_t)n, sizeof(int));
+
+ partitionType
+ *pt = (partitionType *)rax_malloc(sizeof(partitionType) * (size_t)p);
+
+
+
+ for(i = 0, k = 0; i < pr->numberOfPartitions; i++)
+ {
+ if(pr->partitionData[i]->states == modelStates[s])
+ {
+ pt[k].partitionNumber = i;
+ pt[k].partitionLength = pr->partitionData[i]->upper - pr->partitionData[i]->lower;
+ sum += (size_t)pt[k].partitionLength;
+ k++;
+ }
+ }
+
+ assert(k == p);
+
+ qsort(pt, p, sizeof(partitionType), partCompare);
+
+ for(i = 0; i < p; i++)
+ {
+ int
+ k,
+ min = INT_MAX,
+ minIndex = -1;
+
+ for(k = 0; k < n; k++)
+ if(assignments[k] < min)
+ {
+ min = assignments[k];
+ minIndex = k;
+ }
+
+ assert(minIndex >= 0);
+
+ assignments[minIndex] += pt[i].partitionLength;
+ assert(pt[i].partitionNumber >= 0 && pt[i].partitionNumber < pr->numberOfPartitions);
+ pr->partitionData[pt[i].partitionNumber]->partitionAssignment = minIndex;
+ }
+
+
+ /* Process i gets assignments[i] sites for modelStates[s] state model */
+
+ for(i = 0; i < n; i++)
+ checkSum += (size_t)assignments[i];
+
+ assert(sum == checkSum);
+
+ rax_free(assignments);
+ rax_free(pt);
+ }
+ }
+}
+
+
+
+/** @brief Reduce the first and second derivative of the likelihood
+ function.
+
+ We collect the first and second derivatives from the various
+ threads and sum them up. It's similar to what we do in
+ pllEvaluateGeneric() with the only difference that we have to collect
+ two values (firsrt and second derivative) instead of onyly one (the
+ log likelihood
+
+ @warning operates on global reduction buffers \a globalResult
+
+ @param tr tree
+ @param dlnLdlz first derivative
+ @param d2lnLdlz2 second derivative
+*/
+void branchLength_parallelReduce(pllInstance *tr, double *dlnLdlz, double *d2lnLdlz2, int numBranches )
+{
+#ifdef _REPRODUCIBLE_MPI_OR_PTHREADS
+
+ /* only the master executes this */
+ assert(tr->threadID == 0);
+
+ int b;
+ int t;
+ for(b = 0; b < numBranches; ++b)
+ {
+ dlnLdlz[b] = 0;
+ d2lnLdlz2[b] = 0;
+
+ for(t = 0; t < tr->numberOfThreads; ++t)
+ {
+ dlnLdlz[b] += globalResult[t * numBranches * 2 + b ];
+ d2lnLdlz2[b] += globalResult[t * numBranches * 2 + numBranches + b];
+ }
+ }
+#else
+ memcpy(dlnLdlz, globalResult, sizeof(double) * numBranches);
+ memcpy(d2lnLdlz2, globalResult + numBranches, sizeof(double) * numBranches);
+#endif
+}
+
+
+
+/** @brief Read from buffer or writes rates into buffer. Return
+ number of elems written.
+
+ If \a read is set to \b PLL_TRUE, then the contents \a srcTar are
+ copied to \a buf. Otherwise, the contents of \a buf are moved to
+ \a srcTar.
+
+ @param buf
+ Buffer
+
+ @param srcTar
+ Pointer to either source or destination array
+
+ @param tr
+ PLL instance
+
+ @param n number of workers
+
+ @param tid process id
+
+ @param read
+ If read-mode then set to \b PLL_TRUE
+
+ @param countOnly
+ if \b PLL_TRUE, simply return the number of elements
+*/
+static int doublesToBuffer(double *buf, double *srcTar, pllInstance *tr, partitionList *pr, int n, int tid, boolean read, boolean countOnly)
+{
+ int
+ model,
+ i;
+ double
+ *initPtr = buf;
+
+ for(model = 0; model < pr->numberOfPartitions; model++)
+ {
+ if(tr->manyPartitions)
+ {
+ if(isThisMyPartition(pr, tid, model))
+ for(i = pr->partitionData[model]->lower; i < pr->partitionData[model]->upper; i++)
+ {
+ if(NOT countOnly)
+ {
+ if(read)
+ *buf = srcTar[i];
+ else
+ srcTar[i] = *buf;
+ }
+ buf++;
+ }
+ }
+ else
+ {
+ for(i = pr->partitionData[model]->lower; i < pr->partitionData[model]->upper; i++)
+ if(i % n == tid)
+ {
+ if(NOT countOnly)
+ {
+ if(read)
+ *buf = srcTar[i];
+ else
+ srcTar[i] = *buf;
+ }
+ buf++;
+ }
+ }
+ }
+
+ return buf - initPtr;
+}
+
+
+
+
+/** @brief broadcast rates after rate optimization.
+
+ @param tre Library instance
+ @param localTree local library instance
+ @param n number of workers
+ @param tid worker id
+
+ @todo mpi_alltoallv/w may be more efficient, but it is a hell to set up
+ */
+void broadcastAfterRateOpt(pllInstance *tr, pllInstance *localTree, partitionList *pr, int n, int tid)
+{
+ int
+ num1 = 0,
+ num2 = 0,
+ num3 = 0,
+ i ;
+
+ for(i = 0; i < n; ++i)
+ {
+ double
+ allBuf[tr->originalCrunchedLength * 3],
+ buf1[tr->originalCrunchedLength],
+ buf2[tr->originalCrunchedLength],
+ buf3[tr->originalCrunchedLength];
+
+#ifdef _USE_PTHREADS
+ if(i != tid)
+ continue;
+#endif
+ int numDouble = 0;
+
+ /* extract doubles */
+
+ num1 = doublesToBuffer(buf1, localTree->patrat, tr, pr, n,i, PLL_TRUE, i!= tid);
+ num2 = doublesToBuffer(buf2, localTree->patratStored, tr, pr, n,i, PLL_TRUE, i!= tid);
+ num3 = doublesToBuffer(buf3, localTree->lhs, tr, pr, n,i, PLL_TRUE, i!= tid);
+
+ /* printf("%d + %d + %d\n", num1, num2, num3); */
+
+ numDouble += num1 + num2 + num3;
+
+ /* copy doubles */
+
+ memcpy(allBuf, buf1, num1 * sizeof(double));
+ memcpy(allBuf + num1, buf2, num2 * sizeof(double));
+ memcpy(allBuf + (num1 + num2) , buf3, num3 * sizeof(double));
+
+ BCAST_BUF(allBuf, numDouble, MPI_DOUBLE, i);
+
+ memcpy(buf1, allBuf, num1 * sizeof(double));
+ memcpy(buf2, allBuf + num1, num2 * sizeof(double));
+ memcpy(buf3, allBuf + (num1 + num2), num3 * sizeof(double));
+
+ /* re-insert doubles */
+ int assertCtr = 0;
+ assertCtr += doublesToBuffer(buf1, tr->patrat, tr, pr, n,i,PLL_FALSE, PLL_FALSE);
+ assertCtr += doublesToBuffer(buf2, tr->patratStored, tr, pr, n,i,PLL_FALSE, PLL_FALSE);
+ assertCtr += doublesToBuffer(buf3, tr->lhs, tr, pr, n,i,PLL_FALSE, PLL_FALSE);
+
+ assert(assertCtr == numDouble);
+ }
+}
+
+
+/** @brief Collect doubles from workers to master.
+
+
+
+ @param dst destination array
+ @param src source array
+ @param tr library instance
+ @param n number of workers
+ @param tid worker id
+ */
+static void collectDouble(double *dst, double *src, pllInstance *tr, partitionList *pr, int n, int tid)
+{
+#ifdef _FINE_GRAIN_MPI
+ int
+ assertNum = 0,
+ i,
+ displacements[tr->numberOfThreads];
+ double
+ buf[tr->originalCrunchedLength],
+ resultBuf[tr->originalCrunchedLength];
+
+ /* NOTE: This was moved here because it was an additional unnecessary move for the PTHREADS version. I didnt
+ have time to check the MPI version, have to get back to this and remove it */
+ /* gather own persite log likelihood values into local buffer */
+ int numberCollected = doublesToBuffer(buf, src, tr, pr,n,tid,PLL_TRUE, PLL_FALSE);
+
+ /* this communicates all the values to the master */
+
+ int numberPerWorker[tr->numberOfThreads];
+ if(MASTER_P) /* master counts number to receive, receives and writes back */
+ {
+ for(i = 0; i < n; ++i)
+ {
+ numberPerWorker[i] = doublesToBuffer(buf,src,tr,pr,n,i,PLL_FALSE, PLL_TRUE);
+ displacements[i] = i == 0 ? 0 : displacements[i-1] + numberPerWorker[i-1];
+ }
+
+ MPI_Gatherv(buf, numberCollected, MPI_DOUBLE,
+ resultBuf, numberPerWorker, displacements, MPI_DOUBLE,
+ 0, MPI_COMM_WORLD);
+
+ double *bufPtr = resultBuf;
+ for(i = 0 ; i < n; ++i)
+ {
+ int numberWritten = doublesToBuffer(bufPtr, dst,tr,pr,n,i, PLL_FALSE, PLL_FALSE);
+ bufPtr += numberWritten;
+ assertNum += numberWritten;
+ }
+
+ assert(assertNum == tr->originalCrunchedLength);
+ }
+ else /* workers only send their buffer */
+ MPI_Gatherv(buf, numberCollected, MPI_DOUBLE, resultBuf, numberPerWorker, displacements, MPI_DOUBLE, 0, MPI_COMM_WORLD);
+#else
+ /* pthread version only writes to global space */
+
+ //assertNum = doublesToBuffer(buf, dst,tr,pr,n,tid, PLL_FALSE, PLL_FALSE);
+ doublesToBuffer (dst, src, tr, pr, n, tid, PLL_TRUE, PLL_FALSE);
+ //assert(assertNum == numberCollected);
+#endif
+}
+
+
+
+/** @brief broadcast a new alpha (for the GAMMA model)
+ @param localTree local library instance
+ @param tr library instance
+ @param tid worker id
+ */
+static void broadCastAlpha(partitionList *localPr, partitionList *pr)
+{
+ int i,
+ model;
+
+#ifdef _FINE_GRAIN_MPI
+ int bufSize = localPr->numberOfPartitions * 4 * sizeof(double);
+ char bufDbl[bufSize];
+ char *bufPtrDbl = bufDbl;
+#endif
+
+ RECV_BUF(bufDbl, bufSize, MPI_BYTE);
+
+ for(model = 0; model < localPr->numberOfPartitions; model++)
+ for(i = 0; i < 4; ++i)
+ ASSIGN_BUF_DBL(localPr->partitionData[model]->gammaRates[i], pr->partitionData[model]->gammaRates[i]);
+
+ SEND_BUF(bufDbl, bufSize, MPI_BYTE);
+}
+
+/** @brief broadcast new LG4X weights
+ @param localTree local library instance
+ @param tr library instance
+ @param tid worker id
+ */
+static void broadCastLg4xWeights(partitionList *localPr, partitionList *pr)
+{
+ int i,
+ model;
+
+#ifdef _FINE_GRAIN_MPI
+ int bufSize = localPr->numberOfPartitions * 4 * sizeof(double);
+ char bufDbl[bufSize];
+ char *bufPtrDbl = bufDbl;
+#endif
+
+ RECV_BUF(bufDbl, bufSize, MPI_BYTE);
+
+ for(model = 0; model < localPr->numberOfPartitions; model++)
+ for(i = 0; i < 4; ++i)
+ ASSIGN_BUF_DBL(localPr->partitionData[model]->lg4x_weights[i], pr->partitionData[model]->lg4x_weights[i]);
+
+ SEND_BUF(bufDbl, bufSize, MPI_BYTE);
+}
+
+static void copyLG4(partitionList *localPr, partitionList *pr)
+{
+ int model, i, k;
+
+ /* determine size of buffer needed first */
+ int bufSize = 0;
+
+#ifdef _FINE_GRAIN_MPI
+ for(model = 0; model < localPr->numberOfPartitions; ++model )
+ {
+ const partitionLengths *pl = getPartitionLengths(pr->partitionData[model]);
+ bufSize += 4*(2*pl->eignLength + pl->evLength + pl->eiLength + pl->tipVectorLength + pl->substRatesLength + pl->frequenciesLength) * sizeof(double) ;
+ }
+#endif
+
+ char
+ bufDbl[bufSize];
+ char *bufPtrDbl = bufDbl;
+
+ RECV_BUF(bufDbl, bufSize, MPI_BYTE);
+
+ for (model = 0; model < localPr->numberOfPartitions; model++)
+ {
+ pInfo * localInfo = localPr->partitionData[model];
+ pInfo * info = pr->partitionData[model];
+
+ if (info->protModels == PLL_LG4M || info->protModels == PLL_LG4X)
+ {
+ for (k = 0; k < 4; k++)
+ {
+ const partitionLengths *pl = getPartitionLengths(pr->partitionData[model]);
+
+ for (i = 0; i < pl->eignLength; ++i)
+ ASSIGN_BUF_DBL(
+ localPr->partitionData[model]->EIGN_LG4[k][i],
+ pr->partitionData[model]->EIGN_LG4[k][i]);
+ for (i = 0; i < pl->eignLength; ++i)
+ ASSIGN_BUF_DBL (localPr->partitionData[model]->rawEIGN_LG4[k][i],
+ pr->partitionData[model]->rawEIGN_LG4[k][i]);
+ for (i = 0; i < pl->evLength; ++i)
+ ASSIGN_BUF_DBL(localPr->partitionData[model]->EV_LG4[k][i],
+ pr->partitionData[model]->EV_LG4[k][i]);
+ for (i = 0; i < pl->eiLength; ++i)
+ ASSIGN_BUF_DBL(localPr->partitionData[model]->EI_LG4[k][i],
+ pr->partitionData[model]->EI_LG4[k][i]);
+ for (i = 0; i < pl->substRatesLength; ++i)
+ ASSIGN_BUF_DBL(
+ localPr->partitionData[model]->substRates_LG4[k][i],
+ pr->partitionData[model]->substRates_LG4[k][i]);
+ for (i = 0; i < pl->frequenciesLength; ++i)
+ ASSIGN_BUF_DBL(
+ localPr->partitionData[model]->frequencies_LG4[k][i],
+ pr->partitionData[model]->frequencies_LG4[k][i]);
+ for (i = 0; i < pl->tipVectorLength; ++i)
+ ASSIGN_BUF_DBL(
+ localPr->partitionData[model]->tipVector_LG4[k][i],
+ pr->partitionData[model]->tipVector_LG4[k][i]);
+ }
+ }
+ }
+ SEND_BUF(bufDbl, bufSize, MPI_BYTE); /* */
+}
+
+/** @brief Master broadcasts rates.
+
+ @param localTree local library instance
+ @param tr library instance
+ @param tid worker id
+ */
+static void broadCastRates(partitionList *localPr, partitionList *pr)
+{
+ int
+ model;
+
+ /* determine size of buffer needed first */
+ int bufSize = 0;
+#ifdef _FINE_GRAIN_MPI
+ for(model = 0; model < localPr->numberOfPartitions; ++model )
+ {
+ const partitionLengths *pl = getPartitionLengths(pr->partitionData[model]); /* this is constant, isnt it? */
+ bufSize += (pl->eignLength + pl->evLength + pl->eiLength + pl->tipVectorLength) * sizeof(double) ;
+ }
+#endif
+
+ char
+ bufDbl[bufSize];
+ char *bufPtrDbl = bufDbl;
+
+ RECV_BUF(bufDbl, bufSize, MPI_BYTE);
+ int i ;
+
+ for(model = 0; model < localPr->numberOfPartitions; model++)
+ {
+ const partitionLengths *pl = getPartitionLengths(pr->partitionData[model]); /* this is constant, isnt it? */
+
+ for(i = 0; i < pl->eignLength; ++i)
+ ASSIGN_BUF_DBL(localPr->partitionData[model]->EIGN[i], pr->partitionData[model]->EIGN[i]);
+ for(i = 0; i < pl->evLength; ++i)
+ ASSIGN_BUF_DBL(localPr->partitionData[model]->EV[i],pr->partitionData[model]->EV[i]);
+ for(i = 0; i < pl->eiLength; ++i)
+ ASSIGN_BUF_DBL(localPr->partitionData[model]->EI[i], pr->partitionData[model]->EI[i]);
+ for(i = 0; i < pl->tipVectorLength; ++i)
+ ASSIGN_BUF_DBL(localPr->partitionData[model]->tipVector[i], pr->partitionData[model]->tipVector[i]);
+ }
+ SEND_BUF(bufDbl, bufSize, MPI_BYTE); /* */
+
+ copyLG4(localPr, pr);
+}
+
+/** @brief Evaluate the likelihood of this topology (PThreads/MPI implementation)
+
+ Evaluate the likelihood of the topology described in the PLL instance. First
+ every thread calls \a pllEvaluateIterative where it computes the log likelihoods
+ for the portion of each assigned partition. The results (for all partition) are stored
+ as elements of a local buffer array (\a buf). This is done by all threads. Subsequently,
+ an \a MPI_Reduce operation sums the contents of corresponding elements of the local
+ buffer arrays into another array (\a targetBuf) which are the log likelihoods of
+ each (complete) partition. Finally, the last array is copied to the master thread/process.
+ In addition, if \a getPerSiteLikelihoods is enabled the log likelihoods for each site
+ in the (compressed) alignment are stored in the array \a tr->lhs.
+
+ @param tr
+ PLL instance
+ @param tr
+ Local (thread/process) PLL instance
+
+ @param pr
+ Local (thread/process) list of partitions
+
+ @param tid
+ Thread/Process ID
+
+ @param getPerSiteLikelihoods
+ If set to \b PLL_TRUE, compute the log likelihood for each site.
+ */
+static void reduceEvaluateIterative(pllInstance *tr, pllInstance *localTree, partitionList *localPr, int tid, boolean getPerSiteLikelihoods)
+{
+ int model;
+
+ pllEvaluateIterative(localTree, localPr, getPerSiteLikelihoods);
+
+ /* when this is done we need to write the per-thread log likelihood to the
+ global reduction buffer. Tid is the thread ID, hence thread 0 will write its
+ results to reductionBuffer[0] thread 1 to reductionBuffer[1] etc.
+
+ the actual sum over the entries in the reduction buffer will then be computed
+ by the master thread which ensures that the sum is determinsitic */
+
+
+ /* if (getPerSiteLikelihoods == PLL_TRUE) store per-site likelihoods in array tr->lhs */
+ if(getPerSiteLikelihoods)
+ {
+#ifdef _FINE_GRAIN_MPI
+ int n = processes;
+#else
+ int n = tr->numberOfThreads;
+#endif
+
+ /* rearrange per site likelihoods into single local array for gathering */
+ int i ;
+ for(model = 0; model < localPr->numberOfPartitions; ++model)
+ {
+ pInfo *partition = localPr->partitionData[model];
+ boolean isMyPartition = isThisMyPartition(localPr, tid, model);
+
+ int ctr = 0;
+ for(i = partition->lower; i < partition->upper; ++i)
+ {
+ if(tr->manyPartitions && isMyPartition)
+ localTree->lhs[i] = partition->perSiteLikelihoods[ ctr++];
+ else if(NOT tr->manyPartitions && (i % n) == tid)
+ localTree->lhs[i] = partition->perSiteLikelihoods[ctr++];
+ }
+ }
+
+ /* gather all the double into the global array */
+ collectDouble(tr->lhs, localTree->lhs, localTree, localPr, n, tid);
+ }
+
+ /* printf("collecting done\n" ); */
+#ifdef _REPRODUCIBLE_MPI_OR_PTHREADS
+ /*
+ aberer: I implemented this as a mpi_gather operation into this buffer,
+ pthreads version emulates this gather;
+ master takes care of the reduction;
+ */
+
+ double
+ buf[localPr->numberOfPartitions];
+
+ for(model = 0; model < localPr->numberOfPartitions; ++model)
+ buf[model] = localPr->partitionData[model]->partitionLH;
+
+ /* either make reproducible or efficient */
+ ASSIGN_GATHER(globalResult, buf, localPr->numberOfPartitions, DOUBLE, tid);
+
+ /* printf("gather worked\n"); */
+#else
+ /* the efficient mpi version: a proper reduce */
+ double
+ buf[localPr->numberOfPartitions];
+
+ for(model = 0; model < localPr->numberOfPartitions; ++model)
+ buf[model] = localPr->partitionData[model]->partitionLH;
+
+ double
+ targetBuf[localPr->numberOfPartitions];
+
+ memset(targetBuf, 0, sizeof(double) * localPr->numberOfPartitions);
+
+ MPI_Reduce(buf, targetBuf, localPr->numberOfPartitions, MPI_DOUBLE, MPI_SUM, 0, MPI_COMM_WORLD);
+
+ if(MASTER_P)
+ {
+ for(model = 0; model < localPr->numberOfPartitions; ++model) {
+ localPr->partitionData[model]->partitionLH = targetBuf[model];
+ }
+ }
+#endif
+}
+
+
+
+/*@ @brief Broadcast the traversal descriptor to worker threads.
+
+ The one below is a hack we are re-assigning the local pointer to
+ the global one the memcpy version below is just for testing and
+ preparing the fine-grained MPI BlueGene version
+
+ @param localTree local library instance
+ @param tr library instance
+*/
+/* TODO: we should reset this at some point, the excplicit copy is just done for testing */
+inline static void broadcastTraversalInfo(pllInstance *localTree, pllInstance *tr, partitionList *localPr)
+{
+ /* @todo these two regions could be joined */
+#ifdef _USE_PTHREADS
+ /* memcpy -> memmove (see ticket #43). This function is sometimes called with localTree == tr,
+ * in which case some memcpy implementations can corrupt the buffers.
+ */
+
+ localTree->td[0].functionType = tr->td[0].functionType;
+ localTree->td[0].count = tr->td[0].count ;
+ localTree->td[0].traversalHasChanged = tr->td[0].traversalHasChanged;
+
+ memmove(localTree->td[0].executeModel, tr->td[0].executeModel, sizeof(boolean) * localPr->numberOfPartitions);
+ memmove(localTree->td[0].parameterValues, tr->td[0].parameterValues, sizeof(double) * localPr->numberOfPartitions);
+
+ if(localTree->td[0].traversalHasChanged)
+ memmove(localTree->td[0].ti, tr->td[0].ti, localTree->td[0].count * sizeof(traversalInfo));
+
+#else
+ /* MPI */
+ /* like in raxml-light: first we send a small message, if the
+ travesalDescriptor is longer, then resend */
+
+ int length = treeIsInitialized ? localPr->numberOfPartitions : 0;
+ char broadCastBuffer[messageSize(length)];
+ char *bufPtr = broadCastBuffer;
+ int i;
+
+ RECV_BUF(broadCastBuffer, messageSize(length), MPI_BYTE);
+
+ ASSIGN_BUF(localTree->td[0].functionType, tr->td[0].functionType , int);
+ ASSIGN_BUF(localTree->td[0].count, tr->td[0].count , int);
+ ASSIGN_BUF(localTree->td[0].traversalHasChanged, tr->td[0].traversalHasChanged , int);
+
+ if(treeIsInitialized)
+ {
+ for(i = 0; i < localPr->numberOfPartitions; ++i)
+ {
+ ASSIGN_BUF(localTree->td[0].executeModel[i], tr->td[0].executeModel[i], int);
+ ASSIGN_BUF(localTree->td[0].parameterValues[i], tr->td[0].parameterValues[i], double);
+ }
+
+ for(i = 0; i < TRAVERSAL_LENGTH; ++i )
+ ASSIGN_BUF(localTree->td[0].ti[i], tr->td[0].ti[i], traversalInfo);
+ }
+
+ SEND_BUF(broadCastBuffer, messageSize(length), MPI_BYTE);
+
+ /* now we send the second part of the traversal descriptor, if we
+ exceed the pre-set number of elements */
+ if(treeIsInitialized && localTree->td[0].count > TRAVERSAL_LENGTH)
+ {
+ /* lets use the MPI_Datatype for this thing, what I've read it's
+ supposed to be more secure and efficient */
+ MPI_Bcast(localTree->td[0].ti + TRAVERSAL_LENGTH, localTree->td[0].count - TRAVERSAL_LENGTH, TRAVERSAL_MPI, 0, MPI_COMM_WORLD );
+ }
+#endif
+}
+
+
+/** @brief helper that yields a string representation of a parallel region.
+
+ @param type type of parallel region
+ */
+char* getJobName(int type)
+{
+ switch(type)
+ {
+ case PLL_THREAD_NEWVIEW:
+ return "PLL_THREAD_NEWVIEW";
+ case PLL_THREAD_EVALUATE:
+ return "PLL_THREAD_EVALUATE";
+ case PLL_THREAD_MAKENEWZ:
+ return "PLL_THREAD_MAKENEWZ";
+ case PLL_THREAD_MAKENEWZ_FIRST:
+ return "PLL_THREAD_MAKENEWZ_FIRST";
+ case PLL_THREAD_RATE_CATS:
+ return "PLL_THREAD_RATE_CATS";
+ case PLL_THREAD_COPY_RATE_CATS:
+ return "PLL_THREAD_COPY_RATE_CATS";
+ case PLL_THREAD_COPY_INIT_MODEL:
+ return "PLL_THREAD_COPY_INIT_MODEL";
+ case PLL_THREAD_INIT_PARTITION:
+ return "PLL_THREAD_INIT_PARTITION";
+ case PLL_THREAD_OPT_ALPHA:
+ return "PLL_THREAD_OPT_ALPHA";
+ case PLL_THREAD_OPT_RATE:
+ return "PLL_THREAD_OPT_RATE";
+ case PLL_THREAD_COPY_ALPHA:
+ return "PLL_THREAD_COPY_ALPHA";
+ case PLL_THREAD_COPY_RATES:
+ return "PLL_THREAD_COPY_RATES";
+ case PLL_THREAD_COPY_LG4X_RATES:
+ return "PLL_THREAD_COPY_LG4X_RATES";
+ case PLL_THREAD_COPY_LG4X_EIGN:
+ return "PLL_THREAD_COPY_LG4X_EIGN";
+ case PLL_THREAD_PER_SITE_LIKELIHOODS:
+ return "PLL_THREAD_PER_SITE_LIKELIHOODS";
+ case PLL_THREAD_NEWVIEW_ANCESTRAL:
+ return "PLL_THREAD_NEWVIEW_ANCESTRAL";
+ case PLL_THREAD_GATHER_ANCESTRAL:
+ return "PLL_THREAD_GATHER_ANCESTRAL";
+ case PLL_THREAD_EXIT_GRACEFULLY:
+ return "PLL_THREAD_EXIT_GRACEFULLY";
+ case PLL_THREAD_EVALUATE_PER_SITE_LIKES:
+ return "PLL_THREAD_EVALUATE_PER_SITE_LIKES";
+ default: assert(0);
+ }
+}
+
+/**
+ @brief Generic entry point for parallel regions (mostly broadcasts
+ traversal descriptor first).
+
+ This function here handles all parallel regions in the Pthreads
+ version, when we enter this function pllMasterBarrier() has been called
+ by the master thread from within the sequential part of the
+ program, tr is the library instance (tree) at the master thread,
+ localTree is the library instance (tree) at the worker threads
+
+ While this is not necessary, adress spaces of threads are indeed
+ separated for easier transition to a distributed memory paradigm
+
+ @param tr library instance
+ @param localTree local library instance
+ @param tid worker id
+ @param n number of workers
+*/
+static boolean execFunction(pllInstance *tr, pllInstance *localTree, partitionList *pr, partitionList *localPr, int tid, int n)
+{
+ int
+ i,
+ model,
+ localCounter;
+
+#ifdef MEASURE_TIME_PARALLEL
+ double timeForParallelRegion = gettime();
+#endif
+
+
+#ifdef _USE_PTHREADS
+ /* some stuff associated with the barrier implementation using Pthreads and busy wait */
+ int currentJob = threadJob >> 16;
+#endif
+
+ /* here the master sends and all threads/processes receive the traversal descriptor */
+ broadcastTraversalInfo(localTree, tr, localPr);
+
+#ifdef _USE_PTHREADS
+ /* make sure that nothing is going wrong */
+ assert(currentJob == localTree->td[0].functionType);
+#else
+ localTree = tr;
+ int currentJob = localTree->td[0].functionType;
+#endif
+
+#ifdef DEBUG_PARALLEL
+ printf("[%d] working on %s\n", tid, getJobName(currentJob));
+#endif
+
+ switch(currentJob)
+ {
+ case PLL_THREAD_NEWVIEW:
+ /* just a newview on the fraction of sites that have been assigned to this thread */
+
+ pllNewviewIterative(localTree, localPr, 0);
+ break;
+ case PLL_THREAD_EVALUATE:
+ reduceEvaluateIterative(tr, localTree, localPr, tid, PLL_FALSE);
+ break;
+ case PLL_THREAD_MAKENEWZ_FIRST:
+
+ /* this is the first call from within makenewz that requires getting the likelihood vectors to the left and
+ right of the branch via newview and doing some precomputations.
+
+ For details see comments in makenewzGenericSpecial.c
+ */
+ case PLL_THREAD_MAKENEWZ:
+ {
+ double
+ dlnLdlz[PLL_NUM_BRANCHES],
+ d2lnLdlz2[PLL_NUM_BRANCHES];
+
+ if(localTree->td[0].functionType == PLL_THREAD_MAKENEWZ_FIRST)
+ makenewzIterative(localTree, localPr);
+ execCore(localTree, localPr, dlnLdlz, d2lnLdlz2);
+
+ /* gather the first and second derivatives that have been written by each thread */
+ /* as for evaluate above, the final sum over the derivatives will be computed by the
+ master thread in its sequential part of the code */
+
+ int numBranches = localPr->perGeneBranchLengths?localPr->numberOfPartitions:1;
+
+#ifdef _REPRODUCIBLE_MPI_OR_PTHREADS
+ /* MPI: implemented as a gather again, pthreads: just buffer copying */
+ double buf[ 2 * numBranches];
+ memcpy( buf, dlnLdlz, numBranches * sizeof(double) );
+ memcpy(buf + numBranches, d2lnLdlz2, numBranches * sizeof(double));
+
+ ASSIGN_GATHER(globalResult, buf, 2 * numBranches, DOUBLE, tid);
+#else
+ double result[numBranches];
+ memset(result,0, numBranches * sizeof(double));
+ MPI_Reduce( dlnLdlz , result , numBranches, MPI_DOUBLE, MPI_SUM, 0, MPI_COMM_WORLD);
+ if(MASTER_P)
+ memcpy(globalResult, result, sizeof(double) * numBranches);
+
+ memset(result,0,numBranches * sizeof(double));
+ MPI_Reduce( d2lnLdlz2 , result , numBranches, MPI_DOUBLE, MPI_SUM, 0, MPI_COMM_WORLD);
+ if(MASTER_P)
+ memcpy(globalResult + numBranches, result, sizeof(double) * numBranches);
+#endif
+ }
+
+ break;
+
+ case PLL_THREAD_INIT_PARTITION:
+
+ /* broadcast data and initialize and allocate arrays in partitions */
+
+ initializePartitionsMaster(tr, localTree, pr, localPr, tid, n);
+
+ break;
+ case PLL_THREAD_COPY_ALPHA:
+ case PLL_THREAD_OPT_ALPHA:
+ /* this is when we have changed the alpha parameter, inducing a change in the discrete gamma rate categories.
+ this is called when we are optimizing or sampling (in the Bayesioan case) alpha parameter values */
+
+ /* distribute the new discrete gamma rates to the threads */
+ broadCastAlpha(localPr,pr);
+
+ /* compute the likelihood, note that this is always a full tree traversal ! */
+ if(localTree->td[0].functionType == PLL_THREAD_OPT_ALPHA)
+ reduceEvaluateIterative(tr, localTree, localPr, tid, PLL_FALSE);
+
+ break;
+ case PLL_THREAD_OPT_RATE:
+ case PLL_THREAD_COPY_RATES:
+
+ /* if we are optimizing the rates in the transition matrix Q this induces recomputing the eigenvector eigenvalue
+ decomposition and the tipVector as well because of the special numerics in RAxML, the matrix of eigenvectors
+ is "rotated" into the tip lookup table.
+
+ Hence if the sequential part of the program that steers the Q matrix rate optimization has changed a rate we
+ need to broadcast all eigenvectors, eigenvalues etc to each thread
+ */
+
+ broadCastRates(localPr, pr);
+
+ /* now evaluate the likelihood of the new Q matrix, this always requires a full tree traversal because the changes need
+ to be propagated throughout the entire tree */
+
+ if(localTree->td[0].functionType == PLL_THREAD_OPT_RATE)
+ reduceEvaluateIterative(tr, localTree, localPr, tid, PLL_FALSE);
+
+ break;
+ case PLL_THREAD_COPY_LG4X_RATES:
+
+ broadCastLg4xWeights(localPr, pr);
+ broadCastAlpha(localPr, pr);
+
+ assert(localPr->partitionData[0]->lg4x_weights[0] == pr->partitionData[0]->lg4x_weights[0]);
+
+ break;
+ case PLL_THREAD_OPT_LG4X_RATE:
+
+ broadCastLg4xWeights(localPr, pr);
+ broadCastAlpha(localPr, pr);
+
+ assert(localPr->partitionData[0]->lg4x_weights[0] == pr->partitionData[0]->lg4x_weights[0]);
+
+ /* compute the likelihood, note that this is always a full tree traversal ! */
+ reduceEvaluateIterative(tr, localTree, localPr, tid, PLL_FALSE);
+
+ break;
+ case PLL_THREAD_COPY_LG4X_EIGN:
+ if(tid > 0)
+ {
+ for(model = 0; model < localPr->numberOfPartitions; model++)
+ {
+ memcpy(localPr->partitionData[model]->EIGN_LG4[0], pr->partitionData[model]->EIGN_LG4[0], sizeof(double) * 19);
+ memcpy(localPr->partitionData[model]->EIGN_LG4[1], pr->partitionData[model]->EIGN_LG4[1], sizeof(double) * 19);
+ memcpy(localPr->partitionData[model]->EIGN_LG4[2], pr->partitionData[model]->EIGN_LG4[2], sizeof(double) * 19);
+ memcpy(localPr->partitionData[model]->EIGN_LG4[3], pr->partitionData[model]->EIGN_LG4[3], sizeof(double) * 19);
+ }
+ }
+ break;
+ case PLL_THREAD_COPY_INIT_MODEL:
+ {
+
+ /* need to be very careful here ! PLL_THREAD_COPY_INIT_MODEL is also used when the program is restarted
+ it is hence not sufficient to just initialize everything by the default values ! */
+
+ broadCastRates(localPr, pr);
+ broadCastAlpha(localPr, pr); /* isnt that only executed when we are on gamma? */
+ broadCastLg4xWeights(localPr, pr);
+
+ /*
+ copy initial model parameters, the Q matrix and alpha are initially, when we start our likelihood search
+ set to default values.
+ Hence we need to copy all those values that are required for computing the likelihood
+ with newview(), evaluate() and makenez() to the private memory of the threads
+ */
+
+
+ if( localTree->rateHetModel == PLL_CAT) /* TRICKY originally this should only be executed by workers */
+ {
+#ifdef _FINE_GRAIN_MPI
+ int bufSize = 2 * localTree->originalCrunchedLength * sizeof(double);
+ char bufDbl[bufSize],
+ *bufPtrDbl = bufDbl;
+#endif
+
+ RECV_BUF(bufDbl, bufSize,MPI_BYTE);
+
+ /* this should be local */
+ for(model = 0; model < localPr->numberOfPartitions; model++)
+ localPr->partitionData[model]->numberOfCategories = pr->partitionData[model]->numberOfCategories;
+
+
+ /* this is only relevant for the PSR model, we can worry about this later */
+ for(i = 0; i < localTree->originalCrunchedLength; ++i)
+ {
+ ASSIGN_BUF_DBL(localTree->patrat[i], tr->patrat[i]);
+ ASSIGN_BUF_DBL(localTree->patratStored[i], tr->patratStored[i]);
+ }
+
+ SEND_BUF(bufDbl, bufSize, MPI_BYTE);
+ }
+ }
+ break;
+ case PLL_THREAD_RATE_CATS:
+ {
+ /* this is for optimizing per-site rate categories under PSR, let's worry about this later */
+
+ ASSIGN_DBL( localTree->lower_spacing, tr->lower_spacing);
+ ASSIGN_DBL( localTree->upper_spacing, tr->upper_spacing);
+
+ optRateCatPthreads(localTree, localPr, localTree->lower_spacing, localTree->upper_spacing, localTree->lhs, n, tid);
+
+ broadcastAfterRateOpt(tr, localTree, localPr, n, tid);
+ }
+ break;
+ case PLL_THREAD_COPY_RATE_CATS:
+ {
+ /*
+ this is invoked when we have changed the per-site rate category assignment
+ In essence it distributes the new per site rates to all threads
+
+ The pthread-version here simply assigns everything as ought to
+ be. The MPI-version is configured to write to a buffer instead
+ and SEND (master) or RECV (workers) it.
+
+ */
+
+ /*
+ start of communication part
+ */
+
+ int i,
+ /* buf[localPr->numberOfPartitions], */
+ /* assertCtr = 0, */
+ dblBufSize = 0;
+
+#ifdef _FINE_GRAIN_MPI
+ int bufSize = localPr->numberOfPartitions * sizeof(int);
+ char buf[bufSize];
+ char *bufPtr = buf;
+#endif
+
+ RECV_BUF(buf, bufSize, MPI_BYTE);
+
+ for( model = 0; model < localPr->numberOfPartitions; ++model)
+ {
+ ASSIGN_BUF(localPr->partitionData[model]->numberOfCategories, pr->partitionData[model]->numberOfCategories, int);
+ dblBufSize += localPr->partitionData[model]->numberOfCategories * sizeof(double);
+ }
+
+ SEND_BUF(buf, bufSize, MPI_BYTE);
+
+
+ dblBufSize += 2 * localTree->originalCrunchedLength * sizeof(double);
+
+#ifdef _FINE_GRAIN_MPI
+ char bufDbl[dblBufSize],
+ *bufPtrDbl = bufDbl;
+#endif
+
+ RECV_BUF(bufDbl, dblBufSize, MPI_BYTE);
+
+ for(i = 0; i < localTree->originalCrunchedLength; ++i)
+ {
+ ASSIGN_BUF_DBL(localTree->patrat[i], tr->patrat[i]);
+ ASSIGN_BUF_DBL(localTree->patratStored[i], tr->patratStored[i]);
+ }
+
+ for( model = 0; model < localPr->numberOfPartitions; ++model)
+ for(i = 0; i < localPr->partitionData[model]->numberOfCategories; i++)
+ ASSIGN_BUF_DBL(localPr->partitionData[model]->perSiteRates[i], pr->partitionData[model]->perSiteRates[i]);
+
+ SEND_BUF(bufDbl, dblBufSize, MPI_BYTE);
+
+
+ /* lets test, if it is a good idea to send around the basic categories */
+#ifdef _FINE_GRAIN_MPI
+ /* TODO this is inefficient, but is seems to have a small impact on performance */
+ MPI_Bcast(tr->rateCategory, tr->originalCrunchedLength, MPI_INT, 0, MPI_COMM_WORLD);
+#endif
+
+
+ /*
+ now re-assign values
+ */
+ for(model = 0; model < localPr->numberOfPartitions; model++)
+ {
+ if(localTree->manyPartitions)
+ {
+ if(isThisMyPartition(localPr, tid, model))
+ for(localCounter = 0, i = localPr->partitionData[model]->lower; i < localPr->partitionData[model]->upper; i++, localCounter++)
+ {
+ localPr->partitionData[model]->rateCategory[localCounter] = tr->rateCategory[i];
+ }
+ }
+ else
+ {
+ for(localCounter = 0, i = localPr->partitionData[model]->lower; i < localPr->partitionData[model]->upper; i++)
+ {
+ if(i % n == tid)
+ {
+ localPr->partitionData[model]->rateCategory[localCounter] = tr->rateCategory[i];
+
+ localCounter++;
+ }
+ }
+ }
+ }
+ }
+ break;
+ case PLL_THREAD_PER_SITE_LIKELIHOODS:
+ {
+
+ /* compute per-site log likelihoods for the sites/partitions
+ that are handled by this thread */
+ perSiteLogLikelihoodsPthreads(localTree, localPr, localTree->lhs, n, tid);
+
+ /* do a parallel gather operation, the threads will write their results
+ into the global buffer tr->lhs that will then contain all per-site log likelihoods
+ in the proper order
+ */
+
+ collectDouble(tr->lhs, localTree->lhs, localTree, localPr, n, tid);
+
+ }
+ break;
+ /* check for errors */
+ case PLL_THREAD_NEWVIEW_ANCESTRAL:
+ assert(0);
+ break;
+ case PLL_THREAD_GATHER_ANCESTRAL:
+ assert(0);
+ break;
+ case PLL_THREAD_EXIT_GRACEFULLY:
+ {
+ /* cleans up the workers memory */
+
+#ifdef _USE_PTHREADS
+ /* TODO destroying the tree does not work yet in a highly
+ generic manner. */
+
+ if(NOT MASTER_P)
+ {
+ pllPartitionsDestroy (localTree, &localPr);
+ /* pllTreeDestroy (localTree); */
+ }
+ else
+ {
+ //pllPartitionsDestroy (tr, &pr);
+ /* pllTreeDestroy (tr); */
+ }
+
+#else
+ //pllPartitionsDestroy (tr, &pr);
+ /* pllTreeDestroy (tr); */
+
+ //MPI_Finalize();
+ //exit(0);
+#endif
+ return PLL_FALSE;
+ }
+ break;
+ case PLL_THREAD_EVALUATE_PER_SITE_LIKES:
+ {
+ reduceEvaluateIterative(tr, localTree, localPr, tid, PLL_TRUE);
+ }
+ break;
+ default:
+ printf("Job %d\n", currentJob);
+ assert(0);
+ }
+
+ return PLL_TRUE;
+}
+
+
+
+
+/** Target function where the threads/processes are trapped
+
+ The threads/processes spend all of their time in this function
+ running operations on the data (computing likelihoods).
+
+ @param tData
+ Structure that contains the vital information for the thread/process,
+ i.e. PLL instance, list of partitions and thread ID
+
+ @note
+ The data in \a tData are different for pthreads and MPI.
+ Expand this section.
+ */
+static void *likelihoodThread(void *tData)
+{
+ threadData *td = (threadData*)tData;
+ pllInstance
+ *tr = td->tr;
+ partitionList *pr = td->pr;
+
+#ifdef _USE_PTHREADS
+ pllInstance *localTree = rax_calloc(1,sizeof(pllInstance ));
+ partitionList *localPr = rax_calloc(1,sizeof(partitionList));
+
+ int
+ myCycle = 0,
+ localTrap = 1;
+
+ const int
+ n = td->tr->numberOfThreads,
+ tid = td->threadNumber;
+
+#ifndef _PORTABLE_PTHREADS
+ pinToCore(tid);
+#endif
+
+ /* printf("\nThis is RAxML Worker Pthread Number: %d\n", tid); */
+
+ while(localTrap)
+ {
+
+ while (myCycle == threadJob);
+ myCycle = threadJob;
+
+ if ((threadJob >> 16) != PLL_THREAD_INIT_PARTITION) {
+ localPr->perGeneBranchLengths = pr->perGeneBranchLengths;
+ localPr->numberOfPartitions = pr->numberOfPartitions;
+ }
+ localTrap = execFunction(tr, localTree, pr, localPr, tid, n);
+
+ barrierBuffer[tid] = 1;
+ }
+ rax_free (localTree->td[0].executeModel); //localTree->td[0].executeModel = NULL;
+ rax_free (localTree->td[0].parameterValues); //localTree->td[0].parameterValues = NULL;
+ rax_free (localTree->rateCategory); //localTree->rateCategory = NULL;
+ rax_free (localTree->lhs); //localTree->lhs = NULL;
+ rax_free (localTree->patrat); //localTree->patrat = NULL;
+ rax_free (localTree->patratStored); //localTree->patratStored = NULL;
+ rax_free (localTree->td[0].ti); //localTree->td[0].ti = NULL;
+ rax_free (localTree);
+#else
+ const int
+ n = processes,
+ tid = td->threadNumber;
+ int i;
+
+ /* printf("\nThis is RAxML Worker Process Number: %d\n", tid); */
+
+ while(execFunction(tr, tr, pr, pr, tid,n));
+
+ rax_free (tr->lhs);
+ rax_free (tr->td[0].ti);
+ rax_free (tr->td[0].executeModel);
+ rax_free (tr->td[0].parameterValues);
+ rax_free (tr->patrat);
+ rax_free (tr->patratStored);
+ rax_free (tr->aliaswgt);
+ rax_free (tr->y_ptr);
+ for (i = 0; i < pr->numberOfPartitions; ++ i)
+ rax_free (pr->partitionData[i]);
+ rax_free (pr->partitionData);
+ rax_free (pr);
+ rax_free (tr);
+#endif
+
+ return (void*)NULL;
+}
+
+
+/**
+ @brief Cleanup step once the master barrier succeeded.
+
+ This is master specific code called once the barrier is
+ passed. Stuff such as reduction operations. If we execute this
+ here, we can keep the code mostly free from parallel -specific
+ code.
+
+ @param tr
+ PLL instance
+
+ @param pr
+ List of partitions
+
+ @param jobType
+ Job that is to be executed
+*/
+void pllMasterPostBarrier(pllInstance *tr, partitionList *pr, int jobType)
+{
+ assert(tr->threadID == 0);
+
+ switch(jobType)
+ {
+ case PLL_THREAD_EVALUATE:
+ case PLL_THREAD_OPT_RATE:
+ case PLL_THREAD_OPT_ALPHA:
+ case PLL_THREAD_OPT_LG4X_RATE:
+ case PLL_THREAD_EVALUATE_PER_SITE_LIKES:
+ {
+#ifdef _REPRODUCIBLE_MPI_OR_PTHREADS
+ int i,j;
+ volatile double partitionResult;
+
+ for(j = 0; j < pr->numberOfPartitions; j++)
+ {
+ for(i = 0, partitionResult = 0.0; i < tr->numberOfThreads; i++)
+ partitionResult += globalResult[i * pr->numberOfPartitions+ j];
+
+ pr->partitionData[j]->partitionLH = partitionResult;
+ }
+#endif
+
+ break;
+ }
+ case PLL_THREAD_PER_SITE_LIKELIHOODS:
+ {
+ int i;
+ /* now just compute the sum over per-site log likelihoods for error checking */
+ double accumulatedPerSiteLikelihood = 0.;
+ for(i = 0; i < tr->originalCrunchedLength; i++)
+ accumulatedPerSiteLikelihood += tr->lhs[i];
+
+ /* printf("RESULT: %f\t%f", tr->likelihood, accumulatedPerSiteLikelihood); */
+ assert(PLL_ABS(tr->likelihood - accumulatedPerSiteLikelihood) < 0.00001);
+ }
+ break;
+ default:
+ ; /* dont do anything on default,
+ mostly, we can skip that */
+ }
+}
+
+/**
+ @brief A generic master barrier for executing parallel parts of the code
+
+ A generic master barrier through which the master thread/process controls
+ the work job execution. Through the parameter \a jobType the master instructs
+ the slaves of what type of work they must conduct.
+
+ @param tr
+ PLL instance
+
+ @param pr
+ List of partitions
+
+ @param jobType
+ Type of job to be conducted
+ */
+void pllMasterBarrier(pllInstance *tr, partitionList *pr, int jobType)
+{
+
+#ifdef MEASURE_TIME_PARALLEL
+ assert(jobType < NUM_PAR_JOBS);
+ timePerRegion[NUM_PAR_JOBS] += gettime()- masterTimePerPhase ;
+ masterTimePerPhase = gettime();
+#endif
+
+#ifdef _USE_PTHREADS
+ const int
+ n = tr->numberOfThreads;
+
+ tr->td[0].functionType = jobType;
+
+ jobCycle = !jobCycle;
+ threadJob = (jobType << 16) + jobCycle;
+
+ execFunction(tr, tr, pr, pr, 0, n);
+
+ int
+ i,
+ sum;
+
+ do
+ {
+ for(i = 1, sum = 1; i < n; i++)
+ sum += barrierBuffer[i];
+ }
+ while(sum < n);
+
+ for(i = 1; i < n; i++)
+ barrierBuffer[i] = 0;
+#else
+ tr->td[0].functionType = jobType;
+ execFunction(tr,tr,pr,pr,0,processes);
+#endif
+
+ /* code executed by the master, once the barrier is crossed */
+ pllMasterPostBarrier(tr, pr, jobType);
+
+#ifdef MEASURE_TIME_PARALLEL
+ timePerRegion[jobType] += gettime() - masterTimePerPhase;
+ masterTimePerPhase = gettime();
+#endif
+}
+
+
+#if (defined(_FINE_GRAIN_MPI) || defined(_USE_PTHREADS))
+
+/** @brief Initialize structures for slave process/threads
+
+ Allocate all memory structures required by slave threads/processes
+
+ @param tr
+ PLL Instance
+
+ @param localTree
+ A local PLL instance for the slave process/thread which is initialized in this function based on \a tr
+
+ @pram pr
+ List of partitions
+
+ @param localPr
+ A local list of partitions for the slave process/thread which will be initialized based on \a pr
+
+ @pram tid
+ The slave process/thread ID
+
+ @note
+ This function should never be called by the master thread, but is called by master process in MPI implementation.
+ */
+static void assignAndInitPart1(pllInstance *localTree, pllInstance *tr, partitionList *localPr, partitionList *pr, int *tid)
+{
+ size_t
+ model;
+ int
+ totalLength = 0;
+
+#ifdef _USE_PTHREADS
+ localTree->threadID = *tid;
+ /* printf("my id is %d\n", *tid); */
+ assert(localTree != tr);
+ localTree->numberOfThreads = tr->numberOfThreads;
+#else /* => MPI */
+ *tid = processID;
+ localTree->threadID = processID;
+ tr->numberOfThreads = processes;
+
+ int bufSize = (9 + pr->numberOfPartitions* 8) * sizeof(int);
+ char buf[bufSize],
+ *bufPtr = buf;
+#endif
+
+ RECV_BUF(buf, bufSize, MPI_BYTE);
+
+ ASSIGN_BUF( localTree->useRecom, tr->useRecom, int);
+ ASSIGN_BUF( localTree->rateHetModel, tr->rateHetModel, int);
+ ASSIGN_BUF( localTree->useMedian, tr->useMedian, int);
+ ASSIGN_BUF( localTree->saveMemory, tr->saveMemory, int);
+ ASSIGN_BUF( localTree->maxCategories, tr->maxCategories, int);
+ ASSIGN_BUF( localTree->originalCrunchedLength, tr->originalCrunchedLength, int);
+ ASSIGN_BUF( localTree->mxtips, tr->mxtips, int);
+ ASSIGN_BUF( localPr->numberOfPartitions, pr->numberOfPartitions, int);
+ ASSIGN_BUF( localPr->perGeneBranchLengths, pr->perGeneBranchLengths, boolean);
+
+ localTree->td[0].count = 0;
+
+ if(NOT MASTER_P)
+ {
+ localTree->lhs = (double*)rax_calloc((size_t)localTree->originalCrunchedLength, sizeof(double));
+ localPr->partitionData = (pInfo**)rax_calloc(PLL_NUM_BRANCHES,sizeof(pInfo*));
+ for(model = 0; model < (size_t)localPr->numberOfPartitions; model++) {
+ localPr->partitionData[model] = (pInfo*)rax_calloc(1,sizeof(pInfo));
+ }
+ localTree->td[0].ti = (traversalInfo *)rax_malloc(sizeof(traversalInfo) * (size_t)localTree->mxtips);
+ localTree->td[0].executeModel = (boolean *)rax_malloc(sizeof(boolean) * PLL_NUM_BRANCHES);
+ localTree->td[0].parameterValues = (double *)rax_malloc(sizeof(double) * PLL_NUM_BRANCHES);
+ localTree->patrat = (double*)rax_malloc(sizeof(double) * (size_t)localTree->originalCrunchedLength);
+ localTree->patratStored = (double*)rax_malloc(sizeof(double) * (size_t)localTree->originalCrunchedLength);
+ }
+
+ for(model = 0; model < (size_t)localPr->numberOfPartitions; model++)
+ {
+ ASSIGN_BUF(localPr->partitionData[model]->numberOfCategories, pr->partitionData[model]->numberOfCategories, int);
+ ASSIGN_BUF(localPr->partitionData[model]->states, pr->partitionData[model]->states, int);
+ ASSIGN_BUF(localPr->partitionData[model]->maxTipStates , pr->partitionData[model]->maxTipStates, int);
+ ASSIGN_BUF(localPr->partitionData[model]->dataType , pr->partitionData[model]->dataType, int);
+ ASSIGN_BUF(localPr->partitionData[model]->protModels , pr->partitionData[model]->protModels, int);
+ ASSIGN_BUF(localPr->partitionData[model]->protUseEmpiricalFreqs , pr->partitionData[model]->protUseEmpiricalFreqs, int);
+ ASSIGN_BUF(localPr->partitionData[model]->lower , pr->partitionData[model]->lower, int);
+ ASSIGN_BUF(localPr->partitionData[model]->upper , pr->partitionData[model]->upper, int);
+ ASSIGN_BUF(localPr->partitionData[model]->ascBias, pr->partitionData[model]->ascBias, boolean);
+
+ localPr->partitionData[model]->partitionLH = 0.0;
+
+ totalLength += (localPr->partitionData[model]->upper - localPr->partitionData[model]->lower);
+ }
+
+ SEND_BUF(buf, bufSize, MPI_BYTE);
+
+ assert(totalLength == localTree->originalCrunchedLength);
+
+ ASSIGN_DBL(localTree->vectorRecomFraction, tr->vectorRecomFraction);
+}
+#endif
+
+
+/** @brief Distribute y-vectors during initialization.
+
+ Distribute the alignment data to the slave process/threads. Each slave
+ copies the data (alignment) from its assigned partition to its local
+ partition structure.
+
+ @param tr
+ PLL instance
+
+ @param localTree
+ Local library instance for the current thread
+
+ @param localPr
+ Local list of partitions structure for the current thread
+ */
+static void distributeYVectors(pllInstance *localTree, pllInstance *tr, partitionList *localPr)
+{
+ size_t
+ i,
+ n = localTree->numberOfThreads,
+ globalCounter = 0,
+ localCounter = 0,
+ model = 0,
+ j;
+ int tid = localTree->threadID;
+
+
+ /* distribute the y-vectors */
+ for(j = 1 ; j <= (size_t)localTree->mxtips; j++)
+ {
+#ifdef _FINE_GRAIN_MPI
+ unsigned char yBuf[tr->originalCrunchedLength];
+ if(MASTER_P)
+ memcpy(yBuf, tr->yVector[j], tr->originalCrunchedLength * sizeof(unsigned char));
+ MPI_Bcast( yBuf, tr->originalCrunchedLength, MPI_UNSIGNED_CHAR,0,MPI_COMM_WORLD);
+#endif
+
+ for(model = 0, globalCounter = 0; model < (size_t)localPr->numberOfPartitions; model++)
+ {
+ if(tr->manyPartitions)
+ {
+ if(isThisMyPartition(localPr, tid, model))
+ {
+ assert(localPr->partitionData[model]->upper - localPr->partitionData[model]->lower == localPr->partitionData[model]->width);
+ for(localCounter = 0, i = (size_t)localPr->partitionData[model]->lower; i < (size_t)localPr->partitionData[model]->upper; i++, localCounter++, globalCounter++)
+#ifdef _USE_PTHREADS
+ localPr->partitionData[model]->yVector[j][localCounter] = tr->yVector[j][globalCounter];
+#else
+ localPr->partitionData[model]->yVector[j][localCounter] = yBuf[globalCounter];
+#endif
+
+
+ }
+ else
+ globalCounter += (localPr->partitionData[model]->upper - localPr->partitionData[model]->lower);
+ }
+ else
+ {
+ for(localCounter = 0, i = (size_t)localPr->partitionData[model]->lower; i < (size_t)localPr->partitionData[model]->upper; i++, globalCounter++)
+ {
+ if(i % (size_t)n == (size_t)tid)
+ {
+#ifdef _USE_PTHREADS
+ localPr->partitionData[model]->yVector[j][localCounter] = tr->yVector[j][globalCounter];
+#else
+ localPr->partitionData[model]->yVector[j][localCounter] = yBuf[globalCounter];
+#endif
+ ++localCounter;
+ }
+ }
+ }
+ }
+ }
+}
+
+/** @brief Distribute the weights in the alignment of slave process/threads
+
+ Allocate space in the local tree structure for the alignment weights. Then
+ copy the weights vector from the master process/thread to the slaves.
+
+ @param tr
+ PLL instance
+
+ @param localTree
+ Local library instance for the current process/thread
+
+ @param localPr
+ Local list of partitions for the current process/thread
+
+ @todo
+ The alignment weights should go to the partitions structure rather than the tree structure
+ */
+static void distributeWeights(pllInstance *localTree, pllInstance *tr, partitionList *localPr)
+{
+ int tid = localTree->threadID;
+ int n = localTree->numberOfThreads;
+
+ size_t
+ globalCounter = 0,
+ i,
+ localCounter = 0,
+ model;
+
+
+
+ /* distribute the weights */
+#ifdef _FINE_GRAIN_MPI /* need to broadcast a few things first */
+ if(NOT MASTER_P)
+ tr->aliaswgt = rax_malloc(sizeof(int) * tr->originalCrunchedLength);
+ MPI_Bcast(tr->aliaswgt, tr->originalCrunchedLength, MPI_INT, 0, MPI_COMM_WORLD);
+#endif
+ for(model = 0, globalCounter = 0; model < (size_t)localPr->numberOfPartitions; model++)
+ {
+ if(tr->manyPartitions)
+ {
+ if(isThisMyPartition(localPr, tid, model))
+ {
+ assert(localPr->partitionData[model]->upper - localPr->partitionData[model]->lower == localPr->partitionData[model]->width);
+ for(localCounter = 0, i = (size_t)localPr->partitionData[model]->lower; i < (size_t)localPr->partitionData[model]->upper; i++, localCounter++, globalCounter++)
+ localPr->partitionData[model]->wgt[localCounter] = tr->aliaswgt[globalCounter];
+ }
+ else
+ globalCounter += (localPr->partitionData[model]->upper - localPr->partitionData[model]->lower);
+ }
+ else
+ {
+ for(localCounter = 0, i = (size_t)localPr->partitionData[model]->lower; i < (size_t)localPr->partitionData[model]->upper; i++, globalCounter++)
+ {
+ if(i % (size_t)n == (size_t)tid)
+ localPr->partitionData[model]->wgt[localCounter++] = tr->aliaswgt[globalCounter];
+ }
+ }
+ }
+}
+
+
+/** @brief Initialize the partitioning scheme (master function) in parallel environment.
+
+ Initialize the partition scheme in all processes/threads. This is a wrapper function
+ that calls all necessary functions for allocating the local structures for slave threads
+ and for distributing all necessary data from the master threads, such as alignment data,
+ and weight vectors.
+
+ @param tr
+ PLL instance
+
+ @param localTree
+ Local PLL instance for the slave process/thread
+
+ @param pr
+ List of partitions
+
+ @param localPr
+ Local partition structure for the slave process/thread
+
+ @param tid
+ Process/thread id
+
+ @param n
+ Number of processes/threads
+*/
+static void initializePartitionsMaster(pllInstance *tr, pllInstance *localTree, partitionList *pr, partitionList *localPr, int tid, int n)
+{
+ size_t
+ model;
+
+ treeIsInitialized = PLL_TRUE;
+
+ ASSIGN_INT(localTree->manyPartitions, tr->manyPartitions);
+ ASSIGN_INT(localTree->numberOfThreads, tr->numberOfThreads);
+ ASSIGN_INT(localPr->numberOfPartitions, pr->numberOfPartitions);
+
+#ifdef _USE_PTHREADS
+ if(MASTER_P)
+ globalResult = rax_calloc((size_t) tr->numberOfThreads * (size_t)pr->numberOfPartitions* 2 ,sizeof(double));
+ else
+ assignAndInitPart1(localTree, tr, localPr, pr, &tid);
+#else
+ globalResult = rax_calloc((size_t) tr->numberOfThreads * (size_t)pr->numberOfPartitions* 2 ,sizeof(double));
+ assignAndInitPart1(localTree, tr, localPr, pr, &tid);
+ defineTraversalInfoMPI();
+#endif
+
+ for(model = 0; model < (size_t)localPr->numberOfPartitions; model++)
+ localPr->partitionData[model]->width = 0;
+
+ if(tr->manyPartitions)
+ {
+ multiprocessorScheduling(localTree, localPr, tid);
+ computeFractionMany(localPr, tid);
+ }
+ else
+ computeFraction(localPr, tid, n);
+
+ initializePartitionData(localTree, localPr);
+
+ {
+ size_t
+ model,
+ i,
+ countOffset,
+ myLength = 0;
+
+ for(model = 0; model < (size_t)localPr->numberOfPartitions; model++)
+ myLength += localPr->partitionData[model]->width;
+
+ /* assign local memory for storing sequence data */
+
+ localTree->y_ptr = (unsigned char *)rax_malloc(myLength * (size_t)(localTree->mxtips) * sizeof(unsigned char));
+ assert(localTree->y_ptr != NULL);
+
+ for(i = 0; i < (size_t)localTree->mxtips; i++)
+ {
+ for(model = 0, countOffset = 0; model < (size_t)localPr->numberOfPartitions; model++)
+ {
+ localPr->partitionData[model]->yVector[i+1] = &localTree->y_ptr[i * myLength + countOffset];
+ countOffset += localPr->partitionData[model]->width;
+ }
+ assert(countOffset == myLength);
+ }
+
+ /* figure in data */
+
+ distributeWeights(localTree, tr, localPr);
+
+ distributeYVectors(localTree, tr, localPr);
+
+ }
+
+ initMemorySavingAndRecom(localTree, localPr);
+}
diff --git a/src/genericParallelization.h b/src/genericParallelization.h
new file mode 100644
index 0000000..6bf6744
--- /dev/null
+++ b/src/genericParallelization.h
@@ -0,0 +1,123 @@
+/**
+ * PLL (version 1.0.0) a software library for phylogenetic inference
+ * Copyright (C) 2013 Tomas Flouri and Alexandros Stamatakis
+ *
+ * Derived from
+ * RAxML-HPC, a program for sequential and parallel estimation of phylogenetic
+ * trees by Alexandros Stamatakis
+ *
+ * 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 3 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, see <http://www.gnu.org/licenses/>.
+ *
+ * For any other enquiries send an Email to Tomas Flouri
+ * Tomas.Flouri at h-its.org
+ *
+ * When publishing work that uses PLL please cite PLL
+ *
+ * @file genericParallelization.h
+ */
+#ifndef _GENERIC_PARALL_H
+#define _GENERIC_PARALL_H
+
+
+extern double *globalResult;
+
+
+/**********/
+/* CONFIG */
+/**********/
+
+/* #define MEASURE_TIME_PARALLEL */
+#define _PORTABLE_PTHREADS
+/* #define DEBUG_PARALLEL */
+/* #define DEBUG_MPI_EACH_SEND */
+/* #define _REPRODUCIBLE_MPI_OR_PTHREADS */
+#ifdef _USE_PTHREADS
+#ifndef _PORTABLE_PTHREADS
+void pinToCore(int tid);
+#endif
+#endif
+
+
+#define NOT !
+#define IS_PARALLEL (defined(_USE_PTHREADS) || defined(_FINE_GRAIN_MPI))
+
+
+
+#ifdef MEASURE_TIME_PARALLEL
+#define NUM_PAR_JOBS 16
+extern double masterTimePerPhase;
+#endif
+
+
+/******************/
+/* MPI SPECIFIC */
+/******************/
+#ifdef _FINE_GRAIN_MPI
+#include <mpi.h>
+#ifdef DEBUG_MPI_EACH_SEND
+#define DEBUG_PRINT(text, elem) printf(text, elem)
+#else
+#define DEBUG_PRINT(text, elem) NULL
+#endif
+
+/* for the broadcast of traversal descriptor */
+#define TRAVERSAL_LENGTH 5
+#define traversalSize sizeof(traversalInfo)
+#define messageSize(x) (3 * sizeof(int) + x * (sizeof(int)+ sizeof(double)) + TRAVERSAL_LENGTH * traversalSize)
+
+#define VOLATILE_PAR
+#define MASTER_P (processID == 0)
+#define POP_OR_PUT_BYTES(bufPtr, elem, type) (MASTER_P ? (bufPtr = addBytes((bufPtr), &(elem), sizeof(type))) : (bufPtr = popBytes((bufPtr), &(elem), sizeof(type))))
+
+#define ASSIGN_INT(x,y) (MPI_Bcast(&y,1,MPI_INT,0,MPI_COMM_WORLD),DEBUG_PRINT("\tSEND/RECV %d\n", y))
+#define ASSIGN_BUF(x,y,type) (POP_OR_PUT_BYTES(bufPtr, y,type))
+#define ASSIGN_BUF_DBL(x,y) (POP_OR_PUT_BYTES(bufPtrDbl,y, double))
+#define ASSIGN_DBL(x,y) (MPI_Bcast(&y,1,MPI_DOUBLE, 0, MPI_COMM_WORLD), DEBUG_PRINT("\tSEND/RECV %f\n", y))
+#define ASSIGN_DBLS(tar,src,length) MPI_Bcast(tar, length, MPI_DOUBLE, 0, MPI_COMM_WORLD)
+#define DOUBLE MPI_DOUBLE
+#define ASSIGN_GATHER(tar,src,length,type,tid) MPI_Gather(src,length,type,tar,length,type,0, MPI_COMM_WORLD)
+#define SEND_BUF(buf, bufSize,type) if(MASTER_P) MPI_Bcast(buf, bufSize, type, 0, MPI_COMM_WORLD)
+#define RECV_BUF(buf, bufSize,type) if(NOT MASTER_P) MPI_Bcast(buf, bufSize, type, 0, MPI_COMM_WORLD)
+#define BCAST_BUF(buf, bufSize,type,who) MPI_Bcast(buf, bufSize, type, who,MPI_COMM_WORLD )
+
+
+
+extern int processes;
+extern int processID;
+#endif
+
+/*********************/
+/* PTHREAD SPECIFIC */
+/*********************/
+#ifdef _USE_PTHREADS
+#include <pthread.h>
+#define _REPRODUCIBLE_MPI_OR_PTHREADS
+#define VOLATILE_PAR volatile
+#define MASTER_P (tid == 0)
+#define ASSIGN_INT(x,y) (x = y)
+#define ASSIGN_BUF(x,y,type) (x = y)
+#define ASSIGN_BUF_DBL(x,y) (x = y)
+#define ASSIGN_DBL(x,y) (x = y)
+#define ASSIGN_DBLS(tar,src,length) memmove(tar, src, length * sizeof(double))
+#define DOUBLE double /* just rededining that to make the source code less confusing */
+#define ASSIGN_GATHER(tar,src,length,type,tid) (memmove((tar) + (tid) * (length) ,src, length * sizeof(type)))
+#define SEND_BUF(buf, bufSize, type)
+#define RECV_BUF(buf, bufSize, type)
+#define BCAST_BUF(buf, bufSize,type,who)
+#define TRAVERSAL_LENGTH 5
+#define messageSize(x) 0
+#endif
+
+
+#endif /* end include guard */
diff --git a/src/globalVariables.h b/src/globalVariables.h
new file mode 100644
index 0000000..b4761f0
--- /dev/null
+++ b/src/globalVariables.h
@@ -0,0 +1,170 @@
+/* RAxML-VI-HPC (version 2.2) a program for sequential and parallel estimation of phylogenetic trees
+ * Copyright August 2006 by Alexandros Stamatakis
+ *
+ * Partially derived from
+ * fastDNAml, a program for estimation of phylogenetic trees from sequences by Gary J. Olsen
+ *
+ * and
+ *
+ * Programs of the PHYLIP package by Joe Felsenstein.
+ *
+ * This program is free software; you may redistribute it and/or modify its
+ * 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.
+ *
+ *
+ * For any other enquiries send an Email to Alexandros Stamatakis
+ * Alexandros.Stamatakis at epfl.ch
+ *
+ * When publishing work that is based on the results from RAxML-VI-HPC please cite:
+ *
+ * Alexandros Stamatakis:"RAxML-VI-HPC: maximum likelihood-based phylogenetic analyses with thousands of taxa and mixed models".
+ * Bioinformatics 2006; doi: 10.1093/bioinformatics/btl446
+ */
+
+#ifdef GLOBAL_VARIABLES_DEFINITION
+
+
+const char *protModels[PLL_NUM_PROT_MODELS] = {"DAYHOFF", "DCMUT", "JTT", "MTREV", "WAG", "RTREV", "CPREV", "VT", "BLOSUM62", "MTMAM", "LG", "MTART", "MTZOA", "PMB",
+ "HIVB", "HIVW", "JTTDCMUT", "FLU", "STMTREV", "AUTO", "LG4M", "LG4X", "GTR"};
+
+const char binaryStateNames[2] = {'0', '1'};
+
+const char dnaStateNames[4] = {'A', 'C', 'G', 'T'};
+
+const char protStateNames[20] = {'A','R', 'N', 'D', 'C', 'Q', 'E', 'G', 'H',
+ 'I', 'L', 'K', 'M', 'F', 'P', 'S', 'T', 'W',
+ 'Y', 'V'};
+
+const char inverseMeaningBINARY[4] = {'_', '0', '1', '-'};
+const char inverseMeaningDNA[16] = {'_', 'A', 'C', 'M', 'G', 'R', 'S', 'V', 'T', 'W', 'Y', 'H', 'K', 'D', 'B', '-'};
+const char inverseMeaningPROT[23] = {'A','R', 'N', 'D', 'C', 'Q', 'E', 'G', 'H', 'I', 'L', 'K', 'M', 'F', 'P', 'S',
+ 'T', 'W', 'Y', 'V', 'B', 'Z', '-'};
+const char inverseMeaningGeneric32[33] = {'0', '1', '2', '3', '4', '5', '6', '7',
+ '8', '9', 'A', 'B', 'C', 'D', 'E', 'F',
+ 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N',
+ 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V',
+ '-'};
+const char inverseMeaningGeneric64[33] = {'0', '1', '2', '3', '4', '5', '6', '7',
+ '8', '9', 'A', 'B', 'C', 'D', 'E', 'F',
+ 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N',
+ 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V',
+ '-'};
+
+const unsigned int bitVectorIdentity[256] = {0 ,1 ,2 ,3 ,4 ,5 ,6 ,7 ,8 ,9 ,10 ,11 ,12 ,13 ,14 ,15 ,16 ,17 ,18 ,19 ,20 ,21 ,22 ,23 ,24 ,25 ,26 ,
+ 27 ,28 ,29 ,30 ,31 ,32 ,33 ,34 ,35 ,36 ,37 ,38 ,39 ,40 ,41 ,42 ,43 ,44 ,45 ,46 ,47 ,48 ,49 ,50 ,51 ,
+ 52 ,53 ,54 ,55 ,56 ,57 ,58 ,59 ,60 ,61 ,62 ,63 ,64 ,65 ,66 ,67 ,68 ,69 ,70 ,71 ,72 ,73 ,74 ,75 ,76 ,
+ 77 ,78 ,79 ,80 ,81 ,82 ,83 ,84 ,85 ,86 ,87 ,88 ,89 ,90 ,91 ,92 ,93 ,94 ,95 ,96 ,97 ,98 ,99 ,100 ,101 ,
+ 102 ,103 ,104 ,105 ,106 ,107 ,108 ,109 ,110 ,111 ,112 ,113 ,114 ,115 ,116 ,117 ,118 ,119 ,120 ,121 ,122 ,
+ 123 ,124 ,125 ,126 ,127 ,128 ,129 ,130 ,131 ,132 ,133 ,134 ,135 ,136 ,137 ,138 ,139 ,140 ,141 ,142 ,143 ,
+ 144 ,145 ,146 ,147 ,148 ,149 ,150 ,151 ,152 ,153 ,154 ,155 ,156 ,157 ,158 ,159 ,160 ,161 ,162 ,163 ,164 ,
+ 165 ,166 ,167 ,168 ,169 ,170 ,171 ,172 ,173 ,174 ,175 ,176 ,177 ,178 ,179 ,180 ,181 ,182 ,183 ,184 ,185 ,
+ 186 ,187 ,188 ,189 ,190 ,191 ,192 ,193 ,194 ,195 ,196 ,197 ,198 ,199 ,200 ,201 ,202 ,203 ,204 ,205 ,206 ,
+ 207 ,208 ,209 ,210 ,211 ,212 ,213 ,214 ,215 ,216 ,217 ,218 ,219 ,220 ,221 ,222 ,223 ,224 ,225 ,226 ,227 ,
+ 228 ,229 ,230 ,231 ,232 ,233 ,234 ,235 ,236 ,237 ,238 ,239 ,240 ,241 ,242 ,243 ,244 ,245 ,246 ,247 ,248 ,
+ 249 ,250 ,251 ,252 ,253 ,254 ,255};
+
+
+
+const unsigned int bitVectorAA[23] = {1, 2, 4, 8, 16, 32, 64, 128,
+ 256, 512, 1024, 2048, 4096,
+ 8192, 16384, 32768, 65536, 131072, 262144,
+ 524288, 12 /* N | D */, 96 /*Q | E*/, 1048575 /* - */};
+
+const unsigned int bitVectorSecondary[256] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,
+ 10, 11, 12, 13, 14, 15, 0, 16, 32, 48, 64, 80, 96, 112, 128, 144, 160, 176, 192,
+ 208, 224, 240, 0, 17, 34, 51, 68, 85, 102, 119, 136, 153, 170, 187, 204, 221, 238,
+ 255, 0, 256, 512, 768, 1024, 1280, 1536, 1792, 2048, 2304, 2560, 2816, 3072, 3328,
+ 3584, 3840, 0, 257, 514, 771, 1028, 1285, 1542, 1799, 2056, 2313, 2570, 2827, 3084,
+ 3341, 3598, 3855, 0, 272, 544, 816, 1088, 1360, 1632, 1904, 2176, 2448, 2720, 2992,
+ 3264, 3536, 3808, 4080, 0, 273, 546, 819, 1092, 1365, 1638, 1911, 2184, 2457, 2730,
+ 3003, 3276, 3549, 3822, 4095, 0, 4096, 8192, 12288, 16384, 20480, 24576, 28672, 32768,
+ 36864, 40960, 45056, 49152, 53248, 57344, 61440, 0, 4097, 8194, 12291, 16388, 20485, 24582,
+ 28679, 32776, 36873, 40970, 45067, 49164, 53261, 57358, 61455, 0, 4112, 8224, 12336, 16448,
+ 20560, 24672, 28784, 32896, 37008, 41120, 45232, 49344, 53456, 57568, 61680, 0, 4113, 8226,
+ 12339, 16452, 20565, 24678, 28791, 32904, 37017, 41130, 45243, 49356, 53469, 57582, 61695,
+ 0, 4352, 8704, 13056, 17408, 21760, 26112, 30464, 34816, 39168, 43520, 47872, 52224, 56576,
+ 60928, 65280, 0, 4353, 8706, 13059, 17412, 21765, 26118, 30471, 34824, 39177, 43530, 47883,
+ 52236, 56589, 60942, 65295, 0, 4368, 8736, 13104, 17472, 21840, 26208, 30576, 34944, 39312,
+ 43680, 48048, 52416, 56784, 61152, 65520, 0, 4369, 8738, 13107, 17476, 21845, 26214, 30583,
+ 34952, 39321, 43690, 48059, 52428, 56797, 61166, 65535};
+
+const unsigned int bitVector32[33] = {1, 2, 4, 8, 16, 32, 64, 128,
+ 256, 512, 1024, 2048, 4096, 8192, 16384, 32768,
+ 65536, 131072, 262144, 524288, 1048576, 2097152, 4194304, 8388608,
+ 16777216, 33554432, 67108864, 134217728, 268435456, 536870912, 1073741824, 2147483648u,
+ 4294967295u};
+
+/*const unsigned int bitVector64[65] = {};*/
+/** @brief Array for setting bits 0 .. 31 in a bit vector, used in saveMemory technique for the gapVector */
+const unsigned int mask32[32] = {1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048, 4096, 8192, 16384, 32768, 65536, 131072,
+ 262144, 524288, 1048576, 2097152, 4194304, 8388608, 16777216, 33554432, 67108864, 134217728,
+ 268435456, 536870912, 1073741824, 2147483648U};
+
+const char *secondaryModelList[21] = { "S6A (GTR)", "S6B", "S6C", "S6D", "S6E", "S7A (GTR)", "S7B", "S7C", "S7D", "S7E", "S7F", "S16 (GTR)", "S16A", "S16B", "S16C",
+ "S16D", "S16E", "S16F", "S16I", "S16J", "S16K"};
+
+const partitionLengths pLengths[PLL_MAX_MODEL] = {
+
+ /* BINARY */
+ {4, 4, 2, 4, 4, 1, 2, 8, 2, 2, PLL_FALSE, PLL_FALSE, 3, inverseMeaningBINARY, 2, PLL_FALSE, bitVectorIdentity},
+
+ /* DNA */
+ {16, 16, 4, 16, 16, 6, 4, 64, 6, 4, PLL_FALSE, PLL_FALSE, 15, inverseMeaningDNA, 4, PLL_FALSE, bitVectorIdentity},
+
+ /* AA */
+ {400, 400, 20, 400, 400, 190, 20, 460, 190, 20, PLL_FALSE, PLL_FALSE, 22, inverseMeaningPROT, 20, PLL_TRUE, bitVectorAA},
+
+ /* SECONDARY_DATA */
+
+ {256, 256, 16, 256, 256, 120, 16, 4096, 120, 16, PLL_FALSE, PLL_FALSE, 255, (char*)NULL, 16, PLL_TRUE, bitVectorSecondary},
+
+
+ /* SECONDARY_DATA_6 */
+ {36, 36, 6, 36, 36, 15, 6, 384, 15, 6, PLL_FALSE, PLL_FALSE, 63, (char*)NULL, 6, PLL_TRUE, bitVectorIdentity},
+
+
+ /* SECONDARY_DATA_7 */
+ {49, 49, 7, 49, 49, 21, 7, 896, 21, 7, PLL_FALSE, PLL_FALSE, 127, (char*)NULL, 7, PLL_TRUE, bitVectorIdentity},
+
+ /* 32 states */
+ {1024, 1024, 32, 1024, 1024, 496, 32, 1056, 496, 32, PLL_FALSE, PLL_FALSE, 32, inverseMeaningGeneric32, 32, PLL_TRUE, bitVector32},
+
+ /* 64 states */
+ {4096, 4096, 64, 4096, 4096, 2016, 64, 4160, 64, 2016, PLL_FALSE, PLL_FALSE, 64, (char*)NULL, 64, PLL_TRUE, (unsigned int*)NULL}
+};
+
+
+#if (defined(_USE_PTHREADS) || defined(_FINE_GRAIN_MPI))
+double *globalResult;
+boolean treeIsInitialized;
+#ifdef MEASURE_TIME_PARALLEL
+double masterTimePerPhase;
+#endif
+#endif
+
+#ifdef _USE_PTHREADS
+volatile int jobCycle = 0;
+volatile int threadJob = 0;
+volatile char *barrierBuffer;
+#endif
+
+#ifdef _FINE_GRAIN_MPI
+int processes;
+int processID;
+MPI_Datatype TRAVERSAL_MPI;
+#endif
+
+#else
+extern const partitionLengths pLengths[PLL_MAX_MODEL];
+extern const char * protModels[PLL_NUM_PROT_MODELS];
+extern char * secondaryModelList[21];
+//extern const unsigned int * mask32;
+
+#endif
diff --git a/src/hardware.h b/src/hardware.h
new file mode 100644
index 0000000..d1bfa33
--- /dev/null
+++ b/src/hardware.h
@@ -0,0 +1,48 @@
+#ifndef PLL_HARDWARE
+#define PLL_HARDWARE
+
+/* leaf 1 */
+/* edx */
+#define PLL_HAS_MMX 1 << 23
+#define PLL_HAS_SSE 1 << 25
+#define PLL_HAS_SSE2 1 << 26
+
+/* ecx */
+#define PLL_HAS_SSE3 1
+#define PLL_HAS_SSSE3 1 << 9
+#define PLL_HAS_FMA 1 << 12
+#define PLL_HAS_SSE41 1 << 19
+#define PLL_HAS_SSE42 1 << 20
+#define PLL_HAS_AVX 1 << 28
+
+
+/* leaf 7 */
+/* ebx */
+#define PLL_HAS_AVX2 1 << 5
+
+/* leaf 0x80000001 */
+/* ecx*/
+#define PLL_HAS_SSE4A 1 << 6
+#define PLL_HAS_FMA4 1 << 16
+
+typedef struct
+{
+ int has_mmx;
+ int has_sse;
+ int has_sse2;
+ int has_sse3;
+ int has_ssse3;
+ int has_sse41;
+ int has_sse42;
+ int has_sse4a;
+ int has_avx;
+ int has_avx2;
+ int has_fma;
+ int has_fma4;
+ int cpu_sockets;
+ int cores;
+ char vendor[13];
+
+} pllHardwareInfo;
+
+#endif
diff --git a/src/hash.c b/src/hash.c
new file mode 100644
index 0000000..4fc3749
--- /dev/null
+++ b/src/hash.c
@@ -0,0 +1,223 @@
+/**
+ * PLL (version 1.0.0) a software library for phylogenetic inference
+ * Copyright (C) 2013 Tomas Flouri and Alexandros Stamatakis
+ *
+ * Derived from
+ * RAxML-HPC, a program for sequential and parallel estimation of phylogenetic
+ * trees by Alexandros Stamatakis
+ *
+ * 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 3 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, see <http://www.gnu.org/licenses/>.
+ *
+ * For any other enquiries send an Email to Tomas Flouri
+ * Tomas.Flouri at h-its.org
+ *
+ * When publishing work that uses PLL please cite PLL
+ *
+ * @file hash.c
+ */
+#include <stdio.h>
+#include <assert.h>
+#include <string.h>
+#include "pll.h"
+#include "mem_alloc.h"
+
+static const unsigned int initTable[] =
+ {
+ 53, 97, 193, 389, 769,
+ 1543, 3079, 6151, 12289, 24593,
+ 49157, 98317, 196613, 393241, 786433,
+ 1572869, 3145739, 6291469, 12582917, 25165843,
+ 50331653, 100663319, 201326611, 402653189, 805306457,
+ 1610612741, 3221225473, 4294967291
+ };
+
+/** @brief Generate the hash value for a string
+
+ Generates the hash value of a string \a s.
+
+ @param s The string to compute the hash for
+ @param size Size of the hash table
+ @return String hash \a s, i.e. index in hash table
+*/
+unsigned int pllHashString (const char * s, unsigned int size)
+{
+ unsigned int hash = 0;
+
+ for (; *s; ++s) hash = (hash << 5) - hash + (unsigned int )*s;
+
+ return (hash % size);
+}
+
+/** @brief Add a string and its data to a hashtable
+
+ Add an \a item and possibly a string \a s to hashtable \a hTable at position
+ \a hash, where \a hash must be a value between 0 and \a hTable->size - 1. If
+ string \a s is given and another record with the same computed hash and the
+ same associated string exists in the hash table, then the new record will \b not be added and the
+ value \b PLL_FALSE is returned. Otherwise, the new item is added at the
+ beginning of the corresponding linked list and the value \b PLL_TRUE is
+ returned.
+
+ @param hTable Hashtable
+ @param hash Position where to store in hash table
+ @param s String
+ @param item Data associated with \a s
+ @return Returns \b PLL_TRUE if added with success, otherwise \b PLL_FALSE
+*/
+int pllHashAdd (pllHashTable * hTable, unsigned int hash, const char * s, void * item)
+{
+ pllHashItem * hItem;
+
+ hItem = hTable->Items[hash];
+
+ /* If a string was given, check whether the record already exists */
+ if (s)
+ {
+ for (; hItem; hItem = hItem->next)
+ {
+ if (hItem->str && !strcmp (s, hItem->str)) return (PLL_FALSE);
+ }
+ }
+
+ hItem = (pllHashItem *) rax_malloc (sizeof (pllHashItem));
+
+ /* store the string together with the element if given */
+ if (s)
+ {
+ hItem->str = (char *) rax_malloc ((strlen(s) + 1) * sizeof (char));
+ strcpy (hItem->str, s);
+ }
+ else
+ hItem->str = NULL;
+
+ hItem->data = item;
+
+ hItem->next = hTable->Items[hash];
+ hTable->Items[hash] = hItem;
+ hTable->entries += 1;
+
+ return (PLL_TRUE);
+}
+
+
+/** @brief Initialize hash table
+
+ Create a hash table of size at least \a n. The size of the hash table will
+ be the first prime number higher or equal to \a n.
+
+ @param n Minimum size of hash table
+ @return In case of success, returns a pointer to the created hash table, otherwise returns \b NULL
+*/
+pllHashTable * pllHashInit (unsigned int n)
+{
+ pllHashTable * hTable;
+ unsigned int i;
+ unsigned int primeTableLength;
+
+ hTable = (pllHashTable *) rax_malloc (sizeof (pllHashTable));
+ if (!hTable) return (NULL);
+
+ primeTableLength = sizeof (initTable) / sizeof(initTable[0]);
+
+ i = 0;
+
+ while (initTable[i] < n && i < primeTableLength) ++ i;
+
+ n = initTable[i];
+
+ hTable->Items = (pllHashItem **) rax_calloc (n, sizeof (pllHashItem *));
+ if (!hTable->Items)
+ {
+ rax_free (hTable);
+ return (NULL);
+ }
+ hTable->size = n;
+ hTable->entries = 0;
+
+ return (hTable);
+}
+
+/** @brief Retrieve the data stored in hash table for a given string
+
+ Retrieve the data stored in hash table \a hTable under a given string \a s.
+ In case the string is found in the hash table, the associated data are
+ stored in \a item and the function returns \b PLL_TRUE. In the opposite
+ case, or if \a s is given as \b NULL then \b PLL_FALSE is returned.
+
+ @param hTable Hash table to be searched
+ @param s String to look for
+ @param item Where to store the retrieved data
+ @return Returns \b PLL_TRUE if the string was found, otherwise \b PLL_FALSE
+*/
+int pllHashSearch (pllHashTable * hTable, char * s, void ** item)
+{
+ unsigned int pos;
+ pllHashItem * hItem;
+
+ if (!s) return (PLL_FALSE);
+
+ pos = pllHashString (s, hTable->size);
+ hItem = hTable->Items[pos];
+
+ for (; hItem; hItem = hItem->next)
+ {
+ if (hItem->str && !strcmp (s, hItem->str))
+ {
+ *item = hItem->data;
+ return (PLL_TRUE);
+ }
+ }
+
+ return (PLL_FALSE);
+}
+
+/** @brief Deallocate a hash table
+
+ Deallocates the hash table. A callback function may be specified as \a
+ cbDealloc which will be executed upon all \a data elements of the hash
+ table, for deallocating custom data. If no deallocation is required for the
+ custom data, then \a cbDealloc must be set to \b NULL. The strings
+ associated with each hash element are deallocated.
+
+ @param hTable Hash table to be deallocated
+ @pram cbDealloc Callback function to perform deallocation of each data element of the hash table
+ @notes
+ Deallocates the structure for the hash table. Note that the
+ data associated with the indexed strings are not deallocated.
+*/
+void pllHashDestroy (pllHashTable ** hTable, void (*cbDealloc)(void *))
+{
+ unsigned int i;
+ pllHashItem * hItem;
+ pllHashItem * tmp;
+
+ assert(hTable);
+ assert(*hTable);
+
+ for (i = 0; i < (*hTable)->size; ++ i)
+ {
+ hItem = (*hTable)->Items[i];
+ while (hItem)
+ {
+ tmp = hItem;
+ hItem = hItem->next;
+ if (tmp->str) rax_free (tmp->str);
+ if (cbDealloc) cbDealloc (tmp->data);
+ rax_free (tmp);
+ }
+ }
+ rax_free ((*hTable)->Items);
+ rax_free (*hTable);
+ *hTable = NULL;
+}
diff --git a/src/hash.h b/src/hash.h
new file mode 100644
index 0000000..a550f38
--- /dev/null
+++ b/src/hash.h
@@ -0,0 +1,50 @@
+/**
+ * PLL (version 1.0.0) a software library for phylogenetic inference
+ * Copyright (C) 2013 Tomas Flouri and Alexandros Stamatakis
+ *
+ * Derived from
+ * RAxML-HPC, a program for sequential and parallel estimation of phylogenetic
+ * trees by Alexandros Stamatakis
+ *
+ * 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 3 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, see <http://www.gnu.org/licenses/>.
+ *
+ * For any other enquiries send an Email to Tomas Flouri
+ * Tomas.Flouri at h-its.org
+ *
+ * When publishing work that uses PLL please cite PLL
+ *
+ * @file hash.h
+ */
+#ifndef __pll_HASH__
+#define __pll_HASH__
+
+struct pllHashItem
+{
+ void * data;
+ char * str;
+ struct pllHashItem * next;
+};
+
+struct pllHashTable
+{
+ unsigned int size;
+ struct pllHashItem ** Items;
+};
+
+unsigned int pllHashString (const char * s, unsigned int size);
+int pllHashAdd (struct pllHashTable * hTable, const char * s, void * item);
+struct pllHashTable * pllHashInit (unsigned int n);
+int pllHashSearch (struct pllHashTable * hTable, char * s, void ** item);
+void pllHashDestroy (struct pllHashTable ** hTable, int);
+#endif
diff --git a/src/lexer.c b/src/lexer.c
new file mode 100644
index 0000000..1cbf614
--- /dev/null
+++ b/src/lexer.c
@@ -0,0 +1,299 @@
+/**
+ * PLL (version 1.0.0) a software library for phylogenetic inference
+ * Copyright (C) 2013 Tomas Flouri and Alexandros Stamatakis
+ *
+ * Derived from
+ * RAxML-HPC, a program for sequential and parallel estimation of phylogenetic
+ * trees by Alexandros Stamatakis
+ *
+ * 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 3 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, see <http://www.gnu.org/licenses/>.
+ *
+ * For any other enquiries send an Email to Tomas Flouri
+ * Tomas.Flouri at h-its.org
+ *
+ * When publishing work that uses PLL please cite PLL
+ *
+ * @file lexer.c
+ */
+#include <stdio.h>
+#include "lexer.h"
+
+static const char * rawtext;
+static long rawtext_size;
+static long pos = 0;
+
+int lex_table[PLL_ASCII_SIZE] = {
+/* */ PLL_SYM_UNKNOWN, PLL_SYM_UNKNOWN, PLL_SYM_UNKNOWN, PLL_SYM_UNKNOWN,
+/* */ PLL_SYM_UNKNOWN, PLL_SYM_UNKNOWN, PLL_SYM_UNKNOWN, PLL_SYM_UNKNOWN,
+/* */ PLL_SYM_UNKNOWN, PLL_SYM_TAB, PLL_SYM_CR, PLL_SYM_UNKNOWN,
+/* */ PLL_SYM_UNKNOWN, PLL_SYM_LF, PLL_SYM_UNKNOWN, PLL_SYM_UNKNOWN,
+/* */ PLL_SYM_UNKNOWN, PLL_SYM_UNKNOWN, PLL_SYM_UNKNOWN, PLL_SYM_UNKNOWN,
+/* */ PLL_SYM_UNKNOWN, PLL_SYM_UNKNOWN, PLL_SYM_UNKNOWN, PLL_SYM_UNKNOWN,
+/* */ PLL_SYM_UNKNOWN, PLL_SYM_UNKNOWN, PLL_SYM_UNKNOWN, PLL_SYM_UNKNOWN,
+/* */ PLL_SYM_UNKNOWN, PLL_SYM_UNKNOWN, PLL_SYM_UNKNOWN, PLL_SYM_UNKNOWN,
+/* !"# */ PLL_SYM_SPACE, PLL_SYM_UNKNOWN, PLL_SYM_UNKNOWN, PLL_SYM_UNKNOWN,
+/* $%&' */ PLL_SYM_UNKNOWN, PLL_SYM_UNKNOWN, PLL_SYM_UNKNOWN, PLL_SYM_UNKNOWN,
+/* ()*+ */ PLL_SYM_OPAREN, PLL_SYM_CPAREN, PLL_SYM_UNKNOWN, PLL_SYM_PLUS,
+/* ,-./ */ PLL_SYM_COMMA, PLL_SYM_DASH, PLL_SYM_DOT, PLL_SYM_SLASH,
+/* 0123 */ PLL_SYM_DIGIT, PLL_SYM_DIGIT, PLL_SYM_DIGIT, PLL_SYM_DIGIT,
+/* 4567 */ PLL_SYM_DIGIT, PLL_SYM_DIGIT, PLL_SYM_DIGIT, PLL_SYM_DIGIT,
+/* 89:; */ PLL_SYM_DIGIT, PLL_SYM_DIGIT, PLL_SYM_COLON, PLL_SYM_SEMICOLON,
+/* <=>? */ PLL_SYM_UNKNOWN, PLL_SYM_EQUAL, PLL_SYM_UNKNOWN, PLL_SYM_CHAR,
+/* @ABC */ PLL_SYM_UNKNOWN, PLL_SYM_CHAR, PLL_SYM_CHAR, PLL_SYM_CHAR,
+/* DEFG */ PLL_SYM_CHAR, PLL_SYM_CHAR, PLL_SYM_CHAR, PLL_SYM_CHAR,
+/* HIJK */ PLL_SYM_CHAR, PLL_SYM_CHAR, PLL_SYM_CHAR, PLL_SYM_CHAR,
+/* LMNO */ PLL_SYM_CHAR, PLL_SYM_CHAR, PLL_SYM_CHAR, PLL_SYM_CHAR,
+/* PQRS */ PLL_SYM_CHAR, PLL_SYM_CHAR, PLL_SYM_CHAR, PLL_SYM_CHAR,
+/* TUVW */ PLL_SYM_CHAR, PLL_SYM_CHAR, PLL_SYM_CHAR, PLL_SYM_CHAR,
+/* XYZ[ */ PLL_SYM_CHAR, PLL_SYM_CHAR, PLL_SYM_CHAR, PLL_SYM_UNKNOWN,
+/* \]^_ */ PLL_SYM_UNKNOWN, PLL_SYM_UNKNOWN, PLL_SYM_UNKNOWN, PLL_SYM_CHAR,
+/* `abc */ PLL_SYM_UNKNOWN, PLL_SYM_CHAR, PLL_SYM_CHAR, PLL_SYM_CHAR,
+/* defg */ PLL_SYM_CHAR, PLL_SYM_CHAR, PLL_SYM_CHAR, PLL_SYM_CHAR,
+/* hijk */ PLL_SYM_CHAR, PLL_SYM_CHAR, PLL_SYM_CHAR, PLL_SYM_CHAR,
+/* lmno */ PLL_SYM_CHAR, PLL_SYM_CHAR, PLL_SYM_CHAR, PLL_SYM_CHAR,
+/* pqrs */ PLL_SYM_CHAR, PLL_SYM_CHAR, PLL_SYM_CHAR, PLL_SYM_CHAR,
+/* tuvw */ PLL_SYM_CHAR, PLL_SYM_CHAR, PLL_SYM_CHAR, PLL_SYM_CHAR,
+/* xyz{ */ PLL_SYM_CHAR, PLL_SYM_CHAR, PLL_SYM_CHAR, PLL_SYM_UNKNOWN,
+/* |}~ */ PLL_SYM_CHAR, PLL_SYM_UNKNOWN, PLL_SYM_UNKNOWN, PLL_SYM_UNKNOWN
+ };
+
+int
+get_next_byte (void)
+{
+ if (pos == rawtext_size)
+ {
+ ++pos;
+ return (PLL_EOS);
+ }
+
+ return (rawtext[pos++]);
+}
+
+int
+get_next_symbol (void)
+{
+ int ch, sym;
+
+ ch = get_next_byte ();
+
+ if (ch == PLL_EOS) return (PLL_SYM_EOF);
+ if (ch >= PLL_ASCII_SIZE) return (PLL_SYM_UNKNOWN);
+
+ sym = lex_table[ch];
+
+ if (sym == PLL_SYM_LF)
+ {
+ if (get_next_byte() == '\n')
+ {
+ sym = PLL_SYM_LFCR;
+ }
+ else
+ {
+ --pos;
+ }
+ }
+
+ return sym;
+}
+
+pllLexToken
+get_token (int * input)
+{
+ pllLexToken token;
+ int
+ start_pos,
+ isFloating = 0;
+
+ token.lexeme = rawtext + pos - 1;
+ start_pos = pos;
+
+ switch (*input)
+ {
+ case PLL_SYM_SLASH:
+ token.tokenType = PLL_TOKEN_SLASH;
+ *input = get_next_symbol();
+ break;
+
+ case PLL_SYM_DASH:
+ token.tokenType = PLL_TOKEN_DASH;
+ *input = get_next_symbol();
+ break;
+
+ case PLL_SYM_EQUAL:
+ token.tokenType = PLL_TOKEN_EQUAL;
+ *input = get_next_symbol();
+ break;
+
+ case PLL_SYM_SEMICOLON:
+ token.tokenType = PLL_TOKEN_SEMICOLON;
+ *input = get_next_symbol();
+ break;
+
+ case PLL_SYM_COMMA:
+ token.tokenType = PLL_TOKEN_COMMA;
+ *input = get_next_symbol();
+ break;
+
+ case PLL_SYM_COLON:
+ token.tokenType = PLL_TOKEN_COLON;
+ *input = get_next_symbol();
+ break;
+
+ case PLL_SYM_OPAREN:
+ token.tokenType = PLL_TOKEN_OPAREN;
+ *input = get_next_symbol();
+ break;
+
+ case PLL_SYM_CPAREN:
+ token.tokenType = PLL_TOKEN_CPAREN;
+ *input = get_next_symbol();
+ break;
+
+ case PLL_SYM_SPACE:
+ case PLL_SYM_TAB:
+ do
+ {
+ *input = get_next_symbol();
+ } while (*input == PLL_SYM_SPACE || *input == PLL_SYM_TAB);
+ token.len = pos - start_pos;
+ token.tokenType = PLL_TOKEN_WHITESPACE;
+ if (*input == PLL_SYM_LFCR) --token.len;
+ break;
+
+ case PLL_SYM_DIGIT:
+ do
+ {
+ *input = get_next_symbol();
+ } while (*input == PLL_SYM_DIGIT);
+
+ if (*input == PLL_SYM_DOT)
+ {
+ isFloating = 1;
+ do
+ {
+ *input = get_next_symbol ();
+ } while (*input == PLL_SYM_DIGIT);
+ }
+
+ if (*input != PLL_SYM_CHAR)
+ {
+ token.len = pos - start_pos;
+ if (!isFloating)
+ token.tokenType = PLL_TOKEN_NUMBER;
+ else
+ token.tokenType = PLL_TOKEN_FLOAT;
+ }
+ else
+ {
+ /* check for E notation */
+ if (rawtext[pos - 1] == 'E' || rawtext[pos - 1] == 'e')
+ {
+ *input = get_next_symbol ();
+
+ if (*input == PLL_SYM_PLUS || *input == PLL_SYM_DASH || *input == PLL_SYM_DIGIT)
+ {
+ do
+ {
+ *input = get_next_symbol ();
+ } while (*input == PLL_SYM_DIGIT);
+
+ if (*input != PLL_SYM_CHAR)
+ {
+ token.len = pos - start_pos;
+ token.tokenType = PLL_TOKEN_FLOAT;
+ }
+ }
+ else
+ {
+ token.len = pos - start_pos;
+ token.tokenType = PLL_TOKEN_STRING;
+ }
+ }
+
+ if (*input == PLL_SYM_CHAR)
+ {
+ do {
+ *input = get_next_symbol();
+ } while (*input == PLL_SYM_CHAR || *input == PLL_SYM_DIGIT || *input == PLL_SYM_DOT);
+ token.len = pos - start_pos;
+ token.tokenType = PLL_TOKEN_STRING;
+ }
+ }
+
+ if (*input == PLL_SYM_LFCR) --token.len;
+ break;
+
+ case PLL_SYM_CHAR:
+ do
+ {
+ *input = get_next_symbol();
+ }
+ while (*input == PLL_SYM_CHAR ||
+ *input == PLL_SYM_DIGIT ||
+ *input == PLL_SYM_DASH ||
+ *input == PLL_SYM_DOT);
+ token.len = pos - start_pos;
+ token.tokenType = PLL_TOKEN_STRING;
+ if (*input == PLL_SYM_LFCR) --token.len;
+ break;
+
+ case PLL_SYM_EOF:
+ token.tokenType = PLL_TOKEN_EOF;
+ break;
+
+ case PLL_SYM_CR:
+ case PLL_SYM_LF:
+ case PLL_SYM_LFCR:
+ do
+ {
+ *input = get_next_symbol();
+ } while (*input == PLL_SYM_CR || *input == PLL_SYM_LFCR || *input == PLL_SYM_LF);
+ token.tokenType = PLL_TOKEN_NEWLINE;
+ break;
+ case PLL_SYM_UNKNOWN:
+ default:
+ token.tokenType = PLL_TOKEN_UNKNOWN;
+ break;
+ }
+
+ return (token);
+}
+
+void
+lex_table_amend_phylip (void)
+{
+ lex_table['-'] = lex_table['.'] = PLL_SYM_CHAR;
+}
+
+void
+lex_table_amend_fasta (void)
+{
+ lex_table['-'] = lex_table['.'] = lex_table['>'] = PLL_SYM_CHAR;
+}
+
+void
+lex_table_restore (void)
+{
+ lex_table['-'] = PLL_SYM_DASH;
+ lex_table['.'] = PLL_SYM_DOT;
+ lex_table['>'] = PLL_SYM_UNKNOWN;
+}
+
+void
+init_lexan (const char * text, long n)
+{
+ rawtext = text;
+ rawtext_size = n;
+ pos = 0;
+}
diff --git a/src/lexer.h b/src/lexer.h
new file mode 100644
index 0000000..6924259
--- /dev/null
+++ b/src/lexer.h
@@ -0,0 +1,88 @@
+/**
+ * PLL (version 1.0.0) a software library for phylogenetic inference
+ * Copyright (C) 2013 Tomas Flouri and Alexandros Stamatakis
+ *
+ * Derived from
+ * RAxML-HPC, a program for sequential and parallel estimation of phylogenetic
+ * trees by Alexandros Stamatakis
+ *
+ * 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 3 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, see <http://www.gnu.org/licenses/>.
+ *
+ * For any other enquiries send an Email to Tomas Flouri
+ * Tomas.Flouri at h-its.org
+ *
+ * When publishing work that uses PLL please cite PLL
+ *
+ * @file lexer.h
+ */
+#ifndef __pll_LEXER__
+#define __pll_LEXER__
+
+#define PLL_ASCII_SIZE 128
+#define PLL_EOS 0x00000200
+
+#define PLL_SYM_CR 1 << 0
+#define PLL_SYM_LF 1 << 1
+#define PLL_SYM_LFCR 1 << 2
+#define PLL_SYM_DIGIT 1 << 3
+#define PLL_SYM_CHAR 1 << 4
+#define PLL_SYM_SPACE 1 << 5
+#define PLL_SYM_TAB 1 << 6
+#define PLL_SYM_EOF 1 << 7
+#define PLL_SYM_UNKNOWN 1 << 8
+#define PLL_SYM_DOT 1 << 9
+#define PLL_SYM_COLON 1 << 10
+#define PLL_SYM_OPAREN 1 << 11
+#define PLL_SYM_CPAREN 1 << 12
+#define PLL_SYM_COMMA 1 << 13
+#define PLL_SYM_SEMICOLON 1 << 14
+#define PLL_SYM_EQUAL 1 << 15
+#define PLL_SYM_DASH 1 << 16
+#define PLL_SYM_SLASH 1 << 17
+#define PLL_SYM_PLUS 1 << 18
+
+#define PLL_TOKEN_NUMBER 1 << 0
+#define PLL_TOKEN_STRING 1 << 1
+#define PLL_TOKEN_EOF 1 << 2
+#define PLL_TOKEN_WHITESPACE 1 << 3
+#define PLL_TOKEN_NEWLINE 1 << 4
+#define PLL_TOKEN_UNKNOWN 1 << 5
+#define PLL_TOKEN_COLON 1 << 6
+#define PLL_TOKEN_OPAREN 1 << 7
+#define PLL_TOKEN_CPAREN 1 << 8
+#define PLL_TOKEN_FLOAT 1 << 9
+#define PLL_TOKEN_COMMA 1 << 10
+#define PLL_TOKEN_SEMICOLON 1 << 11
+#define PLL_TOKEN_EQUAL 1 << 12
+#define PLL_TOKEN_DASH 1 << 13
+#define PLL_TOKEN_SLASH 1 << 14
+
+#define CONSUME(x) while (token.tokenType & (x)) token = get_token (&input);
+#define NEXT_TOKEN token = get_token (&input);
+
+typedef struct
+ {
+ int tokenType;
+ const char * lexeme;
+ int len;
+ } pllLexToken;
+
+int get_next_byte (void);
+int get_next_symbol (void);
+pllLexToken get_token (int * input);
+void init_lexan (const char * text, long n);
+void lex_table_amend_phylip (void);
+void lex_table_amend_fasta (void);
+void lex_table_restore (void);
+#endif
diff --git a/src/makenewzGenericSpecial.c b/src/makenewzGenericSpecial.c
new file mode 100644
index 0000000..4f13874
--- /dev/null
+++ b/src/makenewzGenericSpecial.c
@@ -0,0 +1,3147 @@
+/**
+ * PLL (version 1.0.0) a software library for phylogenetic inference
+ * Copyright (C) 2013 Tomas Flouri and Alexandros Stamatakis
+ *
+ * Derived from
+ * RAxML-HPC, a program for sequential and parallel estimation of phylogenetic
+ * trees by Alexandros Stamatakis
+ *
+ * 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 3 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, see <http://www.gnu.org/licenses/>.
+ *
+ * For any other enquiries send an Email to Tomas Flouri
+ * Tomas.Flouri at h-its.org
+ *
+ * When publishing work that uses PLL please cite PLL
+ *
+ * @file bipartitionList.c
+ */
+#include "mem_alloc.h"
+
+#ifndef WIN32
+#include <unistd.h>
+#endif
+
+#include <math.h>
+#include <time.h>
+#include <stdlib.h>
+#include <stdio.h>
+#include <ctype.h>
+#include <string.h>
+#include <assert.h>
+
+#include "pll.h"
+#include "pllInternal.h"
+
+#ifdef __SSE3
+#include <xmmintrin.h>
+#include <pmmintrin.h>
+/*#include <tmmintrin.h>*/
+#endif
+
+#ifdef __MIC_NATIVE
+#include "mic_native.h"
+#endif
+
+
+/** @file makenewzGenericSpecial.c
+ *
+ * @brief Branch length optimization
+ */
+
+
+
+/* pointers to reduction buffers for storing and gathering the first and second derivative
+ of the likelihood in Pthreads and MPI */
+
+#if IS_PARALLEL
+void branchLength_parallelReduce(pllInstance *tr, double *dlnLdlz, double *d2lnLdlz2, int numBranches ) ;
+//extern double *globalResult;
+#endif
+
+
+extern const unsigned int mask32[32];
+
+#if (defined(__SSE3) || defined(__AVX))
+static void sumGAMMA_BINARY(int tipCase, double *sumtable, double *x1_start, double *x2_start, double *tipVector,
+ unsigned char *tipX1, unsigned char *tipX2, int n);
+static void coreGTRGAMMA_BINARY(const int upper, double *sumtable,
+ volatile double *d1, volatile double *d2, double *EIGN, double *gammaRates, double lz, int *wrptr);
+static void coreGTRCAT_BINARY(int upper, int numberOfCategories, double *sum,
+ volatile double *d1, volatile double *d2,
+ double *rptr, double *EIGN, int *cptr, double lz, int *wgt);
+static void sumCAT_BINARY(int tipCase, double *sum, double *x1_start, double *x2_start, double *tipVector,
+ unsigned char *tipX1, unsigned char *tipX2, int n);
+#endif
+
+/*******************/
+
+
+/* generic function to get the required pointers to the data associated with the left and right node that define a branch */
+
+static void getVects(pllInstance *tr,
+ partitionList *pr,
+ unsigned char **tipX1, unsigned char **tipX2,
+ double **x1_start, double **x2_start,
+ int *tipCase,
+ int model,
+ double **x1_gapColumn, double **x2_gapColumn,
+ unsigned int **x1_gap, unsigned int **x2_gap,
+ double ** x1_start_asc,
+ double ** x2_start_asc)
+{
+ int
+ rateHet = (int)discreteRateCategories(tr->rateHetModel),
+ states = pr->partitionData[model]->states,
+ pNumber,
+ qNumber;
+
+ /* get the left and right node number of the nodes defining the branch we want to optimize */
+
+ pNumber = tr->td[0].ti[0].pNumber;
+ qNumber = tr->td[0].ti[0].qNumber;
+
+ /* get the index where the ancestral vector is expected to be found */
+ int p_slot, q_slot;
+ if(tr->useRecom)
+ {
+ p_slot = tr->td[0].ti[0].slot_p;
+ q_slot = tr->td[0].ti[0].slot_q;
+ }
+ else
+ {
+ p_slot = pNumber - tr->mxtips - 1;
+ q_slot = qNumber - tr->mxtips - 1;
+ }
+
+
+ /* initialize to NULL */
+
+ *x1_start = (double*)NULL,
+ *x2_start = (double*)NULL;
+
+ *tipX1 = (unsigned char*)NULL,
+ *tipX2 = (unsigned char*)NULL;
+
+ *x1_start_asc = NULL;
+ *x2_start_asc = NULL;
+
+ /* switch over the different tip cases again here */
+
+ if(isTip(pNumber, tr->mxtips) || isTip(qNumber, tr->mxtips))
+ {
+ if(!( isTip(pNumber, tr->mxtips) && isTip(qNumber, tr->mxtips)) )
+ {
+ *tipCase = PLL_TIP_INNER;
+ if(isTip(qNumber, tr->mxtips))
+ {
+ *tipX1 = pr->partitionData[model]->yVector[qNumber];
+ *x2_start = pr->partitionData[model]->xVector[p_slot];
+
+#if (defined(_FINE_GRAIN_MPI) || defined(_USE_PTHREADS))
+ if(pr->partitionData[model]->ascBias && tr->threadID == 0)
+#else
+ if(pr->partitionData[model]->ascBias)
+#endif
+ {
+ *x2_start_asc = &pr->partitionData[model]->ascVector[(pNumber - tr->mxtips - 1) * pr->partitionData[model]->ascOffset];
+ }
+
+ if(tr->saveMemory)
+ {
+ *x2_gap = &(pr->partitionData[model]->gapVector[pNumber * pr->partitionData[model]->gapVectorLength]);
+ *x2_gapColumn = &pr->partitionData[model]->gapColumn[(pNumber - tr->mxtips - 1) * states * rateHet];
+ }
+ }
+ else
+ {
+ *tipX1 = pr->partitionData[model]->yVector[pNumber];
+ *x2_start = pr->partitionData[model]->xVector[q_slot];
+
+#if (defined(_FINE_GRAIN_MPI) || defined(_USE_PTHREADS))
+ if(pr->partitionData[model]->ascBias && tr->threadID == 0)
+#else
+ if(pr->partitionData[model]->ascBias)
+#endif
+ {
+ *x2_start_asc = &pr->partitionData[model]->ascVector[(qNumber - tr->mxtips - 1) * pr->partitionData[model]->ascOffset];
+ }
+
+ if(tr->saveMemory)
+ {
+ *x2_gap = &(pr->partitionData[model]->gapVector[qNumber * pr->partitionData[model]->gapVectorLength]);
+ *x2_gapColumn = &pr->partitionData[model]->gapColumn[(qNumber - tr->mxtips - 1) * states * rateHet];
+ }
+ }
+ }
+ else
+ {
+ /* note that tip tip should normally not occur since this means that we are trying to optimize
+ a branch in a two-taxon tree. However, this has been inherited be some RAxML function
+ that optimized pair-wise distances between all taxa in a tree */
+
+ *tipCase = PLL_TIP_TIP;
+ *tipX1 = pr->partitionData[model]->yVector[pNumber];
+ *tipX2 = pr->partitionData[model]->yVector[qNumber];
+ }
+ }
+ else
+ {
+ *tipCase = PLL_INNER_INNER;
+
+ *x1_start = pr->partitionData[model]->xVector[p_slot];
+ *x2_start = pr->partitionData[model]->xVector[q_slot];
+
+#if (defined(_FINE_GRAIN_MPI) || defined(_USE_PTHREADS))
+ if(pr->partitionData[model]->ascBias && tr->threadID == 0)
+#else
+ if(pr->partitionData[model]->ascBias)
+#endif
+ {
+ *x1_start_asc = &pr->partitionData[model]->ascVector[(pNumber - tr->mxtips - 1) * pr->partitionData[model]->ascOffset];
+ *x2_start_asc = &pr->partitionData[model]->ascVector[(qNumber - tr->mxtips - 1) * pr->partitionData[model]->ascOffset];
+ }
+ if(tr->saveMemory)
+ {
+ *x1_gap = &(pr->partitionData[model]->gapVector[pNumber * pr->partitionData[model]->gapVectorLength]);
+ *x1_gapColumn = &pr->partitionData[model]->gapColumn[(pNumber - tr->mxtips - 1) * states * rateHet];
+
+ *x2_gap = &(pr->partitionData[model]->gapVector[qNumber * pr->partitionData[model]->gapVectorLength]);
+ *x2_gapColumn = &pr->partitionData[model]->gapColumn[(qNumber - tr->mxtips - 1) * states * rateHet];
+ }
+ }
+
+}
+
+
+/* this is actually a pre-computation and storage of values that remain constant while we change the value of the branch length
+ we want to adapt. the target pointer sumtable is a single pre-allocated array that has the same
+ size as a conditional likelihood vector at an inner node.
+
+ So if we want to do a Newton-Raphson optimization we only execute this function once in the beginning for each new branch we are considering !
+ */
+
+#if (!defined(__SSE3) && !defined(__AVX))
+static void sumCAT_FLEX(int tipCase, double *sumtable, double *x1, double *x2, double *tipVector,
+ unsigned char *tipX1, unsigned char *tipX2, int n, const int states)
+{
+ int
+ i,
+ l;
+
+ double
+ *sum,
+ *left,
+ *right;
+
+ switch(tipCase)
+ {
+
+ /* switch over possible configurations of the nodes p and q defining the branch */
+
+ case PLL_TIP_TIP:
+ for (i = 0; i < n; i++)
+ {
+ left = &(tipVector[states * tipX1[i]]);
+ right = &(tipVector[states * tipX2[i]]);
+ sum = &sumtable[states * i];
+
+ /* just multiply the values with each other for each site, note the similarity with evaluate()
+ we precompute the product which will remain constant and then just multiply this pre-computed
+ product with the changing P matrix exponentaions that depend on the branch lengths */
+
+ for(l = 0; l < states; l++)
+ sum[l] = left[l] * right[l];
+ }
+ break;
+ case PLL_TIP_INNER:
+
+ /* same as for PLL_TIP_TIP only that
+ we now access on tip vector and one
+ inner vector.
+
+ You may also observe that we do not consider using scaling vectors anywhere here.
+
+ This is because we are interested in the first and second derivatives of the likelihood and
+ hence the addition of the log() of the scaling factor times the number of scaling events
+ becomes obsolete through the derivative */
+
+ for (i = 0; i < n; i++)
+ {
+ left = &(tipVector[states * tipX1[i]]);
+ right = &x2[states * i];
+ sum = &sumtable[states * i];
+
+ for(l = 0; l < states; l++)
+ sum[l] = left[l] * right[l];
+ }
+ break;
+ case PLL_INNER_INNER:
+ for (i = 0; i < n; i++)
+ {
+ left = &x1[states * i];
+ right = &x2[states * i];
+ sum = &sumtable[states * i];
+
+ for(l = 0; l < states; l++)
+ sum[l] = left[l] * right[l];
+ }
+ break;
+ default:
+ assert(0);
+ }
+}
+#endif
+
+
+
+#if (!defined(__SSE3) && !defined(__AVX))
+
+/* same thing for GAMMA models. The only noteworthy thing here is that we have an additional inner loop over the
+ number of discrete gamma rates. The data access pattern is also different since for tip vector accesses through our
+ lookup table, we do not distnguish between rates
+
+ Note the different access pattern in PLL_TIP_INNER:
+
+ left = &(tipVector[states * tipX1[i]]);
+ right = &(x2[span * i + l * states]);
+
+*/
+
+static void sumGAMMA_FLEX(int tipCase, double *sumtable, double *x1, double *x2, double *tipVector,
+ unsigned char *tipX1, unsigned char *tipX2, int n, const int states)
+{
+ int
+ i,
+ l,
+ k;
+
+ const int
+ span = 4 * states;
+
+ double
+ *left,
+ *right,
+ *sum;
+
+
+
+
+ switch(tipCase)
+ {
+ case PLL_TIP_TIP:
+ for(i = 0; i < n; i++)
+ {
+ left = &(tipVector[states * tipX1[i]]);
+ right = &(tipVector[states * tipX2[i]]);
+
+ for(l = 0; l < 4; l++)
+ {
+ sum = &sumtable[i * span + l * states];
+
+ for(k = 0; k < states; k++)
+ sum[k] = left[k] * right[k];
+
+ }
+ }
+ break;
+ case PLL_TIP_INNER:
+ //reorder_back( x2, n, span );
+ for(i = 0; i < n; i++)
+ {
+ left = &(tipVector[states * tipX1[i]]);
+
+ for(l = 0; l < 4; l++)
+ {
+ right = &(x2[span * i + l * states]);
+ sum = &sumtable[i * span + l * states];
+
+ for(k = 0; k < states; k++)
+ sum[k] = left[k] * right[k];
+
+ }
+ }
+ //reorder( x2, n, span );
+ break;
+ case PLL_INNER_INNER:
+ //reorder_back( x1, n, span );
+ //reorder_back( x2, n, span );
+ for(i = 0; i < n; i++)
+ {
+ for(l = 0; l < 4; l++)
+ {
+ left = &(x1[span * i + l * states]);
+ right = &(x2[span * i + l * states]);
+ sum = &(sumtable[i * span + l * states]);
+
+
+ for(k = 0; k < states; k++)
+ sum[k] = left[k] * right[k];
+ }
+ }
+ //reorder( x1, n, span );
+ //reorder( x2, n, span );
+ break;
+ default:
+ assert(0);
+ }
+}
+#endif
+
+/* optimized functions for branch length optimization */
+
+
+#if (defined(__SSE3) || defined(__AVX))
+
+static void sumCAT_SAVE(int tipCase, double *sum, double *x1_start, double *x2_start, double *tipVector,
+ unsigned char *tipX1, unsigned char *tipX2, int n, double *x1_gapColumn, double *x2_gapColumn, unsigned int *x1_gap, unsigned int *x2_gap);
+
+static void sumGAMMA_GAPPED_SAVE(int tipCase, double *sumtable, double *x1_start, double *x2_start, double *tipVector,
+ unsigned char *tipX1, unsigned char *tipX2, int n,
+ double *x1_gapColumn, double *x2_gapColumn, unsigned int *x1_gap, unsigned int *x2_gap);
+
+static void sumGAMMA(int tipCase, double *sumtable, double *x1_start, double *x2_start, double *tipVector,
+ unsigned char *tipX1, unsigned char *tipX2, int n);
+
+static void sumCAT(int tipCase, double *sum, double *x1_start, double *x2_start, double *tipVector,
+ unsigned char *tipX1, unsigned char *tipX2, int n);
+
+static void sumGAMMAPROT_GAPPED_SAVE(int tipCase, double *sumtable, double *x1, double *x2, double *tipVector,
+ unsigned char *tipX1, unsigned char *tipX2, int n,
+ double *x1_gapColumn, double *x2_gapColumn, unsigned int *x1_gap, unsigned int *x2_gap);
+
+static void sumGAMMAPROT_LG4(int tipCase, double *sumtable, double *x1, double *x2, double *tipVector[4],
+ unsigned char *tipX1, unsigned char *tipX2, int n);
+
+static void sumGAMMAPROT(int tipCase, double *sumtable, double *x1, double *x2, double *tipVector,
+ unsigned char *tipX1, unsigned char *tipX2, int n);
+
+static void sumGTRCATPROT(int tipCase, double *sumtable, double *x1, double *x2, double *tipVector,
+ unsigned char *tipX1, unsigned char *tipX2, int n);
+
+static void sumGTRCATPROT_SAVE(int tipCase, double *sumtable, double *x1, double *x2, double *tipVector,
+ unsigned char *tipX1, unsigned char *tipX2, int n,
+ double *x1_gapColumn, double *x2_gapColumn, unsigned int *x1_gap, unsigned int *x2_gap);
+
+static void coreGTRGAMMAPROT_LG4(double *gammaRates, double *EIGN[4], double *sumtable, int upper, int *wrptr,
+ volatile double *ext_dlnLdlz, volatile double *ext_d2lnLdlz2, double lz,
+ double * lg4_weights);
+
+static void coreGTRGAMMA(const int upper, double *sumtable,
+ volatile double *ext_dlnLdlz, volatile double *ext_d2lnLdlz2, double *EIGN, double *gammaRates, double lz, int *wrptr);
+
+static void coreGTRCAT(int upper, int numberOfCategories, double *sum,
+ volatile double *d1, volatile double *d2, int *wgt,
+ double *rptr, double *EIGN, int *cptr, double lz);
+
+
+static void coreGTRGAMMAPROT(double *gammaRates, double *EIGN, double *sumtable, int upper, int *wrptr,
+ volatile double *ext_dlnLdlz, volatile double *ext_d2lnLdlz2, double lz);
+
+static void coreGTRCATPROT(double *EIGN, double lz, int numberOfCategories, double *rptr, int *cptr, int upper,
+ int *wgt, volatile double *ext_dlnLdlz, volatile double *ext_d2lnLdlz2, double *sumtable);
+
+#endif
+
+
+/* now this is the core function of the newton-Raphson based branch length optimization that actually computes
+ the first and second derivative of the likelihood given a new proposed branch length lz */
+
+static void ascertainmentBiasSequence(unsigned char tip[32], int numStates)
+{
+ assert(numStates <= 32 && numStates > 1);
+
+ switch(numStates)
+ {
+ case 2:
+ tip[0] = 1;
+ tip[1] = 2;
+ break;
+ case 4:
+ tip[0] = 1;
+ tip[1] = 2;
+ tip[2] = 4;
+ tip[3] = 8;
+ break;
+ default:
+ {
+ int
+ i;
+ for(i = 0; i < numStates; i++)
+ {
+ tip[i] = i;
+ //printf("%c ", inverseMeaningPROT[i]);
+ }
+ //printf("\n");
+ }
+ break;
+ }
+}
+
+static double coreCatAsc(double *EIGN, double *sumtable, int upper,
+ volatile double *ext_dlnLdlz, volatile double *ext_d2lnLdlz2, double lz, const int numStates,
+ double *ascScaler)
+{
+ double
+ diagptable[1024],
+ lh = 0.0,
+ dlnLdlz = 0.0,
+ d2lnLdlz2 = 0.0,
+ ki,
+ kisqr;
+
+ int
+ i,
+ l;
+
+
+ ki = 1.0;
+ kisqr = 1.0;
+
+ for(l = 1; l < numStates; l++)
+ {
+ diagptable[l * 4] = exp(EIGN[l-1] * ki * lz);
+ diagptable[l * 4 + 1] = EIGN[l-1] * ki;
+ diagptable[l * 4 + 2] = EIGN[l-1] * EIGN[l-1] * kisqr;
+ }
+
+ for (i = 0; i < upper; i++)
+ {
+ double
+ *sum = &sumtable[i * numStates],
+ tmp,
+ inv_Li = 0.0,
+ dlnLidlz = 0.0,
+ d2lnLidlz2 = 0.0;
+
+
+ inv_Li += sum[0];
+
+ for(l = 1; l < numStates; l++)
+ {
+ inv_Li += (tmp = diagptable[l * 4] * sum[l]);
+ dlnLidlz += tmp * diagptable[l * 4 + 1];
+ d2lnLidlz2 += tmp * diagptable[l * 4 + 2];
+ }
+
+ inv_Li = fabs(inv_Li);
+
+ lh += inv_Li * ascScaler[i];
+ dlnLdlz += dlnLidlz * ascScaler[i];
+ d2lnLdlz2 += d2lnLidlz2 * ascScaler[i];
+ }
+
+ *ext_dlnLdlz = (dlnLdlz / (lh - 1.0));
+ *ext_d2lnLdlz2 = (((lh - 1.0) * (d2lnLdlz2) - (dlnLdlz * dlnLdlz)) / ((lh - 1.0) * (lh - 1.0)));
+
+ return lh;
+}
+
+
+static double coreGammaAsc(double *gammaRates, double *EIGN, double *sumtable, int upper,
+ volatile double *ext_dlnLdlz, volatile double *ext_d2lnLdlz2, double lz, const int numStates,
+ double *ascScaler)
+{
+ double
+ diagptable[1024],
+ lh = 0.0,
+ dlnLdlz = 0.0,
+ d2lnLdlz2 = 0.0,
+ ki,
+ kisqr;
+
+ int
+ i,
+ j,
+ l;
+
+ const int
+ gammaStates = 4 * numStates;
+
+ for(i = 0; i < 4; i++)
+ {
+ ki = gammaRates[i];
+ kisqr = ki * ki;
+
+ for(l = 1; l < numStates; l++)
+ {
+ diagptable[i * gammaStates + l * 4] = exp(EIGN[l-1] * ki * lz);
+ diagptable[i * gammaStates + l * 4 + 1] = EIGN[l-1] * ki;
+ diagptable[i * gammaStates + l * 4 + 2] = EIGN[l-1] * EIGN[l-1] * kisqr;
+ }
+ }
+
+ for (i = 0; i < upper; i++)
+ {
+ double
+ *sum = &sumtable[i * gammaStates],
+ tmp,
+ inv_Li = 0.0,
+ dlnLidlz = 0.0,
+ d2lnLidlz2 = 0.0;
+
+ for(j = 0; j < 4; j++)
+ {
+ inv_Li += sum[j * numStates];
+
+ for(l = 1; l < numStates; l++)
+ {
+ inv_Li += (tmp = diagptable[j * gammaStates + l * 4] * sum[j * numStates + l]);
+ dlnLidlz += tmp * diagptable[j * gammaStates + l * 4 + 1];
+ d2lnLidlz2 += tmp * diagptable[j * gammaStates + l * 4 + 2];
+ }
+ }
+
+ inv_Li = 0.25 * fabs(inv_Li);
+ dlnLidlz *= 0.25;
+ d2lnLidlz2 *= 0.25;
+
+ lh += inv_Li * ascScaler[i];
+ dlnLdlz += dlnLidlz * ascScaler[i];
+ d2lnLdlz2 += d2lnLidlz2 * ascScaler[i];
+ }
+
+ *ext_dlnLdlz = (dlnLdlz / (lh - 1.0));
+ *ext_d2lnLdlz2 = (((lh - 1.0) * (d2lnLdlz2) - (dlnLdlz * dlnLdlz)) / ((lh - 1.0) * (lh - 1.0)));
+
+ return lh;
+}
+
+static void sumCatAsc(int tipCase, double *sumtable, double *x1, double *x2, double *tipVector,
+ int n, const int numStates)
+{
+ int i, k;
+ double *left, *right, *sum;
+
+ unsigned char
+ tip[32];
+
+ ascertainmentBiasSequence(tip, numStates);
+
+ switch(tipCase)
+ {
+ case PLL_TIP_TIP:
+ for(i = 0; i < n; i++)
+ {
+ left = &(tipVector[numStates * tip[i]]);
+ right = &(tipVector[numStates * tip[i]]);
+
+
+ sum = &sumtable[i * numStates];
+
+ for(k = 0; k < numStates; k++)
+ sum[k] = left[k] * right[k];
+ }
+ break;
+ case PLL_TIP_INNER:
+ for(i = 0; i < n; i++)
+ {
+ left = &(tipVector[numStates * tip[i]]);
+
+
+ right = &(x2[i * numStates]);
+ sum = &sumtable[i * numStates];
+
+ for(k = 0; k < numStates; k++)
+ sum[k] = left[k] * right[k];
+ }
+ break;
+ case PLL_INNER_INNER:
+ for(i = 0; i < n; i++)
+ {
+ left = &(x1[i * numStates]);
+ right = &(x2[i * numStates]);
+ sum = &(sumtable[i * numStates]);
+
+ for(k = 0; k < numStates; k++)
+ sum[k] = left[k] * right[k];
+ }
+ break;
+ default:
+ assert(0);
+ }
+}
+
+static void sumGammaAsc(int tipCase, double *sumtable, double *x1, double *x2, double *tipVector,
+ int n, const int numStates)
+{
+ int i, l, k;
+ double *left, *right, *sum;
+
+ const int gammaStates = numStates * 4;
+
+ unsigned char
+ tip[32];
+
+ ascertainmentBiasSequence(tip, numStates);
+
+ switch(tipCase)
+ {
+ case PLL_TIP_TIP:
+ for(i = 0; i < n; i++)
+ {
+ left = &(tipVector[numStates * tip[i]]);
+ right = &(tipVector[numStates * tip[i]]);
+
+ for(l = 0; l < 4; l++)
+ {
+ sum = &sumtable[i * gammaStates + l * numStates];
+ for(k = 0; k < numStates; k++)
+ sum[k] = left[k] * right[k];
+ }
+ }
+ break;
+ case PLL_TIP_INNER:
+ for(i = 0; i < n; i++)
+ {
+ left = &(tipVector[numStates * tip[i]]);
+
+ for(l = 0; l < 4; l++)
+ {
+ right = &(x2[gammaStates * i + l * numStates]);
+ sum = &sumtable[i * gammaStates + l * numStates];
+
+ for(k = 0; k < numStates; k++)
+ sum[k] = left[k] * right[k];
+ }
+ }
+ break;
+ case PLL_INNER_INNER:
+ for(i = 0; i < n; i++)
+ {
+ for(l = 0; l < 4; l++)
+ {
+ left = &(x1[gammaStates * i + l * numStates]);
+ right = &(x2[gammaStates * i + l * numStates]);
+ sum = &(sumtable[i * gammaStates + l * numStates]);
+
+ for(k = 0; k < numStates; k++)
+ sum[k] = left[k] * right[k];
+ }
+ }
+ break;
+ default:
+ assert(0);
+ }
+}
+
+
+
+
+#if (!defined(__AVX) && !defined(__SSE3))
+static void coreCAT_FLEX(int upper, int numberOfCategories, double *sum,
+ volatile double *d1, volatile double *d2, int *wgt,
+ double *rptr, double *EIGN, int *cptr, double lz, const int states)
+ /* rptr perSiteRates pointer, cptr rateCategory pointer */
+{
+ int
+ i,
+ l;
+
+ double
+ *d,
+
+ /* arrays to store stuff we can pre-compute */
+ *d_start = NULL,
+ *e = NULL,
+ *s = NULL,
+ *dd = NULL,
+ inv_Li,
+ dlnLidlz,
+ d2lnLidlz2,
+ dlnLdlz = 0.0,
+ d2lnLdlz2 = 0.0;
+
+ rax_posix_memalign ((void **) &d_start, PLL_BYTE_ALIGNMENT, numberOfCategories * states * sizeof(double));
+ rax_posix_memalign ((void **) &e, PLL_BYTE_ALIGNMENT, (states * sizeof(double)));
+ rax_posix_memalign ((void **) &s, PLL_BYTE_ALIGNMENT, states * sizeof(double));
+ rax_posix_memalign ((void **) &dd, PLL_BYTE_ALIGNMENT, states * sizeof(double)),
+ d = d_start;
+
+ e[0] = 0.0;
+ s[0] = 0.0;
+ dd[0] = 0.0;
+
+
+ /* we are pre-computing values for computing the first and second derivative of P(lz)
+ since this requires an exponetial that the only thing we really have to derive here */
+
+ for(l = 1; l < states; l++)
+ {
+ s[l] = EIGN[l];
+ e[l] = EIGN[l] * EIGN[l];
+ dd[l] = s[l] * lz;
+ }
+
+ /* compute the P matrices and their derivatives for
+ all per-site rate categories */
+
+ for(i = 0; i < numberOfCategories; i++)
+ {
+ d[states * i] = 1.0;
+ for(l = 1; l < states; l++)
+ d[states * i + l] = exp(dd[l] * rptr[i]);
+ }
+
+
+ /* now loop over the sites in this partition to obtain the per-site 1st and 2nd derivatives */
+
+ for (i = 0; i < upper; i++)
+ {
+ /* get the correct p matrix for the rate at the current site i */
+
+ d = &d_start[states * cptr[i]];
+
+ /* this is the likelihood at site i, NOT the log likelihood, we don't need the log
+ likelihood to compute derivatives ! */
+
+ inv_Li = sum[states * i];
+
+ /* those are for storing the first and second derivative of the Likelihood at site i */
+
+ dlnLidlz = 0.0;
+ d2lnLidlz2 = 0.0;
+
+ /* now multiply the likelihood and the first and second derivative with the
+ appropriate derivatives of P(lz) */
+
+ for(l = 1; l < states; l++)
+ {
+ double
+ tmpv = d[l] * sum[states * i + l];
+
+ inv_Li += tmpv;
+ dlnLidlz += tmpv * s[l];
+ d2lnLidlz2 += tmpv * e[l];
+ }
+
+ /* below we are implementing the other mathematical operations that are required
+ to obtain the deirivatives */
+
+ inv_Li = 1.0 / fabs (inv_Li);
+
+ dlnLidlz *= inv_Li;
+ d2lnLidlz2 *= inv_Li;
+
+ /* compute the accumulated first and second derivatives of this site */
+
+ dlnLdlz += wgt[i] * rptr[cptr[i]] * dlnLidlz;
+ d2lnLdlz2 += wgt[i] * rptr[cptr[i]] * rptr[cptr[i]] * (d2lnLidlz2 - dlnLidlz * dlnLidlz);
+ }
+
+ /*
+ set the result values, i.e., the sum of the per-site first and second derivatives of the likelihood function
+ for this partition.
+ */
+
+ *d1 = dlnLdlz;
+ *d2 = d2lnLdlz2;
+
+ /* free the temporary arrays */
+
+ rax_free(d_start);
+ rax_free(e);
+ rax_free(s);
+ rax_free(dd);
+}
+
+static void coreGAMMA_FLEX(int upper, double *sumtable, volatile double *ext_dlnLdlz, volatile double *ext_d2lnLdlz2,
+ double *EIGN, double *gammaRates, double lz, int *wrptr, const int states)
+{
+ double
+ *sum,
+ diagptable[1024], /* TODO make this dynamic */
+ dlnLdlz = 0.0,
+ d2lnLdlz2 = 0.0,
+ ki,
+ kisqr,
+ tmp,
+ inv_Li,
+ dlnLidlz,
+ d2lnLidlz2;
+
+ int
+ i,
+ j,
+ l;
+
+ const int
+ gammaStates = 4 * states;
+
+ /* pre-compute the derivatives of the P matrix for all discrete GAMMA rates */
+
+ for(i = 0; i < 4; i++)
+ {
+ ki = gammaRates[i];
+ kisqr = ki * ki;
+
+ for(l = 1; l < states; l++)
+ {
+ diagptable[i * gammaStates + l * 4] = exp(EIGN[l] * ki * lz);
+ diagptable[i * gammaStates + l * 4 + 1] = EIGN[l] * ki;
+ diagptable[i * gammaStates + l * 4 + 2] = EIGN[l] * EIGN[l] * kisqr;
+ }
+ }
+
+ /* loop over sites in this partition */
+
+ for (i = 0; i < upper; i++)
+ {
+ /* access the array with pre-computed values */
+ sum = &sumtable[i * gammaStates];
+
+ /* initial per-site likelihood and 1st and 2nd derivatives */
+
+ inv_Li = 0.0;
+ dlnLidlz = 0.0;
+ d2lnLidlz2 = 0.0;
+
+ /* loop over discrete GAMMA rates */
+
+ for(j = 0; j < 4; j++)
+ {
+ inv_Li += sum[j * states];
+
+ for(l = 1; l < states; l++)
+ {
+ inv_Li += (tmp = diagptable[j * gammaStates + l * 4] * sum[j * states + l]);
+ dlnLidlz += tmp * diagptable[j * gammaStates + l * 4 + 1];
+ d2lnLidlz2 += tmp * diagptable[j * gammaStates + l * 4 + 2];
+ }
+ }
+
+ /* finalize derivative computation */
+ /* note that wrptr[] here unlike in CAT above is the
+ integer weight vector of the current site
+
+ The operations:
+
+ EIGN[l] * ki;
+ EIGN[l] * EIGN[l] * kisqr;
+
+ that are hidden in CAT in wrptr (at least the * ki and * ki *ki part of them
+ are done explicitely here
+
+*/
+
+ inv_Li = 1.0 / fabs (inv_Li);
+
+ dlnLidlz *= inv_Li;
+ d2lnLidlz2 *= inv_Li;
+
+ dlnLdlz += wrptr[i] * dlnLidlz;
+ d2lnLdlz2 += wrptr[i] * (d2lnLidlz2 - dlnLidlz * dlnLidlz);
+ }
+
+ *ext_dlnLdlz = dlnLdlz;
+ *ext_d2lnLdlz2 = d2lnLdlz2;
+
+}
+#endif
+
+//void sumGAMMA_FLEX_reorder(int tipCase, double *sumtable, double *x1, double *x2, double *tipVector,
+// unsigned char *tipX1, unsigned char *tipX2, int n, const int states);
+
+/** @brief Precompute values (sumtable) from the 2 likelihood vectors of a given branch
+ *
+ * @warning These precomputations are stored in \a tr->partitionData[model].sumBuffer, which is used by function \a execCore
+ *
+ * @param tr
+ * Library instance
+ *
+ * @warning the given branch is implicitly defined in \a tr by these nodes:
+ * pNumber = tr->td[0].ti[0].pNumber;
+ * qNumber = tr->td[0].ti[0].qNumber;
+ *
+ *
+ * @note This function should be called only once at the very beginning of each Newton-Raphson procedure for optimizing barnch lengths. It initially invokes an iterative newview call to get a consistent pair of vectors at the left and the right end of the branch and thereafter invokes the one-time only precomputation of values (sumtable) that can be re-used in each Newton-Raphson iteration. Once this function has been called we can execute the actual NR procedure
+ *
+ *
+ */
+void makenewzIterative(pllInstance *tr, partitionList * pr)
+{
+ int
+ model,
+ tipCase;
+
+ double
+ *x1_start = NULL,
+ *x2_start = NULL,
+ *x1_start_asc = NULL,
+ *x2_start_asc = NULL;
+
+
+ unsigned char
+ *tipX1,
+ *tipX2;
+
+ double
+ *x1_gapColumn = (double*)NULL,
+ *x2_gapColumn = (double*)NULL;
+
+ unsigned int
+ *x1_gap = (unsigned int*)NULL,
+ *x2_gap = (unsigned int*)NULL;
+
+ /* call newvieIterative to get the likelihood arrays to the left and right of the branch */
+
+ pllNewviewIterative(tr, pr, 1);
+
+
+ /*
+ loop over all partoitions to do the precomputation of the sumTable buffer
+ This is analogous to the pllNewviewIterative() and pllEvaluateIterative()
+ implementations.
+ */
+
+ for(model = 0; model < pr->numberOfPartitions; model++)
+ {
+ int
+ width = pr->partitionData[model]->width;
+
+ if(tr->td[0].executeModel[model] && width > 0)
+ {
+ int
+ states = pr->partitionData[model]->states;
+
+
+ getVects(tr, pr, &tipX1, &tipX2, &x1_start, &x2_start, &tipCase, model, &x1_gapColumn, &x2_gapColumn, &x1_gap, &x2_gap, &x1_start_asc, &x2_start_asc);
+
+#if (!defined(__SSE3) && !defined(__AVX) && !defined(__MIC_NATIVE))
+ assert(!tr->saveMemory);
+ if(tr->rateHetModel == PLL_CAT)
+ sumCAT_FLEX(tipCase, pr->partitionData[model]->sumBuffer, x1_start, x2_start, pr->partitionData[model]->tipVector, tipX1, tipX2,
+ width, states);
+ else
+ //sumGAMMA_FLEX_reorder(tipCase, pr->partitionData[model]->sumBuffer, x1_start, x2_start, pr->partitionData[model]->tipVector, tipX1, tipX2,
+ sumGAMMA_FLEX(tipCase, pr->partitionData[model]->sumBuffer, x1_start, x2_start, pr->partitionData[model]->tipVector, tipX1, tipX2,
+ width, states);
+#else
+ switch(states)
+ {
+ case 2: /* BINARY */
+#ifdef __MIC_NATIVE
+ assert(0 && "Binary data model is not implemented on Intel MIC");
+#else
+ assert(!tr->saveMemory);
+ if (tr->rateHetModel == PLL_CAT)
+ sumCAT_BINARY(tipCase, pr->partitionData[model]->sumBuffer, x1_start, x2_start, pr->partitionData[model]->tipVector, tipX1, tipX2,
+ width);
+ else
+ sumGAMMA_BINARY(tipCase, pr->partitionData[model]->sumBuffer, x1_start, x2_start, pr->partitionData[model]->tipVector, tipX1, tipX2,
+ width);
+#endif
+ break;
+ case 4: /* DNA */
+#ifdef __MIC_NATIVE
+ assert(!tr->saveMemory);
+ assert(tr->rateHetModel == PLL_GAMMA);
+
+ sumGTRGAMMA_MIC(tipCase, pr->partitionData[model]->sumBuffer, x1_start, x2_start, pr->partitionData[model]->tipVector, tipX1, tipX2,
+ width);
+#else
+ if(tr->rateHetModel == PLL_CAT)
+ {
+ if(tr->saveMemory)
+ sumCAT_SAVE(tipCase, pr->partitionData[model]->sumBuffer, x1_start, x2_start, pr->partitionData[model]->tipVector, tipX1, tipX2,
+ width, x1_gapColumn, x2_gapColumn, x1_gap, x2_gap);
+ else
+ sumCAT(tipCase, pr->partitionData[model]->sumBuffer, x1_start, x2_start, pr->partitionData[model]->tipVector, tipX1, tipX2,
+ width);
+ }
+ else
+ {
+ if(tr->saveMemory)
+ sumGAMMA_GAPPED_SAVE(tipCase, pr->partitionData[model]->sumBuffer, x1_start, x2_start, pr->partitionData[model]->tipVector, tipX1, tipX2,
+ width, x1_gapColumn, x2_gapColumn, x1_gap, x2_gap);
+ else
+ sumGAMMA(tipCase, pr->partitionData[model]->sumBuffer, x1_start, x2_start, pr->partitionData[model]->tipVector, tipX1, tipX2,
+ width);
+ }
+#endif
+ break;
+ case 20: /* proteins */
+#ifdef __MIC_NATIVE
+ assert(!tr->saveMemory);
+ assert(tr->rateHetModel == PLL_GAMMA);
+
+ if(pr->partitionData[model]->protModels == PLL_LG4M || pr->partitionData[model]->protModels == PLL_LG4X)
+ sumGTRGAMMAPROT_LG4_MIC(tipCase, pr->partitionData[model]->sumBuffer, x1_start, x2_start, pr->partitionData[model]->tipVector_LG4, tipX1, tipX2,
+ width);
+ else
+ sumGTRGAMMAPROT_MIC(tipCase, pr->partitionData[model]->sumBuffer, x1_start, x2_start, pr->partitionData[model]->tipVector, tipX1, tipX2,
+ width);
+#else
+
+ if(tr->rateHetModel == PLL_CAT)
+ {
+ if(tr->saveMemory)
+ sumGTRCATPROT_SAVE(tipCase, pr->partitionData[model]->sumBuffer, x1_start, x2_start, pr->partitionData[model]->tipVector,
+ tipX1, tipX2, width, x1_gapColumn, x2_gapColumn, x1_gap, x2_gap);
+ else
+ sumGTRCATPROT(tipCase, pr->partitionData[model]->sumBuffer, x1_start, x2_start, pr->partitionData[model]->tipVector,
+ tipX1, tipX2, width);
+ }
+ else
+ {
+
+ if(tr->saveMemory)
+ sumGAMMAPROT_GAPPED_SAVE(tipCase, pr->partitionData[model]->sumBuffer, x1_start, x2_start, pr->partitionData[model]->tipVector, tipX1, tipX2,
+ width, x1_gapColumn, x2_gapColumn, x1_gap, x2_gap);
+ else
+ {
+ if(pr->partitionData[model]->protModels == PLL_LG4M || pr->partitionData[model]->protModels == PLL_LG4X)
+ sumGAMMAPROT_LG4(tipCase, pr->partitionData[model]->sumBuffer, x1_start, x2_start, pr->partitionData[model]->tipVector_LG4,
+ tipX1, tipX2, width);
+ else
+ sumGAMMAPROT(tipCase, pr->partitionData[model]->sumBuffer, x1_start, x2_start, pr->partitionData[model]->tipVector,
+ tipX1, tipX2, width);
+ }
+ }
+#endif
+ break;
+ default:
+ assert(0);
+ }
+#endif
+#if (defined(_FINE_GRAIN_MPI) || defined(_USE_PTHREADS))
+ if (pr->partitionData[model]->ascBias && tr->threadID == 0)
+#else
+ if (pr->partitionData[model]->ascBias)
+#endif
+ {
+ int pNumber = tr->td[0].ti[0].pNumber, qNumber =
+ tr->td[0].ti[0].qNumber, i, *ex1_asc =
+ &pr->partitionData[model]->ascExpVector[(pNumber
+ - tr->mxtips - 1) * states], *ex2_asc =
+ &pr->partitionData[model]->ascExpVector[(qNumber
+ - tr->mxtips - 1) * states];
+ switch (tipCase)
+ {
+ case PLL_TIP_TIP:
+ assert(0);
+ break;
+ case PLL_TIP_INNER:
+ if (isTip(pNumber, tr->mxtips))
+ {
+ for (i = 0; i < states; i++)
+ pr->partitionData[model]->ascScaler[i] = pow(
+ PLL_MINLIKELIHOOD, (double) ex2_asc[i]);
+ }
+ else
+ {
+ for (i = 0; i < states; i++)
+ pr->partitionData[model]->ascScaler[i] = pow(
+ PLL_MINLIKELIHOOD, (double) ex1_asc[i]);
+ }
+ break;
+ case PLL_INNER_INNER:
+ for (i = 0; i < states; i++)
+ pr->partitionData[model]->ascScaler[i] = pow(
+ PLL_MINLIKELIHOOD,
+ (double) (ex1_asc[i] + ex2_asc[i]));
+ break;
+ default:
+ assert(0);
+ }
+ if (tr->rateHetModel == PLL_CAT)
+ sumCatAsc (tipCase, pr->partitionData[model]->ascSumBuffer, x1_start_asc, x2_start_asc, pr->partitionData[model]->tipVector, states, states);
+ else
+ sumGammaAsc(tipCase, pr->partitionData[model]->ascSumBuffer, x1_start_asc, x2_start_asc, pr->partitionData[model]->tipVector, states, states);
+ }
+ }
+ }
+}
+
+
+/** @brief Compute first and second derivatives of the likelihood with respect to a given branch length
+ *
+ * @param tr
+ * library instance
+ *
+ * @param _dlnLdlz
+ * First derivative dl/dlz
+ *
+ * @param _d2lnLdlz2
+ * Second derivative d(dl/dlz)/dlz
+ *
+ * @warning \a makenewzIterative should have been called to precompute \a tr->partitionData[model].sumBuffer at the given branch
+ *
+ * @note this function actually computes the first and second derivatives of the likelihood for a given branch stored in tr->coreLZ[model] Note that in the parallel case coreLZ must always be broadcasted together with the traversal descriptor, at least for optimizing branch lengths
+ *
+ */
+void execCore(pllInstance *tr, partitionList *pr, volatile double *_dlnLdlz, volatile double *_d2lnLdlz2)
+{
+ int model, branchIndex;
+ int numBranches = pr->perGeneBranchLengths?pr->numberOfPartitions:1;
+
+ double lz;
+
+ _dlnLdlz[0] = 0.0;
+ _d2lnLdlz2[0] = 0.0;
+
+ /* loop over partitions */
+
+ for(model = 0; model < pr->numberOfPartitions; model++)
+ {
+ int
+ width = pr->partitionData[model]->width;
+
+ /* check if we (the present thread for instance) needs to compute something at
+ all for the present partition */
+
+ if(tr->td[0].executeModel[model] && width > 0)
+ {
+ int
+ states = pr->partitionData[model]->states;
+
+ double
+ *sumBuffer = (double*)NULL;
+
+
+ volatile double
+ dlnLdlz = 0.0,
+ d2lnLdlz2 = 0.0;
+
+ /* set a pointer to the part of the pre-computed sumBuffer we are going to access */
+
+ sumBuffer = pr->partitionData[model]->sumBuffer;
+
+ /* figure out if we are optimizing branch lengths individually per partition or jointly across
+ all partitions. If we do this on a per partition basis, we also need to compute and store
+ the per-partition derivatives of the likelihood separately, otherwise not */
+
+ if(numBranches > 1)
+ {
+ branchIndex = model;
+ lz = tr->td[0].parameterValues[model];
+ _dlnLdlz[model] = 0.0;
+ _d2lnLdlz2[model] = 0.0;
+ }
+ else
+ {
+ branchIndex = 0;
+ lz = tr->td[0].parameterValues[0];
+ }
+
+#if (!defined(__SSE3) && !defined(__AVX) && !defined(__MIC_NATIVE))
+ /* compute first and second derivatives with the slow generic functions */
+
+ if(tr->rateHetModel == PLL_CAT)
+ coreCAT_FLEX(width, pr->partitionData[model]->numberOfCategories, sumBuffer,
+ &dlnLdlz, &d2lnLdlz2, pr->partitionData[model]->wgt,
+ pr->partitionData[model]->perSiteRates, pr->partitionData[model]->EIGN, pr->partitionData[model]->rateCategory, lz, states);
+ else
+ coreGAMMA_FLEX(width, sumBuffer,
+ &dlnLdlz, &d2lnLdlz2, pr->partitionData[model]->EIGN, pr->partitionData[model]->gammaRates, lz,
+ pr->partitionData[model]->wgt, states);
+#else
+ switch(states)
+ {
+ case 2: /* BINARY */
+#ifdef __MIC_NATIVE
+ assert(0 && "Binary data model is not implemented on Intel MIC");
+#else
+ if (tr->rateHetModel == PLL_CAT)
+ coreGTRCAT_BINARY(width,
+ pr->partitionData[model]->numberOfCategories,
+ sumBuffer,
+ &dlnLdlz,
+ &d2lnLdlz2,
+ pr->partitionData[model]->perSiteRates,
+ pr->partitionData[model]->EIGN,
+ pr->partitionData[model]->rateCategory,
+ lz,
+ pr->partitionData[model]->wgt);
+ else
+ coreGTRGAMMA_BINARY(width,
+ sumBuffer,
+ &dlnLdlz,
+ &d2lnLdlz2,
+ pr->partitionData[model]->EIGN,
+ pr->partitionData[model]->gammaRates,
+ lz,
+ pr->partitionData[model]->wgt);
+#endif
+ break;
+ case 4: /* DNA */
+#ifdef __MIC_NATIVE
+ assert(tr->rateHetModel == PLL_GAMMA);
+
+ coreGTRGAMMA_MIC(width,
+ sumBuffer,
+ &dlnLdlz,
+ &d2lnLdlz2,
+ pr->partitionData[model]->EIGN,
+ pr->partitionData[model]->gammaRates,
+ lz,
+ pr->partitionData[model]->wgt);
+#else
+ if(tr->rateHetModel == PLL_CAT)
+ coreGTRCAT(width, pr->partitionData[model]->numberOfCategories, sumBuffer,
+ &dlnLdlz, &d2lnLdlz2, pr->partitionData[model]->wgt,
+ pr->partitionData[model]->perSiteRates, pr->partitionData[model]->EIGN, pr->partitionData[model]->rateCategory, lz);
+ else
+ coreGTRGAMMA(width, sumBuffer,
+ &dlnLdlz, &d2lnLdlz2, pr->partitionData[model]->EIGN, pr->partitionData[model]->gammaRates, lz,
+ pr->partitionData[model]->wgt);
+
+#endif
+ break;
+ case 20: /* proteins */
+
+#ifdef __MIC_NATIVE
+ assert(tr->rateHetModel == PLL_GAMMA);
+
+ if(pr->partitionData[model]->protModels == PLL_LG4M || pr->partitionData[model]->protModels == PLL_LG4X)
+ coreGTRGAMMAPROT_LG4_MIC(width, sumBuffer,
+ &dlnLdlz, &d2lnLdlz2, pr->partitionData[model]->EIGN_LG4, pr->partitionData[model]->gammaRates, lz,
+ pr->partitionData[model]->wgt, pr->partitionData[model]->lg4x_weights);
+ else
+ coreGTRGAMMAPROT_MIC(width, sumBuffer,
+ &dlnLdlz, &d2lnLdlz2, pr->partitionData[model]->EIGN, pr->partitionData[model]->gammaRates, lz,
+ pr->partitionData[model]->wgt);
+#else
+
+ if(tr->rateHetModel == PLL_CAT)
+ coreGTRCATPROT(pr->partitionData[model]->EIGN, lz, pr->partitionData[model]->numberOfCategories, pr->partitionData[model]->perSiteRates,
+ pr->partitionData[model]->rateCategory, width,
+ pr->partitionData[model]->wgt,
+ &dlnLdlz, &d2lnLdlz2,
+ sumBuffer);
+ else
+ {
+ if(pr->partitionData[model]->protModels == PLL_LG4M || pr->partitionData[model]->protModels == PLL_LG4X)
+ coreGTRGAMMAPROT_LG4(pr->partitionData[model]->gammaRates, pr->partitionData[model]->EIGN_LG4,
+ sumBuffer, width, pr->partitionData[model]->wgt,
+ &dlnLdlz, &d2lnLdlz2, lz, pr->partitionData[model]->lg4x_weights);
+ else
+
+ coreGTRGAMMAPROT(pr->partitionData[model]->gammaRates, pr->partitionData[model]->EIGN,
+ sumBuffer, width, pr->partitionData[model]->wgt,
+ &dlnLdlz, &d2lnLdlz2, lz);
+
+ }
+#endif
+ break;
+ default:
+ assert(0);
+ }
+#endif
+
+ /* store first and second derivative */
+#if (defined(_FINE_GRAIN_MPI) || defined(_USE_PTHREADS))
+ if(pr->partitionData[model]->ascBias && tr->threadID == 0)
+#else
+ if(pr->partitionData[model]->ascBias)
+#endif
+ {
+ size_t
+ i;
+
+ double
+ correction;
+
+ int
+ w = 0;
+
+ volatile double
+ d1 = 0.0,
+ d2 = 0.0;
+
+ for(i = (size_t)pr->partitionData[model]->lower; i < (size_t)pr->partitionData[model]->upper; i++)
+ w += tr->aliaswgt[i];
+
+ switch(tr->rateHetModel)
+ {
+ case PLL_CAT:
+ correction = coreCatAsc(pr->partitionData[model]->EIGN, pr->partitionData[model]->ascSumBuffer, states,
+ &d1, &d2, lz, states, pr->partitionData[model]->ascScaler);
+ break;
+ case PLL_GAMMA:
+ correction = coreGammaAsc(pr->partitionData[model]->gammaRates, pr->partitionData[model]->EIGN, pr->partitionData[model]->ascSumBuffer, states,
+ &d1, &d2, lz, states, pr->partitionData[model]->ascScaler);
+ break;
+ default:
+ assert(0);
+ }
+
+ correction = 1.0 - correction;
+
+ /* Lewis correction */
+ _dlnLdlz[branchIndex] = _dlnLdlz[branchIndex] + dlnLdlz - (double)w * d1;
+ _d2lnLdlz2[branchIndex] = _d2lnLdlz2[branchIndex] + d2lnLdlz2- (double)w * d2;
+
+ }
+ else
+ {
+ _dlnLdlz[branchIndex] = _dlnLdlz[branchIndex] + dlnLdlz;
+ _d2lnLdlz2[branchIndex] = _d2lnLdlz2[branchIndex] + d2lnLdlz2;
+ }
+ }
+ else
+ {
+ /* set to 0 to make the reduction operation consistent */
+
+ if(width == 0 && (numBranches > 1))
+ {
+ _dlnLdlz[model] = 0.0;
+ _d2lnLdlz2[model] = 0.0;
+ }
+ }
+ }
+
+}
+
+
+/* the function below actually implements the iterative Newton-Raphson procedure.
+ It is particularly messy and hard to read because for the case of per-partition branch length
+ estimates it needs to keep track of whetehr the Newton Raphson procedure has
+ converged for each partition individually.
+
+ The rational efor doing it like this is also provided in:
+
+
+ A. Stamatakis, M. Ott: "Load Balance in the Phylogenetic Likelihood Kernel". Proceedings of ICPP 2009,
+
+*/
+
+static void topLevelMakenewz(pllInstance *tr, partitionList * pr, double *z0, int _maxiter, double *result)
+{
+ double z[PLL_NUM_BRANCHES], zprev[PLL_NUM_BRANCHES], zstep[PLL_NUM_BRANCHES];
+ volatile double dlnLdlz[PLL_NUM_BRANCHES], d2lnLdlz2[PLL_NUM_BRANCHES];
+ int i, maxiter[PLL_NUM_BRANCHES], model;
+ int numBranches = pr->perGeneBranchLengths?pr->numberOfPartitions:1;
+ boolean firstIteration = PLL_TRUE;
+ boolean outerConverged[PLL_NUM_BRANCHES];
+ boolean loopConverged;
+
+
+ /* figure out if this is on a per partition basis or jointly across all partitions */
+
+
+
+ /* initialize loop convergence variables etc.
+ maxiter is the maximum number of NR iterations we are going to do before giving up */
+
+ for(i = 0; i < numBranches; i++)
+ {
+ z[i] = z0[i];
+ maxiter[i] = _maxiter;
+ outerConverged[i] = PLL_FALSE;
+ tr->curvatOK[i] = PLL_TRUE;
+ }
+
+
+ /* nested do while loops of Newton-Raphson */
+
+ do
+ {
+
+ /* check if we ar done for partition i or if we need to adapt the branch length again */
+
+ for(i = 0; i < numBranches; i++)
+ {
+ if(outerConverged[i] == PLL_FALSE && tr->curvatOK[i] == PLL_TRUE)
+ {
+ tr->curvatOK[i] = PLL_FALSE;
+
+ zprev[i] = z[i];
+
+ zstep[i] = (1.0 - PLL_ZMAX) * z[i] + PLL_ZMIN;
+ }
+ }
+
+ for(i = 0; i < numBranches; i++)
+ {
+ /* other case, the outer loop hasn't converged but we are trying to approach
+ the maximum from the wrong side */
+
+ if(outerConverged[i] == PLL_FALSE && tr->curvatOK[i] == PLL_FALSE)
+ {
+ double lz;
+
+ if (z[i] < PLL_ZMIN) z[i] = PLL_ZMIN;
+ else if (z[i] > PLL_ZMAX) z[i] = PLL_ZMAX;
+ lz = log(z[i]);
+
+ tr->coreLZ[i] = lz;
+ }
+ }
+
+
+ /* set the execution mask */
+
+ if(numBranches > 1)
+ {
+ for(model = 0; model < pr->numberOfPartitions; model++)
+ {
+ if(pr->partitionData[model]->executeModel)
+ pr->partitionData[model]->executeModel = !tr->curvatOK[model];
+
+ }
+ }
+ else
+ {
+ for(model = 0; model < pr->numberOfPartitions; model++)
+ pr->partitionData[model]->executeModel = !tr->curvatOK[0];
+ }
+
+
+ /* store it in traversal descriptor */
+
+ storeExecuteMaskInTraversalDescriptor(tr, pr);
+
+ /* store the new branch length values to be tested in traversal descriptor */
+
+ storeValuesInTraversalDescriptor(tr, pr, &(tr->coreLZ[0]));
+
+#if (defined(_FINE_GRAIN_MPI) || defined(_USE_PTHREADS))
+
+ /* if this is the first iteration of NR we will need to first do this one-time call
+ of maknewzIterative() Note that, only this call requires broadcasting the traversal descriptor,
+ subsequent calls to pllMasterBarrier(PLL_THREAD_MAKENEWZ, tr); will not require this
+ */
+
+ if(firstIteration)
+ {
+ tr->td[0].traversalHasChanged = PLL_TRUE;
+ pllMasterBarrier (tr, pr, PLL_THREAD_MAKENEWZ_FIRST);
+ firstIteration = PLL_FALSE;
+ tr->td[0].traversalHasChanged = PLL_FALSE;
+ }
+ else
+ pllMasterBarrier(tr, pr, PLL_THREAD_MAKENEWZ);
+ branchLength_parallelReduce(tr, (double*)dlnLdlz, (double*)d2lnLdlz2, numBranches);
+#else
+ /* sequential part, if this is the first newton-raphson implementation,
+ do the precomputations as well, otherwise just execute the computation
+ of the derivatives */
+ if(firstIteration)
+ {
+ makenewzIterative(tr, pr);
+ firstIteration = PLL_FALSE;
+ }
+ execCore(tr, pr, dlnLdlz, d2lnLdlz2);
+#endif
+
+ /* do a NR step, if we are on the correct side of the maximum that's okay, otherwise
+ shorten branch */
+
+ for(i = 0; i < numBranches; i++)
+ {
+ if(outerConverged[i] == PLL_FALSE && tr->curvatOK[i] == PLL_FALSE)
+ {
+ if ((d2lnLdlz2[i] >= 0.0) && (z[i] < PLL_ZMAX))
+ zprev[i] = z[i] = 0.37 * z[i] + 0.63; /* Bad curvature, shorten branch */
+ else
+ tr->curvatOK[i] = PLL_TRUE;
+ }
+ }
+
+ /* do the standard NR step to obrain the next value, depending on the state for eahc partition */
+
+ for(i = 0; i < numBranches; i++)
+ {
+ if(tr->curvatOK[i] == PLL_TRUE && outerConverged[i] == PLL_FALSE)
+ {
+ if (d2lnLdlz2[i] < 0.0)
+ {
+ double tantmp = -dlnLdlz[i] / d2lnLdlz2[i];
+ if (tantmp < 100)
+ {
+ z[i] *= exp(tantmp);
+ if (z[i] < PLL_ZMIN)
+ z[i] = PLL_ZMIN;
+
+ if (z[i] > 0.25 * zprev[i] + 0.75)
+ z[i] = 0.25 * zprev[i] + 0.75;
+ }
+ else
+ z[i] = 0.25 * zprev[i] + 0.75;
+ }
+ if (z[i] > PLL_ZMAX) z[i] = PLL_ZMAX;
+
+ /* decrement the maximum number of itarations */
+
+ maxiter[i] = maxiter[i] - 1;
+
+ /* check if the outer loop has converged */
+
+ //old code below commented out, integrated new PRELIMINARY BUG FIX !
+ //this needs further work at some point!
+
+ /*
+ if(maxiter[i] > 0 && (PLL_ABS(z[i] - zprev[i]) > zstep[i]))
+ outerConverged[i] = PLL_FALSE;
+ else
+ outerConverged[i] = PLL_TRUE;
+ */
+
+ if((PLL_ABS(z[i] - zprev[i]) > zstep[i]))
+ {
+ /* We should make a more informed decision here,
+ based on the log like improvement */
+
+ if(maxiter[i] < -20)
+ {
+ z[i] = z0[i];
+ outerConverged[i] = PLL_TRUE;
+ }
+ else
+ outerConverged[i] = PLL_FALSE;
+ }
+ else
+ outerConverged[i] = PLL_TRUE;
+ }
+ }
+
+ /* check if the loop has converged for all partitions */
+
+ loopConverged = PLL_TRUE;
+ for(i = 0; i < numBranches; i++)
+ loopConverged = loopConverged && outerConverged[i];
+ }
+ while (!loopConverged);
+
+
+ /* reset partition execution mask */
+
+ for(model = 0; model < pr->numberOfPartitions; model++)
+ pr->partitionData[model]->executeModel = PLL_TRUE;
+
+ /* copy the new branches in the result array of branches.
+ if we don't do a per partition estimate of
+ branches this will only set result[0]
+ */
+
+ for(i = 0; i < numBranches; i++)
+ result[i] = z[i];
+}
+
+
+/** @brief Optimize branch length value(s) of a given branch with the Newton-Raphtson procedure
+ *
+ * @warning A given branch may have one or several branch length values (up to PLL_NUM_BRANCHES), usually the later refers to partition-specific branch length values. Thus z0 and result represent collections rather than double values. The number of branch length values is given by \a tr->numBranches
+ *
+ * @param tr
+ * Library instance
+ *
+ * @param p
+ * One node that defines the branch (p->z)
+ *
+ * @param q
+ * The other node side of the branch (usually p->back), but the branch length can be estimated even if p and q are
+ * not connected, e.g. before the insertion of a subtree.
+ *
+ * @param z0
+ * Initial branch length value(s) for the given branch \a p->z
+ *
+ * @param maxiter
+ * Maximum number of iterations in the Newton-Raphson procedure
+ *
+ * @param result
+ * Resulting branch length value(s) for the given branch \a p->z
+ *
+ * @param mask
+ * Specifies if a mask to track partition convergence (\a tr->partitionConverged) is being used.
+ *
+ * @sa typical values for \a maxiter are constants \a iterations and \a PLL_NEWZPERCYCLE
+ * @note Requirement: q->z == p->z
+ */
+void makenewzGeneric(pllInstance *tr, partitionList * pr, nodeptr p, nodeptr q, double *z0, int maxiter, double *result, boolean mask)
+{
+ int i;
+ //boolean originalExecute[PLL_NUM_BRANCHES];
+ int numBranches = pr->perGeneBranchLengths?pr->numberOfPartitions:1;
+
+ boolean
+ p_recom = PLL_FALSE, /* if one of was missing, we will need to force recomputation */
+ q_recom = PLL_FALSE;
+
+ /* the first entry of the traversal descriptor stores the node pair that defines
+ the branch */
+
+ tr->td[0].ti[0].pNumber = p->number;
+ tr->td[0].ti[0].qNumber = q->number;
+
+ for(i = 0; i < numBranches; i++)
+ {
+ //originalExecute[i] = pr->partitionData[i]->executeModel;
+ tr->td[0].ti[0].qz[i] = z0[i];
+ if(mask)
+ {
+ if (tr->partitionConverged[i])
+ pr->partitionData[i]->executeModel = PLL_FALSE;
+ else
+ pr->partitionData[i]->executeModel = PLL_TRUE;
+ }
+ }
+ if (tr->useRecom)
+ {
+ int
+ slot = -1;
+ //count = 0;
+
+ /* Ensure p and q get a unpinnable slot in physical memory */
+ if(!isTip(q->number, tr->mxtips))
+ {
+ q_recom = getxVector(tr->rvec, q->number, &slot, tr->mxtips);
+ tr->td[0].ti[0].slot_q = slot;
+ }
+ if(!isTip(p->number, tr->mxtips))
+ {
+ p_recom = getxVector(tr->rvec, p->number, &slot, tr->mxtips);
+ tr->td[0].ti[0].slot_p = slot;
+ }
+ }
+
+
+ /* compute the traversal descriptor of the likelihood vectors that need to be re-computed
+ first in makenewzIterative */
+
+ tr->td[0].count = 1;
+
+ if(p_recom || needsRecomp(tr->useRecom, tr->rvec, p, tr->mxtips))
+ computeTraversal(tr, p, PLL_TRUE, numBranches);
+
+ if(q_recom || needsRecomp(tr->useRecom, tr->rvec, q, tr->mxtips))
+ computeTraversal(tr, q, PLL_TRUE, numBranches);
+
+ /* call the Newton-Raphson procedure */
+
+ topLevelMakenewz(tr, pr, z0, maxiter, result);
+
+ /* Mark node as unpinnable */
+ if(tr->useRecom)
+ {
+ unpinNode(tr->rvec, p->number, tr->mxtips);
+ unpinNode(tr->rvec, q->number, tr->mxtips);
+ }
+
+ /* fix eceuteModel this seems to be a bit redundant with topLevelMakenewz */
+
+ for(i = 0; i < numBranches; i++)
+ pr->partitionData[i]->executeModel = PLL_TRUE;
+}
+
+
+/* below are, once again the optimized functions */
+
+#if (defined(__SSE3) || defined(__AVX))
+
+
+static void sumCAT_BINARY(int tipCase, double *sum, double *x1_start, double *x2_start, double *tipVector,
+ unsigned char *tipX1, unsigned char *tipX2, int n)
+
+{
+ int i;
+
+#if (!defined(__SSE3) && !defined(__AVX))
+ int j;
+#endif
+ double *x1, *x2;
+
+ switch(tipCase)
+ {
+ case PLL_TIP_TIP:
+ for (i = 0; i < n; i++)
+ {
+ x1 = &(tipVector[2 * tipX1[i]]);
+ x2 = &(tipVector[2 * tipX2[i]]);
+
+#if (!defined(__SSE3) && !defined(__AVX))
+ for(j = 0; j < 2; j++)
+ sum[i * 2 + j] = x1[j] * x2[j];
+#else
+ _mm_store_pd(&sum[i * 2], _mm_mul_pd( _mm_load_pd(x1), _mm_load_pd(x2)));
+#endif
+ }
+ break;
+ case PLL_TIP_INNER:
+ for (i = 0; i < n; i++)
+ {
+ x1 = &(tipVector[2 * tipX1[i]]);
+ x2 = &x2_start[2 * i];
+
+#if (!defined(__SSE3) && !defined(__AVX))
+ for(j = 0; j < 2; j++)
+ sum[i * 2 + j] = x1[j] * x2[j];
+#else
+ _mm_store_pd(&sum[i * 2], _mm_mul_pd( _mm_load_pd(x1), _mm_load_pd(x2)));
+#endif
+ }
+ break;
+ case PLL_INNER_INNER:
+ for (i = 0; i < n; i++)
+ {
+ x1 = &x1_start[2 * i];
+ x2 = &x2_start[2 * i];
+#if (!defined(__SSE3) && !defined(__AVX))
+ for(j = 0; j < 2; j++)
+ sum[i * 2 + j] = x1[j] * x2[j];
+#else
+ _mm_store_pd(&sum[i * 2], _mm_mul_pd( _mm_load_pd(x1), _mm_load_pd(x2)));
+#endif
+ }
+ break;
+ default:
+ assert(0);
+ }
+}
+
+
+static void sumCAT_SAVE(int tipCase, double *sum, double *x1_start, double *x2_start, double *tipVector,
+ unsigned char *tipX1, unsigned char *tipX2, int n, double *x1_gapColumn, double *x2_gapColumn, unsigned int *x1_gap, unsigned int *x2_gap)
+{
+ int i;
+ double
+ *x1,
+ *x2,
+ *x1_ptr = x1_start,
+ *x2_ptr = x2_start;
+
+ switch(tipCase)
+ {
+ case PLL_TIP_TIP:
+ for (i = 0; i < n; i++)
+ {
+ x1 = &(tipVector[4 * tipX1[i]]);
+ x2 = &(tipVector[4 * tipX2[i]]);
+
+ _mm_store_pd( &sum[i*4 + 0], _mm_mul_pd( _mm_load_pd( &x1[0] ), _mm_load_pd( &x2[0] )));
+ _mm_store_pd( &sum[i*4 + 2], _mm_mul_pd( _mm_load_pd( &x1[2] ), _mm_load_pd( &x2[2] )));
+ }
+ break;
+ case PLL_TIP_INNER:
+ for (i = 0; i < n; i++)
+ {
+ x1 = &(tipVector[4 * tipX1[i]]);
+ if(isGap(x2_gap, i))
+ x2 = x2_gapColumn;
+ else
+ {
+ x2 = x2_ptr;
+ x2_ptr += 4;
+ }
+
+ _mm_store_pd( &sum[i*4 + 0], _mm_mul_pd( _mm_load_pd( &x1[0] ), _mm_load_pd( &x2[0] )));
+ _mm_store_pd( &sum[i*4 + 2], _mm_mul_pd( _mm_load_pd( &x1[2] ), _mm_load_pd( &x2[2] )));
+ }
+ break;
+ case PLL_INNER_INNER:
+ for (i = 0; i < n; i++)
+ {
+ if(isGap(x1_gap, i))
+ x1 = x1_gapColumn;
+ else
+ {
+ x1 = x1_ptr;
+ x1_ptr += 4;
+ }
+
+ if(isGap(x2_gap, i))
+ x2 = x2_gapColumn;
+ else
+ {
+ x2 = x2_ptr;
+ x2_ptr += 4;
+ }
+
+ _mm_store_pd( &sum[i*4 + 0], _mm_mul_pd( _mm_load_pd( &x1[0] ), _mm_load_pd( &x2[0] )));
+ _mm_store_pd( &sum[i*4 + 2], _mm_mul_pd( _mm_load_pd( &x1[2] ), _mm_load_pd( &x2[2] )));
+
+ }
+ break;
+ default:
+ assert(0);
+ }
+}
+
+static void sumGAMMA_BINARY(int tipCase, double *sumtable, double *x1_start, double *x2_start, double *tipVector,
+ unsigned char *tipX1, unsigned char *tipX2, int n)
+{
+ double *x1, *x2, *sum;
+ int i, j;
+#if (!defined(_USE_PTHREADS) && !defined(_FINE_GRAIN_MPI))
+ int k;
+#endif
+
+ /* C-OPT once again switch over possible configurations at inner node */
+
+ switch(tipCase)
+ {
+ case PLL_TIP_TIP:
+ /* C-OPT main for loop overt alignment length */
+ for (i = 0; i < n; i++)
+ {
+ x1 = &(tipVector[2 * tipX1[i]]);
+ x2 = &(tipVector[2 * tipX2[i]]);
+ sum = &sumtable[i * 8];
+#if (!defined(_USE_PTHREADS) && !defined(_FINE_GRAIN_MPI))
+ for(j = 0; j < 4; j++)
+ for(k = 0; k < 2; k++)
+ sum[j * 2 + k] = x1[k] * x2[k];
+#else
+ for(j = 0; j < 4; j++)
+ _mm_store_pd( &sum[j*2], _mm_mul_pd( _mm_load_pd( &x1[0] ), _mm_load_pd( &x2[0] )));
+#endif
+ }
+ break;
+ case PLL_TIP_INNER:
+ for (i = 0; i < n; i++)
+ {
+ x1 = &(tipVector[2 * tipX1[i]]);
+ x2 = &x2_start[8 * i];
+ sum = &sumtable[8 * i];
+
+#if (!defined(_USE_PTHREADS) && !defined(_FINE_GRAIN_MPI))
+ for(j = 0; j < 4; j++)
+ for(k = 0; k < 2; k++)
+ sum[j * 2 + k] = x1[k] * x2[j * 2 + k];
+#else
+ for(j = 0; j < 4; j++)
+ _mm_store_pd( &sum[j*2], _mm_mul_pd( _mm_load_pd( &x1[0] ), _mm_load_pd( &x2[j * 2] )));
+#endif
+ }
+ break;
+ case PLL_INNER_INNER:
+ for (i = 0; i < n; i++)
+ {
+ x1 = &x1_start[8 * i];
+ x2 = &x2_start[8 * i];
+ sum = &sumtable[8 * i];
+#if (!defined(_USE_PTHREADS) && !defined(_FINE_GRAIN_MPI))
+ for(j = 0; j < 4; j++)
+ for(k = 0; k < 2; k++)
+ sum[j * 2 + k] = x1[j * 2 + k] * x2[j * 2 + k];
+#else
+ for(j = 0; j < 4; j++)
+ _mm_store_pd( &sum[j*2], _mm_mul_pd( _mm_load_pd( &x1[j * 2] ), _mm_load_pd( &x2[j * 2] )));
+#endif
+ }
+ break;
+ default:
+ assert(0);
+ }
+}
+
+
+static void sumGAMMA_GAPPED_SAVE(int tipCase, double *sumtable, double *x1_start, double *x2_start, double *tipVector,
+ unsigned char *tipX1, unsigned char *tipX2, int n,
+ double *x1_gapColumn, double *x2_gapColumn, unsigned int *x1_gap, unsigned int *x2_gap)
+{
+ double
+ *x1,
+ *x2,
+ *sum,
+ *x1_ptr = x1_start,
+ *x2_ptr = x2_start;
+
+ int i, j, k;
+
+ switch(tipCase)
+ {
+ case PLL_TIP_TIP:
+ for (i = 0; i < n; i++)
+ {
+ x1 = &(tipVector[4 * tipX1[i]]);
+ x2 = &(tipVector[4 * tipX2[i]]);
+ sum = &sumtable[i * 16];
+
+ for(j = 0; j < 4; j++)
+ for(k = 0; k < 4; k+=2)
+ _mm_store_pd( &sum[j*4 + k], _mm_mul_pd( _mm_load_pd( &x1[k] ), _mm_load_pd( &x2[k] )));
+ }
+ break;
+ case PLL_TIP_INNER:
+ for (i = 0; i < n; i++)
+ {
+ x1 = &(tipVector[4 * tipX1[i]]);
+
+ if(x2_gap[i / 32] & mask32[i % 32])
+ x2 = x2_gapColumn;
+ else
+ {
+ x2 = x2_ptr;
+ x2_ptr += 16;
+ }
+
+ sum = &sumtable[16 * i];
+
+ for(j = 0; j < 4; j++)
+ for(k = 0; k < 4; k+=2)
+ _mm_store_pd( &sum[j*4 + k], _mm_mul_pd( _mm_load_pd( &x1[k] ), _mm_load_pd( &x2[j * 4 + k] )));
+ }
+ break;
+ case PLL_INNER_INNER:
+ for (i = 0; i < n; i++)
+ {
+ if(x1_gap[i / 32] & mask32[i % 32])
+ x1 = x1_gapColumn;
+ else
+ {
+ x1 = x1_ptr;
+ x1_ptr += 16;
+ }
+
+ if(x2_gap[i / 32] & mask32[i % 32])
+ x2 = x2_gapColumn;
+ else
+ {
+ x2 = x2_ptr;
+ x2_ptr += 16;
+ }
+
+ sum = &sumtable[16 * i];
+
+
+ for(j = 0; j < 4; j++)
+ for(k = 0; k < 4; k+=2)
+ _mm_store_pd( &sum[j*4 + k], _mm_mul_pd( _mm_load_pd( &x1[j * 4 + k] ), _mm_load_pd( &x2[j * 4 + k] )));
+ }
+ break;
+ default:
+ assert(0);
+ }
+}
+
+
+
+
+static void sumGAMMA(int tipCase, double *sumtable, double *x1_start, double *x2_start, double *tipVector,
+ unsigned char *tipX1, unsigned char *tipX2, int n)
+{
+ double *x1, *x2, *sum;
+ int i, j, k;
+
+ /* C-OPT once again switch over possible configurations at inner node */
+
+ switch(tipCase)
+ {
+ case PLL_TIP_TIP:
+ /* C-OPT main for loop overt alignment length */
+ for (i = 0; i < n; i++)
+ {
+ x1 = &(tipVector[4 * tipX1[i]]);
+ x2 = &(tipVector[4 * tipX2[i]]);
+ sum = &sumtable[i * 16];
+
+ for(j = 0; j < 4; j++)
+ for(k = 0; k < 4; k+=2)
+ _mm_store_pd( &sum[j*4 + k], _mm_mul_pd( _mm_load_pd( &x1[k] ), _mm_load_pd( &x2[k] )));
+ }
+ break;
+ case PLL_TIP_INNER:
+ for (i = 0; i < n; i++)
+ {
+ x1 = &(tipVector[4 * tipX1[i]]);
+ x2 = &x2_start[16 * i];
+ sum = &sumtable[16 * i];
+
+ for(j = 0; j < 4; j++)
+ for(k = 0; k < 4; k+=2)
+ _mm_store_pd( &sum[j*4 + k], _mm_mul_pd( _mm_load_pd( &x1[k] ), _mm_load_pd( &x2[j * 4 + k] )));
+ }
+ break;
+ case PLL_INNER_INNER:
+ for (i = 0; i < n; i++)
+ {
+ x1 = &x1_start[16 * i];
+ x2 = &x2_start[16 * i];
+ sum = &sumtable[16 * i];
+
+ for(j = 0; j < 4; j++)
+ for(k = 0; k < 4; k+=2)
+ _mm_store_pd( &sum[j*4 + k], _mm_mul_pd( _mm_load_pd( &x1[j * 4 + k] ), _mm_load_pd( &x2[j * 4 + k] )));
+ }
+ break;
+ default:
+ assert(0);
+ }
+}
+
+
+static void sumCAT(int tipCase, double *sum, double *x1_start, double *x2_start, double *tipVector,
+ unsigned char *tipX1, unsigned char *tipX2, int n)
+{
+ int i;
+ double
+ *x1,
+ *x2;
+
+ switch(tipCase)
+ {
+ case PLL_TIP_TIP:
+ for (i = 0; i < n; i++)
+ {
+ x1 = &(tipVector[4 * tipX1[i]]);
+ x2 = &(tipVector[4 * tipX2[i]]);
+
+ _mm_store_pd( &sum[i*4 + 0], _mm_mul_pd( _mm_load_pd( &x1[0] ), _mm_load_pd( &x2[0] )));
+ _mm_store_pd( &sum[i*4 + 2], _mm_mul_pd( _mm_load_pd( &x1[2] ), _mm_load_pd( &x2[2] )));
+ }
+ break;
+ case PLL_TIP_INNER:
+ for (i = 0; i < n; i++)
+ {
+ x1 = &(tipVector[4 * tipX1[i]]);
+ x2 = &x2_start[4 * i];
+
+ _mm_store_pd( &sum[i*4 + 0], _mm_mul_pd( _mm_load_pd( &x1[0] ), _mm_load_pd( &x2[0] )));
+ _mm_store_pd( &sum[i*4 + 2], _mm_mul_pd( _mm_load_pd( &x1[2] ), _mm_load_pd( &x2[2] )));
+ }
+ break;
+ case PLL_INNER_INNER:
+ for (i = 0; i < n; i++)
+ {
+ x1 = &x1_start[4 * i];
+ x2 = &x2_start[4 * i];
+
+ _mm_store_pd( &sum[i*4 + 0], _mm_mul_pd( _mm_load_pd( &x1[0] ), _mm_load_pd( &x2[0] )));
+ _mm_store_pd( &sum[i*4 + 2], _mm_mul_pd( _mm_load_pd( &x1[2] ), _mm_load_pd( &x2[2] )));
+
+ }
+ break;
+ default:
+ assert(0);
+ }
+}
+static void sumGAMMAPROT_GAPPED_SAVE(int tipCase, double *sumtable, double *x1, double *x2, double *tipVector,
+ unsigned char *tipX1, unsigned char *tipX2, int n,
+ double *x1_gapColumn, double *x2_gapColumn, unsigned int *x1_gap, unsigned int *x2_gap)
+{
+ int i, l, k;
+ double
+ *left,
+ *right,
+ *sum,
+ *x1_ptr = x1,
+ *x2_ptr = x2,
+ *x1v,
+ *x2v;
+
+ switch(tipCase)
+ {
+ case PLL_TIP_TIP:
+ for(i = 0; i < n; i++)
+ {
+ left = &(tipVector[20 * tipX1[i]]);
+ right = &(tipVector[20 * tipX2[i]]);
+
+ for(l = 0; l < 4; l++)
+ {
+ sum = &sumtable[i * 80 + l * 20];
+
+ for(k = 0; k < 20; k+=2)
+ {
+ __m128d sumv = _mm_mul_pd(_mm_load_pd(&left[k]), _mm_load_pd(&right[k]));
+
+ _mm_store_pd(&sum[k], sumv);
+ }
+
+ }
+ }
+ break;
+ case PLL_TIP_INNER:
+ for(i = 0; i < n; i++)
+ {
+ left = &(tipVector[20 * tipX1[i]]);
+
+ if(x2_gap[i / 32] & mask32[i % 32])
+ x2v = x2_gapColumn;
+ else
+ {
+ x2v = x2_ptr;
+ x2_ptr += 80;
+ }
+
+ for(l = 0; l < 4; l++)
+ {
+ right = &(x2v[l * 20]);
+ sum = &sumtable[i * 80 + l * 20];
+
+ for(k = 0; k < 20; k+=2)
+ {
+ __m128d sumv = _mm_mul_pd(_mm_load_pd(&left[k]), _mm_load_pd(&right[k]));
+
+ _mm_store_pd(&sum[k], sumv);
+ }
+ }
+ }
+ break;
+ case PLL_INNER_INNER:
+ for(i = 0; i < n; i++)
+ {
+ if(x1_gap[i / 32] & mask32[i % 32])
+ x1v = x1_gapColumn;
+ else
+ {
+ x1v = x1_ptr;
+ x1_ptr += 80;
+ }
+
+ if(x2_gap[i / 32] & mask32[i % 32])
+ x2v = x2_gapColumn;
+ else
+ {
+ x2v = x2_ptr;
+ x2_ptr += 80;
+ }
+
+ for(l = 0; l < 4; l++)
+ {
+ left = &(x1v[l * 20]);
+ right = &(x2v[l * 20]);
+ sum = &(sumtable[i * 80 + l * 20]);
+
+ for(k = 0; k < 20; k+=2)
+ {
+ __m128d sumv = _mm_mul_pd(_mm_load_pd(&left[k]), _mm_load_pd(&right[k]));
+
+ _mm_store_pd(&sum[k], sumv);
+ }
+ }
+ }
+ break;
+ default:
+ assert(0);
+ }
+}
+
+
+static void sumGAMMAPROT_LG4(int tipCase, double *sumtable, double *x1, double *x2, double *tipVector[4],
+ unsigned char *tipX1, unsigned char *tipX2, int n)
+{
+ int i, l, k;
+ double *left, *right, *sum;
+
+ switch(tipCase)
+ {
+ case PLL_TIP_TIP:
+ for(i = 0; i < n; i++)
+ {
+ for(l = 0; l < 4; l++)
+ {
+ left = &(tipVector[l][20 * tipX1[i]]);
+ right = &(tipVector[l][20 * tipX2[i]]);
+
+ sum = &sumtable[i * 80 + l * 20];
+#ifdef __SSE3
+ for(k = 0; k < 20; k+=2)
+ {
+ __m128d sumv = _mm_mul_pd(_mm_load_pd(&left[k]), _mm_load_pd(&right[k]));
+
+ _mm_store_pd(&sum[k], sumv);
+ }
+#else
+ for(k = 0; k < 20; k++)
+ sum[k] = left[k] * right[k];
+#endif
+ }
+ }
+ break;
+ case PLL_TIP_INNER:
+ for(i = 0; i < n; i++)
+ {
+
+
+ for(l = 0; l < 4; l++)
+ {
+ left = &(tipVector[l][20 * tipX1[i]]);
+ right = &(x2[80 * i + l * 20]);
+ sum = &sumtable[i * 80 + l * 20];
+#ifdef __SSE3
+ for(k = 0; k < 20; k+=2)
+ {
+ __m128d sumv = _mm_mul_pd(_mm_load_pd(&left[k]), _mm_load_pd(&right[k]));
+
+ _mm_store_pd(&sum[k], sumv);
+ }
+#else
+ for(k = 0; k < 20; k++)
+ sum[k] = left[k] * right[k];
+#endif
+ }
+ }
+ break;
+ case PLL_INNER_INNER:
+ for(i = 0; i < n; i++)
+ {
+ for(l = 0; l < 4; l++)
+ {
+ left = &(x1[80 * i + l * 20]);
+ right = &(x2[80 * i + l * 20]);
+ sum = &(sumtable[i * 80 + l * 20]);
+
+#ifdef __SSE3
+ for(k = 0; k < 20; k+=2)
+ {
+ __m128d sumv = _mm_mul_pd(_mm_load_pd(&left[k]), _mm_load_pd(&right[k]));
+
+ _mm_store_pd(&sum[k], sumv);
+ }
+#else
+ for(k = 0; k < 20; k++)
+ sum[k] = left[k] * right[k];
+#endif
+ }
+ }
+ break;
+ default:
+ assert(0);
+ }
+}
+
+
+static void sumGAMMAPROT(int tipCase, double *sumtable, double *x1, double *x2, double *tipVector,
+ unsigned char *tipX1, unsigned char *tipX2, int n)
+{
+ int i, l, k;
+ double *left, *right, *sum;
+
+ switch(tipCase)
+ {
+ case PLL_TIP_TIP:
+ for(i = 0; i < n; i++)
+ {
+ left = &(tipVector[20 * tipX1[i]]);
+ right = &(tipVector[20 * tipX2[i]]);
+
+ for(l = 0; l < 4; l++)
+ {
+ sum = &sumtable[i * 80 + l * 20];
+
+ for(k = 0; k < 20; k+=2)
+ {
+ __m128d sumv = _mm_mul_pd(_mm_load_pd(&left[k]), _mm_load_pd(&right[k]));
+
+ _mm_store_pd(&sum[k], sumv);
+ }
+
+ }
+ }
+ break;
+ case PLL_TIP_INNER:
+ for(i = 0; i < n; i++)
+ {
+ left = &(tipVector[20 * tipX1[i]]);
+
+ for(l = 0; l < 4; l++)
+ {
+ right = &(x2[80 * i + l * 20]);
+ sum = &sumtable[i * 80 + l * 20];
+
+ for(k = 0; k < 20; k+=2)
+ {
+ __m128d sumv = _mm_mul_pd(_mm_load_pd(&left[k]), _mm_load_pd(&right[k]));
+
+ _mm_store_pd(&sum[k], sumv);
+ }
+
+ }
+ }
+ break;
+ case PLL_INNER_INNER:
+ for(i = 0; i < n; i++)
+ {
+ for(l = 0; l < 4; l++)
+ {
+ left = &(x1[80 * i + l * 20]);
+ right = &(x2[80 * i + l * 20]);
+ sum = &(sumtable[i * 80 + l * 20]);
+
+
+ for(k = 0; k < 20; k+=2)
+ {
+ __m128d sumv = _mm_mul_pd(_mm_load_pd(&left[k]), _mm_load_pd(&right[k]));
+
+ _mm_store_pd(&sum[k], sumv);
+ }
+ }
+ }
+ break;
+ default:
+ assert(0);
+ }
+}
+
+
+static void sumGTRCATPROT(int tipCase, double *sumtable, double *x1, double *x2, double *tipVector,
+ unsigned char *tipX1, unsigned char *tipX2, int n)
+{
+ int i, l;
+ double *sum, *left, *right;
+
+ switch(tipCase)
+ {
+ case PLL_TIP_TIP:
+ for (i = 0; i < n; i++)
+ {
+ left = &(tipVector[20 * tipX1[i]]);
+ right = &(tipVector[20 * tipX2[i]]);
+ sum = &sumtable[20 * i];
+
+ for(l = 0; l < 20; l+=2)
+ {
+ __m128d sumv = _mm_mul_pd(_mm_load_pd(&left[l]), _mm_load_pd(&right[l]));
+
+ _mm_store_pd(&sum[l], sumv);
+ }
+
+ }
+ break;
+ case PLL_TIP_INNER:
+ for (i = 0; i < n; i++)
+ {
+ left = &(tipVector[20 * tipX1[i]]);
+ right = &x2[20 * i];
+ sum = &sumtable[20 * i];
+
+ for(l = 0; l < 20; l+=2)
+ {
+ __m128d sumv = _mm_mul_pd(_mm_load_pd(&left[l]), _mm_load_pd(&right[l]));
+
+ _mm_store_pd(&sum[l], sumv);
+ }
+
+ }
+ break;
+ case PLL_INNER_INNER:
+ for (i = 0; i < n; i++)
+ {
+ left = &x1[20 * i];
+ right = &x2[20 * i];
+ sum = &sumtable[20 * i];
+
+ for(l = 0; l < 20; l+=2)
+ {
+ __m128d sumv = _mm_mul_pd(_mm_load_pd(&left[l]), _mm_load_pd(&right[l]));
+
+ _mm_store_pd(&sum[l], sumv);
+ }
+
+ }
+ break;
+ default:
+ assert(0);
+ }
+}
+
+
+static void sumGTRCATPROT_SAVE(int tipCase, double *sumtable, double *x1, double *x2, double *tipVector,
+ unsigned char *tipX1, unsigned char *tipX2, int n,
+ double *x1_gapColumn, double *x2_gapColumn, unsigned int *x1_gap, unsigned int *x2_gap)
+{
+ int
+ i,
+ l;
+
+ double
+ *sum,
+ *left,
+ *right,
+ *left_ptr = x1,
+ *right_ptr = x2;
+
+ switch(tipCase)
+ {
+ case PLL_TIP_TIP:
+ for (i = 0; i < n; i++)
+ {
+ left = &(tipVector[20 * tipX1[i]]);
+ right = &(tipVector[20 * tipX2[i]]);
+ sum = &sumtable[20 * i];
+
+ for(l = 0; l < 20; l+=2)
+ {
+ __m128d sumv = _mm_mul_pd(_mm_load_pd(&left[l]), _mm_load_pd(&right[l]));
+
+ _mm_store_pd(&sum[l], sumv);
+ }
+
+ }
+ break;
+ case PLL_TIP_INNER:
+ for (i = 0; i < n; i++)
+ {
+ left = &(tipVector[20 * tipX1[i]]);
+
+ if(isGap(x2_gap, i))
+ right = x2_gapColumn;
+ else
+ {
+ right = right_ptr;
+ right_ptr += 20;
+ }
+
+ sum = &sumtable[20 * i];
+
+ for(l = 0; l < 20; l+=2)
+ {
+ __m128d sumv = _mm_mul_pd(_mm_load_pd(&left[l]), _mm_load_pd(&right[l]));
+
+ _mm_store_pd(&sum[l], sumv);
+ }
+
+ }
+ break;
+ case PLL_INNER_INNER:
+ for (i = 0; i < n; i++)
+ {
+ if(isGap(x1_gap, i))
+ left = x1_gapColumn;
+ else
+ {
+ left = left_ptr;
+ left_ptr += 20;
+ }
+
+ if(isGap(x2_gap, i))
+ right = x2_gapColumn;
+ else
+ {
+ right = right_ptr;
+ right_ptr += 20;
+ }
+
+ sum = &sumtable[20 * i];
+
+ for(l = 0; l < 20; l+=2)
+ {
+ __m128d sumv = _mm_mul_pd(_mm_load_pd(&left[l]), _mm_load_pd(&right[l]));
+
+ _mm_store_pd(&sum[l], sumv);
+ }
+ }
+ break;
+ default:
+ assert(0);
+ }
+}
+
+static void coreGTRGAMMA(const int upper, double *sumtable,
+ volatile double *ext_dlnLdlz, volatile double *ext_d2lnLdlz2, double *EIGN, double *gammaRates, double lz, int *wrptr)
+{
+ double
+ dlnLdlz = 0.0,
+ d2lnLdlz2 = 0.0,
+ ki,
+ kisqr,
+ inv_Li,
+ dlnLidlz,
+ d2lnLidlz2,
+ *sum,
+ diagptable0[16] __attribute__ ((aligned (PLL_BYTE_ALIGNMENT))),
+ diagptable1[16] __attribute__ ((aligned (PLL_BYTE_ALIGNMENT))),
+ diagptable2[16] __attribute__ ((aligned (PLL_BYTE_ALIGNMENT)));
+
+ int
+ i,
+ j,
+ l;
+
+ for(i = 0; i < 4; i++)
+ {
+ ki = gammaRates[i];
+ kisqr = ki * ki;
+
+ diagptable0[i * 4] = 1.0;
+ diagptable1[i * 4] = 0.0;
+ diagptable2[i * 4] = 0.0;
+
+ for(l = 1; l < 4; l++)
+ {
+ diagptable0[i * 4 + l] = exp(EIGN[l] * ki * lz);
+ diagptable1[i * 4 + l] = EIGN[l] * ki;
+ diagptable2[i * 4 + l] = EIGN[l] * EIGN[l] * kisqr;
+ }
+ }
+
+ for (i = 0; i < upper; i++)
+ {
+ __m128d a0 = _mm_setzero_pd();
+ __m128d a1 = _mm_setzero_pd();
+ __m128d a2 = _mm_setzero_pd();
+
+ sum = &sumtable[i * 16];
+
+ for(j = 0; j < 4; j++)
+ {
+ double
+ *d0 = &diagptable0[j * 4],
+ *d1 = &diagptable1[j * 4],
+ *d2 = &diagptable2[j * 4];
+
+ for(l = 0; l < 4; l+=2)
+ {
+ __m128d tmpv = _mm_mul_pd(_mm_load_pd(&d0[l]), _mm_load_pd(&sum[j * 4 + l]));
+ a0 = _mm_add_pd(a0, tmpv);
+ a1 = _mm_add_pd(a1, _mm_mul_pd(tmpv, _mm_load_pd(&d1[l])));
+ a2 = _mm_add_pd(a2, _mm_mul_pd(tmpv, _mm_load_pd(&d2[l])));
+ }
+ }
+
+ a0 = _mm_hadd_pd(a0, a0);
+ a1 = _mm_hadd_pd(a1, a1);
+ a2 = _mm_hadd_pd(a2, a2);
+
+ _mm_storel_pd(&inv_Li, a0);
+ _mm_storel_pd(&dlnLidlz, a1);
+ _mm_storel_pd(&d2lnLidlz2, a2);
+
+ inv_Li = 1.0 / fabs (inv_Li);
+
+ dlnLidlz *= inv_Li;
+ d2lnLidlz2 *= inv_Li;
+
+ dlnLdlz += wrptr[i] * dlnLidlz;
+ d2lnLdlz2 += wrptr[i] * (d2lnLidlz2 - dlnLidlz * dlnLidlz);
+ }
+
+
+ *ext_dlnLdlz = dlnLdlz;
+ *ext_d2lnLdlz2 = d2lnLdlz2;
+}
+
+static void coreGTRCAT_BINARY(int upper, int numberOfCategories, double *sum,
+ volatile double *d1, volatile double *d2,
+ double *rptr, double *EIGN, int *cptr, double lz, int *wgt)
+{
+ int i;
+ double
+ *d, *d_start,
+ tmp_0, inv_Li, dlnLidlz, d2lnLidlz2,
+ dlnLdlz = 0.0,
+ d2lnLdlz2 = 0.0;
+ double e[2];
+ double dd1;
+
+ e[0] = EIGN[0];
+ e[1] = EIGN[0] * EIGN[0];
+
+
+ d = d_start = (double *)rax_malloc(numberOfCategories * sizeof(double));
+
+ dd1 = e[0] * lz;
+
+ for(i = 0; i < numberOfCategories; i++)
+ d[i] = exp(dd1 * rptr[i]);
+
+ for (i = 0; i < upper; i++)
+ {
+ double
+ r = rptr[cptr[i]],
+ wr1 = r * wgt[i],
+ wr2 = r * r * wgt[i];
+
+ d = &d_start[cptr[i]];
+
+ inv_Li = sum[2 * i];
+ inv_Li += (tmp_0 = d[0] * sum[2 * i + 1]);
+
+ inv_Li = 1.0/fabs(inv_Li);
+
+ dlnLidlz = tmp_0 * e[0];
+ d2lnLidlz2 = tmp_0 * e[1];
+
+ dlnLidlz *= inv_Li;
+ d2lnLidlz2 *= inv_Li;
+
+ dlnLdlz += wr1 * dlnLidlz;
+ d2lnLdlz2 += wr2 * (d2lnLidlz2 - dlnLidlz * dlnLidlz);
+ }
+
+ *d1 = dlnLdlz;
+ *d2 = d2lnLdlz2;
+
+ rax_free(d_start);
+}
+
+
+static void coreGTRCAT(int upper, int numberOfCategories, double *sum,
+ volatile double *d1, volatile double *d2, int *wgt,
+ double *rptr, double *EIGN, int *cptr, double lz)
+{
+ int i;
+ double
+ *d, *d_start = NULL,
+ inv_Li, dlnLidlz, d2lnLidlz2,
+ dlnLdlz = 0.0,
+ d2lnLdlz2 = 0.0;
+ double e1[4] __attribute__ ((aligned (PLL_BYTE_ALIGNMENT)));
+ double e2[4] __attribute__ ((aligned (PLL_BYTE_ALIGNMENT)));
+ double dd1, dd2, dd3;
+
+ __m128d
+ e1v[2],
+ e2v[2];
+
+ e1[0] = 0.0;
+ e2[0] = 0.0;
+ e1[1] = EIGN[1];
+ e2[1] = EIGN[1] * EIGN[1];
+ e1[2] = EIGN[2];
+ e2[2] = EIGN[2] * EIGN[2];
+ e1[3] = EIGN[3];
+ e2[3] = EIGN[3] * EIGN[3];
+
+ e1v[0]= _mm_load_pd(&e1[0]);
+ e1v[1]= _mm_load_pd(&e1[2]);
+
+ e2v[0]= _mm_load_pd(&e2[0]);
+ e2v[1]= _mm_load_pd(&e2[2]);
+
+ rax_posix_memalign ((void **) &d_start, PLL_BYTE_ALIGNMENT, numberOfCategories * 4 * sizeof(double));
+ d = d_start;
+
+ dd1 = EIGN[1] * lz;
+ dd2 = EIGN[2] * lz;
+ dd3 = EIGN[3] * lz;
+
+ for(i = 0; i < numberOfCategories; i++)
+ {
+ d[i * 4 + 0] = 1.0;
+ d[i * 4 + 1] = exp(dd1 * rptr[i]);
+ d[i * 4 + 2] = exp(dd2 * rptr[i]);
+ d[i * 4 + 3] = exp(dd3 * rptr[i]);
+ }
+
+ for (i = 0; i < upper; i++)
+ {
+ double *s = &sum[4 * i];
+ d = &d_start[4 * cptr[i]];
+
+ __m128d tmp_0v =_mm_mul_pd(_mm_load_pd(&d[0]),_mm_load_pd(&s[0]));
+ __m128d tmp_1v =_mm_mul_pd(_mm_load_pd(&d[2]),_mm_load_pd(&s[2]));
+
+ __m128d inv_Liv = _mm_add_pd(tmp_0v, tmp_1v);
+
+ __m128d dlnLidlzv = _mm_add_pd(_mm_mul_pd(tmp_0v, e1v[0]), _mm_mul_pd(tmp_1v, e1v[1]));
+ __m128d d2lnLidlz2v = _mm_add_pd(_mm_mul_pd(tmp_0v, e2v[0]), _mm_mul_pd(tmp_1v, e2v[1]));
+
+
+ inv_Liv = _mm_hadd_pd(inv_Liv, inv_Liv);
+ dlnLidlzv = _mm_hadd_pd(dlnLidlzv, dlnLidlzv);
+ d2lnLidlz2v = _mm_hadd_pd(d2lnLidlz2v, d2lnLidlz2v);
+
+ _mm_storel_pd(&inv_Li, inv_Liv);
+ _mm_storel_pd(&dlnLidlz, dlnLidlzv);
+ _mm_storel_pd(&d2lnLidlz2, d2lnLidlz2v);
+
+ inv_Li = 1.0 / fabs (inv_Li);
+
+ dlnLidlz *= inv_Li;
+ d2lnLidlz2 *= inv_Li;
+
+ dlnLdlz += wgt[i] * rptr[cptr[i]] * dlnLidlz;
+ d2lnLdlz2 += wgt[i] * rptr[cptr[i]] * rptr[cptr[i]] * (d2lnLidlz2 - dlnLidlz * dlnLidlz);
+ }
+
+ *d1 = dlnLdlz;
+ *d2 = d2lnLdlz2;
+
+ rax_free(d_start);
+}
+
+#if (!defined(__SSE3) && !defined(__AVX))
+static void coreGTRGAMMA_BINARY(const int upper, double *sumtable,
+ volatile double *d1, volatile double *d2, double *EIGN, double *gammaRates, double lz, int *wrptr)
+{
+ int i, j;
+ double
+ *diagptable, *diagptable_start, *sum,
+ tmp_1, inv_Li, dlnLidlz, d2lnLidlz2, ki, kisqr,
+ dlnLdlz = 0.0,
+ d2lnLdlz2 = 0.0;
+
+ diagptable = diagptable_start = (double *)rax_malloc(sizeof(double) * 12);
+
+ for(i = 0; i < 4; i++)
+ {
+ ki = gammaRates[i];
+ kisqr = ki * ki;
+
+ diagptable[i * 3] = exp (EIGN[1] * ki * lz);
+ diagptable[i * 3 + 1] = EIGN[1] * ki;
+ diagptable[i * 3 + 2] = EIGN[1] * EIGN[1] * kisqr;
+ }
+
+ for (i = 0; i < upper; i++)
+ {
+ diagptable = diagptable_start;
+ sum = &(sumtable[i * 8]);
+
+ inv_Li = 0.0;
+ dlnLidlz = 0.0;
+ d2lnLidlz2 = 0.0;
+
+ for(j = 0; j < 4; j++)
+ {
+ inv_Li += sum[2 * j];
+
+ tmp_1 = diagptable[3 * j] * sum[2 * j + 1];
+ inv_Li += tmp_1;
+ dlnLidlz += tmp_1 * diagptable[3 * j + 1];
+ d2lnLidlz2 += tmp_1 * diagptable[3 * j + 2];
+ }
+
+ inv_Li = 1.0 / fabs(inv_Li);
+
+ dlnLidlz *= inv_Li;
+ d2lnLidlz2 *= inv_Li;
+
+
+ dlnLdlz += wrptr[i] * dlnLidlz;
+ d2lnLdlz2 += wrptr[i] * (d2lnLidlz2 - dlnLidlz * dlnLidlz);
+ }
+
+ *d1 = dlnLdlz;
+ *d2 = d2lnLdlz2;
+
+ rax_free(diagptable_start);
+}
+#else
+static void coreGTRGAMMA_BINARY(const int upper, double *sumtable,
+ volatile double *d1, volatile double *d2, double *EIGN, double *gammaRates, double lz, int *wrptr)
+{
+ double
+ dlnLdlz = 0.0,
+ d2lnLdlz2 = 0.0,
+ ki,
+ kisqr,
+ inv_Li,
+ dlnLidlz,
+ d2lnLidlz2,
+ *sum,
+ diagptable0[8] __attribute__ ((aligned (PLL_BYTE_ALIGNMENT))),
+ diagptable1[8] __attribute__ ((aligned (PLL_BYTE_ALIGNMENT))),
+ diagptable2[8] __attribute__ ((aligned (PLL_BYTE_ALIGNMENT)));
+
+ int
+ i,
+ j;
+
+ for(i = 0; i < 4; i++)
+ {
+ ki = gammaRates[i];
+ kisqr = ki * ki;
+
+ diagptable0[i * 2] = 1.0;
+ diagptable1[i * 2] = 0.0;
+ diagptable2[i * 2] = 0.0;
+
+ diagptable0[i * 2 + 1] = exp(EIGN[0] * ki * lz);
+ diagptable1[i * 2 + 1] = EIGN[0] * ki;
+ diagptable2[i * 2 + 1] = EIGN[0] * EIGN[0] * kisqr;
+ }
+
+ for (i = 0; i < upper; i++)
+ {
+ __m128d a0 = _mm_setzero_pd();
+ __m128d a1 = _mm_setzero_pd();
+ __m128d a2 = _mm_setzero_pd();
+
+ sum = &sumtable[i * 8];
+
+ for(j = 0; j < 4; j++)
+ {
+ double
+ *d0 = &diagptable0[j * 2],
+ *d1 = &diagptable1[j * 2],
+ *d2 = &diagptable2[j * 2];
+
+ __m128d tmpv = _mm_mul_pd(_mm_load_pd(d0), _mm_load_pd(&sum[j * 2]));
+ a0 = _mm_add_pd(a0, tmpv);
+ a1 = _mm_add_pd(a1, _mm_mul_pd(tmpv, _mm_load_pd(d1)));
+ a2 = _mm_add_pd(a2, _mm_mul_pd(tmpv, _mm_load_pd(d2)));
+
+ }
+
+ a0 = _mm_hadd_pd(a0, a0);
+ a1 = _mm_hadd_pd(a1, a1);
+ a2 = _mm_hadd_pd(a2, a2);
+
+ _mm_storel_pd(&inv_Li, a0);
+ _mm_storel_pd(&dlnLidlz, a1);
+ _mm_storel_pd(&d2lnLidlz2, a2);
+
+ inv_Li = 1.0 / fabs(inv_Li);
+
+ dlnLidlz *= inv_Li;
+ d2lnLidlz2 *= inv_Li;
+
+ dlnLdlz += wrptr[i] * dlnLidlz;
+ d2lnLdlz2 += wrptr[i] * (d2lnLidlz2 - dlnLidlz * dlnLidlz);
+ }
+
+
+ *d1 = dlnLdlz;
+ *d2 = d2lnLdlz2;
+}
+
+
+#endif
+
+static void coreGTRGAMMAPROT_LG4(double *gammaRates, double *EIGN[4], double *sumtable, int upper, int *wrptr,
+ volatile double *ext_dlnLdlz, volatile double *ext_d2lnLdlz2, double lz,
+ double * lg4_weights)
+{
+ double *sum,
+ diagptable0[80] __attribute__ ((aligned (PLL_BYTE_ALIGNMENT))),
+ diagptable1[80] __attribute__ ((aligned (PLL_BYTE_ALIGNMENT))),
+ diagptable2[80] __attribute__ ((aligned (PLL_BYTE_ALIGNMENT)));
+ int i, j, l;
+ double dlnLdlz = 0;
+ double d2lnLdlz2 = 0;
+ double ki, kisqr;
+
+ for(i = 0; i < 4; i++)
+ {
+ ki = gammaRates[i];
+ kisqr = ki * ki;
+
+ diagptable0[i * 20] = 1.0;
+ diagptable1[i * 20] = 0.0;
+ diagptable2[i * 20] = 0.0;
+
+ for(l = 1; l < 20; l++)
+ {
+ diagptable0[i * 20 + l] = exp(EIGN[i][l] * ki * lz);
+ diagptable1[i * 20 + l] = EIGN[i][l] * ki;
+ diagptable2[i * 20 + l] = EIGN[i][l] * EIGN[i][l] * kisqr;
+ }
+ }
+
+ for (i = 0; i < upper; i++)
+ {
+
+ double
+ inv_Li = 0.0,
+ dlnLidlz = 0.0,
+ d2lnLidlz2 = 0.0;
+
+ sum = &sumtable[i * 80];
+
+ for(j = 0; j < 4; j++)
+ {
+ double
+ l0,
+ l1,
+ l2,
+ *d0 = &diagptable0[j * 20],
+ *d1 = &diagptable1[j * 20],
+ *d2 = &diagptable2[j * 20];
+
+ __m128d a0 = _mm_setzero_pd();
+ __m128d a1 = _mm_setzero_pd();
+ __m128d a2 = _mm_setzero_pd();
+
+ for(l = 0; l < 20; l+=2)
+ {
+ __m128d tmpv = _mm_mul_pd(_mm_load_pd(&d0[l]), _mm_load_pd(&sum[j * 20 +l]));
+ a0 = _mm_add_pd(a0, tmpv);
+ a1 = _mm_add_pd(a1, _mm_mul_pd(tmpv, _mm_load_pd(&d1[l])));
+ a2 = _mm_add_pd(a2, _mm_mul_pd(tmpv, _mm_load_pd(&d2[l])));
+ }
+
+ a0 = _mm_hadd_pd(a0, a0);
+ a1 = _mm_hadd_pd(a1, a1);
+ a2 = _mm_hadd_pd(a2, a2);
+
+ _mm_storel_pd(&l0, a0);
+ _mm_storel_pd(&l1, a1);
+ _mm_storel_pd(&l2, a2);
+
+ inv_Li += lg4_weights[j] * l0;
+ dlnLidlz += lg4_weights[j] * l1;
+ d2lnLidlz2 += lg4_weights[j] * l2;
+ }
+
+ inv_Li = 1.0 / fabs (inv_Li);
+
+ dlnLidlz *= inv_Li;
+ d2lnLidlz2 *= inv_Li;
+
+ dlnLdlz += wrptr[i] * dlnLidlz;
+ d2lnLdlz2 += wrptr[i] * (d2lnLidlz2 - dlnLidlz * dlnLidlz);
+ }
+
+ *ext_dlnLdlz = dlnLdlz;
+ *ext_d2lnLdlz2 = d2lnLdlz2;
+}
+
+
+
+static void coreGTRGAMMAPROT(double *gammaRates, double *EIGN, double *sumtable, int upper, int *wrptr,
+ volatile double *ext_dlnLdlz, volatile double *ext_d2lnLdlz2, double lz)
+{
+ double *sum,
+ diagptable0[80] __attribute__ ((aligned (PLL_BYTE_ALIGNMENT))),
+ diagptable1[80] __attribute__ ((aligned (PLL_BYTE_ALIGNMENT))),
+ diagptable2[80] __attribute__ ((aligned (PLL_BYTE_ALIGNMENT)));
+ int i, j, l;
+ double dlnLdlz = 0;
+ double d2lnLdlz2 = 0;
+ double ki, kisqr;
+ double inv_Li, dlnLidlz, d2lnLidlz2;
+
+ for(i = 0; i < 4; i++)
+ {
+ ki = gammaRates[i];
+ kisqr = ki * ki;
+
+ diagptable0[i * 20] = 1.0;
+ diagptable1[i * 20] = 0.0;
+ diagptable2[i * 20] = 0.0;
+
+ for(l = 1; l < 20; l++)
+ {
+ diagptable0[i * 20 + l] = exp(EIGN[l] * ki * lz);
+ diagptable1[i * 20 + l] = EIGN[l] * ki;
+ diagptable2[i * 20 + l] = EIGN[l] * EIGN[l] * kisqr;
+ }
+ }
+
+ for (i = 0; i < upper; i++)
+ {
+ __m128d a0 = _mm_setzero_pd();
+ __m128d a1 = _mm_setzero_pd();
+ __m128d a2 = _mm_setzero_pd();
+
+ sum = &sumtable[i * 80];
+
+ for(j = 0; j < 4; j++)
+ {
+ double
+ *d0 = &diagptable0[j * 20],
+ *d1 = &diagptable1[j * 20],
+ *d2 = &diagptable2[j * 20];
+
+ for(l = 0; l < 20; l+=2)
+ {
+ __m128d tmpv = _mm_mul_pd(_mm_load_pd(&d0[l]), _mm_load_pd(&sum[j * 20 +l]));
+ a0 = _mm_add_pd(a0, tmpv);
+ a1 = _mm_add_pd(a1, _mm_mul_pd(tmpv, _mm_load_pd(&d1[l])));
+ a2 = _mm_add_pd(a2, _mm_mul_pd(tmpv, _mm_load_pd(&d2[l])));
+ }
+ }
+
+ a0 = _mm_hadd_pd(a0, a0);
+ a1 = _mm_hadd_pd(a1, a1);
+ a2 = _mm_hadd_pd(a2, a2);
+
+ _mm_storel_pd(&inv_Li, a0);
+ _mm_storel_pd(&dlnLidlz, a1);
+ _mm_storel_pd(&d2lnLidlz2, a2);
+
+ inv_Li = 1.0 / fabs (inv_Li);
+
+ dlnLidlz *= inv_Li;
+ d2lnLidlz2 *= inv_Li;
+
+ dlnLdlz += wrptr[i] * dlnLidlz;
+ d2lnLdlz2 += wrptr[i] * (d2lnLidlz2 - dlnLidlz * dlnLidlz);
+ }
+
+ *ext_dlnLdlz = dlnLdlz;
+ *ext_d2lnLdlz2 = d2lnLdlz2;
+}
+
+
+
+static void coreGTRCATPROT(double *EIGN, double lz, int numberOfCategories, double *rptr, int *cptr, int upper,
+ int *wgt, volatile double *ext_dlnLdlz, volatile double *ext_d2lnLdlz2, double *sumtable)
+{
+ int i, l;
+ double *d1, *d_start = NULL, *sum;
+ double
+ e[20] __attribute__ ((aligned (PLL_BYTE_ALIGNMENT))),
+ s[20] __attribute__ ((aligned (PLL_BYTE_ALIGNMENT))),
+ dd[20] __attribute__ ((aligned (PLL_BYTE_ALIGNMENT)));
+ double inv_Li, dlnLidlz, d2lnLidlz2;
+ double dlnLdlz = 0.0;
+ double d2lnLdlz2 = 0.0;
+
+ rax_posix_memalign ((void **)&d_start, PLL_BYTE_ALIGNMENT, numberOfCategories * 20 * sizeof(double));
+ d1 = d_start;
+
+ e[0] = 0.0;
+ s[0] = 0.0;
+
+ for(l = 1; l < 20; l++)
+ {
+ e[l] = EIGN[l] * EIGN[l];
+ s[l] = EIGN[l];
+ dd[l] = s[l] * lz;
+ }
+
+ for(i = 0; i < numberOfCategories; i++)
+ {
+ d1[20 * i] = 1.0;
+ for(l = 1; l < 20; l++)
+ d1[20 * i + l] = exp(dd[l] * rptr[i]);
+ }
+
+ for (i = 0; i < upper; i++)
+ {
+ __m128d a0 = _mm_setzero_pd();
+ __m128d a1 = _mm_setzero_pd();
+ __m128d a2 = _mm_setzero_pd();
+
+ d1 = &d_start[20 * cptr[i]];
+ sum = &sumtable[20 * i];
+
+ for(l = 0; l < 20; l+=2)
+ {
+ __m128d tmpv = _mm_mul_pd(_mm_load_pd(&d1[l]), _mm_load_pd(&sum[l]));
+
+ a0 = _mm_add_pd(a0, tmpv);
+ __m128d sv = _mm_load_pd(&s[l]);
+
+ a1 = _mm_add_pd(a1, _mm_mul_pd(tmpv, sv));
+ __m128d ev = _mm_load_pd(&e[l]);
+
+ a2 = _mm_add_pd(a2, _mm_mul_pd(tmpv, ev));
+ }
+
+ a0 = _mm_hadd_pd(a0, a0);
+ a1 = _mm_hadd_pd(a1, a1);
+ a2 = _mm_hadd_pd(a2, a2);
+
+ _mm_storel_pd(&inv_Li, a0);
+ _mm_storel_pd(&dlnLidlz, a1);
+ _mm_storel_pd(&d2lnLidlz2, a2);
+
+ inv_Li = 1.0 / fabs (inv_Li);
+
+ dlnLidlz *= inv_Li;
+ d2lnLidlz2 *= inv_Li;
+
+ dlnLdlz += wgt[i] * rptr[cptr[i]] * dlnLidlz;
+ d2lnLdlz2 += wgt[i] * rptr[cptr[i]] * rptr[cptr[i]] * (d2lnLidlz2 - dlnLidlz * dlnLidlz);
+ }
+
+ *ext_dlnLdlz = dlnLdlz;
+ *ext_d2lnLdlz2 = d2lnLdlz2;
+
+ rax_free(d_start);
+}
+
+
+
+
+#endif
+
+
+
diff --git a/src/mem_alloc.h b/src/mem_alloc.h
new file mode 100644
index 0000000..a70ab3c
--- /dev/null
+++ b/src/mem_alloc.h
@@ -0,0 +1,17 @@
+#ifndef __mem_alloc_h
+#define __mem_alloc_h
+#include <stddef.h>
+#include <stdlib.h>
+#ifdef __linux__
+#include <malloc.h>
+#endif
+#include "pll.h"
+
+#define rax_memalign memalign
+#define rax_malloc malloc
+#define rax_realloc realloc
+#define rax_free free
+#define rax_posix_memalign posix_memalign
+#define rax_calloc calloc
+
+#endif
diff --git a/src/mic_native.h b/src/mic_native.h
new file mode 100644
index 0000000..e4c018c
--- /dev/null
+++ b/src/mic_native.h
@@ -0,0 +1,57 @@
+#ifndef MIC_NATIVE_H_
+#define MIC_NATIVE_H_
+
+void newviewGTRGAMMA_MIC(int tipCase,
+ double *x1, double *x2, double *x3, double *extEV, double *tipVector,
+ int *ex3, unsigned char *tipX1, unsigned char *tipX2,
+ int n, double *left, double *right, int *wgt, int *scalerIncrement, const boolean fastScaling);
+
+double evaluateGTRGAMMA_MIC(int *ex1, int *ex2, int *wptr,
+ double *x1_start, double *x2_start,
+ double *tipVector,
+ unsigned char *tipX1, const int n, double *diagptable, const boolean fastScaling);
+
+void sumGTRGAMMA_MIC(int tipCase, double *sumtable, double *x1_start, double *x2_start, double *tipVector,
+ unsigned char *tipX1, unsigned char *tipX2, int n);
+
+void coreGTRGAMMA_MIC(const int upper, double *sumtable,
+ volatile double *ext_dlnLdlz, volatile double *ext_d2lnLdlz2, double *EIGN, double *gammaRates, double lz, int *wrptr);
+
+// protein data
+void newviewGTRGAMMAPROT_MIC(int tipCase,
+ double *x1, double *x2, double *x3, double *extEV, double *tipVector,
+ int *ex3, unsigned char *tipX1, unsigned char *tipX2,
+ int n, double *left, double *right, int *wgt, int *scalerIncrement, const boolean fastScaling);
+
+double evaluateGTRGAMMAPROT_MIC(int *ex1, int *ex2, int *wptr,
+ double *x1_start, double *x2_start,
+ double *tipVector,
+ unsigned char *tipX1, const int n, double *diagptable, const boolean fastScaling);
+
+void sumGTRGAMMAPROT_MIC(int tipCase, double *sumtable, double *x1_start, double *x2_start, double *tipVector,
+ unsigned char *tipX1, unsigned char *tipX2, int n);
+
+void coreGTRGAMMAPROT_MIC(const int upper, double *sumtable,
+ volatile double *ext_dlnLdlz, volatile double *ext_d2lnLdlz2, double *EIGN, double *gammaRates, double lz, int *wrptr);
+
+// protein data - LG4
+
+void newviewGTRGAMMAPROT_LG4_MIC(int tipCase,
+ double *x1, double *x2, double *x3, double *extEV[4], double *tipVector[4],
+ unsigned char *tipX1, unsigned char *tipX2,
+ int n, double *left, double *right, int *wgt, int *scalerIncrement);
+
+double evaluateGTRGAMMAPROT_LG4_MIC(int *wptr,
+ double *x1_start, double *x2_start,
+ double *tipVector[4],
+ unsigned char *tipX1, const int n, double *diagptable, double *weights);
+
+void sumGTRGAMMAPROT_LG4_MIC(int tipCase, double *sumtable, double *x1_start, double *x2_start, double *tipVector[4],
+ unsigned char *tipX1, unsigned char *tipX2, int n);
+
+void coreGTRGAMMAPROT_LG4_MIC(const int upper, double *sumtable,
+ volatile double *ext_dlnLdlz, volatile double *ext_d2lnLdlz2, double *EIGN[4], double *gammaRates,
+ double lz, int *wgt, double *weights);
+
+
+#endif /* MIC_NATIVE_H_ */
diff --git a/src/models.c b/src/models.c
new file mode 100644
index 0000000..638a892
--- /dev/null
+++ b/src/models.c
@@ -0,0 +1,4322 @@
+/**
+ * PLL (version 1.0.0) a software library for phylogenetic inference
+ * Copyright (C) 2013 Tomas Flouri and Alexandros Stamatakis
+ *
+ * Derived from
+ * RAxML-HPC, a program for sequential and parallel estimation of phylogenetic
+ * trees by Alexandros Stamatakis
+ *
+ * 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 3 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, see <http://www.gnu.org/licenses/>.
+ *
+ * For any other enquiries send an Email to Tomas Flouri
+ * Tomas.Flouri at h-its.org
+ *
+ * When publishing work that uses PLL please cite PLL
+ *
+ * @file models.c
+ *
+ * @brief Model related code
+ *
+ * Detailed description to appear soon.
+ */
+
+
+#include "mem_alloc.h"
+
+#ifndef WIN32
+#include <sys/times.h>
+#include <sys/types.h>
+#include <sys/time.h>
+#include <unistd.h>
+#endif
+
+#include <math.h>
+#include <time.h>
+#include <stdlib.h>
+#include <stdio.h>
+#include <ctype.h>
+#include <string.h>
+#include <assert.h>
+
+#include "pll.h"
+#include "pllInternal.h"
+
+
+extern const unsigned int bitVectorSecondary[256];
+extern const unsigned int bitVector32[33];
+extern const unsigned int bitVectorAA[23];
+extern const unsigned int bitVectorIdentity[256];
+
+extern const partitionLengths pLengths[PLL_MAX_MODEL];
+
+
+
+extern FILE *byteFile;
+
+
+
+
+
+
+
+
+
+/** @brief Hardcoded values for the WAG model
+
+ Fill the \a ext_initialRates array with hardcoded substitution rates
+ of the WAG model.
+
+ @param ext_initialRates
+ Where to place the substitution rates
+*/
+void putWAG(double *ext_initialRates)
+{
+ double
+ scaler,
+ q[20][20],
+ daa[400];
+
+ int
+ i,
+ j,
+ r;
+
+ /* fill the triangle below the diagonal with values */
+ daa[ 1*20+ 0] = 55.15710; daa[ 2*20+ 0] = 50.98480; daa[ 2*20+ 1] = 63.53460;
+ daa[ 3*20+ 0] = 73.89980; daa[ 3*20+ 1] = 14.73040; daa[ 3*20+ 2] = 542.94200;
+ daa[ 4*20+ 0] = 102.70400; daa[ 4*20+ 1] = 52.81910; daa[ 4*20+ 2] = 26.52560;
+ daa[ 4*20+ 3] = 3.02949; daa[ 5*20+ 0] = 90.85980; daa[ 5*20+ 1] = 303.55000;
+ daa[ 5*20+ 2] = 154.36400; daa[ 5*20+ 3] = 61.67830; daa[ 5*20+ 4] = 9.88179;
+ daa[ 6*20+ 0] = 158.28500; daa[ 6*20+ 1] = 43.91570; daa[ 6*20+ 2] = 94.71980;
+ daa[ 6*20+ 3] = 617.41600; daa[ 6*20+ 4] = 2.13520; daa[ 6*20+ 5] = 546.94700;
+ daa[ 7*20+ 0] = 141.67200; daa[ 7*20+ 1] = 58.46650; daa[ 7*20+ 2] = 112.55600;
+ daa[ 7*20+ 3] = 86.55840; daa[ 7*20+ 4] = 30.66740; daa[ 7*20+ 5] = 33.00520;
+ daa[ 7*20+ 6] = 56.77170; daa[ 8*20+ 0] = 31.69540; daa[ 8*20+ 1] = 213.71500;
+ daa[ 8*20+ 2] = 395.62900; daa[ 8*20+ 3] = 93.06760; daa[ 8*20+ 4] = 24.89720;
+ daa[ 8*20+ 5] = 429.41100; daa[ 8*20+ 6] = 57.00250; daa[ 8*20+ 7] = 24.94100;
+ daa[ 9*20+ 0] = 19.33350; daa[ 9*20+ 1] = 18.69790; daa[ 9*20+ 2] = 55.42360;
+ daa[ 9*20+ 3] = 3.94370; daa[ 9*20+ 4] = 17.01350; daa[ 9*20+ 5] = 11.39170;
+ daa[ 9*20+ 6] = 12.73950; daa[ 9*20+ 7] = 3.04501; daa[ 9*20+ 8] = 13.81900;
+ daa[10*20+ 0] = 39.79150; daa[10*20+ 1] = 49.76710; daa[10*20+ 2] = 13.15280;
+ daa[10*20+ 3] = 8.48047; daa[10*20+ 4] = 38.42870; daa[10*20+ 5] = 86.94890;
+ daa[10*20+ 6] = 15.42630; daa[10*20+ 7] = 6.13037; daa[10*20+ 8] = 49.94620;
+ daa[10*20+ 9] = 317.09700; daa[11*20+ 0] = 90.62650; daa[11*20+ 1] = 535.14200;
+ daa[11*20+ 2] = 301.20100; daa[11*20+ 3] = 47.98550; daa[11*20+ 4] = 7.40339;
+ daa[11*20+ 5] = 389.49000; daa[11*20+ 6] = 258.44300; daa[11*20+ 7] = 37.35580;
+ daa[11*20+ 8] = 89.04320; daa[11*20+ 9] = 32.38320; daa[11*20+10] = 25.75550;
+ daa[12*20+ 0] = 89.34960; daa[12*20+ 1] = 68.31620; daa[12*20+ 2] = 19.82210;
+ daa[12*20+ 3] = 10.37540; daa[12*20+ 4] = 39.04820; daa[12*20+ 5] = 154.52600;
+ daa[12*20+ 6] = 31.51240; daa[12*20+ 7] = 17.41000; daa[12*20+ 8] = 40.41410;
+ daa[12*20+ 9] = 425.74600; daa[12*20+10] = 485.40200; daa[12*20+11] = 93.42760;
+ daa[13*20+ 0] = 21.04940; daa[13*20+ 1] = 10.27110; daa[13*20+ 2] = 9.61621;
+ daa[13*20+ 3] = 4.67304; daa[13*20+ 4] = 39.80200; daa[13*20+ 5] = 9.99208;
+ daa[13*20+ 6] = 8.11339; daa[13*20+ 7] = 4.99310; daa[13*20+ 8] = 67.93710;
+ daa[13*20+ 9] = 105.94700; daa[13*20+10] = 211.51700; daa[13*20+11] = 8.88360;
+ daa[13*20+12] = 119.06300; daa[14*20+ 0] = 143.85500; daa[14*20+ 1] = 67.94890;
+ daa[14*20+ 2] = 19.50810; daa[14*20+ 3] = 42.39840; daa[14*20+ 4] = 10.94040;
+ daa[14*20+ 5] = 93.33720; daa[14*20+ 6] = 68.23550; daa[14*20+ 7] = 24.35700;
+ daa[14*20+ 8] = 69.61980; daa[14*20+ 9] = 9.99288; daa[14*20+10] = 41.58440;
+ daa[14*20+11] = 55.68960; daa[14*20+12] = 17.13290; daa[14*20+13] = 16.14440;
+ daa[15*20+ 0] = 337.07900; daa[15*20+ 1] = 122.41900; daa[15*20+ 2] = 397.42300;
+ daa[15*20+ 3] = 107.17600; daa[15*20+ 4] = 140.76600; daa[15*20+ 5] = 102.88700;
+ daa[15*20+ 6] = 70.49390; daa[15*20+ 7] = 134.18200; daa[15*20+ 8] = 74.01690;
+ daa[15*20+ 9] = 31.94400; daa[15*20+10] = 34.47390; daa[15*20+11] = 96.71300;
+ daa[15*20+12] = 49.39050; daa[15*20+13] = 54.59310; daa[15*20+14] = 161.32800;
+ daa[16*20+ 0] = 212.11100; daa[16*20+ 1] = 55.44130; daa[16*20+ 2] = 203.00600;
+ daa[16*20+ 3] = 37.48660; daa[16*20+ 4] = 51.29840; daa[16*20+ 5] = 85.79280;
+ daa[16*20+ 6] = 82.27650; daa[16*20+ 7] = 22.58330; daa[16*20+ 8] = 47.33070;
+ daa[16*20+ 9] = 145.81600; daa[16*20+10] = 32.66220; daa[16*20+11] = 138.69800;
+ daa[16*20+12] = 151.61200; daa[16*20+13] = 17.19030; daa[16*20+14] = 79.53840;
+ daa[16*20+15] = 437.80200; daa[17*20+ 0] = 11.31330; daa[17*20+ 1] = 116.39200;
+ daa[17*20+ 2] = 7.19167; daa[17*20+ 3] = 12.97670; daa[17*20+ 4] = 71.70700;
+ daa[17*20+ 5] = 21.57370; daa[17*20+ 6] = 15.65570; daa[17*20+ 7] = 33.69830;
+ daa[17*20+ 8] = 26.25690; daa[17*20+ 9] = 21.24830; daa[17*20+10] = 66.53090;
+ daa[17*20+11] = 13.75050; daa[17*20+12] = 51.57060; daa[17*20+13] = 152.96400;
+ daa[17*20+14] = 13.94050; daa[17*20+15] = 52.37420; daa[17*20+16] = 11.08640;
+ daa[18*20+ 0] = 24.07350; daa[18*20+ 1] = 38.15330; daa[18*20+ 2] = 108.60000;
+ daa[18*20+ 3] = 32.57110; daa[18*20+ 4] = 54.38330; daa[18*20+ 5] = 22.77100;
+ daa[18*20+ 6] = 19.63030; daa[18*20+ 7] = 10.36040; daa[18*20+ 8] = 387.34400;
+ daa[18*20+ 9] = 42.01700; daa[18*20+10] = 39.86180; daa[18*20+11] = 13.32640;
+ daa[18*20+12] = 42.84370; daa[18*20+13] = 645.42800; daa[18*20+14] = 21.60460;
+ daa[18*20+15] = 78.69930; daa[18*20+16] = 29.11480; daa[18*20+17] = 248.53900;
+ daa[19*20+ 0] = 200.60100; daa[19*20+ 1] = 25.18490; daa[19*20+ 2] = 19.62460;
+ daa[19*20+ 3] = 15.23350; daa[19*20+ 4] = 100.21400; daa[19*20+ 5] = 30.12810;
+ daa[19*20+ 6] = 58.87310; daa[19*20+ 7] = 18.72470; daa[19*20+ 8] = 11.83580;
+ daa[19*20+ 9] = 782.13000; daa[19*20+10] = 180.03400; daa[19*20+11] = 30.54340;
+ daa[19*20+12] = 205.84500; daa[19*20+13] = 64.98920; daa[19*20+14] = 31.48870;
+ daa[19*20+15] = 23.27390; daa[19*20+16] = 138.82300; daa[19*20+17] = 36.53690;
+ daa[19*20+18] = 31.47300;
+
+ /* initialize a 20x20 matrix */
+ for(i = 0; i < 20; i++)
+ for(j = 0; j < 20; j++)
+ q[i][j] = 0.0;
+
+ /* fill the triangle above the diagonal with the corresponding values from the
+ lower triangle */
+ for (i=0; i<20; i++)
+ for (j=0; j<i; j++)
+ daa[j*20+i] = daa[i*20+j];
+
+ /* copy the triangle above the diagonal from daa (which is a linear block) to
+ the triangle above the diagonal of a square matrix q */
+ for(i = 0; i < 19; i++)
+ for(j = i + 1; j < 20; j++)
+ q[i][j] = daa[i * 20 + j];
+
+
+ /*
+ for (i=0; i<20; i++)
+ {
+ for (j=0; j<20; j++)
+ printf("%1.2f ", q[i][j]);
+ printf("\n");
+ }
+ printf("\n");
+
+ printf("%f\n", q[18][19]);
+ */
+
+ /* create a scaler from the last value (last row last column) of the upper
+ triangle of q */
+ scaler = 1.0 / q[18][19];
+
+
+
+ /* scale all values of the matrix */
+ for(i = 0; i < 19; i++)
+ for(j = i + 1; j < 20; j++)
+ q[i][j] *= scaler;
+
+ /* copy the upper triangle of q to the linear array ext_initialRates */
+ for(i = 0, r = 0; i < 19; i++)
+ for(j = i + 1; j < 20; j++)
+ ext_initialRates[r++] = q[i][j];
+
+ /*
+ for (i=0; i<20; i++)
+ {
+ for (j=0; j<20; j++)
+ printf("%1.2f ", q[i][j]);
+ printf("\n");
+ }
+ printf("\n");
+ */
+
+}
+
+static void makeAASubstMat(double *daa, double *f, double *rates, double *freqs)
+{
+ int
+ i, j, r = 0;
+
+ for(i = 1; i < 20; i++)
+ for(j = 0; j < i; j++)
+ {
+ daa[i * 20 + j] = rates[r];
+ r++;
+ }
+
+ assert(r == 190);
+
+ for(i = 0; i < 20; i++)
+ f[i] = freqs[i];
+}
+
+
+/** @brief Initialize protein substitution rates matrix
+ *
+ * Initialize the array pointed to by \a ext_initialRates with the substitution
+ * rates of the corresponding protein model and set f to the appropriate
+ * stationary frequencies
+ *
+ * @param f
+ * Array where to store the stationary frequency rates
+ *
+ * @param proteinMatrix
+ * Which protein matrix to use
+ *
+ * @param ext_initialRates
+ Where to store the retrieved substitution rates
+ *
+ * @param lg4_index
+ * In case we are filling a substitution rates matrix of an LG4 model the index
+ * specifies which of the four matrixes to use
+ *
+*/
+static void initProtMat(double f[20], int proteinMatrix, double *ext_initialRates, int lg4_index)
+{
+ double q[20][20];
+ double daa[400], max, temp;
+ int i, j, r;
+ double *initialRates = ext_initialRates;
+ double scaler;
+
+ {
+ switch(proteinMatrix)
+ {
+ case PLL_DAYHOFF:
+ {
+ daa[ 1*20+ 0] = 27.00; daa[ 2*20+ 0] = 98.00; daa[ 2*20+ 1] = 32.00; daa[ 3*20+ 0] = 120.00;
+ daa[ 3*20+ 1] = 0.00; daa[ 3*20+ 2] = 905.00; daa[ 4*20+ 0] = 36.00; daa[ 4*20+ 1] = 23.00;
+ daa[ 4*20+ 2] = 0.00; daa[ 4*20+ 3] = 0.00; daa[ 5*20+ 0] = 89.00; daa[ 5*20+ 1] = 246.00;
+ daa[ 5*20+ 2] = 103.00; daa[ 5*20+ 3] = 134.00; daa[ 5*20+ 4] = 0.00; daa[ 6*20+ 0] = 198.00;
+ daa[ 6*20+ 1] = 1.00; daa[ 6*20+ 2] = 148.00; daa[ 6*20+ 3] = 1153.00; daa[ 6*20+ 4] = 0.00;
+ daa[ 6*20+ 5] = 716.00; daa[ 7*20+ 0] = 240.00; daa[ 7*20+ 1] = 9.00; daa[ 7*20+ 2] = 139.00;
+ daa[ 7*20+ 3] = 125.00; daa[ 7*20+ 4] = 11.00; daa[ 7*20+ 5] = 28.00; daa[ 7*20+ 6] = 81.00;
+ daa[ 8*20+ 0] = 23.00; daa[ 8*20+ 1] = 240.00; daa[ 8*20+ 2] = 535.00; daa[ 8*20+ 3] = 86.00;
+ daa[ 8*20+ 4] = 28.00; daa[ 8*20+ 5] = 606.00; daa[ 8*20+ 6] = 43.00; daa[ 8*20+ 7] = 10.00;
+ daa[ 9*20+ 0] = 65.00; daa[ 9*20+ 1] = 64.00; daa[ 9*20+ 2] = 77.00; daa[ 9*20+ 3] = 24.00;
+ daa[ 9*20+ 4] = 44.00; daa[ 9*20+ 5] = 18.00; daa[ 9*20+ 6] = 61.00; daa[ 9*20+ 7] = 0.00;
+ daa[ 9*20+ 8] = 7.00; daa[10*20+ 0] = 41.00; daa[10*20+ 1] = 15.00; daa[10*20+ 2] = 34.00;
+ daa[10*20+ 3] = 0.00; daa[10*20+ 4] = 0.00; daa[10*20+ 5] = 73.00; daa[10*20+ 6] = 11.00;
+ daa[10*20+ 7] = 7.00; daa[10*20+ 8] = 44.00; daa[10*20+ 9] = 257.00; daa[11*20+ 0] = 26.00;
+ daa[11*20+ 1] = 464.00; daa[11*20+ 2] = 318.00; daa[11*20+ 3] = 71.00; daa[11*20+ 4] = 0.00;
+ daa[11*20+ 5] = 153.00; daa[11*20+ 6] = 83.00; daa[11*20+ 7] = 27.00; daa[11*20+ 8] = 26.00;
+ daa[11*20+ 9] = 46.00; daa[11*20+10] = 18.00; daa[12*20+ 0] = 72.00; daa[12*20+ 1] = 90.00;
+ daa[12*20+ 2] = 1.00; daa[12*20+ 3] = 0.00; daa[12*20+ 4] = 0.00; daa[12*20+ 5] = 114.00;
+ daa[12*20+ 6] = 30.00; daa[12*20+ 7] = 17.00; daa[12*20+ 8] = 0.00; daa[12*20+ 9] = 336.00;
+ daa[12*20+10] = 527.00; daa[12*20+11] = 243.00; daa[13*20+ 0] = 18.00; daa[13*20+ 1] = 14.00;
+ daa[13*20+ 2] = 14.00; daa[13*20+ 3] = 0.00; daa[13*20+ 4] = 0.00; daa[13*20+ 5] = 0.00;
+ daa[13*20+ 6] = 0.00; daa[13*20+ 7] = 15.00; daa[13*20+ 8] = 48.00; daa[13*20+ 9] = 196.00;
+ daa[13*20+10] = 157.00; daa[13*20+11] = 0.00; daa[13*20+12] = 92.00; daa[14*20+ 0] = 250.00;
+ daa[14*20+ 1] = 103.00; daa[14*20+ 2] = 42.00; daa[14*20+ 3] = 13.00; daa[14*20+ 4] = 19.00;
+ daa[14*20+ 5] = 153.00; daa[14*20+ 6] = 51.00; daa[14*20+ 7] = 34.00; daa[14*20+ 8] = 94.00;
+ daa[14*20+ 9] = 12.00; daa[14*20+10] = 32.00; daa[14*20+11] = 33.00; daa[14*20+12] = 17.00;
+ daa[14*20+13] = 11.00; daa[15*20+ 0] = 409.00; daa[15*20+ 1] = 154.00; daa[15*20+ 2] = 495.00;
+ daa[15*20+ 3] = 95.00; daa[15*20+ 4] = 161.00; daa[15*20+ 5] = 56.00; daa[15*20+ 6] = 79.00;
+ daa[15*20+ 7] = 234.00; daa[15*20+ 8] = 35.00; daa[15*20+ 9] = 24.00; daa[15*20+10] = 17.00;
+ daa[15*20+11] = 96.00; daa[15*20+12] = 62.00; daa[15*20+13] = 46.00; daa[15*20+14] = 245.00;
+ daa[16*20+ 0] = 371.00; daa[16*20+ 1] = 26.00; daa[16*20+ 2] = 229.00; daa[16*20+ 3] = 66.00;
+ daa[16*20+ 4] = 16.00; daa[16*20+ 5] = 53.00; daa[16*20+ 6] = 34.00; daa[16*20+ 7] = 30.00;
+ daa[16*20+ 8] = 22.00; daa[16*20+ 9] = 192.00; daa[16*20+10] = 33.00; daa[16*20+11] = 136.00;
+ daa[16*20+12] = 104.00; daa[16*20+13] = 13.00; daa[16*20+14] = 78.00; daa[16*20+15] = 550.00;
+ daa[17*20+ 0] = 0.00; daa[17*20+ 1] = 201.00; daa[17*20+ 2] = 23.00; daa[17*20+ 3] = 0.00;
+ daa[17*20+ 4] = 0.00; daa[17*20+ 5] = 0.00; daa[17*20+ 6] = 0.00; daa[17*20+ 7] = 0.00;
+ daa[17*20+ 8] = 27.00; daa[17*20+ 9] = 0.00; daa[17*20+10] = 46.00; daa[17*20+11] = 0.00;
+ daa[17*20+12] = 0.00; daa[17*20+13] = 76.00; daa[17*20+14] = 0.00; daa[17*20+15] = 75.00;
+ daa[17*20+16] = 0.00; daa[18*20+ 0] = 24.00; daa[18*20+ 1] = 8.00; daa[18*20+ 2] = 95.00;
+ daa[18*20+ 3] = 0.00; daa[18*20+ 4] = 96.00; daa[18*20+ 5] = 0.00; daa[18*20+ 6] = 22.00;
+ daa[18*20+ 7] = 0.00; daa[18*20+ 8] = 127.00; daa[18*20+ 9] = 37.00; daa[18*20+10] = 28.00;
+ daa[18*20+11] = 13.00; daa[18*20+12] = 0.00; daa[18*20+13] = 698.00; daa[18*20+14] = 0.00;
+ daa[18*20+15] = 34.00; daa[18*20+16] = 42.00; daa[18*20+17] = 61.00; daa[19*20+ 0] = 208.00;
+ daa[19*20+ 1] = 24.00; daa[19*20+ 2] = 15.00; daa[19*20+ 3] = 18.00; daa[19*20+ 4] = 49.00;
+ daa[19*20+ 5] = 35.00; daa[19*20+ 6] = 37.00; daa[19*20+ 7] = 54.00; daa[19*20+ 8] = 44.00;
+ daa[19*20+ 9] = 889.00; daa[19*20+10] = 175.00; daa[19*20+11] = 10.00; daa[19*20+12] = 258.00;
+ daa[19*20+13] = 12.00; daa[19*20+14] = 48.00; daa[19*20+15] = 30.00; daa[19*20+16] = 157.00;
+ daa[19*20+17] = 0.00; daa[19*20+18] = 28.00;
+
+ f[ 0] = 0.087127; f[ 1] = 0.040904; f[ 2] = 0.040432; f[ 3] = 0.046872;
+ f[ 4] = 0.033474; f[ 5] = 0.038255; f[ 6] = 0.049530; f[ 7] = 0.088612;
+ f[ 8] = 0.033618; f[ 9] = 0.036886; f[10] = 0.085357; f[11] = 0.080482;
+ f[12] = 0.014753; f[13] = 0.039772; f[14] = 0.050680; f[15] = 0.069577;
+ f[16] = 0.058542; f[17] = 0.010494; f[18] = 0.029916; f[19] = 0.064717;
+ }
+ break;
+ case PLL_DCMUT:
+ {
+ daa[ 1*20+ 0] = 26.78280; daa[ 2*20+ 0] = 98.44740; daa[ 2*20+ 1] = 32.70590; daa[ 3*20+ 0] = 119.98050;
+ daa[ 3*20+ 1] = 0.00000; daa[ 3*20+ 2] = 893.15150; daa[ 4*20+ 0] = 36.00160; daa[ 4*20+ 1] = 23.23740;
+ daa[ 4*20+ 2] = 0.00000; daa[ 4*20+ 3] = 0.00000; daa[ 5*20+ 0] = 88.77530; daa[ 5*20+ 1] = 243.99390;
+ daa[ 5*20+ 2] = 102.85090; daa[ 5*20+ 3] = 134.85510; daa[ 5*20+ 4] = 0.00000; daa[ 6*20+ 0] = 196.11670;
+ daa[ 6*20+ 1] = 0.00000; daa[ 6*20+ 2] = 149.34090; daa[ 6*20+ 3] = 1138.86590; daa[ 6*20+ 4] = 0.00000;
+ daa[ 6*20+ 5] = 708.60220; daa[ 7*20+ 0] = 238.61110; daa[ 7*20+ 1] = 8.77910; daa[ 7*20+ 2] = 138.53520;
+ daa[ 7*20+ 3] = 124.09810; daa[ 7*20+ 4] = 10.72780; daa[ 7*20+ 5] = 28.15810; daa[ 7*20+ 6] = 81.19070;
+ daa[ 8*20+ 0] = 22.81160; daa[ 8*20+ 1] = 238.31480; daa[ 8*20+ 2] = 529.00240; daa[ 8*20+ 3] = 86.82410;
+ daa[ 8*20+ 4] = 28.27290; daa[ 8*20+ 5] = 601.16130; daa[ 8*20+ 6] = 43.94690; daa[ 8*20+ 7] = 10.68020;
+ daa[ 9*20+ 0] = 65.34160; daa[ 9*20+ 1] = 63.26290; daa[ 9*20+ 2] = 76.80240; daa[ 9*20+ 3] = 23.92480;
+ daa[ 9*20+ 4] = 43.80740; daa[ 9*20+ 5] = 18.03930; daa[ 9*20+ 6] = 60.95260; daa[ 9*20+ 7] = 0.00000;
+ daa[ 9*20+ 8] = 7.69810; daa[10*20+ 0] = 40.64310; daa[10*20+ 1] = 15.49240; daa[10*20+ 2] = 34.11130;
+ daa[10*20+ 3] = 0.00000; daa[10*20+ 4] = 0.00000; daa[10*20+ 5] = 73.07720; daa[10*20+ 6] = 11.28800;
+ daa[10*20+ 7] = 7.15140; daa[10*20+ 8] = 44.35040; daa[10*20+ 9] = 255.66850; daa[11*20+ 0] = 25.86350;
+ daa[11*20+ 1] = 461.01240; daa[11*20+ 2] = 314.83710; daa[11*20+ 3] = 71.69130; daa[11*20+ 4] = 0.00000;
+ daa[11*20+ 5] = 151.90780; daa[11*20+ 6] = 83.00780; daa[11*20+ 7] = 26.76830; daa[11*20+ 8] = 27.04750;
+ daa[11*20+ 9] = 46.08570; daa[11*20+10] = 18.06290; daa[12*20+ 0] = 71.78400; daa[12*20+ 1] = 89.63210;
+ daa[12*20+ 2] = 0.00000; daa[12*20+ 3] = 0.00000; daa[12*20+ 4] = 0.00000; daa[12*20+ 5] = 112.74990;
+ daa[12*20+ 6] = 30.48030; daa[12*20+ 7] = 17.03720; daa[12*20+ 8] = 0.00000; daa[12*20+ 9] = 333.27320;
+ daa[12*20+10] = 523.01150; daa[12*20+11] = 241.17390; daa[13*20+ 0] = 18.36410; daa[13*20+ 1] = 13.69060;
+ daa[13*20+ 2] = 13.85030; daa[13*20+ 3] = 0.00000; daa[13*20+ 4] = 0.00000; daa[13*20+ 5] = 0.00000;
+ daa[13*20+ 6] = 0.00000; daa[13*20+ 7] = 15.34780; daa[13*20+ 8] = 47.59270; daa[13*20+ 9] = 195.19510;
+ daa[13*20+10] = 156.51600; daa[13*20+11] = 0.00000; daa[13*20+12] = 92.18600; daa[14*20+ 0] = 248.59200;
+ daa[14*20+ 1] = 102.83130; daa[14*20+ 2] = 41.92440; daa[14*20+ 3] = 13.39400; daa[14*20+ 4] = 18.75500;
+ daa[14*20+ 5] = 152.61880; daa[14*20+ 6] = 50.70030; daa[14*20+ 7] = 34.71530; daa[14*20+ 8] = 93.37090;
+ daa[14*20+ 9] = 11.91520; daa[14*20+10] = 31.62580; daa[14*20+11] = 33.54190; daa[14*20+12] = 17.02050;
+ daa[14*20+13] = 11.05060; daa[15*20+ 0] = 405.18700; daa[15*20+ 1] = 153.15900; daa[15*20+ 2] = 488.58920;
+ daa[15*20+ 3] = 95.60970; daa[15*20+ 4] = 159.83560; daa[15*20+ 5] = 56.18280; daa[15*20+ 6] = 79.39990;
+ daa[15*20+ 7] = 232.22430; daa[15*20+ 8] = 35.36430; daa[15*20+ 9] = 24.79550; daa[15*20+10] = 17.14320;
+ daa[15*20+11] = 95.45570; daa[15*20+12] = 61.99510; daa[15*20+13] = 45.99010; daa[15*20+14] = 242.72020;
+ daa[16*20+ 0] = 368.03650; daa[16*20+ 1] = 26.57450; daa[16*20+ 2] = 227.16970; daa[16*20+ 3] = 66.09300;
+ daa[16*20+ 4] = 16.23660; daa[16*20+ 5] = 52.56510; daa[16*20+ 6] = 34.01560; daa[16*20+ 7] = 30.66620;
+ daa[16*20+ 8] = 22.63330; daa[16*20+ 9] = 190.07390; daa[16*20+10] = 33.10900; daa[16*20+11] = 135.05990;
+ daa[16*20+12] = 103.15340; daa[16*20+13] = 13.66550; daa[16*20+14] = 78.28570; daa[16*20+15] = 543.66740;
+ daa[17*20+ 0] = 0.00000; daa[17*20+ 1] = 200.13750; daa[17*20+ 2] = 22.49680; daa[17*20+ 3] = 0.00000;
+ daa[17*20+ 4] = 0.00000; daa[17*20+ 5] = 0.00000; daa[17*20+ 6] = 0.00000; daa[17*20+ 7] = 0.00000;
+ daa[17*20+ 8] = 27.05640; daa[17*20+ 9] = 0.00000; daa[17*20+10] = 46.17760; daa[17*20+11] = 0.00000;
+ daa[17*20+12] = 0.00000; daa[17*20+13] = 76.23540; daa[17*20+14] = 0.00000; daa[17*20+15] = 74.08190;
+ daa[17*20+16] = 0.00000; daa[18*20+ 0] = 24.41390; daa[18*20+ 1] = 7.80120; daa[18*20+ 2] = 94.69400;
+ daa[18*20+ 3] = 0.00000; daa[18*20+ 4] = 95.31640; daa[18*20+ 5] = 0.00000; daa[18*20+ 6] = 21.47170;
+ daa[18*20+ 7] = 0.00000; daa[18*20+ 8] = 126.54000; daa[18*20+ 9] = 37.48340; daa[18*20+10] = 28.65720;
+ daa[18*20+11] = 13.21420; daa[18*20+12] = 0.00000; daa[18*20+13] = 695.26290; daa[18*20+14] = 0.00000;
+ daa[18*20+15] = 33.62890; daa[18*20+16] = 41.78390; daa[18*20+17] = 60.80700; daa[19*20+ 0] = 205.95640;
+ daa[19*20+ 1] = 24.03680; daa[19*20+ 2] = 15.80670; daa[19*20+ 3] = 17.83160; daa[19*20+ 4] = 48.46780;
+ daa[19*20+ 5] = 34.69830; daa[19*20+ 6] = 36.72500; daa[19*20+ 7] = 53.81650; daa[19*20+ 8] = 43.87150;
+ daa[19*20+ 9] = 881.00380; daa[19*20+10] = 174.51560; daa[19*20+11] = 10.38500; daa[19*20+12] = 256.59550;
+ daa[19*20+13] = 12.36060; daa[19*20+14] = 48.50260; daa[19*20+15] = 30.38360; daa[19*20+16] = 156.19970;
+ daa[19*20+17] = 0.00000; daa[19*20+18] = 27.93790;
+
+ f[ 0] = 0.087127; f[ 1] = 0.040904; f[ 2] = 0.040432; f[ 3] = 0.046872;
+ f[ 4] = 0.033474; f[ 5] = 0.038255; f[ 6] = 0.049530; f[ 7] = 0.088612;
+ f[ 8] = 0.033619; f[ 9] = 0.036886; f[10] = 0.085357; f[11] = 0.080481;
+ f[12] = 0.014753; f[13] = 0.039772; f[14] = 0.050680; f[15] = 0.069577;
+ f[16] = 0.058542; f[17] = 0.010494; f[18] = 0.029916; f[19] = 0.064717;
+
+ }
+ break;
+ case PLL_JTT:
+ {
+ daa[ 1*20+ 0] = 58.00; daa[ 2*20+ 0] = 54.00; daa[ 2*20+ 1] = 45.00; daa[ 3*20+ 0] = 81.00;
+ daa[ 3*20+ 1] = 16.00; daa[ 3*20+ 2] = 528.00; daa[ 4*20+ 0] = 56.00; daa[ 4*20+ 1] = 113.00;
+ daa[ 4*20+ 2] = 34.00; daa[ 4*20+ 3] = 10.00; daa[ 5*20+ 0] = 57.00; daa[ 5*20+ 1] = 310.00;
+ daa[ 5*20+ 2] = 86.00; daa[ 5*20+ 3] = 49.00; daa[ 5*20+ 4] = 9.00; daa[ 6*20+ 0] = 105.00;
+ daa[ 6*20+ 1] = 29.00; daa[ 6*20+ 2] = 58.00; daa[ 6*20+ 3] = 767.00; daa[ 6*20+ 4] = 5.00;
+ daa[ 6*20+ 5] = 323.00; daa[ 7*20+ 0] = 179.00; daa[ 7*20+ 1] = 137.00; daa[ 7*20+ 2] = 81.00;
+ daa[ 7*20+ 3] = 130.00; daa[ 7*20+ 4] = 59.00; daa[ 7*20+ 5] = 26.00; daa[ 7*20+ 6] = 119.00;
+ daa[ 8*20+ 0] = 27.00; daa[ 8*20+ 1] = 328.00; daa[ 8*20+ 2] = 391.00; daa[ 8*20+ 3] = 112.00;
+ daa[ 8*20+ 4] = 69.00; daa[ 8*20+ 5] = 597.00; daa[ 8*20+ 6] = 26.00; daa[ 8*20+ 7] = 23.00;
+ daa[ 9*20+ 0] = 36.00; daa[ 9*20+ 1] = 22.00; daa[ 9*20+ 2] = 47.00; daa[ 9*20+ 3] = 11.00;
+ daa[ 9*20+ 4] = 17.00; daa[ 9*20+ 5] = 9.00; daa[ 9*20+ 6] = 12.00; daa[ 9*20+ 7] = 6.00;
+ daa[ 9*20+ 8] = 16.00; daa[10*20+ 0] = 30.00; daa[10*20+ 1] = 38.00; daa[10*20+ 2] = 12.00;
+ daa[10*20+ 3] = 7.00; daa[10*20+ 4] = 23.00; daa[10*20+ 5] = 72.00; daa[10*20+ 6] = 9.00;
+ daa[10*20+ 7] = 6.00; daa[10*20+ 8] = 56.00; daa[10*20+ 9] = 229.00; daa[11*20+ 0] = 35.00;
+ daa[11*20+ 1] = 646.00; daa[11*20+ 2] = 263.00; daa[11*20+ 3] = 26.00; daa[11*20+ 4] = 7.00;
+ daa[11*20+ 5] = 292.00; daa[11*20+ 6] = 181.00; daa[11*20+ 7] = 27.00; daa[11*20+ 8] = 45.00;
+ daa[11*20+ 9] = 21.00; daa[11*20+10] = 14.00; daa[12*20+ 0] = 54.00; daa[12*20+ 1] = 44.00;
+ daa[12*20+ 2] = 30.00; daa[12*20+ 3] = 15.00; daa[12*20+ 4] = 31.00; daa[12*20+ 5] = 43.00;
+ daa[12*20+ 6] = 18.00; daa[12*20+ 7] = 14.00; daa[12*20+ 8] = 33.00; daa[12*20+ 9] = 479.00;
+ daa[12*20+10] = 388.00; daa[12*20+11] = 65.00; daa[13*20+ 0] = 15.00; daa[13*20+ 1] = 5.00;
+ daa[13*20+ 2] = 10.00; daa[13*20+ 3] = 4.00; daa[13*20+ 4] = 78.00; daa[13*20+ 5] = 4.00;
+ daa[13*20+ 6] = 5.00; daa[13*20+ 7] = 5.00; daa[13*20+ 8] = 40.00; daa[13*20+ 9] = 89.00;
+ daa[13*20+10] = 248.00; daa[13*20+11] = 4.00; daa[13*20+12] = 43.00; daa[14*20+ 0] = 194.00;
+ daa[14*20+ 1] = 74.00; daa[14*20+ 2] = 15.00; daa[14*20+ 3] = 15.00; daa[14*20+ 4] = 14.00;
+ daa[14*20+ 5] = 164.00; daa[14*20+ 6] = 18.00; daa[14*20+ 7] = 24.00; daa[14*20+ 8] = 115.00;
+ daa[14*20+ 9] = 10.00; daa[14*20+10] = 102.00; daa[14*20+11] = 21.00; daa[14*20+12] = 16.00;
+ daa[14*20+13] = 17.00; daa[15*20+ 0] = 378.00; daa[15*20+ 1] = 101.00; daa[15*20+ 2] = 503.00;
+ daa[15*20+ 3] = 59.00; daa[15*20+ 4] = 223.00; daa[15*20+ 5] = 53.00; daa[15*20+ 6] = 30.00;
+ daa[15*20+ 7] = 201.00; daa[15*20+ 8] = 73.00; daa[15*20+ 9] = 40.00; daa[15*20+10] = 59.00;
+ daa[15*20+11] = 47.00; daa[15*20+12] = 29.00; daa[15*20+13] = 92.00; daa[15*20+14] = 285.00;
+ daa[16*20+ 0] = 475.00; daa[16*20+ 1] = 64.00; daa[16*20+ 2] = 232.00; daa[16*20+ 3] = 38.00;
+ daa[16*20+ 4] = 42.00; daa[16*20+ 5] = 51.00; daa[16*20+ 6] = 32.00; daa[16*20+ 7] = 33.00;
+ daa[16*20+ 8] = 46.00; daa[16*20+ 9] = 245.00; daa[16*20+10] = 25.00; daa[16*20+11] = 103.00;
+ daa[16*20+12] = 226.00; daa[16*20+13] = 12.00; daa[16*20+14] = 118.00; daa[16*20+15] = 477.00;
+ daa[17*20+ 0] = 9.00; daa[17*20+ 1] = 126.00; daa[17*20+ 2] = 8.00; daa[17*20+ 3] = 4.00;
+ daa[17*20+ 4] = 115.00; daa[17*20+ 5] = 18.00; daa[17*20+ 6] = 10.00; daa[17*20+ 7] = 55.00;
+ daa[17*20+ 8] = 8.00; daa[17*20+ 9] = 9.00; daa[17*20+10] = 52.00; daa[17*20+11] = 10.00;
+ daa[17*20+12] = 24.00; daa[17*20+13] = 53.00; daa[17*20+14] = 6.00; daa[17*20+15] = 35.00;
+ daa[17*20+16] = 12.00; daa[18*20+ 0] = 11.00; daa[18*20+ 1] = 20.00; daa[18*20+ 2] = 70.00;
+ daa[18*20+ 3] = 46.00; daa[18*20+ 4] = 209.00; daa[18*20+ 5] = 24.00; daa[18*20+ 6] = 7.00;
+ daa[18*20+ 7] = 8.00; daa[18*20+ 8] = 573.00; daa[18*20+ 9] = 32.00; daa[18*20+10] = 24.00;
+ daa[18*20+11] = 8.00; daa[18*20+12] = 18.00; daa[18*20+13] = 536.00; daa[18*20+14] = 10.00;
+ daa[18*20+15] = 63.00; daa[18*20+16] = 21.00; daa[18*20+17] = 71.00; daa[19*20+ 0] = 298.00;
+ daa[19*20+ 1] = 17.00; daa[19*20+ 2] = 16.00; daa[19*20+ 3] = 31.00; daa[19*20+ 4] = 62.00;
+ daa[19*20+ 5] = 20.00; daa[19*20+ 6] = 45.00; daa[19*20+ 7] = 47.00; daa[19*20+ 8] = 11.00;
+ daa[19*20+ 9] = 961.00; daa[19*20+10] = 180.00; daa[19*20+11] = 14.00; daa[19*20+12] = 323.00;
+ daa[19*20+13] = 62.00; daa[19*20+14] = 23.00; daa[19*20+15] = 38.00; daa[19*20+16] = 112.00;
+ daa[19*20+17] = 25.00; daa[19*20+18] = 16.00;
+
+ f[ 0] = 0.076748; f[ 1] = 0.051691; f[ 2] = 0.042645; f[ 3] = 0.051544;
+ f[ 4] = 0.019803; f[ 5] = 0.040752; f[ 6] = 0.061830; f[ 7] = 0.073152;
+ f[ 8] = 0.022944; f[ 9] = 0.053761; f[10] = 0.091904; f[11] = 0.058676;
+ f[12] = 0.023826; f[13] = 0.040126; f[14] = 0.050901; f[15] = 0.068765;
+ f[16] = 0.058565; f[17] = 0.014261; f[18] = 0.032102; f[19] = 0.066004;
+ }
+ break;
+ case PLL_MTREV:
+ {
+ daa[ 1*20+ 0] = 23.18; daa[ 2*20+ 0] = 26.95; daa[ 2*20+ 1] = 13.24; daa[ 3*20+ 0] = 17.67;
+ daa[ 3*20+ 1] = 1.90; daa[ 3*20+ 2] = 794.38; daa[ 4*20+ 0] = 59.93; daa[ 4*20+ 1] = 103.33;
+ daa[ 4*20+ 2] = 58.94; daa[ 4*20+ 3] = 1.90; daa[ 5*20+ 0] = 1.90; daa[ 5*20+ 1] = 220.99;
+ daa[ 5*20+ 2] = 173.56; daa[ 5*20+ 3] = 55.28; daa[ 5*20+ 4] = 75.24; daa[ 6*20+ 0] = 9.77;
+ daa[ 6*20+ 1] = 1.90; daa[ 6*20+ 2] = 63.05; daa[ 6*20+ 3] = 583.55; daa[ 6*20+ 4] = 1.90;
+ daa[ 6*20+ 5] = 313.56; daa[ 7*20+ 0] = 120.71; daa[ 7*20+ 1] = 23.03; daa[ 7*20+ 2] = 53.30;
+ daa[ 7*20+ 3] = 56.77; daa[ 7*20+ 4] = 30.71; daa[ 7*20+ 5] = 6.75; daa[ 7*20+ 6] = 28.28;
+ daa[ 8*20+ 0] = 13.90; daa[ 8*20+ 1] = 165.23; daa[ 8*20+ 2] = 496.13; daa[ 8*20+ 3] = 113.99;
+ daa[ 8*20+ 4] = 141.49; daa[ 8*20+ 5] = 582.40; daa[ 8*20+ 6] = 49.12; daa[ 8*20+ 7] = 1.90;
+ daa[ 9*20+ 0] = 96.49; daa[ 9*20+ 1] = 1.90; daa[ 9*20+ 2] = 27.10; daa[ 9*20+ 3] = 4.34;
+ daa[ 9*20+ 4] = 62.73; daa[ 9*20+ 5] = 8.34; daa[ 9*20+ 6] = 3.31; daa[ 9*20+ 7] = 5.98;
+ daa[ 9*20+ 8] = 12.26; daa[10*20+ 0] = 25.46; daa[10*20+ 1] = 15.58; daa[10*20+ 2] = 15.16;
+ daa[10*20+ 3] = 1.90; daa[10*20+ 4] = 25.65; daa[10*20+ 5] = 39.70; daa[10*20+ 6] = 1.90;
+ daa[10*20+ 7] = 2.41; daa[10*20+ 8] = 11.49; daa[10*20+ 9] = 329.09; daa[11*20+ 0] = 8.36;
+ daa[11*20+ 1] = 141.40; daa[11*20+ 2] = 608.70; daa[11*20+ 3] = 2.31; daa[11*20+ 4] = 1.90;
+ daa[11*20+ 5] = 465.58; daa[11*20+ 6] = 313.86; daa[11*20+ 7] = 22.73; daa[11*20+ 8] = 127.67;
+ daa[11*20+ 9] = 19.57; daa[11*20+10] = 14.88; daa[12*20+ 0] = 141.88; daa[12*20+ 1] = 1.90;
+ daa[12*20+ 2] = 65.41; daa[12*20+ 3] = 1.90; daa[12*20+ 4] = 6.18; daa[12*20+ 5] = 47.37;
+ daa[12*20+ 6] = 1.90; daa[12*20+ 7] = 1.90; daa[12*20+ 8] = 11.97; daa[12*20+ 9] = 517.98;
+ daa[12*20+10] = 537.53; daa[12*20+11] = 91.37; daa[13*20+ 0] = 6.37; daa[13*20+ 1] = 4.69;
+ daa[13*20+ 2] = 15.20; daa[13*20+ 3] = 4.98; daa[13*20+ 4] = 70.80; daa[13*20+ 5] = 19.11;
+ daa[13*20+ 6] = 2.67; daa[13*20+ 7] = 1.90; daa[13*20+ 8] = 48.16; daa[13*20+ 9] = 84.67;
+ daa[13*20+10] = 216.06; daa[13*20+11] = 6.44; daa[13*20+12] = 90.82; daa[14*20+ 0] = 54.31;
+ daa[14*20+ 1] = 23.64; daa[14*20+ 2] = 73.31; daa[14*20+ 3] = 13.43; daa[14*20+ 4] = 31.26;
+ daa[14*20+ 5] = 137.29; daa[14*20+ 6] = 12.83; daa[14*20+ 7] = 1.90; daa[14*20+ 8] = 60.97;
+ daa[14*20+ 9] = 20.63; daa[14*20+10] = 40.10; daa[14*20+11] = 50.10; daa[14*20+12] = 18.84;
+ daa[14*20+13] = 17.31; daa[15*20+ 0] = 387.86; daa[15*20+ 1] = 6.04; daa[15*20+ 2] = 494.39;
+ daa[15*20+ 3] = 69.02; daa[15*20+ 4] = 277.05; daa[15*20+ 5] = 54.11; daa[15*20+ 6] = 54.71;
+ daa[15*20+ 7] = 125.93; daa[15*20+ 8] = 77.46; daa[15*20+ 9] = 47.70; daa[15*20+10] = 73.61;
+ daa[15*20+11] = 105.79; daa[15*20+12] = 111.16; daa[15*20+13] = 64.29; daa[15*20+14] = 169.90;
+ daa[16*20+ 0] = 480.72; daa[16*20+ 1] = 2.08; daa[16*20+ 2] = 238.46; daa[16*20+ 3] = 28.01;
+ daa[16*20+ 4] = 179.97; daa[16*20+ 5] = 94.93; daa[16*20+ 6] = 14.82; daa[16*20+ 7] = 11.17;
+ daa[16*20+ 8] = 44.78; daa[16*20+ 9] = 368.43; daa[16*20+10] = 126.40; daa[16*20+11] = 136.33;
+ daa[16*20+12] = 528.17; daa[16*20+13] = 33.85; daa[16*20+14] = 128.22; daa[16*20+15] = 597.21;
+ daa[17*20+ 0] = 1.90; daa[17*20+ 1] = 21.95; daa[17*20+ 2] = 10.68; daa[17*20+ 3] = 19.86;
+ daa[17*20+ 4] = 33.60; daa[17*20+ 5] = 1.90; daa[17*20+ 6] = 1.90; daa[17*20+ 7] = 10.92;
+ daa[17*20+ 8] = 7.08; daa[17*20+ 9] = 1.90; daa[17*20+10] = 32.44; daa[17*20+11] = 24.00;
+ daa[17*20+12] = 21.71; daa[17*20+13] = 7.84; daa[17*20+14] = 4.21; daa[17*20+15] = 38.58;
+ daa[17*20+16] = 9.99; daa[18*20+ 0] = 6.48; daa[18*20+ 1] = 1.90; daa[18*20+ 2] = 191.36;
+ daa[18*20+ 3] = 21.21; daa[18*20+ 4] = 254.77; daa[18*20+ 5] = 38.82; daa[18*20+ 6] = 13.12;
+ daa[18*20+ 7] = 3.21; daa[18*20+ 8] = 670.14; daa[18*20+ 9] = 25.01; daa[18*20+10] = 44.15;
+ daa[18*20+11] = 51.17; daa[18*20+12] = 39.96; daa[18*20+13] = 465.58; daa[18*20+14] = 16.21;
+ daa[18*20+15] = 64.92; daa[18*20+16] = 38.73; daa[18*20+17] = 26.25; daa[19*20+ 0] = 195.06;
+ daa[19*20+ 1] = 7.64; daa[19*20+ 2] = 1.90; daa[19*20+ 3] = 1.90; daa[19*20+ 4] = 1.90;
+ daa[19*20+ 5] = 19.00; daa[19*20+ 6] = 21.14; daa[19*20+ 7] = 2.53; daa[19*20+ 8] = 1.90;
+ daa[19*20+ 9] = 1222.94; daa[19*20+10] = 91.67; daa[19*20+11] = 1.90; daa[19*20+12] = 387.54;
+ daa[19*20+13] = 6.35; daa[19*20+14] = 8.23; daa[19*20+15] = 1.90; daa[19*20+16] = 204.54;
+ daa[19*20+17] = 5.37; daa[19*20+18] = 1.90;
+
+
+ f[ 0] = 0.072000; f[ 1] = 0.019000; f[ 2] = 0.039000; f[ 3] = 0.019000;
+ f[ 4] = 0.006000; f[ 5] = 0.025000; f[ 6] = 0.024000; f[ 7] = 0.056000;
+ f[ 8] = 0.028000; f[ 9] = 0.088000; f[10] = 0.169000; f[11] = 0.023000;
+ f[12] = 0.054000; f[13] = 0.061000; f[14] = 0.054000; f[15] = 0.072000;
+ f[16] = 0.086000; f[17] = 0.029000; f[18] = 0.033000; f[19] = 0.043000;
+ }
+ break;
+ case PLL_WAG:
+ {
+ daa[ 1*20+ 0] = 55.15710; daa[ 2*20+ 0] = 50.98480; daa[ 2*20+ 1] = 63.53460;
+ daa[ 3*20+ 0] = 73.89980; daa[ 3*20+ 1] = 14.73040; daa[ 3*20+ 2] = 542.94200;
+ daa[ 4*20+ 0] = 102.70400; daa[ 4*20+ 1] = 52.81910; daa[ 4*20+ 2] = 26.52560;
+ daa[ 4*20+ 3] = 3.02949; daa[ 5*20+ 0] = 90.85980; daa[ 5*20+ 1] = 303.55000;
+ daa[ 5*20+ 2] = 154.36400; daa[ 5*20+ 3] = 61.67830; daa[ 5*20+ 4] = 9.88179;
+ daa[ 6*20+ 0] = 158.28500; daa[ 6*20+ 1] = 43.91570; daa[ 6*20+ 2] = 94.71980;
+ daa[ 6*20+ 3] = 617.41600; daa[ 6*20+ 4] = 2.13520; daa[ 6*20+ 5] = 546.94700;
+ daa[ 7*20+ 0] = 141.67200; daa[ 7*20+ 1] = 58.46650; daa[ 7*20+ 2] = 112.55600;
+ daa[ 7*20+ 3] = 86.55840; daa[ 7*20+ 4] = 30.66740; daa[ 7*20+ 5] = 33.00520;
+ daa[ 7*20+ 6] = 56.77170; daa[ 8*20+ 0] = 31.69540; daa[ 8*20+ 1] = 213.71500;
+ daa[ 8*20+ 2] = 395.62900; daa[ 8*20+ 3] = 93.06760; daa[ 8*20+ 4] = 24.89720;
+ daa[ 8*20+ 5] = 429.41100; daa[ 8*20+ 6] = 57.00250; daa[ 8*20+ 7] = 24.94100;
+ daa[ 9*20+ 0] = 19.33350; daa[ 9*20+ 1] = 18.69790; daa[ 9*20+ 2] = 55.42360;
+ daa[ 9*20+ 3] = 3.94370; daa[ 9*20+ 4] = 17.01350; daa[ 9*20+ 5] = 11.39170;
+ daa[ 9*20+ 6] = 12.73950; daa[ 9*20+ 7] = 3.04501; daa[ 9*20+ 8] = 13.81900;
+ daa[10*20+ 0] = 39.79150; daa[10*20+ 1] = 49.76710; daa[10*20+ 2] = 13.15280;
+ daa[10*20+ 3] = 8.48047; daa[10*20+ 4] = 38.42870; daa[10*20+ 5] = 86.94890;
+ daa[10*20+ 6] = 15.42630; daa[10*20+ 7] = 6.13037; daa[10*20+ 8] = 49.94620;
+ daa[10*20+ 9] = 317.09700; daa[11*20+ 0] = 90.62650; daa[11*20+ 1] = 535.14200;
+ daa[11*20+ 2] = 301.20100; daa[11*20+ 3] = 47.98550; daa[11*20+ 4] = 7.40339;
+ daa[11*20+ 5] = 389.49000; daa[11*20+ 6] = 258.44300; daa[11*20+ 7] = 37.35580;
+ daa[11*20+ 8] = 89.04320; daa[11*20+ 9] = 32.38320; daa[11*20+10] = 25.75550;
+ daa[12*20+ 0] = 89.34960; daa[12*20+ 1] = 68.31620; daa[12*20+ 2] = 19.82210;
+ daa[12*20+ 3] = 10.37540; daa[12*20+ 4] = 39.04820; daa[12*20+ 5] = 154.52600;
+ daa[12*20+ 6] = 31.51240; daa[12*20+ 7] = 17.41000; daa[12*20+ 8] = 40.41410;
+ daa[12*20+ 9] = 425.74600; daa[12*20+10] = 485.40200; daa[12*20+11] = 93.42760;
+ daa[13*20+ 0] = 21.04940; daa[13*20+ 1] = 10.27110; daa[13*20+ 2] = 9.61621;
+ daa[13*20+ 3] = 4.67304; daa[13*20+ 4] = 39.80200; daa[13*20+ 5] = 9.99208;
+ daa[13*20+ 6] = 8.11339; daa[13*20+ 7] = 4.99310; daa[13*20+ 8] = 67.93710;
+ daa[13*20+ 9] = 105.94700; daa[13*20+10] = 211.51700; daa[13*20+11] = 8.88360;
+ daa[13*20+12] = 119.06300; daa[14*20+ 0] = 143.85500; daa[14*20+ 1] = 67.94890;
+ daa[14*20+ 2] = 19.50810; daa[14*20+ 3] = 42.39840; daa[14*20+ 4] = 10.94040;
+ daa[14*20+ 5] = 93.33720; daa[14*20+ 6] = 68.23550; daa[14*20+ 7] = 24.35700;
+ daa[14*20+ 8] = 69.61980; daa[14*20+ 9] = 9.99288; daa[14*20+10] = 41.58440;
+ daa[14*20+11] = 55.68960; daa[14*20+12] = 17.13290; daa[14*20+13] = 16.14440;
+ daa[15*20+ 0] = 337.07900; daa[15*20+ 1] = 122.41900; daa[15*20+ 2] = 397.42300;
+ daa[15*20+ 3] = 107.17600; daa[15*20+ 4] = 140.76600; daa[15*20+ 5] = 102.88700;
+ daa[15*20+ 6] = 70.49390; daa[15*20+ 7] = 134.18200; daa[15*20+ 8] = 74.01690;
+ daa[15*20+ 9] = 31.94400; daa[15*20+10] = 34.47390; daa[15*20+11] = 96.71300;
+ daa[15*20+12] = 49.39050; daa[15*20+13] = 54.59310; daa[15*20+14] = 161.32800;
+ daa[16*20+ 0] = 212.11100; daa[16*20+ 1] = 55.44130; daa[16*20+ 2] = 203.00600;
+ daa[16*20+ 3] = 37.48660; daa[16*20+ 4] = 51.29840; daa[16*20+ 5] = 85.79280;
+ daa[16*20+ 6] = 82.27650; daa[16*20+ 7] = 22.58330; daa[16*20+ 8] = 47.33070;
+ daa[16*20+ 9] = 145.81600; daa[16*20+10] = 32.66220; daa[16*20+11] = 138.69800;
+ daa[16*20+12] = 151.61200; daa[16*20+13] = 17.19030; daa[16*20+14] = 79.53840;
+ daa[16*20+15] = 437.80200; daa[17*20+ 0] = 11.31330; daa[17*20+ 1] = 116.39200;
+ daa[17*20+ 2] = 7.19167; daa[17*20+ 3] = 12.97670; daa[17*20+ 4] = 71.70700;
+ daa[17*20+ 5] = 21.57370; daa[17*20+ 6] = 15.65570; daa[17*20+ 7] = 33.69830;
+ daa[17*20+ 8] = 26.25690; daa[17*20+ 9] = 21.24830; daa[17*20+10] = 66.53090;
+ daa[17*20+11] = 13.75050; daa[17*20+12] = 51.57060; daa[17*20+13] = 152.96400;
+ daa[17*20+14] = 13.94050; daa[17*20+15] = 52.37420; daa[17*20+16] = 11.08640;
+ daa[18*20+ 0] = 24.07350; daa[18*20+ 1] = 38.15330; daa[18*20+ 2] = 108.60000;
+ daa[18*20+ 3] = 32.57110; daa[18*20+ 4] = 54.38330; daa[18*20+ 5] = 22.77100;
+ daa[18*20+ 6] = 19.63030; daa[18*20+ 7] = 10.36040; daa[18*20+ 8] = 387.34400;
+ daa[18*20+ 9] = 42.01700; daa[18*20+10] = 39.86180; daa[18*20+11] = 13.32640;
+ daa[18*20+12] = 42.84370; daa[18*20+13] = 645.42800; daa[18*20+14] = 21.60460;
+ daa[18*20+15] = 78.69930; daa[18*20+16] = 29.11480; daa[18*20+17] = 248.53900;
+ daa[19*20+ 0] = 200.60100; daa[19*20+ 1] = 25.18490; daa[19*20+ 2] = 19.62460;
+ daa[19*20+ 3] = 15.23350; daa[19*20+ 4] = 100.21400; daa[19*20+ 5] = 30.12810;
+ daa[19*20+ 6] = 58.87310; daa[19*20+ 7] = 18.72470; daa[19*20+ 8] = 11.83580;
+ daa[19*20+ 9] = 782.13000; daa[19*20+10] = 180.03400; daa[19*20+11] = 30.54340;
+ daa[19*20+12] = 205.84500; daa[19*20+13] = 64.98920; daa[19*20+14] = 31.48870;
+ daa[19*20+15] = 23.27390; daa[19*20+16] = 138.82300; daa[19*20+17] = 36.53690;
+ daa[19*20+18] = 31.47300;
+
+ f[0] = 0.0866279; f[1] = 0.043972; f[2] = 0.0390894; f[3] = 0.0570451;
+ f[4] = 0.0193078; f[5] = 0.0367281; f[6] = 0.0580589; f[7] = 0.0832518;
+ f[8] = 0.0244313; f[9] = 0.048466; f[10] = 0.086209; f[11] = 0.0620286;
+ f[12] = 0.0195027; f[13] = 0.0384319; f[14] = 0.0457631; f[15] = 0.0695179;
+ f[16] = 0.0610127; f[17] = 0.0143859; f[18] = 0.0352742; f[19] = 0.0708957;
+ }
+ break;
+ case PLL_RTREV:
+ {
+ daa[1*20+0]= 34; daa[2*20+0]= 51; daa[2*20+1]= 35; daa[3*20+0]= 10;
+ daa[3*20+1]= 30; daa[3*20+2]= 384; daa[4*20+0]= 439; daa[4*20+1]= 92;
+ daa[4*20+2]= 128; daa[4*20+3]= 1; daa[5*20+0]= 32; daa[5*20+1]= 221;
+ daa[5*20+2]= 236; daa[5*20+3]= 78; daa[5*20+4]= 70; daa[6*20+0]= 81;
+ daa[6*20+1]= 10; daa[6*20+2]= 79; daa[6*20+3]= 542; daa[6*20+4]= 1;
+ daa[6*20+5]= 372; daa[7*20+0]= 135; daa[7*20+1]= 41; daa[7*20+2]= 94;
+ daa[7*20+3]= 61; daa[7*20+4]= 48; daa[7*20+5]= 18; daa[7*20+6]= 70;
+ daa[8*20+0]= 30; daa[8*20+1]= 90; daa[8*20+2]= 320; daa[8*20+3]= 91;
+ daa[8*20+4]= 124; daa[8*20+5]= 387; daa[8*20+6]= 34; daa[8*20+7]= 68;
+ daa[9*20+0]= 1; daa[9*20+1]= 24; daa[9*20+2]= 35; daa[9*20+3]= 1;
+ daa[9*20+4]= 104; daa[9*20+5]= 33; daa[9*20+6]= 1; daa[9*20+7]= 1;
+ daa[9*20+8]= 34; daa[10*20+0]= 45; daa[10*20+1]= 18; daa[10*20+2]= 15;
+ daa[10*20+3]= 5; daa[10*20+4]= 110; daa[10*20+5]= 54; daa[10*20+6]= 21;
+ daa[10*20+7]= 3; daa[10*20+8]= 51; daa[10*20+9]= 385; daa[11*20+0]= 38;
+ daa[11*20+1]= 593; daa[11*20+2]= 123; daa[11*20+3]= 20; daa[11*20+4]= 16;
+ daa[11*20+5]= 309; daa[11*20+6]= 141; daa[11*20+7]= 30; daa[11*20+8]= 76;
+ daa[11*20+9]= 34; daa[11*20+10]= 23; daa[12*20+0]= 235; daa[12*20+1]= 57;
+ daa[12*20+2]= 1; daa[12*20+3]= 1; daa[12*20+4]= 156; daa[12*20+5]= 158;
+ daa[12*20+6]= 1; daa[12*20+7]= 37; daa[12*20+8]= 116; daa[12*20+9]= 375;
+ daa[12*20+10]= 581; daa[12*20+11]= 134; daa[13*20+0]= 1; daa[13*20+1]= 7;
+ daa[13*20+2]= 49; daa[13*20+3]= 1; daa[13*20+4]= 70; daa[13*20+5]= 1;
+ daa[13*20+6]= 1; daa[13*20+7]= 7; daa[13*20+8]= 141; daa[13*20+9]= 64;
+ daa[13*20+10]= 179; daa[13*20+11]= 14; daa[13*20+12]= 247; daa[14*20+0]= 97;
+ daa[14*20+1]= 24; daa[14*20+2]= 33; daa[14*20+3]= 55; daa[14*20+4]= 1;
+ daa[14*20+5]= 68; daa[14*20+6]= 52; daa[14*20+7]= 17; daa[14*20+8]= 44;
+ daa[14*20+9]= 10; daa[14*20+10]= 22; daa[14*20+11]= 43; daa[14*20+12]= 1;
+ daa[14*20+13]= 11; daa[15*20+0]= 460; daa[15*20+1]= 102; daa[15*20+2]= 294;
+ daa[15*20+3]= 136; daa[15*20+4]= 75; daa[15*20+5]= 225; daa[15*20+6]= 95;
+ daa[15*20+7]= 152; daa[15*20+8]= 183; daa[15*20+9]= 4; daa[15*20+10]= 24;
+ daa[15*20+11]= 77; daa[15*20+12]= 1; daa[15*20+13]= 20; daa[15*20+14]= 134;
+ daa[16*20+0]= 258; daa[16*20+1]= 64; daa[16*20+2]= 148; daa[16*20+3]= 55;
+ daa[16*20+4]= 117; daa[16*20+5]= 146; daa[16*20+6]= 82; daa[16*20+7]= 7;
+ daa[16*20+8]= 49; daa[16*20+9]= 72; daa[16*20+10]= 25; daa[16*20+11]= 110;
+ daa[16*20+12]= 131; daa[16*20+13]= 69; daa[16*20+14]= 62; daa[16*20+15]= 671;
+ daa[17*20+0]= 5; daa[17*20+1]= 13; daa[17*20+2]= 16; daa[17*20+3]= 1;
+ daa[17*20+4]= 55; daa[17*20+5]= 10; daa[17*20+6]= 17; daa[17*20+7]= 23;
+ daa[17*20+8]= 48; daa[17*20+9]= 39; daa[17*20+10]= 47; daa[17*20+11]= 6;
+ daa[17*20+12]= 111; daa[17*20+13]= 182; daa[17*20+14]= 9; daa[17*20+15]= 14;
+ daa[17*20+16]= 1; daa[18*20+0]= 55; daa[18*20+1]= 47; daa[18*20+2]= 28;
+ daa[18*20+3]= 1; daa[18*20+4]= 131; daa[18*20+5]= 45; daa[18*20+6]= 1;
+ daa[18*20+7]= 21; daa[18*20+8]= 307; daa[18*20+9]= 26; daa[18*20+10]= 64;
+ daa[18*20+11]= 1; daa[18*20+12]= 74; daa[18*20+13]= 1017; daa[18*20+14]= 14;
+ daa[18*20+15]= 31; daa[18*20+16]= 34; daa[18*20+17]= 176; daa[19*20+0]= 197;
+ daa[19*20+1]= 29; daa[19*20+2]= 21; daa[19*20+3]= 6; daa[19*20+4]= 295;
+ daa[19*20+5]= 36; daa[19*20+6]= 35; daa[19*20+7]= 3; daa[19*20+8]= 1;
+ daa[19*20+9]= 1048; daa[19*20+10]= 112; daa[19*20+11]= 19; daa[19*20+12]= 236;
+ daa[19*20+13]= 92; daa[19*20+14]= 25; daa[19*20+15]= 39; daa[19*20+16]= 196;
+ daa[19*20+17]= 26; daa[19*20+18]= 59;
+
+ f[0]= 0.0646; f[1]= 0.0453; f[2]= 0.0376; f[3]= 0.0422;
+ f[4]= 0.0114; f[5]= 0.0606; f[6]= 0.0607; f[7]= 0.0639;
+ f[8]= 0.0273; f[9]= 0.0679; f[10]= 0.1018; f[11]= 0.0751;
+ f[12]= 0.015; f[13]= 0.0287; f[14]= 0.0681; f[15]= 0.0488;
+ f[16]= 0.0622; f[17]= 0.0251; f[18]= 0.0318; f[19]= 0.0619;
+ }
+ break;
+ case PLL_CPREV:
+ {
+ daa[1*20+0]= 105; daa[2*20+0]= 227; daa[2*20+1]= 357; daa[3*20+0]= 175;
+ daa[3*20+1]= 43; daa[3*20+2]= 4435; daa[4*20+0]= 669; daa[4*20+1]= 823;
+ daa[4*20+2]= 538; daa[4*20+3]= 10; daa[5*20+0]= 157; daa[5*20+1]= 1745;
+ daa[5*20+2]= 768; daa[5*20+3]= 400; daa[5*20+4]= 10; daa[6*20+0]= 499;
+ daa[6*20+1]= 152; daa[6*20+2]= 1055; daa[6*20+3]= 3691; daa[6*20+4]= 10;
+ daa[6*20+5]= 3122; daa[7*20+0]= 665; daa[7*20+1]= 243; daa[7*20+2]= 653;
+ daa[7*20+3]= 431; daa[7*20+4]= 303; daa[7*20+5]= 133; daa[7*20+6]= 379;
+ daa[8*20+0]= 66; daa[8*20+1]= 715; daa[8*20+2]= 1405; daa[8*20+3]= 331;
+ daa[8*20+4]= 441; daa[8*20+5]= 1269; daa[8*20+6]= 162; daa[8*20+7]= 19;
+ daa[9*20+0]= 145; daa[9*20+1]= 136; daa[9*20+2]= 168; daa[9*20+3]= 10;
+ daa[9*20+4]= 280; daa[9*20+5]= 92; daa[9*20+6]= 148; daa[9*20+7]= 40;
+ daa[9*20+8]= 29; daa[10*20+0]= 197; daa[10*20+1]= 203; daa[10*20+2]= 113;
+ daa[10*20+3]= 10; daa[10*20+4]= 396; daa[10*20+5]= 286; daa[10*20+6]= 82;
+ daa[10*20+7]= 20; daa[10*20+8]= 66; daa[10*20+9]= 1745; daa[11*20+0]= 236;
+ daa[11*20+1]= 4482; daa[11*20+2]= 2430; daa[11*20+3]= 412; daa[11*20+4]= 48;
+ daa[11*20+5]= 3313; daa[11*20+6]= 2629; daa[11*20+7]= 263; daa[11*20+8]= 305;
+ daa[11*20+9]= 345; daa[11*20+10]= 218; daa[12*20+0]= 185; daa[12*20+1]= 125;
+ daa[12*20+2]= 61; daa[12*20+3]= 47; daa[12*20+4]= 159; daa[12*20+5]= 202;
+ daa[12*20+6]= 113; daa[12*20+7]= 21; daa[12*20+8]= 10; daa[12*20+9]= 1772;
+ daa[12*20+10]= 1351; daa[12*20+11]= 193; daa[13*20+0]= 68; daa[13*20+1]= 53;
+ daa[13*20+2]= 97; daa[13*20+3]= 22; daa[13*20+4]= 726; daa[13*20+5]= 10;
+ daa[13*20+6]= 145; daa[13*20+7]= 25; daa[13*20+8]= 127; daa[13*20+9]= 454;
+ daa[13*20+10]= 1268; daa[13*20+11]= 72; daa[13*20+12]= 327; daa[14*20+0]= 490;
+ daa[14*20+1]= 87; daa[14*20+2]= 173; daa[14*20+3]= 170; daa[14*20+4]= 285;
+ daa[14*20+5]= 323; daa[14*20+6]= 185; daa[14*20+7]= 28; daa[14*20+8]= 152;
+ daa[14*20+9]= 117; daa[14*20+10]= 219; daa[14*20+11]= 302; daa[14*20+12]= 100;
+ daa[14*20+13]= 43; daa[15*20+0]= 2440; daa[15*20+1]= 385; daa[15*20+2]= 2085;
+ daa[15*20+3]= 590; daa[15*20+4]= 2331; daa[15*20+5]= 396; daa[15*20+6]= 568;
+ daa[15*20+7]= 691; daa[15*20+8]= 303; daa[15*20+9]= 216; daa[15*20+10]= 516;
+ daa[15*20+11]= 868; daa[15*20+12]= 93; daa[15*20+13]= 487; daa[15*20+14]= 1202;
+ daa[16*20+0]= 1340; daa[16*20+1]= 314; daa[16*20+2]= 1393; daa[16*20+3]= 266;
+ daa[16*20+4]= 576; daa[16*20+5]= 241; daa[16*20+6]= 369; daa[16*20+7]= 92;
+ daa[16*20+8]= 32; daa[16*20+9]= 1040; daa[16*20+10]= 156; daa[16*20+11]= 918;
+ daa[16*20+12]= 645; daa[16*20+13]= 148; daa[16*20+14]= 260; daa[16*20+15]= 2151;
+ daa[17*20+0]= 14; daa[17*20+1]= 230; daa[17*20+2]= 40; daa[17*20+3]= 18;
+ daa[17*20+4]= 435; daa[17*20+5]= 53; daa[17*20+6]= 63; daa[17*20+7]= 82;
+ daa[17*20+8]= 69; daa[17*20+9]= 42; daa[17*20+10]= 159; daa[17*20+11]= 10;
+ daa[17*20+12]= 86; daa[17*20+13]= 468; daa[17*20+14]= 49; daa[17*20+15]= 73;
+ daa[17*20+16]= 29; daa[18*20+0]= 56; daa[18*20+1]= 323; daa[18*20+2]= 754;
+ daa[18*20+3]= 281; daa[18*20+4]= 1466; daa[18*20+5]= 391; daa[18*20+6]= 142;
+ daa[18*20+7]= 10; daa[18*20+8]= 1971; daa[18*20+9]= 89; daa[18*20+10]= 189;
+ daa[18*20+11]= 247; daa[18*20+12]= 215; daa[18*20+13]= 2370; daa[18*20+14]= 97;
+ daa[18*20+15]= 522; daa[18*20+16]= 71; daa[18*20+17]= 346; daa[19*20+0]= 968;
+ daa[19*20+1]= 92; daa[19*20+2]= 83; daa[19*20+3]= 75; daa[19*20+4]= 592;
+ daa[19*20+5]= 54; daa[19*20+6]= 200; daa[19*20+7]= 91; daa[19*20+8]= 25;
+ daa[19*20+9]= 4797; daa[19*20+10]= 865; daa[19*20+11]= 249; daa[19*20+12]= 475;
+ daa[19*20+13]= 317; daa[19*20+14]= 122; daa[19*20+15]= 167; daa[19*20+16]= 760;
+ daa[19*20+17]= 10; daa[19*20+18]= 119;
+
+ f[0]= 0.076; f[1]= 0.062; f[2]= 0.041; f[3]= 0.037;
+ f[4]= 0.009; f[5]= 0.038; f[6]= 0.049; f[7]= 0.084;
+ f[8]= 0.025; f[9]= 0.081; f[10]= 0.101; f[11]= 0.05;
+ f[12]= 0.022; f[13]= 0.051; f[14]= 0.043; f[15]= 0.062;
+ f[16]= 0.054; f[17]= 0.018; f[18]= 0.031; f[19]= 0.066;
+ }
+ break;
+ case PLL_VT:
+ {
+ /*
+ daa[1*20+0]= 0.233108; daa[2*20+0]= 0.199097; daa[2*20+1]= 0.210797; daa[3*20+0]= 0.265145;
+ daa[3*20+1]= 0.105191; daa[3*20+2]= 0.883422; daa[4*20+0]= 0.227333; daa[4*20+1]= 0.031726;
+ daa[4*20+2]= 0.027495; daa[4*20+3]= 0.010313; daa[5*20+0]= 0.310084; daa[5*20+1]= 0.493763;
+ daa[5*20+2]= 0.2757; daa[5*20+3]= 0.205842; daa[5*20+4]= 0.004315; daa[6*20+0]= 0.567957;
+ daa[6*20+1]= 0.25524; daa[6*20+2]= 0.270417; daa[6*20+3]= 1.599461; daa[6*20+4]= 0.005321;
+ daa[6*20+5]= 0.960976; daa[7*20+0]= 0.876213; daa[7*20+1]= 0.156945; daa[7*20+2]= 0.362028;
+ daa[7*20+3]= 0.311718; daa[7*20+4]= 0.050876; daa[7*20+5]= 0.12866; daa[7*20+6]= 0.250447;
+ daa[8*20+0]= 0.078692; daa[8*20+1]= 0.213164; daa[8*20+2]= 0.290006; daa[8*20+3]= 0.134252;
+ daa[8*20+4]= 0.016695; daa[8*20+5]= 0.315521; daa[8*20+6]= 0.104458; daa[8*20+7]= 0.058131;
+ daa[9*20+0]= 0.222972; daa[9*20+1]= 0.08151; daa[9*20+2]= 0.087225; daa[9*20+3]= 0.01172;
+ daa[9*20+4]= 0.046398; daa[9*20+5]= 0.054602; daa[9*20+6]= 0.046589; daa[9*20+7]= 0.051089;
+ daa[9*20+8]= 0.020039; daa[10*20+0]= 0.42463; daa[10*20+1]= 0.192364; daa[10*20+2]= 0.069245;
+ daa[10*20+3]= 0.060863; daa[10*20+4]= 0.091709; daa[10*20+5]= 0.24353; daa[10*20+6]= 0.151924;
+ daa[10*20+7]= 0.087056; daa[10*20+8]= 0.103552; daa[10*20+9]= 2.08989; daa[11*20+0]= 0.393245;
+ daa[11*20+1]= 1.755838; daa[11*20+2]= 0.50306; daa[11*20+3]= 0.261101; daa[11*20+4]= 0.004067;
+ daa[11*20+5]= 0.738208; daa[11*20+6]= 0.88863; daa[11*20+7]= 0.193243; daa[11*20+8]= 0.153323;
+ daa[11*20+9]= 0.093181; daa[11*20+10]= 0.201204; daa[12*20+0]= 0.21155; daa[12*20+1]= 0.08793;
+ daa[12*20+2]= 0.05742; daa[12*20+3]= 0.012182; daa[12*20+4]= 0.02369; daa[12*20+5]= 0.120801;
+ daa[12*20+6]= 0.058643; daa[12*20+7]= 0.04656; daa[12*20+8]= 0.021157; daa[12*20+9]= 0.493845;
+ daa[12*20+10]= 1.105667; daa[12*20+11]= 0.096474; daa[13*20+0]= 0.116646; daa[13*20+1]= 0.042569;
+ daa[13*20+2]= 0.039769; daa[13*20+3]= 0.016577; daa[13*20+4]= 0.051127; daa[13*20+5]= 0.026235;
+ daa[13*20+6]= 0.028168; daa[13*20+7]= 0.050143; daa[13*20+8]= 0.079807; daa[13*20+9]= 0.32102;
+ daa[13*20+10]= 0.946499; daa[13*20+11]= 0.038261; daa[13*20+12]= 0.173052; daa[14*20+0]= 0.399143;
+ daa[14*20+1]= 0.12848; daa[14*20+2]= 0.083956; daa[14*20+3]= 0.160063; daa[14*20+4]= 0.011137;
+ daa[14*20+5]= 0.15657; daa[14*20+6]= 0.205134; daa[14*20+7]= 0.124492; daa[14*20+8]= 0.078892;
+ daa[14*20+9]= 0.054797; daa[14*20+10]= 0.169784; daa[14*20+11]= 0.212302; daa[14*20+12]= 0.010363;
+ daa[14*20+13]= 0.042564; daa[15*20+0]= 1.817198; daa[15*20+1]= 0.292327; daa[15*20+2]= 0.847049;
+ daa[15*20+3]= 0.461519; daa[15*20+4]= 0.17527; daa[15*20+5]= 0.358017; daa[15*20+6]= 0.406035;
+ daa[15*20+7]= 0.612843; daa[15*20+8]= 0.167406; daa[15*20+9]= 0.081567; daa[15*20+10]= 0.214977;
+ daa[15*20+11]= 0.400072; daa[15*20+12]= 0.090515; daa[15*20+13]= 0.138119; daa[15*20+14]= 0.430431;
+ daa[16*20+0]= 0.877877; daa[16*20+1]= 0.204109; daa[16*20+2]= 0.471268; daa[16*20+3]= 0.178197;
+ daa[16*20+4]= 0.079511; daa[16*20+5]= 0.248992; daa[16*20+6]= 0.321028; daa[16*20+7]= 0.136266;
+ daa[16*20+8]= 0.101117; daa[16*20+9]= 0.376588; daa[16*20+10]= 0.243227; daa[16*20+11]= 0.446646;
+ daa[16*20+12]= 0.184609; daa[16*20+13]= 0.08587; daa[16*20+14]= 0.207143; daa[16*20+15]= 1.767766;
+ daa[17*20+0]= 0.030309; daa[17*20+1]= 0.046417; daa[17*20+2]= 0.010459; daa[17*20+3]= 0.011393;
+ daa[17*20+4]= 0.007732; daa[17*20+5]= 0.021248; daa[17*20+6]= 0.018844; daa[17*20+7]= 0.02399;
+ daa[17*20+8]= 0.020009; daa[17*20+9]= 0.034954; daa[17*20+10]= 0.083439; daa[17*20+11]= 0.023321;
+ daa[17*20+12]= 0.022019; daa[17*20+13]= 0.12805; daa[17*20+14]= 0.014584; daa[17*20+15]= 0.035933;
+ daa[17*20+16]= 0.020437; daa[18*20+0]= 0.087061; daa[18*20+1]= 0.09701; daa[18*20+2]= 0.093268;
+ daa[18*20+3]= 0.051664; daa[18*20+4]= 0.042823; daa[18*20+5]= 0.062544; daa[18*20+6]= 0.0552;
+ daa[18*20+7]= 0.037568; daa[18*20+8]= 0.286027; daa[18*20+9]= 0.086237; daa[18*20+10]= 0.189842;
+ daa[18*20+11]= 0.068689; daa[18*20+12]= 0.073223; daa[18*20+13]= 0.898663; daa[18*20+14]= 0.032043;
+ daa[18*20+15]= 0.121979; daa[18*20+16]= 0.094617; daa[18*20+17]= 0.124746; daa[19*20+0]= 1.230985;
+ daa[19*20+1]= 0.113146; daa[19*20+2]= 0.049824; daa[19*20+3]= 0.048769; daa[19*20+4]= 0.163831;
+ daa[19*20+5]= 0.112027; daa[19*20+6]= 0.205868; daa[19*20+7]= 0.082579; daa[19*20+8]= 0.068575;
+ daa[19*20+9]= 3.65443; daa[19*20+10]= 1.337571; daa[19*20+11]= 0.144587; daa[19*20+12]= 0.307309;
+ daa[19*20+13]= 0.247329; daa[19*20+14]= 0.129315; daa[19*20+15]= 0.1277; daa[19*20+16]= 0.740372;
+ daa[19*20+17]= 0.022134; daa[19*20+18]= 0.125733;
+
+ f[0] = 0.07900; f[1]= 0.05100; f[2] = 0.04200; f[3]= 0.05300;
+ f[4] = 0.01500; f[5]= 0.03700; f[6] = 0.06200; f[7]= 0.07100;
+ f[8] = 0.02300; f[9]= 0.06200; f[10] = 0.09600; f[11]= 0.05700;
+ f[12] = 0.02400; f[13]= 0.04300; f[14] = 0.04400; f[15]= 0.06400;
+ f[16] = 0.05600; f[17]= 0.01300; f[18] = 0.03500; f[19]= 0.07300;
+ */
+
+ daa[1*20+0]= 1.2412691067876198;
+ daa[2*20+0]= 1.2184237953498958;
+ daa[2*20+1]= 1.5720770753326880;
+ daa[3*20+0]= 1.3759368509441177;
+ daa[3*20+1]= 0.7550654439001206;
+ daa[3*20+2]= 7.8584219153689405;
+ daa[4*20+0]= 2.4731223087544874;
+ daa[4*20+1]= 1.4414262567428417;
+ daa[4*20+2]= 0.9784679122774127;
+ daa[4*20+3]= 0.2272488448121475;
+ daa[5*20+0]= 2.2155167805137470;
+ daa[5*20+1]= 5.5120819705248678;
+ daa[5*20+2]= 3.0143201670924822;
+ daa[5*20+3]= 1.6562495638176040;
+ daa[5*20+4]= 0.4587469126746136;
+ daa[6*20+0]= 2.3379911207495061;
+ daa[6*20+1]= 1.3542404860613146;
+ daa[6*20+2]= 2.0093434778398112;
+ daa[6*20+3]= 9.6883451875685065;
+ daa[6*20+4]= 0.4519167943192672;
+ daa[6*20+5]= 6.8124601839937675;
+ daa[7*20+0]= 3.3386555146457697;
+ daa[7*20+1]= 1.3121700301622004;
+ daa[7*20+2]= 2.4117632898861809;
+ daa[7*20+3]= 1.9142079025990228;
+ daa[7*20+4]= 1.1034605684472507;
+ daa[7*20+5]= 0.8776110594765502;
+ daa[7*20+6]= 1.3860121390169038;
+ daa[8*20+0]= 0.9615841926910841;
+ daa[8*20+1]= 4.9238668283945266;
+ daa[8*20+2]= 6.1974384977884114;
+ daa[8*20+3]= 2.1459640610133781;
+ daa[8*20+4]= 1.5196756759380692;
+ daa[8*20+5]= 7.9943228564946525;
+ daa[8*20+6]= 1.6360079688522375;
+ daa[8*20+7]= 0.8561248973045037;
+ daa[9*20+0]= 0.8908203061925510;
+ daa[9*20+1]= 0.4323005487925516;
+ daa[9*20+2]= 0.9179291175331520;
+ daa[9*20+3]= 0.2161660372725585;
+ daa[9*20+4]= 0.9126668032539315;
+ daa[9*20+5]= 0.4882733432879921;
+ daa[9*20+6]= 0.4035497929633328;
+ daa[9*20+7]= 0.2888075033037488;
+ daa[9*20+8]= 0.5787937115407940;
+ daa[10*20+0]= 1.0778497408764076;
+ daa[10*20+1]= 0.8386701149158265;
+ daa[10*20+2]= 0.4098311270816011;
+ daa[10*20+3]= 0.3574207468998517;
+ daa[10*20+4]= 1.4081315998413697;
+ daa[10*20+5]= 1.3318097154194044;
+ daa[10*20+6]= 0.5610717242294755;
+ daa[10*20+7]= 0.3578662395745526;
+ daa[10*20+8]= 1.0765007949562073;
+ daa[10*20+9]= 6.0019110258426362;
+ daa[11*20+0]= 1.4932055816372476;
+ daa[11*20+1]= 10.017330817366002;
+ daa[11*20+2]= 4.4034547578962568;
+ daa[11*20+3]= 1.4521790561663968;
+ daa[11*20+4]= 0.3371091785647479;
+ daa[11*20+5]= 6.0519085243118811;
+ daa[11*20+6]= 4.3290086529582830;
+ daa[11*20+7]= 0.8945563662345198;
+ daa[11*20+8]= 1.8085136096039203;
+ daa[11*20+9]= 0.6244297525127139;
+ daa[11*20+10]= 0.5642322882556321;
+ daa[12*20+0]= 1.9006455961717605;
+ daa[12*20+1]= 1.2488638689609959;
+ daa[12*20+2]= 0.9378803706165143;
+ daa[12*20+3]= 0.4075239926000898;
+ daa[12*20+4]= 1.2213054800811556;
+ daa[12*20+5]= 1.9106190827629084;
+ daa[12*20+6]= 0.7471936218068498;
+ daa[12*20+7]= 0.5954812791740037;
+ daa[12*20+8]= 1.3808291710019667;
+ daa[12*20+9]= 6.7597899772045418;
+ daa[12*20+10]= 8.0327792947421148;
+ daa[12*20+11]= 1.7129670976916258;
+ daa[13*20+0]= 0.6883439026872615;
+ daa[13*20+1]= 0.4224945197276290;
+ daa[13*20+2]= 0.5044944273324311;
+ daa[13*20+3]= 0.1675129724559251;
+ daa[13*20+4]= 1.6953951980808002;
+ daa[13*20+5]= 0.3573432522499545;
+ daa[13*20+6]= 0.2317194387691585;
+ daa[13*20+7]= 0.3693722640980460;
+ daa[13*20+8]= 1.3629765501081097;
+ daa[13*20+9]= 2.2864286949316077;
+ daa[13*20+10]= 4.3611548063555778;
+ daa[13*20+11]= 0.3910559903834828;
+ daa[13*20+12]= 2.3201373546296349;
+ daa[14*20+0]= 2.7355620089953550;
+ daa[14*20+1]= 1.3091837782420783;
+ daa[14*20+2]= 0.7103720531974738;
+ daa[14*20+3]= 1.0714605979577547;
+ daa[14*20+4]= 0.4326227078645523;
+ daa[14*20+5]= 2.3019177728300728;
+ daa[14*20+6]= 1.5132807416252063;
+ daa[14*20+7]= 0.7744933618134962;
+ daa[14*20+8]= 1.8370555852070649;
+ daa[14*20+9]= 0.4811402387911145;
+ daa[14*20+10]= 1.0084320519837335;
+ daa[14*20+11]= 1.3918935593582853;
+ daa[14*20+12]= 0.4953193808676289;
+ daa[14*20+13]= 0.3746821107962129;
+ daa[15*20+0]= 6.4208961859142883;
+ daa[15*20+1]= 1.9202994262316166;
+ daa[15*20+2]= 6.1234512396801764;
+ daa[15*20+3]= 2.2161944596741829;
+ daa[15*20+4]= 3.6366815408744255;
+ daa[15*20+5]= 2.3193703643237220;
+ daa[15*20+6]= 1.8273535587773553;
+ daa[15*20+7]= 3.0637776193717610;
+ daa[15*20+8]= 1.9699895187387506;
+ daa[15*20+9]= 0.6047491507504744;
+ daa[15*20+10]= 0.8953754669269811;
+ daa[15*20+11]= 1.9776630140912268;
+ daa[15*20+12]= 1.0657482318076852;
+ daa[15*20+13]= 1.1079144700606407;
+ daa[15*20+14]= 3.5465914843628927;
+ daa[16*20+0]= 5.2892514169776437;
+ daa[16*20+1]= 1.3363401740560601;
+ daa[16*20+2]= 3.8852506105922231;
+ daa[16*20+3]= 1.5066839872944762;
+ daa[16*20+4]= 1.7557065205837685;
+ daa[16*20+5]= 2.1576510103471440;
+ daa[16*20+6]= 1.5839981708584689;
+ daa[16*20+7]= 0.7147489676267383;
+ daa[16*20+8]= 1.6136654573285647;
+ daa[16*20+9]= 2.6344778384442731;
+ daa[16*20+10]= 1.0192004372506540;
+ daa[16*20+11]= 2.5513781312660280;
+ daa[16*20+12]= 3.3628488360462363;
+ daa[16*20+13]= 0.6882725908872254;
+ daa[16*20+14]= 1.9485376673137556;
+ daa[16*20+15]= 8.8479984061248178;
+ daa[17*20+0]= 0.5488578478106930;
+ daa[17*20+1]= 1.5170142153962840;
+ daa[17*20+2]= 0.1808525752605976;
+ daa[17*20+3]= 0.2496584188151770;
+ daa[17*20+4]= 1.6275179891253113;
+ daa[17*20+5]= 0.8959082681546182;
+ daa[17*20+6]= 0.4198391148111098;
+ daa[17*20+7]= 0.9349753595598769;
+ daa[17*20+8]= 0.6301954684360302;
+ daa[17*20+9]= 0.5604648274060783;
+ daa[17*20+10]= 1.5183114434679339;
+ daa[17*20+11]= 0.5851920879490173;
+ daa[17*20+12]= 1.4680478689711018;
+ daa[17*20+13]= 3.3448437239772266;
+ daa[17*20+14]= 0.4326058001438786;
+ daa[17*20+15]= 0.6791126595939816;
+ daa[17*20+16]= 0.4514203099376473;
+ daa[18*20+0]= 0.5411769916657778;
+ daa[18*20+1]= 0.8912614404565405;
+ daa[18*20+2]= 1.0894926581511342;
+ daa[18*20+3]= 0.7447620891784513;
+ daa[18*20+4]= 2.1579775140421025;
+ daa[18*20+5]= 0.9183596801412757;
+ daa[18*20+6]= 0.5818111331782764;
+ daa[18*20+7]= 0.3374467649724478;
+ daa[18*20+8]= 7.7587442309146040;
+ daa[18*20+9]= 0.8626796044156272;
+ daa[18*20+10]= 1.2452243224541324;
+ daa[18*20+11]= 0.7835447533710449;
+ daa[18*20+12]= 1.0899165770956820;
+ daa[18*20+13]= 10.384852333133459;
+ daa[18*20+14]= 0.4819109019647465;
+ daa[18*20+15]= 0.9547229305958682;
+ daa[18*20+16]= 0.8564314184691215;
+ daa[18*20+17]= 4.5377235790405388;
+ daa[19*20+0]= 4.6501894691803214;
+ daa[19*20+1]= 0.7807017855806767;
+ daa[19*20+2]= 0.4586061981719967;
+ daa[19*20+3]= 0.4594535241660911;
+ daa[19*20+4]= 2.2627456996290891;
+ daa[19*20+5]= 0.6366932501396869;
+ daa[19*20+6]= 0.8940572875547330;
+ daa[19*20+7]= 0.6193321034173915;
+ daa[19*20+8]= 0.5333220944030346;
+ daa[19*20+9]= 14.872933461519061;
+ daa[19*20+10]= 3.5458093276667237;
+ daa[19*20+11]= 0.7801080335991272;
+ daa[19*20+12]= 4.0584577156753401;
+ daa[19*20+13]= 1.7039730522675411;
+ daa[19*20+14]= 0.5985498912985666;
+ daa[19*20+15]= 0.9305232113028208;
+ daa[19*20+16]= 3.4242218450865543;
+ daa[19*20+17]= 0.5658969249032649;
+ daa[19*20+18]= 1.0000000000000000;
+
+ f[0]= 0.0770764620135024;
+ f[1]= 0.0500819370772208;
+ f[2]= 0.0462377395993731;
+ f[3]= 0.0537929860758246;
+ f[4]= 0.0144533387583345;
+ f[5]= 0.0408923608974345;
+ f[6]= 0.0633579339160905;
+ f[7]= 0.0655672355884439;
+ f[8]= 0.0218802687005936;
+ f[9]= 0.0591969699027449;
+ f[10]= 0.0976461276528445;
+ f[11]= 0.0592079410822730;
+ f[12]= 0.0220695876653368;
+ f[13]= 0.0413508521834260;
+ f[14]= 0.0476871596856874;
+ f[15]= 0.0707295165111524;
+ f[16]= 0.0567759161524817;
+ f[17]= 0.0127019797647213;
+ f[18]= 0.0323746050281867;
+ f[19]= 0.0669190817443274;
+ }
+ break;
+ case PLL_BLOSUM62:
+ {
+ daa[1*20+0]= 0.735790389698; daa[2*20+0]= 0.485391055466; daa[2*20+1]= 1.297446705134;
+ daa[3*20+0]= 0.543161820899;
+ daa[3*20+1]= 0.500964408555; daa[3*20+2]= 3.180100048216; daa[4*20+0]= 1.45999531047;
+ daa[4*20+1]= 0.227826574209;
+ daa[4*20+2]= 0.397358949897; daa[4*20+3]= 0.240836614802; daa[5*20+0]= 1.199705704602;
+ daa[5*20+1]= 3.020833610064;
+ daa[5*20+2]= 1.839216146992; daa[5*20+3]= 1.190945703396; daa[5*20+4]= 0.32980150463;
+ daa[6*20+0]= 1.1709490428;
+ daa[6*20+1]= 1.36057419042; daa[6*20+2]= 1.24048850864; daa[6*20+3]= 3.761625208368;
+ daa[6*20+4]= 0.140748891814;
+ daa[6*20+5]= 5.528919177928; daa[7*20+0]= 1.95588357496; daa[7*20+1]= 0.418763308518;
+ daa[7*20+2]= 1.355872344485;
+ daa[7*20+3]= 0.798473248968; daa[7*20+4]= 0.418203192284; daa[7*20+5]= 0.609846305383;
+ daa[7*20+6]= 0.423579992176;
+ daa[8*20+0]= 0.716241444998; daa[8*20+1]= 1.456141166336; daa[8*20+2]= 2.414501434208;
+ daa[8*20+3]= 0.778142664022;
+ daa[8*20+4]= 0.354058109831; daa[8*20+5]= 2.43534113114; daa[8*20+6]= 1.626891056982;
+ daa[8*20+7]= 0.539859124954;
+ daa[9*20+0]= 0.605899003687; daa[9*20+1]= 0.232036445142; daa[9*20+2]= 0.283017326278;
+ daa[9*20+3]= 0.418555732462;
+ daa[9*20+4]= 0.774894022794; daa[9*20+5]= 0.236202451204; daa[9*20+6]= 0.186848046932;
+ daa[9*20+7]= 0.189296292376;
+ daa[9*20+8]= 0.252718447885; daa[10*20+0]= 0.800016530518; daa[10*20+1]= 0.622711669692;
+ daa[10*20+2]= 0.211888159615;
+ daa[10*20+3]= 0.218131577594; daa[10*20+4]= 0.831842640142; daa[10*20+5]= 0.580737093181;
+ daa[10*20+6]= 0.372625175087;
+ daa[10*20+7]= 0.217721159236; daa[10*20+8]= 0.348072209797; daa[10*20+9]= 3.890963773304;
+ daa[11*20+0]= 1.295201266783;
+ daa[11*20+1]= 5.411115141489; daa[11*20+2]= 1.593137043457; daa[11*20+3]= 1.032447924952;
+ daa[11*20+4]= 0.285078800906;
+ daa[11*20+5]= 3.945277674515; daa[11*20+6]= 2.802427151679; daa[11*20+7]= 0.752042440303;
+ daa[11*20+8]= 1.022507035889;
+ daa[11*20+9]= 0.406193586642; daa[11*20+10]= 0.445570274261;daa[12*20+0]= 1.253758266664;
+ daa[12*20+1]= 0.983692987457;
+ daa[12*20+2]= 0.648441278787; daa[12*20+3]= 0.222621897958; daa[12*20+4]= 0.76768882348;
+ daa[12*20+5]= 2.494896077113;
+ daa[12*20+6]= 0.55541539747; daa[12*20+7]= 0.459436173579; daa[12*20+8]= 0.984311525359;
+ daa[12*20+9]= 3.364797763104;
+ daa[12*20+10]= 6.030559379572;daa[12*20+11]= 1.073061184332;daa[13*20+0]= 0.492964679748;
+ daa[13*20+1]= 0.371644693209;
+ daa[13*20+2]= 0.354861249223; daa[13*20+3]= 0.281730694207; daa[13*20+4]= 0.441337471187;
+ daa[13*20+5]= 0.14435695975;
+ daa[13*20+6]= 0.291409084165; daa[13*20+7]= 0.368166464453; daa[13*20+8]= 0.714533703928;
+ daa[13*20+9]= 1.517359325954;
+ daa[13*20+10]= 2.064839703237;daa[13*20+11]= 0.266924750511;daa[13*20+12]= 1.77385516883;
+ daa[14*20+0]= 1.173275900924;
+ daa[14*20+1]= 0.448133661718; daa[14*20+2]= 0.494887043702; daa[14*20+3]= 0.730628272998;
+ daa[14*20+4]= 0.356008498769;
+ daa[14*20+5]= 0.858570575674; daa[14*20+6]= 0.926563934846; daa[14*20+7]= 0.504086599527; daa[14*20+8]= 0.527007339151;
+ daa[14*20+9]= 0.388355409206; daa[14*20+10]= 0.374555687471;daa[14*20+11]= 1.047383450722;daa[14*20+12]= 0.454123625103;
+ daa[14*20+13]= 0.233597909629;daa[15*20+0]= 4.325092687057; daa[15*20+1]= 1.12278310421; daa[15*20+2]= 2.904101656456;
+ daa[15*20+3]= 1.582754142065; daa[15*20+4]= 1.197188415094; daa[15*20+5]= 1.934870924596; daa[15*20+6]= 1.769893238937;
+ daa[15*20+7]= 1.509326253224; daa[15*20+8]= 1.11702976291; daa[15*20+9]= 0.35754441246; daa[15*20+10]= 0.352969184527;
+ daa[15*20+11]= 1.752165917819;daa[15*20+12]= 0.918723415746;daa[15*20+13]= 0.540027644824;daa[15*20+14]= 1.169129577716;
+ daa[16*20+0]= 1.729178019485; daa[16*20+1]= 0.914665954563; daa[16*20+2]= 1.898173634533; daa[16*20+3]= 0.934187509431;
+ daa[16*20+4]= 1.119831358516; daa[16*20+5]= 1.277480294596; daa[16*20+6]= 1.071097236007; daa[16*20+7]= 0.641436011405;
+ daa[16*20+8]= 0.585407090225; daa[16*20+9]= 1.17909119726; daa[16*20+10]= 0.915259857694;daa[16*20+11]= 1.303875200799;
+ daa[16*20+12]= 1.488548053722;daa[16*20+13]= 0.488206118793;daa[16*20+14]= 1.005451683149;daa[16*20+15]= 5.15155629227;
+ daa[17*20+0]= 0.465839367725; daa[17*20+1]= 0.426382310122; daa[17*20+2]= 0.191482046247; daa[17*20+3]= 0.145345046279;
+ daa[17*20+4]= 0.527664418872; daa[17*20+5]= 0.758653808642; daa[17*20+6]= 0.407635648938; daa[17*20+7]= 0.508358924638;
+ daa[17*20+8]= 0.30124860078; daa[17*20+9]= 0.34198578754; daa[17*20+10]= 0.6914746346; daa[17*20+11]= 0.332243040634;
+ daa[17*20+12]= 0.888101098152;daa[17*20+13]= 2.074324893497;daa[17*20+14]= 0.252214830027;daa[17*20+15]= 0.387925622098;
+ daa[17*20+16]= 0.513128126891;daa[18*20+0]= 0.718206697586; daa[18*20+1]= 0.720517441216; daa[18*20+2]= 0.538222519037;
+ daa[18*20+3]= 0.261422208965; daa[18*20+4]= 0.470237733696; daa[18*20+5]= 0.95898974285; daa[18*20+6]= 0.596719300346;
+ daa[18*20+7]= 0.308055737035; daa[18*20+8]= 4.218953969389; daa[18*20+9]= 0.674617093228; daa[18*20+10]= 0.811245856323;
+ daa[18*20+11]= 0.7179934869; daa[18*20+12]= 0.951682162246;daa[18*20+13]= 6.747260430801;daa[18*20+14]= 0.369405319355;
+ daa[18*20+15]= 0.796751520761;daa[18*20+16]= 0.801010243199;daa[18*20+17]= 4.054419006558;daa[19*20+0]= 2.187774522005;
+ daa[19*20+1]= 0.438388343772; daa[19*20+2]= 0.312858797993; daa[19*20+3]= 0.258129289418; daa[19*20+4]= 1.116352478606;
+ daa[19*20+5]= 0.530785790125; daa[19*20+6]= 0.524253846338; daa[19*20+7]= 0.25334079019; daa[19*20+8]= 0.20155597175;
+ daa[19*20+9]= 8.311839405458; daa[19*20+10]= 2.231405688913;daa[19*20+11]= 0.498138475304;daa[19*20+12]= 2.575850755315;
+ daa[19*20+13]= 0.838119610178;daa[19*20+14]= 0.496908410676;daa[19*20+15]= 0.561925457442;daa[19*20+16]= 2.253074051176;
+ daa[19*20+17]= 0.266508731426;daa[19*20+18]= 1;
+
+ f[0]= 0.074; f[1]= 0.052; f[2]= 0.045; f[3]= 0.054;
+ f[4]= 0.025; f[5]= 0.034; f[6]= 0.054; f[7]= 0.074;
+ f[8]= 0.026; f[9]= 0.068; f[10]= 0.099; f[11]= 0.058;
+ f[12]= 0.025; f[13]= 0.047; f[14]= 0.039; f[15]= 0.057;
+ f[16]= 0.051; f[17]= 0.013; f[18]= 0.032; f[19]= 0.073;
+ }
+ break;
+ case PLL_MTMAM:
+ {
+ daa[1*20+0]= 32; daa[2*20+0]= 2; daa[2*20+1]= 4; daa[3*20+0]= 11;
+ daa[3*20+1]= 0; daa[3*20+2]= 864; daa[4*20+0]= 0; daa[4*20+1]= 186;
+ daa[4*20+2]= 0; daa[4*20+3]= 0; daa[5*20+0]= 0; daa[5*20+1]= 246;
+ daa[5*20+2]= 8; daa[5*20+3]= 49; daa[5*20+4]= 0; daa[6*20+0]= 0;
+ daa[6*20+1]= 0; daa[6*20+2]= 0; daa[6*20+3]= 569; daa[6*20+4]= 0;
+ daa[6*20+5]= 274; daa[7*20+0]= 78; daa[7*20+1]= 18; daa[7*20+2]= 47;
+ daa[7*20+3]= 79; daa[7*20+4]= 0; daa[7*20+5]= 0; daa[7*20+6]= 22;
+ daa[8*20+0]= 8; daa[8*20+1]= 232; daa[8*20+2]= 458; daa[8*20+3]= 11;
+ daa[8*20+4]= 305; daa[8*20+5]= 550; daa[8*20+6]= 22; daa[8*20+7]= 0;
+ daa[9*20+0]= 75; daa[9*20+1]= 0; daa[9*20+2]= 19; daa[9*20+3]= 0;
+ daa[9*20+4]= 41; daa[9*20+5]= 0; daa[9*20+6]= 0; daa[9*20+7]= 0;
+ daa[9*20+8]= 0; daa[10*20+0]= 21; daa[10*20+1]= 6; daa[10*20+2]= 0;
+ daa[10*20+3]= 0; daa[10*20+4]= 27; daa[10*20+5]= 20; daa[10*20+6]= 0;
+ daa[10*20+7]= 0; daa[10*20+8]= 26; daa[10*20+9]= 232; daa[11*20+0]= 0;
+ daa[11*20+1]= 50; daa[11*20+2]= 408; daa[11*20+3]= 0; daa[11*20+4]= 0;
+ daa[11*20+5]= 242; daa[11*20+6]= 215; daa[11*20+7]= 0; daa[11*20+8]= 0;
+ daa[11*20+9]= 6; daa[11*20+10]= 4; daa[12*20+0]= 76; daa[12*20+1]= 0;
+ daa[12*20+2]= 21; daa[12*20+3]= 0; daa[12*20+4]= 0; daa[12*20+5]= 22;
+ daa[12*20+6]= 0; daa[12*20+7]= 0; daa[12*20+8]= 0; daa[12*20+9]= 378;
+ daa[12*20+10]= 609; daa[12*20+11]= 59; daa[13*20+0]= 0; daa[13*20+1]= 0;
+ daa[13*20+2]= 6; daa[13*20+3]= 5; daa[13*20+4]= 7; daa[13*20+5]= 0;
+ daa[13*20+6]= 0; daa[13*20+7]= 0; daa[13*20+8]= 0; daa[13*20+9]= 57;
+ daa[13*20+10]= 246; daa[13*20+11]= 0; daa[13*20+12]= 11; daa[14*20+0]= 53;
+ daa[14*20+1]= 9; daa[14*20+2]= 33; daa[14*20+3]= 2; daa[14*20+4]= 0;
+ daa[14*20+5]= 51; daa[14*20+6]= 0; daa[14*20+7]= 0; daa[14*20+8]= 53;
+ daa[14*20+9]= 5; daa[14*20+10]= 43; daa[14*20+11]= 18; daa[14*20+12]= 0;
+ daa[14*20+13]= 17; daa[15*20+0]= 342; daa[15*20+1]= 3; daa[15*20+2]= 446;
+ daa[15*20+3]= 16; daa[15*20+4]= 347; daa[15*20+5]= 30; daa[15*20+6]= 21;
+ daa[15*20+7]= 112; daa[15*20+8]= 20; daa[15*20+9]= 0; daa[15*20+10]= 74;
+ daa[15*20+11]= 65; daa[15*20+12]= 47; daa[15*20+13]= 90; daa[15*20+14]= 202;
+ daa[16*20+0]= 681; daa[16*20+1]= 0; daa[16*20+2]= 110; daa[16*20+3]= 0;
+ daa[16*20+4]= 114; daa[16*20+5]= 0; daa[16*20+6]= 4; daa[16*20+7]= 0;
+ daa[16*20+8]= 1; daa[16*20+9]= 360; daa[16*20+10]= 34; daa[16*20+11]= 50;
+ daa[16*20+12]= 691; daa[16*20+13]= 8; daa[16*20+14]= 78; daa[16*20+15]= 614;
+ daa[17*20+0]= 5; daa[17*20+1]= 16; daa[17*20+2]= 6; daa[17*20+3]= 0;
+ daa[17*20+4]= 65; daa[17*20+5]= 0; daa[17*20+6]= 0; daa[17*20+7]= 0;
+ daa[17*20+8]= 0; daa[17*20+9]= 0; daa[17*20+10]= 12; daa[17*20+11]= 0;
+ daa[17*20+12]= 13; daa[17*20+13]= 0; daa[17*20+14]= 7; daa[17*20+15]= 17;
+ daa[17*20+16]= 0; daa[18*20+0]= 0; daa[18*20+1]= 0; daa[18*20+2]= 156;
+ daa[18*20+3]= 0; daa[18*20+4]= 530; daa[18*20+5]= 54; daa[18*20+6]= 0;
+ daa[18*20+7]= 1; daa[18*20+8]= 1525;daa[18*20+9]= 16; daa[18*20+10]= 25;
+ daa[18*20+11]= 67; daa[18*20+12]= 0; daa[18*20+13]= 682; daa[18*20+14]= 8;
+ daa[18*20+15]= 107; daa[18*20+16]= 0; daa[18*20+17]= 14; daa[19*20+0]= 398;
+ daa[19*20+1]= 0; daa[19*20+2]= 0; daa[19*20+3]= 10; daa[19*20+4]= 0;
+ daa[19*20+5]= 33; daa[19*20+6]= 20; daa[19*20+7]= 5; daa[19*20+8]= 0;
+ daa[19*20+9]= 2220; daa[19*20+10]= 100;daa[19*20+11]= 0; daa[19*20+12]= 832;
+ daa[19*20+13]= 6; daa[19*20+14]= 0; daa[19*20+15]= 0; daa[19*20+16]= 237;
+ daa[19*20+17]= 0; daa[19*20+18]= 0;
+
+ f[0]= 0.06920; f[1]= 0.01840; f[2]= 0.04000; f[3]= 0.018600;
+ f[4]= 0.00650; f[5]= 0.02380; f[6]= 0.02360; f[7]= 0.055700;
+ f[8]= 0.02770; f[9]= 0.09050; f[10]=0.16750; f[11]= 0.02210;
+ f[12]=0.05610; f[13]= 0.06110; f[14]=0.05360; f[15]= 0.07250;
+ f[16]=0.08700; f[17]= 0.02930; f[18]=0.03400; f[19]= 0.04280;
+ }
+ break;
+ case PLL_LG:
+ {
+ daa[1*20+0] = 0.425093;
+
+ daa[2*20+0] = 0.276818; daa[2*20+1] = 0.751878;
+
+ daa[3*20+0] = 0.395144; daa[3*20+1] = 0.123954; daa[3*20+2] = 5.076149;
+
+ daa[4*20+0] = 2.489084; daa[4*20+1] = 0.534551; daa[4*20+2] = 0.528768; daa[4*20+3] = 0.062556;
+
+ daa[5*20+0] = 0.969894; daa[5*20+1] = 2.807908; daa[5*20+2] = 1.695752; daa[5*20+3] = 0.523386; daa[5*20+4] = 0.084808;
+
+ daa[6*20+0] = 1.038545; daa[6*20+1] = 0.363970; daa[6*20+2] = 0.541712; daa[6*20+3] = 5.243870; daa[6*20+4] = 0.003499; daa[6*20+5] = 4.128591;
+
+ daa[7*20+0] = 2.066040; daa[7*20+1] = 0.390192; daa[7*20+2] = 1.437645; daa[7*20+3] = 0.844926; daa[7*20+4] = 0.569265; daa[7*20+5] = 0.267959; daa[7*20+6] = 0.348847;
+
+ daa[8*20+0] = 0.358858; daa[8*20+1] = 2.426601; daa[8*20+2] = 4.509238; daa[8*20+3] = 0.927114; daa[8*20+4] = 0.640543; daa[8*20+5] = 4.813505; daa[8*20+6] = 0.423881;
+ daa[8*20+7] = 0.311484;
+
+ daa[9*20+0] = 0.149830; daa[9*20+1] = 0.126991; daa[9*20+2] = 0.191503; daa[9*20+3] = 0.010690; daa[9*20+4] = 0.320627; daa[9*20+5] = 0.072854; daa[9*20+6] = 0.044265;
+ daa[9*20+7] = 0.008705; daa[9*20+8] = 0.108882;
+
+ daa[10*20+0] = 0.395337; daa[10*20+1] = 0.301848; daa[10*20+2] = 0.068427; daa[10*20+3] = 0.015076; daa[10*20+4] = 0.594007; daa[10*20+5] = 0.582457; daa[10*20+6] = 0.069673;
+ daa[10*20+7] = 0.044261; daa[10*20+8] = 0.366317; daa[10*20+9] = 4.145067 ;
+
+ daa[11*20+0] = 0.536518; daa[11*20+1] = 6.326067; daa[11*20+2] = 2.145078; daa[11*20+3] = 0.282959; daa[11*20+4] = 0.013266; daa[11*20+5] = 3.234294; daa[11*20+6] = 1.807177;
+ daa[11*20+7] = 0.296636; daa[11*20+8] = 0.697264; daa[11*20+9] = 0.159069; daa[11*20+10] = 0.137500;
+
+
+ daa[12*20+0] = 1.124035; daa[12*20+1] = 0.484133; daa[12*20+2] = 0.371004; daa[12*20+3] = 0.025548; daa[12*20+4] = 0.893680; daa[12*20+5] = 1.672569; daa[12*20+6] = 0.173735;
+ daa[12*20+7] = 0.139538; daa[12*20+8] = 0.442472; daa[12*20+9] = 4.273607; daa[12*20+10] = 6.312358; daa[12*20+11] = 0.656604;
+
+ daa[13*20+0] = 0.253701; daa[13*20+1] = 0.052722;daa[13*20+2] = 0.089525; daa[13*20+3] = 0.017416; daa[13*20+4] = 1.105251; daa[13*20+5] = 0.035855; daa[13*20+6] = 0.018811;
+ daa[13*20+7] = 0.089586; daa[13*20+8] = 0.682139; daa[13*20+9] = 1.112727; daa[13*20+10] = 2.592692; daa[13*20+11] = 0.023918; daa[13*20+12] = 1.798853;
+
+ daa[14*20+0] = 1.177651; daa[14*20+1] = 0.332533;daa[14*20+2] = 0.161787; daa[14*20+3] = 0.394456; daa[14*20+4] = 0.075382; daa[14*20+5] = 0.624294; daa[14*20+6] = 0.419409;
+ daa[14*20+7] = 0.196961; daa[14*20+8] = 0.508851; daa[14*20+9] = 0.078281; daa[14*20+10] = 0.249060; daa[14*20+11] = 0.390322; daa[14*20+12] = 0.099849;
+ daa[14*20+13] = 0.094464;
+
+ daa[15*20+0] = 4.727182; daa[15*20+1] = 0.858151;daa[15*20+2] = 4.008358; daa[15*20+3] = 1.240275; daa[15*20+4] = 2.784478; daa[15*20+5] = 1.223828; daa[15*20+6] = 0.611973;
+ daa[15*20+7] = 1.739990; daa[15*20+8] = 0.990012; daa[15*20+9] = 0.064105; daa[15*20+10] = 0.182287; daa[15*20+11] = 0.748683; daa[15*20+12] = 0.346960;
+ daa[15*20+13] = 0.361819; daa[15*20+14] = 1.338132;
+
+ daa[16*20+0] = 2.139501; daa[16*20+1] = 0.578987;daa[16*20+2] = 2.000679; daa[16*20+3] = 0.425860; daa[16*20+4] = 1.143480; daa[16*20+5] = 1.080136; daa[16*20+6] = 0.604545;
+ daa[16*20+7] = 0.129836; daa[16*20+8] = 0.584262; daa[16*20+9] = 1.033739; daa[16*20+10] = 0.302936; daa[16*20+11] = 1.136863; daa[16*20+12] = 2.020366;
+ daa[16*20+13] = 0.165001; daa[16*20+14] = 0.571468; daa[16*20+15] = 6.472279;
+
+ daa[17*20+0] = 0.180717; daa[17*20+1] = 0.593607;daa[17*20+2] = 0.045376; daa[17*20+3] = 0.029890; daa[17*20+4] = 0.670128; daa[17*20+5] = 0.236199; daa[17*20+6] = 0.077852;
+ daa[17*20+7] = 0.268491; daa[17*20+8] = 0.597054; daa[17*20+9] = 0.111660; daa[17*20+10] = 0.619632; daa[17*20+11] = 0.049906; daa[17*20+12] = 0.696175;
+ daa[17*20+13] = 2.457121; daa[17*20+14] = 0.095131; daa[17*20+15] = 0.248862; daa[17*20+16] = 0.140825;
+
+ daa[18*20+0] = 0.218959; daa[18*20+1] = 0.314440;daa[18*20+2] = 0.612025; daa[18*20+3] = 0.135107; daa[18*20+4] = 1.165532; daa[18*20+5] = 0.257336; daa[18*20+6] = 0.120037;
+ daa[18*20+7] = 0.054679; daa[18*20+8] = 5.306834; daa[18*20+9] = 0.232523; daa[18*20+10] = 0.299648; daa[18*20+11] = 0.131932; daa[18*20+12] = 0.481306;
+ daa[18*20+13] = 7.803902; daa[18*20+14] = 0.089613; daa[18*20+15] = 0.400547; daa[18*20+16] = 0.245841; daa[18*20+17] = 3.151815;
+
+ daa[19*20+0] = 2.547870; daa[19*20+1] = 0.170887;daa[19*20+2] = 0.083688; daa[19*20+3] = 0.037967; daa[19*20+4] = 1.959291; daa[19*20+5] = 0.210332; daa[19*20+6] = 0.245034;
+ daa[19*20+7] = 0.076701; daa[19*20+8] = 0.119013; daa[19*20+9] = 10.649107; daa[19*20+10] = 1.702745; daa[19*20+11] = 0.185202; daa[19*20+12] = 1.898718;
+ daa[19*20+13] = 0.654683; daa[19*20+14] = 0.296501; daa[19*20+15] = 0.098369; daa[19*20+16] = 2.188158; daa[19*20+17] = 0.189510; daa[19*20+18] = 0.249313;
+
+ f[0] = 0.079066; f[1] = 0.055941; f[2] = 0.041977; f[3] = 0.053052;
+ f[4] = 0.012937; f[5] = 0.040767; f[6] = 0.071586; f[7] = 0.057337;
+ f[8] = 0.022355; f[9] = 0.062157; f[10] = 0.099081; f[11] = 0.064600;
+ f[12] = 0.022951; f[13] = 0.042302; f[14] = 0.044040; f[15] = 0.061197;
+ f[16] = 0.053287; f[17] = 0.012066; f[18] = 0.034155; f[19] = 0.069146;
+ }
+ break;
+ case PLL_LG4M:
+ {
+ double
+ rates[4][190] =
+ {
+ {
+ 0.269343
+ , 0.254612, 0.150988
+ , 0.236821, 0.031863, 0.659648
+ , 2.506547, 0.938594, 0.975736, 0.175533
+ , 0.359080, 0.348288, 0.697708, 0.086573, 0.095967
+ , 0.304674, 0.156000, 0.377704, 0.449140, 0.064706, 4.342595
+ , 1.692015, 0.286638, 0.565095, 0.380358, 0.617945, 0.202058, 0.264342
+ , 0.251974, 0.921633, 1.267609, 0.309692, 0.390429, 2.344059, 0.217750, 0.104842
+ , 1.085220, 0.325624, 0.818658, 0.037814, 1.144150, 0.534567, 0.222793, 0.062682, 0.567431
+ , 0.676353, 0.602366, 0.217027, 0.007533, 1.595775, 0.671143, 0.158424, 0.070463, 0.764255, 8.226528
+ , 0.179155, 0.971338, 1.343718, 0.133744, 0.122468, 0.983857, 0.994128, 0.220916, 0.410581, 0.387487, 0.181110
+ , 1.636817, 0.515217, 0.670461, 0.071252, 1.534848, 5.288642, 0.255628, 0.094198, 0.257229, 25.667158, 6.819689, 1.591212
+ , 0.235498, 0.123932, 0.099793, 0.030425, 0.897279, 0.112229, 0.022529, 0.047488, 0.762914, 1.344259, 0.865691, 0.038921, 2.030833
+ , 1.265605, 0.040163, 0.173354, 0.027579, 0.259961, 0.580374, 0.088041, 0.145595, 0.143676, 0.298859, 1.020117, 0.000714, 0.190019, 0.093964
+ , 5.368405, 0.470952, 5.267140, 0.780505, 4.986071, 0.890554, 0.377949, 1.755515, 0.786352, 0.527246, 0.667783, 0.659948, 0.731921, 0.837669, 1.355630
+ , 1.539394, 0.326789, 1.688169, 0.283738, 1.389282, 0.329821, 0.231770, 0.117017, 0.449977, 3.531600, 0.721586, 0.497588, 2.691697, 0.152088, 0.698040, 16.321298
+ , 0.140944, 0.375611, 0.025163, 0.002757, 0.801456, 0.257253, 0.103678, 0.132995, 0.345834, 0.377156, 0.839647, 0.176970, 0.505682, 1.670170, 0.091298, 0.210096, 0.013165
+ , 0.199836, 0.146857, 0.806275, 0.234246, 1.436970, 0.319669, 0.010076, 0.036859, 3.503317, 0.598632, 0.738969, 0.154436, 0.579000, 4.245524, 0.074524, 0.454195, 0.232913, 1.178490
+ , 9.435529, 0.285934, 0.395670, 0.130890, 6.097263, 0.516259, 0.503665, 0.222960, 0.149143, 13.666175, 2.988174, 0.162725, 5.973826, 0.843416, 0.597394, 0.701149, 4.680002, 0.300085, 0.416262
+ },
+ {
+ 0.133720
+ , 0.337212, 0.749052
+ , 0.110918, 0.105087, 4.773487
+ , 3.993460, 0.188305, 1.590332, 0.304942
+ , 0.412075, 2.585774, 1.906884, 0.438367, 0.242076
+ , 0.435295, 0.198278, 0.296366, 7.470333, 0.008443, 3.295515
+ , 7.837540, 0.164607, 0.431724, 0.153850, 1.799716, 0.269744, 0.242866
+ , 0.203872, 2.130334, 9.374479, 1.080878, 0.152458, 12.299133, 0.279589, 0.089714
+ , 0.039718, 0.024553, 0.135254, 0.014979, 0.147498, 0.033964, 0.005585, 0.007248, 0.022746
+ , 0.075784, 0.080091, 0.084971, 0.014128, 0.308347, 0.500836, 0.022833, 0.022999, 0.161270, 1.511682
+ , 0.177662, 10.373708, 1.036721, 0.038303, 0.043030, 2.181033, 0.321165, 0.103050, 0.459502, 0.021215, 0.078395
+ , 0.420784, 0.192765, 0.329545, 0.008331, 0.883142, 1.403324, 0.168673, 0.160728, 0.612573, 1.520889, 7.763266, 0.307903
+ , 0.071268, 0.019652, 0.088753, 0.013547, 0.566609, 0.071878, 0.020050, 0.041022, 0.625361, 0.382806, 1.763059, 0.044644, 1.551911
+ , 0.959127, 1.496585, 0.377794, 0.332010, 0.318192, 1.386970, 0.915904, 0.224255, 2.611479, 0.029351, 0.068250, 1.542356, 0.047525, 0.182715
+ , 11.721512, 0.359408, 2.399158, 0.219464, 9.104192, 0.767563, 0.235229, 3.621219, 0.971955, 0.033780, 0.043035, 0.236929, 0.319964, 0.124977, 0.840651
+ , 2.847068, 0.218463, 1.855386, 0.109808, 4.347048, 0.765848, 0.164569, 0.312024, 0.231569, 0.356327, 0.159597, 0.403210, 1.135162, 0.106903, 0.269190, 9.816481
+ , 0.030203, 0.387292, 0.118878, 0.067287, 0.190240, 0.122113, 0.007023, 0.137411, 0.585141, 0.020634, 0.228824, 0.000122, 0.474862, 3.135128, 0.030313, 0.093830, 0.119152
+ , 0.067183, 0.130101, 0.348730, 0.061798, 0.301198, 0.095382, 0.095764, 0.044628, 2.107384, 0.046105, 0.100117, 0.017073, 0.192383, 8.367641, 0.000937, 0.137416, 0.044722, 4.179782
+ , 0.679398, 0.041567, 0.092408, 0.023701, 1.271187, 0.115566, 0.055277, 0.086988, 0.060779, 8.235167, 0.609420, 0.061764, 0.581962, 0.184187, 0.080246, 0.098033, 1.438350, 0.023439, 0.039124
+ },
+ {
+ 0.421017
+ , 0.316236, 0.693340
+ , 0.285984, 0.059926, 6.158219
+ , 4.034031, 1.357707, 0.708088, 0.063669
+ , 0.886972, 2.791622, 1.701830, 0.484347, 0.414286
+ , 0.760525, 0.233051, 0.378723, 4.032667, 0.081977, 4.940411
+ , 0.754103, 0.402894, 2.227443, 1.102689, 0.416576, 0.459376, 0.508409
+ , 0.571422, 2.319453, 5.579973, 0.885376, 1.439275, 4.101979, 0.576745, 0.428799
+ , 0.162152, 0.085229, 0.095692, 0.006129, 0.490937, 0.104843, 0.045514, 0.004705, 0.098934
+ , 0.308006, 0.287051, 0.056994, 0.007102, 0.958988, 0.578990, 0.067119, 0.024403, 0.342983, 3.805528
+ , 0.390161, 7.663209, 1.663641, 0.105129, 0.135029, 3.364474, 0.652618, 0.457702, 0.823674, 0.129858, 0.145630
+ , 1.042298, 0.364551, 0.293222, 0.037983, 1.486520, 1.681752, 0.192414, 0.070498, 0.222626, 4.529623, 4.781730, 0.665308
+ , 0.362476, 0.073439, 0.129245, 0.020078, 1.992483, 0.114549, 0.023272, 0.064490, 1.491794, 1.113437, 2.132006, 0.041677, 1.928654
+ , 1.755491, 0.087050, 0.099325, 0.163817, 0.242851, 0.322939, 0.062943, 0.198698, 0.192904, 0.062948, 0.180283, 0.059655, 0.129323, 0.065778
+ , 3.975060, 0.893398, 5.496314, 1.397313, 3.575120, 1.385297, 0.576191, 1.733288, 1.021255, 0.065131, 0.129115, 0.600308, 0.387276, 0.446001, 1.298493
+ , 2.565079, 0.534056, 2.143993, 0.411388, 2.279084, 0.893006, 0.528209, 0.135731, 0.518741, 0.972662, 0.280700, 0.890086, 1.828755, 0.189028, 0.563778, 7.788147
+ , 0.283631, 0.497926, 0.075454, 0.043794, 1.335322, 0.308605, 0.140137, 0.150797, 1.409726, 0.119868, 0.818331, 0.080591, 1.066017, 3.754687, 0.073415, 0.435046, 0.197272
+ , 0.242513, 0.199157, 0.472207, 0.085937, 2.039787, 0.262751, 0.084578, 0.032247, 7.762326, 0.153966, 0.299828, 0.117255, 0.438215, 14.506235, 0.089180, 0.352766, 0.215417, 5.054245
+ , 2.795818, 0.107130, 0.060909, 0.029724, 2.986426, 0.197267, 0.196977, 0.044327, 0.116751, 7.144311, 1.848622, 0.118020, 1.999696, 0.705747, 0.272763, 0.096935, 1.820982, 0.217007, 0.172975
+ },
+ {
+ 0.576160
+ , 0.567606, 0.498643
+ , 0.824359, 0.050698, 3.301401
+ , 0.822724, 4.529235, 1.291808, 0.101930
+ , 1.254238, 2.169809, 1.427980, 0.449474, 0.868679
+ , 1.218615, 0.154502, 0.411471, 3.172277, 0.050239, 2.138661
+ , 1.803443, 0.604673, 2.125496, 1.276384, 1.598679, 0.502653, 0.479490
+ , 0.516862, 2.874265, 4.845769, 0.719673, 3.825677, 4.040275, 0.292773, 0.596643
+ , 0.180898, 0.444586, 0.550969, 0.023542, 2.349573, 0.370160, 0.142187, 0.016618, 0.500788
+ , 0.452099, 0.866322, 0.201033, 0.026731, 2.813990, 1.645178, 0.135556, 0.072152, 1.168817, 5.696116
+ , 0.664186, 2.902886, 2.101971, 0.127988, 0.200218, 2.505933, 0.759509, 0.333569, 0.623100, 0.547454, 0.363656
+ , 0.864415, 0.835049, 0.632649, 0.079201, 2.105931, 1.633544, 0.216462, 0.252419, 0.665406, 7.994105, 11.751178, 1.096842
+ , 0.324478, 0.208947, 0.280339, 0.041683, 4.788477, 0.107022, 0.067711, 0.171320, 3.324779, 2.965328, 5.133843, 0.084856, 4.042591
+ , 1.073043, 0.173826, 0.041985, 0.270336, 0.121299, 0.351384, 0.228565, 0.225318, 0.376089, 0.058027, 0.390354, 0.214230, 0.058954, 0.126299
+ , 3.837562, 0.884342, 4.571911, 0.942751, 6.592827, 1.080063, 0.465397, 3.137614, 1.119667, 0.362516, 0.602355, 0.716940, 0.506796, 1.444484, 1.432558
+ , 2.106026, 0.750016, 2.323325, 0.335915, 1.654673, 1.194017, 0.617231, 0.318671, 0.801030, 4.455842, 0.580191, 1.384210, 3.522468, 0.473128, 0.432718, 5.716300
+ , 0.163720, 0.818102, 0.072322, 0.068275, 3.305436, 0.373790, 0.054323, 0.476587, 1.100360, 0.392946, 1.703323, 0.085720, 1.725516, 5.436253, 0.053108, 0.498594, 0.231832
+ , 0.241167, 0.302440, 1.055095, 0.246940, 9.741942, 0.249895, 0.129973, 0.052363, 11.542498, 1.047449, 1.319667, 0.139770, 1.330225, 26.562270, 0.046986, 0.737653, 0.313460, 5.165098
+ , 1.824586, 0.435795, 0.179086, 0.091739, 3.609570, 0.649507, 0.656681, 0.225234, 0.473437, 19.897252, 3.001995, 0.452926, 3.929598, 1.692159, 0.370204, 0.373501, 3.329822, 0.326593, 0.860743
+ }
+ };
+
+ double
+ freqs[4][20] =
+ {{0.082276,0.055172,0.043853,0.053484,0.018957,0.028152,0.046679,0.157817,0.033297,0.028284,0.054284,0.025275,0.023665,0.041874,0.063071,0.066501,0.065424,0.023837,0.038633,0.049465},
+ {0.120900,0.036460,0.026510,0.040410,0.015980,0.021132,0.025191,0.036369,0.015884,0.111029,0.162852,0.024820,0.028023,0.074058,0.012065,0.041963,0.039072,0.012666,0.040478,0.114137},
+ {0.072639,0.051691,0.038642,0.055580,0.009829,0.031374,0.048731,0.065283,0.023791,0.086640,0.120847,0.052177,0.026728,0.032589,0.039238,0.046748,0.053361,0.008024,0.037426,0.098662},
+ {0.104843,0.078835,0.043513,0.090498,0.002924,0.066163,0.151640,0.038843,0.022556,0.018383,0.038687,0.104462,0.010166,0.009089,0.066950,0.053667,0.049486,0.004409,0.012924,0.031963}};
+
+
+ makeAASubstMat(daa, f, rates[lg4_index], freqs[lg4_index]);
+
+ /*int
+ i,
+ j,
+ r = 0;
+
+ for(i = 1; i < 20; i++)
+ for(j = 0; j < i; j++)
+ {
+ daa[i * 20 + j] = rates[lg4_index][r];
+ r++;
+ }
+
+ assert(r == 190);
+
+ for(i = 0; i < 20; i++)
+ f[i] = freqs[lg4_index][i]; */
+
+ }
+ break;
+ case PLL_LG4X:
+ {
+ double
+ rates[4][190] =
+ {
+ {
+ 0.295719,
+ 0.067388, 0.448317,
+ 0.253712, 0.457483, 2.358429,
+ 1.029289, 0.576016, 0.251987, 0.189008,
+ 0.107964, 1.741924, 0.216561, 0.599450, 0.029955,
+ 0.514644, 0.736017, 0.503084, 109.901504, 0.084794, 4.117654,
+ 10.868848, 0.704334, 0.435271, 1.070052, 1.862626, 0.246260, 1.202023,
+ 0.380498, 5.658311, 4.873453, 5.229858, 0.553477, 6.508329, 1.634845, 0.404968,
+ 0.084223, 0.123387, 0.090748, 0.052764, 0.151733, 0.054187, 0.060194, 0.048984, 0.204296,
+ 0.086976, 0.221777, 0.033310, 0.021407, 0.230320, 0.195703, 0.069359, 0.069963, 0.504221, 1.495537,
+ 0.188789, 93.433377, 0.746537, 0.621146, 0.096955, 1.669092, 2.448827, 0.256662, 1.991533, 0.091940, 0.122332,
+ 0.286389, 0.382175, 0.128905, 0.081091, 0.352526, 0.810168, 0.232297, 0.228519, 0.655465, 1.994320, 3.256485, 0.457430,
+ 0.155567, 0.235965, 0.127321, 0.205164, 0.590018, 0.066081, 0.064822, 0.241077, 6.799829, 0.754940, 2.261319, 0.163849, 1.559944,
+ 1.671061, 6.535048, 0.904011, 5.164456, 0.386853, 2.437439, 3.537387, 4.320442, 11.291065, 0.170343, 0.848067, 5.260446, 0.426508, 0.438856,
+ 2.132922, 0.525521, 0.939733, 0.747330, 1.559564, 0.165666, 0.435384, 3.656545, 0.961142, 0.050315, 0.064441, 0.360946, 0.132547, 0.306683, 4.586081,
+ 0.529591, 0.303537, 0.435450, 0.308078, 0.606648, 0.106333, 0.290413, 0.290216, 0.448965, 0.372166, 0.102493, 0.389413, 0.498634, 0.109129, 2.099355, 3.634276,
+ 0.115551, 0.641259, 0.046646, 0.260889, 0.587531, 0.093417, 0.280695, 0.307466, 6.227274, 0.206332, 0.459041, 0.033291, 0.559069, 18.392863, 0.411347, 0.101797, 0.034710,
+ 0.102453, 0.289466, 0.262076, 0.185083, 0.592318, 0.035149, 0.105999, 0.096556, 20.304886, 0.097050, 0.133091, 0.115301, 0.264728, 66.647302, 0.476350, 0.148995, 0.063603, 20.561407,
+ 0.916683, 0.102065, 0.043986, 0.080708, 0.885230, 0.072549, 0.206603, 0.306067, 0.205944, 5.381403, 0.561215, 0.112593, 0.693307, 0.400021, 0.584622, 0.089177, 0.755865, 0.133790, 0.154902
+ },
+ {
+ 0.066142,
+ 0.590377, 0.468325,
+ 0.069930, 0.013688, 2.851667,
+ 9.850951, 0.302287, 3.932151, 0.146882,
+ 1.101363, 1.353957, 8.159169, 0.249672, 0.582670,
+ 0.150375, 0.028386, 0.219934, 0.560142, 0.005035, 3.054085,
+ 0.568586, 0.037750, 0.421974, 0.046719, 0.275844, 0.129551, 0.037250,
+ 0.051668, 0.262130, 2.468752, 0.106259, 0.098208, 4.210126, 0.029788, 0.013513,
+ 0.127170, 0.016923, 0.344765, 0.003656, 0.445038, 0.165753, 0.008541, 0.002533, 0.031779,
+ 0.292429, 0.064289, 0.210724, 0.004200, 1.217010, 1.088704, 0.014768, 0.005848, 0.064558, 7.278994,
+ 0.071458, 0.855973, 1.172204, 0.014189, 0.033969, 1.889645, 0.125869, 0.031390, 0.065585, 0.029917, 0.042762,
+ 1.218562, 0.079621, 0.763553, 0.009876, 1.988516, 3.344809, 0.056702, 0.021612, 0.079927, 7.918203, 14.799537, 0.259400,
+ 0.075144, 0.011169, 0.082464, 0.002656, 0.681161, 0.111063, 0.004186, 0.004854, 0.095591, 0.450964, 1.506485, 0.009457, 1.375871,
+ 7.169085, 0.161937, 0.726566, 0.040244, 0.825960, 2.067758, 0.110993, 0.129497, 0.196886, 0.169797, 0.637893, 0.090576, 0.457399, 0.143327,
+ 30.139501, 0.276530, 11.149790, 0.267322, 18.762977, 3.547017, 0.201148, 0.976631, 0.408834, 0.104288, 0.123793, 0.292108, 0.598048, 0.328689, 3.478333,
+ 13.461692, 0.161053, 4.782635, 0.053740, 11.949233, 2.466507, 0.139705, 0.053397, 0.126088, 1.578530, 0.641351, 0.297913, 4.418398, 0.125011, 2.984862, 13.974326,
+ 0.021372, 0.081472, 0.058046, 0.006597, 0.286794, 0.188236, 0.009201, 0.019475, 0.037226, 0.015909, 0.154810, 0.017172, 0.239749, 0.562720, 0.061299, 0.154326, 0.060703,
+ 0.045779, 0.036742, 0.498072, 0.027639, 0.534219, 0.203493, 0.012095, 0.004964, 0.452302, 0.094365, 0.140750, 0.021976, 0.168432, 1.414883, 0.077470, 0.224675, 0.123480, 0.447011,
+ 4.270235, 0.030342, 0.258487, 0.012745, 4.336817, 0.281953, 0.043812, 0.015539, 0.016212, 16.179952, 3.416059, 0.032578, 2.950318, 0.227807, 1.050562, 0.112000, 5.294490, 0.033381, 0.045528
+ },
+ {
+ 0.733336,
+ 0.558955, 0.597671,
+ 0.503360, 0.058964, 5.581680,
+ 4.149599, 2.863355, 1.279881, 0.225860,
+ 1.415369, 2.872594, 1.335650, 0.434096, 1.043232,
+ 1.367574, 0.258365, 0.397108, 2.292917, 0.209978, 4.534772,
+ 1.263002, 0.366868, 1.840061, 1.024707, 0.823594, 0.377181, 0.496780,
+ 0.994098, 2.578946, 5.739035, 0.821921, 3.039380, 4.877840, 0.532488, 0.398817,
+ 0.517204, 0.358350, 0.284730, 0.027824, 1.463390, 0.370939, 0.232460, 0.008940, 0.349195,
+ 0.775054, 0.672023, 0.109781, 0.021443, 1.983693, 1.298542, 0.169219, 0.043707, 0.838324, 5.102837,
+ 0.763094, 5.349861, 1.612642, 0.088850, 0.397640, 3.509873, 0.755219, 0.436013, 0.888693, 0.561690, 0.401070,
+ 1.890137, 0.691594, 0.466979, 0.060820, 2.831098, 2.646440, 0.379926, 0.087640, 0.488389, 7.010411, 8.929538, 1.357738,
+ 0.540460, 0.063347, 0.141582, 0.018288, 4.102068, 0.087872, 0.020447, 0.064863, 1.385133, 3.054968, 5.525874, 0.043394, 3.135353,
+ 0.200122, 0.032875, 0.019509, 0.042687, 0.059723, 0.072299, 0.023282, 0.036426, 0.050226, 0.039318, 0.067505, 0.023126, 0.012695, 0.015631,
+ 4.972745, 0.821562, 4.670980, 1.199607, 5.901348, 1.139018, 0.503875, 1.673207, 0.962470, 0.204155, 0.273372, 0.567639, 0.570771, 0.458799, 0.233109,
+ 1.825593, 0.580847, 1.967383, 0.420710, 2.034980, 0.864479, 0.577513, 0.124068, 0.502294, 2.653232, 0.437116, 1.048288, 2.319555, 0.151684, 0.077004, 8.113282,
+ 0.450842, 0.661866, 0.088064, 0.037642, 2.600668, 0.390688, 0.109318, 0.218118, 1.065585, 0.564368, 1.927515, 0.120994, 1.856122, 4.154750, 0.011074, 0.377578, 0.222293,
+ 0.526135, 0.265730, 0.581928, 0.141233, 5.413080, 0.322761, 0.153776, 0.039217, 8.351808, 0.854294, 0.940458, 0.180650, 0.975427, 11.429924, 0.026268, 0.429221, 0.273138, 4.731579,
+ 3.839269, 0.395134, 0.145401, 0.090101, 4.193725, 0.625409, 0.696533, 0.104335, 0.377304, 15.559906, 2.508169, 0.449074, 3.404087, 1.457957, 0.052132, 0.260296, 2.903836, 0.564762, 0.681215
+ },
+ {
+ 0.658412,
+ 0.566269, 0.540749,
+ 0.854111, 0.058015, 3.060574,
+ 0.884454, 5.851132, 1.279257, 0.160296,
+ 1.309554, 2.294145, 1.438430, 0.482619, 0.992259,
+ 1.272639, 0.182966, 0.431464, 2.992763, 0.086318, 2.130054,
+ 1.874713, 0.684164, 2.075952, 1.296206, 2.149634, 0.571406, 0.507160,
+ 0.552007, 3.192521, 4.840271, 0.841829, 5.103188, 4.137385, 0.351381, 0.679853,
+ 0.227683, 0.528161, 0.644656, 0.031467, 3.775817, 0.437589, 0.189152, 0.025780, 0.665865,
+ 0.581512, 1.128882, 0.266076, 0.048542, 3.954021, 2.071689, 0.217780, 0.082005, 1.266791, 8.904999,
+ 0.695190, 3.010922, 2.084975, 0.132774, 0.190734, 2.498630, 0.767361, 0.326441, 0.680174, 0.652629, 0.440178,
+ 0.967985, 1.012866, 0.720060, 0.133055, 1.776095, 1.763546, 0.278392, 0.343977, 0.717301, 10.091413, 14.013035, 1.082703,
+ 0.344015, 0.227296, 0.291854, 0.056045, 4.495841, 0.116381, 0.092075, 0.195877, 4.001286, 2.671718, 5.069337, 0.091278, 4.643214,
+ 0.978992, 0.156635, 0.028961, 0.209188, 0.264277, 0.296578, 0.177263, 0.217424, 0.362942, 0.086367, 0.539010, 0.172734, 0.121821, 0.161015,
+ 3.427163, 0.878405, 4.071574, 0.925172, 7.063879, 1.033710, 0.451893, 3.057583, 1.189259, 0.359932, 0.742569, 0.693405, 0.584083, 1.531223, 1.287474,
+ 2.333253, 0.802754, 2.258357, 0.360522, 2.221150, 1.283423, 0.653836, 0.377558, 0.964545, 4.797423, 0.780580, 1.422571, 4.216178, 0.599244, 0.444362, 5.231362,
+ 0.154701, 0.830884, 0.073037, 0.094591, 3.017954, 0.312579, 0.074620, 0.401252, 1.350568, 0.336801, 1.331875, 0.068958, 1.677263, 5.832025, 0.076328, 0.548763, 0.208791,
+ 0.221089, 0.431617, 1.238426, 0.313945, 8.558815, 0.305772, 0.181992, 0.072258, 12.869737, 1.021885, 1.531589, 0.163829, 1.575754, 33.873091, 0.079916, 0.831890, 0.307846, 5.910440,
+ 2.088785, 0.456530, 0.199728, 0.118104, 4.310199, 0.681277, 0.752277, 0.241015, 0.531100, 23.029406, 4.414850, 0.481711, 5.046403, 1.914768, 0.466823, 0.382271, 3.717971, 0.282540, 0.964421
+ }
+ };
+ double
+ freqs[4][20] =
+ {{0.147383 , 0.017579 , 0.058208 , 0.017707 , 0.026331 , 0.041582 , 0.017494 , 0.027859 , 0.011849 , 0.076971 ,
+ 0.147823 , 0.019535 , 0.037132 , 0.029940 , 0.008059 , 0.088179 , 0.089653 , 0.006477 , 0.032308 , 0.097931},
+ {0.063139 , 0.066357 , 0.011586 , 0.066571 , 0.010800 , 0.009276 , 0.053984 , 0.146986 , 0.034214 , 0.088822 ,
+ 0.098196 , 0.032390 , 0.021263 , 0.072697 , 0.016761 , 0.020711 , 0.020797 , 0.025463 , 0.045615 , 0.094372},
+ {0.062457 , 0.066826 , 0.049332 , 0.065270 , 0.006513 , 0.041231 , 0.058965 , 0.080852 , 0.028024 , 0.037024 ,
+ 0.075925 , 0.064131 , 0.019620 , 0.028710 , 0.104579 , 0.056388 , 0.062027 , 0.008241 , 0.033124 , 0.050760},
+ {0.106471 , 0.074171 , 0.044513 , 0.096390 , 0.002148 , 0.066733 , 0.158908 , 0.037625 , 0.020691 , 0.014608 ,
+ 0.028797 , 0.105352 , 0.007864 , 0.007477 , 0.083595 , 0.055726 , 0.047711 , 0.003975 , 0.010088 , 0.027159}};
+
+
+
+ makeAASubstMat(daa, f, rates[lg4_index], freqs[lg4_index]);
+/* int
+ i,
+ j,
+ r = 0;
+ for(i = 1; i < 20; i++)
+ for(j = 0; j < i; j++)
+ {
+ daa[i * 20 + j] = rates[lg4_index][r];
+ r++;
+ }
+ assert(r == 190);
+ for(i = 0; i < 20; i++)
+ f[i] = freqs[lg4_index][i]; */
+ }
+ break;
+
+ case PLL_STMTREV:
+ {
+ double rates[190] =
+ {
+ 0.1159435373,
+ 0.2458816714, 0.1355713516,
+ 0.9578712472, 0.0775041665, 8.4408676914,
+ 0.2327281954, 9.1379470330, 0.1137687264, 0.0582110367,
+ 0.3309250853, 5.2854173238, 0.1727184754, 0.8191776581, 0.0009722083,
+ 0.6946680829, 0.0966719296, 0.2990806606, 7.3729791633, 0.0005604799, 3.5773486727,
+ 2.8076062202, 3.0815651393, 0.5575702616, 2.2627839242, 1.1721237455, 0.0482085663, 3.3184632572,
+ 0.2275494971, 2.8251848421, 9.5228608030, 2.3191131858, 0.0483235836, 4.4138715270, 0.0343694246, 0.0948383460,
+ 0.0627691644, 0.5712158076, 0.2238609194, 0.0205779319, 0.1527276944, 0.0206129952, 0.0328079744, 0.1239000315, 0.0802374651,
+ 0.0305818840, 0.1930408758, 0.0540967250, 0.0018843293, 0.2406073246, 0.3299454620, 0.0373753435, 0.0005918940, 0.1192904610, 1.3184058362,
+ 0.2231434272, 6.0541970908, 4.3977466558, 0.1347413792, 0.0001480536, 5.2864094506, 6.8883522181, 0.5345755286, 0.3991624551, 0.2107928508, 0.1055933141,
+ 0.1874527991, 0.2427875732, 0.0433577842, 0.0000022173, 0.0927357503, 0.0109238300, 0.0663619185, 0.0128777966, 0.0722334577, 4.3016010974, 1.1493262595, 0.4773694701,
+ 0.0458112245, 0.0310030750, 0.0233493970, 0.0000080023, 0.8419347601, 0.0027817812, 0.0361207581, 0.0490593583, 0.0197089530, 0.3634155844, 2.1032860162, 0.0861057517, 0.1735660361,
+ 1.5133910481, 0.7858555362, 0.3000131148, 0.3337627573, 0.0036260499, 1.5386413234, 0.5196922389, 0.0221252552, 1.0171151697, 0.0534088166, 6.0377879080, 0.4350064365, 0.1634497017,
+ 0.3545179411,
+ 2.3008246523, 0.7625702322, 1.9431704326, 0.6961369276, 2.3726544756, 0.1837198343, 0.9087013201, 2.5477016916, 0.3081949928, 0.1713464632, 2.7297706102, 0.3416923226, 0.0730798705,
+ 4.0107845583, 8.4630191575,
+ 4.3546170435, 1.0655012755, 1.6534489471, 0.0985354973, 0.1940108923, 0.3415280861, 0.2794040892, 0.1657005971, 0.2704552047, 2.3418182855, 0.0426297282, 1.2152488582, 4.6553742047,
+ 0.0068797851, 1.1613183519, 2.2213527952,
+ 0.0565037747, 6.7852754661, 0.0000010442, 0.0000002842, 0.9529353202, 0.0009844045, 0.0002705734, 0.5068170211, 0.0000932799, 0.0050518699, 0.3163744815, 0.0000023280, 0.1010587493,
+ 0.2890102379, 0.0041564377, 0.0495269526, 0.0002026765,
+ 0.0358664532, 0.0714121777, 0.3036789915, 1.3220740967, 1.7972997876, 0.0066458178, 0.3052655031, 0.0174305437, 21.9842817264, 0.1070890246, 0.0770894218, 0.1929529483, 0.0561599188,
+ 1.6748429971, 0.0021338646, 1.8890678523, 0.2834320440, 0.3134203648,
+ 3.2116908598, 0.0108028571, 0.0860833645, 0.0426724431, 0.3652373073, 0.0287789552, 0.1484349765, 0.5158740953, 0.0059791370, 3.3648305163, 0.8763855707, 0.0776875418, 0.9145670668,
+ 0.3963331926, 0.1080226203, 0.0640951379, 0.2278998021, 0.0388755869, 0.1836950254};
+
+ double
+ freqs[20] = {0.0461811000, 0.0534080000, 0.0361971000, 0.0233326000, 0.0234170000, 0.0390397000, 0.0341284001, 0.0389164000, 0.0164640000, 0.0891534000,
+ 0.1617310001, 0.0551341000, 0.0233262000, 0.0911252000, 0.0344713001, 0.0771077000, 0.0418603001, 0.0200784000, 0.0305429000, 0.0643851996};
+
+ makeAASubstMat(daa, f, rates, freqs);
+ }
+ break;
+ case PLL_MTART:
+ {
+
+
+ daa[1*20+0]= 0.2;
+ daa[2*20+0]= 0.2;
+ daa[2*20+1]= 0.2;
+ daa[3*20+0]= 1;
+ daa[3*20+1]= 4;
+ daa[3*20+2]= 500;
+ daa[4*20+0]= 254;
+ daa[4*20+1]= 36;
+ daa[4*20+2]= 98;
+ daa[4*20+3]= 11;
+ daa[5*20+0]= 0.2;
+ daa[5*20+1]= 154;
+ daa[5*20+2]= 262;
+ daa[5*20+3]= 0.2;
+ daa[5*20+4]= 0.2;
+ daa[6*20+0]= 0.2;
+ daa[6*20+1]= 0.2;
+ daa[6*20+2]= 183;
+ daa[6*20+3]= 862;
+ daa[6*20+4]= 0.2;
+ daa[6*20+5]= 262;
+ daa[7*20+0]= 200;
+ daa[7*20+1]= 0.2;
+ daa[7*20+2]= 121;
+ daa[7*20+3]= 12;
+ daa[7*20+4]= 81;
+ daa[7*20+5]= 3;
+ daa[7*20+6]= 44;
+ daa[8*20+0]= 0.2;
+ daa[8*20+1]= 41;
+ daa[8*20+2]= 180;
+ daa[8*20+3]= 0.2;
+ daa[8*20+4]= 12;
+ daa[8*20+5]= 314;
+ daa[8*20+6]= 15;
+ daa[8*20+7]= 0.2;
+ daa[9*20+0]= 26;
+ daa[9*20+1]= 2;
+ daa[9*20+2]= 21;
+ daa[9*20+3]= 7;
+ daa[9*20+4]= 63;
+ daa[9*20+5]= 11;
+ daa[9*20+6]= 7;
+ daa[9*20+7]= 3;
+ daa[9*20+8]= 0.2;
+ daa[10*20+0]= 4;
+ daa[10*20+1]= 2;
+ daa[10*20+2]= 13;
+ daa[10*20+3]= 1;
+ daa[10*20+4]= 79;
+ daa[10*20+5]= 16;
+ daa[10*20+6]= 2;
+ daa[10*20+7]= 1;
+ daa[10*20+8]= 6;
+ daa[10*20+9]= 515;
+ daa[11*20+0]= 0.2;
+ daa[11*20+1]= 209;
+ daa[11*20+2]= 467;
+ daa[11*20+3]= 2;
+ daa[11*20+4]= 0.2;
+ daa[11*20+5]= 349;
+ daa[11*20+6]= 106;
+ daa[11*20+7]= 0.2;
+ daa[11*20+8]= 0.2;
+ daa[11*20+9]= 3;
+ daa[11*20+10]= 4;
+ daa[12*20+0]= 121;
+ daa[12*20+1]= 5;
+ daa[12*20+2]= 79;
+ daa[12*20+3]= 0.2;
+ daa[12*20+4]= 312;
+ daa[12*20+5]= 67;
+ daa[12*20+6]= 0.2;
+ daa[12*20+7]= 56;
+ daa[12*20+8]= 0.2;
+ daa[12*20+9]= 515;
+ daa[12*20+10]= 885;
+ daa[12*20+11]= 106;
+ daa[13*20+0]= 13;
+ daa[13*20+1]= 5;
+ daa[13*20+2]= 20;
+ daa[13*20+3]= 0.2;
+ daa[13*20+4]= 184;
+ daa[13*20+5]= 0.2;
+ daa[13*20+6]= 0.2;
+ daa[13*20+7]= 1;
+ daa[13*20+8]= 14;
+ daa[13*20+9]= 118;
+ daa[13*20+10]= 263;
+ daa[13*20+11]= 11;
+ daa[13*20+12]= 322;
+ daa[14*20+0]= 49;
+ daa[14*20+1]= 0.2;
+ daa[14*20+2]= 17;
+ daa[14*20+3]= 0.2;
+ daa[14*20+4]= 0.2;
+ daa[14*20+5]= 39;
+ daa[14*20+6]= 8;
+ daa[14*20+7]= 0.2;
+ daa[14*20+8]= 1;
+ daa[14*20+9]= 0.2;
+ daa[14*20+10]= 12;
+ daa[14*20+11]= 17;
+ daa[14*20+12]= 5;
+ daa[14*20+13]= 15;
+ daa[15*20+0]= 673;
+ daa[15*20+1]= 3;
+ daa[15*20+2]= 398;
+ daa[15*20+3]= 44;
+ daa[15*20+4]= 664;
+ daa[15*20+5]= 52;
+ daa[15*20+6]= 31;
+ daa[15*20+7]= 226;
+ daa[15*20+8]= 11;
+ daa[15*20+9]= 7;
+ daa[15*20+10]= 8;
+ daa[15*20+11]= 144;
+ daa[15*20+12]= 112;
+ daa[15*20+13]= 36;
+ daa[15*20+14]= 87;
+ daa[16*20+0]= 244;
+ daa[16*20+1]= 0.2;
+ daa[16*20+2]= 166;
+ daa[16*20+3]= 0.2;
+ daa[16*20+4]= 183;
+ daa[16*20+5]= 44;
+ daa[16*20+6]= 43;
+ daa[16*20+7]= 0.2;
+ daa[16*20+8]= 19;
+ daa[16*20+9]= 204;
+ daa[16*20+10]= 48;
+ daa[16*20+11]= 70;
+ daa[16*20+12]= 289;
+ daa[16*20+13]= 14;
+ daa[16*20+14]= 47;
+ daa[16*20+15]= 660;
+ daa[17*20+0]= 0.2;
+ daa[17*20+1]= 0.2;
+ daa[17*20+2]= 8;
+ daa[17*20+3]= 0.2;
+ daa[17*20+4]= 22;
+ daa[17*20+5]= 7;
+ daa[17*20+6]= 11;
+ daa[17*20+7]= 2;
+ daa[17*20+8]= 0.2;
+ daa[17*20+9]= 0.2;
+ daa[17*20+10]= 21;
+ daa[17*20+11]= 16;
+ daa[17*20+12]= 71;
+ daa[17*20+13]= 54;
+ daa[17*20+14]= 0.2;
+ daa[17*20+15]= 2;
+ daa[17*20+16]= 0.2;
+ daa[18*20+0]= 1;
+ daa[18*20+1]= 4;
+ daa[18*20+2]= 251;
+ daa[18*20+3]= 0.2;
+ daa[18*20+4]= 72;
+ daa[18*20+5]= 87;
+ daa[18*20+6]= 8;
+ daa[18*20+7]= 9;
+ daa[18*20+8]= 191;
+ daa[18*20+9]= 12;
+ daa[18*20+10]= 20;
+ daa[18*20+11]= 117;
+ daa[18*20+12]= 71;
+ daa[18*20+13]= 792;
+ daa[18*20+14]= 18;
+ daa[18*20+15]= 30;
+ daa[18*20+16]= 46;
+ daa[18*20+17]= 38;
+ daa[19*20+0]= 340;
+ daa[19*20+1]= 0.2;
+ daa[19*20+2]= 23;
+ daa[19*20+3]= 0.2;
+ daa[19*20+4]= 350;
+ daa[19*20+5]= 0.2;
+ daa[19*20+6]= 14;
+ daa[19*20+7]= 3;
+ daa[19*20+8]= 0.2;
+ daa[19*20+9]= 1855;
+ daa[19*20+10]= 85;
+ daa[19*20+11]= 26;
+ daa[19*20+12]= 281;
+ daa[19*20+13]= 52;
+ daa[19*20+14]= 32;
+ daa[19*20+15]= 61;
+ daa[19*20+16]= 544;
+ daa[19*20+17]= 0.2;
+ daa[19*20+18]= 2;
+
+ f[0]= 0.054116;
+ f[1]= 0.018227;
+ f[2]= 0.039903;
+ f[3]= 0.020160;
+ f[4]= 0.009709;
+ f[5]= 0.018781;
+ f[6]= 0.024289;
+ f[7]= 0.068183;
+ f[8]= 0.024518;
+ f[9]= 0.092638;
+ f[10]= 0.148658;
+ f[11]= 0.021718;
+ f[12]= 0.061453;
+ f[13]= 0.088668;
+ f[14]= 0.041826;
+ f[15]= 0.091030;
+ f[16]= 0.049194;
+ f[17]= 0.029786;
+ f[18]= 0.039443;
+ f[19]= 0.057700;
+ }
+ break;
+ case PLL_MTZOA:
+ {
+ daa[1*20+0]= 3.3;
+ daa[2*20+0]= 1.7;
+ daa[2*20+1]= 33.6;
+ daa[3*20+0]= 16.1;
+ daa[3*20+1]= 3.2;
+ daa[3*20+2]= 617.0;
+ daa[4*20+0]= 272.5;
+ daa[4*20+1]= 61.1;
+ daa[4*20+2]= 94.6;
+ daa[4*20+3]= 9.5;
+ daa[5*20+0]= 7.3;
+ daa[5*20+1]= 231.0;
+ daa[5*20+2]= 190.3;
+ daa[5*20+3]= 19.3;
+ daa[5*20+4]= 49.1;
+ daa[6*20+0]= 17.1;
+ daa[6*20+1]= 6.4;
+ daa[6*20+2]= 174.0;
+ daa[6*20+3]= 883.6;
+ daa[6*20+4]= 3.4;
+ daa[6*20+5]= 349.4;
+ daa[7*20+0]= 289.3;
+ daa[7*20+1]= 7.2;
+ daa[7*20+2]= 99.3;
+ daa[7*20+3]= 26.0;
+ daa[7*20+4]= 82.4;
+ daa[7*20+5]= 8.9;
+ daa[7*20+6]= 43.1;
+ daa[8*20+0]= 2.3;
+ daa[8*20+1]= 61.7;
+ daa[8*20+2]= 228.9;
+ daa[8*20+3]= 55.6;
+ daa[8*20+4]= 37.5;
+ daa[8*20+5]= 421.8;
+ daa[8*20+6]= 14.9;
+ daa[8*20+7]= 7.4;
+ daa[9*20+0]= 33.2;
+ daa[9*20+1]= 0.2;
+ daa[9*20+2]= 24.3;
+ daa[9*20+3]= 1.5;
+ daa[9*20+4]= 48.8;
+ daa[9*20+5]= 0.2;
+ daa[9*20+6]= 7.3;
+ daa[9*20+7]= 3.4;
+ daa[9*20+8]= 1.6;
+ daa[10*20+0]= 15.6;
+ daa[10*20+1]= 4.1;
+ daa[10*20+2]= 7.9;
+ daa[10*20+3]= 0.5;
+ daa[10*20+4]= 59.7;
+ daa[10*20+5]= 23.0;
+ daa[10*20+6]= 1.0;
+ daa[10*20+7]= 3.5;
+ daa[10*20+8]= 6.6;
+ daa[10*20+9]= 425.2;
+ daa[11*20+0]= 0.2;
+ daa[11*20+1]= 292.3;
+ daa[11*20+2]= 413.4;
+ daa[11*20+3]= 0.2;
+ daa[11*20+4]= 0.2;
+ daa[11*20+5]= 334.0;
+ daa[11*20+6]= 163.2;
+ daa[11*20+7]= 10.1;
+ daa[11*20+8]= 23.9;
+ daa[11*20+9]= 8.4;
+ daa[11*20+10]= 6.7;
+ daa[12*20+0]= 136.5;
+ daa[12*20+1]= 3.8;
+ daa[12*20+2]= 73.7;
+ daa[12*20+3]= 0.2;
+ daa[12*20+4]= 264.8;
+ daa[12*20+5]= 83.9;
+ daa[12*20+6]= 0.2;
+ daa[12*20+7]= 52.2;
+ daa[12*20+8]= 7.1;
+ daa[12*20+9]= 449.7;
+ daa[12*20+10]= 636.3;
+ daa[12*20+11]= 83.0;
+ daa[13*20+0]= 26.5;
+ daa[13*20+1]= 0.2;
+ daa[13*20+2]= 12.9;
+ daa[13*20+3]= 2.0;
+ daa[13*20+4]= 167.8;
+ daa[13*20+5]= 9.5;
+ daa[13*20+6]= 0.2;
+ daa[13*20+7]= 5.8;
+ daa[13*20+8]= 13.1;
+ daa[13*20+9]= 90.3;
+ daa[13*20+10]= 234.2;
+ daa[13*20+11]= 16.3;
+ daa[13*20+12]= 215.6;
+ daa[14*20+0]= 61.8;
+ daa[14*20+1]= 7.5;
+ daa[14*20+2]= 22.6;
+ daa[14*20+3]= 0.2;
+ daa[14*20+4]= 8.1;
+ daa[14*20+5]= 52.2;
+ daa[14*20+6]= 20.6;
+ daa[14*20+7]= 1.3;
+ daa[14*20+8]= 15.6;
+ daa[14*20+9]= 2.6;
+ daa[14*20+10]= 11.4;
+ daa[14*20+11]= 24.3;
+ daa[14*20+12]= 5.4;
+ daa[14*20+13]= 10.5;
+ daa[15*20+0]= 644.9;
+ daa[15*20+1]= 11.8;
+ daa[15*20+2]= 420.2;
+ daa[15*20+3]= 51.4;
+ daa[15*20+4]= 656.3;
+ daa[15*20+5]= 96.4;
+ daa[15*20+6]= 38.4;
+ daa[15*20+7]= 257.1;
+ daa[15*20+8]= 23.1;
+ daa[15*20+9]= 7.2;
+ daa[15*20+10]= 15.2;
+ daa[15*20+11]= 144.9;
+ daa[15*20+12]= 95.3;
+ daa[15*20+13]= 32.2;
+ daa[15*20+14]= 79.7;
+ daa[16*20+0]= 378.1;
+ daa[16*20+1]= 3.2;
+ daa[16*20+2]= 184.6;
+ daa[16*20+3]= 2.3;
+ daa[16*20+4]= 199.0;
+ daa[16*20+5]= 39.4;
+ daa[16*20+6]= 34.5;
+ daa[16*20+7]= 5.2;
+ daa[16*20+8]= 19.4;
+ daa[16*20+9]= 222.3;
+ daa[16*20+10]= 50.0;
+ daa[16*20+11]= 75.5;
+ daa[16*20+12]= 305.1;
+ daa[16*20+13]= 19.3;
+ daa[16*20+14]= 56.9;
+ daa[16*20+15]= 666.3;
+ daa[17*20+0]= 3.1;
+ daa[17*20+1]= 16.9;
+ daa[17*20+2]= 6.4;
+ daa[17*20+3]= 0.2;
+ daa[17*20+4]= 36.1;
+ daa[17*20+5]= 6.1;
+ daa[17*20+6]= 3.5;
+ daa[17*20+7]= 12.3;
+ daa[17*20+8]= 4.5;
+ daa[17*20+9]= 9.7;
+ daa[17*20+10]= 27.2;
+ daa[17*20+11]= 6.6;
+ daa[17*20+12]= 48.7;
+ daa[17*20+13]= 58.2;
+ daa[17*20+14]= 1.3;
+ daa[17*20+15]= 10.3;
+ daa[17*20+16]= 3.6;
+ daa[18*20+0]= 2.1;
+ daa[18*20+1]= 13.8;
+ daa[18*20+2]= 141.6;
+ daa[18*20+3]= 13.9;
+ daa[18*20+4]= 76.7;
+ daa[18*20+5]= 52.3;
+ daa[18*20+6]= 10.0;
+ daa[18*20+7]= 4.3;
+ daa[18*20+8]= 266.5;
+ daa[18*20+9]= 13.1;
+ daa[18*20+10]= 5.7;
+ daa[18*20+11]= 45.0;
+ daa[18*20+12]= 41.4;
+ daa[18*20+13]= 590.5;
+ daa[18*20+14]= 4.2;
+ daa[18*20+15]= 29.7;
+ daa[18*20+16]= 29.0;
+ daa[18*20+17]= 79.8;
+ daa[19*20+0]= 321.9;
+ daa[19*20+1]= 5.1;
+ daa[19*20+2]= 7.1;
+ daa[19*20+3]= 3.7;
+ daa[19*20+4]= 243.8;
+ daa[19*20+5]= 9.0;
+ daa[19*20+6]= 16.3;
+ daa[19*20+7]= 23.7;
+ daa[19*20+8]= 0.3;
+ daa[19*20+9]= 1710.6;
+ daa[19*20+10]= 126.1;
+ daa[19*20+11]= 11.1;
+ daa[19*20+12]= 279.6;
+ daa[19*20+13]= 59.6;
+ daa[19*20+14]= 17.9;
+ daa[19*20+15]= 49.5;
+ daa[19*20+16]= 396.4;
+ daa[19*20+17]= 13.7;
+ daa[19*20+18]= 15.6;
+
+ f[0]= 0.069;
+ f[1]= 0.021;
+ f[2]= 0.030;
+ f[3]= 0.020;
+ f[4]= 0.010;
+ f[5]= 0.019;
+ f[6]= 0.025;
+ f[7]= 0.072;
+ f[8]= 0.027;
+ f[9]= 0.085;
+ f[10]= 0.157;
+ f[11]= 0.019;
+ f[12]= 0.051;
+ f[13]= 0.082;
+ f[14]= 0.045;
+ f[15]= 0.081;
+ f[16]= 0.056;
+ f[17]= 0.028;
+ f[18]= 0.037;
+ f[19]= 0.066;
+ }
+ break;
+ case PLL_PMB:
+ {
+ daa[1*20+0]= 0.674995699;
+ daa[2*20+0]= 0.589645178;
+ daa[2*20+1]= 1.189067034;
+ daa[3*20+0]= 0.462499504;
+ daa[3*20+1]= 0.605460903;
+ daa[3*20+2]= 3.573373315;
+ daa[4*20+0]= 1.065445546;
+ daa[4*20+1]= 0.31444833;
+ daa[4*20+2]= 0.589852457;
+ daa[4*20+3]= 0.246951424;
+ daa[5*20+0]= 1.111766964;
+ daa[5*20+1]= 2.967840934;
+ daa[5*20+2]= 2.299755865;
+ daa[5*20+3]= 1.686058219;
+ daa[5*20+4]= 0.245163782;
+ daa[6*20+0]= 1.046334652;
+ daa[6*20+1]= 1.201770702;
+ daa[6*20+2]= 1.277836748;
+ daa[6*20+3]= 4.399995525;
+ daa[6*20+4]= 0.091071867;
+ daa[6*20+5]= 4.15967899;
+ daa[7*20+0]= 1.587964372;
+ daa[7*20+1]= 0.523770553;
+ daa[7*20+2]= 1.374854049;
+ daa[7*20+3]= 0.734992057;
+ daa[7*20+4]= 0.31706632;
+ daa[7*20+5]= 0.596789898;
+ daa[7*20+6]= 0.463812837;
+ daa[8*20+0]= 0.580830874;
+ daa[8*20+1]= 1.457127446;
+ daa[8*20+2]= 2.283037894;
+ daa[8*20+3]= 0.839348444;
+ daa[8*20+4]= 0.411543728;
+ daa[8*20+5]= 1.812173605;
+ daa[8*20+6]= 0.877842609;
+ daa[8*20+7]= 0.476331437;
+ daa[9*20+0]= 0.464590585;
+ daa[9*20+1]= 0.35964586;
+ daa[9*20+2]= 0.426069419;
+ daa[9*20+3]= 0.266775558;
+ daa[9*20+4]= 0.417547309;
+ daa[9*20+5]= 0.315256838;
+ daa[9*20+6]= 0.30421529;
+ daa[9*20+7]= 0.180198883;
+ daa[9*20+8]= 0.285186418;
+ daa[10*20+0]= 0.804404505;
+ daa[10*20+1]= 0.520701585;
+ daa[10*20+2]= 0.41009447;
+ daa[10*20+3]= 0.269124919;
+ daa[10*20+4]= 0.450795211;
+ daa[10*20+5]= 0.625792937;
+ daa[10*20+6]= 0.32078471;
+ daa[10*20+7]= 0.259854426;
+ daa[10*20+8]= 0.363981358;
+ daa[10*20+9]= 4.162454693;
+ daa[11*20+0]= 0.831998835;
+ daa[11*20+1]= 4.956476453;
+ daa[11*20+2]= 2.037575629;
+ daa[11*20+3]= 1.114178954;
+ daa[11*20+4]= 0.274163536;
+ daa[11*20+5]= 3.521346591;
+ daa[11*20+6]= 2.415974716;
+ daa[11*20+7]= 0.581001076;
+ daa[11*20+8]= 0.985885486;
+ daa[11*20+9]= 0.374784947;
+ daa[11*20+10]= 0.498011337;
+ daa[12*20+0]= 1.546725076;
+ daa[12*20+1]= 0.81346254;
+ daa[12*20+2]= 0.737846301;
+ daa[12*20+3]= 0.341932741;
+ daa[12*20+4]= 0.618614612;
+ daa[12*20+5]= 2.067388546;
+ daa[12*20+6]= 0.531773639;
+ daa[12*20+7]= 0.465349326;
+ daa[12*20+8]= 0.380925433;
+ daa[12*20+9]= 3.65807012;
+ daa[12*20+10]= 5.002338375;
+ daa[12*20+11]= 0.661095832;
+ daa[13*20+0]= 0.546169219;
+ daa[13*20+1]= 0.303437244;
+ daa[13*20+2]= 0.425193716;
+ daa[13*20+3]= 0.219005213;
+ daa[13*20+4]= 0.669206193;
+ daa[13*20+5]= 0.406042546;
+ daa[13*20+6]= 0.224154698;
+ daa[13*20+7]= 0.35402891;
+ daa[13*20+8]= 0.576231691;
+ daa[13*20+9]= 1.495264661;
+ daa[13*20+10]= 2.392638293;
+ daa[13*20+11]= 0.269496317;
+ daa[13*20+12]= 2.306919847;
+ daa[14*20+0]= 1.241586045;
+ daa[14*20+1]= 0.65577338;
+ daa[14*20+2]= 0.711495595;
+ daa[14*20+3]= 0.775624818;
+ daa[14*20+4]= 0.198679914;
+ daa[14*20+5]= 0.850116543;
+ daa[14*20+6]= 0.794584081;
+ daa[14*20+7]= 0.588254139;
+ daa[14*20+8]= 0.456058589;
+ daa[14*20+9]= 0.366232942;
+ daa[14*20+10]= 0.430073179;
+ daa[14*20+11]= 1.036079005;
+ daa[14*20+12]= 0.337502282;
+ daa[14*20+13]= 0.481144863;
+ daa[15*20+0]= 3.452308792;
+ daa[15*20+1]= 0.910144334;
+ daa[15*20+2]= 2.572577221;
+ daa[15*20+3]= 1.440896785;
+ daa[15*20+4]= 0.99870098;
+ daa[15*20+5]= 1.348272505;
+ daa[15*20+6]= 1.205509425;
+ daa[15*20+7]= 1.402122097;
+ daa[15*20+8]= 0.799966711;
+ daa[15*20+9]= 0.530641901;
+ daa[15*20+10]= 0.402471997;
+ daa[15*20+11]= 1.234648153;
+ daa[15*20+12]= 0.945453716;
+ daa[15*20+13]= 0.613230817;
+ daa[15*20+14]= 1.217683028;
+ daa[16*20+0]= 1.751412803;
+ daa[16*20+1]= 0.89517149;
+ daa[16*20+2]= 1.823161023;
+ daa[16*20+3]= 0.994227284;
+ daa[16*20+4]= 0.847312432;
+ daa[16*20+5]= 1.320626678;
+ daa[16*20+6]= 0.949599791;
+ daa[16*20+7]= 0.542185658;
+ daa[16*20+8]= 0.83039281;
+ daa[16*20+9]= 1.114132523;
+ daa[16*20+10]= 0.779827336;
+ daa[16*20+11]= 1.290709079;
+ daa[16*20+12]= 1.551488041;
+ daa[16*20+13]= 0.718895136;
+ daa[16*20+14]= 0.780913179;
+ daa[16*20+15]= 4.448982584;
+ daa[17*20+0]= 0.35011051;
+ daa[17*20+1]= 0.618778365;
+ daa[17*20+2]= 0.422407388;
+ daa[17*20+3]= 0.362495245;
+ daa[17*20+4]= 0.445669347;
+ daa[17*20+5]= 0.72038474;
+ daa[17*20+6]= 0.261258229;
+ daa[17*20+7]= 0.37874827;
+ daa[17*20+8]= 0.72436751;
+ daa[17*20+9]= 0.516260502;
+ daa[17*20+10]= 0.794797115;
+ daa[17*20+11]= 0.43340962;
+ daa[17*20+12]= 0.768395107;
+ daa[17*20+13]= 3.29519344;
+ daa[17*20+14]= 0.499869138;
+ daa[17*20+15]= 0.496334956;
+ daa[17*20+16]= 0.38372361;
+ daa[18*20+0]= 0.573154753;
+ daa[18*20+1]= 0.628599063;
+ daa[18*20+2]= 0.720013799;
+ daa[18*20+3]= 0.436220437;
+ daa[18*20+4]= 0.55626163;
+ daa[18*20+5]= 0.728970584;
+ daa[18*20+6]= 0.50720003;
+ daa[18*20+7]= 0.284727562;
+ daa[18*20+8]= 2.210952064;
+ daa[18*20+9]= 0.570562395;
+ daa[18*20+10]= 0.811019594;
+ daa[18*20+11]= 0.664884513;
+ daa[18*20+12]= 0.93253606;
+ daa[18*20+13]= 5.894735673;
+ daa[18*20+14]= 0.433748126;
+ daa[18*20+15]= 0.593795813;
+ daa[18*20+16]= 0.523549536;
+ daa[18*20+17]= 2.996248013;
+ daa[19*20+0]= 2.063050067;
+ daa[19*20+1]= 0.388680158;
+ daa[19*20+2]= 0.474418852;
+ daa[19*20+3]= 0.275658381;
+ daa[19*20+4]= 0.998911631;
+ daa[19*20+5]= 0.634408285;
+ daa[19*20+6]= 0.527640634;
+ daa[19*20+7]= 0.314700907;
+ daa[19*20+8]= 0.305792277;
+ daa[19*20+9]= 8.002789424;
+ daa[19*20+10]= 2.113077156;
+ daa[19*20+11]= 0.526184203;
+ daa[19*20+12]= 1.737356217;
+ daa[19*20+13]= 0.983844803;
+ daa[19*20+14]= 0.551333603;
+ daa[19*20+15]= 0.507506011;
+ daa[19*20+16]= 1.89965079;
+ daa[19*20+17]= 0.429570747;
+ daa[19*20+18]= 0.716795463;
+
+ f[0]= 0.076;
+ f[1]= 0.054;
+ f[2]= 0.038;
+ f[3]= 0.045;
+ f[4]= 0.028;
+ f[5]= 0.034;
+ f[6]= 0.053;
+ f[7]= 0.078;
+ f[8]= 0.030;
+ f[9]= 0.060;
+ f[10]= 0.096;
+ f[11]= 0.052;
+ f[12]= 0.022;
+ f[13]= 0.045;
+ f[14]= 0.042;
+ f[15]= 0.068;
+ f[16]= 0.056;
+ f[17]= 0.016;
+ f[18]= 0.036;
+ f[19]= 0.071;
+ }
+ break;
+ case PLL_HIVB:
+ {
+ daa[1*20+0]= 0.30750700;
+ daa[2*20+0]= 0.00500000;
+ daa[2*20+1]= 0.29554300;
+ daa[3*20+0]= 1.45504000;
+ daa[3*20+1]= 0.00500000;
+ daa[3*20+2]= 17.66120000;
+ daa[4*20+0]= 0.12375800;
+ daa[4*20+1]= 0.35172100;
+ daa[4*20+2]= 0.08606420;
+ daa[4*20+3]= 0.00500000;
+ daa[5*20+0]= 0.05511280;
+ daa[5*20+1]= 3.42150000;
+ daa[5*20+2]= 0.67205200;
+ daa[5*20+3]= 0.00500000;
+ daa[5*20+4]= 0.00500000;
+ daa[6*20+0]= 1.48135000;
+ daa[6*20+1]= 0.07492180;
+ daa[6*20+2]= 0.07926330;
+ daa[6*20+3]= 10.58720000;
+ daa[6*20+4]= 0.00500000;
+ daa[6*20+5]= 2.56020000;
+ daa[7*20+0]= 2.13536000;
+ daa[7*20+1]= 3.65345000;
+ daa[7*20+2]= 0.32340100;
+ daa[7*20+3]= 2.83806000;
+ daa[7*20+4]= 0.89787100;
+ daa[7*20+5]= 0.06191370;
+ daa[7*20+6]= 3.92775000;
+ daa[8*20+0]= 0.08476130;
+ daa[8*20+1]= 9.04044000;
+ daa[8*20+2]= 7.64585000;
+ daa[8*20+3]= 1.91690000;
+ daa[8*20+4]= 0.24007300;
+ daa[8*20+5]= 7.05545000;
+ daa[8*20+6]= 0.11974000;
+ daa[8*20+7]= 0.00500000;
+ daa[9*20+0]= 0.00500000;
+ daa[9*20+1]= 0.67728900;
+ daa[9*20+2]= 0.68056500;
+ daa[9*20+3]= 0.01767920;
+ daa[9*20+4]= 0.00500000;
+ daa[9*20+5]= 0.00500000;
+ daa[9*20+6]= 0.00609079;
+ daa[9*20+7]= 0.00500000;
+ daa[9*20+8]= 0.10311100;
+ daa[10*20+0]= 0.21525600;
+ daa[10*20+1]= 0.70142700;
+ daa[10*20+2]= 0.00500000;
+ daa[10*20+3]= 0.00876048;
+ daa[10*20+4]= 0.12977700;
+ daa[10*20+5]= 1.49456000;
+ daa[10*20+6]= 0.00500000;
+ daa[10*20+7]= 0.00500000;
+ daa[10*20+8]= 1.74171000;
+ daa[10*20+9]= 5.95879000;
+ daa[11*20+0]= 0.00500000;
+ daa[11*20+1]= 20.45000000;
+ daa[11*20+2]= 7.90443000;
+ daa[11*20+3]= 0.00500000;
+ daa[11*20+4]= 0.00500000;
+ daa[11*20+5]= 6.54737000;
+ daa[11*20+6]= 4.61482000;
+ daa[11*20+7]= 0.52170500;
+ daa[11*20+8]= 0.00500000;
+ daa[11*20+9]= 0.32231900;
+ daa[11*20+10]= 0.08149950;
+ daa[12*20+0]= 0.01866430;
+ daa[12*20+1]= 2.51394000;
+ daa[12*20+2]= 0.00500000;
+ daa[12*20+3]= 0.00500000;
+ daa[12*20+4]= 0.00500000;
+ daa[12*20+5]= 0.30367600;
+ daa[12*20+6]= 0.17578900;
+ daa[12*20+7]= 0.00500000;
+ daa[12*20+8]= 0.00500000;
+ daa[12*20+9]= 11.20650000;
+ daa[12*20+10]= 5.31961000;
+ daa[12*20+11]= 1.28246000;
+ daa[13*20+0]= 0.01412690;
+ daa[13*20+1]= 0.00500000;
+ daa[13*20+2]= 0.00500000;
+ daa[13*20+3]= 0.00500000;
+ daa[13*20+4]= 9.29815000;
+ daa[13*20+5]= 0.00500000;
+ daa[13*20+6]= 0.00500000;
+ daa[13*20+7]= 0.29156100;
+ daa[13*20+8]= 0.14555800;
+ daa[13*20+9]= 3.39836000;
+ daa[13*20+10]= 8.52484000;
+ daa[13*20+11]= 0.03426580;
+ daa[13*20+12]= 0.18802500;
+ daa[14*20+0]= 2.12217000;
+ daa[14*20+1]= 1.28355000;
+ daa[14*20+2]= 0.00739578;
+ daa[14*20+3]= 0.03426580;
+ daa[14*20+4]= 0.00500000;
+ daa[14*20+5]= 4.47211000;
+ daa[14*20+6]= 0.01202260;
+ daa[14*20+7]= 0.00500000;
+ daa[14*20+8]= 2.45318000;
+ daa[14*20+9]= 0.04105930;
+ daa[14*20+10]= 2.07757000;
+ daa[14*20+11]= 0.03138620;
+ daa[14*20+12]= 0.00500000;
+ daa[14*20+13]= 0.00500000;
+ daa[15*20+0]= 2.46633000;
+ daa[15*20+1]= 3.47910000;
+ daa[15*20+2]= 13.14470000;
+ daa[15*20+3]= 0.52823000;
+ daa[15*20+4]= 4.69314000;
+ daa[15*20+5]= 0.11631100;
+ daa[15*20+6]= 0.00500000;
+ daa[15*20+7]= 4.38041000;
+ daa[15*20+8]= 0.38274700;
+ daa[15*20+9]= 1.21803000;
+ daa[15*20+10]= 0.92765600;
+ daa[15*20+11]= 0.50411100;
+ daa[15*20+12]= 0.00500000;
+ daa[15*20+13]= 0.95647200;
+ daa[15*20+14]= 5.37762000;
+ daa[16*20+0]= 15.91830000;
+ daa[16*20+1]= 2.86868000;
+ daa[16*20+2]= 6.88667000;
+ daa[16*20+3]= 0.27472400;
+ daa[16*20+4]= 0.73996900;
+ daa[16*20+5]= 0.24358900;
+ daa[16*20+6]= 0.28977400;
+ daa[16*20+7]= 0.36961500;
+ daa[16*20+8]= 0.71159400;
+ daa[16*20+9]= 8.61217000;
+ daa[16*20+10]= 0.04376730;
+ daa[16*20+11]= 4.67142000;
+ daa[16*20+12]= 4.94026000;
+ daa[16*20+13]= 0.01412690;
+ daa[16*20+14]= 2.01417000;
+ daa[16*20+15]= 8.93107000;
+ daa[17*20+0]= 0.00500000;
+ daa[17*20+1]= 0.99133800;
+ daa[17*20+2]= 0.00500000;
+ daa[17*20+3]= 0.00500000;
+ daa[17*20+4]= 2.63277000;
+ daa[17*20+5]= 0.02665600;
+ daa[17*20+6]= 0.00500000;
+ daa[17*20+7]= 1.21674000;
+ daa[17*20+8]= 0.06951790;
+ daa[17*20+9]= 0.00500000;
+ daa[17*20+10]= 0.74884300;
+ daa[17*20+11]= 0.00500000;
+ daa[17*20+12]= 0.08907800;
+ daa[17*20+13]= 0.82934300;
+ daa[17*20+14]= 0.04445060;
+ daa[17*20+15]= 0.02487280;
+ daa[17*20+16]= 0.00500000;
+ daa[18*20+0]= 0.00500000;
+ daa[18*20+1]= 0.00991826;
+ daa[18*20+2]= 1.76417000;
+ daa[18*20+3]= 0.67465300;
+ daa[18*20+4]= 7.57932000;
+ daa[18*20+5]= 0.11303300;
+ daa[18*20+6]= 0.07926330;
+ daa[18*20+7]= 0.00500000;
+ daa[18*20+8]= 18.69430000;
+ daa[18*20+9]= 0.14816800;
+ daa[18*20+10]= 0.11198600;
+ daa[18*20+11]= 0.00500000;
+ daa[18*20+12]= 0.00500000;
+ daa[18*20+13]= 15.34000000;
+ daa[18*20+14]= 0.03043810;
+ daa[18*20+15]= 0.64802400;
+ daa[18*20+16]= 0.10565200;
+ daa[18*20+17]= 1.28022000;
+ daa[19*20+0]= 7.61428000;
+ daa[19*20+1]= 0.08124540;
+ daa[19*20+2]= 0.02665600;
+ daa[19*20+3]= 1.04793000;
+ daa[19*20+4]= 0.42002700;
+ daa[19*20+5]= 0.02091530;
+ daa[19*20+6]= 1.02847000;
+ daa[19*20+7]= 0.95315500;
+ daa[19*20+8]= 0.00500000;
+ daa[19*20+9]= 17.73890000;
+ daa[19*20+10]= 1.41036000;
+ daa[19*20+11]= 0.26582900;
+ daa[19*20+12]= 6.85320000;
+ daa[19*20+13]= 0.72327400;
+ daa[19*20+14]= 0.00500000;
+ daa[19*20+15]= 0.07492180;
+ daa[19*20+16]= 0.70922600;
+ daa[19*20+17]= 0.00500000;
+ daa[19*20+18]= 0.04105930;
+
+ f[0]= 0.060490222; f[1]= 0.066039665; f[2]= 0.044127815; f[3]= 0.042109048;
+ f[4]= 0.020075899; f[5]= 0.053606488; f[6]= 0.071567447; f[7]= 0.072308239;
+ f[8]= 0.022293943; f[9]= 0.069730629; f[10]= 0.098851122; f[11]= 0.056968211;
+ f[12]= 0.019768318; f[13]= 0.028809447; f[14]= 0.046025282; f[15]= 0.05060433;
+ f[16]= 0.053636813; f[17]= 0.033011601; f[18]= 0.028350243; f[19]= 0.061625237;
+ }
+ break;
+ case PLL_HIVW:
+ {
+ daa[1*20+0]= 0.0744808;
+ daa[2*20+0]= 0.6175090;
+ daa[2*20+1]= 0.1602400;
+ daa[3*20+0]= 4.4352100;
+ daa[3*20+1]= 0.0674539;
+ daa[3*20+2]= 29.4087000;
+ daa[4*20+0]= 0.1676530;
+ daa[4*20+1]= 2.8636400;
+ daa[4*20+2]= 0.0604932;
+ daa[4*20+3]= 0.0050000;
+ daa[5*20+0]= 0.0050000;
+ daa[5*20+1]= 10.6746000;
+ daa[5*20+2]= 0.3420680;
+ daa[5*20+3]= 0.0050000;
+ daa[5*20+4]= 0.0050000;
+ daa[6*20+0]= 5.5632500;
+ daa[6*20+1]= 0.0251632;
+ daa[6*20+2]= 0.2015260;
+ daa[6*20+3]= 12.1233000;
+ daa[6*20+4]= 0.0050000;
+ daa[6*20+5]= 3.2065600;
+ daa[7*20+0]= 1.8685000;
+ daa[7*20+1]= 13.4379000;
+ daa[7*20+2]= 0.0604932;
+ daa[7*20+3]= 10.3969000;
+ daa[7*20+4]= 0.0489798;
+ daa[7*20+5]= 0.0604932;
+ daa[7*20+6]= 14.7801000;
+ daa[8*20+0]= 0.0050000;
+ daa[8*20+1]= 6.8440500;
+ daa[8*20+2]= 8.5987600;
+ daa[8*20+3]= 2.3177900;
+ daa[8*20+4]= 0.0050000;
+ daa[8*20+5]= 18.5465000;
+ daa[8*20+6]= 0.0050000;
+ daa[8*20+7]= 0.0050000;
+ daa[9*20+0]= 0.0050000;
+ daa[9*20+1]= 1.3406900;
+ daa[9*20+2]= 0.9870280;
+ daa[9*20+3]= 0.1451240;
+ daa[9*20+4]= 0.0050000;
+ daa[9*20+5]= 0.0342252;
+ daa[9*20+6]= 0.0390512;
+ daa[9*20+7]= 0.0050000;
+ daa[9*20+8]= 0.0050000;
+ daa[10*20+0]= 0.1602400;
+ daa[10*20+1]= 0.5867570;
+ daa[10*20+2]= 0.0050000;
+ daa[10*20+3]= 0.0050000;
+ daa[10*20+4]= 0.0050000;
+ daa[10*20+5]= 2.8904800;
+ daa[10*20+6]= 0.1298390;
+ daa[10*20+7]= 0.0489798;
+ daa[10*20+8]= 1.7638200;
+ daa[10*20+9]= 9.1024600;
+ daa[11*20+0]= 0.5927840;
+ daa[11*20+1]= 39.8897000;
+ daa[11*20+2]= 10.6655000;
+ daa[11*20+3]= 0.8943130;
+ daa[11*20+4]= 0.0050000;
+ daa[11*20+5]= 13.0705000;
+ daa[11*20+6]= 23.9626000;
+ daa[11*20+7]= 0.2794250;
+ daa[11*20+8]= 0.2240600;
+ daa[11*20+9]= 0.8174810;
+ daa[11*20+10]= 0.0050000;
+ daa[12*20+0]= 0.0050000;
+ daa[12*20+1]= 3.2865200;
+ daa[12*20+2]= 0.2015260;
+ daa[12*20+3]= 0.0050000;
+ daa[12*20+4]= 0.0050000;
+ daa[12*20+5]= 0.0050000;
+ daa[12*20+6]= 0.0050000;
+ daa[12*20+7]= 0.0489798;
+ daa[12*20+8]= 0.0050000;
+ daa[12*20+9]= 17.3064000;
+ daa[12*20+10]= 11.3839000;
+ daa[12*20+11]= 4.0956400;
+ daa[13*20+0]= 0.5979230;
+ daa[13*20+1]= 0.0050000;
+ daa[13*20+2]= 0.0050000;
+ daa[13*20+3]= 0.0050000;
+ daa[13*20+4]= 0.3629590;
+ daa[13*20+5]= 0.0050000;
+ daa[13*20+6]= 0.0050000;
+ daa[13*20+7]= 0.0050000;
+ daa[13*20+8]= 0.0050000;
+ daa[13*20+9]= 1.4828800;
+ daa[13*20+10]= 7.4878100;
+ daa[13*20+11]= 0.0050000;
+ daa[13*20+12]= 0.0050000;
+ daa[14*20+0]= 1.0098100;
+ daa[14*20+1]= 0.4047230;
+ daa[14*20+2]= 0.3448480;
+ daa[14*20+3]= 0.0050000;
+ daa[14*20+4]= 0.0050000;
+ daa[14*20+5]= 3.0450200;
+ daa[14*20+6]= 0.0050000;
+ daa[14*20+7]= 0.0050000;
+ daa[14*20+8]= 13.9444000;
+ daa[14*20+9]= 0.0050000;
+ daa[14*20+10]= 9.8309500;
+ daa[14*20+11]= 0.1119280;
+ daa[14*20+12]= 0.0050000;
+ daa[14*20+13]= 0.0342252;
+ daa[15*20+0]= 8.5942000;
+ daa[15*20+1]= 8.3502400;
+ daa[15*20+2]= 14.5699000;
+ daa[15*20+3]= 0.4278810;
+ daa[15*20+4]= 1.1219500;
+ daa[15*20+5]= 0.1602400;
+ daa[15*20+6]= 0.0050000;
+ daa[15*20+7]= 6.2796600;
+ daa[15*20+8]= 0.7251570;
+ daa[15*20+9]= 0.7400910;
+ daa[15*20+10]= 6.1439600;
+ daa[15*20+11]= 0.0050000;
+ daa[15*20+12]= 0.3925750;
+ daa[15*20+13]= 4.2793900;
+ daa[15*20+14]= 14.2490000;
+ daa[16*20+0]= 24.1422000;
+ daa[16*20+1]= 0.9282030;
+ daa[16*20+2]= 4.5420600;
+ daa[16*20+3]= 0.6303950;
+ daa[16*20+4]= 0.0050000;
+ daa[16*20+5]= 0.2030910;
+ daa[16*20+6]= 0.4587430;
+ daa[16*20+7]= 0.0489798;
+ daa[16*20+8]= 0.9595600;
+ daa[16*20+9]= 9.3634500;
+ daa[16*20+10]= 0.0050000;
+ daa[16*20+11]= 4.0480200;
+ daa[16*20+12]= 7.4131300;
+ daa[16*20+13]= 0.1145120;
+ daa[16*20+14]= 4.3370100;
+ daa[16*20+15]= 6.3407900;
+ daa[17*20+0]= 0.0050000;
+ daa[17*20+1]= 5.9656400;
+ daa[17*20+2]= 0.0050000;
+ daa[17*20+3]= 0.0050000;
+ daa[17*20+4]= 5.4989400;
+ daa[17*20+5]= 0.0443298;
+ daa[17*20+6]= 0.0050000;
+ daa[17*20+7]= 2.8258000;
+ daa[17*20+8]= 0.0050000;
+ daa[17*20+9]= 0.0050000;
+ daa[17*20+10]= 1.3703100;
+ daa[17*20+11]= 0.0050000;
+ daa[17*20+12]= 0.0050000;
+ daa[17*20+13]= 0.0050000;
+ daa[17*20+14]= 0.0050000;
+ daa[17*20+15]= 1.1015600;
+ daa[17*20+16]= 0.0050000;
+ daa[18*20+0]= 0.0050000;
+ daa[18*20+1]= 0.0050000;
+ daa[18*20+2]= 5.0647500;
+ daa[18*20+3]= 2.2815400;
+ daa[18*20+4]= 8.3483500;
+ daa[18*20+5]= 0.0050000;
+ daa[18*20+6]= 0.0050000;
+ daa[18*20+7]= 0.0050000;
+ daa[18*20+8]= 47.4889000;
+ daa[18*20+9]= 0.1145120;
+ daa[18*20+10]= 0.0050000;
+ daa[18*20+11]= 0.0050000;
+ daa[18*20+12]= 0.5791980;
+ daa[18*20+13]= 4.1272800;
+ daa[18*20+14]= 0.0050000;
+ daa[18*20+15]= 0.9331420;
+ daa[18*20+16]= 0.4906080;
+ daa[18*20+17]= 0.0050000;
+ daa[19*20+0]= 24.8094000;
+ daa[19*20+1]= 0.2794250;
+ daa[19*20+2]= 0.0744808;
+ daa[19*20+3]= 2.9178600;
+ daa[19*20+4]= 0.0050000;
+ daa[19*20+5]= 0.0050000;
+ daa[19*20+6]= 2.1995200;
+ daa[19*20+7]= 2.7962200;
+ daa[19*20+8]= 0.8274790;
+ daa[19*20+9]= 24.8231000;
+ daa[19*20+10]= 2.9534400;
+ daa[19*20+11]= 0.1280650;
+ daa[19*20+12]= 14.7683000;
+ daa[19*20+13]= 2.2800000;
+ daa[19*20+14]= 0.0050000;
+ daa[19*20+15]= 0.8626370;
+ daa[19*20+16]= 0.0050000;
+ daa[19*20+17]= 0.0050000;
+ daa[19*20+18]= 1.3548200;
+
+ f[0]= 0.0377494; f[1]= 0.057321; f[2]= 0.0891129; f[3]= 0.0342034;
+ f[4]= 0.0240105; f[5]= 0.0437824; f[6]= 0.0618606; f[7]= 0.0838496;
+ f[8]= 0.0156076; f[9]= 0.0983641; f[10]= 0.0577867; f[11]= 0.0641682;
+ f[12]= 0.0158419; f[13]= 0.0422741; f[14]= 0.0458601; f[15]= 0.0550846;
+ f[16]= 0.0813774; f[17]= 0.019597; f[18]= 0.0205847; f[19]= 0.0515638;
+ }
+ break;
+ case PLL_JTTDCMUT:
+ {
+ daa[1*20+0]= 0.531678;
+ daa[2*20+0]= 0.557967;
+ daa[2*20+1]= 0.451095;
+ daa[3*20+0]= 0.827445;
+ daa[3*20+1]= 0.154899;
+ daa[3*20+2]= 5.549530;
+ daa[4*20+0]= 0.574478;
+ daa[4*20+1]= 1.019843;
+ daa[4*20+2]= 0.313311;
+ daa[4*20+3]= 0.105625;
+ daa[5*20+0]= 0.556725;
+ daa[5*20+1]= 3.021995;
+ daa[5*20+2]= 0.768834;
+ daa[5*20+3]= 0.521646;
+ daa[5*20+4]= 0.091304;
+ daa[6*20+0]= 1.066681;
+ daa[6*20+1]= 0.318483;
+ daa[6*20+2]= 0.578115;
+ daa[6*20+3]= 7.766557;
+ daa[6*20+4]= 0.053907;
+ daa[6*20+5]= 3.417706;
+ daa[7*20+0]= 1.740159;
+ daa[7*20+1]= 1.359652;
+ daa[7*20+2]= 0.773313;
+ daa[7*20+3]= 1.272434;
+ daa[7*20+4]= 0.546389;
+ daa[7*20+5]= 0.231294;
+ daa[7*20+6]= 1.115632;
+ daa[8*20+0]= 0.219970;
+ daa[8*20+1]= 3.210671;
+ daa[8*20+2]= 4.025778;
+ daa[8*20+3]= 1.032342;
+ daa[8*20+4]= 0.724998;
+ daa[8*20+5]= 5.684080;
+ daa[8*20+6]= 0.243768;
+ daa[8*20+7]= 0.201696;
+ daa[9*20+0]= 0.361684;
+ daa[9*20+1]= 0.239195;
+ daa[9*20+2]= 0.491003;
+ daa[9*20+3]= 0.115968;
+ daa[9*20+4]= 0.150559;
+ daa[9*20+5]= 0.078270;
+ daa[9*20+6]= 0.111773;
+ daa[9*20+7]= 0.053769;
+ daa[9*20+8]= 0.181788;
+ daa[10*20+0]= 0.310007;
+ daa[10*20+1]= 0.372261;
+ daa[10*20+2]= 0.137289;
+ daa[10*20+3]= 0.061486;
+ daa[10*20+4]= 0.164593;
+ daa[10*20+5]= 0.709004;
+ daa[10*20+6]= 0.097485;
+ daa[10*20+7]= 0.069492;
+ daa[10*20+8]= 0.540571;
+ daa[10*20+9]= 2.335139;
+ daa[11*20+0]= 0.369437;
+ daa[11*20+1]= 6.529255;
+ daa[11*20+2]= 2.529517;
+ daa[11*20+3]= 0.282466;
+ daa[11*20+4]= 0.049009;
+ daa[11*20+5]= 2.966732;
+ daa[11*20+6]= 1.731684;
+ daa[11*20+7]= 0.269840;
+ daa[11*20+8]= 0.525096;
+ daa[11*20+9]= 0.202562;
+ daa[11*20+10]= 0.146481;
+ daa[12*20+0]= 0.469395;
+ daa[12*20+1]= 0.431045;
+ daa[12*20+2]= 0.330720;
+ daa[12*20+3]= 0.190001;
+ daa[12*20+4]= 0.409202;
+ daa[12*20+5]= 0.456901;
+ daa[12*20+6]= 0.175084;
+ daa[12*20+7]= 0.130379;
+ daa[12*20+8]= 0.329660;
+ daa[12*20+9]= 4.831666;
+ daa[12*20+10]= 3.856906;
+ daa[12*20+11]= 0.624581;
+ daa[13*20+0]= 0.138293;
+ daa[13*20+1]= 0.065314;
+ daa[13*20+2]= 0.073481;
+ daa[13*20+3]= 0.032522;
+ daa[13*20+4]= 0.678335;
+ daa[13*20+5]= 0.045683;
+ daa[13*20+6]= 0.043829;
+ daa[13*20+7]= 0.050212;
+ daa[13*20+8]= 0.453428;
+ daa[13*20+9]= 0.777090;
+ daa[13*20+10]= 2.500294;
+ daa[13*20+11]= 0.024521;
+ daa[13*20+12]= 0.436181;
+ daa[14*20+0]= 1.959599;
+ daa[14*20+1]= 0.710489;
+ daa[14*20+2]= 0.121804;
+ daa[14*20+3]= 0.127164;
+ daa[14*20+4]= 0.123653;
+ daa[14*20+5]= 1.608126;
+ daa[14*20+6]= 0.191994;
+ daa[14*20+7]= 0.208081;
+ daa[14*20+8]= 1.141961;
+ daa[14*20+9]= 0.098580;
+ daa[14*20+10]= 1.060504;
+ daa[14*20+11]= 0.216345;
+ daa[14*20+12]= 0.164215;
+ daa[14*20+13]= 0.148483;
+ daa[15*20+0]= 3.887095;
+ daa[15*20+1]= 1.001551;
+ daa[15*20+2]= 5.057964;
+ daa[15*20+3]= 0.589268;
+ daa[15*20+4]= 2.155331;
+ daa[15*20+5]= 0.548807;
+ daa[15*20+6]= 0.312449;
+ daa[15*20+7]= 1.874296;
+ daa[15*20+8]= 0.743458;
+ daa[15*20+9]= 0.405119;
+ daa[15*20+10]= 0.592511;
+ daa[15*20+11]= 0.474478;
+ daa[15*20+12]= 0.285564;
+ daa[15*20+13]= 0.943971;
+ daa[15*20+14]= 2.788406;
+ daa[16*20+0]= 4.582565;
+ daa[16*20+1]= 0.650282;
+ daa[16*20+2]= 2.351311;
+ daa[16*20+3]= 0.425159;
+ daa[16*20+4]= 0.469823;
+ daa[16*20+5]= 0.523825;
+ daa[16*20+6]= 0.331584;
+ daa[16*20+7]= 0.316862;
+ daa[16*20+8]= 0.477355;
+ daa[16*20+9]= 2.553806;
+ daa[16*20+10]= 0.272514;
+ daa[16*20+11]= 0.965641;
+ daa[16*20+12]= 2.114728;
+ daa[16*20+13]= 0.138904;
+ daa[16*20+14]= 1.176961;
+ daa[16*20+15]= 4.777647;
+ daa[17*20+0]= 0.084329;
+ daa[17*20+1]= 1.257961;
+ daa[17*20+2]= 0.027700;
+ daa[17*20+3]= 0.057466;
+ daa[17*20+4]= 1.104181;
+ daa[17*20+5]= 0.172206;
+ daa[17*20+6]= 0.114381;
+ daa[17*20+7]= 0.544180;
+ daa[17*20+8]= 0.128193;
+ daa[17*20+9]= 0.134510;
+ daa[17*20+10]= 0.530324;
+ daa[17*20+11]= 0.089134;
+ daa[17*20+12]= 0.201334;
+ daa[17*20+13]= 0.537922;
+ daa[17*20+14]= 0.069965;
+ daa[17*20+15]= 0.310927;
+ daa[17*20+16]= 0.080556;
+ daa[18*20+0]= 0.139492;
+ daa[18*20+1]= 0.235601;
+ daa[18*20+2]= 0.700693;
+ daa[18*20+3]= 0.453952;
+ daa[18*20+4]= 2.114852;
+ daa[18*20+5]= 0.254745;
+ daa[18*20+6]= 0.063452;
+ daa[18*20+7]= 0.052500;
+ daa[18*20+8]= 5.848400;
+ daa[18*20+9]= 0.303445;
+ daa[18*20+10]= 0.241094;
+ daa[18*20+11]= 0.087904;
+ daa[18*20+12]= 0.189870;
+ daa[18*20+13]= 5.484236;
+ daa[18*20+14]= 0.113850;
+ daa[18*20+15]= 0.628608;
+ daa[18*20+16]= 0.201094;
+ daa[18*20+17]= 0.747889;
+ daa[19*20+0]= 2.924161;
+ daa[19*20+1]= 0.171995;
+ daa[19*20+2]= 0.164525;
+ daa[19*20+3]= 0.315261;
+ daa[19*20+4]= 0.621323;
+ daa[19*20+5]= 0.179771;
+ daa[19*20+6]= 0.465271;
+ daa[19*20+7]= 0.470140;
+ daa[19*20+8]= 0.121827;
+ daa[19*20+9]= 9.533943;
+ daa[19*20+10]= 1.761439;
+ daa[19*20+11]= 0.124066;
+ daa[19*20+12]= 3.038533;
+ daa[19*20+13]= 0.593478;
+ daa[19*20+14]= 0.211561;
+ daa[19*20+15]= 0.408532;
+ daa[19*20+16]= 1.143980;
+ daa[19*20+17]= 0.239697;
+ daa[19*20+18]= 0.165473;
+
+ f[0]= 0.077;
+ f[1]= 0.051;
+ f[2]= 0.043;
+ f[3]= 0.051;
+ f[4]= 0.020;
+ f[5]= 0.041;
+ f[6]= 0.062;
+ f[7]= 0.075;
+ f[8]= 0.023;
+ f[9]= 0.053;
+ f[10]= 0.091;
+ f[11]= 0.059;
+ f[12]= 0.024;
+ f[13]= 0.040;
+ f[14]= 0.051;
+ f[15]= 0.068;
+ f[16]= 0.059;
+ f[17]= 0.014;
+ f[18]= 0.032;
+ f[19]= 0.066;
+ }
+ break;
+ case PLL_FLU:
+ {
+ daa[ 1*20+ 0] = 0.138658765 ;
+ daa[ 2*20+ 0] = 0.053366579 ;
+ daa[ 2*20+ 1] = 0.161000889 ;
+ daa[ 3*20+ 0] = 0.584852306 ;
+ daa[ 3*20+ 1] = 0.006771843 ;
+ daa[ 3*20+ 2] = 7.737392871 ;
+ daa[ 4*20+ 0] = 0.026447095 ;
+ daa[ 4*20+ 1] = 0.167207008 ;
+ daa[ 4*20+ 2] = 1.30E-05 ;
+ daa[ 4*20+ 3] = 1.41E-02 ;
+ daa[ 5*20+ 0] = 0.353753982 ;
+ daa[ 5*20+ 1] = 3.292716942 ;
+ daa[ 5*20+ 2] = 0.530642655 ;
+ daa[ 5*20+ 3] = 0.145469388 ;
+ daa[ 5*20+ 4] = 0.002547334 ;
+ daa[ 6*20+ 0] = 1.484234503 ;
+ daa[ 6*20+ 1] = 0.124897617 ;
+ daa[ 6*20+ 2] = 0.061652192 ;
+ daa[ 6*20+ 3] = 5.370511279 ;
+ daa[ 6*20+ 4] = 3.91E-11 ;
+ daa[ 6*20+ 5] = 1.195629122 ;
+ daa[ 7*20+ 0] = 1.132313122 ;
+ daa[ 7*20+ 1] = 1.190624465 ;
+ daa[ 7*20+ 2] = 0.322524648 ;
+ daa[ 7*20+ 3] = 1.934832784 ;
+ daa[ 7*20+ 4] = 0.116941459 ;
+ daa[ 7*20+ 5] = 0.108051341 ;
+ daa[ 7*20+ 6] = 1.593098825 ;
+ daa[ 8*20+ 0] = 0.214757862 ;
+ daa[ 8*20+ 1] = 1.879569938 ;
+ daa[ 8*20+ 2] = 1.387096032 ;
+ daa[ 8*20+ 3] = 0.887570549 ;
+ daa[ 8*20+ 4] = 2.18E-02 ;
+ daa[ 8*20+ 5] = 5.330313412 ;
+ daa[ 8*20+ 6] = 0.256491863 ;
+ daa[ 8*20+ 7] = 0.058774527 ;
+ daa[ 9*20+ 0] = 0.149926734 ;
+ daa[ 9*20+ 1] = 0.246117172 ;
+ daa[ 9*20+ 2] = 0.218571975 ;
+ daa[ 9*20+ 3] = 0.014085917 ;
+ daa[ 9*20+ 4] = 0.001112158 ;
+ daa[ 9*20+ 5] = 0.02883995 ;
+ daa[ 9*20+ 6] = 1.42E-02 ;
+ daa[ 9*20+ 7] = 1.63E-05 ;
+ daa[ 9*20+ 8] = 0.243190142 ;
+ daa[10*20+ 0] = 0.023116952 ;
+ daa[10*20+ 1] = 0.296045557 ;
+ daa[10*20+ 2] = 8.36E-04 ;
+ daa[10*20+ 3] = 0.005730682 ;
+ daa[10*20+ 4] = 0.005613627 ;
+ daa[10*20+ 5] = 1.020366955 ;
+ daa[10*20+ 6] = 0.016499536 ;
+ daa[10*20+ 7] = 0.006516229 ;
+ daa[10*20+ 8] = 0.321611694 ;
+ daa[10*20+ 9] = 3.512072282 ;
+ daa[11*20+ 0] = 0.47433361 ;
+ daa[11*20+ 1] = 15.30009662 ;
+ daa[11*20+ 2] = 2.646847965 ;
+ daa[11*20+ 3] = 0.29004298 ;
+ daa[11*20+ 4] = 3.83E-06 ;
+ daa[11*20+ 5] = 2.559587177 ;
+ daa[11*20+ 6] = 3.881488809 ;
+ daa[11*20+ 7] = 0.264148929 ;
+ daa[11*20+ 8] = 0.347302791 ;
+ daa[11*20+ 9] = 0.227707997 ;
+ daa[11*20+10] = 0.129223639 ;
+ daa[12*20+ 0] = 0.058745423 ;
+ daa[12*20+ 1] = 0.890162346 ;
+ daa[12*20+ 2] = 0.005251688 ;
+ daa[12*20+ 3] = 0.041762964 ;
+ daa[12*20+ 4] = 0.11145731 ;
+ daa[12*20+ 5] = 0.190259181 ;
+ daa[12*20+ 6] = 0.313974351 ;
+ daa[12*20+ 7] = 0.001500467 ;
+ daa[12*20+ 8] = 0.001273509 ;
+ daa[12*20+ 9] = 9.017954203 ;
+ daa[12*20+10] = 6.746936485 ;
+ daa[12*20+11] = 1.331291619 ;
+ daa[13*20+ 0] = 0.080490909 ;
+ daa[13*20+ 1] = 1.61E-02 ;
+ daa[13*20+ 2] = 8.36E-04 ;
+ daa[13*20+ 3] = 1.06E-06 ;
+ daa[13*20+ 4] = 0.104053666 ;
+ daa[13*20+ 5] = 0.032680657 ;
+ daa[13*20+ 6] = 0.001003501 ;
+ daa[13*20+ 7] = 0.001236645 ;
+ daa[13*20+ 8] = 0.119028506 ;
+ daa[13*20+ 9] = 1.463357278 ;
+ daa[13*20+10] = 2.986800036 ;
+ daa[13*20+11] = 3.20E-01 ;
+ daa[13*20+12] = 0.279910509 ;
+ daa[14*20+ 0] = 0.659311478 ;
+ daa[14*20+ 1] = 0.15402718 ;
+ daa[14*20+ 2] = 3.64E-02 ;
+ daa[14*20+ 3] = 0.188539456 ;
+ daa[14*20+ 4] = 1.59E-13 ;
+ daa[14*20+ 5] = 0.712769599 ;
+ daa[14*20+ 6] = 0.319558828 ;
+ daa[14*20+ 7] = 0.038631761 ;
+ daa[14*20+ 8] = 0.924466914 ;
+ daa[14*20+ 9] = 0.080543327 ;
+ daa[14*20+10] = 0.634308521 ;
+ daa[14*20+11] = 0.195750632 ;
+ daa[14*20+12] = 5.69E-02 ;
+ daa[14*20+13] = 0.00713243 ;
+ daa[15*20+ 0] = 3.011344519 ;
+ daa[15*20+ 1] = 0.95013841 ;
+ daa[15*20+ 2] = 3.881310531 ;
+ daa[15*20+ 3] = 0.338372183 ;
+ daa[15*20+ 4] = 0.336263345 ;
+ daa[15*20+ 5] = 0.487822499 ;
+ daa[15*20+ 6] = 0.307140298 ;
+ daa[15*20+ 7] = 1.585646577 ;
+ daa[15*20+ 8] = 0.58070425 ;
+ daa[15*20+ 9] = 0.290381075 ;
+ daa[15*20+10] = 0.570766693 ;
+ daa[15*20+11] = 0.283807672 ;
+ daa[15*20+12] = 0.007026588 ;
+ daa[15*20+13] = 0.99668567 ;
+ daa[15*20+14] = 2.087385344 ;
+ daa[16*20+ 0] = 5.418298175 ;
+ daa[16*20+ 1] = 0.183076905 ;
+ daa[16*20+ 2] = 2.140332316 ;
+ daa[16*20+ 3] = 0.135481233 ;
+ daa[16*20+ 4] = 0.011975266 ;
+ daa[16*20+ 5] = 0.602340963 ;
+ daa[16*20+ 6] = 0.280124895 ;
+ daa[16*20+ 7] = 0.01880803 ;
+ daa[16*20+ 8] = 0.368713573 ;
+ daa[16*20+ 9] = 2.904052286 ;
+ daa[16*20+10] = 0.044926357 ;
+ daa[16*20+11] = 1.5269642 ;
+ daa[16*20+12] = 2.031511321 ;
+ daa[16*20+13] = 0.000134906 ;
+ daa[16*20+14] = 0.542251094 ;
+ daa[16*20+15] = 2.206859934 ;
+ daa[17*20+ 0] = 1.96E-01 ;
+ daa[17*20+ 1] = 1.369429408 ;
+ daa[17*20+ 2] = 5.36E-04 ;
+ daa[17*20+ 3] = 1.49E-05 ;
+ daa[17*20+ 4] = 0.09410668 ;
+ daa[17*20+ 5] = 4.40E-02 ;
+ daa[17*20+ 6] = 0.155245492 ;
+ daa[17*20+ 7] = 0.196486447 ;
+ daa[17*20+ 8] = 2.24E-02 ;
+ daa[17*20+ 9] = 0.03213215 ;
+ daa[17*20+10] = 0.431277663 ;
+ daa[17*20+11] = 4.98E-05 ;
+ daa[17*20+12] = 0.070460039 ;
+ daa[17*20+13] = 0.814753094 ;
+ daa[17*20+14] = 0.000431021 ;
+ daa[17*20+15] = 0.099835753 ;
+ daa[17*20+16] = 0.207066206 ;
+ daa[18*20+ 0] = 0.018289288 ;
+ daa[18*20+ 1] = 0.099855497 ;
+ daa[18*20+ 2] = 0.373101927 ;
+ daa[18*20+ 3] = 0.525398543 ;
+ daa[18*20+ 4] = 0.601692431 ;
+ daa[18*20+ 5] = 0.072205935 ;
+ daa[18*20+ 6] = 0.10409287 ;
+ daa[18*20+ 7] = 0.074814997 ;
+ daa[18*20+ 8] = 6.448954446 ;
+ daa[18*20+ 9] = 0.273934263 ;
+ daa[18*20+10] = 0.340058468 ;
+ daa[18*20+11] = 0.012416222 ;
+ daa[18*20+12] = 0.874272175 ;
+ daa[18*20+13] = 5.393924245 ;
+ daa[18*20+14] = 1.82E-04 ;
+ daa[18*20+15] = 0.39255224 ;
+ daa[18*20+16] = 0.12489802 ;
+ daa[18*20+17] = 0.42775543 ;
+ daa[19*20+ 0] = 3.53200527 ;
+ daa[19*20+ 1] = 0.103964386 ;
+ daa[19*20+ 2] = 0.010257517 ;
+ daa[19*20+ 3] = 0.297123975 ;
+ daa[19*20+ 4] = 0.054904564 ;
+ daa[19*20+ 5] = 0.406697814 ;
+ daa[19*20+ 6] = 0.285047948 ;
+ daa[19*20+ 7] = 0.337229619 ;
+ daa[19*20+ 8] = 0.098631355 ;
+ daa[19*20+ 9] = 14.39405219 ;
+ daa[19*20+10] = 0.890598579 ;
+ daa[19*20+11] = 0.07312793 ;
+ daa[19*20+12] = 4.904842235 ;
+ daa[19*20+13] = 0.592587985 ;
+ daa[19*20+14] = 0.058971975 ;
+ daa[19*20+15] = 0.088256423 ;
+ daa[19*20+16] = 0.654109108 ;
+ daa[19*20+17] = 0.256900461 ;
+ daa[19*20+18] = 0.167581647 ;
+
+
+
+ f[0] = 0.0471 ;
+ f[1] = 0.0509 ;
+ f[2] = 0.0742 ;
+ f[3] = 0.0479 ;
+ f[4] = 0.0250 ;
+ f[5] = 0.0333 ;
+ f[6] = 0.0546 ;
+ f[7] = 0.0764 ;
+ f[8] = 0.0200 ;
+ f[9] = 0.0671 ;
+ f[10] = 0.0715 ;
+ f[11] = 0.0568 ;
+ f[12] = 0.0181 ;
+ f[13] = 0.0305 ;
+ f[14] = 0.0507 ;
+ f[15] = 0.0884 ;
+ f[16] = 0.0743 ;
+ f[17] = 0.0185 ;
+ f[18] = 0.0315 ;
+ f[19] = 0.0632 ;
+ }
+ break;
+ default:
+ assert(0);
+ }
+ }
+
+
+ /*
+
+ TODO review frequency sums for fixed as well as empirical base frequencies !
+
+ NUMERICAL BUG fix, rounded AA freqs in some models, such that
+ they actually really sum to 1.0 +/- epsilon
+
+ {
+ double acc = 0.0;
+
+ for(i = 0; i < 20; i++)
+ acc += f[i];
+
+ printf("%1.80f\n", acc);
+ assert(acc == 1.0);
+ }
+ */
+
+
+
+ /* fill the upper triangle (above the diagonal) with the corresponding values
+ from the lower triangle */
+ for (i=0; i<20; i++)
+ for (j=0; j<i; j++)
+ daa[j*20+i] = daa[i*20+j];
+
+
+ /*
+ for (i=0; i<20; i++)
+ {
+ for (j=0; j<20; j++)
+ {
+ if(i == j)
+ printf("0.0 ");
+ else
+ printf("%f ", daa[i * 20 + j]);
+ }
+ printf("\n");
+ }
+
+ for (i=0; i<20; i++)
+ printf("%f ", f[i]);
+ printf("\n");
+ */
+
+
+ max = 0;
+
+ /* copy the triangle above the diagonal from daa (which is a linear block) to
+ the triangle above the diagonal of a square matrix q. Store the maximal
+ value in variable max */
+ for(i = 0; i < 19; i++)
+ for(j = i + 1; j < 20; j++)
+ {
+ q[i][j] = temp = daa[i * 20 + j];
+ if(temp > max)
+ max = temp;
+ }
+
+ scaler = PLL_AA_SCALE / max;
+
+ /* SCALING HAS BEEN RE-INTRODUCED TO RESOLVE NUMERICAL PROBLEMS */
+
+ /* copy and scale values to the initialRates array */
+ r = 0;
+ for(i = 0; i < 19; i++)
+ {
+ for(j = i + 1; j < 20; j++)
+ {
+
+ q[i][j] *= scaler;
+
+
+ assert(q[i][j] <= PLL_AA_SCALE_PLUS_EPSILON);
+
+ initialRates[r++] = q[i][j];
+ }
+ }
+}
+
+/** @brief Not sure what this function does
+ *
+ * @todo
+ * Comment this function
+ */
+static void mytred2(double **a, const int n, double *d, double *e)
+{
+ int l, k, j, i;
+ double scale, hh, h, g, f;
+
+ for (i = n; i > 1; i--)
+ {
+ l = i - 1;
+ h = 0.0;
+ scale = 0.0;
+
+ if (l > 1)
+ {
+ for (k = 1; k <= l; k++)
+ scale += fabs(a[k - 1][i - 1]);
+ if (scale == 0.0)
+ e[i - 1] = a[l - 1][i - 1];
+ else
+ {
+ for (k = 1; k <= l; k++)
+ {
+ a[k - 1][i - 1] /= scale;
+ h += a[k - 1][i - 1] * a[k - 1][i - 1];
+ }
+ f = a[l - 1][i - 1];
+ g = ((f > 0) ? -sqrt(h) : sqrt(h)); /* diff */
+ e[i - 1] = scale * g;
+ h -= f * g;
+ a[l - 1][i - 1] = f - g;
+ f = 0.0;
+ for (j = 1; j <= l; j++)
+ {
+ a[i - 1][j - 1] = a[j - 1][i - 1] / h;
+ g = 0.0;
+ for (k = 1; k <= j; k++)
+ g += a[k - 1][j - 1] * a[k - 1][i - 1];
+ for (k = j + 1; k <= l; k++)
+ g += a[j - 1][k - 1] * a[k - 1][i - 1];
+ e[j - 1] = g / h;
+ f += e[j - 1] * a[j - 1][i - 1];
+ }
+ hh = f / (h + h);
+ for (j = 1; j <= l; j++)
+ {
+ f = a[j - 1][i - 1];
+ g = e[j - 1] - hh * f;
+ e[j - 1] = g;
+ for (k = 1; k <= j; k++)
+ a[k - 1][j - 1] -= (f * e[k - 1] + g * a[k - 1][i - 1]);
+ }
+ }
+ }
+ else
+ e[i - 1] = a[l - 1][i - 1];
+ d[i - 1] = h;
+ }
+ d[0] = 0.0;
+ e[0] = 0.0;
+
+ for (i = 1; i <= n; i++)
+ {
+ l = i - 1;
+ if (d[i - 1] != 0.0)
+ {
+ for (j = 1; j <= l; j++)
+ {
+ g = 0.0;
+ for (k = 1; k <= l; k++)
+ g += a[k - 1][i - 1] * a[j - 1][k - 1];
+ for(k = 1; k <= l; k++)
+ a[j - 1][k - 1] -= g * a[i - 1][k - 1];
+ }
+ }
+ d[i - 1] = a[i - 1][i - 1];
+ a[i - 1][i - 1] = 1.0;
+ for (j = 1; j <= l; j++)
+ a[i - 1][j - 1] = a[j - 1][i - 1] = 0.0;
+ }
+
+
+}
+/*#define MYSIGN(a,b) ((b)<0 ? -fabs(a) : fabs(a))*/
+
+/** @brief Not sure what this function does
+ *
+ * @todo
+ * Comment this function
+ */
+static int mytqli(double *d, double *e, const int n, double **z)
+{
+ int m, l, iter, i, k;
+ double s, r, p, g, f, dd, c, b;
+
+ for (i = 2; i <= n; i++)
+ e[i - 2] = e[i - 1];
+
+ e[n - 1] = 0.0;
+
+ for (l = 1; l <= n; l++)
+ {
+ iter = 0;
+ do
+ {
+ for (m = l; m <= n - 1; m++)
+ {
+ dd = fabs(d[m - 1]) + fabs(d[m]);
+ if (fabs(e[m - 1]) + dd == dd)
+ break;
+ }
+
+ if (m != l)
+ {
+ assert(iter < 30);
+
+ g = (d[l] - d[l - 1]) / (2.0 * e[l - 1]);
+ r = sqrt((g * g) + 1.0);
+ g = d[m - 1] - d[l - 1] + e[l - 1] / (g + ((g < 0)?-fabs(r):fabs(r)));/*MYSIGN(r, g));*/
+ s = c = 1.0;
+ p = 0.0;
+
+ for (i = m - 1; i >= l; i--)
+ {
+ f = s * e[i - 1];
+ b = c * e[i - 1];
+ if (fabs(f) >= fabs(g))
+ {
+ c = g / f;
+ r = sqrt((c * c) + 1.0);
+ e[i] = f * r;
+ c *= (s = 1.0 / r);
+ }
+ else
+ {
+ s = f / g;
+ r = sqrt((s * s) + 1.0);
+ e[i] = g * r;
+ s *= (c = 1.0 / r);
+ }
+ g = d[i] - p;
+ r = (d[i - 1] - g) * s + 2.0 * c * b;
+ p = s * r;
+ d[i] = g + p;
+ g = c * r - b;
+ for (k = 1; k <= n; k++)
+ {
+ f = z[i][k-1];
+ z[i][k-1] = s * z[i - 1][k - 1] + c * f;
+ z[i - 1][k - 1] = c * z[i - 1][k - 1] - s * f;
+ }
+ }
+
+ d[l - 1] = d[l - 1] - p;
+ e[l - 1] = g;
+ e[m - 1] = 0.0;
+ }
+ }
+ while (m != l);
+ }
+
+
+
+ return (1);
+ }
+
+
+/** @brief Compute the eigenvectors and eigenvalues
+ *
+ * @param _a
+ * The Q matrix
+ *
+ * @param states
+ * Number of states
+ *
+ * @param d
+ * Eigenvalues I think?
+ *
+ * @param e
+ * Not sure why this is passed as a parameter. It is uninitialized, it is first set in mytqli(...) and it is never used in initGeneric()
+ *
+ * @todo
+ * Remove e from parameter?
+*/
+static void makeEigen(double **_a, const int states, double *d, double *e)
+{
+ mytred2(_a, states, d, e);
+ mytqli(d, e, states, _a);
+}
+
+/** @brief Generic initialization of parameters and decomposition of the Q matrix
+ *
+ * Decompose the Q matrix into eigenvectors and eigenvalues.
+ *
+ * @param states
+ * Number of states of the current model
+ *
+ * @param valueVector
+ * Pointer where the tipVector will be stored
+ *
+ * @param valueVectorLength
+ * Number of elements (of size \a states) of the tipVector
+ *
+ * @param ext_EIGN
+ * Array where the eigenvalues will be stored
+ *
+ * @param EV
+ * Array where the eigenvectors will be stored
+ *
+ * @param EI
+ * Array where the inverse eigenvectors will be stored
+ *
+ * @param frequencies
+ * The model frequencies
+ *
+ * @param ext_initialRates
+ * The model substitution rates
+ *
+ * @param tipVector
+ * Array where the computed tipVector will be stored
+ *
+ * @todo
+ * Perhaps we could change this also to the way pllOptRatesGeneric and other functions are implemented.
+ * That is, instead of passing all these parameters, pass the partition index instead and load the
+ * values within the code. Will make the code more readable.
+*/
+static void initGeneric(const int states,
+ const unsigned int *valueVector,
+ int valueVectorLength,
+ double *ext_EIGN,
+ double *EV,
+ double *EI,
+ double *frequencies,
+ double *ext_initialRates,
+ double *tipVector
+ )
+{
+ double
+ **r,
+ **a,
+ **EIGV,
+ *initialRates = ext_initialRates,
+ *f,
+ *e,
+ *d,
+ *invfreq,
+ *EIGN,
+ *eptr,
+ fracchange = 0.0;
+
+ int
+ i,
+ j,
+ k,
+ m,
+ l;
+
+ r = (double **)rax_malloc((size_t)states * sizeof(double *));
+ EIGV = (double **)rax_malloc((size_t)states * sizeof(double *));
+ a = (double **)rax_malloc((size_t)states * sizeof(double *));
+
+ for(i = 0; i < states; i++)
+ {
+ a[i] = (double*)rax_malloc((size_t)states * sizeof(double));
+ EIGV[i] = (double*)rax_malloc((size_t)states * sizeof(double));
+ r[i] = (double*)rax_malloc((size_t)states * sizeof(double));
+ }
+
+ f = (double*)rax_malloc((size_t)states * sizeof(double));
+ e = (double*)rax_malloc((size_t)states * sizeof(double));
+ d = (double*)rax_malloc((size_t)states * sizeof(double));
+ invfreq = (double*)rax_malloc((size_t)states * sizeof(double));
+ EIGN = (double*)rax_malloc((size_t)states * sizeof(double));
+
+ for(l = 0; l < states; l++)
+ f[l] = frequencies[l];
+
+
+ i = 0;
+
+ for(j = 0; j < states; j++)
+ for(k = 0; k < states; k++)
+ r[j][k] = 0.0;
+
+ for(j = 0; j < states - 1; j++)
+ for (k = j + 1; k < states; k++)
+ r[j][k] = initialRates[i++];
+
+ for (j = 0; j < states; j++)
+ {
+ r[j][j] = 0.0;
+ for (k = 0; k < j; k++)
+ r[j][k] = r[k][j];
+ }
+
+ for (j = 0; j < states; j++)
+ for (k = 0; k < states; k++)
+ fracchange += f[j] * r[j][k] * f[k];
+
+ m = 0;
+
+ for(i=0; i< states; i++)
+ a[i][i] = 0;
+
+ /* assert(r[states - 2][states - 1] == 1.0);*/
+
+ /* compute a matrix from the rates such that each element of the diagonal
+ equals to the negative sum of all other values in the current row */
+ for(i = 0; i < states; i++)
+ {
+ for(j = i + 1; j < states; j++)
+ {
+ double factor = initialRates[m++];
+ a[i][j] = a[j][i] = factor * sqrt( f[i] * f[j]);
+ a[i][i] -= factor * f[j];
+ a[j][j] -= factor * f[i];
+ }
+ }
+
+ makeEigen(a, states, d, e);
+
+
+
+ for (i = 0; i < states; i++)
+ for (j = 0; j < states; j++)
+ a[i][j] *= sqrt(f[j]);
+
+
+
+ for (i = 0; i < states; i++)
+ {
+ if (d[i] > -1e-8)
+ {
+ if (i != 0)
+ {
+ double tmp = d[i], sum=0;
+ d[i] = d[0];
+ d[0] = tmp;
+ for (j=0; j < states; j++)
+ {
+ tmp = a[i][j];
+ a[i][j] = a[0][j];
+ sum += (a[0][j] = tmp);
+ }
+ for (j=0; j < states; j++)
+ a[0][j] /= sum;
+ }
+ break;
+ }
+ }
+
+ for (i = 0; i < states; i++)
+ {
+ EIGN[i] = -d[i];
+
+ for (j=0; j < states; j++)
+ EIGV[i][j] = a[j][i];
+ invfreq[i] = 1 / EIGV[i][0];
+ }
+
+ ext_EIGN[0] = 0.0;
+
+ for (l = 1; l < states; l++)
+ {
+ ext_EIGN[l] = EIGN[l] * (1.0 / fracchange); ;
+ assert(ext_EIGN[l] > 0.0);
+ }
+
+ eptr = EV;
+
+ for (i = 0; i < states; i++)
+ for (j = 0; j < states; j++)
+ {
+ *eptr++ = EIGV[i][j]; /* EIGV: Eigenvalues */
+
+ }
+ for (i = 0; i < states; i++)
+ for (j = 0; j < states; j++)
+ {
+ if(j == 0)
+ EI[i * states + j] = 1.0;
+ else
+ EI[i * states + j] = EV[i * states + j] * invfreq[i]; /* EV = Eigenvector, EI = Inverse Eigenvector, $ u_{i,x}^{-1} = \pi_x u_{x,i} */
+ }
+
+ for (i = 0; i < valueVectorLength; i++)
+ {
+ unsigned int value = valueVector[i];
+
+ for(j = 0; j < states; j++)
+ tipVector[i * states + j] = 0;
+
+ if(value > 0)
+ {
+ for (j = 0; j < states; j++)
+ {
+ if ((value >> j) & 1)
+ {
+ int l;
+ for (l = 0; l < states; l++)
+ tipVector[i * states + l] += EIGV[j][l];
+ }
+ }
+ }
+ }
+
+ for (i = 0; i < valueVectorLength; i++)
+ {
+ for(j = 0; j < states; j++)
+ if(tipVector[i * states + j] > PLL_MAX_TIP_EV)
+ tipVector[i * states + j] = PLL_MAX_TIP_EV;
+ }
+
+
+
+
+ for (i = 0; i < states; i++)
+ {
+ rax_free(EIGV[i]);
+ rax_free(a[i]);
+ rax_free(r[i]);
+ }
+
+ rax_free(r);
+ rax_free(a);
+ rax_free(EIGV);
+
+ rax_free(f);
+ rax_free(e);
+ rax_free(d);
+ rax_free(invfreq);
+ rax_free(EIGN);
+}
+
+/** @brief Initialize GTR
+ *
+ * Wrapper function for the decomposition of the substitution rates matrix
+ * into eigenvectors and eigenvalues
+ *
+ * @param tr
+ * PLL instance
+ *
+ * @param pr
+ * List of partitions
+ *
+ * @param model
+ * Partition index
+ */
+void pllInitReversibleGTR(pllInstance * tr, partitionList * pr, int model)
+{
+ double
+ *ext_EIGN = pr->partitionData[model]->EIGN,
+ *EV = pr->partitionData[model]->EV,
+ *EI = pr->partitionData[model]->EI,
+ *frequencies = pr->partitionData[model]->frequencies,
+ *empiricalFrequencies = pr->partitionData[model]->empiricalFrequencies,
+ *ext_initialRates = pr->partitionData[model]->substRates,
+ *tipVector = pr->partitionData[model]->tipVector;
+
+
+ int states = pr->partitionData[model]->states;
+
+ switch(pr->partitionData[model]->dataType)
+ {
+ case PLL_GENERIC_32:
+ case PLL_GENERIC_64:
+ case PLL_SECONDARY_DATA_6:
+ case PLL_SECONDARY_DATA_7:
+ case PLL_SECONDARY_DATA:
+ case PLL_DNA_DATA:
+ case PLL_BINARY_DATA:
+ initGeneric(states,
+ getBitVector(pr->partitionData[model]->dataType),
+ getUndetermined(pr->partitionData[model]->dataType) + 1,
+ ext_EIGN,
+ EV,
+ EI,
+ frequencies,
+ ext_initialRates,
+ tipVector
+ // model
+ );
+ break;
+ case PLL_AA_DATA:
+ if(pr->partitionData[model]->protModels != PLL_GTR)
+ {
+ double f[20];
+ int l;
+
+ if(pr->partitionData[model]->protModels == PLL_LG4M || pr->partitionData[model]->protModels == PLL_LG4X)
+ {
+ int
+ i;
+
+ for(i = 0; i < 4; i++)
+ {
+ initProtMat(f, pr->partitionData[model]->protModels, &(pr->partitionData[model]->substRates_LG4[i][0]), i);
+
+ if(!pr->partitionData[model]->optimizeBaseFrequencies)
+ {
+ if(!pr->partitionData[model]->protUseEmpiricalFreqs)
+ {
+ for(l = 0; l < 20; l++)
+ pr->partitionData[model]->frequencies_LG4[i][l] = f[l];
+ }
+ else
+ {
+ for(l = 0; l < 20; l++)
+ pr->partitionData[model]->frequencies_LG4[i][l] = empiricalFrequencies[l];
+ }
+ }
+ else
+ {
+ memcpy(pr->partitionData[model]->frequencies_LG4[i], frequencies, 20 * sizeof(double));
+ }
+ }
+ }
+ else
+ {
+ if(pr->partitionData[model]->protModels == PLL_AUTO)
+ initProtMat(f, pr->partitionData[model]->autoProtModels, ext_initialRates, 0);
+ else
+ {
+ initProtMat(f, pr->partitionData[model]->protModels, ext_initialRates, 0);
+ }
+
+ /*if(adef->protEmpiricalFreqs && tr->NumberOfModels == 1)
+ assert(tr->partitionData[model].protUseEmpiricalFreqs);*/
+
+ if (!pr->partitionData[model]->optimizeBaseFrequencies) {
+ if(!pr->partitionData[model]->protUseEmpiricalFreqs)
+ {
+ for(l = 0; l < 20; l++)
+ frequencies[l] = f[l];
+ } else {
+ for(l = 0; l < 20; l++)
+ frequencies[l] = empiricalFrequencies[l];
+ }
+ }
+ }
+ }
+
+ if(pr->partitionData[model]->protModels == PLL_LG4M || pr->partitionData[model]->protModels == PLL_LG4X)
+ {
+ int
+ i;
+
+ for(i = 0; i < 4; i++)
+ {
+ initGeneric(states,
+ bitVectorAA,
+ 23,
+ pr->partitionData[model]->rawEIGN_LG4[i],
+ pr->partitionData[model]->EV_LG4[i],
+ pr->partitionData[model]->EI_LG4[i],
+ pr->partitionData[model]->frequencies_LG4[i],
+ pr->partitionData[model]->substRates_LG4[i],
+ pr->partitionData[model]->tipVector_LG4[i]
+ );
+ }
+ scaleLG4X_EIGN(tr, pr, model);
+ }
+ else
+ initGeneric(states,
+ bitVectorAA,
+ 23,
+ ext_EIGN,
+ EV,
+ EI,
+ frequencies,
+ ext_initialRates,
+ tipVector
+ );
+ break;
+ default:
+ assert(0);
+ }
+
+}
+
+
+double LnGamma (double alpha)
+{
+/* returns ln(gamma(alpha)) for alpha>0, accurate to 10 decimal places.
+ Stirling's formula is used for the central polynomial part of the procedure.
+ Pike MC & Hill ID (1966) Algorithm 291: Logarithm of the gamma function.
+ Communications of the Association for Computing Machinery, 9:684
+*/
+ double x, f, z, result;
+
+ x = alpha;
+ f = 0.0;
+
+ if ( x < 7.0)
+ {
+ f = 1.0;
+ z = alpha - 1.0;
+
+ while ((z = z + 1.0) < 7.0)
+ {
+ f *= z;
+ }
+ x = z;
+
+ assert(f != 0.0);
+
+ f=-log(f);
+ }
+
+ z = 1/(x*x);
+
+ result = f + (x-0.5)*log(x) - x + .918938533204673
+ + (((-.000595238095238*z+.000793650793651)*z-.002777777777778)*z
+ +.083333333333333)/x;
+
+ return result;
+}
+
+
+
+double IncompleteGamma (double x, double alpha, double ln_gamma_alpha)
+{
+/* returns the incomplete gamma ratio I(x,alpha) where x is the upper
+ limit of the integration and alpha is the shape parameter.
+ returns (-1) if in error
+ ln_gamma_alpha = ln(Gamma(alpha)), is almost redundant.
+ (1) series expansion if (alpha>x || x<=1)
+ (2) continued fraction otherwise
+ RATNEST FORTRAN by
+ Bhattacharjee GP (1970) The incomplete gamma integral. Applied Statistics,
+ 19: 285-287 (AS32)
+*/
+ int i;
+ double p=alpha, g=ln_gamma_alpha;
+ double accurate=1e-8, overflow=1e30;
+ double factor, gin=0, rn=0, a=0,b=0,an=0,dif=0, term=0, pn[6];
+
+
+ if (x==0) return (0);
+ if (x<0 || p<=0) return (-1);
+
+
+ factor=exp(p*log(x)-x-g);
+ if (x>1 && x>=p) goto l30;
+ /* (1) series expansion */
+ gin=1; term=1; rn=p;
+ l20:
+ rn++;
+ term*=x/rn; gin+=term;
+
+ if (term > accurate) goto l20;
+ gin*=factor/p;
+ goto l50;
+ l30:
+ /* (2) continued fraction */
+ a=1-p; b=a+x+1; term=0;
+ pn[0]=1; pn[1]=x; pn[2]=x+1; pn[3]=x*b;
+ gin=pn[2]/pn[3];
+ l32:
+ a++;
+ b+=2;
+ term++;
+ an=a*term;
+ for (i=0; i<2; i++)
+ pn[i+4]=b*pn[i+2]-an*pn[i];
+ if (pn[5] == 0) goto l35;
+ rn=pn[4]/pn[5];
+ dif=fabs(gin-rn);
+ if (dif>accurate) goto l34;
+ if (dif<=accurate*rn) goto l42;
+ l34:
+ gin=rn;
+ l35:
+ for (i=0; i<4; i++)
+ pn[i]=pn[i+2];
+ if (fabs(pn[4]) < overflow)
+ goto l32;
+
+ for (i=0; i<4; i++)
+ pn[i]/=overflow;
+
+
+ goto l32;
+ l42:
+ gin=1-factor*gin;
+
+ l50:
+ return (gin);
+}
+
+
+
+
+double PointNormal (double prob)
+{
+/* returns z so that Prob{x<z}=prob where x ~ N(0,1) and (1e-12)<prob<1-(1e-12)
+ returns (-9999) if in error
+ Odeh RE & Evans JO (1974) The percentage points of the normal distribution.
+ Applied Statistics 22: 96-97 (AS70)
+
+ Newer methods:
+ Wichura MJ (1988) Algorithm AS 241: the percentage points of the
+ normal distribution. 37: 477-484.
+ Beasley JD & Springer SG (1977). Algorithm AS 111: the percentage
+ points of the normal distribution. 26: 118-121.
+
+*/
+ double a0=-.322232431088, a1=-1, a2=-.342242088547, a3=-.0204231210245;
+ double a4=-.453642210148e-4, b0=.0993484626060, b1=.588581570495;
+ double b2=.531103462366, b3=.103537752850, b4=.0038560700634;
+ double y, z=0, p=prob, p1;
+
+ p1 = (p<0.5 ? p : 1-p);
+ if (p1<1e-20) return (-9999);
+
+ y = sqrt (log(1/(p1*p1)));
+ z = y + ((((y*a4+a3)*y+a2)*y+a1)*y+a0) / ((((y*b4+b3)*y+b2)*y+b1)*y+b0);
+ return (p<0.5 ? -z : z);
+}
+
+
+double PointChi2 (double prob, double v)
+{
+/* returns z so that Prob{x<z}=prob where x is Chi2 distributed with df=v
+ returns -1 if in error. 0.000002<prob<0.999998
+ RATNEST FORTRAN by
+ Best DJ & Roberts DE (1975) The percentage points of the
+ Chi2 distribution. Applied Statistics 24: 385-388. (AS91)
+ Converted into C by Ziheng Yang, Oct. 1993.
+*/
+ double e=.5e-6, aa=.6931471805, p=prob, g;
+ double xx, c, ch, a=0,q=0,p1=0,p2=0,t=0,x=0,b=0,s1,s2,s3,s4,s5,s6;
+
+ if (p<.000002 || p>.999998 || v<=0) return (-1);
+
+ g = LnGamma(v/2);
+
+ xx=v/2; c=xx-1;
+ if (v >= -1.24*log(p)) goto l1;
+
+ ch=pow((p*xx*exp(g+xx*aa)), 1/xx);
+ if (ch-e<0) return (ch);
+ goto l4;
+l1:
+ if (v>.32) goto l3;
+ ch=0.4; a=log(1-p);
+l2:
+ q=ch; p1=1+ch*(4.67+ch); p2=ch*(6.73+ch*(6.66+ch));
+ t=-0.5+(4.67+2*ch)/p1 - (6.73+ch*(13.32+3*ch))/p2;
+ ch-=(1-exp(a+g+.5*ch+c*aa)*p2/p1)/t;
+ if (fabs(q/ch-1)-.01 <= 0) goto l4;
+ else goto l2;
+
+l3:
+ x=PointNormal (p);
+ p1=0.222222/v; ch=v*pow((x*sqrt(p1)+1-p1), 3.0);
+ if (ch>2.2*v+6) ch=-2*(log(1-p)-c*log(.5*ch)+g);
+l4:
+ q=ch; p1=.5*ch;
+ if ((t=IncompleteGamma (p1, xx, g))< 0.0)
+ {
+ printf ("IncompleteGamma \n");
+ return (-1);
+ }
+
+ p2=p-t;
+ t=p2*exp(xx*aa+g+p1-c*log(ch));
+ b=t/ch; a=0.5*t-b*c;
+
+ s1=(210+a*(140+a*(105+a*(84+a*(70+60*a))))) / 420;
+ s2=(420+a*(735+a*(966+a*(1141+1278*a))))/2520;
+ s3=(210+a*(462+a*(707+932*a)))/2520;
+ s4=(252+a*(672+1182*a)+c*(294+a*(889+1740*a)))/5040;
+ s5=(84+264*a+c*(175+606*a))/2520;
+ s6=(120+c*(346+127*c))/5040;
+ ch+=t*(1+0.5*t*s1-b*c*(s1-b*(s2-b*(s3-b*(s4-b*(s5-b*s6))))));
+ if (fabs(q/ch-1) > e) goto l4;
+
+ return (ch);
+}
+
+/** @brief Compute the gamma rates
+
+ Compute the gamma rates
+
+ @param alpha
+ Alpha parameter
+
+ @param gammaRates
+ Array where to store the computed gamma rates
+
+ @param K
+ Number of categories
+
+ @param useMedian
+ Boolean flag whether to use a median or not
+
+ @todo
+ Document this more.
+*/
+void pllMakeGammaCats(double alpha, double *gammaRates, int K, boolean useMedian)
+{
+ int
+ i;
+
+ double
+ factor = alpha / alpha * K,
+ lnga1,
+ alfa = alpha,
+ beta = alpha,
+ *gammaProbs = (double *)rax_malloc(K * sizeof(double));
+
+ /* Note that PLL_ALPHA_MIN setting is somewhat critical due to */
+ /* numerical instability caused by very small rate[0] values */
+ /* induced by low alpha values around 0.01 */
+
+ assert(alfa >= PLL_ALPHA_MIN);
+
+ if(useMedian)
+ {
+ double
+ middle = 1.0 / (2.0*K),
+ t = 0.0;
+
+ for(i = 0; i < K; i++)
+ gammaRates[i] = PLL_POINT_GAMMA((double)(i * 2 + 1) * middle, alfa, beta);
+
+ for (i = 0; i < K; i++)
+ t += gammaRates[i];
+ for( i = 0; i < K; i++)
+ gammaRates[i] *= factor / t;
+ }
+ else
+ {
+ lnga1 = LnGamma(alfa + 1);
+
+ for (i = 0; i < K - 1; i++)
+ gammaProbs[i] = PLL_POINT_GAMMA((i + 1.0) / K, alfa, beta);
+
+ for (i = 0; i < K - 1; i++)
+ gammaProbs[i] = IncompleteGamma(gammaProbs[i] * beta, alfa + 1, lnga1);
+
+ gammaRates[0] = gammaProbs[0] * factor;
+
+ gammaRates[K - 1] = (1 - gammaProbs[K - 2]) * factor;
+
+ for (i= 1; i < K - 1; i++)
+ gammaRates[i] = (gammaProbs[i] - gammaProbs[i - 1]) * factor;
+ }
+ /* assert(gammaRates[0] >= 0.00000000000000000000000000000044136090435925743185910935350715027016962154188875); */
+
+ rax_free(gammaProbs);
+
+ return;
+}
+
+
+/** @brief Set the substitution rates
+ *
+ * @brief Set \a rates - 1 substitution rates. Set the last rate to 1.
+ *
+ * @param r
+ * Array of substitution rates
+ *
+ * @param rates
+ * Number of rates to set
+ */
+static void setRates(double *r, int rates)
+{
+ int i;
+
+ //changed to 1.0 instead of 0.5 for making the
+ //implementation of an interface function to set other models
+ //than GTR easier
+
+ for(i = 0; i < rates - 1; i++)
+ r[i] = 1.0;
+
+ r[rates - 1] = 1.0;
+}
+
+/** @brief Initialize the substitution rates matrix
+ *
+ * Initialize the substitution rates matrices for all partitions
+ *
+ * @param tr
+ * The PLL instance
+ *
+ * @param pr
+ * List of partitions
+ *
+ * @todo
+ * Do we need the secondary structure and binary? Will we only use GTR? If yes,
+ * we could rename this function to initRateMatrixGTR
+ */
+void initRateMatrix(pllInstance *tr, partitionList *pr)
+{
+ int model;
+
+ for(model = 0; model < pr->numberOfPartitions; model++)
+ {
+ int
+ i,
+ states = pr->partitionData[model]->states,
+ rates = (states * states - states) / 2;
+
+ switch(pr->partitionData[model]->dataType)
+ {
+ case PLL_BINARY_DATA:
+ case PLL_DNA_DATA:
+ case PLL_SECONDARY_DATA:
+ case PLL_SECONDARY_DATA_6:
+ case PLL_SECONDARY_DATA_7:
+ setRates(pr->partitionData[model]->substRates, rates);
+ break;
+ case PLL_GENERIC_32:
+ case PLL_GENERIC_64:
+ switch(tr->multiStateModel)
+ {
+ case PLL_ORDERED_MULTI_STATE:
+ {
+ int
+ j,
+ k,
+ i = 0;
+
+ for(j = 0; j < states; j++)
+ for(k = j + 1; k < states; k++)
+ pr->partitionData[model]->substRates[i++] = (double)(k - j);
+ assert(i == rates);
+ }
+ break;
+ case PLL_MK_MULTI_STATE:
+ for(i = 0; i < rates; i++)
+ pr->partitionData[model]->substRates[i] = 1.0;
+
+ break;
+ case PLL_GTR_MULTI_STATE:
+ setRates(pr->partitionData[model]->substRates, rates);
+ break;
+ default:
+ assert(0);
+ }
+ break;
+ case PLL_AA_DATA:
+ if(pr->partitionData[model]->protModels == PLL_GTR)
+ {
+ //set optimizeSubstRates to true !
+ pr->partitionData[model]->optimizeSubstitutionRates = PLL_TRUE;
+ putWAG(pr->partitionData[model]->substRates);
+ }
+ break;
+ default:
+ assert(0);
+ }
+
+ if(pr->partitionData[model]->nonGTR)
+ {
+ assert(pr->partitionData[model]->dataType == PLL_SECONDARY_DATA ||
+ pr->partitionData[model]->dataType == PLL_SECONDARY_DATA_6 ||
+ pr->partitionData[model]->dataType == PLL_SECONDARY_DATA_7);
+
+ for(i = 0; i < rates; i++)
+ {
+ if(pr->partitionData[model]->symmetryVector[i] == -1)
+ pr->partitionData[model]->substRates[i] = 0.0;
+ else
+ {
+ if(pr->partitionData[model]->symmetryVector[i] == pr->partitionData[model]->symmetryVector[rates - 1])
+ pr->partitionData[model]->substRates[i] = 1.0;
+ }
+ }
+ }
+ }
+}
+
+/** @brief Function for setting secondary structure symmetries
+ *
+ * @todo
+ * Do we need this function?
+*/
+static void setSymmetry(int *s, int *sDest, const int sCount, int *f, int *fDest, const int fCount)
+{
+ int i;
+
+ for(i = 0; i < sCount; i++)
+ sDest[i] = s[i];
+
+ for(i = 0; i < fCount; i++)
+ fDest[i] = f[i];
+}
+
+/** @brief Wrapper function for setting secondary structure symmetries
+ *
+ * @todo
+ * Do we need this function?
+*/
+static void setupSecondaryStructureSymmetries(pllInstance *tr, partitionList *partitions)
+{
+ int model;
+ int numberOfModels = partitions->numberOfPartitions;
+
+ for(model = 0; model < numberOfModels; model++)
+ {
+ if(partitions->partitionData[model]->dataType == PLL_SECONDARY_DATA ||
+ partitions->partitionData[model]->dataType == PLL_SECONDARY_DATA_6 ||
+ partitions->partitionData[model]->dataType == PLL_SECONDARY_DATA_7)
+ {
+ switch(tr->secondaryStructureModel)
+ {
+ case PLL_SEC_6_A:
+ partitions->partitionData[model]->nonGTR = PLL_FALSE;
+ break;
+ case PLL_SEC_6_B:
+ {
+ int f[6] = {0, 1, 2, 3, 4, 5};
+ int s[15] = {2, 0, 1, 2, 2, 2, 2, 0, 1, 1, 2, 2, 2, 2, 1};
+
+ setSymmetry(s, partitions->partitionData[model]->symmetryVector, 15, f, partitions->partitionData[model]->frequencyGrouping, 6);
+
+ partitions->partitionData[model]->nonGTR = PLL_TRUE;
+ }
+ break;
+ case PLL_SEC_6_C:
+ {
+ int f[6] = {0, 2, 2, 1, 0, 1};
+ int s[15] = {2, 0, 1, 2, 2, 2, 2, 0, 1, 1, 2, 2, 2, 2, 1};
+
+ setSymmetry(s, partitions->partitionData[model]->symmetryVector, 15, f, partitions->partitionData[model]->frequencyGrouping, 6);
+
+ partitions->partitionData[model]->nonGTR = PLL_TRUE;
+ }
+ break;
+ case PLL_SEC_6_D:
+ {
+ int f[6] = {0, 2, 2, 1, 0, 1};
+ int s[15] = {2, -1, 1, 2, 2, 2, 2, -1, 1, 1, 2, 2, 2, 2, 1};
+
+ setSymmetry(s, partitions->partitionData[model]->symmetryVector, 15, f, partitions->partitionData[model]->frequencyGrouping, 6);
+
+ partitions->partitionData[model]->nonGTR = PLL_TRUE;
+ }
+ break;
+ case PLL_SEC_6_E:
+ {
+ int f[6] = {0, 1, 2, 3, 4, 5};
+ int s[15] = {2, -1, 1, 2, 2, 2, 2, -1, 1, 1, 2, 2, 2, 2, 1};
+
+ setSymmetry(s, partitions->partitionData[model]->symmetryVector, 15, f, partitions->partitionData[model]->frequencyGrouping, 6);
+
+ partitions->partitionData[model]->nonGTR = PLL_TRUE;
+ }
+ break;
+ case PLL_SEC_7_A:
+ partitions->partitionData[model]->nonGTR = PLL_FALSE;
+ break;
+ case PLL_SEC_7_B:
+ {
+ int f[7] = {0, 2, 2, 1, 0, 1, 3};
+ int s[21] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20};
+
+ setSymmetry(s, partitions->partitionData[model]->symmetryVector, 21, f, partitions->partitionData[model]->frequencyGrouping, 7);
+
+ partitions->partitionData[model]->nonGTR = PLL_TRUE;
+
+ }
+ break;
+ case PLL_SEC_7_C:
+ {
+ int f[7] = {0, 1, 2, 3, 4, 5, 6};
+ int s[21] = {-1, -1, 0, -1, -1, 4, -1, -1, -1, 3, 5, 1, -1, -1, 6, -1, -1, 7, 2, 8, 9};
+
+ setSymmetry(s, partitions->partitionData[model]->symmetryVector, 21, f, partitions->partitionData[model]->frequencyGrouping, 7);
+
+ partitions->partitionData[model]->nonGTR = PLL_TRUE;
+
+ }
+ break;
+ case PLL_SEC_7_D:
+ {
+ int f[7] = {0, 1, 2, 3, 4, 5, 6};
+ int s[21] = {2, 0, 1, 2, 2, 3, 2, 2, 0, 1, 3, 1, 2, 2, 3, 2, 2, 3, 1, 3, 3};
+
+ setSymmetry(s, partitions->partitionData[model]->symmetryVector, 21, f, partitions->partitionData[model]->frequencyGrouping, 7);
+
+ partitions->partitionData[model]->nonGTR = PLL_TRUE;
+
+ }
+ break;
+ case PLL_SEC_7_E:
+ {
+ int f[7] = {0, 1, 2, 3, 4, 5, 6};
+ int s[21] = {-1, -1, 0, -1, -1, 1, -1, -1, -1, 0, 1, 0, -1, -1, 1, -1, -1, 1, 0, 1, 1};
+
+ setSymmetry(s, partitions->partitionData[model]->symmetryVector, 21, f, partitions->partitionData[model]->frequencyGrouping, 7);
+
+ partitions->partitionData[model]->nonGTR = PLL_TRUE;
+
+ }
+ break;
+ case PLL_SEC_7_F:
+ {
+ int f[7] = {0, 2, 2, 1, 0, 1, 3};
+ int s[21] = {2, 0, 1, 2, 2, 3, 2, 2, 0, 1, 3, 1, 2, 2, 3, 2, 2, 3, 1, 3, 3};
+
+ setSymmetry(s, partitions->partitionData[model]->symmetryVector, 21, f, partitions->partitionData[model]->frequencyGrouping, 7);
+
+ partitions->partitionData[model]->nonGTR = PLL_TRUE;
+
+ }
+ break;
+
+ case PLL_SEC_16:
+ partitions->partitionData[1]->nonGTR = PLL_FALSE;
+ break;
+ case PLL_SEC_16_A:
+ {
+ int f[16] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15};
+ int s[120] = {/* AA */ 4, 4, 3, 4, -1, -1, -1, 4, -1, -1, -1, 3, -1, -1, -1,
+ /* AC */ 4, 3, -1, 4, -1, -1, -1, 3, -1, -1, -1, 4, -1, -1,
+ /* AG */ 3, -1, -1, 3, -1, -1, -1, 4, -1, -1, -1, 3, -1,
+ /* AU */ -1, -1, 2, 3, -1, 0, -1, 1, 2, -1, 2, 3,
+ /* CA */ 4, 3, 4, 4, -1, -1, -1, 3, -1, -1, -1,
+ /* CC */ 3, 4, -1, 3, -1, -1, -1, 4, -1, -1,
+ /* CG */ 3, -1, 2, 3, 2, 0, -1, 1, -1,
+ /* CU */ -1, -1, -1, 3, -1, -1, -1, 4,
+ /* GA */ 3, 4, 3, 3, -1, -1, -1,
+ /* GC */ 3, 1, 2, 3, 2, -1,
+ /* GG */ 3, -1, -1, 3, -1,
+ /* GU */ 2, -1, 2, 3,
+ /* UA */ 3, 1, 3,
+ /* UC */ 3, 4,
+ /* UG */ 3};
+
+
+ setSymmetry(s, partitions->partitionData[model]->symmetryVector, 120, f, partitions->partitionData[model]->frequencyGrouping, 16);
+
+ partitions->partitionData[model]->nonGTR = PLL_TRUE;
+
+ }
+ break;
+ case PLL_SEC_16_B:
+ {
+ int f[16] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15};
+ int s[120] = {/* AA */ 0, 0, 0, 0, -1, -1, -1, 0, -1, -1, -1, 0, -1, -1, -1,
+ /* AC */ 0, 0, -1, 0, -1, -1, -1, 0, -1, -1, -1, 0, -1, -1,
+ /* AG */ 0, -1, -1, 0, -1, -1, -1, 0, -1, -1, -1, 0, -1,
+ /* AU */ -1, -1, 0, 0, -1, 0, -1, 0, 0, -1, 0, 0,
+ /* CA */ 0, 0, 0, 0, -1, -1, -1, 0, -1, -1, -1,
+ /* CC */ 0, 0, -1, 0, -1, -1, -1, 0, -1, -1,
+ /* CG */ 0, -1, 0, 0, 0, 0, -1, 0, -1,
+ /* CU */ -1, -1, -1, 0, -1, -1, -1, 0,
+ /* GA */ 0, 0, 0, 0, -1, -1, -1,
+ /* GC */ 0, 0, 0, 0, 0, -1,
+ /* GG */ 0, -1, -1, 0, -1,
+ /* GU */ 0, -1, 0, 0,
+ /* UA */ 0, 0, 0,
+ /* UC */ 0, 0,
+ /* UG */ 0};
+
+
+ setSymmetry(s, partitions->partitionData[model]->symmetryVector, 120, f, partitions->partitionData[model]->frequencyGrouping, 16);
+
+ partitions->partitionData[model]->nonGTR = PLL_TRUE;
+ }
+ break;
+ case PLL_SEC_16_C:
+ case PLL_SEC_16_D:
+ case PLL_SEC_16_E:
+ case PLL_SEC_16_F:
+ case PLL_SEC_16_I:
+ case PLL_SEC_16_J:
+ case PLL_SEC_16_K:
+ assert(0);
+ default:
+ assert(0);
+ }
+ }
+
+ }
+
+}
+
+/** @brief Initialize base frequencies in partition data
+ *
+ * Copy the computed empirical frequencies for each partition from the \a empiricalFrequencies
+ * structure to each partition structure.
+ *
+ * @param pr
+ * List of partitions
+ *
+ * @param empiricalFrequencies
+ * Array containing the empirical frequencies
+*/
+static void initializeBaseFreqs(partitionList *pr, double **empiricalFrequencies)
+{
+ size_t
+ model;
+ int
+ l,
+ numFreqs;
+ double f;
+
+ for(model = 0; model < (size_t)pr->numberOfPartitions; model++)
+ {
+ if(pr->partitionData[model]->optimizeBaseFrequencies)
+ {
+ //set all base frequencies to identical starting values 1.0 / numberOfDataStates
+ numFreqs = pr->partitionData[model]->states;
+ f = 1.0 / ((double)numFreqs);
+
+ for(l = 0; l < numFreqs; l++)
+ {
+ pr->partitionData[model]->frequencies[l] = f;
+ pr->partitionData[model]->empiricalFrequencies[l] = f;
+ }
+ }
+ else
+ {
+ memcpy(pr->partitionData[model]->frequencies, empiricalFrequencies[model], sizeof(double) * pr->partitionData[model]->states);
+ memcpy(pr->partitionData[model]->empiricalFrequencies, empiricalFrequencies[model], sizeof(double) * pr->partitionData[model]->states);
+ }
+ }
+}
+
+
+/** @brief Initialize the model parameters
+ *
+ * Initialize the model parameters. Specifically
+ * - Base frequencies
+ * - Rate matrix
+ *
+ * @param tr
+ * The PLL instance
+ *
+ * @param empiricalFrequencies
+ * Pointer to the empirical frequencies array
+ *
+ * @param partitions
+ * Pointer to the partitions structure
+ *
+ * @todo
+ * What is tr->optimizeRateCategoryInvocations = 1 ?
+ */
+void initModel(pllInstance *tr, double **empiricalFrequencies, partitionList * partitions)
+{
+ int model, j;
+ double temp;
+
+ tr->optimizeRateCategoryInvocations = 1;
+ tr->numberOfInvariableColumns = 0;
+ tr->weightOfInvariableColumns = 0;
+
+ for (j = 0; j < tr->originalCrunchedLength; j++)
+ {
+ tr->patrat[j] = temp = 1.0;
+ tr->patratStored[j] = 1.0;
+ tr->rateCategory[j] = 0;
+ }
+
+ /* PSR (CAT) model init */
+ for(model = 0; model < partitions->numberOfPartitions; model++)
+ {
+ partitions->partitionData[model]->numberOfCategories = 1;
+ partitions->partitionData[model]->perSiteRates[0] = 1.0;
+ }
+
+ updatePerSiteRates(tr, partitions, PLL_FALSE);
+
+ setupSecondaryStructureSymmetries(tr, partitions);
+
+ initRateMatrix(tr, partitions);
+
+ initializeBaseFreqs(partitions, empiricalFrequencies);
+
+ for(model = 0; model < partitions->numberOfPartitions; model++)
+ {
+ int
+ k;
+
+ partitions->partitionData[model]->alpha = 1.0;
+ if(partitions->partitionData[model]->dataType == PLL_AA_DATA && partitions->partitionData[model]->protModels == PLL_AUTO)
+ partitions->partitionData[model]->autoProtModels = PLL_WAG; /* initialize by WAG per default */
+
+ pllInitReversibleGTR(tr, partitions, model); /* Decomposition of Q matrix */
+ /* GAMMA model init */
+ pllMakeGammaCats(partitions->partitionData[model]->alpha, partitions->partitionData[model]->gammaRates, 4, tr->useMedian);
+
+ for(k = 0; k < partitions->partitionData[model]->states; k++)
+ partitions->partitionData[model]->freqExponents[k] = 0.0;
+
+ for(k = 0; k < 4; k++)
+ {
+ partitions->partitionData[model]->lg4x_weights[k] = 0.25;
+ partitions->partitionData[model]->lg4x_weightExponents[k] = 0.0;
+ }
+
+ }
+
+#if (defined(_FINE_GRAIN_MPI) || defined(_USE_PTHREADS))
+ pllMasterBarrier(tr, partitions, PLL_THREAD_COPY_INIT_MODEL);
+#endif
+}
+
+
+
+
diff --git a/src/newick.c b/src/newick.c
new file mode 100644
index 0000000..98aa513
--- /dev/null
+++ b/src/newick.c
@@ -0,0 +1,594 @@
+/**
+ * PLL (version 1.0.0) a software library for phylogenetic inference
+ * Copyright (C) 2013 Tomas Flouri and Alexandros Stamatakis
+ *
+ * Derived from
+ * RAxML-HPC, a program for sequential and parallel estimation of phylogenetic
+ * trees by Alexandros Stamatakis
+ *
+ * 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 3 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, see <http://www.gnu.org/licenses/>.
+ *
+ * For any other enquiries send an Email to Tomas Flouri
+ * Tomas.Flouri at h-its.org
+ *
+ * When publishing work that uses PLL please cite PLL
+ *
+ * @file newick.c
+ */
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <assert.h>
+#include <math.h>
+
+#include "pll.h"
+#include "pllInternal.h"
+
+
+/** @file newick.c
+
+ @brief Collection of routines for reading and parsing newick trees
+
+ Auxiliary functions for reading and parsing newick tree formats
+*/
+
+
+/** @defgroup newickParseGroup Reading and parsing newick trees
+
+ This set of functions handles the reading and parsing of newick tree formats
+*/
+
+static int
+parse_newick (pllStack ** stack, int * inp)
+{
+ pllNewickNodeInfo * item = NULL;
+ int item_active = 0;
+ pllLexToken token;
+ int input;
+ pllLexToken prev_token;
+ int nop = 0; /* number of open parentheses */
+ int depth = 0;
+
+ prev_token.tokenType = PLL_TOKEN_UNKNOWN;
+
+ input = *inp;
+
+ NEXT_TOKEN
+
+ while (token.tokenType != PLL_TOKEN_EOF && token.tokenType != PLL_TOKEN_UNKNOWN)
+ {
+ switch (token.tokenType)
+ {
+ case PLL_TOKEN_OPAREN:
+#ifdef PLLDEBUG
+ printf ("PLL_TOKEN_OPAREN\n");
+#endif
+ ++nop;
+ memcpy (&prev_token, &token, sizeof (pllLexToken));
+ ++depth;
+ break;
+
+ case PLL_TOKEN_CPAREN:
+#ifdef PLLDEBUG
+ printf ("PLL_TOKEN_CPAREN\n");
+#endif
+ if (prev_token.tokenType != PLL_TOKEN_CPAREN &&
+ prev_token.tokenType != PLL_TOKEN_UNKNOWN &&
+ prev_token.tokenType != PLL_TOKEN_STRING &&
+ prev_token.tokenType != PLL_TOKEN_NUMBER &&
+ prev_token.tokenType != PLL_TOKEN_FLOAT) return (0);
+
+ if (!nop) return (0);
+ --nop;
+ memcpy (&prev_token, &token, sizeof (pllLexToken));
+
+ /* push to the stack */
+ if (!item) item = (pllNewickNodeInfo *) rax_calloc (1, sizeof (pllNewickNodeInfo)); // possibly not nec
+ //if (item->name == NULL) item->name = strdup ("INTERNAL_NODE");
+ if (item->name == NULL)
+ {
+ item->name = (char *) rax_malloc ((strlen("INTERNAL_NODE") + 1) * sizeof (char));
+ strcpy (item->name, "INTERNAL_NODE");
+ }
+
+ //if (item->branch == NULL) item->branch = strdup ("0.000000");
+ if (item->branch == NULL)
+ {
+ item->branch = (char *) rax_malloc ((strlen("0.000000") + 1) * sizeof (char));
+ strcpy (item->branch, "0.000000");
+ }
+ item->depth = depth;
+ pllStackPush (stack, item);
+ item_active = 1; /* active = 1 */
+ item = NULL;
+ --depth;
+ break;
+
+ case PLL_TOKEN_STRING:
+#ifdef PLLDEBUG
+ printf ("PLL_TOKEN_STRING %.*s\n", token.len, token.lexeme);
+#endif
+ if (prev_token.tokenType != PLL_TOKEN_OPAREN &&
+ prev_token.tokenType != PLL_TOKEN_CPAREN &&
+ prev_token.tokenType != PLL_TOKEN_UNKNOWN &&
+ prev_token.tokenType != PLL_TOKEN_COMMA) return (0);
+ if (!item) item = (pllNewickNodeInfo *) rax_calloc (1, sizeof (pllNewickNodeInfo));
+ //item->name = strndup (token.lexeme, token.len);
+ if (item->name) rax_free(item->name);
+ item->name = (char *) rax_malloc ((token.len + 1) * sizeof (char));
+ strncpy (item->name, token.lexeme, token.len);
+ item->name[token.len] = 0;
+
+ item_active = 1;
+ item->depth = depth;
+ if (prev_token.tokenType == PLL_TOKEN_COMMA ||
+ prev_token.tokenType == PLL_TOKEN_OPAREN ||
+ prev_token.tokenType == PLL_TOKEN_UNKNOWN) item->leaf = 1;
+ memcpy (&prev_token, &token, sizeof (pllLexToken));
+ break;
+
+ case PLL_TOKEN_FLOAT:
+ case PLL_TOKEN_NUMBER:
+#ifdef PLLDEBUG
+ if (token.tokenType == PLL_TOKEN_FLOAT) printf ("PLL_TOKEN_FLOAT\n"); else printf ("PLL_TOKEN_NUMBER\n");
+#endif
+ if (prev_token.tokenType != PLL_TOKEN_OPAREN &&
+ prev_token.tokenType != PLL_TOKEN_CPAREN &&
+ prev_token.tokenType != PLL_TOKEN_COLON &&
+ prev_token.tokenType != PLL_TOKEN_UNKNOWN &&
+ prev_token.tokenType != PLL_TOKEN_COMMA) return (0);
+ if (!item) item = (pllNewickNodeInfo *) rax_calloc (1, sizeof (pllNewickNodeInfo));
+ if (prev_token.tokenType == PLL_TOKEN_COLON)
+ {
+ //item->branch = strndup (token.lexeme, token.len);
+ item->branch = (char *) rax_malloc ((token.len + 1) * sizeof (char));
+ strncpy (item->branch, token.lexeme, token.len);
+ item->branch[token.len] = 0;
+ }
+ else
+ {
+ if (prev_token.tokenType == PLL_TOKEN_COMMA ||
+ prev_token.tokenType == PLL_TOKEN_OPAREN ||
+ prev_token.tokenType == PLL_TOKEN_UNKNOWN) item->leaf = 1;
+ //if (prev_token.tokenType != PLL_TOKEN_UNKNOWN) ++ indent;
+ //item->name = strndup (token.lexeme, token.len);
+ if (item->name) rax_free(item->name);
+ item->name = (char *) rax_malloc ((token.len + 1) * sizeof (char));
+ strncpy (item->name, token.lexeme, token.len);
+ item->name[token.len] = 0;
+ }
+ item_active = 1;
+ item->depth = depth;
+ memcpy (&prev_token, &token, sizeof (pllLexToken));
+ break;
+
+ case PLL_TOKEN_COLON:
+#ifdef PLLDEBUG
+ printf ("PLL_TOKEN_COLON\n");
+#endif
+ if (prev_token.tokenType != PLL_TOKEN_CPAREN &&
+ prev_token.tokenType != PLL_TOKEN_STRING &&
+ prev_token.tokenType != PLL_TOKEN_FLOAT &&
+ prev_token.tokenType != PLL_TOKEN_NUMBER) return (0);
+ memcpy (&prev_token, &token, sizeof (pllLexToken));
+ break;
+
+ case PLL_TOKEN_COMMA:
+#ifdef PLLDEBUG
+ printf ("PLL_TOKEN_COMMA\n");
+#endif
+ if (prev_token.tokenType != PLL_TOKEN_CPAREN &&
+ prev_token.tokenType != PLL_TOKEN_STRING &&
+ prev_token.tokenType != PLL_TOKEN_FLOAT &&
+ prev_token.tokenType != PLL_TOKEN_NUMBER) return (0);
+ memcpy (&prev_token, &token, sizeof (pllLexToken));
+
+ /* push to the stack */
+ if (!item) item = (pllNewickNodeInfo *) rax_calloc (1, sizeof (pllNewickNodeInfo)); // possibly not nece
+ //if (item->name == NULL) item->name = strdup ("INTERNAL_NODE");
+ if (item->name == NULL)
+ {
+ item->name = (char *) rax_malloc ((strlen("INTERNAL_NODE") + 1) * sizeof (char));
+ strcpy (item->name, "INTERNAL_NODE");
+ }
+ //if (item->branch == NULL) item->branch = strdup ("0.000000");
+ if (item->branch == NULL)
+ {
+ item->branch = (char *) rax_malloc ((strlen("0.000000") + 1) * sizeof (char));
+ strcpy (item->branch, "0.000000");
+ }
+ item->depth = depth;
+ pllStackPush (stack, item);
+ item_active = 0;
+ item = NULL;
+ break;
+
+ case PLL_TOKEN_SEMICOLON:
+#ifdef PLLDEBUG
+ printf ("PLL_TOKEN_SEMICOLON\n");
+#endif
+ /* push to the stack */
+ if (!item) item = (pllNewickNodeInfo *) rax_calloc (1, sizeof (pllNewickNodeInfo));
+ //if (item->name == NULL) item->name = strdup ("ROOT_NODE");
+ if (item->name == NULL)
+ {
+ item->name = (char *) rax_malloc ((strlen("ROOT_NODE") + 1) * sizeof (char));
+ strcpy (item->name, "ROOT_NODE");
+ }
+ //if (item->branch == NULL) item->branch = strdup ("0.000000");
+ if (item->branch == NULL)
+ {
+ item->branch = (char *) rax_malloc ((strlen("0.000000") + 1) * sizeof (char));
+ strcpy (item->branch, "0.000000");
+ }
+ pllStackPush (stack, item);
+ item_active = 0;
+ item = NULL;
+ break;
+ default:
+#ifdef __DEBUGGING_MODE
+ printf ("Unknown token: %d\n", token.tokenType);
+#endif
+ // TODO: Finish this part and add error codes
+ break;
+ }
+ NEXT_TOKEN
+ CONSUME(PLL_TOKEN_WHITESPACE | PLL_TOKEN_NEWLINE);
+ }
+ if (item_active)
+ {
+ if (!item) item = (pllNewickNodeInfo *) rax_calloc (1, sizeof (pllNewickNodeInfo));
+ //if (item->name == NULL) item->name = strdup ("ROOT_NODE");
+ if (item->name == NULL)
+ {
+ item->name = (char *) rax_malloc ((strlen("ROOT_NODE") + 1) * sizeof (char));
+ strcpy (item->name, "ROOT_NODE");
+ }
+ //if (item->branch == NULL) item->branch = strdup ("0.000000");
+ if (item->branch == NULL)
+ {
+ item->branch = (char *) rax_malloc ((strlen("0.000000") + 1) * sizeof (char));
+ strcpy (item->branch, "0.000000");
+ }
+ pllStackPush (stack, item);
+ item_active = 0;
+ }
+
+ if (nop || token.tokenType == PLL_TOKEN_UNKNOWN)
+ {
+ return (0);
+ }
+
+ return (1);
+}
+
+#ifdef __DEBUGGING_MODE
+void stack_dump(pllStack ** stack)
+{
+ pllNewickNodeInfo * item;
+ pllStack * head;
+ int i;
+
+ head = *stack;
+ while (head)
+ {
+ item = (pllNewickNodeInfo *) head->item;
+
+ for (i = 0; i < item->depth; ++ i) printf ("\t");
+
+ printf ("%s:%s\n", item->name, item->branch);
+
+ head = head->next;
+ }
+}
+#endif
+
+static void
+assign_ranks (pllStack * stack, int * nodes, int * leaves)
+{
+ pllStack * head;
+ pllNewickNodeInfo * item, * tmp;
+ pllStack * preorder = NULL;
+ int children;
+ int depth;
+
+ *nodes = *leaves = 0;
+
+
+ head = stack;
+ while (head)
+ {
+ assert (head->item);
+ item = (pllNewickNodeInfo *) head->item;
+
+ if (item->leaf) ++ (*leaves);
+
+ if (preorder)
+ {
+ tmp = (pllNewickNodeInfo *) preorder->item;
+ children = 0;
+ while (item->depth < tmp->depth)
+ {
+ children = 1;
+ depth = tmp->depth;
+ pllStackPop (&preorder);
+ tmp = preorder->item;
+ while (tmp->depth == depth)
+ {
+ ++ children;
+ pllStackPop (&preorder);
+ tmp = (pllNewickNodeInfo *)preorder->item;
+ }
+ tmp->rank += children;
+ }
+ }
+
+ ++ (*nodes);
+ head = head->next;
+
+ if (item->leaf)
+ {
+ if (!preorder) return;
+
+ children = 1;
+ tmp = preorder->item;
+ while (tmp->depth == item->depth)
+ {
+ ++ children;
+ pllStackPop (&preorder);
+ assert (preorder);
+ tmp = (pllNewickNodeInfo *)preorder->item;
+ }
+ tmp->rank += children;
+ }
+ else
+ {
+ pllStackPush (&preorder, item);
+ }
+ }
+
+ while (preorder->item != stack->item)
+ {
+ item = (pllNewickNodeInfo *)pllStackPop (&preorder);
+ tmp = (pllNewickNodeInfo *) preorder->item;
+ children = 1;
+
+ while (tmp->depth == item->depth)
+ {
+ ++ children;
+ item = (pllNewickNodeInfo *) pllStackPop (&preorder);
+ tmp = (pllNewickNodeInfo *) preorder->item;
+ }
+ tmp->rank += children;
+ children = 0;
+ }
+ assert (preorder->item == stack->item);
+
+ pllStackClear (&preorder);
+}
+
+/** @ingroup newickParseGroup
+ @brief Validate if a newick tree is a valid phylogenetic tree
+
+ A valid tree is one where the root node is binary or ternary
+ and all other internal nodes are binary. In case the root
+ is ternary then the tree must contain at least another internal
+ node and the total number of nodes must be equal to
+ \f$ 2l - 2\f$, where \f$l\f$ is the number of leaves. If the
+ root is binary, then the total number of nodes must be equal
+ to \f$2l - 1\f$.
+
+ @param tree
+ Newick tree wrapper structure which contains the stack representation of the parsed newick tree
+
+ @return
+ Returns \b 1 in case of success, otherwise \b 0
+*/
+int
+pllValidateNewick (pllNewickTree * t)
+{
+ pllStack * head;
+ pllNewickNodeInfo * item;
+ int correct = 0;
+
+ item = t->tree->item;
+ if (item->rank != 2 && item->rank != 3) return (0);
+ head = t->tree->next;
+ while (head)
+ {
+ item = head->item;
+ if (item->rank != 2 && item->rank != 0)
+ {
+ return (0);
+ }
+ head = head->next;
+ }
+
+ item = t->tree->item;
+
+ if (item->rank == 2)
+ {
+ correct = (t->nodes == 2 * t->tips -1);
+ if (correct)
+ {
+ errno = PLL_NEWICK_ROOTED_TREE;
+ }
+ else
+ {
+ errno = PLL_NEWICK_BAD_STRUCTURE;
+ }
+ return (PLL_FALSE);
+ }
+
+
+ correct = ((t->nodes == 2 * t->tips - 2) && t->nodes != 4);
+ if (correct) return (PLL_TRUE);
+
+ errno = PLL_NEWICK_BAD_STRUCTURE;
+
+ return (1);
+}
+
+
+/** @ingroup newickParseGroup
+ @brief Convert a binary rooted trree to a binary unrooted tree
+
+ Changes the root of the node to have 3 descendants instead of two, deletes its last immediate descendant internal node
+ and takes the two children (of the deleted internal node) as its children.
+
+ @param
+ Newick tree
+
+ @return
+ \b PLL_TRUE in case of success, otherwise \b PLL_FALSE and \a errno is set
+*/
+int
+pllNewickUnroot (pllNewickTree * t)
+{
+ pllStack * tmp;
+ pllNewickNodeInfo * item;
+
+ item = t->tree->item;
+ if (item->rank == 2)
+ {
+ item->rank = 3;
+ t->nodes--;
+ item = t->tree->next->item;
+ if (item->rank == 0)
+ {
+ tmp = t->tree->next->next;
+ t->tree->next->next = t->tree->next->next->next;
+ }
+ else
+ {
+ tmp = t->tree->next;
+ t->tree->next = t->tree->next->next;
+ }
+ item = tmp->item;
+ free (item->name);
+ free (tmp->item);
+ free (tmp);
+ }
+
+ return (pllValidateNewick (t));
+}
+
+
+/** @ingroup newickParseGroup
+ @brief Parse a newick tree string
+
+ Parse a newick string and create a stack structure which represents the tree
+ in a preorder traversal form. Each element of the stack represents one node
+ and consists of its name, branch length, number of children and depth. The
+ stack structure is finally wrapped in a \a pllNewickTree structure which
+ also contains the number of nodes and leaves.
+
+ @param newick
+ String containing the newick tree
+
+ @return
+ Returns a pointer to the created \a pllNewickTree structure in case of success, otherwise \b NULL
+*/
+pllNewickTree *
+pllNewickParseString (const char * newick)
+{
+ int n, input, rc;
+ pllNewickTree * t;
+ int nodes, leaves;
+
+ t = (pllNewickTree *) calloc (1, sizeof (pllNewickTree));
+
+ n = strlen (newick);
+
+ init_lexan (newick, n);
+ input = get_next_symbol();
+
+ rc = parse_newick (&(t->tree), &input);
+ if (!rc)
+ {
+ /* TODO: properly clean t->tree */
+ rax_free (t);
+ t = NULL;
+ }
+ else
+ {
+ assign_ranks (t->tree, &nodes, &leaves);
+ t->nodes = nodes;
+ t->tips = leaves;
+ }
+
+ return (t);
+}
+
+/** @ingroup newickParseGroup
+ @brief Deallocate newick parser stack structure
+
+ Deallocates the newick parser stack structure that represents the parsed tree. It
+ also frees all memory allocated by elements of the stack structure.
+
+ @param tree
+ The tree stack structure
+*/
+void pllNewickParseDestroy (pllNewickTree ** t)
+{
+ pllNewickNodeInfo * item;
+
+ while ((item = (pllNewickNodeInfo *)pllStackPop (&((*t)->tree))))
+ {
+ rax_free (item->name);
+ rax_free (item->branch);
+ rax_free (item);
+ }
+ rax_free (*t);
+ (*t) = NULL;
+}
+
+/** @ingroup newickParseGroup
+ @brief Parse a newick tree file
+
+ Parse a newick file and create a stack structure which represents the tree
+ in a preorder traversal form. Each element of the stack represents one node
+ and consists of its name, branch length, number of children (rank) and depth. The
+ stack structure is finally wrapped in a \a pllNewickTree structure which
+ also contains the number of nodes and leaves.
+
+ @param filename
+ Filename containing the newick tree
+
+ @return
+ Returns a pointer to the created \a pllNewickTree structure in case of success, otherwise \b NULL
+*/
+pllNewickTree *
+pllNewickParseFile (const char * filename)
+{
+ long n;
+ char * rawdata;
+ pllNewickTree * t;
+
+ rawdata = pllReadFile (filename, &n);
+ if (!rawdata)
+ {
+ //fprintf (stderr, "Error while opening/reading file %s\n", filename);
+ return (0);
+ }
+
+ //printf ("%s\n\n", rawdata);
+
+ t = pllNewickParseString (rawdata);
+
+ rax_free (rawdata);
+
+ return (t);
+}
+
diff --git a/src/newviewGenericSpecial.c b/src/newviewGenericSpecial.c
new file mode 100644
index 0000000..8e21d6b
--- /dev/null
+++ b/src/newviewGenericSpecial.c
@@ -0,0 +1,8985 @@
+/**
+ * PLL (version 1.0.0) a software library for phylogenetic inference
+ * Copyright (C) 2013 Tomas Flouri and Alexandros Stamatakis
+ *
+ * Derived from
+ * RAxML-HPC, a program for sequential and parallel estimation of phylogenetic
+ * trees by Alexandros Stamatakis
+ *
+ * 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 3 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, see <http://www.gnu.org/licenses/>.
+ *
+ * For any other enquiries send an Email to Tomas Flouri
+ * Tomas.Flouri at h-its.org
+ *
+ * When publishing work that uses PLL please cite PLL
+ *
+ * @file newviewGenericSpecial.c
+ *
+ * @brief Functions that deal (mostly) with conditional likelihood (re)computation
+ */
+
+#include "mem_alloc.h"
+
+#ifndef WIN32
+#include <unistd.h>
+#endif
+
+#include <math.h>
+#include <time.h>
+#include <stdlib.h>
+#include <stdio.h>
+#include <ctype.h>
+#include <string.h>
+#include <stdint.h>
+#include <limits.h>
+#include <assert.h>
+
+#include "pll.h"
+#include "pllInternal.h"
+
+#ifdef __MIC_NATIVE
+#include "mic_native.h"
+#endif
+
+
+#ifdef __SSE3
+#include <stdint.h>
+#include <xmmintrin.h>
+#include <pmmintrin.h>
+#include "cycle.h"
+
+static void computeTraversalInfo(nodeptr, traversalInfo *, int *, int, int, boolean, recompVectors *, boolean);
+static void makeP(double z1, double z2, double *rptr, double *EI, double *EIGN, int numberOfCategories, double *left, double *right, boolean saveMem, int maxCat, const int states);
+#if (defined(__SSE3) && !defined(__AVX))
+static void newviewGTRGAMMAPROT_LG4(int tipCase,
+ double *x1, double *x2, double *x3, double *extEV[4], double *tipVector[4],
+ int *ex3, unsigned char *tipX1, unsigned char *tipX2,
+ int n, double *left, double *right, int *wgt, int *scalerIncrement, const boolean useFastScaling);
+
+static void newviewGTRGAMMA_GAPPED_SAVE(int tipCase,
+ double *x1_start, double *x2_start, double *x3_start,
+ double *EV, double *tipVector,
+ int *ex3, unsigned char *tipX1, unsigned char *tipX2,
+ const int n, double *left, double *right, int *wgt, int *scalerIncrement, const boolean fastScaling,
+ unsigned int *x1_gap, unsigned int *x2_gap, unsigned int *x3_gap,
+ double *x1_gapColumn, double *x2_gapColumn, double *x3_gapColumn);
+
+static void newviewGTRGAMMA(int tipCase,
+ double *x1_start, double *x2_start, double *x3_start,
+ double *EV, double *tipVector,
+ int *ex3, unsigned char *tipX1, unsigned char *tipX2,
+ const int n, double *left, double *right, int *wgt, int *scalerIncrement, const boolean fastScaling
+ );
+
+static void newviewGTRCAT( int tipCase, double *EV, int *cptr,
+ double *x1_start, double *x2_start, double *x3_start, double *tipVector,
+ int *ex3, unsigned char *tipX1, unsigned char *tipX2,
+ int n, double *left, double *right, int *wgt, int *scalerIncrement, const boolean fastScaling);
+
+
+static void newviewGTRCAT_SAVE( int tipCase, double *EV, int *cptr,
+ double *x1_start, double *x2_start, double *x3_start, double *tipVector,
+ int *ex3, unsigned char *tipX1, unsigned char *tipX2,
+ int n, double *left, double *right, int *wgt, int *scalerIncrement, const boolean fastScaling,
+ unsigned int *x1_gap, unsigned int *x2_gap, unsigned int *x3_gap,
+ double *x1_gapColumn, double *x2_gapColumn, double *x3_gapColumn, const int maxCats);
+
+static void newviewGTRGAMMAPROT_GAPPED_SAVE(int tipCase,
+ double *x1, double *x2, double *x3, double *extEV, double *tipVector,
+ int *ex3, unsigned char *tipX1, unsigned char *tipX2,
+ int n, double *left, double *right, int *wgt, int *scalerIncrement, const boolean fastScaling,
+ unsigned int *x1_gap, unsigned int *x2_gap, unsigned int *x3_gap,
+ double *x1_gapColumn, double *x2_gapColumn, double *x3_gapColumn
+ );
+
+static void newviewGTRGAMMAPROT(int tipCase,
+ double *x1, double *x2, double *x3, double *extEV, double *tipVector,
+ int *ex3, unsigned char *tipX1, unsigned char *tipX2,
+ int n, double *left, double *right, int *wgt, int *scalerIncrement, const boolean fastScaling);
+
+static void newviewGTRCATPROT(int tipCase, double *extEV,
+ int *cptr,
+ double *x1, double *x2, double *x3, double *tipVector,
+ int *ex3, unsigned char *tipX1, unsigned char *tipX2,
+ int n, double *left, double *right, int *wgt, int *scalerIncrement, const boolean fastScaling);
+
+static void newviewGTRCATPROT_SAVE(int tipCase, double *extEV,
+ int *cptr,
+ double *x1, double *x2, double *x3, double *tipVector,
+ int *ex3, unsigned char *tipX1, unsigned char *tipX2,
+ int n, double *left, double *right, int *wgt, int *scalerIncrement, const boolean fastScaling,
+ unsigned int *x1_gap, unsigned int *x2_gap, unsigned int *x3_gap,
+ double *x1_gapColumn, double *x2_gapColumn, double *x3_gapColumn, const int maxCats);
+
+#endif
+#if (defined(__AVX) || defined(__SSE3))
+static void newviewGTRCAT_BINARY( int tipCase, double *EV, int *cptr,
+ double *x1_start, double *x2_start, double *x3_start, double *tipVector,
+ int *ex3, unsigned char *tipX1, unsigned char *tipX2,
+ int n, double *left, double *right, int *wgt, int *scalerIncrement, const boolean useFastScaling);
+static void newviewGTRGAMMA_BINARY(int tipCase,
+ double *x1_start, double *x2_start, double *x3_start,
+ double *EV, double *tipVector,
+ int *ex3, unsigned char *tipX1, unsigned char *tipX2,
+ const int n, double *left, double *right, int *wgt, int *scalerIncrement, const boolean useFastScaling);
+#endif
+
+/* required to compute the absolute values of double precision numbers with SSE3 */
+
+const union __attribute__ ((aligned (PLL_BYTE_ALIGNMENT)))
+{
+ uint64_t i[2];
+ __m128d m;
+} absMask = {{0x7fffffffffffffffULL , 0x7fffffffffffffffULL }};
+
+
+
+#endif
+
+static int pllGetTransitionMatrixNormal (pllInstance * tr, partitionList * pr, nodeptr p, int model, int rate, double * outBuffer);
+static int pllGetTransitionMatrixLG4 (partitionList * pr, nodeptr p, int model, double * outBuffer);
+
+extern const char binaryStateNames[2]; /**< @brief Alphabet of binary states */
+extern const char dnaStateNames[4]; /**< @brief DNA alphabet */
+extern const char protStateNames[20]; /**< @brief Amino-acid alphabet */
+extern const unsigned int mask32[32]; /**< @brief Contains the first 32 powers of 2, i.e. 2^0 upto 2^31 */
+
+static void ascertainmentBiasSequence(unsigned char tip[32], int numStates)
+{
+ assert(numStates <= 32 && numStates > 1);
+
+ switch(numStates)
+ {
+ case 2:
+ tip[0] = 1;
+ tip[1] = 2;
+ break;
+ case 4:
+ tip[0] = 1;
+ tip[1] = 2;
+ tip[2] = 4;
+ tip[3] = 8;
+ break;
+ default:
+ {
+ int
+ i;
+ for(i = 0; i < numStates; i++)
+ {
+ tip[i] = i;
+ //printf("%c ", inverseMeaningPROT[i]);
+ }
+ //printf("\n");
+ }
+ break;
+ }
+}
+
+static void newviewAscCat(int tipCase,
+ double *x1, double *x2, double *x3, double *extEV, double *tipVector,
+ int *ex3,
+ const int n, double *left, double *right,
+ const int numStates)
+{
+ double
+ *le, *ri, *v, *vl, *vr,
+ ump_x1, ump_x2, x1px2;
+
+ int
+ i, l, j, scale;
+
+
+ unsigned char
+ tip[32];
+
+ ascertainmentBiasSequence(tip, numStates);
+
+ switch(tipCase)
+ {
+ case PLL_TIP_TIP:
+ {
+ for (i = 0; i < n; i++)
+ {
+ le = &left[0];
+ ri = &right[0];
+
+ vl = &(tipVector[numStates * tip[i]]);
+ vr = &(tipVector[numStates * tip[i]]);
+ v = &x3[numStates * i];
+
+ for(l = 0; l < numStates; l++)
+ v[l] = 0.0;
+
+ for(l = 0; l < numStates; l++)
+ {
+ ump_x1 = 0.0;
+ ump_x2 = 0.0;
+
+ for(j = 0; j < numStates; j++)
+ {
+ ump_x1 += vl[j] * le[l * numStates + j];
+ ump_x2 += vr[j] * ri[l * numStates + j];
+ }
+
+ x1px2 = ump_x1 * ump_x2;
+
+ for(j = 0; j < numStates; j++)
+ v[j] += x1px2 * extEV[l * numStates + j];
+ }
+ }
+ }
+ break;
+ case PLL_TIP_INNER:
+ {
+ for (i = 0; i < n; i++)
+ {
+ le = &left[0];
+ ri = &right[0];
+
+ vl = &(tipVector[numStates * tip[i]]);
+ vr = &x2[numStates * i];
+ v = &x3[numStates * i];
+
+ for(l = 0; l < numStates; l++)
+ v[l] = 0.0;
+
+ for(l = 0; l < numStates; l++)
+ {
+ ump_x1 = 0.0;
+ ump_x2 = 0.0;
+
+ for(j = 0; j < numStates; j++)
+ {
+ ump_x1 += vl[j] * le[l * numStates + j];
+ ump_x2 += vr[j] * ri[l * numStates + j];
+ }
+
+ x1px2 = ump_x1 * ump_x2;
+
+ for(j = 0; j < numStates; j++)
+ v[j] += x1px2 * extEV[l * numStates + j];
+ }
+
+ scale = 1;
+ for(l = 0; scale && (l < numStates); l++)
+ scale = ((v[l] < PLL_MINLIKELIHOOD) && (v[l] > PLL_MINUSMINLIKELIHOOD));
+
+ if(scale)
+ {
+ for(l = 0; l < numStates; l++)
+ v[l] *= PLL_TWOTOTHE256;
+
+ ex3[i] += 1;
+ }
+ }
+ }
+ break;
+ case PLL_INNER_INNER:
+ for(i = 0; i < n; i++)
+ {
+ le = &left[0];
+ ri = &right[0];
+
+ vl = &x1[numStates * i];
+ vr = &x2[numStates * i];
+ v = &x3[numStates * i];
+
+ for(l = 0; l < numStates; l++)
+ v[l] = 0.0;
+
+ for(l = 0; l < numStates; l++)
+ {
+ ump_x1 = 0.0;
+ ump_x2 = 0.0;
+
+ for(j = 0; j < numStates; j++)
+ {
+ ump_x1 += vl[j] * le[l * numStates + j];
+ ump_x2 += vr[j] * ri[l * numStates + j];
+ }
+
+ x1px2 = ump_x1 * ump_x2;
+
+ for(j = 0; j < numStates; j++)
+ v[j] += x1px2 * extEV[l * numStates + j];
+ }
+
+ scale = 1;
+ for(l = 0; scale && (l < numStates); l++)
+ scale = ((v[l] < PLL_MINLIKELIHOOD) && (v[l] > PLL_MINUSMINLIKELIHOOD));
+
+ if(scale)
+ {
+ for(l = 0; l < numStates; l++)
+ v[l] *= PLL_TWOTOTHE256;
+
+ ex3[i] += 1;
+ }
+ }
+ break;
+ default:
+ assert(0);
+ }
+
+
+
+}
+
+
+static void newviewAscGamma(int tipCase,
+ double *x1, double *x2, double *x3, double *extEV, double *tipVector,
+ int *ex3,
+ const int n, double *left, double *right,
+ const int numStates)
+{
+
+ int
+ i, j, l, k, scale;
+
+ const int
+ statesSquare = numStates * numStates,
+ gammaStates = 4 * numStates;
+
+ double
+ *vl, *vr, al, ar, *v, x1px2;
+
+ unsigned char
+ tip[32];
+
+ ascertainmentBiasSequence(tip, numStates);
+
+ switch(tipCase)
+ {
+ case PLL_TIP_TIP:
+ {
+ for(i = 0; i < n; i++)
+ {
+ for(k = 0; k < 4; k++)
+ {
+ vl = &(tipVector[numStates * tip[i]]);
+ vr = &(tipVector[numStates * tip[i]]);
+ v = &(x3[gammaStates * i + numStates * k]);
+
+ for(l = 0; l < numStates; l++)
+ v[l] = 0;
+
+ for(l = 0; l < numStates; l++)
+ {
+ al = 0.0;
+ ar = 0.0;
+ for(j = 0; j < numStates; j++)
+ {
+ al += vl[j] * left[k * statesSquare + l * numStates + j];
+ ar += vr[j] * right[k * statesSquare + l * numStates + j];
+ }
+
+ x1px2 = al * ar;
+ for(j = 0; j < numStates; j++)
+ v[j] += x1px2 * extEV[numStates * l + j];
+ }
+ }
+ }
+ }
+ break;
+ case PLL_TIP_INNER:
+ {
+ for (i = 0; i < n; i++)
+ {
+ for(k = 0; k < 4; k++)
+ {
+ vl = &(tipVector[numStates * tip[i]]);
+ vr = &(x2[gammaStates * i + numStates * k]);
+ v = &(x3[gammaStates * i + numStates * k]);
+
+ for(l = 0; l < numStates; l++)
+ v[l] = 0;
+
+ for(l = 0; l < numStates; l++)
+ {
+ al = 0.0;
+ ar = 0.0;
+ for(j = 0; j < numStates; j++)
+ {
+ al += vl[j] * left[k * statesSquare + l * numStates + j];
+ ar += vr[j] * right[k * statesSquare + l * numStates + j];
+ }
+
+ x1px2 = al * ar;
+ for(j = 0; j < numStates; j++)
+ v[j] += x1px2 * extEV[numStates * l + j];
+ }
+ }
+
+ v = &x3[gammaStates * i];
+ scale = 1;
+ for(l = 0; scale && (l < gammaStates); l++)
+ scale = (PLL_ABS(v[l]) < PLL_MINLIKELIHOOD);
+
+ if(scale)
+ {
+ for(l = 0; l < gammaStates; l++)
+ v[l] *= PLL_TWOTOTHE256;
+
+ ex3[i] += 1;
+ }
+ }
+ }
+ break;
+ case PLL_INNER_INNER:
+ for (i = 0; i < n; i++)
+ {
+ for(k = 0; k < 4; k++)
+ {
+ vl = &(x1[gammaStates * i + numStates * k]);
+ vr = &(x2[gammaStates * i + numStates * k]);
+ v = &(x3[gammaStates * i + numStates * k]);
+
+ for(l = 0; l < numStates; l++)
+ v[l] = 0;
+
+ for(l = 0; l < numStates; l++)
+ {
+ al = 0.0;
+ ar = 0.0;
+ for(j = 0; j < numStates; j++)
+ {
+ al += vl[j] * left[k * statesSquare + l * numStates + j];
+ ar += vr[j] * right[k * statesSquare + l * numStates + j];
+ }
+
+ x1px2 = al * ar;
+ for(j = 0; j < numStates; j++)
+ v[j] += x1px2 * extEV[numStates * l + j];
+ }
+ }
+
+ v = &(x3[gammaStates * i]);
+ scale = 1;
+ for(l = 0; scale && (l < gammaStates); l++)
+ scale = ((PLL_ABS(v[l]) < PLL_MINLIKELIHOOD));
+
+ if(scale)
+ {
+ for(l = 0; l < gammaStates; l++)
+ v[l] *= PLL_TWOTOTHE256;
+
+ ex3[i] += 1;
+ }
+ }
+ break;
+ default:
+ assert(0);
+ }
+}
+
+
+/* generic function for computing the P matrices, for computing the conditional likelihood at a node p, given child nodes q and r
+ we compute P(z1) and P(z2) here */
+
+/** @brief Computes two P matrices for two edges.
+
+ Generic function for computing the P matrices of two nodes based on their edges. This is used to
+ (later) compute the the conditional likelihood at a node p which has two descendants \a q and \r,
+ which in turn have the edges \a z1 and \a z2 that connect them with \a p. Given those edges, we
+ compute two P matrices \a P(z1) and \a P(z2) which are stored in the arrays \a left and \a right.
+
+ The following value is computed here:
+ \f[
+ EI\cdot exp( EIGN \cdot z)
+ \f]
+ to fill up the P matrix.
+
+ @param z1 Branch length leading to left descendant node (let's call it \a q)
+ @param z2 Branch length leading to right descendant node (let's call it \a r)
+ @param rptr Array of values for rate categories
+ @param EI Inverse eigenvectors of Q-matrix
+ @param EIGN Eigenvalues of Q-matrix
+ @param numberOfCategories How many rate heterogeneity categories we have, depending on GAMMA and CAT
+ @param left Where to store the left P matrix (for node \a q)
+ @param right Where to store the right P matrix (for node \a r)
+ @param saveMem If set to \b PLL_TRUE, memory saving technique is enabled
+ @param maxCat Maximum number of rate categories
+ @param states Number of states for the particular data (4 for DNA or 20 for AA)
+*/
+static void makeP(double z1,
+ double z2,
+ double *rptr,
+ double *EI,
+ double *EIGN,
+ int numberOfCategories,
+ double *left,
+ double *right,
+ boolean saveMem,
+ int maxCat,
+ const int states)
+{
+ int i, j, k, statesSquare = states * states;
+
+ /* assign some space for pre-computing and later re-using functions */
+
+ double
+ *lz1 = (double*)rax_malloc(sizeof(double) * states),
+ *lz2 = (double*)rax_malloc(sizeof(double) * states),
+ *d1 = (double*)rax_malloc(sizeof(double) * states),
+ *d2 = (double*)rax_malloc(sizeof(double) * states);
+
+ /* multiply branch lengths with eigenvalues */
+
+ for(i = 1; i < states; i++)
+ {
+ lz1[i] = EIGN[i] * z1;
+ lz2[i] = EIGN[i] * z2;
+ }
+
+
+ /* loop over the number of rate categories, this will be 4 for the GAMMA model and
+ variable for the CAT model */
+
+ for(i = 0; i < numberOfCategories; i++)
+ {
+ /* exponentiate the rate multiplied by the branch */
+
+ for(j = 1; j < states; j++)
+ {
+ d1[j] = exp(rptr[i] * lz1[j]);
+ d2[j] = exp(rptr[i] * lz2[j]);
+
+ }
+
+ /* now fill the P matrices for the two branch length values */
+
+ for(j = 0; j < states; j++)
+ {
+ /* left and right are pre-allocated arrays */
+
+ left[statesSquare * i + states * j] = 1.0;
+ right[statesSquare * i + states * j] = 1.0;
+
+ for(k = 1; k < states; k++)
+ {
+ left[statesSquare * i + states * j + k] = d1[k] * EI[states * j + k];
+ right[statesSquare * i + states * j + k] = d2[k] * EI[states * j + k];
+ }
+ }
+ }
+
+
+ /* if memory saving is enabled and we are using CAT we need to do one additional P matrix
+ calculation for a rate of 1.0 to compute the entries of a column/tree site comprising only gaps */
+
+
+ if(saveMem)
+ {
+ i = maxCat;
+
+ for(j = 1; j < states; j++)
+ {
+ d1[j] = exp (lz1[j]);
+ d2[j] = exp (lz2[j]);
+ }
+
+ for(j = 0; j < states; j++)
+ {
+ left[statesSquare * i + states * j] = 1.0;
+ right[statesSquare * i + states * j] = 1.0;
+
+ for(k = 1; k < states; k++)
+ {
+ left[statesSquare * i + states * j + k] = d1[k] * EI[states * j + k];
+ right[statesSquare * i + states * j + k] = d2[k] * EI[states * j + k];
+ }
+ }
+ }
+
+ /* free the temporary buffers */
+
+ rax_free(lz1);
+ rax_free(lz2);
+ rax_free(d1);
+ rax_free(d2);
+}
+
+
+/** Compute the transition probability matrix for a given branch
+
+ Computes the transition probability matrix for the branch \a p->z and partition \a model given the
+ PLL instance \a tr and list of partitions \a pr. The result is stored in \a outBuffer which must
+ be of sufficient size, i.e states * states * (numberOfRateCategories + 1) * sizeof(double);
+
+ @param tr PLL instance
+ @param pr List of partitions
+ @param model Partition index for which to take the branch length
+ @param p Adjacent node to the edge we want to compute the trans. prob. matrix
+ @param outBuffer Output buffer where to store the transition probability matrix
+
+*/
+int pllGetTransitionMatrix (pllInstance * tr, partitionList * pr, nodeptr p, int model, int rate, double * outBuffer)
+{
+ if (tr->rateHetModel == PLL_CAT)
+ {
+ if (rate >= pr->partitionData[model]->numberOfCategories) return (PLL_FALSE);
+ }
+ else
+ {
+ if (rate >= 4) return (PLL_FALSE);
+ }
+
+ if (pr->partitionData[model]->dataType == PLL_AA_DATA &&
+ (pr->partitionData[model]->protModels == PLL_LG4M || pr->partitionData[model]->protModels == PLL_LG4X))
+ return (pllGetTransitionMatrixLG4 (pr, p, model, outBuffer));
+
+
+ return (pllGetTransitionMatrixNormal (tr, pr, p, model, rate, outBuffer));
+}
+
+
+/* TODO: Fix this function according to pllGetTransitionMatrixNormal */
+static int pllGetTransitionMatrixLG4 (partitionList * pr, nodeptr p, int model, double * outBuffer)
+{
+ int
+ i, j, k,
+ states = pr->partitionData[model]->states,
+ numberOfCategories = 4;
+ double
+ d[64],
+ * rptr = pr->partitionData[model]->gammaRates,
+ ** EI = pr->partitionData[model]->EI_LG4,
+ ** EIGN = pr->partitionData[model]->EIGN_LG4;
+
+ assert (states == 20);
+
+ for (i = 0; i < numberOfCategories; ++i)
+ {
+ for (j = 1; j < states; ++j)
+ {
+ d[j] = exp(rptr[i] * EIGN[i][j] * p->z[model]);
+ }
+ for (j = 0; j < states; ++ j)
+ {
+ outBuffer[states * states * i + states * j] = 1.0;
+ for (k = 1; k < states; ++k)
+ {
+ outBuffer[states * states * i + states * j + k] = d[k] * EI[i][states * j + k];
+ }
+ }
+ }
+ return (PLL_TRUE);
+}
+
+static int pllGetTransitionMatrixNormal (pllInstance * tr, partitionList * pr, nodeptr p, int model, int rate, double * outBuffer)
+{
+ int
+ i, j, k,
+ /* numberOfCategories, */
+ states = pr->partitionData[model]->states;
+ double
+ * d = (double *)rax_malloc(sizeof(double) * states),
+ * rptr,
+ * EI = pr->partitionData[model]->EI,
+ * EIGN = pr->partitionData[model]->EIGN,
+ * EV = pr->partitionData[model]->EV;
+
+ double lz = (p->z[model] > PLL_ZMIN) ? log(p->z[model]) : log(PLL_ZMIN);
+
+ if (tr->rateHetModel == PLL_CAT)
+ {
+ rptr = pr->partitionData[model]->perSiteRates;
+ /* numberOfCategories = pr->partitionData[model]->numberOfCategories; */
+ }
+ else
+ {
+ rptr = pr->partitionData[model]->gammaRates;
+ /* numberOfCategories = 4; */
+ }
+
+ for (i = 0; i < states * states; ++ i) outBuffer[i] = 0;
+
+ d[0] = 1.0;
+ for (j = 1; j < states; ++ j)
+ {
+ d[j] = exp(rptr[rate] * EIGN[j] * lz);
+ }
+
+ for (i = 0; i < states; ++ i)
+ {
+ for (j = 0; j < states; ++ j)
+ {
+ for (k = 0; k < states; ++ k)
+ {
+ outBuffer[states * i + j] += (d[k] * EI[states * i + k] * EV[states * j + k]);
+ }
+ }
+ }
+
+ assert (!tr->saveMemory);
+ // TODO: Fix the following snippet
+ //if (tr->saveMemory)
+ // {
+ // i = tr->maxCategories;
+ //
+ // for (j = 1; j < states; ++j)
+ // {
+ // d[j] = EXP(EIGN[j] * p->z[model]);
+ // }
+
+ // for (j = 0; j < states; ++j)
+ // {
+ // outBuffer[states * states * i + states * j] = 1.0;
+ // for (k = 1; k < states; ++k)
+ // {
+ // outBuffer[states * states * i + states * j + k] = d[k] * EI[states * j + k];
+ // }
+ // }
+ // }
+
+ rax_free(d);
+
+ return (PLL_TRUE);
+}
+
+
+/** @brief Compute two P matrices for two edges for the LG4 model
+
+ Computing the P matrices of two nodes based on their edges for the LG4 model. This is used to
+ (later) compute the the conditional likelihood at a node p which has two descendants \a q and \r,
+ which in turn have the edges \a z1 and \a z2 that connect them with \a p. Given those edges, we
+ compute two P matrices \a P(z1) and \a P(z2) which are stored in the arrays \a left and \a right.
+
+ @param z1
+ Branch length leading to left descendant node (let's call it \a q)
+
+ @param z2
+ Branch length leading to right descendant node (let's call it \a r)
+
+ @param rptr
+ Array of values for rate categories
+
+ @param EI
+ Inverse eigenvectors of 4 Q-matrices
+
+ @param EIGN
+ Eigenvalues of 4 Q-matrix
+
+ @param numberOfCategories
+ How many rate heterogeneity categories we have, depending on GAMMA and CAT
+
+ @param left
+ Where to store the left P matrix (for node \a q)
+
+ @param right
+ Where to store the right P matrix (for node \a r)
+
+ @param numStates
+ Number of states for the particular data (4 for DNA or 20 for AA)
+
+ @todo
+ Present the maths here as in ::makeP
+
+*/
+static void makeP_FlexLG4(double z1, double z2, double *rptr, double *EI[4], double *EIGN[4], int numberOfCategories, double *left, double *right, const int numStates)
+{
+ int
+ i,
+ j,
+ k;
+
+ const int
+ statesSquare = numStates * numStates;
+
+ double
+ d1[64],
+ d2[64];
+
+ assert(numStates <= 64);
+
+ for(i = 0; i < numberOfCategories; i++)
+ {
+ for(j = 1; j < numStates; j++)
+ {
+ d1[j] = exp (rptr[i] * EIGN[i][j] * z1);
+ d2[j] = exp (rptr[i] * EIGN[i][j] * z2);
+ }
+
+ for(j = 0; j < numStates; j++)
+ {
+ left[statesSquare * i + numStates * j] = 1.0;
+ right[statesSquare * i + numStates * j] = 1.0;
+
+ for(k = 1; k < numStates; k++)
+ {
+ left[statesSquare * i + numStates * j + k] = d1[k] * EI[i][numStates * j + k];
+ right[statesSquare * i + numStates * j + k] = d2[k] * EI[i][numStates * j + k];
+ }
+ }
+ }
+}
+
+#if (!defined(__AVX) && !defined(__SSE3))
+
+/** @brief Computation of conditional likelihood arrays for CAT
+
+ This is a generic, slow but readable function implementation for computing the
+ conditional likelihood arrays at p, given child nodes q and r using the CAT
+ mode of rate heterogeneity. Depending whether \a q, resp. \r, are tips or internal
+ nodes (indicated by \a tipCase) the conditional likelihoods are computed based on
+ \a x1 if \a q is an inner node or \a tipX1 if it is a tip, resp. \a x2 if \a r
+ is an inner node or \a tipX2 if it is a tip. Output array \a ex3 stores the
+ number of times the likelihood of each site for each internal node has been scaled.
+ The conditional likelihood vectors for any possible base-pair (which is useful when
+ \a q or \a r are tips) has been already precomputed from the eigenvalues of the Q
+ matrix in the array \a tipVector. In case the conditional likelihood for a particular
+ site is very small in terms of a floating point number, then it is multiplied by a
+ very large number (scaling), and then number of times it has been scaled (per node) is
+ stored in the array \a ex3, if \a fastScaling is set to \b PLL_FALSE. Otherwise, the
+ total number of scalings for all sites and all nodes is stored in a single variable
+ \a scalerIncrement.
+
+ @param tipCase
+ Can be either \b PLL_TIP_TIP, or \b PLL_TIP_INNER or \b PLL_INNER_INNER, and describes the
+ descendants of the node for which we currently compute the condition likelihood
+ vector, i.e. whether they are both tips (leaves), or one is tip and the other
+ an inner node, or both are inner nodes.
+
+ @param extEV
+ Eigenvectors of Q matrix
+
+ @param cptr
+ Array where the rate for each site in the compressed partition alignment is stored
+
+ @param x1
+ Conditional likelihood vectors of the first child node, in case it is an internal node
+
+ @param x2
+ Conditional likelihood vectors of the second child node, in case it is an internal node
+
+ @param x3
+ Pointer to where the computed conditional likelihood vector of node \a p will be stored
+
+ @param tipVector
+ Vector contining sums of left eigenvectors for likelihood computation at tips.
+
+ @param ex3
+ Pointer to an array of whose elements correspond to the number of times the likelihood of
+ a particular site of a particular internal nodeis scaled. Those elements are incremented
+ at every scaling operation and only if \a fastScaling flag is set to \b PLL_FALSE. This
+ array will be used later when evaluating the likelihood of the whole tree.
+
+ @param tipX1
+ Pointer to the alignment data (sequence) of first child node, in case it is a tip
+
+ @param tipX2
+ Pointer to the alignment data (sequence) of second child node, in case it is a tip
+
+ @param n
+ Number of sites for which we are doing the evaluation. For the single-thread version this is the number of sites in the
+ current partition, for multi-threads this is the number of sites assigned to the running thread from the current partition.
+
+ @param left
+ Pointer to the P matrix of the left child
+
+ @param right
+ Pointer to the P matrix of the right child
+
+ @param wgt
+ Array of weights for each site
+
+ @param scalerIncrement
+ Where to store the number of scalings carried out in case \a fastScaling is set to \b PLL_TRUE.
+
+ @param fastScaling
+ If set to \b PLL_TRUE, only the total number of scalings for all sites of the partition will be
+ stored in \a scalerIncrement, otherwise per-site scalings are stored in the array \a ex3.
+
+ @param states
+ Number of states for the particular data (4 for DNA or 20 for AA)
+ */
+static void newviewCAT_FLEX(int tipCase, double *extEV,
+ int *cptr,
+ double *x1, double *x2, double *x3, double *tipVector,
+ int *ex3, unsigned char *tipX1, unsigned char *tipX2,
+ int n, double *left, double *right, int *wgt, int *scalerIncrement, const boolean fastScaling, const int states)
+{
+ double
+ *le,
+ *ri,
+ *v,
+ *vl,
+ *vr,
+ ump_x1,
+ ump_x2,
+ x1px2;
+
+ int
+ i,
+ l,
+ j,
+ scale,
+ addScale = 0;
+
+ const int
+ statesSquare = states * states;
+
+
+ /* here we switch over the different cases for efficiency, but also because
+ each case accesses different data types.
+
+ We consider three cases: either q and r are both tips, q or r are tips, and q and r are inner
+ nodes.
+ */
+
+
+ switch(tipCase)
+ {
+
+ /* both child nodes of p weher we want to update the conditional likelihood are tips */
+ case PLL_TIP_TIP:
+ /* loop over sites */
+ for (i = 0; i < n; i++)
+ {
+ /* set a pointer to the P-Matrices for the rate category of this site */
+ le = &left[cptr[i] * statesSquare];
+ ri = &right[cptr[i] * statesSquare];
+
+ /* pointers to the likelihood entries of the tips q (vl) and r (vr)
+ We will do reading accesses to these values only.
+ */
+ vl = &(tipVector[states * tipX1[i]]);
+ vr = &(tipVector[states * tipX2[i]]);
+
+ /* address of the conditional likelihood array entres at site i. This is
+ a writing access to v */
+ v = &x3[states * i];
+
+ /* initialize v */
+ for(l = 0; l < states; l++)
+ v[l] = 0.0;
+
+ /* loop over states to compute the cond likelihoods at p (v) */
+
+ for(l = 0; l < states; l++)
+ {
+ ump_x1 = 0.0;
+ ump_x2 = 0.0;
+
+ /* le and ri are the P-matrices */
+
+ for(j = 0; j < states; j++)
+ {
+ ump_x1 += vl[j] * le[l * states + j];
+ ump_x2 += vr[j] * ri[l * states + j];
+ }
+
+ x1px2 = ump_x1 * ump_x2;
+
+ /* multiply with matrix of eigenvectors extEV */
+
+ for(j = 0; j < states; j++)
+ v[j] += x1px2 * extEV[l * states + j];
+ }
+ }
+ break;
+ case PLL_TIP_INNER:
+
+ /* same as above, only that now vl is a tip and vr is the conditional probability vector
+ at an inner node. Note that, if we have the case that either q or r is a tip, the
+ nodes will be flipped to ensure that tipX1 always points to the sequence at the tip.
+ */
+
+ for (i = 0; i < n; i++)
+ {
+ le = &left[cptr[i] * statesSquare];
+ ri = &right[cptr[i] * statesSquare];
+
+ /* access tip vector lookup table */
+ vl = &(tipVector[states * tipX1[i]]);
+
+ /* access conditional likelihoo arrays */
+ /* again, vl and vr are reading accesses, while v is a writing access */
+ vr = &x2[states * i];
+ v = &x3[states * i];
+
+ /* same as in the loop above */
+
+ for(l = 0; l < states; l++)
+ v[l] = 0.0;
+
+ for(l = 0; l < states; l++)
+ {
+ ump_x1 = 0.0;
+ ump_x2 = 0.0;
+
+ for(j = 0; j < states; j++)
+ {
+ ump_x1 += vl[j] * le[l * states + j];
+ ump_x2 += vr[j] * ri[l * states + j];
+ }
+
+ x1px2 = ump_x1 * ump_x2;
+
+ for(j = 0; j < states; j++)
+ v[j] += x1px2 * extEV[l * states + j];
+ }
+
+ /* now let's check for numerical scaling.
+ The maths in RAxML are a bit non-standard to avoid/economize on arithmetic operations
+ at the virtual root and for branch length optimization and hence values stored
+ in the conditional likelihood vectors can become negative.
+ Below we check if all absolute values stored at position i of v are smaller
+ than a pre-defined value in pll.h. If they are all smaller we can then safely
+ multiply them by a large, constant number PLL_TWOTOTHE256 (without numerical overflow)
+ that is also speced in pll.h */
+
+ scale = 1;
+ for(l = 0; scale && (l < states); l++)
+ scale = ((v[l] < PLL_MINLIKELIHOOD) && (v[l] > PLL_MINUSMINLIKELIHOOD));
+
+ if(scale)
+ {
+ for(l = 0; l < states; l++)
+ v[l] *= PLL_TWOTOTHE256;
+
+ /* if we have scaled the entries to prevent underflow, we need to keep track of how many scaling
+ multiplications we did per node such as to undo them at the virtual root, e.g., in
+ evaluateGeneric()
+ Note here, that, if we scaled the site we need to increment the scaling counter by the wieght, i.e.,
+ the number of sites this potentially compressed pattern represents ! */
+
+ if(!fastScaling)
+ ex3[i] += 1;
+ else
+ addScale += wgt[i];
+
+ }
+ }
+ break;
+ case PLL_INNER_INNER:
+
+ /* same as above, only that the two child nodes q and r are now inner nodes */
+
+ for(i = 0; i < n; i++)
+ {
+ le = &left[cptr[i] * statesSquare];
+ ri = &right[cptr[i] * statesSquare];
+
+ /* index conditional likelihood vectors of inner nodes */
+
+ vl = &x1[states * i];
+ vr = &x2[states * i];
+ v = &x3[states * i];
+
+ for(l = 0; l < states; l++)
+ v[l] = 0.0;
+
+ for(l = 0; l < states; l++)
+ {
+ ump_x1 = 0.0;
+ ump_x2 = 0.0;
+
+ for(j = 0; j < states; j++)
+ {
+ ump_x1 += vl[j] * le[l * states + j];
+ ump_x2 += vr[j] * ri[l * states + j];
+ }
+
+ x1px2 = ump_x1 * ump_x2;
+
+ for(j = 0; j < states; j++)
+ v[j] += x1px2 * extEV[l * states + j];
+ }
+
+ scale = 1;
+ for(l = 0; scale && (l < states); l++)
+ scale = ((v[l] < PLL_MINLIKELIHOOD) && (v[l] > PLL_MINUSMINLIKELIHOOD));
+
+ if(scale)
+ {
+ for(l = 0; l < states; l++)
+ v[l] *= PLL_TWOTOTHE256;
+
+ if(!fastScaling)
+ ex3[i] += 1;
+ else
+ addScale += wgt[i];
+ }
+ }
+ break;
+ default:
+ assert(0);
+ }
+
+ /* increment the scaling counter by the additional scalings done at node p */
+
+ if(fastScaling)
+ *scalerIncrement = addScale;
+}
+
+/** @brief Computation of conditional likelihood arrays for \b GAMMA
+
+ This is a generic, slow but readable function implementation for computing the
+ conditional likelihood arrays at \a p, given child nodes \a q and \a r using the \b GAMMA
+ model of rate heterogeneity. Depending whether \a q, resp. \r, are tips or internal
+ nodes (indicated by \a tipCase) the conditional likelihoods are computed based on
+ \a x1 if \a q is an inner node or \a tipX1 if it is a tip, resp. \a x2 if \a r
+ is an inner node or \a tipX2 if it is a tip. Output array \a ex3 stores the
+ number of times the likelihood of each site for each internal node has been scaled.
+ The conditional likelihood vectors for any possible base-pair (which is useful when
+ \a q or \a r are tips) has been already precomputed from the eigenvalues of the Q
+ matrix in the array \a tipVector. In case the conditional likelihood for a particular
+ site is very small in terms of a floating point number, then it is multiplied by a
+ very large number (scaling), and then number of times it has been scaled (per node) is
+ stored in the array \a ex3, if \a fastScaling is set to \b PLL_FALSE. Otherwise, the
+ total number of scalings for all sites and all nodes is stored in a single variable
+ \a scalerIncrement.
+
+ @param tipCase
+ Can be either \b PLL_TIP_TIP, or \b PLL_TIP_INNER or \b PLL_INNER_INNER, and describes the
+ descendants of the node for which we currently compute the condition likelihood
+ vector, i.e. whether they are both tips (leaves), or one is tip and the other
+ an inner node, or both are inner nodes.
+
+ @param x1
+ Conditional likelihood vectors of the first child node, in case it is an internal node
+
+ @param x2
+ Conditional likelihood vectors of the second child node, in case it is an internal node
+
+ @param x3
+ Pointer to where the computed conditional likelihood vector of node \a p will be stored
+
+ @param extEV
+ Eigenvectors of Q matrix
+
+ @param tipVector
+ Vector contining sums of left eigenvectors for likelihood computation at tips.
+
+ @param ex3
+ Pointer to an array of whose elements correspond to the number of times the likelihood of
+ a particular site of a particular internal nodeis scaled. Those elements are incremented
+ at every scaling operation and only if \a fastScaling flag is set to \b PLL_FALSE. This
+ array will be used later when evaluating the likelihood of the whole tree.
+
+ @param tipX1
+ Pointer to the alignment data (sequence) of first child node, in case it is a tip
+
+ @param tipX2
+ Pointer to the alignment data (sequence) of second child node, in case it is a tip
+
+ @param n
+ Number of sites to be processed
+
+ @param left
+ Pointer to the P matrix of the left child
+
+ @param right
+ Pointer to the P matrix of the right child
+
+ @param wgt
+ Array of weights for each site
+
+ @param scalerIncrement
+ Where to store the number of scalings carried out in case \a fastScaling is set to \b PLL_TRUE.
+
+ @param fastScaling
+ If set to \b PLL_TRUE, only the total number of scalings for all sites of the partition will be
+ stored in \a scalerIncrement, otherwise per-site scalings are stored in the array \a ex3.
+
+ @param states
+ Number of states for the particular data (4 for DNA or 20 for AA)
+
+ @param maxStateValue
+ Number of all possible base-pairs including degenerate characters, i.e. 16 for DNA and 23 for AA
+ */
+static void newviewGAMMA_FLEX(int tipCase,
+ double *x1, double *x2, double *x3, double *extEV, double *tipVector,
+ int *ex3, unsigned char *tipX1, unsigned char *tipX2,
+ int n, double *left, double *right, int *wgt, int *scalerIncrement, const boolean fastScaling, const int states, const int maxStateValue)
+{
+ double
+ *uX1,
+ *uX2,
+ *v,
+ x1px2,
+ *vl,
+ *vr,
+ al,
+ ar;
+
+ int
+ i,
+ j,
+ l,
+ k,
+ scale,
+ addScale = 0;
+
+ const int
+ statesSquare = states * states,
+ span = states * 4,
+ /* this is required for doing some pre-computations that help to save
+ numerical operations. What we are actually computing here are additional lookup tables
+ for each possible state a certain data-type can assume.
+ for DNA with ambuguity coding this is 15, for proteins this is 22 or 23, since there
+ also exist one or two amibguity codes for protein data.
+ Essentially this is very similar to the tip vectors which we also use as lookup tables */
+ precomputeLength = maxStateValue * span;
+
+ switch(tipCase)
+ {
+ case PLL_TIP_TIP:
+ {
+ /* allocate pre-compute memory space */
+
+ double
+ *umpX1 = (double*)rax_malloc(sizeof(double) * precomputeLength),
+ *umpX2 = (double*)rax_malloc(sizeof(double) * precomputeLength);
+
+ /* multiply all possible tip state vectors with the respective P-matrices
+ */
+
+ for(i = 0; i < maxStateValue; i++)
+ {
+ v = &(tipVector[states * i]);
+
+ for(k = 0; k < span; k++)
+ {
+
+ umpX1[span * i + k] = 0.0;
+ umpX2[span * i + k] = 0.0;
+
+ for(l = 0; l < states; l++)
+ {
+ umpX1[span * i + k] += v[l] * left[k * states + l];
+ umpX2[span * i + k] += v[l] * right[k * states + l];
+ }
+
+ }
+ }
+
+ for(i = 0; i < n; i++)
+ {
+ /* access the precomputed arrays (pre-computed multiplication of conditional with the tip state)
+ */
+
+ uX1 = &umpX1[span * tipX1[i]];
+ uX2 = &umpX2[span * tipX2[i]];
+
+ /* loop over discrete GAMMA rates */
+
+ for(j = 0; j < 4; j++)
+ {
+ /* the rest is the same as for CAT */
+ v = &x3[i * span + j * states];
+
+ for(k = 0; k < states; k++)
+ v[k] = 0.0;
+
+ for(k = 0; k < states; k++)
+ {
+ x1px2 = uX1[j * states + k] * uX2[j * states + k];
+
+ for(l = 0; l < states; l++)
+ v[l] += x1px2 * extEV[states * k + l];
+ }
+
+ }
+ }
+
+ /* free precomputed vectors */
+
+ rax_free(umpX1);
+ rax_free(umpX2);
+ }
+ break;
+ case PLL_TIP_INNER:
+ {
+ /* we do analogous pre-computations as above, with the only difference that we now do them
+ only for one tip vector */
+
+ double
+ *umpX1 = (double*)rax_malloc(sizeof(double) * precomputeLength),
+ *ump_x2 = (double*)rax_malloc(sizeof(double) * states);
+
+ /* precompute P and left tip vector product */
+
+ for(i = 0; i < maxStateValue; i++)
+ {
+ v = &(tipVector[states * i]);
+
+ for(k = 0; k < span; k++)
+ {
+
+ umpX1[span * i + k] = 0.0;
+
+ for(l = 0; l < states; l++)
+ umpX1[span * i + k] += v[l] * left[k * states + l];
+
+
+ }
+ }
+
+ for (i = 0; i < n; i++)
+ {
+ /* access pre-computed value based on the raw sequence data tipX1 that is used as an index */
+
+ uX1 = &umpX1[span * tipX1[i]];
+
+ /* loop over discrete GAMMA rates */
+
+ for(k = 0; k < 4; k++)
+ {
+ v = &(x2[span * i + k * states]);
+
+ for(l = 0; l < states; l++)
+ {
+ ump_x2[l] = 0.0;
+
+ for(j = 0; j < states; j++)
+ ump_x2[l] += v[j] * right[k * statesSquare + l * states + j];
+ }
+
+ v = &(x3[span * i + states * k]);
+
+ for(l = 0; l < states; l++)
+ v[l] = 0;
+
+ for(l = 0; l < states; l++)
+ {
+ x1px2 = uX1[k * states + l] * ump_x2[l];
+ for(j = 0; j < states; j++)
+ v[j] += x1px2 * extEV[l * states + j];
+ }
+ }
+
+ /* also do numerical scaling as above. Note that here we need to scale
+ 4 * 4 values for DNA or 4 * 20 values for protein data.
+ If they are ALL smaller than our threshold, we scale. Note that,
+ this can cause numerical problems with GAMMA, if the values generated
+ by the four discrete GAMMA rates are too different.
+
+ For details, see:
+
+ F. Izquierdo-Carrasco, S.A. Smith, A. Stamatakis: "Algorithms, Data Structures, and Numerics for Likelihood-based Phylogenetic Inference of Huge Trees"
+
+*/
+
+
+ v = &x3[span * i];
+ scale = 1;
+ for(l = 0; scale && (l < span); l++)
+ scale = (PLL_ABS(v[l]) < PLL_MINLIKELIHOOD);
+
+
+ if (scale)
+ {
+ for(l = 0; l < span; l++)
+ v[l] *= PLL_TWOTOTHE256;
+
+ if(!fastScaling)
+ ex3[i] += 1;
+ else
+ addScale += wgt[i];
+ }
+ }
+
+ rax_free(umpX1);
+ rax_free(ump_x2);
+ }
+ break;
+ case PLL_INNER_INNER:
+
+ /* same as above, without pre-computations */
+
+ for (i = 0; i < n; i++)
+ {
+ for(k = 0; k < 4; k++)
+ {
+ vl = &(x1[span * i + states * k]);
+ vr = &(x2[span * i + states * k]);
+ v = &(x3[span * i + states * k]);
+
+
+ for(l = 0; l < states; l++)
+ v[l] = 0;
+
+
+ for(l = 0; l < states; l++)
+ {
+
+ al = 0.0;
+ ar = 0.0;
+
+ for(j = 0; j < states; j++)
+ {
+ al += vl[j] * left[k * statesSquare + l * states + j];
+ ar += vr[j] * right[k * statesSquare + l * states + j];
+ }
+
+ x1px2 = al * ar;
+
+ for(j = 0; j < states; j++)
+ v[j] += x1px2 * extEV[states * l + j];
+
+ }
+ }
+
+ v = &(x3[span * i]);
+ scale = 1;
+ for(l = 0; scale && (l < span); l++)
+ scale = ((PLL_ABS(v[l]) < PLL_MINLIKELIHOOD));
+
+ if(scale)
+ {
+ for(l = 0; l < span; l++)
+ v[l] *= PLL_TWOTOTHE256;
+
+ if(!fastScaling)
+ ex3[i] += 1;
+ else
+ addScale += wgt[i];
+ }
+ }
+ break;
+ default:
+ assert(0);
+ }
+
+ /* as above, increment the global counter that counts scaling multiplications by the scaling multiplications
+ carried out for computing the likelihood array at node p */
+
+ if(fastScaling)
+ *scalerIncrement = addScale;
+}
+
+
+/* Candidate for deletion */
+/*
+static void newviewGTRCAT( int tipCase, double *EV, int *cptr,
+ double *x1_start, double *x2_start, double *x3_start, double *tipVector,
+ int *ex3, unsigned char *tipX1, unsigned char *tipX2,
+ int n, double *left, double *right, int *wgt, int *scalerIncrement, const boolean useFastScaling)
+{
+ double
+ *le,
+ *ri,
+ *x1, *x2, *x3;
+ double
+ ump_x1, ump_x2, x1px2[4];
+ int i, j, k, scale, addScale = 0;
+
+ switch(tipCase)
+ {
+ case PLL_TIP_TIP:
+ {
+ for (i = 0; i < n; i++)
+ {
+ x1 = &(tipVector[4 * tipX1[i]]);
+ x2 = &(tipVector[4 * tipX2[i]]);
+ x3 = &x3_start[4 * i];
+
+ le = &left[cptr[i] * 16];
+ ri = &right[cptr[i] * 16];
+
+ for(j = 0; j < 4; j++)
+ {
+ ump_x1 = 0.0;
+ ump_x2 = 0.0;
+ for(k = 0; k < 4; k++)
+ {
+ ump_x1 += x1[k] * le[j * 4 + k];
+ ump_x2 += x2[k] * ri[j * 4 + k];
+ }
+ x1px2[j] = ump_x1 * ump_x2;
+ }
+
+ for(j = 0; j < 4; j++)
+ x3[j] = 0.0;
+
+ for(j = 0; j < 4; j++)
+ for(k = 0; k < 4; k++)
+ x3[k] += x1px2[j] * EV[j * 4 + k];
+ }
+ }
+ break;
+ case PLL_TIP_INNER:
+ {
+ for (i = 0; i < n; i++)
+ {
+ x1 = &(tipVector[4 * tipX1[i]]);
+ x2 = &x2_start[4 * i];
+ x3 = &x3_start[4 * i];
+
+ le = &left[cptr[i] * 16];
+ ri = &right[cptr[i] * 16];
+
+ for(j = 0; j < 4; j++)
+ {
+ ump_x1 = 0.0;
+ ump_x2 = 0.0;
+ for(k = 0; k < 4; k++)
+ {
+ ump_x1 += x1[k] * le[j * 4 + k];
+ ump_x2 += x2[k] * ri[j * 4 + k];
+ }
+ x1px2[j] = ump_x1 * ump_x2;
+ }
+
+ for(j = 0; j < 4; j++)
+ x3[j] = 0.0;
+
+ for(j = 0; j < 4; j++)
+ for(k = 0; k < 4; k++)
+ x3[k] += x1px2[j] * EV[4 * j + k];
+
+ scale = 1;
+ for(j = 0; j < 4 && scale; j++)
+ scale = (x3[j] < PLL_MINLIKELIHOOD && x3[j] > PLL_MINUSMINLIKELIHOOD);
+
+ if(scale)
+ {
+ for(j = 0; j < 4; j++)
+ x3[j] *= PLL_TWOTOTHE256;
+
+ if(useFastScaling)
+ addScale += wgt[i];
+ else
+ ex3[i] += 1;
+ }
+ }
+ }
+ break;
+ case PLL_INNER_INNER:
+ for (i = 0; i < n; i++)
+ {
+ x1 = &x1_start[4 * i];
+ x2 = &x2_start[4 * i];
+ x3 = &x3_start[4 * i];
+
+ le = &left[cptr[i] * 16];
+ ri = &right[cptr[i] * 16];
+
+ for(j = 0; j < 4; j++)
+ {
+ ump_x1 = 0.0;
+ ump_x2 = 0.0;
+ for(k = 0; k < 4; k++)
+ {
+ ump_x1 += x1[k] * le[j * 4 + k];
+ ump_x2 += x2[k] * ri[j * 4 + k];
+ }
+ x1px2[j] = ump_x1 * ump_x2;
+ }
+
+ for(j = 0; j < 4; j++)
+ x3[j] = 0.0;
+
+ for(j = 0; j < 4; j++)
+ for(k = 0; k < 4; k++)
+ x3[k] += x1px2[j] * EV[4 * j + k];
+
+ scale = 1;
+ for(j = 0; j < 4 && scale; j++)
+ scale = (x3[j] < PLL_MINLIKELIHOOD && x3[j] > PLL_MINUSMINLIKELIHOOD);
+
+ if(scale)
+ {
+ for(j = 0; j < 4; j++)
+ x3[j] *= PLL_TWOTOTHE256;
+
+ if(useFastScaling)
+ addScale += wgt[i];
+ else
+ ex3[i] += 1;
+ }
+ }
+ break;
+ default:
+ assert(0);
+ }
+
+ if(useFastScaling)
+ *scalerIncrement = addScale;
+
+}
+*/
+#if 0
+static void newviewGTRGAMMA_BINARY(int tipCase,
+ double *x1_start, double *x2_start, double *x3_start,
+ double *EV, double *tipVector,
+ int *ex3, unsigned char *tipX1, unsigned char *tipX2,
+ const int n, double *left, double *right, int *wgt, int *scalerIncrement, const boolean useFastScaling
+ )
+{
+ double
+ *x1, *x2, *x3;
+ double
+ ump_x1,
+ ump_x2,
+ x1px2[4];
+ int i, j, k, l, scale, addScale = 0;
+
+
+ /* C-OPT figure out if we are at an inner node who has two tips/leaves
+ as descendants TIP_TIP, a tip and another inner node as descendant
+ TIP_INNER, or two inner nodes as descendants INNER_INNER */
+
+ switch(tipCase)
+ {
+ case PLL_TIP_TIP:
+ {
+ for (i = 0; i < n; i++)
+ {
+ x1 = &(tipVector[2 * tipX1[i]]);
+ x2 = &(tipVector[2 * tipX2[i]]);
+ x3 = &x3_start[i * 8];
+
+ for(j = 0; j < 8; j++)
+ x3[j] = 0.0;
+
+ for (j = 0; j < 4; j++)
+ {
+ for (k = 0; k < 2; k++)
+ {
+ ump_x1 = 0.0;
+ ump_x2 = 0.0;
+
+ for (l=0; l < 2; l++)
+ {
+ ump_x1 += x1[l] * left[ j*4 + k*2 + l];
+ ump_x2 += x2[l] * right[j*4 + k*2 + l];
+ }
+
+ x1px2[k] = ump_x1 * ump_x2;
+ }
+
+ for(k = 0; k < 2; k++)
+ for (l = 0; l < 2; l++)
+ x3[j * 2 + l] += x1px2[k] * EV[2 * k + l];
+
+ }
+ }
+ }
+ break;
+ case PLL_TIP_INNER:
+ {
+ for (i = 0; i < n; i++)
+ {
+ x1 = &(tipVector[2 * tipX1[i]]);
+ x2 = &x2_start[i * 8];
+ x3 = &x3_start[i * 8];
+
+ for(j = 0; j < 8; j++)
+ x3[j] = 0.0;
+
+ for (j = 0; j < 4; j++)
+ {
+ for (k = 0; k < 2; k++)
+ {
+ ump_x1 = 0.0;
+ ump_x2 = 0.0;
+
+ for (l=0; l < 2; l++)
+ {
+ ump_x1 += x1[l] * left[ j*4 + k*2 + l];
+ ump_x2 += x2[j*2 + l] * right[j*4 + k*2 + l];
+ }
+
+ x1px2[k] = ump_x1 * ump_x2;
+ }
+
+ for(k = 0; k < 2; k++)
+ for (l = 0; l < 2; l++)
+ x3[j * 2 + l] += x1px2[k] * EV[2 * k + l];
+
+ }
+
+ scale = 1;
+ for(l = 0; scale && (l < 8); l++)
+ scale = (PLL_ABS(x3[l]) < PLL_MINLIKELIHOOD);
+
+ if(scale)
+ {
+ for (l=0; l < 8; l++)
+ x3[l] *= PLL_TWOTOTHE256;
+
+ if(useFastScaling)
+ addScale += wgt[i];
+ else
+ ex3[i] += 1;
+ }
+
+ }
+ }
+ break;
+ case PLL_INNER_INNER:
+
+ /* C-OPT here we don't do any pre-computations
+ This should be the most compute intensive loop of the three
+ cases here. If we have one or two tips as descendants
+ we can take a couple of shortcuts */
+
+
+ for (i = 0; i < n; i++)
+ {
+ x1 = &x1_start[i * 8];
+ x2 = &x2_start[i * 8];
+ x3 = &x3_start[i * 8];
+
+ for(j = 0; j < 8; j++)
+ x3[j] = 0.0;
+
+ for (j = 0; j < 4; j++)
+ {
+ for (k = 0; k < 2; k++)
+ {
+ ump_x1 = 0.0;
+ ump_x2 = 0.0;
+
+ for (l=0; l < 2; l++)
+ {
+ ump_x1 += x1[j*2 + l] * left[ j*4 + k*2 + l];
+ ump_x2 += x2[j*2 + l] * right[j*4 + k*2 + l];
+ }
+
+ x1px2[k] = ump_x1 * ump_x2;
+ }
+
+ for(k = 0; k < 2; k++)
+ for (l = 0; l < 2; l++)
+ x3[j * 2 + l] += x1px2[k] * EV[2 * k + l];
+
+ }
+
+ scale = 1;
+ for(l = 0; scale && (l < 8); l++)
+ scale = (PLL_ABS(x3[l]) < PLL_MINLIKELIHOOD);
+
+
+ if(scale)
+ {
+ for (l=0; l<8; l++)
+ x3[l] *= PLL_TWOTOTHE256;
+
+ if(useFastScaling)
+ addScale += wgt[i];
+ else
+ ex3[i] += 1;
+ }
+ }
+ break;
+
+ default:
+ assert(0);
+ }
+
+ if(useFastScaling)
+ *scalerIncrement = addScale;
+
+}
+
+static void newviewGTRCAT_BINARY( int tipCase, double *EV, int *cptr,
+ double *x1_start, double *x2_start, double *x3_start, double *tipVector,
+ int *ex3, unsigned char *tipX1, unsigned char *tipX2,
+ int n, double *left, double *right, int *wgt, int *scalerIncrement, const boolean useFastScaling)
+{
+ double
+ *le,
+ *ri,
+ *x1, *x2, *x3;
+ double
+ ump_x1, ump_x2, x1px2[2];
+ int i, j, k, scale, addScale = 0;
+
+ switch(tipCase)
+ {
+ case PLL_TIP_TIP:
+ {
+ for (i = 0; i < n; i++)
+ {
+ x1 = &(tipVector[2 * tipX1[i]]);
+ x2 = &(tipVector[2 * tipX2[i]]);
+ x3 = &x3_start[2 * i];
+
+ le = &left[cptr[i] * 4];
+ ri = &right[cptr[i] * 4];
+
+ for(j = 0; j < 2; j++)
+ {
+ ump_x1 = 0.0;
+ ump_x2 = 0.0;
+ for(k = 0; k < 2; k++)
+ {
+ ump_x1 += x1[k] * le[j * 2 + k];
+ ump_x2 += x2[k] * ri[j * 2 + k];
+ }
+ x1px2[j] = ump_x1 * ump_x2;
+ }
+
+ for(j = 0; j < 2; j++)
+ x3[j] = 0.0;
+
+ for(j = 0; j < 2; j++)
+ for(k = 0; k < 2; k++)
+ x3[k] += x1px2[j] * EV[j * 2 + k];
+ }
+ }
+ break;
+ case PLL_TIP_INNER:
+ {
+ for (i = 0; i < n; i++)
+ {
+ x1 = &(tipVector[2 * tipX1[i]]);
+ x2 = &x2_start[2 * i];
+ x3 = &x3_start[2 * i];
+
+ le = &left[cptr[i] * 4];
+ ri = &right[cptr[i] * 4];
+
+ for(j = 0; j < 2; j++)
+ {
+ ump_x1 = 0.0;
+ ump_x2 = 0.0;
+ for(k = 0; k < 2; k++)
+ {
+ ump_x1 += x1[k] * le[j * 2 + k];
+ ump_x2 += x2[k] * ri[j * 2 + k];
+ }
+ x1px2[j] = ump_x1 * ump_x2;
+ }
+
+ for(j = 0; j < 2; j++)
+ x3[j] = 0.0;
+
+ for(j = 0; j < 2; j++)
+ for(k = 0; k < 2; k++)
+ x3[k] += x1px2[j] * EV[2 * j + k];
+
+ scale = 1;
+ for(j = 0; j < 2 && scale; j++)
+ scale = (x3[j] < PLL_MINLIKELIHOOD && x3[j] > PLL_MINUSMINLIKELIHOOD);
+
+ if(scale)
+ {
+ for(j = 0; j < 2; j++)
+ x3[j] *= PLL_TWOTOTHE256;
+
+ if(useFastScaling)
+ addScale += wgt[i];
+ else
+ ex3[i] += 1;
+ }
+ }
+ }
+ break;
+ case PLL_INNER_INNER:
+ for (i = 0; i < n; i++)
+ {
+ x1 = &x1_start[2 * i];
+ x2 = &x2_start[2 * i];
+ x3 = &x3_start[2 * i];
+
+ le = &left[cptr[i] * 4];
+ ri = &right[cptr[i] * 4];
+
+ for(j = 0; j < 2; j++)
+ {
+ ump_x1 = 0.0;
+ ump_x2 = 0.0;
+ for(k = 0; k < 2; k++)
+ {
+ ump_x1 += x1[k] * le[j * 2 + k];
+ ump_x2 += x2[k] * ri[j * 2 + k];
+ }
+ x1px2[j] = ump_x1 * ump_x2;
+ }
+
+ for(j = 0; j < 2; j++)
+ x3[j] = 0.0;
+
+ for(j = 0; j < 2; j++)
+ for(k = 0; k < 2; k++)
+ x3[k] += x1px2[j] * EV[2 * j + k];
+
+ scale = 1;
+ for(j = 0; j < 2 && scale; j++)
+ scale = (x3[j] < PLL_MINLIKELIHOOD && x3[j] > PLL_MINUSMINLIKELIHOOD);
+
+ if(scale)
+ {
+ for(j = 0; j < 2; j++)
+ x3[j] *= PLL_TWOTOTHE256;
+
+ if(useFastScaling)
+ addScale += wgt[i];
+ else
+ ex3[i] += 1;
+ }
+ }
+ break;
+ default:
+ assert(0);
+ }
+
+ if(useFastScaling)
+ *scalerIncrement = addScale;
+
+}
+#endif /* end if 0 */
+#endif
+
+#if (defined(__AVX) || defined(__SSE3))
+static void newviewGTRCAT_BINARY( int tipCase, double *EV, int *cptr,
+ double *x1_start, double *x2_start, double *x3_start, double *tipVector,
+ int *ex3, unsigned char *tipX1, unsigned char *tipX2,
+ int n, double *left, double *right, int *wgt, int *scalerIncrement, const boolean useFastScaling)
+{
+ double
+ *le,
+ *ri,
+ *x1, *x2, *x3;
+ int i, l, scale, addScale = 0;
+
+ switch(tipCase)
+ {
+ case PLL_TIP_TIP:
+ {
+ for(i = 0; i < n; i++)
+ {
+ x1 = &(tipVector[2 * tipX1[i]]);
+ x2 = &(tipVector[2 * tipX2[i]]);
+ x3 = &x3_start[2 * i];
+
+ le = &left[cptr[i] * 4];
+ ri = &right[cptr[i] * 4];
+
+ _mm_store_pd(x3, _mm_setzero_pd());
+
+ for(l = 0; l < 2; l++)
+ {
+ __m128d al = _mm_mul_pd(_mm_load_pd(x1), _mm_load_pd(&le[l * 2]));
+ __m128d ar = _mm_mul_pd(_mm_load_pd(x2), _mm_load_pd(&ri[l * 2]));
+
+ al = _mm_hadd_pd(al, al);
+ ar = _mm_hadd_pd(ar, ar);
+
+ al = _mm_mul_pd(al, ar);
+
+ __m128d vv = _mm_load_pd(x3);
+ __m128d EVV = _mm_load_pd(&EV[2 * l]);
+
+ vv = _mm_add_pd(vv, _mm_mul_pd(al, EVV));
+
+ _mm_store_pd(x3, vv);
+ }
+ }
+ }
+ break;
+ case PLL_TIP_INNER:
+ {
+ for (i = 0; i < n; i++)
+ {
+ x1 = &(tipVector[2 * tipX1[i]]);
+ x2 = &x2_start[2 * i];
+ x3 = &x3_start[2 * i];
+
+ le = &left[cptr[i] * 4];
+ ri = &right[cptr[i] * 4];
+
+ _mm_store_pd(x3, _mm_setzero_pd());
+
+ for(l = 0; l < 2; l++)
+ {
+ __m128d al = _mm_mul_pd(_mm_load_pd(x1), _mm_load_pd(&le[l * 2]));
+ __m128d ar = _mm_mul_pd(_mm_load_pd(x2), _mm_load_pd(&ri[l * 2]));
+
+ al = _mm_hadd_pd(al, al);
+ ar = _mm_hadd_pd(ar, ar);
+
+ al = _mm_mul_pd(al, ar);
+
+ __m128d vv = _mm_load_pd(x3);
+ __m128d EVV = _mm_load_pd(&EV[2 * l]);
+
+ vv = _mm_add_pd(vv, _mm_mul_pd(al, EVV));
+
+ _mm_store_pd(x3, vv);
+ }
+
+ __m128d minlikelihood_sse = _mm_set1_pd(PLL_MINLIKELIHOOD);
+
+ scale = 1;
+
+ __m128d v1 = _mm_and_pd(_mm_load_pd(x3), absMask.m);
+ v1 = _mm_cmplt_pd(v1, minlikelihood_sse);
+ if(_mm_movemask_pd( v1 ) != 3)
+ scale = 0;
+
+ if(scale)
+ {
+ __m128d twoto = _mm_set_pd(PLL_TWOTOTHE256, PLL_TWOTOTHE256);
+
+ __m128d ex3v = _mm_load_pd(x3);
+ _mm_store_pd(x3, _mm_mul_pd(ex3v,twoto));
+
+ if(useFastScaling)
+ addScale += wgt[i];
+ else
+ ex3[i] += 1;
+ }
+ }
+ }
+ break;
+ case PLL_INNER_INNER:
+ for (i = 0; i < n; i++)
+ {
+ x1 = &x1_start[2 * i];
+ x2 = &x2_start[2 * i];
+ x3 = &x3_start[2 * i];
+
+ le = &left[cptr[i] * 4];
+ ri = &right[cptr[i] * 4];
+
+ _mm_store_pd(x3, _mm_setzero_pd());
+
+ for(l = 0; l < 2; l++)
+ {
+ __m128d al = _mm_mul_pd(_mm_load_pd(x1), _mm_load_pd(&le[l * 2]));
+ __m128d ar = _mm_mul_pd(_mm_load_pd(x2), _mm_load_pd(&ri[l * 2]));
+
+ al = _mm_hadd_pd(al, al);
+ ar = _mm_hadd_pd(ar, ar);
+
+ al = _mm_mul_pd(al, ar);
+
+ __m128d vv = _mm_load_pd(x3);
+ __m128d EVV = _mm_load_pd(&EV[2 * l]);
+
+ vv = _mm_add_pd(vv, _mm_mul_pd(al, EVV));
+
+ _mm_store_pd(x3, vv);
+ }
+
+ __m128d minlikelihood_sse = _mm_set1_pd(PLL_MINLIKELIHOOD);
+
+ scale = 1;
+
+ __m128d v1 = _mm_and_pd(_mm_load_pd(x3), absMask.m);
+ v1 = _mm_cmplt_pd(v1, minlikelihood_sse);
+ if(_mm_movemask_pd( v1 ) != 3)
+ scale = 0;
+
+ if(scale)
+ {
+ __m128d twoto = _mm_set_pd(PLL_TWOTOTHE256, PLL_TWOTOTHE256);
+
+ __m128d ex3v = _mm_load_pd(x3);
+ _mm_store_pd(x3, _mm_mul_pd(ex3v,twoto));
+
+ if(useFastScaling)
+ addScale += wgt[i];
+ else
+ ex3[i] += 1;
+ }
+ }
+ break;
+ default:
+ assert(0);
+ }
+
+ if(useFastScaling)
+ *scalerIncrement = addScale;
+
+}
+
+static void newviewGTRGAMMA_BINARY(int tipCase,
+ double *x1_start, double *x2_start, double *x3_start,
+ double *EV, double *tipVector,
+ int *ex3, unsigned char *tipX1, unsigned char *tipX2,
+ const int n, double *left, double *right, int *wgt, int *scalerIncrement, const boolean useFastScaling
+ )
+{
+ double
+ *x1, *x2, *x3;
+
+ int i, k, l, scale, addScale = 0;
+
+ switch(tipCase)
+ {
+ case PLL_TIP_TIP:
+ for (i = 0; i < n; i++)
+ {
+ x1 = &(tipVector[2 * tipX1[i]]);
+ x2 = &(tipVector[2 * tipX2[i]]);
+
+ for(k = 0; k < 4; k++)
+ {
+ x3 = &(x3_start[8 * i + 2 * k]);
+
+ _mm_store_pd(x3, _mm_setzero_pd());
+
+ for(l = 0; l < 2; l++)
+ {
+ __m128d al = _mm_mul_pd(_mm_load_pd(x1), _mm_load_pd(&left[k * 4 + l * 2]));
+ __m128d ar = _mm_mul_pd(_mm_load_pd(x2), _mm_load_pd(&right[k * 4 + l * 2]));
+
+ al = _mm_hadd_pd(al, al);
+ ar = _mm_hadd_pd(ar, ar);
+
+ al = _mm_mul_pd(al, ar);
+
+ __m128d vv = _mm_load_pd(x3);
+ __m128d EVV = _mm_load_pd(&EV[2 * l]);
+
+ vv = _mm_add_pd(vv, _mm_mul_pd(al, EVV));
+
+ _mm_store_pd(x3, vv);
+ }
+ }
+ }
+ break;
+ case PLL_TIP_INNER:
+ for (i = 0; i < n; i++)
+ {
+ x1 = &(tipVector[2 * tipX1[i]]);
+
+ for(k = 0; k < 4; k++)
+ {
+ x2 = &(x2_start[8 * i + 2 * k]);
+ x3 = &(x3_start[8 * i + 2 * k]);
+
+ _mm_store_pd(x3, _mm_setzero_pd());
+
+ for(l = 0; l < 2; l++)
+ {
+ __m128d al = _mm_mul_pd(_mm_load_pd(x1), _mm_load_pd(&left[k * 4 + l * 2]));
+ __m128d ar = _mm_mul_pd(_mm_load_pd(x2), _mm_load_pd(&right[k * 4 + l * 2]));
+
+ al = _mm_hadd_pd(al, al);
+ ar = _mm_hadd_pd(ar, ar);
+
+ al = _mm_mul_pd(al, ar);
+
+ __m128d vv = _mm_load_pd(x3);
+ __m128d EVV = _mm_load_pd(&EV[2 * l]);
+
+ vv = _mm_add_pd(vv, _mm_mul_pd(al, EVV));
+
+ _mm_store_pd(x3, vv);
+ }
+ }
+
+ x3 = &(x3_start[8 * i]);
+ __m128d minlikelihood_sse = _mm_set1_pd( PLL_MINLIKELIHOOD );
+
+ scale = 1;
+ for(l = 0; scale && (l < 8); l += 2)
+ {
+ __m128d vv = _mm_load_pd(&x3[l]);
+ __m128d v1 = _mm_and_pd(vv, absMask.m);
+ v1 = _mm_cmplt_pd(v1, minlikelihood_sse);
+ if(_mm_movemask_pd( v1 ) != 3)
+ scale = 0;
+ }
+
+ if(scale)
+ {
+ __m128d twoto = _mm_set_pd(PLL_TWOTOTHE256, PLL_TWOTOTHE256);
+
+ for(l = 0; l < 8; l+=2)
+ {
+ __m128d ex3v = _mm_load_pd(&x3[l]);
+ _mm_store_pd(&x3[l], _mm_mul_pd(ex3v,twoto));
+ }
+
+ if(useFastScaling)
+ addScale += wgt[i];
+ else
+ ex3[i] += 1;
+ }
+ }
+ break;
+ case PLL_INNER_INNER:
+ for (i = 0; i < n; i++)
+ {
+ for(k = 0; k < 4; k++)
+ {
+ x1 = &(x1_start[8 * i + 2 * k]);
+ x2 = &(x2_start[8 * i + 2 * k]);
+ x3 = &(x3_start[8 * i + 2 * k]);
+
+ _mm_store_pd(x3, _mm_setzero_pd());
+
+ for(l = 0; l < 2; l++)
+ {
+ __m128d al = _mm_mul_pd(_mm_load_pd(x1), _mm_load_pd(&left[k * 4 + l * 2]));
+ __m128d ar = _mm_mul_pd(_mm_load_pd(x2), _mm_load_pd(&right[k * 4 + l * 2]));
+
+ al = _mm_hadd_pd(al, al);
+ ar = _mm_hadd_pd(ar, ar);
+
+ al = _mm_mul_pd(al, ar);
+
+ __m128d vv = _mm_load_pd(x3);
+ __m128d EVV = _mm_load_pd(&EV[2 * l]);
+
+ vv = _mm_add_pd(vv, _mm_mul_pd(al, EVV));
+
+ _mm_store_pd(x3, vv);
+ }
+ }
+
+ x3 = &(x3_start[8 * i]);
+ __m128d minlikelihood_sse = _mm_set1_pd( PLL_MINLIKELIHOOD );
+
+ scale = 1;
+ for(l = 0; scale && (l < 8); l += 2)
+ {
+ __m128d vv = _mm_load_pd(&x3[l]);
+ __m128d v1 = _mm_and_pd(vv, absMask.m);
+ v1 = _mm_cmplt_pd(v1, minlikelihood_sse);
+ if(_mm_movemask_pd( v1 ) != 3)
+ scale = 0;
+ }
+
+ if(scale)
+ {
+ __m128d twoto = _mm_set_pd(PLL_TWOTOTHE256, PLL_TWOTOTHE256);
+
+ for(l = 0; l < 8; l+=2)
+ {
+ __m128d ex3v = _mm_load_pd(&x3[l]);
+ _mm_store_pd(&x3[l], _mm_mul_pd(ex3v,twoto));
+ }
+
+ if(useFastScaling)
+ addScale += wgt[i];
+ else
+ ex3[i] += 1;
+ }
+ }
+ break;
+
+ default:
+ assert(0);
+ }
+
+ if(useFastScaling)
+ *scalerIncrement = addScale;
+
+}
+
+
+#endif
+
+
+
+
+/* The function below computes partial traversals only down to the point/node in the tree where the
+ conditional likelihhod vector summarizing a subtree is already oriented in the correct direction */
+
+
+/** @brief Compute a partial or full traversal descriptor for a subtree of the topology
+
+ Unless the \a partialTraversal is set to \b PLL_TRUE, compute a partial traversal descriptor down
+ to the point/node in the tree where the conditional likelihood vector representing a subtree is
+ already oriented in the correct direction. The elements of the traversal descriptor are stored in
+ \a ti and a \a counter keeps track of the number of elements.
+
+ @param p
+ Root of the subtree for which we want to compute the traversal descriptor. The two descendents are \a p->next->back and \a p->next->next->back
+
+ @param ti
+i Traversal descriptor element structure
+
+ @param counter
+ Number of elements in the traversal descriptor. Updated when an element is added
+
+ @param maxTips
+ Number of tips in the tree structure
+
+ @param numBranches
+ Number of branches
+
+ @param partialTraversal
+ If \b PLL_TRUE, a partial traversal descriptor is computed, otherwise a full
+
+ @param rvec
+ Parameter concerning ancestral state recomputation. Please document
+
+ @param useRecom
+ If \b PLL_TRUE, then ancestral state recomputation is enabled.
+
+ @todo Fill in the ancestral recomputation parameter information
+ */
+static void computeTraversalInfo(nodeptr p, traversalInfo *ti, int *counter, int maxTips, int numBranches, boolean partialTraversal, recompVectors *rvec, boolean useRecom)
+{
+ /* if it's a tip we don't do anything */
+
+ if(isTip(p->number, maxTips))
+ return;
+
+ {
+ int
+ i;
+
+ /* recom default values */
+ int slot = -1,
+ unpin1 = -1,
+ unpin2 = -1;
+ /* get the left and right descendants */
+
+ nodeptr
+ q = p->next->back,
+ r = p->next->next->back;
+
+ /* if the left and right children are tips there is not that much to do */
+ if(isTip(r->number, maxTips) && isTip(q->number, maxTips))
+ {
+ /* fix the orientation of p->x */
+
+ if (! p->x)
+ getxnode(p);
+
+ assert(p->x);
+
+ /* add the current node triplet p,q,r to the traversal descriptor */
+ ti[*counter].tipCase = PLL_TIP_TIP;
+ ti[*counter].pNumber = p->number;
+ ti[*counter].qNumber = q->number;
+ ti[*counter].rNumber = r->number;
+
+
+ /* copy branches to traversal descriptor */
+ for(i = 0; i < numBranches; i++)
+ {
+ ti[*counter].qz[i] = q->z[i];
+ ti[*counter].rz[i] = r->z[i];
+ }
+
+ /* recom - add the slot to the traversal descriptor */
+ if(useRecom)
+ {
+ getxVector(rvec, p->number, &slot, maxTips);
+ ti[*counter].slot_p = slot;
+ ti[*counter].slot_q = -1;
+ ti[*counter].slot_r = -1;
+ }
+
+ /* increment length counter */
+
+ *counter = *counter + 1;
+ }
+ else
+ {
+ /* if either r or q are tips, flip them to make sure that the tip data is stored
+ for q */
+ if(isTip(r->number, maxTips) || isTip(q->number, maxTips))
+ {
+ if(isTip(r->number, maxTips))
+ {
+ nodeptr
+ tmp = r;
+ r = q;
+ q = tmp;
+ }
+
+
+ /* if the orientation of the liklihood vector at r is not correct we need to re-compute it
+ and descend into its subtree to figure out if there are more vrctors in there to re-compute and
+ re-orient */
+
+ if(needsRecomp(useRecom, rvec, r, maxTips) || !partialTraversal)
+ computeTraversalInfo(r, ti, counter, maxTips, numBranches, partialTraversal, rvec, useRecom);
+ else
+ {
+ if(useRecom)
+ /* the node is available, now make sure it will not be unpinned until it is read */
+ protectNode(rvec, r->number, maxTips);
+ }
+ /* Now that r is oriented, we can safely set the orientation of p */
+ if(! p->x)
+ getxnode(p);
+
+ /* make sure that everything is consistent now */
+
+ assert(p->x && r->x);
+
+ /* store data for p, q, r in the traversal descriptor */
+
+ ti[*counter].tipCase = PLL_TIP_INNER;
+ ti[*counter].pNumber = p->number;
+ ti[*counter].qNumber = q->number;
+ ti[*counter].rNumber = r->number;
+
+ for(i = 0; i < numBranches; i++)
+ {
+ ti[*counter].qz[i] = q->z[i];
+ ti[*counter].rz[i] = r->z[i];
+ }
+
+ if(useRecom)
+ {
+ getxVector(rvec, r->number, &slot, maxTips);
+ ti[*counter].slot_r = slot;
+
+ getxVector(rvec, p->number, &slot, maxTips);
+ ti[*counter].slot_p = slot;
+
+ ti[*counter].slot_q = -1;
+
+ unpin2 = r->number; /* when PLL_TIP_INNER finishes, the INNER input vector r can be unpinned*/
+ }
+
+ *counter = *counter + 1;
+ }
+ else
+ {
+ /* same as above, only now q and r are inner nodes. Hence if they are not
+ oriented correctly they will need to be recomputed and we need to descend into the
+ respective subtrees to check if everything is consistent in there, potentially expanding
+ the traversal descriptor */
+ if(( useRecom && (!partialTraversal) ) ||
+ ( useRecom && needsRecomp(useRecom, rvec, q, maxTips) && needsRecomp(useRecom, rvec, r, maxTips) ))
+ {
+ /* PLL_INNER_INNER and recomputation implies that the order we descend q and r matters,
+ * if we are in a partial traversal, this is only relevant if both require recomputation
+ * see TODOFER add ref. */
+
+ int q_stlen = rvec->stlen[q->number - maxTips - 1],
+ r_stlen = rvec->stlen[q->number - maxTips - 1];
+ assert(q_stlen >= 2 && q_stlen <= maxTips - 1);
+ assert(r_stlen >= 2 && r_stlen <= maxTips - 1);
+
+ if(q_stlen > r_stlen)
+ {
+ computeTraversalInfo(q, ti, counter, maxTips, numBranches, partialTraversal, rvec, useRecom);
+ computeTraversalInfo(r, ti, counter, maxTips, numBranches, partialTraversal, rvec, useRecom);
+ }
+ else
+ {
+ computeTraversalInfo(r, ti, counter, maxTips, numBranches, partialTraversal, rvec, useRecom);
+ computeTraversalInfo(q, ti, counter, maxTips, numBranches, partialTraversal, rvec, useRecom);
+ }
+ }
+ else
+ {
+ /* Now the order does not matter */
+ /* If we are in a recomputation and partial, only either q or r will be descended */
+
+ if(!partialTraversal || needsRecomp(useRecom, rvec, q, maxTips))
+ computeTraversalInfo(q, ti, counter, maxTips, numBranches, partialTraversal, rvec, useRecom);
+ else
+ {
+ if(useRecom)
+ /* the node is available, now make sure it will not be unpinned until it is read */
+ protectNode(rvec, q->number, maxTips);
+ }
+
+ if(!partialTraversal || needsRecomp(useRecom, rvec, r, maxTips))
+ computeTraversalInfo(r, ti, counter, maxTips, numBranches, partialTraversal, rvec, useRecom);
+ else
+ {
+ if(useRecom)
+ protectNode(rvec, r->number, maxTips);
+ }
+ }
+
+
+ if(! p->x)
+ getxnode(p);
+
+ /* check that the vector orientations are consistent now */
+
+ assert(p->x && r->x && q->x);
+
+ ti[*counter].tipCase = PLL_INNER_INNER;
+ ti[*counter].pNumber = p->number;
+ ti[*counter].qNumber = q->number;
+ ti[*counter].rNumber = r->number;
+
+ if(useRecom)
+ {
+ /* We check that the strategy cannot re-use slots */
+ getxVector(rvec, q->number, &slot, maxTips);
+ ti[*counter].slot_q = slot;
+
+ getxVector(rvec, r->number, &slot, maxTips);
+ ti[*counter].slot_r = slot;
+ assert(slot != ti[*counter].slot_q);
+
+ getxVector(rvec, p->number, &slot, maxTips);
+ ti[*counter].slot_p = slot;
+ assert(slot != ti[*counter].slot_q);
+ assert(slot != ti[*counter].slot_r);
+
+ /* And at these point both input INNER can be marked as unpinned */
+ unpin2 = r->number;
+ unpin1 = q->number;
+ }
+
+ for(i = 0; i < numBranches; i++)
+ {
+ ti[*counter].qz[i] = q->z[i];
+ ti[*counter].rz[i] = r->z[i];
+ }
+
+ *counter = *counter + 1;
+ }
+ }
+ if(useRecom)
+ {
+ /* Mark the nodes as unpinnable(will be unpinned while executing the replacement strategy only if required)*/
+ unpinNode(rvec, unpin1, maxTips);
+ unpinNode(rvec, unpin2, maxTips);
+ }
+ }
+}
+
+/* below are the optimized unrolled, and vectorized versions of the above generi cfunctions
+ for computing the conditional likelihood at p given child nodes q and r. The actual implementation is located at the end/bottom of this
+ file.
+ */
+/* now this is the function that just iterates over the length of the traversal descriptor and
+ just computes the conditional likelihhod arrays in the order given by the descriptor.
+ So in a sense, this function has no clue that there is any tree-like structure
+ in the traversal descriptor, it just operates on an array of structs of given length */
+
+
+/** @brief Compute the conditional likelihood for each entry (node) of the traversal descriptor
+
+ Computes the conditional likelihood vectors for each entry (node) in the already computed
+ traversal descriptor, starting from the \a startIndex entry.
+
+ @param tr
+ PLL instance
+
+ @param pr
+ List of partitions
+
+ @param startIndex
+ From which node to start computing the conditional likelihood vectors in the traversal
+ descriptor
+
+ @note This function just iterates over the length of the traversal descriptor and
+ computes the conditional likelihhod arrays in the order given by the descriptor.
+ So in a sense, this function has no clue that there is any tree-like structure
+ in the traversal descriptor, it just operates on an array of structs of given length.
+ */
+void pllNewviewIterative (pllInstance *tr, partitionList *pr, int startIndex)
+{
+ traversalInfo
+ *ti = tr->td[0].ti;
+
+ int
+ i,
+ model;
+
+ int
+ p_slot = -1,
+ q_slot = -1,
+ r_slot = -1;
+
+#ifdef _DEBUG_RECOMPUTATION
+ /* recom */
+#if (defined(_FINE_GRAIN_MPI) || defined(_USE_PTHREADS))
+#else
+ countTraversal(tr);
+#endif
+ /* E recom */
+#endif
+
+ /* loop over traversal descriptor length. Note that on average we only re-compute the conditionals on 3 -4
+ nodes in RAxML */
+
+ for(i = startIndex; i < tr->td[0].count; i++)
+ {
+
+ traversalInfo
+ *tInfo = &ti[i];
+
+ /* Note that the slots refer to different things if recomputation is applied */
+ if(tr->useRecom)
+ {
+ /* a slot has been assigned while computing the traversal descriptor */
+ p_slot = tInfo->slot_p;
+ q_slot = tInfo->slot_q;
+ r_slot = tInfo->slot_r;
+ }
+ else
+ {
+ /* a fixed slot is always given for each inner node, we only need an offset to get the right index */
+ p_slot = tInfo->pNumber - tr->mxtips - 1;
+ q_slot = tInfo->qNumber - tr->mxtips - 1;
+ r_slot = tInfo->rNumber - tr->mxtips - 1;
+ }
+
+ /* now loop over all partitions for nodes p, q, and r of the current traversal vector entry */
+
+ for(model = 0; model < pr->numberOfPartitions; model++)
+ {
+ /* number of sites in this partition */
+ size_t
+ width = (size_t)pr->partitionData[model]->width;
+
+ /* this conditional statement is exactly identical to what we do in pllEvaluateIterative */
+
+ if(tr->td[0].executeModel[model] && width > 0)
+ {
+ double
+ *x1_start = (double*)NULL,
+ *x2_start = (double*)NULL,
+ *x3_start = pr->partitionData[model]->xVector[p_slot],
+ *left = (double*)NULL,
+ *right = (double*)NULL,
+#if (defined(__SSE3) || defined(__AVX))
+ *x1_gapColumn = (double*)NULL,
+ *x2_gapColumn = (double*)NULL,
+ *x3_gapColumn = (double*)NULL,
+#endif
+ *rateCategories = (double*)NULL,
+ *x1_ascColumn = NULL,
+ *x2_ascColumn = NULL,
+ *x3_ascColumn = NULL;
+
+ int
+ categories,
+ scalerIncrement = 0,
+
+ /* integer wieght vector with pattern compression weights */
+
+ *wgt = pr->partitionData[model]->wgt;
+
+ /* pointers for per-site scaling array at node p */
+
+ int
+ *ex3 = NULL,
+ *ex3_asc = NULL;
+
+ /* select fastScaling or per-site scaling of conidtional likelihood entries */
+
+ boolean
+ fastScaling = tr->fastScaling;
+
+#if (defined(__SSE3) || defined(__AVX))
+ unsigned int
+ *x1_gap = (unsigned int*)NULL,
+ *x2_gap = (unsigned int*)NULL,
+ *x3_gap = (unsigned int*)NULL;
+#endif
+
+ unsigned char
+ *tipX1 = (unsigned char *)NULL,
+ *tipX2 = (unsigned char *)NULL;
+
+ double
+ qz,
+ rz;
+
+ size_t
+#if (defined(__SSE3) || defined(__AVX))
+ gapOffset = 0,
+#endif
+ rateHet = discreteRateCategories(tr->rateHetModel),
+ ascWidth = (size_t)pr->partitionData[model]->states,
+
+ /* get the number of states in the data stored in partition model */
+
+ states = (size_t)pr->partitionData[model]->states,
+
+ /* get the length of the current likelihood array stored at node p. This is
+ important mainly for the SEV-based memory saving option described in here:
+
+ F. Izquierdo-Carrasco, S.A. Smith, A. Stamatakis: "Algorithms, Data Structures, and Numerics for Likelihood-based Phylogenetic Inference of Huge Trees".
+
+ So pr->partitionData[model]->xSpaceVector[i] provides the length of the allocated conditional array of partition model
+ and node i
+ */
+
+ availableLength = pr->partitionData[model]->xSpaceVector[p_slot],
+ requiredLength = 0;
+
+ /* figure out what kind of rate heterogeneity approach we are using */
+
+ if(tr->rateHetModel == PLL_CAT)
+ {
+ rateCategories = pr->partitionData[model]->perSiteRates;
+ categories = pr->partitionData[model]->numberOfCategories;
+ }
+ else
+ {
+ rateCategories = pr->partitionData[model]->gammaRates;
+ categories = 4;
+ }
+
+ /* memory saving stuff, not important right now, but if you are interested ask Fernando */
+
+#if (defined(__SSE3) || defined(__AVX))
+ if(tr->saveMemory)
+ {
+ size_t
+ j,
+ setBits = 0;
+
+ gapOffset = states * (size_t)getUndetermined(pr->partitionData[model]->dataType);
+
+ x1_gap = &(pr->partitionData[model]->gapVector[tInfo->qNumber * pr->partitionData[model]->gapVectorLength]);
+ x2_gap = &(pr->partitionData[model]->gapVector[tInfo->rNumber * pr->partitionData[model]->gapVectorLength]);
+ x3_gap = &(pr->partitionData[model]->gapVector[tInfo->pNumber * pr->partitionData[model]->gapVectorLength]);
+
+ for(j = 0; j < (size_t)pr->partitionData[model]->gapVectorLength; j++)
+ {
+ x3_gap[j] = x1_gap[j] & x2_gap[j];
+ setBits += (size_t)(bitcount_32_bit(x3_gap[j]));
+ }
+
+ requiredLength = (width - setBits) * rateHet * states * sizeof(double);
+ }
+ else
+#endif
+ {
+ /* if we are not trying to save memory the space required to store an inner likelihood array
+ is the number of sites in the partition times the number of states of the data type in the partition
+ times the number of discrete GAMMA rates (1 for CAT essentially) times 8 bytes */
+ requiredLength = virtual_width( width ) * rateHet * states * sizeof(double);
+
+ // printf( "req: %d %d %d %d\n", requiredLength, width, virtual_width(width), model );
+ }
+
+ /* Initially, even when not using memory saving no space is allocated for inner likelihood arrats hence
+ availableLength will be zero at the very first time we traverse the tree.
+ Hence we need to allocate something here */
+
+ if(requiredLength != availableLength)
+ {
+ /* if there is a vector of incorrect length assigned here i.e., x3 != NULL we must free
+ it first */
+ if(x3_start)
+ rax_free(x3_start);
+
+ /* allocate memory: note that here we use a byte-boundary aligned malloc, because we need the vectors
+ to be aligned at 16 BYTE (SSE3) or 32 BYTE (AVX) boundaries! */
+
+ rax_posix_memalign ((void **)&x3_start, PLL_BYTE_ALIGNMENT, requiredLength);
+
+ /* update the data structures for consistent bookkeeping */
+ pr->partitionData[model]->xVector[p_slot] = x3_start;
+ pr->partitionData[model]->xSpaceVector[p_slot] = requiredLength;
+ }
+
+
+ /*
+ if we are not using fast scaling, we need to assign memory for storing
+ integer vectors at each inner node that are as long as the sites of the
+ partition. IMPORTANT: while this looks as if this might be a memory saving trick
+ it is not. The ex3 vectors will be allocated once during the very first tree
+ traversal and then never again because they will always have the required length!
+ */
+
+ if(!fastScaling)
+ {
+ size_t
+ availableExpLength = pr->partitionData[model]->expSpaceVector[p_slot],
+ requiredExpLength = width * sizeof(int);
+
+ ex3 = pr->partitionData[model]->expVector[p_slot];
+
+ if(requiredExpLength != availableExpLength)
+ {
+ if(ex3)
+ rax_free(ex3);
+
+ rax_posix_memalign ((void **)&ex3, PLL_BYTE_ALIGNMENT, requiredExpLength);
+
+ pr->partitionData[model]->expVector[p_slot] = ex3;
+
+ pr->partitionData[model]->expSpaceVector[p_slot] = requiredExpLength;
+ }
+ }
+
+ /* now just set the pointers for data accesses in the newview() implementations above to the corresponding values
+ according to the tip case */
+
+ switch(tInfo->tipCase)
+ {
+ case PLL_TIP_TIP:
+ tipX1 = pr->partitionData[model]->yVector[tInfo->qNumber];
+ tipX2 = pr->partitionData[model]->yVector[tInfo->rNumber];
+
+#if (defined(__SSE3) || defined(__AVX))
+ if(tr->saveMemory)
+ {
+ x1_gapColumn = &(pr->partitionData[model]->tipVector[gapOffset]);
+ x2_gapColumn = &(pr->partitionData[model]->tipVector[gapOffset]);
+ x3_gapColumn = &(pr->partitionData[model]->gapColumn[(tInfo->pNumber - tr->mxtips - 1) * states * rateHet]);
+ }
+#endif
+
+#if (defined(_FINE_GRAIN_MPI) || defined(_USE_PTHREADS))
+ if(pr->partitionData[model]->ascBias && tr->threadID == 0)
+#else
+ if(pr->partitionData[model]->ascBias)
+#endif
+ {
+ size_t
+ k;
+
+ x3_ascColumn = &pr->partitionData[model]->ascVector[(tInfo->pNumber - tr->mxtips - 1) * pr->partitionData[model]->ascOffset];
+ ex3_asc = &pr->partitionData[model]->ascExpVector[(tInfo->pNumber - tr->mxtips - 1) * ascWidth];
+
+ for(k = 0; k < ascWidth; k++)
+ ex3_asc[k] = 0;
+ }
+ /* if we do per-site log likelihood scaling, and both child nodes are tips,
+ just initialize the vector with zeros, i.e., no scaling events */
+
+ if(!fastScaling)
+ {
+ size_t
+ k;
+
+ for(k = 0; k < width; k++)
+ ex3[k] = 0;
+ }
+ break;
+ case PLL_TIP_INNER:
+ tipX1 = pr->partitionData[model]->yVector[tInfo->qNumber];
+ x2_start = pr->partitionData[model]->xVector[r_slot];
+ assert(r_slot != p_slot);
+
+#if (defined(__SSE3) || defined(__AVX))
+ if(tr->saveMemory)
+ {
+ x1_gapColumn = &(pr->partitionData[model]->tipVector[gapOffset]);
+ x2_gapColumn = &pr->partitionData[model]->gapColumn[(tInfo->rNumber - tr->mxtips - 1) * states * rateHet];
+ x3_gapColumn = &pr->partitionData[model]->gapColumn[(tInfo->pNumber - tr->mxtips - 1) * states * rateHet];
+ }
+#endif
+
+#if (defined(_FINE_GRAIN_MPI) || defined(_USE_PTHREADS))
+ if(pr->partitionData[model]->ascBias && tr->threadID == 0)
+#else
+ if(pr->partitionData[model]->ascBias)
+#endif
+ {
+ size_t
+ k;
+
+ int
+ *ex2_asc;
+
+ x2_ascColumn = &pr->partitionData[model]->ascVector[(tInfo->rNumber - tr->mxtips - 1) * pr->partitionData[model]->ascOffset];
+ x3_ascColumn = &pr->partitionData[model]->ascVector[(tInfo->pNumber - tr->mxtips - 1) * pr->partitionData[model]->ascOffset];
+
+ ex2_asc = &pr->partitionData[model]->ascExpVector[(tInfo->rNumber - tr->mxtips - 1) * ascWidth];
+ ex3_asc = &pr->partitionData[model]->ascExpVector[(tInfo->pNumber - tr->mxtips - 1) * ascWidth];
+
+ for(k = 0; k < ascWidth; k++)
+ ex3_asc[k] = ex2_asc[k];
+ }
+
+ /* if one child node is not a tip, just copy the values from there, coudl also be done with memcpy of course
+ the elements of ex3[] will then potentially be further incremented in the actual newview() if scaling events
+ take place */
+
+ if(!fastScaling)
+ {
+ size_t
+ k;
+ int
+ *ex2 = pr->partitionData[model]->expVector[r_slot];
+
+ for(k = 0; k < width; k++)
+ ex3[k] = ex2[k];
+ }
+ break;
+ case PLL_INNER_INNER:
+ x1_start = pr->partitionData[model]->xVector[q_slot];
+ x2_start = pr->partitionData[model]->xVector[r_slot];
+ assert(r_slot != p_slot);
+ assert(q_slot != p_slot);
+ assert(q_slot != r_slot);
+
+#if (defined(__SSE3) || defined(__AVX))
+ if(tr->saveMemory)
+ {
+ x1_gapColumn = &pr->partitionData[model]->gapColumn[(tInfo->qNumber - tr->mxtips - 1) * states * rateHet];
+ x2_gapColumn = &pr->partitionData[model]->gapColumn[(tInfo->rNumber - tr->mxtips - 1) * states * rateHet];
+ x3_gapColumn = &pr->partitionData[model]->gapColumn[(tInfo->pNumber - tr->mxtips - 1) * states * rateHet];
+ }
+#endif
+
+#if (defined(_FINE_GRAIN_MPI) || defined(_USE_PTHREADS))
+ if(pr->partitionData[model]->ascBias && tr->threadID == 0)
+#else
+ if(pr->partitionData[model]->ascBias)
+#endif
+ {
+ size_t
+ k;
+
+ int
+ *ex1_asc,
+ *ex2_asc;
+
+ x1_ascColumn = &pr->partitionData[model]->ascVector[(tInfo->qNumber - tr->mxtips - 1) * pr->partitionData[model]->ascOffset];
+ x2_ascColumn = &pr->partitionData[model]->ascVector[(tInfo->rNumber - tr->mxtips - 1) * pr->partitionData[model]->ascOffset];
+ x3_ascColumn = &pr->partitionData[model]->ascVector[(tInfo->pNumber - tr->mxtips - 1) * pr->partitionData[model]->ascOffset];
+
+ ex1_asc = &pr->partitionData[model]->ascExpVector[(tInfo->qNumber - tr->mxtips - 1) * ascWidth];
+ ex2_asc = &pr->partitionData[model]->ascExpVector[(tInfo->rNumber - tr->mxtips - 1) * ascWidth];
+ ex3_asc = &pr->partitionData[model]->ascExpVector[(tInfo->pNumber - tr->mxtips - 1) * ascWidth];
+
+ for(k = 0; k < ascWidth; k++)
+ ex3_asc[k] = ex1_asc[k] + ex2_asc[k];
+ }
+ /* both child nodes are inner nodes, thus the initial value of the scaling vector
+ ex3 is the sum of the scaling values of the left and right child node */
+
+ if(!fastScaling)
+ {
+ size_t
+ k;
+
+ int
+ *ex1 = pr->partitionData[model]->expVector[q_slot],
+ *ex2 = pr->partitionData[model]->expVector[r_slot];
+
+ for(k = 0; k < width; k++)
+ ex3[k] = ex1[k] + ex2[k];
+ }
+ break;
+ default:
+ assert(0);
+ }
+
+ /* set the pointers to the left and right P matrices to the pre-allocated memory space for storing them */
+
+ left = pr->partitionData[model]->left;
+ right = pr->partitionData[model]->right;
+
+ /* if we use per-partition branch length optimization
+ get the branch length of partition model and take the log otherwise
+ use the joint branch length among all partitions that is always stored
+ at index [0] */
+
+ if(pr->perGeneBranchLengths)
+ {
+ qz = tInfo->qz[model];
+ rz = tInfo->rz[model];
+ }
+ else
+ {
+ qz = tInfo->qz[0];
+ rz = tInfo->rz[0];
+ }
+
+ qz = (qz > PLL_ZMIN) ? log(qz) : log(PLL_ZMIN);
+ rz = (rz > PLL_ZMIN) ? log(rz) : log(PLL_ZMIN);
+
+ /* compute the left and right P matrices */
+
+ if(pr->partitionData[model]->dataType == PLL_AA_DATA &&
+ (pr->partitionData[model]->protModels == PLL_LG4M || pr->partitionData[model]->protModels == PLL_LG4X))
+ makeP_FlexLG4(qz, rz, pr->partitionData[model]->gammaRates,
+ pr->partitionData[model]->EI_LG4,
+ pr->partitionData[model]->EIGN_LG4,
+ 4, left, right, 20);
+ else
+ makeP(qz, rz, rateCategories, pr->partitionData[model]->EI,
+ pr->partitionData[model]->EIGN, categories,
+ left, right, tr->saveMemory, tr->maxCategories, states);
+
+
+#if (!defined(__SSE3) && !defined(__AVX) && !defined(__MIC_NATIVE))
+ assert(!tr->saveMemory);
+
+ /* figure out if we need to compute the CAT or GAMMA model of rate heterogeneity */
+
+ if(tr->rateHetModel == PLL_CAT)
+ {
+
+ newviewCAT_FLEX(tInfo->tipCase, pr->partitionData[model]->EV, pr->partitionData[model]->rateCategory,
+ x1_start, x2_start, x3_start, pr->partitionData[model]->tipVector,
+ ex3, tipX1, tipX2,
+ width, left, right, wgt, &scalerIncrement, fastScaling, states);
+ }
+ else
+ {
+ newviewGAMMA_FLEX(tInfo->tipCase,
+ x1_start, x2_start, x3_start, pr->partitionData[model]->EV, pr->partitionData[model]->tipVector,
+ 0, tipX1, tipX2,
+ width, left, right, wgt, &scalerIncrement, fastScaling, states, getUndetermined(pr->partitionData[model]->dataType) + 1);
+ }
+#else
+ /* dedicated highly optimized functions. Analogously to the functions in evaluateGeneric()
+ we also siwtch over the state number */
+
+ switch(states)
+ {
+ case 2:
+#ifdef __MIC_NATIVE
+ assert(0 && "Binary data model is not implemented on Intel MIC");
+#else
+ assert (!tr->saveMemory);
+ if (tr->rateHetModel == PLL_CAT)
+ {
+ newviewGTRCAT_BINARY(tInfo->tipCase, pr->partitionData[model]->EV, pr->partitionData[model]->rateCategory,
+ x1_start, x2_start, x3_start, pr->partitionData[model]->tipVector,
+ ex3, tipX1, tipX2,
+ width, left, right, wgt, &scalerIncrement, fastScaling);
+ }
+ else
+ {
+ newviewGTRGAMMA_BINARY(tInfo->tipCase,
+ x1_start, x2_start, x3_start, pr->partitionData[model]->EV, pr->partitionData[model]->tipVector,
+ ex3, tipX1, tipX2,
+ width, left, right, wgt, &scalerIncrement, fastScaling);
+ }
+#endif
+ break;
+ case 4: /* DNA */
+#ifdef __MIC_NATIVE
+
+ /* CAT & memory saving are not supported on MIC */
+
+ assert(!tr->saveMemory);
+ assert(tr->rateHetModel == PLL_GAMMA);
+
+ newviewGTRGAMMA_MIC(tInfo->tipCase,
+ x1_start, x2_start, x3_start, pr->partitionData[model]->EV, pr->partitionData[model]->tipVector,
+ ex3, tipX1, tipX2,
+ width, left, right, wgt, &scalerIncrement, fastScaling);
+#else
+ if(tr->rateHetModel == PLL_CAT)
+ {
+
+ if(tr->saveMemory)
+#ifdef __AVX
+ newviewGTRCAT_AVX_GAPPED_SAVE(tInfo->tipCase, pr->partitionData[model]->EV, pr->partitionData[model]->rateCategory,
+ x1_start, x2_start, x3_start, pr->partitionData[model]->tipVector,
+ ex3, tipX1, tipX2,
+ width, left, right, wgt, &scalerIncrement, fastScaling, x1_gap, x2_gap, x3_gap,
+ x1_gapColumn, x2_gapColumn, x3_gapColumn, tr->maxCategories);
+#else
+ newviewGTRCAT_SAVE(tInfo->tipCase, pr->partitionData[model]->EV, pr->partitionData[model]->rateCategory,
+ x1_start, x2_start, x3_start, pr->partitionData[model]->tipVector,
+ ex3, tipX1, tipX2,
+ width, left, right, wgt, &scalerIncrement, fastScaling, x1_gap, x2_gap, x3_gap,
+ x1_gapColumn, x2_gapColumn, x3_gapColumn, tr->maxCategories);
+#endif
+ else
+#ifdef __AVX
+ newviewGTRCAT_AVX(tInfo->tipCase, pr->partitionData[model]->EV, pr->partitionData[model]->rateCategory,
+ x1_start, x2_start, x3_start, pr->partitionData[model]->tipVector,
+ ex3, tipX1, tipX2,
+ width, left, right, wgt, &scalerIncrement, fastScaling);
+#else
+ newviewGTRCAT(tInfo->tipCase, pr->partitionData[model]->EV, pr->partitionData[model]->rateCategory,
+ x1_start, x2_start, x3_start, pr->partitionData[model]->tipVector,
+ ex3, tipX1, tipX2,
+ width, left, right, wgt, &scalerIncrement, fastScaling);
+#endif
+ }
+ else
+ {
+
+ if(tr->saveMemory)
+#ifdef __AVX
+ newviewGTRGAMMA_AVX_GAPPED_SAVE(tInfo->tipCase,
+ x1_start, x2_start, x3_start, pr->partitionData[model]->EV, pr->partitionData[model]->tipVector,
+ ex3, tipX1, tipX2,
+ width, left, right, wgt, &scalerIncrement, fastScaling,
+ x1_gap, x2_gap, x3_gap,
+ x1_gapColumn, x2_gapColumn, x3_gapColumn);
+
+#else
+ newviewGTRGAMMA_GAPPED_SAVE(tInfo->tipCase,
+ x1_start, x2_start, x3_start, pr->partitionData[model]->EV, pr->partitionData[model]->tipVector,
+ ex3, tipX1, tipX2,
+ width, left, right, wgt, &scalerIncrement, fastScaling,
+ x1_gap, x2_gap, x3_gap,
+ x1_gapColumn, x2_gapColumn, x3_gapColumn);
+#endif
+ else
+#ifdef __AVX
+ newviewGTRGAMMA_AVX(tInfo->tipCase,
+ x1_start, x2_start, x3_start, pr->partitionData[model]->EV, pr->partitionData[model]->tipVector,
+ ex3, tipX1, tipX2,
+ width, left, right, wgt, &scalerIncrement, fastScaling);
+#else
+ newviewGTRGAMMA(tInfo->tipCase,
+ x1_start, x2_start, x3_start, pr->partitionData[model]->EV, pr->partitionData[model]->tipVector,
+ ex3,tipX1, tipX2,
+ width, left, right, wgt, &scalerIncrement, fastScaling);
+#endif
+ }
+#endif
+
+ break;
+ case 20: /* proteins */
+
+#ifdef __MIC_NATIVE
+
+ /* CAT & memory saving are not supported on MIC */
+
+ assert(!tr->saveMemory);
+ assert(tr->rateHetModel == PLL_GAMMA);
+
+ if(pr->partitionData[model]->protModels == PLL_LG4M || pr->partitionData[model]->protModels == PLL_LG4X)
+ {
+ newviewGTRGAMMAPROT_LG4_MIC(tInfo->tipCase,
+ x1_start, x2_start, x3_start, pr->partitionData[model]->EV_LG4, pr->partitionData[model]->tipVector_LG4,
+ tipX1, tipX2,
+ width, left, right, wgt, &scalerIncrement);
+ }
+ else
+ {
+ newviewGTRGAMMAPROT_MIC(tInfo->tipCase,
+ x1_start, x2_start, x3_start, pr->partitionData[model]->EV, pr->partitionData[model]->tipVector,
+ ex3, tipX1, tipX2,
+ width, left, right, wgt, &scalerIncrement, fastScaling);
+ }
+#else
+
+ if(tr->rateHetModel == PLL_CAT)
+ {
+
+
+ if(tr->saveMemory)
+#ifdef __AVX
+ newviewGTRCATPROT_AVX_GAPPED_SAVE(tInfo->tipCase, pr->partitionData[model]->EV, pr->partitionData[model]->rateCategory,
+ x1_start, x2_start, x3_start, pr->partitionData[model]->tipVector,
+ ex3, tipX1, tipX2, width, left, right, wgt, &scalerIncrement, fastScaling,
+ x1_gap, x2_gap, x3_gap,
+ x1_gapColumn, x2_gapColumn, x3_gapColumn, tr->maxCategories);
+#else
+ newviewGTRCATPROT_SAVE(tInfo->tipCase, pr->partitionData[model]->EV, pr->partitionData[model]->rateCategory,
+ x1_start, x2_start, x3_start, pr->partitionData[model]->tipVector,
+ ex3, tipX1, tipX2, width, left, right, wgt, &scalerIncrement, fastScaling, x1_gap, x2_gap, x3_gap,
+ x1_gapColumn, x2_gapColumn, x3_gapColumn, tr->maxCategories);
+#endif
+ else
+#ifdef __AVX
+ newviewGTRCATPROT_AVX(tInfo->tipCase, pr->partitionData[model]->EV, pr->partitionData[model]->rateCategory,
+ x1_start, x2_start, x3_start, pr->partitionData[model]->tipVector,
+ ex3, tipX1, tipX2, width, left, right, wgt, &scalerIncrement, fastScaling);
+#else
+ newviewGTRCATPROT(tInfo->tipCase, pr->partitionData[model]->EV, pr->partitionData[model]->rateCategory,
+ x1_start, x2_start, x3_start, pr->partitionData[model]->tipVector,
+ ex3, tipX1, tipX2, width, left, right, wgt, &scalerIncrement, fastScaling);
+#endif
+ }
+ else
+ {
+
+
+
+ if(tr->saveMemory)
+#ifdef __AVX
+ newviewGTRGAMMAPROT_AVX_GAPPED_SAVE(tInfo->tipCase,
+ x1_start, x2_start, x3_start,
+ pr->partitionData[model]->EV,
+ pr->partitionData[model]->tipVector,
+ ex3, tipX1, tipX2,
+ width, left, right, wgt, &scalerIncrement, fastScaling,
+ x1_gap, x2_gap, x3_gap,
+ x1_gapColumn, x2_gapColumn, x3_gapColumn);
+#else
+ newviewGTRGAMMAPROT_GAPPED_SAVE(tInfo->tipCase,
+ x1_start, x2_start, x3_start,
+ pr->partitionData[model]->EV,
+ pr->partitionData[model]->tipVector,
+ ex3, tipX1, tipX2,
+ width, left, right, wgt, &scalerIncrement, fastScaling,
+ x1_gap, x2_gap, x3_gap,
+ x1_gapColumn, x2_gapColumn, x3_gapColumn);
+#endif
+
+ else
+ {
+ if(pr->partitionData[model]->protModels == PLL_LG4M || pr->partitionData[model]->protModels == PLL_LG4X)
+ {
+#ifdef __AVX
+ newviewGTRGAMMAPROT_AVX_LG4(tInfo->tipCase,
+ x1_start, x2_start, x3_start,
+ pr->partitionData[model]->EV_LG4,
+ pr->partitionData[model]->tipVector_LG4,
+ (int*)NULL, tipX1, tipX2,
+ width, left, right, wgt, &scalerIncrement, PLL_TRUE);
+#else
+ newviewGTRGAMMAPROT_LG4(tInfo->tipCase,
+ x1_start, x2_start, x3_start,
+ pr->partitionData[model]->EV_LG4,
+ pr->partitionData[model]->tipVector_LG4,
+ (int*)NULL, tipX1, tipX2,
+ width, left, right,
+ wgt, &scalerIncrement, PLL_TRUE);
+#endif
+ }
+ else
+#ifdef __AVX
+ newviewGTRGAMMAPROT_AVX(tInfo->tipCase,
+ x1_start, x2_start, x3_start, pr->partitionData[model]->EV, pr->partitionData[model]->tipVector,
+ ex3, tipX1, tipX2,
+ width, left, right, wgt, &scalerIncrement, fastScaling);
+#else
+ newviewGTRGAMMAPROT(tInfo->tipCase,
+ x1_start, x2_start, x3_start, pr->partitionData[model]->EV, pr->partitionData[model]->tipVector,
+ ex3, tipX1, tipX2,
+ width, left, right, wgt, &scalerIncrement, fastScaling);
+#endif
+ }
+ }
+#endif
+
+ break;
+ default:
+ assert(0);
+ }
+#endif
+
+
+#if (defined(_FINE_GRAIN_MPI) || defined(_USE_PTHREADS))
+ if(pr->partitionData[model]->ascBias && tr->threadID == 0)
+#else
+ if(pr->partitionData[model]->ascBias)
+#endif
+ {
+ switch(tr->rateHetModel)
+ {
+ case PLL_CAT:
+ {
+ double
+ rates = 1.0;
+
+ //need to re-calculate transition probabilities assuming a rate of 1.0
+ makeP(qz, rz,
+ &rates,
+ pr->partitionData[model]->EI,
+ pr->partitionData[model]->EIGN,
+ 1,
+ left, right,
+ tr->saveMemory,
+ tr->maxCategories,
+ states);
+
+ newviewAscCat(tInfo->tipCase,
+ x1_ascColumn, x2_ascColumn, x3_ascColumn,
+ pr->partitionData[model]->EV,
+ pr->partitionData[model]->tipVector,
+ ex3_asc,
+ states, left, right, states);
+ }
+ break;
+ case PLL_GAMMA:
+ newviewAscGamma(tInfo->tipCase,
+ x1_ascColumn, x2_ascColumn, x3_ascColumn,
+ pr->partitionData[model]->EV,
+ pr->partitionData[model]->tipVector,
+ ex3_asc,
+ states, left, right, states);
+ break;
+ default:
+ assert(0);
+ }
+ }
+
+
+ /* important step, here we essentiallt recursively compute the number of scaling multiplications
+ at node p: it's the sum of the number of scaling multiplications already conducted
+ for computing nodes q and r plus the scaling multiplications done at node p */
+
+ if(fastScaling)
+ {
+ pr->partitionData[model]->globalScaler[tInfo->pNumber] =
+ pr->partitionData[model]->globalScaler[tInfo->qNumber] +
+ pr->partitionData[model]->globalScaler[tInfo->rNumber] +
+ (unsigned int)scalerIncrement;
+
+ /* check that we are not getting an integer overflow ! */
+
+ assert(pr->partitionData[model]->globalScaler[tInfo->pNumber] < INT_MAX);
+ }
+
+ /* show the output vector */
+ }
+ }
+ }
+}
+
+/** @brief Compute the traversal descriptor of the subtree rooted at \a p.
+
+ Computes the traversal descriptor of the subtree with root \a p. By traversal
+ descriptory we essentially mean a preorder traversal of the unrooted topology
+ by rooting it at a node \a p.
+ If \a partialTraversal is set to \b PLL_TRUE then subtrees which are oriented
+ correctly (i.e. if root node \a r of a subtree has \a r->x == 1) are not
+ included in the traversal descriptor.
+
+ @param tr
+ PLL instance
+
+ @param p
+ Node assumed to be the root
+
+ @param partialTraversal
+ If set to \b PLL_TRUE, then a partial traversal descriptor is computed.
+
+ @param numBranches
+ Number of branches (either per-partition branch or joint branch estimate)
+*/
+void computeTraversal(pllInstance *tr, nodeptr p, boolean partialTraversal, int numBranches)
+{
+ /* Only if we apply recomputations we need the additional step of updating the subtree lengths */
+ if(tr->useRecom)
+ {
+ int traversal_counter = 0;
+ if(partialTraversal)
+ computeTraversalInfoStlen(p, tr->mxtips, tr->rvec, &traversal_counter);
+ else
+ computeFullTraversalInfoStlen(p, tr->mxtips, tr->rvec);
+ }
+ computeTraversalInfo(p, &(tr->td[0].ti[0]), &(tr->td[0].count), tr->mxtips, numBranches, partialTraversal, tr->rvec, tr->useRecom);
+}
+
+
+/** @brief Computes the conditional likelihood vectors of all nodes in the subtree rooted at \a p
+
+ Compute the conditional likelihood vectors of all nodes in the subtree rooted at node \a p. The
+ conditional likelihood vector at node \a p is recomputed regardless of whether the orientation (i.e. \a p->x)
+ is correct or not, and, recursuvely, the likelihoods at each node in the subtree as needed and if necessary.
+ In case \a masked is set to \b PLL_TRUE, the computation will not take place at partitions for which the
+ conditional likelihood has converged (for example as a reult of previous branch length optimization).
+
+ @param tr
+ PLL instance
+
+ @param pr
+ List of partitions
+
+ @param p
+ Root of the subtree for which we want to recompute the conditional likelihood vectors
+
+ @param masked
+ If set to \b PLL_TRUE, then likelihood vectors of partitions that are converged are
+ not recomputed.
+ */
+void pllUpdatePartials (pllInstance *tr, partitionList *pr, nodeptr p, boolean masked)
+{
+ /* if it's a tip there is nothing to do */
+
+ if(isTip(p->number, tr->mxtips))
+ return;
+
+ /* the first entry of the traversal descriptor is always reserved for evaluate or branch length optimization calls,
+ hence we start filling the array at the second entry with index one. This is not very nice and should be fixed
+ at some point */
+
+ tr->td[0].count = 0;
+
+ /* compute the traversal descriptor, which will include nodes-that-need-update descending the subtree p */
+ computeTraversal(tr, p, PLL_TRUE, pr->perGeneBranchLengths?pr->numberOfPartitions : 1);
+
+ /* the traversal descriptor has been recomputed -> not sure if it really always changes, something to
+ optimize in the future */
+ tr->td[0].traversalHasChanged = PLL_TRUE;
+
+ /* We do a masked newview, i.e., do not execute newvies for each partition, when for example
+ doing a branch length optimization on the entire tree when branches are estimated on a per partition basis.
+
+ you may imagine that for partition 5 the branch length optimization has already converged whereas
+ for partition 6 we still need to go over the tree again.
+
+ This is explained in more detail in:
+
+ A. Stamatakis, M. Ott: "Load Balance in the Phylogenetic Likelihood Kernel". Proceedings of ICPP 2009
+
+ The external boolean array tr->partitionConverged[] contains exactly that information and is copied
+ to executeModel and subsequently to the executeMask of the traversal descriptor
+
+*/
+
+
+ if(masked)
+ {
+ int model;
+
+ for(model = 0; model < pr->numberOfPartitions; model++)
+ {
+ if(tr->partitionConverged[model])
+ pr->partitionData[model]->executeModel = PLL_FALSE;
+ else
+ pr->partitionData[model]->executeModel = PLL_TRUE;
+ }
+ }
+
+ /* if there is something to re-compute */
+
+ if(tr->td[0].count > 0)
+ {
+ /* store execute mask in traversal descriptor */
+
+ storeExecuteMaskInTraversalDescriptor(tr, pr);
+
+#if (defined(_FINE_GRAIN_MPI) || defined(_USE_PTHREADS))
+ /* do the parallel for join for pthreads
+ not that we do not need a reduction operation here, but just a barrier to make
+ sure that all threads are done with their partition */
+
+ pllMasterBarrier(tr, pr, PLL_THREAD_NEWVIEW);
+#else
+ /* in the sequential case we now simply call pllNewviewIterative() */
+
+ pllNewviewIterative(tr, pr, 0);
+#endif
+
+ }
+
+ /* clean up */
+
+ if(masked)
+ {
+ int model;
+
+ for(model = 0; model < pr->numberOfPartitions; model++)
+ pr->partitionData[model]->executeModel = PLL_TRUE;
+ }
+
+ tr->td[0].traversalHasChanged = PLL_FALSE;
+}
+
+/* function to compute the marginal ancestral probability vector at a node p for CAT/PSR model */
+
+/** @brief Compute the marginal ancestral probability vector for CAT/PSR model
+
+ Computes the marginal ancestral probability vector for CAT/PSR model, given the conditional likelihood
+ vector \a x3 of some node, and a zero branch length P matrix \a diagptable.
+
+ @param x3
+ Conditional likelihood of the node for which we are computing the ancestral vector
+
+ @param ancestralBuffer
+ Buffer where to store the marginal ancestral probability vector
+
+ @param diagptable
+ A zero branch length P matrix
+
+ @param n
+ Number of sites in the partition to process (in the case of MPI/PTHREADS, the number of sites in the partition assigned to the current thread/process)
+
+ @param numStates
+ Number of states
+
+ @param cptr
+ Array where the rate for each site in the compressed partition alignment is stored
+
+ */
+static void ancestralCat(double *x3, double *ancestralBuffer, double *diagptable, const int n, const int numStates, int *cptr)
+{
+ double
+ *term = (double*)rax_malloc(sizeof(double) * numStates);
+
+ int
+ i;
+
+ const int
+ statesSquare = numStates * numStates;
+
+ for(i = 0; i < n; i++)
+ {
+ double
+ sum = 0.0,
+ *v = &x3[numStates * i],
+ *ancestral = &ancestralBuffer[numStates * i],
+ *d = &diagptable[cptr[i] * statesSquare];
+
+ int
+ l,
+ j;
+
+ for(l = 0; l < numStates; l++)
+ {
+ double
+ ump_x1 = 0.0;
+
+ for(j = 0; j < numStates; j++)
+ ump_x1 += v[j] * d[l * numStates + j];
+
+ sum += ump_x1;
+ term[l] = ump_x1;
+ }
+
+ for(l = 0; l < numStates; l++)
+ ancestral[l] = term[l] / sum;
+ }
+
+ rax_free(term);
+}
+
+
+/* compute marginal ancestral states for GAMMA models,
+ for the euqation to obtain marginal ancestral states
+ see Ziheng Yang's book */
+
+/** @brief Compute the marginal ancestral probability vector for GAMMA model
+
+ Computes the marginal ancestral probability vector for the GAMMA model, given the conditional likelihood
+ vector \a x3 of some node, and a zero branch length P matrix \a diagptable.
+
+ @param x3
+ Conditional likelihood of the node for which we are computing the ancestral vector
+
+ @param ancestralBuffer
+ Buffer where to store the marginal ancestral probability vector
+
+ @param diagptable
+ A zero branch length P matrix
+
+ @param n
+ Number of sites in the partition to process (in the case of MPI/PTHREADS, the number of sites in the partition assigned to the current thread/process)
+
+ @param numStates
+ Number of states
+
+ @param gammaStates
+ Number of GAMMA categories times number of states
+
+ */
+static void ancestralGamma(double *x3, double *ancestralBuffer, double *diagptable, const int n, const int numStates, const int gammaStates, int atRoot)
+{
+ int
+ i;
+
+ const int
+ statesSquare = numStates * numStates;
+
+ double
+ *term = (double*)rax_malloc(sizeof(double) * numStates);
+
+ for(i = 0; i < n; i++)
+ {
+ double
+ sum = 0.0,
+ *_v,
+ *ancestral = &ancestralBuffer[numStates * i];
+
+ int
+ k,
+ j,
+ l;
+
+ _v = &x3[gammaStates * i];
+
+ for(l = 0; l < numStates; l++)
+ term[l] = 0.0;
+
+ for(k = 0; k < 4; k++)
+ {
+ double
+ *v = &(_v[numStates * k]);
+
+ for(l = 0; l < numStates; l++)
+ {
+ double
+ al = 0.0;
+
+ for(j = 0; j < numStates; j++) {
+ al += v[j] * diagptable[k * statesSquare + l * numStates + j];
+ }
+
+ term[l] += al;
+ sum += al;
+ }
+ }
+
+ for(l = 0; l < numStates; l++) {
+ ancestral[l] = term[l] / sum;
+ }
+ }
+
+ rax_free(term);
+}
+
+/* compute dedicated zero branch length P matrix */
+/** @brief Compute a dedicated zero branch length P matrix
+
+ Computes a P matrix by assuming a branch length of zero. This is used
+ for the marginal ancestral probabilities recomputation.
+
+ @param rptr
+ Array of values for rate categories
+
+ @param EI
+ Inverse eigenvector of Q matrix
+
+ @param EIGN
+ Eigenvalues of Q matrix
+
+ @param numberOfCategories
+ Number of rate categories
+
+ @param left
+ Where to store the resulting P matrix
+
+ @param numStates
+ Number of states
+ */
+static void calc_diagp_Ancestral(double *rptr, double *EI, double *EIGN, int numberOfCategories, double *left, const int numStates)
+{
+ int
+ i,
+ j,
+ k;
+
+ const int
+ statesSquare = numStates * numStates;
+
+ double
+ z1 = 0.0,
+ lz1[64],
+ d1[64];
+
+ assert(numStates <= 64);
+
+ for(i = 0; i < numStates; i++)
+ lz1[i] = EIGN[i] * z1;
+
+
+ for(i = 0; i < numberOfCategories; i++)
+ {
+ d1[0] = 1.0;
+
+ for(j = 1; j < numStates; j++)
+ d1[j] = exp(rptr[i] * lz1[j]);
+
+ for(j = 0; j < numStates; j++)
+ {
+ left[statesSquare * i + numStates * j] = 1.0;
+
+ for(k = 1; k < numStates; k++)
+ left[statesSquare * i + numStates * j + k] = d1[k] * EI[numStates * j + k];
+ }
+ }
+}
+
+/** @brief A very simple iterative function, we only access the conditional likelihood vector at node \a p
+ *
+ *
+ */
+void newviewAncestralIterative(pllInstance *tr, partitionList *pr) {
+ traversalInfo *ti = tr->td[0].ti, *tInfo = &ti[0];
+
+ int i;
+ int model, p_slot = -1;
+ int atRoot;
+
+ /* make sure that the traversal descriptor has length 1 */
+
+ assert(tr->td[0].count == 1);
+ assert(!tr->saveMemory);
+
+ /* get the index to the conditional likelihood vector depending on whether recomputation is used or not */
+
+ if (tr->useRecom)
+ p_slot = tInfo->slot_p;
+ else
+ p_slot = tInfo->pNumber - tr->mxtips - 1;
+
+ /* now loop over all partitions for nodes p of the current traversal vector entry */
+
+ for (model = 0; model < pr->numberOfPartitions; model++) {
+ /* number of sites in this partition */
+ size_t width = (size_t) pr->partitionData[model]->width;
+
+ /* this conditional statement is exactly identical to what we do in pllEvaluateIterative */
+
+ if (tr->td[0].executeModel[model] && width > 0) {
+ double *x3_start,
+ *left = (double*)NULL,
+ *right = (double*)NULL,
+ *rateCategories = (double*) NULL, *diagptable =
+ (double*) NULL;
+
+ left = pr->partitionData[model]->left;
+ right = pr->partitionData[model]->right;
+
+ int categories;
+
+ size_t states = (size_t) pr->partitionData[model]->states,
+ availableLength, requiredLength = 0, rateHet =
+ discreteRateCategories(tr->rateHetModel);
+
+ /* figure out what kind of rate heterogeneity approach we are using */
+
+ if (tr->rateHetModel == PLL_CAT) {
+ rateCategories = pr->partitionData[model]->perSiteRates;
+ categories = pr->partitionData[model]->numberOfCategories;
+ } else {
+ rateCategories = pr->partitionData[model]->gammaRates;
+ categories = 4;
+ }
+
+ /* allocate some space for a special P matrix with a branch length of 0 into which we mingle
+ the eignevalues. This will allow us to obtain real probabilites from the internal RAxML
+ representation */
+
+ rax_posix_memalign((void **) &diagptable, PLL_BYTE_ALIGNMENT,
+ categories * states * states * sizeof(double));
+
+ /* now compute the special P matrix */
+ nodeptr nodeq = tr->nodep[tInfo->qNumber];
+ nodeptr noder = tr->nodep[tInfo->rNumber];
+
+ /* if q and r nodes are not connected through p node, we are at root case */
+ atRoot = !((nodeq->back->number == tInfo->pNumber
+ || nodeq->next->back->number == tInfo->pNumber
+ || nodeq->next->next->back->number == tInfo->pNumber)
+ && (noder->back->number == tInfo->pNumber
+ || noder->next->back->number == tInfo->pNumber
+ || noder->next->next->back->number == tInfo->pNumber));
+
+ if (atRoot) {
+ /*
+ * An additional P matrix has to be computed in the
+ * virtual root node located between q and r.
+ */
+ makeP(tInfo->qz[model], tInfo->rz[model], pr->partitionData[model]->gammaRates,
+ pr->partitionData[model]->EI,
+ pr->partitionData[model]->EIGN,
+ categories, left, right, tr->saveMemory, tr->maxCategories, (int)states);
+ }
+
+ calc_diagp_Ancestral(rateCategories, pr->partitionData[model]->EI,
+ pr->partitionData[model]->EIGN, categories, diagptable,
+ states);
+
+ if (atRoot) {
+
+ /*
+ * In the root case, we need to create the CLVs of the
+ * virtual root node out of x1 and x2.
+ */
+ double *v;
+ double *vl, *vr, al, ar;
+ double *x1, *x2;
+ unsigned int k, l, j;
+ unsigned char *tipX1 = (unsigned char *) NULL, *tipX2 =
+ (unsigned char *) NULL;
+ const unsigned int gammaStates = 4 * states;
+ int scale;
+ double x1px2;
+ double * extEV = pr->partitionData[model]->EV;
+
+ x3_start = (double*) rax_malloc(
+ sizeof(double) * (size_t) gammaStates * width);
+
+ switch (tInfo->tipCase) {
+ case PLL_TIP_TIP: {
+ tipX1 = pr->partitionData[model]->yVector[tInfo->qNumber];
+ tipX2 = pr->partitionData[model]->yVector[tInfo->rNumber];
+ for (i = 0; i < pr->partitionData[model]->width; i++) {
+ for (k = 0; k < 4; k++) {
+ vl = &(pr->partitionData[model]->tipVector[states
+ * tipX1[i]]);
+ vr = &(pr->partitionData[model]->tipVector[states
+ * tipX2[i]]);
+ v = &(x3_start[gammaStates * i + states * k]);
+
+ for (l = 0; l < states; l++) {
+ v[l] = 0;
+ }
+
+ for (l = 0; l < states; l++) {
+ al = 0.0;
+ ar = 0.0;
+ for (j = 0; j < states; j++) {
+ al += vl[j]
+ * left[k * states * states
+ + l * states + j];
+ ar += vr[j]
+ * right[k * states * states
+ + l * states + j];
+ }
+
+ x1px2 = al * ar;
+ for (j = 0; j < states; j++)
+ v[j] += x1px2 * extEV[states * l + j];
+ }
+ }
+
+ }
+ }
+ break;
+ case PLL_TIP_INNER: {
+ tipX1 = pr->partitionData[model]->yVector[tInfo->qNumber];
+ x2 = pr->partitionData[model]->xVector[tInfo->rNumber
+ - tr->mxtips - 1];
+
+ for (i = 0; i < pr->partitionData[model]->width; i++) {
+ for (k = 0; k < 4; k++) {
+ vl = &(pr->partitionData[model]->tipVector[states
+ * tipX1[i]]);
+ vr = &(x2[gammaStates * i + states * k]);
+ v = &(x3_start[gammaStates * i + states * k]);
+
+ for (l = 0; l < states; l++)
+ v[l] = 0;
+
+ for (l = 0; l < states; l++) {
+ al = 0.0;
+ ar = 0.0;
+ for (j = 0; j < states; j++) {
+ al += vl[j]
+ * left[k * states * states
+ + l * states + j];
+ ar += vr[j]
+ * right[k * states * states
+ + l * states + j];
+ }
+
+ x1px2 = al * ar;
+ for (j = 0; j < states; j++) {
+ v[j] += x1px2 * extEV[states * l + j];
+ }
+ }
+ }
+
+ v = x3_start;
+
+ scale = 1;
+ for (l = 0; scale && (l < gammaStates); l++)
+ scale = (fabs(v[l]) < PLL_MINLIKELIHOOD);
+
+ if (scale) {
+ for (l = 0; l < gammaStates; l++)
+ v[l] *= PLL_TWOTOTHE256;
+ }
+ }
+ }
+ break;
+ case PLL_INNER_INNER:
+ x1 = pr->partitionData[model]->xVector[tInfo->qNumber
+ - tr->mxtips - 1];
+ x2 = pr->partitionData[model]->xVector[tInfo->rNumber
+ - tr->mxtips - 1];
+ for (i = 0; i < pr->partitionData[model]->width; i++) {
+ for (k = 0; k < 4; k++) {
+ vl = &(x1[gammaStates * i + states * k]);
+ vr = &(x2[gammaStates * i + states * k]);
+ v = &(x3_start[gammaStates * i + states * k]);
+
+ for (l = 0; l < states; l++)
+ v[l] = 0;
+
+ for (l = 0; l < states; l++) {
+ al = 0.0;
+ ar = 0.0;
+ for (j = 0; j < states; j++) {
+ al += vl[j]
+ * left[k * states * states
+ + l * states + j];
+ ar += vr[j]
+ * right[k * states * states
+ + l * states + j];
+ }
+
+ x1px2 = al * ar;
+ for (j = 0; j < states; j++)
+ v[j] += x1px2 * extEV[states * l + j];
+ }
+ }
+
+ v = x3_start;
+ scale = 1;
+ for (l = 0; scale && (l < gammaStates); l++)
+ scale = ((fabs(v[l]) < PLL_MINLIKELIHOOD));
+
+ if (scale) {
+ for (l = 0; l < gammaStates; l++)
+ v[l] *= PLL_TWOTOTHE256;
+ }
+
+ }
+ break;
+ default:
+ assert(0);
+ }
+ } else {
+ x3_start = pr->partitionData[model]->xVector[p_slot];
+ }
+ availableLength = pr->partitionData[model]->xSpaceVector[p_slot];
+ requiredLength = virtual_width(width) * rateHet * states
+ * sizeof(double);
+ /* make sure that this vector had already been allocated. This must be
+ * PLL_TRUE since we first invoked a standard newview() on this */
+ assert(requiredLength == availableLength);
+
+ /* switch over the rate heterogeneity model
+ and call generic functions that compute the marginal ancestral states and
+ store them in pr->partitionData[model]->ancestralBuffer
+ */
+ if (tr->rateHetModel == PLL_CAT)
+ ancestralCat(x3_start,
+ pr->partitionData[model]->ancestralBuffer, diagptable,
+ width, states, pr->partitionData[model]->rateCategory);
+ else
+ ancestralGamma(x3_start,
+ pr->partitionData[model]->ancestralBuffer, diagptable,
+ width, states, categories * states, atRoot);
+
+ if (atRoot) {
+ rax_free(x3_start);
+ }
+ rax_free(diagptable);
+ }
+ }
+}
+
+/** @brief Computes the Conditional Likelihood Vector (CLV) for each rate of some internal node.
+
+ Computes the conditional likelihood vectors of node \a p for each rate, given the partition
+ index \a partition. The result is placed in the array \a outProbs, which must be pre-allocated
+ by the caller, and must be of size \a sites * categories * states * sizeof(double). The structure of
+ the resulting array is the following:
+ For each site we have \a categories * states cells of size \a double. Those cells are divided per rate
+ category, i.e. first \a states cells are the probabilities for the states of rate 1 (ordered alphabetically
+ by base name), next \a states cells for rate 2 and so on.
+
+ @param tr PLL instance
+ @param pr List of partitions
+ @param p Node for which we want to compute the CLV
+ @param partition Index of the partition for which to compute the CLV
+ @param outProbs Pre-allocated array where the result will be stored
+
+ @returns Returns \b PLL_TRUE on success, \b PLL_FALSE on failure
+
+ @todo Fix to work with CAT
+*/
+int pllGetCLV (pllInstance * tr, partitionList * pr, nodeptr p, int partition, double * outProbs)
+{
+ size_t i, j, k, l;
+
+ if (tr->rateHetModel != PLL_GAMMA) return (PLL_FALSE);
+
+ int p_slot;
+ size_t states = (size_t)pr->partitionData[partition]->states;
+
+ double
+ *term = (double*)rax_malloc(sizeof(double) * states);
+
+ if(tr->useRecom)
+ p_slot = p->number;
+ else
+ p_slot = p->number - tr->mxtips - 1;
+
+ size_t width = (size_t) pr->partitionData[partition]->width;
+ double * diagptable = NULL;
+ double * rateCategories = pr->partitionData[partition]->gammaRates;
+ double * x3 = pr->partitionData[partition]->xVector[p_slot];
+ size_t categories = 4;
+
+ rax_posix_memalign ((void **)&diagptable, PLL_BYTE_ALIGNMENT, categories * states * states * sizeof (double));
+
+ calc_diagp_Ancestral(rateCategories, pr->partitionData[partition]->EI, pr->partitionData[partition]->EIGN, categories, diagptable, states);
+
+ for (i = 0; i < width; ++ i)
+ {
+ double
+ *_v = &x3[categories * states * i],
+ *clv = &outProbs[categories * states * i];
+
+ for (k = 0; k < categories; ++ k)
+ {
+ double
+ sum = 0.0,
+ *v = &(_v[states * k]);
+
+ for (l = 0; l < states; ++ l)
+ {
+ double al = 0.0;
+
+ for (j = 0; j < states; ++ j)
+ al += v[j] * diagptable[k * states * states + l * states + j];
+
+ term[l] = al;
+ sum += al;
+ }
+ for (l = 0; l < states; ++ l)
+ clv[k * categories + l] = term[l] / sum;
+ }
+ }
+
+ rax_free(term);
+ rax_free(diagptable);
+
+ return (PLL_TRUE);
+}
+
+static void traversalInfoAncestralRoot(nodeptr p, traversalInfo *ti,
+ int *counter, int maxTips, int numberOfPartitions) {
+ int i;
+
+ nodeptr q = p, r = p->back;
+
+ for (i = 0; i < numberOfPartitions; i++) {
+ double z = sqrt(q->z[i]);
+ if (z < PLL_ZMIN)
+ z = PLL_ZMIN;
+ if (z > PLL_ZMAX)
+ z = PLL_ZMAX;
+
+ z = log(z);
+
+ ti[*counter].qz[i] = z;
+ ti[*counter].rz[i] = z;
+ }
+
+ if (isTip(r->number, maxTips) && isTip(q->number, maxTips)) {
+ ti[*counter].tipCase = PLL_TIP_TIP;
+ ti[*counter].qNumber = q->number;
+ ti[*counter].rNumber = r->number;
+
+ *counter = *counter + 1;
+ } else {
+ if (isTip(r->number, maxTips) || isTip(q->number, maxTips)) {
+ nodeptr tmp;
+
+ if (isTip(r->number, maxTips)) {
+ tmp = r;
+ r = q;
+ q = tmp;
+ }
+
+ ti[*counter].tipCase = PLL_TIP_INNER;
+ ti[*counter].qNumber = q->number;
+ ti[*counter].rNumber = r->number;
+
+ *counter = *counter + 1;
+ } else {
+ ti[*counter].tipCase = PLL_INNER_INNER;
+ ti[*counter].qNumber = q->number;
+ ti[*counter].rNumber = r->number;
+
+ *counter = *counter + 1;
+ }
+ }
+}
+
+/* this is very similar to pllUpdatePartials, except that it also computes the marginal ancestral probabilities
+ at node p. To simplify the code I am re-using newview() here to first get the likelihood vector p->x at p
+ and then I deploy newviewAncestralIterative(tr); that should always only have a traversal descriptor of lenth 1,
+ to do some mathematical transformations that are required to obtain the marginal ancestral probabilities from
+ the conditional likelihood array at p.
+
+ Note that the marginal ancestral probability vector summarizes the subtree rooted at p! */
+
+/** @brief Computes the conditional likelihood vectors of all nodes in the subtree rooted at \a p
+ and the marginal ancestral probabilities at node \a p
+
+ Compute the conditional likelihood vectors of all nodes in the subtree rooted at node \a p. The
+ conditional likelihood vector at node \a p is recomputed regardless of whether the orientation (i.e. \a p->x)
+ is correct or not, and, recursively, the likelihoods at each node in the subtree as needed and if necessary.
+ In addition, the marginal ancestral probability vector for node \a p is also computed.
+
+ @param tr
+ PLL instance
+
+ @param pr
+ List of partitions
+
+ @param p
+ Node for which we want to compute the ancestral vector
+
+ @param atRoot
+ If PLL_TRUE, special case where p points to the root branch
+
+ @note
+ This function is not implemented with the saveMemory technique.
+*/
+void pllUpdatePartialsAncestral(pllInstance *tr, partitionList *pr, nodeptr p, int atRoot)
+{
+ /* error check, we don't need to compute anything for tips */
+
+ if(!atRoot && isTip(p->number, tr->mxtips))
+ {
+ printf("You are trying to compute the ancestral states on a tip node of the tree\n");
+ assert(0);
+ }
+
+ /* doesn't work yet in conjunction with SEVs, can be implemented though at some point
+ if urgently required */
+
+ if(tr->saveMemory)
+ {
+ printf("ancestral state implementation will not work with memory saving (SEVs) enabled!\n");
+ printf("returning without computing anything ... \n");
+ return;
+ }
+
+ /* first call pllUpdatePartials() with mask set to PLL_FALSE such that the likelihood vector is there ! */
+
+ pllUpdatePartials(tr, pr, p, PLL_FALSE);
+
+ /* now let's compute the ancestral states using this vector ! */
+
+ if (atRoot) {
+ /* to make things easy and reduce code size, let's re-compute a standard traversal descriptor for node p,
+ hence we need to set the count to 0 */
+
+ tr->td[0].count = 0;
+
+ traversalInfoAncestralRoot(p, &(tr->td[0].ti[0]), &(tr->td[0].count), tr->mxtips, pr->numberOfPartitions);
+
+ tr->td[0].traversalHasChanged = PLL_TRUE;
+ } else {
+
+ /* to make things easy and reduce code size, let's re-compute a standard traversal descriptor for node p,
+ hence we need to set the count to 0 */
+
+ tr->td[0].count = 0;
+
+ computeTraversalInfo(p, &(tr->td[0].ti[0]), &(tr->td[0].count), tr->mxtips, pr->perGeneBranchLengths?pr->numberOfPartitions : 1, PLL_TRUE, tr->rvec, tr->useRecom);
+
+ tr->td[0].traversalHasChanged = PLL_TRUE;
+
+ }
+
+ /* here we actually assert, that the traversal descriptor only contains one node triplet p, p->next->back, p->next->next->back
+ this must be PLL_TRUE because we have alread invoked the standard pllUpdatePartials() on p.
+ */
+
+ assert(tr->td[0].count == 1);
+
+#if (defined(_FINE_GRAIN_MPI) || defined(_USE_PTHREADS))
+ /* use the pthreads barrier to invoke newviewAncestralIterative() on a per-thread basis */
+
+ pllMasterBarrier (tr, pr, PLL_THREAD_NEWVIEW_ANCESTRAL);
+#else
+ /* now call the dedicated function that does the mathematical transformation of the
+ conditional likelihood vector at p to obtain the marginal ancestral states */
+
+ newviewAncestralIterative(tr, pr);
+#endif
+
+ tr->td[0].traversalHasChanged = PLL_FALSE;
+
+#if (defined(_FINE_GRAIN_MPI) || defined(_USE_PTHREADS))
+ /* invoke another parallel region to gather the marginal ancestral probabilities
+ from the threads/MPI processes */
+
+ pllMasterBarrier (tr, pr, PLL_THREAD_GATHER_ANCESTRAL);
+#endif
+
+
+}
+
+/* returns the character representation of an enumerated DNA or AA state */
+
+/** @brief Get the character representation of an enumerated DNA or AA state
+
+ Returns the character representation of the enumarates DNA or AA state,
+ from the constant arrays \a dnaStateNames (for DNA) or \a protStateNames (for proteins).
+
+ @param dataType
+ Type of data, i.e. \b PLL_DNA_DATA or \b PLL_AA_DATA
+
+ @param state
+ The number which we want to decode to a letter
+
+ @return
+ Returns the decoded character
+ */
+static char getStateCharacter(int dataType, int state)
+{
+ char
+ result;
+
+ switch(dataType)
+ {
+ case PLL_BINARY_DATA:
+ result = binaryStateNames[state];
+ break;
+ case PLL_DNA_DATA:
+ result = dnaStateNames[state];
+ break;
+ case PLL_AA_DATA:
+ result = protStateNames[state];
+ break;
+ default:
+ assert(0);
+ }
+
+ return result;
+}
+
+/** @brief Prints the ancestral state information for a node \a p to the terminal
+
+ Prints the ancestral state information for a node \a p to the terminal.
+ The ancestral state sequence, resp. marginal ancestral state probabilities, is printed
+ depending on whether \a \a printStates, resp. \a printProbs, is set to \b PLL_TRUE.
+
+ @param p
+ The node for which to print the ancestral state sequence
+
+ @param printStates
+ If set to \b PLL_TRUE then the ancestral state sequence is printed
+
+ @param printProbs
+ If set to \b PLL_TRUE then the marginal ancestral state probabilities are printed
+
+ @param tr
+ PLL instance
+
+ @param pr
+ List of partitions
+
+ @note Here one can see how to store the ancestral probabilities in a dedicated data structure
+ */
+void printAncestralState(nodeptr p, boolean printStates, boolean printProbs, pllInstance *tr, partitionList *pr)
+{
+#ifdef _USE_PTHREADS
+ size_t
+ accumulatedOffset = 0;
+#endif
+
+ int
+ j,
+ k,
+ model,
+ globalIndex = 0;
+
+ /* allocate an array of structs for storing ancestral prob vector info/data */
+
+ ancestralState
+ *a = (ancestralState *)rax_malloc(sizeof(ancestralState) * tr->originalCrunchedLength);
+
+ /* loop over partitions */
+
+ for(model = 0; model < pr->numberOfPartitions; model++)
+ {
+ int
+ i,
+ width = pr->partitionData[model]->upper - pr->partitionData[model]->lower,
+ states = pr->partitionData[model]->states;
+
+ /* set pointer to ancestral probability vector */
+
+#ifdef _USE_PTHREADS
+ double
+ *ancestral = &tr->ancestralVector[accumulatedOffset];
+#else
+ double
+ *ancestral = pr->partitionData[model]->ancestralBuffer;
+#endif
+
+ /* loop over the sites of the partition */
+
+ for(i = 0; i < width; i++, globalIndex++)
+ {
+ double
+ equal = 1.0 / (double)states,
+ max = -1.0;
+
+ boolean
+ approximatelyEqual = PLL_TRUE;
+
+ int
+ max_l = -1,
+ l;
+
+ char
+ c;
+
+ /* stiore number of states for this site */
+
+ a[globalIndex].states = states;
+
+ /* alloc space for storing marginal ancestral probabilities */
+
+ a[globalIndex].probs = (double *)rax_malloc(sizeof(double) * states);
+
+ /* loop over states to store probabilities and find the maximum */
+
+ for(l = 0; l < states; l++)
+ {
+ double
+ value = ancestral[states * i + l];
+
+ if(value > max)
+ {
+ max = value;
+ max_l = l;
+ }
+
+ /* this is used for discretizing the ancestral state sequence, if all marginal ancestral
+ probabilities are approximately equal we output a ? */
+
+ approximatelyEqual = approximatelyEqual && (PLL_ABS(equal - value) < 0.000001);
+
+ a[globalIndex].probs[l] = value;
+ }
+
+
+ /* figure out the discrete ancestral nucleotide */
+
+ if(approximatelyEqual)
+ c = '?';
+ else
+ c = getStateCharacter(pr->partitionData[model]->dataType, max_l);
+
+ a[globalIndex].c = c;
+ }
+
+#ifdef _USE_PTHREADS
+ accumulatedOffset += width * states;
+#endif
+ }
+
+ /* print marginal ancestral probs to terminal */
+
+ if(printProbs)
+ {
+ printf("%d\n", p->number);
+
+ for(k = 0; k < tr->originalCrunchedLength; k++)
+ {
+ for(j = 0; j < a[k].states; j++)
+ printf("%f ", a[k].probs[j]);
+ printf("\n");
+ }
+
+ printf("\n");
+ }
+
+ /* print discrete state ancestrakl sequence to terminal */
+
+ if(printStates)
+ {
+ printf("%d ", p->number);
+
+ for(k = 0; k < tr->originalCrunchedLength; k++)
+ printf("%c", a[k].c);
+
+ printf("\n");
+ }
+
+ /* free the ancestral state data structure */
+
+ for(j = 0; j < tr->originalCrunchedLength; j++)
+ rax_free(a[j].probs);
+
+ rax_free(a);
+}
+
+void pllGetAncestralState(pllInstance *tr, partitionList *pr, nodeptr p, double * outProbs, char * outSequence, int atRoot)
+{
+#ifdef _USE_PTHREADS
+ size_t
+ accumulatedOffset = 0;
+#endif
+
+ int
+ j,
+ k,
+ model,
+ globalIndex = 0;
+
+ pllUpdatePartialsAncestral(tr, pr, p, atRoot);
+
+ /* allocate an array of structs for storing ancestral prob vector info/data */
+
+ ancestralState
+ *a = (ancestralState *)rax_malloc(sizeof(ancestralState) * tr->originalCrunchedLength);
+
+ /* loop over partitions */
+
+ for(model = 0; model < pr->numberOfPartitions; model++)
+ {
+ int
+ i,
+ width = pr->partitionData[model]->upper - pr->partitionData[model]->lower,
+ states = pr->partitionData[model]->states;
+
+ /* set pointer to ancestral probability vector */
+
+#ifdef _USE_PTHREADS
+ double
+ *ancestral = &tr->ancestralVector[accumulatedOffset];
+#else
+ double
+ *ancestral = pr->partitionData[model]->ancestralBuffer;
+#endif
+
+ /* loop over the sites of the partition */
+
+ for(i = 0; i < width; i++, globalIndex++)
+ {
+ double
+ equal = 1.0 / (double)states,
+ max = -1.0;
+
+ boolean
+ approximatelyEqual = PLL_TRUE;
+
+ int
+ max_l = -1,
+ l;
+
+ char
+ c;
+
+ /* stiore number of states for this site */
+
+ a[globalIndex].states = states;
+
+ /* alloc space for storing marginal ancestral probabilities */
+
+ a[globalIndex].probs = (double *)rax_malloc(sizeof(double) * states);
+
+ /* loop over states to store probabilities and find the maximum */
+
+ for(l = 0; l < states; l++)
+ {
+ double
+ value = ancestral[states * i + l];
+
+ if(value > max)
+ {
+ max = value;
+ max_l = l;
+ }
+
+ /* this is used for discretizing the ancestral state sequence, if all marginal ancestral
+ probabilities are approximately equal we output a ? */
+
+ approximatelyEqual = approximatelyEqual && (PLL_ABS(equal - value) < 0.000001);
+
+ a[globalIndex].probs[l] = value;
+ }
+
+
+ /* figure out the discrete ancestral nucleotide */
+
+ if(approximatelyEqual)
+ c = '?';
+ else
+ c = getStateCharacter(pr->partitionData[model]->dataType, max_l);
+
+ a[globalIndex].c = c;
+ }
+
+#ifdef _USE_PTHREADS
+ accumulatedOffset += width * states;
+#endif
+ }
+
+ /* print marginal ancestral probs to terminal */
+
+ for(k = 0; k < tr->originalCrunchedLength; k++)
+ {
+ for(j = 0; j < a[k].states; j++)
+ outProbs[k * a[k].states + j] = a[k].probs[j];
+ }
+
+ /* print discrete state ancestrakl sequence to terminal */
+
+ for(k = 0; k < tr->originalCrunchedLength; k++)
+ outSequence[k] = a[k].c;
+ outSequence[tr->originalCrunchedLength] = 0;
+
+ /* free the ancestral state data structure */
+
+ for(j = 0; j < tr->originalCrunchedLength; j++)
+ rax_free(a[j].probs);
+
+ rax_free(a);
+}
+/* optimized function implementations */
+
+
+/**
+ * @defgroup group1 Optimized functions
+ * This is the optimized functions group
+ */
+
+#if (!defined(__AVX) && defined(__SSE3))
+
+/** @ingroup group1
+ * @brief Computation of conditional likelihood arrray for GTR GAMMA with memory saving (Optimized SSE3 version for DNA data)
+
+ This is the SSE3 optimized version of ::newviewGAMMA_FLEX for computing the conditional
+ likelihood arrays at some node \a p, given child nodes \a q and \a r using the \b GAMMA
+ model of rate heterogeneity. The memory saving technique is incorporated.
+
+ @note
+ For more details and function argument description check the function ::newviewGAMMA_FLEX
+*/
+static void newviewGTRGAMMA_GAPPED_SAVE(int tipCase,
+ double *x1_start, double *x2_start, double *x3_start,
+ double *EV, double *tipVector,
+ int *ex3, unsigned char *tipX1, unsigned char *tipX2,
+ const int n, double *left, double *right, int *wgt, int *scalerIncrement, const boolean fastScaling,
+ unsigned int *x1_gap, unsigned int *x2_gap, unsigned int *x3_gap,
+ double *x1_gapColumn, double *x2_gapColumn, double *x3_gapColumn)
+{
+ int
+ i,
+ j,
+ k,
+ l,
+ addScale = 0,
+ scaleGap = 0;
+
+ double
+ *x1,
+ *x2,
+ *x3,
+ *x1_ptr = x1_start,
+ *x2_ptr = x2_start,
+ max,
+ maxima[2] __attribute__ ((aligned (PLL_BYTE_ALIGNMENT))),
+ EV_t[16] __attribute__ ((aligned (PLL_BYTE_ALIGNMENT)));
+
+ __m128d
+ values[8],
+ EVV[8];
+
+ for(k = 0; k < 4; k++)
+ for (l=0; l < 4; l++)
+ EV_t[4 * l + k] = EV[4 * k + l];
+
+ for(k = 0; k < 8; k++)
+ EVV[k] = _mm_load_pd(&EV_t[k * 2]);
+
+
+
+ switch(tipCase)
+ {
+ case PLL_TIP_TIP:
+ {
+ double *uX1, umpX1[256] __attribute__ ((aligned (PLL_BYTE_ALIGNMENT))), *uX2, umpX2[256] __attribute__ ((aligned (PLL_BYTE_ALIGNMENT)));
+
+
+ for (i = 1; i < 16; i++)
+ {
+ __m128d x1_1 = _mm_load_pd(&(tipVector[i*4]));
+ __m128d x1_2 = _mm_load_pd(&(tipVector[i*4 + 2]));
+
+ for (j = 0; j < 4; j++)
+ for (k = 0; k < 4; k++)
+ {
+ __m128d left1 = _mm_load_pd(&left[j*16 + k*4]);
+ __m128d left2 = _mm_load_pd(&left[j*16 + k*4 + 2]);
+
+ __m128d acc = _mm_setzero_pd();
+
+ acc = _mm_add_pd(acc, _mm_mul_pd(left1, x1_1));
+ acc = _mm_add_pd(acc, _mm_mul_pd(left2, x1_2));
+
+ acc = _mm_hadd_pd(acc, acc);
+ _mm_storel_pd(&umpX1[i*16 + j*4 + k], acc);
+ }
+
+ for (j = 0; j < 4; j++)
+ for (k = 0; k < 4; k++)
+ {
+ __m128d left1 = _mm_load_pd(&right[j*16 + k*4]);
+ __m128d left2 = _mm_load_pd(&right[j*16 + k*4 + 2]);
+
+ __m128d acc = _mm_setzero_pd();
+
+ acc = _mm_add_pd(acc, _mm_mul_pd(left1, x1_1));
+ acc = _mm_add_pd(acc, _mm_mul_pd(left2, x1_2));
+
+ acc = _mm_hadd_pd(acc, acc);
+ _mm_storel_pd(&umpX2[i*16 + j*4 + k], acc);
+
+ }
+ }
+
+ uX1 = &umpX1[240];
+ uX2 = &umpX2[240];
+
+ for (j = 0; j < 4; j++)
+ {
+ __m128d uX1_k0_sse = _mm_load_pd( &uX1[j * 4] );
+ __m128d uX1_k2_sse = _mm_load_pd( &uX1[j * 4 + 2] );
+
+ __m128d uX2_k0_sse = _mm_load_pd( &uX2[j * 4] );
+ __m128d uX2_k2_sse = _mm_load_pd( &uX2[j * 4 + 2] );
+
+ __m128d x1px2_k0 = _mm_mul_pd( uX1_k0_sse, uX2_k0_sse );
+ __m128d x1px2_k2 = _mm_mul_pd( uX1_k2_sse, uX2_k2_sse );
+
+ __m128d EV_t_l0_k0 = EVV[0];
+ __m128d EV_t_l0_k2 = EVV[1];
+ __m128d EV_t_l1_k0 = EVV[2];
+ __m128d EV_t_l1_k2 = EVV[3];
+ __m128d EV_t_l2_k0 = EVV[4];
+ __m128d EV_t_l2_k2 = EVV[5];
+ __m128d EV_t_l3_k0 = EVV[6];
+ __m128d EV_t_l3_k2 = EVV[7];
+
+ EV_t_l0_k0 = _mm_mul_pd( x1px2_k0, EV_t_l0_k0 );
+ EV_t_l0_k2 = _mm_mul_pd( x1px2_k2, EV_t_l0_k2 );
+ EV_t_l0_k0 = _mm_hadd_pd( EV_t_l0_k0, EV_t_l0_k2 );
+
+ EV_t_l1_k0 = _mm_mul_pd( x1px2_k0, EV_t_l1_k0 );
+ EV_t_l1_k2 = _mm_mul_pd( x1px2_k2, EV_t_l1_k2 );
+
+ EV_t_l1_k0 = _mm_hadd_pd( EV_t_l1_k0, EV_t_l1_k2 );
+ EV_t_l0_k0 = _mm_hadd_pd( EV_t_l0_k0, EV_t_l1_k0 );
+
+ EV_t_l2_k0 = _mm_mul_pd( x1px2_k0, EV_t_l2_k0 );
+ EV_t_l2_k2 = _mm_mul_pd( x1px2_k2, EV_t_l2_k2 );
+ EV_t_l2_k0 = _mm_hadd_pd( EV_t_l2_k0, EV_t_l2_k2 );
+
+ EV_t_l3_k0 = _mm_mul_pd( x1px2_k0, EV_t_l3_k0 );
+ EV_t_l3_k2 = _mm_mul_pd( x1px2_k2, EV_t_l3_k2 );
+ EV_t_l3_k0 = _mm_hadd_pd( EV_t_l3_k0, EV_t_l3_k2 );
+
+ EV_t_l2_k0 = _mm_hadd_pd( EV_t_l2_k0, EV_t_l3_k0 );
+
+ _mm_store_pd( &x3_gapColumn[j * 4 + 0], EV_t_l0_k0 );
+ _mm_store_pd( &x3_gapColumn[j * 4 + 2], EV_t_l2_k0 );
+ }
+
+
+ x3 = x3_start;
+
+ for (i = 0; i < n; i++)
+ {
+ if(!(x3_gap[i / 32] & mask32[i % 32]))
+ {
+ uX1 = &umpX1[16 * tipX1[i]];
+ uX2 = &umpX2[16 * tipX2[i]];
+
+ for (j = 0; j < 4; j++)
+ {
+ __m128d uX1_k0_sse = _mm_load_pd( &uX1[j * 4] );
+ __m128d uX1_k2_sse = _mm_load_pd( &uX1[j * 4 + 2] );
+
+
+ __m128d uX2_k0_sse = _mm_load_pd( &uX2[j * 4] );
+ __m128d uX2_k2_sse = _mm_load_pd( &uX2[j * 4 + 2] );
+
+
+ //
+ // multiply left * right
+ //
+
+ __m128d x1px2_k0 = _mm_mul_pd( uX1_k0_sse, uX2_k0_sse );
+ __m128d x1px2_k2 = _mm_mul_pd( uX1_k2_sse, uX2_k2_sse );
+
+
+ //
+ // multiply with EV matrix (!?)
+ //
+
+ __m128d EV_t_l0_k0 = EVV[0];
+ __m128d EV_t_l0_k2 = EVV[1];
+ __m128d EV_t_l1_k0 = EVV[2];
+ __m128d EV_t_l1_k2 = EVV[3];
+ __m128d EV_t_l2_k0 = EVV[4];
+ __m128d EV_t_l2_k2 = EVV[5];
+ __m128d EV_t_l3_k0 = EVV[6];
+ __m128d EV_t_l3_k2 = EVV[7];
+
+ EV_t_l0_k0 = _mm_mul_pd( x1px2_k0, EV_t_l0_k0 );
+ EV_t_l0_k2 = _mm_mul_pd( x1px2_k2, EV_t_l0_k2 );
+ EV_t_l0_k0 = _mm_hadd_pd( EV_t_l0_k0, EV_t_l0_k2 );
+
+ EV_t_l1_k0 = _mm_mul_pd( x1px2_k0, EV_t_l1_k0 );
+ EV_t_l1_k2 = _mm_mul_pd( x1px2_k2, EV_t_l1_k2 );
+
+ EV_t_l1_k0 = _mm_hadd_pd( EV_t_l1_k0, EV_t_l1_k2 );
+ EV_t_l0_k0 = _mm_hadd_pd( EV_t_l0_k0, EV_t_l1_k0 );
+
+ EV_t_l2_k0 = _mm_mul_pd( x1px2_k0, EV_t_l2_k0 );
+ EV_t_l2_k2 = _mm_mul_pd( x1px2_k2, EV_t_l2_k2 );
+ EV_t_l2_k0 = _mm_hadd_pd( EV_t_l2_k0, EV_t_l2_k2 );
+
+ EV_t_l3_k0 = _mm_mul_pd( x1px2_k0, EV_t_l3_k0 );
+ EV_t_l3_k2 = _mm_mul_pd( x1px2_k2, EV_t_l3_k2 );
+ EV_t_l3_k0 = _mm_hadd_pd( EV_t_l3_k0, EV_t_l3_k2 );
+
+ EV_t_l2_k0 = _mm_hadd_pd( EV_t_l2_k0, EV_t_l3_k0 );
+
+ _mm_store_pd( &x3[j * 4 + 0], EV_t_l0_k0 );
+ _mm_store_pd( &x3[j * 4 + 2], EV_t_l2_k0 );
+ }
+
+ x3 += 16;
+ }
+ }
+ }
+ break;
+ case PLL_TIP_INNER:
+ {
+ double
+ *uX1,
+ umpX1[256] __attribute__ ((aligned (PLL_BYTE_ALIGNMENT)));
+
+ for (i = 1; i < 16; i++)
+ {
+ __m128d x1_1 = _mm_load_pd(&(tipVector[i*4]));
+ __m128d x1_2 = _mm_load_pd(&(tipVector[i*4 + 2]));
+
+ for (j = 0; j < 4; j++)
+ for (k = 0; k < 4; k++)
+ {
+ __m128d left1 = _mm_load_pd(&left[j*16 + k*4]);
+ __m128d left2 = _mm_load_pd(&left[j*16 + k*4 + 2]);
+
+ __m128d acc = _mm_setzero_pd();
+
+ acc = _mm_add_pd(acc, _mm_mul_pd(left1, x1_1));
+ acc = _mm_add_pd(acc, _mm_mul_pd(left2, x1_2));
+
+ acc = _mm_hadd_pd(acc, acc);
+ _mm_storel_pd(&umpX1[i*16 + j*4 + k], acc);
+ }
+ }
+
+ {
+ __m128d maxv =_mm_setzero_pd();
+
+ scaleGap = 0;
+
+ x2 = x2_gapColumn;
+ x3 = x3_gapColumn;
+
+ uX1 = &umpX1[240];
+
+ for (j = 0; j < 4; j++)
+ {
+ double *x2_p = &x2[j*4];
+ double *right_k0_p = &right[j*16];
+ double *right_k1_p = &right[j*16 + 1*4];
+ double *right_k2_p = &right[j*16 + 2*4];
+ double *right_k3_p = &right[j*16 + 3*4];
+ __m128d x2_0 = _mm_load_pd( &x2_p[0] );
+ __m128d x2_2 = _mm_load_pd( &x2_p[2] );
+
+ __m128d right_k0_0 = _mm_load_pd( &right_k0_p[0] );
+ __m128d right_k0_2 = _mm_load_pd( &right_k0_p[2] );
+ __m128d right_k1_0 = _mm_load_pd( &right_k1_p[0] );
+ __m128d right_k1_2 = _mm_load_pd( &right_k1_p[2] );
+ __m128d right_k2_0 = _mm_load_pd( &right_k2_p[0] );
+ __m128d right_k2_2 = _mm_load_pd( &right_k2_p[2] );
+ __m128d right_k3_0 = _mm_load_pd( &right_k3_p[0] );
+ __m128d right_k3_2 = _mm_load_pd( &right_k3_p[2] );
+
+ right_k0_0 = _mm_mul_pd( x2_0, right_k0_0);
+ right_k0_2 = _mm_mul_pd( x2_2, right_k0_2);
+
+ right_k1_0 = _mm_mul_pd( x2_0, right_k1_0);
+ right_k1_2 = _mm_mul_pd( x2_2, right_k1_2);
+
+ right_k0_0 = _mm_hadd_pd( right_k0_0, right_k0_2);
+ right_k1_0 = _mm_hadd_pd( right_k1_0, right_k1_2);
+ right_k0_0 = _mm_hadd_pd( right_k0_0, right_k1_0);
+
+ right_k2_0 = _mm_mul_pd( x2_0, right_k2_0);
+ right_k2_2 = _mm_mul_pd( x2_2, right_k2_2);
+
+ right_k3_0 = _mm_mul_pd( x2_0, right_k3_0);
+ right_k3_2 = _mm_mul_pd( x2_2, right_k3_2);
+
+ right_k2_0 = _mm_hadd_pd( right_k2_0, right_k2_2);
+ right_k3_0 = _mm_hadd_pd( right_k3_0, right_k3_2);
+ right_k2_0 = _mm_hadd_pd( right_k2_0, right_k3_0);
+
+ __m128d uX1_k0_sse = _mm_load_pd( &uX1[j * 4] );
+ __m128d uX1_k2_sse = _mm_load_pd( &uX1[j * 4 + 2] );
+
+ __m128d x1px2_k0 = _mm_mul_pd( uX1_k0_sse, right_k0_0 );
+ __m128d x1px2_k2 = _mm_mul_pd( uX1_k2_sse, right_k2_0 );
+
+ __m128d EV_t_l0_k0 = EVV[0];
+ __m128d EV_t_l0_k2 = EVV[1];
+ __m128d EV_t_l1_k0 = EVV[2];
+ __m128d EV_t_l1_k2 = EVV[3];
+ __m128d EV_t_l2_k0 = EVV[4];
+ __m128d EV_t_l2_k2 = EVV[5];
+ __m128d EV_t_l3_k0 = EVV[6];
+ __m128d EV_t_l3_k2 = EVV[7];
+
+ EV_t_l0_k0 = _mm_mul_pd( x1px2_k0, EV_t_l0_k0 );
+ EV_t_l0_k2 = _mm_mul_pd( x1px2_k2, EV_t_l0_k2 );
+ EV_t_l0_k0 = _mm_hadd_pd( EV_t_l0_k0, EV_t_l0_k2 );
+
+ EV_t_l1_k0 = _mm_mul_pd( x1px2_k0, EV_t_l1_k0 );
+ EV_t_l1_k2 = _mm_mul_pd( x1px2_k2, EV_t_l1_k2 );
+
+ EV_t_l1_k0 = _mm_hadd_pd( EV_t_l1_k0, EV_t_l1_k2 );
+ EV_t_l0_k0 = _mm_hadd_pd( EV_t_l0_k0, EV_t_l1_k0 );
+
+ EV_t_l2_k0 = _mm_mul_pd( x1px2_k0, EV_t_l2_k0 );
+ EV_t_l2_k2 = _mm_mul_pd( x1px2_k2, EV_t_l2_k2 );
+ EV_t_l2_k0 = _mm_hadd_pd( EV_t_l2_k0, EV_t_l2_k2 );
+
+ EV_t_l3_k0 = _mm_mul_pd( x1px2_k0, EV_t_l3_k0 );
+ EV_t_l3_k2 = _mm_mul_pd( x1px2_k2, EV_t_l3_k2 );
+ EV_t_l3_k0 = _mm_hadd_pd( EV_t_l3_k0, EV_t_l3_k2 );
+
+ EV_t_l2_k0 = _mm_hadd_pd( EV_t_l2_k0, EV_t_l3_k0 );
+
+ values[j * 2] = EV_t_l0_k0;
+ values[j * 2 + 1] = EV_t_l2_k0;
+
+ maxv = _mm_max_pd(maxv, _mm_and_pd(EV_t_l0_k0, absMask.m));
+ maxv = _mm_max_pd(maxv, _mm_and_pd(EV_t_l2_k0, absMask.m));
+ }
+
+
+ _mm_store_pd(maxima, maxv);
+
+ max = PLL_MAX(maxima[0], maxima[1]);
+
+ if(max < PLL_MINLIKELIHOOD)
+ {
+ scaleGap = 1;
+
+ __m128d sv = _mm_set1_pd(PLL_TWOTOTHE256);
+
+ _mm_store_pd(&x3[0], _mm_mul_pd(values[0], sv));
+ _mm_store_pd(&x3[2], _mm_mul_pd(values[1], sv));
+ _mm_store_pd(&x3[4], _mm_mul_pd(values[2], sv));
+ _mm_store_pd(&x3[6], _mm_mul_pd(values[3], sv));
+ _mm_store_pd(&x3[8], _mm_mul_pd(values[4], sv));
+ _mm_store_pd(&x3[10], _mm_mul_pd(values[5], sv));
+ _mm_store_pd(&x3[12], _mm_mul_pd(values[6], sv));
+ _mm_store_pd(&x3[14], _mm_mul_pd(values[7], sv));
+ }
+ else
+ {
+ _mm_store_pd(&x3[0], values[0]);
+ _mm_store_pd(&x3[2], values[1]);
+ _mm_store_pd(&x3[4], values[2]);
+ _mm_store_pd(&x3[6], values[3]);
+ _mm_store_pd(&x3[8], values[4]);
+ _mm_store_pd(&x3[10], values[5]);
+ _mm_store_pd(&x3[12], values[6]);
+ _mm_store_pd(&x3[14], values[7]);
+ }
+ }
+
+ x3 = x3_start;
+
+ for (i = 0; i < n; i++)
+ {
+ if((x3_gap[i / 32] & mask32[i % 32]))
+ {
+ if(scaleGap)
+ {
+ if(!fastScaling)
+ ex3[i] += 1;
+ else
+ addScale += wgt[i];
+ }
+ }
+ else
+ {
+ __m128d maxv =_mm_setzero_pd();
+
+ if(x2_gap[i / 32] & mask32[i % 32])
+ x2 = x2_gapColumn;
+ else
+ {
+ x2 = x2_ptr;
+ x2_ptr += 16;
+ }
+
+ uX1 = &umpX1[16 * tipX1[i]];
+
+
+ for (j = 0; j < 4; j++)
+ {
+ double *x2_p = &x2[j*4];
+ double *right_k0_p = &right[j*16];
+ double *right_k1_p = &right[j*16 + 1*4];
+ double *right_k2_p = &right[j*16 + 2*4];
+ double *right_k3_p = &right[j*16 + 3*4];
+ __m128d x2_0 = _mm_load_pd( &x2_p[0] );
+ __m128d x2_2 = _mm_load_pd( &x2_p[2] );
+
+ __m128d right_k0_0 = _mm_load_pd( &right_k0_p[0] );
+ __m128d right_k0_2 = _mm_load_pd( &right_k0_p[2] );
+ __m128d right_k1_0 = _mm_load_pd( &right_k1_p[0] );
+ __m128d right_k1_2 = _mm_load_pd( &right_k1_p[2] );
+ __m128d right_k2_0 = _mm_load_pd( &right_k2_p[0] );
+ __m128d right_k2_2 = _mm_load_pd( &right_k2_p[2] );
+ __m128d right_k3_0 = _mm_load_pd( &right_k3_p[0] );
+ __m128d right_k3_2 = _mm_load_pd( &right_k3_p[2] );
+
+
+ right_k0_0 = _mm_mul_pd( x2_0, right_k0_0);
+ right_k0_2 = _mm_mul_pd( x2_2, right_k0_2);
+
+ right_k1_0 = _mm_mul_pd( x2_0, right_k1_0);
+ right_k1_2 = _mm_mul_pd( x2_2, right_k1_2);
+
+ right_k0_0 = _mm_hadd_pd( right_k0_0, right_k0_2);
+ right_k1_0 = _mm_hadd_pd( right_k1_0, right_k1_2);
+ right_k0_0 = _mm_hadd_pd( right_k0_0, right_k1_0);
+
+
+ right_k2_0 = _mm_mul_pd( x2_0, right_k2_0);
+ right_k2_2 = _mm_mul_pd( x2_2, right_k2_2);
+
+
+ right_k3_0 = _mm_mul_pd( x2_0, right_k3_0);
+ right_k3_2 = _mm_mul_pd( x2_2, right_k3_2);
+
+ right_k2_0 = _mm_hadd_pd( right_k2_0, right_k2_2);
+ right_k3_0 = _mm_hadd_pd( right_k3_0, right_k3_2);
+ right_k2_0 = _mm_hadd_pd( right_k2_0, right_k3_0);
+
+ {
+ //
+ // load left side from tip vector
+ //
+
+ __m128d uX1_k0_sse = _mm_load_pd( &uX1[j * 4] );
+ __m128d uX1_k2_sse = _mm_load_pd( &uX1[j * 4 + 2] );
+
+
+ //
+ // multiply left * right
+ //
+
+ __m128d x1px2_k0 = _mm_mul_pd( uX1_k0_sse, right_k0_0 );
+ __m128d x1px2_k2 = _mm_mul_pd( uX1_k2_sse, right_k2_0 );
+
+
+ //
+ // multiply with EV matrix (!?)
+ //
+
+ __m128d EV_t_l0_k0 = EVV[0];
+ __m128d EV_t_l0_k2 = EVV[1];
+ __m128d EV_t_l1_k0 = EVV[2];
+ __m128d EV_t_l1_k2 = EVV[3];
+ __m128d EV_t_l2_k0 = EVV[4];
+ __m128d EV_t_l2_k2 = EVV[5];
+ __m128d EV_t_l3_k0 = EVV[6];
+ __m128d EV_t_l3_k2 = EVV[7];
+
+
+ EV_t_l0_k0 = _mm_mul_pd( x1px2_k0, EV_t_l0_k0 );
+ EV_t_l0_k2 = _mm_mul_pd( x1px2_k2, EV_t_l0_k2 );
+ EV_t_l0_k0 = _mm_hadd_pd( EV_t_l0_k0, EV_t_l0_k2 );
+
+ EV_t_l1_k0 = _mm_mul_pd( x1px2_k0, EV_t_l1_k0 );
+ EV_t_l1_k2 = _mm_mul_pd( x1px2_k2, EV_t_l1_k2 );
+
+ EV_t_l1_k0 = _mm_hadd_pd( EV_t_l1_k0, EV_t_l1_k2 );
+ EV_t_l0_k0 = _mm_hadd_pd( EV_t_l0_k0, EV_t_l1_k0 );
+
+ EV_t_l2_k0 = _mm_mul_pd( x1px2_k0, EV_t_l2_k0 );
+ EV_t_l2_k2 = _mm_mul_pd( x1px2_k2, EV_t_l2_k2 );
+ EV_t_l2_k0 = _mm_hadd_pd( EV_t_l2_k0, EV_t_l2_k2 );
+
+ EV_t_l3_k0 = _mm_mul_pd( x1px2_k0, EV_t_l3_k0 );
+ EV_t_l3_k2 = _mm_mul_pd( x1px2_k2, EV_t_l3_k2 );
+ EV_t_l3_k0 = _mm_hadd_pd( EV_t_l3_k0, EV_t_l3_k2 );
+
+ EV_t_l2_k0 = _mm_hadd_pd( EV_t_l2_k0, EV_t_l3_k0 );
+
+ values[j * 2] = EV_t_l0_k0;
+ values[j * 2 + 1] = EV_t_l2_k0;
+
+ maxv = _mm_max_pd(maxv, _mm_and_pd(EV_t_l0_k0, absMask.m));
+ maxv = _mm_max_pd(maxv, _mm_and_pd(EV_t_l2_k0, absMask.m));
+ }
+ }
+
+
+ _mm_store_pd(maxima, maxv);
+
+ max = PLL_MAX(maxima[0], maxima[1]);
+
+ if(max < PLL_MINLIKELIHOOD)
+ {
+ __m128d sv = _mm_set1_pd(PLL_TWOTOTHE256);
+
+ _mm_store_pd(&x3[0], _mm_mul_pd(values[0], sv));
+ _mm_store_pd(&x3[2], _mm_mul_pd(values[1], sv));
+ _mm_store_pd(&x3[4], _mm_mul_pd(values[2], sv));
+ _mm_store_pd(&x3[6], _mm_mul_pd(values[3], sv));
+ _mm_store_pd(&x3[8], _mm_mul_pd(values[4], sv));
+ _mm_store_pd(&x3[10], _mm_mul_pd(values[5], sv));
+ _mm_store_pd(&x3[12], _mm_mul_pd(values[6], sv));
+ _mm_store_pd(&x3[14], _mm_mul_pd(values[7], sv));
+
+ if(!fastScaling)
+ ex3[i] += 1;
+ else
+ addScale += wgt[i];
+
+ }
+ else
+ {
+ _mm_store_pd(&x3[0], values[0]);
+ _mm_store_pd(&x3[2], values[1]);
+ _mm_store_pd(&x3[4], values[2]);
+ _mm_store_pd(&x3[6], values[3]);
+ _mm_store_pd(&x3[8], values[4]);
+ _mm_store_pd(&x3[10], values[5]);
+ _mm_store_pd(&x3[12], values[6]);
+ _mm_store_pd(&x3[14], values[7]);
+ }
+
+ x3 += 16;
+ }
+ }
+ }
+ break;
+ case PLL_INNER_INNER:
+ {
+ __m128d maxv =_mm_setzero_pd();
+
+ scaleGap = 0;
+
+ x1 = x1_gapColumn;
+ x2 = x2_gapColumn;
+ x3 = x3_gapColumn;
+
+ for (j = 0; j < 4; j++)
+ {
+
+ double *x1_p = &x1[j*4];
+ double *left_k0_p = &left[j*16];
+ double *left_k1_p = &left[j*16 + 1*4];
+ double *left_k2_p = &left[j*16 + 2*4];
+ double *left_k3_p = &left[j*16 + 3*4];
+
+ __m128d x1_0 = _mm_load_pd( &x1_p[0] );
+ __m128d x1_2 = _mm_load_pd( &x1_p[2] );
+
+ __m128d left_k0_0 = _mm_load_pd( &left_k0_p[0] );
+ __m128d left_k0_2 = _mm_load_pd( &left_k0_p[2] );
+ __m128d left_k1_0 = _mm_load_pd( &left_k1_p[0] );
+ __m128d left_k1_2 = _mm_load_pd( &left_k1_p[2] );
+ __m128d left_k2_0 = _mm_load_pd( &left_k2_p[0] );
+ __m128d left_k2_2 = _mm_load_pd( &left_k2_p[2] );
+ __m128d left_k3_0 = _mm_load_pd( &left_k3_p[0] );
+ __m128d left_k3_2 = _mm_load_pd( &left_k3_p[2] );
+
+ left_k0_0 = _mm_mul_pd(x1_0, left_k0_0);
+ left_k0_2 = _mm_mul_pd(x1_2, left_k0_2);
+
+ left_k1_0 = _mm_mul_pd(x1_0, left_k1_0);
+ left_k1_2 = _mm_mul_pd(x1_2, left_k1_2);
+
+ left_k0_0 = _mm_hadd_pd( left_k0_0, left_k0_2 );
+ left_k1_0 = _mm_hadd_pd( left_k1_0, left_k1_2);
+ left_k0_0 = _mm_hadd_pd( left_k0_0, left_k1_0);
+
+ left_k2_0 = _mm_mul_pd(x1_0, left_k2_0);
+ left_k2_2 = _mm_mul_pd(x1_2, left_k2_2);
+
+ left_k3_0 = _mm_mul_pd(x1_0, left_k3_0);
+ left_k3_2 = _mm_mul_pd(x1_2, left_k3_2);
+
+ left_k2_0 = _mm_hadd_pd( left_k2_0, left_k2_2);
+ left_k3_0 = _mm_hadd_pd( left_k3_0, left_k3_2);
+ left_k2_0 = _mm_hadd_pd( left_k2_0, left_k3_0);
+
+
+ double *x2_p = &x2[j*4];
+ double *right_k0_p = &right[j*16];
+ double *right_k1_p = &right[j*16 + 1*4];
+ double *right_k2_p = &right[j*16 + 2*4];
+ double *right_k3_p = &right[j*16 + 3*4];
+ __m128d x2_0 = _mm_load_pd( &x2_p[0] );
+ __m128d x2_2 = _mm_load_pd( &x2_p[2] );
+
+ __m128d right_k0_0 = _mm_load_pd( &right_k0_p[0] );
+ __m128d right_k0_2 = _mm_load_pd( &right_k0_p[2] );
+ __m128d right_k1_0 = _mm_load_pd( &right_k1_p[0] );
+ __m128d right_k1_2 = _mm_load_pd( &right_k1_p[2] );
+ __m128d right_k2_0 = _mm_load_pd( &right_k2_p[0] );
+ __m128d right_k2_2 = _mm_load_pd( &right_k2_p[2] );
+ __m128d right_k3_0 = _mm_load_pd( &right_k3_p[0] );
+ __m128d right_k3_2 = _mm_load_pd( &right_k3_p[2] );
+
+ right_k0_0 = _mm_mul_pd( x2_0, right_k0_0);
+ right_k0_2 = _mm_mul_pd( x2_2, right_k0_2);
+
+ right_k1_0 = _mm_mul_pd( x2_0, right_k1_0);
+ right_k1_2 = _mm_mul_pd( x2_2, right_k1_2);
+
+ right_k0_0 = _mm_hadd_pd( right_k0_0, right_k0_2);
+ right_k1_0 = _mm_hadd_pd( right_k1_0, right_k1_2);
+ right_k0_0 = _mm_hadd_pd( right_k0_0, right_k1_0);
+
+ right_k2_0 = _mm_mul_pd( x2_0, right_k2_0);
+ right_k2_2 = _mm_mul_pd( x2_2, right_k2_2);
+
+ right_k3_0 = _mm_mul_pd( x2_0, right_k3_0);
+ right_k3_2 = _mm_mul_pd( x2_2, right_k3_2);
+
+ right_k2_0 = _mm_hadd_pd( right_k2_0, right_k2_2);
+ right_k3_0 = _mm_hadd_pd( right_k3_0, right_k3_2);
+ right_k2_0 = _mm_hadd_pd( right_k2_0, right_k3_0);
+
+ __m128d x1px2_k0 = _mm_mul_pd( left_k0_0, right_k0_0 );
+ __m128d x1px2_k2 = _mm_mul_pd( left_k2_0, right_k2_0 );
+
+ __m128d EV_t_l0_k0 = EVV[0];
+ __m128d EV_t_l0_k2 = EVV[1];
+ __m128d EV_t_l1_k0 = EVV[2];
+ __m128d EV_t_l1_k2 = EVV[3];
+ __m128d EV_t_l2_k0 = EVV[4];
+ __m128d EV_t_l2_k2 = EVV[5];
+ __m128d EV_t_l3_k0 = EVV[6];
+ __m128d EV_t_l3_k2 = EVV[7];
+
+ EV_t_l0_k0 = _mm_mul_pd( x1px2_k0, EV_t_l0_k0 );
+ EV_t_l0_k2 = _mm_mul_pd( x1px2_k2, EV_t_l0_k2 );
+ EV_t_l0_k0 = _mm_hadd_pd( EV_t_l0_k0, EV_t_l0_k2 );
+
+ EV_t_l1_k0 = _mm_mul_pd( x1px2_k0, EV_t_l1_k0 );
+ EV_t_l1_k2 = _mm_mul_pd( x1px2_k2, EV_t_l1_k2 );
+
+ EV_t_l1_k0 = _mm_hadd_pd( EV_t_l1_k0, EV_t_l1_k2 );
+ EV_t_l0_k0 = _mm_hadd_pd( EV_t_l0_k0, EV_t_l1_k0 );
+
+ EV_t_l2_k0 = _mm_mul_pd( x1px2_k0, EV_t_l2_k0 );
+ EV_t_l2_k2 = _mm_mul_pd( x1px2_k2, EV_t_l2_k2 );
+ EV_t_l2_k0 = _mm_hadd_pd( EV_t_l2_k0, EV_t_l2_k2 );
+
+ EV_t_l3_k0 = _mm_mul_pd( x1px2_k0, EV_t_l3_k0 );
+ EV_t_l3_k2 = _mm_mul_pd( x1px2_k2, EV_t_l3_k2 );
+ EV_t_l3_k0 = _mm_hadd_pd( EV_t_l3_k0, EV_t_l3_k2 );
+
+ EV_t_l2_k0 = _mm_hadd_pd( EV_t_l2_k0, EV_t_l3_k0 );
+
+
+ values[j * 2] = EV_t_l0_k0;
+ values[j * 2 + 1] = EV_t_l2_k0;
+
+ maxv = _mm_max_pd(maxv, _mm_and_pd(EV_t_l0_k0, absMask.m));
+ maxv = _mm_max_pd(maxv, _mm_and_pd(EV_t_l2_k0, absMask.m));
+ }
+
+ _mm_store_pd(maxima, maxv);
+
+ max = PLL_MAX(maxima[0], maxima[1]);
+
+ if(max < PLL_MINLIKELIHOOD)
+ {
+ __m128d sv = _mm_set1_pd(PLL_TWOTOTHE256);
+
+ scaleGap = 1;
+
+ _mm_store_pd(&x3[0], _mm_mul_pd(values[0], sv));
+ _mm_store_pd(&x3[2], _mm_mul_pd(values[1], sv));
+ _mm_store_pd(&x3[4], _mm_mul_pd(values[2], sv));
+ _mm_store_pd(&x3[6], _mm_mul_pd(values[3], sv));
+ _mm_store_pd(&x3[8], _mm_mul_pd(values[4], sv));
+ _mm_store_pd(&x3[10], _mm_mul_pd(values[5], sv));
+ _mm_store_pd(&x3[12], _mm_mul_pd(values[6], sv));
+ _mm_store_pd(&x3[14], _mm_mul_pd(values[7], sv));
+ }
+ else
+ {
+ _mm_store_pd(&x3[0], values[0]);
+ _mm_store_pd(&x3[2], values[1]);
+ _mm_store_pd(&x3[4], values[2]);
+ _mm_store_pd(&x3[6], values[3]);
+ _mm_store_pd(&x3[8], values[4]);
+ _mm_store_pd(&x3[10], values[5]);
+ _mm_store_pd(&x3[12], values[6]);
+ _mm_store_pd(&x3[14], values[7]);
+ }
+ }
+
+
+ x3 = x3_start;
+
+ for (i = 0; i < n; i++)
+ {
+ if(x3_gap[i / 32] & mask32[i % 32])
+ {
+ if(scaleGap)
+ {
+ if(!fastScaling)
+ ex3[i] += 1;
+ else
+ addScale += wgt[i];
+ }
+ }
+ else
+ {
+ __m128d maxv =_mm_setzero_pd();
+
+ if(x1_gap[i / 32] & mask32[i % 32])
+ x1 = x1_gapColumn;
+ else
+ {
+ x1 = x1_ptr;
+ x1_ptr += 16;
+ }
+
+ if(x2_gap[i / 32] & mask32[i % 32])
+ x2 = x2_gapColumn;
+ else
+ {
+ x2 = x2_ptr;
+ x2_ptr += 16;
+ }
+
+
+ for (j = 0; j < 4; j++)
+ {
+
+ double *x1_p = &x1[j*4];
+ double *left_k0_p = &left[j*16];
+ double *left_k1_p = &left[j*16 + 1*4];
+ double *left_k2_p = &left[j*16 + 2*4];
+ double *left_k3_p = &left[j*16 + 3*4];
+
+ __m128d x1_0 = _mm_load_pd( &x1_p[0] );
+ __m128d x1_2 = _mm_load_pd( &x1_p[2] );
+
+ __m128d left_k0_0 = _mm_load_pd( &left_k0_p[0] );
+ __m128d left_k0_2 = _mm_load_pd( &left_k0_p[2] );
+ __m128d left_k1_0 = _mm_load_pd( &left_k1_p[0] );
+ __m128d left_k1_2 = _mm_load_pd( &left_k1_p[2] );
+ __m128d left_k2_0 = _mm_load_pd( &left_k2_p[0] );
+ __m128d left_k2_2 = _mm_load_pd( &left_k2_p[2] );
+ __m128d left_k3_0 = _mm_load_pd( &left_k3_p[0] );
+ __m128d left_k3_2 = _mm_load_pd( &left_k3_p[2] );
+
+ left_k0_0 = _mm_mul_pd(x1_0, left_k0_0);
+ left_k0_2 = _mm_mul_pd(x1_2, left_k0_2);
+
+ left_k1_0 = _mm_mul_pd(x1_0, left_k1_0);
+ left_k1_2 = _mm_mul_pd(x1_2, left_k1_2);
+
+ left_k0_0 = _mm_hadd_pd( left_k0_0, left_k0_2 );
+ left_k1_0 = _mm_hadd_pd( left_k1_0, left_k1_2);
+ left_k0_0 = _mm_hadd_pd( left_k0_0, left_k1_0);
+
+ left_k2_0 = _mm_mul_pd(x1_0, left_k2_0);
+ left_k2_2 = _mm_mul_pd(x1_2, left_k2_2);
+
+ left_k3_0 = _mm_mul_pd(x1_0, left_k3_0);
+ left_k3_2 = _mm_mul_pd(x1_2, left_k3_2);
+
+ left_k2_0 = _mm_hadd_pd( left_k2_0, left_k2_2);
+ left_k3_0 = _mm_hadd_pd( left_k3_0, left_k3_2);
+ left_k2_0 = _mm_hadd_pd( left_k2_0, left_k3_0);
+
+
+ //
+ // multiply/add right side
+ //
+ double *x2_p = &x2[j*4];
+ double *right_k0_p = &right[j*16];
+ double *right_k1_p = &right[j*16 + 1*4];
+ double *right_k2_p = &right[j*16 + 2*4];
+ double *right_k3_p = &right[j*16 + 3*4];
+ __m128d x2_0 = _mm_load_pd( &x2_p[0] );
+ __m128d x2_2 = _mm_load_pd( &x2_p[2] );
+
+ __m128d right_k0_0 = _mm_load_pd( &right_k0_p[0] );
+ __m128d right_k0_2 = _mm_load_pd( &right_k0_p[2] );
+ __m128d right_k1_0 = _mm_load_pd( &right_k1_p[0] );
+ __m128d right_k1_2 = _mm_load_pd( &right_k1_p[2] );
+ __m128d right_k2_0 = _mm_load_pd( &right_k2_p[0] );
+ __m128d right_k2_2 = _mm_load_pd( &right_k2_p[2] );
+ __m128d right_k3_0 = _mm_load_pd( &right_k3_p[0] );
+ __m128d right_k3_2 = _mm_load_pd( &right_k3_p[2] );
+
+ right_k0_0 = _mm_mul_pd( x2_0, right_k0_0);
+ right_k0_2 = _mm_mul_pd( x2_2, right_k0_2);
+
+ right_k1_0 = _mm_mul_pd( x2_0, right_k1_0);
+ right_k1_2 = _mm_mul_pd( x2_2, right_k1_2);
+
+ right_k0_0 = _mm_hadd_pd( right_k0_0, right_k0_2);
+ right_k1_0 = _mm_hadd_pd( right_k1_0, right_k1_2);
+ right_k0_0 = _mm_hadd_pd( right_k0_0, right_k1_0);
+
+ right_k2_0 = _mm_mul_pd( x2_0, right_k2_0);
+ right_k2_2 = _mm_mul_pd( x2_2, right_k2_2);
+
+
+ right_k3_0 = _mm_mul_pd( x2_0, right_k3_0);
+ right_k3_2 = _mm_mul_pd( x2_2, right_k3_2);
+
+ right_k2_0 = _mm_hadd_pd( right_k2_0, right_k2_2);
+ right_k3_0 = _mm_hadd_pd( right_k3_0, right_k3_2);
+ right_k2_0 = _mm_hadd_pd( right_k2_0, right_k3_0);
+
+ //
+ // multiply left * right
+ //
+
+ __m128d x1px2_k0 = _mm_mul_pd( left_k0_0, right_k0_0 );
+ __m128d x1px2_k2 = _mm_mul_pd( left_k2_0, right_k2_0 );
+
+
+ //
+ // multiply with EV matrix (!?)
+ //
+
+ __m128d EV_t_l0_k0 = EVV[0];
+ __m128d EV_t_l0_k2 = EVV[1];
+ __m128d EV_t_l1_k0 = EVV[2];
+ __m128d EV_t_l1_k2 = EVV[3];
+ __m128d EV_t_l2_k0 = EVV[4];
+ __m128d EV_t_l2_k2 = EVV[5];
+ __m128d EV_t_l3_k0 = EVV[6];
+ __m128d EV_t_l3_k2 = EVV[7];
+
+
+ EV_t_l0_k0 = _mm_mul_pd( x1px2_k0, EV_t_l0_k0 );
+ EV_t_l0_k2 = _mm_mul_pd( x1px2_k2, EV_t_l0_k2 );
+ EV_t_l0_k0 = _mm_hadd_pd( EV_t_l0_k0, EV_t_l0_k2 );
+
+ EV_t_l1_k0 = _mm_mul_pd( x1px2_k0, EV_t_l1_k0 );
+ EV_t_l1_k2 = _mm_mul_pd( x1px2_k2, EV_t_l1_k2 );
+
+ EV_t_l1_k0 = _mm_hadd_pd( EV_t_l1_k0, EV_t_l1_k2 );
+ EV_t_l0_k0 = _mm_hadd_pd( EV_t_l0_k0, EV_t_l1_k0 );
+
+ EV_t_l2_k0 = _mm_mul_pd( x1px2_k0, EV_t_l2_k0 );
+ EV_t_l2_k2 = _mm_mul_pd( x1px2_k2, EV_t_l2_k2 );
+ EV_t_l2_k0 = _mm_hadd_pd( EV_t_l2_k0, EV_t_l2_k2 );
+
+
+ EV_t_l3_k0 = _mm_mul_pd( x1px2_k0, EV_t_l3_k0 );
+ EV_t_l3_k2 = _mm_mul_pd( x1px2_k2, EV_t_l3_k2 );
+ EV_t_l3_k0 = _mm_hadd_pd( EV_t_l3_k0, EV_t_l3_k2 );
+
+ EV_t_l2_k0 = _mm_hadd_pd( EV_t_l2_k0, EV_t_l3_k0 );
+
+
+ values[j * 2] = EV_t_l0_k0;
+ values[j * 2 + 1] = EV_t_l2_k0;
+
+ maxv = _mm_max_pd(maxv, _mm_and_pd(EV_t_l0_k0, absMask.m));
+ maxv = _mm_max_pd(maxv, _mm_and_pd(EV_t_l2_k0, absMask.m));
+ }
+
+
+ _mm_store_pd(maxima, maxv);
+
+ max = PLL_MAX(maxima[0], maxima[1]);
+
+ if(max < PLL_MINLIKELIHOOD)
+ {
+ __m128d sv = _mm_set1_pd(PLL_TWOTOTHE256);
+
+ _mm_store_pd(&x3[0], _mm_mul_pd(values[0], sv));
+ _mm_store_pd(&x3[2], _mm_mul_pd(values[1], sv));
+ _mm_store_pd(&x3[4], _mm_mul_pd(values[2], sv));
+ _mm_store_pd(&x3[6], _mm_mul_pd(values[3], sv));
+ _mm_store_pd(&x3[8], _mm_mul_pd(values[4], sv));
+ _mm_store_pd(&x3[10], _mm_mul_pd(values[5], sv));
+ _mm_store_pd(&x3[12], _mm_mul_pd(values[6], sv));
+ _mm_store_pd(&x3[14], _mm_mul_pd(values[7], sv));
+
+ if(!fastScaling)
+ ex3[i] += 1;
+ else
+ addScale += wgt[i];
+
+ }
+ else
+ {
+ _mm_store_pd(&x3[0], values[0]);
+ _mm_store_pd(&x3[2], values[1]);
+ _mm_store_pd(&x3[4], values[2]);
+ _mm_store_pd(&x3[6], values[3]);
+ _mm_store_pd(&x3[8], values[4]);
+ _mm_store_pd(&x3[10], values[5]);
+ _mm_store_pd(&x3[12], values[6]);
+ _mm_store_pd(&x3[14], values[7]);
+ }
+
+
+
+ x3 += 16;
+
+ }
+ }
+ break;
+ default:
+ assert(0);
+ }
+
+ if(fastScaling)
+ *scalerIncrement = addScale;
+}
+
+
+
+/** @ingroup group1
+ * @brief Computation of conditional likelihood arrray for GTR GAMMA (Optimized SSE3 version for DNA data)
+
+ This is the SSE3 optimized version of ::newviewGAMMA_FLEX for computing the conditional
+ likelihood arrays at some node \a p, given child nodes \a q and \a r using the \b GAMMA
+ model of rate heterogeneity.
+
+ @note
+ For more details and function argument description check the function ::newviewGAMMA_FLEX
+*/
+static void newviewGTRGAMMA(int tipCase,
+ double *x1_start, double *x2_start, double *x3_start,
+ double *EV, double *tipVector,
+ int *ex3, unsigned char *tipX1, unsigned char *tipX2,
+ const int n, double *left, double *right, int *wgt, int *scalerIncrement, const boolean fastScaling
+ )
+{
+ int
+ i,
+ j,
+ k,
+ l,
+ addScale = 0;
+
+ //int scaling = 0;
+
+ double
+ *x1,
+ *x2,
+ *x3,
+ max,
+ maxima[2] __attribute__ ((aligned (PLL_BYTE_ALIGNMENT))),
+ EV_t[16] __attribute__ ((aligned (PLL_BYTE_ALIGNMENT)));
+
+ __m128d
+ values[8],
+ EVV[8];
+
+ for(k = 0; k < 4; k++)
+ for (l=0; l < 4; l++)
+ EV_t[4 * l + k] = EV[4 * k + l];
+
+ for(k = 0; k < 8; k++)
+ EVV[k] = _mm_load_pd(&EV_t[k * 2]);
+
+ switch(tipCase)
+ {
+ case PLL_TIP_TIP:
+ {
+ double *uX1, umpX1[256] __attribute__ ((aligned (PLL_BYTE_ALIGNMENT))), *uX2, umpX2[256] __attribute__ ((aligned (PLL_BYTE_ALIGNMENT)));
+
+
+ for (i = 1; i < 16; i++)
+ {
+ __m128d x1_1 = _mm_load_pd(&(tipVector[i*4]));
+ __m128d x1_2 = _mm_load_pd(&(tipVector[i*4 + 2]));
+
+ for (j = 0; j < 4; j++)
+
+ for (k = 0; k < 4; k++) {
+ __m128d left1 = _mm_load_pd(&left[j*16 + k*4]);
+ __m128d left2 = _mm_load_pd(&left[j*16 + k*4 + 2]);
+
+ __m128d acc = _mm_setzero_pd();
+
+ acc = _mm_add_pd(acc, _mm_mul_pd(left1, x1_1));
+ acc = _mm_add_pd(acc, _mm_mul_pd(left2, x1_2));
+
+ acc = _mm_hadd_pd(acc, acc);
+ _mm_storel_pd(&umpX1[i*16 + j*4 + k], acc);
+ }
+
+ for (j = 0; j < 4; j++)
+ for (k = 0; k < 4; k++)
+ {
+ __m128d left1 = _mm_load_pd(&right[j*16 + k*4]);
+ __m128d left2 = _mm_load_pd(&right[j*16 + k*4 + 2]);
+
+ __m128d acc = _mm_setzero_pd();
+
+ acc = _mm_add_pd(acc, _mm_mul_pd(left1, x1_1));
+ acc = _mm_add_pd(acc, _mm_mul_pd(left2, x1_2));
+
+ acc = _mm_hadd_pd(acc, acc);
+ _mm_storel_pd(&umpX2[i*16 + j*4 + k], acc);
+
+ }
+ }
+
+ for (i = 0; i < n; i++)
+ {
+ x3 = &x3_start[i * 16];
+
+
+ uX1 = &umpX1[16 * tipX1[i]];
+ uX2 = &umpX2[16 * tipX2[i]];
+
+ for (j = 0; j < 4; j++)
+ {
+ __m128d uX1_k0_sse = _mm_load_pd( &uX1[j * 4] );
+ __m128d uX1_k2_sse = _mm_load_pd( &uX1[j * 4 + 2] );
+
+
+ __m128d uX2_k0_sse = _mm_load_pd( &uX2[j * 4] );
+ __m128d uX2_k2_sse = _mm_load_pd( &uX2[j * 4 + 2] );
+
+
+ //
+ // multiply left * right
+ //
+
+ __m128d x1px2_k0 = _mm_mul_pd( uX1_k0_sse, uX2_k0_sse );
+ __m128d x1px2_k2 = _mm_mul_pd( uX1_k2_sse, uX2_k2_sse );
+
+
+ //
+ // multiply with EV matrix (!?)
+ //
+
+ __m128d EV_t_l0_k0 = EVV[0];
+ __m128d EV_t_l0_k2 = EVV[1];
+ __m128d EV_t_l1_k0 = EVV[2];
+ __m128d EV_t_l1_k2 = EVV[3];
+ __m128d EV_t_l2_k0 = EVV[4];
+ __m128d EV_t_l2_k2 = EVV[5];
+ __m128d EV_t_l3_k0 = EVV[6];
+ __m128d EV_t_l3_k2 = EVV[7];
+
+ EV_t_l0_k0 = _mm_mul_pd( x1px2_k0, EV_t_l0_k0 );
+ EV_t_l0_k2 = _mm_mul_pd( x1px2_k2, EV_t_l0_k2 );
+ EV_t_l0_k0 = _mm_hadd_pd( EV_t_l0_k0, EV_t_l0_k2 );
+
+ EV_t_l1_k0 = _mm_mul_pd( x1px2_k0, EV_t_l1_k0 );
+ EV_t_l1_k2 = _mm_mul_pd( x1px2_k2, EV_t_l1_k2 );
+
+ EV_t_l1_k0 = _mm_hadd_pd( EV_t_l1_k0, EV_t_l1_k2 );
+ EV_t_l0_k0 = _mm_hadd_pd( EV_t_l0_k0, EV_t_l1_k0 );
+
+ EV_t_l2_k0 = _mm_mul_pd( x1px2_k0, EV_t_l2_k0 );
+ EV_t_l2_k2 = _mm_mul_pd( x1px2_k2, EV_t_l2_k2 );
+ EV_t_l2_k0 = _mm_hadd_pd( EV_t_l2_k0, EV_t_l2_k2 );
+
+ EV_t_l3_k0 = _mm_mul_pd( x1px2_k0, EV_t_l3_k0 );
+ EV_t_l3_k2 = _mm_mul_pd( x1px2_k2, EV_t_l3_k2 );
+ EV_t_l3_k0 = _mm_hadd_pd( EV_t_l3_k0, EV_t_l3_k2 );
+
+ EV_t_l2_k0 = _mm_hadd_pd( EV_t_l2_k0, EV_t_l3_k0 );
+
+ _mm_store_pd( &x3[j * 4 + 0], EV_t_l0_k0 );
+ _mm_store_pd( &x3[j * 4 + 2], EV_t_l2_k0 );
+ }
+ }
+ }
+ break;
+ case PLL_TIP_INNER:
+ {
+ double *uX1, umpX1[256] __attribute__ ((aligned (PLL_BYTE_ALIGNMENT)));
+
+
+ for (i = 1; i < 16; i++)
+ {
+ __m128d x1_1 = _mm_load_pd(&(tipVector[i*4]));
+ __m128d x1_2 = _mm_load_pd(&(tipVector[i*4 + 2]));
+
+ for (j = 0; j < 4; j++)
+ for (k = 0; k < 4; k++)
+ {
+ __m128d left1 = _mm_load_pd(&left[j*16 + k*4]);
+ __m128d left2 = _mm_load_pd(&left[j*16 + k*4 + 2]);
+
+ __m128d acc = _mm_setzero_pd();
+
+ acc = _mm_add_pd(acc, _mm_mul_pd(left1, x1_1));
+ acc = _mm_add_pd(acc, _mm_mul_pd(left2, x1_2));
+
+ acc = _mm_hadd_pd(acc, acc);
+ _mm_storel_pd(&umpX1[i*16 + j*4 + k], acc);
+ }
+ }
+
+ for (i = 0; i < n; i++)
+ {
+ __m128d maxv =_mm_setzero_pd();
+
+ x2 = &x2_start[i * 16];
+ x3 = &x3_start[i * 16];
+
+ uX1 = &umpX1[16 * tipX1[i]];
+
+ for (j = 0; j < 4; j++)
+ {
+
+ //
+ // multiply/add right side
+ //
+ double *x2_p = &x2[j*4];
+ double *right_k0_p = &right[j*16];
+ double *right_k1_p = &right[j*16 + 1*4];
+ double *right_k2_p = &right[j*16 + 2*4];
+ double *right_k3_p = &right[j*16 + 3*4];
+ __m128d x2_0 = _mm_load_pd( &x2_p[0] );
+ __m128d x2_2 = _mm_load_pd( &x2_p[2] );
+
+ __m128d right_k0_0 = _mm_load_pd( &right_k0_p[0] );
+ __m128d right_k0_2 = _mm_load_pd( &right_k0_p[2] );
+ __m128d right_k1_0 = _mm_load_pd( &right_k1_p[0] );
+ __m128d right_k1_2 = _mm_load_pd( &right_k1_p[2] );
+ __m128d right_k2_0 = _mm_load_pd( &right_k2_p[0] );
+ __m128d right_k2_2 = _mm_load_pd( &right_k2_p[2] );
+ __m128d right_k3_0 = _mm_load_pd( &right_k3_p[0] );
+ __m128d right_k3_2 = _mm_load_pd( &right_k3_p[2] );
+
+
+
+ right_k0_0 = _mm_mul_pd( x2_0, right_k0_0);
+ right_k0_2 = _mm_mul_pd( x2_2, right_k0_2);
+
+ right_k1_0 = _mm_mul_pd( x2_0, right_k1_0);
+ right_k1_2 = _mm_mul_pd( x2_2, right_k1_2);
+
+ right_k0_0 = _mm_hadd_pd( right_k0_0, right_k0_2);
+ right_k1_0 = _mm_hadd_pd( right_k1_0, right_k1_2);
+ right_k0_0 = _mm_hadd_pd( right_k0_0, right_k1_0);
+
+
+ right_k2_0 = _mm_mul_pd( x2_0, right_k2_0);
+ right_k2_2 = _mm_mul_pd( x2_2, right_k2_2);
+
+
+ right_k3_0 = _mm_mul_pd( x2_0, right_k3_0);
+ right_k3_2 = _mm_mul_pd( x2_2, right_k3_2);
+
+ right_k2_0 = _mm_hadd_pd( right_k2_0, right_k2_2);
+ right_k3_0 = _mm_hadd_pd( right_k3_0, right_k3_2);
+ right_k2_0 = _mm_hadd_pd( right_k2_0, right_k3_0);
+
+ {
+ //
+ // load left side from tip vector
+ //
+
+ __m128d uX1_k0_sse = _mm_load_pd( &uX1[j * 4] );
+ __m128d uX1_k2_sse = _mm_load_pd( &uX1[j * 4 + 2] );
+
+
+ //
+ // multiply left * right
+ //
+
+ __m128d x1px2_k0 = _mm_mul_pd( uX1_k0_sse, right_k0_0 );
+ __m128d x1px2_k2 = _mm_mul_pd( uX1_k2_sse, right_k2_0 );
+
+
+ //
+ // multiply with EV matrix (!?)
+ //
+
+ __m128d EV_t_l0_k0 = EVV[0];
+ __m128d EV_t_l0_k2 = EVV[1];
+ __m128d EV_t_l1_k0 = EVV[2];
+ __m128d EV_t_l1_k2 = EVV[3];
+ __m128d EV_t_l2_k0 = EVV[4];
+ __m128d EV_t_l2_k2 = EVV[5];
+ __m128d EV_t_l3_k0 = EVV[6];
+ __m128d EV_t_l3_k2 = EVV[7];
+
+
+ EV_t_l0_k0 = _mm_mul_pd( x1px2_k0, EV_t_l0_k0 );
+ EV_t_l0_k2 = _mm_mul_pd( x1px2_k2, EV_t_l0_k2 );
+ EV_t_l0_k0 = _mm_hadd_pd( EV_t_l0_k0, EV_t_l0_k2 );
+
+ EV_t_l1_k0 = _mm_mul_pd( x1px2_k0, EV_t_l1_k0 );
+ EV_t_l1_k2 = _mm_mul_pd( x1px2_k2, EV_t_l1_k2 );
+
+ EV_t_l1_k0 = _mm_hadd_pd( EV_t_l1_k0, EV_t_l1_k2 );
+ EV_t_l0_k0 = _mm_hadd_pd( EV_t_l0_k0, EV_t_l1_k0 );
+
+ EV_t_l2_k0 = _mm_mul_pd( x1px2_k0, EV_t_l2_k0 );
+ EV_t_l2_k2 = _mm_mul_pd( x1px2_k2, EV_t_l2_k2 );
+ EV_t_l2_k0 = _mm_hadd_pd( EV_t_l2_k0, EV_t_l2_k2 );
+
+ EV_t_l3_k0 = _mm_mul_pd( x1px2_k0, EV_t_l3_k0 );
+ EV_t_l3_k2 = _mm_mul_pd( x1px2_k2, EV_t_l3_k2 );
+ EV_t_l3_k0 = _mm_hadd_pd( EV_t_l3_k0, EV_t_l3_k2 );
+
+ EV_t_l2_k0 = _mm_hadd_pd( EV_t_l2_k0, EV_t_l3_k0 );
+
+ values[j * 2] = EV_t_l0_k0;
+ values[j * 2 + 1] = EV_t_l2_k0;
+
+ maxv = _mm_max_pd(maxv, _mm_and_pd(EV_t_l0_k0, absMask.m));
+ maxv = _mm_max_pd(maxv, _mm_and_pd(EV_t_l2_k0, absMask.m));
+ }
+ }
+
+
+ _mm_store_pd(maxima, maxv);
+
+ max = PLL_MAX(maxima[0], maxima[1]);
+
+ if(max < PLL_MINLIKELIHOOD)
+ {
+ __m128d sv = _mm_set1_pd(PLL_TWOTOTHE256);
+
+ _mm_store_pd(&x3[0], _mm_mul_pd(values[0], sv));
+ _mm_store_pd(&x3[2], _mm_mul_pd(values[1], sv));
+ _mm_store_pd(&x3[4], _mm_mul_pd(values[2], sv));
+ _mm_store_pd(&x3[6], _mm_mul_pd(values[3], sv));
+ _mm_store_pd(&x3[8], _mm_mul_pd(values[4], sv));
+ _mm_store_pd(&x3[10], _mm_mul_pd(values[5], sv));
+ _mm_store_pd(&x3[12], _mm_mul_pd(values[6], sv));
+ _mm_store_pd(&x3[14], _mm_mul_pd(values[7], sv));
+
+ if(!fastScaling)
+ ex3[i] += 1;
+ else
+ addScale += wgt[i];
+
+ }
+ else
+ {
+ _mm_store_pd(&x3[0], values[0]);
+ _mm_store_pd(&x3[2], values[1]);
+ _mm_store_pd(&x3[4], values[2]);
+ _mm_store_pd(&x3[6], values[3]);
+ _mm_store_pd(&x3[8], values[4]);
+ _mm_store_pd(&x3[10], values[5]);
+ _mm_store_pd(&x3[12], values[6]);
+ _mm_store_pd(&x3[14], values[7]);
+ }
+ }
+ }
+ break;
+ case PLL_INNER_INNER:
+
+ for (i = 0; i < n; i++)
+ {
+ __m128d maxv =_mm_setzero_pd();
+
+
+ x1 = &x1_start[i * 16];
+ x2 = &x2_start[i * 16];
+ x3 = &x3_start[i * 16];
+
+ for (j = 0; j < 4; j++)
+ {
+
+ double *x1_p = &x1[j*4];
+ double *left_k0_p = &left[j*16];
+ double *left_k1_p = &left[j*16 + 1*4];
+ double *left_k2_p = &left[j*16 + 2*4];
+ double *left_k3_p = &left[j*16 + 3*4];
+
+ __m128d x1_0 = _mm_load_pd( &x1_p[0] );
+ __m128d x1_2 = _mm_load_pd( &x1_p[2] );
+
+ __m128d left_k0_0 = _mm_load_pd( &left_k0_p[0] );
+ __m128d left_k0_2 = _mm_load_pd( &left_k0_p[2] );
+ __m128d left_k1_0 = _mm_load_pd( &left_k1_p[0] );
+ __m128d left_k1_2 = _mm_load_pd( &left_k1_p[2] );
+ __m128d left_k2_0 = _mm_load_pd( &left_k2_p[0] );
+ __m128d left_k2_2 = _mm_load_pd( &left_k2_p[2] );
+ __m128d left_k3_0 = _mm_load_pd( &left_k3_p[0] );
+ __m128d left_k3_2 = _mm_load_pd( &left_k3_p[2] );
+
+ left_k0_0 = _mm_mul_pd(x1_0, left_k0_0);
+ left_k0_2 = _mm_mul_pd(x1_2, left_k0_2);
+
+ left_k1_0 = _mm_mul_pd(x1_0, left_k1_0);
+ left_k1_2 = _mm_mul_pd(x1_2, left_k1_2);
+
+ left_k0_0 = _mm_hadd_pd( left_k0_0, left_k0_2 );
+ left_k1_0 = _mm_hadd_pd( left_k1_0, left_k1_2);
+ left_k0_0 = _mm_hadd_pd( left_k0_0, left_k1_0);
+
+ left_k2_0 = _mm_mul_pd(x1_0, left_k2_0);
+ left_k2_2 = _mm_mul_pd(x1_2, left_k2_2);
+
+ left_k3_0 = _mm_mul_pd(x1_0, left_k3_0);
+ left_k3_2 = _mm_mul_pd(x1_2, left_k3_2);
+
+ left_k2_0 = _mm_hadd_pd( left_k2_0, left_k2_2);
+ left_k3_0 = _mm_hadd_pd( left_k3_0, left_k3_2);
+ left_k2_0 = _mm_hadd_pd( left_k2_0, left_k3_0);
+
+
+ //
+ // multiply/add right side
+ //
+ double *x2_p = &x2[j*4];
+ double *right_k0_p = &right[j*16];
+ double *right_k1_p = &right[j*16 + 1*4];
+ double *right_k2_p = &right[j*16 + 2*4];
+ double *right_k3_p = &right[j*16 + 3*4];
+ __m128d x2_0 = _mm_load_pd( &x2_p[0] );
+ __m128d x2_2 = _mm_load_pd( &x2_p[2] );
+
+ __m128d right_k0_0 = _mm_load_pd( &right_k0_p[0] );
+ __m128d right_k0_2 = _mm_load_pd( &right_k0_p[2] );
+ __m128d right_k1_0 = _mm_load_pd( &right_k1_p[0] );
+ __m128d right_k1_2 = _mm_load_pd( &right_k1_p[2] );
+ __m128d right_k2_0 = _mm_load_pd( &right_k2_p[0] );
+ __m128d right_k2_2 = _mm_load_pd( &right_k2_p[2] );
+ __m128d right_k3_0 = _mm_load_pd( &right_k3_p[0] );
+ __m128d right_k3_2 = _mm_load_pd( &right_k3_p[2] );
+
+ right_k0_0 = _mm_mul_pd( x2_0, right_k0_0);
+ right_k0_2 = _mm_mul_pd( x2_2, right_k0_2);
+
+ right_k1_0 = _mm_mul_pd( x2_0, right_k1_0);
+ right_k1_2 = _mm_mul_pd( x2_2, right_k1_2);
+
+ right_k0_0 = _mm_hadd_pd( right_k0_0, right_k0_2);
+ right_k1_0 = _mm_hadd_pd( right_k1_0, right_k1_2);
+ right_k0_0 = _mm_hadd_pd( right_k0_0, right_k1_0);
+
+ right_k2_0 = _mm_mul_pd( x2_0, right_k2_0);
+ right_k2_2 = _mm_mul_pd( x2_2, right_k2_2);
+
+
+ right_k3_0 = _mm_mul_pd( x2_0, right_k3_0);
+ right_k3_2 = _mm_mul_pd( x2_2, right_k3_2);
+
+ right_k2_0 = _mm_hadd_pd( right_k2_0, right_k2_2);
+ right_k3_0 = _mm_hadd_pd( right_k3_0, right_k3_2);
+ right_k2_0 = _mm_hadd_pd( right_k2_0, right_k3_0);
+
+ //
+ // multiply left * right
+ //
+
+ __m128d x1px2_k0 = _mm_mul_pd( left_k0_0, right_k0_0 );
+ __m128d x1px2_k2 = _mm_mul_pd( left_k2_0, right_k2_0 );
+
+
+ //
+ // multiply with EV matrix (!?)
+ //
+
+ __m128d EV_t_l0_k0 = EVV[0];
+ __m128d EV_t_l0_k2 = EVV[1];
+ __m128d EV_t_l1_k0 = EVV[2];
+ __m128d EV_t_l1_k2 = EVV[3];
+ __m128d EV_t_l2_k0 = EVV[4];
+ __m128d EV_t_l2_k2 = EVV[5];
+ __m128d EV_t_l3_k0 = EVV[6];
+ __m128d EV_t_l3_k2 = EVV[7];
+
+
+ EV_t_l0_k0 = _mm_mul_pd( x1px2_k0, EV_t_l0_k0 );
+ EV_t_l0_k2 = _mm_mul_pd( x1px2_k2, EV_t_l0_k2 );
+ EV_t_l0_k0 = _mm_hadd_pd( EV_t_l0_k0, EV_t_l0_k2 );
+
+ EV_t_l1_k0 = _mm_mul_pd( x1px2_k0, EV_t_l1_k0 );
+ EV_t_l1_k2 = _mm_mul_pd( x1px2_k2, EV_t_l1_k2 );
+
+ EV_t_l1_k0 = _mm_hadd_pd( EV_t_l1_k0, EV_t_l1_k2 );
+ EV_t_l0_k0 = _mm_hadd_pd( EV_t_l0_k0, EV_t_l1_k0 );
+
+ EV_t_l2_k0 = _mm_mul_pd( x1px2_k0, EV_t_l2_k0 );
+ EV_t_l2_k2 = _mm_mul_pd( x1px2_k2, EV_t_l2_k2 );
+ EV_t_l2_k0 = _mm_hadd_pd( EV_t_l2_k0, EV_t_l2_k2 );
+
+
+ EV_t_l3_k0 = _mm_mul_pd( x1px2_k0, EV_t_l3_k0 );
+ EV_t_l3_k2 = _mm_mul_pd( x1px2_k2, EV_t_l3_k2 );
+ EV_t_l3_k0 = _mm_hadd_pd( EV_t_l3_k0, EV_t_l3_k2 );
+
+ EV_t_l2_k0 = _mm_hadd_pd( EV_t_l2_k0, EV_t_l3_k0 );
+
+
+ values[j * 2] = EV_t_l0_k0;
+ values[j * 2 + 1] = EV_t_l2_k0;
+
+ maxv = _mm_max_pd(maxv, _mm_and_pd(EV_t_l0_k0, absMask.m));
+ maxv = _mm_max_pd(maxv, _mm_and_pd(EV_t_l2_k0, absMask.m));
+ }
+
+
+ _mm_store_pd(maxima, maxv);
+
+ max = PLL_MAX(maxima[0], maxima[1]);
+
+ if(max < PLL_MINLIKELIHOOD)
+ {
+ __m128d sv = _mm_set1_pd(PLL_TWOTOTHE256);
+
+ _mm_store_pd(&x3[0], _mm_mul_pd(values[0], sv));
+ _mm_store_pd(&x3[2], _mm_mul_pd(values[1], sv));
+ _mm_store_pd(&x3[4], _mm_mul_pd(values[2], sv));
+ _mm_store_pd(&x3[6], _mm_mul_pd(values[3], sv));
+ _mm_store_pd(&x3[8], _mm_mul_pd(values[4], sv));
+ _mm_store_pd(&x3[10], _mm_mul_pd(values[5], sv));
+ _mm_store_pd(&x3[12], _mm_mul_pd(values[6], sv));
+ _mm_store_pd(&x3[14], _mm_mul_pd(values[7], sv));
+
+ if(!fastScaling)
+ ex3[i] += 1;
+ else
+ addScale += wgt[i];
+ }
+ else
+ {
+ _mm_store_pd(&x3[0], values[0]);
+ _mm_store_pd(&x3[2], values[1]);
+ _mm_store_pd(&x3[4], values[2]);
+ _mm_store_pd(&x3[6], values[3]);
+ _mm_store_pd(&x3[8], values[4]);
+ _mm_store_pd(&x3[10], values[5]);
+ _mm_store_pd(&x3[12], values[6]);
+ _mm_store_pd(&x3[14], values[7]);
+ }
+ }
+
+ break;
+ default:
+ assert(0);
+ }
+
+ if(fastScaling)
+ *scalerIncrement = addScale;
+}
+
+
+/** @ingroup group1
+ * @brief Computation of conditional likelihood arrray for GTR CAT (Optimized SSE3 version for DNA data)
+
+ This is the SSE3 optimized version of ::newviewCAT_FLEX for computing the conditional
+ likelihood arrays at some node \a p, given child nodes \a q and \a r using the \b CAT
+ model of rate heterogeneity.
+
+ @note
+ For more details and function argument description check the function ::newviewCAT_FLEX
+*/
+static void newviewGTRCAT( int tipCase, double *EV, int *cptr,
+ double *x1_start, double *x2_start, double *x3_start, double *tipVector,
+ int *ex3, unsigned char *tipX1, unsigned char *tipX2,
+ int n, double *left, double *right, int *wgt, int *scalerIncrement, const boolean fastScaling)
+{
+ double
+ *le,
+ *ri,
+ *x1,
+ *x2,
+ *x3,
+ EV_t[16] __attribute__ ((aligned (PLL_BYTE_ALIGNMENT)));
+
+ int
+ i,
+ j,
+ scale,
+ addScale = 0;
+
+ __m128d
+ minlikelihood_sse = _mm_set1_pd( PLL_MINLIKELIHOOD ),
+ sc = _mm_set1_pd(PLL_TWOTOTHE256),
+ EVV[8];
+
+ for(i = 0; i < 4; i++)
+ for (j=0; j < 4; j++)
+ EV_t[4 * j + i] = EV[4 * i + j];
+
+ for(i = 0; i < 8; i++)
+ EVV[i] = _mm_load_pd(&EV_t[i * 2]);
+
+ switch(tipCase)
+ {
+ case PLL_TIP_TIP:
+ for (i = 0; i < n; i++)
+ {
+ x1 = &(tipVector[4 * tipX1[i]]);
+ x2 = &(tipVector[4 * tipX2[i]]);
+
+ x3 = &x3_start[i * 4];
+
+ le = &left[cptr[i] * 16];
+ ri = &right[cptr[i] * 16];
+
+ __m128d x1_0 = _mm_load_pd( &x1[0] );
+ __m128d x1_2 = _mm_load_pd( &x1[2] );
+
+ __m128d left_k0_0 = _mm_load_pd( &le[0] );
+ __m128d left_k0_2 = _mm_load_pd( &le[2] );
+ __m128d left_k1_0 = _mm_load_pd( &le[4] );
+ __m128d left_k1_2 = _mm_load_pd( &le[6] );
+ __m128d left_k2_0 = _mm_load_pd( &le[8] );
+ __m128d left_k2_2 = _mm_load_pd( &le[10] );
+ __m128d left_k3_0 = _mm_load_pd( &le[12] );
+ __m128d left_k3_2 = _mm_load_pd( &le[14] );
+
+ left_k0_0 = _mm_mul_pd(x1_0, left_k0_0);
+ left_k0_2 = _mm_mul_pd(x1_2, left_k0_2);
+
+ left_k1_0 = _mm_mul_pd(x1_0, left_k1_0);
+ left_k1_2 = _mm_mul_pd(x1_2, left_k1_2);
+
+ left_k0_0 = _mm_hadd_pd( left_k0_0, left_k0_2 );
+ left_k1_0 = _mm_hadd_pd( left_k1_0, left_k1_2);
+ left_k0_0 = _mm_hadd_pd( left_k0_0, left_k1_0);
+
+ left_k2_0 = _mm_mul_pd(x1_0, left_k2_0);
+ left_k2_2 = _mm_mul_pd(x1_2, left_k2_2);
+
+ left_k3_0 = _mm_mul_pd(x1_0, left_k3_0);
+ left_k3_2 = _mm_mul_pd(x1_2, left_k3_2);
+
+ left_k2_0 = _mm_hadd_pd( left_k2_0, left_k2_2);
+ left_k3_0 = _mm_hadd_pd( left_k3_0, left_k3_2);
+ left_k2_0 = _mm_hadd_pd( left_k2_0, left_k3_0);
+
+ __m128d x2_0 = _mm_load_pd( &x2[0] );
+ __m128d x2_2 = _mm_load_pd( &x2[2] );
+
+ __m128d right_k0_0 = _mm_load_pd( &ri[0] );
+ __m128d right_k0_2 = _mm_load_pd( &ri[2] );
+ __m128d right_k1_0 = _mm_load_pd( &ri[4] );
+ __m128d right_k1_2 = _mm_load_pd( &ri[6] );
+ __m128d right_k2_0 = _mm_load_pd( &ri[8] );
+ __m128d right_k2_2 = _mm_load_pd( &ri[10] );
+ __m128d right_k3_0 = _mm_load_pd( &ri[12] );
+ __m128d right_k3_2 = _mm_load_pd( &ri[14] );
+
+ right_k0_0 = _mm_mul_pd( x2_0, right_k0_0);
+ right_k0_2 = _mm_mul_pd( x2_2, right_k0_2);
+
+ right_k1_0 = _mm_mul_pd( x2_0, right_k1_0);
+ right_k1_2 = _mm_mul_pd( x2_2, right_k1_2);
+
+ right_k0_0 = _mm_hadd_pd( right_k0_0, right_k0_2);
+ right_k1_0 = _mm_hadd_pd( right_k1_0, right_k1_2);
+ right_k0_0 = _mm_hadd_pd( right_k0_0, right_k1_0);
+
+ right_k2_0 = _mm_mul_pd( x2_0, right_k2_0);
+ right_k2_2 = _mm_mul_pd( x2_2, right_k2_2);
+
+ right_k3_0 = _mm_mul_pd( x2_0, right_k3_0);
+ right_k3_2 = _mm_mul_pd( x2_2, right_k3_2);
+
+ right_k2_0 = _mm_hadd_pd( right_k2_0, right_k2_2);
+ right_k3_0 = _mm_hadd_pd( right_k3_0, right_k3_2);
+ right_k2_0 = _mm_hadd_pd( right_k2_0, right_k3_0);
+
+ __m128d x1px2_k0 = _mm_mul_pd( left_k0_0, right_k0_0 );
+ __m128d x1px2_k2 = _mm_mul_pd( left_k2_0, right_k2_0 );
+
+ __m128d EV_t_l0_k0 = EVV[0];
+ __m128d EV_t_l0_k2 = EVV[1];
+ __m128d EV_t_l1_k0 = EVV[2];
+ __m128d EV_t_l1_k2 = EVV[3];
+ __m128d EV_t_l2_k0 = EVV[4];
+ __m128d EV_t_l2_k2 = EVV[5];
+ __m128d EV_t_l3_k0 = EVV[6];
+ __m128d EV_t_l3_k2 = EVV[7];
+
+ EV_t_l0_k0 = _mm_mul_pd( x1px2_k0, EV_t_l0_k0 );
+ EV_t_l0_k2 = _mm_mul_pd( x1px2_k2, EV_t_l0_k2 );
+ EV_t_l0_k0 = _mm_hadd_pd( EV_t_l0_k0, EV_t_l0_k2 );
+
+ EV_t_l1_k0 = _mm_mul_pd( x1px2_k0, EV_t_l1_k0 );
+ EV_t_l1_k2 = _mm_mul_pd( x1px2_k2, EV_t_l1_k2 );
+
+ EV_t_l1_k0 = _mm_hadd_pd( EV_t_l1_k0, EV_t_l1_k2 );
+ EV_t_l0_k0 = _mm_hadd_pd( EV_t_l0_k0, EV_t_l1_k0 );
+
+ EV_t_l2_k0 = _mm_mul_pd( x1px2_k0, EV_t_l2_k0 );
+ EV_t_l2_k2 = _mm_mul_pd( x1px2_k2, EV_t_l2_k2 );
+ EV_t_l2_k0 = _mm_hadd_pd( EV_t_l2_k0, EV_t_l2_k2 );
+
+ EV_t_l3_k0 = _mm_mul_pd( x1px2_k0, EV_t_l3_k0 );
+ EV_t_l3_k2 = _mm_mul_pd( x1px2_k2, EV_t_l3_k2 );
+ EV_t_l3_k0 = _mm_hadd_pd( EV_t_l3_k0, EV_t_l3_k2 );
+
+ EV_t_l2_k0 = _mm_hadd_pd( EV_t_l2_k0, EV_t_l3_k0 );
+
+ _mm_store_pd(x3, EV_t_l0_k0);
+ _mm_store_pd(&x3[2], EV_t_l2_k0);
+ }
+ break;
+ case PLL_TIP_INNER:
+ for (i = 0; i < n; i++)
+ {
+ x1 = &(tipVector[4 * tipX1[i]]);
+ x2 = &x2_start[4 * i];
+ x3 = &x3_start[4 * i];
+
+ le = &left[cptr[i] * 16];
+ ri = &right[cptr[i] * 16];
+
+ __m128d x1_0 = _mm_load_pd( &x1[0] );
+ __m128d x1_2 = _mm_load_pd( &x1[2] );
+
+ __m128d left_k0_0 = _mm_load_pd( &le[0] );
+ __m128d left_k0_2 = _mm_load_pd( &le[2] );
+ __m128d left_k1_0 = _mm_load_pd( &le[4] );
+ __m128d left_k1_2 = _mm_load_pd( &le[6] );
+ __m128d left_k2_0 = _mm_load_pd( &le[8] );
+ __m128d left_k2_2 = _mm_load_pd( &le[10] );
+ __m128d left_k3_0 = _mm_load_pd( &le[12] );
+ __m128d left_k3_2 = _mm_load_pd( &le[14] );
+
+ left_k0_0 = _mm_mul_pd(x1_0, left_k0_0);
+ left_k0_2 = _mm_mul_pd(x1_2, left_k0_2);
+
+ left_k1_0 = _mm_mul_pd(x1_0, left_k1_0);
+ left_k1_2 = _mm_mul_pd(x1_2, left_k1_2);
+
+ left_k0_0 = _mm_hadd_pd( left_k0_0, left_k0_2 );
+ left_k1_0 = _mm_hadd_pd( left_k1_0, left_k1_2);
+ left_k0_0 = _mm_hadd_pd( left_k0_0, left_k1_0);
+
+ left_k2_0 = _mm_mul_pd(x1_0, left_k2_0);
+ left_k2_2 = _mm_mul_pd(x1_2, left_k2_2);
+
+ left_k3_0 = _mm_mul_pd(x1_0, left_k3_0);
+ left_k3_2 = _mm_mul_pd(x1_2, left_k3_2);
+
+ left_k2_0 = _mm_hadd_pd( left_k2_0, left_k2_2);
+ left_k3_0 = _mm_hadd_pd( left_k3_0, left_k3_2);
+ left_k2_0 = _mm_hadd_pd( left_k2_0, left_k3_0);
+
+ __m128d x2_0 = _mm_load_pd( &x2[0] );
+ __m128d x2_2 = _mm_load_pd( &x2[2] );
+
+ __m128d right_k0_0 = _mm_load_pd( &ri[0] );
+ __m128d right_k0_2 = _mm_load_pd( &ri[2] );
+ __m128d right_k1_0 = _mm_load_pd( &ri[4] );
+ __m128d right_k1_2 = _mm_load_pd( &ri[6] );
+ __m128d right_k2_0 = _mm_load_pd( &ri[8] );
+ __m128d right_k2_2 = _mm_load_pd( &ri[10] );
+ __m128d right_k3_0 = _mm_load_pd( &ri[12] );
+ __m128d right_k3_2 = _mm_load_pd( &ri[14] );
+
+ right_k0_0 = _mm_mul_pd( x2_0, right_k0_0);
+ right_k0_2 = _mm_mul_pd( x2_2, right_k0_2);
+
+ right_k1_0 = _mm_mul_pd( x2_0, right_k1_0);
+ right_k1_2 = _mm_mul_pd( x2_2, right_k1_2);
+
+ right_k0_0 = _mm_hadd_pd( right_k0_0, right_k0_2);
+ right_k1_0 = _mm_hadd_pd( right_k1_0, right_k1_2);
+ right_k0_0 = _mm_hadd_pd( right_k0_0, right_k1_0);
+
+ right_k2_0 = _mm_mul_pd( x2_0, right_k2_0);
+ right_k2_2 = _mm_mul_pd( x2_2, right_k2_2);
+
+ right_k3_0 = _mm_mul_pd( x2_0, right_k3_0);
+ right_k3_2 = _mm_mul_pd( x2_2, right_k3_2);
+
+ right_k2_0 = _mm_hadd_pd( right_k2_0, right_k2_2);
+ right_k3_0 = _mm_hadd_pd( right_k3_0, right_k3_2);
+ right_k2_0 = _mm_hadd_pd( right_k2_0, right_k3_0);
+
+ __m128d x1px2_k0 = _mm_mul_pd( left_k0_0, right_k0_0 );
+ __m128d x1px2_k2 = _mm_mul_pd( left_k2_0, right_k2_0 );
+
+ __m128d EV_t_l0_k0 = EVV[0];
+ __m128d EV_t_l0_k2 = EVV[1];
+ __m128d EV_t_l1_k0 = EVV[2];
+ __m128d EV_t_l1_k2 = EVV[3];
+ __m128d EV_t_l2_k0 = EVV[4];
+ __m128d EV_t_l2_k2 = EVV[5];
+ __m128d EV_t_l3_k0 = EVV[6];
+ __m128d EV_t_l3_k2 = EVV[7];
+
+
+ EV_t_l0_k0 = _mm_mul_pd( x1px2_k0, EV_t_l0_k0 );
+ EV_t_l0_k2 = _mm_mul_pd( x1px2_k2, EV_t_l0_k2 );
+ EV_t_l0_k0 = _mm_hadd_pd( EV_t_l0_k0, EV_t_l0_k2 );
+
+ EV_t_l1_k0 = _mm_mul_pd( x1px2_k0, EV_t_l1_k0 );
+ EV_t_l1_k2 = _mm_mul_pd( x1px2_k2, EV_t_l1_k2 );
+
+ EV_t_l1_k0 = _mm_hadd_pd( EV_t_l1_k0, EV_t_l1_k2 );
+ EV_t_l0_k0 = _mm_hadd_pd( EV_t_l0_k0, EV_t_l1_k0 );
+
+ EV_t_l2_k0 = _mm_mul_pd( x1px2_k0, EV_t_l2_k0 );
+ EV_t_l2_k2 = _mm_mul_pd( x1px2_k2, EV_t_l2_k2 );
+ EV_t_l2_k0 = _mm_hadd_pd( EV_t_l2_k0, EV_t_l2_k2 );
+
+ EV_t_l3_k0 = _mm_mul_pd( x1px2_k0, EV_t_l3_k0 );
+ EV_t_l3_k2 = _mm_mul_pd( x1px2_k2, EV_t_l3_k2 );
+ EV_t_l3_k0 = _mm_hadd_pd( EV_t_l3_k0, EV_t_l3_k2 );
+
+ EV_t_l2_k0 = _mm_hadd_pd( EV_t_l2_k0, EV_t_l3_k0 );
+
+ scale = 1;
+
+ __m128d v1 = _mm_and_pd(EV_t_l0_k0, absMask.m);
+ v1 = _mm_cmplt_pd(v1, minlikelihood_sse);
+ if(_mm_movemask_pd( v1 ) != 3)
+ scale = 0;
+ else
+ {
+ v1 = _mm_and_pd(EV_t_l2_k0, absMask.m);
+ v1 = _mm_cmplt_pd(v1, minlikelihood_sse);
+ if(_mm_movemask_pd( v1 ) != 3)
+ scale = 0;
+ }
+
+ if(scale)
+ {
+ _mm_store_pd(&x3[0], _mm_mul_pd(EV_t_l0_k0, sc));
+ _mm_store_pd(&x3[2], _mm_mul_pd(EV_t_l2_k0, sc));
+
+ if(!fastScaling)
+ ex3[i] += 1;
+ else
+ addScale += wgt[i];
+ }
+ else
+ {
+ _mm_store_pd(x3, EV_t_l0_k0);
+ _mm_store_pd(&x3[2], EV_t_l2_k0);
+ }
+
+
+ }
+ break;
+ case PLL_INNER_INNER:
+ for (i = 0; i < n; i++)
+ {
+ x1 = &x1_start[4 * i];
+ x2 = &x2_start[4 * i];
+ x3 = &x3_start[4 * i];
+
+ le = &left[cptr[i] * 16];
+ ri = &right[cptr[i] * 16];
+
+ __m128d x1_0 = _mm_load_pd( &x1[0] );
+ __m128d x1_2 = _mm_load_pd( &x1[2] );
+
+ __m128d left_k0_0 = _mm_load_pd( &le[0] );
+ __m128d left_k0_2 = _mm_load_pd( &le[2] );
+ __m128d left_k1_0 = _mm_load_pd( &le[4] );
+ __m128d left_k1_2 = _mm_load_pd( &le[6] );
+ __m128d left_k2_0 = _mm_load_pd( &le[8] );
+ __m128d left_k2_2 = _mm_load_pd( &le[10] );
+ __m128d left_k3_0 = _mm_load_pd( &le[12] );
+ __m128d left_k3_2 = _mm_load_pd( &le[14] );
+
+ left_k0_0 = _mm_mul_pd(x1_0, left_k0_0);
+ left_k0_2 = _mm_mul_pd(x1_2, left_k0_2);
+
+ left_k1_0 = _mm_mul_pd(x1_0, left_k1_0);
+ left_k1_2 = _mm_mul_pd(x1_2, left_k1_2);
+
+ left_k0_0 = _mm_hadd_pd( left_k0_0, left_k0_2 );
+ left_k1_0 = _mm_hadd_pd( left_k1_0, left_k1_2);
+ left_k0_0 = _mm_hadd_pd( left_k0_0, left_k1_0);
+
+ left_k2_0 = _mm_mul_pd(x1_0, left_k2_0);
+ left_k2_2 = _mm_mul_pd(x1_2, left_k2_2);
+
+ left_k3_0 = _mm_mul_pd(x1_0, left_k3_0);
+ left_k3_2 = _mm_mul_pd(x1_2, left_k3_2);
+
+ left_k2_0 = _mm_hadd_pd( left_k2_0, left_k2_2);
+ left_k3_0 = _mm_hadd_pd( left_k3_0, left_k3_2);
+ left_k2_0 = _mm_hadd_pd( left_k2_0, left_k3_0);
+
+ __m128d x2_0 = _mm_load_pd( &x2[0] );
+ __m128d x2_2 = _mm_load_pd( &x2[2] );
+
+ __m128d right_k0_0 = _mm_load_pd( &ri[0] );
+ __m128d right_k0_2 = _mm_load_pd( &ri[2] );
+ __m128d right_k1_0 = _mm_load_pd( &ri[4] );
+ __m128d right_k1_2 = _mm_load_pd( &ri[6] );
+ __m128d right_k2_0 = _mm_load_pd( &ri[8] );
+ __m128d right_k2_2 = _mm_load_pd( &ri[10] );
+ __m128d right_k3_0 = _mm_load_pd( &ri[12] );
+ __m128d right_k3_2 = _mm_load_pd( &ri[14] );
+
+ right_k0_0 = _mm_mul_pd( x2_0, right_k0_0);
+ right_k0_2 = _mm_mul_pd( x2_2, right_k0_2);
+
+ right_k1_0 = _mm_mul_pd( x2_0, right_k1_0);
+ right_k1_2 = _mm_mul_pd( x2_2, right_k1_2);
+
+ right_k0_0 = _mm_hadd_pd( right_k0_0, right_k0_2);
+ right_k1_0 = _mm_hadd_pd( right_k1_0, right_k1_2);
+ right_k0_0 = _mm_hadd_pd( right_k0_0, right_k1_0);
+
+ right_k2_0 = _mm_mul_pd( x2_0, right_k2_0);
+ right_k2_2 = _mm_mul_pd( x2_2, right_k2_2);
+
+ right_k3_0 = _mm_mul_pd( x2_0, right_k3_0);
+ right_k3_2 = _mm_mul_pd( x2_2, right_k3_2);
+
+ right_k2_0 = _mm_hadd_pd( right_k2_0, right_k2_2);
+ right_k3_0 = _mm_hadd_pd( right_k3_0, right_k3_2);
+ right_k2_0 = _mm_hadd_pd( right_k2_0, right_k3_0);
+
+ __m128d x1px2_k0 = _mm_mul_pd( left_k0_0, right_k0_0 );
+ __m128d x1px2_k2 = _mm_mul_pd( left_k2_0, right_k2_0 );
+
+ __m128d EV_t_l0_k0 = EVV[0];
+ __m128d EV_t_l0_k2 = EVV[1];
+ __m128d EV_t_l1_k0 = EVV[2];
+ __m128d EV_t_l1_k2 = EVV[3];
+ __m128d EV_t_l2_k0 = EVV[4];
+ __m128d EV_t_l2_k2 = EVV[5];
+ __m128d EV_t_l3_k0 = EVV[6];
+ __m128d EV_t_l3_k2 = EVV[7];
+
+
+ EV_t_l0_k0 = _mm_mul_pd( x1px2_k0, EV_t_l0_k0 );
+ EV_t_l0_k2 = _mm_mul_pd( x1px2_k2, EV_t_l0_k2 );
+ EV_t_l0_k0 = _mm_hadd_pd( EV_t_l0_k0, EV_t_l0_k2 );
+
+ EV_t_l1_k0 = _mm_mul_pd( x1px2_k0, EV_t_l1_k0 );
+ EV_t_l1_k2 = _mm_mul_pd( x1px2_k2, EV_t_l1_k2 );
+
+ EV_t_l1_k0 = _mm_hadd_pd( EV_t_l1_k0, EV_t_l1_k2 );
+ EV_t_l0_k0 = _mm_hadd_pd( EV_t_l0_k0, EV_t_l1_k0 );
+
+ EV_t_l2_k0 = _mm_mul_pd( x1px2_k0, EV_t_l2_k0 );
+ EV_t_l2_k2 = _mm_mul_pd( x1px2_k2, EV_t_l2_k2 );
+ EV_t_l2_k0 = _mm_hadd_pd( EV_t_l2_k0, EV_t_l2_k2 );
+
+ EV_t_l3_k0 = _mm_mul_pd( x1px2_k0, EV_t_l3_k0 );
+ EV_t_l3_k2 = _mm_mul_pd( x1px2_k2, EV_t_l3_k2 );
+ EV_t_l3_k0 = _mm_hadd_pd( EV_t_l3_k0, EV_t_l3_k2 );
+
+ EV_t_l2_k0 = _mm_hadd_pd( EV_t_l2_k0, EV_t_l3_k0 );
+
+ scale = 1;
+
+ __m128d v1 = _mm_and_pd(EV_t_l0_k0, absMask.m);
+ v1 = _mm_cmplt_pd(v1, minlikelihood_sse);
+ if(_mm_movemask_pd( v1 ) != 3)
+ scale = 0;
+ else
+ {
+ v1 = _mm_and_pd(EV_t_l2_k0, absMask.m);
+ v1 = _mm_cmplt_pd(v1, minlikelihood_sse);
+ if(_mm_movemask_pd( v1 ) != 3)
+ scale = 0;
+ }
+
+ if(scale)
+ {
+ _mm_store_pd(&x3[0], _mm_mul_pd(EV_t_l0_k0, sc));
+ _mm_store_pd(&x3[2], _mm_mul_pd(EV_t_l2_k0, sc));
+
+ if(!fastScaling)
+ ex3[i] += 1;
+ else
+ addScale += wgt[i];
+ }
+ else
+ {
+ _mm_store_pd(x3, EV_t_l0_k0);
+ _mm_store_pd(&x3[2], EV_t_l2_k0);
+ }
+
+ }
+ break;
+ default:
+ assert(0);
+ }
+
+ if(fastScaling)
+ *scalerIncrement = addScale;
+}
+#endif
+
+/** @brief Check whether the position \a pos in bitvector \a x is a gap
+
+ @param x
+ A bitvector represented by unsigned integers
+
+ @param pos
+ Position to check in \a x if it is set (i.e. it is a gap)
+
+ @return
+ Returns the value of the bit vector (\b 1 if set, \b 0 if not)
+*/
+#ifndef __clang__
+inline
+#endif
+boolean isGap(unsigned int *x, int pos)
+{
+ return (x[pos / 32] & mask32[pos % 32]);
+}
+
+/** @brief Check whether the position \a pos in bitvector \a x is \b NOT a gap
+
+ @param x
+ A bitvector represented by unsigned integers
+
+ @param pos
+ Position to check in \a x if it is \b NOT set (i.e. it is \b NOT a gap)
+
+ @return
+ Returns the value of the bit vector (\b 1 if set, \b 0 if not)
+*/
+#ifndef __clang__
+inline
+#endif
+boolean noGap(unsigned int *x, int pos)
+{
+ return (!(x[pos / 32] & mask32[pos % 32]));
+}
+
+#if (!defined(__AVX) && defined(__SSE3))
+/** @ingroup group1
+ * @brief Computation of conditional likelihood arrray for GTR CAT with memory saving (Optimized SSE3 version for DNA data)
+
+ This is the SSE3 optimized version of ::newviewCAT_FLEX for computing the conditional
+ likelihood arrays at some node \a p, given child nodes \a q and \a r using the \b CAT
+ model of rate heterogeneity. The memory saving technique is incorporated.
+
+ @note
+ For more details and function argument description check the function ::newviewCAT_FLEX
+*/
+static void newviewGTRCAT_SAVE( int tipCase, double *EV, int *cptr,
+ double *x1_start, double *x2_start, double *x3_start, double *tipVector,
+ int *ex3, unsigned char *tipX1, unsigned char *tipX2,
+ int n, double *left, double *right, int *wgt, int *scalerIncrement, const boolean fastScaling,
+ unsigned int *x1_gap, unsigned int *x2_gap, unsigned int *x3_gap,
+ double *x1_gapColumn, double *x2_gapColumn, double *x3_gapColumn, const int maxCats)
+{
+ double
+ *le,
+ *ri,
+ *x1,
+ *x2,
+ *x3,
+ *x1_ptr = x1_start,
+ *x2_ptr = x2_start,
+ *x3_ptr = x3_start,
+ EV_t[16] __attribute__ ((aligned (PLL_BYTE_ALIGNMENT)));
+
+ int
+ i,
+ j,
+ scale,
+ scaleGap = 0,
+ addScale = 0;
+
+ __m128d
+ minlikelihood_sse = _mm_set1_pd( PLL_MINLIKELIHOOD ),
+ sc = _mm_set1_pd(PLL_TWOTOTHE256),
+ EVV[8];
+
+ for(i = 0; i < 4; i++)
+ for (j=0; j < 4; j++)
+ EV_t[4 * j + i] = EV[4 * i + j];
+
+ for(i = 0; i < 8; i++)
+ EVV[i] = _mm_load_pd(&EV_t[i * 2]);
+
+ {
+ x1 = x1_gapColumn;
+ x2 = x2_gapColumn;
+ x3 = x3_gapColumn;
+
+ le = &left[maxCats * 16];
+ ri = &right[maxCats * 16];
+
+ __m128d x1_0 = _mm_load_pd( &x1[0] );
+ __m128d x1_2 = _mm_load_pd( &x1[2] );
+
+ __m128d left_k0_0 = _mm_load_pd( &le[0] );
+ __m128d left_k0_2 = _mm_load_pd( &le[2] );
+ __m128d left_k1_0 = _mm_load_pd( &le[4] );
+ __m128d left_k1_2 = _mm_load_pd( &le[6] );
+ __m128d left_k2_0 = _mm_load_pd( &le[8] );
+ __m128d left_k2_2 = _mm_load_pd( &le[10] );
+ __m128d left_k3_0 = _mm_load_pd( &le[12] );
+ __m128d left_k3_2 = _mm_load_pd( &le[14] );
+
+ left_k0_0 = _mm_mul_pd(x1_0, left_k0_0);
+ left_k0_2 = _mm_mul_pd(x1_2, left_k0_2);
+
+ left_k1_0 = _mm_mul_pd(x1_0, left_k1_0);
+ left_k1_2 = _mm_mul_pd(x1_2, left_k1_2);
+
+ left_k0_0 = _mm_hadd_pd( left_k0_0, left_k0_2 );
+ left_k1_0 = _mm_hadd_pd( left_k1_0, left_k1_2);
+ left_k0_0 = _mm_hadd_pd( left_k0_0, left_k1_0);
+
+ left_k2_0 = _mm_mul_pd(x1_0, left_k2_0);
+ left_k2_2 = _mm_mul_pd(x1_2, left_k2_2);
+
+ left_k3_0 = _mm_mul_pd(x1_0, left_k3_0);
+ left_k3_2 = _mm_mul_pd(x1_2, left_k3_2);
+
+ left_k2_0 = _mm_hadd_pd( left_k2_0, left_k2_2);
+ left_k3_0 = _mm_hadd_pd( left_k3_0, left_k3_2);
+ left_k2_0 = _mm_hadd_pd( left_k2_0, left_k3_0);
+
+ __m128d x2_0 = _mm_load_pd( &x2[0] );
+ __m128d x2_2 = _mm_load_pd( &x2[2] );
+
+ __m128d right_k0_0 = _mm_load_pd( &ri[0] );
+ __m128d right_k0_2 = _mm_load_pd( &ri[2] );
+ __m128d right_k1_0 = _mm_load_pd( &ri[4] );
+ __m128d right_k1_2 = _mm_load_pd( &ri[6] );
+ __m128d right_k2_0 = _mm_load_pd( &ri[8] );
+ __m128d right_k2_2 = _mm_load_pd( &ri[10] );
+ __m128d right_k3_0 = _mm_load_pd( &ri[12] );
+ __m128d right_k3_2 = _mm_load_pd( &ri[14] );
+
+ right_k0_0 = _mm_mul_pd( x2_0, right_k0_0);
+ right_k0_2 = _mm_mul_pd( x2_2, right_k0_2);
+
+ right_k1_0 = _mm_mul_pd( x2_0, right_k1_0);
+ right_k1_2 = _mm_mul_pd( x2_2, right_k1_2);
+
+ right_k0_0 = _mm_hadd_pd( right_k0_0, right_k0_2);
+ right_k1_0 = _mm_hadd_pd( right_k1_0, right_k1_2);
+ right_k0_0 = _mm_hadd_pd( right_k0_0, right_k1_0);
+
+ right_k2_0 = _mm_mul_pd( x2_0, right_k2_0);
+ right_k2_2 = _mm_mul_pd( x2_2, right_k2_2);
+
+ right_k3_0 = _mm_mul_pd( x2_0, right_k3_0);
+ right_k3_2 = _mm_mul_pd( x2_2, right_k3_2);
+
+ right_k2_0 = _mm_hadd_pd( right_k2_0, right_k2_2);
+ right_k3_0 = _mm_hadd_pd( right_k3_0, right_k3_2);
+ right_k2_0 = _mm_hadd_pd( right_k2_0, right_k3_0);
+
+ __m128d x1px2_k0 = _mm_mul_pd( left_k0_0, right_k0_0 );
+ __m128d x1px2_k2 = _mm_mul_pd( left_k2_0, right_k2_0 );
+
+ __m128d EV_t_l0_k0 = EVV[0];
+ __m128d EV_t_l0_k2 = EVV[1];
+ __m128d EV_t_l1_k0 = EVV[2];
+ __m128d EV_t_l1_k2 = EVV[3];
+ __m128d EV_t_l2_k0 = EVV[4];
+ __m128d EV_t_l2_k2 = EVV[5];
+ __m128d EV_t_l3_k0 = EVV[6];
+ __m128d EV_t_l3_k2 = EVV[7];
+
+ EV_t_l0_k0 = _mm_mul_pd( x1px2_k0, EV_t_l0_k0 );
+ EV_t_l0_k2 = _mm_mul_pd( x1px2_k2, EV_t_l0_k2 );
+ EV_t_l0_k0 = _mm_hadd_pd( EV_t_l0_k0, EV_t_l0_k2 );
+
+ EV_t_l1_k0 = _mm_mul_pd( x1px2_k0, EV_t_l1_k0 );
+ EV_t_l1_k2 = _mm_mul_pd( x1px2_k2, EV_t_l1_k2 );
+
+ EV_t_l1_k0 = _mm_hadd_pd( EV_t_l1_k0, EV_t_l1_k2 );
+ EV_t_l0_k0 = _mm_hadd_pd( EV_t_l0_k0, EV_t_l1_k0 );
+
+ EV_t_l2_k0 = _mm_mul_pd( x1px2_k0, EV_t_l2_k0 );
+ EV_t_l2_k2 = _mm_mul_pd( x1px2_k2, EV_t_l2_k2 );
+ EV_t_l2_k0 = _mm_hadd_pd( EV_t_l2_k0, EV_t_l2_k2 );
+
+ EV_t_l3_k0 = _mm_mul_pd( x1px2_k0, EV_t_l3_k0 );
+ EV_t_l3_k2 = _mm_mul_pd( x1px2_k2, EV_t_l3_k2 );
+ EV_t_l3_k0 = _mm_hadd_pd( EV_t_l3_k0, EV_t_l3_k2 );
+
+ EV_t_l2_k0 = _mm_hadd_pd( EV_t_l2_k0, EV_t_l3_k0 );
+
+ if(tipCase != PLL_TIP_TIP)
+ {
+ scale = 1;
+
+ __m128d v1 = _mm_and_pd(EV_t_l0_k0, absMask.m);
+ v1 = _mm_cmplt_pd(v1, minlikelihood_sse);
+ if(_mm_movemask_pd( v1 ) != 3)
+ scale = 0;
+ else
+ {
+ v1 = _mm_and_pd(EV_t_l2_k0, absMask.m);
+ v1 = _mm_cmplt_pd(v1, minlikelihood_sse);
+ if(_mm_movemask_pd( v1 ) != 3)
+ scale = 0;
+ }
+
+ if(scale)
+ {
+ _mm_store_pd(&x3[0], _mm_mul_pd(EV_t_l0_k0, sc));
+ _mm_store_pd(&x3[2], _mm_mul_pd(EV_t_l2_k0, sc));
+
+ scaleGap = PLL_TRUE;
+ }
+ else
+ {
+ _mm_store_pd(x3, EV_t_l0_k0);
+ _mm_store_pd(&x3[2], EV_t_l2_k0);
+ }
+ }
+ else
+ {
+ _mm_store_pd(x3, EV_t_l0_k0);
+ _mm_store_pd(&x3[2], EV_t_l2_k0);
+ }
+ }
+
+
+ switch(tipCase)
+ {
+ case PLL_TIP_TIP:
+ for (i = 0; i < n; i++)
+ {
+ if(noGap(x3_gap, i))
+ {
+ x1 = &(tipVector[4 * tipX1[i]]);
+ x2 = &(tipVector[4 * tipX2[i]]);
+
+ x3 = x3_ptr;
+
+ if(isGap(x1_gap, i))
+ le = &left[maxCats * 16];
+ else
+ le = &left[cptr[i] * 16];
+
+ if(isGap(x2_gap, i))
+ ri = &right[maxCats * 16];
+ else
+ ri = &right[cptr[i] * 16];
+
+ __m128d x1_0 = _mm_load_pd( &x1[0] );
+ __m128d x1_2 = _mm_load_pd( &x1[2] );
+
+ __m128d left_k0_0 = _mm_load_pd( &le[0] );
+ __m128d left_k0_2 = _mm_load_pd( &le[2] );
+ __m128d left_k1_0 = _mm_load_pd( &le[4] );
+ __m128d left_k1_2 = _mm_load_pd( &le[6] );
+ __m128d left_k2_0 = _mm_load_pd( &le[8] );
+ __m128d left_k2_2 = _mm_load_pd( &le[10] );
+ __m128d left_k3_0 = _mm_load_pd( &le[12] );
+ __m128d left_k3_2 = _mm_load_pd( &le[14] );
+
+ left_k0_0 = _mm_mul_pd(x1_0, left_k0_0);
+ left_k0_2 = _mm_mul_pd(x1_2, left_k0_2);
+
+ left_k1_0 = _mm_mul_pd(x1_0, left_k1_0);
+ left_k1_2 = _mm_mul_pd(x1_2, left_k1_2);
+
+ left_k0_0 = _mm_hadd_pd( left_k0_0, left_k0_2 );
+ left_k1_0 = _mm_hadd_pd( left_k1_0, left_k1_2);
+ left_k0_0 = _mm_hadd_pd( left_k0_0, left_k1_0);
+
+ left_k2_0 = _mm_mul_pd(x1_0, left_k2_0);
+ left_k2_2 = _mm_mul_pd(x1_2, left_k2_2);
+
+ left_k3_0 = _mm_mul_pd(x1_0, left_k3_0);
+ left_k3_2 = _mm_mul_pd(x1_2, left_k3_2);
+
+ left_k2_0 = _mm_hadd_pd( left_k2_0, left_k2_2);
+ left_k3_0 = _mm_hadd_pd( left_k3_0, left_k3_2);
+ left_k2_0 = _mm_hadd_pd( left_k2_0, left_k3_0);
+
+ __m128d x2_0 = _mm_load_pd( &x2[0] );
+ __m128d x2_2 = _mm_load_pd( &x2[2] );
+
+ __m128d right_k0_0 = _mm_load_pd( &ri[0] );
+ __m128d right_k0_2 = _mm_load_pd( &ri[2] );
+ __m128d right_k1_0 = _mm_load_pd( &ri[4] );
+ __m128d right_k1_2 = _mm_load_pd( &ri[6] );
+ __m128d right_k2_0 = _mm_load_pd( &ri[8] );
+ __m128d right_k2_2 = _mm_load_pd( &ri[10] );
+ __m128d right_k3_0 = _mm_load_pd( &ri[12] );
+ __m128d right_k3_2 = _mm_load_pd( &ri[14] );
+
+ right_k0_0 = _mm_mul_pd( x2_0, right_k0_0);
+ right_k0_2 = _mm_mul_pd( x2_2, right_k0_2);
+
+ right_k1_0 = _mm_mul_pd( x2_0, right_k1_0);
+ right_k1_2 = _mm_mul_pd( x2_2, right_k1_2);
+
+ right_k0_0 = _mm_hadd_pd( right_k0_0, right_k0_2);
+ right_k1_0 = _mm_hadd_pd( right_k1_0, right_k1_2);
+ right_k0_0 = _mm_hadd_pd( right_k0_0, right_k1_0);
+
+ right_k2_0 = _mm_mul_pd( x2_0, right_k2_0);
+ right_k2_2 = _mm_mul_pd( x2_2, right_k2_2);
+
+ right_k3_0 = _mm_mul_pd( x2_0, right_k3_0);
+ right_k3_2 = _mm_mul_pd( x2_2, right_k3_2);
+
+ right_k2_0 = _mm_hadd_pd( right_k2_0, right_k2_2);
+ right_k3_0 = _mm_hadd_pd( right_k3_0, right_k3_2);
+ right_k2_0 = _mm_hadd_pd( right_k2_0, right_k3_0);
+
+ __m128d x1px2_k0 = _mm_mul_pd( left_k0_0, right_k0_0 );
+ __m128d x1px2_k2 = _mm_mul_pd( left_k2_0, right_k2_0 );
+
+ __m128d EV_t_l0_k0 = EVV[0];
+ __m128d EV_t_l0_k2 = EVV[1];
+ __m128d EV_t_l1_k0 = EVV[2];
+ __m128d EV_t_l1_k2 = EVV[3];
+ __m128d EV_t_l2_k0 = EVV[4];
+ __m128d EV_t_l2_k2 = EVV[5];
+ __m128d EV_t_l3_k0 = EVV[6];
+ __m128d EV_t_l3_k2 = EVV[7];
+
+ EV_t_l0_k0 = _mm_mul_pd( x1px2_k0, EV_t_l0_k0 );
+ EV_t_l0_k2 = _mm_mul_pd( x1px2_k2, EV_t_l0_k2 );
+ EV_t_l0_k0 = _mm_hadd_pd( EV_t_l0_k0, EV_t_l0_k2 );
+
+ EV_t_l1_k0 = _mm_mul_pd( x1px2_k0, EV_t_l1_k0 );
+ EV_t_l1_k2 = _mm_mul_pd( x1px2_k2, EV_t_l1_k2 );
+
+ EV_t_l1_k0 = _mm_hadd_pd( EV_t_l1_k0, EV_t_l1_k2 );
+ EV_t_l0_k0 = _mm_hadd_pd( EV_t_l0_k0, EV_t_l1_k0 );
+
+ EV_t_l2_k0 = _mm_mul_pd( x1px2_k0, EV_t_l2_k0 );
+ EV_t_l2_k2 = _mm_mul_pd( x1px2_k2, EV_t_l2_k2 );
+ EV_t_l2_k0 = _mm_hadd_pd( EV_t_l2_k0, EV_t_l2_k2 );
+
+ EV_t_l3_k0 = _mm_mul_pd( x1px2_k0, EV_t_l3_k0 );
+ EV_t_l3_k2 = _mm_mul_pd( x1px2_k2, EV_t_l3_k2 );
+ EV_t_l3_k0 = _mm_hadd_pd( EV_t_l3_k0, EV_t_l3_k2 );
+
+ EV_t_l2_k0 = _mm_hadd_pd( EV_t_l2_k0, EV_t_l3_k0 );
+
+ _mm_store_pd(x3, EV_t_l0_k0);
+ _mm_store_pd(&x3[2], EV_t_l2_k0);
+
+ x3_ptr += 4;
+ }
+ }
+ break;
+ case PLL_TIP_INNER:
+ for (i = 0; i < n; i++)
+ {
+ if(isGap(x3_gap, i))
+ {
+ if(scaleGap)
+ {
+ if(!fastScaling)
+ ex3[i] += 1;
+ else
+ addScale += wgt[i];
+ }
+ }
+ else
+ {
+ x1 = &(tipVector[4 * tipX1[i]]);
+
+ x2 = x2_ptr;
+ x3 = x3_ptr;
+
+ if(isGap(x1_gap, i))
+ le = &left[maxCats * 16];
+ else
+ le = &left[cptr[i] * 16];
+
+ if(isGap(x2_gap, i))
+ {
+ ri = &right[maxCats * 16];
+ x2 = x2_gapColumn;
+ }
+ else
+ {
+ ri = &right[cptr[i] * 16];
+ x2 = x2_ptr;
+ x2_ptr += 4;
+ }
+
+ __m128d x1_0 = _mm_load_pd( &x1[0] );
+ __m128d x1_2 = _mm_load_pd( &x1[2] );
+
+ __m128d left_k0_0 = _mm_load_pd( &le[0] );
+ __m128d left_k0_2 = _mm_load_pd( &le[2] );
+ __m128d left_k1_0 = _mm_load_pd( &le[4] );
+ __m128d left_k1_2 = _mm_load_pd( &le[6] );
+ __m128d left_k2_0 = _mm_load_pd( &le[8] );
+ __m128d left_k2_2 = _mm_load_pd( &le[10] );
+ __m128d left_k3_0 = _mm_load_pd( &le[12] );
+ __m128d left_k3_2 = _mm_load_pd( &le[14] );
+
+ left_k0_0 = _mm_mul_pd(x1_0, left_k0_0);
+ left_k0_2 = _mm_mul_pd(x1_2, left_k0_2);
+
+ left_k1_0 = _mm_mul_pd(x1_0, left_k1_0);
+ left_k1_2 = _mm_mul_pd(x1_2, left_k1_2);
+
+ left_k0_0 = _mm_hadd_pd( left_k0_0, left_k0_2 );
+ left_k1_0 = _mm_hadd_pd( left_k1_0, left_k1_2);
+ left_k0_0 = _mm_hadd_pd( left_k0_0, left_k1_0);
+
+ left_k2_0 = _mm_mul_pd(x1_0, left_k2_0);
+ left_k2_2 = _mm_mul_pd(x1_2, left_k2_2);
+
+ left_k3_0 = _mm_mul_pd(x1_0, left_k3_0);
+ left_k3_2 = _mm_mul_pd(x1_2, left_k3_2);
+
+ left_k2_0 = _mm_hadd_pd( left_k2_0, left_k2_2);
+ left_k3_0 = _mm_hadd_pd( left_k3_0, left_k3_2);
+ left_k2_0 = _mm_hadd_pd( left_k2_0, left_k3_0);
+
+ __m128d x2_0 = _mm_load_pd( &x2[0] );
+ __m128d x2_2 = _mm_load_pd( &x2[2] );
+
+ __m128d right_k0_0 = _mm_load_pd( &ri[0] );
+ __m128d right_k0_2 = _mm_load_pd( &ri[2] );
+ __m128d right_k1_0 = _mm_load_pd( &ri[4] );
+ __m128d right_k1_2 = _mm_load_pd( &ri[6] );
+ __m128d right_k2_0 = _mm_load_pd( &ri[8] );
+ __m128d right_k2_2 = _mm_load_pd( &ri[10] );
+ __m128d right_k3_0 = _mm_load_pd( &ri[12] );
+ __m128d right_k3_2 = _mm_load_pd( &ri[14] );
+
+ right_k0_0 = _mm_mul_pd( x2_0, right_k0_0);
+ right_k0_2 = _mm_mul_pd( x2_2, right_k0_2);
+
+ right_k1_0 = _mm_mul_pd( x2_0, right_k1_0);
+ right_k1_2 = _mm_mul_pd( x2_2, right_k1_2);
+
+ right_k0_0 = _mm_hadd_pd( right_k0_0, right_k0_2);
+ right_k1_0 = _mm_hadd_pd( right_k1_0, right_k1_2);
+ right_k0_0 = _mm_hadd_pd( right_k0_0, right_k1_0);
+
+ right_k2_0 = _mm_mul_pd( x2_0, right_k2_0);
+ right_k2_2 = _mm_mul_pd( x2_2, right_k2_2);
+
+ right_k3_0 = _mm_mul_pd( x2_0, right_k3_0);
+ right_k3_2 = _mm_mul_pd( x2_2, right_k3_2);
+
+ right_k2_0 = _mm_hadd_pd( right_k2_0, right_k2_2);
+ right_k3_0 = _mm_hadd_pd( right_k3_0, right_k3_2);
+ right_k2_0 = _mm_hadd_pd( right_k2_0, right_k3_0);
+
+ __m128d x1px2_k0 = _mm_mul_pd( left_k0_0, right_k0_0 );
+ __m128d x1px2_k2 = _mm_mul_pd( left_k2_0, right_k2_0 );
+
+ __m128d EV_t_l0_k0 = EVV[0];
+ __m128d EV_t_l0_k2 = EVV[1];
+ __m128d EV_t_l1_k0 = EVV[2];
+ __m128d EV_t_l1_k2 = EVV[3];
+ __m128d EV_t_l2_k0 = EVV[4];
+ __m128d EV_t_l2_k2 = EVV[5];
+ __m128d EV_t_l3_k0 = EVV[6];
+ __m128d EV_t_l3_k2 = EVV[7];
+
+
+ EV_t_l0_k0 = _mm_mul_pd( x1px2_k0, EV_t_l0_k0 );
+ EV_t_l0_k2 = _mm_mul_pd( x1px2_k2, EV_t_l0_k2 );
+ EV_t_l0_k0 = _mm_hadd_pd( EV_t_l0_k0, EV_t_l0_k2 );
+
+ EV_t_l1_k0 = _mm_mul_pd( x1px2_k0, EV_t_l1_k0 );
+ EV_t_l1_k2 = _mm_mul_pd( x1px2_k2, EV_t_l1_k2 );
+
+ EV_t_l1_k0 = _mm_hadd_pd( EV_t_l1_k0, EV_t_l1_k2 );
+ EV_t_l0_k0 = _mm_hadd_pd( EV_t_l0_k0, EV_t_l1_k0 );
+
+ EV_t_l2_k0 = _mm_mul_pd( x1px2_k0, EV_t_l2_k0 );
+ EV_t_l2_k2 = _mm_mul_pd( x1px2_k2, EV_t_l2_k2 );
+ EV_t_l2_k0 = _mm_hadd_pd( EV_t_l2_k0, EV_t_l2_k2 );
+
+ EV_t_l3_k0 = _mm_mul_pd( x1px2_k0, EV_t_l3_k0 );
+ EV_t_l3_k2 = _mm_mul_pd( x1px2_k2, EV_t_l3_k2 );
+ EV_t_l3_k0 = _mm_hadd_pd( EV_t_l3_k0, EV_t_l3_k2 );
+
+ EV_t_l2_k0 = _mm_hadd_pd( EV_t_l2_k0, EV_t_l3_k0 );
+
+ scale = 1;
+
+ __m128d v1 = _mm_and_pd(EV_t_l0_k0, absMask.m);
+ v1 = _mm_cmplt_pd(v1, minlikelihood_sse);
+ if(_mm_movemask_pd( v1 ) != 3)
+ scale = 0;
+ else
+ {
+ v1 = _mm_and_pd(EV_t_l2_k0, absMask.m);
+ v1 = _mm_cmplt_pd(v1, minlikelihood_sse);
+ if(_mm_movemask_pd( v1 ) != 3)
+ scale = 0;
+ }
+
+ if(scale)
+ {
+ _mm_store_pd(&x3[0], _mm_mul_pd(EV_t_l0_k0, sc));
+ _mm_store_pd(&x3[2], _mm_mul_pd(EV_t_l2_k0, sc));
+
+ if(!fastScaling)
+ ex3[i] += 1;
+ else
+ addScale += wgt[i];
+ }
+ else
+ {
+ _mm_store_pd(x3, EV_t_l0_k0);
+ _mm_store_pd(&x3[2], EV_t_l2_k0);
+ }
+
+ x3_ptr += 4;
+ }
+
+ }
+ break;
+ case PLL_INNER_INNER:
+ for (i = 0; i < n; i++)
+ {
+ if(isGap(x3_gap, i))
+ {
+ if(scaleGap)
+ {
+ if(!fastScaling)
+ ex3[i] += 1;
+ else
+ addScale += wgt[i];
+ }
+ }
+ else
+ {
+ x3 = x3_ptr;
+
+ if(isGap(x1_gap, i))
+ {
+ x1 = x1_gapColumn;
+ le = &left[maxCats * 16];
+ }
+ else
+ {
+ le = &left[cptr[i] * 16];
+ x1 = x1_ptr;
+ x1_ptr += 4;
+ }
+
+ if(isGap(x2_gap, i))
+ {
+ x2 = x2_gapColumn;
+ ri = &right[maxCats * 16];
+ }
+ else
+ {
+ ri = &right[cptr[i] * 16];
+ x2 = x2_ptr;
+ x2_ptr += 4;
+ }
+
+ __m128d x1_0 = _mm_load_pd( &x1[0] );
+ __m128d x1_2 = _mm_load_pd( &x1[2] );
+
+ __m128d left_k0_0 = _mm_load_pd( &le[0] );
+ __m128d left_k0_2 = _mm_load_pd( &le[2] );
+ __m128d left_k1_0 = _mm_load_pd( &le[4] );
+ __m128d left_k1_2 = _mm_load_pd( &le[6] );
+ __m128d left_k2_0 = _mm_load_pd( &le[8] );
+ __m128d left_k2_2 = _mm_load_pd( &le[10] );
+ __m128d left_k3_0 = _mm_load_pd( &le[12] );
+ __m128d left_k3_2 = _mm_load_pd( &le[14] );
+
+ left_k0_0 = _mm_mul_pd(x1_0, left_k0_0);
+ left_k0_2 = _mm_mul_pd(x1_2, left_k0_2);
+
+ left_k1_0 = _mm_mul_pd(x1_0, left_k1_0);
+ left_k1_2 = _mm_mul_pd(x1_2, left_k1_2);
+
+ left_k0_0 = _mm_hadd_pd( left_k0_0, left_k0_2 );
+ left_k1_0 = _mm_hadd_pd( left_k1_0, left_k1_2);
+ left_k0_0 = _mm_hadd_pd( left_k0_0, left_k1_0);
+
+ left_k2_0 = _mm_mul_pd(x1_0, left_k2_0);
+ left_k2_2 = _mm_mul_pd(x1_2, left_k2_2);
+
+ left_k3_0 = _mm_mul_pd(x1_0, left_k3_0);
+ left_k3_2 = _mm_mul_pd(x1_2, left_k3_2);
+
+ left_k2_0 = _mm_hadd_pd( left_k2_0, left_k2_2);
+ left_k3_0 = _mm_hadd_pd( left_k3_0, left_k3_2);
+ left_k2_0 = _mm_hadd_pd( left_k2_0, left_k3_0);
+
+ __m128d x2_0 = _mm_load_pd( &x2[0] );
+ __m128d x2_2 = _mm_load_pd( &x2[2] );
+
+ __m128d right_k0_0 = _mm_load_pd( &ri[0] );
+ __m128d right_k0_2 = _mm_load_pd( &ri[2] );
+ __m128d right_k1_0 = _mm_load_pd( &ri[4] );
+ __m128d right_k1_2 = _mm_load_pd( &ri[6] );
+ __m128d right_k2_0 = _mm_load_pd( &ri[8] );
+ __m128d right_k2_2 = _mm_load_pd( &ri[10] );
+ __m128d right_k3_0 = _mm_load_pd( &ri[12] );
+ __m128d right_k3_2 = _mm_load_pd( &ri[14] );
+
+ right_k0_0 = _mm_mul_pd( x2_0, right_k0_0);
+ right_k0_2 = _mm_mul_pd( x2_2, right_k0_2);
+
+ right_k1_0 = _mm_mul_pd( x2_0, right_k1_0);
+ right_k1_2 = _mm_mul_pd( x2_2, right_k1_2);
+
+ right_k0_0 = _mm_hadd_pd( right_k0_0, right_k0_2);
+ right_k1_0 = _mm_hadd_pd( right_k1_0, right_k1_2);
+ right_k0_0 = _mm_hadd_pd( right_k0_0, right_k1_0);
+
+ right_k2_0 = _mm_mul_pd( x2_0, right_k2_0);
+ right_k2_2 = _mm_mul_pd( x2_2, right_k2_2);
+
+ right_k3_0 = _mm_mul_pd( x2_0, right_k3_0);
+ right_k3_2 = _mm_mul_pd( x2_2, right_k3_2);
+
+ right_k2_0 = _mm_hadd_pd( right_k2_0, right_k2_2);
+ right_k3_0 = _mm_hadd_pd( right_k3_0, right_k3_2);
+ right_k2_0 = _mm_hadd_pd( right_k2_0, right_k3_0);
+
+ __m128d x1px2_k0 = _mm_mul_pd( left_k0_0, right_k0_0 );
+ __m128d x1px2_k2 = _mm_mul_pd( left_k2_0, right_k2_0 );
+
+ __m128d EV_t_l0_k0 = EVV[0];
+ __m128d EV_t_l0_k2 = EVV[1];
+ __m128d EV_t_l1_k0 = EVV[2];
+ __m128d EV_t_l1_k2 = EVV[3];
+ __m128d EV_t_l2_k0 = EVV[4];
+ __m128d EV_t_l2_k2 = EVV[5];
+ __m128d EV_t_l3_k0 = EVV[6];
+ __m128d EV_t_l3_k2 = EVV[7];
+
+
+ EV_t_l0_k0 = _mm_mul_pd( x1px2_k0, EV_t_l0_k0 );
+ EV_t_l0_k2 = _mm_mul_pd( x1px2_k2, EV_t_l0_k2 );
+ EV_t_l0_k0 = _mm_hadd_pd( EV_t_l0_k0, EV_t_l0_k2 );
+
+ EV_t_l1_k0 = _mm_mul_pd( x1px2_k0, EV_t_l1_k0 );
+ EV_t_l1_k2 = _mm_mul_pd( x1px2_k2, EV_t_l1_k2 );
+
+ EV_t_l1_k0 = _mm_hadd_pd( EV_t_l1_k0, EV_t_l1_k2 );
+ EV_t_l0_k0 = _mm_hadd_pd( EV_t_l0_k0, EV_t_l1_k0 );
+
+ EV_t_l2_k0 = _mm_mul_pd( x1px2_k0, EV_t_l2_k0 );
+ EV_t_l2_k2 = _mm_mul_pd( x1px2_k2, EV_t_l2_k2 );
+ EV_t_l2_k0 = _mm_hadd_pd( EV_t_l2_k0, EV_t_l2_k2 );
+
+ EV_t_l3_k0 = _mm_mul_pd( x1px2_k0, EV_t_l3_k0 );
+ EV_t_l3_k2 = _mm_mul_pd( x1px2_k2, EV_t_l3_k2 );
+ EV_t_l3_k0 = _mm_hadd_pd( EV_t_l3_k0, EV_t_l3_k2 );
+
+ EV_t_l2_k0 = _mm_hadd_pd( EV_t_l2_k0, EV_t_l3_k0 );
+
+ scale = 1;
+
+ __m128d v1 = _mm_and_pd(EV_t_l0_k0, absMask.m);
+ v1 = _mm_cmplt_pd(v1, minlikelihood_sse);
+ if(_mm_movemask_pd( v1 ) != 3)
+ scale = 0;
+ else
+ {
+ v1 = _mm_and_pd(EV_t_l2_k0, absMask.m);
+ v1 = _mm_cmplt_pd(v1, minlikelihood_sse);
+ if(_mm_movemask_pd( v1 ) != 3)
+ scale = 0;
+ }
+
+ if(scale)
+ {
+ _mm_store_pd(&x3[0], _mm_mul_pd(EV_t_l0_k0, sc));
+ _mm_store_pd(&x3[2], _mm_mul_pd(EV_t_l2_k0, sc));
+
+ if(!fastScaling)
+ ex3[i] += 1;
+ else
+ addScale += wgt[i];
+ }
+ else
+ {
+ _mm_store_pd(x3, EV_t_l0_k0);
+ _mm_store_pd(&x3[2], EV_t_l2_k0);
+ }
+
+ x3_ptr += 4;
+ }
+ }
+ break;
+ default:
+ assert(0);
+ }
+
+
+ if(fastScaling)
+ *scalerIncrement = addScale;
+}
+
+/** @ingroup group1
+ * @brief Computation of conditional likelihood arrray for GTR GAMMA with memory saving (Optimized SSE3 version for AA data)
+
+ This is the SSE3 optimized version of ::newviewGAMMA_FLEX for computing the conditional
+ likelihood arrays at some node \a p, given child nodes \a q and \a r using the \b GAMMA
+ model of rate heterogeneity. The memory saving technique is incorporated.
+
+ @note
+ For more details and function argument description check the function ::newviewGAMMA_FLEX
+*/
+static void newviewGTRGAMMAPROT_GAPPED_SAVE(int tipCase,
+ double *x1, double *x2, double *x3, double *extEV, double *tipVector,
+ int *ex3, unsigned char *tipX1, unsigned char *tipX2,
+ int n, double *left, double *right, int *wgt, int *scalerIncrement, const boolean fastScaling,
+ unsigned int *x1_gap, unsigned int *x2_gap, unsigned int *x3_gap,
+ double *x1_gapColumn, double *x2_gapColumn, double *x3_gapColumn
+ )
+{
+ double *uX1, *uX2, *v;
+ double x1px2;
+ int i, j, l, k, scale, addScale = 0,
+ gapScaling = 0;
+ double
+ *vl, *vr, *x1v, *x2v,
+ *x1_ptr = x1,
+ *x2_ptr = x2,
+ *x3_ptr = x3;
+
+
+
+ switch(tipCase)
+ {
+ case PLL_TIP_TIP:
+ {
+ double umpX1[1840], umpX2[1840];
+
+ for(i = 0; i < 23; i++)
+ {
+ v = &(tipVector[20 * i]);
+
+ for(k = 0; k < 80; k++)
+ {
+ double *ll = &left[k * 20];
+ double *rr = &right[k * 20];
+
+ __m128d umpX1v = _mm_setzero_pd();
+ __m128d umpX2v = _mm_setzero_pd();
+
+ for(l = 0; l < 20; l+=2)
+ {
+ __m128d vv = _mm_load_pd(&v[l]);
+ umpX1v = _mm_add_pd(umpX1v, _mm_mul_pd(vv, _mm_load_pd(&ll[l])));
+ umpX2v = _mm_add_pd(umpX2v, _mm_mul_pd(vv, _mm_load_pd(&rr[l])));
+ }
+
+ umpX1v = _mm_hadd_pd(umpX1v, umpX1v);
+ umpX2v = _mm_hadd_pd(umpX2v, umpX2v);
+
+ _mm_storel_pd(&umpX1[80 * i + k], umpX1v);
+ _mm_storel_pd(&umpX2[80 * i + k], umpX2v);
+ }
+ }
+
+ {
+ uX1 = &umpX1[1760];
+ uX2 = &umpX2[1760];
+
+ for(j = 0; j < 4; j++)
+ {
+ v = &x3_gapColumn[j * 20];
+
+ __m128d zero = _mm_setzero_pd();
+ for(k = 0; k < 20; k+=2)
+ _mm_store_pd(&v[k], zero);
+
+ for(k = 0; k < 20; k++)
+ {
+ double *eev = &extEV[k * 20];
+ x1px2 = uX1[j * 20 + k] * uX2[j * 20 + k];
+ __m128d x1px2v = _mm_set1_pd(x1px2);
+
+ for(l = 0; l < 20; l+=2)
+ {
+ __m128d vv = _mm_load_pd(&v[l]);
+ __m128d ee = _mm_load_pd(&eev[l]);
+
+ vv = _mm_add_pd(vv, _mm_mul_pd(x1px2v,ee));
+
+ _mm_store_pd(&v[l], vv);
+ }
+ }
+ }
+ }
+
+ for(i = 0; i < n; i++)
+ {
+ if(!(x3_gap[i / 32] & mask32[i % 32]))
+ {
+ uX1 = &umpX1[80 * tipX1[i]];
+ uX2 = &umpX2[80 * tipX2[i]];
+
+ for(j = 0; j < 4; j++)
+ {
+ v = &x3_ptr[j * 20];
+
+
+ __m128d zero = _mm_setzero_pd();
+ for(k = 0; k < 20; k+=2)
+ _mm_store_pd(&v[k], zero);
+
+ for(k = 0; k < 20; k++)
+ {
+ double *eev = &extEV[k * 20];
+ x1px2 = uX1[j * 20 + k] * uX2[j * 20 + k];
+ __m128d x1px2v = _mm_set1_pd(x1px2);
+
+ for(l = 0; l < 20; l+=2)
+ {
+ __m128d vv = _mm_load_pd(&v[l]);
+ __m128d ee = _mm_load_pd(&eev[l]);
+
+ vv = _mm_add_pd(vv, _mm_mul_pd(x1px2v,ee));
+
+ _mm_store_pd(&v[l], vv);
+ }
+ }
+ }
+ x3_ptr += 80;
+ }
+ }
+ }
+ break;
+ case PLL_TIP_INNER:
+ {
+ double umpX1[1840], ump_x2[20];
+
+
+ for(i = 0; i < 23; i++)
+ {
+ v = &(tipVector[20 * i]);
+
+ for(k = 0; k < 80; k++)
+ {
+ double *ll = &left[k * 20];
+
+ __m128d umpX1v = _mm_setzero_pd();
+
+ for(l = 0; l < 20; l+=2)
+ {
+ __m128d vv = _mm_load_pd(&v[l]);
+ umpX1v = _mm_add_pd(umpX1v, _mm_mul_pd(vv, _mm_load_pd(&ll[l])));
+ }
+
+ umpX1v = _mm_hadd_pd(umpX1v, umpX1v);
+ _mm_storel_pd(&umpX1[80 * i + k], umpX1v);
+
+ }
+ }
+
+ {
+ uX1 = &umpX1[1760];
+
+ for(k = 0; k < 4; k++)
+ {
+ v = &(x2_gapColumn[k * 20]);
+
+ for(l = 0; l < 20; l++)
+ {
+ double *r = &right[k * 400 + l * 20];
+ __m128d ump_x2v = _mm_setzero_pd();
+
+ for(j = 0; j < 20; j+= 2)
+ {
+ __m128d vv = _mm_load_pd(&v[j]);
+ __m128d rr = _mm_load_pd(&r[j]);
+ ump_x2v = _mm_add_pd(ump_x2v, _mm_mul_pd(vv, rr));
+ }
+
+ ump_x2v = _mm_hadd_pd(ump_x2v, ump_x2v);
+
+ _mm_storel_pd(&ump_x2[l], ump_x2v);
+ }
+
+ v = &(x3_gapColumn[20 * k]);
+
+ __m128d zero = _mm_setzero_pd();
+ for(l = 0; l < 20; l+=2)
+ _mm_store_pd(&v[l], zero);
+
+ for(l = 0; l < 20; l++)
+ {
+ double *eev = &extEV[l * 20];
+ x1px2 = uX1[k * 20 + l] * ump_x2[l];
+ __m128d x1px2v = _mm_set1_pd(x1px2);
+
+ for(j = 0; j < 20; j+=2)
+ {
+ __m128d vv = _mm_load_pd(&v[j]);
+ __m128d ee = _mm_load_pd(&eev[j]);
+
+ vv = _mm_add_pd(vv, _mm_mul_pd(x1px2v,ee));
+
+ _mm_store_pd(&v[j], vv);
+ }
+ }
+
+ }
+
+ {
+ v = x3_gapColumn;
+ __m128d minlikelihood_sse = _mm_set1_pd( PLL_MINLIKELIHOOD );
+
+ scale = 1;
+ for(l = 0; scale && (l < 80); l += 2)
+ {
+ __m128d vv = _mm_load_pd(&v[l]);
+ __m128d v1 = _mm_and_pd(vv, absMask.m);
+ v1 = _mm_cmplt_pd(v1, minlikelihood_sse);
+ if(_mm_movemask_pd( v1 ) != 3)
+ scale = 0;
+ }
+ }
+
+
+ if (scale)
+ {
+ gapScaling = 1;
+ __m128d twoto = _mm_set_pd(PLL_TWOTOTHE256, PLL_TWOTOTHE256);
+
+ for(l = 0; l < 80; l+=2)
+ {
+ __m128d ex3v = _mm_load_pd(&v[l]);
+ _mm_store_pd(&v[l], _mm_mul_pd(ex3v,twoto));
+ }
+ }
+ }
+
+ for (i = 0; i < n; i++)
+ {
+ if((x3_gap[i / 32] & mask32[i % 32]))
+ {
+ if(gapScaling)
+ {
+ if(!fastScaling)
+ ex3[i] += 1;
+ else
+ addScale += wgt[i];
+ }
+ }
+ else
+ {
+ uX1 = &umpX1[80 * tipX1[i]];
+
+ if(x2_gap[i / 32] & mask32[i % 32])
+ x2v = x2_gapColumn;
+ else
+ {
+ x2v = x2_ptr;
+ x2_ptr += 80;
+ }
+
+ for(k = 0; k < 4; k++)
+ {
+ v = &(x2v[k * 20]);
+
+ for(l = 0; l < 20; l++)
+ {
+ double *r = &right[k * 400 + l * 20];
+ __m128d ump_x2v = _mm_setzero_pd();
+
+ for(j = 0; j < 20; j+= 2)
+ {
+ __m128d vv = _mm_load_pd(&v[j]);
+ __m128d rr = _mm_load_pd(&r[j]);
+ ump_x2v = _mm_add_pd(ump_x2v, _mm_mul_pd(vv, rr));
+ }
+
+ ump_x2v = _mm_hadd_pd(ump_x2v, ump_x2v);
+
+ _mm_storel_pd(&ump_x2[l], ump_x2v);
+ }
+
+ v = &x3_ptr[20 * k];
+
+ __m128d zero = _mm_setzero_pd();
+ for(l = 0; l < 20; l+=2)
+ _mm_store_pd(&v[l], zero);
+
+ for(l = 0; l < 20; l++)
+ {
+ double *eev = &extEV[l * 20];
+ x1px2 = uX1[k * 20 + l] * ump_x2[l];
+ __m128d x1px2v = _mm_set1_pd(x1px2);
+
+ for(j = 0; j < 20; j+=2)
+ {
+ __m128d vv = _mm_load_pd(&v[j]);
+ __m128d ee = _mm_load_pd(&eev[j]);
+
+ vv = _mm_add_pd(vv, _mm_mul_pd(x1px2v,ee));
+
+ _mm_store_pd(&v[j], vv);
+ }
+ }
+
+ }
+
+
+ {
+ v = x3_ptr;
+ __m128d minlikelihood_sse = _mm_set1_pd( PLL_MINLIKELIHOOD );
+
+ scale = 1;
+ for(l = 0; scale && (l < 80); l += 2)
+ {
+ __m128d vv = _mm_load_pd(&v[l]);
+ __m128d v1 = _mm_and_pd(vv, absMask.m);
+ v1 = _mm_cmplt_pd(v1, minlikelihood_sse);
+ if(_mm_movemask_pd( v1 ) != 3)
+ scale = 0;
+ }
+ }
+
+
+ if (scale)
+ {
+ __m128d twoto = _mm_set_pd(PLL_TWOTOTHE256, PLL_TWOTOTHE256);
+
+ for(l = 0; l < 80; l+=2)
+ {
+ __m128d ex3v = _mm_load_pd(&v[l]);
+ _mm_store_pd(&v[l], _mm_mul_pd(ex3v,twoto));
+ }
+
+ if(!fastScaling)
+ ex3[i] += 1;
+ else
+ addScale += wgt[i];
+ }
+
+ x3_ptr += 80;
+ }
+ }
+ }
+ break;
+ case PLL_INNER_INNER:
+ {
+ for(k = 0; k < 4; k++)
+ {
+ vl = &(x1_gapColumn[20 * k]);
+ vr = &(x2_gapColumn[20 * k]);
+ v = &(x3_gapColumn[20 * k]);
+
+ __m128d zero = _mm_setzero_pd();
+ for(l = 0; l < 20; l+=2)
+ _mm_store_pd(&v[l], zero);
+
+ for(l = 0; l < 20; l++)
+ {
+ {
+ __m128d al = _mm_setzero_pd();
+ __m128d ar = _mm_setzero_pd();
+
+ double *ll = &left[k * 400 + l * 20];
+ double *rr = &right[k * 400 + l * 20];
+ double *EVEV = &extEV[20 * l];
+
+ for(j = 0; j < 20; j+=2)
+ {
+ __m128d lv = _mm_load_pd(&ll[j]);
+ __m128d rv = _mm_load_pd(&rr[j]);
+ __m128d vll = _mm_load_pd(&vl[j]);
+ __m128d vrr = _mm_load_pd(&vr[j]);
+
+ al = _mm_add_pd(al, _mm_mul_pd(vll, lv));
+ ar = _mm_add_pd(ar, _mm_mul_pd(vrr, rv));
+ }
+
+ al = _mm_hadd_pd(al, al);
+ ar = _mm_hadd_pd(ar, ar);
+
+ al = _mm_mul_pd(al, ar);
+
+ for(j = 0; j < 20; j+=2)
+ {
+ __m128d vv = _mm_load_pd(&v[j]);
+ __m128d EVV = _mm_load_pd(&EVEV[j]);
+
+ vv = _mm_add_pd(vv, _mm_mul_pd(al, EVV));
+
+ _mm_store_pd(&v[j], vv);
+ }
+ }
+
+ }
+ }
+
+
+ {
+ v = x3_gapColumn;
+ __m128d minlikelihood_sse = _mm_set1_pd( PLL_MINLIKELIHOOD );
+
+ scale = 1;
+ for(l = 0; scale && (l < 80); l += 2)
+ {
+ __m128d vv = _mm_load_pd(&v[l]);
+ __m128d v1 = _mm_and_pd(vv, absMask.m);
+ v1 = _mm_cmplt_pd(v1, minlikelihood_sse);
+ if(_mm_movemask_pd( v1 ) != 3)
+ scale = 0;
+ }
+ }
+
+ if (scale)
+ {
+ gapScaling = 1;
+ __m128d twoto = _mm_set_pd(PLL_TWOTOTHE256, PLL_TWOTOTHE256);
+
+ for(l = 0; l < 80; l+=2)
+ {
+ __m128d ex3v = _mm_load_pd(&v[l]);
+ _mm_store_pd(&v[l], _mm_mul_pd(ex3v,twoto));
+ }
+
+
+ }
+ }
+
+ for (i = 0; i < n; i++)
+ {
+ if(x3_gap[i / 32] & mask32[i % 32])
+ {
+ if(gapScaling)
+ {
+ if(!fastScaling)
+ ex3[i] += 1;
+ else
+ addScale += wgt[i];
+ }
+ }
+ else
+ {
+ if(x1_gap[i / 32] & mask32[i % 32])
+ x1v = x1_gapColumn;
+ else
+ {
+ x1v = x1_ptr;
+ x1_ptr += 80;
+ }
+
+ if(x2_gap[i / 32] & mask32[i % 32])
+ x2v = x2_gapColumn;
+ else
+ {
+ x2v = x2_ptr;
+ x2_ptr += 80;
+ }
+
+ for(k = 0; k < 4; k++)
+ {
+ vl = &(x1v[20 * k]);
+ vr = &(x2v[20 * k]);
+ v = &x3_ptr[20 * k];
+
+ __m128d zero = _mm_setzero_pd();
+ for(l = 0; l < 20; l+=2)
+ _mm_store_pd(&v[l], zero);
+
+ for(l = 0; l < 20; l++)
+ {
+ {
+ __m128d al = _mm_setzero_pd();
+ __m128d ar = _mm_setzero_pd();
+
+ double *ll = &left[k * 400 + l * 20];
+ double *rr = &right[k * 400 + l * 20];
+ double *EVEV = &extEV[20 * l];
+
+ for(j = 0; j < 20; j+=2)
+ {
+ __m128d lv = _mm_load_pd(&ll[j]);
+ __m128d rv = _mm_load_pd(&rr[j]);
+ __m128d vll = _mm_load_pd(&vl[j]);
+ __m128d vrr = _mm_load_pd(&vr[j]);
+
+ al = _mm_add_pd(al, _mm_mul_pd(vll, lv));
+ ar = _mm_add_pd(ar, _mm_mul_pd(vrr, rv));
+ }
+
+ al = _mm_hadd_pd(al, al);
+ ar = _mm_hadd_pd(ar, ar);
+
+ al = _mm_mul_pd(al, ar);
+
+ for(j = 0; j < 20; j+=2)
+ {
+ __m128d vv = _mm_load_pd(&v[j]);
+ __m128d EVV = _mm_load_pd(&EVEV[j]);
+
+ vv = _mm_add_pd(vv, _mm_mul_pd(al, EVV));
+
+ _mm_store_pd(&v[j], vv);
+ }
+ }
+
+ }
+ }
+
+
+
+ {
+ v = x3_ptr;
+ __m128d minlikelihood_sse = _mm_set1_pd( PLL_MINLIKELIHOOD );
+
+ scale = 1;
+ for(l = 0; scale && (l < 80); l += 2)
+ {
+ __m128d vv = _mm_load_pd(&v[l]);
+ __m128d v1 = _mm_and_pd(vv, absMask.m);
+ v1 = _mm_cmplt_pd(v1, minlikelihood_sse);
+ if(_mm_movemask_pd( v1 ) != 3)
+ scale = 0;
+ }
+ }
+
+
+ if (scale)
+ {
+ __m128d twoto = _mm_set_pd(PLL_TWOTOTHE256, PLL_TWOTOTHE256);
+
+ for(l = 0; l < 80; l+=2)
+ {
+ __m128d ex3v = _mm_load_pd(&v[l]);
+ _mm_store_pd(&v[l], _mm_mul_pd(ex3v,twoto));
+ }
+
+ if(!fastScaling)
+ ex3[i] += 1;
+ else
+ addScale += wgt[i];
+ }
+ x3_ptr += 80;
+ }
+ }
+ break;
+ default:
+ assert(0);
+ }
+
+ if(fastScaling)
+ *scalerIncrement = addScale;
+}
+
+
+
+/** @ingroup group1
+ * @brief Computation of conditional likelihood arrray for GTR GAMMA (Optimized SSE3 version for AA data)
+
+ This is the SSE3 optimized version of ::newviewGAMMA_FLEX for computing the conditional
+ likelihood arrays at some node \a p, given child nodes \a q and \a r using the \b GAMMA
+ model of rate heterogeneity.
+
+ @note
+ For more details and function argument description check the function ::newviewGAMMA_FLEX
+*/
+static void newviewGTRGAMMAPROT(int tipCase,
+ double *x1, double *x2, double *x3, double *extEV, double *tipVector,
+ int *ex3, unsigned char *tipX1, unsigned char *tipX2,
+ int n, double *left, double *right, int *wgt, int *scalerIncrement, const boolean fastScaling)
+{
+ double *uX1, *uX2, *v;
+ double x1px2;
+ int i, j, l, k, scale, addScale = 0;
+ double *vl, *vr;
+
+
+
+ switch(tipCase)
+ {
+ case PLL_TIP_TIP:
+ {
+ double umpX1[1840], umpX2[1840];
+
+ for(i = 0; i < 23; i++)
+ {
+ v = &(tipVector[20 * i]);
+
+ for(k = 0; k < 80; k++)
+ {
+ double *ll = &left[k * 20];
+ double *rr = &right[k * 20];
+
+ __m128d umpX1v = _mm_setzero_pd();
+ __m128d umpX2v = _mm_setzero_pd();
+
+ for(l = 0; l < 20; l+=2)
+ {
+ __m128d vv = _mm_load_pd(&v[l]);
+ umpX1v = _mm_add_pd(umpX1v, _mm_mul_pd(vv, _mm_load_pd(&ll[l])));
+ umpX2v = _mm_add_pd(umpX2v, _mm_mul_pd(vv, _mm_load_pd(&rr[l])));
+ }
+
+ umpX1v = _mm_hadd_pd(umpX1v, umpX1v);
+ umpX2v = _mm_hadd_pd(umpX2v, umpX2v);
+
+ _mm_storel_pd(&umpX1[80 * i + k], umpX1v);
+ _mm_storel_pd(&umpX2[80 * i + k], umpX2v);
+
+ }
+ }
+
+ for(i = 0; i < n; i++)
+ {
+ uX1 = &umpX1[80 * tipX1[i]];
+ uX2 = &umpX2[80 * tipX2[i]];
+
+ for(j = 0; j < 4; j++)
+ {
+ v = &x3[i * 80 + j * 20];
+
+
+ __m128d zero = _mm_setzero_pd();
+ for(k = 0; k < 20; k+=2)
+ _mm_store_pd(&v[k], zero);
+
+ for(k = 0; k < 20; k++)
+ {
+ double *eev = &extEV[k * 20];
+ x1px2 = uX1[j * 20 + k] * uX2[j * 20 + k];
+ __m128d x1px2v = _mm_set1_pd(x1px2);
+
+ for(l = 0; l < 20; l+=2)
+ {
+ __m128d vv = _mm_load_pd(&v[l]);
+ __m128d ee = _mm_load_pd(&eev[l]);
+
+ vv = _mm_add_pd(vv, _mm_mul_pd(x1px2v,ee));
+
+ _mm_store_pd(&v[l], vv);
+ }
+ }
+
+
+ }
+ }
+ }
+ break;
+ case PLL_TIP_INNER:
+ {
+ double umpX1[1840], ump_x2[20];
+
+
+ for(i = 0; i < 23; i++)
+ {
+ v = &(tipVector[20 * i]);
+
+ for(k = 0; k < 80; k++)
+ {
+ double *ll = &left[k * 20];
+
+ __m128d umpX1v = _mm_setzero_pd();
+
+ for(l = 0; l < 20; l+=2)
+ {
+ __m128d vv = _mm_load_pd(&v[l]);
+ umpX1v = _mm_add_pd(umpX1v, _mm_mul_pd(vv, _mm_load_pd(&ll[l])));
+ }
+
+ umpX1v = _mm_hadd_pd(umpX1v, umpX1v);
+ _mm_storel_pd(&umpX1[80 * i + k], umpX1v);
+
+
+ }
+ }
+
+ for (i = 0; i < n; i++)
+ {
+ uX1 = &umpX1[80 * tipX1[i]];
+
+ for(k = 0; k < 4; k++)
+ {
+ v = &(x2[80 * i + k * 20]);
+
+ for(l = 0; l < 20; l++)
+ {
+ double *r = &right[k * 400 + l * 20];
+ __m128d ump_x2v = _mm_setzero_pd();
+
+ for(j = 0; j < 20; j+= 2)
+ {
+ __m128d vv = _mm_load_pd(&v[j]);
+ __m128d rr = _mm_load_pd(&r[j]);
+ ump_x2v = _mm_add_pd(ump_x2v, _mm_mul_pd(vv, rr));
+ }
+
+ ump_x2v = _mm_hadd_pd(ump_x2v, ump_x2v);
+
+ _mm_storel_pd(&ump_x2[l], ump_x2v);
+ }
+
+ v = &(x3[80 * i + 20 * k]);
+
+ __m128d zero = _mm_setzero_pd();
+ for(l = 0; l < 20; l+=2)
+ _mm_store_pd(&v[l], zero);
+
+ for(l = 0; l < 20; l++)
+ {
+ double *eev = &extEV[l * 20];
+ x1px2 = uX1[k * 20 + l] * ump_x2[l];
+ __m128d x1px2v = _mm_set1_pd(x1px2);
+
+ for(j = 0; j < 20; j+=2)
+ {
+ __m128d vv = _mm_load_pd(&v[j]);
+ __m128d ee = _mm_load_pd(&eev[j]);
+
+ vv = _mm_add_pd(vv, _mm_mul_pd(x1px2v,ee));
+
+ _mm_store_pd(&v[j], vv);
+ }
+ }
+
+ }
+
+
+ {
+ v = &(x3[80 * i]);
+ __m128d minlikelihood_sse = _mm_set1_pd( PLL_MINLIKELIHOOD );
+
+ scale = 1;
+ for(l = 0; scale && (l < 80); l += 2)
+ {
+ __m128d vv = _mm_load_pd(&v[l]);
+ __m128d v1 = _mm_and_pd(vv, absMask.m);
+ v1 = _mm_cmplt_pd(v1, minlikelihood_sse);
+ if(_mm_movemask_pd( v1 ) != 3)
+ scale = 0;
+ }
+ }
+
+
+ if (scale)
+ {
+
+ __m128d twoto = _mm_set_pd(PLL_TWOTOTHE256, PLL_TWOTOTHE256);
+
+ for(l = 0; l < 80; l+=2)
+ {
+ __m128d ex3v = _mm_load_pd(&v[l]);
+ _mm_store_pd(&v[l], _mm_mul_pd(ex3v,twoto));
+ }
+
+
+ if(!fastScaling)
+ ex3[i] += 1;
+ else
+ addScale += wgt[i];
+
+ }
+ }
+ }
+ break;
+ case PLL_INNER_INNER:
+ for (i = 0; i < n; i++)
+ {
+ for(k = 0; k < 4; k++)
+ {
+ vl = &(x1[80 * i + 20 * k]);
+ vr = &(x2[80 * i + 20 * k]);
+ v = &(x3[80 * i + 20 * k]);
+
+
+ __m128d zero = _mm_setzero_pd();
+ for(l = 0; l < 20; l+=2)
+ _mm_store_pd(&v[l], zero);
+
+
+ for(l = 0; l < 20; l++)
+ {
+
+ {
+ __m128d al = _mm_setzero_pd();
+ __m128d ar = _mm_setzero_pd();
+
+ double *ll = &left[k * 400 + l * 20];
+ double *rr = &right[k * 400 + l * 20];
+ double *EVEV = &extEV[20 * l];
+
+ for(j = 0; j < 20; j+=2)
+ {
+ __m128d lv = _mm_load_pd(&ll[j]);
+ __m128d rv = _mm_load_pd(&rr[j]);
+ __m128d vll = _mm_load_pd(&vl[j]);
+ __m128d vrr = _mm_load_pd(&vr[j]);
+
+ al = _mm_add_pd(al, _mm_mul_pd(vll, lv));
+ ar = _mm_add_pd(ar, _mm_mul_pd(vrr, rv));
+ }
+
+ al = _mm_hadd_pd(al, al);
+ ar = _mm_hadd_pd(ar, ar);
+
+ al = _mm_mul_pd(al, ar);
+
+ for(j = 0; j < 20; j+=2)
+ {
+ __m128d vv = _mm_load_pd(&v[j]);
+ __m128d EVV = _mm_load_pd(&EVEV[j]);
+
+ vv = _mm_add_pd(vv, _mm_mul_pd(al, EVV));
+
+ _mm_store_pd(&v[j], vv);
+ }
+ }
+
+ }
+ }
+
+
+
+ {
+ v = &(x3[80 * i]);
+ __m128d minlikelihood_sse = _mm_set1_pd( PLL_MINLIKELIHOOD );
+
+ scale = 1;
+ for(l = 0; scale && (l < 80); l += 2)
+ {
+ __m128d vv = _mm_load_pd(&v[l]);
+ __m128d v1 = _mm_and_pd(vv, absMask.m);
+ v1 = _mm_cmplt_pd(v1, minlikelihood_sse);
+ if(_mm_movemask_pd( v1 ) != 3)
+ scale = 0;
+ }
+ }
+
+
+ if (scale)
+ {
+
+ __m128d twoto = _mm_set_pd(PLL_TWOTOTHE256, PLL_TWOTOTHE256);
+
+ for(l = 0; l < 80; l+=2)
+ {
+ __m128d ex3v = _mm_load_pd(&v[l]);
+ _mm_store_pd(&v[l], _mm_mul_pd(ex3v,twoto));
+ }
+
+
+ if(!fastScaling)
+ ex3[i] += 1;
+ else
+ addScale += wgt[i];
+ }
+ }
+ break;
+ default:
+ assert(0);
+ }
+
+ if(fastScaling)
+ *scalerIncrement = addScale;
+}
+
+
+
+/** @ingroup group1
+ * @brief Computation of conditional likelihood arrray for GTR CAT (Optimized SSE3 version for AA data)
+
+ This is the SSE3 optimized version of ::newviewCAT_FLEX for computing the conditional
+ likelihood arrays at some node \a p, given child nodes \a q and \a r using the \b CAT
+ model of rate heterogeneity.
+
+ @note
+ For more details and function argument description check the function ::newviewCAT_FLEX
+*/
+static void newviewGTRCATPROT(int tipCase, double *extEV,
+ int *cptr,
+ double *x1, double *x2, double *x3, double *tipVector,
+ int *ex3, unsigned char *tipX1, unsigned char *tipX2,
+ int n, double *left, double *right, int *wgt, int *scalerIncrement, const boolean fastScaling)
+{
+ double
+ *le, *ri, *v, *vl, *vr;
+
+ int i, l, j, scale, addScale = 0;
+
+ switch(tipCase)
+ {
+ case PLL_TIP_TIP:
+ {
+ for (i = 0; i < n; i++)
+ {
+ le = &left[cptr[i] * 400];
+ ri = &right[cptr[i] * 400];
+
+ vl = &(tipVector[20 * tipX1[i]]);
+ vr = &(tipVector[20 * tipX2[i]]);
+ v = &x3[20 * i];
+
+ for(l = 0; l < 20; l+=2)
+ _mm_store_pd(&v[l], _mm_setzero_pd());
+
+
+ for(l = 0; l < 20; l++)
+ {
+ __m128d x1v = _mm_setzero_pd();
+ __m128d x2v = _mm_setzero_pd();
+ double
+ *ev = &extEV[l * 20],
+ *lv = &le[l * 20],
+ *rv = &ri[l * 20];
+
+ for(j = 0; j < 20; j+=2)
+ {
+ x1v = _mm_add_pd(x1v, _mm_mul_pd(_mm_load_pd(&vl[j]), _mm_load_pd(&lv[j])));
+ x2v = _mm_add_pd(x2v, _mm_mul_pd(_mm_load_pd(&vr[j]), _mm_load_pd(&rv[j])));
+ }
+
+ x1v = _mm_hadd_pd(x1v, x1v);
+ x2v = _mm_hadd_pd(x2v, x2v);
+
+ x1v = _mm_mul_pd(x1v, x2v);
+
+ for(j = 0; j < 20; j+=2)
+ {
+ __m128d vv = _mm_load_pd(&v[j]);
+ vv = _mm_add_pd(vv, _mm_mul_pd(x1v, _mm_load_pd(&ev[j])));
+ _mm_store_pd(&v[j], vv);
+ }
+
+ }
+ }
+ }
+ break;
+ case PLL_TIP_INNER:
+ {
+ for (i = 0; i < n; i++)
+ {
+ le = &left[cptr[i] * 400];
+ ri = &right[cptr[i] * 400];
+
+ vl = &(tipVector[20 * tipX1[i]]);
+ vr = &x2[20 * i];
+ v = &x3[20 * i];
+
+ for(l = 0; l < 20; l+=2)
+ _mm_store_pd(&v[l], _mm_setzero_pd());
+
+
+
+ for(l = 0; l < 20; l++)
+ {
+
+ __m128d x1v = _mm_setzero_pd();
+ __m128d x2v = _mm_setzero_pd();
+ double
+ *ev = &extEV[l * 20],
+ *lv = &le[l * 20],
+ *rv = &ri[l * 20];
+
+ for(j = 0; j < 20; j+=2)
+ {
+ x1v = _mm_add_pd(x1v, _mm_mul_pd(_mm_load_pd(&vl[j]), _mm_load_pd(&lv[j])));
+ x2v = _mm_add_pd(x2v, _mm_mul_pd(_mm_load_pd(&vr[j]), _mm_load_pd(&rv[j])));
+ }
+
+ x1v = _mm_hadd_pd(x1v, x1v);
+ x2v = _mm_hadd_pd(x2v, x2v);
+
+ x1v = _mm_mul_pd(x1v, x2v);
+
+ for(j = 0; j < 20; j+=2)
+ {
+ __m128d vv = _mm_load_pd(&v[j]);
+ vv = _mm_add_pd(vv, _mm_mul_pd(x1v, _mm_load_pd(&ev[j])));
+ _mm_store_pd(&v[j], vv);
+ }
+
+ }
+
+ {
+ __m128d minlikelihood_sse = _mm_set1_pd( PLL_MINLIKELIHOOD );
+
+ scale = 1;
+ for(l = 0; scale && (l < 20); l += 2)
+ {
+ __m128d vv = _mm_load_pd(&v[l]);
+ __m128d v1 = _mm_and_pd(vv, absMask.m);
+ v1 = _mm_cmplt_pd(v1, minlikelihood_sse);
+ if(_mm_movemask_pd( v1 ) != 3)
+ scale = 0;
+ }
+ }
+
+
+ if(scale)
+ {
+
+ __m128d twoto = _mm_set_pd(PLL_TWOTOTHE256, PLL_TWOTOTHE256);
+
+ for(l = 0; l < 20; l+=2)
+ {
+ __m128d ex3v = _mm_load_pd(&v[l]);
+ _mm_store_pd(&v[l], _mm_mul_pd(ex3v,twoto));
+ }
+
+ if(!fastScaling)
+ ex3[i] += 1;
+ else
+ addScale += wgt[i];
+ }
+ }
+ }
+ break;
+ case PLL_INNER_INNER:
+ for(i = 0; i < n; i++)
+ {
+ le = &left[cptr[i] * 400];
+ ri = &right[cptr[i] * 400];
+
+ vl = &x1[20 * i];
+ vr = &x2[20 * i];
+ v = &x3[20 * i];
+
+
+ for(l = 0; l < 20; l+=2)
+ _mm_store_pd(&v[l], _mm_setzero_pd());
+
+
+ for(l = 0; l < 20; l++)
+ {
+
+ __m128d x1v = _mm_setzero_pd();
+ __m128d x2v = _mm_setzero_pd();
+ double
+ *ev = &extEV[l * 20],
+ *lv = &le[l * 20],
+ *rv = &ri[l * 20];
+
+
+ for(j = 0; j < 20; j+=2)
+ {
+ x1v = _mm_add_pd(x1v, _mm_mul_pd(_mm_load_pd(&vl[j]), _mm_load_pd(&lv[j])));
+ x2v = _mm_add_pd(x2v, _mm_mul_pd(_mm_load_pd(&vr[j]), _mm_load_pd(&rv[j])));
+ }
+
+ x1v = _mm_hadd_pd(x1v, x1v);
+ x2v = _mm_hadd_pd(x2v, x2v);
+
+ x1v = _mm_mul_pd(x1v, x2v);
+
+ for(j = 0; j < 20; j+=2)
+ {
+ __m128d vv = _mm_load_pd(&v[j]);
+ vv = _mm_add_pd(vv, _mm_mul_pd(x1v, _mm_load_pd(&ev[j])));
+ _mm_store_pd(&v[j], vv);
+ }
+
+ }
+
+ {
+ __m128d minlikelihood_sse = _mm_set1_pd( PLL_MINLIKELIHOOD );
+
+ scale = 1;
+ for(l = 0; scale && (l < 20); l += 2)
+ {
+ __m128d vv = _mm_load_pd(&v[l]);
+ __m128d v1 = _mm_and_pd(vv, absMask.m);
+ v1 = _mm_cmplt_pd(v1, minlikelihood_sse);
+ if(_mm_movemask_pd( v1 ) != 3)
+ scale = 0;
+ }
+ }
+
+
+ if(scale)
+ {
+
+ __m128d twoto = _mm_set_pd(PLL_TWOTOTHE256, PLL_TWOTOTHE256);
+
+ for(l = 0; l < 20; l+=2)
+ {
+ __m128d ex3v = _mm_load_pd(&v[l]);
+ _mm_store_pd(&v[l], _mm_mul_pd(ex3v,twoto));
+ }
+
+
+ if(!fastScaling)
+ ex3[i] += 1;
+ else
+ addScale += wgt[i];
+ }
+ }
+ break;
+ default:
+ assert(0);
+ }
+
+ if(fastScaling)
+ *scalerIncrement = addScale;
+}
+
+/** @ingroup group1
+ * @brief Computation of conditional likelihood arrray for GTR CAT with memory saving (Optimized SSE3 version for AA data)
+
+ This is the SSE3 optimized version of ::newviewCAT_FLEX for computing the conditional
+ likelihood arrays at some node \a p, given child nodes \a q and \a r using the \b CAT
+ model of rate heterogeneity.
+
+ @note
+ For more details and function argument description check the function ::newviewCAT_FLEX
+*/
+static void newviewGTRCATPROT_SAVE(int tipCase, double *extEV,
+ int *cptr,
+ double *x1, double *x2, double *x3, double *tipVector,
+ int *ex3, unsigned char *tipX1, unsigned char *tipX2,
+ int n, double *left, double *right, int *wgt, int *scalerIncrement, const boolean fastScaling,
+ unsigned int *x1_gap, unsigned int *x2_gap, unsigned int *x3_gap,
+ double *x1_gapColumn, double *x2_gapColumn, double *x3_gapColumn, const int maxCats)
+{
+ double
+ *le,
+ *ri,
+ *v,
+ *vl,
+ *vr,
+ *x1_ptr = x1,
+ *x2_ptr = x2,
+ *x3_ptr = x3;
+
+ int
+ i,
+ l,
+ j,
+ scale,
+ scaleGap = 0,
+ addScale = 0;
+
+ {
+ vl = x1_gapColumn;
+ vr = x2_gapColumn;
+ v = x3_gapColumn;
+
+ le = &left[maxCats * 400];
+ ri = &right[maxCats * 400];
+
+ for(l = 0; l < 20; l+=2)
+ _mm_store_pd(&v[l], _mm_setzero_pd());
+
+ for(l = 0; l < 20; l++)
+ {
+ __m128d x1v = _mm_setzero_pd();
+ __m128d x2v = _mm_setzero_pd();
+ double
+ *ev = &extEV[l * 20],
+ *lv = &le[l * 20],
+ *rv = &ri[l * 20];
+
+
+ for(j = 0; j < 20; j+=2)
+ {
+ x1v = _mm_add_pd(x1v, _mm_mul_pd(_mm_load_pd(&vl[j]), _mm_load_pd(&lv[j])));
+ x2v = _mm_add_pd(x2v, _mm_mul_pd(_mm_load_pd(&vr[j]), _mm_load_pd(&rv[j])));
+ }
+
+ x1v = _mm_hadd_pd(x1v, x1v);
+ x2v = _mm_hadd_pd(x2v, x2v);
+
+ x1v = _mm_mul_pd(x1v, x2v);
+
+ for(j = 0; j < 20; j+=2)
+ {
+ __m128d vv = _mm_load_pd(&v[j]);
+ vv = _mm_add_pd(vv, _mm_mul_pd(x1v, _mm_load_pd(&ev[j])));
+ _mm_store_pd(&v[j], vv);
+ }
+ }
+
+ if(tipCase != PLL_TIP_TIP)
+ {
+ __m128d minlikelihood_sse = _mm_set1_pd( PLL_MINLIKELIHOOD );
+
+ scale = 1;
+ for(l = 0; scale && (l < 20); l += 2)
+ {
+ __m128d vv = _mm_load_pd(&v[l]);
+ __m128d v1 = _mm_and_pd(vv, absMask.m);
+ v1 = _mm_cmplt_pd(v1, minlikelihood_sse);
+ if(_mm_movemask_pd( v1 ) != 3)
+ scale = 0;
+ }
+
+ if(scale)
+ {
+ __m128d twoto = _mm_set_pd(PLL_TWOTOTHE256, PLL_TWOTOTHE256);
+
+ for(l = 0; l < 20; l+=2)
+ {
+ __m128d ex3v = _mm_load_pd(&v[l]);
+ _mm_store_pd(&v[l], _mm_mul_pd(ex3v,twoto));
+ }
+
+ scaleGap = PLL_TRUE;
+ }
+ }
+ }
+
+ switch(tipCase)
+ {
+ case PLL_TIP_TIP:
+ {
+ for (i = 0; i < n; i++)
+ {
+ if(noGap(x3_gap, i))
+ {
+ vl = &(tipVector[20 * tipX1[i]]);
+ vr = &(tipVector[20 * tipX2[i]]);
+ v = x3_ptr;
+
+ if(isGap(x1_gap, i))
+ le = &left[maxCats * 400];
+ else
+ le = &left[cptr[i] * 400];
+
+ if(isGap(x2_gap, i))
+ ri = &right[maxCats * 400];
+ else
+ ri = &right[cptr[i] * 400];
+
+ for(l = 0; l < 20; l+=2)
+ _mm_store_pd(&v[l], _mm_setzero_pd());
+
+ for(l = 0; l < 20; l++)
+ {
+ __m128d x1v = _mm_setzero_pd();
+ __m128d x2v = _mm_setzero_pd();
+ double
+ *ev = &extEV[l * 20],
+ *lv = &le[l * 20],
+ *rv = &ri[l * 20];
+
+ for(j = 0; j < 20; j+=2)
+ {
+ x1v = _mm_add_pd(x1v, _mm_mul_pd(_mm_load_pd(&vl[j]), _mm_load_pd(&lv[j])));
+ x2v = _mm_add_pd(x2v, _mm_mul_pd(_mm_load_pd(&vr[j]), _mm_load_pd(&rv[j])));
+ }
+
+ x1v = _mm_hadd_pd(x1v, x1v);
+ x2v = _mm_hadd_pd(x2v, x2v);
+
+ x1v = _mm_mul_pd(x1v, x2v);
+
+ for(j = 0; j < 20; j+=2)
+ {
+ __m128d vv = _mm_load_pd(&v[j]);
+ vv = _mm_add_pd(vv, _mm_mul_pd(x1v, _mm_load_pd(&ev[j])));
+ _mm_store_pd(&v[j], vv);
+ }
+ }
+
+ x3_ptr += 20;
+
+ }
+ }
+ }
+ break;
+ case PLL_TIP_INNER:
+ {
+ for (i = 0; i < n; i++)
+ {
+ if(isGap(x3_gap, i))
+ {
+ if(scaleGap)
+ {
+ if(!fastScaling)
+ ex3[i] += 1;
+ else
+ addScale += wgt[i];
+ }
+ }
+ else
+ {
+ vl = &(tipVector[20 * tipX1[i]]);
+
+ vr = x2_ptr;
+ v = x3_ptr;
+
+ if(isGap(x1_gap, i))
+ le = &left[maxCats * 400];
+ else
+ le = &left[cptr[i] * 400];
+
+ if(isGap(x2_gap, i))
+ {
+ ri = &right[maxCats * 400];
+ vr = x2_gapColumn;
+ }
+ else
+ {
+ ri = &right[cptr[i] * 400];
+ vr = x2_ptr;
+ x2_ptr += 20;
+ }
+
+ for(l = 0; l < 20; l+=2)
+ _mm_store_pd(&v[l], _mm_setzero_pd());
+
+ for(l = 0; l < 20; l++)
+ {
+ __m128d x1v = _mm_setzero_pd();
+ __m128d x2v = _mm_setzero_pd();
+ double
+ *ev = &extEV[l * 20],
+ *lv = &le[l * 20],
+ *rv = &ri[l * 20];
+
+ for(j = 0; j < 20; j+=2)
+ {
+ x1v = _mm_add_pd(x1v, _mm_mul_pd(_mm_load_pd(&vl[j]), _mm_load_pd(&lv[j])));
+ x2v = _mm_add_pd(x2v, _mm_mul_pd(_mm_load_pd(&vr[j]), _mm_load_pd(&rv[j])));
+ }
+
+ x1v = _mm_hadd_pd(x1v, x1v);
+ x2v = _mm_hadd_pd(x2v, x2v);
+
+ x1v = _mm_mul_pd(x1v, x2v);
+
+ for(j = 0; j < 20; j+=2)
+ {
+ __m128d vv = _mm_load_pd(&v[j]);
+ vv = _mm_add_pd(vv, _mm_mul_pd(x1v, _mm_load_pd(&ev[j])));
+ _mm_store_pd(&v[j], vv);
+ }
+ }
+
+ {
+ __m128d minlikelihood_sse = _mm_set1_pd( PLL_MINLIKELIHOOD );
+
+ scale = 1;
+ for(l = 0; scale && (l < 20); l += 2)
+ {
+ __m128d vv = _mm_load_pd(&v[l]);
+ __m128d v1 = _mm_and_pd(vv, absMask.m);
+ v1 = _mm_cmplt_pd(v1, minlikelihood_sse);
+ if(_mm_movemask_pd( v1 ) != 3)
+ scale = 0;
+ }
+ }
+
+
+ if(scale)
+ {
+ __m128d twoto = _mm_set_pd(PLL_TWOTOTHE256, PLL_TWOTOTHE256);
+
+ for(l = 0; l < 20; l+=2)
+ {
+ __m128d ex3v = _mm_load_pd(&v[l]);
+ _mm_store_pd(&v[l], _mm_mul_pd(ex3v,twoto));
+ }
+
+ if(!fastScaling)
+ ex3[i] += 1;
+ else
+ addScale += wgt[i];
+ }
+ x3_ptr += 20;
+ }
+ }
+ }
+ break;
+ case PLL_INNER_INNER:
+ for(i = 0; i < n; i++)
+ {
+ if(isGap(x3_gap, i))
+ {
+ if(scaleGap)
+ {
+ if(!fastScaling)
+ ex3[i] += 1;
+ else
+ addScale += wgt[i];
+ }
+ }
+ else
+ {
+ v = x3_ptr;
+
+ if(isGap(x1_gap, i))
+ {
+ vl = x1_gapColumn;
+ le = &left[maxCats * 400];
+ }
+ else
+ {
+ le = &left[cptr[i] * 400];
+ vl = x1_ptr;
+ x1_ptr += 20;
+ }
+
+ if(isGap(x2_gap, i))
+ {
+ vr = x2_gapColumn;
+ ri = &right[maxCats * 400];
+ }
+ else
+ {
+ ri = &right[cptr[i] * 400];
+ vr = x2_ptr;
+ x2_ptr += 20;
+ }
+
+ for(l = 0; l < 20; l+=2)
+ _mm_store_pd(&v[l], _mm_setzero_pd());
+
+ for(l = 0; l < 20; l++)
+ {
+ __m128d x1v = _mm_setzero_pd();
+ __m128d x2v = _mm_setzero_pd();
+ double
+ *ev = &extEV[l * 20],
+ *lv = &le[l * 20],
+ *rv = &ri[l * 20];
+
+ for(j = 0; j < 20; j+=2)
+ {
+ x1v = _mm_add_pd(x1v, _mm_mul_pd(_mm_load_pd(&vl[j]), _mm_load_pd(&lv[j])));
+ x2v = _mm_add_pd(x2v, _mm_mul_pd(_mm_load_pd(&vr[j]), _mm_load_pd(&rv[j])));
+ }
+
+ x1v = _mm_hadd_pd(x1v, x1v);
+ x2v = _mm_hadd_pd(x2v, x2v);
+
+ x1v = _mm_mul_pd(x1v, x2v);
+
+ for(j = 0; j < 20; j+=2)
+ {
+ __m128d vv = _mm_load_pd(&v[j]);
+ vv = _mm_add_pd(vv, _mm_mul_pd(x1v, _mm_load_pd(&ev[j])));
+ _mm_store_pd(&v[j], vv);
+ }
+
+ }
+
+ {
+ __m128d minlikelihood_sse = _mm_set1_pd( PLL_MINLIKELIHOOD );
+
+ scale = 1;
+ for(l = 0; scale && (l < 20); l += 2)
+ {
+ __m128d vv = _mm_load_pd(&v[l]);
+ __m128d v1 = _mm_and_pd(vv, absMask.m);
+ v1 = _mm_cmplt_pd(v1, minlikelihood_sse);
+ if(_mm_movemask_pd( v1 ) != 3)
+ scale = 0;
+ }
+ }
+
+ if(scale)
+ {
+ __m128d twoto = _mm_set_pd(PLL_TWOTOTHE256, PLL_TWOTOTHE256);
+
+ for(l = 0; l < 20; l+=2)
+ {
+ __m128d ex3v = _mm_load_pd(&v[l]);
+ _mm_store_pd(&v[l], _mm_mul_pd(ex3v,twoto));
+ }
+
+ if(!fastScaling)
+ ex3[i] += 1;
+ else
+ addScale += wgt[i];
+ }
+ x3_ptr += 20;
+ }
+ }
+ break;
+ default:
+ assert(0);
+ }
+
+ if(fastScaling)
+ *scalerIncrement = addScale;
+}
+
+
+/** @ingroup group1
+ * @brief Computation of conditional likelihood arrray for the GTR GAMMA and for the LG4 model (Optimized SSE3 version for AA data)
+
+ This is the SSE3 optimized version of ::newviewGAMMA_FLEX for computing the conditional
+ likelihood arrays at some node \a p, given child nodes \a q and \a r using the \b GAMMA
+ model of rate heterogeneity and the LG4 model of evolution. Note that the original unoptimized
+ function does not incorporate the LG4 model.
+
+ @note
+ For more details and function argument description check the function ::newviewGAMMA_FLEX
+*/
+static void newviewGTRGAMMAPROT_LG4(int tipCase,
+ double *x1, double *x2, double *x3, double *extEV[4], double *tipVector[4],
+ int *ex3, unsigned char *tipX1, unsigned char *tipX2,
+ int n, double *left, double *right, int *wgt, int *scalerIncrement, const boolean useFastScaling)
+{
+ double *uX1, *uX2, *v;
+ double x1px2;
+ int i, j, l, k, scale, addScale = 0;
+ double *vl, *vr;
+#ifndef __SSE3
+ double al, ar;
+#endif
+
+
+
+ switch(tipCase)
+ {
+ case PLL_TIP_TIP:
+ {
+ double umpX1[1840], umpX2[1840];
+
+ for(i = 0; i < 23; i++)
+ {
+
+
+ for(k = 0; k < 80; k++)
+ {
+
+ v = &(tipVector[k / 20][20 * i]);
+#ifdef __SSE3
+ double *ll = &left[k * 20];
+ double *rr = &right[k * 20];
+
+ __m128d umpX1v = _mm_setzero_pd();
+ __m128d umpX2v = _mm_setzero_pd();
+
+ for(l = 0; l < 20; l+=2)
+ {
+ __m128d vv = _mm_load_pd(&v[l]);
+ umpX1v = _mm_add_pd(umpX1v, _mm_mul_pd(vv, _mm_load_pd(&ll[l])));
+ umpX2v = _mm_add_pd(umpX2v, _mm_mul_pd(vv, _mm_load_pd(&rr[l])));
+ }
+
+ umpX1v = _mm_hadd_pd(umpX1v, umpX1v);
+ umpX2v = _mm_hadd_pd(umpX2v, umpX2v);
+
+ _mm_storel_pd(&umpX1[80 * i + k], umpX1v);
+ _mm_storel_pd(&umpX2[80 * i + k], umpX2v);
+#else
+ umpX1[80 * i + k] = 0.0;
+ umpX2[80 * i + k] = 0.0;
+
+ for(l = 0; l < 20; l++)
+ {
+ umpX1[80 * i + k] += v[l] * left[k * 20 + l];
+ umpX2[80 * i + k] += v[l] * right[k * 20 + l];
+ }
+#endif
+ }
+ }
+
+ for(i = 0; i < n; i++)
+ {
+ uX1 = &umpX1[80 * tipX1[i]];
+ uX2 = &umpX2[80 * tipX2[i]];
+
+ for(j = 0; j < 4; j++)
+ {
+ v = &x3[i * 80 + j * 20];
+
+#ifdef __SSE3
+ __m128d zero = _mm_setzero_pd();
+ for(k = 0; k < 20; k+=2)
+ _mm_store_pd(&v[k], zero);
+
+ for(k = 0; k < 20; k++)
+ {
+ double *eev = &extEV[j][k * 20];
+ x1px2 = uX1[j * 20 + k] * uX2[j * 20 + k];
+ __m128d x1px2v = _mm_set1_pd(x1px2);
+
+ for(l = 0; l < 20; l+=2)
+ {
+ __m128d vv = _mm_load_pd(&v[l]);
+ __m128d ee = _mm_load_pd(&eev[l]);
+
+ vv = _mm_add_pd(vv, _mm_mul_pd(x1px2v,ee));
+
+ _mm_store_pd(&v[l], vv);
+ }
+ }
+
+#else
+
+ for(k = 0; k < 20; k++)
+ v[k] = 0.0;
+
+ for(k = 0; k < 20; k++)
+ {
+ x1px2 = uX1[j * 20 + k] * uX2[j * 20 + k];
+
+ for(l = 0; l < 20; l++)
+ v[l] += x1px2 * extEV[j][20 * k + l];
+ }
+#endif
+ }
+ }
+ }
+ break;
+ case PLL_TIP_INNER:
+ {
+ double umpX1[1840], ump_x2[20];
+
+
+ for(i = 0; i < 23; i++)
+ {
+
+
+ for(k = 0; k < 80; k++)
+ {
+ v = &(tipVector[k / 20][20 * i]);
+#ifdef __SSE3
+ double *ll = &left[k * 20];
+
+ __m128d umpX1v = _mm_setzero_pd();
+
+ for(l = 0; l < 20; l+=2)
+ {
+ __m128d vv = _mm_load_pd(&v[l]);
+ umpX1v = _mm_add_pd(umpX1v, _mm_mul_pd(vv, _mm_load_pd(&ll[l])));
+ }
+
+ umpX1v = _mm_hadd_pd(umpX1v, umpX1v);
+ _mm_storel_pd(&umpX1[80 * i + k], umpX1v);
+#else
+ umpX1[80 * i + k] = 0.0;
+
+ for(l = 0; l < 20; l++)
+ umpX1[80 * i + k] += v[l] * left[k * 20 + l];
+#endif
+
+ }
+ }
+
+ for (i = 0; i < n; i++)
+ {
+ uX1 = &umpX1[80 * tipX1[i]];
+
+ for(k = 0; k < 4; k++)
+ {
+ v = &(x2[80 * i + k * 20]);
+#ifdef __SSE3
+ for(l = 0; l < 20; l++)
+ {
+ double *r = &right[k * 400 + l * 20];
+ __m128d ump_x2v = _mm_setzero_pd();
+
+ for(j = 0; j < 20; j+= 2)
+ {
+ __m128d vv = _mm_load_pd(&v[j]);
+ __m128d rr = _mm_load_pd(&r[j]);
+ ump_x2v = _mm_add_pd(ump_x2v, _mm_mul_pd(vv, rr));
+ }
+
+ ump_x2v = _mm_hadd_pd(ump_x2v, ump_x2v);
+
+ _mm_storel_pd(&ump_x2[l], ump_x2v);
+ }
+
+ v = &(x3[80 * i + 20 * k]);
+
+ __m128d zero = _mm_setzero_pd();
+ for(l = 0; l < 20; l+=2)
+ _mm_store_pd(&v[l], zero);
+
+ for(l = 0; l < 20; l++)
+ {
+ double *eev = &extEV[k][l * 20];
+ x1px2 = uX1[k * 20 + l] * ump_x2[l];
+ __m128d x1px2v = _mm_set1_pd(x1px2);
+
+ for(j = 0; j < 20; j+=2)
+ {
+ __m128d vv = _mm_load_pd(&v[j]);
+ __m128d ee = _mm_load_pd(&eev[j]);
+
+ vv = _mm_add_pd(vv, _mm_mul_pd(x1px2v,ee));
+
+ _mm_store_pd(&v[j], vv);
+ }
+ }
+#else
+ for(l = 0; l < 20; l++)
+ {
+ ump_x2[l] = 0.0;
+
+ for(j = 0; j < 20; j++)
+ ump_x2[l] += v[j] * right[k * 400 + l * 20 + j];
+ }
+
+ v = &(x3[80 * i + 20 * k]);
+
+ for(l = 0; l < 20; l++)
+ v[l] = 0;
+
+ for(l = 0; l < 20; l++)
+ {
+ x1px2 = uX1[k * 20 + l] * ump_x2[l];
+ for(j = 0; j < 20; j++)
+ v[j] += x1px2 * extEV[k][l * 20 + j];
+ }
+#endif
+ }
+
+#ifdef __SSE3
+ {
+ v = &(x3[80 * i]);
+ __m128d minlikelihood_sse = _mm_set1_pd( PLL_MINLIKELIHOOD );
+
+ scale = 1;
+ for(l = 0; scale && (l < 80); l += 2)
+ {
+ __m128d vv = _mm_load_pd(&v[l]);
+ __m128d v1 = _mm_and_pd(vv, absMask.m);
+ v1 = _mm_cmplt_pd(v1, minlikelihood_sse);
+ if(_mm_movemask_pd( v1 ) != 3)
+ scale = 0;
+ }
+ }
+#else
+ v = &x3[80 * i];
+ scale = 1;
+ for(l = 0; scale && (l < 80); l++)
+ scale = (PLL_ABS(v[l]) < PLL_MINLIKELIHOOD );
+#endif
+
+ if (scale)
+ {
+#ifdef __SSE3
+ __m128d twoto = _mm_set_pd(PLL_TWOTOTHE256, PLL_TWOTOTHE256);
+
+ for(l = 0; l < 80; l+=2)
+ {
+ __m128d ex3v = _mm_load_pd(&v[l]);
+ _mm_store_pd(&v[l], _mm_mul_pd(ex3v,twoto));
+ }
+#else
+ for(l = 0; l < 80; l++)
+ v[l] *= PLL_TWOTOTHE256;
+#endif
+
+ if(useFastScaling)
+ addScale += wgt[i];
+ else
+ ex3[i] += 1;
+ }
+ }
+ }
+ break;
+ case PLL_INNER_INNER:
+ for (i = 0; i < n; i++)
+ {
+ for(k = 0; k < 4; k++)
+ {
+ vl = &(x1[80 * i + 20 * k]);
+ vr = &(x2[80 * i + 20 * k]);
+ v = &(x3[80 * i + 20 * k]);
+
+#ifdef __SSE3
+ __m128d zero = _mm_setzero_pd();
+ for(l = 0; l < 20; l+=2)
+ _mm_store_pd(&v[l], zero);
+#else
+ for(l = 0; l < 20; l++)
+ v[l] = 0;
+#endif
+
+ for(l = 0; l < 20; l++)
+ {
+#ifdef __SSE3
+ {
+ __m128d al = _mm_setzero_pd();
+ __m128d ar = _mm_setzero_pd();
+
+ double *ll = &left[k * 400 + l * 20];
+ double *rr = &right[k * 400 + l * 20];
+ double *EVEV = &extEV[k][20 * l];
+
+ for(j = 0; j < 20; j+=2)
+ {
+ __m128d lv = _mm_load_pd(&ll[j]);
+ __m128d rv = _mm_load_pd(&rr[j]);
+ __m128d vll = _mm_load_pd(&vl[j]);
+ __m128d vrr = _mm_load_pd(&vr[j]);
+
+ al = _mm_add_pd(al, _mm_mul_pd(vll, lv));
+ ar = _mm_add_pd(ar, _mm_mul_pd(vrr, rv));
+ }
+
+ al = _mm_hadd_pd(al, al);
+ ar = _mm_hadd_pd(ar, ar);
+
+ al = _mm_mul_pd(al, ar);
+
+ for(j = 0; j < 20; j+=2)
+ {
+ __m128d vv = _mm_load_pd(&v[j]);
+ __m128d EVV = _mm_load_pd(&EVEV[j]);
+
+ vv = _mm_add_pd(vv, _mm_mul_pd(al, EVV));
+
+ _mm_store_pd(&v[j], vv);
+ }
+ }
+#else
+ al = 0.0;
+ ar = 0.0;
+
+ for(j = 0; j < 20; j++)
+ {
+ al += vl[j] * left[k * 400 + l * 20 + j];
+ ar += vr[j] * right[k * 400 + l * 20 + j];
+ }
+
+ x1px2 = al * ar;
+
+ for(j = 0; j < 20; j++)
+ v[j] += x1px2 * extEV[k][20 * l + j];
+#endif
+ }
+ }
+
+
+#ifdef __SSE3
+ {
+ v = &(x3[80 * i]);
+ __m128d minlikelihood_sse = _mm_set1_pd( PLL_MINLIKELIHOOD );
+
+ scale = 1;
+ for(l = 0; scale && (l < 80); l += 2)
+ {
+ __m128d vv = _mm_load_pd(&v[l]);
+ __m128d v1 = _mm_and_pd(vv, absMask.m);
+ v1 = _mm_cmplt_pd(v1, minlikelihood_sse);
+ if(_mm_movemask_pd( v1 ) != 3)
+ scale = 0;
+ }
+ }
+#else
+ v = &(x3[80 * i]);
+ scale = 1;
+ for(l = 0; scale && (l < 80); l++)
+ scale = ((PLL_ABS(v[l]) < PLL_MINLIKELIHOOD ));
+#endif
+
+ if (scale)
+ {
+#ifdef __SSE3
+ __m128d twoto = _mm_set_pd(PLL_TWOTOTHE256, PLL_TWOTOTHE256);
+
+ for(l = 0; l < 80; l+=2)
+ {
+ __m128d ex3v = _mm_load_pd(&v[l]);
+ _mm_store_pd(&v[l], _mm_mul_pd(ex3v,twoto));
+ }
+#else
+ for(l = 0; l < 80; l++)
+ v[l] *= PLL_TWOTOTHE256;
+#endif
+
+ if(useFastScaling)
+ addScale += wgt[i];
+ else
+ ex3[i] += 1;
+ }
+ }
+ break;
+ default:
+ assert(0);
+ }
+
+ if(useFastScaling)
+ *scalerIncrement = addScale;
+
+}
+#endif
+
+
diff --git a/src/optimizeModel.c b/src/optimizeModel.c
new file mode 100644
index 0000000..7f8be36
--- /dev/null
+++ b/src/optimizeModel.c
@@ -0,0 +1,3155 @@
+/**
+ * PLL (version 1.0.0) a software library for phylogenetic inference
+ * Copyright (C) 2013 Tomas Flouri and Alexandros Stamatakis
+ *
+ * Derived from
+ * RAxML-HPC, a program for sequential and parallel estimation of phylogenetic
+ * trees by Alexandros Stamatakis
+ *
+ * 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 3 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, see <http://www.gnu.org/licenses/>.
+ *
+ * For any other enquiries send an Email to Tomas Flouri
+ * Tomas.Flouri at h-its.org
+ *
+ * When publishing work that uses PLL please cite PLL
+ *
+ * @file optimizeModel.c
+ *
+ * @brief Model optimization routines
+ */
+
+#include "mem_alloc.h"
+
+#ifndef WIN32
+#include <unistd.h>
+#endif
+
+#include <math.h>
+#include <time.h>
+#include <stdlib.h>
+#include <stdio.h>
+#include <ctype.h>
+#include <string.h>
+#include <assert.h>
+
+#include "pll.h"
+#include "pllInternal.h"
+
+static const double MNBRAK_GOLD = 1.618034; /**< Golden ratio */
+static const double MNBRAK_TINY = 1.e-20;
+static const double MNBRAK_GLIMIT = 100.0;
+static const double BRENT_ZEPS = 1.e-5;
+static const double BRENT_CGOLD = 0.3819660;
+
+extern int optimizeRatesInvocations;
+extern int optimizeAlphaInvocations;
+extern int optimizeInvarInvocations;
+extern char ratesFileName[1024];
+extern char lengthFileName[1024];
+extern char lengthFileNameModel[1024];
+extern char *protModels[PLL_NUM_PROT_MODELS];
+
+static void optParamGeneric(pllInstance *tr, partitionList * pr, double modelEpsilon, linkageList *ll, int numberOfModels, int rateNumber, double lim_inf, double lim_sup, int whichParameterType);
+// FLAG for easier debugging of model parameter optimization routines
+
+//#define _DEBUG_MOD_OPT
+
+
+/*********************FUNCTIONS FOR EXACT MODEL OPTIMIZATION UNDER GTRGAMMA ***************************************/
+
+
+/* the following function is used to set rates in the Q matrix
+ the data structure called symmetryVector is used to
+ define the symmetries between rates as they are specified
+ in some of the secondary structure substitution models that
+ generally don't use GTR matrices but more restricted forms thereof */
+
+/** @brief Set a specific rate in the substitition matrix
+ *
+ * This function is used to set the \a position-th substitution rate of
+ * partition \a index to \a rate.
+ *
+ * @param pr
+ * List of partitions
+ *
+ * @param model
+ * Index of partition
+ *
+ * @param rate
+ * The new value to which to set the specific substition rate
+ *
+ * @param posititon
+ * The number of the substition rate
+ */
+static void setRateModel(partitionList *pr, int model, double rate, int position)
+{
+ int
+ states = pr->partitionData[model]->states,
+ numRates = (states * states - states) / 2;
+
+ if(pr->partitionData[model]->dataType == PLL_DNA_DATA)
+ assert(position >= 0 && position < (numRates - 1));
+ else
+ assert(position >= 0 && position < numRates);
+
+ assert(pr->partitionData[model]->dataType != PLL_BINARY_DATA);
+
+ assert(rate >= PLL_RATE_MIN && rate <= PLL_RATE_MAX);
+
+ if(pr->partitionData[model]->nonGTR)
+ {
+ int
+ i,
+ index = pr->partitionData[model]->symmetryVector[position],
+ lastRate = pr->partitionData[model]->symmetryVector[numRates - 1];
+
+ for(i = 0; i < numRates; i++)
+ {
+ if(pr->partitionData[model]->symmetryVector[i] == index)
+ {
+ if(index == lastRate)
+ pr->partitionData[model]->substRates[i] = 1.0;
+ else
+ pr->partitionData[model]->substRates[i] = rate;
+ }
+
+ //printf("%f ", tr->partitionData[model].substRates[i]);
+ }
+ //printf("\n");
+ }
+ else
+ pr->partitionData[model]->substRates[position] = rate;
+}
+
+//LIBRARY: the only thing that we will need to do here is to
+//replace linkList by a string and also add some error correction
+//code
+
+/*
+ the following three functions are used to link/unlink parameters
+ between partitions. This should work in a generic way, however
+ this is so far mainly used for linking unlinking GTR matrix parameter
+ estimates across different protein data partitions.
+ Generally this mechanism can also be used for linking/inlinking alpha paremeters
+ between partitions and the like.
+ However, all alpha parameter estimates for all partitions and GTR estimates for
+ DNA partitions are unlinked by default. This is actually hard-coded
+ in here.
+*/
+
+/* initializwe a parameter linkage list for a certain parameter type (can be whatever).
+ the input is an integer vector that contaions NumberOfModels (numberOfPartitions) elements.
+
+ if we want to have all alpha parameters unlinked and have say 4 partitions the input
+ vector would look like this: {0, 1, 2, 3}, if we want to link partitions 0 and 3 the vector
+ should look like this: {0, 1, 2, 0}
+*/
+
+
+
+
+
+
+/* dedicated helper function to initialize the linkage list, that is, essentiaylly compute
+ the integer vector int *linkList used above for linking GTR models.
+
+ Once again, this is hard-coded in RAxML, because users can not influence the linking.
+
+*/
+
+
+/* free linkage list data structure */
+
+#define ALPHA_F 0
+#define RATE_F 1
+#define FREQ_F 2
+#define LXRATE_F 3
+#define LXWEIGHT_F 4
+
+static void updateWeights(partitionList *pr, int model, int rate, double value)
+{
+ int j;
+ double w = 0.0;
+ assert(rate >= 0 && rate < 4);
+ pr->partitionData[model]->lg4x_weightExponents[rate] = value;
+ for (j = 0; j < 4; j++)
+ w += exp(pr->partitionData[model]->lg4x_weightExponents[j]);
+ for (j = 0; j < 4; j++)
+ pr->partitionData[model]->lg4x_weights[j] = exp(
+ pr->partitionData[model]->lg4x_weightExponents[j]) / w;
+}
+
+static void optimizeWeights(pllInstance *tr, partitionList *pr, double modelEpsilon, linkageList *ll,
+ int numberOfModels)
+{
+ int i;
+ double initialLH = 0.0, finalLH = 0.0;
+ pllEvaluateLikelihood(tr, pr, tr->start, PLL_FALSE, PLL_FALSE);
+ initialLH = tr->likelihood;
+ for (i = 0; i < 4; i++)
+ optParamGeneric(tr, pr, modelEpsilon, ll, numberOfModels, i, -1000000.0,
+ 200.0, LXWEIGHT_F);
+
+#if (defined(_FINE_GRAIN_MPI) || defined(_USE_PTHREADS))
+ pllMasterBarrier(tr, pr, PLL_THREAD_COPY_LG4X_RATES);
+#endif
+
+ pllEvaluateLikelihood(tr, pr, tr->start, PLL_TRUE, PLL_FALSE);
+ finalLH = tr->likelihood;
+ if (finalLH < initialLH)
+ printf("Final: %f initial: %f\n", finalLH, initialLH);
+ assert(finalLH >= initialLH);
+}
+
+void scaleLG4X_EIGN(pllInstance *tr, partitionList *pr, int model)
+{
+ double
+ acc = 0.0;
+
+ int
+ i,
+ l;
+
+ for(i = 0; i < 4; i++)
+ acc += pr->partitionData[model]->lg4x_weights[i] *
+ pr->partitionData[model]->gammaRates[i];
+
+ acc = 1.0 / acc;
+
+ for(i = 0; i < 4; i++)
+ for(l = 0; l < 20; l++)
+ pr->partitionData[model]->EIGN_LG4[i][l] =
+ pr->partitionData[model]->rawEIGN_LG4[i][l] * acc;
+
+//#ifdef _USE_PTHREADS
+// pllMasterBarrier(tr, pr, PLL_THREAD_COPY_LG4X_EIGN);
+//#endif
+
+}
+
+/** @brief Wrapper function for changing a specific model parameter to the specified value
+ *
+ * Change the \a rateNumber-th model parameter of the type specified by \a whichParameterType to
+ * the value \a value.
+ * This routine is usually called by model optimization routines to restore the original
+ * model parameter vlaue when optimization leads to worse likelihood than the original, or
+ * when optimizing routines and testing the new parameter.
+ * In case of changing a frequency or substitution rate the Q matrix is also decomposed (into
+ * eigenvalues and eigenvectors)
+ *
+ * @param index
+ * Index of partition
+ *
+ * @param rateNumber
+ * The index of the model parameter
+ *
+ * @param value
+ * The value to which the parameter must be changed
+ *
+ * @param whichParameterType
+ * Type of model parameter. Can be \b RATE_F, \b ALPHA_F or \b FREQ_F, that is substitution rates,
+ * alpha rates, or base frequencies rates
+ */
+static void changeModelParameters(int index, int rateNumber, double value, int whichParameterType, pllInstance *tr, partitionList * pr)
+{
+ switch(whichParameterType)
+ {
+ case RATE_F:
+ setRateModel(pr, index, value, rateNumber);
+ pllInitReversibleGTR(tr, pr, index);
+ break;
+ case ALPHA_F:
+ pr->partitionData[index]->alpha = value;
+ pllMakeGammaCats(pr->partitionData[index]->alpha, pr->partitionData[index]->gammaRates, 4, tr->useMedian);
+ break;
+ case FREQ_F:
+ {
+ int
+ states = pr->partitionData[index]->states,
+ j;
+
+ double
+ w = 0.0;
+
+ pr->partitionData[index]->freqExponents[rateNumber] = value;
+
+ for(j = 0; j < states; j++)
+ w += exp(pr->partitionData[index]->freqExponents[j]);
+
+ for(j = 0; j < states; j++)
+ pr->partitionData[index]->frequencies[j] = exp(pr->partitionData[index]->freqExponents[j]) / w;
+
+ pllInitReversibleGTR(tr, pr, index);
+ }
+ break;
+ case LXRATE_F:
+ pr->partitionData[index]->gammaRates[rateNumber] = value;
+ scaleLG4X_EIGN(tr, pr, index);
+ break;
+ case LXWEIGHT_F:
+ updateWeights(pr, index, rateNumber, value);
+ scaleLG4X_EIGN(tr, pr, index);
+ break;
+ default:
+ assert(0);
+ }
+}
+
+/* function that evaluates the change to a parameter */
+/** @brief Evaluate the change of a parameter
+ *
+ * Evaluate the likelihood for each entry \a i in the linkage list when changing the
+ * \a rateNumber-th parameter of type \a whichFunction (\b ALPHA_F, \b RATE_F
+ * or \b FREQ_F) to \a value[i]. The resulting likelihood for each entry list \a i in the
+ * linkage list is then stored in \a result[i]
+ *
+ * @param tr
+ * PLL instance
+ *
+ * @param pr
+ * List of partitions
+ *
+ * @param rateNumber
+ * Index of the parameter to optimize
+ *
+ * @param value
+ *
+ * @param result
+ * An array where the total likelihood of each entry list \a i in the linkage list \a ll is stored when evaluating the new \a i-th parameter of array \a value
+ *
+ * @param converged
+ *
+ * @param whichFunction
+ * Type of the model parameter. Possible values are \b ALPHA_F, \b RATE_F and \b FREQ_F
+ *
+ * @param numberOfModels
+ * Number of partitions for which we are optimizing
+ *
+ * @param ll
+ * Linkage list
+ *
+ * @param modelEpsilon
+ * Epsilon threshold
+ */
+static void evaluateChange(pllInstance *tr, partitionList *pr, int rateNumber, double *value, double *result, boolean* converged, int whichFunction, int numberOfModels, linkageList *ll, double modelEpsilon)
+{
+ int
+ i,
+ k,
+ pos;
+
+ boolean
+ atLeastOnePartition = PLL_FALSE;
+
+ for(i = 0, pos = 0; i < ll->entries; i++)
+ {
+ if(ll->ld[i].valid)
+ {
+ if(converged[pos])
+ {
+ for(k = 0; k < ll->ld[i].partitions; k++)
+ pr->partitionData[ll->ld[i].partitionList[k]]->executeModel = PLL_FALSE;
+ }
+ else
+ {
+ atLeastOnePartition = PLL_TRUE;
+ for(k = 0; k < ll->ld[i].partitions; k++)
+ {
+ int
+ index = ll->ld[i].partitionList[k];
+
+
+ changeModelParameters(index, rateNumber, value[pos], whichFunction, tr, pr);
+ }
+ }
+ pos++;
+ }
+ else
+ {
+ for(k = 0; k < ll->ld[i].partitions; k++)
+ pr->partitionData[ll->ld[i].partitionList[k]]->executeModel = PLL_FALSE;
+ }
+ }
+
+ assert(pos == numberOfModels);
+
+ //some error checks for individual model parameters
+ switch (whichFunction)
+ {
+ case RATE_F:
+ assert(rateNumber != -1);
+ break;
+ case ALPHA_F:
+ break;
+ case LXRATE_F:
+ assert(rateNumber != -1);
+ break;
+ case LXWEIGHT_F:
+ assert(rateNumber != -1);
+ break;
+ case FREQ_F:
+ break;
+ default:
+ assert(0);
+ }
+
+ switch (whichFunction)
+ {
+ case RATE_F:
+ case ALPHA_F:
+ case LXRATE_F:
+ case FREQ_F:
+ case LXWEIGHT_F:
+ pllEvaluateLikelihood(tr, pr, tr->start, PLL_TRUE, PLL_FALSE);
+ break;
+ default:
+ assert(0);
+ }
+ //nested optimization for LX4 model, now optimize the weights!
+ if (whichFunction == LXRATE_F && atLeastOnePartition)
+ {
+ boolean *buffer = (boolean*) malloc(
+ pr->numberOfPartitions* sizeof(boolean));
+
+ for (i = 0; i < pr->numberOfPartitions; i++) {
+ buffer[i] = pr->partitionData[i]->executeModel;
+ pr->partitionData[i]->executeModel = PLL_FALSE;
+ }
+
+ for (i = 0, pos = 0; i < ll->entries; i++)
+ {
+ int index = ll->ld[i].partitionList[0];
+ if (ll->ld[i].valid)
+ pr->partitionData[index]->executeModel = PLL_TRUE;
+ }
+ optimizeWeights(tr, pr, modelEpsilon, ll, numberOfModels);
+
+ for (i = 0; i < pr->numberOfPartitions; i++) {
+ pr->partitionData[i]->executeModel = buffer[i];
+ }
+
+ free(buffer);
+ }
+
+#if (defined(_FINE_GRAIN_MPI) || defined(_USE_PTHREADS))
+
+ switch (whichFunction)
+ {
+ case RATE_F:
+ pllMasterBarrier(tr, pr, PLL_THREAD_OPT_RATE);
+ break;
+ case ALPHA_F:
+ pllMasterBarrier(tr, pr, PLL_THREAD_OPT_ALPHA);
+ break;
+ case FREQ_F:
+ pllMasterBarrier(tr, pr, PLL_THREAD_OPT_RATE);
+ break;
+ case LXRATE_F:
+ pllMasterBarrier(tr, pr, PLL_THREAD_OPT_LG4X_RATE);
+ break;
+ case LXWEIGHT_F:
+ pllMasterBarrier(tr, pr, PLL_THREAD_OPT_LG4X_RATE);
+ break;
+ default:
+ break;
+ }
+#else
+ //commented out evaluate below in the course of the LG4X integration
+ //pllEvaluateLikelihood (tr, pr, tr->start, PLL_TRUE, PLL_FALSE);
+#endif
+
+
+ for(i = 0, pos = 0; i < ll->entries; i++)
+ {
+ if(ll->ld[i].valid)
+ {
+ result[pos] = 0.0;
+
+ for(k = 0; k < ll->ld[i].partitions; k++)
+ {
+ int
+ index = ll->ld[i].partitionList[k];
+
+ assert(pr->partitionData[index]->partitionLH <= 0.0);
+ result[pos] -= pr->partitionData[index]->partitionLH;
+
+ }
+ pos++;
+ }
+ for(k = 0; k < ll->ld[i].partitions; k++)
+ {
+ int index = ll->ld[i].partitionList[k];
+ pr->partitionData[index]->executeModel = PLL_TRUE;
+ }
+ }
+
+ assert(pos == numberOfModels);
+}
+
+/* generic implementation of Brent's algorithm for one-dimensional parameter optimization */
+
+/** @brief Brent's algorithm
+ *
+ * Generic implementation of Brent's algorithm for one-dimensional parameter optimization
+ *
+ * @param ax
+ *
+ * @param bx
+ *
+ * @param cx
+ *
+ * @param fb
+ *
+ * @param tol
+ *
+ * @param xmin
+ *
+ * @param result
+ *
+ * @param numberOfModels
+ * Number of partitions for which we are optimizing
+ *
+ * @param whichFunction
+ * Type of the model parameter. Possible values are \b ALPHA_F, \b RATE_F and \b FREQ_F
+ *
+ * @param rateNumber
+ * Index of the parameter to optimize
+ *
+ * @param tr
+ * PLL instance
+ *
+ * @param pr
+ * List of partitions
+ *
+ * @param ll
+ * Linkage list
+ *
+ * @param lim_inf
+ * Lower bound for the rate assignment
+ *
+ * @param lim_sup
+ * Upper bound for the rate assignment
+ *
+ * @todo
+ * Fill the rest of the entries. Also, why not preallocate all memory instead of allocating
+ * at every call? We can save a lot of time which is lost due to function calls, finding free
+ * memory blocks by allocation strategy, and also prevent mem fragmentation.
+ */
+static void brentGeneric(double *ax, double *bx, double *cx, double *fb, double tol, double *xmin, double *result, int numberOfModels,
+ int whichFunction, int rateNumber, pllInstance *tr, partitionList *pr, linkageList *ll, double lim_inf, double lim_sup)
+{
+ int iter, i;
+ double
+ *a = (double *)rax_malloc(sizeof(double) * numberOfModels),
+ *b = (double *)rax_malloc(sizeof(double) * numberOfModels),
+ *d = (double *)rax_malloc(sizeof(double) * numberOfModels),
+ *etemp = (double *)rax_malloc(sizeof(double) * numberOfModels),
+ *fu = (double *)rax_malloc(sizeof(double) * numberOfModels),
+ *fv = (double *)rax_malloc(sizeof(double) * numberOfModels),
+ *fw = (double *)rax_malloc(sizeof(double) * numberOfModels),
+ *fx = (double *)rax_malloc(sizeof(double) * numberOfModels),
+ *p = (double *)rax_malloc(sizeof(double) * numberOfModels),
+ *q = (double *)rax_malloc(sizeof(double) * numberOfModels),
+ *r = (double *)rax_malloc(sizeof(double) * numberOfModels),
+ *tol1 = (double *)rax_malloc(sizeof(double) * numberOfModels),
+ *tol2 = (double *)rax_malloc(sizeof(double) * numberOfModels),
+ *u = (double *)rax_malloc(sizeof(double) * numberOfModels),
+ *v = (double *)rax_malloc(sizeof(double) * numberOfModels),
+ *w = (double *)rax_malloc(sizeof(double) * numberOfModels),
+ *x = (double *)rax_malloc(sizeof(double) * numberOfModels),
+ *xm = (double *)rax_malloc(sizeof(double) * numberOfModels),
+ *e = (double *)rax_malloc(sizeof(double) * numberOfModels);
+ boolean *converged = (boolean *)rax_malloc(sizeof(boolean) * numberOfModels);
+ boolean allConverged;
+
+ for(i = 0; i < numberOfModels; i++)
+ converged[i] = PLL_FALSE;
+
+ for(i = 0; i < numberOfModels; i++)
+ {
+ e[i] = 0.0;
+ d[i] = 0.0;
+ }
+
+ for(i = 0; i < numberOfModels; i++)
+ {
+ a[i]=((ax[i] < cx[i]) ? ax[i] : cx[i]);
+ b[i]=((ax[i] > cx[i]) ? ax[i] : cx[i]);
+ x[i] = w[i] = v[i] = bx[i];
+ fw[i] = fv[i] = fx[i] = fb[i];
+ }
+
+ for(i = 0; i < numberOfModels; i++)
+ {
+ assert(a[i] >= lim_inf && a[i] <= lim_sup);
+ assert(b[i] >= lim_inf && b[i] <= lim_sup);
+ assert(x[i] >= lim_inf && x[i] <= lim_sup);
+ assert(v[i] >= lim_inf && v[i] <= lim_sup);
+ assert(w[i] >= lim_inf && w[i] <= lim_sup);
+ }
+
+
+
+ for(iter = 1; iter <= PLL_ITMAX; iter++)
+ {
+ allConverged = PLL_TRUE;
+
+ for(i = 0; i < numberOfModels && allConverged; i++)
+ allConverged = allConverged && converged[i];
+
+ if(allConverged)
+ {
+ rax_free(converged);
+ rax_free(a);
+ rax_free(b);
+ rax_free(d);
+ rax_free(etemp);
+ rax_free(fu);
+ rax_free(fv);
+ rax_free(fw);
+ rax_free(fx);
+ rax_free(p);
+ rax_free(q);
+ rax_free(r);
+ rax_free(tol1);
+ rax_free(tol2);
+ rax_free(u);
+ rax_free(v);
+ rax_free(w);
+ rax_free(x);
+ rax_free(xm);
+ rax_free(e);
+ return;
+ }
+
+ for(i = 0; i < numberOfModels; i++)
+ {
+ if(!converged[i])
+ {
+ assert(a[i] >= lim_inf && a[i] <= lim_sup);
+ assert(b[i] >= lim_inf && b[i] <= lim_sup);
+ assert(x[i] >= lim_inf && x[i] <= lim_sup);
+ assert(v[i] >= lim_inf && v[i] <= lim_sup);
+ assert(w[i] >= lim_inf && w[i] <= lim_sup);
+
+ xm[i] = 0.5 * (a[i] + b[i]);
+ tol2[i] = 2.0 * (tol1[i] = tol * fabs(x[i]) + BRENT_ZEPS);
+
+ if(fabs(x[i] - xm[i]) <= (tol2[i] - 0.5 * (b[i] - a[i])))
+ {
+ result[i] = -fx[i];
+ xmin[i] = x[i];
+ converged[i] = PLL_TRUE;
+ }
+ else
+ {
+ if(fabs(e[i]) > tol1[i])
+ {
+ r[i] = (x[i] - w[i]) * (fx[i] - fv[i]);
+ q[i] = (x[i] - v[i]) * (fx[i] - fw[i]);
+ p[i] = (x[i] - v[i]) * q[i] - (x[i] - w[i]) * r[i];
+ q[i] = 2.0 * (q[i] - r[i]);
+ if(q[i] > 0.0)
+ p[i] = -p[i];
+ q[i] = fabs(q[i]);
+ etemp[i] = e[i];
+ e[i] = d[i];
+ if((fabs(p[i]) >= fabs(0.5 * q[i] * etemp[i])) || (p[i] <= q[i] * (a[i]-x[i])) || (p[i] >= q[i] * (b[i] - x[i])))
+ d[i] = BRENT_CGOLD * (e[i] = (x[i] >= xm[i] ? a[i] - x[i] : b[i] - x[i]));
+ else
+ {
+ d[i] = p[i] / q[i];
+ u[i] = x[i] + d[i];
+ if( u[i] - a[i] < tol2[i] || b[i] - u[i] < tol2[i])
+ d[i] = PLL_SIGN(tol1[i], xm[i] - x[i]);
+ }
+ }
+ else
+ {
+ d[i] = BRENT_CGOLD * (e[i] = (x[i] >= xm[i] ? a[i] - x[i]: b[i] - x[i]));
+ }
+ u[i] = ((fabs(d[i]) >= tol1[i]) ? (x[i] + d[i]) : (x[i] + PLL_SIGN(tol1[i], d[i])));
+ }
+
+ if(!converged[i])
+ assert(u[i] >= lim_inf && u[i] <= lim_sup);
+ }
+ }
+
+ evaluateChange(tr, pr, rateNumber, u, fu, converged, whichFunction, numberOfModels, ll, tol);
+
+ for(i = 0; i < numberOfModels; i++)
+ {
+ if(!converged[i])
+ {
+ if(fu[i] <= fx[i])
+ {
+ if(u[i] >= x[i])
+ a[i] = x[i];
+ else
+ b[i] = x[i];
+
+ PLL_SHFT(v[i],w[i],x[i],u[i]);
+ PLL_SHFT(fv[i],fw[i],fx[i],fu[i]);
+ }
+ else
+ {
+ if(u[i] < x[i])
+ a[i] = u[i];
+ else
+ b[i] = u[i];
+
+ if(fu[i] <= fw[i] || w[i] == x[i])
+ {
+ v[i] = w[i];
+ w[i] = u[i];
+ fv[i] = fw[i];
+ fw[i] = fu[i];
+ }
+ else
+ {
+ if(fu[i] <= fv[i] || v[i] == x[i] || v[i] == w[i])
+ {
+ v[i] = u[i];
+ fv[i] = fu[i];
+ }
+ }
+ }
+
+ assert(a[i] >= lim_inf && a[i] <= lim_sup);
+ assert(b[i] >= lim_inf && b[i] <= lim_sup);
+ assert(x[i] >= lim_inf && x[i] <= lim_sup);
+ assert(v[i] >= lim_inf && v[i] <= lim_sup);
+ assert(w[i] >= lim_inf && w[i] <= lim_sup);
+ assert(u[i] >= lim_inf && u[i] <= lim_sup);
+ }
+ }
+ }
+
+ rax_free(converged);
+ rax_free(a);
+ rax_free(b);
+ rax_free(d);
+ rax_free(etemp);
+ rax_free(fu);
+ rax_free(fv);
+ rax_free(fw);
+ rax_free(fx);
+ rax_free(p);
+ rax_free(q);
+ rax_free(r);
+ rax_free(tol1);
+ rax_free(tol2);
+ rax_free(u);
+ rax_free(v);
+ rax_free(w);
+ rax_free(x);
+ rax_free(xm);
+ rax_free(e);
+
+ printf("\n. Too many iterations in BRENT !");
+ assert(0);
+}
+
+/* generic bracketing function required for Brent's algorithm. For details please see the corresponding chapter in the book Numerical Recipees in C */
+
+/** @brief Bracketing function
+ *
+ * Generic bracketing function required for Brent's algorithm.
+ *
+ * @param param
+ *
+ * @param ax
+ *
+ * @param bx
+ *
+ * @param cx
+ *
+ * @param fa
+ *
+ * @param fb
+ *
+ * @param fc
+ *
+ * @param lim_inf
+ * Lower bound for the rate assignment
+ *
+ * @param lim_sup
+ * Upper bound for the rate assignment
+ *
+ * @param numberOfModels
+ * Number of partitions for which we are optimizing
+ *
+ * @param rateNumber
+ * Index of the parameter to optimize
+ *
+ * @param whichFunction
+ * Type of the model parameter. Possible values are \b ALPHA_F, \b RATE_F and \b FREQ_F
+ *
+ * @param tr
+ * PLL instance
+ *
+ * @param pr
+ * List of partitions
+ *
+ * @param ll
+ * Linkage list
+ *
+ * @param modelEpsilon
+ *
+ * @return
+ * Fill this
+ *
+ * @todo
+ * Fill remaining details
+ */
+static int brakGeneric(double *param, double *ax, double *bx, double *cx, double *fa, double *fb,
+ double *fc, double lim_inf, double lim_sup,
+ int numberOfModels, int rateNumber, int whichFunction, pllInstance *tr, partitionList *pr,
+ linkageList *ll, double modelEpsilon)
+{
+ double
+ *ulim = (double *)rax_malloc(sizeof(double) * numberOfModels),
+ *u = (double *)rax_malloc(sizeof(double) * numberOfModels),
+ *r = (double *)rax_malloc(sizeof(double) * numberOfModels),
+ *q = (double *)rax_malloc(sizeof(double) * numberOfModels),
+ *fu = (double *)rax_malloc(sizeof(double) * numberOfModels),
+ *dum = (double *)rax_malloc(sizeof(double) * numberOfModels),
+ *temp = (double *)rax_malloc(sizeof(double) * numberOfModels);
+
+ int
+ i,
+ *state = (int *)rax_malloc(sizeof(int) * numberOfModels),
+ *endState = (int *)rax_malloc(sizeof(int) * numberOfModels);
+
+ boolean *converged = (boolean *)rax_malloc(sizeof(boolean) * numberOfModels);
+ boolean allConverged;
+
+ for(i = 0; i < numberOfModels; i++)
+ converged[i] = PLL_FALSE;
+
+ for(i = 0; i < numberOfModels; i++)
+ {
+ state[i] = 0;
+ endState[i] = 0;
+
+ u[i] = 0.0;
+
+ param[i] = ax[i];
+
+ if(param[i] > lim_sup)
+ param[i] = ax[i] = lim_sup;
+
+ if(param[i] < lim_inf)
+ param[i] = ax[i] = lim_inf;
+
+ assert(param[i] >= lim_inf && param[i] <= lim_sup);
+ }
+
+
+ evaluateChange(tr, pr, rateNumber, param, fa, converged, whichFunction, numberOfModels, ll, modelEpsilon);
+
+
+ for(i = 0; i < numberOfModels; i++)
+ {
+ param[i] = bx[i];
+ if(param[i] > lim_sup)
+ param[i] = bx[i] = lim_sup;
+ if(param[i] < lim_inf)
+ param[i] = bx[i] = lim_inf;
+
+ assert(param[i] >= lim_inf && param[i] <= lim_sup);
+ }
+
+ evaluateChange(tr, pr, rateNumber, param, fb, converged, whichFunction, numberOfModels, ll, modelEpsilon);
+
+ for(i = 0; i < numberOfModels; i++)
+ {
+ if (fb[i] > fa[i])
+ {
+ PLL_SHFT(dum[i],ax[i],bx[i],dum[i]);
+ PLL_SHFT(dum[i],fa[i],fb[i],dum[i]);
+ }
+
+ cx[i] = bx[i] + MNBRAK_GOLD * (bx[i] - ax[i]);
+
+ param[i] = cx[i];
+
+ if(param[i] > lim_sup)
+ param[i] = cx[i] = lim_sup;
+ if(param[i] < lim_inf)
+ param[i] = cx[i] = lim_inf;
+
+ assert(param[i] >= lim_inf && param[i] <= lim_sup);
+ }
+
+
+ evaluateChange(tr, pr, rateNumber, param, fc, converged, whichFunction, numberOfModels, ll, modelEpsilon);
+
+ while(1)
+ {
+ allConverged = PLL_TRUE;
+
+ for(i = 0; i < numberOfModels && allConverged; i++)
+ allConverged = allConverged && converged[i];
+
+ if(allConverged)
+ {
+ for(i = 0; i < numberOfModels; i++)
+ {
+ if(ax[i] > lim_sup)
+ ax[i] = lim_sup;
+ if(ax[i] < lim_inf)
+ ax[i] = lim_inf;
+
+ if(bx[i] > lim_sup)
+ bx[i] = lim_sup;
+ if(bx[i] < lim_inf)
+ bx[i] = lim_inf;
+
+ if(cx[i] > lim_sup)
+ cx[i] = lim_sup;
+ if(cx[i] < lim_inf)
+ cx[i] = lim_inf;
+ }
+
+ rax_free(converged);
+ rax_free(ulim);
+ rax_free(u);
+ rax_free(r);
+ rax_free(q);
+ rax_free(fu);
+ rax_free(dum);
+ rax_free(temp);
+ rax_free(state);
+ rax_free(endState);
+ return 0;
+
+ }
+
+ for(i = 0; i < numberOfModels; i++)
+ {
+ if(!converged[i])
+ {
+ switch(state[i])
+ {
+ case 0:
+ endState[i] = 0;
+ if(!(fb[i] > fc[i]))
+ converged[i] = PLL_TRUE;
+ else
+ {
+
+ if(ax[i] > lim_sup)
+ ax[i] = lim_sup;
+ if(ax[i] < lim_inf)
+ ax[i] = lim_inf;
+ if(bx[i] > lim_sup)
+ bx[i] = lim_sup;
+ if(bx[i] < lim_inf)
+ bx[i] = lim_inf;
+ if(cx[i] > lim_sup)
+ cx[i] = lim_sup;
+ if(cx[i] < lim_inf)
+ cx[i] = lim_inf;
+
+ r[i]=(bx[i]-ax[i])*(fb[i]-fc[i]);
+ q[i]=(bx[i]-cx[i])*(fb[i]-fa[i]);
+ u[i]=(bx[i])-((bx[i]-cx[i])*q[i]-(bx[i]-ax[i])*r[i])/
+ (2.0 * PLL_SIGN(PLL_MAX(fabs(q[i]-r[i]),MNBRAK_TINY),q[i]-r[i]));
+
+ ulim[i]=(bx[i])+MNBRAK_GLIMIT*(cx[i]-bx[i]);
+
+ if(u[i] > lim_sup)
+ u[i] = lim_sup;
+ if(u[i] < lim_inf)
+ u[i] = lim_inf;
+ if(ulim[i] > lim_sup)
+ ulim[i] = lim_sup;
+ if(ulim[i] < lim_inf)
+ ulim[i] = lim_inf;
+
+ if ((bx[i]-u[i])*(u[i]-cx[i]) > 0.0)
+ {
+ param[i] = u[i];
+ if(param[i] > lim_sup)
+ param[i] = u[i] = lim_sup;
+ if(param[i] < lim_inf)
+ param[i] = u[i] = lim_inf;
+ endState[i] = 1;
+ }
+ else
+ {
+ if ((cx[i]-u[i])*(u[i]-ulim[i]) > 0.0)
+ {
+ param[i] = u[i];
+ if(param[i] > lim_sup)
+ param[i] = u[i] = lim_sup;
+ if(param[i] < lim_inf)
+ param[i] = u[i] = lim_inf;
+ endState[i] = 2;
+ }
+ else
+ {
+ if ((u[i]-ulim[i])*(ulim[i]-cx[i]) >= 0.0)
+ {
+ u[i] = ulim[i];
+ param[i] = u[i];
+ if(param[i] > lim_sup)
+ param[i] = u[i] = ulim[i] = lim_sup;
+ if(param[i] < lim_inf)
+ param[i] = u[i] = ulim[i] = lim_inf;
+ endState[i] = 0;
+ }
+ else
+ {
+ u[i]=(cx[i])+MNBRAK_GOLD*(cx[i]-bx[i]);
+ param[i] = u[i];
+ endState[i] = 0;
+ if(param[i] > lim_sup)
+ param[i] = u[i] = lim_sup;
+ if(param[i] < lim_inf)
+ param[i] = u[i] = lim_inf;
+ }
+ }
+ }
+ }
+ break;
+ case 1:
+ endState[i] = 0;
+ break;
+ case 2:
+ endState[i] = 3;
+ break;
+ default:
+ assert(0);
+ }
+ assert(param[i] >= lim_inf && param[i] <= lim_sup);
+ }
+ }
+
+ evaluateChange(tr, pr, rateNumber, param, temp, converged, whichFunction, numberOfModels, ll, modelEpsilon);
+
+ for(i = 0; i < numberOfModels; i++)
+ {
+ if(!converged[i])
+ {
+ switch(endState[i])
+ {
+ case 0:
+ fu[i] = temp[i];
+ PLL_SHFT(ax[i],bx[i],cx[i],u[i]);
+ PLL_SHFT(fa[i],fb[i],fc[i],fu[i]);
+ state[i] = 0;
+ break;
+ case 1:
+ fu[i] = temp[i];
+ if (fu[i] < fc[i])
+ {
+ ax[i]=(bx[i]);
+ bx[i]=u[i];
+ fa[i]=(fb[i]);
+ fb[i]=fu[i];
+ converged[i] = PLL_TRUE;
+ }
+ else
+ {
+ if (fu[i] > fb[i])
+ {
+ assert(u[i] >= lim_inf && u[i] <= lim_sup);
+ cx[i]=u[i];
+ fc[i]=fu[i];
+ converged[i] = PLL_TRUE;
+ }
+ else
+ {
+ u[i]=(cx[i])+MNBRAK_GOLD*(cx[i]-bx[i]);
+ param[i] = u[i];
+ if(param[i] > lim_sup) {param[i] = u[i] = lim_sup;}
+ if(param[i] < lim_inf) {param[i] = u[i] = lim_inf;}
+ state[i] = 1;
+ }
+ }
+ break;
+ case 2:
+ fu[i] = temp[i];
+ if (fu[i] < fc[i])
+ {
+ PLL_SHFT(bx[i],cx[i],u[i], cx[i]+MNBRAK_GOLD*(cx[i]-bx[i]));
+ state[i] = 2;
+ }
+ else
+ {
+ state[i] = 0;
+ PLL_SHFT(ax[i],bx[i],cx[i],u[i]);
+ PLL_SHFT(fa[i],fb[i],fc[i],fu[i]);
+ }
+ break;
+ case 3:
+ PLL_SHFT(fb[i],fc[i],fu[i], temp[i]);
+ PLL_SHFT(ax[i],bx[i],cx[i],u[i]);
+ PLL_SHFT(fa[i],fb[i],fc[i],fu[i]);
+ state[i] = 0;
+ break;
+ default:
+ assert(0);
+ }
+ }
+ }
+ }
+
+
+ assert(0);
+ rax_free(converged);
+ rax_free(ulim);
+ rax_free(u);
+ rax_free(r);
+ rax_free(q);
+ rax_free(fu);
+ rax_free(dum);
+ rax_free(temp);
+ rax_free(state);
+ rax_free(endState);
+
+
+
+ return(0);
+}
+
+/*******************************************************************************************************/
+/******** LG4X ***************************************************************************************/
+
+void pllOptLG4X(pllInstance *tr, partitionList * pr, double modelEpsilon,
+ linkageList *ll, int numberOfModels)
+{
+ int i;
+ for (i = 0; i < 4; i++)
+ optParamGeneric(tr, pr, modelEpsilon, ll, numberOfModels, i, PLL_LG4X_RATE_MIN,
+ PLL_LG4X_RATE_MAX, LXRATE_F);
+}
+
+/**********************************************************************************************************/
+/* ALPHA PARAM ********************************************************************************************/
+
+
+//this function is required for implementing the LG4X model later-on
+
+/** @brief Optimize alpha rates
+ *
+ * Generic routine for alpha rates optimization
+ *
+ * @param tr
+ * PLL instance
+ *
+ * @param pr
+ * List of partitions
+ *
+ * @param modelEpsilon
+ * Don't know yet
+ *
+ * @param ll
+ * Linkage list
+ *
+ * @todo
+ * Implement the LG4X model
+ */
+void pllOptAlphasGeneric(pllInstance *tr, partitionList * pr, double modelEpsilon, linkageList *ll)
+{
+ int
+ i,
+ non_LG4X_Partitions = 0,
+ LG4X_Partitions = 0;
+
+ /* assumes homogeneous super-partitions, that either contain DNA or AA partitions !*/
+ /* does not check whether AA are all linked */
+
+ /* first do non-LG4X partitions */
+
+ for(i = 0; ll && i < ll->entries; i++)
+ {
+ switch(pr->partitionData[ll->ld[i].partitionList[0]]->dataType)
+ {
+ case PLL_DNA_DATA:
+ case PLL_BINARY_DATA:
+ case PLL_SECONDARY_DATA:
+ case PLL_SECONDARY_DATA_6:
+ case PLL_SECONDARY_DATA_7:
+ case PLL_GENERIC_32:
+ case PLL_GENERIC_64:
+ if (pr->partitionData[ll->ld[i].partitionList[0]]->optimizeAlphaParameter)
+ {
+ ll->ld[i].valid = PLL_TRUE;
+ non_LG4X_Partitions++;
+ }
+ else
+ ll->ld[i].valid = PLL_FALSE;
+ break;
+ case PLL_AA_DATA:
+ if (pr->partitionData[ll->ld[i].partitionList[0]]->optimizeAlphaParameter)
+ {
+ if (pr->partitionData[ll->ld[i].partitionList[0]]->protModels == PLL_LG4X)
+ {
+ LG4X_Partitions++;
+ ll->ld[i].valid = PLL_FALSE;
+ }
+ else
+ {
+ ll->ld[i].valid = PLL_TRUE;
+ non_LG4X_Partitions++;
+ }
+ }
+ else
+ ll->ld[i].valid = PLL_FALSE;
+ break;
+ default:
+ assert(0);
+ }
+ }
+
+
+
+ if(non_LG4X_Partitions > 0)
+ optParamGeneric(tr, pr, modelEpsilon, ll, non_LG4X_Partitions, -1, PLL_ALPHA_MIN, PLL_ALPHA_MAX, ALPHA_F);
+
+ /* then LG4x partitions */
+
+ for(i = 0; ll && i < ll->entries; i++)
+ {
+ switch(pr->partitionData[ll->ld[i].partitionList[0]]->dataType)
+ {
+ case PLL_DNA_DATA:
+ case PLL_BINARY_DATA:
+ case PLL_SECONDARY_DATA:
+ case PLL_SECONDARY_DATA_6:
+ case PLL_SECONDARY_DATA_7:
+ case PLL_GENERIC_32:
+ case PLL_GENERIC_64:
+ ll->ld[i].valid = PLL_FALSE;
+ break;
+ case PLL_AA_DATA:
+ if(pr->partitionData[ll->ld[i].partitionList[0]]->protModels == PLL_LG4X)
+ ll->ld[i].valid = PLL_TRUE;
+ else
+ ll->ld[i].valid = PLL_FALSE;
+ break;
+ default:
+ assert(0);
+ }
+ }
+
+ if(LG4X_Partitions > 0)
+ pllOptLG4X(tr, pr, modelEpsilon, ll, LG4X_Partitions);
+
+ for(i = 0; ll && i < ll->entries; i++)
+ ll->ld[i].valid = PLL_TRUE;
+}
+
+/** @brief Optimize model parameters
+ *
+ * Function for optimizing the \a rateNumber-th model parameter of type \a whichParameterTYpe,
+ * i.e. alpha rate, substitution rate, or base frequency rate, in all partitions with the \a
+ * valid flag set to \b PLL_TRUE.
+ *
+ * @param tr
+ * PLL instance
+ *
+ * @param pr
+ * List of partitions
+ *
+ * @param modelEpsilon
+ * A parameter passed for Brent / Brak
+ *
+ * @param ll
+ * Linkage list
+ *
+ * @param numberOfModels
+ * Number of partitions for which we are optimizing
+ *
+ * @param rateNumber
+ * Index of the parameter to optimize
+ *
+ * @param lim_inf
+ * Lower bound for the rate assignment
+ *
+ * @param lim_sup
+ * Upper bound for the rate assignment
+ *
+ * @param whichParameterType
+ * Type of the model parameter. Possible values are \b ALPHA_F, \b RATE_F and \b FREQ_F
+ *
+ * @todo
+ * Describe the modelEpsilon parameter in detail
+ */
+static void optParamGeneric(pllInstance *tr, partitionList * pr, double modelEpsilon, linkageList *ll, int numberOfModels, int rateNumber, double lim_inf, double lim_sup, int whichParameterType)
+{
+ int
+ l,
+ k,
+ j,
+ pos;
+
+ double
+ *startRates = (double *)rax_malloc(sizeof(double) * numberOfModels * 4),
+ *startWeights = (double *)rax_malloc(sizeof(double) * numberOfModels * 4),
+ *startExponents = (double *)rax_malloc(sizeof(double) * numberOfModels * 4),
+ *startValues = (double *)rax_malloc(sizeof(double) * numberOfModels),
+ *startLH = (double *)rax_malloc(sizeof(double) * numberOfModels),
+ *endLH = (double *)rax_malloc(sizeof(double) * numberOfModels),
+ *_a = (double *)rax_malloc(sizeof(double) * numberOfModels),
+ *_b = (double *)rax_malloc(sizeof(double) * numberOfModels),
+ *_c = (double *)rax_malloc(sizeof(double) * numberOfModels),
+ *_fa = (double *)rax_malloc(sizeof(double) * numberOfModels),
+ *_fb = (double *)rax_malloc(sizeof(double) * numberOfModels),
+ *_fc = (double *)rax_malloc(sizeof(double) * numberOfModels),
+ *_param = (double *)rax_malloc(sizeof(double) * numberOfModels),
+ *_x = (double *)rax_malloc(sizeof(double) * numberOfModels);
+
+ pllEvaluateLikelihood (tr, pr, tr->start, PLL_TRUE, PLL_FALSE);
+
+ if (whichParameterType == LXRATE_F)
+ {
+ int j;
+ for (j = 0; j < pr->numberOfPartitions; j++)
+ pr->partitionData[j]->lg4x_weightLikelihood = pr->partitionData[j]->partitionLH;
+ }
+
+#ifdef _DEBUG_MOD_OPT
+ double
+ initialLH = tr->likelihood;
+#endif
+
+ /*
+ at this point here every worker has the traversal data it needs for the
+ search
+ */
+
+ /* store in startValues the values of the old parameters */
+ for(l = 0, pos = 0; ll && l < ll->entries; l++)
+ {
+ if(ll->ld[l].valid)
+ {
+ endLH[pos] = PLL_UNLIKELY;
+ startLH[pos] = 0.0;
+
+ for(j = 0; j < ll->ld[l].partitions; j++)
+ {
+ int
+ index = ll->ld[l].partitionList[j];
+
+ startLH[pos] += pr->partitionData[index]->partitionLH;
+
+ switch(whichParameterType)
+ {
+ case ALPHA_F:
+ startValues[pos] = pr->partitionData[index]->alpha;
+ break;
+ case RATE_F:
+ startValues[pos] = pr->partitionData[index]->substRates[rateNumber];
+ break;
+ case FREQ_F:
+ startValues[pos] = pr->partitionData[index]->freqExponents[rateNumber];
+ break;
+ case LXRATE_F:
+ assert(rateNumber >= 0 && rateNumber < 4);
+ startValues[pos] =
+ pr->partitionData[index]->gammaRates[rateNumber];
+ memcpy(&startRates[pos * 4],
+ pr->partitionData[index]->gammaRates,
+ 4 * sizeof(double));
+ memcpy(&startExponents[pos * 4],
+ pr->partitionData[index]->lg4x_weightExponents,
+ 4 * sizeof(double));
+ memcpy(&startWeights[pos * 4],
+ pr->partitionData[index]->lg4x_weights,
+ 4 * sizeof(double));
+ break;
+ case LXWEIGHT_F:
+ assert(rateNumber >= 0 && rateNumber < 4);
+ startValues[pos] =
+ pr->partitionData[index]->lg4x_weightExponents[rateNumber];
+ break;
+ default:
+ assert(0);
+ }
+ }
+ pos++;
+ }
+ }
+
+ assert(pos == numberOfModels);
+
+ for(k = 0, pos = 0; ll && k < ll->entries; k++)
+ {
+ if(ll->ld[k].valid)
+ {
+ _a[pos] = startValues[pos] + 0.1;
+ _b[pos] = startValues[pos] - 0.1;
+
+ if(_a[pos] < lim_inf)
+ _a[pos] = lim_inf;
+
+ if(_a[pos] > lim_sup)
+ _a[pos] = lim_sup;
+
+ if(_b[pos] < lim_inf)
+ _b[pos] = lim_inf;
+
+ if(_b[pos] > lim_sup)
+ _b[pos] = lim_sup;
+
+ pos++;
+ }
+ }
+
+ assert(pos == numberOfModels);
+
+ brakGeneric(_param, _a, _b, _c, _fa, _fb, _fc, lim_inf, lim_sup, numberOfModels, rateNumber, whichParameterType, tr, pr, ll, modelEpsilon);
+
+ for(k = 0; k < numberOfModels; k++)
+ {
+ assert(_a[k] >= lim_inf && _a[k] <= lim_sup);
+ assert(_b[k] >= lim_inf && _b[k] <= lim_sup);
+ assert(_c[k] >= lim_inf && _c[k] <= lim_sup);
+ }
+
+ brentGeneric(_a, _b, _c, _fb, modelEpsilon, _x, endLH, numberOfModels, whichParameterType, rateNumber, tr, pr, ll, lim_inf, lim_sup);
+
+ for(k = 0, pos = 0; ll && k < ll->entries; k++)
+ {
+ if(ll->ld[k].valid)
+ {
+ if(startLH[pos] > endLH[pos])
+ {
+ //if the initial likelihood was better than the likelihodo after optimization, we set the values back
+ //to their original values
+
+ for(j = 0; j < ll->ld[k].partitions; j++)
+ {
+ int
+ index = ll->ld[k].partitionList[j];
+
+ if (whichParameterType == LXRATE_F)
+ {
+ memcpy(pr->partitionData[index]->lg4x_weights,
+ &startWeights[pos * 4], sizeof(double) * 4);
+ memcpy(pr->partitionData[index]->gammaRates,
+ &startRates[pos * 4], sizeof(double) * 4);
+ memcpy(pr->partitionData[index]->lg4x_weightExponents,
+ &startExponents[pos * 4], 4 * sizeof(double));
+ }
+
+ changeModelParameters(index, rateNumber, startValues[pos], whichParameterType, tr, pr);
+ }
+ }
+ else
+ {
+ //otherwise we set the value to the optimized value
+ //this used to be a bug in standard RAxML, before I fixed it
+ //I was not using _x[pos] as value that needs to be set
+
+ for(j = 0; j < ll->ld[k].partitions; j++)
+ {
+ int
+ index = ll->ld[k].partitionList[j];
+
+ changeModelParameters(index, rateNumber, _x[pos], whichParameterType, tr, pr);
+
+ if (whichParameterType == LXWEIGHT_F)
+ {
+ if (endLH[pos]
+ > pr->partitionData[index]->lg4x_weightLikelihood)
+ {
+ memcpy(pr->partitionData[index]->lg4x_weightsBuffer,
+ pr->partitionData[index]->lg4x_weights,
+ sizeof(double) * 4);
+ memcpy(
+ pr->partitionData[index]->lg4x_weightExponentsBuffer,
+ pr->partitionData[index]->lg4x_weightExponents,
+ sizeof(double) * 4);
+ pr->partitionData[index]->lg4x_weightLikelihood =
+ endLH[pos];
+ }
+ }
+ if (whichParameterType == LXRATE_F)
+ {
+ memcpy(pr->partitionData[index]->lg4x_weights,
+ pr->partitionData[index]->lg4x_weightsBuffer,
+ sizeof(double) * 4);
+ memcpy(pr->partitionData[index]->lg4x_weightExponents,
+ pr->partitionData[index]->lg4x_weightExponentsBuffer,
+ sizeof(double) * 4);
+ }
+
+ if(whichParameterType == LXRATE_F || whichParameterType == LXWEIGHT_F)
+ scaleLG4X_EIGN(tr, pr, index);
+ }
+ }
+ pos++;
+ }
+ }
+
+#if (defined(_FINE_GRAIN_MPI) || defined(_USE_PTHREADS))
+ if (whichParameterType == LXRATE_F || whichParameterType == LXWEIGHT_F) {
+ pllMasterBarrier(tr, pr, PLL_THREAD_COPY_LG4X_RATES);
+ } else if (whichParameterType == ALPHA_F) {
+ pllMasterBarrier(tr, pr, PLL_THREAD_COPY_ALPHA);
+ } else {
+ pllMasterBarrier(tr, pr, PLL_THREAD_COPY_RATES);
+ }
+
+// switch(whichParameterType)
+// {
+// case FREQ_F:
+// case RATE_F:
+// pllMasterBarrier(tr, pr, PLL_THREAD_COPY_RATES);
+// break;
+// case ALPHA_F:
+// pllMasterBarrier(tr, pr, PLL_THREAD_COPY_ALPHA);
+// break;
+// case LXRATE_F:
+// case LXWEIGHT_F:
+// pllMasterBarrier(tr, pr, PLL_THREAD_COPY_LG4X_RATES);
+// break;
+// default:
+// assert(0);
+// }
+
+#endif
+
+
+ assert(pos == numberOfModels);
+
+ rax_free(startLH);
+ rax_free(endLH);
+ rax_free(_a);
+ rax_free(_b);
+ rax_free(_c);
+ rax_free(_fa);
+ rax_free(_fb);
+ rax_free(_fc);
+ rax_free(_param);
+ rax_free(_x);
+ rax_free(startValues);
+ rax_free(startRates);
+ rax_free(startWeights);
+ rax_free(startExponents);
+
+#ifdef _DEBUG_MOD_OPT
+ pllEvaluateLikelihood (tr, pr, tr->start, PLL_TRUE, PLL_FALSE);
+
+ if(tr->likelihood < initialLH)
+ printf("%f %f\n", tr->likelihood, initialLH);
+ assert(tr->likelihood >= initialLH);
+#endif
+}
+
+//******************** rate optimization functions ***************************************************/
+
+/** @brief Wrapper function for optimizing base frequency rates
+ *
+ * Wrapper function for optimizing base frequency rates of \a numberOfModels partitions.
+ * The function iteratively calls the function \a optParamGeneric for optimizing each of the \a states
+ * parameters
+ *
+ * @param tr
+ * PLL instance
+ *
+ * @param pr
+ * List of partitions
+ *
+ * @param modelEpsilon
+ * Dont know yet
+ *
+ * @param ll
+ * Linkage list
+ *
+ * @param numberOfModels
+ * Number of partitions that we are optimizing
+ *
+ * @param states
+ * Number of states
+ */
+static void optFreqs(pllInstance *tr, partitionList * pr, double modelEpsilon, linkageList *ll, int numberOfModels, int states)
+{
+ int
+ rateNumber;
+
+ double
+ freqMin = -1000000.0,
+ freqMax = 200.0;
+
+ for(rateNumber = 0; rateNumber < states; rateNumber++)
+ optParamGeneric(tr, pr, modelEpsilon, ll, numberOfModels, rateNumber, freqMin, freqMax, FREQ_F);
+}
+
+/** @brief Optimize base frequencies
+ *
+ * Wrapper function for optimizing base frequencies
+ *
+ * @param tr
+ * PLL instance
+ *
+ * @param pr
+ * List of partitions
+ *
+ * @param modelEpsilon
+ *
+ *
+ * @param ll
+ * Linkage list
+ *
+ */
+void pllOptBaseFreqs(pllInstance *tr, partitionList * pr, double modelEpsilon, linkageList *ll)
+{
+ int
+ i,
+ states,
+ dnaPartitions = 0,
+ aaPartitions = 0,
+ binPartitions = 0;
+
+ /* first do DNA */
+
+ /* Set the valid flag in linkage list to PLL_TRUE for all DNA partitions */
+ for(i = 0; ll && i < ll->entries; i++)
+ {
+ switch(pr->partitionData[ll->ld[i].partitionList[0]]->dataType)
+ {
+ case PLL_DNA_DATA:
+ states = pr->partitionData[ll->ld[i].partitionList[0]]->states;
+ if(pr->partitionData[ll->ld[i].partitionList[0]]->optimizeBaseFrequencies)
+ {
+ ll->ld[i].valid = PLL_TRUE;
+ dnaPartitions++;
+ }
+ else
+ ll->ld[i].valid = PLL_FALSE;
+ break;
+ case PLL_BINARY_DATA:
+ case PLL_AA_DATA:
+ ll->ld[i].valid = PLL_FALSE;
+ break;
+ default:
+ assert(0);
+ }
+ }
+
+ /* Optimize the frequency rates of all DNA partitions */
+ if(dnaPartitions > 0)
+ optFreqs(tr, pr, modelEpsilon, ll, dnaPartitions, states);
+
+ /* then AA */
+
+ /* find all partitions that have frequency optimization enabled */
+ for(i = 0; ll && i < ll->entries; i++)
+ {
+ switch(pr->partitionData[ll->ld[i].partitionList[0]]->dataType)
+ {
+ case PLL_AA_DATA:
+ states = pr->partitionData[ll->ld[i].partitionList[0]]->states;
+ if(pr->partitionData[ll->ld[i].partitionList[0]]->optimizeBaseFrequencies)
+ {
+ ll->ld[i].valid = PLL_TRUE;
+ aaPartitions++;
+ }
+ else
+ ll->ld[i].valid = PLL_FALSE;
+ break;
+ case PLL_DNA_DATA:
+ case PLL_BINARY_DATA:
+ ll->ld[i].valid = PLL_FALSE;
+ break;
+ default:
+ assert(0);
+ }
+ }
+
+ if(aaPartitions > 0)
+ optFreqs(tr, pr, modelEpsilon, ll, aaPartitions, states);
+
+ /* then binary */
+ for(i = 0; i < ll->entries; i++)
+ {
+ switch(pr->partitionData[ll->ld[i].partitionList[0]]->dataType)
+ {
+ case PLL_BINARY_DATA:
+ states = pr->partitionData[ll->ld[i].partitionList[0]]->states;
+ if(pr->partitionData[ll->ld[i].partitionList[0]]->optimizeBaseFrequencies)
+ {
+ ll->ld[i].valid = PLL_TRUE;
+ binPartitions++;
+ }
+ else
+ ll->ld[i].valid = PLL_FALSE;
+ break;
+ case PLL_DNA_DATA:
+ case PLL_AA_DATA:
+ case PLL_SECONDARY_DATA:
+ case PLL_SECONDARY_DATA_6:
+ case PLL_SECONDARY_DATA_7:
+ case PLL_GENERIC_32:
+ case PLL_GENERIC_64:
+ ll->ld[i].valid = PLL_FALSE;
+ break;
+ default:
+ assert(0);
+ }
+ }
+
+ if(binPartitions > 0)
+ optFreqs(tr, pr, modelEpsilon, ll, binPartitions, states);
+
+ /* done */
+
+ for(i = 0; ll && i < ll->entries; i++)
+ ll->ld[i].valid = PLL_TRUE;
+}
+
+
+
+/* new version for optimizing rates, an external loop that iterates over the rates */
+/** @brief Wrapper function for optimizing substitution rates
+ *
+ * Wrapper function for optimizing substitution rates of \a numberOfModels partitions.
+ * The function determines the number of free parameters and iteratively calls the
+ * function \a optParamGeneric for optimizing each parameter
+ *
+ * @param tr
+ * PLL instance
+ *
+ * @param pr
+ * List of partitions
+ *
+ * @param modelEpsilon
+ * Dont know yet
+ *
+ * @param ll
+ * Linkage list
+ *
+ * @param numberOfModels
+ * Number of partitions that we are optimizing
+ *
+ * @param states
+ * Number of states
+ */
+static void optRates(pllInstance *tr, partitionList * pr, double modelEpsilon, linkageList *ll, int numberOfModels, int states)
+{
+ int
+ rateNumber,
+ numberOfRates = ((states * states - states) / 2) - 1;
+
+ for(rateNumber = 0; rateNumber < numberOfRates; rateNumber++)
+ optParamGeneric(tr, pr, modelEpsilon, ll, numberOfModels, rateNumber, PLL_RATE_MIN, PLL_RATE_MAX, RATE_F);
+}
+
+
+/* figure out if all AA models have been assigned a joint GTR matrix */
+
+/** @brief Check whether all protein partitions have been assigned a joint GTR matrix
+ *
+ * Check whether there exists at least one protein partition and whether all
+ * protein partitions have been assigned a joint GTR matrix.
+ *
+ * @param pr
+ * List of partitions
+ *
+ * @return
+ * Return \b PLL_TRUE in case there exists at least one protein partition and all of
+ * protein partitions are assigned a joint GTR matrix. Otherwise return \b PLL_FALSE
+ */
+static boolean AAisGTR(partitionList *pr)
+{
+ int i, count = 0;
+
+ for(i = 0; i < pr->numberOfPartitions; i++)
+ {
+ if(pr->partitionData[i]->dataType == PLL_AA_DATA)
+ {
+ count++;
+ if(pr->partitionData[i]->protModels != PLL_GTR)
+ return PLL_FALSE;
+ }
+ }
+
+ if(count == 0)
+ return PLL_FALSE;
+
+ return PLL_TRUE;
+}
+
+
+/* generic substitiution matrix (Q matrix) optimization */
+
+/** @brief Optimize substitution rates
+ *
+ * Generic routine for substitution matrix (Q matrix) optimization
+ *
+ * @param tr
+ * PLL instance
+ *
+ * @param pr
+ * List of partitions
+ *
+ * @param modelEpsilon
+ * Don't know yet
+ *
+ * @param ll
+ * Linkage list
+ */
+void pllOptRatesGeneric(pllInstance *tr, partitionList *pr, double modelEpsilon, linkageList *ll)
+{
+ int
+ i,
+ dnaPartitions = 0,
+ aaPartitions = 0,
+ states = -1;
+
+ /* assumes homogeneous super-partitions, that either contain DNA or AA partitions !*/
+ /* does not check whether AA are all linked */
+
+ /*
+ first optimize all rates in DNA data partition matrices. That's where we use the valid field in the
+ linkage list data structure.
+ */
+
+ for(i = 0; ll && i < ll->entries; i++)
+ {
+ switch(pr->partitionData[ll->ld[i].partitionList[0]]->dataType)
+ {
+ case PLL_DNA_DATA:
+ states = pr->partitionData[ll->ld[i].partitionList[0]]->states;
+ if(pr->partitionData[ll->ld[i].partitionList[0]]->optimizeSubstitutionRates)
+ {
+ ll->ld[i].valid = PLL_TRUE;
+ ++ dnaPartitions;
+ }
+ else
+ ll->ld[i].valid = PLL_FALSE;
+ break;
+ case PLL_BINARY_DATA:
+ case PLL_AA_DATA:
+ case PLL_SECONDARY_DATA:
+ case PLL_SECONDARY_DATA_6:
+ case PLL_SECONDARY_DATA_7:
+ case PLL_GENERIC_32:
+ case PLL_GENERIC_64:
+ ll->ld[i].valid = PLL_FALSE;
+ break;
+ default:
+ assert(0);
+ }
+ }
+
+ /* if we have dna partitions in our dataset, let's optimize all 5 rates in their substitution matrices */
+
+ if(dnaPartitions > 0)
+ optRates(tr, pr, modelEpsilon, ll, dnaPartitions, states);
+
+ /* AA partitions evolving under a GTR model do not need to be linked any more, this responsibility now remains
+ with the library user !
+ */
+
+ for(i = 0; ll && i < ll->entries; i++)
+ {
+ switch(pr->partitionData[ll->ld[i].partitionList[0]]->dataType)
+ {
+ case PLL_AA_DATA:
+ states = pr->partitionData[ll->ld[i].partitionList[0]]->states;
+ if(pr->partitionData[ll->ld[i].partitionList[0]]->optimizeSubstitutionRates)
+ {
+ ll->ld[i].valid = PLL_TRUE;
+ aaPartitions++;
+ }
+ else
+ ll->ld[i].valid = PLL_FALSE;
+ break;
+ case PLL_DNA_DATA:
+ case PLL_BINARY_DATA:
+ case PLL_SECONDARY_DATA:
+ case PLL_SECONDARY_DATA_6:
+ case PLL_SECONDARY_DATA_7:
+ ll->ld[i].valid = PLL_FALSE;
+ break;
+ default:
+ assert(0);
+ }
+ }
+
+ if(aaPartitions > 0)
+ optRates(tr, pr, modelEpsilon, ll, aaPartitions, states);
+
+ /* done with all partitions, so we can set all entries in the linkage list to valid again :-) */
+
+ for(i = 0; ll && i < ll->entries; i++)
+ ll->ld[i].valid = PLL_TRUE;
+}
+
+
+
+
+
+/*********************FUNCTIONS FOR PSR/CAT model of rate heterogeneity ***************************************/
+
+
+
+
+
+
+static int catCompare(const void *p1, const void *p2)
+{
+ rateCategorize *rc1 = (rateCategorize *)p1;
+ rateCategorize *rc2 = (rateCategorize *)p2;
+
+ double i = rc1->accumulatedSiteLikelihood;
+ double j = rc2->accumulatedSiteLikelihood;
+
+ if (i > j)
+ return (1);
+ if (i < j)
+ return (-1);
+ return (0);
+}
+
+
+static void categorizePartition(pllInstance *tr, partitionList *pr, rateCategorize *rc, int model, int lower, int upper)
+{
+ int
+ zeroCounter,
+ i,
+ k;
+
+ double
+ diff,
+ min;
+
+ for (i = lower, zeroCounter = 0; i < upper; i++, zeroCounter++)
+ {
+ double
+ temp = tr->patrat[i];
+
+ int
+ found = 0;
+
+ for(k = 0; k < pr->partitionData[model]->numberOfCategories; k++)
+ {
+ if(temp == rc[k].rate || (fabs(temp - rc[k].rate) < 0.001))
+ {
+ found = 1;
+ tr->rateCategory[i] = k;
+ break;
+ }
+ }
+
+ if(!found)
+ {
+ min = fabs(temp - rc[0].rate);
+ tr->rateCategory[i] = 0;
+
+ for(k = 1; k < pr->partitionData[model]->numberOfCategories; k++)
+ {
+ diff = fabs(temp - rc[k].rate);
+
+ if(diff < min)
+ {
+ min = diff;
+ tr->rateCategory[i] = k;
+ }
+ }
+ }
+ }
+
+ for(k = 0; k < pr->partitionData[model]->numberOfCategories; k++)
+ pr->partitionData[model]->perSiteRates[k] = rc[k].rate;
+}
+
+
+#if (defined(_FINE_GRAIN_MPI) || defined(_USE_PTHREADS))
+
+void optRateCatPthreads(pllInstance *tr, partitionList *pr, double lower_spacing, double upper_spacing, double *lhs, int n, int tid)
+{
+ int
+ model,
+ i;
+
+ for(model = 0; model < pr->numberOfPartitions; model++)
+ {
+ int
+ localIndex = 0;
+
+ boolean
+ execute = ((tr->manyPartitions && isThisMyPartition(pr, tid, model)) || (!tr->manyPartitions));
+
+ if(execute)
+ for(i = pr->partitionData[model]->lower; i < pr->partitionData[model]->upper; i++)
+ {
+ if(tr->manyPartitions || (i % n == tid))
+ {
+
+ double initialRate, initialLikelihood,
+ leftLH, rightLH, leftRate, rightRate, v;
+ const double epsilon = 0.00001;
+ int k;
+
+ tr->patrat[i] = tr->patratStored[i];
+ initialRate = tr->patrat[i];
+
+ initialLikelihood = evaluatePartialGeneric(tr, pr, localIndex, initialRate, model); /* i is real i ??? */
+
+
+ leftLH = rightLH = initialLikelihood;
+ leftRate = rightRate = initialRate;
+
+ k = 1;
+
+ while((initialRate - k * lower_spacing > 0.0001) &&
+ ((v = evaluatePartialGeneric(tr, pr, localIndex, initialRate - k * lower_spacing, model))
+ > leftLH) &&
+ (fabs(leftLH - v) > epsilon))
+ {
+#ifndef WIN32
+ if(isnan(v))
+ assert(0);
+#endif
+
+ leftLH = v;
+ leftRate = initialRate - k * lower_spacing;
+ k++;
+ }
+
+ k = 1;
+
+ while(((v = evaluatePartialGeneric(tr, pr, localIndex, initialRate + k * upper_spacing, model)) > rightLH) &&
+ (fabs(rightLH - v) > epsilon))
+ {
+#ifndef WIN32
+ if(isnan(v))
+ assert(0);
+#endif
+ rightLH = v;
+ rightRate = initialRate + k * upper_spacing;
+ k++;
+ }
+
+ if(rightLH > initialLikelihood || leftLH > initialLikelihood)
+ {
+ if(rightLH > leftLH)
+ {
+ tr->patrat[i] = rightRate;
+ lhs[i] = rightLH;
+ }
+ else
+ {
+ tr->patrat[i] = leftRate;
+ lhs[i] = leftLH;
+ }
+ }
+ else
+ lhs[i] = initialLikelihood;
+
+ tr->patratStored[i] = tr->patrat[i];
+ localIndex++;
+ }
+ }
+ assert(localIndex == pr->partitionData[model]->width);
+ }
+}
+
+
+
+#else
+
+/** @brief Optimize rates for CAT model
+ *
+ * @param tr
+ * PLL instance
+ *
+ * @param pr
+ * List of partitions
+ *
+ * @param model
+ * Partition index
+ *
+ * @param lower_specing
+ *
+ * @param upper_spacing
+ *
+ * @param lhs
+ */
+static void optRateCatModel(pllInstance *tr, partitionList *pr, int model, double lower_spacing, double upper_spacing, double *lhs)
+{
+ int lower = pr->partitionData[model]->lower;
+ int upper = pr->partitionData[model]->upper;
+ int i;
+ for(i = lower; i < upper; i++)
+ {
+ double initialRate, initialLikelihood,
+ leftLH, rightLH, leftRate, rightRate, v;
+ const double epsilon = 0.00001;
+ int k;
+
+ tr->patrat[i] = tr->patratStored[i];
+ initialRate = tr->patrat[i];
+
+ initialLikelihood = evaluatePartialGeneric(tr, pr, i, initialRate, model);
+
+
+ leftLH = rightLH = initialLikelihood;
+ leftRate = rightRate = initialRate;
+
+ k = 1;
+
+ while((initialRate - k * lower_spacing > 0.0001) &&
+ ((v = evaluatePartialGeneric(tr, pr, i, initialRate - k * lower_spacing, model))
+ > leftLH) &&
+ (fabs(leftLH - v) > epsilon))
+ {
+#ifndef WIN32
+ if(isnan(v))
+ assert(0);
+#endif
+
+ leftLH = v;
+ leftRate = initialRate - k * lower_spacing;
+ k++;
+ }
+
+ k = 1;
+
+ while(((v = evaluatePartialGeneric(tr, pr, i, initialRate + k * upper_spacing, model)) > rightLH) &&
+ (fabs(rightLH - v) > epsilon))
+ {
+#ifndef WIN32
+ if(isnan(v))
+ assert(0);
+#endif
+ rightLH = v;
+ rightRate = initialRate + k * upper_spacing;
+ k++;
+ }
+
+ if(rightLH > initialLikelihood || leftLH > initialLikelihood)
+ {
+ if(rightLH > leftLH)
+ {
+ tr->patrat[i] = rightRate;
+ lhs[i] = rightLH;
+ }
+ else
+ {
+ tr->patrat[i] = leftRate;
+ lhs[i] = leftLH;
+ }
+ }
+ else
+ lhs[i] = initialLikelihood;
+
+ tr->patratStored[i] = tr->patrat[i];
+ }
+
+}
+
+
+#endif
+
+
+
+/*
+ set scaleRates to PLL_FALSE everywhere such that
+ per-site rates are not scaled to obtain an overall mean rate
+ of 1.0
+*/
+
+void updatePerSiteRates(pllInstance *tr, partitionList *pr, boolean scaleRates)
+{
+ int
+ i,
+ model;
+
+ if(pr->perGeneBranchLengths && pr->numberOfPartitions > 1)
+ {
+ for(model = 0; model < pr->numberOfPartitions; model++)
+ {
+ int
+ lower = pr->partitionData[model]->lower,
+ upper = pr->partitionData[model]->upper;
+
+ if(scaleRates)
+ {
+ double
+ scaler = 0.0,
+ accRat = 0.0;
+
+ int
+ accWgt = 0;
+
+ for(i = lower; i < upper; i++)
+ {
+ int
+ w = tr->aliaswgt[i];
+
+ double
+ rate = pr->partitionData[model]->perSiteRates[tr->rateCategory[i]];
+
+ assert(0 <= tr->rateCategory[i] && tr->rateCategory[i] < tr->maxCategories);
+
+ accWgt += w;
+
+ accRat += (w * rate);
+ }
+
+ accRat /= ((double)accWgt);
+
+ scaler = 1.0 / ((double)accRat);
+
+ for(i = 0; i < pr->partitionData[model]->numberOfCategories; i++)
+ pr->partitionData[model]->perSiteRates[i] *= scaler;
+
+ accRat = 0.0;
+
+ for(i = lower; i < upper; i++)
+ {
+ int
+ w = tr->aliaswgt[i];
+
+ double
+ rate = pr->partitionData[model]->perSiteRates[tr->rateCategory[i]];
+
+ assert(0 <= tr->rateCategory[i] && tr->rateCategory[i] < tr->maxCategories);
+
+ accRat += (w * rate);
+ }
+
+ accRat /= ((double)accWgt);
+
+ assert(PLL_ABS(1.0 - accRat) < 1.0E-5);
+ }
+ else
+ {
+ double
+ accRat = 0.0;
+
+ int
+ accWgt = 0;
+
+ for(i = lower; i < upper; i++)
+ {
+ int
+ w = tr->aliaswgt[i];
+
+ double
+ rate = pr->partitionData[model]->perSiteRates[tr->rateCategory[i]];
+
+ assert(0 <= tr->rateCategory[i] && tr->rateCategory[i] < tr->maxCategories);
+
+ accWgt += w;
+
+ accRat += (w * rate);
+ }
+
+ accRat /= ((double)accWgt);
+
+ assert(PLL_ABS(1.0 - accRat) < 1.0E-5);
+ }
+
+
+#if NOT (defined(_FINE_GRAIN_MPI) || defined(_USE_PTHREADS))
+ {
+ int
+ localCount = 0;
+
+ for(i = lower, localCount = 0; i < upper; i++, localCount++)
+ {
+ pr->partitionData[model]->rateCategory[localCount] = tr->rateCategory[i];
+ }
+ }
+#endif
+ }
+ }
+ else
+ {
+ int
+ accWgt = 0;
+
+ double
+ scaler = 0.0,
+ accRat = 0.0;
+
+ if(scaleRates)
+ {
+ for(model = 0, accRat = 0.0, accWgt = 0; model < pr->numberOfPartitions; model++)
+ {
+ int
+ localCount = 0,
+ lower = pr->partitionData[model]->lower,
+ upper = pr->partitionData[model]->upper;
+
+ for(i = lower, localCount = 0; i < upper; i++, localCount++)
+ {
+ int
+ w = tr->aliaswgt[i];
+
+ double
+ rate = pr->partitionData[model]->perSiteRates[tr->rateCategory[i]];
+
+ assert(0 <= tr->rateCategory[i] && tr->rateCategory[i] < tr->maxCategories);
+
+ accWgt += w;
+
+ accRat += (w * rate);
+ }
+ }
+
+ accRat /= ((double)accWgt);
+
+ scaler = 1.0 / ((double)accRat);
+
+ for(model = 0; model < pr->numberOfPartitions; model++)
+ {
+ for(i = 0; i < pr->partitionData[model]->numberOfCategories; i++)
+ pr->partitionData[model]->perSiteRates[i] *= scaler;
+ }
+
+ for(model = 0, accRat = 0.0; model < pr->numberOfPartitions; model++)
+ {
+ int
+ localCount = 0,
+ lower = pr->partitionData[model]->lower,
+ upper = pr->partitionData[model]->upper;
+
+ for(i = lower, localCount = 0; i < upper; i++, localCount++)
+ {
+ int
+ w = tr->aliaswgt[i];
+
+ double
+ rate = pr->partitionData[model]->perSiteRates[tr->rateCategory[i]];
+
+ assert(0 <= tr->rateCategory[i] && tr->rateCategory[i] < tr->maxCategories);
+
+ accRat += (w * rate);
+ }
+ }
+
+ accRat /= ((double)accWgt);
+
+ assert(PLL_ABS(1.0 - accRat) < 1.0E-5);
+ }
+ else
+ {
+ for(model = 0, accRat = 0.0, accWgt = 0; model < pr->numberOfPartitions; model++)
+ {
+ int
+ localCount = 0,
+ lower = pr->partitionData[model]->lower,
+ upper = pr->partitionData[model]->upper;
+
+ for(i = lower, localCount = 0; i < upper; i++, localCount++)
+ {
+ int
+ w = tr->aliaswgt[i];
+
+ double
+ rate = pr->partitionData[model]->perSiteRates[tr->rateCategory[i]];
+
+ assert(0 <= tr->rateCategory[i] && tr->rateCategory[i] < tr->maxCategories);
+
+ accWgt += w;
+
+ accRat += (w * rate);
+ }
+ }
+
+ accRat /= (double)accWgt;
+
+ assert(PLL_ABS(1.0 - accRat) < 1.0E-5);
+ }
+
+ /*
+ for(model = 0; model < pr->numberOfPartitions; model++)
+ {
+ int
+ localCount = 0,
+ lower = pr->partitionData[model]->lower,
+ upper = pr->partitionData[model]->upper;
+
+ } */
+#if NOT (defined(_FINE_GRAIN_MPI) || defined(_USE_PTHREADS))
+ for(model = 0; model < pr->numberOfPartitions; model++)
+ {
+ int
+ localCount,
+ lower = pr->partitionData[model]->lower,
+ upper = pr->partitionData[model]->upper;
+
+ for(i = lower, localCount = 0; i < upper; i++, localCount++)
+ pr->partitionData[model]->rateCategory[localCount] = tr->rateCategory[i];
+ }
+#endif
+ }
+
+#if (defined(_FINE_GRAIN_MPI) || defined(_USE_PTHREADS))
+ pllMasterBarrier(tr, pr, PLL_THREAD_COPY_RATE_CATS);
+#endif
+}
+
+/** @brief Optimize rate categories for CAT model
+ *
+ * Optimize rate categories for CAT model
+ *
+ * @param tr
+ * PLL instance
+ *
+ * @param pr
+ * List of partitions
+ *
+ * @param _maxCategories
+ * Number of categories
+ */
+static void optimizeRateCategories(pllInstance *tr, partitionList *pr, int _maxCategories)
+{
+ assert(_maxCategories > 0);
+
+ if(_maxCategories > 1)
+ {
+ double
+ temp,
+ lower_spacing,
+ upper_spacing,
+ initialLH = tr->likelihood,
+ *ratStored = (double *)rax_malloc(sizeof(double) * tr->originalCrunchedLength),
+ /**lhs = (double *)malloc(sizeof(double) * tr->originalCrunchedLength),*/
+ **oldCategorizedRates = (double **)rax_malloc(sizeof(double *) * pr->numberOfPartitions);
+
+ int
+ i,
+ k,
+ maxCategories = _maxCategories,
+ *oldCategory = (int *)rax_malloc(sizeof(int) * tr->originalCrunchedLength),
+ model,
+ *oldNumbers = (int *)rax_malloc(sizeof(int) * pr->numberOfPartitions);
+
+ assert(isTip(tr->start->number, tr->mxtips));
+
+ pllEvaluateLikelihood (tr, pr, tr->start, PLL_TRUE, PLL_FALSE);
+
+ if(tr->optimizeRateCategoryInvocations == 1)
+ {
+ lower_spacing = 0.5 / ((double)(tr->optimizeRateCategoryInvocations));
+ upper_spacing = 1.0 / ((double)(tr->optimizeRateCategoryInvocations));
+ }
+ else
+ {
+ lower_spacing = 0.05 / ((double)(tr->optimizeRateCategoryInvocations));
+ upper_spacing = 0.1 / ((double)(tr->optimizeRateCategoryInvocations));
+ }
+
+ if(lower_spacing < 0.001)
+ lower_spacing = 0.001;
+
+ if(upper_spacing < 0.001)
+ upper_spacing = 0.001;
+
+ tr->optimizeRateCategoryInvocations = tr->optimizeRateCategoryInvocations + 1;
+
+ memcpy(oldCategory, tr->rateCategory, sizeof(int) * tr->originalCrunchedLength);
+ memcpy(ratStored, tr->patratStored, sizeof(double) * tr->originalCrunchedLength);
+
+ for(model = 0; model < pr->numberOfPartitions; model++)
+ {
+ oldNumbers[model] = pr->partitionData[model]->numberOfCategories;
+
+ oldCategorizedRates[model] = (double *)rax_malloc(sizeof(double) * tr->maxCategories);
+
+ memcpy(oldCategorizedRates[model], pr->partitionData[model]->perSiteRates, tr->maxCategories * sizeof(double));
+ }
+
+#if (defined(_FINE_GRAIN_MPI) || defined(_USE_PTHREADS))
+ /*tr->lhs = lhs;*/
+ tr->lower_spacing = lower_spacing;
+ tr->upper_spacing = upper_spacing;
+ pllMasterBarrier(tr, pr, PLL_THREAD_RATE_CATS);
+#else
+ for(model = 0; model < pr->numberOfPartitions; model++)
+ optRateCatModel(tr, pr, model, lower_spacing, upper_spacing, tr->lhs);
+#endif
+
+ for(model = 0; model < pr->numberOfPartitions; model++)
+ {
+ int
+ where = 1,
+ found = 0,
+ width = pr->partitionData[model]->upper - pr->partitionData[model]->lower,
+ upper = pr->partitionData[model]->upper,
+ lower = pr->partitionData[model]->lower;
+
+ rateCategorize
+ *rc = (rateCategorize *)rax_malloc(sizeof(rateCategorize) * width);
+
+ for (i = 0; i < width; i++)
+ {
+ rc[i].accumulatedSiteLikelihood = 0.0;
+ rc[i].rate = 0.0;
+ }
+
+ rc[0].accumulatedSiteLikelihood = tr->lhs[lower];
+ rc[0].rate = tr->patrat[lower];
+
+ tr->rateCategory[lower] = 0;
+
+ for (i = lower + 1; i < upper; i++)
+ {
+ temp = tr->patrat[i];
+ found = 0;
+
+ for(k = 0; k < where; k++)
+ {
+ if(temp == rc[k].rate || (fabs(temp - rc[k].rate) < 0.001))
+ {
+ found = 1;
+ rc[k].accumulatedSiteLikelihood += tr->lhs[i];
+ break;
+ }
+ }
+
+ if(!found)
+ {
+ rc[where].rate = temp;
+ rc[where].accumulatedSiteLikelihood += tr->lhs[i];
+ where++;
+ }
+ }
+
+ qsort(rc, where, sizeof(rateCategorize), catCompare);
+
+ if(where < maxCategories)
+ {
+ pr->partitionData[model]->numberOfCategories = where;
+ categorizePartition(tr, pr, rc, model, lower, upper);
+ }
+ else
+ {
+ pr->partitionData[model]->numberOfCategories = maxCategories;
+ categorizePartition(tr, pr, rc, model, lower, upper);
+ }
+
+ rax_free(rc);
+ }
+
+ updatePerSiteRates(tr, pr, PLL_TRUE);
+
+ pllEvaluateLikelihood (tr, pr, tr->start, PLL_TRUE, PLL_FALSE);
+
+ if(tr->likelihood < initialLH)
+ {
+ for(model = 0; model < pr->numberOfPartitions; model++)
+ {
+ pr->partitionData[model]->numberOfCategories = oldNumbers[model];
+ memcpy(pr->partitionData[model]->perSiteRates, oldCategorizedRates[model], tr->maxCategories * sizeof(double));
+ }
+
+ memcpy(tr->patratStored, ratStored, sizeof(double) * tr->originalCrunchedLength);
+ memcpy(tr->rateCategory, oldCategory, sizeof(int) * tr->originalCrunchedLength);
+
+ updatePerSiteRates(tr, pr, PLL_FALSE);
+
+ pllEvaluateLikelihood (tr, pr, tr->start, PLL_TRUE, PLL_FALSE);
+
+ /* printf("REVERT: %1.40f %1.40f\n", initialLH, tr->likelihood); */
+
+ assert(initialLH == tr->likelihood);
+ }
+
+ for(model = 0; model < pr->numberOfPartitions; model++)
+ rax_free(oldCategorizedRates[model]);
+
+ rax_free(oldCategorizedRates);
+ rax_free(oldCategory);
+ rax_free(ratStored);
+ /* rax_free(lhs); */
+ rax_free(oldNumbers);
+ }
+}
+
+
+/************************* end of functions for CAT model of rate heterogeneity */
+
+
+
+
+/*****************************************************************************************************/
+
+/* reset all branche lengths in tree to default values */
+
+/** @brief Reset all branch lengths to default values
+
+ Reset all branch lengths in the tree instance to default values (\b PLL_DEFAULTZ)
+
+ @param tr
+ PLL instance
+ */
+void resetBranches(pllInstance *tr)
+{
+ nodeptr p, q;
+ int nodes, i;
+
+ nodes = tr->mxtips + 3 * (tr->mxtips - 2);
+ p = tr->nodep[1];
+ while (nodes-- > 0)
+ {
+ for(i = 0; i < PLL_NUM_BRANCHES; i++)
+ p->z[i] = PLL_DEFAULTZ;
+
+ q = p->next;
+ while(q != p)
+ {
+ for(i = 0; i < PLL_NUM_BRANCHES; i++)
+ q->z[i] = PLL_DEFAULTZ;
+ q = q->next;
+ }
+ p++;
+ }
+}
+
+/**
+ * @brief Adjust frequencies in case some base frequency is close to zero.
+ */
+static void smoothFrequencies(double *frequencies, int numberOfFrequencies) {
+ int countScale = 0, l, loopCounter = 0;
+
+ for (l = 0; l < numberOfFrequencies; l++)
+ if (frequencies[l] < PLL_FREQ_MIN)
+ countScale++;
+
+ if (countScale > 0) {
+ while (countScale > 0) {
+ double correction = 0.0, factor = 1.0;
+
+ for (l = 0; l < numberOfFrequencies; l++) {
+ if (frequencies[l] == 0.0)
+ correction += PLL_FREQ_MIN;
+ else if (frequencies[l] < PLL_FREQ_MIN) {
+ correction += (PLL_FREQ_MIN - frequencies[l]);
+ factor -= (PLL_FREQ_MIN - frequencies[l]);
+ }
+ }
+
+ countScale = 0;
+
+ for (l = 0; l < numberOfFrequencies; l++) {
+ if (frequencies[l] >= PLL_FREQ_MIN)
+ frequencies[l] = frequencies[l] - (frequencies[l] * correction * factor);
+ else
+ frequencies[l] = PLL_FREQ_MIN;
+
+ if (frequencies[l] < PLL_FREQ_MIN)
+ countScale++;
+ }
+ assert(loopCounter < 100);
+ loopCounter++;
+ }
+ }
+}
+
+/**
+ * @brief Evaluate all possible protein models
+ */
+static void optimizeProteinModels(pllInstance *tr, partitionList * pr, int *bestIndex, double *bestScores, boolean empiricalFreqs)
+{
+ int modelIndex, partitionIndex,
+ numProteinModels = PLL_AUTO;
+
+ for (partitionIndex = 0; partitionIndex < pr->numberOfPartitions; partitionIndex++) {
+ bestIndex[partitionIndex] = -1;
+ bestScores[partitionIndex] = PLL_UNLIKELY;
+ }
+
+ if (empiricalFreqs) {
+ double ** freqs = pllBaseFrequenciesInstance(tr, pr);
+ for (partitionIndex = 0; partitionIndex < pr->numberOfPartitions; partitionIndex++) {
+ smoothFrequencies(freqs[partitionIndex], PLL_NUM_AA_STATES);
+ memcpy(pr->partitionData[partitionIndex]->empiricalFrequencies, freqs[partitionIndex], PLL_NUM_AA_STATES*sizeof(double));
+ }
+ free(freqs);
+ }
+
+ for (modelIndex = 0; modelIndex < numProteinModels; modelIndex++) {
+ for (partitionIndex = 0; partitionIndex < pr->numberOfPartitions; partitionIndex++) {
+ if (pr->partitionData[partitionIndex]->protModels == PLL_AUTO) {
+
+ pr->partitionData[partitionIndex]->autoProtModels = modelIndex;
+ pr->partitionData[partitionIndex]->protUseEmpiricalFreqs =
+ empiricalFreqs;
+
+ assert(!pr->partitionData[partitionIndex]->optimizeBaseFrequencies);
+
+ pllInitReversibleGTR(tr, pr, partitionIndex);
+ }
+ }
+
+#if (defined(_FINE_GRAIN_MPI) || defined(_USE_PTHREADS))
+ pllMasterBarrier (tr, pr, PLL_THREAD_COPY_RATES);
+#endif
+
+ /* optimize branch lengths */
+ resetBranches(tr);
+ pllEvaluateLikelihood(tr, pr, tr->start, PLL_TRUE, PLL_FALSE);
+ pllOptimizeBranchLengths(tr, pr, 16);
+
+ for (partitionIndex = 0; partitionIndex < pr->numberOfPartitions; partitionIndex++) {
+ if (pr->partitionData[partitionIndex]->protModels == PLL_AUTO) {
+ if (pr->partitionData[partitionIndex]->partitionLH > bestScores[partitionIndex]) {
+ /* improved best score */
+ bestScores[partitionIndex] = pr->partitionData[partitionIndex]->partitionLH;
+ bestIndex[partitionIndex] = modelIndex;
+ }
+ }
+ }
+ }
+}
+
+/*
+ automatically compute the best protein substitution model for the dataset at hand.
+ */
+
+/** @brief Compute the best protein substitution model
+ *
+ * Automatically compute the best protein substitution model for the dataset
+ * at hand
+ *
+ * @param tr
+ * The PLL instance
+ *
+ * @param pr
+ * List of partitions
+ *
+ */
+static void autoProtein(pllInstance *tr, partitionList *pr)
+{
+ int countAutos = 0, partitionIndex;
+
+ /* count the number of partitions with model set to PLL_AUTO */
+ for (partitionIndex = 0; partitionIndex < pr->numberOfPartitions; partitionIndex++)
+ if (pr->partitionData[partitionIndex]->protModels == PLL_AUTO)
+ countAutos++;
+
+ /* if there are partitions with model set to PLL_AUTO compute the best model */
+ if (countAutos > 0) {
+ int *bestIndex = (int*) rax_malloc(
+ sizeof(int) * pr->numberOfPartitions),
+ *bestIndexEmpFreqs = (int*) rax_malloc(
+ sizeof(int) * pr->numberOfPartitions),
+ *oldIndex =
+ (int*) rax_malloc(sizeof(int) * pr->numberOfPartitions);
+
+ boolean *oldFreqs = (boolean*) malloc(
+ sizeof(boolean) * pr->numberOfPartitions);
+
+ double startLH,
+ *bestScores = (double*) rax_malloc(
+ sizeof(double) * pr->numberOfPartitions),
+ *bestScoresEmpFreqs = (double*) rax_malloc(
+ sizeof(double) * pr->numberOfPartitions);
+
+ topolRELL_LIST *rl = (topolRELL_LIST *) rax_malloc(
+ sizeof(topolRELL_LIST));
+
+ initTL(rl, tr, 1);
+ saveTL(rl, tr, 0);
+
+ pllEvaluateLikelihood(tr, pr, tr->start, PLL_TRUE, PLL_FALSE);
+
+ /* store the initial likelihood of the tree with the currently assigned protein models */
+ startLH = tr->likelihood;
+
+ /* save the currently assigned protein model for each PLL_AUTO partition */
+ for (partitionIndex = 0; partitionIndex < pr->numberOfPartitions; partitionIndex++) {
+ oldIndex[partitionIndex] = pr->partitionData[partitionIndex]->autoProtModels;
+ oldFreqs[partitionIndex] = pr->partitionData[partitionIndex]->protUseEmpiricalFreqs;
+ bestIndex[partitionIndex] = -1;
+ bestScores[partitionIndex] = PLL_UNLIKELY;
+ }
+
+ /* evaluate all models with fixed base frequencies */
+ optimizeProteinModels(tr, pr, bestIndex, bestScores, PLL_FALSE);
+ /* evaluate all models with fixed empirical frequencies */
+ optimizeProteinModels(tr, pr, bestIndexEmpFreqs, bestScoresEmpFreqs, PLL_TRUE);
+
+ /* model selection */
+ for (partitionIndex = 0; partitionIndex < pr->numberOfPartitions; partitionIndex++) {
+ if (pr->partitionData[partitionIndex]->protModels == PLL_AUTO) {
+ int bestIndexFixed = bestIndex[partitionIndex],
+ bestIndexEmp = bestIndexEmpFreqs[partitionIndex];
+
+ double bestLhFixed = bestScores[partitionIndex],
+ bestLhEmp = bestScoresEmpFreqs[partitionIndex],
+ samples = 0.0,
+ freeParamsFixed = 0.0,
+ freeParamsEmp = 0.0;
+
+ samples = pr->partitionData[partitionIndex]->partitionWeight;
+ assert(samples > 0.0 && samples >= pr->partitionData[partitionIndex]->width);
+
+ assert(tr->ntips == tr->mxtips);
+ freeParamsFixed = freeParamsEmp = (2 * tr->ntips - 3);
+ freeParamsEmp += 19.0;
+
+ switch (tr->rateHetModel) {
+ case PLL_CAT:
+ freeParamsFixed +=
+ (double) pr->partitionData[partitionIndex]->numberOfCategories;
+ freeParamsEmp +=
+ (double) pr->partitionData[partitionIndex]->numberOfCategories;
+ break;
+ case PLL_GAMMA:
+ freeParamsFixed += 1.0;
+ freeParamsEmp += 1.0;
+ break;
+ default:
+ assert(0);
+ }
+
+ switch (tr->autoProteinSelectionType) {
+ case PLL_AUTO_ML:
+ if (bestLhFixed > bestLhEmp) {
+ pr->partitionData[partitionIndex]->autoProtModels =
+ bestIndexFixed;
+ pr->partitionData[partitionIndex]->protUseEmpiricalFreqs = 0;
+ } else {
+ pr->partitionData[partitionIndex]->autoProtModels = bestIndexEmp;
+ pr->partitionData[partitionIndex]->protUseEmpiricalFreqs = 1;
+ }
+ break;
+ case PLL_AUTO_BIC: {
+ //BIC: -2 * lnL + k * ln(n)
+ double bicFixed = -2.0 * bestLhFixed
+ + freeParamsFixed * log(samples),
+ bicEmp = -2.0
+ * bestLhEmp + freeParamsEmp * log(samples);
+
+ if (bicFixed < bicEmp) {
+ pr->partitionData[partitionIndex]->autoProtModels =
+ bestIndexFixed;
+ pr->partitionData[partitionIndex]->protUseEmpiricalFreqs = 0;
+ } else {
+ pr->partitionData[partitionIndex]->autoProtModels = bestIndexEmp;
+ pr->partitionData[partitionIndex]->protUseEmpiricalFreqs = 1;
+ }
+ }
+ break;
+ case PLL_AUTO_AIC: {
+ //AIC: 2 * (k - lnL)
+ double aicFixed = 2.0 * (freeParamsFixed - bestLhFixed),
+ aicEmp = 2.0 * (freeParamsEmp - bestLhEmp);
+
+ if (aicFixed < aicEmp) {
+ pr->partitionData[partitionIndex]->autoProtModels =
+ bestIndexFixed;
+ pr->partitionData[partitionIndex]->protUseEmpiricalFreqs = 0;
+ } else {
+ pr->partitionData[partitionIndex]->autoProtModels = bestIndexEmp;
+ pr->partitionData[partitionIndex]->protUseEmpiricalFreqs = 1;
+ }
+ }
+ break;
+ case PLL_AUTO_AICC: {
+ //AICc: AIC + (2 * k * (k + 1))/(n - k - 1)
+ double aiccFixed, aiccEmp;
+
+ /*
+ * Even though samples and freeParamsFixed are fp variables, they are actually integers.
+ * That's why we are comparing with a 0.5 threshold.
+ */
+
+ if (fabs(samples - freeParamsFixed - 1.0) < 0.5)
+ aiccFixed = 0.0;
+ else
+ aiccFixed = (2.0 * (freeParamsFixed - bestLhFixed))
+ + ((2.0 * freeParamsFixed
+ * (freeParamsFixed + 1.0))
+ / (samples - freeParamsFixed - 1.0));
+
+ if (fabs(samples - freeParamsEmp - 1.0) < 0.5)
+ aiccEmp = 0.0;
+ else
+ aiccEmp = (2.0 * (freeParamsEmp - bestLhEmp))
+ + ((2.0 * freeParamsEmp * (freeParamsEmp + 1.0))
+ / (samples - freeParamsEmp - 1.0));
+
+ if (aiccFixed < aiccEmp) {
+ pr->partitionData[partitionIndex]->autoProtModels =
+ bestIndexFixed;
+ pr->partitionData[partitionIndex]->protUseEmpiricalFreqs = 0;
+ } else {
+ pr->partitionData[partitionIndex]->autoProtModels = bestIndexEmp;
+ pr->partitionData[partitionIndex]->protUseEmpiricalFreqs = 1;
+ }
+ }
+ break;
+ default:
+ assert(0);
+ }
+
+ pllInitReversibleGTR(tr, pr, partitionIndex);
+ }
+ }
+
+ resetBranches(tr);
+ pllEvaluateLikelihood(tr, pr, tr->start, PLL_TRUE, PLL_FALSE);
+ pllOptimizeBranchLengths(tr, pr, 64);
+
+ /* set the protein model of PLL_AUTO partitions to the best computed and reset model parameters */
+ for (partitionIndex = 0; partitionIndex < pr->numberOfPartitions; partitionIndex++) {
+ if (pr->partitionData[partitionIndex]->protModels == PLL_AUTO) {
+ pr->partitionData[partitionIndex]->autoProtModels = bestIndex[partitionIndex];
+ pllInitReversibleGTR(tr, pr, partitionIndex);
+ }
+ }
+
+#if (defined(_FINE_GRAIN_MPI) || defined(_USE_PTHREADS))
+ pllMasterBarrier(tr, pr, PLL_THREAD_COPY_RATES);
+#endif
+
+ /* compute again the likelihood of the tree */
+ resetBranches(tr);
+ pllEvaluateLikelihood(tr, pr, tr->start, PLL_TRUE, PLL_FALSE);
+ pllOptimizeBranchLengths(tr, pr, 64);
+
+ /* check if the likelihood of the tree with the new protein models assigned to PLL_AUTO partitions is better than the with the old protein models */
+ if (tr->likelihood < startLH) {
+ for (partitionIndex = 0; partitionIndex < pr->numberOfPartitions; partitionIndex++) {
+ if (pr->partitionData[partitionIndex]->protModels == PLL_AUTO) {
+ pr->partitionData[partitionIndex]->autoProtModels = oldIndex[partitionIndex];
+ pllInitReversibleGTR(tr, pr, partitionIndex);
+ }
+ }
+
+ //this barrier needs to be called in the library
+ //#ifdef _USE_PTHREADS
+ //pllMasterBarrier(tr, pr, PLL_THREAD_COPY_RATES);
+ //#endif
+
+ /* Restore the topology. rl holds the topology before the optimization. However,
+ since the topology doesn't change - only the branch lengths do - maybe we
+ could write a new routine that will store only the branch lengths and restore them */
+ restoreTL(rl, tr, 0,
+ pr->perGeneBranchLengths ? pr->numberOfPartitions : 1);
+ pllEvaluateLikelihood(tr, pr, tr->start, PLL_TRUE, PLL_FALSE);
+ }
+
+ assert(tr->likelihood >= startLH);
+
+ freeTL(rl);
+ rax_free(rl);
+
+ rax_free(oldIndex);
+ rax_free(bestIndex);
+ rax_free(bestIndexEmpFreqs);
+ rax_free(bestScores);
+ rax_free(bestScoresEmpFreqs);
+ }
+}
+
+static void checkTolerance(double l1, double l2)
+{
+ if(l1 < l2)
+ {
+ double
+ tolerance = fabs(PLL_MAX(l1, l2) * 1e-12);
+
+ if(fabs(l1 - l2) > PLL_MIN(0.1, tolerance))
+ {
+ printf("Likelihood problem in model optimization l1: %1.40f l2: %1.40f tolerance: %1.40f\n", l1, l2, tolerance);
+ assert(0);
+ }
+ }
+}
+
+/* iterative procedure for optimizing all model parameters */
+
+/* @brief Optimize all model parameters
+ *
+ * Iterative procedure for optimizing all model parameters
+ *
+ * @param tr
+ * PLL instance
+ *
+ * @param pr
+ * List of partitions
+ *
+ * @param likelihoodEpsilon
+ * Optimize model parameters until we get a difference of \a likelihoodEpsilon
+ *
+ * @todo
+ * Describe likelihoodEpsilon. Understand the TODO marked blocks.
+ */
+void modOpt(pllInstance *tr, partitionList *pr, double likelihoodEpsilon)
+{
+ int catOpt = 0;
+ double
+ inputLikelihood,
+ currentLikelihood,
+ modelEpsilon;
+
+ /* linkage lists for alpha, p-invar has actually been ommitted in this version of the code
+ and the GTR subst matrices */
+
+ linkageList
+ *alphaList = pr->alphaList,
+ *rateList = pr->rateList,
+ *freqList = pr->freqList;
+
+ modelEpsilon = 0.0001;
+
+ // test code for library
+ if (0)
+ {
+
+ //assuming that we have three partitions for testing here
+
+ //alphaList = initLinkageListString("0,1,2", pr);
+ //rateList = initLinkageListString("0,1,1", pr);
+
+ //init_Q_MatrixSymmetries("0,1,2,3,4,5", pr, 0);
+ //init_Q_MatrixSymmetries("0,1,2,3,4,4", pr, 1);
+ //init_Q_MatrixSymmetries("0,1,1,2,3,4", pr, 2);
+
+ //function that checks that partitions that have linked Q matrices as in our example above
+ //will not have different configurations of the Q matrix as set by the init_Q_MatrixSymmetries() function
+ //e.g., on would have HKY and one would have GTR, while the user claimes that they are linked
+ //in our example, the Q matrices of partitions 1 and 2 are linked
+ //but we set different matrix symmetries via
+ // init_Q_MatrixSymmetries("0,1,2,3,4,4", tr, 1);
+ // and
+ // init_Q_MatrixSymmetries("0,1,1,2,3,4", tr, 2);
+ //
+ //the function just let's assertions fail for the time being .....
+
+ //checkMatrixSymnmetriesAndLinkage(pr, rateList);
+
+ /* alpha parameters and p-invar parameters are unlinked.
+ this is the point where I actually hard-coded this in RAxML */
+
+ /* call the dedicated function for linking the GTR matrix across all AA data partitions
+ If we have only DNA data all GTR matrix estimates will be unlinked.
+ */
+ }
+ else
+ {
+ //alphaList = initLinkageList(unlinked, pr);
+ //freqList = initLinkageList(unlinked, pr);
+ //rateList = initLinkageListGTR(pr);
+ }
+
+ tr->start = tr->nodep[1];
+
+ /* This check is here to make sure that the likelihood
+ computed prior to entering modOpt() is consistent
+ with the likelihood when entering modOpt().
+ This allows us to ensure that we didn't forget to update anything prior
+ to entereing this function.
+ */
+ inputLikelihood = tr->likelihood;
+ pllEvaluateLikelihood (tr, pr, tr->start, PLL_TRUE, PLL_FALSE);
+ assert (inputLikelihood == tr->likelihood);
+
+ do
+ {
+ //printBothOpen("cur LH: %f\n", tr->likelihood);
+ currentLikelihood = tr->likelihood;
+
+#ifdef _DEBUG_MOD_OPT
+ printf ("start: %f\n", currentLikelihood);
+#endif
+
+ pllOptRatesGeneric(tr, pr, modelEpsilon, rateList);
+
+ pllEvaluateLikelihood (tr, pr, tr->start, PLL_TRUE, PLL_FALSE);
+
+#ifdef _DEBUG_MOD_OPT
+ printf ("after rates %f\n", tr->likelihood);
+#endif
+
+ autoProtein(tr, pr);
+
+ pllOptimizeBranchLengths(tr, pr, 2); // 0.0625 * 32 = 2.0
+
+#ifdef _DEBUG_MOD_OPT
+ pllEvaluateLikelihood (tr, pr, tr->start, PLL_TRUE, PLL_FALSE);
+ printf("after br-len 1 %f\n", tr->likelihood);
+#endif
+
+ pllEvaluateLikelihood (tr, pr, tr->start, PLL_TRUE, PLL_FALSE);
+
+ pllOptBaseFreqs(tr, pr, modelEpsilon, freqList);
+
+ pllEvaluateLikelihood (tr, pr, tr->start, PLL_TRUE, PLL_FALSE);
+
+ pllOptimizeBranchLengths(tr, pr, 2); // 0.0625 * 32 = 2.0
+
+#ifdef _DEBUG_MOD_OPT
+ pllEvaluateLikelihood (tr, pr, tr->start, PLL_TRUE, PLL_FALSE);
+ printf("after pllOptBaseFreqs 1 %f\n", tr->likelihood);
+#endif
+
+ switch(tr->rateHetModel)
+ {
+ case PLL_GAMMA:
+ pllOptAlphasGeneric (tr, pr, modelEpsilon, alphaList);
+ pllEvaluateLikelihood (tr, pr, tr->start, PLL_TRUE, PLL_FALSE);
+
+#ifdef _DEBUG_MOD_OPT
+ printf("after alphas %f\n", tr->likelihood);
+#endif
+
+ pllOptimizeBranchLengths(tr, pr, 3); // 0.1 * 32 = 3.2
+
+#ifdef _DEBUG_MOD_OPT
+ pllEvaluateLikelihood (tr, pr, tr->start, PLL_TRUE, PLL_FALSE);
+ printf("after br-len 2 %f\n", tr->likelihood);
+#endif
+ break;
+ case PLL_CAT:
+ if(catOpt < 3)
+ {
+ pllEvaluateLikelihood (tr, pr, tr->start, PLL_TRUE, PLL_FALSE);
+ optimizeRateCategories(tr, pr, tr->categories);
+#ifdef _DEBUG_MOD_OPT
+ pllEvaluateLikelihood (tr, pr, tr->start, PLL_TRUE, PLL_FALSE);
+ printf("after cat-opt %f\n", tr->likelihood);
+#endif
+ catOpt++;
+ }
+ break;
+ default:
+ assert(0);
+ }
+
+ checkTolerance(tr->likelihood, currentLikelihood);
+
+ /*
+ if(tr->likelihood < currentLikelihood)
+ {
+ printf("%.20f %.20f\n", tr->likelihood, currentLikelihood);
+ printf("Difference: %.20f\n",tr->likelihood - currentLikelihood);
+ }
+ assert (tr->likelihood - currentLikelihood > 0.000000000000001);
+ //assert(tr->likelihood > currentLikelihood);
+ */
+
+ }
+ while(fabs(currentLikelihood - tr->likelihood) > likelihoodEpsilon);
+
+
+}
+
diff --git a/src/parsePartition.c b/src/parsePartition.c
new file mode 100644
index 0000000..f59fdec
--- /dev/null
+++ b/src/parsePartition.c
@@ -0,0 +1,394 @@
+/**
+ * PLL (version 1.0.0) a software library for phylogenetic inference
+ * Copyright (C) 2013 Tomas Flouri and Alexandros Stamatakis
+ *
+ * Derived from
+ * RAxML-HPC, a program for sequential and parallel estimation of phylogenetic
+ * trees by Alexandros Stamatakis
+ *
+ * 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 3 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, see <http://www.gnu.org/licenses/>.
+ *
+ * For any other enquiries send an Email to Tomas Flouri
+ * Tomas.Flouri at h-its.org
+ *
+ * When publishing work that uses PLL please cite PLL
+ *
+ * @file parsePartition.c
+ * @brief Collection of routines for parsing and processing a partition (model) file
+ *
+ * @defgroup parsePartitionFileGroup Reading and parsing partition (model) files
+ * This set of functions handles the reading and parsing of partition files, i.e.
+ * files that contain alignment partition definitions and corresponding models.
+ */
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <assert.h>
+#include <math.h>
+#include <ctype.h>
+
+#include "pll.h"
+#include "pllInternal.h"
+
+extern const char *protModels[PLL_NUM_PROT_MODELS];
+
+static void destroy_model_names(pllHashTable * hashTable)
+{
+ pllHashDestroy (&hashTable, rax_free);
+}
+
+static pllHashTable * init_model_names (void)
+{
+ int i;
+ int * item;
+
+ pllHashTable * hashTable;
+ hashTable = pllHashInit (PLL_NUM_PROT_MODELS);
+
+ for (i = 0; i < PLL_NUM_PROT_MODELS; ++ i)
+ {
+ item = (int *) rax_malloc (sizeof (int));
+ *item = i;
+ pllHashAdd (hashTable, pllHashString(protModels[i], hashTable->size), protModels[i], (void *) item);
+ }
+ return hashTable;
+}
+
+/** @ingroup parsePartitionFileGroup
+ @brief Destroy queue structure that contains parsed information from a partition file
+
+ Destroys the structure, and therefore frees allocated memory, that holds parsed information
+ from a partition (model) file
+
+ @param partitions
+ Queue structure with parsed info
+*/
+void pllQueuePartitionsDestroy (pllQueue ** partitions)
+{
+ pllPartitionInfo * pi;
+ pllPartitionRegion * region;
+
+ while (pllQueueRemove (*partitions, (void **)&pi))
+ {
+ while (pllQueueRemove (pi->regionList, (void **) ®ion))
+ {
+ rax_free (region);
+ }
+ rax_free (pi->regionList);
+ rax_free (pi->partitionName);
+ rax_free (pi->partitionModel);
+ rax_free (pi);
+ }
+ rax_free (*partitions);
+}
+
+static pllQueue * parse_partition (int * inp, pllHashTable * proteinModelsHash)
+{
+ int input, i;
+ pllLexToken token;
+ int lines = 0;
+ pllQueue * partitions;
+ pllPartitionInfo * pi;
+ pllPartitionRegion * region;
+ int * protIndexPtr;
+ char * modelptr;
+
+ input = *inp;
+
+ NEXT_TOKEN
+
+ pllQueueInit (&partitions);
+ while (token.tokenType != PLL_TOKEN_EOF)
+ {
+ ++ lines;
+ pi = (pllPartitionInfo *) rax_calloc (1, sizeof (pllPartitionInfo));
+ pllQueueInit (&(pi->regionList));
+ pllQueueAppend (partitions, (void *)pi);
+ CONSUME (PLL_TOKEN_WHITESPACE | PLL_TOKEN_NEWLINE)
+
+
+ /* read partition type */
+ if (token.tokenType != PLL_TOKEN_STRING)
+ {
+ pllQueuePartitionsDestroy (&partitions);
+ return (0);
+ }
+ //pi->partitionModel = strndup (token.lexeme, token.len);
+ pi->partitionModel = (char *) rax_malloc ((token.len + 1) * sizeof (char));
+ strncpy (pi->partitionModel, token.lexeme, token.len);
+ pi->partitionModel[token.len] = 0;
+ for (i = 0; i < token.len; ++i) pi->partitionModel[i] = toupper(pi->partitionModel[i]);
+
+ // check partition model
+ pi->protModels = -1;
+ pi->protUseEmpiricalFreqs = PLL_FALSE;
+ pi->ascBias = PLL_FALSE;
+ pi->optimizeBaseFrequencies = PLL_FALSE;
+
+ /* check if the model contains Asc bias */
+ if (!strncmp(pi->partitionModel, "ASC_", 4))
+ {
+ pi->ascBias = PLL_TRUE;
+ modelptr = pi->partitionModel + 4;
+ }
+ else
+ modelptr = pi->partitionModel;
+
+ /* check first for BINARY */
+ if (!strcmp(modelptr, "BIN") || !strcmp(modelptr, "BINX"))
+ {
+ pi->dataType = PLL_BINARY_DATA;
+
+ if (!strcmp(modelptr, "BINX"))
+ pi->optimizeBaseFrequencies = PLL_TRUE;
+ } /* now for DNA */
+ else if (!strcmp(modelptr, "DNA") || !strcmp(modelptr, "DNAX"))
+ {
+ pi->dataType = PLL_DNA_DATA;
+
+ if (!strcmp(modelptr, "DNAX"))
+ pi->optimizeBaseFrequencies = PLL_TRUE;
+ }
+ else
+ { /* and protein data */
+ pi->dataType = PLL_AA_DATA;
+
+ if (pllHashSearch (proteinModelsHash, modelptr, (void **) &protIndexPtr))
+ {
+ pi->protModels = *protIndexPtr;
+ pi->protUseEmpiricalFreqs = PLL_FALSE;
+ pi->optimizeBaseFrequencies = PLL_FALSE;
+ }
+ else
+ {
+ if (modelptr[token.len - 1] == 'X')
+ {
+ modelptr[token.len - 1] = '\0';
+ if (pllHashSearch (proteinModelsHash, modelptr, (void **) &protIndexPtr))
+ {
+ pi->protModels = *protIndexPtr;
+ pi->optimizeBaseFrequencies = PLL_TRUE;
+ }
+ modelptr[token.len - 1] = 'X';
+ }
+ else if (modelptr[token.len - 1] == 'F')
+ {
+ modelptr[token.len - 1] = '\0';
+ if (pllHashSearch (proteinModelsHash, modelptr, (void **) &protIndexPtr))
+ {
+ pi->protModels = *protIndexPtr;
+ pi->protUseEmpiricalFreqs = PLL_TRUE;
+ }
+ modelptr[token.len - 1] = 'F';
+ }
+ else
+ {
+ pllQueuePartitionsDestroy (&partitions);
+ return (0);
+ }
+ }
+ }
+
+ NEXT_TOKEN
+ CONSUME(PLL_TOKEN_WHITESPACE)
+
+ if (token.tokenType != PLL_TOKEN_COMMA)
+ {
+ pllQueuePartitionsDestroy (&partitions);
+ return (0);
+ }
+ NEXT_TOKEN
+ CONSUME(PLL_TOKEN_WHITESPACE)
+
+ /* read partition name */
+ if (token.tokenType != PLL_TOKEN_STRING)
+ {
+ pllQueuePartitionsDestroy (&partitions);
+ return (0);
+ }
+ //pi->partitionName = strndup (token.lexeme, token.len);
+ pi->partitionName = (char *) rax_malloc ((token.len + 1) * sizeof (char));
+ strncpy (pi->partitionName, token.lexeme, token.len);
+ pi->partitionName[token.len] = 0;
+
+ NEXT_TOKEN
+ CONSUME(PLL_TOKEN_WHITESPACE)
+
+ /* read equal sign */
+ if (token.tokenType != PLL_TOKEN_EQUAL)
+ {
+ pllQueuePartitionsDestroy (&partitions);
+ return (0);
+ }
+ NEXT_TOKEN
+ CONSUME(PLL_TOKEN_WHITESPACE)
+
+ /* read rhs */
+ while (1)
+ {
+ region = (pllPartitionRegion *) rax_malloc (sizeof (pllPartitionRegion));
+ if (token.tokenType != PLL_TOKEN_NUMBER)
+ {
+ pllQueuePartitionsDestroy (&partitions);
+ return (0);
+ }
+ region->start = region->end = atoi (token.lexeme);
+ region->stride = 1;
+ NEXT_TOKEN
+ CONSUME(PLL_TOKEN_WHITESPACE)
+
+ if (token.tokenType == PLL_TOKEN_DASH)
+ {
+ NEXT_TOKEN
+ CONSUME(PLL_TOKEN_WHITESPACE)
+ if (token.tokenType != PLL_TOKEN_NUMBER)
+ {
+ pllQueuePartitionsDestroy (&partitions);
+ return (0);
+ }
+ region->end = atoi (token.lexeme);
+ if (region->end < region->start)
+ {
+ pllQueuePartitionsDestroy (&partitions);
+ return (0);
+ }
+ NEXT_TOKEN
+ CONSUME(PLL_TOKEN_WHITESPACE)
+ if (token.tokenType == PLL_TOKEN_SLASH)
+ {
+ NEXT_TOKEN
+ CONSUME(PLL_TOKEN_WHITESPACE)
+ if (token.tokenType != PLL_TOKEN_NUMBER)
+ {
+ pllQueuePartitionsDestroy (&partitions);
+ return (0);
+ }
+ region->stride = atoi (token.lexeme);
+ NEXT_TOKEN
+ }
+ CONSUME(PLL_TOKEN_WHITESPACE)
+ }
+ pllQueueAppend (pi->regionList, (void *)region);
+
+ if (token.tokenType != PLL_TOKEN_COMMA) break;
+ NEXT_TOKEN
+ CONSUME(PLL_TOKEN_WHITESPACE)
+ }
+ CONSUME(PLL_TOKEN_WHITESPACE | PLL_TOKEN_NEWLINE)
+ }
+
+ return (partitions);
+}
+
+/** @ingroup parsePartitionFileGroup
+ @brief Dump a parsed partition file in the console
+
+ Prints the parsed contents of a partition file to the console
+
+ @param partitions Queue structure containing parsed information
+*/
+void pllPartitionDump (pllQueue * partitions)
+{
+ struct pllQueueItem * elm;
+ struct pllQueueItem * regionList;
+ pllPartitionInfo * pi;
+ pllPartitionRegion * region;
+
+ elm = partitions->head;
+
+ while (elm)
+ {
+ pi = (pllPartitionInfo *) elm->item;
+ printf ("%s, %s = ", pi->partitionModel, pi->partitionName);
+ regionList = pi->regionList->head;
+ while (regionList)
+ {
+ region = (pllPartitionRegion *) regionList->item;
+ printf ("%d", region->start);
+ if (region->start != region->end)
+ {
+ printf ("-%d", region->end);
+ if (region->stride != 1) printf ("/%d", region->stride);
+ }
+ regionList = regionList->next;
+ if (regionList) printf (", ");
+ }
+ printf ("\n");
+
+ elm = elm->next;
+ }
+}
+
+/** @ingroup parsePartitionFileGroup
+ @brief Parse a partition (model) file
+
+ Parses the partition file \a filename and stores the information in a queue
+ structure ::pllQueue
+
+ @param filename Name of the partition file
+ @return Queue structure with parsed information
+*/
+pllQueue * pllPartitionParse (const char * filename)
+{
+ long n;
+ char * rawdata;
+ int input;
+ pllQueue * partitions;
+
+ rawdata = pllReadFile (filename, &n);
+ if (!rawdata)
+ {
+ //fprintf (stderr, "Error while opening/reading file %s\n", filename);
+ return (0);
+ }
+
+ n = strlen (rawdata);
+
+ init_lexan (rawdata, n);
+ input = get_next_symbol();
+
+ pllHashTable * model_names = init_model_names();
+ partitions = parse_partition (&input, model_names);
+ destroy_model_names(model_names);
+
+ rax_free (rawdata);
+ return (partitions);
+}
+
+/** @ingroup parsePartitionFileGroup
+ @brief Parse a partition (model) file
+
+ Parses the partition information stored in string \a p and stores the
+ information in a queue structure ::pllQueue
+
+ @param p Partition information string
+ @return Queue structure with parsed information
+*/
+pllQueue * pllPartitionParseString (const char * p)
+{
+ long n;
+ int input;
+ pllQueue * partitions;
+
+ n = strlen(p);
+ init_lexan (p, n);
+ input = get_next_symbol();
+
+ pllHashTable * model_names;
+ model_names = init_model_names();
+ partitions = parse_partition (&input, model_names);
+ destroy_model_names(model_names);
+
+ return (partitions);
+}
diff --git a/src/parsePartition.h b/src/parsePartition.h
new file mode 100644
index 0000000..8ab12d0
--- /dev/null
+++ b/src/parsePartition.h
@@ -0,0 +1,52 @@
+/**
+ * PLL (version 1.0.0) a software library for phylogenetic inference
+ * Copyright (C) 2013 Tomas Flouri and Alexandros Stamatakis
+ *
+ * Derived from
+ * RAxML-HPC, a program for sequential and parallel estimation of phylogenetic
+ * trees by Alexandros Stamatakis
+ *
+ * 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 3 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, see <http://www.gnu.org/licenses/>.
+ *
+ * For any other enquiries send an Email to Tomas Flouri
+ * Tomas.Flouri at h-its.org
+ *
+ * When publishing work that uses PLL please cite PLL
+ *
+ * @file part.h
+ */
+#ifndef __pll_PART__
+#define __pll_PART__
+#include "queue.h"
+
+typedef struct
+{
+ int start;
+ int end;
+ int stride;
+} pllPartitionRegion;
+
+typedef struct
+{
+ char * partitionName;
+ char * partitionModel;
+ int protModels;
+ int protUseEmpiricalFreqs;
+ int dataType;
+ int ascBias;
+ int optimizeBaseFrequencies;
+ pllQueue * regionList;
+} pllPartitionInfo;
+
+#endif
diff --git a/src/parsimony.c b/src/parsimony.c
new file mode 100644
index 0000000..24d9c79
--- /dev/null
+++ b/src/parsimony.c
@@ -0,0 +1,865 @@
+/**
+ * PLL (version 1.0.0) a software library for phylogenetic inference
+ * Copyright (C) 2013 Tomas Flouri and Alexandros Stamatakis
+ *
+ * Derived from
+ * RAxML-HPC, a program for sequential and parallel estimation of phylogenetic
+ * trees by Alexandros Stamatakis
+ *
+ * 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 3 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, see <http://www.gnu.org/licenses/>.
+ *
+ * For any other enquiries send an Email to Tomas Flouri
+ * Tomas.Flouri at h-its.org
+ *
+ * When publishing work that uses PLL please cite PLL
+ *
+ * @file parsimony.c
+ */
+#include "mem_alloc.h"
+
+#ifndef WIN32
+#include <sys/times.h>
+#include <sys/types.h>
+#include <sys/time.h>
+#include <unistd.h>
+#endif
+
+#include <limits.h>
+#include <math.h>
+#include <time.h>
+#include <stdlib.h>
+#include <stdio.h>
+#include <ctype.h>
+#include <string.h>
+#include <stdint.h>
+#include <assert.h>
+
+#if defined(__MIC_NATIVE)
+
+#include <immintrin.h>
+
+#define INTS_PER_VECTOR 16
+#define LONG_INTS_PER_VECTOR 8
+#define INT_TYPE __m512i
+#define CAST double*
+#define SET_ALL_BITS_ONE _mm512_set1_epi32(0xFFFFFFFF)
+#define SET_ALL_BITS_ZERO _mm512_setzero_epi32()
+#define VECTOR_LOAD _mm512_load_epi32
+#define VECTOR_STORE _mm512_store_epi32
+#define VECTOR_BIT_AND _mm512_and_epi32
+#define VECTOR_BIT_OR _mm512_or_epi32
+#define VECTOR_AND_NOT _mm512_andnot_epi32
+
+#elif defined(__AVX)
+
+#include <xmmintrin.h>
+#include <immintrin.h>
+#include <pmmintrin.h>
+
+#define ULINT_SIZE 64
+#define INTS_PER_VECTOR 8
+#define LONG_INTS_PER_VECTOR 4
+#define INT_TYPE __m256d
+#define CAST double*
+#define SET_ALL_BITS_ONE (__m256d)_mm256_set_epi32(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF)
+#define SET_ALL_BITS_ZERO (__m256d)_mm256_set_epi32(0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000)
+#define VECTOR_LOAD _mm256_load_pd
+#define VECTOR_BIT_AND _mm256_and_pd
+#define VECTOR_BIT_OR _mm256_or_pd
+#define VECTOR_STORE _mm256_store_pd
+#define VECTOR_AND_NOT _mm256_andnot_pd
+
+#elif (defined(__SSE3))
+
+#include <xmmintrin.h>
+#include <pmmintrin.h>
+
+#define INTS_PER_VECTOR 4
+#ifdef __i386__
+#define ULINT_SIZE 32
+#define LONG_INTS_PER_VECTOR 4
+#else
+#define ULINT_SIZE 64
+#define LONG_INTS_PER_VECTOR 2
+#endif
+#define INT_TYPE __m128i
+#define CAST __m128i*
+#define SET_ALL_BITS_ONE _mm_set_epi32(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF)
+#define SET_ALL_BITS_ZERO _mm_set_epi32(0x00000000, 0x00000000, 0x00000000, 0x00000000)
+#define VECTOR_LOAD _mm_load_si128
+#define VECTOR_BIT_AND _mm_and_si128
+#define VECTOR_BIT_OR _mm_or_si128
+#define VECTOR_STORE _mm_store_si128
+#define VECTOR_AND_NOT _mm_andnot_si128
+
+#endif
+
+#include "pll.h"
+#include "pllInternal.h"
+
+extern const unsigned int mask32[32];
+
+static inline unsigned int vectorPopcount(INT_TYPE v)
+{
+ unsigned long
+ counts[LONG_INTS_PER_VECTOR] __attribute__ ((aligned (PLL_BYTE_ALIGNMENT)));
+
+ int
+ i,
+ sum = 0;
+
+ VECTOR_STORE((CAST)counts, v);
+
+ for(i = 0; i < LONG_INTS_PER_VECTOR; i++)
+ sum += __builtin_popcountl(counts[i]);
+
+ return ((unsigned int)sum);
+}
+
+static inline void storePerSiteScores (partitionList * pr, int model, INT_TYPE v, unsigned int offset)
+{
+ unsigned long
+ counts[LONG_INTS_PER_VECTOR] __attribute__ ((aligned (PLL_BYTE_ALIGNMENT)));
+ parsimonyNumber * buf;
+
+ int
+ i,
+ j;
+
+ VECTOR_STORE((CAST)counts, v);
+
+ for (i = 0; i < LONG_INTS_PER_VECTOR; ++i)
+ {
+ buf = &(pr->partitionData[model]->perSiteParsScores[offset * PLL_PCF + i * ULINT_SIZE]);
+ for (j = 0; j < ULINT_SIZE; ++ j)
+ buf[j] += ((counts[i] >> j) & 1);
+ }
+
+}
+
+static void getxnodeLocal (nodeptr p)
+{
+ nodeptr s;
+
+ if((s = p->next)->xPars || (s = s->next)->xPars)
+ {
+ p->xPars = s->xPars;
+ s->xPars = 0;
+ }
+
+ assert(p->next->xPars || p->next->next->xPars || p->xPars);
+
+}
+
+static void computeTraversalInfoParsimony(nodeptr p, int *ti, int *counter, int maxTips, boolean full)
+{
+ nodeptr
+ q = p->next->back,
+ r = p->next->next->back;
+
+ if(! p->xPars)
+ getxnodeLocal(p);
+
+ if(full)
+ {
+ if(q->number > maxTips)
+ computeTraversalInfoParsimony(q, ti, counter, maxTips, full);
+
+ if(r->number > maxTips)
+ computeTraversalInfoParsimony(r, ti, counter, maxTips, full);
+ }
+ else
+ {
+ if(q->number > maxTips && !q->xPars)
+ computeTraversalInfoParsimony(q, ti, counter, maxTips, full);
+
+ if(r->number > maxTips && !r->xPars)
+ computeTraversalInfoParsimony(r, ti, counter, maxTips, full);
+ }
+
+
+ ti[*counter] = p->number;
+ ti[*counter + 1] = q->number;
+ ti[*counter + 2] = r->number;
+ *counter = *counter + 4;
+}
+
+/* check whether site contains at least 2 different letters, i.e.
+ whether it will generate a score */
+static boolean isInformative(pllInstance *tr, int dataType, int site)
+{
+ int
+ informativeCounter = 0,
+ check[256],
+ j,
+ undetermined = getUndetermined(dataType);
+
+ const unsigned int
+ *bitVector = getBitVector(dataType);
+
+ unsigned char
+ nucleotide;
+
+
+ for(j = 0; j < 256; j++)
+ check[j] = 0;
+
+ for(j = 1; j <= tr->mxtips; j++)
+ {
+ nucleotide = tr->yVector[j][site];
+ check[nucleotide] = 1;
+ assert(bitVector[nucleotide] > 0);
+ }
+
+ for(j = 0; j < undetermined; j++)
+ {
+ if(check[j] > 0)
+ informativeCounter++;
+ }
+
+ if(informativeCounter > 1)
+ return PLL_TRUE;
+
+ return PLL_FALSE;
+}
+
+static void compressDNA(pllInstance *tr, partitionList *pr, int *informative, int perSiteScores)
+{
+ size_t
+ totalNodes,
+ i,
+ model;
+
+ totalNodes = 2 * (size_t)tr->mxtips;
+
+
+
+ for(model = 0; model < (size_t) pr->numberOfPartitions; model++)
+ {
+ size_t
+ k,
+ states = (size_t)pr->partitionData[model]->states,
+ compressedEntries,
+ compressedEntriesPadded,
+ entries = 0,
+ lower = pr->partitionData[model]->lower,
+ upper = pr->partitionData[model]->upper;
+
+ parsimonyNumber
+ **compressedTips = (parsimonyNumber **)rax_malloc(states * sizeof(parsimonyNumber*)),
+ *compressedValues = (parsimonyNumber *)rax_malloc(states * sizeof(parsimonyNumber));
+
+ for(i = lower; i < upper; i++)
+ if(informative[i])
+ entries += (size_t)tr->aliaswgt[i];
+
+ compressedEntries = entries / PLL_PCF;
+
+ if(entries % PLL_PCF != 0)
+ compressedEntries++;
+
+#if (defined(__SSE3) || defined(__AVX))
+ if(compressedEntries % INTS_PER_VECTOR != 0)
+ compressedEntriesPadded = compressedEntries + (INTS_PER_VECTOR - (compressedEntries % INTS_PER_VECTOR));
+ else
+ compressedEntriesPadded = compressedEntries;
+#else
+ compressedEntriesPadded = compressedEntries;
+#endif
+
+
+ rax_posix_memalign ((void **) &(pr->partitionData[model]->parsVect), PLL_BYTE_ALIGNMENT, (size_t)compressedEntriesPadded * states * totalNodes * sizeof(parsimonyNumber));
+ if (perSiteScores)
+ {
+ rax_posix_memalign ((void **) &(pr->partitionData[model]->perSiteParsScores), PLL_BYTE_ALIGNMENT, (size_t)pr->partitionData[model]->width* sizeof (parsimonyNumber));
+ for (i = 0; i < (size_t)pr->partitionData[model]->width; ++i) pr->partitionData[model]->perSiteParsScores[i] = 0;
+ }
+
+
+ for(i = 0; i < compressedEntriesPadded * states * totalNodes; i++)
+ pr->partitionData[model]->parsVect[i] = 0;
+
+ for(i = 0; i < (size_t)tr->mxtips; i++)
+ {
+ size_t
+ w = 0,
+ compressedIndex = 0,
+ compressedCounter = 0,
+ index = 0;
+
+ for(k = 0; k < states; k++)
+ {
+ compressedTips[k] = &(pr->partitionData[model]->parsVect[(compressedEntriesPadded * states * (i + 1)) + (compressedEntriesPadded * k)]);
+ compressedValues[k] = 0;
+ }
+
+ for(index = lower; index < (size_t)upper; index++)
+ {
+ if(informative[index])
+ {
+ const unsigned int
+ *bitValue = getBitVector(pr->partitionData[model]->dataType);
+
+ parsimonyNumber
+ value = bitValue[tr->yVector[i + 1][index]];
+
+ for(w = 0; w < (size_t)tr->aliaswgt[index]; w++)
+ {
+ for(k = 0; k < states; k++)
+ {
+ if(value & mask32[k])
+ compressedValues[k] |= mask32[compressedCounter];
+ }
+
+ compressedCounter++;
+
+ if(compressedCounter == PLL_PCF)
+ {
+ for(k = 0; k < states; k++)
+ {
+ compressedTips[k][compressedIndex] = compressedValues[k];
+ compressedValues[k] = 0;
+ }
+
+ compressedCounter = 0;
+ compressedIndex++;
+ }
+ }
+ }
+ }
+
+ for(;compressedIndex < compressedEntriesPadded; compressedIndex++)
+ {
+ for(;compressedCounter < PLL_PCF; compressedCounter++)
+ for(k = 0; k < states; k++)
+ compressedValues[k] |= mask32[compressedCounter];
+
+ for(k = 0; k < states; k++)
+ {
+ compressedTips[k][compressedIndex] = compressedValues[k];
+ compressedValues[k] = 0;
+ }
+
+ compressedCounter = 0;
+ }
+ }
+
+ pr->partitionData[model]->parsimonyLength = compressedEntriesPadded;
+
+ rax_free(compressedTips);
+ rax_free(compressedValues);
+ }
+
+ rax_posix_memalign ((void **) &(tr->parsimonyScore), PLL_BYTE_ALIGNMENT, sizeof(unsigned int) * totalNodes);
+
+ for(i = 0; i < totalNodes; i++)
+ tr->parsimonyScore[i] = 0;
+}
+
+static void determineUninformativeSites(pllInstance *tr, partitionList *pr, int *informative)
+{
+ int
+ model,
+ number = 0,
+ i;
+
+ /*
+ Not all characters are useful in constructing a parsimony tree.
+ Invariant characters, those that have the same state in all taxa,
+ are obviously useless and are ignored by the method. Characters in
+ which a state occurs in only one taxon are also ignored.
+ All these characters are called parsimony uninformative.
+
+ Alternative definition: informative columns contain at least two types
+ of nucleotides, and each nucleotide must appear at least twice in each
+ column. Kind of a pain if we intend to check for this when using, e.g.,
+ amibiguous DNA encoding.
+ */
+
+
+ for(model = 0; model < pr->numberOfPartitions; model++)
+ {
+ for(i = pr->partitionData[model]->lower; i < pr->partitionData[model]->upper; i++)
+ {
+ if(isInformative(tr, pr->partitionData[model]->dataType, i))
+ informative[i] = 1;
+ else
+ {
+ informative[i] = 0;
+ number++;
+ }
+ }
+ }
+
+ /* printf("Uninformative Patterns: %d\n", number); */
+}
+
+void pllInitParsimonyStructures(pllInstance *tr, partitionList *pr, boolean perSiteScores)
+{
+ int
+ i,
+ *informative = (int *)rax_malloc(sizeof(int) * (size_t)tr->originalCrunchedLength);
+
+ for (i = 0; i < pr->numberOfPartitions; ++ i)
+ rax_free (pr->partitionData[i]->parsVect);
+
+ rax_free (tr->parsimonyScore);
+
+ determineUninformativeSites(tr, pr, informative);
+
+ compressDNA(tr, pr, informative, perSiteScores);
+
+ for(i = tr->mxtips + 1; i <= tr->mxtips + tr->mxtips - 1; i++)
+ {
+ nodeptr
+ p = tr->nodep[i];
+
+ p->xPars = 1;
+ p->next->xPars = 0;
+ p->next->next->xPars = 0;
+ }
+
+ tr->ti = (int*)rax_malloc(sizeof(int) * 4 * (size_t)tr->mxtips);
+
+ rax_free(informative);
+}
+
+static void newviewParsimonyIterativeFast(pllInstance *tr, partitionList *pr, boolean perSiteScores)
+{
+ INT_TYPE
+ allOne = SET_ALL_BITS_ONE;
+
+ int
+ model,
+ *ti = tr->ti,
+ count = ti[0],
+ index;
+
+ for(index = 4; index < count; index += 4)
+ {
+ unsigned int
+ totalScore = 0;
+
+ size_t
+ pNumber = (size_t)ti[index],
+ qNumber = (size_t)ti[index + 1],
+ rNumber = (size_t)ti[index + 2];
+
+ for(model = 0; model < pr->numberOfPartitions; model++)
+ {
+ size_t
+ k,
+ states = pr->partitionData[model]->states,
+ width = pr->partitionData[model]->parsimonyLength;
+
+ unsigned int
+ i;
+
+ switch(states)
+ {
+ case 2:
+ {
+ parsimonyNumber
+ *left[2],
+ *right[2],
+ *this[2];
+
+ for(k = 0; k < 2; k++)
+ {
+ left[k] = &(pr->partitionData[model]->parsVect[(width * 2 * qNumber) + width * k]);
+ right[k] = &(pr->partitionData[model]->parsVect[(width * 2 * rNumber) + width * k]);
+ this[k] = &(pr->partitionData[model]->parsVect[(width * 2 * pNumber) + width * k]);
+ }
+
+ for(i = 0; i < width; i += INTS_PER_VECTOR)
+ {
+ INT_TYPE
+ s_r, s_l, v_N,
+ l_A, l_C,
+ v_A, v_C;
+
+ s_l = VECTOR_LOAD((CAST)(&left[0][i]));
+ s_r = VECTOR_LOAD((CAST)(&right[0][i]));
+ l_A = VECTOR_BIT_AND(s_l, s_r);
+ v_A = VECTOR_BIT_OR(s_l, s_r);
+
+ s_l = VECTOR_LOAD((CAST)(&left[1][i]));
+ s_r = VECTOR_LOAD((CAST)(&right[1][i]));
+ l_C = VECTOR_BIT_AND(s_l, s_r);
+ v_C = VECTOR_BIT_OR(s_l, s_r);
+
+ v_N = VECTOR_BIT_OR(l_A, l_C);
+
+ VECTOR_STORE((CAST)(&this[0][i]), VECTOR_BIT_OR(l_A, VECTOR_AND_NOT(v_N, v_A)));
+ VECTOR_STORE((CAST)(&this[1][i]), VECTOR_BIT_OR(l_C, VECTOR_AND_NOT(v_N, v_C)));
+
+ v_N = VECTOR_AND_NOT(v_N, allOne);
+
+ totalScore += vectorPopcount(v_N);
+ if (perSiteScores)
+ storePerSiteScores (pr, model, v_N, i);
+ }
+ }
+ break;
+ case 4:
+ {
+ parsimonyNumber
+ *left[4],
+ *right[4],
+ *this[4];
+
+ for(k = 0; k < 4; k++)
+ {
+ left[k] = &(pr->partitionData[model]->parsVect[(width * 4 * qNumber) + width * k]);
+ right[k] = &(pr->partitionData[model]->parsVect[(width * 4 * rNumber) + width * k]);
+ this[k] = &(pr->partitionData[model]->parsVect[(width * 4 * pNumber) + width * k]);
+ }
+ for(i = 0; i < width; i += INTS_PER_VECTOR)
+ {
+ INT_TYPE
+ s_r, s_l, v_N,
+ l_A, l_C, l_G, l_T,
+ v_A, v_C, v_G, v_T;
+
+ s_l = VECTOR_LOAD((CAST)(&left[0][i]));
+ s_r = VECTOR_LOAD((CAST)(&right[0][i]));
+ l_A = VECTOR_BIT_AND(s_l, s_r);
+ v_A = VECTOR_BIT_OR(s_l, s_r);
+
+ s_l = VECTOR_LOAD((CAST)(&left[1][i]));
+ s_r = VECTOR_LOAD((CAST)(&right[1][i]));
+ l_C = VECTOR_BIT_AND(s_l, s_r);
+ v_C = VECTOR_BIT_OR(s_l, s_r);
+
+ s_l = VECTOR_LOAD((CAST)(&left[2][i]));
+ s_r = VECTOR_LOAD((CAST)(&right[2][i]));
+ l_G = VECTOR_BIT_AND(s_l, s_r);
+ v_G = VECTOR_BIT_OR(s_l, s_r);
+
+ s_l = VECTOR_LOAD((CAST)(&left[3][i]));
+ s_r = VECTOR_LOAD((CAST)(&right[3][i]));
+ l_T = VECTOR_BIT_AND(s_l, s_r);
+ v_T = VECTOR_BIT_OR(s_l, s_r);
+
+ v_N = VECTOR_BIT_OR(VECTOR_BIT_OR(l_A, l_C), VECTOR_BIT_OR(l_G, l_T));
+
+ VECTOR_STORE((CAST)(&this[0][i]), VECTOR_BIT_OR(l_A, VECTOR_AND_NOT(v_N, v_A)));
+ VECTOR_STORE((CAST)(&this[1][i]), VECTOR_BIT_OR(l_C, VECTOR_AND_NOT(v_N, v_C)));
+ VECTOR_STORE((CAST)(&this[2][i]), VECTOR_BIT_OR(l_G, VECTOR_AND_NOT(v_N, v_G)));
+ VECTOR_STORE((CAST)(&this[3][i]), VECTOR_BIT_OR(l_T, VECTOR_AND_NOT(v_N, v_T)));
+
+ v_N = VECTOR_AND_NOT(v_N, allOne);
+
+ totalScore += vectorPopcount(v_N);
+
+ if (perSiteScores)
+ storePerSiteScores (pr, model, v_N, i);
+ }
+ }
+ break;
+ case 20:
+ {
+ parsimonyNumber
+ *left[20],
+ *right[20],
+ *this[20];
+
+ for(k = 0; k < 20; k++)
+ {
+ left[k] = &(pr->partitionData[model]->parsVect[(width * 20 * qNumber) + width * k]);
+ right[k] = &(pr->partitionData[model]->parsVect[(width * 20 * rNumber) + width * k]);
+ this[k] = &(pr->partitionData[model]->parsVect[(width * 20 * pNumber) + width * k]);
+ }
+
+ for(i = 0; i < width; i += INTS_PER_VECTOR)
+ {
+ size_t j;
+
+ INT_TYPE
+ s_r, s_l,
+ v_N = SET_ALL_BITS_ZERO,
+ l_A[20],
+ v_A[20];
+
+ for(j = 0; j < 20; j++)
+ {
+ s_l = VECTOR_LOAD((CAST)(&left[j][i]));
+ s_r = VECTOR_LOAD((CAST)(&right[j][i]));
+ l_A[j] = VECTOR_BIT_AND(s_l, s_r);
+ v_A[j] = VECTOR_BIT_OR(s_l, s_r);
+
+ v_N = VECTOR_BIT_OR(v_N, l_A[j]);
+ }
+
+ for(j = 0; j < 20; j++)
+ VECTOR_STORE((CAST)(&this[j][i]), VECTOR_BIT_OR(l_A[j], VECTOR_AND_NOT(v_N, v_A[j])));
+
+ v_N = VECTOR_AND_NOT(v_N, allOne);
+
+ totalScore += vectorPopcount(v_N);
+
+ if (perSiteScores)
+ storePerSiteScores (pr, model, v_N, i);
+ }
+ }
+ break;
+ default:
+ {
+ parsimonyNumber
+ *left[32],
+ *right[32],
+ *this[32];
+
+ assert(states <= 32);
+
+ for(k = 0; k < states; k++)
+ {
+ left[k] = &(pr->partitionData[model]->parsVect[(width * states * qNumber) + width * k]);
+ right[k] = &(pr->partitionData[model]->parsVect[(width * states * rNumber) + width * k]);
+ this[k] = &(pr->partitionData[model]->parsVect[(width * states * pNumber) + width * k]);
+ }
+
+ for(i = 0; i < width; i += INTS_PER_VECTOR)
+ {
+ size_t j;
+
+ INT_TYPE
+ s_r, s_l,
+ v_N = SET_ALL_BITS_ZERO,
+ l_A[32],
+ v_A[32];
+
+ for(j = 0; j < states; j++)
+ {
+ s_l = VECTOR_LOAD((CAST)(&left[j][i]));
+ s_r = VECTOR_LOAD((CAST)(&right[j][i]));
+ l_A[j] = VECTOR_BIT_AND(s_l, s_r);
+ v_A[j] = VECTOR_BIT_OR(s_l, s_r);
+
+ v_N = VECTOR_BIT_OR(v_N, l_A[j]);
+ }
+
+ for(j = 0; j < states; j++)
+ VECTOR_STORE((CAST)(&this[j][i]), VECTOR_BIT_OR(l_A[j], VECTOR_AND_NOT(v_N, v_A[j])));
+
+ v_N = VECTOR_AND_NOT(v_N, allOne);
+
+ totalScore += vectorPopcount(v_N);
+
+ if (perSiteScores)
+ storePerSiteScores (pr, model, v_N, i);
+ }
+ }
+ }
+ }
+ tr->parsimonyScore[pNumber] = totalScore + tr->parsimonyScore[rNumber] + tr->parsimonyScore[qNumber];
+ }
+}
+
+static unsigned int evaluateParsimonyIterativeFast(pllInstance *tr, partitionList *pr, boolean perSiteScores)
+{
+ INT_TYPE
+ allOne = SET_ALL_BITS_ONE;
+
+ size_t
+ pNumber = (size_t)tr->ti[1],
+ qNumber = (size_t)tr->ti[2];
+
+ int
+ model;
+
+ unsigned int
+ bestScore = tr->bestParsimony,
+ sum;
+
+ if(tr->ti[0] > 4)
+ newviewParsimonyIterativeFast(tr, pr, perSiteScores);
+
+ sum = tr->parsimonyScore[pNumber] + tr->parsimonyScore[qNumber];
+
+ for(model = 0; model < pr->numberOfPartitions; model++)
+ {
+ size_t
+ k,
+ states = pr->partitionData[model]->states,
+ width = pr->partitionData[model]->parsimonyLength,
+ i;
+
+ switch(states)
+ {
+ case 2:
+ {
+ parsimonyNumber
+ *left[2],
+ *right[2];
+
+ for(k = 0; k < 2; k++)
+ {
+ left[k] = &(pr->partitionData[model]->parsVect[(width * 2 * qNumber) + width * k]);
+ right[k] = &(pr->partitionData[model]->parsVect[(width * 2 * pNumber) + width * k]);
+ }
+
+ for(i = 0; i < width; i += INTS_PER_VECTOR)
+ {
+ INT_TYPE
+ l_A = VECTOR_BIT_AND(VECTOR_LOAD((CAST)(&left[0][i])), VECTOR_LOAD((CAST)(&right[0][i]))),
+ l_C = VECTOR_BIT_AND(VECTOR_LOAD((CAST)(&left[1][i])), VECTOR_LOAD((CAST)(&right[1][i]))),
+ v_N = VECTOR_BIT_OR(l_A, l_C);
+
+ v_N = VECTOR_AND_NOT(v_N, allOne);
+
+ sum += vectorPopcount(v_N);
+ if (perSiteScores)
+ storePerSiteScores (pr, model, v_N, i);
+ }
+ }
+ break;
+ case 4:
+ {
+ parsimonyNumber
+ *left[4],
+ *right[4];
+
+ for(k = 0; k < 4; k++)
+ {
+ left[k] = &(pr->partitionData[model]->parsVect[(width * 4 * qNumber) + width * k]);
+ right[k] = &(pr->partitionData[model]->parsVect[(width * 4 * pNumber) + width * k]);
+ }
+
+ for(i = 0; i < width; i += INTS_PER_VECTOR)
+ {
+ INT_TYPE
+ l_A = VECTOR_BIT_AND(VECTOR_LOAD((CAST)(&left[0][i])), VECTOR_LOAD((CAST)(&right[0][i]))),
+ l_C = VECTOR_BIT_AND(VECTOR_LOAD((CAST)(&left[1][i])), VECTOR_LOAD((CAST)(&right[1][i]))),
+ l_G = VECTOR_BIT_AND(VECTOR_LOAD((CAST)(&left[2][i])), VECTOR_LOAD((CAST)(&right[2][i]))),
+ l_T = VECTOR_BIT_AND(VECTOR_LOAD((CAST)(&left[3][i])), VECTOR_LOAD((CAST)(&right[3][i]))),
+ v_N = VECTOR_BIT_OR(VECTOR_BIT_OR(l_A, l_C), VECTOR_BIT_OR(l_G, l_T));
+
+ v_N = VECTOR_AND_NOT(v_N, allOne);
+
+ sum += vectorPopcount(v_N);
+ if (perSiteScores)
+ storePerSiteScores (pr, model, v_N, i);
+ }
+ }
+ break;
+ case 20:
+ {
+ parsimonyNumber
+ *left[20],
+ *right[20];
+
+ for(k = 0; k < 20; k++)
+ {
+ left[k] = &(pr->partitionData[model]->parsVect[(width * 20 * qNumber) + width * k]);
+ right[k] = &(pr->partitionData[model]->parsVect[(width * 20 * pNumber) + width * k]);
+ }
+
+ for(i = 0; i < width; i += INTS_PER_VECTOR)
+ {
+ int
+ j;
+
+ INT_TYPE
+ l_A,
+ v_N = SET_ALL_BITS_ZERO;
+
+ for(j = 0; j < 20; j++)
+ {
+ l_A = VECTOR_BIT_AND(VECTOR_LOAD((CAST)(&left[j][i])), VECTOR_LOAD((CAST)(&right[j][i])));
+ v_N = VECTOR_BIT_OR(l_A, v_N);
+ }
+
+ v_N = VECTOR_AND_NOT(v_N, allOne);
+
+ sum += vectorPopcount(v_N);
+ if (perSiteScores)
+ storePerSiteScores (pr, model, v_N, i);
+ }
+ }
+ break;
+ default:
+ {
+ parsimonyNumber
+ *left[32],
+ *right[32];
+
+ assert(states <= 32);
+
+ for(k = 0; k < states; k++)
+ {
+ left[k] = &(pr->partitionData[model]->parsVect[(width * states * qNumber) + width * k]);
+ right[k] = &(pr->partitionData[model]->parsVect[(width * states * pNumber) + width * k]);
+ }
+
+ for(i = 0; i < width; i += INTS_PER_VECTOR)
+ {
+ size_t
+ j;
+
+ INT_TYPE
+ l_A,
+ v_N = SET_ALL_BITS_ZERO;
+
+ for(j = 0; j < states; j++)
+ {
+ l_A = VECTOR_BIT_AND(VECTOR_LOAD((CAST)(&left[j][i])), VECTOR_LOAD((CAST)(&right[j][i])));
+ v_N = VECTOR_BIT_OR(l_A, v_N);
+ }
+
+ v_N = VECTOR_AND_NOT(v_N, allOne);
+
+ sum += vectorPopcount(v_N);
+ if (perSiteScores)
+ storePerSiteScores (pr, model, v_N, i);
+ }
+ }
+ }
+ }
+
+ return sum;
+}
+
+unsigned int pllEvaluateParsimony(pllInstance *tr, partitionList *pr, nodeptr p, boolean full, boolean perSiteScores)
+{
+ volatile unsigned int result;
+ nodeptr q = p->back;
+ int
+ *ti = tr->ti,
+ counter = 4;
+
+ ti[1] = p->number;
+ ti[2] = q->number;
+
+ if(full)
+ {
+ if(p->number > tr->mxtips)
+ computeTraversalInfoParsimony(p, ti, &counter, tr->mxtips, full);
+ if(q->number > tr->mxtips)
+ computeTraversalInfoParsimony(q, ti, &counter, tr->mxtips, full);
+ }
+ else
+ {
+ if(p->number > tr->mxtips && !p->xPars)
+ computeTraversalInfoParsimony(p, ti, &counter, tr->mxtips, full);
+ if(q->number > tr->mxtips && !q->xPars)
+ computeTraversalInfoParsimony(q, ti, &counter, tr->mxtips, full);
+ }
+
+ ti[0] = counter;
+
+ result = evaluateParsimonyIterativeFast(tr, pr, perSiteScores);
+
+ return result;
+}
diff --git a/src/pll.h b/src/pll.h
new file mode 100644
index 0000000..5d2d7fa
--- /dev/null
+++ b/src/pll.h
@@ -0,0 +1,1733 @@
+/**
+ * PLL (version 1.0.0) a software library for phylogenetic inference
+ * Copyright (C) 2013 Tomas Flouri and Alexandros Stamatakis
+ *
+ * Derived from
+ * RAxML-HPC, a program for sequential and parallel estimation of phylogenetic
+ * trees by Alexandros Stamatakis
+ *
+ * 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 3 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, see <http://www.gnu.org/licenses/>.
+ *
+ * For any other enquiries send an Email to Tomas Flouri
+ * Tomas.Flouri at h-its.org
+ *
+ * When publishing work that uses PLL please cite PLL
+ *
+ * ABSTRACT
+ *
+ * PLL is a highly optimized, parallelized software library to ease the
+ * development of new software tools dealing with phylogenetic inference. Among
+ * the functions included in PLL are
+ *
+ * DOCUMENTATION
+ *
+ * Extensive documentation for using PLL is available online at
+ *
+ * http://www.libpll.org
+ *
+ *
+ * USAGE
+ *
+ * To use PLL,
+ *
+ * @file pll.h
+ * @brief Data structures for tree and model
+ *
+ * @author Tomas Flouri
+ * @author Fernando Izquierdo-Carrasco
+ * @author Andre Aberer
+ * @author Alexandros Stamatakis
+ */
+
+#ifndef __pll__
+#define __pll__
+
+#include <stdint.h>
+#include <stdio.h>
+#include <errno.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#ifdef __MIC_NATIVE
+#define PLL_BYTE_ALIGNMENT 64
+#define PLL_VECTOR_WIDTH 8
+#elif defined (__AVX)
+
+#include <xmmintrin.h>
+#include <immintrin.h>
+#include <pmmintrin.h>
+
+#define PLL_BYTE_ALIGNMENT 32
+#define PLL_VECTOR_WIDTH 4
+
+#elif defined (__SSE3)
+
+#include <xmmintrin.h>
+#include <pmmintrin.h>
+
+#define PLL_BYTE_ALIGNMENT 16
+#define PLL_VECTOR_WIDTH 2
+
+#else
+#define PLL_BYTE_ALIGNMENT 1
+#define PLL_VECTOR_WIDTH 1
+#endif
+
+#include "stack.h"
+#include "queue.h"
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#else
+#define PACKAGE_VERSION x.x.x
+#endif
+
+#define PLL_MAX_TIP_EV 0.999999999 /* max tip vector value, sum of EVs needs to be smaller than 1.0, otherwise the numerics break down */
+#define PLL_MAX_LOCAL_SMOOTHING_ITERATIONS 32 /** @brief maximum iterations of smoothings per insert in the */
+#define PLL_ITERATIONS 10 /* maximum iterations of iterations per insert */
+#define PLL_NEWZPERCYCLE 1 /* iterations of makenewz per tree traversal */
+#define PLL_NMLNGTH 256 /* number of characters in species name */
+#define PLL_DELTAZ 0.00001 /* test of net branch length change in update */
+#define PLL_DEFAULTZ 0.9 /* value of z assigned as starting point */
+#define PLL_UNLIKELY -1.0E300 /* low likelihood for initialization */
+#define PLL_SUMMARIZE_LENGTH -3
+#define PLL_SUMMARIZE_LH -2
+#define PLL_NO_BRANCHES -1
+#define PLL_MASK_LENGTH 32
+#define PLL_ZMIN 1.0E-15 /* max branch prop. to -log(PLL_ZMIN) (= 34) */
+#define PLL_ZMAX (1.0 - 1.0E-6) /* min branch prop. to 1.0-zmax (= 1.0E-6) */
+#define PLL_TWOTOTHE256 115792089237316195423570985008687907853269984665640564039457584007913129639936.0 /* 2**256 (exactly) */
+#define PLL_MINLIKELIHOOD (1.0/PLL_TWOTOTHE256)
+#define PLL_MINUSMINLIKELIHOOD -PLL_MINLIKELIHOOD
+
+
+#define PLL_FORMAT_PHYLIP 1
+#define PLL_FORMAT_FASTA 2
+#define PLL_FORMAT_NEWICK 3
+
+#define PLL_NNI_P_NEXT 1 /**< Use p->next for the NNI move */
+#define PLL_NNI_P_NEXTNEXT 2 /**< Use p->next->next for the NNI move */
+
+#define PLL_BADREAR -1
+
+#define PLL_NUM_BRANCHES 2900
+
+#define PLL_TRUE 1
+#define PLL_FALSE 0
+
+#define PLL_REARRANGE_SPR 0
+#define PLL_REARRANGE_TBR 1
+#define PLL_REARRANGE_NNI 2
+
+#define PLL_AA_SCALE 10.0
+#define PLL_AA_SCALE_PLUS_EPSILON 10.001
+
+/* ALPHA_MIN is critical -> numerical instability, eg for 4 discrete rate cats */
+/* and alpha = 0.01 the lowest rate r_0 is */
+/* 0.00000000000000000000000000000000000000000000000000000000000034878079110511010487 */
+/* which leads to numerical problems Table for alpha settings below: */
+/* */
+/* 0.010000 0.00000000000000000000000000000000000000000000000000000000000034878079110511010487 */
+/* 0.010000 yielded nasty numerical bugs in at least one case ! */
+/* 0.020000 0.00000000000000000000000000000044136090435925743185910935350715027016962154188875 */
+/* 0.030000 0.00000000000000000000476844846859006690412039180149775802624789852441798419292220 */
+/* 0.040000 0.00000000000000049522423236954066431210260930029681736928018820007024736185030633 */
+/* 0.050000 0.00000000000050625351310359203371872643495343928538368616365517027588794007897377 */
+/* 0.060000 0.00000000005134625283884191118711474021861409372524676086868566926568746566772461 */
+/* 0.070000 0.00000000139080650074206434685544624965062437960128249869740102440118789672851562 */
+/* 0.080000 0.00000001650681201563587066858709818343436959153791576682124286890029907226562500 */
+/* 0.090000 0.00000011301977332931251259273962858978301859735893231118097901344299316406250000 */
+/* 0.100000 0.00000052651925834844387815526344648331402709118265192955732345581054687500000000 */
+
+#define PLL_ALPHA_MIN 0.02
+#define PLL_ALPHA_MAX 1000.0
+
+#define PLL_RATE_MIN 0.0000001
+#define PLL_RATE_MAX 1000000.0
+
+#define PLL_LG4X_RATE_MIN 0.0000001
+#define PLL_LG4X_RATE_MAX 1000.0
+
+#define PLL_FREQ_MIN 0.001
+
+#define PLL_NUM_AA_STATES 20
+#define PLL_NUM_DNA_STATES 4
+
+/*
+ previous values between 0.001 and 0.000001
+
+ TO AVOID NUMERICAL PROBLEMS WHEN FREQ == 0 IN PARTITIONED MODELS, ESPECIALLY WITH AA
+ previous value of FREQ_MIN was: 0.000001, but this seemed to cause problems with some
+ of the 7-state secondary structure models with some rather exotic small toy test datasets,
+ on the other hand 0.001 caused problems with some of the 16-state secondary structure models
+
+ For some reason the frequency settings seem to be repeatedly causing numerical problems
+*/
+
+#define PLL_ITMAX 100 /* max number of iterations in brent's algorithm */
+
+#define PLL_SHFT(a,b,c,d) (a)=(b);(b)=(c);(c)=(d);
+#define PLL_SIGN(a,b) ((b) > 0.0 ? fabs(a) : -fabs(a))
+#define PLL_ABS(x) (((x)<0) ? (-(x)) : (x))
+#define PLL_MIN(x,y) (((x)<(y)) ? (x) : (y))
+#define PLL_MAX(x,y) (((x)>(y)) ? (x) : (y))
+#define PLL_SWAP(x,y) do{ __typeof__ (x) _t = x; x = y; y = _t; } while(0)
+#define PLL_POINT_GAMMA(prob,alpha,beta) PointChi2(prob,2.0*(alpha))/(2.0*(beta))
+
+#define PLL_LIB_NAME "PLL"
+#define PLL_LIB_VERSION PACKAGE_VERSION
+#define PLL_LIB_DATE "March 9 2015"
+
+/* aminoacid substitution models */
+#define PLL_DAYHOFF 0
+#define PLL_DCMUT 1
+#define PLL_JTT 2
+#define PLL_MTREV 3
+#define PLL_WAG 4
+#define PLL_RTREV 5
+#define PLL_CPREV 6
+#define PLL_VT 7
+#define PLL_BLOSUM62 8
+#define PLL_MTMAM 9
+#define PLL_LG 10
+#define PLL_MTART 11
+#define PLL_MTZOA 12
+#define PLL_PMB 13
+#define PLL_HIVB 14
+#define PLL_HIVW 15
+#define PLL_JTTDCMUT 16
+#define PLL_FLU 17
+#define PLL_STMTREV 18
+#define PLL_AUTO 19
+#define PLL_LG4M 20
+#define PLL_LG4X 21
+#define PLL_GTR 22 /* GTR always needs to be the last one */
+#define PLL_NUM_PROT_MODELS 23
+
+/* information criteria for auto protein model selection */
+#define PLL_AUTO_ML 0
+#define PLL_AUTO_BIC 1
+#define PLL_AUTO_AIC 2
+#define PLL_AUTO_AICC 3
+
+/* bipartition stuff */
+#define PLL_BIPARTITIONS_RF 4
+
+/* scenarios for likelihood computation */
+#define PLL_TIP_TIP 0
+#define PLL_TIP_INNER 1
+#define PLL_INNER_INNER 2
+
+
+/* available data types in PLL */
+#define PLL_MIN_MODEL -1
+#define PLL_BINARY_DATA 0
+#define PLL_DNA_DATA 1
+#define PLL_AA_DATA 2
+#define PLL_SECONDARY_DATA 3
+#define PLL_SECONDARY_DATA_6 4
+#define PLL_SECONDARY_DATA_7 5
+#define PLL_GENERIC_32 6
+#define PLL_GENERIC_64 7
+#define PLL_MAX_MODEL 8
+
+#define PLL_SEC_6_A 0
+#define PLL_SEC_6_B 1
+#define PLL_SEC_6_C 2
+#define PLL_SEC_6_D 3
+#define PLL_SEC_6_E 4
+
+#define PLL_SEC_7_A 5
+#define PLL_SEC_7_B 6
+#define PLL_SEC_7_C 7
+#define PLL_SEC_7_D 8
+#define PLL_SEC_7_E 9
+#define PLL_SEC_7_F 10
+
+#define PLL_SEC_16 11
+#define PLL_SEC_16_A 12
+#define PLL_SEC_16_B 13
+#define PLL_SEC_16_C 14
+#define PLL_SEC_16_D 15
+#define PLL_SEC_16_E 16
+#define PLL_SEC_16_F 17
+#define PLL_SEC_16_I 18
+#define PLL_SEC_16_J 19
+#define PLL_SEC_16_K 20
+
+#define PLL_ORDERED_MULTI_STATE 0
+#define PLL_MK_MULTI_STATE 1
+#define PLL_GTR_MULTI_STATE 2
+
+
+/* available models of rate heterogeneity in PLL */
+#define PLL_CAT 0
+#define PLL_GAMMA 1
+
+/* recomp */
+#define PLL_SLOT_UNUSED -2 /* value to mark an available vector */
+#define PLL_NODE_UNPINNED -3 /* marks an inner node as not available in RAM */
+#define PLL_INNER_NODE_INIT_STLEN -1 /* initialization */
+
+#define PLL_MIN_RECOM_FRACTION 0.1 /* at least this % of inner nodes will be allocated in RAM */
+#define PLL_MAX_RECOM_FRACTION 1.0 /* always 1, just there for boundary checks */
+
+
+typedef int boolean;
+
+/* @brief PLL instance attribute structure */
+typedef struct
+{
+ int rateHetModel;
+ int fastScaling;
+ int saveMemory;
+ int useRecom;
+ long randomNumberSeed;
+ int numberOfThreads;
+} pllInstanceAttr;
+
+/** @brief Stores the recomputation-state of likelihood vectors */
+typedef struct
+{
+ int numVectors; /**< Number of inner vectors allocated in RAM*/
+ int *iVector; /**< size: numVectors, stores node id || PLL_SLOT_UNUSED */
+ int *iNode; /**< size: inner nodes, stores slot id || PLL_NODE_UNPINNED */
+ int *stlen; /**< Number of tips behind the current orientation of the indexed inner node (subtree size/cost) */
+ int *unpinnable; /**< size:numVectors , TRUE if we dont need the vector */
+ int maxVectorsUsed;
+ boolean allSlotsBusy; /**< on if all slots contain an ancesctral node (the usual case after first full traversal) */
+} recompVectors;
+/* E recomp */
+
+/** @brief ???
+ * @todo add explanation, is this ever used? */
+
+typedef unsigned int hashNumberType;
+
+
+
+/*typedef uint_fast32_t parsimonyNumber;*/
+
+#define PLL_PCF 32
+
+/** @brief ???Hash tables
+ * @todo add explanation of all hash tables */
+typedef struct pllBipartitionEntry
+{
+ unsigned int *bitVector;
+ unsigned int *treeVector;
+ unsigned int amountTips;
+ int *supportVector;
+ unsigned int bipNumber;
+ unsigned int bipNumber2;
+ unsigned int supportFromTreeset[2];
+ struct pllBipartitionEntry *next;
+} pllBipartitionEntry;
+
+//typedef struct
+//{
+// hashNumberType tableSize;
+// entry **table;
+// hashNumberType entryCount;
+//}
+// hashtable;
+//struct stringEnt
+//{
+// int nodeNumber;
+// char *word;
+// struct stringEnt *next;
+//};
+//
+//typedef struct stringEnt stringEntry;
+//typedef struct
+//{
+// hashNumberType tableSize;
+// stringEntry **table;
+//}
+// stringHashtable;
+
+typedef struct pllHashItem
+{
+ void * data;
+ char * str;
+ struct pllHashItem * next;
+} pllHashItem;
+
+typedef struct pllHashTable
+{
+ unsigned int size;
+ struct pllHashItem ** Items;
+ unsigned int entries;
+} pllHashTable;
+
+
+
+
+/** @brief Per-site Rate category entry: likelihood per-site and CAT rate applied ???
+ *
+ */
+typedef struct ratec
+{
+ double accumulatedSiteLikelihood;
+ double rate;
+}rateCategorize;
+
+/** @brief Traversal descriptor entry.
+ *
+ * Contains the information required to execute an operation in a step of the tree traversal.
+ * q r
+ * \ /
+ * p
+ *
+ * The entry defines 2 input/parent nodes (q and r) and one output/child node (p)
+ * qz represents the branch length(s) of the branch connecting q and p
+ * rz represents the branch length(s) of the branch connecting r and p
+ * PLL_TIP_TIP Both p and r are tips
+ * PLL_INNER_INNER Both p and r are inner nodes
+ * @note PLL_TIP_INNER q is a tip and r is an inner node (by convention, flip q and r if required)
+ */
+typedef struct
+{
+ int tipCase; /**< Type of entry, must be PLL_TIP_TIP PLL_TIP_INNER or PLL_INNER_INNER */
+ int pNumber; /**< should exist in some nodeptr p->number */
+ int qNumber; /**< should exist in some nodeptr q->number */
+ int rNumber; /**< should exist in some nodeptr r->number */
+ double qz[PLL_NUM_BRANCHES];
+ double rz[PLL_NUM_BRANCHES];
+ /* recom */
+ int slot_p; /**< In recomputation mode, the RAM slot index for likelihood vector of node p, otherwise unused */
+ int slot_q; /**< In recomputation mode, the RAM slot index for likelihood vector of node q, otherwise unused */
+ int slot_r; /**< In recomputation mode, the RAM slot index for likelihood vector of node r, otherwise unused */
+ /* E recom */
+} traversalInfo;
+
+/** @brief Traversal descriptor.
+ *
+ * Describes the state of a traversal descriptor
+ */
+typedef struct
+{
+ traversalInfo *ti; /**< list of traversal steps */
+ int count; /**< number of traversal steps */
+ int functionType;
+ boolean traversalHasChanged;
+ boolean *executeModel;
+ double *parameterValues;
+} traversalData;
+
+/** @brief Node record structure
+ *
+ * Each inner node is a trifurcation in the tree represented as a circular list containing 3 node records. One node record uniquely identifies a subtree, and the orientation of the likelihood vector within a node
+ *
+ * p1 -------> p2 ----> to the next node
+ * ^ |
+ * |-----p3<---|
+ *
+ */
+struct noderec;
+
+/** @brief Branch length information.
+ *
+ * @todo add relevant info on where this is used ???
+ */
+typedef struct
+{
+ unsigned int *vector;
+ int support;
+ struct noderec *oP;
+ struct noderec *oQ;
+} branchInfo;
+
+
+
+
+
+/** @brief Linkage of partitions.
+ *
+ * @todo add relevant info on where this is used ???
+ */
+typedef struct
+{
+ boolean valid;
+ int partitions;
+ int *partitionList;
+}
+ linkageData;
+typedef struct
+{
+ int entries;
+ linkageData* ld;
+}
+ linkageList;
+
+
+
+ /**
+ *
+ * the data structure below is fundamental for representing trees
+ in the library!
+
+ Inner nodes are represented by three instances of the nodeptr data structure that is linked
+ via a cyclic list using the next pointer.
+
+ So for building an inner node of the tree we need to allocate three nodeptr
+ data structures and link them together, e.g.:
+
+ assuming that we have allocated space for an inner node
+ for nodeptr pointers p1, p2, p3,
+
+ we would then link them like this:
+
+ p1->next = p2;
+ p2->next = p3;
+ p3->next = p1;
+
+ also note that the node number that identifies the inner node
+ needs to be set to the same value.
+
+ for n taxa, tip nodes are enumarated/indexed from 1....n,
+ and inner node inbdices start at n+1. Assuming that we have 10 taxa
+ and this is our first inner node, we'd initialize the number as follows:
+
+ p1->number = 11;
+ p2->number = 11;
+ p3->number = 11;
+
+ Note that the node number is important for indexing tip sequence data as well as inner likelihood vectors
+ and that it is this number (the index) that actually gets stored in the traversal descriptor.
+
+ Tip nodes are non-cyclic nodes that simply consist of one instance/allocation of nodeptr.
+
+ if we have allocated a tip data structure nodeptr t1,
+ we would initialize it as follows:
+
+ t1->number = 1;
+
+ t1->next = NULL;
+
+ now let's assume that we want to build a four taxon tree with tips t1, t2, t3, t4
+ and inner nodes (p1,p2,p3) and (q1,q2,q3).
+
+ we first build the tips:
+
+ t1->number = 1;
+ t1->next = NULL;
+
+ t2->number = 2;
+ t2->next = NULL;
+
+ t3->number = 3;
+ t3->next = NULL;
+
+ t4->number = 4;
+ t4->next = NULL;
+
+ now the first inner node
+
+ p1->next = p2;
+ p2->next = p3;
+ p3->next = p1;
+
+ p1->number = 5;
+ p2->number = 5;
+ p3->number = 5;
+
+ and the second inner node.
+
+ q1->next = q2;
+ q2->next = q3;
+ q3->next = q1;
+
+ q1->number = 6;
+ q2->number = 6;
+ q3->number = 6;
+
+ now we need to link the nodes together such that they form a tree, let's assume we want ((t1,t2), (t3, t4));
+
+ we will have to link the nodes via the so-called back pointer,
+ i.e.:
+
+ let's connect node p with t1 and t2
+
+ t1->back = p1;
+ t2->back = p2;
+
+ and vice versa:
+
+ p1->back = t1;
+ p2->back = t2;
+
+ let's connect node p with node q:
+
+ p3->back = q3;
+
+ and vice versa:
+
+ q3->back = p3;
+
+ and now let's connect node q with tips t3 and t4:
+
+ q1->back = t3;
+ q2->back = t4;
+
+ and vice versa:
+
+ t3->back = q1;
+ t4->back = q2;
+
+ What remains to be done is to set up the branch lengths.
+ Using the data structure below, we always have to store the
+ branch length twice for each "topological branch" unfortunately.
+
+ Assuming that we are only estimating a single branch across all partitions
+ we'd just set the first index of the branch length array z[PLL_NUM_BRANCHES].
+
+ e.g.,
+
+ t3->z[0] = q1->z[0] = 0.9;
+
+ the above operation for connecting nodes is implemented in functions hookup() which will set
+ the back pointers of two nodes that are to be connected as well as the branch lengths.
+
+ The branchInfo data field is a pointer to a data-structure that stores meta-data and requires
+ the tree not to change while it is being used.
+
+ Also, this pointer needs to be set by doing a full tree traversal on the tree.
+
+ Note that q1->bInf == t3->bInf in the above example.
+
+ The hash number is used for mapping bipartitions to a hash table as described in the following paper:
+
+ A. Aberer, N. Pattengale, A. Stamatakis: "Parallelized phylogenetic post-analysis on multi-core architectures". Journal of Computational Science 1, 107-114, 2010.
+
+ The support data field stores the support value for the branch associated with each nodeptr structure.
+ Note that support always refers to branches.
+
+ Thus for consistency, q3->support must be equal to p3->support;
+
+ Finally, the three char fields x, xPars and xBips are very very important!
+
+ They are used to denote the presence/absence or if you want, direction of the
+ parsimony, bipartition, or likelihood vector at a node with respect to the virtual root.
+
+ Essentially, they are just used as single presence/absence bits and ONLY for inner nodes!
+
+ When setting up new inner nodes, one of the three pointers in the cyclic list must
+ have x = 1 and the other two x = 0;
+
+ in the above example we could set:
+
+ p1->x = 0;
+ p2->x = 0;
+ p3->x = 1;
+
+ q1->x = 0;
+ q2->x = 0;
+ q3->x = 1;
+
+ This would mean that the virtual root is located at the inner branch of the four taxon tree ((t1,t2),(t3,t4));
+
+ When we re-root the tree at some other branch we need to update the location of the x pointer that is set to 1.
+
+ This means if we root the tree at the branch leading to t1 we would set
+
+ p1->x = 1;
+ p2->x = 0;
+ p3->x = 0;
+
+ the values for q remaon unchanged since q3 is still pointing toward the root.
+
+ When we re-locate the root to branch p1 <-> t1 the fact that we have to "rotate" the x value that is set to 1
+ to another node of the cyclic list representing the abstract topological node p, also tells us that we
+ need to re-compute the conditional likelihood array for p.
+
+ Note that, only one likelihood or parsimony array is stored per inner node and the location of x essentially tells us which subtree
+ it summarizes, if p1->x == 1, it summarizes subtree (t2, (t3, t4)), if p3->x = 1 the likelihood vector associated with
+ node p summarizes subtree (t1, t2).
+
+ @todo I think we should rename the back pointer. It's not back, it can be forward depending on the orientation. We should renmae it to outer. Back is too confusing, I would assume it's the opposite of next, i.e. previous.
+
+ @struct noderec
+
+ @brief Tree node record
+
+ A node in a tree is a structure which contains a cyclic list of pointers to 3 nodes which we call a \e roundabout. The first node is the structure itself, and the other two nodes are accessed via \a noderec->next and \a noderec->next->next. To access the outer node with which each of the 3 nodes forms an edge one has to use the \a back pointer
+
+ @var noderec::next
+ @brief Next node in the roundabout
+
+ @var noderec::back
+ @brief Outer node
+
+ @var noderec::number
+ @brief Node identifier
+
+ In general, tips (i.e. leaves) are numbered from 1 to \e n where \e n is the number of taxa. Identifiers for internal nodes start from \e n + 1. Note
+ that for a given inner node, the identifier must be the same for all 3 nodes that compose it.
+
+ @var info::z
+ @brief The branch lengths per partition for the main node in the roundabout
+
+ @todo Append an image
+ */
+typedef struct noderec
+{
+
+ branchInfo *bInf;
+ double z[PLL_NUM_BRANCHES];
+ struct noderec *next;
+ struct noderec *back;
+ hashNumberType hash;
+ int support;
+ int number;
+ char x;
+ char xPars;
+ char xBips;
+}
+ node, *nodeptr;
+
+typedef unsigned int parsimonyNumber;
+
+/* @brief Alignment, transition model, model of rate heterogenety and likelihood vectors for one partition.
+ *
+ * @todo De-couple into smaller data structures
+ *
+ * ALIGNMENT DATA
+ * This depends only on the type of data in this partition of the alignment
+ *
+ * MODEL OF RATE HETEROGENETY, We use either GAMMA or PSR
+ * Rate heterogenety: Per Site Categories (PSR) model aka CAT,
+ * Rate of site i is given by perSiteRates[rateCategory[i]]
+ *
+ * TRANSITION MODEL: We always assume General Time Reversibility
+ * Transistion probability matrix: P(t) = exp(Qt)
+ * Branch length t is the expected number of substitutions per site
+ * Pij(t) is the probability of going from state i to state j in a branch of length t
+ * Relative substitution rates (Entries in the Q matrix)
+ * In GTR we can write Q = S * D, where S is a symmetrical matrix and D a diagonal with the state frequencies
+
+ @var protModels
+ @brief Protein models
+
+ @detail Detailed protein models descriptiopn
+
+ @var autoProtModels
+ @brief Auto prot models
+ @detail Detailed auto prot models
+ */
+
+
+
+/** @struct pInfo
+
+ @brief Partition information structure
+
+ This data structure encapsulates all properties and auxiliary variables that together
+ consist a partition.
+
+ @var pInfo::dataType
+ @brief Type of data this partition contains
+
+ Can be DNA (\b PLL_DNA_DATA) or AminoAcid (\b PLL_AA_DATA) data
+
+ @var pInfo::states
+ @brief Number of states
+
+ Number of states this type of data can consist of
+
+ @var pInfo::maxTipStates
+ @brief Number of undetermined states (possible states at the tips)
+
+ This is the total number of possible states that can appear in the alignment. This includes degenerate (undetermined) bases
+
+ @var pInfo::partitionName
+ @brief Name of partition
+
+ A null-terminated string describing the name of partition
+
+ @var pInfo::lower
+ @brief Position of the first site in the alignment that is part of this partition [1, tr->originalCrunchedLength]
+
+ @var pInfo::upper
+ @brief Position of the last site that is part of this partition plus one (i.e. position of the first site that is not part of this partition)
+
+ @var pInfo::width
+ @brief Number of sites in the partition (i.e. \a upper - \a lower)
+
+ @var pInfo::wgt
+ @brief Weight of site
+
+ Number of times this particular site appeared in the partition before the duplicates were removed and replaced by this weight
+
+ @var pInfo::empiricalFrequencies
+ @brief Empirical frequency of each state in the current partition
+
+ @var pInfo::perSiteRates
+ @brief Per Site Categories (PSR) or aka CAT values for each rate
+
+ @var pInfo::rateCategory
+ @brief CAT category index for each site
+
+ @var pInfo::numberOfCategories
+ @brief CAT size of the set of possible categories
+
+ @var pInfo::alpha
+ @brief Gamma parameter to be optimized
+
+ @var pInfo::gammaRates
+ @brief Values of the 4 gamma categories (rates) computed given an alpha
+
+ @var pInfo::substRates
+ @brief Entries of substitution matrix, e.g. 6 free parameters in DNA
+
+ In GTR we can write \f$ Q = S * D \f$, where \f$ S \f$ is a symmetrical matrix and \f$ D \f$ a diagonal with the state frequencies,
+ which is represented by the array \a frequencies. The symmetrical matrix is the array \a substRates
+
+ @var pInfo::frequencies
+ @brief State frequencies, entries in D are initialized as empiricalFrequencies
+
+ In GTR we can write \f$ Q = S * D \f$, where \f$ S \f$ is a symmetrical matrix and \f$ D \f$ a diagonal with the state frequencies,
+ which is represented by the array \a frequencies. The symmetrical matrix is the array \a substRates
+
+ @var pInfo::freqExponents
+
+ @var pInfo::EIGN
+ @brief Eigenvalues of Q matrix
+
+ @var pInfo::EV
+ @brief Eigenvectors of Q matrix
+
+ @var pInfo::EI
+ @brief Inverse eigenvectors of Q matrix
+
+ @var pInfo::left
+ @brief P matrix for the left term of the conditional likelihood equation
+
+ @var pInfo::right
+ @brief P matrix for the right term of the conditional likelihood equation
+
+ @var pInfo::tipVector
+ @brief Precomputed (based on current P matrix) conditional likelihood vectors for every possible base
+
+ @var pInfo::EIGN_LG4
+ @brief Eigenvalues of Q matrix for the LG4 model
+
+ @var pInfo::EV_LG4
+ @brief Eigenvectors of Q matrix for the LG4 model
+
+ @var pInfo::EI_LG4
+ @brief Inverse eigenvectors of Q matrix for the LG4 model
+
+ @var pInfo::frequencies_LG4
+ @brief State frequencies for the LG4 model
+
+ @var pInfo::tipVector_LG4
+ @brief Precomputed (based on current P matrix) conditional likelihood vectors for every possible base for the LG4 model
+
+ @var pInfo::substRates_LG4
+ @brief Entries of substitution matrix for the LG4 model
+
+ @var pInfo::protModels
+ @brief Protein model for current partition
+
+ In case \a pInfo::dataType is set to \a PLL_AA_DATA then \a protModels indicates the index in the global array \a protModels
+ of the protein model that the current partition uses.
+
+ @var pInfo::autoProtModels
+ @brief Best fitted protein model for the \b PLL_AUTO partitions
+
+ If \a protModels is set to \b PLL_AUTO then \a autoProtModels holds the currently detected best fitting protein model for the partition
+
+ @var pInfo::protUseEmpiricalFreqs
+
+ @var pInfo::nonGTR
+
+ @var pInfo::optimizeBaseFrequencies
+
+ @var pInfo::optimizeAlphaParameter
+
+ @var pInfo::optimizeSubstitutionRates
+
+ @var pInfo::symmetryVector
+
+ @var pInfo::frequencyGrouping
+
+
+ @todo
+ Document freqExponents
+
+*/
+
+
+
+typedef struct {
+ int dataType;
+ int states;
+ int maxTipStates;
+ char *partitionName;
+ int lower;
+ int upper;
+ int width;
+ int *wgt;
+ double *empiricalFrequencies;
+
+
+ /* MODEL OF RATE HETEROGENETY, We use either GAMMA or PSR */
+ /* Rate heterogenety: Per Site Categories (PSR) model aka CAT, see updatePerSiteRates() */
+ /* Rate of site i is given by perSiteRates[rateCategory[i]] */
+ double *perSiteRates;
+ int *rateCategory;
+ int numberOfCategories;
+ /* Rate heterogenety: GAMMA model of rate heterogenety */
+ double alpha;
+ double *gammaRates;
+
+
+ /* TRANSITION MODEL: We always assume General Time Reversibility */
+ /* Transistion probability matrix: P(t) = exp(Qt)*/
+ /* Branch length t is the expected number of substitutions per site */
+ /* Pij(t) is the probability of going from state i to state j in a branch of length t */
+ /* Relative substitution rates (Entries in the Q matrix) */
+ /* In GTR we can write Q = S * D, where S is a symmetrical matrix and D a diagonal with the state frequencies */
+ double *substRates; /**< TRANSITION MODEL Entries in S, e.g. 6 free parameters in DNA */
+ double *frequencies; /**< State frequencies, entries in D, are initialized as empiricalFrequencies */
+ double *freqExponents;
+ /* Matrix decomposition: @todo map this syntax to Explanation of the mathematical background */
+ double *EIGN;
+ double *EV;
+ double *EI;
+ double *left;
+ double *right;
+ double *tipVector;
+
+
+ /* asc bias */
+ boolean ascBias;
+ int ascOffset;
+ int * ascExpVector;
+ double * ascSumBuffer;
+ double * ascVector;
+ double ascScaler[64];
+
+ /* LG4 */
+
+ double *EIGN_LG4[4];
+ double *rawEIGN_LG4[4];
+ double *EV_LG4[4];
+ double *EI_LG4[4];
+
+ double *frequencies_LG4[4];
+ double *tipVector_LG4[4];
+ double *substRates_LG4[4];
+
+ /* LG4X */
+
+ double lg4x_weights[4];
+ double lg4x_weightExponents[4];
+ double lg4x_weightsBuffer[4];
+ double lg4x_weightExponentsBuffer[4];
+ double lg4x_weightLikelihood;
+
+ /* Protein specific */
+ int protModels; /**< Empirical model matrix */
+ int autoProtModels; /**< Model selected with "auto" protein model */
+ int protUseEmpiricalFreqs; /**< Whether to use empirical frequencies for protein model */
+
+ boolean nonGTR;
+ boolean optimizeBaseFrequencies; /**< Whether to optimize base frequencies */
+ boolean optimizeAlphaParameter; /**< Whether to optimize alpha parameters and gamma rates */
+ boolean optimizeSubstitutionRates; /**< Whether to optimize substitution rates */
+ int *symmetryVector; /**< Specify linkage between substitution rate parameters */
+ int *frequencyGrouping;
+
+ /* LIKELIHOOD VECTORS */
+
+ /* partial LH Inner vectors ancestral vectors, we have 2*tips - 3 inner nodes */
+ double **xVector; /**< Conditional likelihood vectors for inner nodes */
+ unsigned char **yVector; /**< Tip entries (sequence) for tip nodes */
+ unsigned int *globalScaler; /**< Counters for scaling operations done at node i */
+
+ /* data structures for conducting per-site likelihood scaling.
+ this allows to compute the per-site log likelihood scores
+ needed for RELL-based bootstrapping and all sorts of statistical
+ tests for comparing trees ! */
+ int **expVector; /**< @brief An entry per inner node. Each element is an array of size the number of sites in the current partition and represents how many times the respective site has been scaled in the subtree rooted at the current node */
+ size_t *expSpaceVector; /**< @brief Each entry represents an inner node and states the size of the corresponding element in \a expVector, which is the number of sites for the current partition */
+
+ /* These are for the saveMemory option (tracking gaps to skip computations and memory) */
+ size_t *xSpaceVector; /* Size of conditional likelihood vectors per inner node */
+ int gapVectorLength; /** Length of \a gapVector bitvector in unsigned integers assuming that \a unsigned \a int is 32bits. It is set to partition size / 32 */
+ unsigned int *gapVector; /** A bit vector of size \a gapVectorLength * 32 bits. A bit is set to 1 if the corresponding */
+ double *gapColumn;
+
+ /* Parsimony vectors at each node */
+ size_t parsimonyLength;
+ parsimonyNumber *parsVect;
+ parsimonyNumber *perSiteParsScores;
+
+ /* This buffer of size width is used to store intermediate values for the branch length optimization under
+ newton-raphson. The data in here can be re-used for all iterations irrespective of the branch length.
+ */
+ double *sumBuffer;
+
+ /* Buffer to store the per-site log likelihoods */
+ double *perSiteLikelihoods;
+
+ /* This buffer of size width is used to store the ancestral state at a node of the tree. */
+ double *ancestralBuffer;
+
+ /* From tree */
+ boolean executeModel;
+ double partitionContribution;
+ double partitionWeight;
+ double partitionLH;
+
+// #if (defined(_USE_PTHREADS) || defined(_FINE_GRAIN_MPI))
+ int partitionAssignment;
+// #endif
+
+} pInfo;
+
+typedef struct
+ {
+ pInfo **partitionData;
+ int numberOfPartitions;
+ boolean perGeneBranchLengths;
+ boolean dirty;
+ linkageList *alphaList;
+ linkageList *rateList;
+ linkageList *freqList;
+ } partitionList;
+
+
+
+#define PLL_REARR_SETTING 1
+#define PLL_FAST_SPRS 2
+#define PLL_SLOW_SPRS 3
+
+
+/** @brief Checkpointing states.
+ *
+ * @todo Raxml specific
+ */
+typedef struct {
+
+ int state;
+
+ /*unsigned int vLength;*/
+ double accumulatedTime;
+ int rearrangementsMax;
+ int rearrangementsMin;
+ int thoroughIterations;
+ int fastIterations;
+ int mintrav;
+ int maxtrav;
+ int bestTrav;
+ double startLH;
+ double lh;
+ double previousLh;
+ double difference;
+ double epsilon;
+ boolean impr;
+ boolean cutoff;
+
+ double tr_startLH;
+ double tr_endLH;
+ double tr_likelihood;
+ double tr_bestOfNode;
+ double tr_lhCutoff;
+ double tr_lhAVG;
+ double tr_lhDEC;
+ int tr_NumberOfCategories;
+ int tr_itCount;
+ int tr_doCutoff;
+ int tr_thoroughInsertion;
+ int tr_optimizeRateCategoryInvocations;
+
+ /* prevent users from doing stupid things */
+
+ int searchConvergenceCriterion;
+ int rateHetModel;
+ int maxCategories;
+ int NumberOfModels;
+ int numBranches;
+ int originalCrunchedLength;
+ int mxtips;
+ char seq_file[1024];
+} checkPointState;
+
+
+
+/* recomp */
+#ifdef _DEBUG_RECOMPUTATION
+typedef struct {
+ unsigned long int numTraversals;
+ unsigned long int tt;
+ unsigned long int ti;
+ unsigned long int ii;
+ unsigned int *travlenFreq;
+} traversalCounter;
+#endif
+/* E recomp */
+
+
+/** @brief Tree topology.
+ *
+ * @todo Apart from the topology this structure contains several fields that act like global variables in raxml
+ */
+typedef struct {
+
+ int *ti;
+
+ /* recomp */
+ recompVectors *rvec; /**< this data structure tracks which vectors store which nodes */
+ float maxMegabytesMemory; /**< User says how many MB in main memory should be used */
+ float vectorRecomFraction; /**< vectorRecomFraction ~= 0.8 * maxMegabytesMemory */
+ boolean useRecom; /**< ON if we apply recomputation of ancestral vectors*/
+#ifdef _DEBUG_RECOMPUTATION
+ traversalCounter *travCounter;
+ double stlenTime;
+#endif
+ /* E recomp */
+
+ boolean fastScaling;
+ boolean saveMemory;
+ int startingTree;
+ long randomNumberSeed;
+
+ double *lhs; /**< Array to store per-site log likelihoods of \a originalCrunchedLength (compressed) sites */
+ double *patrat; /**< rates per pattern */
+ double *patratStored;
+ int *rateCategory;
+ int *aliaswgt; /**< weight by pattern */
+ boolean manyPartitions;
+
+ boolean grouped; /**< No idea what this is, but is always set to PLL_FALSE */
+ boolean constrained; /**< No idea what this is, but is always set to PLL_FALSE */
+ int threadID;
+ volatile int numberOfThreads;
+
+//#if (defined(_USE_PTHREADS) || defined(_FINE_GRAIN_MPI))
+
+ unsigned char *y_ptr;
+
+ double lower_spacing;
+ double upper_spacing;
+
+ double *ancestralVector;
+
+//#endif
+
+ pllHashTable *nameHash;
+ char ** tipNames;
+
+ char *secondaryStructureInput;
+
+ traversalData td[1];
+
+ int maxCategories;
+ int categories;
+
+ double coreLZ[PLL_NUM_BRANCHES];
+
+
+ branchInfo *bInf;
+
+ int multiStateModel;
+
+
+ boolean curvatOK[PLL_NUM_BRANCHES];
+
+ /* the stuff below is shared among DNA and AA, span does
+ not change depending on datatype */
+
+ /* model stuff end */
+ unsigned char **yVector; /**< list of raw sequences (parsed from the alignment)*/
+
+ int secondaryStructureModel;
+ int originalCrunchedLength; /**< Length of alignment after removing duplicate sites in each partition */
+
+ int *secondaryStructurePairs;
+
+ double lhCutoff;
+ double lhAVG;
+ unsigned long lhDEC;
+ unsigned long itCount;
+ int numberOfInvariableColumns;
+ int weightOfInvariableColumns;
+ int rateHetModel;
+
+ double startLH;
+ double endLH;
+ double likelihood; /**< last likelihood value evaluated for the current topology */
+
+ node **nodep; /**< pointer to the list of nodes, which describe the current topology */
+ nodeptr nodeBaseAddress;
+ node *start; /**< starting node by default for full traversals (must be a tip contained in the tree we are operating on) */
+ int mxtips; /**< Number of tips in the topology */
+
+ int *constraintVector; /**< @todo What is this? */
+ int numberOfSecondaryColumns;
+ boolean searchConvergenceCriterion;
+ int ntips;
+ int nextnode;
+
+ boolean bigCutoff;
+ boolean partitionSmoothed[PLL_NUM_BRANCHES];
+ boolean partitionConverged[PLL_NUM_BRANCHES];
+ boolean rooted;
+ boolean doCutoff;
+
+ double gapyness;
+
+ char **nameList; /**< list of tips names (read from the phylip file) */
+ char *tree_string; /**< the newick representaion of the topology */
+ char *tree0;
+ char *tree1;
+ int treeStringLength;
+
+ unsigned int bestParsimony;
+ unsigned int *parsimonyScore;
+
+ double bestOfNode;
+ nodeptr removeNode; /**< the node that has been removed. Together with \a insertNode represents an SPR move */
+ nodeptr insertNode; /**< the node where insertion should take place . Together with \a removeNode represents an SPR move*/
+
+ double zqr[PLL_NUM_BRANCHES];
+ double currentZQR[PLL_NUM_BRANCHES];
+
+ double currentLZR[PLL_NUM_BRANCHES];
+ double currentLZQ[PLL_NUM_BRANCHES];
+ double currentLZS[PLL_NUM_BRANCHES];
+ double currentLZI[PLL_NUM_BRANCHES];
+ double lzs[PLL_NUM_BRANCHES];
+ double lzq[PLL_NUM_BRANCHES];
+ double lzr[PLL_NUM_BRANCHES];
+ double lzi[PLL_NUM_BRANCHES];
+
+
+ unsigned int **bitVectors;
+
+ unsigned int vLength;
+
+ pllHashTable *h; /**< hashtable for ML convergence criterion */
+ //hashtable *h;
+
+ int optimizeRateCategoryInvocations;
+
+ checkPointState ckp;
+ boolean thoroughInsertion; /**< true if the neighbor branches should be optimized when a subtree is inserted (slower)*/
+ boolean useMedian;
+
+ int autoProteinSelectionType;
+
+ pllStack * rearrangeHistory;
+
+
+ /* analdef defines */
+ /* TODO: Do some initialization */
+ int bestTrav; /**< best rearrangement radius */
+ int max_rearrange; /**< max. rearrangemenent radius */
+ int stepwidth; /**< step in rearrangement radius */
+ int initial; /**< user defined rearrangement radius which also sets bestTrav if initialSet is set */
+ boolean initialSet; /**< set bestTrav according to initial */
+ int mode; /**< candidate for removal */
+ boolean permuteTreeoptimize; /**< randomly select subtrees for SPR moves */
+ boolean compressPatterns;
+ double likelihoodEpsilon;
+ boolean useCheckpoint;
+
+} pllInstance;
+
+/** @brief Stores data related to a NNI move */
+typedef struct {
+ pllInstance * tr;
+ nodeptr p;
+ int nniType;
+ double z[PLL_NUM_BRANCHES]; // optimize branch lengths
+ double z0[PLL_NUM_BRANCHES]; // unoptimized branch lengths
+ double likelihood;
+ double deltaLH;
+} nniMove;
+
+/***************************************************************/
+
+typedef struct {
+ int partitionNumber;
+ int partitionLength;
+} partitionType;
+
+typedef struct
+{
+ double z[PLL_NUM_BRANCHES];
+ nodeptr p, q;
+ int cp, cq;
+}
+ connectRELL, *connptrRELL;
+
+typedef struct
+{
+ connectRELL *connect;
+ int start;
+ double likelihood;
+}
+ topolRELL;
+
+
+typedef struct
+{
+ int max;
+ topolRELL **t;
+}
+ topolRELL_LIST;
+
+/**************************************************************/
+
+/** @brief Connection within a topology.
+* */
+typedef struct conntyp {
+ double z[PLL_NUM_BRANCHES]; /**< branch length */
+ node *p, *q; /**< parent and child sectors */
+ void *valptr; /**< pointer to value of subtree */
+ int descend; /**< pointer to first connect of child */
+ int sibling; /**< next connect from same parent */
+ } connect, *connptr;
+
+/** @brief Single Topology
+* */
+typedef struct {
+ double likelihood;
+ int initialTreeNumber;
+ connect *links; /**< pointer to first connect (start) */
+ node *start;
+ int nextlink; /**< index of next available connect */
+ /**< tr->start = tpl->links->p */
+ int ntips;
+ int nextnode; /**< next available inner node for tree parsing */
+ int scrNum; /**< position in sorted list of scores */
+ int tplNum; /**< position in sorted list of trees */
+ } topol;
+
+/** @brief small helper data structure for printing out/downstream use of marginal ancestral probability vectors.
+*
+* it is allocated as an array that has the same length as the input alignment and can be used to
+* index the ancestral states for each position/site/pattern
+* */
+typedef struct {
+ double *probs; /**< marginal ancestral states */
+ char c; /**< most likely stated, i.e. max(probs[i]) above */
+ int states; /**< number of states for this position */
+} ancestralState;
+
+/** @brief List of topologies
+*
+* */
+typedef struct {
+ double best; /**< highest score saved */
+ double worst; /**< lowest score saved */
+ topol *start; /**< starting tree for optimization */
+ topol **byScore;
+ topol **byTopol;
+ int nkeep; /**< maximum topologies to save */
+ int nvalid; /**< number of topologies saved */
+ int ninit; /**< number of topologies initialized */
+ int numtrees; /**< number of alternatives tested */
+ boolean improved;
+ } bestlist;
+
+/** @brief This is used to look up some hard-coded data for each data type
+* */
+typedef struct
+{
+ int leftLength; /**< s^2 */
+ int rightLength;/**< s^2 */
+ int eignLength;/**< s */
+ int evLength;
+ int eiLength;
+ int substRatesLength; /**< (s^2 - s)/2 free model parameters for matrix Q i.e. substitution rates */
+ int frequenciesLength; /**< s frequency of each state */
+ int tipVectorLength; /* ??? */
+ int symmetryVectorLength;
+ int frequencyGroupingLength;
+
+ boolean nonGTR;
+ boolean optimizeBaseFrequencies;
+
+ int undetermined;
+
+ const char *inverseMeaning;
+
+ int states; /* s */
+
+ boolean smoothFrequencies;
+
+ const unsigned int *bitVector;
+
+} partitionLengths;
+
+typedef struct
+{
+ int rearrangeType;
+ double likelihood;
+
+ union {
+ struct {
+ double * zp;
+ double * zpn;
+ double * zpnn;
+ double * zqr;
+ nodeptr pn;
+ nodeptr pnn;
+ nodeptr r;
+ nodeptr p;
+ nodeptr q;
+ } SPR;
+ struct {
+ double * zp1;
+ double * zp2;
+ double * zq1;
+ double * zq2;
+ double * zpq;
+ nodeptr p; /* split node */
+ nodeptr q; /* left join node */
+ nodeptr r; /* right join node */
+ } TBR;
+ struct {
+ nodeptr origin;
+ int swapType;
+ double z[PLL_NUM_BRANCHES];
+ } NNI;
+ };
+} pllRollbackInfo;
+
+
+/** @struct pllRearrangeAttr
+
+ @brief Structure holding attributes for searching possible tree rearrangements
+
+ Holds the attributes for performing tree rearrangements.
+
+ @var pllRearrangeAttr
+ The origin node where the search should start
+
+ @var pllRearrangeAttr:mintrav
+ The minimum radius around the origin node \a p for which nodes should be tested
+
+ @var pllRearrangeAttr:maxtrav
+ The maximum radius around the origin node \a p for which nodes should be tested
+
+ @var pllRearrangeAttr:max
+ Maximum number of results to be returned
+*/
+typedef struct
+ {
+ nodeptr p;
+ int mintrav;
+ int maxtrav;
+ } pllRearrangeAttr;
+
+/** @typedef pllRearrangeInfo
+
+ @brief Tree rearrangement information structure
+
+ Holds information for conducting tree arrangements. This structure
+ is the result of a tree arrangement search under given search
+ attributes.
+
+ @var pllRearrangeInfo::rearrangeType
+ Type of rearrangement. Can be \b PLL_REARRANGE_SPR, \b PLL_REARRANGE_NNI or
+ \b PLL_REARRANGE_TBR
+
+ @var pllRearrangeInfo::likelihood
+ Holds the computed likelihood for the addressed rearrangement
+
+ @var pllRearrangeInfo::SPR::removeNode
+ Node where to perform subtree pruning
+
+ @var pllRearrangeInfo::SPR::insertNode
+ Node where to place the pruned subtree
+
+ @var pllRearrangeInfo::zqr
+ Holds the computed branch lengths after the SPR
+*/
+typedef struct
+ {
+ int rearrangeType;
+ double likelihood;
+ union {
+ struct {
+ nodeptr removeNode;
+ nodeptr insertNode;
+ double zqr[PLL_NUM_BRANCHES];
+ } SPR;
+ struct {
+ nodeptr removeBranch;
+ nodeptr insertBranch1;
+ nodeptr insertBranch2;
+ double zp[PLL_NUM_BRANCHES];
+ double zpb[PLL_NUM_BRANCHES];
+ double zq[PLL_NUM_BRANCHES];
+ double zqb[PLL_NUM_BRANCHES];
+ double zr[PLL_NUM_BRANCHES];
+ } TBR;
+ struct {
+ nodeptr originNode;
+ int swapType;
+ } NNI;
+ };
+ } pllRearrangeInfo;
+
+
+typedef struct
+ {
+ int max_entries;
+ int entries;
+ pllRearrangeInfo * rearr;
+ } pllRearrangeList;
+
+/** @brief Generic structure for storing a multiple sequence alignment */
+typedef struct
+ {
+ int sequenceCount; /**< @brief Number of sequences */
+ int sequenceLength; /**< @brief Length of sequences */
+ int originalSeqLength; /**< @brief Original length of sequences (not modified after removing duplicates) */
+ char ** sequenceLabels; /**< @brief An array of where the \a i-th element is the name of the \a i-th sequence */
+ unsigned char ** sequenceData; /**< @brief The actual sequence data */
+ int * siteWeights; /**< @brief An array where the \a i-th element indicates how many times site \a i appeared (prior to duplicates removal) in the alignment */
+ } pllAlignmentData;
+
+/** @brief Intermediate structure for storing a newick tree
+ Holds the structure of a parsed newick tree. The number of inner nodes is stored in \a nodes
+*/
+typedef struct
+{
+ int nodes; /**< @brief Total number of nodes in the tree == 2*tips - 1 for rooted and 2*tips -2 for unrooted */
+ int tips; /**< @brief Number of leaves (tips) in the tree */
+ pllStack * tree; /**< @brief Parsed tree represented as elements of a stack. Corresponds to placing the postorder traversal of a rooted tree in a pushdown store */
+} pllNewickTree;
+
+
+/** @brief Information describing the parsed newick tree nodes
+
+ This structure is placed in the ::pllNewickTree LIFO element pllNewickTree::tree
+ and described each node of the parsed tree.
+
+ @todo Rename this to something more proper
+*/
+typedef struct
+{
+ int depth; /**< @brief Distance of node from root */
+ char * name; /**< @brief Name of the taxon represented by the node (in case it is a leaf) */
+ char * branch; /**< @brief Length of branch that leads to its parent */
+ int leaf; /**< @brief \b PLL_TRUE if the node is a leaf, otherwise \b PLL_FALSE */
+ int rank; /**< @brief Rank of the node, i.e. how many children it has */
+} pllNewickNodeInfo;
+
+/******************** START OF API FUNCTION DESCRIPTIONS ********************/
+
+#if (defined(_USE_PTHREADS) || defined(_FINE_GRAIN_MPI))
+extern boolean isThisMyPartition(partitionList *pr, int tid, int model);
+extern void printParallelTimePerRegion(void);
+#endif
+
+#ifdef _FINE_GRAIN_MPI
+extern void pllFinalizeMPI (void);
+#endif
+
+
+
+/**
+ * @brief Create the main instance of PLL
+ *
+ * Create an instance of the phylogenetic likelihood library
+ *
+ * @param rateHetModel Rate heterogeneity model
+ * @param fastScaling TODO: explain fastScaling here
+ * @param saveMemory TODO: explain saveMemory here
+ * @param useRecom If set to \b PLL_TRUE, enables ancestral state recomputation
+ *
+ * @todo Document fastScaling, rate heterogeneity and saveMemory and useRecom
+ *
+ * @note Do not set \a saveMemory to when using \a useRecom as memory saving
+ * techniques are not yet implemented for ancestral state recomputation.
+ *
+ * @return On success returns an instance to PLL, otherwise \b NULL
+ */
+extern pllInstance * pllCreateInstance (pllInstanceAttr * pInst);
+
+/**
+ * @ingroup instanceLinkingGroup
+ * @brief Load alignment to the PLL instance
+ *
+ * Loads (copies) the parsed alignment \a alignmentData to the PLL instance
+ * as a deep copy.
+ *
+ * @param tr The library instance
+ * @param alignmentData The multiple sequence alignment
+ * @param partitions List of partitions
+ *
+ * @return Returns 1 in case of success, 0 otherwise.
+ */
+extern int pllLoadAlignment (pllInstance * tr,
+ pllAlignmentData * alignmentData,
+ partitionList * pList);
+
+/**
+ * @brief Compute the empirical base frequencies for all partitions
+ *
+ * Compute the empirical base frequencies for all partitions in the list \a pl.
+ *
+ * @param pl Partition list
+ * @param alignmentData Multiple sequence alignment
+ *
+ * @return A list of \a pl->numberOfPartitions arrays each of size
+ \a pl->partitionData[i]->states, where \a i is the \a i-th partition
+*/
+extern double ** pllBaseFrequenciesAlignment (pllAlignmentData * alignmentData, partitionList * pl);
+extern double ** pllBaseFrequenciesInstance (pllInstance * tr, partitionList * pl);
+
+/* pthreads and MPI */
+extern void pllStartPthreads (pllInstance *tr, partitionList *pr);
+extern void pllStopPthreads (pllInstance * tr);
+extern void pllLockMPI (pllInstance * tr);
+extern void pllInitMPI(int * argc, char **argv[]);
+
+
+/* handling branch lengths*/
+extern double pllGetBranchLength (pllInstance *tr, partitionList *pr, nodeptr p, int partition_id);
+extern void pllSetBranchLength (pllInstance *tr, partitionList *pr, nodeptr p, int partition_id, double bl);
+extern int pllNniSearch(pllInstance *tr, partitionList *pr, int estimateModel);
+extern void pllOptimizeBranchLengths ( pllInstance *tr, partitionList *pr, int maxSmoothIterations );
+
+
+extern void pllEvaluateLikelihood (pllInstance *tr, partitionList *pr, nodeptr p, boolean fullTraversal, boolean getPerSiteLikelihoods);
+extern void pllUpdatePartials (pllInstance *tr, partitionList *pr, nodeptr p, boolean masked);
+extern void pllUpdatePartialsAncestral(pllInstance *tr, partitionList *pr, nodeptr p, int atRoot);
+extern void pllNewviewIterative(pllInstance *tr, partitionList *pr, int startIndex);
+extern void pllEvaluateIterative(pllInstance *tr, partitionList *pr, boolean getPerSiteLikelihoods);
+
+/* newick parser declarations */
+extern pllNewickTree * pllNewickParseString (const char * newick);
+extern pllNewickTree * pllNewickParseFile (const char * filename);
+extern int pllValidateNewick (pllNewickTree *);
+extern void pllNewickParseDestroy (pllNewickTree **);
+extern int pllNewickUnroot (pllNewickTree * t);
+extern char * pllTreeToNewick ( char *treestr, pllInstance *tr, partitionList *pr, nodeptr p,
+ boolean printBranchLengths, boolean printNames, boolean printInternalNodeLabels,
+ boolean printLikelihood, boolean rellTree, int perGene,
+ boolean branchLabelSupport, boolean printSHSupport);
+
+/* partition parser declarations */
+extern void pllQueuePartitionsDestroy (pllQueue ** partitions);
+extern pllQueue * pllPartitionParse (const char * filename);
+extern pllQueue * pllPartitionParseString (const char * p);
+extern void pllPartitionDump (pllQueue * partitions);
+extern void pllBaseSubstitute (pllInstance * tr, partitionList * partitions);
+extern partitionList * pllPartitionsCommit (pllQueue * parts, pllAlignmentData * alignmentData);
+extern int pllPartitionsValidate (pllQueue * parts, pllAlignmentData * alignmentData);
+extern void pllAlignmentRemoveDups (pllAlignmentData * alignmentData, partitionList * pl);
+extern void pllPartitionsDestroy (pllInstance *, partitionList **);
+
+/* alignment data declarations */
+extern void pllAlignmentDataDestroy (pllAlignmentData *);
+extern int pllAlignmentDataDumpFile (pllAlignmentData *, int, const char *);
+extern void pllAlignmentDataDumpConsole (pllAlignmentData * alignmentData);
+extern pllAlignmentData * pllInitAlignmentData (int, int);
+extern pllAlignmentData * pllParseAlignmentFile (int fileType, const char *);
+
+
+/* model management */
+extern int pllInitModel (pllInstance *, partitionList *);
+extern void pllInitReversibleGTR(pllInstance * tr, partitionList * pr, int model);
+extern void pllMakeGammaCats(double alpha, double *gammaRates, int K, boolean useMedian);
+extern int pllLinkAlphaParameters(char *string, partitionList *pr);
+extern int pllLinkFrequencies(char *string, partitionList *pr);
+extern int pllLinkRates(char *string, partitionList *pr);
+extern int pllSetSubstitutionRateMatrixSymmetries(char *string, partitionList * pr, int model);
+extern void pllSetFixedAlpha(double alpha, int model, partitionList * pr, pllInstance *tr);
+extern void pllSetFixedBaseFrequencies(double *f, int length, int model, partitionList * pr, pllInstance *tr);
+extern int pllSetOptimizeBaseFrequencies(int model, partitionList * pr, pllInstance *tr);
+extern void pllSetSubstitutionMatrix(double *q, int length, int model, partitionList * pr, pllInstance *tr);
+extern void pllSetFixedSubstitutionMatrix(double *q, int length, int model, partitionList * pr, pllInstance *tr);
+extern int pllGetInstRateMatrix (partitionList * pr, int model, double * outBuffer);
+extern int pllOptimizeModelParameters(pllInstance *tr, partitionList *pr, double likelihoodEpsilon);
+extern double pllGetAlpha (partitionList * pr, int pid);
+extern void pllGetGammaRates (partitionList * pr, int pid, double * outBuffer);
+extern void pllGetBaseFrequencies(partitionList * pr, int model, double * outBuffer);
+extern void pllGetSubstitutionMatrix (partitionList * pr, int model, double * outBuffer);
+extern void pllEmpiricalFrequenciesDestroy (double *** empiricalFrequencies, int models);
+extern void pllOptRatesGeneric(pllInstance *tr, partitionList *pr, double modelEpsilon, linkageList *ll);
+extern void pllOptBaseFreqs(pllInstance *tr, partitionList * pr, double modelEpsilon, linkageList *ll);
+extern void pllOptAlphasGeneric(pllInstance *tr, partitionList * pr, double modelEpsilon, linkageList *ll);
+extern void pllOptLG4X(pllInstance *tr, partitionList * pr, double modelEpsilon, linkageList *ll, int numberOfModels);
+
+/* tree topology */
+extern void pllTreeInitTopologyNewick (pllInstance *, pllNewickTree *, int);
+extern void pllTreeInitTopologyRandom (pllInstance * tr, int tips, char ** nameList);
+extern void pllTreeInitTopologyForAlignment (pllInstance * tr, pllAlignmentData * alignmentData);
+extern void pllMakeRandomTree ( pllInstance *tr);
+extern void pllMakeParsimonyTree(pllInstance *tr);
+extern void pllMakeParsimonyTreeFast(pllInstance *tr, partitionList *pr);
+extern void pllComputeRandomizedStepwiseAdditionParsimonyTree(pllInstance * tr, partitionList * partitions);
+extern nodeptr pllGetRandomSubtree(pllInstance *);
+extern void pllFreeParsimonyDataStructures(pllInstance *tr, partitionList *pr);
+extern void pllDestroyInstance (pllInstance *);
+extern void pllGetAncestralState(pllInstance *tr, partitionList *pr, nodeptr p, double * outProbs, char * outSequence, int atRoot);
+extern unsigned int pllEvaluateParsimony(pllInstance *tr, partitionList *pr, nodeptr p, boolean full, boolean perSiteScores);
+extern void pllInitParsimonyStructures(pllInstance *tr, partitionList *pr, boolean perSiteScores);
+
+/* rearrange functions (NNI and SPR) */
+extern pllRearrangeList * pllCreateRearrangeList (int max);
+extern void pllDestroyRearrangeList (pllRearrangeList ** bestList);
+extern void pllRearrangeSearch (pllInstance * tr, partitionList * pr, int rearrangeType, nodeptr p, int mintrav, int maxtrav, pllRearrangeList * bestList);
+extern int pllRearrangeCommit (pllInstance * tr, partitionList * pr, pllRearrangeInfo * rearr, int saveRollbackInfo);
+extern int pllRearrangeRollback (pllInstance * tr, partitionList * pr);
+extern void pllClearRearrangeHistory (pllInstance * tr);
+extern int pllRaxmlSearchAlgorithm (pllInstance * tr, partitionList * pr, boolean estimateModel);
+extern int pllGetTransitionMatrix (pllInstance * tr, partitionList * pr, nodeptr p, int model, int rate, double * outBuffer);
+extern void pllGetTransitionMatrix2 (pllInstance * tr, partitionList * pr, int model, nodeptr p, double * outBuffer);
+extern int pllGetCLV (pllInstance * tr, partitionList * pr, nodeptr p, int partition, double * outProbs);
+extern int pllTopologyPerformNNI(pllInstance * tr, nodeptr p, int swap);
+
+/* TBR moves */
+extern int pllTbrRemoveBranch(pllInstance * tr, partitionList * pr, nodeptr p);
+extern int pllTbrConnectSubtreesML(pllInstance * tr, partitionList * pr, nodeptr p, nodeptr q);
+extern int pllTbrConnectSubtreesBL(pllInstance * tr, partitionList * pr, nodeptr p, nodeptr q, double * pBl, double * pbBl, double * qBl, double * qbBl, double * rBl);
+extern int pllTbrConnectSubtreesZ (pllInstance * tr, partitionList * pr, nodeptr p, nodeptr q, double * pZ, double * pbZ, double * qZ, double * qbZ, double * rZ);
+
+/* hash functions */
+extern unsigned int pllHashString (const char * s, unsigned int size);
+extern int pllHashAdd (pllHashTable * hTable, unsigned int hash, const char * s, void * item);
+extern pllHashTable * pllHashInit (unsigned int n);
+extern int pllHashSearch (struct pllHashTable * hTable, char * s, void ** item);
+extern void pllHashDestroy (struct pllHashTable ** hTable, void (*cbDealloc)(void *));
+
+/* node specific functions */
+extern nodeptr pllGetOrientedNodePointer (pllInstance * pInst, nodeptr p);
+
+/* other functions */
+extern char * pllReadFile (const char *, long *);
+extern int * pllssort1main (char ** x, int n);
+extern node ** pllGetInnerBranchEndPoints (pllInstance * tr);
+extern node ** getSubtreeNodes (pllInstance * tr, nodeptr p, int * numberOfNodes);
+
+/* ---------------- */
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif
diff --git a/src/pllInternal.h b/src/pllInternal.h
new file mode 100644
index 0000000..da744e2
--- /dev/null
+++ b/src/pllInternal.h
@@ -0,0 +1,266 @@
+/*
+ * pllInternal.h
+ *
+ * Created on: Feb 17, 2014
+ * Author: diego
+ */
+
+#ifndef PLLINTERNAL_H_
+#define PLLINTERNAL_H_
+
+#include "pll.h"
+#include "genericParallelization.h"
+#include "errcodes.h"
+#include "lexer.h"
+#include "parsePartition.h"
+#include "mem_alloc.h"
+
+//extern int lookupWord(char *s, stringHashtable *h);
+
+extern void getDataTypeString(pllInstance *tr, pInfo *partitionInfo, char typeOfData[1024]);
+extern int countTips(nodeptr p, int numsp);
+extern unsigned int precomputed16_bitcount(unsigned int n, char *bits_in_16bits);
+
+extern size_t discreteRateCategories(int rateHetModel);
+
+extern const partitionLengths * getPartitionLengths(pInfo *p);
+extern boolean getSmoothFreqs(int dataType);
+extern const unsigned int *getBitVector(int dataType);
+extern int getUndetermined(int dataType);
+extern int getStates(int dataType);
+extern char getInverseMeaning(int dataType, unsigned char state);
+extern double gettime ( void );
+extern int gettimeSrand ( void );
+extern double randum ( long *seed );
+
+extern void getxnode ( nodeptr p );
+extern void hookup ( nodeptr p, nodeptr q, double *z, int numBranches);
+extern void hookupFull ( nodeptr p, nodeptr q, double *z);
+extern void hookupDefault ( nodeptr p, nodeptr q);
+extern boolean whitechar ( int ch );
+extern void printLog ( pllInstance *tr);
+extern double LnGamma ( double alpha );
+extern double IncompleteGamma ( double x, double alpha, double ln_gamma_alpha );
+extern double PointNormal ( double prob );
+extern double PointChi2 ( double prob, double v );
+extern void initModel ( pllInstance *tr, double **empiricalFrequencies, partitionList * partitions);
+
+extern void resetBranches ( pllInstance *tr );
+extern void modOpt ( pllInstance *tr, partitionList *pr, double likelihoodEpsilon);
+
+extern void initializePartitionData(pllInstance *localTree, partitionList * localPartitions);
+extern void initMemorySavingAndRecom(pllInstance *tr, partitionList *pr);
+
+extern void nodeRectifier ( pllInstance *tr );
+extern void allocateParsimonyDataStructures(pllInstance *tr, partitionList *pr);
+
+extern FILE *myfopen(const char *path, const char *mode);
+
+extern boolean initrav ( pllInstance *tr, partitionList *pr, nodeptr p );
+extern void initravPartition ( pllInstance *tr, nodeptr p, int model );
+extern void update ( pllInstance *tr, partitionList *pr, nodeptr p );
+extern void smooth ( pllInstance *tr, partitionList *pr, nodeptr p );
+extern void smoothTree ( pllInstance *tr, partitionList *pr, int maxtimes );
+extern void localSmooth ( pllInstance *tr, partitionList *pr, nodeptr p, int maxtimes );
+extern boolean localSmoothMulti(pllInstance *tr, nodeptr p, int maxtimes, int model);
+
+extern void smoothRegion ( pllInstance *tr, partitionList *pr, nodeptr p, int region );
+extern void regionalSmooth ( pllInstance *tr, partitionList *pr, nodeptr p, int maxtimes, int region );
+extern nodeptr removeNodeBIG ( pllInstance *tr, partitionList *pr, nodeptr p, int numBranches);
+extern nodeptr removeNodeRestoreBIG ( pllInstance *tr, partitionList *pr, nodeptr p );
+extern boolean insertBIG ( pllInstance *tr, partitionList *pr, nodeptr p, nodeptr q);
+extern boolean insertRestoreBIG ( pllInstance *tr, partitionList *pr, nodeptr p, nodeptr q );
+extern boolean testInsertBIG ( pllInstance *tr, partitionList *pr, nodeptr p, nodeptr q );
+extern int NNI(pllInstance * tr, nodeptr p, int swap);
+extern void addTraverseBIG ( pllInstance *tr, partitionList *pr, nodeptr p, nodeptr q, int mintrav, int maxtrav );
+extern int rearrangeBIG ( pllInstance *tr, partitionList *pr, nodeptr p, int mintrav, int maxtrav );
+extern void traversalOrder ( nodeptr p, int *count, nodeptr *nodeArray );
+extern boolean testInsertRestoreBIG ( pllInstance *tr, partitionList *pr, nodeptr p, nodeptr q );
+extern void restoreTreeFast ( pllInstance *tr, partitionList *pr );
+
+extern void initTL ( topolRELL_LIST *rl, pllInstance *tr, int n );
+extern void freeTL ( topolRELL_LIST *rl);
+extern void restoreTL ( topolRELL_LIST *rl, pllInstance *tr, int n, int numBranches );
+extern void resetTL ( topolRELL_LIST *rl );
+extern void saveTL ( topolRELL_LIST *rl, pllInstance *tr, int index );
+
+extern int saveBestTree (bestlist *bt, pllInstance *tr, int numBranches);
+extern int recallBestTree (bestlist *bt, int rank, pllInstance *tr, partitionList *pr);
+extern int initBestTree ( bestlist *bt, int newkeep, int numsp );
+extern void resetBestTree ( bestlist *bt );
+extern boolean freeBestTree ( bestlist *bt );
+
+
+/* extern int treeReadLen (FILE *fp, pllInstance *tr, boolean readBranches, boolean readNodeLabels, boolean topologyOnly);
+extern void getStartingTree (pllInstance *tr);
+extern void treeReadTopologyString(char *treeString, pllInstance *tr);
+extern double treeLength (pllInstance *tr, int model);*/
+extern double evaluatePartialGeneric (pllInstance *, partitionList *pr, int i, double ki, int _model);
+extern void newviewAncestralIterative(pllInstance *tr, partitionList *pr);
+extern void printAncestralState(nodeptr p, boolean printStates, boolean printProbs, pllInstance *tr, partitionList *pr);
+extern void makenewzGeneric(pllInstance *tr, partitionList * pr, nodeptr p, nodeptr q, double *z0, int maxiter, double *result, boolean mask);
+extern void makenewzGenericDistance(pllInstance *tr, int maxiter, double *z0, double *result, int taxon1, int taxon2);
+extern double evaluatePartitionGeneric (pllInstance *tr, nodeptr p, int model);
+extern void newviewPartitionGeneric (pllInstance *tr, nodeptr p, int model);
+extern double evaluateGenericVector (pllInstance *tr, nodeptr p);
+extern void categorizeGeneric (pllInstance *tr, nodeptr p);
+extern double makenewzPartitionGeneric(pllInstance *tr, nodeptr p, nodeptr q, double z0, int maxiter, int model);
+extern void scaleLG4X_EIGN(pllInstance *tr, partitionList * pr, int model);
+extern boolean isTip(int number, int maxTips);
+
+/* recom functions */
+extern void computeTraversal(pllInstance *tr, nodeptr p, boolean partialTraversal, int numBranches);
+extern void allocRecompVectorsInfo(pllInstance *tr);
+extern void allocTraversalCounter(pllInstance *tr);
+extern boolean getxVector(recompVectors *rvec, int nodenum, int *slot, int mxtips);
+extern boolean needsRecomp(boolean recompute, recompVectors *rvec, nodeptr p, int mxtips);
+extern void unpinNode(recompVectors *v, int nodenum, int mxtips);
+extern void protectNode(recompVectors *rvec, int nodenum, int mxtips);
+
+/* Handling branch lengths*/
+extern void computeTraversalInfoStlen(nodeptr p, int maxTips, recompVectors *rvec, int *count);
+extern void computeFullTraversalInfoStlen(nodeptr p, int maxTips, recompVectors *rvec);
+extern void printTraversalInfo(pllInstance *tr);
+extern void countTraversal(pllInstance *tr);
+extern void storeExecuteMaskInTraversalDescriptor(pllInstance *tr, partitionList *pr);
+extern void storeValuesInTraversalDescriptor(pllInstance *tr, partitionList *pr, double *value);
+extern void makenewzIterative(pllInstance *, partitionList *pr);
+extern void execCore(pllInstance *, partitionList *pr, volatile double *dlnLdlz, volatile double *d2lnLdlz2);
+extern void makePermutation(int *perm, int n, pllInstance *tr);
+extern nodeptr findAnyTip(nodeptr p, int numsp);
+extern void putWAG(double *ext_initialRates);
+extern unsigned int **initBitVector(int mxtips, unsigned int *vectorLength);
+//extern hashtable *initHashTable(unsigned int n);
+extern void cleanupHashTable(pllHashTable * h, int state);
+extern double convergenceCriterion(pllHashTable *h, int mxtips);
+extern void freeBitVectors(unsigned int **v, int n);
+//extern void freeHashTable(hashtable *h);
+//extern stringHashtable *initStringHashTable(hashNumberType n);
+//extern void addword(char *s, stringHashtable *h, int nodeNumber);
+extern void initRateMatrix(pllInstance *tr, partitionList *pr);
+extern void bitVectorInitravSpecial(unsigned int **bitVectors, nodeptr p, int numsp, unsigned int vectorLength, pllHashTable *h, int treeNumber, int function, branchInfo *bInf,
+ int *countBranches, int treeVectorLength, boolean traverseOnly, boolean computeWRF, int processID);
+extern unsigned int bitcount_32_bit(unsigned int i);
+extern inline unsigned int bitcount_64_bit(unsigned long i);
+extern void perSiteLogLikelihoods(pllInstance *tr, partitionList *pr, double *logLikelihoods);
+extern void updatePerSiteRates(pllInstance *tr, partitionList *pr, boolean scaleRates);
+extern void restart(pllInstance *tr, partitionList *pr);
+inline boolean isGap(unsigned int *x, int pos);
+inline boolean noGap(unsigned int *x, int pos);
+
+/* from utils.h */
+linkageList* initLinkageList(int *linkList, partitionList *pr);
+
+#if (defined(_FINE_GRAIN_MPI) || defined(_USE_PTHREADS) )
+/* work tags for parallel regions */
+
+#define PLL_THREAD_NEWVIEW 0
+#define PLL_THREAD_EVALUATE 1
+#define PLL_THREAD_MAKENEWZ 2
+#define PLL_THREAD_MAKENEWZ_FIRST 3
+#define PLL_THREAD_RATE_CATS 4
+#define PLL_THREAD_COPY_RATE_CATS 5
+#define PLL_THREAD_COPY_INIT_MODEL 6
+#define PLL_THREAD_INIT_PARTITION 7
+#define PLL_THREAD_OPT_ALPHA 8
+#define PLL_THREAD_OPT_RATE 9
+#define PLL_THREAD_OPT_LG4X_RATE 10
+#define PLL_THREAD_COPY_ALPHA 11
+#define PLL_THREAD_COPY_RATES 12
+#define PLL_THREAD_COPY_LG4X_RATES 13
+#define PLL_THREAD_COPY_LG4X_EIGN 14
+#define PLL_THREAD_PER_SITE_LIKELIHOODS 15
+#define PLL_THREAD_NEWVIEW_ANCESTRAL 16
+#define PLL_THREAD_GATHER_ANCESTRAL 17
+#define PLL_THREAD_EXIT_GRACEFULLY 18
+#define PLL_THREAD_EVALUATE_PER_SITE_LIKES 19
+
+
+typedef struct
+{
+ pllInstance *tr;
+
+ partitionList *pr;
+ int threadNumber;
+}
+ threadData;
+extern void optRateCatPthreads(pllInstance *tr, partitionList *pr, double lower_spacing, double upper_spacing, double *lhs, int n, int tid);
+extern void pllMasterBarrier(pllInstance *, partitionList *, int);
+#endif
+
+
+#ifdef __AVX
+
+extern void newviewGTRGAMMAPROT_AVX_LG4(int tipCase,
+ double *x1, double *x2, double *x3, double *extEV[4], double *tipVector[4],
+ int *ex3, unsigned char *tipX1, unsigned char *tipX2, int n,
+ double *left, double *right, int *wgt, int *scalerIncrement, const boolean useFastScaling);
+
+
+extern void newviewGTRCAT_AVX_GAPPED_SAVE(int tipCase, double *EV, int *cptr,
+ double *x1_start, double *x2_start, double *x3_start, double *tipVector,
+ int *ex3, unsigned char *tipX1, unsigned char *tipX2,
+ int n, double *left, double *right, int *wgt, int *scalerIncrement, const boolean useFastScaling,
+ unsigned int *x1_gap, unsigned int *x2_gap, unsigned int *x3_gap,
+ double *x1_gapColumn, double *x2_gapColumn, double *x3_gapColumn, const int maxCats);
+
+extern void newviewGTRCATPROT_AVX_GAPPED_SAVE(int tipCase, double *extEV,
+ int *cptr,
+ double *x1, double *x2, double *x3, double *tipVector,
+ int *ex3, unsigned char *tipX1, unsigned char *tipX2,
+ int n, double *left, double *right, int *wgt, int *scalerIncrement, const boolean useFastScaling,
+ unsigned int *x1_gap, unsigned int *x2_gap, unsigned int *x3_gap,
+ double *x1_gapColumn, double *x2_gapColumn, double *x3_gapColumn, const int maxCats);
+
+extern void newviewGTRGAMMA_AVX_GAPPED_SAVE(int tipCase,
+ double *x1_start, double *x2_start, double *x3_start,
+ double *extEV, double *tipVector,
+ int *ex3, unsigned char *tipX1, unsigned char *tipX2,
+ const int n, double *left, double *right, int *wgt, int *scalerIncrement, const boolean useFastScaling,
+ unsigned int *x1_gap, unsigned int *x2_gap, unsigned int *x3_gap,
+ double *x1_gapColumn, double *x2_gapColumn, double *x3_gapColumn
+ );
+
+extern void newviewGTRGAMMAPROT_AVX_GAPPED_SAVE(int tipCase,
+ double *x1_start, double *x2_start, double *x3_start, double *extEV, double *tipVector,
+ int *ex3, unsigned char *tipX1, unsigned char *tipX2, int n,
+ double *left, double *right, int *wgt, int *scalerIncrement, const boolean useFastScaling,
+ unsigned int *x1_gap, unsigned int *x2_gap, unsigned int *x3_gap,
+ double *x1_gapColumn, double *x2_gapColumn, double *x3_gapColumn);
+
+extern void newviewGTRCAT_AVX(int tipCase, double *EV, int *cptr,
+ double *x1_start, double *x2_start, double *x3_start, double *tipVector,
+ int *ex3, unsigned char *tipX1, unsigned char *tipX2,
+ int n, double *left, double *right, int *wgt, int *scalerIncrement, const boolean useFastScaling);
+
+
+extern void newviewGenericCATPROT_AVX(int tipCase, double *extEV,
+ int *cptr,
+ double *x1, double *x2, double *x3, double *tipVector,
+ int *ex3, unsigned char *tipX1, unsigned char *tipX2,
+ int n, double *left, double *right, int *wgt, int *scalerIncrement, const boolean useFastScaling);
+
+
+extern void newviewGTRGAMMA_AVX(int tipCase,
+ double *x1_start, double *x2_start, double *x3_start,
+ double *EV, double *tipVector,
+ int *ex3, unsigned char *tipX1, unsigned char *tipX2,
+ const int n, double *left, double *right, int *wgt, int *scalerIncrement, const boolean useFastScaling);
+
+extern void newviewGTRGAMMAPROT_AVX(int tipCase,
+ double *x1, double *x2, double *x3, double *extEV, double *tipVector,
+ int *ex3, unsigned char *tipX1, unsigned char *tipX2, int n,
+ double *left, double *right, int *wgt, int *scalerIncrement, const boolean useFastScaling);
+
+extern void newviewGTRCATPROT_AVX(int tipCase, double *extEV,
+ int *cptr,
+ double *x1, double *x2, double *x3, double *tipVector,
+ int *ex3, unsigned char *tipX1, unsigned char *tipX2,
+ int n, double *left, double *right, int *wgt, int *scalerIncrement, const boolean useFastScaling);
+
+#endif
+
+extern int virtual_width( int n );
+extern void computeAllAncestralVectors(nodeptr p, pllInstance *tr, partitionList *pr);
+
+#endif /* PLLINTERNAL_H_ */
diff --git a/src/queue.c b/src/queue.c
new file mode 100644
index 0000000..eecf3fb
--- /dev/null
+++ b/src/queue.c
@@ -0,0 +1,96 @@
+/**
+ * PLL (version 1.0.0) a software library for phylogenetic inference
+ * Copyright (C) 2013 Tomas Flouri and Alexandros Stamatakis
+ *
+ * Derived from
+ * RAxML-HPC, a program for sequential and parallel estimation of phylogenetic
+ * trees by Alexandros Stamatakis
+ *
+ * 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 3 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, see <http://www.gnu.org/licenses/>.
+ *
+ * For any other enquiries send an Email to Tomas Flouri
+ * Tomas.Flouri at h-its.org
+ *
+ * When publishing work that uses PLL please cite PLL
+ *
+ * @file queue.c
+ */
+#include <stdio.h>
+#include "queue.h"
+#include "mem_alloc.h"
+
+int
+pllQueueInit (pllQueue ** q)
+{
+ *q = (pllQueue *) rax_malloc (sizeof (pllQueue));
+ if (!*q) return (0);
+
+ (*q)->head = NULL;
+ (*q)->tail = NULL;
+
+ return (1);
+}
+
+int
+pllQueueSize (pllQueue * q)
+{
+ int n = 0;
+ struct pllQueueItem * elm;
+
+ if (!q) return (0);
+
+ for (elm = q->head; elm; elm = elm->next) ++n;
+
+ return (n);
+}
+
+int
+pllQueueRemove (pllQueue * q, void ** item)
+{
+ struct pllQueueItem * elm;
+
+ if (!q || !q->head) return (0);
+
+ elm = q->head;
+
+ *item = elm->item;
+
+ q->head = q->head->next;
+ if (!q->head) q->tail = NULL;
+ rax_free (elm);
+
+ return (1);
+}
+
+int
+pllQueueAppend (pllQueue * q, void * item)
+{
+ struct pllQueueItem * qitem;
+ if (!q) return (0);
+
+ qitem = (struct pllQueueItem *) rax_malloc (sizeof (struct pllQueueItem));
+ if (!qitem) return (0);
+
+ qitem->item = item;
+ qitem->next = NULL;
+
+ if (!q->head)
+ q->head = qitem;
+ else
+ q->tail->next = qitem;
+
+ q->tail = qitem;
+
+ return (1);
+}
diff --git a/src/queue.h b/src/queue.h
new file mode 100644
index 0000000..b359c4a
--- /dev/null
+++ b/src/queue.h
@@ -0,0 +1,48 @@
+/**
+ * PLL (version 1.0.0) a software library for phylogenetic inference
+ * Copyright (C) 2013 Tomas Flouri and Alexandros Stamatakis
+ *
+ * Derived from
+ * RAxML-HPC, a program for sequential and parallel estimation of phylogenetic
+ * trees by Alexandros Stamatakis
+ *
+ * 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 3 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, see <http://www.gnu.org/licenses/>.
+ *
+ * For any other enquiries send an Email to Tomas Flouri
+ * Tomas.Flouri at h-its.org
+ *
+ * When publishing work that uses PLL please cite PLL
+ *
+ * @file queue.h
+ */
+#ifndef __pll_QUEUE__
+#define __pll_QUEUE__
+
+struct pllQueueItem
+{
+ void * item;
+ struct pllQueueItem * next;
+};
+
+typedef struct
+{
+ struct pllQueueItem * head;
+ struct pllQueueItem * tail;
+} pllQueue;
+
+int pllQueueInit (pllQueue ** q);
+int pllQueueSize (pllQueue * q);
+int pllQueueRemove (pllQueue * q, void ** item);
+int pllQueueAppend (pllQueue * q, void * item);
+#endif
diff --git a/src/randomTree.c b/src/randomTree.c
new file mode 100644
index 0000000..c1d9af4
--- /dev/null
+++ b/src/randomTree.c
@@ -0,0 +1,177 @@
+/**
+ * PLL (version 1.0.0) a software library for phylogenetic inference
+ * Copyright (C) 2013 Tomas Flouri and Alexandros Stamatakis
+ *
+ * Derived from
+ * RAxML-HPC, a program for sequential and parallel estimation of phylogenetic
+ * trees by Alexandros Stamatakis
+ *
+ * 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 3 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, see <http://www.gnu.org/licenses/>.
+ *
+ * For any other enquiries send an Email to Tomas Flouri
+ * Tomas.Flouri at h-its.org
+ *
+ * When publishing work that uses PLL please cite PLL
+ *
+ * @file randomTree.c
+ */
+#include "mem_alloc.h"
+#include <math.h>
+#include <time.h>
+#include <stdlib.h>
+#include <stdio.h>
+#include <assert.h>
+
+#include "pll.h"
+#include "pllInternal.h"
+
+static void insertTaxon (nodeptr p, nodeptr q)
+{
+ nodeptr r;
+
+ r = q->back;
+
+ hookupDefault(p->next, q);
+ hookupDefault(p->next->next, r);
+}
+
+static nodeptr buildNewTip (pllInstance *tr, nodeptr p)
+{
+ nodeptr q;
+
+ q = tr->nodep[(tr->nextnode)++];
+ hookupDefault(p, q);
+ q->next->back = (nodeptr)NULL;
+ q->next->next->back = (nodeptr)NULL;
+
+ return q;
+}
+
+static void buildSimpleTreeRandom (pllInstance *tr, int ip, int iq, int ir)
+{
+ nodeptr
+ p,
+ s;
+
+ int
+ i;
+
+ i = PLL_MIN(ip, iq);
+ if (ir < i) i = ir;
+ tr->start = tr->nodep[i];
+ tr->ntips = 3;
+ p = tr->nodep[ip];
+
+ hookupDefault(p, tr->nodep[iq]);
+
+ s = buildNewTip(tr, tr->nodep[ir]);
+
+ insertTaxon(s, p);
+}
+
+static int randomInt(int n, pllInstance *tr)
+{
+ int
+ res = (int)((double)(n) * randum(&tr->randomNumberSeed));
+
+ assert(res >= 0 && res < n);
+
+ return res;
+}
+
+void makePermutation(int *perm, int n, pllInstance *tr)
+{
+ int
+ i,
+ j,
+ k;
+
+ for (i = 1; i <= n; i++)
+ perm[i] = i;
+
+ for (i = 1; i <= n; i++)
+ {
+ k = randomInt(n + 1 - i, tr); /*(int)((double)(n + 1 - i) * randum(&tr->randomNumberSeed));*/
+
+ assert(i + k <= n);
+
+ j = perm[i];
+ perm[i] = perm[i + k];
+ perm[i + k] = j;
+ }
+}
+
+static int markBranches(nodeptr *branches, nodeptr p, int *counter, int numsp)
+{
+ if(isTip(p->number, numsp))
+ return 0;
+ else
+ {
+ branches[*counter] = p->next;
+ branches[*counter + 1] = p->next->next;
+
+ *counter = *counter + 2;
+
+ return ((2 + markBranches(branches, p->next->back, counter, numsp) +
+ markBranches(branches, p->next->next->back, counter, numsp)));
+ }
+}
+
+
+
+void pllMakeRandomTree(pllInstance *tr)
+{
+ nodeptr
+ p,
+ f,
+ randomBranch,
+ *branches = (nodeptr *)rax_malloc(sizeof(nodeptr) * (2 * tr->mxtips));
+
+ int
+ nextsp,
+ *perm = (int *)rax_malloc((tr->mxtips + 1) * sizeof(int)),
+ branchCounter;
+
+ makePermutation(perm, tr->mxtips, tr);
+
+ tr->ntips = 0;
+ tr->nextnode = tr->mxtips + 1;
+
+ buildSimpleTreeRandom(tr, perm[1], perm[2], perm[3]);
+
+ while(tr->ntips < tr->mxtips)
+ {
+ nextsp = ++(tr->ntips);
+ p = tr->nodep[perm[nextsp]];
+
+ buildNewTip(tr, p);
+
+ f = findAnyTip(tr->start, tr->mxtips);
+ f = f->back;
+
+ branchCounter = 1;
+ branches[0] = f;
+ markBranches(branches, f, &branchCounter, tr->mxtips);
+
+ assert(branchCounter == ((2 * (tr->ntips - 1)) - 3));
+
+ randomBranch = branches[randomInt(branchCounter, tr)];
+
+ insertTaxon(p->back, randomBranch);
+ }
+
+ rax_free(perm);
+ rax_free(branches);
+}
+
diff --git a/src/recom.c b/src/recom.c
new file mode 100644
index 0000000..b4acce6
--- /dev/null
+++ b/src/recom.c
@@ -0,0 +1,688 @@
+/**
+ * PLL (version 1.0.0) a software library for phylogenetic inference
+ * Copyright (C) 2013 Tomas Flouri and Alexandros Stamatakis
+ *
+ * Derived from
+ * RAxML-HPC, a program for sequential and parallel estimation of phylogenetic
+ * trees by Alexandros Stamatakis
+ *
+ * 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 3 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, see <http://www.gnu.org/licenses/>.
+ *
+ * For any other enquiries send an Email to Tomas Flouri
+ * Tomas.Flouri at h-its.org
+ *
+ * When publishing work that uses PLL please cite PLL
+ *
+ * @file recom.c
+ * @brief Functions used for recomputation of vectors (only a fraction of LH vectors stored in RAM)
+ */
+#include "mem_alloc.h"
+#include <stdio.h>
+#include <stdlib.h>
+#include <assert.h>
+#include <string.h>
+#include <limits.h>
+#include <errno.h>
+#include <time.h>
+#include <math.h>
+#include <sys/time.h>
+
+#include "pll.h"
+#include "pllInternal.h"
+
+/** @brief Locks node \a nodenum to force it remains availably in memory
+ *
+ * @warning If a node is available we dont need to recompute it, but we neet to make sure it is not unpinned while buildding the rest of the traversal descriptor, i.e. unpinnable must be PLL_FALSE at this point, it will automatically be set to PLL_TRUE, after the counter post-order instructions have been executed
+Omitting this call the traversal will likely still work as long as num_allocated_nodes >> log n, but wrong inner vectors will be used at the wrong moment of pllNewviewIterative, careful!
+ *
+ * @param rvec
+ * Recomputation info
+ *
+ * @param nodenum
+ * Node id that must remain available in memory
+ *
+ * @param mxtips
+ * Number of tips in the tree
+ *
+ */
+void protectNode(recompVectors *rvec, int nodenum, int mxtips)
+{
+
+ int slot;
+ slot = rvec->iNode[nodenum - mxtips - 1];
+ assert(slot != PLL_NODE_UNPINNED);
+ assert(rvec->iVector[slot] == nodenum);
+
+ if(rvec->unpinnable[slot])
+ rvec->unpinnable[slot] = PLL_FALSE;
+}
+
+/** @brief Checks if \a nodenum is currently pinned (available in RAM)
+ *
+ * @note shall we document static functions?
+ *
+ * @param rvec
+ * Recomputation info
+ *
+ * @param nodenum
+ * Node id to be checked
+ *
+ * @param mxtips
+ * Number of tips in the tree
+ *
+ */
+static boolean isNodePinned(recompVectors *rvec, int nodenum, int mxtips)
+{
+ assert(nodenum > mxtips);
+
+ if(rvec->iNode[nodenum - mxtips - 1] == PLL_NODE_UNPINNED)
+ return PLL_FALSE;
+ else
+ return PLL_TRUE;
+}
+
+/** @brief Checks if the likelihood entries at node \a p should be updated
+ *
+ * A node needs update if one of the following holds:
+ * 1. It is not oriented (p->x == 0)
+ * 2. We are applying recomputations and node \a p is not currently available in RAM
+ *
+ * @param recompute
+ * PLL_TRUE if recomputation is currently applied
+ *
+ * @param p
+ * Node to check whether it is associated with the likelihood vector
+ *
+ * @param mxtips
+ * Number of tips in the tree
+ *
+ */
+boolean needsRecomp(boolean recompute, recompVectors *rvec, nodeptr p, int mxtips)
+{
+ if((!p->x) || (recompute && !isNodePinned(rvec, p->number, mxtips)))
+ return PLL_TRUE;
+ else
+ return PLL_FALSE;
+}
+
+
+
+/** @brief Allocates memory for recomputation structure
+ *
+ *
+ * @todo this should not depend on tr (\a vectorRecomFraction should be a parameter)
+ * PLL_TRUE if recomputation is currently applied
+ *
+ */
+void allocRecompVectorsInfo(pllInstance *tr)
+{
+ recompVectors
+ *v = (recompVectors *) rax_malloc(sizeof(recompVectors));
+
+ int
+ num_inner_nodes = tr->mxtips - 2,
+ num_vectors,
+ i;
+
+ assert(tr->vectorRecomFraction > PLL_MIN_RECOM_FRACTION);
+ assert(tr->vectorRecomFraction < PLL_MAX_RECOM_FRACTION);
+
+ num_vectors = (int) (1 + tr->vectorRecomFraction * (float)num_inner_nodes);
+
+ int theoretical_minimum_of_vectors = 3 + ((int)(log((double)tr->mxtips)/log(2.0)));
+ //printBothOpen("Try to use %d ancestral vectors, min required %d\n", num_vectors, theoretical_minimum_of_vectors);
+
+ assert(num_vectors >= theoretical_minimum_of_vectors);
+ assert(num_vectors < tr->mxtips);
+
+
+ v->numVectors = num_vectors; /* use minimum bound theoretical */
+
+ /* init vectors tracking */
+
+ v->iVector = (int *) rax_malloc((size_t)num_vectors * sizeof(int));
+ v->unpinnable = (boolean *) rax_malloc((size_t)num_vectors * sizeof(boolean));
+
+ for(i = 0; i < num_vectors; i++)
+ {
+ v->iVector[i] = PLL_SLOT_UNUSED;
+ v->unpinnable[i] = PLL_FALSE;
+ }
+
+ v->iNode = (int *) rax_malloc((size_t)num_inner_nodes * sizeof(int));
+ v->stlen = (int *) rax_malloc((size_t)num_inner_nodes * sizeof(int));
+
+ for(i = 0; i < num_inner_nodes; i++)
+ {
+ v->iNode[i] = PLL_NODE_UNPINNED;
+ v->stlen[i] = PLL_INNER_NODE_INIT_STLEN;
+ }
+
+ v->allSlotsBusy = PLL_FALSE;
+
+ /* init nodes tracking */
+
+ v->maxVectorsUsed = 0;
+ tr->rvec = v;
+}
+
+/** @brief Find the slot id with the minimum cost to be recomputed.
+ *
+ * The minum cost is defined as the minimum subtree size. In general, the closer a vector is to the tips,
+ * the less recomputations are required to re-establish its likelihood entries
+ *
+ * @todo remove _DEBUG_RECOMPUTATION code
+ *
+ * @param v
+ *
+ * @param mxtips
+ * Number of tips in the tree
+ *
+ */
+static int findUnpinnableSlotByCost(recompVectors *v, int mxtips)
+{
+ int
+ i,
+ slot,
+ cheapest_slot = -1,
+ min_cost = mxtips * 2; /* more expensive than the most expensive*/
+#ifdef _DEBUG_RECOMPUTATION
+ double straTime = gettime();
+#endif
+
+
+ for(i = 0; i < mxtips - 2; i++)
+ {
+ slot = v->iNode[i];
+ if(slot != PLL_NODE_UNPINNED)
+ {
+ assert(slot >= 0 && slot < v->numVectors);
+
+ if(v->unpinnable[slot])
+ {
+ assert(v->stlen[i] > 0);
+
+ if(v->stlen[i] < min_cost)
+ {
+ min_cost = v->stlen[i];
+ cheapest_slot = slot;
+ /* if the slot costs 2 you can break cause there is nothing cheaper to recompute */
+ if(min_cost == 2)
+ break;
+ }
+ }
+ }
+ }
+ assert(min_cost < mxtips * 2 && min_cost >= 2);
+ assert(cheapest_slot >= 0);
+ return cheapest_slot;
+}
+
+static void unpinAtomicSlot(recompVectors *v, int slot, int mxtips)
+{
+ int
+ nodenum = v->iVector[slot];
+
+ v->iVector[slot] = PLL_SLOT_UNUSED;
+
+ if(nodenum != PLL_SLOT_UNUSED)
+ v->iNode[nodenum - mxtips - 1] = PLL_NODE_UNPINNED;
+}
+
+/** @brief Finds the cheapest slot and unpins it
+ *
+ */
+static int findUnpinnableSlot(recompVectors *v, int mxtips)
+{
+ int
+ slot_unpinned = findUnpinnableSlotByCost(v, mxtips);
+
+ assert(slot_unpinned >= 0);
+ assert(v->unpinnable[slot_unpinned]);
+
+ unpinAtomicSlot(v, slot_unpinned, mxtips);
+
+ return slot_unpinned;
+}
+
+/** @brief Finds a free slot
+ *
+ * If all slots are occupied, it will find the cheapest slot and unpin it
+ *
+ */
+static int findFreeSlot(recompVectors *v, int mxtips)
+{
+ int
+ slotno = -1,
+ i;
+
+ assert(v->allSlotsBusy == PLL_FALSE);
+
+ for(i = 0; i < v->numVectors; i++)
+ {
+ if(v->iVector[i] == PLL_SLOT_UNUSED)
+ {
+ slotno = i;
+ break;
+ }
+ }
+
+ if(slotno == -1)
+ {
+ v->allSlotsBusy = PLL_TRUE;
+ slotno = findUnpinnableSlot(v, mxtips);
+ }
+
+ return slotno;
+}
+
+
+/** @brief Pins node \a nodenum to slot \a slot
+ *
+ * The slot is initialized as non-unpinnable (ensures that the contents of the vector will not be overwritten)
+ *
+ * @param nodenum
+ * node id
+ *
+ * @param slot
+ * slot id
+ *
+ * @param mxtips
+ * Number of tips in the tree
+ *
+ */
+static void pinAtomicNode(recompVectors *v, int nodenum, int slot, int mxtips)
+{
+ v->iVector[slot] = nodenum;
+ v->iNode[nodenum - mxtips - 1] = slot;
+ v->unpinnable[slot] = PLL_FALSE;
+}
+
+static int pinNode(recompVectors *rvec, int nodenum, int mxtips)
+{
+ int
+ slot;
+
+ assert(!isNodePinned(rvec, nodenum, mxtips));
+
+ if(rvec->allSlotsBusy)
+ slot = findUnpinnableSlot(rvec, mxtips);
+ else
+ slot = findFreeSlot(rvec, mxtips);
+
+ assert(slot >= 0);
+
+ pinAtomicNode(rvec, nodenum, slot, mxtips);
+
+ if(slot > rvec->maxVectorsUsed)
+ rvec->maxVectorsUsed = slot;
+
+ assert(slot == rvec->iNode[nodenum - mxtips - 1]);
+
+ return slot;
+}
+
+/** @brief Marks node \a nodenum as unpinnable
+ *
+ * The slot holding the node \a nodenum is added to the pool of slot candidates that can be overwritten.
+ *
+ * @param v
+ * Recomputation info
+ *
+ * @param nodenum
+ * node id
+ *
+ * @param mxtips
+ * Number of tips in the tree
+ *
+ */
+void unpinNode(recompVectors *v, int nodenum, int mxtips)
+{
+ if(nodenum <= mxtips)
+ return;
+ else
+ {
+ int
+ slot = -1;
+
+ assert(nodenum > mxtips);
+ slot = v->iNode[nodenum-mxtips-1];
+ assert(slot >= 0 && slot < v->numVectors);
+
+ if(slot >= 0 && slot < v->numVectors)
+ v->unpinnable[slot] = PLL_TRUE;
+ }
+}
+
+
+/** @brief Get a pinned slot \a slot that holds the likelihood vector for inner node \a nodenum
+ *
+ * If node \a node nodenum is not pinned to any slot yet, the minimum cost replacement strategy is used.
+ *
+ * @param v
+ * Recomputation info
+ *
+ * @param nodenum
+ * node id
+ *
+ * @param slot
+ * slot id
+ *
+ * @param mxtips
+ * Number of tips in the tree
+ *
+ */
+boolean getxVector(recompVectors *rvec, int nodenum, int *slot, int mxtips)
+{
+ boolean
+ slotNeedsRecomp = PLL_FALSE;
+
+ *slot = rvec->iNode[nodenum - mxtips - 1];
+
+ if(*slot == PLL_NODE_UNPINNED)
+ {
+ *slot = pinNode(rvec, nodenum, mxtips); /* now we will run the replacement strategy */
+ slotNeedsRecomp = PLL_TRUE;
+ }
+
+ assert(*slot >= 0 && *slot < rvec->numVectors);
+
+ rvec->unpinnable[*slot] = PLL_FALSE;
+
+ return slotNeedsRecomp;
+}
+
+
+#ifdef _DEBUG_RECOMPUTATION
+
+static int subtreeSize(nodeptr p, int maxTips)
+{
+ if(isTip(p->number, maxTips))
+ return 1;
+ else
+ return (subtreeSize(p->next->back, maxTips) + subtreeSize(p->next->next->back, maxTips));
+}
+
+#endif
+
+/** @brief Annotes unoriented tree nodes \a tr with their subtree size
+ *
+ * This function recursively updates the subtree size of each inner node.
+ * @note The subtree size of node \a p->number is the number of nodes included in the subtree where node record \a p is the virtual root.
+ *
+ * @param p
+ * Pointer to node
+ *
+ * @param maxTips
+ * Number of tips in the tree
+ *
+ * @param rvec
+ * Recomputation info
+ *
+ * @param count
+ * Number of visited nodes
+ */
+void computeTraversalInfoStlen(nodeptr p, int maxTips, recompVectors *rvec, int *count)
+{
+ if(isTip(p->number, maxTips))
+ return;
+ else
+ {
+ nodeptr
+ q = p->next->back,
+ r = p->next->next->back;
+
+ *count += 1;
+ /* set xnode info at this point */
+
+ if(isTip(r->number, maxTips) && isTip(q->number, maxTips))
+ {
+ rvec->stlen[p->number - maxTips - 1] = 2;
+
+#ifdef _DEBUG_RECOMPUTATION
+ assert(rvec->stlen[p->number - maxTips - 1] == subtreeSize(p, maxTips));
+#endif
+ }
+ else
+ {
+ if(isTip(r->number, maxTips) || isTip(q->number, maxTips))
+ {
+ nodeptr
+ tmp;
+
+ if(isTip(r->number, maxTips))
+ {
+ tmp = r;
+ r = q;
+ q = tmp;
+ }
+
+ if(!r->x)
+ computeTraversalInfoStlen(r, maxTips, rvec, count);
+
+ rvec->stlen[p->number - maxTips - 1] = rvec->stlen[r->number - maxTips - 1] + 1;
+
+#ifdef _DEBUG_RECOMPUTATION
+ assert(rvec->stlen[p->number - maxTips - 1] == subtreeSize(p, maxTips));
+#endif
+ }
+ else
+ {
+ if(!r->x)
+ computeTraversalInfoStlen(r, maxTips, rvec, count);
+ if(!q->x)
+ computeTraversalInfoStlen(q, maxTips, rvec, count);
+
+ rvec->stlen[p->number - maxTips - 1] = rvec->stlen[q->number - maxTips - 1] + rvec->stlen[r->number - maxTips - 1];
+
+#ifdef _DEBUG_RECOMPUTATION
+ assert(rvec->stlen[p->number - maxTips - 1] == subtreeSize(p, maxTips));
+#endif
+ }
+ }
+ }
+}
+
+
+
+
+/* pre-compute the node stlens (this needs to be known prior to running the strategy) */
+/** @brief Annotes all tree nodes \a tr with their subtree size
+ *
+ * Similar to \a computeTraversalInfoStlen, but does a full traversal ignoring orientation.
+ * The minum cost is defined as the minimum subtree size. In general, the closer a vector is to the tips,
+ * the less recomputations are required to re-establish its likelihood entries
+ *
+ * @param p
+ * Pointer to node
+ *
+ * @param maxTips
+ * Number of tips in the tree
+ *
+ * @param rvec
+ * Recomputation info
+ */
+void computeFullTraversalInfoStlen(nodeptr p, int maxTips, recompVectors *rvec)
+{
+ if(isTip(p->number, maxTips))
+ return;
+ else
+ {
+ nodeptr
+ q = p->next->back,
+ r = p->next->next->back;
+
+ if(isTip(r->number, maxTips) && isTip(q->number, maxTips))
+ {
+ rvec->stlen[p->number - maxTips - 1] = 2;
+
+#ifdef _DEBUG_RECOMPUTATION
+ assert(rvec->stlen[p->number - maxTips - 1] == subtreeSize(p, maxTips));
+#endif
+ }
+ else
+ {
+ if(isTip(r->number, maxTips) || isTip(q->number, maxTips))
+ {
+ nodeptr
+ tmp;
+
+ if(isTip(r->number, maxTips))
+ {
+ tmp = r;
+ r = q;
+ q = tmp;
+ }
+
+ computeFullTraversalInfoStlen(r, maxTips, rvec);
+
+ rvec->stlen[p->number - maxTips - 1] = rvec->stlen[r->number - maxTips - 1] + 1;
+
+#ifdef _DEBUG_RECOMPUTATION
+ assert(rvec->stlen[p->number - maxTips - 1] == subtreeSize(p, maxTips));
+#endif
+ }
+ else
+ {
+ computeFullTraversalInfoStlen(r, maxTips, rvec);
+ computeFullTraversalInfoStlen(q, maxTips, rvec);
+
+ rvec->stlen[p->number - maxTips - 1] = rvec->stlen[q->number - maxTips - 1] + rvec->stlen[r->number - maxTips - 1];
+#ifdef _DEBUG_RECOMPUTATION
+ assert(rvec->stlen[p->number - maxTips - 1] == subtreeSize(p, maxTips));
+#endif
+ }
+ }
+ }
+}
+
+
+#ifdef _DEBUG_RECOMPUTATION
+
+void allocTraversalCounter(pllInstance *tr)
+{
+ traversalCounter
+ *tc;
+
+ int
+ k;
+
+ tc = (traversalCounter *)rax_malloc(sizeof(traversalCounter));
+
+ tc->travlenFreq = (unsigned int *)rax_malloc(tr->mxtips * sizeof(int));
+
+ for(k = 0; k < tr->mxtips; k++)
+ tc->travlenFreq[k] = 0;
+
+ tc->tt = 0;
+ tc->ti = 0;
+ tc->ii = 0;
+ tc->numTraversals = 0;
+ tr->travCounter = tc;
+}
+
+/* recomp */
+/* code to track traversal descriptor stats */
+
+void countTraversal(pllInstance *tr)
+{
+ traversalInfo
+ *ti = tr->td[0].ti;
+ int i;
+ traversalCounter *tc = tr->travCounter;
+ tc->numTraversals += 1;
+
+ /*
+ printBothOpen("trav #%d(%d):",tc->numTraversals, tr->td[0].count);
+ */
+
+ for(i = 1; i < tr->td[0].count; i++)
+ {
+ traversalInfo *tInfo = &ti[i];
+
+ /*
+ printBothOpen(" %d q%d r%d |", tInfo->pNumber, tInfo->qNumber, tInfo->rNumber);
+ printBothOpen("%d", tInfo->pNumber);
+ */
+ switch(tInfo->tipCase)
+ {
+ case PLL_TIP_TIP:
+ tc->tt++;
+ /* printBothOpen("T"); */
+ break;
+ case PLL_TIP_INNER:
+ tc->ti++;
+ /* printBothOpen("M"); */
+ break;
+
+ case PLL_INNER_INNER:
+ tc->ii++;
+ /* printBothOpen("I"); */
+ break;
+ default:
+ assert(0);
+ }
+ /* printBothOpen(" "); */
+ }
+ /* printBothOpen(" so far T %d, M %d, I %d \n", tc->tt, tc->ti,tc->ii); */
+ tc->travlenFreq[tr->td[0].count] += 1;
+}
+
+
+/*
+void printTraversalInfo(pllInstance *tr)
+{
+ int
+ k,
+ total_steps = 0;
+
+ printBothOpen("Traversals : %d \n", tr->travCounter->numTraversals);
+ printBothOpen("Traversals tt: %d \n", tr->travCounter->tt);
+ printBothOpen("Traversals ti: %d \n", tr->travCounter->ti);
+ printBothOpen("Traversals ii: %d \n", tr->travCounter->ii);
+ printBothOpen("all: %d \n", tr->travCounter->tt + tr->travCounter->ii + tr->travCounter->ti);
+ printBothOpen("Traversals len freq : \n");
+
+ for(k = 0; k < tr->mxtips; k++)
+ {
+ total_steps += tr->travCounter->travlenFreq[k] * (k - 1);
+ if(tr->travCounter->travlenFreq[k] > 0)
+ printBothOpen("len %d : %d\n", k, tr->travCounter->travlenFreq[k]);
+ }
+ printBothOpen("all steps: %d \n", total_steps);
+}
+*/
+/*end code to track traversal descriptor stats */
+/* E recomp */
+
+/*
+void printVector(double *vector, int len, char *name)
+{
+ int i;
+ printBothOpen("LHVECTOR %s :", name);
+ for(i=0; i < len; i++)
+ {
+ printBothOpen("%.2f ", vector[i]);
+ if(i>10)
+ {
+ printBothOpen("...");
+ break;
+ }
+ }
+ printBothOpen("\n");
+}
+*/
+
+#endif
+
diff --git a/src/restartHashTable.c b/src/restartHashTable.c
new file mode 100644
index 0000000..9ed86a9
--- /dev/null
+++ b/src/restartHashTable.c
@@ -0,0 +1,357 @@
+/**
+ * PLL (version 1.0.0) a software library for phylogenetic inference
+ * Copyright (C) 2013 Tomas Flouri and Alexandros Stamatakis
+ *
+ * Derived from
+ * RAxML-HPC, a program for sequential and parallel estimation of phylogenetic
+ * trees by Alexandros Stamatakis
+ *
+ * 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 3 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, see <http://www.gnu.org/licenses/>.
+ *
+ * For any other enquiries send an Email to Tomas Flouri
+ * Tomas.Flouri at h-its.org
+ *
+ * When publishing work that uses PLL please cite PLL
+ *
+ * @file bipartitionList.c
+ */
+#include "mem_alloc.h"
+
+#ifndef WIN32
+#include <sys/times.h>
+#include <sys/types.h>
+#include <sys/time.h>
+#include <unistd.h>
+#endif
+
+#include <math.h>
+#include <time.h>
+#include <stdlib.h>
+#include <stdio.h>
+#include <ctype.h>
+#include <string.h>
+#include <assert.h>
+
+#include "pll.h"
+#include "pllInternal.h"
+
+/*
+static boolean treeNeedString(const char *fp, char c1, int *position)
+{
+ char
+ c2 = fp[(*position)++];
+
+ if(c2 == c1)
+ return PLL_TRUE;
+ else
+ {
+ int
+ lower = PLL_MAX(0, *position - 20),
+ upper = *position + 20;
+
+ printf("Tree Parsing ERROR: Expecting '%c', found: '%c'\n", c1, c2);
+ printf("Context: \n");
+
+ while(lower < upper && fp[lower])
+ printf("%c", fp[lower++]);
+
+ printf("\n");
+
+ return PLL_FALSE;
+ }
+}
+
+
+static boolean treeLabelEndString (char ch)
+{
+ switch(ch)
+ {
+ case '\0':
+ case '\t':
+ case '\n':
+ case '\r':
+ case ' ':
+ case ':':
+ case ',':
+ case '(':
+ case ')':
+ case ';':
+ return PLL_TRUE;
+ default:
+ break;
+ }
+
+ return PLL_FALSE;
+}
+
+static boolean treeGetLabelString (const char *fp, char *lblPtr, int maxlen, int *position)
+{
+ char
+ ch;
+
+ boolean
+ done,
+ lblfound;
+
+ if (--maxlen < 0)
+ lblPtr = (char *)NULL;
+ else
+ if(lblPtr == NULL)
+ maxlen = 0;
+
+ ch = fp[(*position)++];
+
+ done = treeLabelEndString(ch);
+
+ lblfound = !done;
+
+ while(!done)
+ {
+ if(treeLabelEndString(ch))
+ break;
+
+ if(--maxlen >= 0)
+ *lblPtr++ = ch;
+
+ ch = fp[(*position)++];
+ }
+
+ (*position)--;
+
+ if (lblPtr != NULL)
+ *lblPtr = '\0';
+
+ return lblfound;
+}
+
+static boolean treeFlushLabelString(const char *fp, int *position)
+{
+ return treeGetLabelString(fp, (char *) NULL, (int) 0, position);
+}
+
+static boolean treeProcessLengthString (const char *fp, double *dptr, int *position)
+{
+ (*position)++;
+
+ if(sscanf(&fp[*position], "%lf", dptr) != 1)
+ {
+ printf("ERROR: treeProcessLength: Problem reading branch length\n");
+ assert(0);
+ }
+
+ while(fp[*position] != ',' && fp[*position] != ')' && fp[*position] != ';')
+ *position = *position + 1;
+
+ return PLL_TRUE;
+}
+
+static int treeFlushLenString (const char *fp, int *position)
+{
+ double
+ dummy;
+
+ char
+ ch;
+
+ ch = fp[(*position)++];
+
+ if(ch == ':')
+ {
+ if(!treeProcessLengthString(fp, &dummy, position))
+ return 0;
+ return 1;
+ }
+
+ (*position)--;
+
+ return 1;
+}
+
+static int treeFindTipByLabelString(char *str, pllInstance *tr)
+{
+ int lookup = lookupWord(str, tr->nameHash);
+
+ if(lookup > 0)
+ {
+ assert(! tr->nodep[lookup]->back);
+ return lookup;
+ }
+ else
+ {
+ printf("ERROR: Cannot find tree species: %s\n", str);
+ return 0;
+ }
+}
+
+static int treeFindTipNameString (const char *fp, pllInstance *tr, int *position)
+{
+ char str[PLL_NMLNGTH + 2];
+ int n;
+
+ if (treeGetLabelString (fp, str, PLL_NMLNGTH + 2, position))
+ n = treeFindTipByLabelString(str, tr);
+ else
+ n = 0;
+
+ return n;
+}
+
+static boolean addElementLenString(const char *fp, pllInstance *tr, nodeptr p, int *position)
+{
+ nodeptr
+ q;
+
+ int
+ n,
+ fres;
+
+ char
+ ch;
+
+ if ((ch = fp[(*position)++]) == '(')
+ {
+ n = (tr->nextnode)++;
+ if (n > 2*(tr->mxtips) - 2)
+ {
+ if (tr->rooted || n > 2*(tr->mxtips) - 1)
+ {
+ printf("ERROR: Too many internal nodes. Is tree rooted?\n");
+ printf(" Deepest splitting should be a trifurcation.\n");
+ return PLL_FALSE;
+ }
+ else
+ {
+ tr->rooted = PLL_TRUE;
+ }
+ }
+
+ q = tr->nodep[n];
+
+ if (!addElementLenString(fp, tr, q->next, position))
+ return PLL_FALSE;
+ if (!treeNeedString(fp, ',', position))
+ return PLL_FALSE;
+ if (!addElementLenString(fp, tr, q->next->next, position))
+ return PLL_FALSE;
+ if (!treeNeedString(fp, ')', position))
+ return PLL_FALSE;
+
+
+ treeFlushLabelString(fp, position);
+ }
+ else
+ {
+ (*position)--;
+
+ if ((n = treeFindTipNameString(fp, tr, position)) <= 0)
+ return PLL_FALSE;
+ q = tr->nodep[n];
+
+ if (tr->start->number > n)
+ tr->start = q;
+ (tr->ntips)++;
+ }
+
+
+ fres = treeFlushLenString(fp, position);
+ if(!fres)
+ return PLL_FALSE;
+
+ hookupDefault(p, q);
+
+ return PLL_TRUE;
+}
+
+
+
+void treeReadTopologyString(char *treeString, pllInstance *tr)
+{
+ char
+ *fp = treeString;
+
+ nodeptr
+ p;
+
+ int
+ position = 0,
+ i;
+
+ char
+ ch;
+
+
+ for(i = 1; i <= tr->mxtips; i++)
+ tr->nodep[i]->back = (node *)NULL;
+
+ for(i = tr->mxtips + 1; i < 2 * tr->mxtips; i++)
+ {
+ tr->nodep[i]->back = (nodeptr)NULL;
+ tr->nodep[i]->next->back = (nodeptr)NULL;
+ tr->nodep[i]->next->next->back = (nodeptr)NULL;
+ tr->nodep[i]->number = i;
+ tr->nodep[i]->next->number = i;
+ tr->nodep[i]->next->next->number = i;
+ }
+
+ tr->start = tr->nodep[1];
+ tr->ntips = 0;
+ tr->nextnode = tr->mxtips + 1;
+ tr->rooted = PLL_FALSE;
+
+ p = tr->nodep[(tr->nextnode)++];
+
+ assert(fp[position++] == '(');
+
+ if (! addElementLenString(fp, tr, p, &position))
+ assert(0);
+
+ if (! treeNeedString(fp, ',', &position))
+ assert(0);
+
+ if (! addElementLenString(fp, tr, p->next, &position))
+ assert(0);
+
+ if(!tr->rooted)
+ {
+ if ((ch = fp[position++]) == ',')
+ {
+ if (! addElementLenString(fp, tr, p->next->next, &position))
+ assert(0);
+ }
+ else
+ assert(0);
+ }
+ else
+ assert(0);
+
+ if (! treeNeedString(fp, ')', &position))
+ assert(0);
+
+ treeFlushLabelString(fp, &position);
+
+ if (!treeFlushLenString(fp, &position))
+ assert(0);
+
+ if (!treeNeedString(fp, ';', &position))
+ assert(0);
+
+ if(tr->rooted)
+ assert(0);
+ else
+ tr->start = tr->nodep[1];
+
+ printf("Tree parsed\n");
+
+}
+*/
diff --git a/src/searchAlgo.c b/src/searchAlgo.c
new file mode 100644
index 0000000..992d1e0
--- /dev/null
+++ b/src/searchAlgo.c
@@ -0,0 +1,3682 @@
+/**
+ * PLL (version 1.0.0) a software library for phylogenetic inference
+ * Copyright (C) 2013 Tomas Flouri and Alexandros Stamatakis
+ *
+ * Derived from
+ * RAxML-HPC, a program for sequential and parallel estimation of phylogenetic
+ * trees by Alexandros Stamatakis
+ *
+ * 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 3 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, see <http://www.gnu.org/licenses/>.
+ *
+ * For any other enquiries send an Email to Tomas Flouri
+ * Tomas.Flouri at h-its.org
+ *
+ * When publishing work that uses PLL please cite PLL
+ *
+ * @file searchAlgo.c
+ * @brief Collection of routines for performing likelihood computation and branch optimization.
+ *
+ * Detailed description to appear soon.
+ */
+#include "mem_alloc.h"
+
+#ifndef WIN32
+#include <sys/times.h>
+#include <sys/types.h>
+#include <sys/time.h>
+#include <unistd.h>
+#endif
+
+#include <math.h>
+#include <time.h>
+#include <stdlib.h>
+#include <stdio.h>
+#include <ctype.h>
+#include <string.h>
+#include <assert.h>
+#include <errno.h>
+
+#include "pll.h"
+#include "pllInternal.h"
+
+typedef struct bInf {
+ double likelihood;
+ nodeptr node;
+} bestInfo;
+
+typedef struct iL {
+ bestInfo *list;
+ int n;
+ int valid;
+} infoList;
+
+double treeOptimizeRapid(pllInstance *tr, partitionList *pr, int mintrav, int maxtrav, bestlist *bt, infoList *iList);
+nniMove getBestNNIForBran(pllInstance* tr, partitionList *pr, nodeptr p, double curLH);
+void evalNNIForSubtree(pllInstance* tr, partitionList *pr, nodeptr p, nniMove* nniList, int* cnt, int* cnt_nni, double curLH);
+
+
+static int cmp_nni(const void* nni1, const void* nni2);
+static void pllTraverseUpdate (pllInstance *tr, partitionList *pr, nodeptr p, nodeptr q, int mintrav, int maxtrav, pllRearrangeList * bestList);
+static void pllTraverseUpdateTBR (pllInstance *tr, partitionList *pr, nodeptr p, nodeptr q, int mintravP, int maxtravP, int mintravQ, int maxtravQ, pllRearrangeList * bestList);
+static int pllStoreRearrangement (pllRearrangeList * bestList, pllRearrangeInfo * rearr);
+static int pllTestInsertBIG (pllInstance * tr, partitionList * pr, nodeptr p, nodeptr q, pllRearrangeList * bestList);
+static int pllTestSPR (pllInstance * tr, partitionList * pr, nodeptr p, int mintrav, int maxtrav, pllRearrangeList * bestList);
+static int pllTestTBRMove (pllInstance * tr, partitionList * pr, nodeptr branch1, nodeptr branch2, pllRearrangeList * bestList);
+static int pllComputeTBR (pllInstance * tr, partitionList * pr, nodeptr p, int mintrav, int maxtrav, pllRearrangeList * bestList);
+static void pllCreateSprInfoRollback (pllInstance * tr, pllRearrangeInfo * rearr, int numBranches);
+static void pllCreateNniInfoRollback (pllInstance * tr, pllRearrangeInfo * rearr);
+static void pllCreateTbrInfoRollback (pllInstance * tr, pllRearrangeInfo * rearr, int numBranches);
+static void pllCreateRollbackInfo (pllInstance * tr, pllRearrangeInfo * rearr, int numBranches);
+static void pllRollbackNNI (pllInstance * tr, partitionList * pr, pllRollbackInfo * ri);
+static void pllRollbackSPR (partitionList * pr, pllRollbackInfo * ri);
+static void pllRollbackTBR (pllInstance * tr, partitionList * pr, pllRollbackInfo * ri);
+
+extern partitionLengths pLengths[PLL_MAX_MODEL];
+
+boolean initrav (pllInstance *tr, partitionList *pr, nodeptr p)
+{
+ nodeptr q;
+
+ if (!isTip(p->number, tr->mxtips))
+ {
+ q = p->next;
+
+ do
+ {
+ if (! initrav(tr, pr, q->back)) return PLL_FALSE;
+ q = q->next;
+ }
+ while (q != p);
+
+ pllUpdatePartials(tr, pr, p, PLL_FALSE);
+ }
+
+ return PLL_TRUE;
+}
+
+
+/** @brief Optimize the length of a specific branch
+
+ Optimize the length of the branch connecting \a p and \a p->back
+ for each partition (\a tr->numBranches) in library instance \a tr.
+
+ @param tr
+ The library instance
+
+ @param pr
+ Partition list
+
+ @param p
+ Endpoints of branch to be optimized
+*/
+void update(pllInstance *tr, partitionList *pr, nodeptr p)
+{
+ nodeptr q;
+ int i;
+ double z[PLL_NUM_BRANCHES], z0[PLL_NUM_BRANCHES];
+ int numBranches = pr->perGeneBranchLengths ? pr->numberOfPartitions : 1;
+
+ #ifdef _DEBUG_UPDATE
+ double
+ startLH;
+
+ pllEvaluateLikelihood (tr, p);
+
+ startLH = tr->likelihood;
+ #endif
+
+ q = p->back;
+
+ for(i = 0; i < numBranches; i++)
+ z0[i] = q->z[i];
+
+ if(numBranches > 1)
+ makenewzGeneric(tr, pr, p, q, z0, PLL_NEWZPERCYCLE, z, PLL_TRUE);
+ else
+ makenewzGeneric(tr, pr, p, q, z0, PLL_NEWZPERCYCLE, z, PLL_FALSE);
+
+ for(i = 0; i < numBranches; i++)
+ {
+ if(!tr->partitionConverged[i])
+ {
+ if(PLL_ABS(z[i] - z0[i]) > PLL_DELTAZ)
+ {
+ tr->partitionSmoothed[i] = PLL_FALSE;
+ }
+
+ p->z[i] = q->z[i] = z[i];
+ }
+ }
+
+ #ifdef _DEBUG_UPDATE
+ pllEvaluateLikelihood (tr, p);
+
+ if(tr->likelihood <= startLH)
+ {
+ if(fabs(tr->likelihood - startLH) > 0.01)
+ {
+ printf("%f %f\n", startLH, tr->likelihood);
+ assert(0);
+ }
+ }
+ #endif
+}
+
+/** @brief Branch length optimization of subtree
+
+ Optimize the length of branch connected by \a p and \a p->back, and the
+ lengths of all branches in the subtrees rooted at \a p->next and \a p->next->next
+
+ @param tr
+ The library instance
+
+ @param pr
+ Partition list
+
+ @param p
+ Endpoint of branches to be optimized
+*/
+void smooth (pllInstance *tr, partitionList *pr, nodeptr p)
+{
+ nodeptr q;
+ int numBranches = pr->perGeneBranchLengths?pr->numberOfPartitions:1;
+
+ update(tr, pr, p); /* Adjust branch */
+
+ if (! isTip(p->number, tr->mxtips))
+ { /* Adjust descendants */
+ q = p->next;
+ while (q != p)
+ {
+ smooth(tr, pr, q->back);
+ q = q->next;
+ }
+
+ if(numBranches > 1 && !tr->useRecom)
+ pllUpdatePartials(tr, pr,p, PLL_TRUE);
+ else
+ pllUpdatePartials(tr, pr,p, PLL_FALSE);
+ }
+}
+
+/** @brief Check whether the branches in all partitions have been optimized
+
+ Check if all branches in all partitions have reached the threshold for
+ optimization. If at least one branch can be optimized further return \b PLL_FALSE.
+
+ @param tr
+ The library instance
+
+ @return
+ If at least one branch can be further optimized return \b PLL_FALSE,
+ otherwise \b PLL_TRUE.
+
+*/
+static boolean allSmoothed(pllInstance *tr, int numBranches)
+{
+ int i;
+ boolean result = PLL_TRUE;
+
+ for(i = 0; i < numBranches; i++)
+ {
+ if(tr->partitionSmoothed[i] == PLL_FALSE)
+ result = PLL_FALSE;
+ else
+ tr->partitionConverged[i] = PLL_TRUE;
+ }
+
+ return result;
+}
+
+
+/** @brief Optimize all branch lenghts of a tree
+
+ Perform \a maxtimes rounds of branch length optimization by running smooth()
+ on all neighbour nodes of node \a tr->start.
+
+ @param tr
+ The library instance
+
+ @param maxtimes
+ Number of optimization rounds to perform
+*/
+/* do maxtimes rounds of branch length optimization */
+void smoothTree (pllInstance *tr, partitionList *pr, int maxtimes)
+{
+ nodeptr p, q;
+ int i, count = 0;
+ int numBranches = pr->perGeneBranchLengths?pr->numberOfPartitions:1;
+
+ p = tr->start;
+ for(i = 0; i < numBranches; i++)
+ tr->partitionConverged[i] = PLL_FALSE;
+
+ while (--maxtimes >= 0)
+ {
+ for(i = 0; i < numBranches; i++)
+ tr->partitionSmoothed[i] = PLL_TRUE;
+
+ smooth(tr, pr, p->back);
+ if (!isTip(p->number, tr->mxtips))
+ {
+ q = p->next;
+ while (q != p)
+ {
+ smooth(tr, pr, q->back);
+ q = q->next;
+ }
+ }
+ count++;
+
+ if (allSmoothed(tr, numBranches)) break;
+ }
+
+ for(i = 0; i < numBranches; i++)
+ tr->partitionConverged[i] = PLL_FALSE;
+}
+
+
+/** @brief Optimize the branch length of edges around a specific node
+
+ Optimize \a maxtimes the branch length of all (3) edges around a given node
+ \a p of the tree of library instance \a tr.
+
+ @param tr
+ The library instance
+
+ @param p
+ The node around which to optimize the edges
+
+ @param maxtimes
+ Number of optimization rounds to perform
+*/
+void localSmooth (pllInstance *tr, partitionList *pr, nodeptr p, int maxtimes)
+{
+ nodeptr q;
+ int i;
+ int numBranches = pr->perGeneBranchLengths ? pr->numberOfPartitions : 1;
+ if (isTip(p->number, tr->mxtips)) return;
+
+ for(i = 0; i < PLL_NUM_BRANCHES; i++)
+ tr->partitionConverged[i] = PLL_FALSE;
+
+ while (--maxtimes >= 0)
+ {
+ for(i = 0; i < PLL_NUM_BRANCHES; i++)
+ tr->partitionSmoothed[i] = PLL_TRUE;
+
+ q = p;
+ do
+ {
+ update(tr, pr, q);
+ q = q->next;
+ }
+ while (q != p);
+
+ if (allSmoothed(tr, numBranches))
+ break;
+ }
+
+ for(i = 0; i < PLL_NUM_BRANCHES; i++)
+ {
+ tr->partitionSmoothed[i] = PLL_FALSE;
+ tr->partitionConverged[i] = PLL_FALSE;
+ }
+}
+
+
+
+
+/** @brief Reset an \a infoList
+
+ Resets an \a infoList by setting elements \a node and \a likelihood
+ of each element of the \a bestInfo list structure to \b NULL and
+ \a PLL_UNLIKELY, respectively.
+
+ @param iList
+ The given \a infoList.
+*/
+static void resetInfoList(infoList *iList)
+{
+ int
+ i;
+
+ iList->valid = 0;
+
+ for(i = 0; i < iList->n; i++)
+ {
+ iList->list[i].node = (nodeptr)NULL;
+ iList->list[i].likelihood = PLL_UNLIKELY;
+ }
+}
+
+/** @brief Initialize an \a infoList
+
+ Initialize an \a infoList by creating a \a bestInfo list structure
+ of \a n elements and setting the attributes \a node and \a likelihood
+ of each element of the \a bestInfo list structure to \b NULL and
+ \a PLL_UNLIKELY, respectively.
+
+ @param iList
+ The given \a infoList.
+
+ @param n
+ Number of elements to be created in the \a bestInfo list.
+*/
+static void initInfoList(infoList *iList, int n)
+{
+ int
+ i;
+
+ iList->n = n;
+ iList->valid = 0;
+ iList->list = (bestInfo *)rax_malloc(sizeof(bestInfo) * (size_t)n);
+
+ for(i = 0; i < n; i++)
+ {
+ iList->list[i].node = (nodeptr)NULL;
+ iList->list[i].likelihood = PLL_UNLIKELY;
+ }
+}
+
+/** @brief Deallocate the contents of an \a infoList
+
+ Deallocate the contents of a given \a infoList by freeing
+ the memory used by its \a bestInfo list structure.
+
+ @param iList
+ The \a infoList to be used.
+*/
+static void freeInfoList(infoList *iList)
+{
+ rax_free(iList->list);
+}
+
+
+/** @brief Insert a record in an \a infoList
+
+ Insert the pair \a likelihood and \node into list \a iList
+ \b only if there already exists a pair in \a iList
+ whose \a likelihood attribute is smaller than the given \a
+ likelihood. The insertion is done by replacing the smallest
+ likelihood pair with the new pair.
+
+ @param node
+ The given node
+
+ @param likelihood
+ The given likelihood
+
+ @param iList
+ The given \a infoList where the record will possibly be appended.
+*/
+static void insertInfoList(nodeptr node, double likelihood, infoList *iList)
+{
+ int
+ i,
+ min = 0;
+
+ double
+ min_l = iList->list[0].likelihood;
+
+ for(i = 1; i < iList->n; i++)
+ {
+ if(iList->list[i].likelihood < min_l)
+ {
+ min = i;
+ min_l = iList->list[i].likelihood;
+ }
+ }
+
+ if(likelihood > min_l)
+ {
+ iList->list[min].likelihood = likelihood;
+ iList->list[min].node = node;
+ if(iList->valid < iList->n)
+ iList->valid += 1;
+ }
+}
+
+
+/** @brief Optimize branch lengths of region
+
+ Optimize the branch lenghts of only a specific region. The branch optimization starts
+ at a node \a p and is carried out in all nodes with distance upto \a region edges from
+ \a p.
+
+ @param tr
+ The library instance.
+
+ @param p
+ Node to start branch optimization from.
+
+ @param region
+ The allowed node distance from \p for which to still perform branch optimization.
+*/
+void smoothRegion (pllInstance *tr, partitionList *pr, nodeptr p, int region)
+{
+ nodeptr q;
+
+ update(tr, pr, p); /* Adjust branch */
+
+ if (region > 0)
+ {
+ if (!isTip(p->number, tr->mxtips))
+ {
+ q = p->next;
+ while (q != p)
+ {
+ smoothRegion(tr, pr, q->back, --region);
+ q = q->next;
+ }
+
+ pllUpdatePartials(tr, pr,p, PLL_FALSE);
+ }
+ }
+}
+
+/** @brief Wrapper function for optimizing the branch length of a region \a maxtimes times
+
+ Optimize the branch lengths of a specific region \a maxtimes times. The branch optimization
+ starts at a given node \a p and is carried out in all nodes with distance upto \a region
+ from \a p.
+
+ @param tr
+ The library instance.
+
+ @param p
+ Node to start branch optimization from.
+
+ @param maxtimes
+ Number of times to perform branch optimization.
+
+ @param region
+ The allwed node distance from \p for which to still perform branch optimization.
+
+ @todo
+ In the previous version (before the model-sep merge) the loops were controlled by tr->numBranches,
+ and now they are controlled by a constant PLL_NUM_BRANCHES. What is right?
+*/
+void regionalSmooth (pllInstance *tr, partitionList *pr, nodeptr p, int maxtimes, int region)
+{
+ nodeptr q;
+ int i;
+ int numBranches = pr->perGeneBranchLengths?pr->numberOfPartitions:1;
+
+ if (isTip(p->number, tr->mxtips)) return; /* Should be an error */
+
+ for(i = 0; i < PLL_NUM_BRANCHES; i++)
+ tr->partitionConverged[i] = PLL_FALSE;
+
+ while (--maxtimes >= 0)
+ {
+ for(i = 0; i < PLL_NUM_BRANCHES; i++)
+ tr->partitionSmoothed[i] = PLL_TRUE;
+
+ q = p;
+ do
+ {
+ smoothRegion(tr, pr, q, region);
+ q = q->next;
+ }
+ while (q != p);
+
+ if (allSmoothed(tr, numBranches))
+ break;
+ }
+
+ for(i = 0; i < PLL_NUM_BRANCHES; i++) {
+ tr->partitionSmoothed[i] = PLL_FALSE;
+ tr->partitionConverged[i] = PLL_FALSE;
+ }
+}
+
+
+
+
+/** @brief Split the tree into two components and optimize new branch length
+
+ Split the tree into two components. The disconnection point is node \a p.
+ First, a branch length is computed for the newly created branch between nodes
+ \a p->next->back and \a p->next->next->back and then the two nodes are
+ connected (hookup). Disconnection is done by setting \a p->next->next->back
+ and \a p->next->back to \b NULL.
+
+ @param tr
+ The library instance
+
+ @param p
+ The node at which the tree should be decomposed into two components.
+
+ @param numBranches
+ Number of branches per partition
+
+ @return
+ Node from the disconnected component
+
+ @todo
+ Why do we return this node?
+
+ @image html removeBIG.png "The diagram shows in blue color the new edge that is created and in red the edges that are removed"
+*/
+nodeptr removeNodeBIG (pllInstance *tr, partitionList *pr, nodeptr p, int numBranches)
+{
+ double zqr[numBranches], result[numBranches];
+ nodeptr q, r;
+ int i;
+
+ q = p->next->back;
+ r = p->next->next->back;
+
+ for(i = 0; i < numBranches; i++)
+ zqr[i] = q->z[i] * r->z[i];
+
+ makenewzGeneric(tr, pr, q, r, zqr, PLL_ITERATIONS, result, PLL_FALSE);
+
+ for(i = 0; i < numBranches; i++)
+ tr->zqr[i] = result[i];
+
+ hookup(q, r, result, numBranches);
+
+ p->next->next->back = p->next->back = (node *) NULL;
+
+ return q;
+}
+
+/** @brief Split the tree into two components and recompute likelihood
+
+ Split the tree into two component. The disconnection point is node \a p.
+ Set the branch length of the new node between \a p->next->back and
+ \a p->next->next->back to \a tr->currentZQR and then decompose the tree
+ into two components by setting \a p->next->back and \a p->next->next->back
+ to \b NULL.
+
+ @param tr
+ The library instance
+
+ @param p
+ The node at which the tree should be decomposed into two components.
+
+ @return q
+ the node after \a p
+
+ @todo
+ Why do we return this node? Why do we set to tr->currentZQR and not compute
+ new optimized length? What is tr->currentZQR?
+*/
+nodeptr removeNodeRestoreBIG (pllInstance *tr, partitionList *pr, nodeptr p)
+{
+ nodeptr q, r;
+
+ q = p->next->back;
+ r = p->next->next->back;
+
+ pllUpdatePartials(tr, pr,q, PLL_FALSE);
+ pllUpdatePartials(tr, pr,r, PLL_FALSE);
+
+ hookup(q, r, tr->currentZQR, pr->perGeneBranchLengths?pr->numberOfPartitions:1);
+
+ p->next->next->back = p->next->back = (node *) NULL;
+
+ return q;
+}
+
+/** @brief Connect two disconnected tree components
+
+ Connect two disconnected components by specifying an internal edge from one
+ component and a leaf from the other component. The internal edge \a e is the
+ edge between \a q and \a q->back. The leaf is specified by \a p.
+ Edge \a e is removed and two new edges are created. The first one is an edge
+ between \a p->next and \a q, and the second one is between \a p->next->next
+ and \a q->back. The new likelihood vector for node \a p is computed.
+
+ @note The function makes use of the \a thoroughInsertion flag
+
+ @todo
+ What is tr->lzi ? What is thorough insertion? Why do we optimize branch lengths
+ that will be removed? Add explanation
+
+ @image html pll.png "The diagram shows in blue colors the new edges that are created and in red the edge that is removed"
+*/
+boolean insertBIG (pllInstance *tr, partitionList *pr, nodeptr p, nodeptr q)
+{
+ nodeptr r, s;
+ int i;
+ int numBranches = pr->perGeneBranchLengths?pr->numberOfPartitions:1;
+
+ r = q->back;
+ s = p->back;
+
+ for(i = 0; i < numBranches; i++)
+ tr->lzi[i] = q->z[i];
+
+ if(tr->thoroughInsertion)
+ {
+ double zqr[numBranches], zqs[numBranches], zrs[numBranches], lzqr, lzqs, lzrs, lzsum, lzq, lzr, lzs, lzmax;
+ double defaultArray[numBranches];
+ double e1[numBranches], e2[numBranches], e3[numBranches];
+ double *qz;
+
+ qz = q->z;
+
+ for(i = 0; i < numBranches; i++)
+ defaultArray[i] = PLL_DEFAULTZ;
+
+ makenewzGeneric(tr, pr, q, r, qz, PLL_ITERATIONS, zqr, PLL_FALSE);
+ /* the branch lengths values will be estimated using q, r and s
+ * q-s are not connected, but both q and s have a valid LH vector , so we can call makenewzGeneric to get a value for
+ * lzsum, which is then use to generate reasonable starting values e1, e2, e3 for the new branches we create after the insertion
+ */
+
+ makenewzGeneric(tr, pr, q, s, defaultArray, PLL_ITERATIONS, zqs, PLL_FALSE);
+ makenewzGeneric(tr, pr, r, s, defaultArray, PLL_ITERATIONS, zrs, PLL_FALSE);
+
+
+ for(i = 0; i < numBranches; i++)
+ {
+ lzqr = (zqr[i] > PLL_ZMIN) ? log(zqr[i]) : log(PLL_ZMIN);
+ lzqs = (zqs[i] > PLL_ZMIN) ? log(zqs[i]) : log(PLL_ZMIN);
+ lzrs = (zrs[i] > PLL_ZMIN) ? log(zrs[i]) : log(PLL_ZMIN);
+ lzsum = 0.5 * (lzqr + lzqs + lzrs);
+
+ lzq = lzsum - lzrs;
+ lzr = lzsum - lzqs;
+ lzs = lzsum - lzqr;
+ lzmax = log(PLL_ZMAX);
+
+ if (lzq > lzmax) {lzq = lzmax; lzr = lzqr; lzs = lzqs;}
+ else if (lzr > lzmax) {lzr = lzmax; lzq = lzqr; lzs = lzrs;}
+ else if (lzs > lzmax) {lzs = lzmax; lzq = lzqs; lzr = lzrs;}
+
+ e1[i] = exp(lzq);
+ e2[i] = exp(lzr);
+ e3[i] = exp(lzs);
+ }
+ hookup(p->next, q, e1, numBranches);
+ hookup(p->next->next, r, e2, numBranches);
+ hookup(p, s, e3, numBranches);
+ }
+ else
+ {
+ double z[numBranches];
+
+ for(i = 0; i < numBranches; i++)
+ {
+ z[i] = sqrt(q->z[i]);
+
+ if(z[i] < PLL_ZMIN)
+ z[i] = PLL_ZMIN;
+ if(z[i] > PLL_ZMAX)
+ z[i] = PLL_ZMAX;
+ }
+
+ hookup(p->next, q, z, numBranches);
+ hookup(p->next->next, r, z, numBranches);
+ }
+
+ pllUpdatePartials(tr, pr,p, PLL_FALSE);
+
+ if(tr->thoroughInsertion)
+ {
+ localSmooth(tr, pr, p, PLL_MAX_LOCAL_SMOOTHING_ITERATIONS);
+ for(i = 0; i < numBranches; i++)
+ {
+ tr->lzq[i] = p->next->z[i];
+ tr->lzr[i] = p->next->next->z[i];
+ tr->lzs[i] = p->z[i];
+ }
+ }
+
+ return PLL_TRUE;
+}
+
+/** @brief Connect two disconnected tree components without optimizing branch lengths
+
+ Connect two disconnected components by specifying an internal edge from one
+ component and a leaf from the other component. The internal edge \a e is the
+ edge between \a q and \a q->back. The leaf is specified by \a p.
+ Edge \a e is removed and two new edges are created. The first one is an edge
+ between \a p->next and \a q, and the second one is between \a p->next->next
+ and \a q->back. The new likelihood vector for node \a p is computed.
+
+ @note The function makes use of the \a thoroughInsertion flag
+
+ @todo
+ What is the difference between this and insertBIG?
+*/
+boolean insertRestoreBIG (pllInstance *tr, partitionList *pr, nodeptr p, nodeptr q)
+{
+ nodeptr r, s;
+
+ r = q->back;
+ s = p->back;
+
+ int numBranches = pr->perGeneBranchLengths?pr->numberOfPartitions:1;
+
+ if(tr->thoroughInsertion)
+ {
+ hookup(p->next, q, tr->currentLZQ, numBranches);
+ hookup(p->next->next, r, tr->currentLZR, numBranches);
+ hookup(p, s, tr->currentLZS, numBranches);
+ }
+ else
+ {
+ double z[PLL_NUM_BRANCHES];
+ int i;
+
+ for(i = 0; i < numBranches; i++)
+ {
+ double zz;
+ zz = sqrt(q->z[i]);
+ if(zz < PLL_ZMIN)
+ zz = PLL_ZMIN;
+ if(zz > PLL_ZMAX)
+ zz = PLL_ZMAX;
+ z[i] = zz;
+ }
+
+ hookup(p->next, q, z, numBranches);
+ hookup(p->next->next, r, z, numBranches);
+ }
+
+ pllUpdatePartials(tr, pr,p, PLL_FALSE);
+
+ return PLL_TRUE;
+}
+
+
+static void restoreTopologyOnly(pllInstance *tr, bestlist *bt, int numBranches)
+{
+ nodeptr p = tr->removeNode;
+ nodeptr q = tr->insertNode;
+ double qz[PLL_NUM_BRANCHES], pz[PLL_NUM_BRANCHES], p1z[PLL_NUM_BRANCHES], p2z[PLL_NUM_BRANCHES];
+ nodeptr p1, p2, r, s;
+ double currentLH = tr->likelihood;
+ int i;
+
+ p1 = p->next->back;
+ p2 = p->next->next->back;
+
+ //memcpy(p1z, p1->z, numBranches*sizeof(double));
+ //memcpy(p2z, p2->z, numBranches*sizeof(double));
+ //memcpy(qz, q->z, numBranches*sizeof(double));
+ //memcpy(pz, p->z, numBranches*sizeof(double));
+ for(i = 0; i < numBranches; i++)
+ {
+ p1z[i] = p1->z[i];
+ p2z[i] = p2->z[i];
+ }
+
+ hookup(p1, p2, tr->currentZQR, numBranches);
+
+ p->next->next->back = p->next->back = (node *) NULL;
+ for(i = 0; i < numBranches; i++)
+ {
+ qz[i] = q->z[i];
+ pz[i] = p->z[i];
+ }
+
+ r = q->back;
+ s = p->back;
+
+ if(tr->thoroughInsertion)
+ {
+ hookup(p->next, q, tr->currentLZQ, numBranches);
+ hookup(p->next->next, r, tr->currentLZR, numBranches);
+ hookup(p, s, tr->currentLZS, numBranches);
+ }
+ else
+ {
+ double z[PLL_NUM_BRANCHES];
+ for(i = 0; i < numBranches; i++)
+ {
+ z[i] = sqrt(q->z[i]);
+ if(z[i] < PLL_ZMIN)
+ z[i] = PLL_ZMIN;
+ if(z[i] > PLL_ZMAX)
+ z[i] = PLL_ZMAX;
+ }
+ hookup(p->next, q, z, numBranches);
+ hookup(p->next->next, r, z, numBranches);
+ }
+
+ tr->likelihood = tr->bestOfNode;
+
+ saveBestTree(bt, tr, numBranches);
+
+ tr->likelihood = currentLH;
+
+ hookup(q, r, qz, numBranches);
+
+ p->next->next->back = p->next->back = (nodeptr) NULL;
+
+ if(tr->thoroughInsertion)
+ hookup(p, s, pz, numBranches);
+
+ hookup(p->next, p1, p1z, numBranches);
+ hookup(p->next->next, p2, p2z, numBranches);
+}
+
+/** @brief Test the
+*/
+boolean testInsertBIG (pllInstance *tr, partitionList *pr, nodeptr p, nodeptr q)
+{
+
+ int numBranches = pr->perGeneBranchLengths?pr->numberOfPartitions:1;
+
+ double qz[PLL_NUM_BRANCHES], pz[PLL_NUM_BRANCHES];
+ nodeptr r;
+ double startLH = tr->endLH;
+ int i;
+
+ r = q->back;
+ for(i = 0; i < numBranches; i++)
+ {
+ qz[i] = q->z[i];
+ pz[i] = p->z[i];
+ }
+
+ if (! insertBIG(tr, pr, p, q)) return PLL_FALSE;
+
+ pllEvaluateLikelihood (tr, pr, p->next->next, PLL_FALSE, PLL_FALSE);
+
+ if(tr->likelihood > tr->bestOfNode)
+ {
+ tr->bestOfNode = tr->likelihood;
+ tr->insertNode = q;
+ tr->removeNode = p;
+ for(i = 0; i < numBranches; i++)
+ {
+ tr->currentZQR[i] = tr->zqr[i];
+ tr->currentLZR[i] = tr->lzr[i];
+ tr->currentLZQ[i] = tr->lzq[i];
+ tr->currentLZS[i] = tr->lzs[i];
+ }
+ }
+
+ if(tr->likelihood > tr->endLH)
+ {
+ tr->insertNode = q;
+ tr->removeNode = p;
+ for(i = 0; i < numBranches; i++)
+ tr->currentZQR[i] = tr->zqr[i];
+ tr->endLH = tr->likelihood;
+ }
+
+ /* reset the topology so that it is the same as it was before calling insertBIG */
+ hookup(q, r, qz, numBranches);
+
+ p->next->next->back = p->next->back = (nodeptr) NULL;
+
+ if(tr->thoroughInsertion)
+ {
+ nodeptr s = p->back;
+ hookup(p, s, pz, numBranches);
+ }
+
+ if((tr->doCutoff) && (tr->likelihood < startLH))
+ {
+ tr->lhAVG += (startLH - tr->likelihood);
+ tr->lhDEC++;
+ if((startLH - tr->likelihood) >= tr->lhCutoff)
+ return PLL_FALSE;
+ else
+ return PLL_TRUE;
+ }
+ else
+ return PLL_TRUE;
+}
+
+
+/** @brief Recursively traverse tree and test insertion
+
+ Recursively traverses the tree structure starting from node \a q and
+ tests the insertion of the component specified by leaf \a p at the edge
+ between \a q and \a q->back.
+
+ @param tr
+ PLL instance
+
+ @param pr
+ List of partitions
+ @param p
+ Leaf node of one tree component
+
+ @param q
+ Endpoint node of the edge to test the insertion
+
+ @param mintrav
+ Minimum radius around \a q to test the insertion
+
+ @param maxtrav
+ Maximum radius around \a q to test the insertion\
+*/
+void addTraverseBIG(pllInstance *tr, partitionList *pr, nodeptr p, nodeptr q, int mintrav, int maxtrav)
+{
+ if (--mintrav <= 0)
+ {
+ if (! testInsertBIG(tr, pr, p, q)) return;
+
+ }
+
+ if ((!isTip(q->number, tr->mxtips)) && (--maxtrav > 0))
+ {
+ addTraverseBIG(tr, pr, p, q->next->back, mintrav, maxtrav);
+ addTraverseBIG(tr, pr, p, q->next->next->back, mintrav, maxtrav);
+ }
+}
+
+
+
+
+/** @brief Compute the best SPR movement
+
+ Compute all SPR moves starting from \a p in the space defined by \a mintrav and
+ \a maxtrav and store the best in the \a tr structure.
+
+ @param tr
+ PLL instancve
+
+ @param pr
+ List of partitions
+
+ @param p
+ Node from which to start the SPR moves testing
+
+ @param mintrav
+ Minimum distance from \a p where to start testing SPRs
+
+ @param maxtrav
+ Maximum distance from \a p where to test SPRs
+
+ @return
+ 0,1 or \b PLL_BADREAR
+
+ @todo
+ fix the return value
+*/
+int rearrangeBIG(pllInstance *tr, partitionList *pr, nodeptr p, int mintrav, int maxtrav)
+{
+ double p1z[PLL_NUM_BRANCHES], p2z[PLL_NUM_BRANCHES], q1z[PLL_NUM_BRANCHES], q2z[PLL_NUM_BRANCHES];
+ nodeptr p1, p2, q, q1, q2;
+ int mintrav2, i;
+ boolean doP = PLL_TRUE, doQ = PLL_TRUE;
+ int numBranches = pr->perGeneBranchLengths ? pr->numberOfPartitions : 1;
+
+ if (maxtrav < 1 || mintrav > maxtrav) return (0);
+ q = p->back;
+
+
+
+
+ if (!isTip(p->number, tr->mxtips) && doP)
+ {
+ p1 = p->next->back;
+ p2 = p->next->next->back;
+
+
+ if(!isTip(p1->number, tr->mxtips) || !isTip(p2->number, tr->mxtips))
+ {
+ for(i = 0; i < numBranches; i++)
+ {
+ p1z[i] = p1->z[i];
+ p2z[i] = p2->z[i];
+ }
+
+ if (! removeNodeBIG(tr, pr, p, numBranches)) return PLL_BADREAR;
+
+ if (!isTip(p1->number, tr->mxtips))
+ {
+ addTraverseBIG(tr, pr, p, p1->next->back,
+ mintrav, maxtrav);
+
+ addTraverseBIG(tr, pr, p, p1->next->next->back,
+ mintrav, maxtrav);
+ }
+
+ if (!isTip(p2->number, tr->mxtips))
+ {
+ addTraverseBIG(tr, pr, p, p2->next->back,
+ mintrav, maxtrav);
+ addTraverseBIG(tr, pr, p, p2->next->next->back,
+ mintrav, maxtrav);
+ }
+
+ hookup(p->next, p1, p1z, numBranches);
+ hookup(p->next->next, p2, p2z, numBranches);
+ pllUpdatePartials(tr, pr,p, PLL_FALSE);
+ }
+ }
+
+ if (!isTip(q->number, tr->mxtips) && maxtrav > 0 && doQ)
+ {
+ q1 = q->next->back;
+ q2 = q->next->next->back;
+
+ /*if (((!q1->tip) && (!q1->next->back->tip || !q1->next->next->back->tip)) ||
+ ((!q2->tip) && (!q2->next->back->tip || !q2->next->next->back->tip))) */
+ if (
+ (
+ ! isTip(q1->number, tr->mxtips) &&
+ (! isTip(q1->next->back->number, tr->mxtips) || ! isTip(q1->next->next->back->number, tr->mxtips))
+ )
+ ||
+ (
+ ! isTip(q2->number, tr->mxtips) &&
+ (! isTip(q2->next->back->number, tr->mxtips) || ! isTip(q2->next->next->back->number, tr->mxtips))
+ )
+ )
+ {
+
+ for(i = 0; i < numBranches; i++)
+ {
+ q1z[i] = q1->z[i];
+ q2z[i] = q2->z[i];
+ }
+
+ if (! removeNodeBIG(tr, pr, q, numBranches)) return PLL_BADREAR;
+
+ mintrav2 = mintrav > 2 ? mintrav : 2;
+
+ if (/*! q1->tip*/ !isTip(q1->number, tr->mxtips))
+ {
+ addTraverseBIG(tr, pr, q, q1->next->back,
+ mintrav2 , maxtrav);
+ addTraverseBIG(tr, pr, q, q1->next->next->back,
+ mintrav2 , maxtrav);
+ }
+
+ if (/*! q2->tip*/ ! isTip(q2->number, tr->mxtips))
+ {
+ addTraverseBIG(tr, pr, q, q2->next->back,
+ mintrav2 , maxtrav);
+ addTraverseBIG(tr, pr, q, q2->next->next->back,
+ mintrav2 , maxtrav);
+ }
+
+ hookup(q->next, q1, q1z, numBranches);
+ hookup(q->next->next, q2, q2z, numBranches);
+
+ pllUpdatePartials(tr, pr,q, PLL_FALSE);
+ }
+ }
+
+ return 1;
+}
+
+
+
+
+/** @brief Perform an SPR move?
+
+ @param tr
+ PLL instance
+
+ @param pr
+ List of partitions
+
+ @param mintrav
+
+ @param maxtrav
+
+ @param adef
+
+ @param bt
+
+ @param iList
+
+*/
+double treeOptimizeRapid(pllInstance *tr, partitionList *pr, int mintrav, int maxtrav, bestlist *bt, infoList *iList)
+{
+ int i, index,
+ *perm = (int*)NULL;
+
+ nodeRectifier(tr);
+
+
+
+ if (maxtrav > tr->mxtips - 3)
+ maxtrav = tr->mxtips - 3;
+
+
+
+ resetInfoList(iList);
+
+ resetBestTree(bt);
+
+ tr->startLH = tr->endLH = tr->likelihood;
+
+ if(tr->doCutoff)
+ {
+ if(tr->bigCutoff)
+ {
+ if(tr->itCount == 0)
+ tr->lhCutoff = 0.5 * (tr->likelihood / -1000.0);
+ else
+ tr->lhCutoff = 0.5 * ((tr->lhAVG) / ((double)(tr->lhDEC)));
+ }
+ else
+ {
+ if(tr->itCount == 0)
+ tr->lhCutoff = tr->likelihood / -1000.0;
+ else
+ tr->lhCutoff = (tr->lhAVG) / ((double)(tr->lhDEC));
+ }
+
+ tr->itCount = tr->itCount + 1;
+ tr->lhAVG = 0;
+ tr->lhDEC = 0;
+ }
+
+ /*
+ printf("DoCutoff: %d\n", tr->doCutoff);
+ printf("%d %f %f %f\n", tr->itCount, tr->lhAVG, tr->lhDEC, tr->lhCutoff);
+
+ printf("%d %d\n", mintrav, maxtrav);
+ */
+
+ for(i = 1; i <= tr->mxtips + tr->mxtips - 2; i++)
+ {
+ tr->bestOfNode = PLL_UNLIKELY;
+
+ if(tr->permuteTreeoptimize)
+ index = perm[i];
+ else
+ index = i;
+
+ if(rearrangeBIG(tr, pr, tr->nodep[index], mintrav, maxtrav))
+ {
+ if(tr->thoroughInsertion)
+ {
+ if(tr->endLH > tr->startLH)
+ {
+ /* commit the best SPR found by rearrangeBIG */
+ restoreTreeFast(tr, pr);
+ tr->startLH = tr->endLH = tr->likelihood;
+ saveBestTree(bt, tr, pr->perGeneBranchLengths?pr->numberOfPartitions:1);
+ }
+ else
+ {
+ if(tr->bestOfNode != PLL_UNLIKELY)
+ restoreTopologyOnly(tr, bt, pr->perGeneBranchLengths?pr->numberOfPartitions:1);
+ }
+ }
+ else
+ {
+ insertInfoList(tr->nodep[index], tr->bestOfNode, iList);
+ if(tr->endLH > tr->startLH)
+ {
+ restoreTreeFast(tr, pr);
+ tr->startLH = tr->endLH = tr->likelihood;
+ }
+ }
+ }
+ }
+
+ if(!tr->thoroughInsertion)
+ {
+ tr->thoroughInsertion = PLL_TRUE;
+
+ for(i = 0; i < iList->valid; i++)
+ {
+ tr->bestOfNode = PLL_UNLIKELY;
+
+ if(rearrangeBIG(tr, pr, iList->list[i].node, mintrav, maxtrav))
+ {
+ if(tr->endLH > tr->startLH)
+ {
+ restoreTreeFast(tr, pr);
+ tr->startLH = tr->endLH = tr->likelihood;
+ saveBestTree(bt, tr, pr->perGeneBranchLengths?pr->numberOfPartitions:1);
+ }
+ else
+ {
+
+ if(tr->bestOfNode != PLL_UNLIKELY)
+ {
+ restoreTopologyOnly(tr, bt, pr->perGeneBranchLengths?pr->numberOfPartitions:1);
+ }
+ }
+ }
+ }
+
+ tr->thoroughInsertion = PLL_FALSE;
+ }
+
+ if(tr->permuteTreeoptimize)
+ rax_free(perm);
+
+ return tr->startLH;
+}
+
+
+
+
+boolean testInsertRestoreBIG (pllInstance *tr, partitionList *pr, nodeptr p, nodeptr q)
+{
+ if(tr->thoroughInsertion)
+ {
+ if (! insertBIG(tr, pr, p, q)) return PLL_FALSE;
+
+ pllEvaluateLikelihood (tr, pr, p->next->next, PLL_FALSE, PLL_FALSE);
+ }
+ else
+ {
+ if (! insertRestoreBIG(tr, pr, p, q)) return PLL_FALSE;
+
+ {
+ nodeptr x, y;
+ x = p->next->next;
+ y = p->back;
+
+ if(! isTip(x->number, tr->mxtips) && isTip(y->number, tr->mxtips))
+ {
+ while ((! x->x))
+ {
+ if (! (x->x))
+ pllUpdatePartials(tr, pr,x, PLL_FALSE);
+ }
+ }
+
+ if(isTip(x->number, tr->mxtips) && !isTip(y->number, tr->mxtips))
+ {
+ while ((! y->x))
+ {
+ if (! (y->x))
+ pllUpdatePartials(tr, pr,y, PLL_FALSE);
+ }
+ }
+
+ if(!isTip(x->number, tr->mxtips) && !isTip(y->number, tr->mxtips))
+ {
+ while ((! x->x) || (! y->x))
+ {
+ if (! (x->x))
+ pllUpdatePartials(tr, pr,x, PLL_FALSE);
+ if (! (y->x))
+ pllUpdatePartials(tr, pr,y, PLL_FALSE);
+ }
+ }
+
+ }
+
+ tr->likelihood = tr->endLH;
+ }
+
+ return PLL_TRUE;
+}
+
+void restoreTreeFast(pllInstance *tr, partitionList *pr)
+{
+ removeNodeRestoreBIG(tr, pr, tr->removeNode);
+ testInsertRestoreBIG(tr, pr, tr->removeNode, tr->insertNode);
+}
+
+/*
+static void myfwrite(const void *ptr, size_t size, size_t nmemb, FILE *stream)
+{
+ size_t
+ bytes_written = fwrite(ptr, size, nmemb, stream);
+
+ assert(bytes_written == nmemb);
+}
+
+static void myfread(void *ptr, size_t size, size_t nmemb, FILE *stream)
+{
+ size_t
+ bytes_read;
+
+ bytes_read = fread(ptr, size, nmemb, stream);
+
+ assert(bytes_read == nmemb);
+}
+
+static void readTree(pllInstance *tr, partitionList *pr, FILE *f)
+{
+ int
+ nodeNumber,
+ x = tr->mxtips + 3 * (tr->mxtips - 1);
+
+ nodeptr
+ startAddress;
+
+ myfread(&nodeNumber, sizeof(int), 1, f);
+
+ tr->start = tr->nodep[nodeNumber];
+
+
+ myfread(&startAddress, sizeof(nodeptr), 1, f);
+
+ myfread(tr->nodeBaseAddress, sizeof(node), x, f);
+
+ {
+ int i;
+
+ size_t
+ offset;
+
+ boolean
+ addIt;
+
+ if(startAddress > tr->nodeBaseAddress)
+ {
+ addIt = PLL_FALSE;
+ offset = (size_t)startAddress - (size_t)tr->nodeBaseAddress;
+ }
+ else
+ {
+ addIt = PLL_TRUE;
+ offset = (size_t)tr->nodeBaseAddress - (size_t)startAddress;
+ }
+
+ for(i = 0; i < x; i++)
+ {
+ if(addIt)
+ {
+ tr->nodeBaseAddress[i].next = (nodeptr)((size_t)tr->nodeBaseAddress[i].next + offset);
+ tr->nodeBaseAddress[i].back = (nodeptr)((size_t)tr->nodeBaseAddress[i].back + offset);
+ }
+ else
+ {
+
+ tr->nodeBaseAddress[i].next = (nodeptr)((size_t)tr->nodeBaseAddress[i].next - offset);
+ tr->nodeBaseAddress[i].back = (nodeptr)((size_t)tr->nodeBaseAddress[i].back - offset);
+ }
+ }
+
+ }
+
+ pllEvaluateLikelihood (tr, pr, tr->start, PLL_TRUE, PLL_FALSE);
+
+ printBothOpen("RAxML Restart with likelihood: %1.50f\n", tr->likelihood);
+}
+
+static void readCheckpoint(pllInstance *tr, partitionList *pr)
+{
+ int
+ restartErrors = 0,
+ model;
+
+ FILE
+ *f = myfopen(binaryCheckpointInputName, "r");
+*/
+ /* cdta */
+/*
+ myfread(&(tr->ckp), sizeof(checkPointState), 1, f);
+
+
+
+ if(tr->ckp.searchConvergenceCriterion != tr->searchConvergenceCriterion)
+ {
+ printf("restart error, you are trying to re-start a run where the ML search criterion was turned %s\n", (tr->ckp.searchConvergenceCriterion)?"ON":"OFF");
+ restartErrors++;
+ }
+
+ if(tr->ckp.rateHetModel != tr->rateHetModel)
+ {
+ printf("restart error, you are trying to re-start a run with a different model of rate heterogeneity, the checkpoint was obtained under: %s\n", (tr->ckp.rateHetModel == PLL_GAMMA)?"GAMMA":"PSR");
+ restartErrors++;
+ }
+
+ if(tr->ckp.maxCategories != tr->maxCategories)
+ {
+ printf("restart error, you are trying to re-start a run with %d per-site rate categories, the checkpoint was obtained with: %d\n", tr->maxCategories, tr->ckp.maxCategories);
+ restartErrors++;
+ }
+
+ if(tr->ckp.NumberOfModels != pr->numberOfPartitions)
+ {
+ printf("restart error, you are trying to re-start a run with %d partitions, the checkpoint was obtained with: %d partitions\n", (int)pr->numberOfPartitions, tr->ckp.NumberOfModels);
+ restartErrors++;
+ }
+
+ if(tr->ckp.numBranches != pr->perGeneBranchLengths?pr->numberOfPartitions:1)
+ {
+ printf("restart error, you are trying to re-start a run where independent per-site branch length estimates were turned %s\n", (tr->ckp.numBranches > 1)?"ON":"OFF");
+ restartErrors++;
+ }
+
+ if(tr->ckp.originalCrunchedLength != tr->originalCrunchedLength)
+ {
+ printf("restart error, you are trying to re-start a run with %d site patterns, the checkpoint was obtained with: %d site patterns\n", tr->ckp.originalCrunchedLength, tr->originalCrunchedLength);
+ restartErrors++;
+ }
+
+ if(tr->ckp.mxtips != tr->mxtips)
+ {
+ printf("restart error, you are trying to re-start a run with %d taxa, the checkpoint was obtained with: %d taxa\n", tr->mxtips, tr->ckp.mxtips);
+ restartErrors++;
+ }
+
+ if(strcmp(tr->ckp.seq_file, seq_file) != 0)
+ {
+ printf("restart error, you are trying to re-start from alignemnt file %s, the checkpoint was obtained with file: %s\n", tr->ckp.seq_file, seq_file);
+ restartErrors++;
+ }
+
+ printf("REstart errors: %d\n", restartErrors);
+
+ if(restartErrors > 0)
+ {
+ printf("User induced errors with the restart from checkpoint, exiting ...\n");
+
+ if(restartErrors > 4)
+ printf(" ... maybe you should do field work instead of trying to use a computer ...\n");
+ if(restartErrors > 6)
+ printf(" ... kala eisai telios ilithios;\n");
+
+ exit(-1);
+ }
+
+ tr->ntips = tr->mxtips;
+
+ tr->startLH = tr->ckp.tr_startLH;
+ tr->endLH = tr->ckp.tr_endLH;
+ tr->likelihood = tr->ckp.tr_likelihood;
+ tr->bestOfNode = tr->ckp.tr_bestOfNode;
+
+ tr->lhCutoff = tr->ckp.tr_lhCutoff;
+ tr->lhAVG = tr->ckp.tr_lhAVG;
+ tr->lhDEC = tr->ckp.tr_lhDEC;
+ tr->itCount = tr->ckp.tr_itCount;
+ tr->thoroughInsertion = tr->ckp.tr_thoroughInsertion;
+
+
+
+ accumulatedTime = tr->ckp.accumulatedTime;
+*/
+ /* printf("Accumulated time so far: %f\n", accumulatedTime); */
+/*
+ tr->optimizeRateCategoryInvocations = tr->ckp.tr_optimizeRateCategoryInvocations;
+
+
+ myfread(tr->tree0, sizeof(char), tr->treeStringLength, f);
+ myfread(tr->tree1, sizeof(char), tr->treeStringLength, f);
+
+ if(tr->searchConvergenceCriterion)
+ {
+ int bCounter = 0;
+
+ if((tr->ckp.state == PLL_FAST_SPRS && tr->ckp.fastIterations > 0) ||
+ (tr->ckp.state == PLL_SLOW_SPRS && tr->ckp.thoroughIterations > 0))
+ {
+
+#ifdef _DEBUG_CHECKPOINTING
+ printf("parsing Tree 0\n");
+#endif
+
+ treeReadTopologyString(tr->tree0, tr);
+
+ bitVectorInitravSpecial(tr->bitVectors, tr->nodep[1]->back, tr->mxtips, tr->vLength, tr->h, 0, PLL_BIPARTITIONS_RF, (branchInfo *)NULL,
+ &bCounter, 1, PLL_FALSE, PLL_FALSE, tr->threadID);
+
+ assert(bCounter == tr->mxtips - 3);
+ }
+
+ bCounter = 0;
+
+ if((tr->ckp.state == PLL_FAST_SPRS && tr->ckp.fastIterations > 1) ||
+ (tr->ckp.state == PLL_SLOW_SPRS && tr->ckp.thoroughIterations > 1))
+ {
+
+#ifdef _DEBUG_CHECKPOINTING
+ printf("parsing Tree 1\n");
+#endif
+
+ treeReadTopologyString(tr->tree1, tr);
+
+ bitVectorInitravSpecial(tr->bitVectors, tr->nodep[1]->back, tr->mxtips, tr->vLength, tr->h, 1, PLL_BIPARTITIONS_RF, (branchInfo *)NULL,
+ &bCounter, 1, PLL_FALSE, PLL_FALSE, tr->threadID);
+
+ assert(bCounter == tr->mxtips - 3);
+ }
+ }
+
+ myfread(tr->rateCategory, sizeof(int), tr->originalCrunchedLength, f);
+ myfread(tr->patrat, sizeof(double), tr->originalCrunchedLength, f);
+ myfread(tr->patratStored, sizeof(double), tr->originalCrunchedLength, f);
+
+*/
+ /* pInfo */
+/*
+ for(model = 0; model < pr->numberOfPartitions; model++)
+ {
+ int
+ dataType = pr->partitionData[model]->dataType;
+
+ myfread(&(pr->partitionData[model]->numberOfCategories), sizeof(int), 1, f);
+ myfread(pr->partitionData[model]->perSiteRates, sizeof(double), tr->maxCategories, f);
+ myfread(pr->partitionData[model]->EIGN, sizeof(double), pLengths[dataType].eignLength, f);
+ myfread(pr->partitionData[model]->EV, sizeof(double), pLengths[dataType].evLength, f);
+ myfread(pr->partitionData[model]->EI, sizeof(double), pLengths[dataType].eiLength, f);
+
+ myfread(pr->partitionData[model]->frequencies, sizeof(double), pLengths[dataType].frequenciesLength, f);
+ myfread(pr->partitionData[model]->tipVector, sizeof(double), pLengths[dataType].tipVectorLength, f);
+ myfread(pr->partitionData[model]->substRates, sizeof(double), pLengths[dataType].substRatesLength, f);
+ myfread(&(pr->partitionData[model]->alpha), sizeof(double), 1, f);
+
+ if(pr->partitionData[model]->protModels == PLL_LG4M || pr->partitionData[model]->protModels == PLL_LG4X)
+ {
+ int
+ k;
+
+ for(k = 0; k < 4; k++)
+ {
+ myfread(pr->partitionData[model]->EIGN_LG4[k], sizeof(double), pLengths[dataType].eignLength, f);
+ myfread(pr->partitionData[model]->EV_LG4[k], sizeof(double), pLengths[dataType].evLength, f);
+ myfread(pr->partitionData[model]->EI_LG4[k], sizeof(double), pLengths[dataType].eiLength, f);
+ myfread(pr->partitionData[model]->frequencies_LG4[k], sizeof(double), pLengths[dataType].frequenciesLength, f);
+ myfread(pr->partitionData[model]->tipVector_LG4[k], sizeof(double), pLengths[dataType].tipVectorLength, f);
+ myfread(pr->partitionData[model]->substRates_LG4[k], sizeof(double), pLengths[dataType].substRatesLength, f);
+ }
+ }
+
+ pllMakeGammaCats(pr->partitionData[model]->alpha, pr->partitionData[model]->gammaRates, 4, tr->useMedian);
+ }
+
+#if (defined(_FINE_GRAIN_MPI) || defined(_USE_PTHREADS))
+ pllMasterBarrier (tr, pr, PLL_THREAD_COPY_INIT_MODEL);
+#endif
+
+ updatePerSiteRates(tr, pr, PLL_FALSE);
+
+ readTree(tr, pr, f);
+
+ fclose(f);
+
+}
+
+void restart(pllInstance *tr, partitionList *pr)
+{
+ readCheckpoint(tr, pr);
+
+ switch(tr->ckp.state)
+ {
+ case PLL_REARR_SETTING:
+ break;
+ case PLL_FAST_SPRS:
+ break;
+ case PLL_SLOW_SPRS:
+ break;
+ default:
+ assert(0);
+ }
+}
+*/
+
+/* The number of maximum smoothing iterations is given explicitely */
+/** @brief Optimize branch lenghts and evaluate likelihood of topology
+
+ Optimize the branch lengths \a maxSmoothIterations times and evaluate
+ the likelihood of tree. The resulting likelihood is placed in
+ \a tr->likelihood
+
+ @param tr
+ The PLL instance
+
+ @param pr
+ List of partitions
+
+ @param maxSmoothIterations
+ Number of times to optimize branch lengths
+*/
+void
+pllOptimizeBranchLengths (pllInstance *tr, partitionList *pr, int maxSmoothIterations) /* Evaluate a user tree */
+{
+ smoothTree(tr, pr, maxSmoothIterations); /* former (32 * smoothFactor) */
+
+ pllEvaluateLikelihood (tr, pr, tr->start, PLL_FALSE, PLL_FALSE);
+}
+
+/** @brief Perform an NNI move
+
+ Modify the tree topology of instance \a tr by performing an NNI (Neighbour Neighbor
+ Interchange) move at node \a p. Let \a q be \a p->back. If \a swap is set to \b PLL_NNI_P_NEXT
+ then the subtrees rooted at \a p->next->back and \a q->next->back will be swapped. Otherwise,
+ if \a swap is set to \b PLL_NNI_P_NEXTNEXT then the subtrees rooted at \a p->next->next->back and
+ \a q->next->back are swapped. For clarity, see the illustration.
+
+ @param tr
+ PLL instance
+
+ @param p
+ Node to use as origin for performing NNI
+
+ @param swap
+ Which node to use for the NNI move. \b PLL_NNI_P_NEXT uses node p->next while \b PLL_NNI_P_NEXTNEXT uses p->next->next
+
+ @return
+ In case of success \b PLL_TRUE, otherwise \b PLL_FALSE
+
+ @todo
+ Started error checking here. Instead of checking the errors in the specified way, implement a variadic
+ function where we pass the results of each check and the error code we want to assign if there is at
+ least one negative result
+
+ @image html nni.png "In case \a swap is set to \b PLL_NNI_P_NEXT then the dashed red edge between \a p and \a r is removed and the blue edges are created. If \a swap is set to \b PLL_INIT_P_NEXTNEXT then the dashed red edge between \a p and \a s is removed and the green edges are created. In both cases the black dashed edge is removed"
+*/
+int pllTopologyPerformNNI(pllInstance * tr, nodeptr p, int swap)
+{
+ nodeptr q, r;
+
+ q = p->back;
+ if (isTip(q->number, tr->mxtips))
+ {
+ errno = PLL_NNI_Q_TIP;
+ return (PLL_FALSE);
+ }
+ if (isTip(p->number, tr->mxtips))
+ {
+ errno = PLL_NNI_P_TIP;
+ return (PLL_FALSE);
+ }
+ assert(!isTip(q->number, tr->mxtips));
+ assert(!isTip(p->number, tr->mxtips));
+
+
+ if(swap == PLL_NNI_P_NEXT)
+ {
+ r = p->next->back;
+ hookupFull(p->next, q->next->back, q->next->z);
+ hookupFull(q->next, r, p->next->z);
+ }
+ else
+ {
+ r = p->next->next->back;
+ hookupFull(p->next->next, q->next->back, q->next->z);
+ hookupFull(q->next, r, p->next->next->z);
+ }
+
+ return PLL_TRUE;
+}
+
+/** @brief Compares 2 NNI moves */
+static int cmp_nni(const void* nni1, const void* nni2) {
+ nniMove* myNNI1 = (nniMove*) nni1;
+ nniMove* myNNI2 = (nniMove*) nni2;
+ return (int) (1000000.f * myNNI1->deltaLH - 1000000.f * myNNI2->deltaLH);
+}
+
+/** @brief Gets the best NNI move for a branch
+
+ @param tr
+ PLL instance
+
+ @param pr
+ List of partitions
+
+ @param p
+ Node to use as origin for performing NNI
+
+ @param curLH
+ The current likelihood
+
+ @return
+ The best NNI move
+
+*/
+nniMove getBestNNIForBran(pllInstance* tr, partitionList *pr, nodeptr p,
+ double curLH) {
+ nodeptr q = p->back;
+ assert( ! isTip(p->number, tr->mxtips));
+ assert( ! isTip(q->number, tr->mxtips));
+#ifdef _DEBUG_NNI
+ pllTreeToNewick(tr->tree_string, tr, tr->start->back, TRUE, FALSE, 0, 0, 0, SUMMARIZE_LH, 0,0);
+ fprintf(stderr, "%s\n", tr->tree_string);
+#endif
+
+ /* Backup the current branch length */
+ double z0[PLL_NUM_BRANCHES];
+ int i;
+ for (i = 0; i < pr->numberOfPartitions; i++) {
+ z0[i] = p->z[i];
+ }
+#ifdef _DEBUG_NNI
+ double lhOld = tr->likelihood;
+ printf("lhOld: %f \n", lhOld);
+#endif
+ double lh0 = curLH;
+
+
+#ifdef _DEBUG_NNI
+ printf("lh0: %f \n", lh0);
+#endif
+ nniMove nni0; // nni0 means no NNI move is done
+ nni0.p = p;
+ nni0.nniType = 0;
+ nni0.deltaLH = 0;
+ for (i = 0; i < pr->numberOfPartitions; i++) {
+ nni0.z[i] = p->z[i];
+ }
+
+ /* Save the scaling factor */
+ // Now try to do an NNI move of type 1
+ pllTopologyPerformNNI(tr, p, PLL_NNI_P_NEXT);
+ double lh1 = tr->likelihood;
+ /* Update branch lengths */
+ pllUpdatePartials(tr, pr, p, PLL_FALSE);
+ pllUpdatePartials(tr, pr, q, PLL_FALSE);
+ update(tr, pr, p);
+ pllEvaluateLikelihood (tr, pr, p, PLL_FALSE, PLL_FALSE);
+
+ nniMove nni1;
+ nni1.p = p;
+ nni1.nniType = 1;
+ // Store the optimized und unoptimized central branch length
+ for (i = 0; i < pr->numberOfPartitions; i++) {
+ nni1.z[i] = p->z[i];
+ nni1.z0[i] = z0[i];
+ }
+ nni1.likelihood = lh1;
+ nni1.deltaLH = lh1 - lh0;
+#ifdef _DEBUG_NNI
+ printf("Delta likelihood of the 1.NNI move: %f\n", nni1.deltaLH);
+#endif
+
+ /* Restore previous NNI move */
+ pllTopologyPerformNNI(tr, p, PLL_NNI_P_NEXT);
+ /* Restore the old branch length */
+ for (i = 0; i < pr->numberOfPartitions; i++) {
+ p->z[i] = z0[i];
+ p->back->z[i] = z0[i];
+ }
+
+#ifdef _DEBUG_NNI
+ printf("Restore topology\n");
+ pllTreeToNewick(tr->tree_string, tr, tr->start->back, TRUE, FALSE, 0, 0, 0, SUMMARIZE_LH, 0,0);
+ fprintf(stderr, "%s\n", tr->tree_string);
+ pllEvaluateLikelihood (tr, tr->start, TRUE);
+ printf("Likelihood after restoring from NNI 1: %f\n", tr->likelihood);
+#endif
+ /* Try to do an NNI move of type 2 */
+ pllTopologyPerformNNI(tr, p, 2);
+ double lh2 = tr->likelihood;
+ /* Update branch lengths */
+ pllUpdatePartials(tr, pr, p, PLL_FALSE);
+ pllUpdatePartials(tr, pr, q, PLL_FALSE);
+ update(tr, pr, p);
+ pllEvaluateLikelihood (tr, pr, p, PLL_FALSE, PLL_FALSE);
+
+ // Create the nniMove struct to store this move
+ nniMove nni2;
+ nni2.p = p;
+ nni2.nniType = 2;
+
+ // Store the optimized and unoptimized central branch length
+ for (i = 0; i < pr->numberOfPartitions; i++) {
+ nni2.z[i] = p->z[i];
+ nni2.z0[i] = z0[i];
+ }
+ nni2.likelihood = lh2;
+ nni2.deltaLH = lh2 - lh0;
+#ifdef _DEBUG_NNI
+ printf("Delta likelihood of the 2.NNI move: %f\n", nni2.deltaLH);
+#endif
+
+ /* Restore previous NNI move */
+ pllTopologyPerformNNI(tr, p, 2);
+ pllUpdatePartials(tr, pr, p, PLL_FALSE);
+ pllUpdatePartials(tr, pr, p->back, PLL_FALSE);
+ /* Restore the old branch length */
+ for (i = 0; i < pr->numberOfPartitions; i++) {
+ p->z[i] = z0[i];
+ p->back->z[i] = z0[i];
+ }
+ if (nni1.deltaLH > 0 && nni1.deltaLH >= nni2.deltaLH) {
+ return nni1;
+ } else if (nni1.deltaLH > 0 && nni1.deltaLH < nni2.deltaLH) {
+ return nni2;
+ } else if (nni1.deltaLH < 0 && nni2.deltaLH > 0) {
+ return nni2;
+ } else {
+ return nni0;
+ }
+}
+
+/** @brief ??? Not sure */
+void evalNNIForSubtree(pllInstance* tr, partitionList *pr, nodeptr p,
+ nniMove* nniList, int* cnt, int* cnt_nni, double curLH) {
+ if (!isTip(p->number, tr->mxtips)) {
+ nniList[*cnt] = getBestNNIForBran(tr, pr, p, curLH);
+ if (nniList[*cnt].deltaLH != 0.0) {
+ *cnt_nni = *cnt_nni + 1;
+ }
+ *cnt = *cnt + 1;
+ nodeptr q = p->next;
+ while (q != p) {
+ evalNNIForSubtree(tr, pr, q->back, nniList, cnt, cnt_nni, curLH);
+ q = q->next;
+ }
+ }
+}
+
+/** @brief Perform an NNI search
+
+ Modify the tree topology of instance and model parameters \a tr by performing a NNI (Neighbour Neighbor
+ Interchange) moves \a p.
+
+ @param tr
+ PLL instance
+
+ @param pr
+ List of partitions
+
+ @param estimateModel
+ Determine wheter the model parameters should be optimized
+
+ @return
+ In case of success \b PLL_TRUE, otherwise \b PLL_FALSE
+
+*/
+int pllNniSearch(pllInstance * tr, partitionList *pr, int estimateModel) {
+
+ double curScore = tr->likelihood;
+
+ /* Initialize the NNI list */
+ nniMove* nniList = (nniMove*) malloc((tr->mxtips - 3) * sizeof(nniMove));
+ int i;
+ /* fill up the NNI list */
+ nodeptr p = tr->start->back;
+ nodeptr q = p->next;
+ int cnt = 0; // number of visited internal branches during NNI evaluation
+ int cnt_nni = 0; // number of positive NNI found
+ while (q != p) {
+ evalNNIForSubtree(tr, pr, q->back, nniList, &cnt, &cnt_nni, curScore);
+ q = q->next;
+ }
+ if (cnt_nni == 0)
+ return 0.0;
+
+ nniMove* impNNIList = (nniMove*) malloc(cnt_nni * sizeof(nniMove));
+ int j = 0;
+ for (i = 0; i < tr->mxtips - 3; i++) {
+ if (nniList[i].deltaLH > 0.0) {
+ impNNIList[j] = nniList[i];
+ j++;
+ }
+ }
+ // sort impNNIList
+ qsort(impNNIList, cnt_nni, sizeof(nniMove), cmp_nni);
+
+ // creating a list of non-conflicting positive NNI
+ nniMove* nonConfNNIList = (nniMove*) calloc(cnt_nni, sizeof(nniMove));
+
+ // the best NNI will always be taken
+ nonConfNNIList[0] = impNNIList[cnt_nni - 1];
+
+ // Filter out conflicting NNI
+ int numNonConflictNNI = 1; // size of the non-conflicting NNI list;
+ int k;
+ for (k = cnt_nni - 2; k >= 0; k--) {
+ int conflict = PLL_FALSE;
+ int j;
+ for (j = 0; j < numNonConflictNNI; j++) {
+ if (impNNIList[k].p->number == nonConfNNIList[j].p->number
+ || impNNIList[k].p->number
+ == nonConfNNIList[j].p->back->number) {
+ conflict = PLL_TRUE;
+ break;
+ }
+ }
+ if (conflict) {
+ continue;
+ } else {
+ nonConfNNIList[numNonConflictNNI] = impNNIList[k];
+ numNonConflictNNI++;
+ }
+ }
+
+ if (tr->rateHetModel == PLL_CAT)
+ {
+ // assign the maximum number of categories
+ for (i = 0; i < pr->numberOfPartitions; i++)
+ {
+ if (pr->partitionData[i]->numberOfCategories > tr->categories)
+ {
+ tr->categories = pr->partitionData[i]->numberOfCategories;
+ }
+ }
+ }
+
+ // Applying non-conflicting NNI moves
+ double delta = 1.0; // portion of NNI moves to apply
+ int notImproved;
+ do {
+ notImproved = PLL_FALSE;
+ int numNNI2Apply = ceil(numNonConflictNNI * delta);
+ for (i = 0; i < numNNI2Apply; i++) {
+ // Just do the topological change
+ pllTopologyPerformNNI(tr, nonConfNNIList[i].p, nonConfNNIList[i].nniType);
+ pllUpdatePartials(tr, pr, nonConfNNIList[i].p, PLL_FALSE);
+ pllUpdatePartials(tr, pr, nonConfNNIList[i].p->back, PLL_FALSE);
+ // Apply the store branch length
+ int j;
+ for (j = 0; j < pr->numberOfPartitions; j++) {
+ nonConfNNIList[i].p->z[j] = nonConfNNIList[i].z[j];
+ nonConfNNIList[i].p->back->z[j] = nonConfNNIList[i].z[j];
+ }
+ }
+ // Re-optimize all branches
+ smoothTree(tr, pr, 2);
+ pllEvaluateLikelihood (tr, pr, tr->start, PLL_FALSE, PLL_FALSE);
+ if (estimateModel) {
+ modOpt(tr, pr, 0.1);
+ }
+ pllEvaluateLikelihood (tr, pr, tr->start, PLL_FALSE, PLL_FALSE);
+ if (tr->likelihood < curScore) {
+#ifdef _DEBUG_NNI
+ printf("Tree likelihood gets worse after applying NNI\n");
+ printf("curScore = %30.20f\n", curScore);
+ printf("newScore = %30.20f\n", tr->likelihood);
+ printf("Rolling back the tree\n");
+#endif
+ for (i = 0; i < numNNI2Apply; i++) {
+ pllTopologyPerformNNI(tr, nonConfNNIList[i].p, nonConfNNIList[i].nniType);
+ // Restore the branch length
+ int j;
+ for (j = 0; j < pr->numberOfPartitions; j++) {
+ nonConfNNIList[i].p->z[j] = nonConfNNIList[i].z0[j];
+ nonConfNNIList[i].p->back->z[j] = nonConfNNIList[i].z0[j];
+ }
+ }
+ pllEvaluateLikelihood (tr, pr, tr->start, PLL_FALSE, PLL_FALSE);
+#ifdef _DEBUG_NNI
+ printf("Tree likelihood after rolling back = %f \n",
+ tr->likelihood);
+#endif
+ notImproved = PLL_TRUE & (numNNI2Apply > 1);
+ delta = delta * 0.5;
+ }
+ } while (notImproved);
+ free(nniList);
+ free(impNNIList);
+ free(nonConfNNIList);
+
+ return PLL_TRUE;
+}
+
+
+/** @defgroup rearrangementGroup Topological rearrangements
+
+ This set of functions handles the rearrangement of the tree topology
+*/
+
+
+/** @ingroup rearrangementGroup
+ @brief Create a list for storing topology rearrangements
+
+ Allocates space and initializes a structure that will hold information
+ of \a max topological rearrangements
+
+ @param max
+ Maximum number of elements that the structure should hold
+
+ @note This should be called for creating a storage space (list) for
+ routines such as ::pllRearrangeSearch which compute the best NNI/PR/TBR rearrangements.
+*/
+pllRearrangeList * pllCreateRearrangeList (int max)
+{
+ pllRearrangeList * bl;
+
+ bl = (pllRearrangeList *) malloc (sizeof (pllRearrangeList));
+
+ bl->max_entries = max;
+ bl->entries = 0;
+ bl->rearr = (pllRearrangeInfo *) malloc (max * sizeof (pllRearrangeInfo));
+
+ return bl;
+}
+
+/** @ingroup rearrangementGroup
+ @brief Deallocator for topology rearrangements list
+
+ Call this to destroy (deallocate) the memory taken by the \a bestList which holds
+ topological rearrangements
+
+ @param bestList
+ Pointer to the list to be deallocated
+*/
+void pllDestroyRearrangeList (pllRearrangeList ** bestList)
+{
+ pllRearrangeList * bl;
+
+ bl = *bestList;
+
+ rax_free (bl->rearr);
+ rax_free (bl);
+
+ *bestList = NULL;
+}
+
+
+/** @ingroup rearrangementGroup
+ @brief Store a rearrangement move to the list of best rearrangement moves
+
+ Checks if the likelihood yielded by the rearrangement move described in \a rearr
+ is better than any in the sorted list \a bestList. If it is, or
+ if there is still space in \a bestList, the info about the
+ move is inserted in the list.
+
+ @param bestList
+ The list of information about the best rearrangement moves
+
+ @param rearr
+ Info about the current rearrangement move
+
+ @return
+ Returns \b PLL_FALSE if the rearrangement move doesn't make it in the list, otherwise \b PLL_TRUE
+*/
+static int pllStoreRearrangement (pllRearrangeList * bestList, pllRearrangeInfo * rearr)
+ {
+ /* naive implementation of saving rearrangement moves */
+ int i;
+
+ for (i = 0; i < bestList->entries; ++ i)
+ {
+ /* Does the new rearrangement yield a better likelihood that the current in the list */
+ if (rearr->likelihood > bestList->rearr[i].likelihood)
+ {
+ /* is there enough space in the array ? */
+ if (bestList->entries < bestList->max_entries)
+ {
+ /* slide the entries to the right and overwrite the i-th element with the new item */
+ memmove (&(bestList->rearr[i + 1]), &(bestList->rearr[i]), (bestList->entries - i ) * sizeof (pllRearrangeInfo));
+ ++ bestList->entries;
+ }
+ else
+ {
+ memmove (&(bestList->rearr[i + 1]), &(bestList->rearr[i]), (bestList->entries - i - 1 ) * sizeof (pllRearrangeInfo));
+ }
+ memcpy (&(bestList->rearr[i]), rearr, sizeof (pllRearrangeInfo));
+ return (PLL_TRUE);
+ }
+ }
+ if (bestList->entries < bestList->max_entries)
+ {
+ memcpy (&(bestList->rearr[bestList->entries]), rearr, sizeof (pllRearrangeInfo));
+ ++ bestList->entries;
+ return (PLL_TRUE);
+ }
+
+ return (PLL_FALSE);
+ }
+
+/** @ingroup rearrangementGroup
+ @brief Internal function for testing and saving an SPR move
+
+ Checks the likelihood of the placement of the pruned subtree specified by \a p
+ to node \a q. If the likelihood is better than some in the sorted list
+ \a bestList, or if there is still free space in \a bestList, then the SPR
+ move is recorded (in \a bestList)
+
+ @param tr
+ PLL instance
+
+ @param pr
+ List of partitions
+
+ @param p
+ Root of the subtree that is to be pruned
+
+ @param q
+ Where to place the pruned subtree (between \a q and \a q->back
+
+ @param bestList
+ Where to store the SPR move
+
+ @note Internal function which is not part of the PLL API and therefore should not be
+ called by the user
+
+ @return
+*/
+static int
+pllTestInsertBIG (pllInstance * tr, partitionList * pr, nodeptr p, nodeptr q, pllRearrangeList * bestList)
+{
+ int numBranches = pr->perGeneBranchLengths?pr->numberOfPartitions:1;
+ pllRearrangeInfo rearr;
+
+ double qz[PLL_NUM_BRANCHES], pz[PLL_NUM_BRANCHES];
+ nodeptr r;
+ //double startLH = tr->endLH;
+ int i;
+
+ r = q->back;
+ for(i = 0; i < numBranches; i++)
+ {
+ qz[i] = q->z[i];
+ pz[i] = p->z[i];
+ }
+
+ if (! insertBIG(tr, pr, p, q)) return PLL_FALSE;
+
+ pllEvaluateLikelihood (tr, pr, p->next->next, PLL_FALSE, PLL_FALSE);
+
+ rearr.rearrangeType = PLL_REARRANGE_SPR;
+ rearr.likelihood = tr->likelihood;
+ rearr.SPR.removeNode = p;
+ rearr.SPR.insertNode = q;
+ for (i = 0; i < numBranches; ++ i)
+ {
+ rearr.SPR.zqr[i] = tr->zqr[i];
+ }
+
+ pllStoreRearrangement (bestList, &rearr);
+
+/*
+ if(tr->likelihood > tr->bestOfNode)
+ {
+ pllStoreRearrangement (bestList, rearr)
+ tr->bestOfNode = tr->likelihood;
+ tr->insertNode = q;
+ tr->removeNode = p;
+ for(i = 0; i < numBranches; i++)
+ {
+ tr->currentZQR[i] = tr->zqr[i];
+ tr->currentLZR[i] = tr->lzr[i];
+ tr->currentLZQ[i] = tr->lzq[i];
+ tr->currentLZS[i] = tr->lzs[i];
+ }
+ }
+
+ if(tr->likelihood > tr->endLH)
+ {
+
+ tr->insertNode = q;
+ tr->removeNode = p;
+ for(i = 0; i < numBranches; i++)
+ tr->currentZQR[i] = tr->zqr[i];
+ tr->endLH = tr->likelihood;
+ }
+*/
+ /* reset the topology so that it is the same as it was before calling insertBIG */
+ hookup(q, r, qz, numBranches);
+
+ p->next->next->back = p->next->back = (nodeptr) NULL;
+
+ if(tr->thoroughInsertion)
+ {
+ nodeptr s = p->back;
+ hookup(p, s, pz, numBranches);
+ }
+
+/*
+ if((tr->doCutoff) && (tr->likelihood < startLH))
+ {
+ tr->lhAVG += (startLH - tr->likelihood);
+ tr->lhDEC++;
+ if((startLH - tr->likelihood) >= tr->lhCutoff)
+ return PLL_FALSE;
+ else
+ return PLL_TRUE;
+ }
+ else
+ return PLL_TRUE;
+ */
+ return (PLL_TRUE);
+}
+
+/** @ingroup rearrangementGroup
+ @brief Internal function for recursively traversing a tree and testing a possible subtree insertion
+
+ Recursively traverses the tree rooted at \a q in the direction of \a q->next->back and \a q->next->next->back
+ and at each node tests the placement of the pruned subtree rooted at \a p by calling the function
+ \a pllTestInsertBIG, which in turn saves the computed SPR in \a bestList if a) there is still space in
+ the \a bestList or b) if the likelihood of the SPR is better than any of the ones in \a bestList.
+
+ @note This function is not part of the API and should not be called by the user.
+*/
+static void pllTraverseUpdate (pllInstance *tr, partitionList *pr, nodeptr p, nodeptr q, int mintrav, int maxtrav, pllRearrangeList * bestList)
+{
+ if (--mintrav <= 0)
+ {
+ if (! pllTestInsertBIG(tr, pr, p, q, bestList)) return;
+
+ }
+
+ if ((!isTip(q->number, tr->mxtips)) && (--maxtrav > 0))
+ {
+ pllTraverseUpdate(tr, pr, p, q->next->back, mintrav, maxtrav, bestList);
+ pllTraverseUpdate(tr, pr, p, q->next->next->back, mintrav, maxtrav, bestList);
+ }
+}
+
+/** @ingroup rearrangementGroup
+ @brief Internal function for recursively traversing a tree and testing a possible subtree insertion
+
+ Recursively traverses the tree rooted at \a q in the direction of \a q->next->back and \a q->next->next->back
+ and at each node tests the placement of the pruned subtree rooted at \a p by calling the function
+ \a pllTestInsertBIG, which in turn saves the computed SPR in \a bestList if a) there is still space in
+ the \a bestList or b) if the likelihood of the SPR is better than any of the ones in \a bestList.
+
+ Tests a TBR move between branches 'p' and 'q'.
+
+ @note This function is not part of the API and should not be called by the user.
+ */
+static void
+pllTraverseUpdateTBR (pllInstance *tr, partitionList *pr, nodeptr p, nodeptr q,
+ int mintravP, int maxtravP, int mintravQ, int maxtravQ,
+ pllRearrangeList * bestList)
+{
+
+ if (mintravP <= 1 && mintravQ <= 1)
+ {
+ assert(pllTestTBRMove (tr, pr, p, q, bestList));
+ }
+
+ /* traverse q subtree */
+ if ((!isTip (q->number, tr->mxtips)) && (--maxtravQ > 0))
+ {
+ pllTraverseUpdateTBR (tr, pr, p, q->next->back, mintravP, 0, mintravQ - 1,
+ maxtravQ, bestList);
+ pllTraverseUpdateTBR (tr, pr, p, q->next->next->back, mintravP, 0,
+ mintravQ - 1, maxtravQ, bestList);
+ }
+
+ /* last, we traverse the p subtree */
+ if ((!isTip (p->number, tr->mxtips)) && (--maxtravP > 0))
+ {
+ pllTraverseUpdateTBR (tr, pr, p->next->back, q, mintravP - 1, maxtravP,
+ mintravQ, maxtravQ, bestList);
+ pllTraverseUpdateTBR (tr, pr, p->next->next->back, q, mintravP - 1,
+ maxtravP, mintravQ, maxtravQ, bestList);
+ }
+}
+
+/** @ingroup rearrangementGroup
+ @brief Internal function for computing SPR moves
+
+ Compute a list of at most \a max SPR moves that can be performed by pruning
+ the subtree rooted at node \a p and testing all possible placements in a
+ radius of at least \a mintrav nodes and at most \a maxtrav nodes from \a p.
+ Note that \a tr->thoroughInsertion affects the behaviour of the function (see note).
+
+ @param tr
+ PLL instance
+
+ @param pr
+ List of partitions
+
+ @param p
+ Node specifying the root of the pruned subtree, i.e. where to prune.
+
+ @param mintrav
+ Minimum distance from \a p where to try inserting the pruned subtree
+
+ @param maxtrav
+ Maximum distance from \a p where to try inserting the pruned subtree
+
+ @param bestList
+ The list of best topological rearrangements
+
+ @note This function is not part of the API and should not be called by the user
+ as it is called internally by the API function \a pllComputeSPR.
+ Also, setting \a tr->thoroughInsertion affects this function. For each tested SPR
+ the new branch lengths will also be optimized. This computes better likelihoods
+ but also slows down the method considerably.
+*/
+static int pllTestSPR (pllInstance * tr, partitionList * pr, nodeptr p, int mintrav, int maxtrav, pllRearrangeList * bestList)
+{
+ nodeptr
+ p1, p2, q, q1, q2;
+ double
+ p1z[PLL_NUM_BRANCHES], p2z[PLL_NUM_BRANCHES], q1z[PLL_NUM_BRANCHES], q2z[PLL_NUM_BRANCHES];
+ int
+ mintrav2, i;
+ int numBranches = pr->perGeneBranchLengths ? pr->numberOfPartitions : 1;
+
+ if (maxtrav < 1 || mintrav > maxtrav) return (PLL_FALSE);
+ q = p->back;
+
+ if (!isTip (p->number, tr->mxtips))
+ {
+ p1 = p->next->back;
+ p2 = p->next->next->back;
+
+ if (!isTip (p1->number, tr->mxtips) || !isTip (p2->number, tr->mxtips))
+ {
+ /* save branch lengths before splitting the tree in two components */
+ for (i = 0; i < numBranches; ++ i)
+ {
+ p1z[i] = p1->z[i];
+ p2z[i] = p2->z[i];
+ }
+
+ /* split the tree in two components */
+ if (! removeNodeBIG (tr, pr, p, numBranches)) return PLL_BADREAR;
+
+ /* recursively traverse and perform SPR on the subtree rooted at p1 */
+ if (!isTip (p1->number, tr->mxtips))
+ {
+ pllTraverseUpdate (tr, pr, p, p1->next->back, mintrav, maxtrav, bestList);
+ pllTraverseUpdate (tr, pr, p, p1->next->next->back, mintrav, maxtrav, bestList);
+ }
+
+ /* recursively traverse and perform SPR on the subtree rooted at p2 */
+ if (!isTip (p2->number, tr->mxtips))
+ {
+ pllTraverseUpdate (tr, pr, p, p2->next->back, mintrav, maxtrav, bestList);
+ pllTraverseUpdate (tr, pr, p, p2->next->next->back, mintrav, maxtrav, bestList);
+ }
+
+ /* restore the topology as it was before the split */
+ hookup (p->next, p1, p1z, numBranches);
+ hookup (p->next->next, p2, p2z, numBranches);
+ pllUpdatePartials (tr, pr, p, PLL_FALSE);
+ }
+ }
+
+ if (!isTip (q->number, tr->mxtips) && maxtrav > 0)
+ {
+ q1 = q->next->back;
+ q2 = q->next->next->back;
+
+ /* why so many conditions? Why is it not analogous to the previous if for node p? */
+ if (
+ (
+ ! isTip(q1->number, tr->mxtips) &&
+ (! isTip(q1->next->back->number, tr->mxtips) || ! isTip(q1->next->next->back->number, tr->mxtips))
+ )
+ ||
+ (
+ ! isTip(q2->number, tr->mxtips) &&
+ (! isTip(q2->next->back->number, tr->mxtips) || ! isTip(q2->next->next->back->number, tr->mxtips))
+ )
+ )
+ {
+ for (i = 0; i < numBranches; ++ i)
+ {
+ q1z[i] = q1->z[i];
+ q2z[i] = q2->z[i];
+ }
+
+ if (! removeNodeBIG (tr, pr, q, numBranches)) return PLL_BADREAR;
+
+ mintrav2 = mintrav > 2 ? mintrav : 2;
+
+ if (!isTip (q1->number, tr->mxtips))
+ {
+ pllTraverseUpdate (tr, pr, q, q1->next->back, mintrav2, maxtrav, bestList);
+ pllTraverseUpdate (tr, pr, q, q1->next->next->back, mintrav2, maxtrav, bestList);
+ }
+
+ if (!isTip (q2->number, tr->mxtips))
+ {
+ pllTraverseUpdate (tr, pr, q, q2->next->back, mintrav2, maxtrav, bestList);
+ pllTraverseUpdate (tr, pr, q, q2->next->next->back, mintrav2, maxtrav, bestList);
+ }
+
+ hookup (q->next, q1, q1z, numBranches);
+ hookup (q->next->next, q2, q2z, numBranches);
+ pllUpdatePartials (tr, pr, q, PLL_FALSE);
+ }
+ }
+ return (PLL_TRUE);
+}
+
+/** @ingroup rearrangementGroup
+ @brief Internal function for testing and saving a TBR move
+
+ Checks the likelihood of the placement of the pruned subtree specified by \a p
+ to node \a q. If the likelihood is better than some in the sorted list
+ \a bestList, or if there is still free space in \a bestList, then the TBR
+ move is recorded (in \a bestList)
+
+ @param tr
+ PLL instance
+
+ @param pr
+ List of partitions
+
+ @param branch1
+ Branch on one detached subtree
+
+ @param branch2
+ Branch on the other detached subtree
+
+ @param bestList
+ Where to store the TBR move
+
+ @note Internal function which is not part of the PLL API and therefore should not be
+ called by the user
+
+ @return
+ */
+static int
+pllTestTBRMove (pllInstance * tr, partitionList * pr, nodeptr branch1,
+ nodeptr branch2, pllRearrangeList * bestList)
+{
+ int i;
+ double b1z[PLL_NUM_BRANCHES], b2z[PLL_NUM_BRANCHES];
+ int numPartitions = pr->perGeneBranchLengths ? pr->numberOfPartitions : 1;
+ pllRearrangeInfo rearr;
+
+ for (i = 0; i < numPartitions; i++)
+ {
+ b1z[i] = branch1->z[i];
+ b2z[i] = branch2->z[i];
+ }
+ nodeptr tmpNode = branch1->back;
+
+ // TODO: We can make here two types of insertions in function of tr->thoroughInsertion
+ if (!pllTbrConnectSubtreesML (tr, pr, branch1, branch2))
+ {
+ return PLL_FALSE;
+ }
+
+ //pllEvaluateLikelihood (tr, pr, tr->start, PLL_TRUE, PLL_FALSE);
+
+ rearr.rearrangeType = PLL_REARRANGE_TBR;
+ rearr.likelihood = tr->likelihood;
+ rearr.TBR.insertBranch1 = branch1;
+ rearr.TBR.insertBranch2 = branch2;
+ if (branch1->back->next->back == tmpNode)
+ {
+ rearr.TBR.removeBranch = branch1->back->next->next;
+ }
+ else
+ {
+ rearr.TBR.removeBranch = branch1->back->next;
+ }
+
+ memcpy (rearr.TBR.zp, rearr.TBR.insertBranch1->z, numPartitions * sizeof(double));
+ memcpy (rearr.TBR.zpb, rearr.TBR.insertBranch1->back->z, numPartitions * sizeof(double));
+ memcpy (rearr.TBR.zq, rearr.TBR.insertBranch2->z, numPartitions * sizeof(double));
+ memcpy (rearr.TBR.zqb, rearr.TBR.insertBranch2->back->z, numPartitions * sizeof(double));
+ memcpy (rearr.TBR.zr, rearr.TBR.removeBranch->z, numPartitions * sizeof(double));
+
+ pllStoreRearrangement (bestList, &rearr);
+
+ /* restore */
+ int restoreTopologyOK = pllTbrRemoveBranch (tr, pr, rearr.TBR.removeBranch);
+
+ assert(restoreTopologyOK);
+
+ for (i = 0; i < numPartitions; i++)
+ {
+ branch1->z[i] = branch1->back->z[i] = b1z[i];
+ branch2->z[i] = branch2->back->z[i] = b2z[i];
+ }
+
+ return PLL_TRUE;
+}
+
+/** @ingroup rearrangementGroup
+ @brief Compute a list of possible SPR moves
+
+ Iteratively tries all possible SPR moves that can be performed by
+ pruning the subtree rooted at \a p and testing all possible placements
+ in a radius of at least \a mintrav nodea and at most \a maxtrav nodes from
+ \a p. Note that \a tr->thoroughInsertion affects the behaviour of the function (see note).
+
+ @param tr
+ PLL instance
+
+ @param pr
+ List of partitions
+
+ @param p
+ Node specifying the root of the pruned subtree, i.e. where to prune.
+
+ @param mintrav
+ Minimum distance from \a p where to try inserting the pruned subtree
+
+ @param maxtrav
+ Maximum distance from \a p where to try inserting the pruned subtree
+
+ @note
+ Setting \a tr->thoroughInsertion affects this function. For each tested SPR
+ the new branch lengths will also be optimized. This computes better likelihoods
+ but also slows down the method considerably.
+*/
+static void
+pllComputeSPR (pllInstance * tr, partitionList * pr, nodeptr p, int mintrav, int maxtrav, pllRearrangeList * bestList)
+{
+
+ tr->startLH = tr->endLH = tr->likelihood;
+
+ /* TODO: Add cutoff code */
+
+ tr->bestOfNode = PLL_UNLIKELY;
+
+ pllTestSPR (tr, pr, p, mintrav, maxtrav, bestList);
+}
+
+/** @ingroup rearrangementGroup
+ @brief Compute a list of possible TBR moves
+
+ Iteratively tries all possible TBR moves that can be performed by
+ pruning the branch at \a p and testing all possible placements
+ in a radius of at least \a mintrav nodes and at most \a maxtrav nodes from
+ \a p. Note that \a tr->thoroughInsertion affects the behaviour of the function (see note).
+
+ @param tr
+ PLL instance
+
+ @param pr
+ List of partitions
+
+ @param p
+ Node specifying the pruned branch.
+
+ @param mintrav
+ Minimum distance from \a p where to try inserting the pruned branch
+
+ @param maxtrav
+ Maximum distance from \a p where to try inserting the pruned branch
+
+ @param[out] bestList
+ Sorted list of the best rearrangements
+ */
+static int
+pllComputeTBR (pllInstance * tr, partitionList * pr, nodeptr p, int mintrav,
+ int maxtrav, pllRearrangeList * bestList)
+{
+
+ tr->startLH = tr->endLH = tr->likelihood;
+
+ /* TODO: Add cutoff code */
+
+ tr->bestOfNode = PLL_UNLIKELY;
+
+ nodeptr p1, p2, q, q1, q2;
+ double p1z[PLL_NUM_BRANCHES], p2z[PLL_NUM_BRANCHES], q1z[PLL_NUM_BRANCHES],
+ q2z[PLL_NUM_BRANCHES], rz[PLL_NUM_BRANCHES];
+ int i, numPartitions;
+
+ q = p->back;
+
+ if (isTip (p->number, tr->mxtips) || isTip (q->number, tr->mxtips))
+ {
+ errno = PLL_TBR_NOT_INNER_BRANCH;
+ return PLL_FALSE;
+ }
+
+ numPartitions = pr->perGeneBranchLengths ? pr->numberOfPartitions : 1;
+
+ p1 = p->next->back;
+ p2 = p->next->next->back;
+ q1 = q->next->back;
+ q2 = q->next->next->back;
+
+ /* save branch lengths before splitting the tree in two components */
+ for (i = 0; i < numPartitions; ++i)
+ {
+ p1z[i] = p1->z[i];
+ p2z[i] = p2->z[i];
+ q1z[i] = q1->z[i];
+ q2z[i] = q2->z[i];
+ rz[i] = p->z[i];
+ }
+
+ if (maxtrav < 1 || mintrav > maxtrav)
+ return PLL_BADREAR;
+ q = p->back;
+
+ if (!isTip (p1->number, tr->mxtips) || !isTip (p2->number, tr->mxtips))
+ {
+
+ /* split the tree in two components */
+ if (!pllTbrRemoveBranch (tr, pr, p))
+ return PLL_BADREAR;
+
+ /* p1 and p2 are now connected */
+ assert(p1->back == p2 && p2->back == p1);
+
+ /* recursively traverse and perform TBR */
+ pllTraverseUpdateTBR (tr, pr, p1, q1, mintrav, maxtrav, mintrav, maxtrav,
+ bestList);
+ if (!isTip (q2->number, tr->mxtips))
+ {
+ pllTraverseUpdateTBR (tr, pr, q2->next->back, p1, mintrav - 1,
+ maxtrav - 1, mintrav, maxtrav, bestList);
+ pllTraverseUpdateTBR (tr, pr, q2->next->next->back, p1, mintrav - 1,
+ maxtrav - 1, mintrav, maxtrav, bestList);
+ }
+
+ if (!isTip (p2->number, tr->mxtips))
+ {
+ pllTraverseUpdateTBR (tr, pr, p2->next->back, q1, mintrav - 1,
+ maxtrav - 1, mintrav, maxtrav, bestList);
+ pllTraverseUpdateTBR (tr, pr, p2->next->next->back, q1, mintrav - 1,
+ maxtrav - 1, mintrav, maxtrav, bestList);
+ if (!isTip (q2->number, tr->mxtips))
+ {
+ pllTraverseUpdateTBR (tr, pr, p2->next->back, q2->next->back,
+ mintrav - 1, maxtrav - 1, mintrav - 1,
+ maxtrav - 1, bestList);
+ pllTraverseUpdateTBR (tr, pr, p2->next->back,
+ q2->next->next->back, mintrav - 1,
+ maxtrav - 1, mintrav - 1, maxtrav - 1,
+ bestList);
+ pllTraverseUpdateTBR (tr, pr, p2->next->next->back,
+ q2->next->back, mintrav - 1, maxtrav - 1,
+ mintrav - 1, maxtrav - 1, bestList);
+ pllTraverseUpdateTBR (tr, pr, p2->next->next->back,
+ q2->next->next->back, mintrav - 1,
+ maxtrav - 1, mintrav - 1, maxtrav - 1,
+ bestList);
+ }
+ }
+
+ /* restore the topology as it was before the split */
+ int restoreTopoOK = pllTbrConnectSubtreesZ (tr, pr, p1, q1, p1z, p2z, q1z,
+ q2z, rz);
+ assert(restoreTopoOK);
+
+ }
+
+ return PLL_TRUE;
+}
+
+/** @ingroup rearrangementGroup
+ @brief Return the yielded likelihood of an NNI move, without altering the topology
+
+ This function performs the NNI move of type \a swapType at node \a p, optimizes
+ the branch with endpoints \a p and \a p->back and evalutes the resulting likelihood.
+ It then restores the topology to the origin and returns the likelihood that the NNI
+ move yielded.
+
+ @param tr
+ PLL instance
+
+ @param pr
+ List of partitions
+
+ @param p
+ Where to perform the NNI move
+
+ @param swapType
+ What type of NNI move to perform
+
+ @return
+ The likelihood yielded from the NNI
+*/
+static double
+pllTestNNILikelihood (pllInstance * tr, partitionList * pr, nodeptr p, int swapType)
+{
+ double lh;
+ double z0[PLL_NUM_BRANCHES];
+ int i;
+
+ /* store the origin branch lengths and likelihood. The original branch lengths could
+ be passed as a parameter in order to avoid duplicate computations because of the two
+ NNI moves */
+ for (i = 0; i < pr->numberOfPartitions; ++ i)
+ {
+ z0[i] = p->z[i];
+ }
+
+ /* perform NNI */
+ pllTopologyPerformNNI(tr, p, swapType);
+ /* recompute the likelihood vectors of the two subtrees rooted at p and p->back,
+ optimize the branch lengths and evaluate the likelihood */
+ pllUpdatePartials (tr, pr, p, PLL_FALSE);
+ pllUpdatePartials (tr, pr, p->back, PLL_FALSE);
+ update (tr, pr, p);
+ pllEvaluateLikelihood (tr, pr, p, PLL_FALSE, PLL_FALSE);
+ lh = tr->likelihood;
+
+ /* restore topology */
+ pllTopologyPerformNNI(tr, p, swapType);
+ pllUpdatePartials (tr, pr, p, PLL_FALSE);
+ pllUpdatePartials (tr, pr, p->back, PLL_FALSE);
+ //update (tr, pr, p);
+ pllEvaluateLikelihood (tr, pr, p, PLL_FALSE, PLL_FALSE);
+ for (i = 0; i < pr->numberOfPartitions; ++ i)
+ {
+ p->z[i] = p->back->z[i] = z0[i];
+ }
+
+ return lh;
+}
+/** @ingroup rearrangementGroup
+ @brief Compares NNI likelihoods at a node and store in the rearrangement list
+
+ Compares the two possible NNI moves that can be performed at node \a p, and
+ if the likelihood improves from the one of the original topology, then
+ it picks the one that yields the highest likelihood and tries to insert it in
+ the list of best rearrangement moves
+
+ @param tr
+ PLL instance
+
+ @param pr
+ List of partitions
+
+ @param bestList
+ Rearrangement moves list
+*/
+static void pllTestNNI (pllInstance * tr, partitionList * pr, nodeptr p, pllRearrangeList * bestList)
+{
+ double lh0, lh1, lh2;
+ pllRearrangeInfo rearr;
+
+ /* store the original likelihood */
+ lh0 = tr->likelihood;
+
+ lh1 = pllTestNNILikelihood (tr, pr, p, PLL_NNI_P_NEXT);
+ lh2 = pllTestNNILikelihood (tr, pr, p, PLL_NNI_P_NEXTNEXT);
+
+ if (lh0 > lh1 && lh0 > lh2) return;
+
+ /* set the arrangement structure */
+ rearr.rearrangeType = PLL_REARRANGE_NNI;
+ rearr.likelihood = PLL_MAX (lh1, lh2);
+ rearr.NNI.originNode = p;
+ rearr.NNI.swapType = (lh1 > lh2) ? PLL_NNI_P_NEXT : PLL_NNI_P_NEXTNEXT;
+
+ /* try to store it in the best list */
+ pllStoreRearrangement (bestList, &rearr);
+}
+
+/** @ingroup rearrangementGroup
+ @brief Recursive traversal of the tree structure for testing NNI moves
+
+ Recursively traverses the tree structure and tests all allowed NNI
+ moves in the area specified by \a mintrav and \a maxtrav. For more
+ information and details on the function arguments check ::pllSearchNNI
+*/
+static void
+pllTraverseNNI (pllInstance *tr, partitionList *pr, nodeptr p, int mintrav, int maxtrav, pllRearrangeList * bestList)
+{
+ if (isTip (p->number, tr->mxtips)) return;
+
+ /* if we are at the right radius then compute the NNIs for nodes p->next and p->next->next */
+ if (!mintrav)
+ {
+ pllTestNNI (tr, pr, p->next, bestList);
+ pllTestNNI (tr, pr, p->next->next, bestList);
+ }
+
+ /* and then avoid computing the NNIs for nodes p->next->back and p->next->next->back as they are
+ the same to the ones computed in the above two lines. This way we do not need to resolve conflicts
+ later on as in the old code */
+ if (maxtrav)
+ {
+ if (!isTip (p->next->back->number, tr->mxtips))
+ pllTraverseNNI (tr, pr, p->next->back, mintrav ? mintrav - 1 : 0, maxtrav - 1, bestList);
+ if (!isTip (p->next->next->back->number, tr->mxtips))
+ pllTraverseNNI (tr, pr, p->next->next->back, mintrav ? mintrav - 1 : 0, maxtrav - 1, bestList);
+ }
+}
+
+/** @ingroup rearrangementGroup
+ @brief Compute a list of possible NNI moves
+
+ Iteratively tries all possible NNI moves at each node that is at
+ least \a mintrav and at most \a maxtrav nodes far from node \a p.
+ At each NNI move, the likelihood is tested and if it is higher than
+ the likelihood of an element in the sorted (by likelihood) list
+ \a bestList, or if there is still empty space in \a bestList, it is
+ inserted at the corresponding position.
+
+ @param tr
+ PLL instance
+
+ @param pr
+ List of partitions
+
+ @param p
+ Node specifying the point where the NNI will be performed.
+
+ @param mintrav
+ Minimum distance from \a p where the NNI can be tested
+
+ @param maxtrav
+ Maximum distance from \a p where to try NNIs
+*/
+static void
+pllSearchNNI (pllInstance * tr, partitionList * pr, nodeptr p, int mintrav, int maxtrav, pllRearrangeList * bestList)
+{
+ /* avoid conflicts by precomputing the NNI of the first node */
+
+ if (mintrav == 0)
+ pllTestNNI (tr, pr, p, bestList);
+
+ pllTraverseNNI (tr, pr, p, mintrav, maxtrav, bestList);
+ if (maxtrav)
+ pllTraverseNNI (tr, pr, p->back, mintrav, maxtrav - 1, bestList);
+
+}
+
+/** @ingroup rearrangementGroup
+ @brief Create rollback information for a TBR move
+
+ Creates a structure of type ::pllRollbackInfo and fills it with rollback
+ information about the SPR move described in \a rearr. The rollback info
+ is stored in the PLL instance in a LIFO manner.
+
+ @param tr
+ PLL instance
+
+ @param rearr
+ Description of the TBR move
+*/
+static void
+pllCreateTbrInfoRollback (pllInstance * tr, pllRearrangeInfo * rearr, int numBranches)
+{
+ pllRollbackInfo * tbrRb;
+ nodeptr p;
+ int i;
+
+ p = rearr->TBR.removeBranch;
+
+ tbrRb = (pllRollbackInfo *) rax_malloc (sizeof (pllRollbackInfo) + 5 * numBranches * sizeof (double));
+ tbrRb->TBR.zp1 = (double *) ((void *)tbrRb + sizeof (pllRollbackInfo));
+ tbrRb->TBR.zp2 = (double *) ((void *)tbrRb + sizeof (pllRollbackInfo) + numBranches * sizeof (double));
+ tbrRb->TBR.zq1 = (double *) ((void *)tbrRb + sizeof (pllRollbackInfo) + 2 * numBranches * sizeof (double));
+ tbrRb->TBR.zq2 = (double *) ((void *)tbrRb + sizeof (pllRollbackInfo) + 3 * numBranches * sizeof (double));
+ tbrRb->TBR.zpq = (double *) ((void *)tbrRb + sizeof (pllRollbackInfo) + 3 * numBranches * sizeof (double));
+
+ for (i = 0; i < numBranches; ++ i)
+ {
+ tbrRb->TBR.zpq[i] = p->z[i];
+ tbrRb->TBR.zp1[i] = p->next->z[i];
+ tbrRb->TBR.zp2[i] = p->next->next->z[i];
+ tbrRb->TBR.zq1[i] = p->back->next->z[i];
+ tbrRb->TBR.zq2[i] = p->back->next->next->z[i];
+ }
+
+ tbrRb->TBR.p = p;
+ tbrRb->TBR.q = p->next->back;
+ tbrRb->TBR.r = p->back->next->back;
+
+ tbrRb->rearrangeType = PLL_REARRANGE_TBR;
+
+ pllStackPush (&(tr->rearrangeHistory), (void *) tbrRb);
+}
+
+/** @ingroup rearrangementGroup
+ @brief Create rollback information for an SPR move
+
+ Creates a structure of type ::pllRollbackInfo and fills it with rollback
+ information about the SPR move described in \a rearr. The rollback info
+ is stored in the PLL instance in a LIFO manner.
+
+ @param tr
+ PLL instance
+
+ @param rearr
+ Description of the SPR move
+
+ @param numBranches
+ Number of partitions
+*/
+static void
+pllCreateSprInfoRollback (pllInstance * tr, pllRearrangeInfo * rearr, int numBranches)
+{
+ pllRollbackInfo * sprRb;
+ nodeptr p, q;
+ int i;
+
+ p = rearr->SPR.removeNode;
+ q = rearr->SPR.insertNode;
+
+ sprRb = (pllRollbackInfo *) rax_malloc (sizeof (pllRollbackInfo) + 4 * numBranches * sizeof (double));
+ sprRb->SPR.zp = (double *) ((void *)sprRb + sizeof (pllRollbackInfo));
+ sprRb->SPR.zpn = (double *) ((void *)sprRb + sizeof (pllRollbackInfo) + numBranches * sizeof (double));
+ sprRb->SPR.zpnn = (double *) ((void *)sprRb + sizeof (pllRollbackInfo) + 2 * numBranches * sizeof (double));
+ sprRb->SPR.zqr = (double *) ((void *)sprRb + sizeof (pllRollbackInfo) + 3 * numBranches * sizeof (double));
+
+ for (i = 0; i < numBranches; ++ i)
+ {
+ sprRb->SPR.zp[i] = p->z[i];
+ sprRb->SPR.zpn[i] = p->next->z[i];
+ sprRb->SPR.zpnn[i] = p->next->next->z[i];
+ sprRb->SPR.zqr[i] = q->z[i];
+ }
+
+ sprRb->SPR.pn = p->next->back;
+ sprRb->SPR.pnn = p->next->next->back;
+ sprRb->SPR.r = q->back;
+ sprRb->SPR.q = q;
+ sprRb->SPR.p = p;
+
+ sprRb->rearrangeType = PLL_REARRANGE_SPR;
+
+ pllStackPush (&(tr->rearrangeHistory), (void *) sprRb);
+}
+
+/** @ingroup rearrangementGroup
+ @brief Create rollback information for an NNI move
+
+ Creates a structure of type ::pllRollbackInfo and fills it with rollback
+ information about the SPR move described in \a rearr. The rollback info
+ is stored in the PLL instance in a LIFO manner
+
+ @param tr
+ PLL instance
+
+ @param rearr
+ Description of the NNI move
+*/
+static void
+pllCreateNniInfoRollback (pllInstance * tr, pllRearrangeInfo * rearr)
+{
+ /*TODO: add the branches ? */
+ pllRollbackInfo * ri;
+
+ ri = (pllRollbackInfo *) rax_malloc (sizeof (pllRollbackInfo));
+
+ ri->rearrangeType = PLL_REARRANGE_NNI;
+
+ ri->NNI.origin = rearr->NNI.originNode;
+ ri->NNI.swapType = rearr->NNI.swapType;
+
+ pllStackPush (&(tr->rearrangeHistory), (void *) ri);
+
+}
+
+
+/** @ingroup rearrangementGroup
+ @brief Generic function for creating rollback information
+
+ Creates a structure of type ::pllRollbackInfo and fills it with rollback
+ information about the move described in \a rearr. The rollback info
+ is stored in the PLL instance in a LIFO manner
+
+ @param tr
+ PLL instance
+
+ @param rearr
+ Description of the NNI move
+
+ @param numBranches
+ Number of partitions
+*/
+static void
+pllCreateRollbackInfo (pllInstance * tr, pllRearrangeInfo * rearr, int numBranches)
+{
+ switch (rearr->rearrangeType)
+ {
+ case PLL_REARRANGE_NNI:
+ pllCreateNniInfoRollback (tr, rearr);
+ break;
+ case PLL_REARRANGE_SPR:
+ pllCreateSprInfoRollback (tr, rearr, numBranches);
+ break;
+ case PLL_REARRANGE_TBR:
+ pllCreateTbrInfoRollback (tr, rearr, numBranches);
+ break;
+ default:
+ break;
+ }
+
+}
+
+
+/** @ingroup rearrangementGroup
+ @brief Rollback an SPR move
+
+ Perform a rollback (undo) on the last SPR move.
+
+ @param pr
+ List of partitions
+
+ @param ri
+ Rollback information
+*/
+static void
+pllRollbackSPR (partitionList * pr, pllRollbackInfo * ri)
+{
+ int numBranches;
+
+ numBranches = pr->perGeneBranchLengths ? pr->numberOfPartitions : 1;
+
+ hookup (ri->SPR.p->next, ri->SPR.pn, ri->SPR.zpn, numBranches);
+ hookup (ri->SPR.p->next->next, ri->SPR.pnn, ri->SPR.zpnn, numBranches);
+ hookup (ri->SPR.p, ri->SPR.p->back, ri->SPR.zp, numBranches);
+ hookup (ri->SPR.q, ri->SPR.r, ri->SPR.zqr, numBranches);
+
+ rax_free (ri);
+}
+
+/** @ingroup rearrangementGroup
+ @brief Rollback a TBR move
+
+ Perform a rollback (undo) on the last TBR move.
+
+ @param tr
+ PLL instance
+
+ @param pr
+ List of partitions
+
+ @param ri
+ Rollback information
+ */
+static void
+pllRollbackTBR (pllInstance * tr, partitionList * pr, pllRollbackInfo * ri)
+{
+ int numBranches;
+ if (ri->rearrangeType != PLL_REARRANGE_TBR)
+ {
+ return;
+ }
+
+ numBranches = pr->perGeneBranchLengths ? pr->numberOfPartitions : 1;
+
+ pllTbrRemoveBranch (tr, pr, ri->TBR.p);
+ pllTbrConnectSubtreesBL (tr, pr, ri->TBR.q, ri->TBR.r, 0, 0, 0, 0, 0);
+
+ memcpy (ri->TBR.p->next->z, ri->TBR.zp1, numBranches * sizeof(double));
+ memcpy (ri->TBR.p->next->back->z, ri->TBR.zp1, numBranches * sizeof(double));
+
+ memcpy (ri->TBR.p->next->next->z, ri->TBR.zp2, numBranches * sizeof(double));
+ memcpy (ri->TBR.p->next->next->back->z, ri->TBR.zp2,
+ numBranches * sizeof(double));
+
+ memcpy (ri->TBR.p->z, ri->TBR.zpq, numBranches * sizeof(double));
+ memcpy (ri->TBR.p->back->z, ri->TBR.zpq, numBranches * sizeof(double));
+
+ memcpy (ri->TBR.p->back->next->z, ri->TBR.zq1, numBranches * sizeof(double));
+ memcpy (ri->TBR.p->back->next->back->z, ri->TBR.zq1,
+ numBranches * sizeof(double));
+
+ memcpy (ri->TBR.p->back->next->next->z, ri->TBR.zq2,
+ numBranches * sizeof(double));
+ memcpy (ri->TBR.p->back->next->next->back->z, ri->TBR.zq2,
+ numBranches * sizeof(double));
+
+ rax_free (ri);
+}
+
+/** @ingroup rearrangementGroup
+ @brief Rollback an NNI move
+
+ Perform a rollback (undo) on the last NNI move.
+
+ @param tr
+ PLL instance
+
+ @param pr
+ List of partitions
+
+ @param ri
+ Rollback information
+*/
+static void
+pllRollbackNNI (pllInstance * tr, partitionList * pr, pllRollbackInfo * ri)
+{
+ nodeptr p = ri->NNI.origin;
+
+ pllTopologyPerformNNI(tr, p, ri->NNI.swapType);
+ pllUpdatePartials (tr, pr, p, PLL_FALSE);
+ pllUpdatePartials (tr, pr, p->back, PLL_FALSE);
+ update (tr, pr, p);
+ pllEvaluateLikelihood (tr, pr, p, PLL_FALSE, PLL_FALSE);
+
+ rax_free (ri);
+}
+
+/** @ingroup rearrangementGroup
+ @brief Rollback the last committed rearrangement move
+
+ Perform a rollback (undo) on the last committed rearrangement move.
+
+ @param tr
+ PLL instance
+
+ @param pr
+ List of partitions
+
+ @return
+ Returns \b PLL_TRUE is the rollback was successful, otherwise \b PLL_FALSE
+ (if no rollback was done)
+*/
+int
+pllRearrangeRollback (pllInstance * tr, partitionList * pr)
+{
+ pllRollbackInfo * ri;
+
+ ri = (pllRollbackInfo *) pllStackPop (&(tr->rearrangeHistory));
+ if (!ri) return (PLL_FALSE);
+
+ switch (ri->rearrangeType)
+ {
+ case PLL_REARRANGE_NNI:
+ pllRollbackNNI (tr, pr, ri);
+ break;
+ case PLL_REARRANGE_SPR:
+ pllRollbackSPR (pr, ri);
+ break;
+ case PLL_REARRANGE_TBR:
+ pllRollbackTBR (tr, pr, ri);
+ break;
+ default:
+ rax_free (ri);
+ return (PLL_FALSE);
+ }
+
+ return (PLL_TRUE);
+
+}
+
+
+/** @ingroup rearrangementGroup
+ @brief Commit a rearrangement move
+
+ Applies the rearrangement move specified in \a rearr to the tree topology in \a tr.
+ In case of SPR moves, if
+ \a tr->thoroughInsertion is set to \b PLL_TRUE, the new branch lengths are also optimized.
+ The function stores rollback information in pllInstance::rearrangeHistory if \a saveRollbackInfo
+ is set to \b PLL_TRUE. This way, the rearrangement move can be rolled back (undone) by calling
+ ::pllRearrangeRollback
+
+ @param tr
+ PLL instance
+
+ @param pr
+ List of partitions
+
+ @param rearr
+ An element of a \a pllRearrangeInfo structure that contains information about the rearrangement move
+
+ @param saveRollbackInfo
+ If set to \b PLL_TRUE, rollback info will be kept for undoing the rearrangement move
+*/
+int
+pllRearrangeCommit (pllInstance * tr, partitionList * pr, pllRearrangeInfo * rearr, int saveRollbackInfo)
+{
+ nodeptr q, r;
+ int numBranches;
+
+ numBranches = pr->perGeneBranchLengths ? pr->numberOfPartitions : 1;
+
+ if (saveRollbackInfo)
+ pllCreateRollbackInfo (tr, rearr, numBranches);
+
+ switch (rearr->rearrangeType)
+ {
+ case PLL_REARRANGE_NNI:
+ pllTopologyPerformNNI(tr, rearr->NNI.originNode, rearr->NNI.swapType);
+ pllUpdatePartials (tr, pr, rearr->NNI.originNode, PLL_FALSE);
+ pllUpdatePartials (tr, pr, rearr->NNI.originNode->back, PLL_FALSE);
+ update (tr, pr, rearr->NNI.originNode);
+ pllEvaluateLikelihood (tr, pr, rearr->NNI.originNode, PLL_FALSE, PLL_FALSE);
+ break;
+ case PLL_REARRANGE_SPR:
+ removeNodeBIG (tr, pr, rearr->SPR.removeNode, numBranches);
+ insertBIG (tr, pr, rearr->SPR.removeNode, rearr->SPR.insertNode);
+ break;
+ case PLL_REARRANGE_TBR:
+ q = rearr->TBR.removeBranch->next->back;
+ r = rearr->TBR.removeBranch->back->next->back;
+ if (!pllTbrRemoveBranch (tr, pr, rearr->TBR.removeBranch))
+ {
+ return PLL_FALSE;
+ }
+ if (!pllTbrConnectSubtreesZ (tr, pr, rearr->TBR.insertBranch1,
+ rearr->TBR.insertBranch2, rearr->TBR.zp,
+ rearr->TBR.zpb, rearr->TBR.zq,
+ rearr->TBR.zqb, rearr->TBR.zr))
+ {
+ /* Undo remove branch. This operation should be done without errors. */
+ assert(pllTbrConnectSubtreesML (tr, pr, q, r));
+ return PLL_FALSE;
+ }
+ break;
+ default:
+ return PLL_FALSE;
+ break;
+ }
+ return PLL_TRUE;
+}
+
+
+/******** new rearrangement functions ****************/
+
+/* change this to return the number of new elements in the list */
+/** @ingroup rearrangementGroup
+ @brief Search for rearrangement topologies
+
+ Search for possible rearrangement moves of type \a rearrangeType in the
+ annular area defined by the minimal resp. maximal radii \a mintrav resp.
+ \a maxtrav. If the resulting likelihood is better than the current, try
+ to insert the move specification in \a bestList, which is a sorted list
+ that holds the rearrange info of the best moves sorted by likelihood
+ (desccending order).
+
+ @param tr
+ PLL instance
+
+ @param pr
+ List of partitions
+
+ @param rearrangeType
+ Type of rearrangement. Can be \b PLL_REARRANGE_SPR or \b PLL_REARRANGE_NNI
+
+ @param p
+ Point of origin, i.e. where to start searching from
+
+ @param mintrav
+ The minimal radius of the annulus
+
+ @param maxtrav
+ The maximal radius of the annulus
+
+ @param bestList
+ List that holds the details of the best rearrangement moves found
+
+ @note
+ If \a bestList is not empty, the existing entries will not be altered unless
+ better rearrangement moves (that means yielding better likelihood) are found
+ and the list is full, in which case the entries with the worst likelihood will be
+ thrown away.
+*/
+void
+pllRearrangeSearch (pllInstance * tr, partitionList * pr, int rearrangeType, nodeptr p, int mintrav, int maxtrav, pllRearrangeList * bestList)
+{
+ switch (rearrangeType)
+ {
+ case PLL_REARRANGE_SPR:
+ pllComputeSPR (tr, pr, p, mintrav, maxtrav, bestList);
+ break;
+
+ case PLL_REARRANGE_NNI:
+ pllSearchNNI (tr, pr, p, mintrav, maxtrav, bestList);
+ break;
+
+ case PLL_REARRANGE_TBR:
+ pllComputeTBR (tr, pr, p, mintrav, maxtrav, bestList);
+ break;
+
+ default:
+ assert(0);
+ break;
+ }
+}
+
+
+static int
+determineRearrangementSetting(pllInstance *tr, partitionList *pr,
+ bestlist *bestT, bestlist *bt)
+{
+ int i, mintrav, maxtrav, bestTrav, impr, index, MaxFast, *perm = (int*) NULL;
+ double startLH;
+ boolean cutoff;
+
+ MaxFast = 26;
+
+ startLH = tr->likelihood;
+
+ cutoff = tr->doCutoff;
+ tr->doCutoff = PLL_FALSE;
+
+ mintrav = 1;
+ maxtrav = 5;
+
+ bestTrav = maxtrav = 5;
+
+ impr = 1;
+
+ resetBestTree(bt);
+
+ if (tr->permuteTreeoptimize)
+ {
+ int n = tr->mxtips + tr->mxtips - 2;
+ perm = (int *) rax_malloc(sizeof(int) * (n + 1));
+ makePermutation(perm, n, tr);
+ }
+
+ while (impr && maxtrav < MaxFast)
+ {
+ recallBestTree(bestT, 1, tr, pr);
+ nodeRectifier(tr);
+
+ if (maxtrav > tr->ntips - 3)
+ maxtrav = tr->ntips - 3;
+
+ tr->startLH = tr->endLH = tr->likelihood;
+
+ for (i = 1; i <= tr->mxtips + tr->mxtips - 2; i++)
+ {
+
+ if (tr->permuteTreeoptimize)
+ index = perm[i];
+ else
+ index = i;
+
+ tr->bestOfNode = PLL_UNLIKELY;
+ if (rearrangeBIG(tr, pr, tr->nodep[index], mintrav, maxtrav))
+ {
+ if (tr->endLH > tr->startLH)
+ {
+ restoreTreeFast(tr, pr);
+ tr->startLH = tr->endLH = tr->likelihood;
+ }
+ }
+ }
+
+ pllOptimizeBranchLengths(tr, pr, 8);
+ saveBestTree(bt, tr,
+ pr->perGeneBranchLengths ? pr->numberOfPartitions : 1);
+
+ if (tr->likelihood > startLH)
+ {
+ startLH = tr->likelihood;
+ bestTrav = maxtrav;
+ impr = 1;
+ }
+ else
+ {
+ impr = 0;
+ }
+ maxtrav += 5;
+
+ if (tr->doCutoff)
+ {
+ tr->lhCutoff = (tr->lhAVG) / ((double) (tr->lhDEC));
+
+ tr->itCount = tr->itCount + 1;
+ tr->lhAVG = 0;
+ tr->lhDEC = 0;
+ }
+ }
+
+ recallBestTree(bt, 1, tr, pr);
+ tr->doCutoff = cutoff;
+
+ if (tr->permuteTreeoptimize)
+ rax_free(perm);
+
+ return bestTrav;
+}
+
+
+static void hash_dealloc_bipentry (void * entry)
+{
+ pllBipartitionEntry * e = (pllBipartitionEntry *)entry;
+
+ if(e->bitVector) rax_free(e->bitVector);
+ if(e->treeVector) rax_free(e->treeVector);
+ if(e->supportVector) rax_free(e->supportVector);
+
+}
+
+/** @ingroup rearrangementGroup
+ @brief RAxML algorithm for ML search
+
+ RAxML algorithm for searching the Maximum Likelihood tree and model.
+
+ @param tr
+ PLL instance
+
+ @param pr
+ List of partitions
+
+ @param estimateModel
+ If true, model parameters are optimized in a ML framework.
+
+ @note
+ For datasets with a large number of taxa, setting tr->searchConvergenceCriterion to
+ PLL_TRUE can improve the execution time in up to 50% looking for topology convergence.
+*/
+int
+pllRaxmlSearchAlgorithm(pllInstance * tr, partitionList * pr,
+ boolean estimateModel)
+{
+ pllEvaluateLikelihood(tr, pr, tr->start, PLL_TRUE, PLL_FALSE);
+ pllOptimizeModelParameters(tr, pr, 1.0);
+ pllOptimizeBranchLengths(tr, pr, 32);
+
+ unsigned int vLength = 0;
+ int i, impr, bestTrav, rearrangementsMax = 0, rearrangementsMin = 0,
+ thoroughIterations = 0, fastIterations = 0;
+
+ double lh, previousLh, difference, epsilon;
+ bestlist *bestT, *bt;
+ infoList iList;
+ pllOptimizeBranchLengths(tr, pr, 32);
+
+ pllHashTable *h = NULL;
+ //hashtable *h = NULL;
+ unsigned int **bitVectors = (unsigned int**) NULL;
+
+ /* Security check... These variables might have not been initialized! */
+ if (tr->stepwidth == 0) tr->stepwidth = 5;
+ if (tr->max_rearrange == 0) tr->max_rearrange = 21;
+
+ if (tr->searchConvergenceCriterion)
+ {
+ bitVectors = initBitVector(tr->mxtips, &vLength);
+ //h = initHashTable(tr->mxtips * 4);
+ h = pllHashInit (tr->mxtips * 4);
+ }
+
+ bestT = (bestlist *) rax_malloc(sizeof(bestlist));
+ bestT->ninit = 0;
+ initBestTree(bestT, 1, tr->mxtips);
+
+ bt = (bestlist *) rax_malloc(sizeof(bestlist));
+ bt->ninit = 0;
+ initBestTree(bt, 20, tr->mxtips);
+
+ initInfoList(&iList, 50);
+
+ difference = 10.0;
+ epsilon = tr->likelihoodEpsilon;
+
+ tr->thoroughInsertion = 0;
+
+ if (estimateModel)
+ {
+ pllEvaluateLikelihood(tr, pr, tr->start, PLL_TRUE, PLL_FALSE);
+ pllOptimizeModelParameters(tr, pr, 10.0);
+ }
+ else
+ pllOptimizeBranchLengths(tr, pr, 64);
+
+ saveBestTree(bestT, tr,
+ pr->perGeneBranchLengths ? pr->numberOfPartitions : 1);
+
+ if (!tr->initialSet)
+ bestTrav = tr->bestTrav = determineRearrangementSetting(tr, pr, bestT, bt);
+ else
+ bestTrav = tr->bestTrav = tr->initial;
+
+ if (estimateModel)
+ {
+ pllEvaluateLikelihood(tr, pr, tr->start, PLL_TRUE, PLL_FALSE);
+ pllOptimizeModelParameters(tr, pr, 5.0);
+ }
+ else
+ pllOptimizeBranchLengths(tr, pr, 32);
+
+ saveBestTree(bestT, tr,
+ pr->perGeneBranchLengths ? pr->numberOfPartitions : 1);
+ impr = 1;
+ if (tr->doCutoff)
+ tr->itCount = 0;
+
+ while (impr)
+ {
+ recallBestTree(bestT, 1, tr, pr);
+
+ if (tr->searchConvergenceCriterion)
+ {
+ int bCounter = 0;
+
+ if (fastIterations > 1)
+ cleanupHashTable(h, (fastIterations % 2));
+
+ bitVectorInitravSpecial(bitVectors, tr->nodep[1]->back, tr->mxtips,
+ vLength, h, fastIterations % 2, PLL_BIPARTITIONS_RF,
+ (branchInfo *) NULL, &bCounter, 1, PLL_FALSE, PLL_FALSE, 0);
+
+ assert(bCounter == tr->mxtips - 3);
+
+ if (fastIterations > 0)
+ {
+ double rrf = convergenceCriterion(h, tr->mxtips);
+
+ if (rrf <= 0.01) /* 1% cutoff */
+ {
+ cleanupHashTable(h, 0);
+ cleanupHashTable(h, 1);
+ goto cleanup_fast;
+ }
+ }
+ }
+
+ fastIterations++;
+
+ pllOptimizeBranchLengths(tr, pr, 32);
+
+ saveBestTree(bestT, tr,
+ pr->perGeneBranchLengths ? pr->numberOfPartitions : 1);
+
+ lh = previousLh = tr->likelihood;
+
+ treeOptimizeRapid(tr, pr, 1, bestTrav, bt, &iList);
+
+ impr = 0;
+
+ for (i = 1; i <= bt->nvalid; i++)
+ {
+ recallBestTree(bt, i, tr, pr);
+
+ pllOptimizeBranchLengths(tr, pr, 8);
+
+ difference = (
+ (tr->likelihood > previousLh) ?
+ tr->likelihood - previousLh : previousLh - tr->likelihood);
+ if (tr->likelihood > lh && difference > epsilon)
+ {
+ impr = 1;
+ lh = tr->likelihood;
+ saveBestTree(bestT, tr,
+ pr->perGeneBranchLengths ? pr->numberOfPartitions : 1);
+ }
+ }
+ }
+
+ if (tr->searchConvergenceCriterion)
+ {
+ cleanupHashTable(h, 0);
+ cleanupHashTable(h, 1);
+ }
+
+ cleanup_fast:
+
+ tr->thoroughInsertion = 1;
+ impr = 1;
+
+ recallBestTree(bestT, 1, tr, pr);
+ if (estimateModel)
+ {
+ pllEvaluateLikelihood(tr, pr, tr->start, PLL_TRUE, PLL_FALSE);
+ pllOptimizeModelParameters(tr, pr, 1.0);
+ }
+ else
+ pllOptimizeBranchLengths(tr, pr, 32);
+
+ while (1)
+ {
+ recallBestTree(bestT, 1, tr, pr);
+ if (impr)
+ {
+ rearrangementsMin = 1;
+ rearrangementsMax = tr->stepwidth;
+
+ if (tr->searchConvergenceCriterion)
+ {
+ int bCounter = 0;
+
+ if (thoroughIterations > 1)
+ cleanupHashTable(h, (thoroughIterations % 2));
+
+ bitVectorInitravSpecial(bitVectors, tr->nodep[1]->back,
+ tr->mxtips, vLength, h, thoroughIterations % 2,
+ PLL_BIPARTITIONS_RF, (branchInfo *) NULL, &bCounter, 1,
+ PLL_FALSE, PLL_FALSE, 0);
+
+ assert(bCounter == tr->mxtips - 3);
+
+ if (thoroughIterations > 0)
+ {
+ double rrf = convergenceCriterion(h, tr->mxtips);
+
+ if (rrf <= 0.01) /* 1% cutoff */
+ {
+ goto cleanup;
+ }
+ }
+ }
+
+ thoroughIterations++;
+ }
+ else
+ {
+ rearrangementsMax += tr->stepwidth;
+ rearrangementsMin += tr->stepwidth;
+ if (rearrangementsMax > tr->max_rearrange)
+ goto cleanup;
+ }
+ pllOptimizeBranchLengths(tr, pr, 32);
+
+ previousLh = lh = tr->likelihood;
+ saveBestTree(bestT, tr,
+ pr->perGeneBranchLengths ? pr->numberOfPartitions : 1);
+
+ treeOptimizeRapid(tr, pr, rearrangementsMin, rearrangementsMax, bt,
+ &iList);
+
+ impr = 0;
+
+ for (i = 1; i <= bt->nvalid; i++)
+ {
+ recallBestTree(bt, i, tr, pr);
+
+ pllOptimizeBranchLengths(tr, pr, 8);
+
+ difference = (
+ (tr->likelihood > previousLh) ?
+ tr->likelihood - previousLh : previousLh - tr->likelihood);
+ if (tr->likelihood > lh && difference > epsilon)
+ {
+ impr = 1;
+ lh = tr->likelihood;
+ saveBestTree(bestT, tr,
+ pr->perGeneBranchLengths ? pr->numberOfPartitions : 1);
+ }
+ }
+
+ }
+
+ cleanup:
+ if (tr->searchConvergenceCriterion)
+ {
+ freeBitVectors(bitVectors, 2 * tr->mxtips);
+ rax_free(bitVectors);
+ //freeHashTable(h);
+ //rax_free(h);
+ pllHashDestroy(&h, hash_dealloc_bipentry);
+ }
+
+ freeBestTree(bestT);
+ rax_free(bestT);
+ freeBestTree(bt);
+ rax_free(bt);
+
+ freeInfoList(&iList);
+
+ if (estimateModel) {
+ pllOptimizeModelParameters(tr, pr, epsilon);
+ }
+ pllOptimizeBranchLengths(tr, pr, 64);
+
+ return 0;
+}
+
diff --git a/src/ssort.c b/src/ssort.c
new file mode 100644
index 0000000..8ead4e6
--- /dev/null
+++ b/src/ssort.c
@@ -0,0 +1,121 @@
+/**
+ * PLL (version 1.0.0) a software library for phylogenetic inference
+ * Copyright (C) 2013 Tomas Flouri and Alexandros Stamatakis
+ *
+ * Derived from
+ * RAxML-HPC, a program for sequential and parallel estimation of phylogenetic
+ * trees by Alexandros Stamatakis
+ *
+ * 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 3 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, see <http://www.gnu.org/licenses/>.
+ *
+ * For any other enquiries send an Email to Tomas Flouri
+ * Tomas.Flouri at h-its.org
+ *
+ * When publishing work that uses PLL please cite PLL
+ *
+ * @file ssort.c
+ * Detailed description to appear soon.
+ */
+#include <stdio.h>
+#include <stdlib.h>
+#include "mem_alloc.h"
+
+/* string sorting implementation from:
+ * Bentley J. L., Sedgewick R.: Fast Algorithms for Sorting and Searching
+ * Strings. In Proceedings of ACM-SIAM Symposium on Discrete Algorithms
+ * (SODA) 1997.
+ */
+
+static void
+vecswap (int i, int j, int n, char ** x, int * oi)
+{
+ while (n-- > 0)
+ {
+ PLL_SWAP (x[i], x[j]);
+ PLL_SWAP (oi[i], oi[j]);
+
+ ++ i; ++ j;
+ }
+}
+
+static void
+ssort1 (char ** x, int n, int depth, int * oi)
+{
+ int a, b, c, d, r, v;
+
+ if (n <= 1) return;
+
+ a = rand() % n;
+
+ PLL_SWAP (x[0], x[a]);
+ PLL_SWAP (oi[0], oi[a]);
+
+ v = x[0][depth];
+
+ a = b = 1;
+ c = d = n - 1;
+
+ for (;;)
+ {
+ while (b <= c && (r = x[b][depth] - v) <= 0)
+ {
+ if (r == 0)
+ {
+ PLL_SWAP (x[a], x[b]);
+ PLL_SWAP (oi[a], oi[b]);
+ ++ a;
+ }
+ ++ b;
+ }
+ while (b <= c && (r = x[c][depth] - v) >= 0)
+ {
+ if (r == 0)
+ {
+ PLL_SWAP (x[c], x[d]);
+ PLL_SWAP (oi[c], oi[d]);
+ -- d;
+ }
+ -- c;
+ }
+ if (b > c) break;
+ PLL_SWAP (x[b], x[c]);
+ PLL_SWAP (oi[b], oi[c]);
+ ++ b; -- c;
+ }
+ r = PLL_MIN (a, b - a); vecswap (0, b - r, r, x, oi);
+ r = PLL_MIN (d - c, n - d - 1); vecswap (b, n - r, r, x, oi);
+ r = b - a; ssort1 (x, r, depth, oi);
+ if (x[r][depth] != 0)
+ {
+ ssort1 (x + r, a + n - d - 1, depth + 1, oi + r);
+ }
+ r = d - c; ssort1 (x + n - r, r, depth, oi + n - r);
+}
+
+int *
+pllssort1main (char ** x, int n)
+{
+ int * oi;
+ int i;
+
+ oi = (int *) rax_malloc (n * sizeof (int));
+ for (i = 0; i < n; ++ i)
+ {
+ oi[i] = i;
+ }
+ ssort1 (x, n, 0, oi);
+
+ return (oi);
+}
+
diff --git a/src/stack.c b/src/stack.c
new file mode 100644
index 0000000..062cf2e
--- /dev/null
+++ b/src/stack.c
@@ -0,0 +1,85 @@
+/**
+ * PLL (version 1.0.0) a software library for phylogenetic inference
+ * Copyright (C) 2013 Tomas Flouri and Alexandros Stamatakis
+ *
+ * Derived from
+ * RAxML-HPC, a program for sequential and parallel estimation of phylogenetic
+ * trees by Alexandros Stamatakis
+ *
+ * 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 3 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, see <http://www.gnu.org/licenses/>.
+ *
+ * For any other enquiries send an Email to Tomas Flouri
+ * Tomas.Flouri at h-its.org
+ *
+ * When publishing work that uses PLL please cite PLL
+ *
+ * @file stack.c
+ * @brief Generic stack implementation
+ *
+ * Detailed description to appear soon.
+ */
+#include <stdio.h>
+#include "stack.h"
+#include "mem_alloc.h"
+
+int pllStackSize (pllStack ** stack)
+{
+ pllStack * top;
+ int size = 0;
+ top = *stack;
+
+ while (top)
+ {
+ ++ size;
+ top = top->next;
+ }
+
+ return (size);
+}
+
+int
+pllStackPush (pllStack ** head, void * item)
+{
+ pllStack * new;
+
+ new = (pllStack *) rax_malloc (sizeof (pllStack));
+ if (!new) return (0);
+
+ new->item = item;
+ new->next = *head;
+ *head = new;
+
+ return (1);
+}
+
+void * pllStackPop (pllStack ** head)
+{
+ void * item;
+ pllStack * tmp;
+ if (!*head) return (NULL);
+
+ tmp = (*head);
+ item = (*head)->item;
+ (*head) = (*head)->next;
+ rax_free (tmp);
+
+ return (item);
+}
+
+void
+pllStackClear (pllStack ** stack)
+{
+ while (*stack) pllStackPop (stack);
+}
+
diff --git a/src/stack.h b/src/stack.h
new file mode 100644
index 0000000..2ec64bd
--- /dev/null
+++ b/src/stack.h
@@ -0,0 +1,48 @@
+/**
+ * PLL (version 1.0.0) a software library for phylogenetic inference
+ * Copyright (C) 2013 Tomas Flouri and Alexandros Stamatakis
+ *
+ * Derived from
+ * RAxML-HPC, a program for sequential and parallel estimation of phylogenetic
+ * trees by Alexandros Stamatakis
+ *
+ * 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 3 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, see <http://www.gnu.org/licenses/>.
+ *
+ * For any other enquiries send an Email to Tomas Flouri
+ * Tomas.Flouri at h-its.org
+ *
+ * When publishing work that uses PLL please cite PLL
+ *
+ * @file stack.h
+ * @brief Generic stack implementation
+ *
+ * Detailed description to appear soon.
+ */
+#ifndef __pll_STACK__
+#define __pll_STACK__
+
+struct pllStack
+{
+ void * item;
+ struct pllStack * next;
+};
+
+typedef struct pllStack pllStack;
+
+void pllStackClear (pllStack ** stack);
+void * pllStackPop (pllStack ** head);
+int pllStackPush (pllStack ** head, void * item);
+int pllStackSize (pllStack ** stack);
+
+#endif
diff --git a/src/topologies.c b/src/topologies.c
new file mode 100644
index 0000000..b3a6219
--- /dev/null
+++ b/src/topologies.c
@@ -0,0 +1,778 @@
+/**
+ * PLL (version 1.0.0) a software library for phylogenetic inference
+ * Copyright (C) 2013 Tomas Flouri and Alexandros Stamatakis
+ *
+ * Derived from
+ * RAxML-HPC, a program for sequential and parallel estimation of phylogenetic
+ * trees by Alexandros Stamatakis
+ *
+ * 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 3 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, see <http://www.gnu.org/licenses/>.
+ *
+ * For any other enquiries send an Email to Tomas Flouri
+ * Tomas.Flouri at h-its.org
+ *
+ * When publishing work that uses PLL please cite PLL
+ *
+ * @file topologies.c
+ * @brief Miscellanous functions working with tree topology
+*/
+#include "mem_alloc.h"
+
+#ifndef WIN32
+#include <sys/times.h>
+#include <sys/types.h>
+#include <sys/time.h>
+#include <unistd.h>
+#endif
+
+#include <math.h>
+#include <time.h>
+#include <stdlib.h>
+#include <stdio.h>
+#include <ctype.h>
+#include <string.h>
+#include <assert.h>
+
+#include "pll.h"
+#include "pllInternal.h"
+
+static void saveTopolRELLRec(pllInstance *tr, nodeptr p, topolRELL *tpl, int *i, int numsp)
+{
+ int k;
+ if(isTip(p->number, numsp))
+ return;
+ else
+ {
+ nodeptr q = p->next;
+ while(q != p)
+ {
+ tpl->connect[*i].p = q;
+ tpl->connect[*i].q = q->back;
+
+ if(tr->grouped || tr->constrained)
+ {
+ tpl->connect[*i].cp = tr->constraintVector[q->number];
+ tpl->connect[*i].cq = tr->constraintVector[q->back->number];
+ }
+
+ for(k = 0; k < PLL_NUM_BRANCHES; k++)
+ tpl->connect[*i].z[k] = q->z[k];
+ *i = *i + 1;
+
+ saveTopolRELLRec(tr, q->back, tpl, i, numsp);
+ q = q->next;
+ }
+ }
+}
+
+static void saveTopolRELL(pllInstance *tr, topolRELL *tpl)
+{
+ nodeptr p = tr->start;
+ int k, i = 0;
+
+ tpl->likelihood = tr->likelihood;
+ tpl->start = 1;
+
+ tpl->connect[i].p = p;
+ tpl->connect[i].q = p->back;
+
+ if(tr->grouped || tr->constrained)
+ {
+ tpl->connect[i].cp = tr->constraintVector[p->number];
+ tpl->connect[i].cq = tr->constraintVector[p->back->number];
+ }
+
+ for(k = 0; k < PLL_NUM_BRANCHES; k++)
+ tpl->connect[i].z[k] = p->z[k];
+ i++;
+
+ saveTopolRELLRec(tr, p->back, tpl, &i, tr->mxtips);
+
+ assert(i == 2 * tr->mxtips - 3);
+}
+
+
+static void restoreTopolRELL(pllInstance *tr, topolRELL *tpl, int numBranches)
+{
+ int i;
+
+ for (i = 0; i < 2 * tr->mxtips - 3; i++)
+ {
+ hookup(tpl->connect[i].p, tpl->connect[i].q, tpl->connect[i].z, numBranches);
+ tr->constraintVector[tpl->connect[i].p->number] = tpl->connect[i].cp;
+ tr->constraintVector[tpl->connect[i].q->number] = tpl->connect[i].cq;
+ }
+
+
+ tr->likelihood = tpl->likelihood;
+ tr->start = tr->nodep[tpl->start];
+ /* TODO */
+}
+
+
+
+/** @brief Initializes space as large as the tree
+ *
+ * @param rl
+ * RELL
+ *
+ * @param tr
+ * PLL instance
+ *
+ * @param n
+ * Number of
+ *
+ * @todo
+ * Don't know what is this used for. Something with RELL?
+ *
+ */
+void initTL(topolRELL_LIST *rl, pllInstance *tr, int n)
+{
+ int i;
+
+ rl->max = n;
+ rl->t = (topolRELL **)rax_malloc(sizeof(topolRELL *) * n);
+
+ for(i = 0; i < n; i++)
+ {
+ rl->t[i] = (topolRELL *)rax_malloc(sizeof(topolRELL));
+ rl->t[i]->connect = (connectRELL *)rax_malloc((2 * tr->mxtips - 3) * sizeof(connectRELL));
+ rl->t[i]->likelihood = PLL_UNLIKELY;
+ }
+}
+
+/** @brief Deallocate the space associated with this structure
+ *
+ * @paral rl
+ * This structure
+ *
+ * @todo
+ * fill the description
+ */
+void freeTL(topolRELL_LIST *rl)
+{
+ int i;
+ for(i = 0; i < rl->max; i++)
+ {
+ rax_free(rl->t[i]->connect);
+ rax_free(rl->t[i]);
+ }
+ rax_free(rl->t);
+}
+
+
+void restoreTL(topolRELL_LIST *rl, pllInstance *tr, int n, int numBranches)
+{
+ assert(n >= 0 && n < rl->max);
+
+ restoreTopolRELL(tr, rl->t[n], numBranches);
+}
+
+
+
+/** @brief Reset this structure
+ *
+ * Reset the likelihoods in this structure
+ *
+ * @param rl
+ * This structure
+ *
+ * @todo
+ * Complete this
+ */
+void resetTL(topolRELL_LIST *rl)
+{
+ int i;
+
+ for(i = 0; i < rl->max; i++)
+ rl->t[i]->likelihood = PLL_UNLIKELY;
+}
+
+
+
+/** @brief Save
+ *
+ * Save this topology?
+ *
+ * @todo
+ * Complete this
+ */
+void saveTL(topolRELL_LIST *rl, pllInstance *tr, int index)
+{
+ assert(index >= 0 && index < rl->max);
+
+ if(tr->likelihood > rl->t[index]->likelihood)
+ saveTopolRELL(tr, rl->t[index]);
+}
+
+
+static void *tipValPtr (nodeptr p)
+{
+ return (void *) & p->number;
+}
+
+
+static int cmpTipVal (void *v1, void *v2)
+{
+ int i1, i2;
+
+ i1 = *((int *) v1);
+ i2 = *((int *) v2);
+ return (i1 < i2) ? -1 : ((i1 == i2) ? 0 : 1);
+}
+
+
+/* These are the only routines that need to UNDERSTAND topologies */
+
+/** @brief Allocate and initialize space for a tree topology
+
+ Allocate and initialize a \a topol structure for a tree topology of
+ \a maxtips tips
+
+ @param
+ Number of tips of topology
+
+ @return
+ Pointer to the allocated \a topol structure
+*/
+static topol *setupTopol (int maxtips)
+{
+ topol *tpl;
+
+ if (! (tpl = (topol *) rax_malloc(sizeof(topol))) ||
+ ! (tpl->links = (connptr) rax_malloc((2*maxtips-3) * sizeof(connect))))
+ {
+ printf("ERROR: Unable to get topology memory");
+ tpl = (topol *) NULL;
+ }
+ else
+ {
+ tpl->likelihood = PLL_UNLIKELY;
+ tpl->start = (node *) NULL;
+ tpl->nextlink = 0;
+ tpl->ntips = 0;
+ tpl->nextnode = 0;
+ tpl->scrNum = 0; /* position in sorted list of scores */
+ tpl->tplNum = 0; /* position in sorted list of trees */
+ }
+
+ return tpl;
+}
+
+
+/** @brief Deallocate the space occupied by a \a topol structure
+
+ Deallocate the space occupied by a \a topol structure
+
+ @param tpl
+ The \a topol structure that is to be deallocated
+*/
+static void freeTopol (topol *tpl)
+{
+ rax_free(tpl->links);
+ rax_free(tpl);
+}
+
+
+static int saveSubtree (nodeptr p, topol *tpl, int numsp, int numBranches)
+{
+ connptr r, r0;
+ nodeptr q, s;
+ int t, t0, t1, k;
+
+ r0 = tpl->links;
+ r = r0 + (tpl->nextlink)++;
+ r->p = p;
+ r->q = q = p->back;
+
+ for(k = 0; k < numBranches; k++)
+ r->z[k] = p->z[k];
+
+ r->descend = 0; /* No children (yet) */
+
+ if (isTip(q->number, numsp))
+ {
+ r->valptr = tipValPtr(q); /* Assign value */
+ }
+ else
+ { /* Internal node, look at children */
+ s = q->next; /* First child */
+ do
+ {
+ t = saveSubtree(s, tpl, numsp, numBranches); /* Generate child's subtree */
+
+ t0 = 0; /* Merge child into list */
+ t1 = r->descend;
+ while (t1 && (cmpTipVal(r0[t1].valptr, r0[t].valptr) < 0)) {
+ t0 = t1;
+ t1 = r0[t1].sibling;
+ }
+ if (t0) r0[t0].sibling = t; else r->descend = t;
+ r0[t].sibling = t1;
+
+ s = s->next; /* Next child */
+ } while (s != q);
+
+ r->valptr = r0[r->descend].valptr; /* Inherit first child's value */
+ } /* End of internal node processing */
+
+ return (r - r0);
+}
+
+/** @brief Get the node with the smallest tip value
+
+ Recursively finds and returns the tip with the smallest value around a node
+ \a p0, or returns \a p0 if it is a tip.
+
+ @param p0
+ Node around which to at which the recursion starts
+
+ @param numsp
+ Number of species (tips) in the tree
+
+ @todo
+ Why do we return p0 immediately if it is a tip? Perhaps one of the two other nodes,
+ i.e. p0->next and p0->next->next, is a tip as well with a smaller number than p0.
+*/
+static nodeptr minSubtreeTip (nodeptr p0, int numsp)
+{
+ nodeptr minTip, p, testTip;
+
+ if (isTip(p0->number, numsp))
+ return p0;
+
+ p = p0->next;
+
+ minTip = minSubtreeTip(p->back, numsp);
+
+ while ((p = p->next) != p0)
+ {
+ testTip = minSubtreeTip(p->back, numsp);
+ if (cmpTipVal(tipValPtr(testTip), tipValPtr(minTip)) < 0)
+ minTip = testTip;
+ }
+ return minTip;
+}
+
+
+/** @brief
+*/
+static nodeptr minTreeTip (nodeptr p, int numsp)
+{
+ nodeptr minp, minpb;
+
+ minp = minSubtreeTip(p, numsp);
+ minpb = minSubtreeTip(p->back, numsp);
+ return (cmpTipVal(tipValPtr(minp), tipValPtr(minpb)) < 0 ? minp : minpb);
+}
+
+/** @brief Save the tree topology in a \a topol structure
+
+ Save the current tree topology in \a topol structure \a tpl.
+
+*/
+static void saveTree (pllInstance *tr, topol *tpl, int numBranches)
+/* Save a tree topology in a standard order so that first branches
+ * from a node contain lower value tips than do second branches from
+ * the node. The root tip should have the lowest value of all.
+ */
+{
+ connptr r;
+
+ tpl->nextlink = 0; /* Reset link pointer */
+ r = tpl->links + saveSubtree(minTreeTip(tr->start, tr->mxtips), tpl, tr->mxtips, numBranches); /* Save tree */
+ r->sibling = 0;
+
+ tpl->likelihood = tr->likelihood;
+ tpl->start = tr->start;
+ tpl->ntips = tr->ntips;
+ tpl->nextnode = tr->nextnode;
+
+} /* saveTree */
+
+
+/* @brief Transform tree to a given topology and evaluate likelihood
+
+ Transform our current tree topology to the one stored in \a tpl and
+ evaluates the likelihood
+
+ @param tr
+ PLL instance
+
+ @param pr
+ List of partitions
+
+ @return
+ \b PLL_TRUE
+
+ @todo
+ Remove the return value, unnecessary
+
+*/
+static boolean restoreTree (topol *tpl, pllInstance *tr, partitionList *pr)
+{
+ connptr r;
+ nodeptr p, p0;
+ int i;
+
+ /* first of all set all backs to NULL so that tips do not point anywhere */
+ for (i = 1; i <= 2*(tr->mxtips) - 2; i++)
+ {
+ /* Uses p = p->next at tip */
+ p0 = p = tr->nodep[i];
+ do
+ {
+ p->back = (nodeptr) NULL;
+ p = p->next;
+ }
+ while (p != p0);
+ }
+
+ /* Copy connections from topology */
+
+ /* then connect the nodes together */
+ for (r = tpl->links, i = 0; i < tpl->nextlink; r++, i++)
+ hookup(r->p, r->q, r->z, pr->perGeneBranchLengths?pr->numberOfPartitions:1);
+
+ tr->likelihood = tpl->likelihood;
+ tr->start = tpl->start;
+ tr->ntips = tpl->ntips;
+
+ tr->nextnode = tpl->nextnode;
+
+ pllEvaluateLikelihood (tr, pr, tr->start, PLL_TRUE, PLL_FALSE);
+ return PLL_TRUE;
+}
+
+
+
+/** @brief Initialize a list of best trees
+
+ Initialize a list that will contain the best \a newkeep tree topologies,
+ i.e. the ones that yield the best likelihood. Inside the list initialize
+ space for \a newkeep + 1 topologies of \a numsp tips. The additional
+ topology is the starting one
+
+ @param bt
+ Pointer to \a bestlist to be initialized
+
+ @param newkeep
+ Number of new topologies to keep
+
+ @param numsp
+ Number of species (tips)
+
+ @return
+ number of tree topology slots in the list (minus the starting one)
+
+ @todo
+ Is there a reason that this function is so complex? Many of the checks
+ are unnecessary as the function is called only at two places in the
+ code with newkeep=1 and newkeep=20
+*/
+int initBestTree (bestlist *bt, int newkeep, int numsp)
+{ /* initBestTree */
+ int i;
+
+ bt->nkeep = 0;
+
+ if (bt->ninit <= 0)
+ {
+ if (! (bt->start = setupTopol(numsp))) return 0;
+ bt->ninit = -1;
+ bt->nvalid = 0;
+ bt->numtrees = 0;
+ bt->best = PLL_UNLIKELY;
+ bt->improved = PLL_FALSE;
+ bt->byScore = (topol **) rax_malloc((newkeep + 1) * sizeof(topol *));
+ bt->byTopol = (topol **) rax_malloc((newkeep + 1) * sizeof(topol *));
+ if (! bt->byScore || ! bt->byTopol) {
+ printf( "initBestTree: malloc failure\n");
+ return 0;
+ }
+ }
+ else if (PLL_ABS(newkeep) > bt->ninit) {
+ if (newkeep < 0) newkeep = -(bt->ninit);
+ else newkeep = bt->ninit;
+ }
+
+ if (newkeep < 1) { /* Use negative newkeep to clear list */
+ newkeep = -newkeep;
+ if (newkeep < 1) newkeep = 1;
+ bt->nvalid = 0;
+ bt->best = PLL_UNLIKELY;
+ }
+
+ if (bt->nvalid >= newkeep) {
+ bt->nvalid = newkeep;
+ bt->worst = bt->byScore[newkeep]->likelihood;
+ }
+ else
+ {
+ bt->worst = PLL_UNLIKELY;
+ }
+
+ for (i = bt->ninit + 1; i <= newkeep; i++)
+ {
+ if (! (bt->byScore[i] = setupTopol(numsp))) break;
+ bt->byTopol[i] = bt->byScore[i];
+ bt->ninit = i;
+ }
+
+ return (bt->nkeep = PLL_MIN(newkeep, bt->ninit));
+} /* initBestTree */
+
+
+
+void resetBestTree (bestlist *bt)
+{ /* resetBestTree */
+ bt->best = PLL_UNLIKELY;
+ bt->worst = PLL_UNLIKELY;
+ bt->nvalid = 0;
+ bt->improved = PLL_FALSE;
+} /* resetBestTree */
+
+
+boolean freeBestTree(bestlist *bt)
+{ /* freeBestTree */
+ while (bt->ninit >= 0) freeTopol(bt->byScore[(bt->ninit)--]);
+
+ /* VALGRIND */
+
+ rax_free(bt->byScore);
+ rax_free(bt->byTopol);
+
+ /* VALGRIND END */
+
+ freeTopol(bt->start);
+ return PLL_TRUE;
+} /* freeBestTree */
+
+
+/* Compare two trees, assuming that each is in standard order. Return
+ * -1 if first preceeds second, 0 if they are identical, or +1 if first
+ * follows second in standard order. Lower number tips preceed higher
+ * number tips. A tip preceeds a corresponding internal node. Internal
+ * nodes are ranked by their lowest number tip.
+ */
+
+static int cmpSubtopol (connptr p10, connptr p1, connptr p20, connptr p2)
+{
+ connptr p1d, p2d;
+ int cmp;
+
+ if (! p1->descend && ! p2->descend) /* Two tips */
+ return cmpTipVal(p1->valptr, p2->valptr);
+
+ if (! p1->descend) return -1; /* p1 = tip, p2 = node */
+ if (! p2->descend) return 1; /* p2 = tip, p1 = node */
+
+ p1d = p10 + p1->descend;
+ p2d = p20 + p2->descend;
+ while (1) { /* Two nodes */
+ if ((cmp = cmpSubtopol(p10, p1d, p20, p2d))) return cmp; /* Subtrees */
+ if (! p1d->sibling && ! p2d->sibling) return 0; /* Lists done */
+ if (! p1d->sibling) return -1; /* One done, other not */
+ if (! p2d->sibling) return 1; /* One done, other not */
+ p1d = p10 + p1d->sibling; /* Neither done */
+ p2d = p20 + p2d->sibling;
+ }
+}
+
+
+
+static int cmpTopol (void *tpl1, void *tpl2)
+{
+ connptr r1, r2;
+ int cmp;
+
+ r1 = ((topol *) tpl1)->links;
+ r2 = ((topol *) tpl2)->links;
+ cmp = cmpTipVal(tipValPtr(r1->p), tipValPtr(r2->p));
+ if (cmp)
+ return cmp;
+ return cmpSubtopol(r1, r1, r2, r2);
+}
+
+
+
+static int cmpTplScore (void *tpl1, void *tpl2)
+{
+ double l1, l2;
+
+ l1 = ((topol *) tpl1)->likelihood;
+ l2 = ((topol *) tpl2)->likelihood;
+ return (l1 > l2) ? -1 : ((l1 == l2) ? 0 : 1);
+}
+
+
+
+/* Find an item in a sorted list of n items. If the item is in the list,
+ * return its index. If it is not in the list, return the negative of the
+ * position into which it should be inserted.
+ */
+
+static int findInList (void *item, void *list[], int n, int (* cmpFunc)(void *, void *))
+{
+ int mid, hi, lo, cmp = 0;
+
+ if (n < 1) return -1; /* No match; first index */
+
+ lo = 1;
+ mid = 0;
+ hi = n;
+ while (lo < hi) {
+ mid = (lo + hi) >> 1;
+ cmp = (* cmpFunc)(item, list[mid-1]);
+ if (cmp) {
+ if (cmp < 0) hi = mid;
+ else lo = mid + 1;
+ }
+ else return mid; /* Exact match */
+ }
+
+ if (lo != mid) {
+ cmp = (* cmpFunc)(item, list[lo-1]);
+ if (cmp == 0) return lo;
+ }
+ if (cmp > 0) lo++; /* Result of step = 0 test */
+ return -lo;
+}
+
+
+
+static int findTreeInList (bestlist *bt, pllInstance *tr, int numBranches)
+{
+ topol *tpl;
+
+ tpl = bt->byScore[0];
+ saveTree(tr, tpl, numBranches);
+ return findInList((void *) tpl, (void **) (& (bt->byTopol[1])),
+ bt->nvalid, cmpTopol);
+}
+
+
+/** @brief Save the current tree in the \a bestlist structure
+
+ Save the current tree topology in \a bestlist structure \a bt.
+
+ @param tr
+ The PLL instance
+
+ @param bt
+ The \a bestlist structure
+
+ @param numBranches
+ Number of branches u
+
+ @return
+ it is never used
+
+ @todo
+ What to do with the return value? Should we simplify the code?
+*/
+int saveBestTree (bestlist *bt, pllInstance *tr, int numBranches)
+{
+ topol *tpl, *reuse;
+ int tplNum, scrNum, reuseScrNum, reuseTplNum, i, oldValid, newValid;
+
+ tplNum = findTreeInList(bt, tr, numBranches);
+ tpl = bt->byScore[0];
+ oldValid = newValid = bt->nvalid;
+
+ if (tplNum > 0) { /* Topology is in list */
+ reuse = bt->byTopol[tplNum]; /* Matching topol */
+ reuseScrNum = reuse->scrNum;
+ reuseTplNum = reuse->tplNum;
+ }
+ /* Good enough to keep? */
+ else if (tr->likelihood < bt->worst) return 0;
+
+ else { /* Topology is not in list */
+ tplNum = -tplNum; /* Add to list (not replace) */
+ if (newValid < bt->nkeep) bt->nvalid = ++newValid;
+ reuseScrNum = newValid; /* Take worst tree */
+ reuse = bt->byScore[reuseScrNum];
+ reuseTplNum = (newValid > oldValid) ? newValid : reuse->tplNum;
+ if (tr->likelihood > bt->start->likelihood) bt->improved = PLL_TRUE;
+ }
+
+ scrNum = findInList((void *) tpl, (void **) (& (bt->byScore[1])),
+ oldValid, cmpTplScore);
+ scrNum = PLL_ABS(scrNum);
+
+ if (scrNum < reuseScrNum)
+ for (i = reuseScrNum; i > scrNum; i--)
+ (bt->byScore[i] = bt->byScore[i-1])->scrNum = i;
+
+ else if (scrNum > reuseScrNum) {
+ scrNum--;
+ for (i = reuseScrNum; i < scrNum; i++)
+ (bt->byScore[i] = bt->byScore[i+1])->scrNum = i;
+ }
+
+ if (tplNum < reuseTplNum)
+ for (i = reuseTplNum; i > tplNum; i--)
+ (bt->byTopol[i] = bt->byTopol[i-1])->tplNum = i;
+
+ else if (tplNum > reuseTplNum) {
+ tplNum--;
+ for (i = reuseTplNum; i < tplNum; i++)
+ (bt->byTopol[i] = bt->byTopol[i+1])->tplNum = i;
+ }
+
+
+
+ tpl->scrNum = scrNum;
+ tpl->tplNum = tplNum;
+ bt->byTopol[tplNum] = bt->byScore[scrNum] = tpl;
+ bt->byScore[0] = reuse;
+
+ if (scrNum == 1) bt->best = tr->likelihood;
+ if (newValid == bt->nkeep) bt->worst = bt->byScore[newValid]->likelihood;
+
+ return scrNum;
+}
+
+
+/** @brief Restore the best tree from \a bestlist structure
+
+ Restore the \a rank-th best tree from the \a bestlist structure \a bt.
+
+ @param bt
+ The \a bestlist structure containing the stored best trees
+
+ @param rank
+ The rank (by score) of the tree we want to retrieve
+
+ @param tr
+ PLL instance
+
+ @param pr
+ List of partitions
+
+ @return
+ Index (rank) of restored topology in \a bestlist
+*/
+int recallBestTree (bestlist *bt, int rank, pllInstance *tr, partitionList *pr)
+{
+ if (rank < 1) rank = 1;
+ if (rank > bt->nvalid) rank = bt->nvalid;
+ if (rank > 0) if (! restoreTree(bt->byScore[rank], tr, pr)) return PLL_FALSE;
+ return rank;
+}
+
+
+
+
diff --git a/src/trash.c b/src/trash.c
new file mode 100644
index 0000000..5247c25
--- /dev/null
+++ b/src/trash.c
@@ -0,0 +1,129 @@
+/**
+ * PLL (version 1.0.0) a software library for phylogenetic inference
+ * Copyright (C) 2013 Tomas Flouri and Alexandros Stamatakis
+ *
+ * Derived from
+ * RAxML-HPC, a program for sequential and parallel estimation of phylogenetic
+ * trees by Alexandros Stamatakis
+ *
+ * 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 3 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, see <http://www.gnu.org/licenses/>.
+ *
+ * For any other enquiries send an Email to Tomas Flouri
+ * Tomas.Flouri at h-its.org
+ *
+ * When publishing work that uses PLL please cite PLL
+ *
+ * @file trash.c
+ */
+#include "mem_alloc.h"
+
+#ifndef WIN32
+#include <sys/times.h>
+#include <sys/types.h>
+#include <sys/time.h>
+#include <unistd.h>
+#endif
+
+#include <limits.h>
+#include <math.h>
+#include <time.h>
+#include <stdlib.h>
+#include <stdio.h>
+#include <ctype.h>
+#include <string.h>
+#include <assert.h>
+
+#include "pll.h"
+#include "pllInternal.h"
+
+
+/** @brief Reorder nodes in PLL tree
+
+ Re-order the internal nodes of the tree of PLL instance \a tr in a preorder
+ traversal such that they start from \a p
+
+ @param tr
+ PLL instance
+
+ @param np
+ Array of node pointers
+
+ @param p
+ Node from where the preorder traversal should start
+
+ @param count
+
+ @todo
+ why not insert a break in the for loop when the node is found?
+
+*/
+static void reorderNodes(pllInstance *tr, nodeptr *np, nodeptr p, int *count)
+{
+ int i, found = 0;
+
+ if(isTip(p->number, tr->mxtips))
+ return;
+ else
+ {
+ for(i = tr->mxtips + 1; (i <= (tr->mxtips + tr->mxtips - 1)) && (found == 0); i++)
+ {
+ if (p == np[i] || p == np[i]->next || p == np[i]->next->next)
+ {
+ if(p == np[i])
+ tr->nodep[*count + tr->mxtips + 1] = np[i];
+ else
+ {
+ if(p == np[i]->next)
+ tr->nodep[*count + tr->mxtips + 1] = np[i]->next;
+ else
+ tr->nodep[*count + tr->mxtips + 1] = np[i]->next->next;
+ }
+
+ found = 1;
+ *count = *count + 1;
+ }
+ }
+
+ assert(found != 0);
+
+ reorderNodes(tr, np, p->next->back, count);
+ reorderNodes(tr, np, p->next->next->back, count);
+ }
+}
+
+void nodeRectifier(pllInstance *tr)
+{
+ nodeptr *np = (nodeptr *)rax_malloc(2 * tr->mxtips * sizeof(nodeptr));
+ int i;
+ int count = 0;
+
+ tr->start = tr->nodep[1];
+ tr->rooted = PLL_FALSE;
+
+ /* TODO why is tr->rooted set to PLL_FALSE here ?*/
+
+ for(i = tr->mxtips + 1; i <= (tr->mxtips + tr->mxtips - 1); i++)
+ np[i] = tr->nodep[i];
+
+ reorderNodes(tr, np, tr->start->back, &count);
+
+
+ rax_free(np);
+}
+
+nodeptr findAnyTip(nodeptr p, int numsp)
+{
+ return isTip(p->number, numsp) ? p : findAnyTip(p->next->back, numsp);
+}
+
diff --git a/src/treeIO.c b/src/treeIO.c
new file mode 100644
index 0000000..c521b17
--- /dev/null
+++ b/src/treeIO.c
@@ -0,0 +1,241 @@
+/**
+ * PLL (version 1.0.0) a software library for phylogenetic inference
+ * Copyright (C) 2013 Tomas Flouri and Alexandros Stamatakis
+ *
+ * Derived from
+ * RAxML-HPC, a program for sequential and parallel estimation of phylogenetic
+ * trees by Alexandros Stamatakis
+ *
+ * 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 3 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, see <http://www.gnu.org/licenses/>.
+ *
+ * For any other enquiries send an Email to Tomas Flouri
+ * Tomas.Flouri at h-its.org
+ *
+ * When publishing work that uses PLL please cite PLL
+ *
+ * @file treeIO.c
+ */
+#include "mem_alloc.h"
+
+#include "mem_alloc.h"
+
+#ifndef WIN32
+#include <sys/times.h>
+#include <sys/types.h>
+#include <sys/time.h>
+#include <unistd.h>
+#endif
+
+#include <math.h>
+#include <time.h>
+#include <stdlib.h>
+#include <stdio.h>
+#include <ctype.h>
+#include <string.h>
+#include <assert.h>
+
+#include "pll.h"
+#include "pllInternal.h"
+
+extern char *likelihood_key;
+extern char *ntaxa_key;
+extern char *smoothed_key;
+extern int partCount;
+
+int countTips(nodeptr p, int numsp)
+{
+ if(isTip(p->number, numsp))
+ return 1;
+ {
+ nodeptr q;
+ int tips = 0;
+
+ q = p->next;
+ while(q != p)
+ {
+ tips += countTips(q->back, numsp);
+ q = q->next;
+ }
+
+ return tips;
+ }
+}
+
+
+static double getBranchLength(pllInstance *tr, partitionList *pr, int perGene, nodeptr p)
+{
+ double
+ z = 0.0,
+ x = 0.0;
+ int numBranches = pr->perGeneBranchLengths?pr->numberOfPartitions:1;
+
+ assert(perGene != PLL_NO_BRANCHES);
+
+ if(numBranches == 1)
+ {
+ z = p->z[0];
+ if (z < PLL_ZMIN)
+ z = PLL_ZMIN;
+
+ x = -log(z);
+ }
+ else
+ {
+ if(perGene == PLL_SUMMARIZE_LH)
+ {
+ int
+ i;
+
+ double
+ avgX = 0.0;
+
+ for(i = 0; i < numBranches; i++)
+ {
+ assert(pr->partitionData[i]->partitionContribution != -1.0);
+ z = p->z[i];
+ if(z < PLL_ZMIN)
+ z = PLL_ZMIN;
+ x = -log(z);
+ avgX += x * pr->partitionData[i]->partitionContribution;
+ }
+
+ x = avgX;
+ }
+ else
+ {
+ assert(perGene >= 0 && perGene < numBranches);
+
+ z = p->z[perGene];
+
+ if(z < PLL_ZMIN)
+ z = PLL_ZMIN;
+
+ x = -log(z);
+ }
+ }
+
+ return x;
+}
+
+static char *pllTreeToNewickREC(char *treestr, pllInstance *tr, partitionList *pr, nodeptr p, boolean printBranchLengths,
+ boolean printNames, boolean printInternalNodeLabels, boolean printLikelihood, boolean rellTree, int perGene,
+ boolean branchLabelSupport, boolean printSHSupport)
+{
+ char *nameptr;
+
+ if(isTip(p->number, tr->mxtips))
+ {
+ if(printNames)
+ {
+ nameptr = tr->nameList[p->number];
+ sprintf(treestr, "%s", nameptr);
+ }
+ else
+ sprintf(treestr, "%d", p->number);
+
+ while (*treestr) treestr++;
+ }
+ else
+ {
+ *treestr++ = '(';
+ treestr = pllTreeToNewickREC(treestr, tr, pr, p->next->back, printBranchLengths, printNames, printInternalNodeLabels,
+ printLikelihood, rellTree, perGene, branchLabelSupport, printSHSupport);
+ *treestr++ = ',';
+ treestr = pllTreeToNewickREC(treestr, tr, pr, p->next->next->back, printBranchLengths, printNames, printInternalNodeLabels,
+ printLikelihood, rellTree, perGene, branchLabelSupport, printSHSupport);
+ if(p == tr->start->back)
+ {
+ *treestr++ = ',';
+ treestr = pllTreeToNewickREC(treestr, tr, pr, p->back, printBranchLengths, printNames, printInternalNodeLabels,
+ printLikelihood, rellTree, perGene, branchLabelSupport, printSHSupport);
+ }
+ *treestr++ = ')';
+
+ if (printInternalNodeLabels) {
+ sprintf(treestr++, "%d", p->number);
+ while (*treestr) treestr++;
+ }
+
+ }
+
+ if(p == tr->start->back)
+ {
+ if(printBranchLengths && !rellTree)
+ sprintf(treestr, ":0.0;\n");
+ else
+ sprintf(treestr, ";\n");
+ }
+ else
+ {
+ if(rellTree || branchLabelSupport || printSHSupport)
+ {
+ if(( !isTip(p->number, tr->mxtips)) &&
+ ( !isTip(p->back->number, tr->mxtips)))
+ {
+ assert(p->bInf != (branchInfo *)NULL);
+
+ if(rellTree)
+ sprintf(treestr, "%d:%8.20f", p->bInf->support, p->z[0]);
+ if(branchLabelSupport)
+ sprintf(treestr, ":%8.20f[%d]", p->z[0], p->bInf->support);
+ if(printSHSupport)
+ sprintf(treestr, ":%8.20f[%d]", getBranchLength(tr, pr, perGene, p), p->bInf->support);
+
+ }
+ else
+ {
+ if(rellTree || branchLabelSupport)
+ sprintf(treestr, ":%8.20f", p->z[0]);
+ if(printSHSupport)
+ sprintf(treestr, ":%8.20f", getBranchLength(tr, pr, perGene, p));
+ }
+ }
+ else
+ {
+ if(printBranchLengths)
+ sprintf(treestr, ":%8.20f", getBranchLength(tr, pr, perGene, p));
+ else
+ sprintf(treestr, "%s", "\0");
+ }
+ }
+
+ while (*treestr) treestr++;
+ return treestr;
+}
+
+
+char *pllTreeToNewick(char *treestr, pllInstance *tr, partitionList *pr, nodeptr p, boolean printBranchLengths, boolean printNames,
+ boolean printInternalNodeLabels, boolean printLikelihood, boolean rellTree, int perGene,
+ boolean branchLabelSupport, boolean printSHSupport)
+{
+
+ if(rellTree)
+ assert(!branchLabelSupport && !printSHSupport);
+
+ if(branchLabelSupport)
+ assert(!rellTree && !printSHSupport);
+
+ if(printSHSupport)
+ assert(!branchLabelSupport && !rellTree);
+
+
+ pllTreeToNewickREC(treestr, tr, pr, p, printBranchLengths, printNames, printInternalNodeLabels,
+ printLikelihood, rellTree, perGene, branchLabelSupport, printSHSupport);
+
+
+ while (*treestr) treestr++;
+
+ return treestr;
+}
+
diff --git a/src/utils.c b/src/utils.c
new file mode 100644
index 0000000..42bed19
--- /dev/null
+++ b/src/utils.c
@@ -0,0 +1,4087 @@
+/**
+ * PLL (version 1.0.0) a software library for phylogenetic inference
+ * Copyright (C) 2013 Tomas Flouri and Alexandros Stamatakis
+ *
+ * Derived from
+ * RAxML-HPC, a program for sequential and parallel estimation of phylogenetic
+ * trees by Alexandros Stamatakis
+ *
+ * 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 3 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, see <http://www.gnu.org/licenses/>.
+ *
+ * For any other enquiries send an Email to Tomas Flouri
+ * Tomas.Flouri at h-its.org
+ *
+ * When publishing work that uses PLL please cite PLL
+ *
+ * @file utils.c
+ *
+ * @brief Miscellaneous general utility and helper functions
+ */
+#ifdef WIN32
+#include <direct.h>
+#endif
+
+#ifndef WIN32
+#include <sys/times.h>
+#include <sys/types.h>
+#include <sys/time.h>
+#include <unistd.h>
+#endif
+
+#include <math.h>
+#include <time.h>
+#include <stdlib.h>
+#include <stdio.h>
+#include <ctype.h>
+#include <string.h>
+#include <stdarg.h>
+#include <limits.h>
+#include <assert.h>
+#include <errno.h>
+#include "cycle.h"
+
+
+#if ! (defined(__ppc) || defined(__powerpc__) || defined(PPC))
+#if (defined(__AVX) || defined(__SSE3))
+#include <xmmintrin.h>
+#endif
+/*
+ special bug fix, enforces denormalized numbers to be flushed to zero,
+ without this program is a tiny bit faster though.
+#include <emmintrin.h>
+#define MM_DAZ_MASK 0x0040
+#define MM_DAZ_ON 0x0040
+#define MM_DAZ_OFF 0x0000
+*/
+#endif
+
+#include "pll.h"
+#include "pllInternal.h"
+
+#define GLOBAL_VARIABLES_DEFINITION
+
+#include "globalVariables.h"
+
+/* mappings of BIN/DNA/AA alphabet to numbers */
+
+static const char PLL_MAP_BIN[256] =
+ {
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3, -1, -1,
+ 1, 2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1
+ };
+
+static const char PLL_MAP_NT[256] =
+ {
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 15, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 15,
+ -1, 1, 14, 2, 13, -1, -1, 4, 11, -1, -1, 12, -1, 3, 15, 15,
+ -1, -1, 5, 6, 8, 8, 7, 9, 15, 10, -1, -1, -1, -1, -1, -1,
+ -1, 1, 14, 2, 13, -1, -1, 4, 11, -1, -1, 12, -1, 3, 15, 15,
+ -1, -1, 5, 6, 8, 8, 7, 9, 15, 10, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1
+ };
+
+static const char PLL_MAP_AA[256] =
+ {
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, -1, -1, 22, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22,
+ -1, 0, 20, 4, 3, 6, 13, 7, 8, 9, -1, 11, 10, 12, 2, -1,
+ 14, 5, 1, 15, 16, -1, 19, 17, 22, 18, 21, -1, -1, -1, -1, -1,
+ -1, 0, 20, 4, 3, 6, 13, 7, 8, 9, -1, 11, 10, 12, 2, -1,
+ 14, 5, 1, 15, 16, -1, 19, 17, 22, 18, 21, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1
+ };
+
+
+
+
+
+static void pllTreeInitDefaults (pllInstance * tr, int tips);
+static void getInnerBranchEndPointsRecursive (nodeptr p, int tips, int * i, node **nodes);
+#if (!defined(_FINE_GRAIN_MPI) && !defined(_USE_PTHREADS))
+static void initializePartitionsSequential(pllInstance *tr, partitionList *pr);
+#endif
+
+/** @defgroup instanceLinkingGroup Linking topology, partition scheme and alignment to the PLL instance
+
+ This set of functions handles the linking of topology, partition scheme and multiple sequence alignment
+ with the PLL instance
+*/
+/***************** UTILITY FUNCTIONS **************************/
+
+#if (!defined(_SVID_SOURCE) && !defined(_BSD_SOURCE) && !defined(_POSIX_C_SOURCE) && !defined(_XOPEN_SOURCE) && !defined(_POSIX_SOURCE))
+static char *
+my_strtok_r (char * s, const char * delim, char **save_ptr)
+{
+ char *token;
+
+ /* Scan leading delimiters */
+ if (s == NULL)
+ s = *save_ptr;
+
+ s += strspn (s, delim);
+ if (*s == '\0')
+ {
+ *save_ptr = s;
+ return NULL;
+ }
+
+ /* Find the end of the token. */
+ token = s;
+ s = strpbrk (token, delim);
+ if (!s)
+ *save_ptr = strchr (token, '\0');
+ else
+ {
+ /* Terminate the token and make *SAVE_PTR point past it */
+ *s = '\0';
+ *save_ptr = s + 1;
+ }
+
+ return token;
+}
+#endif
+
+#if (defined(_SVID_SOURCE) || defined(_BSD_SOURCE) || defined(_POSIX_C_SOURCE) || defined(_XOPEN_SOURCE) || defined(_POSIX_SOURCE))
+#define STRTOK_R strtok_r
+#else
+#define STRTOK_R my_strtok_r
+#endif
+
+
+
+
+void storeExecuteMaskInTraversalDescriptor(pllInstance *tr, partitionList *pr)
+{
+ int model;
+
+ for(model = 0; model < pr->numberOfPartitions; model++)
+ tr->td[0].executeModel[model] = pr->partitionData[model]->executeModel;
+
+}
+
+void storeValuesInTraversalDescriptor(pllInstance *tr, partitionList *pr, double *value)
+{
+ int model;
+
+ for(model = 0; model < pr->numberOfPartitions; model++)
+ tr->td[0].parameterValues[model] = value[model];
+}
+
+const unsigned int *getBitVector(int dataType)
+{
+ assert(PLL_MIN_MODEL < dataType && dataType < PLL_MAX_MODEL);
+
+ return pLengths[dataType].bitVector;
+}
+
+/*
+int getStates(int dataType)
+{
+ assert(PLL_MIN_MODEL < dataType && dataType < PLL_MAX_MODEL);
+
+ return pLengths[dataType].states;
+}
+*/
+
+int getUndetermined(int dataType)
+{
+ assert(PLL_MIN_MODEL < dataType && dataType < PLL_MAX_MODEL);
+
+ return pLengths[dataType].undetermined;
+}
+
+const partitionLengths *getPartitionLengths(pInfo *p)
+{
+ int
+ dataType = p->dataType,
+ states = p->states,
+ tipLength = p->maxTipStates;
+
+ assert(states != -1 && tipLength != -1);
+
+ assert(PLL_MIN_MODEL < dataType && dataType < PLL_MAX_MODEL);
+
+ /*pLength.leftLength = pLength.rightLength = states * states;
+ pLength.eignLength = states;
+ pLength.evLength = states * states;
+ pLength.eiLength = states * states;
+ pLength.substRatesLength = (states * states - states) / 2;
+ pLength.frequenciesLength = states;
+ pLength.tipVectorLength = tipLength * states;
+ pLength.symmetryVectorLength = (states * states - states) / 2;
+ pLength.frequencyGroupingLength = states;
+ pLength.nonGTR = PLL_FALSE;*/
+ return (&pLengths[dataType]);
+}
+
+size_t discreteRateCategories(int rateHetModel)
+{
+ size_t
+ result;
+
+ switch(rateHetModel)
+ {
+ case PLL_CAT:
+ result = 1;
+ break;
+ case PLL_GAMMA:
+ result = 4;
+ break;
+ default:
+ assert(0);
+ }
+
+ return result;
+}
+
+
+
+double gettime(void)
+{
+#ifdef WIN32
+ time_t tp;
+ struct tm localtm;
+ tp = time(NULL);
+ localtm = *localtime(&tp);
+ return 60.0*localtm.tm_min + localtm.tm_sec;
+#else
+ struct timeval ttime;
+ gettimeofday(&ttime , NULL);
+ return ttime.tv_sec + ttime.tv_usec * 0.000001;
+#endif
+}
+
+int gettimeSrand(void)
+{
+#ifdef WIN32
+ time_t tp;
+ struct tm localtm;
+ tp = time(NULL);
+ localtm = *localtime(&tp);
+ return 24*60*60*localtm.tm_yday + 60*60*localtm.tm_hour + 60*localtm.tm_min + localtm.tm_sec;
+#else
+ struct timeval ttime;
+ gettimeofday(&ttime , NULL);
+ return ttime.tv_sec + ttime.tv_usec;
+#endif
+}
+
+double randum (long *seed)
+{
+ long sum, mult0, mult1, seed0, seed1, seed2, newseed0, newseed1, newseed2;
+ double res;
+
+ mult0 = 1549;
+ seed0 = *seed & 4095;
+ sum = mult0 * seed0;
+ newseed0 = sum & 4095;
+ sum >>= 12;
+ seed1 = (*seed >> 12) & 4095;
+ mult1 = 406;
+ sum += mult0 * seed1 + mult1 * seed0;
+ newseed1 = sum & 4095;
+ sum >>= 12;
+ seed2 = (*seed >> 24) & 255;
+ sum += mult0 * seed2 + mult1 * seed1;
+ newseed2 = sum & 255;
+
+ *seed = newseed2 << 24 | newseed1 << 12 | newseed0;
+ res = 0.00390625 * (newseed2 + 0.000244140625 * (newseed1 + 0.000244140625 * newseed0));
+
+ return res;
+}
+
+
+/********************* END UTILITY FUNCTIONS ********************/
+
+
+/******************************some functions for the likelihood computation ****************************/
+
+
+/** @brief Check whether a node is a tip.
+
+ Checks whether the node with number \a number is a tip.
+
+ @param number
+ Node number to be checked
+
+ @param maxTips
+ Number of tips in the tree
+
+ @return
+ \b PLL_TRUE if tip, \b PLL_FALSE otherwise
+ */
+boolean isTip(int number, int maxTips)
+{
+ assert(number > 0);
+
+ if(number <= maxTips)
+ return PLL_TRUE;
+ else
+ return PLL_FALSE;
+}
+
+/** @brief Set the orientation of a node
+
+ Sets the orientation of node \a p. That means, it will reset the orientation
+ \a p->next->x and \a p->next->next->x to 0 and of \a p->x to 1, meaning that
+ the conditional likelihood vector for that node is oriented on \a p, i.e.
+ the conditional likelihood vector represents the subtree rooted at \a p and
+ not any other of the two nodes.
+
+ @param p
+ Node which we want to orient
+*/
+void getxnode (nodeptr p)
+{
+ nodeptr s;
+
+ if ((s = p->next)->x || (s = s->next)->x)
+ {
+ p->x = s->x;
+ s->x = 0;
+ }
+
+ assert(p->x);
+}
+
+
+/** @brief Connect two nodes and assign branch lengths
+ *
+ * Connect the two nodes \a p and \a q in each partition \e i with a branch of
+ * length \a z[i]
+ *
+ * @param p
+ * Node \a p
+ *
+ * @param q
+ * Node \a q
+ *
+ * @param numBranches
+ * Number of partitions
+ */
+void hookup (nodeptr p, nodeptr q, double *z, int numBranches)
+{
+ int i;
+
+ p->back = q;
+ q->back = p;
+
+ for(i = 0; i < numBranches; i++)
+ p->z[i] = q->z[i] = z[i];
+}
+
+/* connects node p with q and assigns the branch lengths z for the whole vector*/
+void hookupFull (nodeptr p, nodeptr q, double *z)
+{
+ //int i;
+
+ p->back = q;
+ q->back = p;
+
+ memcpy(p->z, z, PLL_NUM_BRANCHES*sizeof(double) );
+ memcpy(q->z, z, PLL_NUM_BRANCHES*sizeof(double) );
+ //for(i = 0; i < numBranches; i++)
+ // p->z[i] = q->z[i] = z[i];
+
+}
+
+/* connect node p with q and assign the default branch lengths */
+void hookupDefault (nodeptr p, nodeptr q)
+{
+ int i;
+
+ p->back = q;
+ q->back = p;
+
+ for(i = 0; i < PLL_NUM_BRANCHES; i++)
+ p->z[i] = q->z[i] = PLL_DEFAULTZ;
+
+}
+
+
+/***********************reading and initializing input ******************/
+
+
+
+boolean whitechar (int ch)
+{
+ return (ch == ' ' || ch == '\n' || ch == '\t' || ch == '\r');
+}
+/*
+static unsigned int KISS32(void)
+{
+ static unsigned int
+ x = 123456789,
+ y = 362436069,
+ z = 21288629,
+ w = 14921776,
+ c = 0;
+
+ unsigned int t;
+
+ x += 545925293;
+ y ^= (y<<13);
+ y ^= (y>>17);
+ y ^= (y<<5);
+ t = z + w + c;
+ z = w;
+ c = (t>>31);
+ w = t & 2147483647;
+
+ return (x+y+w);
+}
+*/
+
+/** @brief Get a random subtree
+
+ Returns the root node of a randomly picked subtree of the tree in PLL
+ instance \a tr. The picked subtree is guaranteed to have height over
+ 1, that is, the direct descendents of the returned (root) node are not tips.
+
+ @param tr
+ PLL instance
+
+ @return
+ The root node of the randomly picked subtree
+*/
+nodeptr pllGetRandomSubtree(pllInstance *tr)
+{
+ nodeptr p;
+ do
+ {
+ int exitDirection = rand() % 3;
+ p = tr->nodep[(rand() % (tr->mxtips - 2)) + 1 + tr->mxtips];
+ switch(exitDirection)
+ {
+ case 0:
+ break;
+ case 1:
+ p = p->next;
+ break;
+ case 2:
+ p = p->next->next;
+ break;
+ default:
+ assert(0);
+ }
+ }
+ while(isTip(p->next->back->number, tr->mxtips) && isTip(p->next->next->back->number, tr->mxtips));
+ assert(!isTip(p->number, tr->mxtips));
+ return p;
+}
+/* small example program that executes ancestral state computations
+ on the entire subtree rooted at p.
+
+ Note that this is a post-order traversal.
+*/
+
+
+void computeAllAncestralVectors(nodeptr p, pllInstance *tr, partitionList *pr)
+{
+ /* if this is not a tip, for which evidently it does not make sense
+ to compute the ancestral sequence because we have the real one ....
+ */
+
+ if(!isTip(p->number, tr->mxtips))
+ {
+ /* descend recursively to compute the ancestral states in the left and right subtrees */
+
+ computeAllAncestralVectors(p->next->back, tr, pr);
+ computeAllAncestralVectors(p->next->next->back, tr, pr);
+
+ /* then compute the ancestral state at node p */
+
+ pllUpdatePartialsAncestral(tr, pr, p, PLL_FALSE);
+
+ /* and print it to terminal, the two booleans that are set to PLL_TRUE here
+ tell the function to print the marginal probabilities as well as
+ a discrete inner sequence, that is, ACGT etc., always selecting and printing
+ the state that has the highest probability */
+
+ printAncestralState(p, PLL_TRUE, PLL_TRUE, tr, pr);
+ }
+}
+
+
+
+void initializePartitionData(pllInstance *localTree, partitionList * localPartitions)
+{
+ /* in ancestralVectorWidth we store the total length in bytes (!) of
+ one conditional likelihood array !
+ we need to know this length such that in the pthreads version the master thread can actually
+ gather the scattered ancestral probabilities from the threads such that they can be printed to screen!
+ */
+
+ size_t
+ maxCategories = (size_t)localTree->maxCategories;
+
+ size_t
+ ancestralVectorWidth = 0,
+ model;
+
+ int
+ tid = localTree->threadID,
+ innerNodes = localTree->mxtips - 2;
+
+ if(tid > 0)
+ localTree->rateCategory = (int *) rax_calloc((size_t)localTree->originalCrunchedLength, sizeof(int));
+
+ for(model = 0; model < (size_t)localPartitions->numberOfPartitions; model++)
+ {
+ size_t
+ width = localPartitions->partitionData[model]->width;
+
+ const partitionLengths
+ *pl = getPartitionLengths(localPartitions->partitionData[model]);
+
+ /*
+ globalScaler needs to be 2 * localTree->mxtips such that scalers of inner AND tip nodes can be added without a case switch
+ to this end, it must also be initialized with zeros -> calloc
+ */
+
+ localPartitions->partitionData[model]->globalScaler = (unsigned int *)rax_calloc(2 *(size_t)localTree->mxtips, sizeof(unsigned int));
+
+ rax_posix_memalign ((void **)&(localPartitions->partitionData[model]->left), PLL_BYTE_ALIGNMENT, (size_t)pl->leftLength * (maxCategories + 1) * sizeof(double));
+ rax_posix_memalign ((void **)&(localPartitions->partitionData[model]->right), PLL_BYTE_ALIGNMENT, (size_t)pl->rightLength * (maxCategories + 1) * sizeof(double));
+ localPartitions->partitionData[model]->EIGN = (double*)rax_malloc((size_t)pl->eignLength * sizeof(double));
+ rax_posix_memalign ((void **)&(localPartitions->partitionData[model]->EV), PLL_BYTE_ALIGNMENT, (size_t)pl->evLength * sizeof(double));
+ localPartitions->partitionData[model]->EI = (double*)rax_malloc((size_t)pl->eiLength * sizeof(double));
+ localPartitions->partitionData[model]->substRates = (double *)rax_malloc((size_t)pl->substRatesLength * sizeof(double));
+ localPartitions->partitionData[model]->frequencies = (double*)rax_malloc((size_t)pl->frequenciesLength * sizeof(double));
+ localPartitions->partitionData[model]->freqExponents = (double*)rax_malloc(pl->frequenciesLength * sizeof(double));
+ localPartitions->partitionData[model]->empiricalFrequencies = (double*)rax_malloc((size_t)pl->frequenciesLength * sizeof(double));
+ rax_posix_memalign ((void **)&(localPartitions->partitionData[model]->tipVector), PLL_BYTE_ALIGNMENT, (size_t)pl->tipVectorLength * sizeof(double));
+ //localPartitions->partitionData[model]->partitionName = NULL; // very imporatant since it is deallocated in pllPartitionDestroy
+
+ if(localPartitions->partitionData[model]->dataType == PLL_AA_DATA
+ && (localPartitions->partitionData[model]->protModels == PLL_LG4M || localPartitions->partitionData[model]->protModels == PLL_LG4X))
+ {
+ int
+ k;
+
+ for(k = 0; k < 4; k++)
+ {
+ localPartitions->partitionData[model]->EIGN_LG4[k] = (double*)rax_malloc(pl->eignLength * sizeof(double));
+ localPartitions->partitionData[model]->rawEIGN_LG4[k] = (double*)rax_malloc(pl->eignLength * sizeof(double));
+ rax_posix_memalign ((void **)&(localPartitions->partitionData[model]->EV_LG4[k]), PLL_BYTE_ALIGNMENT, pl->evLength * sizeof(double));
+ localPartitions->partitionData[model]->EI_LG4[k] = (double*)rax_malloc(pl->eiLength * sizeof(double));
+ localPartitions->partitionData[model]->substRates_LG4[k] = (double *)rax_malloc(pl->substRatesLength * sizeof(double));
+ localPartitions->partitionData[model]->frequencies_LG4[k] = (double*)rax_malloc(pl->frequenciesLength * sizeof(double));
+ rax_posix_memalign ((void **)&(localPartitions->partitionData[model]->tipVector_LG4[k]), PLL_BYTE_ALIGNMENT, pl->tipVectorLength * sizeof(double));
+ }
+ }
+
+ localPartitions->partitionData[model]->symmetryVector = (int *)rax_malloc((size_t)pl->symmetryVectorLength * sizeof(int));
+ localPartitions->partitionData[model]->frequencyGrouping = (int *)rax_malloc((size_t)pl->frequencyGroupingLength * sizeof(int));
+
+ localPartitions->partitionData[model]->perSiteRates = (double *)rax_malloc(sizeof(double) * maxCategories);
+
+ localPartitions->partitionData[model]->nonGTR = PLL_FALSE;
+
+ localPartitions->partitionData[model]->gammaRates = (double*)rax_malloc(sizeof(double) * 4);
+ localPartitions->partitionData[model]->yVector = (unsigned char **)rax_malloc(sizeof(unsigned char*) * ((size_t)localTree->mxtips + 1));
+
+
+ localPartitions->partitionData[model]->xVector = (double **)rax_calloc(sizeof(double*), (size_t)localTree->mxtips);
+
+ if (localPartitions->partitionData[model]->ascBias)
+ {
+ localPartitions->partitionData[model]->ascOffset = 4 * localPartitions->partitionData[model]->states * localPartitions->partitionData[model]->states;
+ localPartitions->partitionData[model]->ascVector = (double *)rax_malloc(innerNodes *
+ localPartitions->partitionData[model]->ascOffset *
+ sizeof(double));
+ localPartitions->partitionData[model]->ascExpVector = (int *)rax_calloc(innerNodes *
+ localPartitions->partitionData[model]->states,
+ sizeof(int));
+ localPartitions->partitionData[model]->ascSumBuffer = (double *)rax_malloc(localPartitions->partitionData[model]->ascOffset * sizeof(double));
+ }
+
+
+ /*
+ Initializing the xVector array like this is absolutely required !!!!
+ I don't know which programming genious removed this, but it must absolutely stay in here!!!!
+ */
+
+ {
+ int k;
+
+ for(k = 0; k < localTree->mxtips; k++)
+ localPartitions->partitionData[model]->xVector[k] = (double*)NULL;
+ }
+
+
+ localPartitions->partitionData[model]->xSpaceVector = (size_t *)rax_calloc((size_t)localTree->mxtips, sizeof(size_t));
+
+ const size_t span = (size_t)(localPartitions->partitionData[model]->states) *
+ discreteRateCategories(localTree->rateHetModel);
+
+#ifdef __MIC_NATIVE
+
+ // Alexey: sum buffer buffer padding for Xeon PHI
+ const int aligned_width = width % PLL_VECTOR_WIDTH == 0 ? width : width + (PLL_VECTOR_WIDTH - (width % PLL_VECTOR_WIDTH));
+
+ rax_posix_memalign ((void **)&(localPartitions->partitionData[model]->sumBuffer), PLL_BYTE_ALIGNMENT, aligned_width *
+ span *
+ sizeof(double));
+
+ // Alexey: fill padding entries with 1. (will be corrected with site weights, s. below)
+ {
+ int k;
+ for (k = width*span; k < aligned_width*span; ++k)
+ localPartitions->partitionData[model]->sumBuffer[k] = 1.;
+ }
+
+#else
+
+ rax_posix_memalign ((void **)&(localPartitions->partitionData[model]->sumBuffer), PLL_BYTE_ALIGNMENT, width *
+ span *
+ sizeof(double));
+#endif
+
+ /* Initialize buffers to store per-site log likelihoods */
+
+ rax_posix_memalign ((void **)&(localPartitions->partitionData[model]->perSiteLikelihoods), PLL_BYTE_ALIGNMENT, width * sizeof(double));
+
+ /* initialize data structures for per-site likelihood scaling */
+
+ if(localTree->fastScaling)
+ {
+ localPartitions->partitionData[model]->expVector = (int **)NULL;
+ localPartitions->partitionData[model]->expSpaceVector = (size_t *)NULL;
+ }
+ else
+ {
+ localPartitions->partitionData[model]->expVector = (int **)rax_malloc(sizeof(int*) * innerNodes);
+
+ /*
+ Initializing the expVector array like this is absolutely required !!!!
+ Not doing this can (and did) cause segmentation faults !!!!
+ */
+
+ {
+ int k;
+
+ for(k = 0; k < innerNodes; k++)
+ localPartitions->partitionData[model]->expVector[k] = (int*)NULL;
+ }
+
+ localPartitions->partitionData[model]->expSpaceVector = (size_t *)rax_calloc(innerNodes, sizeof(size_t));
+ }
+
+ /* data structure to store the marginal ancestral probabilities in the sequential version or for each thread */
+
+ rax_posix_memalign ((void **)&(localPartitions->partitionData[model]->ancestralBuffer), PLL_BYTE_ALIGNMENT, width *
+ (size_t)(localPartitions->partitionData[model]->states) *
+ sizeof(double));
+
+ /* count and accumulate how many bytes we will need for storing a full ancestral vector. for this we addf over the per-partition space requirements in bytes */
+ /* ancestralVectorWidth += ((size_t)(pr->partitionData[model]->upper - pr->partitionData[model]->lower) * (size_t)(localPartitions->partitionData[model]->states) * sizeof(double)); */
+ ancestralVectorWidth += ((size_t)(localPartitions->partitionData[model]->upper - localPartitions->partitionData[model]->lower) * (size_t)(localPartitions->partitionData[model]->states) * sizeof(double));
+ /* :TODO: do we have to use the original tree for that */
+
+#ifdef __MIC_NATIVE
+
+ rax_posix_memalign ((void **)&(localPartitions->partitionData[model]->wgt), PLL_BYTE_ALIGNMENT, aligned_width * sizeof(int));
+
+ // Alexey: fill padding entries with 0.
+ {
+ int k;
+ for (k = width; k < aligned_width; ++k)
+ localPartitions->partitionData[model]->wgt[k] = 0;
+ }
+#else
+ rax_posix_memalign ((void **)&(localPartitions->partitionData[model]->wgt), PLL_BYTE_ALIGNMENT, width * sizeof(int));
+#endif
+
+ /* rateCategory must be assigned using rax_calloc() at start up there is only one rate category 0 for all sites */
+
+ localPartitions->partitionData[model]->rateCategory = (int *)rax_calloc(width, sizeof(int));
+
+ if(width > 0 && localTree->saveMemory)
+ {
+ localPartitions->partitionData[model]->gapVectorLength = ((int)width / 32) + 1;
+ assert(4 == sizeof(unsigned int));
+ localPartitions->partitionData[model]->gapVector = (unsigned int*)rax_calloc((size_t)localPartitions->partitionData[model]->gapVectorLength * 2 * (size_t)localTree->mxtips, sizeof(unsigned int));
+ rax_posix_memalign ((void **)&(localPartitions->partitionData[model]->gapColumn),PLL_BYTE_ALIGNMENT, ((size_t)localTree->mxtips) *
+ ((size_t)(localPartitions->partitionData[model]->states)) *
+ discreteRateCategories(localTree->rateHetModel) * sizeof(double));
+ }
+ else
+ {
+ localPartitions->partitionData[model]->gapVectorLength = 0;
+ localPartitions->partitionData[model]->gapVector = (unsigned int*)NULL;
+ localPartitions->partitionData[model]->gapColumn = (double*)NULL;
+ }
+ }
+}
+
+int virtual_width( int n ) {
+ const int global_vw = 2;
+ return (n+1) / global_vw * global_vw;
+}
+
+
+void initMemorySavingAndRecom(pllInstance *tr, partitionList *pr)
+{
+ pllInstance
+ *localTree = tr;
+ partitionList
+ *localPartitions = pr;
+ size_t model;
+
+ /* initialize gap bit vectors at tips when memory saving option is enabled */
+
+ if(localTree->saveMemory)
+ {
+ for(model = 0; model < (size_t)localPartitions->numberOfPartitions; model++)
+ {
+ int
+ undetermined = getUndetermined(localPartitions->partitionData[model]->dataType);
+
+ size_t
+ i,
+ j,
+ width = localPartitions->partitionData[model]->width;
+
+ if(width > 0)
+ {
+ for(j = 1; j <= (size_t)(localTree->mxtips); j++)
+ for(i = 0; i < width; i++)
+ if(localPartitions->partitionData[model]->yVector[j][i] == undetermined)
+ localPartitions->partitionData[model]->gapVector[localPartitions->partitionData[model]->gapVectorLength * j + i / 32] |= mask32[i % 32];
+ }
+ }
+ }
+ /* recom */
+ if(localTree->useRecom)
+ allocRecompVectorsInfo(localTree);
+ else
+ localTree->rvec = (recompVectors*)NULL;
+ /* E recom */
+}
+
+/** @brief Get the length of a specific branch
+
+ Get the length of the branch specified by node \a p and \a p->back
+ of partition \a partition_id.
+ The branch length is decoded from the PLL representation.
+
+ @param tr
+ PLL instance
+
+ @param pr
+ PLL partitionlist
+
+ @param p
+ Specifies one end-point of the branch. The other one is \a p->back
+
+ @param partition_id
+ Specifies the partition
+
+ @return
+ The branch length
+*/
+double pllGetBranchLength (pllInstance *tr, partitionList * pr, nodeptr p, int partition_id)
+{
+ double z;
+ assert(partition_id < PLL_NUM_BRANCHES);
+ assert(partition_id >= 0);
+
+ z = p->z[partition_id];
+ if(z < PLL_ZMIN) z = PLL_ZMIN;
+ if(z > PLL_ZMAX) z = PLL_ZMAX;
+ return -log(z);
+}
+
+/** @brief Set the length of a specific branch
+
+ Set the length of the branch specified by node \a p and \a p->back
+ of partition \a partition_id.
+ The function encodes the branch length to the PLL representation.
+
+ @param tr
+ PLL instance
+
+ @param pr
+ PLL partitionlist
+
+ @param p
+ Specifies one end-point of the branch. The other one is \a p->back
+
+ @param partition_id
+ Specifies the partition
+
+ @param bl
+ Branch length
+*/
+void pllSetBranchLength (pllInstance *tr, partitionList *pr, nodeptr p, int partition_id, double bl)
+{
+ double z;
+ //assert(partition_id < tr->numBranches);
+ assert(partition_id < PLL_NUM_BRANCHES);
+ assert(partition_id >= 0);
+
+ z = exp(-1 * bl);
+
+ if(z < PLL_ZMIN) z = PLL_ZMIN;
+ if(z > PLL_ZMAX) z = PLL_ZMAX;
+ p->z[partition_id] = z;
+ p->back->z[partition_id] = z;
+}
+
+#if (!defined(_FINE_GRAIN_MPI) && !defined(_USE_PTHREADS))
+static void initializePartitionsSequential(pllInstance *tr, partitionList *pr)
+{
+ size_t
+ model;
+
+ for(model = 0; model < (size_t)pr->numberOfPartitions; model++)
+ assert(pr->partitionData[model]->width == pr->partitionData[model]->upper - pr->partitionData[model]->lower);
+
+ initializePartitionData(tr, pr);
+
+ /* figure in tip sequence data per-site pattern weights */
+ for(model = 0; model < (size_t)pr->numberOfPartitions; model++)
+ {
+ size_t
+ j;
+ size_t lower = pr->partitionData[model]->lower;
+ size_t width = pr->partitionData[model]->upper - lower;
+
+ for(j = 1; j <= (size_t)tr->mxtips; j++)
+ {
+ pr->partitionData[model]->yVector[j] = &(tr->yVector[j][pr->partitionData[model]->lower]);
+ }
+
+ memcpy((void*)(&(pr->partitionData[model]->wgt[0])), (void*)(&(tr->aliaswgt[lower])), sizeof(int) * width);
+ }
+
+ initMemorySavingAndRecom(tr, pr);
+}
+#endif
+
+
+/* interface to outside */
+//void initializePartitions(pllInstance *tr, pllInstance *localTree, partitionList *pr, partitionList *localPr, int tid, int n)
+//{
+//#if (defined(_FINE_GRAIN_MPI) || defined(_USE_PTHREADS))
+// initializePartitionsMaster(tr,localTree,pr,localPr,tid,n);
+//#else
+// initializePartitionsSequential(tr, pr);
+//#endif
+//}
+
+static void freeLinkageList( linkageList* ll)
+{
+ int i;
+
+ for(i = 0; i < ll->entries; i++)
+ rax_free(ll->ld[i].partitionList);
+
+ rax_free(ll->ld);
+ rax_free(ll);
+}
+
+/** @brief free all data structures associated to a partition
+
+ frees all data structures allocated for this partition
+
+ @param partitions
+ the pointer to the partition list
+
+ @param tips
+ number of tips in the tree
+*/
+void
+pllPartitionsDestroy (pllInstance * tr, partitionList ** partitions)
+{
+ int i, j, tips;
+ partitionList * pl = *partitions;
+
+#ifdef _USE_PTHREADS
+ int tid = tr->threadID;
+ if (MASTER_P) {
+ pllMasterBarrier (tr, pl, PLL_THREAD_EXIT_GRACEFULLY);
+ pllStopPthreads (tr);
+ }
+#endif
+
+ tips = tr->mxtips;
+
+#ifdef _USE_PTHREADS
+ if (MASTER_P) {
+#endif
+#ifdef _FINE_GRAIN_MPI
+if (MASTER_P) {
+ pllMasterBarrier (tr, pl, PLL_THREAD_EXIT_GRACEFULLY);
+#endif
+ freeLinkageList(pl->alphaList);
+ freeLinkageList(pl->freqList);
+ freeLinkageList(pl->rateList);
+#ifdef _FINE_GRAIN_MPI
+}
+#endif
+
+#ifdef _USE_PTHREADS
+ }
+#endif
+ for (i = 0; i < pl->numberOfPartitions; ++ i)
+ {
+ rax_free (pl->partitionData[i]->gammaRates);
+ rax_free (pl->partitionData[i]->perSiteRates);
+ rax_free (pl->partitionData[i]->globalScaler);
+ rax_free (pl->partitionData[i]->left);
+ rax_free (pl->partitionData[i]->right);
+ rax_free (pl->partitionData[i]->EIGN);
+ rax_free (pl->partitionData[i]->EV);
+ rax_free (pl->partitionData[i]->EI);
+ rax_free (pl->partitionData[i]->substRates);
+ rax_free (pl->partitionData[i]->frequencies);
+ rax_free (pl->partitionData[i]->freqExponents);
+ rax_free (pl->partitionData[i]->empiricalFrequencies);
+ rax_free (pl->partitionData[i]->tipVector);
+ rax_free (pl->partitionData[i]->symmetryVector);
+
+ if (pl->partitionData[i]->dataType == PLL_AA_DATA
+ && (pl->partitionData[i]->protModels == PLL_LG4M
+ || pl->partitionData[i]->protModels == PLL_LG4X))
+ {
+ int k;
+
+ for (k = 0; k < 4; k++)
+ {
+ rax_free (pl->partitionData[i]->EIGN_LG4[k]);
+ rax_free (pl->partitionData[i]->rawEIGN_LG4[k]);
+ rax_free (pl->partitionData[i]->EV_LG4[k]);
+ rax_free (pl->partitionData[i]->EI_LG4[k]);
+ rax_free (pl->partitionData[i]->substRates_LG4[k]);
+ rax_free (pl->partitionData[i]->frequencies_LG4[k]);
+ rax_free (pl->partitionData[i]->tipVector_LG4[k]);
+ }
+ }
+
+ rax_free (pl->partitionData[i]->frequencyGrouping);
+ for (j = 0; j < tips; ++ j)
+ rax_free (pl->partitionData[i]->xVector[j]);
+ rax_free (pl->partitionData[i]->xVector);
+ rax_free (pl->partitionData[i]->yVector);
+ rax_free (pl->partitionData[i]->xSpaceVector);
+ rax_free (pl->partitionData[i]->sumBuffer);
+ rax_free (pl->partitionData[i]->ancestralBuffer);
+ rax_free (pl->partitionData[i]->wgt);
+ rax_free (pl->partitionData[i]->rateCategory);
+ rax_free (pl->partitionData[i]->gapVector);
+ rax_free (pl->partitionData[i]->gapColumn);
+ rax_free (pl->partitionData[i]->perSiteLikelihoods);
+ rax_free (pl->partitionData[i]->partitionName);
+ rax_free (pl->partitionData[i]->expSpaceVector);
+ /*TODO: Deallocate all entries of expVector */
+ if (pl->partitionData[i]->expVector)
+ {
+ for (j = 0; j < tips - 2; ++ j)
+ rax_free (pl->partitionData[i]->expVector[j]);
+ }
+ rax_free (pl->partitionData[i]->expVector);
+ rax_free (pl->partitionData[i]);
+ }
+ rax_free (pl->partitionData);
+ rax_free (pl);
+
+ *partitions = NULL;
+
+#if (defined(_USE_PTHREADS) || defined(_FINE_GRAIN_MPI))
+ rax_free (tr->y_ptr);
+#endif
+}
+
+/** @ingroup instanceLinkingGroup
+ @brief Correspondance check between partitions and alignment
+
+ This function checks whether the partitions to be created and the given
+ alignment correspond, that is, whether each site of the alignment is
+ assigned to exactly one partition.
+
+ @param parts
+ A list of partitions suggested by the caller
+
+ @param alignmentData
+ The multiple sequence alignment
+
+ @return
+ Returns \a 1 in case of success, otherwise \a 0
+*/
+int
+pllPartitionsValidate (pllQueue * parts, pllAlignmentData * alignmentData)
+{
+ int nparts;
+ char * used;
+ struct pllQueueItem * elm;
+ struct pllQueueItem * regionItem;
+ pllPartitionRegion * region;
+ pllPartitionInfo * pi;
+ int i;
+
+ /* check if the list contains at least one partition */
+ nparts = pllQueueSize (parts);
+ if (!nparts)
+ return (0);
+
+ /* boolean array for marking that a site was assigned a partition */
+ used = (char *) rax_calloc (alignmentData->sequenceLength, sizeof (char));
+
+ /* traverse all partitions and their respective regions and mark sites */
+ for (elm = parts->head; elm; elm = elm->next)
+ {
+ pi = (pllPartitionInfo *) elm->item;
+
+ for (regionItem = pi->regionList->head; regionItem; regionItem = regionItem->next)
+ {
+ region = (pllPartitionRegion *) regionItem->item;
+
+ if (region->start < 1 || region->end > alignmentData->sequenceLength)
+ {
+ rax_free (used);
+ return (0);
+ }
+
+ for (i = region->start - 1; i < region->end; i += region->stride)
+ {
+ if (used[i])
+ {
+ rax_free (used);
+ return (0);
+ }
+ used[i] = 1;
+ }
+ }
+ }
+
+ /* check whether all sites were assigned a partition */
+ for (i = 0; i < alignmentData->sequenceLength; ++ i)
+ if (used[i] != 1)
+ {
+ rax_free (used);
+ return (0);
+ }
+
+ rax_free (used);
+ return (1);
+}
+
+/** @brief Swap two sites in a buffer
+
+ Swaps sites \a s1 and \a s2 in buffer \a buf which consists of \a nTaxa + 1
+ taxa (i.e. rows), and the first row contains no information, i.e. it is not
+ accessed.
+
+ @param buffer
+ Memory buffer
+
+ @param s1
+ First site
+
+ @param s2
+ Second site
+
+ @param nTaxa
+ Number of taxa, i.e. size of site
+*/
+static inline void
+swapSite (unsigned char ** buf, int s1, int s2, int nTaxa)
+{
+ int i;
+ int x;
+
+ for (i = 1; i <= nTaxa; ++ i)
+ {
+ x = buf[i][s1];
+ buf[i][s1] = buf[i][s2];
+ buf[i][s2] = x;
+ }
+}
+
+/** @brief Constructs the list of partitions according to the proposed partition scheme
+
+ A static function that construcs the \a partitionList structure according to
+ the partition scheme \b AFTER the sites have been repositioned in contiguous
+ regions according to the partition scheme.
+
+ @param bounds An array of the new starting and ending posititons of sites
+ in the alignment for each partition. This array is of size 2 * \a nparts.
+ The elements are always couples (lower,upper). The upper bounds is a site
+ that is not included in the partition
+
+ @param nparts The number of partitions to be created
+
+ @todo Fix the bug in PLL
+*/
+static partitionList * createPartitions (pllQueue * parts, int * bounds)
+{
+ partitionList * pl;
+ pllPartitionInfo * pi;
+ struct pllQueueItem * elm;
+ int i, j, nparts = 0;
+ double wgtSum = 0.0;
+
+ pl = (partitionList *) rax_malloc (sizeof (partitionList));
+
+ // TODO: fix this
+ pl->perGeneBranchLengths = 0;
+
+ // TODO: change PLL_NUM_BRANCHES to number of partitions I guess
+ pl->partitionData = (pInfo **) rax_calloc (PLL_NUM_BRANCHES, sizeof (pInfo *));
+
+ for (i = 0, elm = parts->head; elm; elm = elm->next, ++ i)
+ {
+ pi = (pllPartitionInfo *) elm->item;
+
+ /* check whether the data type is valid, and in case it's not, deallocate
+ and return NULL */
+ if (pi->dataType <= PLL_MIN_MODEL || pi->dataType >= PLL_MAX_MODEL)
+ {
+ for (j = 0; j < i; ++ j)
+ {
+ rax_free (pl->partitionData[j]->partitionName);
+ rax_free (pl->partitionData[j]);
+ }
+ rax_free (pl->partitionData);
+ rax_free (pl);
+ return (NULL);
+ }
+
+ pl->partitionData[i] = (pInfo *) rax_malloc (sizeof (pInfo));
+
+ pl->partitionData[i]->lower = bounds[i << 1];
+ pl->partitionData[i]->upper = bounds[(i << 1) + 1];
+ pl->partitionData[i]->width = bounds[(i << 1) + 1] - bounds[i << 1];
+ pl->partitionData[i]->partitionWeight = 1.0 * (double) pl->partitionData[i]->width;
+ wgtSum += pl->partitionData[i]->partitionWeight;
+
+ //the two flags below are required to allow users to set
+ //alpha parameters and substitution rates in the Q matrix
+ //to fixed values. These parameters will then not be optimized
+ //in the model parameter optimization functions
+ //by default we assume that all parameters are being optimized, i.e.,
+ //this has to be explicitly set by the user
+
+ pl->partitionData[i]->optimizeAlphaParameter = PLL_TRUE;
+ pl->partitionData[i]->optimizeSubstitutionRates = PLL_TRUE;
+ pl->partitionData[i]->dataType = pi->dataType;
+ pl->partitionData[i]->protModels = -1;
+ pl->partitionData[i]->protUseEmpiricalFreqs = -1;
+ pl->partitionData[i]->maxTipStates = pLengths[pi->dataType].undetermined + 1;
+ pl->partitionData[i]->optimizeBaseFrequencies = pi->optimizeBaseFrequencies;
+ pl->partitionData[i]->ascBias = pi->ascBias;
+ pl->partitionData[i]->parsVect = NULL;
+
+ if (pi->dataType == PLL_AA_DATA)
+ {
+ if(pl->partitionData[i]->protModels != PLL_GTR)
+ pl->partitionData[i]->optimizeSubstitutionRates = PLL_FALSE;
+ pl->partitionData[i]->protUseEmpiricalFreqs = pi->protUseEmpiricalFreqs;
+ pl->partitionData[i]->protModels = pi->protModels;
+ }
+
+ pl->partitionData[i]->states = pLengths[pl->partitionData[i]->dataType].states;
+ pl->partitionData[i]->numberOfCategories = 1;
+ pl->partitionData[i]->autoProtModels = 0;
+ pl->partitionData[i]->nonGTR = PLL_FALSE;
+ pl->partitionData[i]->partitionContribution = -1.0;
+ pl->partitionData[i]->partitionLH = 0.0;
+ pl->partitionData[i]->executeModel = PLL_TRUE;
+
+
+ pl->partitionData[i]->partitionName = (char *) rax_malloc ((strlen (pi->partitionName) + 1) * sizeof (char));
+ strcpy (pl->partitionData[i]->partitionName, pi->partitionName);
+ nparts++;
+ }
+
+ for (i=0; i<nparts; i++)
+ {
+ pl->partitionData[i]->partitionContribution = pl->partitionData[i]->partitionWeight / wgtSum;
+ }
+
+ return (pl);
+}
+
+
+/** @ingroup instanceLinkingGroup
+ @brief Constructs the proposed partition scheme
+
+ This function constructs the proposed partition scheme. It assumes
+ that the partition scheme is correct.
+
+ @note This function \b does \b not validate the partition scheme.
+ The user must manually call the ::pllPartitionsValidate function
+ for validation
+
+ @param parts
+ A list of partitions suggested by the caller
+
+ @param alignmentData
+ The multiple sequence alignment
+
+ @return
+ Returns a pointer to \a partitionList structure of partitions in case of success, \b NULL otherwise
+*/
+partitionList * pllPartitionsCommit (pllQueue * parts, pllAlignmentData * alignmentData)
+{
+ int * oi;
+ int i, j, dst;
+ struct pllQueueItem * elm;
+ struct pllQueueItem * regionItem;
+ pllPartitionRegion * region;
+ pllPartitionInfo * pi;
+ partitionList * pl;
+ int * newBounds;
+ int k, nparts;
+ int tmpvar;
+
+
+ dst = k = 0;
+ oi = (int *) rax_malloc (alignmentData->sequenceLength * sizeof (int));
+ for (i = 0; i < alignmentData->sequenceLength; ++ i) oi[i] = i;
+
+ nparts = pllQueueSize (parts);
+ newBounds = (int *) rax_malloc (2 * nparts * sizeof (int));
+
+ /* reposition the sites in the alignment */
+ for (elm = parts->head; elm; elm = elm->next, ++ k)
+ {
+ pi = (pllPartitionInfo *) elm->item;
+
+ newBounds[k << 1] = dst; /* set the lower column for this partition */
+ for (regionItem = pi->regionList->head; regionItem; regionItem = regionItem->next)
+ {
+ region = (pllPartitionRegion *) regionItem->item;
+
+ for (i = region->start - 1; i < region->end && i < alignmentData->sequenceLength; i += region->stride)
+ {
+ if (oi[i] == i)
+ {
+ swapSite (alignmentData->sequenceData, dst, i, alignmentData->sequenceCount);
+ tmpvar = oi[i];
+ oi[i] = oi[dst];
+ oi[dst++] = tmpvar;
+ }
+ else
+ {
+ j = i;
+ while (oi[j] != i) j = oi[j];
+
+ swapSite (alignmentData->sequenceData, dst, j, alignmentData->sequenceCount);
+ tmpvar = oi[j];
+ oi[j] = oi[dst];
+ oi[dst++] = tmpvar;
+ }
+ }
+ }
+ newBounds[(k << 1) + 1] = dst; /* set the uppwer limit for this partition */
+ }
+ if ((pl = createPartitions (parts, newBounds)))
+ {
+ pl->numberOfPartitions = nparts;
+ pl->dirty = PLL_FALSE;
+ }
+
+ rax_free (newBounds);
+ rax_free (oi);
+
+ return (pl);
+}
+
+/** @brief Copy a site to another buffer
+
+ Copies site \a from from buffer \a src to \a to in buffer \a dst. Both buffers
+ must consist of \a nTaxa + 1 taxa and the first row contains no information, i.e.
+ it is not accessed.
+
+ @param dst
+ Destination buffer
+
+ @param src
+ Source buffer
+
+ @param to
+ At which position in \a dst to copy the site to
+
+ @param from
+ Which site from \a src to copy
+
+ @param nTaxa
+ Number of taxa, i.e. size of site
+*/
+static inline void
+copySite (unsigned char ** dst, unsigned char ** src, int to, int from, int nTaxa)
+{
+ int i;
+
+ for (i = 1; i <= nTaxa; ++ i)
+ {
+ dst[i][to] = src[i][from];
+ }
+}
+
+/** @brief Remove duplicate sites from alignment and update weights vector
+
+ Removes duplicate sites from the alignment given the partitions list
+ and updates the weight vector of the alignment and the boundaries
+ (upper, lower, width) for each partition.
+
+ @param alignmentData
+ The multiple sequence alignment
+
+ @param pl
+ List of partitions
+
+*/
+void
+pllAlignmentRemoveDups (pllAlignmentData * alignmentData, partitionList * pl)
+{
+ int i, j, k, p;
+ char *** sites;
+ void ** memptr;
+ int ** oi;
+ int dups = 0;
+ int lower;
+
+ /* allocate space for the transposed alignments (sites) for every partition */
+ sites = (char ***) rax_malloc (pl->numberOfPartitions * sizeof (char **));
+ memptr = (void **) rax_malloc (pl->numberOfPartitions * sizeof (void *));
+ oi = (int **) rax_malloc (pl->numberOfPartitions * sizeof (int *));
+
+ /* transpose the sites by partition */
+ for (p = 0; p < pl->numberOfPartitions; ++ p)
+ {
+ sites[p] = (char **) rax_malloc (pl->partitionData[p]->width * sizeof (char *));
+ memptr[p] = rax_malloc ((alignmentData->sequenceCount + 1) * pl->partitionData[p]->width * sizeof (char));
+
+ for (i = 0; i < pl->partitionData[p]->width; ++ i)
+ {
+ sites[p][i] = (char *) (memptr[p] + i * (alignmentData->sequenceCount + 1) * sizeof (char));
+ }
+
+ for (i = 0; i < pl->partitionData[p]->width; ++ i)
+ {
+ for (j = 0; j < alignmentData->sequenceCount; ++ j)
+ {
+ sites[p][i][j] = alignmentData->sequenceData[j + 1][pl->partitionData[p]->lower + i];
+ }
+ sites[p][i][j] = 0;
+ }
+
+ oi[p] = pllssort1main (sites[p], pl->partitionData[p]->width);
+
+ for (i = 0; i < pl->partitionData[p]->width; ++ i) oi[p][i] = 1;
+
+ for (i = 1; i < pl->partitionData[p]->width; ++ i)
+ {
+ if (! strcmp (sites[p][i], sites[p][i - 1]))
+ {
+ ++ dups;
+ oi[p][i] = 0;
+ }
+ }
+ }
+
+ /* allocate memory for the alignment without duplicates*/
+ rax_free (alignmentData->sequenceData[1]);
+ rax_free (alignmentData->siteWeights);
+
+ alignmentData->sequenceLength = alignmentData->sequenceLength - dups;
+ alignmentData->sequenceData[0] = (unsigned char *) rax_malloc ((alignmentData->sequenceLength + 1) * sizeof (unsigned char) * alignmentData->sequenceCount);
+ for (i = 0; i < alignmentData->sequenceCount; ++ i)
+ {
+ alignmentData->sequenceData[i + 1] = (unsigned char *) (alignmentData->sequenceData[0] + i * (alignmentData->sequenceLength + 1) * sizeof (unsigned char));
+ alignmentData->sequenceData[i + 1][alignmentData->sequenceLength] = 0;
+ }
+
+ alignmentData->siteWeights = (int *) rax_malloc ((alignmentData->sequenceLength) * sizeof (int));
+ alignmentData->siteWeights[0] = 1;
+
+ /* transpose sites back to alignment */
+ for (p = 0, k = 0; p < pl->numberOfPartitions; ++ p)
+ {
+ lower = k;
+ for (i = 0; i < pl->partitionData[p]->width; ++ i)
+ {
+ if (!oi[p][i])
+ {
+ ++ alignmentData->siteWeights[k - 1];
+ }
+ else
+ {
+ alignmentData->siteWeights[k] = 1;
+ for (j = 0; j < alignmentData->sequenceCount; ++ j)
+ {
+ alignmentData->sequenceData[j + 1][k] = sites[p][i][j];
+ }
+ ++ k;
+ }
+ }
+ pl->partitionData[p]->lower = lower;
+ pl->partitionData[p]->upper = k;
+ pl->partitionData[p]->width = k - lower;
+ }
+
+ /* deallocate storage for transposed alignment (sites) */
+ for (p = 0; p < pl->numberOfPartitions; ++ p)
+ {
+ rax_free (oi[p]);
+ rax_free (memptr[p]);
+ rax_free (sites[p]);
+ }
+ rax_free (oi);
+ rax_free (sites);
+ rax_free (memptr);
+}
+
+
+/** @brief Compute the empirical frequencies of a partition
+
+ Compute the empirical frequencies of partition \a partition and store them in
+ \a pfreqs.
+
+ @param partition
+ The partition for which to compute empirical frequencies
+
+ @param alignmentData
+ The multiple sequence alignment
+
+ @param smoothFrequencies
+ Not needed?
+
+ @param bitMask
+ The bitmask
+
+ @param pfreqs
+ Array of size \a partition->states where the empirical frequencies for this partition are stored
+*/
+static int genericBaseFrequenciesAlignment (pInfo * partition,
+ pllAlignmentData * alignmentData,
+ boolean smoothFrequencies,
+ const unsigned int * bitMask,
+ double * pfreqs)
+{
+ double
+ wj,
+ acc,
+ sumf[64],
+ temp[64];
+
+ int
+ i,
+ j,
+ k,
+ l,
+ numFreqs,
+ lower,
+ upper;
+
+ unsigned char *yptr;
+ const char * map;
+
+ switch (partition->dataType)
+ {
+ case PLL_BINARY_DATA:
+ map = PLL_MAP_BIN;
+ case PLL_DNA_DATA:
+ map = PLL_MAP_NT;
+ break;
+ case PLL_AA_DATA:
+ map = PLL_MAP_AA;
+ break;
+ default:
+ assert(0);
+ }
+
+ numFreqs = partition->states;
+ lower = partition->lower;
+ upper = partition->upper;
+
+ for(l = 0; l < numFreqs; l++)
+ pfreqs[l] = 1.0 / ((double)numFreqs);
+
+ for (k = 1; k <= 8; k++)
+ {
+ for(l = 0; l < numFreqs; l++)
+ sumf[l] = 0.0;
+
+ for (i = 1; i <= alignmentData->sequenceCount; i++)
+ {
+ yptr = alignmentData->sequenceData[i];
+
+ for(j = lower; j < upper; j++)
+ {
+ if (map[yptr[j]] < 0) return (0);
+ unsigned int code = bitMask[(unsigned char)map[yptr[j]]];
+ assert(code >= 1);
+
+ for(l = 0; l < numFreqs; l++)
+ {
+ if((code >> l) & 1)
+ temp[l] = pfreqs[l];
+ else
+ temp[l] = 0.0;
+ }
+
+ for(l = 0, acc = 0.0; l < numFreqs; l++)
+ {
+ if(temp[l] != 0.0)
+ acc += temp[l];
+ }
+
+ wj = alignmentData->siteWeights[j] / acc;
+
+ for(l = 0; l < numFreqs; l++)
+ {
+ if(temp[l] != 0.0)
+ sumf[l] += wj * temp[l];
+ }
+ }
+ }
+
+ for(l = 0, acc = 0.0; l < numFreqs; l++)
+ {
+ if(sumf[l] != 0.0)
+ acc += sumf[l];
+ }
+
+ for(l = 0; l < numFreqs; l++)
+ pfreqs[l] = sumf[l] / acc;
+ }
+
+ /* TODO: What is that? */
+/*
+ if(smoothFrequencies)
+ {;
+ smoothFreqs(numFreqs, pfreqs, tr->partitionData[model].frequencies, &(tr->partitionData[model]));
+ }
+ else
+ {
+ boolean
+ zeroFreq = PLL_FALSE;
+
+ char
+ typeOfData[1024];
+
+ getDataTypeString(tr, model, typeOfData);
+
+ for(l = 0; l < numFreqs; l++)
+ {
+ if(pfreqs[l] == 0.0)
+ {
+ printBothOpen("Empirical base frequency for state number %d is equal to zero in %s data partition %s\n", l, typeOfData, tr->partitionData[model].partitionName);
+ printBothOpen("Since this is probably not what you want to do, RAxML will soon exit.\n\n");
+ zeroFreq = PLL_TRUE;
+ }
+ }
+
+ if(zeroFreq)
+ exit(-1);
+
+ for(l = 0; l < numFreqs; l++)
+ {
+ assert(pfreqs[l] > 0.0);
+ tr->partitionData[model].frequencies[l] = pfreqs[l];
+ }
+ }
+*/
+ return (1);
+
+}
+
+static void genericBaseFrequenciesInstance (pInfo * partition,
+ pllInstance * tr,
+ boolean smoothFrequencies,
+ const unsigned int * bitMask,
+ double * pfreqs)
+{
+ double
+ wj,
+ acc,
+ sumf[64],
+ temp[64];
+
+ int
+ i,
+ j,
+ k,
+ l,
+ numFreqs,
+ lower,
+ upper;
+
+ unsigned char *yptr;
+
+ numFreqs = partition->states;
+ lower = partition->lower;
+ upper = partition->upper;
+
+ for(l = 0; l < numFreqs; l++)
+ pfreqs[l] = 1.0 / ((double)numFreqs);
+
+ for (k = 1; k <= 8; k++)
+ {
+ for(l = 0; l < numFreqs; l++)
+ sumf[l] = 0.0;
+
+ for (i = 1; i <= tr->mxtips; i++)
+ {
+ yptr = tr->yVector[i];
+
+ for(j = lower; j < upper; j++)
+ {
+ unsigned int code = bitMask[yptr[j]];
+ assert(code >= 1);
+
+ for(l = 0; l < numFreqs; l++)
+ {
+ if((code >> l) & 1)
+ temp[l] = pfreqs[l];
+ else
+ temp[l] = 0.0;
+ }
+
+ for(l = 0, acc = 0.0; l < numFreqs; l++)
+ {
+ if(temp[l] != 0.0)
+ acc += temp[l];
+ }
+
+ wj = tr->aliaswgt[j] / acc;
+
+ for(l = 0; l < numFreqs; l++)
+ {
+ if(temp[l] != 0.0)
+ sumf[l] += wj * temp[l];
+ }
+ }
+ }
+
+ for(l = 0, acc = 0.0; l < numFreqs; l++)
+ {
+ if(sumf[l] != 0.0)
+ acc += sumf[l];
+ }
+
+ for(l = 0; l < numFreqs; l++)
+ pfreqs[l] = sumf[l] / acc;
+ }
+
+ /* TODO: What is that? */
+/*
+ if(smoothFrequencies)
+ {;
+ smoothFreqs(numFreqs, pfreqs, tr->partitionData[model].frequencies, &(tr->partitionData[model]));
+ }
+ else
+ {
+ boolean
+ zeroFreq = PLL_FALSE;
+
+ char
+ typeOfData[1024];
+
+ getDataTypeString(tr, model, typeOfData);
+
+ for(l = 0; l < numFreqs; l++)
+ {
+ if(pfreqs[l] == 0.0)
+ {
+ printBothOpen("Empirical base frequency for state number %d is equal to zero in %s data partition %s\n", l, typeOfData, tr->partitionData[model].partitionName);
+ printBothOpen("Since this is probably not what you want to do, RAxML will soon exit.\n\n");
+ zeroFreq = PLL_TRUE;
+ }
+ }
+
+ if(zeroFreq)
+ exit(-1);
+
+ for(l = 0; l < numFreqs; l++)
+ {
+ assert(pfreqs[l] > 0.0);
+ tr->partitionData[model].frequencies[l] = pfreqs[l];
+ }
+ }
+*/
+
+
+}
+
+/** Compute the empirical base frequencies of an alignment
+
+ Computes the empirical base frequencies per partition of an alignment \a alignmentData
+ given the partition structure \a pl.
+
+ @param alignmentData The alignment structure for which to compute the empirical base frequencies
+ @param pl List of partitions
+ @return Returns a list of frequencies for each partition
+*/
+double ** pllBaseFrequenciesAlignment (pllAlignmentData * alignmentData, partitionList * pl)
+{
+ int
+ i,
+ model;
+
+ double
+ **freqs = (double **) rax_malloc (pl->numberOfPartitions * sizeof (double *));
+
+ for (model = 0; model < pl->numberOfPartitions; ++ model)
+ {
+ freqs[model] = (double *) rax_malloc (pl->partitionData[model]->states * sizeof (double));
+
+ switch (pl->partitionData[model]->dataType)
+ {
+ case PLL_BINARY_DATA:
+ case PLL_AA_DATA:
+ case PLL_DNA_DATA:
+ if (!genericBaseFrequenciesAlignment (pl->partitionData[model],
+ alignmentData,
+ pLengths[pl->partitionData[model]->dataType].smoothFrequencies,
+ pLengths[pl->partitionData[model]->dataType].bitVector,
+ freqs[model]
+ ))
+ return (NULL);
+ break;
+ default:
+ {
+ errno = PLL_UNKNOWN_MOLECULAR_DATA_TYPE;
+ for (i = 0; i <= model; ++ i) rax_free (freqs[i]);
+ rax_free (freqs);
+ return (double **)NULL;
+ }
+ }
+ }
+
+ return (freqs);
+}
+
+/** Compute the empirical base frequencies of the alignment incorporated in the instance
+
+ Computes the empirical base frequencies per partition of the alignment
+ incorporated in the instance \a tr given the partition structure \a pl.
+
+ @param tr The instance for which to compute the empirical base frequencies
+ @param pl List of partitions
+ @return Returns a list of frequencies for each partition
+*/
+double ** pllBaseFrequenciesInstance (pllInstance * tr, partitionList * pl)
+{
+ int
+ i,
+ model;
+
+ double
+ **freqs = (double **) rax_malloc (pl->numberOfPartitions * sizeof (double *));
+
+ for (model = 0; model < pl->numberOfPartitions; ++ model)
+ {
+ freqs[model] = (double *) rax_malloc (pl->partitionData[model]->states * sizeof (double));
+
+ switch (pl->partitionData[model]->dataType)
+ {
+ case PLL_AA_DATA:
+ case PLL_DNA_DATA:
+ case PLL_BINARY_DATA:
+ genericBaseFrequenciesInstance (pl->partitionData[model],
+ tr,
+ pLengths[pl->partitionData[model]->dataType].smoothFrequencies,
+ pLengths[pl->partitionData[model]->dataType].bitVector,
+ freqs[model]
+ );
+ break;
+ default:
+ {
+ errno = PLL_UNKNOWN_MOLECULAR_DATA_TYPE;
+ for (i = 0; i <= model; ++ i) rax_free (freqs[i]);
+ rax_free (freqs);
+ return (double **)NULL;
+ }
+ }
+ }
+
+ return (freqs);
+}
+
+void
+pllEmpiricalFrequenciesDestroy (double *** empiricalFrequencies, int models)
+{
+ int i;
+
+ for (i = 0; i < models; ++ i)
+ {
+ rax_free ((*empiricalFrequencies)[i]);
+ }
+ rax_free (*empiricalFrequencies);
+
+ *empiricalFrequencies = NULL;
+}
+
+int pllLoadAlignment (pllInstance * tr, pllAlignmentData * alignmentData, partitionList * partitions)
+{
+ int i;
+ nodeptr node;
+ pllHashItem * hItem;
+
+ if (tr->mxtips != alignmentData->sequenceCount) return (0);
+
+ tr->aliaswgt = (int *) rax_malloc (alignmentData->sequenceLength * sizeof (int));
+ memcpy (tr->aliaswgt, alignmentData->siteWeights, alignmentData->sequenceLength * sizeof (int));
+
+ tr->originalCrunchedLength = alignmentData->sequenceLength;
+ tr->rateCategory = (int *) rax_calloc (tr->originalCrunchedLength, sizeof (int));
+ tr->patrat = (double*) rax_malloc((size_t)tr->originalCrunchedLength * sizeof(double));
+ tr->patratStored = (double*) rax_malloc((size_t)tr->originalCrunchedLength * sizeof(double));
+ tr->lhs = (double*) rax_malloc((size_t)tr->originalCrunchedLength * sizeof(double));
+
+ /* allocate memory for the alignment */
+ tr->yVector = (unsigned char **) rax_malloc ((alignmentData->sequenceCount + 1) * sizeof (unsigned char *));
+
+ tr->yVector[0] = (unsigned char *) rax_malloc (sizeof (unsigned char) * (alignmentData->sequenceLength + 1) * alignmentData->sequenceCount);
+ for (i = 1; i <= alignmentData->sequenceCount; ++ i)
+ {
+ tr->yVector[i] = (unsigned char *) (tr->yVector[0] + (i - 1) * (alignmentData->sequenceLength + 1) * sizeof (unsigned char));
+ tr->yVector[i][alignmentData->sequenceLength] = 0;
+ }
+
+ /* place sequences to tips */
+ for (i = 1; i <= alignmentData->sequenceCount; ++ i)
+ {
+ if (!pllHashSearch (tr->nameHash, alignmentData->sequenceLabels[i],(void **)&node))
+ {
+ //rax_free (tr->originalCrunchedLength);
+ rax_free (tr->rateCategory);
+ rax_free (tr->patrat);
+ rax_free (tr->patratStored);
+ rax_free (tr->lhs);
+ rax_free (tr->yVector[0]);
+ rax_free (tr->yVector);
+ return (0);
+ }
+ memcpy (tr->yVector[node->number], alignmentData->sequenceData[i], alignmentData->sequenceLength);
+ }
+
+ /* Do the base substitution (from A,C,G.... -> 0,1,2,3....)*/
+ pllBaseSubstitute (tr, partitions);
+
+ /* Populate tipNames */
+ tr->tipNames = (char **) rax_calloc(tr->mxtips + 1, sizeof (char *));
+ for (i = 0; (unsigned int)i < tr->nameHash->size; ++ i)
+ {
+ hItem = tr->nameHash->Items[i];
+
+ for (; hItem; hItem = hItem->next)
+ {
+ tr->tipNames[((nodeptr)hItem->data)->number] = hItem->str;
+ }
+ }
+
+ return (1);
+}
+
+pllInstance * pllCreateInstance (pllInstanceAttr * attr)
+{
+ pllInstance * tr;
+
+ if (attr->rateHetModel != PLL_GAMMA && attr->rateHetModel != PLL_CAT) return NULL;
+
+#ifdef _USE_PTHREADS
+ if (attr->numberOfThreads <= 0) return NULL;
+#endif
+
+ tr = (pllInstance *) rax_calloc (1, sizeof (pllInstance));
+
+ tr->threadID = 0;
+ tr->rateHetModel = attr->rateHetModel;
+ tr->fastScaling = attr->fastScaling;
+ tr->saveMemory = attr->saveMemory;
+ tr->useRecom = attr->useRecom;
+ tr->likelihoodEpsilon = 0.01;
+
+ tr->randomNumberSeed = attr->randomNumberSeed;
+ tr->parsimonyScore = NULL;
+
+ /* remove it from the library */
+ tr->useMedian = PLL_FALSE;
+
+ tr->maxCategories = (attr->rateHetModel == PLL_GAMMA) ? 4 : 25;
+
+ tr->numberOfThreads = attr->numberOfThreads;
+ tr->rearrangeHistory = NULL;
+
+ /* Lock the slave processors at this point */
+#ifdef _FINE_GRAIN_MPI
+ pllLockMPI (tr);
+#endif
+
+ return (tr);
+}
+
+/** @brief Initialize PLL tree structure with default values
+
+ Initialize PLL tree structure with default values and allocate
+ memory for its elements.
+
+ @todo
+ STILL NOT FINISHED
+*/
+static void pllTreeInitDefaults (pllInstance * tr, int tips)
+{
+ nodeptr p0, p, q;
+ int i, j;
+ int inner;
+
+
+
+ /* TODO: make a proper static setupTree function */
+
+ inner = tips - 1;
+
+ tr->mxtips = tips;
+
+ tr->bigCutoff = PLL_FALSE;
+ tr->treeStringLength = tr->mxtips * (PLL_NMLNGTH + 128) + 256 + tr->mxtips * 2;
+ tr->tree_string = (char *) rax_calloc ( tr->treeStringLength, sizeof(char));
+ tr->tree0 = (char*)rax_calloc((size_t)tr->treeStringLength, sizeof(char));
+ tr->tree1 = (char*)rax_calloc((size_t)tr->treeStringLength, sizeof(char));
+ tr->constraintVector = (int *)rax_malloc((2 * tr->mxtips) * sizeof(int));
+
+ p0 = (nodeptr) rax_malloc ((tips + 3 * inner) * sizeof (node));
+ assert (p0);
+
+ tr->nodeBaseAddress = p0;
+
+ tr->nameList = (char **) rax_malloc ((tips + 1) * sizeof (char *));
+ tr->nodep = (nodeptr *) rax_malloc ((2 * tips) * sizeof (nodeptr));
+
+ tr->autoProteinSelectionType = PLL_AUTO_ML;
+
+ assert (tr->nameList && tr->nodep);
+
+ tr->nodep[0] = NULL;
+
+ for (i = 1; i <= tips; ++ i)
+ {
+ p = p0++;
+
+ //p->hash = KISS32();
+ p->x = 0;
+ p->xBips = 0;
+ p->number = i;
+ p->next = p;
+ p->back = NULL;
+ p->bInf = NULL;
+ tr->nodep[i] = p;
+ }
+
+ for (i = tips + 1; i <= tips + inner; ++i)
+ {
+ q = NULL;
+ for (j = 1; j <= 3; ++ j)
+ {
+ p = p0++;
+ if (j == 1)
+ {
+ p->xBips = 1;
+ p->x = 1; //p->x = 1;
+ }
+ else
+ {
+ p->xBips = 0;
+ p->x = 0;
+ }
+ p->number = i;
+ p->next = q;
+ p->bInf = NULL;
+ p->back = NULL;
+ p->hash = 0;
+ q = p;
+ }
+ p->next->next->next = p;
+ tr->nodep[i] = p;
+ }
+
+ tr->likelihood = PLL_UNLIKELY;
+ tr->start = NULL;
+ tr->ntips = 0;
+ tr->nextnode = 0;
+
+ for (i = 0; i < PLL_NUM_BRANCHES; ++ i) tr->partitionSmoothed[i] = PLL_FALSE;
+
+ tr->bitVectors = NULL;
+ tr->vLength = 0;
+ //tr->h = NULL;
+
+ /* TODO: Fix hash type */
+ tr->nameHash = pllHashInit (10 * tr->mxtips);
+
+ /* TODO: do these options really fit here or should they be put elsewhere? */
+ tr->td[0].count = 0;
+ tr->td[0].ti = (traversalInfo *) rax_malloc (sizeof(traversalInfo) * (size_t)tr->mxtips);
+ tr->td[0].parameterValues = (double *) rax_malloc(sizeof(double) * (size_t)PLL_NUM_BRANCHES);
+ tr->td[0].executeModel = (boolean *) rax_malloc (sizeof(boolean) * (size_t)PLL_NUM_BRANCHES);
+ tr->td[0].executeModel[0] = PLL_TRUE;
+ for (i = 0; i < PLL_NUM_BRANCHES; ++ i) tr->td[0].executeModel[i] = PLL_TRUE;
+}
+
+
+/* @brief Check a parsed tree for inclusion in the current tree
+
+ Check whether the set of leaves (taxa) of the parsed tree \a nTree is a
+ subset of the leaves of the currently loaded tree.
+
+ @param pInst
+ PLL instance
+
+ @param nTree
+ Parsed newick tree structure
+
+ @return
+ Returns \b PLL_TRUE in case it is a subset, otherwise \b PLL_FALSE
+*/
+static int
+checkTreeInclusion (pllInstance * pInst, pllNewickTree * nTree)
+{
+ pllStack * sList;
+ pllNewickNodeInfo * sItem;
+ void * dummy;
+
+ if (!pInst->nameHash) return (PLL_FALSE);
+
+ for (sList = nTree->tree; sList; sList = sList->next)
+ {
+ sItem = (pllNewickNodeInfo *) sList->item;
+ if (!sItem->rank) /* leaf */
+ {
+ if (!pllHashSearch (pInst->nameHash, sItem->name, &dummy)) return (PLL_FALSE);
+ }
+ }
+
+ return (PLL_TRUE);
+}
+
+/** @brief Relink the taxa
+
+ Relink the taxa by performing a preorder traversal of the unrooted binary tree.
+ We assume that the tree is rooted such that the root is the only node of
+ out-degree 3 and in-degree 0, while all the other inner nodes have in-degree
+ 1 and out-degree 2. Finally, the leaves have in-degree 1 and out-degree 0.
+
+ @param pInst
+ PLL instance
+
+ @param nTree
+ Parsed newick tree structure
+
+ @param taxaExist
+ Is the set of taxa of \a nTree a subset of the taxa of the current tree
+
+ @return
+*/
+static int
+linkTaxa (pllInstance * pInst, pllNewickTree * nTree, int taxaExist)
+{
+ nodeptr
+ parent,
+ child;
+ pllStack
+ * nodeStack = NULL,
+ * current;
+ int
+ i,
+ j,
+ inner = nTree->tips + 1,
+ leaf = 1;
+ double z;
+ pllNewickNodeInfo * nodeInfo;
+
+ if (!taxaExist) pllTreeInitDefaults (pInst, nTree->tips);
+
+ /* Place the ternary root node 3 times on the stack such that later on
+ three nodes use it as their parent */
+ current = nTree->tree;
+ for (parent = pInst->nodep[inner], i = 0; i < 3; ++ i, parent = parent->next)
+ pllStackPush (&nodeStack, parent);
+ ++ inner;
+
+ /* now traverse the rest of the nodes */
+ for (current = current->next; current; current = current->next)
+ {
+ parent = (nodeptr) pllStackPop (&nodeStack);
+ nodeInfo = (pllNewickNodeInfo *) current->item;
+
+ /* if inner node place it twice on the stack (out-degree 2) */
+ if (nodeInfo->rank)
+ {
+ child = pInst->nodep[inner ++];
+ pllStackPush (&nodeStack, child->next);
+ pllStackPush (&nodeStack, child->next->next);
+ }
+ else /* check if taxon already exists, i.e. we loaded another tree topology */
+ {
+ if (taxaExist)
+ {
+ assert (pllHashSearch (pInst->nameHash, nodeInfo->name, (void **) &child));
+ }
+ else
+ {
+ child = pInst->nodep[leaf];
+ pInst->nameList[leaf] = strdup (nodeInfo->name);
+ pllHashAdd (pInst->nameHash, pllHashString(pInst->nameList[leaf], pInst->nameHash->size), pInst->nameList[leaf], (void *) (pInst->nodep[leaf]));
+ ++ leaf;
+ }
+ }
+ assert (parent);
+ /* link parent and child */
+ parent->back = child;
+ child->back = parent;
+
+ /* set the branch length */
+ z = exp (-1 * atof (nodeInfo->branch));
+ if (z < PLL_ZMIN) z = PLL_ZMIN;
+ if (z > PLL_ZMAX) z = PLL_ZMAX;
+ for (j = 0; j < PLL_NUM_BRANCHES; ++ j)
+ parent->z[j] = child->z[j] = z;
+ }
+ pllStackClear (&nodeStack);
+
+ return PLL_TRUE;
+}
+
+/** @brief Get the instantaneous rate matrix
+
+ Obtain the instantaneous rate matrix (Q) for partitionm \a model
+ of the partition list \a pr, and store it in an array \a outBuffer.
+
+ @param tr PLL instance
+ @param pr List of partitions
+ @param model Index of partition to use
+ @param outBuffer Where to store the instantaneous rate matrix
+
+ @todo Currently, the Q matrix can be only obtained for DNA GTR data.
+
+ @return Returns \b PLL_TRUE in case of success, otherwise \b PLL_FALSE
+*/
+int pllGetInstRateMatrix (partitionList * pr, int model, double * outBuffer)
+{
+ if (pr->partitionData[model]->dataType != PLL_DNA_DATA) return (PLL_FALSE);
+
+ int i;
+ double mean = 0;
+ double * substRates = pr->partitionData[model]->substRates;
+ double * freqs = pr->partitionData[model]->frequencies;
+
+ /* normalize substitution rates */
+ for (i = 0; i < 6; ++ i) substRates[i] /= substRates[5];
+
+ outBuffer[0 * 4 + 1] = (substRates[0] * freqs[1]);
+ outBuffer[0 * 4 + 2] = (substRates[1] * freqs[2]);
+ outBuffer[0 * 4 + 3] = (substRates[2] * freqs[3]);
+
+ outBuffer[1 * 4 + 0] = (substRates[0] * freqs[0]);
+ outBuffer[1 * 4 + 2] = (substRates[3] * freqs[2]);
+ outBuffer[1 * 4 + 3] = (substRates[4] * freqs[3]);
+
+ outBuffer[2 * 4 + 0] = (substRates[1] * freqs[0]);
+ outBuffer[2 * 4 + 1] = (substRates[3] * freqs[1]);
+ outBuffer[2 * 4 + 3] = (substRates[5] * freqs[3]);
+
+ outBuffer[3 * 4 + 0] = (substRates[2] * freqs[0]);
+ outBuffer[3 * 4 + 1] = (substRates[4] * freqs[1]);
+ outBuffer[3 * 4 + 2] = (substRates[5] * freqs[2]);
+
+ outBuffer[0 * 4 + 0] = -(substRates[0] * freqs[1] + substRates[1] * freqs[2] + substRates[2] * freqs[3]);
+ outBuffer[1 * 4 + 1] = -(substRates[0] * freqs[0] + substRates[3] * freqs[2] + substRates[4] * freqs[3]);
+ outBuffer[2 * 4 + 2] = -(substRates[1] * freqs[0] + substRates[3] * freqs[1] + substRates[5] * freqs[3]);
+ outBuffer[3 * 4 + 3] = -(substRates[2] * freqs[0] + substRates[4] * freqs[1] + substRates[5] * freqs[2]);
+
+ for (i = 0; i < 4; ++ i) mean += freqs[i] * (-outBuffer[i * 4 + i]);
+ for (i = 0; i < 16; ++ i) outBuffer[i] /= mean;
+
+ return (PLL_TRUE);
+}
+
+/** @ingroup instanceLinkingGroup
+ @brief Initializes the PLL tree topology according to a parsed newick tree
+
+ Set the tree topology based on a parsed and validated newick tree
+
+ @param tree
+ The PLL instance
+
+ @param nt
+ The \a pllNewickTree wrapper structure that contains the parsed newick tree
+
+ @param useDefaultz
+ If set to \b PLL_TRUE then the branch lengths will be reset to the default
+ value.
+*/
+void
+pllTreeInitTopologyNewick (pllInstance * tr, pllNewickTree * newick, int useDefaultz)
+{
+ linkTaxa (tr, newick, tr->nameHash && checkTreeInclusion (tr, newick));
+
+ tr->start = tr->nodep[1];
+
+ if (useDefaultz == PLL_TRUE)
+ resetBranches (tr);
+}
+
+/** @brief Get the node oriented pointer from a round-about node
+
+ Returns the pointer of the round-about node $p$ that has the orientation, i.e.
+ has the \a x flag set to 1. In case a tip is passed, then the returned pointer
+ is the same as the input.
+
+ @param pInst PLL instance
+ @param p One of the three pointers of a round-about node
+
+ @return Returns the the pointer that has the orientation
+*/
+nodeptr pllGetOrientedNodePointer (pllInstance * pInst, nodeptr p)
+{
+ if (p->number <= pInst->mxtips || p->x) return p;
+
+ if (p->next->x) return p->next;
+
+ return p->next->next;
+}
+
+
+//void
+//pllTreeInitTopologyNewick (pllInstance * tr, pllNewickTree * nt, int useDefaultz)
+//{
+// pllStack * nodeStack = NULL;
+// pllStack * head;
+// pllNewickNodeInfo * item;
+// int i, j, k;
+//
+///*
+// for (i = 0; i < partitions->numberOfPartitions; ++ i)
+// {
+// partitions->partitionData[i] = (pInfo *) rax_malloc (sizeof (pInfo));
+// partitions->partitionData[i]->partitionContribution = -1.0;
+// partitions->partitionData[i]->partitionLH = 0.0;
+// partitions->partitionData[i]->fracchange = 1.0;
+// }
+//*/
+//
+//
+// if (tr->nameHash)
+// {
+// if (checkTreeInclusion (tr, nt))
+// {
+// printf ("It is a subset\n");
+// }
+// else
+// {
+// printf ("It is not a subset\n");
+// }
+// }
+//
+// pllTreeInitDefaults (tr, nt->tips);
+//
+// i = nt->tips + 1;
+// j = 1;
+// nodeptr v;
+//
+//
+// for (head = nt->tree; head; head = head->next)
+// {
+// item = (pllNewickNodeInfo *) head->item;
+// if (!nodeStack)
+// {
+// pllStackPush (&nodeStack, tr->nodep[i]);
+// pllStackPush (&nodeStack, tr->nodep[i]->next);
+// pllStackPush (&nodeStack, tr->nodep[i]->next->next);
+// ++i;
+// }
+// else
+// {
+// v = (nodeptr) pllStackPop (&nodeStack);
+// if (item->rank) /* internal node */
+// {
+// v->back = tr->nodep[i];
+// tr->nodep[i]->back = v; //t->nodep[v->number]
+// pllStackPush (&nodeStack, tr->nodep[i]->next);
+// pllStackPush (&nodeStack, tr->nodep[i]->next->next);
+// double z = exp((-1 * atof(item->branch))/tr->fracchange);
+// if(z < PLL_ZMIN) z = PLL_ZMIN;
+// if(z > PLL_ZMAX) z = PLL_ZMAX;
+// for (k = 0; k < PLL_NUM_BRANCHES; ++ k)
+// v->z[k] = tr->nodep[i]->z[k] = z;
+//
+// ++ i;
+// }
+// else /* leaf */
+// {
+// v->back = tr->nodep[j];
+// tr->nodep[j]->back = v; //t->nodep[v->number];
+//
+// double z = exp((-1 * atof(item->branch))/tr->fracchange);
+// if(z < PLL_ZMIN) z = PLL_ZMIN;
+// if(z > PLL_ZMAX) z = PLL_ZMAX;
+// for (k = 0; k < PLL_NUM_BRANCHES; ++ k)
+// v->z[k] = tr->nodep[j]->z[k] = z;
+//
+// //t->nameList[j] = strdup (item->name);
+// tr->nameList[j] = (char *) rax_malloc ((strlen (item->name) + 1) * sizeof (char));
+// strcpy (tr->nameList[j], item->name);
+//
+// pllHashAdd (tr->nameHash, tr->nameList[j], (void *) (tr->nodep[j]));
+// ++ j;
+// }
+// }
+// }
+//
+// tr->start = tr->nodep[1];
+//
+// pllStackClear (&nodeStack);
+//
+// if (useDefaultz == PLL_TRUE)
+// resetBranches (tr);
+//}
+
+/** @brief Initialize PLL tree with a random topology
+
+ Initializes the PLL tree with a randomly created topology
+
+ @todo
+ Perhaps pass a seed?
+
+ @param tr
+ The PLL instance
+
+ @param tips
+ Number of tips
+
+ @param nameList
+ A set of \a tips names representing the taxa labels
+*/
+void
+pllTreeInitTopologyRandom (pllInstance * tr, int tips, char ** nameList)
+{
+ int i;
+ pllTreeInitDefaults (tr, tips);
+
+ for (i = 1; i <= tips; ++ i)
+ {
+ tr->nameList[i] = (char *) rax_malloc ((strlen (nameList[i]) + 1) * sizeof (char));
+ strcpy (tr->nameList[i], nameList[i]);
+ pllHashAdd (tr->nameHash, pllHashString(tr->nameList[i], tr->nameHash->size), tr->nameList[i], (void *) (tr->nodep[i]));
+ }
+
+
+ pllMakeRandomTree (tr);
+}
+
+
+/** @brief Initialize a tree that corresponds to a given (already parsed) alignment
+
+ Initializes the PLL tree such that it corresponds to the given alignment
+
+ @todo
+ nothing
+
+ @param tr
+ The PLL instance
+
+ @param alignmentData
+ Parsed alignment
+*/
+void
+pllTreeInitTopologyForAlignment (pllInstance * tr, pllAlignmentData * alignmentData)
+{
+ int
+ tips = alignmentData->sequenceCount,
+ i;
+
+ char
+ **nameList = alignmentData->sequenceLabels;
+
+ pllTreeInitDefaults (tr, tips);
+
+ for (i = 1; i <= tips; ++ i)
+ {
+ tr->nameList[i] = (char *) rax_malloc ((strlen (nameList[i]) + 1) * sizeof (char));
+ strcpy (tr->nameList[i], nameList[i]);
+ pllHashAdd (tr->nameHash, pllHashString(tr->nameList[i], tr->nameHash->size), tr->nameList[i], (void *) (tr->nodep[i]));
+ }
+}
+
+
+/** @brief Compute a randomized stepwise addition oder parsimony tree
+
+ Implements the RAxML randomized stepwise addition order algorithm
+
+ @todo
+ check functions that are invoked for potential memory leaks!
+
+ @param tr
+ The PLL instance
+
+ @param partitions
+ The partitions
+*/
+void pllComputeRandomizedStepwiseAdditionParsimonyTree(pllInstance * tr, partitionList * partitions)
+{
+ allocateParsimonyDataStructures(tr, partitions);
+ pllMakeParsimonyTreeFast(tr, partitions);
+ pllFreeParsimonyDataStructures(tr, partitions);
+}
+
+/** @brief Encode the alignment data to the PLL numerical representation
+
+ Transforms the alignment to the PLL internal representation by substituting each base
+ with a specific digit.
+
+ @param alignmentData Multiple sequence alignment
+ @param partitions List of partitions
+*/
+void pllBaseSubstitute (pllInstance * tr, partitionList * partitions)
+{
+ const char * d;
+ int i, j, k;
+
+ for (i = 0; i < partitions->numberOfPartitions; ++ i)
+ {
+ switch (partitions->partitionData[i]->dataType)
+ {
+ case PLL_DNA_DATA:
+ d = PLL_MAP_NT;
+ break;
+ case PLL_BINARY_DATA:
+ d = PLL_MAP_BIN;
+ break;
+ case PLL_AA_DATA:
+ d = PLL_MAP_AA;
+ break;
+ default:
+ assert(0);
+ }
+
+ for (j = 1; j <= tr->mxtips; ++ j)
+ {
+ for (k = partitions->partitionData[i]->lower; k < partitions->partitionData[i]->upper; ++ k)
+ {
+ tr->yVector[j][k] = d[tr->yVector[j][k]];
+ }
+ }
+ }
+}
+
+/** Clears the rearrangements history from PLL instance
+
+ Clears the rearrangements rollback information (history) from the PLL instance \a tr.
+
+ @param tr
+ PLL instance
+*/
+void pllClearRearrangeHistory (pllInstance * tr)
+{
+ pllRollbackInfo * ri;
+
+ while ((ri = (pllRollbackInfo *)pllStackPop (&(tr->rearrangeHistory))))
+ {
+ rax_free (ri);
+ }
+}
+
+/** @brief Deallocate the PLL instance
+
+ Deallocates the library instance and all its elements.
+
+ @param tr
+ The PLL instance
+*/
+void
+pllDestroyInstance (pllInstance * tr)
+{
+ int i;
+
+ for (i = 1; i <= tr->mxtips; ++ i)
+ rax_free (tr->nameList[i]);
+
+ pllHashDestroy (&(tr->nameHash), NULL);
+ if (tr->yVector)
+ {
+ if (tr->yVector[0]) rax_free (tr->yVector[0]);
+ rax_free (tr->yVector);
+ }
+ rax_free (tr->aliaswgt);
+ rax_free (tr->rateCategory);
+ rax_free (tr->patrat);
+ rax_free (tr->patratStored);
+ rax_free (tr->lhs);
+ rax_free (tr->td[0].parameterValues);
+ rax_free (tr->td[0].executeModel);
+ rax_free (tr->td[0].ti);
+ rax_free (tr->nameList);
+ rax_free (tr->nodep);
+ rax_free (tr->nodeBaseAddress);
+ rax_free (tr->tree_string);
+ rax_free (tr->tree0);
+ rax_free (tr->tree1);
+ rax_free (tr->tipNames);
+ rax_free (tr->constraintVector);
+ pllClearRearrangeHistory (tr);
+
+ rax_free (tr);
+
+#ifdef _FINE_GRAIN_MPI
+ pllFinalizeMPI ();
+#endif
+
+}
+
+/* initializwe a parameter linkage list for a certain parameter type (can be whatever).
+ the input is an integer vector that contaions NumberOfModels (numberOfPartitions) elements.
+
+ if we want to have all alpha parameters unlinked and have say 4 partitions the input
+ vector would look like this: {0, 1, 2, 3}, if we want to link partitions 0 and 3 the vector
+ should look like this: {0, 1, 2, 0}
+*/
+
+
+
+static int init_Q_MatrixSymmetries(char *linkageString, partitionList * pr, int model)
+{
+ int
+ states = pr->partitionData[model]->states,
+ numberOfRates = ((states * states - states) / 2),
+ *list = (int *)rax_malloc(sizeof(int) * numberOfRates),
+ j,
+ max = -1;
+
+ char
+ *str1,
+ *saveptr,
+ *ch,
+ *token;
+
+ ch = (char *) rax_malloc (strlen (linkageString) + 1);
+ strcpy (ch, linkageString);
+
+
+ for(j = 0, str1 = ch; ;j++, str1 = (char *)NULL)
+ {
+ token = STRTOK_R(str1, ",", &saveptr);
+ if(token == (char *)NULL)
+ break;
+ if(!(j < numberOfRates))
+ {
+ errno = PLL_SUBSTITUTION_RATE_OUT_OF_BOUNDS;
+ return PLL_FALSE;
+ }
+ list[j] = atoi(token);
+ }
+
+ rax_free(ch);
+
+ for(j = 0; j < numberOfRates; j++)
+ {
+ if(!(list[j] <= j))
+ {
+ errno = PLL_INVALID_Q_MATRIX_SYMMETRY;
+ return PLL_FALSE;
+ }
+
+ if(!(list[j] <= max + 1))
+ {
+ errno = PLL_Q_MATRIX_SYMMETRY_OUT_OF_BOUNDS;
+ return PLL_FALSE;
+ }
+
+ if(list[j] > max)
+ max = list[j];
+ }
+
+ for(j = 0; j < numberOfRates; j++)
+ pr->partitionData[model]->symmetryVector[j] = list[j];
+
+ //less than the maximum possible number of rate parameters
+
+ if(max < numberOfRates - 1)
+ pr->partitionData[model]->nonGTR = PLL_TRUE;
+
+ pr->partitionData[model]->optimizeSubstitutionRates = PLL_TRUE;
+
+ rax_free(list);
+
+ return PLL_TRUE;
+}
+
+/** @brief Check parameter linkage across partitions for consistency
+ *
+ * Checks that linked alpha, substitution rate and frequency model parameters
+ * across several partitions are consistent. E.g., when two partitions are linked
+ * via the alpha parameter, the alpha parameter should either be set to the same
+ * fixed value or it should be estimated!
+ *
+ * @param pr
+ * List of partitions
+ *
+ * @todo
+ * Call this in more functions, right now it's only invoked in the wrapper
+ * for modOpt()
+ */
+static int checkLinkageConsistency(partitionList *pr)
+{
+ if(pr->dirty)
+ {
+ int
+ i;
+
+ linkageList
+ *ll;
+
+ /* first deal with rates */
+
+ ll = pr->rateList;
+
+ for(i = 0; i < ll->entries; i++)
+ {
+ int
+ partitions = ll->ld[i].partitions,
+ reference = ll->ld[i].partitionList[0];
+
+ if(pr->partitionData[reference]->dataType == PLL_AA_DATA)
+ {
+ if(pr->partitionData[reference]->protModels == PLL_GTR || pr->partitionData[reference]->nonGTR)
+ {
+ if(!(pr->partitionData[reference]->optimizeSubstitutionRates == PLL_TRUE))
+ {
+ errno = PLL_INCONSISTENT_SUBST_RATE_OPTIMIZATION_SETTING;
+ return PLL_FALSE;
+ }
+ }
+ else
+ {
+ if(!(pr->partitionData[reference]->optimizeSubstitutionRates == PLL_FALSE))
+ {
+ errno = PLL_INCONSISTENT_SUBST_RATE_OPTIMIZATION_SETTING;
+ return PLL_FALSE;
+ }
+ }
+ }
+
+ if(partitions > 1)
+ {
+ int
+ j,
+ k;
+
+ for(k = 1; k < partitions; k++)
+ {
+ int
+ index = ll->ld[i].partitionList[k];
+
+ int
+ states = pr->partitionData[index]->states,
+ rates = ((states * states - states) / 2);
+
+ if(!(pr->partitionData[reference]->nonGTR == pr->partitionData[index]->nonGTR))
+ {
+ errno = PLL_INCONSISTENT_SUBST_RATE_OPTIMIZATION_SETTING;
+ return PLL_FALSE;
+ }
+ if(!(pr->partitionData[reference]->optimizeSubstitutionRates == pr->partitionData[index]->optimizeSubstitutionRates))
+ {
+ errno = PLL_INCONSISTENT_SUBST_RATE_OPTIMIZATION_SETTING;
+ return PLL_FALSE;
+ }
+
+
+ if(pr->partitionData[reference]->nonGTR)
+ {
+
+ for(j = 0; j < rates; j++)
+ {
+ if(!(pr->partitionData[reference]->symmetryVector[j] == pr->partitionData[index]->symmetryVector[j]))
+ {
+ errno = PLL_INCONSISTENT_Q_MATRIX_SYMMETRIES_ACROSS_LINKED_PARTITIONS;
+ return PLL_FALSE;
+ }
+ }
+ }
+
+
+ for(j = 0; j < rates; j++)
+ {
+ if(!(pr->partitionData[reference]->substRates[j] == pr->partitionData[index]->substRates[j]))
+ {
+ errno = PLL_INCONSISTENT_Q_MATRIX_ENTRIES_ACROSS_LINKED_PARTITIONS;
+ return PLL_FALSE;
+ }
+ }
+ }
+ }
+ }
+
+ /* then deal with alpha parameters */
+
+ ll = pr->alphaList;
+
+ for(i = 0; i < ll->entries; i++)
+ {
+ int
+ partitions = ll->ld[i].partitions;
+
+ if(partitions > 1)
+ {
+ int
+ k,
+ reference = ll->ld[i].partitionList[0];
+
+ for(k = 1; k < partitions; k++)
+ {
+ int
+ index = ll->ld[i].partitionList[k];
+
+ if(!(pr->partitionData[reference]->optimizeAlphaParameter == pr->partitionData[index]->optimizeAlphaParameter))
+ {
+ errno = PLL_INCONSISTENT_ALPHA_STATES_ACROSS_LINKED_PARTITIONS;
+ return PLL_FALSE;
+ }
+ if(!(pr->partitionData[reference]->alpha == pr->partitionData[index]->alpha))
+ {
+ errno = PLL_INCONSISTENT_ALPHA_VALUES_ACROSS_LINKED_PARTITIONS;
+ return PLL_FALSE;
+ }
+ }
+ }
+ }
+
+ /* and then deal with base frequencies */
+
+ ll = pr->freqList;
+
+ for(i = 0; i < ll->entries; i++)
+ {
+ int
+ partitions = ll->ld[i].partitions;
+
+ if(partitions > 1)
+ {
+ int
+ k,
+ reference = ll->ld[i].partitionList[0];
+
+ for(k = 1; k < partitions; k++)
+ {
+ int
+ j,
+ index = ll->ld[i].partitionList[k],
+ states = pr->partitionData[index]->states;
+
+ if(!(pr->partitionData[reference]->optimizeBaseFrequencies == pr->partitionData[index]->optimizeBaseFrequencies))
+ {
+ errno = PLL_INCONSISTENT_FREQUENCY_STATES_ACROSS_LINKED_PARTITIONS;
+ return PLL_FALSE;
+ }
+
+ for(j = 0; j < states; j++)
+ {
+ if(!(pr->partitionData[reference]->frequencies[j] == pr->partitionData[index]->frequencies[j]))
+ {
+ errno = PLL_INCONSISTENT_FREQUENCY_VALUES_ACROSS_LINKED_PARTITIONS;
+ return PLL_FALSE;
+ }
+ }
+ }
+ }
+ }
+
+ pr->dirty = PLL_FALSE;
+ }
+
+ return PLL_TRUE;
+}
+/** @brief Set symmetries among parameters in the Q matrix
+
+ Allows to link some or all rate parameters in the Q-matrix
+ for obtaining simpler models than GTR
+
+ @param string
+ string describing the symmetry pattern among the rates in the Q matrix
+
+ @param pr
+ List of partitions
+
+ @param model
+ Index of the partition for which we want to set the Q matrix symmetries
+
+ @todo
+ nothing
+*/
+int pllSetSubstitutionRateMatrixSymmetries(char *string, partitionList * pr, int model)
+{
+ int
+ result = init_Q_MatrixSymmetries(string, pr, model);
+
+ pr->dirty = PLL_TRUE;
+
+ return result;
+}
+
+/** @defgroup modelParamsGroup Model parameters setup and retrieval
+
+ This set of functions is responsible for setting, retrieving, and optimizing
+ model parameters. It also contains functions for linking model parameters
+ across partitions.
+*/
+
+/** @ingroup modelParamsGroups
+ @brief Set the alpha parameter of the Gamma model to a fixed value for a partition
+
+ Sets the alpha parameter of the gamma model of rate heterogeneity to a fixed value
+ and disables the optimization of this parameter
+
+ @param alpha
+ alpha value
+
+ @param model
+ Index of the partition for which we want to set the alpha value
+
+ @param pr
+ List of partitions
+
+ @param tr
+ Library instance for which we want to fix alpha
+
+ @todo
+ test if this works with the parallel versions
+*/
+void pllSetFixedAlpha(double alpha, int model, partitionList * pr, pllInstance *tr)
+{
+ //make sure that we are swetting alpha for a partition within the current range
+ //of partitions
+
+ assert(model >= 0 && model < pr->numberOfPartitions);
+
+ assert(alpha >= PLL_ALPHA_MIN && alpha <= PLL_ALPHA_MAX);
+
+ //set the alpha paremeter
+
+ pr->partitionData[model]->alpha = alpha;
+
+ //do the discretization of the gamma curve
+
+ pllMakeGammaCats(pr->partitionData[model]->alpha, pr->partitionData[model]->gammaRates, 4, tr->useMedian);
+
+ //broadcast the changed parameters to all threads/MPI processes
+
+#if (defined(_FINE_GRAIN_MPI) || defined(_USE_PTHREADS))
+ pllMasterBarrier(tr, pr, PLL_THREAD_COPY_ALPHA);
+#endif
+
+ pr->partitionData[model]->optimizeAlphaParameter = PLL_FALSE;
+
+ pr->dirty = PLL_FALSE;
+}
+
+/** @ingroup modelParamsGroups
+ @brief Get the rate categories of the Gamma model of a partition
+
+ Gets the gamma rate categories of the Gamma model of rate heterogeneity
+ of partition \a pid from partition list \a pr.
+
+ @param pr List of partitions
+ @param pid Index of partition to use
+ @param outBuffer Output buffer where to store the rates
+*/
+void pllGetGammaRates (partitionList * pr, int pid, double * outBuffer)
+{
+ /* TODO: Change the hardcoded 4 and also add a check that this partition
+ really uses gamma. Currently, instance is also not required */
+ memcpy (outBuffer, pr->partitionData[pid]->gammaRates, 4 * sizeof (double));
+}
+
+/** @ingroup modelParamsGroups
+ @brief Get the alpha parameter of the Gamma model of a partition
+
+ Returns the alpha parameter of the gamma model of rate heterogeneity
+ of partition \a pid from partition list \a pr.
+
+ @param pr List of partitions
+ @param pid Index of partition to use
+
+ @return
+ Alpha parameter
+*/
+double pllGetAlpha (partitionList * pr, int pid)
+{
+ /* TODO: check if the partition uses gamma */
+ return (pr->partitionData[pid]->alpha);
+}
+
+
+/** @ingroup modelParamsGroups
+ @brief Get the base frequencies of a partition
+
+ Gets the base frequencies of partition \a model from partition list
+ \a partitionList and stores them in \a outBuffer. Note that \outBuffer
+ must be of size s, where s is the number of states.
+
+ @param tr PLL instance
+ @param pr List of partitions
+ @param model Index of the partition for which we want to get the base frequencies
+ @param outBuffer Buffer where to store the base frequencies
+*/
+void pllGetBaseFrequencies(partitionList * pr, int model, double * outBuffer)
+{
+ memcpy (outBuffer, pr->partitionData[model]->frequencies, pr->partitionData[model]->states * sizeof (double));
+}
+
+
+/** @ingroup modelParamsGroups
+ @brief Set all base frequencies to a fixed value for a partition
+
+ Sets all base freuqencies of a partition to fixed values and disables
+ ML optimization of these parameters
+
+ @param f
+ array containing the base frequencies
+
+ @param length
+ length of array f, this needs to be as long as the number of
+ states in the model, otherwise an assertion will fail!
+
+ @param model
+ Index of the partition for which we want to set the frequencies
+
+ @param pr
+ List of partitions
+
+ @param tr
+ Library instance for which we want to fix the base frequencies
+
+ @todo
+ test if this works with the parallel versions
+*/
+void pllSetFixedBaseFrequencies(double *f, int length, int model, partitionList * pr, pllInstance *tr)
+{
+ int
+ i;
+
+ double
+ acc = 0.0;
+
+ //make sure that we are setting the base frequencies for a partition within the current range
+ //of partitions
+ assert(model >= 0 && model < pr->numberOfPartitions);
+
+ //make sure that the length of the input array f containing the frequencies
+ //is as long as the number of states in the model
+ assert(length == pr->partitionData[model]->states);
+
+
+ //make sure that the base frequencies sum approximately to 1.0
+
+ for(i = 0; i < length; i++)
+ acc += f[i];
+
+ if(fabs(acc - 1.0) > 0.000001)
+ assert(0);
+
+ //copy the base frequencies
+ memcpy(pr->partitionData[model]->frequencies, f, sizeof(double) * length);
+
+ //re-calculate the Q matrix
+ pllInitReversibleGTR(tr, pr, model);
+
+
+ //broadcast the new Q matrix to all threads/processes
+#if (defined(_FINE_GRAIN_MPI) || defined(_USE_PTHREADS))
+ pllMasterBarrier (tr, pr, PLL_THREAD_COPY_RATES);
+#endif
+
+ pr->partitionData[model]->optimizeBaseFrequencies = PLL_FALSE;
+
+ pr->dirty = PLL_TRUE;
+}
+
+/** @ingroup modelParamsGroups
+ @brief Set that the base freuqencies are optimized under ML
+
+ The base freuqencies for partition model will be optimized under ML
+
+ @param model
+ Index of the partition for which we want to optimize base frequencies
+
+ @param pr
+ List of partitions
+
+ @param tr
+ Library instance for which we want to fix the base frequencies
+
+ @todo
+ test if this works with the parallel versions
+*/
+int pllSetOptimizeBaseFrequencies(int model, partitionList * pr, pllInstance *tr)
+{
+ int
+ states,
+ i;
+
+ double
+ initialFrequency,
+ acc = 0.0;
+
+ //make sure that we are setting the base frequencies for a partition within the current range
+ //of partitions
+ if(!(model >= 0 && model < pr->numberOfPartitions))
+ {
+ errno = PLL_PARTITION_OUT_OF_BOUNDS;
+ return PLL_FALSE;
+ }
+
+ //set the number of states/ferquencies in this partition
+ states = pr->partitionData[model]->states;
+
+ //set all frequencies to 1/states
+
+ initialFrequency = 1.0 / (double)states;
+
+ for(i = 0; i < states; i++)
+ pr->partitionData[model]->frequencies[i] = initialFrequency;
+
+ //make sure that the base frequencies sum approximately to 1.0
+
+ for(i = 0; i < states; i++)
+ acc += pr->partitionData[model]->frequencies[i];
+
+ if(fabs(acc - 1.0) > 0.000001)
+ {
+ errno = PLL_BASE_FREQUENCIES_DO_NOT_SUM_TO_1;
+ return PLL_FALSE;
+ }
+
+ //re-calculate the Q matrix
+ pllInitReversibleGTR(tr, pr, model);
+
+ //broadcast the new Q matrix to all threads/processes
+#if (defined(_FINE_GRAIN_MPI) || defined(_USE_PTHREADS))
+ pllMasterBarrier (tr, pr, PLL_THREAD_COPY_RATES);
+#endif
+
+ pr->partitionData[model]->optimizeBaseFrequencies = PLL_TRUE;
+
+ pr->dirty = PLL_TRUE;
+
+ return PLL_TRUE;
+}
+
+
+
+
+/** @ingroup modelParamsGroups
+ @brief Get the substitution rates for a specific partition
+
+ Gets the substitution rates of partition \a model from partition list
+ \a partitionList and stores them in \a outBuffer. Note that \outBuffer
+ must be of size (2 * s - s) / 2, where s is the number of states, i.e.
+ the number of upper diagonal entries of the Q matrix.
+
+ @param tr PLL instance
+ @param pr List of partitions
+ @param model Index of partition for which we want to get the substitution rates
+ @param outBuffer Buffer where to store the substitution rates.
+*/
+void pllGetSubstitutionMatrix (partitionList * pr, int model, double * outBuffer)
+{
+ int
+ rates,
+ states;
+
+ states = pr->partitionData[model]->states;
+ rates = (states * states - states) / 2;
+
+ memcpy (outBuffer, pr->partitionData[model]->substRates, rates * sizeof (double));
+}
+
+/** @ingroup modelParamsGroups
+ @brief Set all substitution rates for a specific partition and disable ML optimization for them
+
+ Sets all substitution rates of a partition to fixed values and disables
+ ML optimization of these parameters. It will automatically re-scale the relative rates
+ such that the last rate is 1.0
+
+ @param f
+ array containing the substitution rates
+
+ @param length
+ length of array f, this needs to be as long as: (s * s - s) / 2,
+ i.e., the number of upper diagonal entries of the Q matrix
+
+ @param model
+ Index of the partition for which we want to set/fix the substitution rates
+
+ @param pr
+ List of partitions
+
+ @param tr
+ Library instance for which we want to fix the substitution rates
+
+ @todo
+ test if this works with the parallel versions
+*/
+void pllSetFixedSubstitutionMatrix(double *q, int length, int model, partitionList * pr, pllInstance *tr)
+{
+ pllSetSubstitutionMatrix(q, length, model, pr, tr);
+ pr->partitionData[model]->optimizeSubstitutionRates = PLL_FALSE;
+}
+
+/** @ingroup modelParamsGroups
+ @brief Set all substitution rates for a specific partition
+
+ Sets all substitution rates of a partition to the given values.
+ It will automatically re-scale the relative rates such that the last rate is 1.0
+
+ @param f
+ array containing the substitution rates
+
+ @param length
+ length of array f, this needs to be as long as: (s * s - s) / 2,
+ i.e., the number of upper diagonal entries of the Q matrix
+
+ @param model
+ Index of the partition for which we want to set/fix the substitution rates
+
+ @param pr
+ List of partitions
+
+ @param tr
+ Library instance for which we want to fix the substitution rates
+
+ @todo
+ test if this works with the parallel versions
+*/
+void pllSetSubstitutionMatrix(double *q, int length, int model, partitionList * pr, pllInstance *tr)
+{
+ int
+ i,
+ numberOfRates;
+
+ double
+ scaler;
+
+ //make sure that we are setting the Q matrix for a partition within the current range
+ //of partitions
+ assert(model >= 0 && model < pr->numberOfPartitions);
+
+ numberOfRates = (pr->partitionData[model]->states * pr->partitionData[model]->states - pr->partitionData[model]->states) / 2;
+
+ // make sure that the length of the array containing the subsitution rates
+ // corresponds to the number of states in the model
+
+ assert(length == numberOfRates);
+
+ //automatically scale the last rate to 1.0 if this is not already the case
+
+ if(q[length - 1] != 1.0)
+ scaler = 1.0 / q[length - 1];
+ else
+ scaler = 1.0;
+
+ //set the rates for the partition and make sure that they are within the allowed bounds
+
+ for(i = 0; i < length; i++)
+ {
+ double
+ r = q[i] * scaler;
+
+ assert(r >= PLL_RATE_MIN && r <= PLL_RATE_MAX);
+
+ pr->partitionData[model]->substRates[i] = r;
+ }
+
+ //re-calculate the Q matrix
+ pllInitReversibleGTR(tr, pr, model);
+
+ //broadcast the new Q matrix to all threads/processes
+#if (defined(_FINE_GRAIN_MPI) || defined(_USE_PTHREADS))
+ pllMasterBarrier (tr, pr, PLL_THREAD_COPY_RATES);
+#endif
+
+
+ pr->dirty = PLL_TRUE;
+}
+
+
+
+
+/* initialize a parameter linkage list for a certain parameter type (can be whatever).
+ the input is an integer vector that contaions NumberOfModels (numberOfPartitions) elements.
+
+ if we want to have all alpha parameters unlinked and have say 4 partitions the input
+ vector would look like this: {0, 1, 2, 3}, if we want to link partitions 0 and 3 the vector
+ should look like this: {0, 1, 2, 0}
+*/
+
+/** @ingroup modelParamsGroups
+*/
+linkageList* initLinkageList(int *linkList, partitionList *pr)
+{
+ int
+ k,
+ partitions,
+ numberOfModels = 0,
+ i,
+ pos;
+
+ linkageList
+ *ll = (linkageList*)rax_malloc(sizeof(linkageList));
+
+ /* figure out how many distinct parameters we need to estimate
+ in total, if all parameters are linked the result will be 1 if all
+ are unlinked the result will be pr->numberOfPartitions */
+
+ for(i = 0; i < pr->numberOfPartitions; i++)
+ {
+ if(!(linkList[i] >= 0 && linkList[i] < pr->numberOfPartitions))
+ {
+ errno = PLL_LINKAGE_LIST_OUT_OF_BOUNDS;
+ return (linkageList*)NULL;
+ }
+
+ if(!(linkList[i] <= i && linkList[i] <= numberOfModels + 1))
+ {
+ errno = PLL_LINKAGE_LIST_OUT_OF_BOUNDS;
+ return (linkageList*)NULL;
+ }
+
+ if(linkList[i] > numberOfModels)
+ numberOfModels = linkList[i];
+
+ }
+
+ numberOfModels++;
+
+ /* allocate the linkage list data structure that containes information which parameters of which partition are
+ linked with each other.
+
+ Note that we need a separate invocation of initLinkageList() and a separate linkage list
+ for each parameter type */
+
+ ll->entries = numberOfModels;
+ ll->ld = (linkageData*)rax_malloc(sizeof(linkageData) * numberOfModels);
+
+ /* noe loop over the number of free parameters and assign the corresponding partitions to each parameter */
+
+ for(i = 0; i < numberOfModels; i++)
+ {
+ /*
+ the valid flag is used for distinguishing between DNA and protein data partitions.
+ This can be used to enable/disable parameter optimization for the paremeter
+ associated to the corresponding partitions. This deature is used in optRatesGeneric
+ to first optimize all DNA GTR rate matrices and then all PROT GTR rate matrices */
+
+ ll->ld[i].valid = PLL_TRUE;
+ partitions = 0;
+
+ /* now figure out how many partitions share this joint parameter */
+
+ for(k = 0; k < pr->numberOfPartitions; k++)
+ if(linkList[k] == i)
+ partitions++;
+
+ /* assign a list to store the partitions that share the parameter */
+
+ ll->ld[i].partitions = partitions;
+ ll->ld[i].partitionList = (int*)rax_malloc(sizeof(int) * partitions);
+
+ /* now store the respective partition indices in this list */
+
+ for(k = 0, pos = 0; k < pr->numberOfPartitions; k++)
+ if(linkList[k] == i)
+ ll->ld[i].partitionList[pos++] = k;
+ }
+
+ /* return the linkage list for the parameter */
+
+ return ll;
+}
+
+
+
+static linkageList* initLinkageListString(char *linkageString, partitionList * pr)
+{
+ int
+ *list = (int*)rax_malloc(sizeof(int) * pr->numberOfPartitions),
+ j;
+
+ linkageList
+ *l;
+
+ char
+ *str1,
+ *saveptr,
+// *ch = strdup(linkageString),
+ *ch,
+ *token;
+
+ ch = (char *) rax_malloc (strlen (linkageString) + 1);
+ strcpy (ch, linkageString);
+
+ for(j = 0, str1 = ch; ;j++, str1 = (char *)NULL)
+ {
+ token = STRTOK_R(str1, ",", &saveptr);
+ if(token == (char *)NULL)
+ break;
+ assert(j < pr->numberOfPartitions);
+ list[j] = atoi(token);
+ }
+
+ rax_free(ch);
+
+ l = initLinkageList(list, pr);
+
+ rax_free(list);
+
+ return l;
+}
+
+/** @ingroup modelParamsGroups
+ @brief Link alpha parameters across partitions
+
+ Links alpha paremeters across partitions (GAMMA model of rate heterogeneity)
+
+ @param string
+ string describing the linkage pattern
+
+ @param pr
+ List of partitions
+
+ @todo
+ test behavior/impact/mem-leaks of this when PSR model is used
+ it shouldn't do any harm, but it would be better to check!
+*/
+int pllLinkAlphaParameters(char *string, partitionList *pr)
+{
+ //assumes that it has already been assigned once
+ freeLinkageList(pr->alphaList);
+
+ pr->alphaList = initLinkageListString(string, pr);
+
+ pr->dirty = PLL_TRUE;
+
+ if(!pr->alphaList)
+ return PLL_FALSE;
+ else
+ return PLL_TRUE;
+}
+
+/** @ingroup modelParamsGroups
+ @brief Link base frequency parameters across partitions
+
+ Links base frequency paremeters across partitions
+
+ @param string
+ string describing the linkage pattern
+
+ @param pr
+ List of partitions
+
+ @todo
+ semantics of this function not clear yet: right now this only has an effect
+ when we do a ML estimate of base frequencies
+ when we use empirical or model-defined (protein data) base frequencies, one could
+ maybe average over the per-partition frequencies, but the averages would need to be weighted
+ accodring on the number of patterns per partition
+*/
+int pllLinkFrequencies(char *string, partitionList *pr)
+{
+ //assumes that it has already been assigned once
+ freeLinkageList(pr->freqList);
+
+ pr->freqList = initLinkageListString(string, pr);
+
+ pr->dirty = PLL_TRUE;
+
+ if(!pr->freqList)
+ return PLL_FALSE;
+ else
+ return PLL_TRUE;
+}
+
+/** @ingroup modelParamsGroups
+ @brief Link Substitution matrices across partitions
+
+ Links substitution matrices (Q matrices) across partitions
+
+ @param string
+ string describing the linkage pattern
+
+ @param pr
+ List of partitions
+
+ @todo
+ re-think/re-design how this is done for protein
+ models
+*/
+int pllLinkRates(char *string, partitionList *pr)
+{
+ //assumes that it has already been assigned once
+ freeLinkageList(pr->rateList);
+
+ pr->rateList = initLinkageListString(string, pr);
+
+ pr->dirty = PLL_TRUE;
+
+ if(!pr->dirty)
+ return PLL_FALSE;
+ else
+ return PLL_TRUE;
+}
+
+
+
+
+/** @ingroup modelParamsGroups
+ @brief Initialize partitions according to model parameters
+
+ Initializes partitions according to model parameters.
+
+ @param tr The PLL instance
+ @param partitions List of partitions
+ @param alignmentData The parsed alignment
+ @return Returns \b PLL_TRUE in case of success, otherwise \b PLL_FALSE
+*/
+int pllInitModel (pllInstance * tr, partitionList * partitions)
+{
+ double ** ef;
+ int
+ i,
+ *unlinked = (int *)rax_malloc(sizeof(int) * partitions->numberOfPartitions);
+
+ ef = pllBaseFrequenciesInstance (tr, partitions);
+
+ if(!ef)
+ return PLL_FALSE;
+
+
+#if ! (defined(__ppc) || defined(__powerpc__) || defined(PPC))
+#if (defined(__AVX) || defined(__SSE3))
+ _mm_setcsr( _mm_getcsr() | _MM_FLUSH_ZERO_ON);
+#endif
+#endif
+
+#ifdef _USE_PTHREADS
+ tr->threadID = 0;
+#ifndef _PORTABLE_PTHREADS
+ /* not very portable thread to core pinning if PORTABLE_PTHREADS is not defined
+ by defualt the cod ebelow is deactivated */
+ pinToCore(0);
+#endif
+#endif
+
+#if (defined(_FINE_GRAIN_MPI) || defined(_USE_PTHREADS))
+ /*
+ this main function is the master thread, so if we want to run RAxML with n threads,
+ we use pllStartPthreads to start the n-1 worker threads */
+
+#ifdef _USE_PTHREADS
+ pllStartPthreads (tr, partitions);
+#endif
+
+ /* via pllMasterBarrier() we invoke parallel regions in which all Pthreads work on computing something, mostly likelihood
+ computations. Have a look at execFunction() in axml.c where we siwtch of the different types of parallel regions.
+
+ Although not necessary, below we copy the info stored on tr->partitionData to corresponding copies in each thread.
+ While this is shared memory and we don't really need to copy stuff, it was implemented like this to allow for an easier
+ transition to a distributed memory implementation (MPI).
+ */
+#ifdef _FINE_GRAIN_MPI
+ //MPI_Bcast (&(partitions->numberOfPartitions), 1, MPI_INT, MPI_ROOT, MPI_COMM_WORLD);
+ MPI_Bcast (&(partitions->numberOfPartitions), 1, MPI_INT, 0, MPI_COMM_WORLD);
+#endif
+
+ /* mpi version now also uses the generic barrier */
+ pllMasterBarrier (tr, partitions, PLL_THREAD_INIT_PARTITION);
+#else /* SEQUENTIAL */
+ /*
+ allocate the required data structures for storing likelihood vectors etc
+ */
+
+ initializePartitionsSequential (tr, partitions);
+#endif
+
+ initModel (tr, ef, partitions);
+
+ pllEmpiricalFrequenciesDestroy (&ef, partitions->numberOfPartitions);
+
+ for(i = 0; i < partitions->numberOfPartitions; i++)
+ unlinked[i] = i;
+
+ //by default everything is unlinked initially
+ partitions->alphaList = initLinkageList(unlinked, partitions);
+ partitions->freqList = initLinkageList(unlinked, partitions);
+ partitions->rateList = initLinkageList(unlinked, partitions);
+
+ rax_free(unlinked);
+
+ pllEvaluateLikelihood (tr, partitions, tr->start, PLL_TRUE, PLL_FALSE);
+
+ return PLL_TRUE;
+}
+
+/** @ingroup modelParamsGroups
+ @brief Optimize all free model parameters of the likelihood model
+
+ Initializes partitions according to model parameters.
+
+ @param tr
+ The PLL instance
+
+ @param pr
+ List of partitions
+
+ @param likelihoodEpsilon
+ Specifies up to which epsilon in likelihood values the iterative routine will
+ be optimizing the parameters
+*/
+int pllOptimizeModelParameters(pllInstance *tr, partitionList *pr, double likelihoodEpsilon)
+{
+ int i;
+
+ //force the consistency check
+ pr->dirty = PLL_TRUE;
+ if(!checkLinkageConsistency(pr))
+ return PLL_FALSE;
+
+ if (tr->rateHetModel == PLL_CAT)
+ {
+ // assign the maximum number of categories
+ for (i=0; i<pr->numberOfPartitions; i++)
+ {
+ if (pr->partitionData[i]->numberOfCategories > tr->categories)
+ {
+ tr->categories = pr->partitionData[i]->numberOfCategories;
+ }
+ }
+ }
+
+ modOpt(tr, pr, likelihoodEpsilon);
+
+ return PLL_TRUE;
+}
+
+/** @brief Read the contents of a file
+
+ Reads the ile \a filename and return its content. In addition
+ the size of the file is stored in the input variable \a filesize.
+ The content of the variable \a filesize can be anything and will
+ be overwritten.
+
+ @param filename
+ Name of the input file
+
+ @param filesize
+ Input parameter where the size of the file (in bytes) will be stored
+
+ @return
+ Contents of the file
+*/
+char *
+pllReadFile (const char * filename, long * filesize)
+{
+ FILE * fp;
+ char * rawdata;
+
+ fp = fopen (filename, "r");
+ if (!fp) return (NULL);
+
+ /* obtain file size */
+ if (fseek (fp, 0, SEEK_END) == -1)
+ {
+ fclose (fp);
+ return (NULL);
+ }
+
+ *filesize = ftell (fp);
+
+ if (*filesize == -1)
+ {
+ fclose (fp);
+ return (NULL);
+ }
+ rewind (fp);
+
+ /* allocate buffer and read file contents */
+ rawdata = (char *) rax_malloc (((*filesize) + 1) * sizeof (char));
+ if (rawdata)
+ {
+ if (fread (rawdata, sizeof (char), *filesize, fp) != (size_t) *filesize)
+ {
+ rax_free (rawdata);
+ rawdata = NULL;
+ }
+ else
+ {
+ rawdata[*filesize] = 0;
+ }
+ }
+
+ fclose (fp);
+
+ return (rawdata);
+}
+
+static void getInnerBranchEndPointsRecursive (nodeptr p, int tips, int * i, node **nodes)
+{
+ if (!isTip (p->next->back->number, tips))
+ {
+ nodes[(*i)++] = p->next;
+ getInnerBranchEndPointsRecursive(p->next->back, tips, i, nodes);
+ }
+ if (!isTip (p->next->next->back->number, tips))
+ {
+ nodes[(*i)++] = p->next->next;
+ getInnerBranchEndPointsRecursive(p->next->next->back, tips, i, nodes);
+ }
+}
+
+node ** pllGetInnerBranchEndPoints (pllInstance * tr)
+{
+ node ** nodes;
+ nodeptr p;
+ int i = 0;
+
+ nodes = (node **) rax_calloc(tr->mxtips - 3, sizeof(node *));
+
+ p = tr->start;
+ assert (isTip(p->number, tr->mxtips));
+
+ getInnerBranchEndPointsRecursive(p->back, tr->mxtips, &i, nodes);
+
+ return nodes;
+}
+
+static void getSubtreeNodesRecursive (nodeptr p, int tips, int * i, node **nodes)
+{
+ nodes[(*i)++] = p;
+ if (!isTip (p->number, tips))
+ {
+ getSubtreeNodesRecursive(p->next->back, tips, i, nodes);
+ getSubtreeNodesRecursive(p->next->next->back, tips, i, nodes);
+ }
+}
+
+/**
+ * @brief Gets the list of nodes in a subtree rooted at p
+ *
+ * @param[in] tr, the tree
+ * @param[in] p, the node rooting the subtree
+ * @param[out] numberOfNodes, the number of nodes in the subtree (i.e., size of the result nodes array)
+ *
+ * @return The list of nodes in the subtree rooted at p, in preorder.
+ */
+node ** getSubtreeNodes (pllInstance * tr, nodeptr p, int * numberOfNodes)
+{
+ node ** nodes;
+ int i = 0;
+
+ nodes = (node **) rax_calloc((size_t)tr->mxtips*2 - 2, sizeof(node *));
+
+ getSubtreeNodesRecursive(p, tr->mxtips, &i, nodes);
+
+ assert(i <= 2*tr->mxtips - 2);
+ nodes = (node **) rax_realloc(nodes, (size_t)i * sizeof(double));
+
+ *numberOfNodes = i;
+
+ return nodes;
+}
+
+/* TBR OPERATIONS */
+
+/**
+ * @brief Creates a bisection in the tree in the branch defined by the node p
+ *
+ * Splits the tree in two subtrees by removing the branch b(p<->p.back).
+ *
+ * @param tr, the tree
+ * @param pr, the partitions
+ * @param p, the node defining the branch to remove
+ *
+ * @return PLL_TRUE if OK, PLL_FALSE and sets errno in case of error
+ */
+int
+pllTbrRemoveBranch (pllInstance * tr, partitionList * pr, nodeptr p)
+{
+ int i;
+ nodeptr p1, p2, q1, q2;
+ nodeptr tmpNode;
+ double * nextZP, * nextZQ;
+ int numBranchLengths;
+
+ // Evaluate pre-conditions
+ // P1 : ( p in tr )
+ for (tmpNode = tr->start->next->back; tmpNode != tr->start && tmpNode != p;
+ tmpNode = tmpNode->next->back)
+ ;
+ if(tmpNode != p) {
+ errno = PLL_TBR_INVALID_NODE;
+ return PLL_FALSE;
+ }
+ // P2 : ( p is an inner branch )
+ if (!(p->number > tr->mxtips && p->back->number > tr->mxtips))
+ {
+ errno = PLL_TBR_NOT_INNER_BRANCH;
+ return PLL_FALSE;
+ }
+
+ p1 = p->next->back;
+ p2 = p->next->next->back;
+ q1 = p->back->next->back;
+ q2 = p->back->next->next->back;
+
+ // Connect p neighbors (sum branches)
+ numBranchLengths = pr->perGeneBranchLengths ? pr->numberOfPartitions : 1;
+ nextZP = (double *) rax_malloc ( (size_t) numBranchLengths * sizeof(double));
+ if (!nextZP) {
+ return PLL_FALSE;
+ }
+ nextZQ = (double *) rax_malloc ( (size_t) numBranchLengths * sizeof(double));
+ if (!nextZQ) {
+ free(nextZP);
+ return PLL_FALSE;
+ }
+
+ for (i = 0; i < numBranchLengths; i++)
+ {
+ nextZP[i] = exp(log(p1->z[i]) + log(p2->z[i]));
+ nextZQ[i] = exp(log(q1->z[i]) + log(q2->z[i]));
+ }
+ hookup (p1, p2, nextZP, numBranchLengths);
+ hookup (q1, q2, nextZQ, numBranchLengths);
+
+ free(nextZP);
+ free(nextZQ);
+
+ // Disconnect p->p* branch
+ p->next->back = 0;
+ p->next->next->back = 0;
+ p->back->next->back = 0;
+ p->back->next->next->back = 0;
+
+ // Evaluate post-conditions?
+
+ return PLL_TRUE;
+}
+
+/**
+ * @brief Reconnects 2 subtrees and reoptimizes the branch lengths
+ *
+ * Reconnects 2 subtrees adding a missing branch between the branches defined by p and q.
+ * p and q must be different and belong to unconnected subtrees.
+ * It must exist at least one completely disconnected branch.
+ *
+ * The length of the new branches are ML estimated.
+ *
+ * @param tr, the tree
+ * @param pr, the partitions
+ * @param p, the node defining the branch in subtree 1
+ * @param q, the node defining the branch in subtree 2
+ *
+ *
+ * @return PLL_TRUE if OK, PLL_FALSE and sets errno in case of error
+ */
+int
+pllTbrConnectSubtreesML (pllInstance * tr, partitionList * pr, nodeptr p, nodeptr q)
+{
+
+ nodeptr pb, qb, pc, qc;
+ pb = p->back;
+ qb = q->back;
+
+ if (!pllTbrConnectSubtreesBL (tr, pr, p, q, 0, 0, 0, 0, 0)) {
+ return PLL_FALSE;
+ }
+
+ pc = p->back;
+ if (pc->next->back == pb)
+ pc = pc->next->next;
+ else
+ pc = pc->next;
+ qc = q->back;
+ if (qc->next->back == qb)
+ qc = qc->next->next;
+ else
+ qc = qc->next;
+
+ //TODO: This can be improved
+ pllEvaluateLikelihood (tr, pr, tr->start, PLL_TRUE, PLL_FALSE);
+
+ double lk = tr->likelihood - tr->likelihoodEpsilon - 1;
+
+ while (tr->likelihood - lk > tr->likelihoodEpsilon)
+ {
+ lk = tr->likelihood;
+ regionalSmooth (tr, pr, pc, 64, 1);
+
+ regionalSmooth (tr, pr, qc, 64, 1);
+
+ pllEvaluateLikelihood (tr, pr, tr->start, PLL_FALSE, PLL_FALSE);
+ assert(tr->likelihood >= lk);
+ }
+
+ return PLL_TRUE;
+}
+
+static int pllTbrConnectSubtrees(pllInstance * tr, nodeptr p,
+ nodeptr q, nodeptr * freeBranch, nodeptr * pb, nodeptr * qb) {
+ int i;
+ nodeptr tmpNode;
+
+ *freeBranch = 0;
+ *pb = 0;
+ *qb = 0;
+
+ // Evaluate preconditions
+
+ // p and q must be connected and independent branches
+ if (!(p && q && (p != q) && p->back && q->back && (p->back != q)
+ && (q->back != p)))
+ {
+ errno = PLL_TBR_INVALID_NODE;
+ return PLL_FALSE;
+ }
+
+ // p and q must belong to different subtrees. We check that we cannot reach q starting from p
+ for (tmpNode = p->next->back; tmpNode != p && tmpNode != q;
+ tmpNode = tmpNode->next->back)
+ ;
+ if (tmpNode == q)
+ {
+ // p and q are in the same subtree
+ errno = PLL_TBR_INVALID_NODE;
+ return PLL_FALSE;
+ }
+
+ (*pb) = p->back;
+ (*qb) = q->back;
+ tmpNode = 0;
+
+ // Must exist an unconnected branch
+ for (i = 1; i <= (2 * tr->mxtips - 3); i++)
+ {
+ if (!(tr->nodep[i]->back && tr->nodep[i]->next->back))
+ {
+ tmpNode = tr->nodep[i];
+
+ // It should have one and only one connected node
+ if (tmpNode->next->back
+ && !(tmpNode->back || tmpNode->next->next->back))
+ {
+ tmpNode = tmpNode->next->back;
+ }
+ else if (tmpNode->next->next->back
+ && !(tmpNode->back || tmpNode->next->back))
+ {
+ tmpNode = tmpNode->next->next->back;
+ }
+ else if (!(tmpNode->back || tmpNode->next->back
+ || tmpNode->next->next->back))
+ {
+ // There is no missing branch
+ errno = PLL_TBR_INVALID_NODE;
+ return PLL_FALSE;
+ }
+ break;
+ }
+ }
+
+ if (!tmpNode)
+ {
+ // There is no missing branch
+ errno = PLL_TBR_MISSING_FREE_BRANCH;
+ return PLL_FALSE;
+ }
+
+ (*freeBranch) = tmpNode;
+
+
+ // Join subtrees
+ hookupDefault (p, (*freeBranch)->next);
+ hookupDefault ((*pb), (*freeBranch)->next->next);
+ hookupDefault (q, (*freeBranch)->back->next);
+ hookupDefault ((*qb), (*freeBranch)->back->next->next);
+
+ return PLL_TRUE;
+}
+
+/**
+ * @brief Reconnects 2 subtrees and sets the user defined branch lengths
+ *
+ * Reconnects 2 subtrees adding a missing branch between the branches defined by p and q.
+ * p and q must be different and belong to unconnected subtrees.
+ * It must exist at least one completely disconnected branch.
+ *
+ * The length of the branch lengths arrays must be either 1 if pr->perGeneBranchLengths is false,
+ * or the number of partitions.
+ *
+ * The branch length arrays should contain the absolute branch lengths (not the internal z values).
+ *
+ * If a branch length array is a null pointer, branch lengths are initialized to default values.
+ *
+ * @param tr, the tree
+ * @param pr, the partitions
+ * @param p, the node defining the branch in subtree 1
+ * @param q, the node defining the branch in subtree 2
+ * @param pBl, the per-partition branch lengths of p connecting to the new branch
+ * @param pbBl, the per-partition branch lengths of p->back connecting to the new branch
+ * @param qBl, the per-partition branch lengths of q connecting to the new branch
+ * @param qbBl, the per-partition branch lengths of q->back connecting to the new branch
+ * @param rBl, the per-partition branch lengths of the new inserted branch
+ *
+ * @return PLL_TRUE if OK, PLL_FALSE and sets errno in case of error
+ */
+int
+pllTbrConnectSubtreesBL (pllInstance * tr, partitionList * pr, nodeptr p,
+ nodeptr q, double * pBl, double * pbBl, double * qBl,
+ double * qbBl, double * rBl)
+{
+ int i, numBranchLengths;
+ nodeptr pb, qb, freeBranch;
+
+ if (!pllTbrConnectSubtrees(tr, p, q, &freeBranch, &pb, &qb)) {
+ return PLL_FALSE;
+ }
+
+ // Set branch lengths
+ numBranchLengths = pr->perGeneBranchLengths ? pr->numberOfPartitions : 1;
+ if (pBl)
+ for (i = 0; i < numBranchLengths; i++)
+ pllSetBranchLength (tr, pr, p, i, pBl[i]);
+ if (pbBl)
+ for (i = 0; i < numBranchLengths; i++)
+ pllSetBranchLength (tr, pr, pb, i, pbBl[i]);
+ if (qBl)
+ for (i = 0; i < numBranchLengths; i++)
+ pllSetBranchLength (tr, pr, q, i, qBl[i]);
+ if (qbBl)
+ for (i = 0; i < numBranchLengths; i++)
+ pllSetBranchLength (tr, pr, qb, i, qbBl[i]);
+ if (rBl)
+ for (i = 0; i < numBranchLengths; i++)
+ pllSetBranchLength (tr, pr, freeBranch, i, rBl[i]);
+
+ return PLL_TRUE;
+}
+
+/**
+ * @brief Reconnects 2 subtrees and sets the user defined z values
+ *
+ * Reconnects 2 subtrees adding a missing branch between the branches defined by p and q.
+ * p and q must be different and belong to unconnected subtrees.
+ * It must exist at least one completely disconnected branch.
+ *
+ * The length of the branch lengths arrays must be either 1 if pr->perGeneBranchLengths is false,
+ * or the number of partitions.
+ *
+ * The branch length arrays should contain the z values.
+ *
+ * If a branch length array is a null pointer, z values are initialized to default values.
+ *
+ * @param tr, the tree
+ * @param pr, the partitions
+ * @param p, the node defining the branch in subtree 1
+ * @param q, the node defining the branch in subtree 2
+ * @param pZ, the per-partition z values of p connecting to the new branch
+ * @param pbZ, the per-partition z values of p->back connecting to the new branch
+ * @param qZ, the per-partition z values of q connecting to the new branch
+ * @param qbZ, the per-partition z values of q->back connecting to the new branch
+ * @param rZ, the per-partition z values of the new inserted branch
+ *
+ * @return PLL_TRUE if OK, PLL_FALSE and sets errno in case of error
+ */
+int
+pllTbrConnectSubtreesZ (pllInstance * tr, partitionList * pr, nodeptr p,
+ nodeptr q, double * pZ, double * pbZ, double * qZ,
+ double * qbZ, double * rZ)
+{
+ int i, numBranchLengths;
+ nodeptr pb, qb, freeBranch;
+
+ if (!pllTbrConnectSubtrees(tr, p, q, &freeBranch, &pb, &qb)) {
+ return PLL_FALSE;
+ }
+
+ // Set branch lengths
+ numBranchLengths = pr->perGeneBranchLengths ? pr->numberOfPartitions : 1;
+ if (pZ)
+ for (i = 0; i < numBranchLengths; i++) {
+ p->z[i] = pZ[i];
+ p->back->z[i] = pZ[i];
+ }
+ if (pbZ)
+ for (i = 0; i < numBranchLengths; i++) {
+ pb->z[i] = pbZ[i];
+ pb->back->z[i] = pbZ[i];
+ }
+ if (qZ)
+ for (i = 0; i < numBranchLengths; i++) {
+ q->z[i] = qZ[i];
+ q->back->z[i] = qZ[i];
+ }
+ if (qbZ)
+ for (i = 0; i < numBranchLengths; i++) {
+ qb->z[i] = qbZ[i];
+ qb->back->z[i] = qbZ[i];
+ }
+ if (rZ)
+ for (i = 0; i < numBranchLengths; i++) {
+ freeBranch->z[i] = rZ[i];
+ freeBranch->back->z[i] = rZ[i];
+ }
+
+ return PLL_TRUE;
+}
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/debian-med/libpll.git
More information about the debian-med-commit
mailing list