Check-in Differences
Not logged in

Many hyperlinks are disabled.
Use anonymous login to enable hyperlinks.

Difference From 294601b232f6563c To d108482c9b719929

2013-05-05
10:48
changing Makefile-static-MinGW (now supporting liblzma for TIFFs) check-in: 64d6bbc0e8 user: sandro tags: trunk
2013-03-01
15:43
switching to v.1.1f (some small bug fixed) check-in: d108482c9b user: sandro tags: trunk
2012-12-13
11:32
fixing several issues reported by Paul Daisey (v.4.0 compatibility) check-in: 5733785446 user: sandro tags: trunk
2010-01-09
11:16
implementing Shaded Relief for Grids check-in: d4879cedec user: a.furieri@lqt.it tags: trunk
2009-12-07
15:41
supporting RGBA, ARGB, BGR and BGRA raw images check-in: 294601b232 user: a.furieri@lqt.it tags: trunk
2009-11-19
11:03
fixing makefile and warnings for MSVC check-in: bf94dc55e3 user: a.furieri@lqt.it tags: trunk

Changes to AUTHORS.

     1      1   Original Author:
     2      2   Alessandro Furieri <a.furieri@lqt.it>
     3      3   
     4         -Portion Copyrigth [the Epsilon Wavelet library]:
     5         -Alexander Simakov, <xander@entropyware.info>
            4  +Contributors:
            5  +Brad Hards <bradh@frogmouth.net>

Changes to COPYING.

     1         -                   GNU GENERAL PUBLIC LICENSE
     2         -                       Version 3, 29 June 2007
            1  +                          MOZILLA PUBLIC LICENSE
            2  +                                Version 1.1
            3  +
            4  +                              ---------------
            5  +
            6  +1. Definitions.
            7  +
            8  +     1.0.1. "Commercial Use" means distribution or otherwise making the
            9  +     Covered Code available to a third party.
           10  +
           11  +     1.1. "Contributor" means each entity that creates or contributes to
           12  +     the creation of Modifications.
           13  +
           14  +     1.2. "Contributor Version" means the combination of the Original
           15  +     Code, prior Modifications used by a Contributor, and the Modifications
           16  +     made by that particular Contributor.
           17  +
           18  +     1.3. "Covered Code" means the Original Code or Modifications or the
           19  +     combination of the Original Code and Modifications, in each case
           20  +     including portions thereof.
           21  +
           22  +     1.4. "Electronic Distribution Mechanism" means a mechanism generally
           23  +     accepted in the software development community for the electronic
           24  +     transfer of data.
           25  +
           26  +     1.5. "Executable" means Covered Code in any form other than Source
           27  +     Code.
           28  +
           29  +     1.6. "Initial Developer" means the individual or entity identified
           30  +     as the Initial Developer in the Source Code notice required by Exhibit
           31  +     A.
           32  +
           33  +     1.7. "Larger Work" means a work which combines Covered Code or
           34  +     portions thereof with code not governed by the terms of this License.
           35  +
           36  +     1.8. "License" means this document.
           37  +
           38  +     1.8.1. "Licensable" means having the right to grant, to the maximum
           39  +     extent possible, whether at the time of the initial grant or
           40  +     subsequently acquired, any and all of the rights conveyed herein.
           41  +
           42  +     1.9. "Modifications" means any addition to or deletion from the
           43  +     substance or structure of either the Original Code or any previous
           44  +     Modifications. When Covered Code is released as a series of files, a
           45  +     Modification is:
           46  +          A. Any addition to or deletion from the contents of a file
           47  +          containing Original Code or previous Modifications.
           48  +
           49  +          B. Any new file that contains any part of the Original Code or
           50  +          previous Modifications.
           51  +
           52  +     1.10. "Original Code" means Source Code of computer software code
           53  +     which is described in the Source Code notice required by Exhibit A as
           54  +     Original Code, and which, at the time of its release under this
           55  +     License is not already Covered Code governed by this License.
           56  +
           57  +     1.10.1. "Patent Claims" means any patent claim(s), now owned or
           58  +     hereafter acquired, including without limitation,  method, process,
           59  +     and apparatus claims, in any patent Licensable by grantor.
           60  +
           61  +     1.11. "Source Code" means the preferred form of the Covered Code for
           62  +     making modifications to it, including all modules it contains, plus
           63  +     any associated interface definition files, scripts used to control
           64  +     compilation and installation of an Executable, or source code
           65  +     differential comparisons against either the Original Code or another
           66  +     well known, available Covered Code of the Contributor's choice. The
           67  +     Source Code can be in a compressed or archival form, provided the
           68  +     appropriate decompression or de-archiving software is widely available
           69  +     for no charge.
           70  +
           71  +     1.12. "You" (or "Your")  means an individual or a legal entity
           72  +     exercising rights under, and complying with all of the terms of, this
           73  +     License or a future version of this License issued under Section 6.1.
           74  +     For legal entities, "You" includes any entity which controls, is
           75  +     controlled by, or is under common control with You. For purposes of
           76  +     this definition, "control" means (a) the power, direct or indirect,
           77  +     to cause the direction or management of such entity, whether by
           78  +     contract or otherwise, or (b) ownership of more than fifty percent
           79  +     (50%) of the outstanding shares or beneficial ownership of such
           80  +     entity.
           81  +
           82  +2. Source Code License.
           83  +
           84  +     2.1. The Initial Developer Grant.
           85  +     The Initial Developer hereby grants You a world-wide, royalty-free,
           86  +     non-exclusive license, subject to third party intellectual property
           87  +     claims:
           88  +          (a)  under intellectual property rights (other than patent or
           89  +          trademark) Licensable by Initial Developer to use, reproduce,
           90  +          modify, display, perform, sublicense and distribute the Original
           91  +          Code (or portions thereof) with or without Modifications, and/or
           92  +          as part of a Larger Work; and
           93  +
           94  +          (b) under Patents Claims infringed by the making, using or
           95  +          selling of Original Code, to make, have made, use, practice,
           96  +          sell, and offer for sale, and/or otherwise dispose of the
           97  +          Original Code (or portions thereof).
           98  +
           99  +          (c) the licenses granted in this Section 2.1(a) and (b) are
          100  +          effective on the date Initial Developer first distributes
          101  +          Original Code under the terms of this License.
          102  +
          103  +          (d) Notwithstanding Section 2.1(b) above, no patent license is
          104  +          granted: 1) for code that You delete from the Original Code; 2)
          105  +          separate from the Original Code;  or 3) for infringements caused
          106  +          by: i) the modification of the Original Code or ii) the
          107  +          combination of the Original Code with other software or devices.
          108  +
          109  +     2.2. Contributor Grant.
          110  +     Subject to third party intellectual property claims, each Contributor
          111  +     hereby grants You a world-wide, royalty-free, non-exclusive license
          112  +
          113  +          (a)  under intellectual property rights (other than patent or
          114  +          trademark) Licensable by Contributor, to use, reproduce, modify,
          115  +          display, perform, sublicense and distribute the Modifications
          116  +          created by such Contributor (or portions thereof) either on an
          117  +          unmodified basis, with other Modifications, as Covered Code
          118  +          and/or as part of a Larger Work; and
          119  +
          120  +          (b) under Patent Claims infringed by the making, using, or
          121  +          selling of  Modifications made by that Contributor either alone
          122  +          and/or in combination with its Contributor Version (or portions
          123  +          of such combination), to make, use, sell, offer for sale, have
          124  +          made, and/or otherwise dispose of: 1) Modifications made by that
          125  +          Contributor (or portions thereof); and 2) the combination of
          126  +          Modifications made by that Contributor with its Contributor
          127  +          Version (or portions of such combination).
          128  +
          129  +          (c) the licenses granted in Sections 2.2(a) and 2.2(b) are
          130  +          effective on the date Contributor first makes Commercial Use of
          131  +          the Covered Code.
          132  +
          133  +          (d)    Notwithstanding Section 2.2(b) above, no patent license is
          134  +          granted: 1) for any code that Contributor has deleted from the
          135  +          Contributor Version; 2)  separate from the Contributor Version;
          136  +          3)  for infringements caused by: i) third party modifications of
          137  +          Contributor Version or ii)  the combination of Modifications made
          138  +          by that Contributor with other software  (except as part of the
          139  +          Contributor Version) or other devices; or 4) under Patent Claims
          140  +          infringed by Covered Code in the absence of Modifications made by
          141  +          that Contributor.
          142  +
          143  +3. Distribution Obligations.
          144  +
          145  +     3.1. Application of License.
          146  +     The Modifications which You create or to which You contribute are
          147  +     governed by the terms of this License, including without limitation
          148  +     Section 2.2. The Source Code version of Covered Code may be
          149  +     distributed only under the terms of this License or a future version
          150  +     of this License released under Section 6.1, and You must include a
          151  +     copy of this License with every copy of the Source Code You
          152  +     distribute. You may not offer or impose any terms on any Source Code
          153  +     version that alters or restricts the applicable version of this
          154  +     License or the recipients' rights hereunder. However, You may include
          155  +     an additional document offering the additional rights described in
          156  +     Section 3.5.
          157  +
          158  +     3.2. Availability of Source Code.
          159  +     Any Modification which You create or to which You contribute must be
          160  +     made available in Source Code form under the terms of this License
          161  +     either on the same media as an Executable version or via an accepted
          162  +     Electronic Distribution Mechanism to anyone to whom you made an
          163  +     Executable version available; and if made available via Electronic
          164  +     Distribution Mechanism, must remain available for at least twelve (12)
          165  +     months after the date it initially became available, or at least six
          166  +     (6) months after a subsequent version of that particular Modification
          167  +     has been made available to such recipients. You are responsible for
          168  +     ensuring that the Source Code version remains available even if the
          169  +     Electronic Distribution Mechanism is maintained by a third party.
          170  +
          171  +     3.3. Description of Modifications.
          172  +     You must cause all Covered Code to which You contribute to contain a
          173  +     file documenting the changes You made to create that Covered Code and
          174  +     the date of any change. You must include a prominent statement that
          175  +     the Modification is derived, directly or indirectly, from Original
          176  +     Code provided by the Initial Developer and including the name of the
          177  +     Initial Developer in (a) the Source Code, and (b) in any notice in an
          178  +     Executable version or related documentation in which You describe the
          179  +     origin or ownership of the Covered Code.
          180  +
          181  +     3.4. Intellectual Property Matters
          182  +          (a) Third Party Claims.
          183  +          If Contributor has knowledge that a license under a third party's
          184  +          intellectual property rights is required to exercise the rights
          185  +          granted by such Contributor under Sections 2.1 or 2.2,
          186  +          Contributor must include a text file with the Source Code
          187  +          distribution titled "LEGAL" which describes the claim and the
          188  +          party making the claim in sufficient detail that a recipient will
          189  +          know whom to contact. If Contributor obtains such knowledge after
          190  +          the Modification is made available as described in Section 3.2,
          191  +          Contributor shall promptly modify the LEGAL file in all copies
          192  +          Contributor makes available thereafter and shall take other steps
          193  +          (such as notifying appropriate mailing lists or newsgroups)
          194  +          reasonably calculated to inform those who received the Covered
          195  +          Code that new knowledge has been obtained.
          196  +
          197  +          (b) Contributor APIs.
          198  +          If Contributor's Modifications include an application programming
          199  +          interface and Contributor has knowledge of patent licenses which
          200  +          are reasonably necessary to implement that API, Contributor must
          201  +          also include this information in the LEGAL file.
          202  +
          203  +               (c)    Representations.
          204  +          Contributor represents that, except as disclosed pursuant to
          205  +          Section 3.4(a) above, Contributor believes that Contributor's
          206  +          Modifications are Contributor's original creation(s) and/or
          207  +          Contributor has sufficient rights to grant the rights conveyed by
          208  +          this License.
          209  +
          210  +     3.5. Required Notices.
          211  +     You must duplicate the notice in Exhibit A in each file of the Source
          212  +     Code.  If it is not possible to put such notice in a particular Source
          213  +     Code file due to its structure, then You must include such notice in a
          214  +     location (such as a relevant directory) where a user would be likely
          215  +     to look for such a notice.  If You created one or more Modification(s)
          216  +     You may add your name as a Contributor to the notice described in
          217  +     Exhibit A.  You must also duplicate this License in any documentation
          218  +     for the Source Code where You describe recipients' rights or ownership
          219  +     rights relating to Covered Code.  You may choose to offer, and to
          220  +     charge a fee for, warranty, support, indemnity or liability
          221  +     obligations to one or more recipients of Covered Code. However, You
          222  +     may do so only on Your own behalf, and not on behalf of the Initial
          223  +     Developer or any Contributor. You must make it absolutely clear than
          224  +     any such warranty, support, indemnity or liability obligation is
          225  +     offered by You alone, and You hereby agree to indemnify the Initial
          226  +     Developer and every Contributor for any liability incurred by the
          227  +     Initial Developer or such Contributor as a result of warranty,
          228  +     support, indemnity or liability terms You offer.
          229  +
          230  +     3.6. Distribution of Executable Versions.
          231  +     You may distribute Covered Code in Executable form only if the
          232  +     requirements of Section 3.1-3.5 have been met for that Covered Code,
          233  +     and if You include a notice stating that the Source Code version of
          234  +     the Covered Code is available under the terms of this License,
          235  +     including a description of how and where You have fulfilled the
          236  +     obligations of Section 3.2. The notice must be conspicuously included
          237  +     in any notice in an Executable version, related documentation or
          238  +     collateral in which You describe recipients' rights relating to the
          239  +     Covered Code. You may distribute the Executable version of Covered
          240  +     Code or ownership rights under a license of Your choice, which may
          241  +     contain terms different from this License, provided that You are in
          242  +     compliance with the terms of this License and that the license for the
          243  +     Executable version does not attempt to limit or alter the recipient's
          244  +     rights in the Source Code version from the rights set forth in this
          245  +     License. If You distribute the Executable version under a different
          246  +     license You must make it absolutely clear that any terms which differ
          247  +     from this License are offered by You alone, not by the Initial
          248  +     Developer or any Contributor. You hereby agree to indemnify the
          249  +     Initial Developer and every Contributor for any liability incurred by
          250  +     the Initial Developer or such Contributor as a result of any such
          251  +     terms You offer.
          252  +
          253  +     3.7. Larger Works.
          254  +     You may create a Larger Work by combining Covered Code with other code
          255  +     not governed by the terms of this License and distribute the Larger
          256  +     Work as a single product. In such a case, You must make sure the
          257  +     requirements of this License are fulfilled for the Covered Code.
          258  +
          259  +4. Inability to Comply Due to Statute or Regulation.
          260  +
          261  +     If it is impossible for You to comply with any of the terms of this
          262  +     License with respect to some or all of the Covered Code due to
          263  +     statute, judicial order, or regulation then You must: (a) comply with
          264  +     the terms of this License to the maximum extent possible; and (b)
          265  +     describe the limitations and the code they affect. Such description
          266  +     must be included in the LEGAL file described in Section 3.4 and must
          267  +     be included with all distributions of the Source Code. Except to the
          268  +     extent prohibited by statute or regulation, such description must be
          269  +     sufficiently detailed for a recipient of ordinary skill to be able to
          270  +     understand it.
          271  +
          272  +5. Application of this License.
          273  +
          274  +     This License applies to code to which the Initial Developer has
          275  +     attached the notice in Exhibit A and to related Covered Code.
          276  +
          277  +6. Versions of the License.
          278  +
          279  +     6.1. New Versions.
          280  +     Netscape Communications Corporation ("Netscape") may publish revised
          281  +     and/or new versions of the License from time to time. Each version
          282  +     will be given a distinguishing version number.
          283  +
          284  +     6.2. Effect of New Versions.
          285  +     Once Covered Code has been published under a particular version of the
          286  +     License, You may always continue to use it under the terms of that
          287  +     version. You may also choose to use such Covered Code under the terms
          288  +     of any subsequent version of the License published by Netscape. No one
          289  +     other than Netscape has the right to modify the terms applicable to
          290  +     Covered Code created under this License.
          291  +
          292  +     6.3. Derivative Works.
          293  +     If You create or use a modified version of this License (which you may
          294  +     only do in order to apply it to code which is not already Covered Code
          295  +     governed by this License), You must (a) rename Your license so that
          296  +     the phrases "Mozilla", "MOZILLAPL", "MOZPL", "Netscape",
          297  +     "MPL", "NPL" or any confusingly similar phrase do not appear in your
          298  +     license (except to note that your license differs from this License)
          299  +     and (b) otherwise make it clear that Your version of the license
          300  +     contains terms which differ from the Mozilla Public License and
          301  +     Netscape Public License. (Filling in the name of the Initial
          302  +     Developer, Original Code or Contributor in the notice described in
          303  +     Exhibit A shall not of themselves be deemed to be modifications of
          304  +     this License.)
          305  +
          306  +7. DISCLAIMER OF WARRANTY.
          307  +
          308  +     COVERED CODE IS PROVIDED UNDER THIS LICENSE ON AN "AS IS" BASIS,
          309  +     WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
          310  +     WITHOUT LIMITATION, WARRANTIES THAT THE COVERED CODE IS FREE OF
          311  +     DEFECTS, MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE OR NON-INFRINGING.
          312  +     THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE COVERED CODE
          313  +     IS WITH YOU. SHOULD ANY COVERED CODE PROVE DEFECTIVE IN ANY RESPECT,
          314  +     YOU (NOT THE INITIAL DEVELOPER OR ANY OTHER CONTRIBUTOR) ASSUME THE
          315  +     COST OF ANY NECESSARY SERVICING, REPAIR OR CORRECTION. THIS DISCLAIMER
          316  +     OF WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS LICENSE. NO USE OF
          317  +     ANY COVERED CODE IS AUTHORIZED HEREUNDER EXCEPT UNDER THIS DISCLAIMER.
          318  +
          319  +8. TERMINATION.
          320  +
          321  +     8.1.  This License and the rights granted hereunder will terminate
          322  +     automatically if You fail to comply with terms herein and fail to cure
          323  +     such breach within 30 days of becoming aware of the breach. All
          324  +     sublicenses to the Covered Code which are properly granted shall
          325  +     survive any termination of this License. Provisions which, by their
          326  +     nature, must remain in effect beyond the termination of this License
          327  +     shall survive.
          328  +
          329  +     8.2.  If You initiate litigation by asserting a patent infringement
          330  +     claim (excluding declatory judgment actions) against Initial Developer
          331  +     or a Contributor (the Initial Developer or Contributor against whom
          332  +     You file such action is referred to as "Participant")  alleging that:
          333  +
          334  +     (a)  such Participant's Contributor Version directly or indirectly
          335  +     infringes any patent, then any and all rights granted by such
          336  +     Participant to You under Sections 2.1 and/or 2.2 of this License
          337  +     shall, upon 60 days notice from Participant terminate prospectively,
          338  +     unless if within 60 days after receipt of notice You either: (i)
          339  +     agree in writing to pay Participant a mutually agreeable reasonable
          340  +     royalty for Your past and future use of Modifications made by such
          341  +     Participant, or (ii) withdraw Your litigation claim with respect to
          342  +     the Contributor Version against such Participant.  If within 60 days
          343  +     of notice, a reasonable royalty and payment arrangement are not
          344  +     mutually agreed upon in writing by the parties or the litigation claim
          345  +     is not withdrawn, the rights granted by Participant to You under
          346  +     Sections 2.1 and/or 2.2 automatically terminate at the expiration of
          347  +     the 60 day notice period specified above.
          348  +
          349  +     (b)  any software, hardware, or device, other than such Participant's
          350  +     Contributor Version, directly or indirectly infringes any patent, then
          351  +     any rights granted to You by such Participant under Sections 2.1(b)
          352  +     and 2.2(b) are revoked effective as of the date You first made, used,
          353  +     sold, distributed, or had made, Modifications made by that
          354  +     Participant.
          355  +
          356  +     8.3.  If You assert a patent infringement claim against Participant
          357  +     alleging that such Participant's Contributor Version directly or
          358  +     indirectly infringes any patent where such claim is resolved (such as
          359  +     by license or settlement) prior to the initiation of patent
          360  +     infringement litigation, then the reasonable value of the licenses
          361  +     granted by such Participant under Sections 2.1 or 2.2 shall be taken
          362  +     into account in determining the amount or value of any payment or
          363  +     license.
          364  +
          365  +     8.4.  In the event of termination under Sections 8.1 or 8.2 above,
          366  +     all end user license agreements (excluding distributors and resellers)
          367  +     which have been validly granted by You or any distributor hereunder
          368  +     prior to termination shall survive termination.
          369  +
          370  +9. LIMITATION OF LIABILITY.
          371  +
          372  +     UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, WHETHER TORT
          373  +     (INCLUDING NEGLIGENCE), CONTRACT, OR OTHERWISE, SHALL YOU, THE INITIAL
          374  +     DEVELOPER, ANY OTHER CONTRIBUTOR, OR ANY DISTRIBUTOR OF COVERED CODE,
          375  +     OR ANY SUPPLIER OF ANY OF SUCH PARTIES, BE LIABLE TO ANY PERSON FOR
          376  +     ANY INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY
          377  +     CHARACTER INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF GOODWILL,
          378  +     WORK STOPPAGE, COMPUTER FAILURE OR MALFUNCTION, OR ANY AND ALL OTHER
          379  +     COMMERCIAL DAMAGES OR LOSSES, EVEN IF SUCH PARTY SHALL HAVE BEEN
          380  +     INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. THIS LIMITATION OF
          381  +     LIABILITY SHALL NOT APPLY TO LIABILITY FOR DEATH OR PERSONAL INJURY
          382  +     RESULTING FROM SUCH PARTY'S NEGLIGENCE TO THE EXTENT APPLICABLE LAW
          383  +     PROHIBITS SUCH LIMITATION. SOME JURISDICTIONS DO NOT ALLOW THE
          384  +     EXCLUSION OR LIMITATION OF INCIDENTAL OR CONSEQUENTIAL DAMAGES, SO
          385  +     THIS EXCLUSION AND LIMITATION MAY NOT APPLY TO YOU.
          386  +
          387  +10. U.S. GOVERNMENT END USERS.
          388  +
          389  +     The Covered Code is a "commercial item," as that term is defined in
          390  +     48 C.F.R. 2.101 (Oct. 1995), consisting of "commercial computer
          391  +     software" and "commercial computer software documentation," as such
          392  +     terms are used in 48 C.F.R. 12.212 (Sept. 1995). Consistent with 48
          393  +     C.F.R. 12.212 and 48 C.F.R. 227.7202-1 through 227.7202-4 (June 1995),
          394  +     all U.S. Government End Users acquire Covered Code with only those
          395  +     rights set forth herein.
          396  +
          397  +11. MISCELLANEOUS.
          398  +
          399  +     This License represents the complete agreement concerning subject
          400  +     matter hereof. If any provision of this License is held to be
          401  +     unenforceable, such provision shall be reformed only to the extent
          402  +     necessary to make it enforceable. This License shall be governed by
          403  +     California law provisions (except to the extent applicable law, if
          404  +     any, provides otherwise), excluding its conflict-of-law provisions.
          405  +     With respect to disputes in which at least one party is a citizen of,
          406  +     or an entity chartered or registered to do business in the United
          407  +     States of America, any litigation relating to this License shall be
          408  +     subject to the jurisdiction of the Federal Courts of the Northern
          409  +     District of California, with venue lying in Santa Clara County,
          410  +     California, with the losing party responsible for costs, including
          411  +     without limitation, court costs and reasonable attorneys' fees and
          412  +     expenses. The application of the United Nations Convention on
          413  +     Contracts for the International Sale of Goods is expressly excluded.
          414  +     Any law or regulation which provides that the language of a contract
          415  +     shall be construed against the drafter shall not apply to this
          416  +     License.
          417  +
          418  +12. RESPONSIBILITY FOR CLAIMS.
          419  +
          420  +     As between Initial Developer and the Contributors, each party is
          421  +     responsible for claims and damages arising, directly or indirectly,
          422  +     out of its utilization of rights under this License and You agree to
          423  +     work with Initial Developer and Contributors to distribute such
          424  +     responsibility on an equitable basis. Nothing herein is intended or
          425  +     shall be deemed to constitute any admission of liability.
          426  +
          427  +13. MULTIPLE-LICENSED CODE.
          428  +
          429  +     Initial Developer may designate portions of the Covered Code as
          430  +     "Multiple-Licensed".  "Multiple-Licensed" means that the Initial
          431  +     Developer permits you to utilize portions of the Covered Code under
          432  +     Your choice of the NPL or the alternative licenses, if any, specified
          433  +     by the Initial Developer in the file described in Exhibit A.
     3    434   
     4         - Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
     5         - Everyone is permitted to copy and distribute verbatim copies
     6         - of this license document, but changing it is not allowed.
          435  +EXHIBIT A -Mozilla Public License.
     7    436   
     8         -                            Preamble
     9         -
    10         -  The GNU General Public License is a free, copyleft license for
    11         -software and other kinds of works.
          437  +     ``The contents of this file are subject to the Mozilla Public License
          438  +     Version 1.1 (the "License"); you may not use this file except in
          439  +     compliance with the License. You may obtain a copy of the License at
          440  +     http://www.mozilla.org/MPL/
    12    441   
    13         -  The licenses for most software and other practical works are designed
    14         -to take away your freedom to share and change the works.  By contrast,
    15         -the GNU General Public License is intended to guarantee your freedom to
    16         -share and change all versions of a program--to make sure it remains free
    17         -software for all its users.  We, the Free Software Foundation, use the
    18         -GNU General Public License for most of our software; it applies also to
    19         -any other work released this way by its authors.  You can apply it to
    20         -your programs, too.
          442  +     Software distributed under the License is distributed on an "AS IS"
          443  +     basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
          444  +     License for the specific language governing rights and limitations
          445  +     under the License.
    21    446   
    22         -  When we speak of free software, we are referring to freedom, not
    23         -price.  Our General Public Licenses are designed to make sure that you
    24         -have the freedom to distribute copies of free software (and charge for
    25         -them if you wish), that you receive source code or can get it if you
    26         -want it, that you can change the software or use pieces of it in new
    27         -free programs, and that you know you can do these things.
          447  +     The Original Code is the SpatiaLite library.
    28    448   
    29         -  To protect your rights, we need to prevent others from denying you
    30         -these rights or asking you to surrender the rights.  Therefore, you have
    31         -certain responsibilities if you distribute copies of the software, or if
    32         -you modify it: responsibilities to respect the freedom of others.
    33         -
    34         -  For example, if you distribute copies of such a program, whether
    35         -gratis or for a fee, you must pass on to the recipients the same
    36         -freedoms that you received.  You must make sure that they, too, receive
    37         -or can get the source code.  And you must show them these terms so they
    38         -know their rights.
    39         -
    40         -  Developers that use the GNU GPL protect your rights with two steps:
    41         -(1) assert copyright on the software, and (2) offer you this License
    42         -giving you legal permission to copy, distribute and/or modify it.
    43         -
    44         -  For the developers' and authors' protection, the GPL clearly explains
    45         -that there is no warranty for this free software.  For both users' and
    46         -authors' sake, the GPL requires that modified versions be marked as
    47         -changed, so that their problems will not be attributed erroneously to
    48         -authors of previous versions.
          449  +     The Initial Developer of the Original Code is Alessandro Furieri.
          450  +     Portions created by the Initial Developer are Copyright (C) 2008
          451  +     the Initial Developer. All Rights Reserved.
    49    452   
    50         -  Some devices are designed to deny users access to install or run
    51         -modified versions of the software inside them, although the manufacturer
    52         -can do so.  This is fundamentally incompatible with the aim of
    53         -protecting users' freedom to change the software.  The systematic
    54         -pattern of such abuse occurs in the area of products for individuals to
    55         -use, which is precisely where it is most unacceptable.  Therefore, we
    56         -have designed this version of the GPL to prohibit the practice for those
    57         -products.  If such problems arise substantially in other domains, we
    58         -stand ready to extend this provision to those domains in future versions
    59         -of the GPL, as needed to protect the freedom of users.
    60         -
    61         -  Finally, every program is threatened constantly by software patents.
    62         -States should not allow patents to restrict development and use of
    63         -software on general-purpose computers, but in those that do, we wish to
    64         -avoid the special danger that patents applied to a free program could
    65         -make it effectively proprietary.  To prevent this, the GPL assures that
    66         -patents cannot be used to render the program non-free.
    67         -
    68         -  The precise terms and conditions for copying, distribution and
    69         -modification follow.
    70         -
    71         -                       TERMS AND CONDITIONS
    72         -
    73         -  0. Definitions.
    74         -
    75         -  "This License" refers to version 3 of the GNU General Public License.
    76         -
    77         -  "Copyright" also means copyright-like laws that apply to other kinds of
    78         -works, such as semiconductor masks.
    79         -
    80         -  "The Program" refers to any copyrightable work licensed under this
    81         -License.  Each licensee is addressed as "you".  "Licensees" and
    82         -"recipients" may be individuals or organizations.
    83         -
    84         -  To "modify" a work means to copy from or adapt all or part of the work
    85         -in a fashion requiring copyright permission, other than the making of an
    86         -exact copy.  The resulting work is called a "modified version" of the
    87         -earlier work or a work "based on" the earlier work.
          453  +     Contributor(s): 
          454  +     Klaus Foerster <klaus.foerster@svg.cc> [AsSvg()]
          455  +     Luigi Costalli <luigi.costalli@gmail.com> [Dijkstra's shortest path algorithm]
    88    456   
    89         -  A "covered work" means either the unmodified Program or a work based
    90         -on the Program.
          457  +     The Vanuatu Team - University of Toronto [WKT parser]
          458  +     Supervisor: Greg Wilson <gvwilson@cs.toronto.ca>
          459  +     [you can find the complete team composition in gg_wkt.c]
    91    460   
    92         -  To "propagate" a work means to do anything with it that, without
    93         -permission, would make you directly or secondarily liable for
    94         -infringement under applicable copyright law, except executing it on a
    95         -computer or modifying a private copy.  Propagation includes copying,
    96         -distribution (with or without modification), making available to the
    97         -public, and in some countries other activities as well.
    98         -
    99         -  To "convey" a work means any kind of propagation that enables other
   100         -parties to make or receive copies.  Mere interaction with a user through
   101         -a computer network, with no transfer of a copy, is not conveying.
   102         -
   103         -  An interactive user interface displays "Appropriate Legal Notices"
   104         -to the extent that it includes a convenient and prominently visible
   105         -feature that (1) displays an appropriate copyright notice, and (2)
   106         -tells the user that there is no warranty for the work (except to the
   107         -extent that warranties are provided), that licensees may convey the
   108         -work under this License, and how to view a copy of this License.  If
   109         -the interface presents a list of user commands or options, such as a
   110         -menu, a prominent item in the list meets this criterion.
   111         -
   112         -  1. Source Code.
   113         -
   114         -  The "source code" for a work means the preferred form of the work
   115         -for making modifications to it.  "Object code" means any non-source
   116         -form of a work.
   117         -
   118         -  A "Standard Interface" means an interface that either is an official
   119         -standard defined by a recognized standards body, or, in the case of
   120         -interfaces specified for a particular programming language, one that
   121         -is widely used among developers working in that language.
   122         -
   123         -  The "System Libraries" of an executable work include anything, other
   124         -than the work as a whole, that (a) is included in the normal form of
   125         -packaging a Major Component, but which is not part of that Major
   126         -Component, and (b) serves only to enable use of the work with that
   127         -Major Component, or to implement a Standard Interface for which an
   128         -implementation is available to the public in source code form.  A
   129         -"Major Component", in this context, means a major essential component
   130         -(kernel, window system, and so on) of the specific operating system
   131         -(if any) on which the executable work runs, or a compiler used to
   132         -produce the work, or an object code interpreter used to run it.
   133         -
   134         -  The "Corresponding Source" for a work in object code form means all
   135         -the source code needed to generate, install, and (for an executable
   136         -work) run the object code and to modify the work, including scripts to
   137         -control those activities.  However, it does not include the work's
   138         -System Libraries, or general-purpose tools or generally available free
   139         -programs which are used unmodified in performing those activities but
   140         -which are not part of the work.  For example, Corresponding Source
   141         -includes interface definition files associated with source files for
   142         -the work, and the source code for shared libraries and dynamically
   143         -linked subprograms that the work is specifically designed to require,
   144         -such as by intimate data communication or control flow between those
   145         -subprograms and other parts of the work.
   146         -
   147         -  The Corresponding Source need not include anything that users
   148         -can regenerate automatically from other parts of the Corresponding
   149         -Source.
   150         -
   151         -  The Corresponding Source for a work in source code form is that
   152         -same work.
   153         -
   154         -  2. Basic Permissions.
   155         -
   156         -  All rights granted under this License are granted for the term of
   157         -copyright on the Program, and are irrevocable provided the stated
   158         -conditions are met.  This License explicitly affirms your unlimited
   159         -permission to run the unmodified Program.  The output from running a
   160         -covered work is covered by this License only if the output, given its
   161         -content, constitutes a covered work.  This License acknowledges your
   162         -rights of fair use or other equivalent, as provided by copyright law.
   163         -
   164         -  You may make, run and propagate covered works that you do not
   165         -convey, without conditions so long as your license otherwise remains
   166         -in force.  You may convey covered works to others for the sole purpose
   167         -of having them make modifications exclusively for you, or provide you
   168         -with facilities for running those works, provided that you comply with
   169         -the terms of this License in conveying all material for which you do
   170         -not control copyright.  Those thus making or running the covered works
   171         -for you must do so exclusively on your behalf, under your direction
   172         -and control, on terms that prohibit them from making any copies of
   173         -your copyrighted material outside their relationship with you.
   174    461   
   175         -  Conveying under any other circumstances is permitted solely under
   176         -the conditions stated below.  Sublicensing is not allowed; section 10
   177         -makes it unnecessary.
   178         -
   179         -  3. Protecting Users' Legal Rights From Anti-Circumvention Law.
   180         -
   181         -  No covered work shall be deemed part of an effective technological
   182         -measure under any applicable law fulfilling obligations under article
   183         -11 of the WIPO copyright treaty adopted on 20 December 1996, or
   184         -similar laws prohibiting or restricting circumvention of such
   185         -measures.
   186         -
   187         -  When you convey a covered work, you waive any legal power to forbid
   188         -circumvention of technological measures to the extent such circumvention
   189         -is effected by exercising rights under this License with respect to
   190         -the covered work, and you disclaim any intention to limit operation or
   191         -modification of the work as a means of enforcing, against the work's
   192         -users, your or third parties' legal rights to forbid circumvention of
   193         -technological measures.
   194         -
   195         -  4. Conveying Verbatim Copies.
   196         -
   197         -  You may convey verbatim copies of the Program's source code as you
   198         -receive it, in any medium, provided that you conspicuously and
   199         -appropriately publish on each copy an appropriate copyright notice;
   200         -keep intact all notices stating that this License and any
   201         -non-permissive terms added in accord with section 7 apply to the code;
   202         -keep intact all notices of the absence of any warranty; and give all
   203         -recipients a copy of this License along with the Program.
   204         -
   205         -  You may charge any price or no price for each copy that you convey,
   206         -and you may offer support or warranty protection for a fee.
   207         -
   208         -  5. Conveying Modified Source Versions.
   209         -
   210         -  You may convey a work based on the Program, or the modifications to
   211         -produce it from the Program, in the form of source code under the
   212         -terms of section 4, provided that you also meet all of these conditions:
   213         -
   214         -    a) The work must carry prominent notices stating that you modified
   215         -    it, and giving a relevant date.
   216         -
   217         -    b) The work must carry prominent notices stating that it is
   218         -    released under this License and any conditions added under section
   219         -    7.  This requirement modifies the requirement in section 4 to
   220         -    "keep intact all notices".
   221         -
   222         -    c) You must license the entire work, as a whole, under this
   223         -    License to anyone who comes into possession of a copy.  This
   224         -    License will therefore apply, along with any applicable section 7
   225         -    additional terms, to the whole of the work, and all its parts,
   226         -    regardless of how they are packaged.  This License gives no
   227         -    permission to license the work in any other way, but it does not
   228         -    invalidate such permission if you have separately received it.
   229         -
   230         -    d) If the work has interactive user interfaces, each must display
   231         -    Appropriate Legal Notices; however, if the Program has interactive
   232         -    interfaces that do not display Appropriate Legal Notices, your
   233         -    work need not make them do so.
   234         -
   235         -  A compilation of a covered work with other separate and independent
   236         -works, which are not by their nature extensions of the covered work,
   237         -and which are not combined with it such as to form a larger program,
   238         -in or on a volume of a storage or distribution medium, is called an
   239         -"aggregate" if the compilation and its resulting copyright are not
   240         -used to limit the access or legal rights of the compilation's users
   241         -beyond what the individual works permit.  Inclusion of a covered work
   242         -in an aggregate does not cause this License to apply to the other
   243         -parts of the aggregate.
   244         -
   245         -  6. Conveying Non-Source Forms.
   246         -
   247         -  You may convey a covered work in object code form under the terms
   248         -of sections 4 and 5, provided that you also convey the
   249         -machine-readable Corresponding Source under the terms of this License,
   250         -in one of these ways:
   251         -
   252         -    a) Convey the object code in, or embodied in, a physical product
   253         -    (including a physical distribution medium), accompanied by the
   254         -    Corresponding Source fixed on a durable physical medium
   255         -    customarily used for software interchange.
   256         -
   257         -    b) Convey the object code in, or embodied in, a physical product
   258         -    (including a physical distribution medium), accompanied by a
   259         -    written offer, valid for at least three years and valid for as
   260         -    long as you offer spare parts or customer support for that product
   261         -    model, to give anyone who possesses the object code either (1) a
   262         -    copy of the Corresponding Source for all the software in the
   263         -    product that is covered by this License, on a durable physical
   264         -    medium customarily used for software interchange, for a price no
   265         -    more than your reasonable cost of physically performing this
   266         -    conveying of source, or (2) access to copy the
   267         -    Corresponding Source from a network server at no charge.
   268         -
   269         -    c) Convey individual copies of the object code with a copy of the
   270         -    written offer to provide the Corresponding Source.  This
   271         -    alternative is allowed only occasionally and noncommercially, and
   272         -    only if you received the object code with such an offer, in accord
   273         -    with subsection 6b.
   274         -
   275         -    d) Convey the object code by offering access from a designated
   276         -    place (gratis or for a charge), and offer equivalent access to the
   277         -    Corresponding Source in the same way through the same place at no
   278         -    further charge.  You need not require recipients to copy the
   279         -    Corresponding Source along with the object code.  If the place to
   280         -    copy the object code is a network server, the Corresponding Source
   281         -    may be on a different server (operated by you or a third party)
   282         -    that supports equivalent copying facilities, provided you maintain
   283         -    clear directions next to the object code saying where to find the
   284         -    Corresponding Source.  Regardless of what server hosts the
   285         -    Corresponding Source, you remain obligated to ensure that it is
   286         -    available for as long as needed to satisfy these requirements.
   287         -
   288         -    e) Convey the object code using peer-to-peer transmission, provided
   289         -    you inform other peers where the object code and Corresponding
   290         -    Source of the work are being offered to the general public at no
   291         -    charge under subsection 6d.
   292         -
   293         -  A separable portion of the object code, whose source code is excluded
   294         -from the Corresponding Source as a System Library, need not be
   295         -included in conveying the object code work.
   296         -
   297         -  A "User Product" is either (1) a "consumer product", which means any
   298         -tangible personal property which is normally used for personal, family,
   299         -or household purposes, or (2) anything designed or sold for incorporation
   300         -into a dwelling.  In determining whether a product is a consumer product,
   301         -doubtful cases shall be resolved in favor of coverage.  For a particular
   302         -product received by a particular user, "normally used" refers to a
   303         -typical or common use of that class of product, regardless of the status
   304         -of the particular user or of the way in which the particular user
   305         -actually uses, or expects or is expected to use, the product.  A product
   306         -is a consumer product regardless of whether the product has substantial
   307         -commercial, industrial or non-consumer uses, unless such uses represent
   308         -the only significant mode of use of the product.
   309         -
   310         -  "Installation Information" for a User Product means any methods,
   311         -procedures, authorization keys, or other information required to install
   312         -and execute modified versions of a covered work in that User Product from
   313         -a modified version of its Corresponding Source.  The information must
   314         -suffice to ensure that the continued functioning of the modified object
   315         -code is in no case prevented or interfered with solely because
   316         -modification has been made.
   317         -
   318         -  If you convey an object code work under this section in, or with, or
   319         -specifically for use in, a User Product, and the conveying occurs as
   320         -part of a transaction in which the right of possession and use of the
   321         -User Product is transferred to the recipient in perpetuity or for a
   322         -fixed term (regardless of how the transaction is characterized), the
   323         -Corresponding Source conveyed under this section must be accompanied
   324         -by the Installation Information.  But this requirement does not apply
   325         -if neither you nor any third party retains the ability to install
   326         -modified object code on the User Product (for example, the work has
   327         -been installed in ROM).
   328         -
   329         -  The requirement to provide Installation Information does not include a
   330         -requirement to continue to provide support service, warranty, or updates
   331         -for a work that has been modified or installed by the recipient, or for
   332         -the User Product in which it has been modified or installed.  Access to a
   333         -network may be denied when the modification itself materially and
   334         -adversely affects the operation of the network or violates the rules and
   335         -protocols for communication across the network.
   336         -
   337         -  Corresponding Source conveyed, and Installation Information provided,
   338         -in accord with this section must be in a format that is publicly
   339         -documented (and with an implementation available to the public in
   340         -source code form), and must require no special password or key for
   341         -unpacking, reading or copying.
          462  +     Alternatively, the contents of this file may be used under the terms of
          463  +     either the GNU General Public License Version 2 or later (the "GPL"), or
          464  +     the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
          465  +     in which case the provisions of the GPL or the LGPL are applicable instead
          466  +     of those above. If you wish to allow use of your version of this file only
          467  +     under the terms of either the GPL or the LGPL, and not to allow others to
          468  +     use your version of this file under the terms of the MPL, indicate your
          469  +     decision by deleting the provisions above and replace them with the notice
          470  +     and other provisions required by the GPL or the LGPL. If you do not delete
          471  +     the provisions above, a recipient may use your version of this file under
          472  +     the terms of any one of the MPL, the GPL or the LGPL.
   342    473   
   343         -  7. Additional Terms.
   344         -
   345         -  "Additional permissions" are terms that supplement the terms of this
   346         -License by making exceptions from one or more of its conditions.
   347         -Additional permissions that are applicable to the entire Program shall
   348         -be treated as though they were included in this License, to the extent
   349         -that they are valid under applicable law.  If additional permissions
   350         -apply only to part of the Program, that part may be used separately
   351         -under those permissions, but the entire Program remains governed by
   352         -this License without regard to the additional permissions.
   353         -
   354         -  When you convey a copy of a covered work, you may at your option
   355         -remove any additional permissions from that copy, or from any part of
   356         -it.  (Additional permissions may be written to require their own
   357         -removal in certain cases when you modify the work.)  You may place
   358         -additional permissions on material, added by you to a covered work,
   359         -for which you have or can give appropriate copyright permission.
   360         -
   361         -  Notwithstanding any other provision of this License, for material you
   362         -add to a covered work, you may (if authorized by the copyright holders of
   363         -that material) supplement the terms of this License with terms:
   364         -
   365         -    a) Disclaiming warranty or limiting liability differently from the
   366         -    terms of sections 15 and 16 of this License; or
   367         -
   368         -    b) Requiring preservation of specified reasonable legal notices or
   369         -    author attributions in that material or in the Appropriate Legal
   370         -    Notices displayed by works containing it; or
   371         -
   372         -    c) Prohibiting misrepresentation of the origin of that material, or
   373         -    requiring that modified versions of such material be marked in
   374         -    reasonable ways as different from the original version; or
   375         -
   376         -    d) Limiting the use for publicity purposes of names of licensors or
   377         -    authors of the material; or
   378         -
   379         -    e) Declining to grant rights under trademark law for use of some
   380         -    trade names, trademarks, or service marks; or
   381         -
   382         -    f) Requiring indemnification of licensors and authors of that
   383         -    material by anyone who conveys the material (or modified versions of
   384         -    it) with contractual assumptions of liability to the recipient, for
   385         -    any liability that these contractual assumptions directly impose on
   386         -    those licensors and authors.
   387         -
   388         -  All other non-permissive additional terms are considered "further
   389         -restrictions" within the meaning of section 10.  If the Program as you
   390         -received it, or any part of it, contains a notice stating that it is
   391         -governed by this License along with a term that is a further
   392         -restriction, you may remove that term.  If a license document contains
   393         -a further restriction but permits relicensing or conveying under this
   394         -License, you may add to a covered work material governed by the terms
   395         -of that license document, provided that the further restriction does
   396         -not survive such relicensing or conveying.
   397         -
   398         -  If you add terms to a covered work in accord with this section, you
   399         -must place, in the relevant source files, a statement of the
   400         -additional terms that apply to those files, or a notice indicating
   401         -where to find the applicable terms.
   402         -
   403         -  Additional terms, permissive or non-permissive, may be stated in the
   404         -form of a separately written license, or stated as exceptions;
   405         -the above requirements apply either way.
   406         -
   407         -  8. Termination.
   408         -
   409         -  You may not propagate or modify a covered work except as expressly
   410         -provided under this License.  Any attempt otherwise to propagate or
   411         -modify it is void, and will automatically terminate your rights under
   412         -this License (including any patent licenses granted under the third
   413         -paragraph of section 11).
   414         -
   415         -  However, if you cease all violation of this License, then your
   416         -license from a particular copyright holder is reinstated (a)
   417         -provisionally, unless and until the copyright holder explicitly and
   418         -finally terminates your license, and (b) permanently, if the copyright
   419         -holder fails to notify you of the violation by some reasonable means
   420         -prior to 60 days after the cessation.
   421         -
   422         -  Moreover, your license from a particular copyright holder is
   423         -reinstated permanently if the copyright holder notifies you of the
   424         -violation by some reasonable means, this is the first time you have
   425         -received notice of violation of this License (for any work) from that
   426         -copyright holder, and you cure the violation prior to 30 days after
   427         -your receipt of the notice.
   428         -
   429         -  Termination of your rights under this section does not terminate the
   430         -licenses of parties who have received copies or rights from you under
   431         -this License.  If your rights have been terminated and not permanently
   432         -reinstated, you do not qualify to receive new licenses for the same
   433         -material under section 10.
   434         -
   435         -  9. Acceptance Not Required for Having Copies.
   436         -
   437         -  You are not required to accept this License in order to receive or
   438         -run a copy of the Program.  Ancillary propagation of a covered work
   439         -occurring solely as a consequence of using peer-to-peer transmission
   440         -to receive a copy likewise does not require acceptance.  However,
   441         -nothing other than this License grants you permission to propagate or
   442         -modify any covered work.  These actions infringe copyright if you do
   443         -not accept this License.  Therefore, by modifying or propagating a
   444         -covered work, you indicate your acceptance of this License to do so.
   445         -
   446         -  10. Automatic Licensing of Downstream Recipients.
   447         -
   448         -  Each time you convey a covered work, the recipient automatically
   449         -receives a license from the original licensors, to run, modify and
   450         -propagate that work, subject to this License.  You are not responsible
   451         -for enforcing compliance by third parties with this License.
   452         -
   453         -  An "entity transaction" is a transaction transferring control of an
   454         -organization, or substantially all assets of one, or subdividing an
   455         -organization, or merging organizations.  If propagation of a covered
   456         -work results from an entity transaction, each party to that
   457         -transaction who receives a copy of the work also receives whatever
   458         -licenses to the work the party's predecessor in interest had or could
   459         -give under the previous paragraph, plus a right to possession of the
   460         -Corresponding Source of the work from the predecessor in interest, if
   461         -the predecessor has it or can get it with reasonable efforts.
   462         -
   463         -  You may not impose any further restrictions on the exercise of the
   464         -rights granted or affirmed under this License.  For example, you may
   465         -not impose a license fee, royalty, or other charge for exercise of
   466         -rights granted under this License, and you may not initiate litigation
   467         -(including a cross-claim or counterclaim in a lawsuit) alleging that
   468         -any patent claim is infringed by making, using, selling, offering for
   469         -sale, or importing the Program or any portion of it.
   470         -
   471         -  11. Patents.
   472         -
   473         -  A "contributor" is a copyright holder who authorizes use under this
   474         -License of the Program or a work on which the Program is based.  The
   475         -work thus licensed is called the contributor's "contributor version".
   476         -
   477         -  A contributor's "essential patent claims" are all patent claims
   478         -owned or controlled by the contributor, whether already acquired or
   479         -hereafter acquired, that would be infringed by some manner, permitted
   480         -by this License, of making, using, or selling its contributor version,
   481         -but do not include claims that would be infringed only as a
   482         -consequence of further modification of the contributor version.  For
   483         -purposes of this definition, "control" includes the right to grant
   484         -patent sublicenses in a manner consistent with the requirements of
   485         -this License.
   486         -
   487         -  Each contributor grants you a non-exclusive, worldwide, royalty-free
   488         -patent license under the contributor's essential patent claims, to
   489         -make, use, sell, offer for sale, import and otherwise run, modify and
   490         -propagate the contents of its contributor version.
   491         -
   492         -  In the following three paragraphs, a "patent license" is any express
   493         -agreement or commitment, however denominated, not to enforce a patent
   494         -(such as an express permission to practice a patent or covenant not to
   495         -sue for patent infringement).  To "grant" such a patent license to a
   496         -party means to make such an agreement or commitment not to enforce a
   497         -patent against the party.
   498         -
   499         -  If you convey a covered work, knowingly relying on a patent license,
   500         -and the Corresponding Source of the work is not available for anyone
   501         -to copy, free of charge and under the terms of this License, through a
   502         -publicly available network server or other readily accessible means,
   503         -then you must either (1) cause the Corresponding Source to be so
   504         -available, or (2) arrange to deprive yourself of the benefit of the
   505         -patent license for this particular work, or (3) arrange, in a manner
   506         -consistent with the requirements of this License, to extend the patent
   507         -license to downstream recipients.  "Knowingly relying" means you have
   508         -actual knowledge that, but for the patent license, your conveying the
   509         -covered work in a country, or your recipient's use of the covered work
   510         -in a country, would infringe one or more identifiable patents in that
   511         -country that you have reason to believe are valid.
   512         -
   513         -  If, pursuant to or in connection with a single transaction or
   514         -arrangement, you convey, or propagate by procuring conveyance of, a
   515         -covered work, and grant a patent license to some of the parties
   516         -receiving the covered work authorizing them to use, propagate, modify
   517         -or convey a specific copy of the covered work, then the patent license
   518         -you grant is automatically extended to all recipients of the covered
   519         -work and works based on it.
   520         -
   521         -  A patent license is "discriminatory" if it does not include within
   522         -the scope of its coverage, prohibits the exercise of, or is
   523         -conditioned on the non-exercise of one or more of the rights that are
   524         -specifically granted under this License.  You may not convey a covered
   525         -work if you are a party to an arrangement with a third party that is
   526         -in the business of distributing software, under which you make payment
   527         -to the third party based on the extent of your activity of conveying
   528         -the work, and under which the third party grants, to any of the
   529         -parties who would receive the covered work from you, a discriminatory
   530         -patent license (a) in connection with copies of the covered work
   531         -conveyed by you (or copies made from those copies), or (b) primarily
   532         -for and in connection with specific products or compilations that
   533         -contain the covered work, unless you entered into that arrangement,
   534         -or that patent license was granted, prior to 28 March 2007.
   535         -
   536         -  Nothing in this License shall be construed as excluding or limiting
   537         -any implied license or other defenses to infringement that may
   538         -otherwise be available to you under applicable patent law.
   539         -
   540         -  12. No Surrender of Others' Freedom.
   541         -
   542         -  If conditions are imposed on you (whether by court order, agreement or
   543         -otherwise) that contradict the conditions of this License, they do not
   544         -excuse you from the conditions of this License.  If you cannot convey a
   545         -covered work so as to satisfy simultaneously your obligations under this
   546         -License and any other pertinent obligations, then as a consequence you may
   547         -not convey it at all.  For example, if you agree to terms that obligate you
   548         -to collect a royalty for further conveying from those to whom you convey
   549         -the Program, the only way you could satisfy both those terms and this
   550         -License would be to refrain entirely from conveying the Program.
   551         -
   552         -  13. Use with the GNU Affero General Public License.
   553         -
   554         -  Notwithstanding any other provision of this License, you have
   555         -permission to link or combine any covered work with a work licensed
   556         -under version 3 of the GNU Affero General Public License into a single
   557         -combined work, and to convey the resulting work.  The terms of this
   558         -License will continue to apply to the part which is the covered work,
   559         -but the special requirements of the GNU Affero General Public License,
   560         -section 13, concerning interaction through a network will apply to the
   561         -combination as such.
   562         -
   563         -  14. Revised Versions of this License.
   564         -
   565         -  The Free Software Foundation may publish revised and/or new versions of
   566         -the GNU General Public License from time to time.  Such new versions will
   567         -be similar in spirit to the present version, but may differ in detail to
   568         -address new problems or concerns.
   569         -
   570         -  Each version is given a distinguishing version number.  If the
   571         -Program specifies that a certain numbered version of the GNU General
   572         -Public License "or any later version" applies to it, you have the
   573         -option of following the terms and conditions either of that numbered
   574         -version or of any later version published by the Free Software
   575         -Foundation.  If the Program does not specify a version number of the
   576         -GNU General Public License, you may choose any version ever published
   577         -by the Free Software Foundation.
   578         -
   579         -  If the Program specifies that a proxy can decide which future
   580         -versions of the GNU General Public License can be used, that proxy's
   581         -public statement of acceptance of a version permanently authorizes you
   582         -to choose that version for the Program.
   583         -
   584         -  Later license versions may give you additional or different
   585         -permissions.  However, no additional obligations are imposed on any
   586         -author or copyright holder as a result of your choosing to follow a
   587         -later version.
   588         -
   589         -  15. Disclaimer of Warranty.
   590         -
   591         -  THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
   592         -APPLICABLE LAW.  EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
   593         -HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
   594         -OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
   595         -THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
   596         -PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
   597         -IS WITH YOU.  SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
   598         -ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
   599         -
   600         -  16. Limitation of Liability.
   601         -
   602         -  IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
   603         -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
   604         -THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
   605         -GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
   606         -USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
   607         -DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
   608         -PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
   609         -EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
   610         -SUCH DAMAGES.
   611         -
   612         -  17. Interpretation of Sections 15 and 16.
   613         -
   614         -  If the disclaimer of warranty and limitation of liability provided
   615         -above cannot be given local legal effect according to their terms,
   616         -reviewing courts shall apply local law that most closely approximates
   617         -an absolute waiver of all civil liability in connection with the
   618         -Program, unless a warranty or assumption of liability accompanies a
   619         -copy of the Program in return for a fee.
   620         -
   621         -                     END OF TERMS AND CONDITIONS
   622         -
   623         -            How to Apply These Terms to Your New Programs
   624         -
   625         -  If you develop a new program, and you want it to be of the greatest
   626         -possible use to the public, the best way to achieve this is to make it
   627         -free software which everyone can redistribute and change under these terms.
   628         -
   629         -  To do so, attach the following notices to the program.  It is safest
   630         -to attach them to the start of each source file to most effectively
   631         -state the exclusion of warranty; and each file should have at least
   632         -the "copyright" line and a pointer to where the full notice is found.
   633         -
   634         -    <one line to give the program's name and a brief idea of what it does.>
   635         -    Copyright (C) <year>  <name of author>
   636         -
   637         -    This program is free software: you can redistribute it and/or modify
   638         -    it under the terms of the GNU General Public License as published by
   639         -    the Free Software Foundation, either version 3 of the License, or
   640         -    (at your option) any later version.
   641         -
   642         -    This program is distributed in the hope that it will be useful,
   643         -    but WITHOUT ANY WARRANTY; without even the implied warranty of
   644         -    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
   645         -    GNU General Public License for more details.
   646         -
   647         -    You should have received a copy of the GNU General Public License
   648         -    along with this program.  If not, see <http://www.gnu.org/licenses/>.
   649         -
   650         -Also add information on how to contact you by electronic and paper mail.
   651         -
   652         -  If the program does terminal interaction, make it output a short
   653         -notice like this when it starts in an interactive mode:
   654         -
   655         -    <program>  Copyright (C) <year>  <name of author>
   656         -    This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
   657         -    This is free software, and you are welcome to redistribute it
   658         -    under certain conditions; type `show c' for details.
   659         -
   660         -The hypothetical commands `show w' and `show c' should show the appropriate
   661         -parts of the General Public License.  Of course, your program's commands
   662         -might be different; for a GUI interface, you would use an "about box".
   663         -
   664         -  You should also get your employer (if you work as a programmer) or school,
   665         -if any, to sign a "copyright disclaimer" for the program, if necessary.
   666         -For more information on this, and how to apply and follow the GNU GPL, see
   667         -<http://www.gnu.org/licenses/>.
   668         -
   669         -  The GNU General Public License does not permit incorporating your program
   670         -into proprietary programs.  If your program is a subroutine library, you
   671         -may consider it more useful to permit linking proprietary applications with
   672         -the library.  If this is what you want to do, use the GNU Lesser General
   673         -Public License instead of this License.  But first, please read
   674         -<http://www.gnu.org/philosophy/why-not-lgpl.html>.
          474  +     [NOTE: The text of this Exhibit A may differ slightly from the text of
          475  +     the notices in the Source Code files of the Original Code. You should
          476  +     use the text of this Exhibit A rather than the text found in the
          477  +     Original Code Source Code for Your Modifications.]
          478  +

Added ChangeLog.

            1  +See the fossil archive at https://www.gaia-gis.it/fossil/librasterlite/timeline

Changes to Makefile-static-Linux.

    61     61   	/usr/local/lib/libgeos.a -lstdc++ -lm -lpthread -ldl
    62     62   	strip --strip-all ./static_bin/rasterlite_tool
    63     63   
    64     64   ./static_bin/rasterlite_grid: ./src/rasterlite_grid.o
    65     65   	$(CC) ./src/rasterlite_grid.o -o ./static_bin/rasterlite_grid \
    66     66   	/usr/local/lib/libgeotiff.a \
    67     67   	/usr/lib/libtiff.a \
    68         -	/usr/lib/libproj.a \
           68  +	/usr/local/lib/libproj.a \
    69     69   	/usr/lib/libjpeg.a \
    70     70   	/usr/lib/libz.a -lm
    71     71   	strip --strip-all ./static_bin/rasterlite_grid

Changes to Makefile-static-MinGW.

     1      1   # SandroFurieri (c) 2009
     2      2   # Makefile RasterLite statically linked tools [Win MSYS/MinGW]
            3  +
            4  +CFLAGS = -Wall -Wextra -Wunused -pedantic -I/usr/local/include
            5  +GG = g++
            6  +CC = gcc
     3      7   
     4      8   all: ./static_bin/rasterlite_load.exe ./static_bin/rasterlite_pyramid.exe \
     5      9   	./static_bin/rasterlite_topmost.exe ./static_bin/rasterlite_tool.exe \
     6     10   	./static_bin/rasterlite_grid.exe
     7     11   
     8     12   ./static_bin/rasterlite_load.exe: ./src/rasterlite_load.o
     9         -	$(CC) ./src/rasterlite_load.o -o ./static_bin/rasterlite_load.exe \
           13  +	$(GG) ./src/rasterlite_load.o -o ./static_bin/rasterlite_load.exe \
           14  +	./lib/.libs/librasterlite.a \
           15  +	/usr/local/lib/libgeotiff.a \
           16  +	/usr/local/lib/libtiff.a \
           17  +	/usr/local/lib/libjpeg.a \
           18  +	/usr/local/lib/libpng.a \
           19  +	/usr/local/lib/libz.a \
           20  +	/usr/local/lib/libspatialite.a \
           21  +	/usr/local/lib/libsqlite3.a \
           22  +	/usr/local/lib/liblwgeom.a \
           23  +	/usr/local/lib/libxml2.a \
           24  +	/usr/local/lib/libproj.a \
           25  +	/usr/local/lib/libgeos_c.a \
           26  +	/usr/local/lib/libfreexl.a \
           27  +	/usr/local/lib/libz.a \
           28  +	/usr/local/lib/libiconv.a \
           29  +	/usr/local/lib/libgeos.a \
           30  +	-lm -lmsimg32 -lws2_32 -static-libstdc++ -static-libgcc
           31  +	strip --strip-all ./static_bin/rasterlite_load.exe
           32  +
           33  +./static_bin/rasterlite_pyramid.exe: ./src/rasterlite_pyramid.o
           34  +	$(GG) ./src/rasterlite_pyramid.o -o ./static_bin/rasterlite_pyramid.exe \
    10     35   	./lib/.libs/librasterlite.a \
    11     36   	/usr/local/lib/libgeotiff.a \
    12     37   	/usr/local/lib/libtiff.a \
    13     38   	/usr/local/lib/libjpeg.a \
    14     39   	/usr/local/lib/libpng.a \
    15     40   	/usr/local/lib/libz.a \
    16     41   	/usr/local/lib/libspatialite.a \
           42  +	/usr/local/lib/libsqlite3.a \
           43  +	/usr/local/lib/liblwgeom.a \
           44  +	/usr/local/lib/libxml2.a \
    17     45   	/usr/local/lib/libproj.a \
    18     46   	/usr/local/lib/libgeos_c.a \
           47  +	/usr/local/lib/libfreexl.a \
           48  +	/usr/local/lib/libz.a \
    19     49   	/usr/local/lib/libiconv.a \
    20         -	/usr/local/lib/libgeos.a -lstdc++ -lm
    21         -	strip --strip-all ./static_bin/rasterlite_load.exe
           50  +	/usr/local/lib/libgeos.a \
           51  +	-lm -lmsimg32 -lws2_32 -static-libstdc++ -static-libgcc
           52  +	strip --strip-all ./static_bin/rasterlite_pyramid.exe
    22     53   
    23         -./static_bin/rasterlite_pyramid.exe: ./src/rasterlite_pyramid.o
    24         -	$(CC) ./src/rasterlite_pyramid.o -o ./static_bin/rasterlite_pyramid.exe \
           54  +./static_bin/rasterlite_topmost.exe: ./src/rasterlite_topmost.o
           55  +	$(GG) ./src/rasterlite_topmost.o -o ./static_bin/rasterlite_topmost.exe \
    25     56   	./lib/.libs/librasterlite.a \
    26     57   	/usr/local/lib/libgeotiff.a \
    27     58   	/usr/local/lib/libtiff.a \
    28     59   	/usr/local/lib/libjpeg.a \
    29     60   	/usr/local/lib/libpng.a \
    30     61   	/usr/local/lib/libz.a \
    31     62   	/usr/local/lib/libspatialite.a \
           63  +	/usr/local/lib/libsqlite3.a \
           64  +	/usr/local/lib/liblwgeom.a \
           65  +	/usr/local/lib/libxml2.a \
    32     66   	/usr/local/lib/libproj.a \
    33     67   	/usr/local/lib/libgeos_c.a \
           68  +	/usr/local/lib/libfreexl.a \
           69  +	/usr/local/lib/libz.a \
    34     70   	/usr/local/lib/libiconv.a \
    35         -	/usr/local/lib/libgeos.a -lstdc++ -lm
    36         -	strip --strip-all ./static_bin/rasterlite_pyramid.exe
           71  +	/usr/local/lib/libgeos.a \
           72  +	-lm -lmsimg32 -lws2_32 -static-libstdc++ -static-libgcc
           73  +	strip --strip-all ./static_bin/rasterlite_topmost.exe
    37     74   
    38         -./static_bin/rasterlite_topmost.exe: ./src/rasterlite_topmost.o
    39         -	$(CC) ./src/rasterlite_topmost.o -o ./static_bin/rasterlite_topmost.exe \
           75  +./static_bin/rasterlite_tool.exe: ./src/rasterlite_tool.o
           76  +	$(GG) ./src/rasterlite_tool.o -o ./static_bin/rasterlite_tool.exe \
    40     77   	./lib/.libs/librasterlite.a \
    41     78   	/usr/local/lib/libgeotiff.a \
    42     79   	/usr/local/lib/libtiff.a \
    43     80   	/usr/local/lib/libjpeg.a \
    44     81   	/usr/local/lib/libpng.a \
    45     82   	/usr/local/lib/libz.a \
    46     83   	/usr/local/lib/libspatialite.a \
           84  +	/usr/local/lib/libsqlite3.a \
           85  +	/usr/local/lib/liblwgeom.a \
           86  +	/usr/local/lib/libxml2.a \
    47     87   	/usr/local/lib/libproj.a \
    48     88   	/usr/local/lib/libgeos_c.a \
           89  +	/usr/local/lib/libfreexl.a \
           90  +	/usr/local/lib/libz.a \
    49     91   	/usr/local/lib/libiconv.a \
    50         -	/usr/local/lib/libgeos.a -lstdc++ -lm
    51         -	strip --strip-all ./static_bin/rasterlite_topmost.exe
    52         -
    53         -./static_bin/rasterlite_tool.exe: ./src/rasterlite_tool.o
    54         -	$(CC) ./src/rasterlite_tool.o -o ./static_bin/rasterlite_tool.exe \
    55         -	./lib/.libs/librasterlite.a \
    56         -	/usr/local/lib/libgeotiff.a \
    57         -	/usr/local/lib/libtiff.a \
    58         -	/usr/local/lib/libjpeg.a \
    59         -	/usr/local/lib/libpng.a \
    60         -	/usr/local/lib/libz.a \
    61         -	/usr/local/lib/libspatialite.a \
    62         -	/usr/local/lib/libproj.a \
    63         -	/usr/local/lib/libgeos_c.a \
    64         -	/usr/local/lib/libiconv.a \
    65         -	/usr/local/lib/libgeos.a -lstdc++ -lm
           92  +	/usr/local/lib/libgeos.a \
           93  +	-lm -lmsimg32 -lws2_32 -static-libstdc++ -static-libgcc
    66     94   	strip --strip-all ./static_bin/rasterlite_tool.exe
    67     95   
    68     96   ./static_bin/rasterlite_grid.exe: ./src/rasterlite_grid.o
    69     97   	$(CC) ./src/rasterlite_grid.o -o ./static_bin/rasterlite_grid.exe \
    70     98   	/usr/local/lib/libgeotiff.a \
    71     99   	/usr/local/lib/libtiff.a \
    72    100   	/usr/local/lib/libproj.a \
    73    101   	/usr/local/lib/libjpeg.a \
    74    102   	/usr/local/lib/libz.a 
    75    103   	strip --strip-all ./static_bin/rasterlite_grid.exe
          104  +
          105  +rasterlite_load.o:
          106  +	$(CC) $(CFLAGS) rasterlite_load.c -c
          107  +
          108  +rasterlite_pyramid.o:
          109  +	$(CC) $(CFLAGS) rasterlite_pyramid.c -c
          110  +
          111  +rasterlite_topmost.o:
          112  +	$(CC) $(CFLAGS) rasterlite_topmost.c -c
          113  +
          114  +rasterlite_tool.o:
          115  +	$(CC) $(CFLAGS) rasterlite_tool.c -c

Changes to Makefile.am.

     1         -SUBDIRS = headers epsilon lib src 
            1  +ACLOCAL_AMFLAGS = -I m4
            2  +
            3  +SUBDIRS = headers lib src test
     2      4   
     3      5   AUTOMAKE_OPTIONS = dist-zip
     4      6   
     5      7   EXTRA_DIST = Makefile-static-MinGW Makefile-static-Linux \
     6         -	Makefile-static-MacOsX makefile.vc nmake.opt \
     7         -	librasterlite.def
            8  +	Makefile-static-MacOsX makefile.vc nmake.opt 
     8      9   
     9     10   pkgconfigdir = $(libdir)/pkgconfig
    10     11   pkgconfig_DATA = rasterlite.pc
    11     12   
           13  +coverage-init:
           14  +	lcov --directory lib --capture --initial --output-file librasterlite_cov.info
           15  +
           16  +coverage::
           17  +	lcov --directory lib --output-file librasterlite_cov.info --capture
           18  +	genhtml -o covresults librasterlite_cov.info
           19  +
           20  +MOSTLYCLEANFILES = librasterlite_cov.info

Changes to Makefile.in.

     1         -# Makefile.in generated by automake 1.10.1 from Makefile.am.
            1  +# Makefile.in generated by automake 1.11.6 from Makefile.am.
     2      2   # @configure_input@
     3      3   
     4      4   # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
     5         -# 2003, 2004, 2005, 2006, 2007, 2008  Free Software Foundation, Inc.
            5  +# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
            6  +# Foundation, Inc.
     6      7   # This Makefile.in is free software; the Free Software Foundation
     7      8   # gives unlimited permission to copy and/or distribute it,
     8      9   # with or without modifications, as long as this notice is preserved.
     9     10   
    10     11   # This program is distributed in the hope that it will be useful,
    11     12   # but WITHOUT ANY WARRANTY, to the extent permitted by law; without
    12     13   # even the implied warranty of MERCHANTABILITY or FITNESS FOR A
    13     14   # PARTICULAR PURPOSE.
    14     15   
    15     16   @SET_MAKE@
    16     17   
    17     18   VPATH = @srcdir@
           19  +am__make_dryrun = \
           20  +  { \
           21  +    am__dry=no; \
           22  +    case $$MAKEFLAGS in \
           23  +      *\\[\ \	]*) \
           24  +        echo 'am--echo: ; @echo "AM"  OK' | $(MAKE) -f - 2>/dev/null \
           25  +          | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
           26  +      *) \
           27  +        for am__flg in $$MAKEFLAGS; do \
           28  +          case $$am__flg in \
           29  +            *=*|--*) ;; \
           30  +            *n*) am__dry=yes; break;; \
           31  +          esac; \
           32  +        done;; \
           33  +    esac; \
           34  +    test $$am__dry = yes; \
           35  +  }
    18     36   pkgdatadir = $(datadir)/@PACKAGE@
    19         -pkglibdir = $(libdir)/@PACKAGE@
    20     37   pkgincludedir = $(includedir)/@PACKAGE@
           38  +pkglibdir = $(libdir)/@PACKAGE@
           39  +pkglibexecdir = $(libexecdir)/@PACKAGE@
    21     40   am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
    22     41   install_sh_DATA = $(install_sh) -c -m 644
    23     42   install_sh_PROGRAM = $(install_sh) -c
    24     43   install_sh_SCRIPT = $(install_sh) -c
    25     44   INSTALL_HEADER = $(INSTALL_DATA)
    26     45   transform = $(program_transform_name)
    27     46   NORMAL_INSTALL = :
................................................................................
    30     49   NORMAL_UNINSTALL = :
    31     50   PRE_UNINSTALL = :
    32     51   POST_UNINSTALL = :
    33     52   build_triplet = @build@
    34     53   host_triplet = @host@
    35     54   subdir = .
    36     55   DIST_COMMON = README $(am__configure_deps) $(srcdir)/Makefile.am \
    37         -	$(srcdir)/Makefile.in $(srcdir)/rasterlite.pc.in \
    38         -	$(top_srcdir)/configure AUTHORS COPYING INSTALL config.guess \
    39         -	config.sub depcomp install-sh ltmain.sh missing
           56  +	$(srcdir)/Makefile.in $(srcdir)/config.h.in \
           57  +	$(srcdir)/rasterlite.pc.in $(top_srcdir)/configure AUTHORS \
           58  +	COPYING ChangeLog INSTALL NEWS config.guess config.sub depcomp \
           59  +	install-sh ltmain.sh missing
    40     60   ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
    41         -am__aclocal_m4_deps = $(top_srcdir)/configure.ac
           61  +am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \
           62  +	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
           63  +	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
           64  +	$(top_srcdir)/configure.ac
    42     65   am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
    43     66   	$(ACLOCAL_M4)
    44     67   am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \
    45     68    configure.lineno config.status.lineno
    46     69   mkinstalldirs = $(install_sh) -d
           70  +CONFIG_HEADER = config.h
    47     71   CONFIG_CLEAN_FILES = rasterlite.pc
           72  +CONFIG_CLEAN_VPATH_FILES =
    48     73   SOURCES =
    49     74   DIST_SOURCES =
    50     75   RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
    51     76   	html-recursive info-recursive install-data-recursive \
    52     77   	install-dvi-recursive install-exec-recursive \
    53     78   	install-html-recursive install-info-recursive \
    54     79   	install-pdf-recursive install-ps-recursive install-recursive \
    55     80   	installcheck-recursive installdirs-recursive pdf-recursive \
    56     81   	ps-recursive uninstall-recursive
           82  +am__can_run_installinfo = \
           83  +  case $$AM_UPDATE_INFO_DIR in \
           84  +    n|no|NO) false;; \
           85  +    *) (install-info --version) >/dev/null 2>&1;; \
           86  +  esac
    57     87   am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
    58     88   am__vpath_adj = case $$p in \
    59     89       $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
    60     90       *) f=$$p;; \
    61     91     esac;
    62         -am__strip_dir = `echo $$p | sed -e 's|^.*/||'`;
           92  +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
           93  +am__install_max = 40
           94  +am__nobase_strip_setup = \
           95  +  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
           96  +am__nobase_strip = \
           97  +  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
           98  +am__nobase_list = $(am__nobase_strip_setup); \
           99  +  for p in $$list; do echo "$$p $$p"; done | \
          100  +  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
          101  +  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
          102  +    if (++n[$$2] == $(am__install_max)) \
          103  +      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
          104  +    END { for (dir in files) print dir, files[dir] }'
          105  +am__base_list = \
          106  +  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
          107  +  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
          108  +am__uninstall_files_from_dir = { \
          109  +  test -z "$$files" \
          110  +    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
          111  +    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
          112  +         $(am__cd) "$$dir" && rm -f $$files; }; \
          113  +  }
    63    114   am__installdirs = "$(DESTDIR)$(pkgconfigdir)"
    64         -pkgconfigDATA_INSTALL = $(INSTALL_DATA)
    65    115   DATA = $(pkgconfig_DATA)
    66    116   RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive	\
    67    117     distclean-recursive maintainer-clean-recursive
          118  +AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \
          119  +	$(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \
          120  +	distdir dist dist-all distcheck
    68    121   ETAGS = etags
    69    122   CTAGS = ctags
    70    123   DIST_SUBDIRS = $(SUBDIRS)
    71    124   DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
    72    125   distdir = $(PACKAGE)-$(VERSION)
    73    126   top_distdir = $(distdir)
    74    127   am__remove_distdir = \
    75         -  { test ! -d $(distdir) \
    76         -    || { find $(distdir) -type d ! -perm -200 -exec chmod u+w {} ';' \
    77         -         && rm -fr $(distdir); }; }
          128  +  if test -d "$(distdir)"; then \
          129  +    find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \
          130  +      && rm -rf "$(distdir)" \
          131  +      || { sleep 5 && rm -rf "$(distdir)"; }; \
          132  +  else :; fi
          133  +am__relativize = \
          134  +  dir0=`pwd`; \
          135  +  sed_first='s,^\([^/]*\)/.*$$,\1,'; \
          136  +  sed_rest='s,^[^/]*/*,,'; \
          137  +  sed_last='s,^.*/\([^/]*\)$$,\1,'; \
          138  +  sed_butlast='s,/*[^/]*$$,,'; \
          139  +  while test -n "$$dir1"; do \
          140  +    first=`echo "$$dir1" | sed -e "$$sed_first"`; \
          141  +    if test "$$first" != "."; then \
          142  +      if test "$$first" = ".."; then \
          143  +        dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
          144  +        dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
          145  +      else \
          146  +        first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
          147  +        if test "$$first2" = "$$first"; then \
          148  +          dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
          149  +        else \
          150  +          dir2="../$$dir2"; \
          151  +        fi; \
          152  +        dir0="$$dir0"/"$$first"; \
          153  +      fi; \
          154  +    fi; \
          155  +    dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
          156  +  done; \
          157  +  reldir="$$dir2"
    78    158   DIST_ARCHIVES = $(distdir).tar.gz $(distdir).zip
    79    159   GZIP_ENV = --best
    80    160   distuninstallcheck_listfiles = find . -type f -print
          161  +am__distuninstallcheck_listfiles = $(distuninstallcheck_listfiles) \
          162  +  | sed 's|^\./|$(prefix)/|' | grep -v '$(infodir)/dir$$'
    81    163   distcleancheck_listfiles = find . -type f -print
    82    164   ACLOCAL = @ACLOCAL@
    83    165   AMTAR = @AMTAR@
    84    166   AR = @AR@
    85    167   AS = @AS@
    86    168   AUTOCONF = @AUTOCONF@
    87    169   AUTOHEADER = @AUTOHEADER@
................................................................................
    97    179   CXXDEPMODE = @CXXDEPMODE@
    98    180   CXXFLAGS = @CXXFLAGS@
    99    181   CYGPATH_W = @CYGPATH_W@
   100    182   DEFS = @DEFS@
   101    183   DEPDIR = @DEPDIR@
   102    184   DLLTOOL = @DLLTOOL@
   103    185   DSYMUTIL = @DSYMUTIL@
   104         -ECHO = @ECHO@
          186  +DUMPBIN = @DUMPBIN@
   105    187   ECHO_C = @ECHO_C@
   106    188   ECHO_N = @ECHO_N@
   107    189   ECHO_T = @ECHO_T@
   108    190   EGREP = @EGREP@
   109    191   EXEEXT = @EXEEXT@
   110         -F77 = @F77@
   111         -FFLAGS = @FFLAGS@
          192  +FGREP = @FGREP@
   112    193   GREP = @GREP@
   113    194   INSTALL = @INSTALL@
   114    195   INSTALL_DATA = @INSTALL_DATA@
   115    196   INSTALL_PROGRAM = @INSTALL_PROGRAM@
   116    197   INSTALL_SCRIPT = @INSTALL_SCRIPT@
   117    198   INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
          199  +LD = @LD@
   118    200   LDFLAGS = @LDFLAGS@
   119    201   LIBOBJS = @LIBOBJS@
          202  +LIBPNG_CFLAGS = @LIBPNG_CFLAGS@
          203  +LIBPNG_LIBS = @LIBPNG_LIBS@
   120    204   LIBS = @LIBS@
          205  +LIBSPATIALITE_CFLAGS = @LIBSPATIALITE_CFLAGS@
          206  +LIBSPATIALITE_LIBS = @LIBSPATIALITE_LIBS@
   121    207   LIBTOOL = @LIBTOOL@
          208  +LIPO = @LIPO@
   122    209   LN_S = @LN_S@
   123    210   LTLIBOBJS = @LTLIBOBJS@
   124    211   MAINT = @MAINT@
   125    212   MAKEINFO = @MAKEINFO@
          213  +MANIFEST_TOOL = @MANIFEST_TOOL@
   126    214   MKDIR_P = @MKDIR_P@
          215  +NM = @NM@
   127    216   NMEDIT = @NMEDIT@
   128    217   OBJDUMP = @OBJDUMP@
   129    218   OBJEXT = @OBJEXT@
          219  +OTOOL = @OTOOL@
          220  +OTOOL64 = @OTOOL64@
   130    221   PACKAGE = @PACKAGE@
   131    222   PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
   132    223   PACKAGE_NAME = @PACKAGE_NAME@
   133    224   PACKAGE_STRING = @PACKAGE_STRING@
   134    225   PACKAGE_TARNAME = @PACKAGE_TARNAME@
          226  +PACKAGE_URL = @PACKAGE_URL@
   135    227   PACKAGE_VERSION = @PACKAGE_VERSION@
   136    228   PATH_SEPARATOR = @PATH_SEPARATOR@
          229  +PKG_CONFIG = @PKG_CONFIG@
          230  +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
          231  +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
   137    232   RANLIB = @RANLIB@
   138    233   SED = @SED@
   139    234   SET_MAKE = @SET_MAKE@
   140    235   SHELL = @SHELL@
   141    236   STRIP = @STRIP@
   142    237   VERSION = @VERSION@
   143    238   abs_builddir = @abs_builddir@
   144    239   abs_srcdir = @abs_srcdir@
   145    240   abs_top_builddir = @abs_top_builddir@
   146    241   abs_top_srcdir = @abs_top_srcdir@
          242  +ac_ct_AR = @ac_ct_AR@
   147    243   ac_ct_CC = @ac_ct_CC@
   148    244   ac_ct_CXX = @ac_ct_CXX@
   149         -ac_ct_F77 = @ac_ct_F77@
          245  +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
   150    246   am__include = @am__include@
   151    247   am__leading_dot = @am__leading_dot@
   152    248   am__quote = @am__quote@
   153    249   am__tar = @am__tar@
   154    250   am__untar = @am__untar@
   155    251   bindir = @bindir@
   156    252   build = @build@
................................................................................
   185    281   program_transform_name = @program_transform_name@
   186    282   psdir = @psdir@
   187    283   sbindir = @sbindir@
   188    284   sharedstatedir = @sharedstatedir@
   189    285   srcdir = @srcdir@
   190    286   sysconfdir = @sysconfdir@
   191    287   target_alias = @target_alias@
          288  +top_build_prefix = @top_build_prefix@
   192    289   top_builddir = @top_builddir@
   193    290   top_srcdir = @top_srcdir@
   194         -SUBDIRS = headers epsilon lib src 
          291  +ACLOCAL_AMFLAGS = -I m4
          292  +SUBDIRS = headers lib src test
   195    293   AUTOMAKE_OPTIONS = dist-zip
   196    294   EXTRA_DIST = Makefile-static-MinGW Makefile-static-Linux \
   197         -	Makefile-static-MacOsX makefile.vc nmake.opt \
   198         -	librasterlite.def
          295  +	Makefile-static-MacOsX makefile.vc nmake.opt 
   199    296   
   200    297   pkgconfigdir = $(libdir)/pkgconfig
   201    298   pkgconfig_DATA = rasterlite.pc
   202         -all: all-recursive
          299  +MOSTLYCLEANFILES = librasterlite_cov.info
          300  +all: config.h
          301  +	$(MAKE) $(AM_MAKEFLAGS) all-recursive
   203    302   
   204    303   .SUFFIXES:
   205         -am--refresh:
          304  +am--refresh: Makefile
   206    305   	@:
   207    306   $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps)
   208    307   	@for dep in $?; do \
   209    308   	  case '$(am__configure_deps)' in \
   210    309   	    *$$dep*) \
   211         -	      echo ' cd $(srcdir) && $(AUTOMAKE) --foreign '; \
   212         -	      cd $(srcdir) && $(AUTOMAKE) --foreign  \
          310  +	      echo ' cd $(srcdir) && $(AUTOMAKE) --gnu'; \
          311  +	      $(am__cd) $(srcdir) && $(AUTOMAKE) --gnu \
   213    312   		&& exit 0; \
   214    313   	      exit 1;; \
   215    314   	  esac; \
   216    315   	done; \
   217         -	echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign  Makefile'; \
   218         -	cd $(top_srcdir) && \
   219         -	  $(AUTOMAKE) --foreign  Makefile
          316  +	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu Makefile'; \
          317  +	$(am__cd) $(top_srcdir) && \
          318  +	  $(AUTOMAKE) --gnu Makefile
   220    319   .PRECIOUS: Makefile
   221    320   Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
   222    321   	@case '$?' in \
   223    322   	  *config.status*) \
   224    323   	    echo ' $(SHELL) ./config.status'; \
   225    324   	    $(SHELL) ./config.status;; \
   226    325   	  *) \
................................................................................
   228    327   	    cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \
   229    328   	esac;
   230    329   
   231    330   $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
   232    331   	$(SHELL) ./config.status --recheck
   233    332   
   234    333   $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
   235         -	cd $(srcdir) && $(AUTOCONF)
          334  +	$(am__cd) $(srcdir) && $(AUTOCONF)
   236    335   $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
   237         -	cd $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS)
          336  +	$(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS)
          337  +$(am__aclocal_m4_deps):
          338  +
          339  +config.h: stamp-h1
          340  +	@if test ! -f $@; then rm -f stamp-h1; else :; fi
          341  +	@if test ! -f $@; then $(MAKE) $(AM_MAKEFLAGS) stamp-h1; else :; fi
          342  +
          343  +stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status
          344  +	@rm -f stamp-h1
          345  +	cd $(top_builddir) && $(SHELL) ./config.status config.h
          346  +$(srcdir)/config.h.in: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) 
          347  +	($(am__cd) $(top_srcdir) && $(AUTOHEADER))
          348  +	rm -f stamp-h1
          349  +	touch $@
          350  +
          351  +distclean-hdr:
          352  +	-rm -f config.h stamp-h1
   238    353   rasterlite.pc: $(top_builddir)/config.status $(srcdir)/rasterlite.pc.in
   239    354   	cd $(top_builddir) && $(SHELL) ./config.status $@
   240    355   
   241    356   mostlyclean-libtool:
   242    357   	-rm -f *.lo
   243    358   
   244    359   clean-libtool:
   245    360   	-rm -rf .libs _libs
   246    361   
   247    362   distclean-libtool:
   248         -	-rm -f libtool
          363  +	-rm -f libtool config.lt
   249    364   install-pkgconfigDATA: $(pkgconfig_DATA)
   250    365   	@$(NORMAL_INSTALL)
   251         -	test -z "$(pkgconfigdir)" || $(MKDIR_P) "$(DESTDIR)$(pkgconfigdir)"
   252         -	@list='$(pkgconfig_DATA)'; for p in $$list; do \
          366  +	@list='$(pkgconfig_DATA)'; test -n "$(pkgconfigdir)" || list=; \
          367  +	if test -n "$$list"; then \
          368  +	  echo " $(MKDIR_P) '$(DESTDIR)$(pkgconfigdir)'"; \
          369  +	  $(MKDIR_P) "$(DESTDIR)$(pkgconfigdir)" || exit 1; \
          370  +	fi; \
          371  +	for p in $$list; do \
   253    372   	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
   254         -	  f=$(am__strip_dir) \
   255         -	  echo " $(pkgconfigDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(pkgconfigdir)/$$f'"; \
   256         -	  $(pkgconfigDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(pkgconfigdir)/$$f"; \
          373  +	  echo "$$d$$p"; \
          374  +	done | $(am__base_list) | \
          375  +	while read files; do \
          376  +	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pkgconfigdir)'"; \
          377  +	  $(INSTALL_DATA) $$files "$(DESTDIR)$(pkgconfigdir)" || exit $$?; \
   257    378   	done
   258    379   
   259    380   uninstall-pkgconfigDATA:
   260    381   	@$(NORMAL_UNINSTALL)
   261         -	@list='$(pkgconfig_DATA)'; for p in $$list; do \
   262         -	  f=$(am__strip_dir) \
   263         -	  echo " rm -f '$(DESTDIR)$(pkgconfigdir)/$$f'"; \
   264         -	  rm -f "$(DESTDIR)$(pkgconfigdir)/$$f"; \
   265         -	done
          382  +	@list='$(pkgconfig_DATA)'; test -n "$(pkgconfigdir)" || list=; \
          383  +	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
          384  +	dir='$(DESTDIR)$(pkgconfigdir)'; $(am__uninstall_files_from_dir)
   266    385   
   267    386   # This directory's subdirectories are mostly independent; you can cd
   268    387   # into them and run `make' without going through this Makefile.
   269    388   # To change the values of `make' variables: instead of editing Makefiles,
   270    389   # (1) if the variable is set in `config.status', edit `config.status'
   271    390   #     (which will cause the Makefiles to be regenerated when you run `make');
   272    391   # (2) otherwise, pass the desired values on the `make' command line.
   273    392   $(RECURSIVE_TARGETS):
   274         -	@failcom='exit 1'; \
          393  +	@fail= failcom='exit 1'; \
   275    394   	for f in x $$MAKEFLAGS; do \
   276    395   	  case $$f in \
   277    396   	    *=* | --[!k]*);; \
   278    397   	    *k*) failcom='fail=yes';; \
   279    398   	  esac; \
   280    399   	done; \
   281    400   	dot_seen=no; \
................................................................................
   284    403   	  echo "Making $$target in $$subdir"; \
   285    404   	  if test "$$subdir" = "."; then \
   286    405   	    dot_seen=yes; \
   287    406   	    local_target="$$target-am"; \
   288    407   	  else \
   289    408   	    local_target="$$target"; \
   290    409   	  fi; \
   291         -	  (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
          410  +	  ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
   292    411   	  || eval $$failcom; \
   293    412   	done; \
   294    413   	if test "$$dot_seen" = "no"; then \
   295    414   	  $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
   296    415   	fi; test -z "$$fail"
   297    416   
   298    417   $(RECURSIVE_CLEAN_TARGETS):
   299         -	@failcom='exit 1'; \
          418  +	@fail= failcom='exit 1'; \
   300    419   	for f in x $$MAKEFLAGS; do \
   301    420   	  case $$f in \
   302    421   	    *=* | --[!k]*);; \
   303    422   	    *k*) failcom='fail=yes';; \
   304    423   	  esac; \
   305    424   	done; \
   306    425   	dot_seen=no; \
................................................................................
   318    437   	for subdir in $$rev; do \
   319    438   	  echo "Making $$target in $$subdir"; \
   320    439   	  if test "$$subdir" = "."; then \
   321    440   	    local_target="$$target-am"; \
   322    441   	  else \
   323    442   	    local_target="$$target"; \
   324    443   	  fi; \
   325         -	  (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
          444  +	  ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
   326    445   	  || eval $$failcom; \
   327    446   	done && test -z "$$fail"
   328    447   tags-recursive:
   329    448   	list='$(SUBDIRS)'; for subdir in $$list; do \
   330         -	  test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
          449  +	  test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
   331    450   	done
   332    451   ctags-recursive:
   333    452   	list='$(SUBDIRS)'; for subdir in $$list; do \
   334         -	  test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
          453  +	  test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
   335    454   	done
   336    455   
   337    456   ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
   338    457   	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
   339    458   	unique=`for i in $$list; do \
   340    459   	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
   341    460   	  done | \
   342         -	  $(AWK) '{ files[$$0] = 1; nonemtpy = 1; } \
          461  +	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
   343    462   	      END { if (nonempty) { for (i in files) print i; }; }'`; \
   344    463   	mkid -fID $$unique
   345    464   tags: TAGS
   346    465   
   347         -TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
          466  +TAGS: tags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \
   348    467   		$(TAGS_FILES) $(LISP)
   349         -	tags=; \
          468  +	set x; \
   350    469   	here=`pwd`; \
   351    470   	if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
   352    471   	  include_option=--etags-include; \
   353    472   	  empty_fix=.; \
   354    473   	else \
   355    474   	  include_option=--include; \
   356    475   	  empty_fix=; \
   357    476   	fi; \
   358    477   	list='$(SUBDIRS)'; for subdir in $$list; do \
   359    478   	  if test "$$subdir" = .; then :; else \
   360    479   	    test ! -f $$subdir/TAGS || \
   361         -	      tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \
          480  +	      set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
   362    481   	  fi; \
   363    482   	done; \
   364         -	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
          483  +	list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \
   365    484   	unique=`for i in $$list; do \
   366    485   	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
   367    486   	  done | \
   368    487   	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
   369    488   	      END { if (nonempty) { for (i in files) print i; }; }'`; \
   370         -	if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
          489  +	shift; \
          490  +	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
   371    491   	  test -n "$$unique" || unique=$$empty_fix; \
   372         -	  $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
   373         -	    $$tags $$unique; \
          492  +	  if test $$# -gt 0; then \
          493  +	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
          494  +	      "$$@" $$unique; \
          495  +	  else \
          496  +	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
          497  +	      $$unique; \
          498  +	  fi; \
   374    499   	fi
   375    500   ctags: CTAGS
   376         -CTAGS: ctags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
          501  +CTAGS: ctags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \
   377    502   		$(TAGS_FILES) $(LISP)
   378         -	tags=; \
   379         -	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
          503  +	list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \
   380    504   	unique=`for i in $$list; do \
   381    505   	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
   382    506   	  done | \
   383    507   	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
   384    508   	      END { if (nonempty) { for (i in files) print i; }; }'`; \
   385         -	test -z "$(CTAGS_ARGS)$$tags$$unique" \
          509  +	test -z "$(CTAGS_ARGS)$$unique" \
   386    510   	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
   387         -	     $$tags $$unique
          511  +	     $$unique
   388    512   
   389    513   GTAGS:
   390    514   	here=`$(am__cd) $(top_builddir) && pwd` \
   391         -	  && cd $(top_srcdir) \
   392         -	  && gtags -i $(GTAGS_ARGS) $$here
          515  +	  && $(am__cd) $(top_srcdir) \
          516  +	  && gtags -i $(GTAGS_ARGS) "$$here"
   393    517   
   394    518   distclean-tags:
   395    519   	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
   396    520   
   397    521   distdir: $(DISTFILES)
   398    522   	$(am__remove_distdir)
   399         -	test -d $(distdir) || mkdir $(distdir)
          523  +	test -d "$(distdir)" || mkdir "$(distdir)"
   400    524   	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
   401    525   	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
   402    526   	list='$(DISTFILES)'; \
   403    527   	  dist_files=`for file in $$list; do echo $$file; done | \
   404    528   	  sed -e "s|^$$srcdirstrip/||;t" \
   405    529   	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
   406    530   	case $$dist_files in \
................................................................................
   408    532   			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
   409    533   			   sort -u` ;; \
   410    534   	esac; \
   411    535   	for file in $$dist_files; do \
   412    536   	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
   413    537   	  if test -d $$d/$$file; then \
   414    538   	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
          539  +	    if test -d "$(distdir)/$$file"; then \
          540  +	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
          541  +	    fi; \
   415    542   	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
   416         -	      cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
          543  +	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
          544  +	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
   417    545   	    fi; \
   418         -	    cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
          546  +	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
   419    547   	  else \
   420         -	    test -f $(distdir)/$$file \
   421         -	    || cp -p $$d/$$file $(distdir)/$$file \
          548  +	    test -f "$(distdir)/$$file" \
          549  +	    || cp -p $$d/$$file "$(distdir)/$$file" \
   422    550   	    || exit 1; \
   423    551   	  fi; \
   424    552   	done
   425         -	list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
          553  +	@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
   426    554   	  if test "$$subdir" = .; then :; else \
   427         -	    test -d "$(distdir)/$$subdir" \
   428         -	    || $(MKDIR_P) "$(distdir)/$$subdir" \
   429         -	    || exit 1; \
   430         -	    distdir=`$(am__cd) $(distdir) && pwd`; \
   431         -	    top_distdir=`$(am__cd) $(top_distdir) && pwd`; \
   432         -	    (cd $$subdir && \
          555  +	    $(am__make_dryrun) \
          556  +	      || test -d "$(distdir)/$$subdir" \
          557  +	      || $(MKDIR_P) "$(distdir)/$$subdir" \
          558  +	      || exit 1; \
          559  +	    dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
          560  +	    $(am__relativize); \
          561  +	    new_distdir=$$reldir; \
          562  +	    dir1=$$subdir; dir2="$(top_distdir)"; \
          563  +	    $(am__relativize); \
          564  +	    new_top_distdir=$$reldir; \
          565  +	    echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
          566  +	    echo "     am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
          567  +	    ($(am__cd) $$subdir && \
   433    568   	      $(MAKE) $(AM_MAKEFLAGS) \
   434         -	        top_distdir="$$top_distdir" \
   435         -	        distdir="$$distdir/$$subdir" \
          569  +	        top_distdir="$$new_top_distdir" \
          570  +	        distdir="$$new_distdir" \
   436    571   		am__remove_distdir=: \
   437    572   		am__skip_length_check=: \
          573  +		am__skip_mode_fix=: \
   438    574   	        distdir) \
   439    575   	      || exit 1; \
   440    576   	  fi; \
   441    577   	done
   442         -	-find $(distdir) -type d ! -perm -777 -exec chmod a+rwx {} \; -o \
          578  +	-test -n "$(am__skip_mode_fix)" \
          579  +	|| find "$(distdir)" -type d ! -perm -755 \
          580  +		-exec chmod u+rwx,go+rx {} \; -o \
   443    581   	  ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \
   444    582   	  ! -type d ! -perm -400 -exec chmod a+r {} \; -o \
   445    583   	  ! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \
   446         -	|| chmod -R a+r $(distdir)
          584  +	|| chmod -R a+r "$(distdir)"
   447    585   dist-gzip: distdir
   448    586   	tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
   449    587   	$(am__remove_distdir)
   450    588   
   451    589   dist-bzip2: distdir
   452         -	tardir=$(distdir) && $(am__tar) | bzip2 -9 -c >$(distdir).tar.bz2
          590  +	tardir=$(distdir) && $(am__tar) | BZIP2=$${BZIP2--9} bzip2 -c >$(distdir).tar.bz2
          591  +	$(am__remove_distdir)
          592  +
          593  +dist-lzip: distdir
          594  +	tardir=$(distdir) && $(am__tar) | lzip -c $${LZIP_OPT--9} >$(distdir).tar.lz
   453    595   	$(am__remove_distdir)
   454    596   
   455    597   dist-lzma: distdir
   456    598   	tardir=$(distdir) && $(am__tar) | lzma -9 -c >$(distdir).tar.lzma
   457    599   	$(am__remove_distdir)
   458    600   
          601  +dist-xz: distdir
          602  +	tardir=$(distdir) && $(am__tar) | XZ_OPT=$${XZ_OPT--e} xz -c >$(distdir).tar.xz
          603  +	$(am__remove_distdir)
          604  +
   459    605   dist-tarZ: distdir
   460    606   	tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z
   461    607   	$(am__remove_distdir)
   462    608   
   463    609   dist-shar: distdir
   464    610   	shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz
   465    611   	$(am__remove_distdir)
................................................................................
   476    622   
   477    623   # This target untars the dist file and tries a VPATH configuration.  Then
   478    624   # it guarantees that the distribution is self-contained by making another
   479    625   # tarfile.
   480    626   distcheck: dist
   481    627   	case '$(DIST_ARCHIVES)' in \
   482    628   	*.tar.gz*) \
   483         -	  GZIP=$(GZIP_ENV) gunzip -c $(distdir).tar.gz | $(am__untar) ;;\
          629  +	  GZIP=$(GZIP_ENV) gzip -dc $(distdir).tar.gz | $(am__untar) ;;\
   484    630   	*.tar.bz2*) \
   485         -	  bunzip2 -c $(distdir).tar.bz2 | $(am__untar) ;;\
          631  +	  bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\
   486    632   	*.tar.lzma*) \
   487         -	  unlzma -c $(distdir).tar.lzma | $(am__untar) ;;\
          633  +	  lzma -dc $(distdir).tar.lzma | $(am__untar) ;;\
          634  +	*.tar.lz*) \
          635  +	  lzip -dc $(distdir).tar.lz | $(am__untar) ;;\
          636  +	*.tar.xz*) \
          637  +	  xz -dc $(distdir).tar.xz | $(am__untar) ;;\
   488    638   	*.tar.Z*) \
   489    639   	  uncompress -c $(distdir).tar.Z | $(am__untar) ;;\
   490    640   	*.shar.gz*) \
   491         -	  GZIP=$(GZIP_ENV) gunzip -c $(distdir).shar.gz | unshar ;;\
          641  +	  GZIP=$(GZIP_ENV) gzip -dc $(distdir).shar.gz | unshar ;;\
   492    642   	*.zip*) \
   493    643   	  unzip $(distdir).zip ;;\
   494    644   	esac
   495         -	chmod -R a-w $(distdir); chmod a+w $(distdir)
          645  +	chmod -R a-w $(distdir); chmod u+w $(distdir)
   496    646   	mkdir $(distdir)/_build
   497    647   	mkdir $(distdir)/_inst
   498    648   	chmod a-w $(distdir)
          649  +	test -d $(distdir)/_build || exit 0; \
   499    650   	dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \
   500    651   	  && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \
   501         -	  && cd $(distdir)/_build \
          652  +	  && am__cwd=`pwd` \
          653  +	  && $(am__cd) $(distdir)/_build \
   502    654   	  && ../configure --srcdir=.. --prefix="$$dc_install_base" \
          655  +	    $(AM_DISTCHECK_CONFIGURE_FLAGS) \
   503    656   	    $(DISTCHECK_CONFIGURE_FLAGS) \
   504    657   	  && $(MAKE) $(AM_MAKEFLAGS) \
   505    658   	  && $(MAKE) $(AM_MAKEFLAGS) dvi \
   506    659   	  && $(MAKE) $(AM_MAKEFLAGS) check \
   507    660   	  && $(MAKE) $(AM_MAKEFLAGS) install \
   508    661   	  && $(MAKE) $(AM_MAKEFLAGS) installcheck \
   509    662   	  && $(MAKE) $(AM_MAKEFLAGS) uninstall \
................................................................................
   516    669   	       && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \
   517    670   	       && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \
   518    671   	            distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \
   519    672   	      } || { rm -rf "$$dc_destdir"; exit 1; }) \
   520    673   	  && rm -rf "$$dc_destdir" \
   521    674   	  && $(MAKE) $(AM_MAKEFLAGS) dist \
   522    675   	  && rm -rf $(DIST_ARCHIVES) \
   523         -	  && $(MAKE) $(AM_MAKEFLAGS) distcleancheck
          676  +	  && $(MAKE) $(AM_MAKEFLAGS) distcleancheck \
          677  +	  && cd "$$am__cwd" \
          678  +	  || exit 1
   524    679   	$(am__remove_distdir)
   525    680   	@(echo "$(distdir) archives ready for distribution: "; \
   526    681   	  list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \
   527    682   	  sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x'
   528    683   distuninstallcheck:
   529         -	@cd $(distuninstallcheck_dir) \
   530         -	&& test `$(distuninstallcheck_listfiles) | wc -l` -le 1 \
          684  +	@test -n '$(distuninstallcheck_dir)' || { \
          685  +	  echo 'ERROR: trying to run $@ with an empty' \
          686  +	       '$$(distuninstallcheck_dir)' >&2; \
          687  +	  exit 1; \
          688  +	}; \
          689  +	$(am__cd) '$(distuninstallcheck_dir)' || { \
          690  +	  echo 'ERROR: cannot chdir into $(distuninstallcheck_dir)' >&2; \
          691  +	  exit 1; \
          692  +	}; \
          693  +	test `$(am__distuninstallcheck_listfiles) | wc -l` -eq 0 \
   531    694   	   || { echo "ERROR: files left after uninstall:" ; \
   532    695   	        if test -n "$(DESTDIR)"; then \
   533    696   	          echo "  (check DESTDIR support)"; \
   534    697   	        fi ; \
   535    698   	        $(distuninstallcheck_listfiles) ; \
   536    699   	        exit 1; } >&2
   537    700   distcleancheck: distclean
................................................................................
   541    704   	fi
   542    705   	@test `$(distcleancheck_listfiles) | wc -l` -eq 0 \
   543    706   	  || { echo "ERROR: files left in build directory after distclean:" ; \
   544    707   	       $(distcleancheck_listfiles) ; \
   545    708   	       exit 1; } >&2
   546    709   check-am: all-am
   547    710   check: check-recursive
   548         -all-am: Makefile $(DATA)
          711  +all-am: Makefile $(DATA) config.h
   549    712   installdirs: installdirs-recursive
   550    713   installdirs-am:
   551    714   	for dir in "$(DESTDIR)$(pkgconfigdir)"; do \
   552    715   	  test -z "$$dir" || $(MKDIR_P) "$$dir"; \
   553    716   	done
   554    717   install: install-recursive
   555    718   install-exec: install-exec-recursive
................................................................................
   557    720   uninstall: uninstall-recursive
   558    721   
   559    722   install-am: all-am
   560    723   	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
   561    724   
   562    725   installcheck: installcheck-recursive
   563    726   install-strip:
   564         -	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
   565         -	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
   566         -	  `test -z '$(STRIP)' || \
   567         -	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
          727  +	if test -z '$(STRIP)'; then \
          728  +	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
          729  +	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
          730  +	      install; \
          731  +	else \
          732  +	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
          733  +	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
          734  +	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
          735  +	fi
   568    736   mostlyclean-generic:
          737  +	-test -z "$(MOSTLYCLEANFILES)" || rm -f $(MOSTLYCLEANFILES)
   569    738   
   570    739   clean-generic:
   571    740   
   572    741   distclean-generic:
   573    742   	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
          743  +	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
   574    744   
   575    745   maintainer-clean-generic:
   576    746   	@echo "This command is intended for maintainers to use"
   577    747   	@echo "it deletes files that may require special tools to rebuild."
   578    748   clean: clean-recursive
   579    749   
   580    750   clean-am: clean-generic clean-libtool mostlyclean-am
   581    751   
   582    752   distclean: distclean-recursive
   583    753   	-rm -f $(am__CONFIG_DISTCLEAN_FILES)
   584    754   	-rm -f Makefile
   585         -distclean-am: clean-am distclean-generic distclean-libtool \
   586         -	distclean-tags
          755  +distclean-am: clean-am distclean-generic distclean-hdr \
          756  +	distclean-libtool distclean-tags
   587    757   
   588    758   dvi: dvi-recursive
   589    759   
   590    760   dvi-am:
   591    761   
   592    762   html: html-recursive
          763  +
          764  +html-am:
   593    765   
   594    766   info: info-recursive
   595    767   
   596    768   info-am:
   597    769   
   598    770   install-data-am: install-pkgconfigDATA
   599    771   
   600    772   install-dvi: install-dvi-recursive
          773  +
          774  +install-dvi-am:
   601    775   
   602    776   install-exec-am:
   603    777   
   604    778   install-html: install-html-recursive
          779  +
          780  +install-html-am:
   605    781   
   606    782   install-info: install-info-recursive
          783  +
          784  +install-info-am:
   607    785   
   608    786   install-man:
   609    787   
   610    788   install-pdf: install-pdf-recursive
          789  +
          790  +install-pdf-am:
   611    791   
   612    792   install-ps: install-ps-recursive
          793  +
          794  +install-ps-am:
   613    795   
   614    796   installcheck-am:
   615    797   
   616    798   maintainer-clean: maintainer-clean-recursive
   617    799   	-rm -f $(am__CONFIG_DISTCLEAN_FILES)
   618    800   	-rm -rf $(top_srcdir)/autom4te.cache
   619    801   	-rm -f Makefile
................................................................................
   629    811   
   630    812   ps: ps-recursive
   631    813   
   632    814   ps-am:
   633    815   
   634    816   uninstall-am: uninstall-pkgconfigDATA
   635    817   
   636         -.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) install-am \
   637         -	install-strip
          818  +.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) all \
          819  +	ctags-recursive install-am install-strip tags-recursive
   638    820   
   639    821   .PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
   640    822   	all all-am am--refresh check check-am clean clean-generic \
   641    823   	clean-libtool ctags ctags-recursive dist dist-all dist-bzip2 \
   642         -	dist-gzip dist-lzma dist-shar dist-tarZ dist-zip distcheck \
   643         -	distclean distclean-generic distclean-libtool distclean-tags \
   644         -	distcleancheck distdir distuninstallcheck dvi dvi-am html \
   645         -	html-am info info-am install install-am install-data \
   646         -	install-data-am install-dvi install-dvi-am install-exec \
   647         -	install-exec-am install-html install-html-am install-info \
   648         -	install-info-am install-man install-pdf install-pdf-am \
   649         -	install-pkgconfigDATA install-ps install-ps-am install-strip \
   650         -	installcheck installcheck-am installdirs installdirs-am \
   651         -	maintainer-clean maintainer-clean-generic mostlyclean \
   652         -	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
   653         -	tags tags-recursive uninstall uninstall-am \
   654         -	uninstall-pkgconfigDATA
          824  +	dist-gzip dist-lzip dist-lzma dist-shar dist-tarZ dist-xz \
          825  +	dist-zip distcheck distclean distclean-generic distclean-hdr \
          826  +	distclean-libtool distclean-tags distcleancheck distdir \
          827  +	distuninstallcheck dvi dvi-am html html-am info info-am \
          828  +	install install-am install-data install-data-am install-dvi \
          829  +	install-dvi-am install-exec install-exec-am install-html \
          830  +	install-html-am install-info install-info-am install-man \
          831  +	install-pdf install-pdf-am install-pkgconfigDATA install-ps \
          832  +	install-ps-am install-strip installcheck installcheck-am \
          833  +	installdirs installdirs-am maintainer-clean \
          834  +	maintainer-clean-generic mostlyclean mostlyclean-generic \
          835  +	mostlyclean-libtool pdf pdf-am ps ps-am tags tags-recursive \
          836  +	uninstall uninstall-am uninstall-pkgconfigDATA
          837  +
          838  +
          839  +coverage-init:
          840  +	lcov --directory lib --capture --initial --output-file librasterlite_cov.info
          841  +
          842  +coverage::
          843  +	lcov --directory lib --output-file librasterlite_cov.info --capture
          844  +	genhtml -o covresults librasterlite_cov.info
   655    845   
   656    846   # Tell versions [3.59,3.63) of GNU make to not export all variables.
   657    847   # Otherwise a system limit (for SysV at least) may be exceeded.
   658    848   .NOEXPORT:

Added NEWS.


Changes to README.

    23     23       ./configure
    24     24   
    25     25   If another path prefix is required, then execute:
    26     26   
    27     27       ./configure --prefix=/my/path
    28     28   
    29     29   In either case, the directory of the prefix path must exist and be
    30         -writable by the installer.
           30  +writeable by the installer.
    31     31   
    32     32   After executing configure, execute:
    33     33   
    34     34       make
    35     35       make install
    36     36   
    37     37   Or even better, you can *strip* any executable binary, in order
................................................................................
    45     45       
    46     46   The external dependencies needed in order to build 'librasterlite'
    47     47   are the followings:
    48     48   
    49     49   libtiff	
    50     50   --------------
    51     51   a library required in order to access TIFF images
    52         -dowload site: http://www.libtiff.org
           52  +download site: http://www.libtiff.org
    53     53   
    54     54   libgeotiff
    55     55   --------------
    56     56   a library supporting GeoTIFF	
    57     57   download site: http://trac.osgeo.org/geotiff
    58     58   
    59     59   libjpeg
................................................................................
    60     60   --------------
    61     61   a library required in order to access JPEG images
    62     62   download site: http://www.ijg.org
    63     63   
    64     64   zlib
    65     65   --------------
    66     66   a library supporting DEFLATE (zip) compression
    67         -dowload site: http://www.zlib.net
           67  +download site: http://www.zlib.net
    68     68   
    69     69   libpng
    70     70   --------------
    71     71   a library supporting PNG images
    72     72   download site: http://www.libpng.org/pub/png/libpng.html
    73     73   
    74     74   libspatialite / libproj
    75     75   -----------------------
    76     76   please refer to the 'libspatialite' documentation.
    77     77   
    78         -IMPORTANTE NOTICE: librasterlite internally includes a copy 
    79         -of libepsilon, a library supporting Wavelt compressed images: 
    80         -so you ARE NOT required to install and/or build libepsilon
    81         -as a separete step.
    82         -libepsilon is a copyright of:
    83         -Alexander Simakov, <xander@entropyware.info>
    84         -download from: http://sourceforge.net/projects/epsilon-project/
    85         -
    86     78   3 - Build notes
    87     79   ===============
    88     80   
    89     81   3.1: Building on Linux
    90     82   ----------------------
    91     83   
    92     84   Building 'librasterlite' under Linux does not require any special 
    93         -setting; we'll suppose you have unpacked the sources as 
           85  +setting; we'll assume you have unpacked the sources as 
    94     86   ./librasterlite-1.0
    95     87   
    96     88   # cd librasterlite-1.0
    97     89   # ./configure
    98     90   # make
    99     91   # sudo make install
   100     92   #     or (in order to save some disk space)
   101     93   # sudo make install-strip
   102     94   
   103     95   IMPORTANT NOTICE:
   104     96   the above builds a dynamically-linked version of the tools (i.e. rasterlite_load, 
   105     97   rasterlite_pyramids and so on, depends on several shared libraries at run time).
   106         -If you want to get a statically-linked version of the tools (i.e., not
   107         -requiring any external dependency), you simply have now to type:
           98  +If you want to get a statically-linked version of the tools (i.e. not
           99  +requiring any external dependencies), you simply have now to type:
   108    100   
   109    101   # mkdir static_bin
   110    102   # make -f Makefile-static-Linux
   111    103   
   112         -and you'll get any statically-linked tool built into the ./static_bin dir.
          104  +and you'll get all statically-linked tools built into the ./static_bin dir.
   113    105   
   114    106   3.2: Building on MacOsX
   115    107   -----------------------
   116    108   
   117         -Building 'librasterlite' on MacOsX is quite the same as for 
          109  +Building 'librasterlite' on MacOsX is mainly the same as for 
   118    110   Linux.
   119         -We'll suppose you have unpacked the sources as 
          111  +We'll assume you have unpacked the sources as 
   120    112   ./librasterlite-1.0
   121    113   
   122    114   # cd librasterlite-1.0
   123    115   # ./configure
   124    116   # make
   125    117   # sudo make install
   126    118   #     or (in order to save some disk space)
   127    119   # sudo make install-strip
   128    120   
   129    121   IMPORTANT NOTICE: this will build an executable for your
   130    122   specific platform. i.e. when building on a PPC Mac,
   131         -resulting binary will be targeted to run on PPC anyway.
          123  +resulting binary will be targeted to run on PPC.
   132    124   And when building on Intel Mac, resulting binary will
   133    125   run on Intel target.
   134    126   
   135    127   IMPORTANT NOTICE:
   136    128   the above builds a dynamically-linked version of the tools (i.e. rasterlite_load, 
   137    129   rasterlite_pyramids and so on, depends on several shared libraries at run time).
   138         -If you want to get a statically-linked version of the tools (i.e., not
   139         -requiring any external dependency), you simply have now to type:
          130  +If you want to get a statically-linked version of the tools (i.e. not
          131  +requiring any external dependencies), you simply have now to type:
   140    132   
   141    133   # mkdir static_bin
   142    134   # make -f Makefile-static-MacOsX
   143    135   
   144         -and you'll get any statically-linked tool built into the ./static_bin dir.
          136  +and you'll get all statically-linked tools built into the ./static_bin dir.
   145    137   
   146    138   3.3: building on Windows
   147    139   ------------------------
   148    140   
   149         -On Windows systems you can choose using two different compilers:
          141  +On Windows systems you can choose between two different compilers:
   150    142   - MinGW / MSYS
   151         -  this represents a smart porting of a minimalistic Linux-like
          143  +  this represents a smart porting of a minimal Linux-like
   152    144     devel-toolkit
   153    145   - Microsoft Visual Studio .NET
   154    146     this one is the standard platform devel-toolkit
   155    147   
   156    148   3.3.1: using MinGW / MSYS
   157    149   -------------------------
   158    150   
   159         -We suppose you have already installed the MinGW compiler and the MSYS shell.
          151  +We assume you have already installed the MinGW compiler and the MSYS shell.
   160    152   Building 'librasterlite' under Windows is then more or less like building
   161    153   on any other UNIX-like system.
   162         -We'll suppose you have unpacked the sources as 
          154  +We'll assume you have unpacked the sources as 
   163    155   C:\librasterlite-1.0
   164    156   
   165    157   $ cd c:/librasterlite-1.0
   166    158   $ export "CFLAGS=-I/usr/local/include"
   167    159   $ export "LDFLAGS=-L/usr/local/lib"
   168    160   $ ./configure
   169    161   $ make
................................................................................
   170    162   $ make install-strip
   171    163   $     or (in order to save some disk space)
   172    164   $ make install-strip
   173    165   
   174    166   IMPORTANT NOTICE:
   175    167   the above builds a dynamically-linked version of the tools (i.e. rasterlite_load, 
   176    168   rasterlite_pyramids and so on, depends on several DLLs at run time).
   177         -If you want to get a statically-linked version of the tools (i.e., not
   178         -requiring any external dependency), you simply have now to type:
          169  +If you want to get a statically-linked version of the tools (i.e. not
          170  +requiring any external dependencies), you simply have now to type:
   179    171   
   180    172   $ mkdir static_bin
   181    173   $ make -f Makefile-static-MinGW
   182    174   
   183         -and you'll get any statically-linked tool built into the ./static_bin dir.
          175  +and you'll get all statically-linked tools built into the ./static_bin dir.
   184    176   
   185    177   3.3.2: using Microsoft Visual Studio .NET
   186    178   -----------------------------------------
   187    179   
   188         -We suppose you have already installed Visual Studio enabling the command line
          180  +We assume you have already installed Visual Studio enabling the command line
   189    181   tools [you are expected to use the command prompt shell].
   190    182   
   191         -We'll suppose you have unpacked the sources as
          183  +We'll assume you have unpacked the sources as
   192    184   C:\librasterlite-1.0
   193    185   
   194    186   > cd c:\librasterlite-1.0
   195    187   > nmake /f makefile.vc
   196    188   > nmake /f makefile.vc install
   197    189   
   198    190   Important notice: you can install any depending library [libtiff, jpeg ..]
   199    191   using the OSGeo4W installer: http://trac.osgeo.org/osgeo4w/
   200    192   

Changes to aclocal.m4.

     1         -# generated automatically by aclocal 1.10.1 -*- Autoconf -*-
            1  +# generated automatically by aclocal 1.11.6 -*- Autoconf -*-
     2      2   
     3      3   # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
     4         -# 2005, 2006, 2007, 2008  Free Software Foundation, Inc.
            4  +# 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation,
            5  +# Inc.
     5      6   # This file is free software; the Free Software Foundation
     6      7   # gives unlimited permission to copy and/or distribute it,
     7      8   # with or without modifications, as long as this notice is preserved.
     8      9   
     9     10   # This program is distributed in the hope that it will be useful,
    10     11   # but WITHOUT ANY WARRANTY, to the extent permitted by law; without
    11     12   # even the implied warranty of MERCHANTABILITY or FITNESS FOR A
    12     13   # PARTICULAR PURPOSE.
    13     14   
    14     15   m4_ifndef([AC_AUTOCONF_VERSION],
    15     16     [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
    16         -m4_if(AC_AUTOCONF_VERSION, [2.61],,
    17         -[m4_warning([this file was generated for autoconf 2.61.
           17  +m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.68],,
           18  +[m4_warning([this file was generated for autoconf 2.68.
    18     19   You have another version of autoconf.  It may work, but is not guaranteed to.
    19     20   If you have problems, you may need to regenerate the build system entirely.
    20     21   To do so, use the procedure documented by the package, typically `autoreconf'.])])
    21     22   
    22         -# libtool.m4 - Configure libtool for the host system. -*-Autoconf-*-
    23         -
    24         -# serial 52 Debian 1.5.26-1ubuntu1 AC_PROG_LIBTOOL
    25         -
    26         -
    27         -# AC_PROVIDE_IFELSE(MACRO-NAME, IF-PROVIDED, IF-NOT-PROVIDED)
    28         -# -----------------------------------------------------------
    29         -# If this macro is not defined by Autoconf, define it here.
    30         -m4_ifdef([AC_PROVIDE_IFELSE],
    31         -         [],
    32         -         [m4_define([AC_PROVIDE_IFELSE],
    33         -	         [m4_ifdef([AC_PROVIDE_$1],
    34         -		           [$2], [$3])])])
    35         -
    36         -
    37         -# AC_PROG_LIBTOOL
    38         -# ---------------
    39         -AC_DEFUN([AC_PROG_LIBTOOL],
    40         -[AC_REQUIRE([_AC_PROG_LIBTOOL])dnl
    41         -dnl If AC_PROG_CXX has already been expanded, run AC_LIBTOOL_CXX
    42         -dnl immediately, otherwise, hook it in at the end of AC_PROG_CXX.
    43         -  AC_PROVIDE_IFELSE([AC_PROG_CXX],
    44         -    [AC_LIBTOOL_CXX],
    45         -    [define([AC_PROG_CXX], defn([AC_PROG_CXX])[AC_LIBTOOL_CXX
    46         -  ])])
    47         -dnl And a similar setup for Fortran 77 support
    48         -  AC_PROVIDE_IFELSE([AC_PROG_F77],
    49         -    [AC_LIBTOOL_F77],
    50         -    [define([AC_PROG_F77], defn([AC_PROG_F77])[AC_LIBTOOL_F77
    51         -])])
    52         -
    53         -dnl Quote A][M_PROG_GCJ so that aclocal doesn't bring it in needlessly.
    54         -dnl If either AC_PROG_GCJ or A][M_PROG_GCJ have already been expanded, run
    55         -dnl AC_LIBTOOL_GCJ immediately, otherwise, hook it in at the end of both.
    56         -  AC_PROVIDE_IFELSE([AC_PROG_GCJ],
    57         -    [AC_LIBTOOL_GCJ],
    58         -    [AC_PROVIDE_IFELSE([A][M_PROG_GCJ],
    59         -      [AC_LIBTOOL_GCJ],
    60         -      [AC_PROVIDE_IFELSE([LT_AC_PROG_GCJ],
    61         -	[AC_LIBTOOL_GCJ],
    62         -      [ifdef([AC_PROG_GCJ],
    63         -	     [define([AC_PROG_GCJ], defn([AC_PROG_GCJ])[AC_LIBTOOL_GCJ])])
    64         -       ifdef([A][M_PROG_GCJ],
    65         -	     [define([A][M_PROG_GCJ], defn([A][M_PROG_GCJ])[AC_LIBTOOL_GCJ])])
    66         -       ifdef([LT_AC_PROG_GCJ],
    67         -	     [define([LT_AC_PROG_GCJ],
    68         -		defn([LT_AC_PROG_GCJ])[AC_LIBTOOL_GCJ])])])])
    69         -])])# AC_PROG_LIBTOOL
    70         -
    71         -
    72         -# _AC_PROG_LIBTOOL
    73         -# ----------------
    74         -AC_DEFUN([_AC_PROG_LIBTOOL],
    75         -[AC_REQUIRE([AC_LIBTOOL_SETUP])dnl
    76         -AC_BEFORE([$0],[AC_LIBTOOL_CXX])dnl
    77         -AC_BEFORE([$0],[AC_LIBTOOL_F77])dnl
    78         -AC_BEFORE([$0],[AC_LIBTOOL_GCJ])dnl
    79         -
    80         -# This can be used to rebuild libtool when needed
    81         -LIBTOOL_DEPS="$ac_aux_dir/ltmain.sh"
    82         -
    83         -# Always use our own libtool.
    84         -LIBTOOL='$(SHELL) $(top_builddir)/libtool'
    85         -AC_SUBST(LIBTOOL)dnl
    86         -
    87         -# Prevent multiple expansion
    88         -define([AC_PROG_LIBTOOL], [])
    89         -])# _AC_PROG_LIBTOOL
    90         -
    91         -
    92         -# AC_LIBTOOL_SETUP
    93         -# ----------------
    94         -AC_DEFUN([AC_LIBTOOL_SETUP],
    95         -[AC_PREREQ(2.50)dnl
    96         -AC_REQUIRE([AC_ENABLE_SHARED])dnl
    97         -AC_REQUIRE([AC_ENABLE_STATIC])dnl
    98         -AC_REQUIRE([AC_ENABLE_FAST_INSTALL])dnl
    99         -AC_REQUIRE([AC_CANONICAL_HOST])dnl
   100         -AC_REQUIRE([AC_CANONICAL_BUILD])dnl
   101         -AC_REQUIRE([AC_PROG_CC])dnl
   102         -AC_REQUIRE([AC_PROG_LD])dnl
   103         -AC_REQUIRE([AC_PROG_LD_RELOAD_FLAG])dnl
   104         -AC_REQUIRE([AC_PROG_NM])dnl
   105         -
   106         -AC_REQUIRE([AC_PROG_LN_S])dnl
   107         -AC_REQUIRE([AC_DEPLIBS_CHECK_METHOD])dnl
   108         -# Autoconf 2.13's AC_OBJEXT and AC_EXEEXT macros only works for C compilers!
   109         -AC_REQUIRE([AC_OBJEXT])dnl
   110         -AC_REQUIRE([AC_EXEEXT])dnl
   111         -dnl
   112         -AC_LIBTOOL_SYS_MAX_CMD_LEN
   113         -AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE
   114         -AC_LIBTOOL_OBJDIR
   115         -
   116         -AC_REQUIRE([_LT_AC_SYS_COMPILER])dnl
   117         -_LT_AC_PROG_ECHO_BACKSLASH
   118         -
   119         -case $host_os in
   120         -aix3*)
   121         -  # AIX sometimes has problems with the GCC collect2 program.  For some
   122         -  # reason, if we set the COLLECT_NAMES environment variable, the problems
   123         -  # vanish in a puff of smoke.
   124         -  if test "X${COLLECT_NAMES+set}" != Xset; then
   125         -    COLLECT_NAMES=
   126         -    export COLLECT_NAMES
   127         -  fi
   128         -  ;;
   129         -esac
   130         -
   131         -# Sed substitution that helps us do robust quoting.  It backslashifies
   132         -# metacharacters that are still active within double-quoted strings.
   133         -Xsed='sed -e 1s/^X//'
   134         -[sed_quote_subst='s/\([\\"\\`$\\\\]\)/\\\1/g']
   135         -
   136         -# Same as above, but do not quote variable references.
   137         -[double_quote_subst='s/\([\\"\\`\\\\]\)/\\\1/g']
   138         -
   139         -# Sed substitution to delay expansion of an escaped shell variable in a
   140         -# double_quote_subst'ed string.
   141         -delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g'
   142         -
   143         -# Sed substitution to avoid accidental globbing in evaled expressions
   144         -no_glob_subst='s/\*/\\\*/g'
   145         -
   146         -# Constants:
   147         -rm="rm -f"
   148         -
   149         -# Global variables:
   150         -default_ofile=libtool
   151         -can_build_shared=yes
   152         -
   153         -# All known linkers require a `.a' archive for static linking (except MSVC,
   154         -# which needs '.lib').
   155         -libext=a
   156         -ltmain="$ac_aux_dir/ltmain.sh"
   157         -ofile="$default_ofile"
   158         -with_gnu_ld="$lt_cv_prog_gnu_ld"
   159         -
   160         -AC_CHECK_TOOL(AR, ar, false)
   161         -AC_CHECK_TOOL(RANLIB, ranlib, :)
   162         -AC_CHECK_TOOL(STRIP, strip, :)
   163         -
   164         -old_CC="$CC"
   165         -old_CFLAGS="$CFLAGS"
   166         -
   167         -# Set sane defaults for various variables
   168         -test -z "$AR" && AR=ar
   169         -test -z "$AR_FLAGS" && AR_FLAGS=cru
   170         -test -z "$AS" && AS=as
   171         -test -z "$CC" && CC=cc
   172         -test -z "$LTCC" && LTCC=$CC
   173         -test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS
   174         -test -z "$DLLTOOL" && DLLTOOL=dlltool
   175         -test -z "$LD" && LD=ld
   176         -test -z "$LN_S" && LN_S="ln -s"
   177         -test -z "$MAGIC_CMD" && MAGIC_CMD=file
   178         -test -z "$NM" && NM=nm
   179         -test -z "$SED" && SED=sed
   180         -test -z "$OBJDUMP" && OBJDUMP=objdump
   181         -test -z "$RANLIB" && RANLIB=:
   182         -test -z "$STRIP" && STRIP=:
   183         -test -z "$ac_objext" && ac_objext=o
   184         -
   185         -# Determine commands to create old-style static archives.
   186         -old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs'
   187         -old_postinstall_cmds='chmod 644 $oldlib'
   188         -old_postuninstall_cmds=
   189         -
   190         -if test -n "$RANLIB"; then
   191         -  case $host_os in
   192         -  openbsd*)
   193         -    old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$oldlib"
   194         -    ;;
   195         -  *)
   196         -    old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$oldlib"
   197         -    ;;
   198         -  esac
   199         -  old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib"
   200         -fi
   201         -
   202         -_LT_CC_BASENAME([$compiler])
   203         -
   204         -# Only perform the check for file, if the check method requires it
   205         -case $deplibs_check_method in
   206         -file_magic*)
   207         -  if test "$file_magic_cmd" = '$MAGIC_CMD'; then
   208         -    AC_PATH_MAGIC
   209         -  fi
   210         -  ;;
   211         -esac
   212         -
   213         -_LT_REQUIRED_DARWIN_CHECKS
   214         -
   215         -AC_PROVIDE_IFELSE([AC_LIBTOOL_DLOPEN], enable_dlopen=yes, enable_dlopen=no)
   216         -AC_PROVIDE_IFELSE([AC_LIBTOOL_WIN32_DLL],
   217         -enable_win32_dll=yes, enable_win32_dll=no)
   218         -
   219         -AC_ARG_ENABLE([libtool-lock],
   220         -    [AC_HELP_STRING([--disable-libtool-lock],
   221         -	[avoid locking (might break parallel builds)])])
   222         -test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes
   223         -
   224         -AC_ARG_WITH([pic],
   225         -    [AC_HELP_STRING([--with-pic],
   226         -	[try to use only PIC/non-PIC objects @<:@default=use both@:>@])],
   227         -    [pic_mode="$withval"],
   228         -    [pic_mode=default])
   229         -test -z "$pic_mode" && pic_mode=default
   230         -
   231         -# Use C for the default configuration in the libtool script
   232         -tagname=
   233         -AC_LIBTOOL_LANG_C_CONFIG
   234         -_LT_AC_TAGCONFIG
   235         -])# AC_LIBTOOL_SETUP
   236         -
   237         -
   238         -# _LT_AC_SYS_COMPILER
   239         -# -------------------
   240         -AC_DEFUN([_LT_AC_SYS_COMPILER],
   241         -[AC_REQUIRE([AC_PROG_CC])dnl
   242         -
   243         -# If no C compiler was specified, use CC.
   244         -LTCC=${LTCC-"$CC"}
   245         -
   246         -# If no C compiler flags were specified, use CFLAGS.
   247         -LTCFLAGS=${LTCFLAGS-"$CFLAGS"}
   248         -
   249         -# Allow CC to be a program name with arguments.
   250         -compiler=$CC
   251         -])# _LT_AC_SYS_COMPILER
   252         -
   253         -
   254         -# _LT_CC_BASENAME(CC)
   255         -# -------------------
   256         -# Calculate cc_basename.  Skip known compiler wrappers and cross-prefix.
   257         -AC_DEFUN([_LT_CC_BASENAME],
   258         -[for cc_temp in $1""; do
   259         -  case $cc_temp in
   260         -    compile | *[[\\/]]compile | ccache | *[[\\/]]ccache ) ;;
   261         -    distcc | *[[\\/]]distcc | purify | *[[\\/]]purify ) ;;
   262         -    \-*) ;;
   263         -    *) break;;
   264         -  esac
   265         -done
   266         -cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"`
   267         -])
   268         -
   269         -
   270         -# _LT_COMPILER_BOILERPLATE
   271         -# ------------------------
   272         -# Check for compiler boilerplate output or warnings with
   273         -# the simple compiler test code.
   274         -AC_DEFUN([_LT_COMPILER_BOILERPLATE],
   275         -[AC_REQUIRE([LT_AC_PROG_SED])dnl
   276         -ac_outfile=conftest.$ac_objext
   277         -echo "$lt_simple_compile_test_code" >conftest.$ac_ext
   278         -eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
   279         -_lt_compiler_boilerplate=`cat conftest.err`
   280         -$rm conftest*
   281         -])# _LT_COMPILER_BOILERPLATE
   282         -
   283         -
   284         -# _LT_LINKER_BOILERPLATE
   285         -# ----------------------
   286         -# Check for linker boilerplate output or warnings with
   287         -# the simple link test code.
   288         -AC_DEFUN([_LT_LINKER_BOILERPLATE],
   289         -[AC_REQUIRE([LT_AC_PROG_SED])dnl
   290         -ac_outfile=conftest.$ac_objext
   291         -echo "$lt_simple_link_test_code" >conftest.$ac_ext
   292         -eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
   293         -_lt_linker_boilerplate=`cat conftest.err`
   294         -$rm -r conftest*
   295         -])# _LT_LINKER_BOILERPLATE
   296         -
   297         -# _LT_REQUIRED_DARWIN_CHECKS
   298         -# --------------------------
   299         -# Check for some things on darwin
   300         -AC_DEFUN([_LT_REQUIRED_DARWIN_CHECKS],[
   301         -  case $host_os in
   302         -    rhapsody* | darwin*)
   303         -    AC_CHECK_TOOL([DSYMUTIL], [dsymutil], [:])
   304         -    AC_CHECK_TOOL([NMEDIT], [nmedit], [:])
   305         -
   306         -    AC_CACHE_CHECK([for -single_module linker flag],[lt_cv_apple_cc_single_mod],
   307         -      [lt_cv_apple_cc_single_mod=no
   308         -      if test -z "${LT_MULTI_MODULE}"; then
   309         -   # By default we will add the -single_module flag. You can override
   310         -   # by either setting the environment variable LT_MULTI_MODULE
   311         -   # non-empty at configure time, or by adding -multi_module to the
   312         -   # link flags.
   313         -   echo "int foo(void){return 1;}" > conftest.c
   314         -   $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \
   315         -     -dynamiclib ${wl}-single_module conftest.c
   316         -   if test -f libconftest.dylib; then
   317         -     lt_cv_apple_cc_single_mod=yes
   318         -     rm -rf libconftest.dylib*
   319         -   fi
   320         -   rm conftest.c
   321         -      fi])
   322         -    AC_CACHE_CHECK([for -exported_symbols_list linker flag],
   323         -      [lt_cv_ld_exported_symbols_list],
   324         -      [lt_cv_ld_exported_symbols_list=no
   325         -      save_LDFLAGS=$LDFLAGS
   326         -      echo "_main" > conftest.sym
   327         -      LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym"
   328         -      AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])],
   329         -   [lt_cv_ld_exported_symbols_list=yes],
   330         -   [lt_cv_ld_exported_symbols_list=no])
   331         -   LDFLAGS="$save_LDFLAGS"
   332         -    ])
   333         -    case $host_os in
   334         -    rhapsody* | darwin1.[[0123]])
   335         -      _lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;;
   336         -    darwin1.*)
   337         -     _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;;
   338         -    darwin*)
   339         -      # if running on 10.5 or later, the deployment target defaults
   340         -      # to the OS version, if on x86, and 10.4, the deployment
   341         -      # target defaults to 10.4. Don't you love it?
   342         -      case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in
   343         -   10.0,*86*-darwin8*|10.0,*-darwin[[91]]*)
   344         -     _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;;
   345         -   10.[[012]]*)
   346         -     _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;;
   347         -   10.*)
   348         -     _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;;
   349         -      esac
   350         -    ;;
   351         -  esac
   352         -    if test "$lt_cv_apple_cc_single_mod" = "yes"; then
   353         -      _lt_dar_single_mod='$single_module'
   354         -    fi
   355         -    if test "$lt_cv_ld_exported_symbols_list" = "yes"; then
   356         -      _lt_dar_export_syms=' ${wl}-exported_symbols_list,$output_objdir/${libname}-symbols.expsym'
   357         -    else
   358         -      _lt_dar_export_syms="~$NMEDIT -s \$output_objdir/\${libname}-symbols.expsym \${lib}"
   359         -    fi
   360         -    if test "$DSYMUTIL" != ":"; then
   361         -      _lt_dsymutil="~$DSYMUTIL \$lib || :"
   362         -    else
   363         -      _lt_dsymutil=
   364         -    fi
   365         -    ;;
   366         -  esac
   367         -])
   368         -
   369         -# _LT_AC_SYS_LIBPATH_AIX
   370         -# ----------------------
   371         -# Links a minimal program and checks the executable
   372         -# for the system default hardcoded library path. In most cases,
   373         -# this is /usr/lib:/lib, but when the MPI compilers are used
   374         -# the location of the communication and MPI libs are included too.
   375         -# If we don't find anything, use the default library path according
   376         -# to the aix ld manual.
   377         -AC_DEFUN([_LT_AC_SYS_LIBPATH_AIX],
   378         -[AC_REQUIRE([LT_AC_PROG_SED])dnl
   379         -AC_LINK_IFELSE(AC_LANG_PROGRAM,[
   380         -lt_aix_libpath_sed='
   381         -    /Import File Strings/,/^$/ {
   382         -	/^0/ {
   383         -	    s/^0  *\(.*\)$/\1/
   384         -	    p
   385         -	}
   386         -    }'
   387         -aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
   388         -# Check for a 64-bit object if we didn't find anything.
   389         -if test -z "$aix_libpath"; then
   390         -  aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
   391         -fi],[])
   392         -if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
   393         -])# _LT_AC_SYS_LIBPATH_AIX
   394         -
   395         -
   396         -# _LT_AC_SHELL_INIT(ARG)
   397         -# ----------------------
   398         -AC_DEFUN([_LT_AC_SHELL_INIT],
   399         -[ifdef([AC_DIVERSION_NOTICE],
   400         -	     [AC_DIVERT_PUSH(AC_DIVERSION_NOTICE)],
   401         -	 [AC_DIVERT_PUSH(NOTICE)])
   402         -$1
   403         -AC_DIVERT_POP
   404         -])# _LT_AC_SHELL_INIT
   405         -
   406         -
   407         -# _LT_AC_PROG_ECHO_BACKSLASH
   408         -# --------------------------
   409         -# Add some code to the start of the generated configure script which
   410         -# will find an echo command which doesn't interpret backslashes.
   411         -AC_DEFUN([_LT_AC_PROG_ECHO_BACKSLASH],
   412         -[_LT_AC_SHELL_INIT([
   413         -# Check that we are running under the correct shell.
   414         -SHELL=${CONFIG_SHELL-/bin/sh}
   415         -
   416         -case X$ECHO in
   417         -X*--fallback-echo)
   418         -  # Remove one level of quotation (which was required for Make).
   419         -  ECHO=`echo "$ECHO" | sed 's,\\\\\[$]\\[$]0,'[$]0','`
   420         -  ;;
   421         -esac
   422         -
   423         -echo=${ECHO-echo}
   424         -if test "X[$]1" = X--no-reexec; then
   425         -  # Discard the --no-reexec flag, and continue.
   426         -  shift
   427         -elif test "X[$]1" = X--fallback-echo; then
   428         -  # Avoid inline document here, it may be left over
   429         -  :
   430         -elif test "X`($echo '\t') 2>/dev/null`" = 'X\t' ; then
   431         -  # Yippee, $echo works!
   432         -  :
   433         -else
   434         -  # Restart under the correct shell.
   435         -  exec $SHELL "[$]0" --no-reexec ${1+"[$]@"}
   436         -fi
   437         -
   438         -if test "X[$]1" = X--fallback-echo; then
   439         -  # used as fallback echo
   440         -  shift
   441         -  cat <<EOF
   442         -[$]*
   443         -EOF
   444         -  exit 0
   445         -fi
   446         -
   447         -# The HP-UX ksh and POSIX shell print the target directory to stdout
   448         -# if CDPATH is set.
   449         -(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
   450         -
   451         -if test -z "$ECHO"; then
   452         -if test "X${echo_test_string+set}" != Xset; then
   453         -# find a string as large as possible, as long as the shell can cope with it
   454         -  for cmd in 'sed 50q "[$]0"' 'sed 20q "[$]0"' 'sed 10q "[$]0"' 'sed 2q "[$]0"' 'echo test'; do
   455         -    # expected sizes: less than 2Kb, 1Kb, 512 bytes, 16 bytes, ...
   456         -    if (echo_test_string=`eval $cmd`) 2>/dev/null &&
   457         -       echo_test_string=`eval $cmd` &&
   458         -       (test "X$echo_test_string" = "X$echo_test_string") 2>/dev/null
   459         -    then
   460         -      break
   461         -    fi
   462         -  done
   463         -fi
   464         -
   465         -if test "X`($echo '\t') 2>/dev/null`" = 'X\t' &&
   466         -   echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` &&
   467         -   test "X$echo_testing_string" = "X$echo_test_string"; then
   468         -  :
   469         -else
   470         -  # The Solaris, AIX, and Digital Unix default echo programs unquote
   471         -  # backslashes.  This makes it impossible to quote backslashes using
   472         -  #   echo "$something" | sed 's/\\/\\\\/g'
   473         -  #
   474         -  # So, first we look for a working echo in the user's PATH.
   475         -
   476         -  lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
   477         -  for dir in $PATH /usr/ucb; do
   478         -    IFS="$lt_save_ifs"
   479         -    if (test -f $dir/echo || test -f $dir/echo$ac_exeext) &&
   480         -       test "X`($dir/echo '\t') 2>/dev/null`" = 'X\t' &&
   481         -       echo_testing_string=`($dir/echo "$echo_test_string") 2>/dev/null` &&
   482         -       test "X$echo_testing_string" = "X$echo_test_string"; then
   483         -      echo="$dir/echo"
   484         -      break
   485         -    fi
   486         -  done
   487         -  IFS="$lt_save_ifs"
   488         -
   489         -  if test "X$echo" = Xecho; then
   490         -    # We didn't find a better echo, so look for alternatives.
   491         -    if test "X`(print -r '\t') 2>/dev/null`" = 'X\t' &&
   492         -       echo_testing_string=`(print -r "$echo_test_string") 2>/dev/null` &&
   493         -       test "X$echo_testing_string" = "X$echo_test_string"; then
   494         -      # This shell has a builtin print -r that does the trick.
   495         -      echo='print -r'
   496         -    elif (test -f /bin/ksh || test -f /bin/ksh$ac_exeext) &&
   497         -	 test "X$CONFIG_SHELL" != X/bin/ksh; then
   498         -      # If we have ksh, try running configure again with it.
   499         -      ORIGINAL_CONFIG_SHELL=${CONFIG_SHELL-/bin/sh}
   500         -      export ORIGINAL_CONFIG_SHELL
   501         -      CONFIG_SHELL=/bin/ksh
   502         -      export CONFIG_SHELL
   503         -      exec $CONFIG_SHELL "[$]0" --no-reexec ${1+"[$]@"}
   504         -    else
   505         -      # Try using printf.
   506         -      echo='printf %s\n'
   507         -      if test "X`($echo '\t') 2>/dev/null`" = 'X\t' &&
   508         -	 echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` &&
   509         -	 test "X$echo_testing_string" = "X$echo_test_string"; then
   510         -	# Cool, printf works
   511         -	:
   512         -      elif echo_testing_string=`($ORIGINAL_CONFIG_SHELL "[$]0" --fallback-echo '\t') 2>/dev/null` &&
   513         -	   test "X$echo_testing_string" = 'X\t' &&
   514         -	   echo_testing_string=`($ORIGINAL_CONFIG_SHELL "[$]0" --fallback-echo "$echo_test_string") 2>/dev/null` &&
   515         -	   test "X$echo_testing_string" = "X$echo_test_string"; then
   516         -	CONFIG_SHELL=$ORIGINAL_CONFIG_SHELL
   517         -	export CONFIG_SHELL
   518         -	SHELL="$CONFIG_SHELL"
   519         -	export SHELL
   520         -	echo="$CONFIG_SHELL [$]0 --fallback-echo"
   521         -      elif echo_testing_string=`($CONFIG_SHELL "[$]0" --fallback-echo '\t') 2>/dev/null` &&
   522         -	   test "X$echo_testing_string" = 'X\t' &&
   523         -	   echo_testing_string=`($CONFIG_SHELL "[$]0" --fallback-echo "$echo_test_string") 2>/dev/null` &&
   524         -	   test "X$echo_testing_string" = "X$echo_test_string"; then
   525         -	echo="$CONFIG_SHELL [$]0 --fallback-echo"
   526         -      else
   527         -	# maybe with a smaller string...
   528         -	prev=:
   529         -
   530         -	for cmd in 'echo test' 'sed 2q "[$]0"' 'sed 10q "[$]0"' 'sed 20q "[$]0"' 'sed 50q "[$]0"'; do
   531         -	  if (test "X$echo_test_string" = "X`eval $cmd`") 2>/dev/null
   532         -	  then
   533         -	    break
   534         -	  fi
   535         -	  prev="$cmd"
   536         -	done
   537         -
   538         -	if test "$prev" != 'sed 50q "[$]0"'; then
   539         -	  echo_test_string=`eval $prev`
   540         -	  export echo_test_string
   541         -	  exec ${ORIGINAL_CONFIG_SHELL-${CONFIG_SHELL-/bin/sh}} "[$]0" ${1+"[$]@"}
   542         -	else
   543         -	  # Oops.  We lost completely, so just stick with echo.
   544         -	  echo=echo
   545         -	fi
   546         -      fi
   547         -    fi
   548         -  fi
   549         -fi
   550         -fi
   551         -
   552         -# Copy echo and quote the copy suitably for passing to libtool from
   553         -# the Makefile, instead of quoting the original, which is used later.
   554         -ECHO=$echo
   555         -if test "X$ECHO" = "X$CONFIG_SHELL [$]0 --fallback-echo"; then
   556         -   ECHO="$CONFIG_SHELL \\\$\[$]0 --fallback-echo"
   557         -fi
   558         -
   559         -AC_SUBST(ECHO)
   560         -])])# _LT_AC_PROG_ECHO_BACKSLASH
   561         -
   562         -
   563         -# _LT_AC_LOCK
   564         -# -----------
   565         -AC_DEFUN([_LT_AC_LOCK],
   566         -[AC_ARG_ENABLE([libtool-lock],
   567         -    [AC_HELP_STRING([--disable-libtool-lock],
   568         -	[avoid locking (might break parallel builds)])])
   569         -test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes
   570         -
   571         -# Some flags need to be propagated to the compiler or linker for good
   572         -# libtool support.
   573         -case $host in
   574         -ia64-*-hpux*)
   575         -  # Find out which ABI we are using.
   576         -  echo 'int i;' > conftest.$ac_ext
   577         -  if AC_TRY_EVAL(ac_compile); then
   578         -    case `/usr/bin/file conftest.$ac_objext` in
   579         -    *ELF-32*)
   580         -      HPUX_IA64_MODE="32"
   581         -      ;;
   582         -    *ELF-64*)
   583         -      HPUX_IA64_MODE="64"
   584         -      ;;
   585         -    esac
   586         -  fi
   587         -  rm -rf conftest*
   588         -  ;;
   589         -*-*-irix6*)
   590         -  # Find out which ABI we are using.
   591         -  echo '[#]line __oline__ "configure"' > conftest.$ac_ext
   592         -  if AC_TRY_EVAL(ac_compile); then
   593         -   if test "$lt_cv_prog_gnu_ld" = yes; then
   594         -    case `/usr/bin/file conftest.$ac_objext` in
   595         -    *32-bit*)
   596         -      LD="${LD-ld} -melf32bsmip"
   597         -      ;;
   598         -    *N32*)
   599         -      LD="${LD-ld} -melf32bmipn32"
   600         -      ;;
   601         -    *64-bit*)
   602         -      LD="${LD-ld} -melf64bmip"
   603         -      ;;
   604         -    esac
   605         -   else
   606         -    case `/usr/bin/file conftest.$ac_objext` in
   607         -    *32-bit*)
   608         -      LD="${LD-ld} -32"
   609         -      ;;
   610         -    *N32*)
   611         -      LD="${LD-ld} -n32"
   612         -      ;;
   613         -    *64-bit*)
   614         -      LD="${LD-ld} -64"
   615         -      ;;
   616         -    esac
   617         -   fi
   618         -  fi
   619         -  rm -rf conftest*
   620         -  ;;
   621         -
   622         -x86_64-*kfreebsd*-gnu|x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*| \
   623         -s390*-*linux*|sparc*-*linux*)
   624         -  # Find out which ABI we are using.
   625         -  echo 'int i;' > conftest.$ac_ext
   626         -  if AC_TRY_EVAL(ac_compile); then
   627         -    case `/usr/bin/file conftest.o` in
   628         -    *32-bit*)
   629         -      case $host in
   630         -        x86_64-*kfreebsd*-gnu)
   631         -          LD="${LD-ld} -m elf_i386_fbsd"
   632         -          ;;
   633         -        x86_64-*linux*)
   634         -          LD="${LD-ld} -m elf_i386"
   635         -          ;;
   636         -        ppc64-*linux*|powerpc64-*linux*)
   637         -          LD="${LD-ld} -m elf32ppclinux"
   638         -          ;;
   639         -        s390x-*linux*)
   640         -          LD="${LD-ld} -m elf_s390"
   641         -          ;;
   642         -        sparc64-*linux*)
   643         -          LD="${LD-ld} -m elf32_sparc"
   644         -          ;;
   645         -      esac
   646         -      ;;
   647         -    *64-bit*)
   648         -      case $host in
   649         -        x86_64-*kfreebsd*-gnu)
   650         -          LD="${LD-ld} -m elf_x86_64_fbsd"
   651         -          ;;
   652         -        x86_64-*linux*)
   653         -          LD="${LD-ld} -m elf_x86_64"
   654         -          ;;
   655         -        ppc*-*linux*|powerpc*-*linux*)
   656         -          LD="${LD-ld} -m elf64ppc"
   657         -          ;;
   658         -        s390*-*linux*)
   659         -          LD="${LD-ld} -m elf64_s390"
   660         -          ;;
   661         -        sparc*-*linux*)
   662         -          LD="${LD-ld} -m elf64_sparc"
   663         -          ;;
   664         -      esac
   665         -      ;;
   666         -    esac
   667         -  fi
   668         -  rm -rf conftest*
   669         -  ;;
   670         -
   671         -*-*-sco3.2v5*)
   672         -  # On SCO OpenServer 5, we need -belf to get full-featured binaries.
   673         -  SAVE_CFLAGS="$CFLAGS"
   674         -  CFLAGS="$CFLAGS -belf"
   675         -  AC_CACHE_CHECK([whether the C compiler needs -belf], lt_cv_cc_needs_belf,
   676         -    [AC_LANG_PUSH(C)
   677         -     AC_TRY_LINK([],[],[lt_cv_cc_needs_belf=yes],[lt_cv_cc_needs_belf=no])
   678         -     AC_LANG_POP])
   679         -  if test x"$lt_cv_cc_needs_belf" != x"yes"; then
   680         -    # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf
   681         -    CFLAGS="$SAVE_CFLAGS"
   682         -  fi
   683         -  ;;
   684         -sparc*-*solaris*)
   685         -  # Find out which ABI we are using.
   686         -  echo 'int i;' > conftest.$ac_ext
   687         -  if AC_TRY_EVAL(ac_compile); then
   688         -    case `/usr/bin/file conftest.o` in
   689         -    *64-bit*)
   690         -      case $lt_cv_prog_gnu_ld in
   691         -      yes*) LD="${LD-ld} -m elf64_sparc" ;;
   692         -      *)
   693         -        if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then
   694         -	  LD="${LD-ld} -64"
   695         -	fi
   696         -	;;
   697         -      esac
   698         -      ;;
   699         -    esac
   700         -  fi
   701         -  rm -rf conftest*
   702         -  ;;
   703         -
   704         -AC_PROVIDE_IFELSE([AC_LIBTOOL_WIN32_DLL],
   705         -[*-*-cygwin* | *-*-mingw* | *-*-pw32*)
   706         -  AC_CHECK_TOOL(DLLTOOL, dlltool, false)
   707         -  AC_CHECK_TOOL(AS, as, false)
   708         -  AC_CHECK_TOOL(OBJDUMP, objdump, false)
   709         -  ;;
   710         -  ])
   711         -esac
   712         -
   713         -need_locks="$enable_libtool_lock"
   714         -
   715         -])# _LT_AC_LOCK
   716         -
   717         -
   718         -# AC_LIBTOOL_COMPILER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS,
   719         -#		[OUTPUT-FILE], [ACTION-SUCCESS], [ACTION-FAILURE])
   720         -# ----------------------------------------------------------------
   721         -# Check whether the given compiler option works
   722         -AC_DEFUN([AC_LIBTOOL_COMPILER_OPTION],
   723         -[AC_REQUIRE([LT_AC_PROG_SED])
   724         -AC_CACHE_CHECK([$1], [$2],
   725         -  [$2=no
   726         -  ifelse([$4], , [ac_outfile=conftest.$ac_objext], [ac_outfile=$4])
   727         -   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
   728         -   lt_compiler_flag="$3"
   729         -   # Insert the option either (1) after the last *FLAGS variable, or
   730         -   # (2) before a word containing "conftest.", or (3) at the end.
   731         -   # Note that $ac_compile itself does not contain backslashes and begins
   732         -   # with a dollar sign (not a hyphen), so the echo should work correctly.
   733         -   # The option is referenced via a variable to avoid confusing sed.
   734         -   lt_compile=`echo "$ac_compile" | $SED \
   735         -   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
   736         -   -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \
   737         -   -e 's:$: $lt_compiler_flag:'`
   738         -   (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&AS_MESSAGE_LOG_FD)
   739         -   (eval "$lt_compile" 2>conftest.err)
   740         -   ac_status=$?
   741         -   cat conftest.err >&AS_MESSAGE_LOG_FD
   742         -   echo "$as_me:__oline__: \$? = $ac_status" >&AS_MESSAGE_LOG_FD
   743         -   if (exit $ac_status) && test -s "$ac_outfile"; then
   744         -     # The compiler can only warn and ignore the option if not recognized
   745         -     # So say no if there are warnings other than the usual output.
   746         -     $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp
   747         -     $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
   748         -     if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
   749         -       $2=yes
   750         -     fi
   751         -   fi
   752         -   $rm conftest*
   753         -])
   754         -
   755         -if test x"[$]$2" = xyes; then
   756         -    ifelse([$5], , :, [$5])
   757         -else
   758         -    ifelse([$6], , :, [$6])
   759         -fi
   760         -])# AC_LIBTOOL_COMPILER_OPTION
   761         -
   762         -
   763         -# AC_LIBTOOL_LINKER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS,
   764         -#                          [ACTION-SUCCESS], [ACTION-FAILURE])
   765         -# ------------------------------------------------------------
   766         -# Check whether the given compiler option works
   767         -AC_DEFUN([AC_LIBTOOL_LINKER_OPTION],
   768         -[AC_REQUIRE([LT_AC_PROG_SED])dnl
   769         -AC_CACHE_CHECK([$1], [$2],
   770         -  [$2=no
   771         -   save_LDFLAGS="$LDFLAGS"
   772         -   LDFLAGS="$LDFLAGS $3"
   773         -   echo "$lt_simple_link_test_code" > conftest.$ac_ext
   774         -   if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
   775         -     # The linker can only warn and ignore the option if not recognized
   776         -     # So say no if there are warnings
   777         -     if test -s conftest.err; then
   778         -       # Append any errors to the config.log.
   779         -       cat conftest.err 1>&AS_MESSAGE_LOG_FD
   780         -       $echo "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp
   781         -       $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
   782         -       if diff conftest.exp conftest.er2 >/dev/null; then
   783         -         $2=yes
   784         -       fi
   785         -     else
   786         -       $2=yes
   787         -     fi
   788         -   fi
   789         -   $rm -r conftest*
   790         -   LDFLAGS="$save_LDFLAGS"
   791         -])
   792         -
   793         -if test x"[$]$2" = xyes; then
   794         -    ifelse([$4], , :, [$4])
   795         -else
   796         -    ifelse([$5], , :, [$5])
   797         -fi
   798         -])# AC_LIBTOOL_LINKER_OPTION
   799         -
   800         -
   801         -# AC_LIBTOOL_SYS_MAX_CMD_LEN
   802         -# --------------------------
   803         -AC_DEFUN([AC_LIBTOOL_SYS_MAX_CMD_LEN],
   804         -[# find the maximum length of command line arguments
   805         -AC_MSG_CHECKING([the maximum length of command line arguments])
   806         -AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl
   807         -  i=0
   808         -  teststring="ABCD"
   809         -
   810         -  case $build_os in
   811         -  msdosdjgpp*)
   812         -    # On DJGPP, this test can blow up pretty badly due to problems in libc
   813         -    # (any single argument exceeding 2000 bytes causes a buffer overrun
   814         -    # during glob expansion).  Even if it were fixed, the result of this
   815         -    # check would be larger than it should be.
   816         -    lt_cv_sys_max_cmd_len=12288;    # 12K is about right
   817         -    ;;
   818         -
   819         -  gnu*)
   820         -    # Under GNU Hurd, this test is not required because there is
   821         -    # no limit to the length of command line arguments.
   822         -    # Libtool will interpret -1 as no limit whatsoever
   823         -    lt_cv_sys_max_cmd_len=-1;
   824         -    ;;
   825         -
   826         -  cygwin* | mingw*)
   827         -    # On Win9x/ME, this test blows up -- it succeeds, but takes
   828         -    # about 5 minutes as the teststring grows exponentially.
   829         -    # Worse, since 9x/ME are not pre-emptively multitasking,
   830         -    # you end up with a "frozen" computer, even though with patience
   831         -    # the test eventually succeeds (with a max line length of 256k).
   832         -    # Instead, let's just punt: use the minimum linelength reported by
   833         -    # all of the supported platforms: 8192 (on NT/2K/XP).
   834         -    lt_cv_sys_max_cmd_len=8192;
   835         -    ;;
   836         -
   837         -  amigaos*)
   838         -    # On AmigaOS with pdksh, this test takes hours, literally.
   839         -    # So we just punt and use a minimum line length of 8192.
   840         -    lt_cv_sys_max_cmd_len=8192;
   841         -    ;;
   842         -
   843         -  netbsd* | freebsd* | openbsd* | darwin* | dragonfly*)
   844         -    # This has been around since 386BSD, at least.  Likely further.
   845         -    if test -x /sbin/sysctl; then
   846         -      lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax`
   847         -    elif test -x /usr/sbin/sysctl; then
   848         -      lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax`
   849         -    else
   850         -      lt_cv_sys_max_cmd_len=65536	# usable default for all BSDs
   851         -    fi
   852         -    # And add a safety zone
   853         -    lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4`
   854         -    lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3`
   855         -    ;;
   856         -
   857         -  interix*)
   858         -    # We know the value 262144 and hardcode it with a safety zone (like BSD)
   859         -    lt_cv_sys_max_cmd_len=196608
   860         -    ;;
   861         -
   862         -  osf*)
   863         -    # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure
   864         -    # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not
   865         -    # nice to cause kernel panics so lets avoid the loop below.
   866         -    # First set a reasonable default.
   867         -    lt_cv_sys_max_cmd_len=16384
   868         -    #
   869         -    if test -x /sbin/sysconfig; then
   870         -      case `/sbin/sysconfig -q proc exec_disable_arg_limit` in
   871         -        *1*) lt_cv_sys_max_cmd_len=-1 ;;
   872         -      esac
   873         -    fi
   874         -    ;;
   875         -  sco3.2v5*)
   876         -    lt_cv_sys_max_cmd_len=102400
   877         -    ;;
   878         -  sysv5* | sco5v6* | sysv4.2uw2*)
   879         -    kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null`
   880         -    if test -n "$kargmax"; then
   881         -      lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[[ 	]]//'`
   882         -    else
   883         -      lt_cv_sys_max_cmd_len=32768
   884         -    fi
   885         -    ;;
   886         -  *)
   887         -    lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null`
   888         -    if test -n "$lt_cv_sys_max_cmd_len"; then
   889         -      lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4`
   890         -      lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3`
   891         -    else
   892         -      SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}}
   893         -      while (test "X"`$SHELL [$]0 --fallback-echo "X$teststring" 2>/dev/null` \
   894         -	       = "XX$teststring") >/dev/null 2>&1 &&
   895         -	      new_result=`expr "X$teststring" : ".*" 2>&1` &&
   896         -	      lt_cv_sys_max_cmd_len=$new_result &&
   897         -	      test $i != 17 # 1/2 MB should be enough
   898         -      do
   899         -        i=`expr $i + 1`
   900         -        teststring=$teststring$teststring
   901         -      done
   902         -      teststring=
   903         -      # Add a significant safety factor because C++ compilers can tack on massive
   904         -      # amounts of additional arguments before passing them to the linker.
   905         -      # It appears as though 1/2 is a usable value.
   906         -      lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2`
   907         -    fi
   908         -    ;;
   909         -  esac
   910         -])
   911         -if test -n $lt_cv_sys_max_cmd_len ; then
   912         -  AC_MSG_RESULT($lt_cv_sys_max_cmd_len)
   913         -else
   914         -  AC_MSG_RESULT(none)
   915         -fi
   916         -])# AC_LIBTOOL_SYS_MAX_CMD_LEN
   917         -
   918         -
   919         -# _LT_AC_CHECK_DLFCN
   920         -# ------------------
   921         -AC_DEFUN([_LT_AC_CHECK_DLFCN],
   922         -[AC_CHECK_HEADERS(dlfcn.h)dnl
   923         -])# _LT_AC_CHECK_DLFCN
   924         -
   925         -
   926         -# _LT_AC_TRY_DLOPEN_SELF (ACTION-IF-TRUE, ACTION-IF-TRUE-W-USCORE,
   927         -#                           ACTION-IF-FALSE, ACTION-IF-CROSS-COMPILING)
   928         -# ---------------------------------------------------------------------
   929         -AC_DEFUN([_LT_AC_TRY_DLOPEN_SELF],
   930         -[AC_REQUIRE([_LT_AC_CHECK_DLFCN])dnl
   931         -if test "$cross_compiling" = yes; then :
   932         -  [$4]
   933         -else
   934         -  lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
   935         -  lt_status=$lt_dlunknown
   936         -  cat > conftest.$ac_ext <<EOF
   937         -[#line __oline__ "configure"
   938         -#include "confdefs.h"
   939         -
   940         -#if HAVE_DLFCN_H
   941         -#include <dlfcn.h>
   942         -#endif
   943         -
   944         -#include <stdio.h>
   945         -
   946         -#ifdef RTLD_GLOBAL
   947         -#  define LT_DLGLOBAL		RTLD_GLOBAL
   948         -#else
   949         -#  ifdef DL_GLOBAL
   950         -#    define LT_DLGLOBAL		DL_GLOBAL
   951         -#  else
   952         -#    define LT_DLGLOBAL		0
   953         -#  endif
   954         -#endif
   955         -
   956         -/* We may have to define LT_DLLAZY_OR_NOW in the command line if we
   957         -   find out it does not work in some platform. */
   958         -#ifndef LT_DLLAZY_OR_NOW
   959         -#  ifdef RTLD_LAZY
   960         -#    define LT_DLLAZY_OR_NOW		RTLD_LAZY
   961         -#  else
   962         -#    ifdef DL_LAZY
   963         -#      define LT_DLLAZY_OR_NOW		DL_LAZY
   964         -#    else
   965         -#      ifdef RTLD_NOW
   966         -#        define LT_DLLAZY_OR_NOW	RTLD_NOW
   967         -#      else
   968         -#        ifdef DL_NOW
   969         -#          define LT_DLLAZY_OR_NOW	DL_NOW
   970         -#        else
   971         -#          define LT_DLLAZY_OR_NOW	0
   972         -#        endif
   973         -#      endif
   974         -#    endif
   975         -#  endif
   976         -#endif
   977         -
   978         -#ifdef __cplusplus
   979         -extern "C" void exit (int);
   980         -#endif
   981         -
   982         -void fnord() { int i=42;}
   983         -int main ()
   984         -{
   985         -  void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
   986         -  int status = $lt_dlunknown;
   987         -
   988         -  if (self)
   989         -    {
   990         -      if (dlsym (self,"fnord"))       status = $lt_dlno_uscore;
   991         -      else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore;
   992         -      /* dlclose (self); */
   993         -    }
   994         -  else
   995         -    puts (dlerror ());
   996         -
   997         -    exit (status);
   998         -}]
   999         -EOF
  1000         -  if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext} 2>/dev/null; then
  1001         -    (./conftest; exit; ) >&AS_MESSAGE_LOG_FD 2>/dev/null
  1002         -    lt_status=$?
  1003         -    case x$lt_status in
  1004         -      x$lt_dlno_uscore) $1 ;;
  1005         -      x$lt_dlneed_uscore) $2 ;;
  1006         -      x$lt_dlunknown|x*) $3 ;;
  1007         -    esac
  1008         -  else :
  1009         -    # compilation failed
  1010         -    $3
  1011         -  fi
  1012         -fi
  1013         -rm -fr conftest*
  1014         -])# _LT_AC_TRY_DLOPEN_SELF
  1015         -
  1016         -
  1017         -# AC_LIBTOOL_DLOPEN_SELF
  1018         -# ----------------------
  1019         -AC_DEFUN([AC_LIBTOOL_DLOPEN_SELF],
  1020         -[AC_REQUIRE([_LT_AC_CHECK_DLFCN])dnl
  1021         -if test "x$enable_dlopen" != xyes; then
  1022         -  enable_dlopen=unknown
  1023         -  enable_dlopen_self=unknown
  1024         -  enable_dlopen_self_static=unknown
  1025         -else
  1026         -  lt_cv_dlopen=no
  1027         -  lt_cv_dlopen_libs=
  1028         -
  1029         -  case $host_os in
  1030         -  beos*)
  1031         -    lt_cv_dlopen="load_add_on"
  1032         -    lt_cv_dlopen_libs=
  1033         -    lt_cv_dlopen_self=yes
  1034         -    ;;
  1035         -
  1036         -  mingw* | pw32*)
  1037         -    lt_cv_dlopen="LoadLibrary"
  1038         -    lt_cv_dlopen_libs=
  1039         -   ;;
  1040         -
  1041         -  cygwin*)
  1042         -    lt_cv_dlopen="dlopen"
  1043         -    lt_cv_dlopen_libs=
  1044         -   ;;
  1045         -
  1046         -  darwin*)
  1047         -  # if libdl is installed we need to link against it
  1048         -    AC_CHECK_LIB([dl], [dlopen],
  1049         -		[lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"],[
  1050         -    lt_cv_dlopen="dyld"
  1051         -    lt_cv_dlopen_libs=
  1052         -    lt_cv_dlopen_self=yes
  1053         -    ])
  1054         -   ;;
  1055         -
  1056         -  *)
  1057         -    AC_CHECK_FUNC([shl_load],
  1058         -	  [lt_cv_dlopen="shl_load"],
  1059         -      [AC_CHECK_LIB([dld], [shl_load],
  1060         -	    [lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld"],
  1061         -	[AC_CHECK_FUNC([dlopen],
  1062         -	      [lt_cv_dlopen="dlopen"],
  1063         -	  [AC_CHECK_LIB([dl], [dlopen],
  1064         -		[lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"],
  1065         -	    [AC_CHECK_LIB([svld], [dlopen],
  1066         -		  [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"],
  1067         -	      [AC_CHECK_LIB([dld], [dld_link],
  1068         -		    [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld"])
  1069         -	      ])
  1070         -	    ])
  1071         -	  ])
  1072         -	])
  1073         -      ])
  1074         -    ;;
  1075         -  esac
  1076         -
  1077         -  if test "x$lt_cv_dlopen" != xno; then
  1078         -    enable_dlopen=yes
  1079         -  else
  1080         -    enable_dlopen=no
  1081         -  fi
  1082         -
  1083         -  case $lt_cv_dlopen in
  1084         -  dlopen)
  1085         -    save_CPPFLAGS="$CPPFLAGS"
  1086         -    test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H"
  1087         -
  1088         -    save_LDFLAGS="$LDFLAGS"
  1089         -    wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\"
  1090         -
  1091         -    save_LIBS="$LIBS"
  1092         -    LIBS="$lt_cv_dlopen_libs $LIBS"
  1093         -
  1094         -    AC_CACHE_CHECK([whether a program can dlopen itself],
  1095         -	  lt_cv_dlopen_self, [dnl
  1096         -	  _LT_AC_TRY_DLOPEN_SELF(
  1097         -	    lt_cv_dlopen_self=yes, lt_cv_dlopen_self=yes,
  1098         -	    lt_cv_dlopen_self=no, lt_cv_dlopen_self=cross)
  1099         -    ])
  1100         -
  1101         -    if test "x$lt_cv_dlopen_self" = xyes; then
  1102         -      wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\"
  1103         -      AC_CACHE_CHECK([whether a statically linked program can dlopen itself],
  1104         -    	  lt_cv_dlopen_self_static, [dnl
  1105         -	  _LT_AC_TRY_DLOPEN_SELF(
  1106         -	    lt_cv_dlopen_self_static=yes, lt_cv_dlopen_self_static=yes,
  1107         -	    lt_cv_dlopen_self_static=no,  lt_cv_dlopen_self_static=cross)
  1108         -      ])
  1109         -    fi
  1110         -
  1111         -    CPPFLAGS="$save_CPPFLAGS"
  1112         -    LDFLAGS="$save_LDFLAGS"
  1113         -    LIBS="$save_LIBS"
  1114         -    ;;
  1115         -  esac
  1116         -
  1117         -  case $lt_cv_dlopen_self in
  1118         -  yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;;
  1119         -  *) enable_dlopen_self=unknown ;;
  1120         -  esac
  1121         -
  1122         -  case $lt_cv_dlopen_self_static in
  1123         -  yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;;
  1124         -  *) enable_dlopen_self_static=unknown ;;
  1125         -  esac
  1126         -fi
  1127         -])# AC_LIBTOOL_DLOPEN_SELF
  1128         -
  1129         -
  1130         -# AC_LIBTOOL_PROG_CC_C_O([TAGNAME])
  1131         -# ---------------------------------
  1132         -# Check to see if options -c and -o are simultaneously supported by compiler
  1133         -AC_DEFUN([AC_LIBTOOL_PROG_CC_C_O],
  1134         -[AC_REQUIRE([LT_AC_PROG_SED])dnl
  1135         -AC_REQUIRE([_LT_AC_SYS_COMPILER])dnl
  1136         -AC_CACHE_CHECK([if $compiler supports -c -o file.$ac_objext],
  1137         -  [_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)],
  1138         -  [_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)=no
  1139         -   $rm -r conftest 2>/dev/null
  1140         -   mkdir conftest
  1141         -   cd conftest
  1142         -   mkdir out
  1143         -   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
  1144         -
  1145         -   lt_compiler_flag="-o out/conftest2.$ac_objext"
  1146         -   # Insert the option either (1) after the last *FLAGS variable, or
  1147         -   # (2) before a word containing "conftest.", or (3) at the end.
  1148         -   # Note that $ac_compile itself does not contain backslashes and begins
  1149         -   # with a dollar sign (not a hyphen), so the echo should work correctly.
  1150         -   lt_compile=`echo "$ac_compile" | $SED \
  1151         -   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
  1152         -   -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \
  1153         -   -e 's:$: $lt_compiler_flag:'`
  1154         -   (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&AS_MESSAGE_LOG_FD)
  1155         -   (eval "$lt_compile" 2>out/conftest.err)
  1156         -   ac_status=$?
  1157         -   cat out/conftest.err >&AS_MESSAGE_LOG_FD
  1158         -   echo "$as_me:__oline__: \$? = $ac_status" >&AS_MESSAGE_LOG_FD
  1159         -   if (exit $ac_status) && test -s out/conftest2.$ac_objext
  1160         -   then
  1161         -     # The compiler can only warn and ignore the option if not recognized
  1162         -     # So say no if there are warnings
  1163         -     $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp
  1164         -     $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2
  1165         -     if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then
  1166         -       _LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes
  1167         -     fi
  1168         -   fi
  1169         -   chmod u+w . 2>&AS_MESSAGE_LOG_FD
  1170         -   $rm conftest*
  1171         -   # SGI C++ compiler will create directory out/ii_files/ for
  1172         -   # template instantiation
  1173         -   test -d out/ii_files && $rm out/ii_files/* && rmdir out/ii_files
  1174         -   $rm out/* && rmdir out
  1175         -   cd ..
  1176         -   rmdir conftest
  1177         -   $rm conftest*
  1178         -])
  1179         -])# AC_LIBTOOL_PROG_CC_C_O
  1180         -
  1181         -
  1182         -# AC_LIBTOOL_SYS_HARD_LINK_LOCKS([TAGNAME])
  1183         -# -----------------------------------------
  1184         -# Check to see if we can do hard links to lock some files if needed
  1185         -AC_DEFUN([AC_LIBTOOL_SYS_HARD_LINK_LOCKS],
  1186         -[AC_REQUIRE([_LT_AC_LOCK])dnl
  1187         -
  1188         -hard_links="nottested"
  1189         -if test "$_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)" = no && test "$need_locks" != no; then
  1190         -  # do not overwrite the value of need_locks provided by the user
  1191         -  AC_MSG_CHECKING([if we can lock with hard links])
  1192         -  hard_links=yes
  1193         -  $rm conftest*
  1194         -  ln conftest.a conftest.b 2>/dev/null && hard_links=no
  1195         -  touch conftest.a
  1196         -  ln conftest.a conftest.b 2>&5 || hard_links=no
  1197         -  ln conftest.a conftest.b 2>/dev/null && hard_links=no
  1198         -  AC_MSG_RESULT([$hard_links])
  1199         -  if test "$hard_links" = no; then
  1200         -    AC_MSG_WARN([`$CC' does not support `-c -o', so `make -j' may be unsafe])
  1201         -    need_locks=warn
  1202         -  fi
  1203         -else
  1204         -  need_locks=no
  1205         -fi
  1206         -])# AC_LIBTOOL_SYS_HARD_LINK_LOCKS
  1207         -
  1208         -
  1209         -# AC_LIBTOOL_OBJDIR
  1210         -# -----------------
  1211         -AC_DEFUN([AC_LIBTOOL_OBJDIR],
  1212         -[AC_CACHE_CHECK([for objdir], [lt_cv_objdir],
  1213         -[rm -f .libs 2>/dev/null
  1214         -mkdir .libs 2>/dev/null
  1215         -if test -d .libs; then
  1216         -  lt_cv_objdir=.libs
  1217         -else
  1218         -  # MS-DOS does not allow filenames that begin with a dot.
  1219         -  lt_cv_objdir=_libs
  1220         -fi
  1221         -rmdir .libs 2>/dev/null])
  1222         -objdir=$lt_cv_objdir
  1223         -])# AC_LIBTOOL_OBJDIR
  1224         -
  1225         -
  1226         -# AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH([TAGNAME])
  1227         -# ----------------------------------------------
  1228         -# Check hardcoding attributes.
  1229         -AC_DEFUN([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH],
  1230         -[AC_MSG_CHECKING([how to hardcode library paths into programs])
  1231         -_LT_AC_TAGVAR(hardcode_action, $1)=
  1232         -if test -n "$_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)" || \
  1233         -   test -n "$_LT_AC_TAGVAR(runpath_var, $1)" || \
  1234         -   test "X$_LT_AC_TAGVAR(hardcode_automatic, $1)" = "Xyes" ; then
  1235         -
  1236         -  # We can hardcode non-existant directories.
  1237         -  if test "$_LT_AC_TAGVAR(hardcode_direct, $1)" != no &&
  1238         -     # If the only mechanism to avoid hardcoding is shlibpath_var, we
  1239         -     # have to relink, otherwise we might link with an installed library
  1240         -     # when we should be linking with a yet-to-be-installed one
  1241         -     ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, $1)" != no &&
  1242         -     test "$_LT_AC_TAGVAR(hardcode_minus_L, $1)" != no; then
  1243         -    # Linking always hardcodes the temporary library directory.
  1244         -    _LT_AC_TAGVAR(hardcode_action, $1)=relink
  1245         -  else
  1246         -    # We can link without hardcoding, and we can hardcode nonexisting dirs.
  1247         -    _LT_AC_TAGVAR(hardcode_action, $1)=immediate
  1248         -  fi
  1249         -else
  1250         -  # We cannot hardcode anything, or else we can only hardcode existing
  1251         -  # directories.
  1252         -  _LT_AC_TAGVAR(hardcode_action, $1)=unsupported
  1253         -fi
  1254         -AC_MSG_RESULT([$_LT_AC_TAGVAR(hardcode_action, $1)])
  1255         -
  1256         -if test "$_LT_AC_TAGVAR(hardcode_action, $1)" = relink; then
  1257         -  # Fast installation is not supported
  1258         -  enable_fast_install=no
  1259         -elif test "$shlibpath_overrides_runpath" = yes ||
  1260         -     test "$enable_shared" = no; then
  1261         -  # Fast installation is not necessary
  1262         -  enable_fast_install=needless
  1263         -fi
  1264         -])# AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH
  1265         -
  1266         -
  1267         -# AC_LIBTOOL_SYS_LIB_STRIP
  1268         -# ------------------------
  1269         -AC_DEFUN([AC_LIBTOOL_SYS_LIB_STRIP],
  1270         -[striplib=
  1271         -old_striplib=
  1272         -AC_MSG_CHECKING([whether stripping libraries is possible])
  1273         -if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then
  1274         -  test -z "$old_striplib" && old_striplib="$STRIP --strip-debug"
  1275         -  test -z "$striplib" && striplib="$STRIP --strip-unneeded"
  1276         -  AC_MSG_RESULT([yes])
  1277         -else
  1278         -# FIXME - insert some real tests, host_os isn't really good enough
  1279         -  case $host_os in
  1280         -   darwin*)
  1281         -       if test -n "$STRIP" ; then
  1282         -         striplib="$STRIP -x"
  1283         -         old_striplib="$STRIP -S"
  1284         -         AC_MSG_RESULT([yes])
  1285         -       else
  1286         -  AC_MSG_RESULT([no])
  1287         -fi
  1288         -       ;;
  1289         -   *)
  1290         -  AC_MSG_RESULT([no])
  1291         -    ;;
  1292         -  esac
  1293         -fi
  1294         -])# AC_LIBTOOL_SYS_LIB_STRIP
  1295         -
  1296         -
  1297         -# AC_LIBTOOL_SYS_DYNAMIC_LINKER
  1298         -# -----------------------------
  1299         -# PORTME Fill in your ld.so characteristics
  1300         -AC_DEFUN([AC_LIBTOOL_SYS_DYNAMIC_LINKER],
  1301         -[AC_REQUIRE([LT_AC_PROG_SED])dnl
  1302         -AC_MSG_CHECKING([dynamic linker characteristics])
  1303         -library_names_spec=
  1304         -libname_spec='lib$name'
  1305         -soname_spec=
  1306         -shrext_cmds=".so"
  1307         -postinstall_cmds=
  1308         -postuninstall_cmds=
  1309         -finish_cmds=
  1310         -finish_eval=
  1311         -shlibpath_var=
  1312         -shlibpath_overrides_runpath=unknown
  1313         -version_type=none
  1314         -dynamic_linker="$host_os ld.so"
  1315         -sys_lib_dlsearch_path_spec="/lib /usr/lib"
  1316         -m4_if($1,[],[
  1317         -if test "$GCC" = yes; then
  1318         -  case $host_os in
  1319         -    darwin*) lt_awk_arg="/^libraries:/,/LR/" ;;
  1320         -    *) lt_awk_arg="/^libraries:/" ;;
  1321         -  esac
  1322         -  lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e "s,=/,/,g"`
  1323         -  if echo "$lt_search_path_spec" | grep ';' >/dev/null ; then
  1324         -    # if the path contains ";" then we assume it to be the separator
  1325         -    # otherwise default to the standard path separator (i.e. ":") - it is
  1326         -    # assumed that no part of a normal pathname contains ";" but that should
  1327         -    # okay in the real world where ";" in dirpaths is itself problematic.
  1328         -    lt_search_path_spec=`echo "$lt_search_path_spec" | $SED -e 's/;/ /g'`
  1329         -  else
  1330         -    lt_search_path_spec=`echo "$lt_search_path_spec" | $SED  -e "s/$PATH_SEPARATOR/ /g"`
  1331         -  fi
  1332         -  # Ok, now we have the path, separated by spaces, we can step through it
  1333         -  # and add multilib dir if necessary.
  1334         -  lt_tmp_lt_search_path_spec=
  1335         -  lt_multi_os_dir=`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null`
  1336         -  for lt_sys_path in $lt_search_path_spec; do
  1337         -    if test -d "$lt_sys_path/$lt_multi_os_dir"; then
  1338         -      lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path/$lt_multi_os_dir"
  1339         -    else
  1340         -      test -d "$lt_sys_path" && \
  1341         -	lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path"
  1342         -    fi
  1343         -  done
  1344         -  lt_search_path_spec=`echo $lt_tmp_lt_search_path_spec | awk '
  1345         -BEGIN {RS=" "; FS="/|\n";} {
  1346         -  lt_foo="";
  1347         -  lt_count=0;
  1348         -  for (lt_i = NF; lt_i > 0; lt_i--) {
  1349         -    if ($lt_i != "" && $lt_i != ".") {
  1350         -      if ($lt_i == "..") {
  1351         -        lt_count++;
  1352         -      } else {
  1353         -        if (lt_count == 0) {
  1354         -          lt_foo="/" $lt_i lt_foo;
  1355         -        } else {
  1356         -          lt_count--;
  1357         -        }
  1358         -      }
  1359         -    }
  1360         -  }
  1361         -  if (lt_foo != "") { lt_freq[[lt_foo]]++; }
  1362         -  if (lt_freq[[lt_foo]] == 1) { print lt_foo; }
  1363         -}'`
  1364         -  sys_lib_search_path_spec=`echo $lt_search_path_spec`
  1365         -else
  1366         -  sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
  1367         -fi])
  1368         -need_lib_prefix=unknown
  1369         -hardcode_into_libs=no
  1370         -
  1371         -# when you set need_version to no, make sure it does not cause -set_version
  1372         -# flags to be left without arguments
  1373         -need_version=unknown
  1374         -
  1375         -case $host_os in
  1376         -aix3*)
  1377         -  version_type=linux
  1378         -  library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a'
  1379         -  shlibpath_var=LIBPATH
  1380         -
  1381         -  # AIX 3 has no versioning support, so we append a major version to the name.
  1382         -  soname_spec='${libname}${release}${shared_ext}$major'
  1383         -  ;;
  1384         -
  1385         -aix[[4-9]]*)
  1386         -  version_type=linux
  1387         -  need_lib_prefix=no
  1388         -  need_version=no
  1389         -  hardcode_into_libs=yes
  1390         -  if test "$host_cpu" = ia64; then
  1391         -    # AIX 5 supports IA64
  1392         -    library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}'
  1393         -    shlibpath_var=LD_LIBRARY_PATH
  1394         -  else
  1395         -    # With GCC up to 2.95.x, collect2 would create an import file
  1396         -    # for dependence libraries.  The import file would start with
  1397         -    # the line `#! .'.  This would cause the generated library to
  1398         -    # depend on `.', always an invalid library.  This was fixed in
  1399         -    # development snapshots of GCC prior to 3.0.
  1400         -    case $host_os in
  1401         -      aix4 | aix4.[[01]] | aix4.[[01]].*)
  1402         -      if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)'
  1403         -	   echo ' yes '
  1404         -	   echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then
  1405         -	:
  1406         -      else
  1407         -	can_build_shared=no
  1408         -      fi
  1409         -      ;;
  1410         -    esac
  1411         -    # AIX (on Power*) has no versioning support, so currently we can not hardcode correct
  1412         -    # soname into executable. Probably we can add versioning support to
  1413         -    # collect2, so additional links can be useful in future.
  1414         -    if test "$aix_use_runtimelinking" = yes; then
  1415         -      # If using run time linking (on AIX 4.2 or later) use lib<name>.so
  1416         -      # instead of lib<name>.a to let people know that these are not
  1417         -      # typical AIX shared libraries.
  1418         -      library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
  1419         -    else
  1420         -      # We preserve .a as extension for shared libraries through AIX4.2
  1421         -      # and later when we are not doing run time linking.
  1422         -      library_names_spec='${libname}${release}.a $libname.a'
  1423         -      soname_spec='${libname}${release}${shared_ext}$major'
  1424         -    fi
  1425         -    shlibpath_var=LIBPATH
  1426         -  fi
  1427         -  ;;
  1428         -
  1429         -amigaos*)
  1430         -  library_names_spec='$libname.ixlibrary $libname.a'
  1431         -  # Create ${libname}_ixlibrary.a entries in /sys/libs.
  1432         -  finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([[^/]]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done'
  1433         -  ;;
  1434         -
  1435         -beos*)
  1436         -  library_names_spec='${libname}${shared_ext}'
  1437         -  dynamic_linker="$host_os ld.so"
  1438         -  shlibpath_var=LIBRARY_PATH
  1439         -  ;;
  1440         -
  1441         -bsdi[[45]]*)
  1442         -  version_type=linux
  1443         -  need_version=no
  1444         -  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
  1445         -  soname_spec='${libname}${release}${shared_ext}$major'
  1446         -  finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir'
  1447         -  shlibpath_var=LD_LIBRARY_PATH
  1448         -  sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib"
  1449         -  sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib"
  1450         -  # the default ld.so.conf also contains /usr/contrib/lib and
  1451         -  # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow
  1452         -  # libtool to hard-code these into programs
  1453         -  ;;
  1454         -
  1455         -cygwin* | mingw* | pw32*)
  1456         -  version_type=windows
  1457         -  shrext_cmds=".dll"
  1458         -  need_version=no
  1459         -  need_lib_prefix=no
  1460         -
  1461         -  case $GCC,$host_os in
  1462         -  yes,cygwin* | yes,mingw* | yes,pw32*)
  1463         -    library_names_spec='$libname.dll.a'
  1464         -    # DLL is installed to $(libdir)/../bin by postinstall_cmds
  1465         -    postinstall_cmds='base_file=`basename \${file}`~
  1466         -      dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~
  1467         -      dldir=$destdir/`dirname \$dlpath`~
  1468         -      test -d \$dldir || mkdir -p \$dldir~
  1469         -      $install_prog $dir/$dlname \$dldir/$dlname~
  1470         -      chmod a+x \$dldir/$dlname'
  1471         -    postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
  1472         -      dlpath=$dir/\$dldll~
  1473         -       $rm \$dlpath'
  1474         -    shlibpath_overrides_runpath=yes
  1475         -
  1476         -    case $host_os in
  1477         -    cygwin*)
  1478         -      # Cygwin DLLs use 'cyg' prefix rather than 'lib'
  1479         -      soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}'
  1480         -      sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib"
  1481         -      ;;
  1482         -    mingw*)
  1483         -      # MinGW DLLs use traditional 'lib' prefix
  1484         -      soname_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}'
  1485         -      sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"`
  1486         -      if echo "$sys_lib_search_path_spec" | [grep ';[c-zC-Z]:/' >/dev/null]; then
  1487         -        # It is most probably a Windows format PATH printed by
  1488         -        # mingw gcc, but we are running on Cygwin. Gcc prints its search
  1489         -        # path with ; separators, and with drive letters. We can handle the
  1490         -        # drive letters (cygwin fileutils understands them), so leave them,
  1491         -        # especially as we might pass files found there to a mingw objdump,
  1492         -        # which wouldn't understand a cygwinified path. Ahh.
  1493         -        sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
  1494         -      else
  1495         -        sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED  -e "s/$PATH_SEPARATOR/ /g"`
  1496         -      fi
  1497         -      ;;
  1498         -    pw32*)
  1499         -      # pw32 DLLs use 'pw' prefix rather than 'lib'
  1500         -      library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}'
  1501         -      ;;
  1502         -    esac
  1503         -    ;;
  1504         -
  1505         -  *)
  1506         -    library_names_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext} $libname.lib'
  1507         -    ;;
  1508         -  esac
  1509         -  dynamic_linker='Win32 ld.exe'
  1510         -  # FIXME: first we should search . and the directory the executable is in
  1511         -  shlibpath_var=PATH
  1512         -  ;;
  1513         -
  1514         -darwin* | rhapsody*)
  1515         -  dynamic_linker="$host_os dyld"
  1516         -  version_type=darwin
  1517         -  need_lib_prefix=no
  1518         -  need_version=no
  1519         -  library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext'
  1520         -  soname_spec='${libname}${release}${major}$shared_ext'
  1521         -  shlibpath_overrides_runpath=yes
  1522         -  shlibpath_var=DYLD_LIBRARY_PATH
  1523         -  shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`'
  1524         -  m4_if([$1], [],[
  1525         -  sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib"]) 
  1526         -  sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib'
  1527         -  ;;
  1528         -
  1529         -dgux*)
  1530         -  version_type=linux
  1531         -  need_lib_prefix=no
  1532         -  need_version=no
  1533         -  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext'
  1534         -  soname_spec='${libname}${release}${shared_ext}$major'
  1535         -  shlibpath_var=LD_LIBRARY_PATH
  1536         -  ;;
  1537         -
  1538         -freebsd1*)
  1539         -  dynamic_linker=no
  1540         -  ;;
  1541         -
  1542         -freebsd* | dragonfly*)
  1543         -  # DragonFly does not have aout.  When/if they implement a new
  1544         -  # versioning mechanism, adjust this.
  1545         -  if test -x /usr/bin/objformat; then
  1546         -    objformat=`/usr/bin/objformat`
  1547         -  else
  1548         -    case $host_os in
  1549         -    freebsd[[123]]*) objformat=aout ;;
  1550         -    *) objformat=elf ;;
  1551         -    esac
  1552         -  fi
  1553         -  version_type=freebsd-$objformat
  1554         -  case $version_type in
  1555         -    freebsd-elf*)
  1556         -      library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
  1557         -      need_version=no
  1558         -      need_lib_prefix=no
  1559         -      ;;
  1560         -    freebsd-*)
  1561         -      library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix'
  1562         -      need_version=yes
  1563         -      ;;
  1564         -  esac
  1565         -  shlibpath_var=LD_LIBRARY_PATH
  1566         -  case $host_os in
  1567         -  freebsd2*)
  1568         -    shlibpath_overrides_runpath=yes
  1569         -    ;;
  1570         -  freebsd3.[[01]]* | freebsdelf3.[[01]]*)
  1571         -    shlibpath_overrides_runpath=yes
  1572         -    hardcode_into_libs=yes
  1573         -    ;;
  1574         -  freebsd3.[[2-9]]* | freebsdelf3.[[2-9]]* | \
  1575         -  freebsd4.[[0-5]] | freebsdelf4.[[0-5]] | freebsd4.1.1 | freebsdelf4.1.1)
  1576         -    shlibpath_overrides_runpath=no
  1577         -    hardcode_into_libs=yes
  1578         -    ;;
  1579         -  *) # from 4.6 on, and DragonFly
  1580         -    shlibpath_overrides_runpath=yes
  1581         -    hardcode_into_libs=yes
  1582         -    ;;
  1583         -  esac
  1584         -  ;;
  1585         -
  1586         -gnu*)
  1587         -  version_type=linux
  1588         -  need_lib_prefix=no
  1589         -  need_version=no
  1590         -  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
  1591         -  soname_spec='${libname}${release}${shared_ext}$major'
  1592         -  shlibpath_var=LD_LIBRARY_PATH
  1593         -  hardcode_into_libs=yes
  1594         -  ;;
  1595         -
  1596         -hpux9* | hpux10* | hpux11*)
  1597         -  # Give a soname corresponding to the major version so that dld.sl refuses to
  1598         -  # link against other versions.
  1599         -  version_type=sunos
  1600         -  need_lib_prefix=no
  1601         -  need_version=no
  1602         -  case $host_cpu in
  1603         -  ia64*)
  1604         -    shrext_cmds='.so'
  1605         -    hardcode_into_libs=yes
  1606         -    dynamic_linker="$host_os dld.so"
  1607         -    shlibpath_var=LD_LIBRARY_PATH
  1608         -    shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
  1609         -    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
  1610         -    soname_spec='${libname}${release}${shared_ext}$major'
  1611         -    if test "X$HPUX_IA64_MODE" = X32; then
  1612         -      sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib"
  1613         -    else
  1614         -      sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64"
  1615         -    fi
  1616         -    sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
  1617         -    ;;
  1618         -   hppa*64*)
  1619         -     shrext_cmds='.sl'
  1620         -     hardcode_into_libs=yes
  1621         -     dynamic_linker="$host_os dld.sl"
  1622         -     shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH
  1623         -     shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
  1624         -     library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
  1625         -     soname_spec='${libname}${release}${shared_ext}$major'
  1626         -     sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64"
  1627         -     sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
  1628         -     ;;
  1629         -   *)
  1630         -    shrext_cmds='.sl'
  1631         -    dynamic_linker="$host_os dld.sl"
  1632         -    shlibpath_var=SHLIB_PATH
  1633         -    shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH
  1634         -    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
  1635         -    soname_spec='${libname}${release}${shared_ext}$major'
  1636         -    ;;
  1637         -  esac
  1638         -  # HP-UX runs *really* slowly unless shared libraries are mode 555.
  1639         -  postinstall_cmds='chmod 555 $lib'
  1640         -  ;;
  1641         -
  1642         -interix[[3-9]]*)
  1643         -  version_type=linux
  1644         -  need_lib_prefix=no
  1645         -  need_version=no
  1646         -  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
  1647         -  soname_spec='${libname}${release}${shared_ext}$major'
  1648         -  dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)'
  1649         -  shlibpath_var=LD_LIBRARY_PATH
  1650         -  shlibpath_overrides_runpath=no
  1651         -  hardcode_into_libs=yes
  1652         -  ;;
  1653         -
  1654         -irix5* | irix6* | nonstopux*)
  1655         -  case $host_os in
  1656         -    nonstopux*) version_type=nonstopux ;;
  1657         -    *)
  1658         -	if test "$lt_cv_prog_gnu_ld" = yes; then
  1659         -		version_type=linux
  1660         -	else
  1661         -		version_type=irix
  1662         -	fi ;;
  1663         -  esac
  1664         -  need_lib_prefix=no
  1665         -  need_version=no
  1666         -  soname_spec='${libname}${release}${shared_ext}$major'
  1667         -  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}'
  1668         -  case $host_os in
  1669         -  irix5* | nonstopux*)
  1670         -    libsuff= shlibsuff=
  1671         -    ;;
  1672         -  *)
  1673         -    case $LD in # libtool.m4 will add one of these switches to LD
  1674         -    *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ")
  1675         -      libsuff= shlibsuff= libmagic=32-bit;;
  1676         -    *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ")
  1677         -      libsuff=32 shlibsuff=N32 libmagic=N32;;
  1678         -    *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ")
  1679         -      libsuff=64 shlibsuff=64 libmagic=64-bit;;
  1680         -    *) libsuff= shlibsuff= libmagic=never-match;;
  1681         -    esac
  1682         -    ;;
  1683         -  esac
  1684         -  shlibpath_var=LD_LIBRARY${shlibsuff}_PATH
  1685         -  shlibpath_overrides_runpath=no
  1686         -  sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}"
  1687         -  sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}"
  1688         -  hardcode_into_libs=yes
  1689         -  ;;
  1690         -
  1691         -# No shared lib support for Linux oldld, aout, or coff.
  1692         -linux*oldld* | linux*aout* | linux*coff*)
  1693         -  dynamic_linker=no
  1694         -  ;;
  1695         -
  1696         -# This must be Linux ELF.
  1697         -linux* | k*bsd*-gnu)
  1698         -  version_type=linux
  1699         -  need_lib_prefix=no
  1700         -  need_version=no
  1701         -  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
  1702         -  soname_spec='${libname}${release}${shared_ext}$major'
  1703         -  finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
  1704         -  shlibpath_var=LD_LIBRARY_PATH
  1705         -  shlibpath_overrides_runpath=no
  1706         -  # This implies no fast_install, which is unacceptable.
  1707         -  # Some rework will be needed to allow for fast_install
  1708         -  # before this can be enabled.
  1709         -  hardcode_into_libs=yes
  1710         -
  1711         -  # Append ld.so.conf contents to the search path
  1712         -  if test -f /etc/ld.so.conf; then
  1713         -    lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \[$]2)); skip = 1; } { if (!skip) print \[$]0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ 	]*hwcap[ 	]/d;s/[:,	]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '`
  1714         -    sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra"
  1715         -  fi
  1716         -
  1717         -  # We used to test for /lib/ld.so.1 and disable shared libraries on
  1718         -  # powerpc, because MkLinux only supported shared libraries with the
  1719         -  # GNU dynamic linker.  Since this was broken with cross compilers,
  1720         -  # most powerpc-linux boxes support dynamic linking these days and
  1721         -  # people can always --disable-shared, the test was removed, and we
  1722         -  # assume the GNU/Linux dynamic linker is in use.
  1723         -  dynamic_linker='GNU/Linux ld.so'
  1724         -  ;;
  1725         -
  1726         -netbsdelf*-gnu)
  1727         -  version_type=linux
  1728         -  need_lib_prefix=no
  1729         -  need_version=no
  1730         -  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
  1731         -  soname_spec='${libname}${release}${shared_ext}$major'
  1732         -  shlibpath_var=LD_LIBRARY_PATH
  1733         -  shlibpath_overrides_runpath=no
  1734         -  hardcode_into_libs=yes
  1735         -  dynamic_linker='NetBSD ld.elf_so'
  1736         -  ;;
  1737         -
  1738         -netbsd*)
  1739         -  version_type=sunos
  1740         -  need_lib_prefix=no
  1741         -  need_version=no
  1742         -  if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
  1743         -    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
  1744         -    finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
  1745         -    dynamic_linker='NetBSD (a.out) ld.so'
  1746         -  else
  1747         -    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
  1748         -    soname_spec='${libname}${release}${shared_ext}$major'
  1749         -    dynamic_linker='NetBSD ld.elf_so'
  1750         -  fi
  1751         -  shlibpath_var=LD_LIBRARY_PATH
  1752         -  shlibpath_overrides_runpath=yes
  1753         -  hardcode_into_libs=yes
  1754         -  ;;
  1755         -
  1756         -newsos6)
  1757         -  version_type=linux
  1758         -  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
  1759         -  shlibpath_var=LD_LIBRARY_PATH
  1760         -  shlibpath_overrides_runpath=yes
  1761         -  ;;
  1762         -
  1763         -nto-qnx*)
  1764         -  version_type=linux
  1765         -  need_lib_prefix=no
  1766         -  need_version=no
  1767         -  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
  1768         -  soname_spec='${libname}${release}${shared_ext}$major'
  1769         -  shlibpath_var=LD_LIBRARY_PATH
  1770         -  shlibpath_overrides_runpath=yes
  1771         -  ;;
  1772         -
  1773         -openbsd*)
  1774         -  version_type=sunos
  1775         -  sys_lib_dlsearch_path_spec="/usr/lib"
  1776         -  need_lib_prefix=no
  1777         -  # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs.
  1778         -  case $host_os in
  1779         -    openbsd3.3 | openbsd3.3.*) need_version=yes ;;
  1780         -    *)                         need_version=no  ;;
  1781         -  esac
  1782         -  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
  1783         -  finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
  1784         -  shlibpath_var=LD_LIBRARY_PATH
  1785         -  if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
  1786         -    case $host_os in
  1787         -      openbsd2.[[89]] | openbsd2.[[89]].*)
  1788         -	shlibpath_overrides_runpath=no
  1789         -	;;
  1790         -      *)
  1791         -	shlibpath_overrides_runpath=yes
  1792         -	;;
  1793         -      esac
  1794         -  else
  1795         -    shlibpath_overrides_runpath=yes
  1796         -  fi
  1797         -  ;;
  1798         -
  1799         -os2*)
  1800         -  libname_spec='$name'
  1801         -  shrext_cmds=".dll"
  1802         -  need_lib_prefix=no
  1803         -  library_names_spec='$libname${shared_ext} $libname.a'
  1804         -  dynamic_linker='OS/2 ld.exe'
  1805         -  shlibpath_var=LIBPATH
  1806         -  ;;
  1807         -
  1808         -osf3* | osf4* | osf5*)
  1809         -  version_type=osf
  1810         -  need_lib_prefix=no
  1811         -  need_version=no
  1812         -  soname_spec='${libname}${release}${shared_ext}$major'
  1813         -  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
  1814         -  shlibpath_var=LD_LIBRARY_PATH
  1815         -  sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib"
  1816         -  sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec"
  1817         -  ;;
  1818         -
  1819         -rdos*)
  1820         -  dynamic_linker=no
  1821         -  ;;
  1822         -
  1823         -solaris*)
  1824         -  version_type=linux
  1825         -  need_lib_prefix=no
  1826         -  need_version=no
  1827         -  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
  1828         -  soname_spec='${libname}${release}${shared_ext}$major'
  1829         -  shlibpath_var=LD_LIBRARY_PATH
  1830         -  shlibpath_overrides_runpath=yes
  1831         -  hardcode_into_libs=yes
  1832         -  # ldd complains unless libraries are executable
  1833         -  postinstall_cmds='chmod +x $lib'
  1834         -  ;;
  1835         -
  1836         -sunos4*)
  1837         -  version_type=sunos
  1838         -  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
  1839         -  finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir'
  1840         -  shlibpath_var=LD_LIBRARY_PATH
  1841         -  shlibpath_overrides_runpath=yes
  1842         -  if test "$with_gnu_ld" = yes; then
  1843         -    need_lib_prefix=no
  1844         -  fi
  1845         -  need_version=yes
  1846         -  ;;
  1847         -
  1848         -sysv4 | sysv4.3*)
  1849         -  version_type=linux
  1850         -  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
  1851         -  soname_spec='${libname}${release}${shared_ext}$major'
  1852         -  shlibpath_var=LD_LIBRARY_PATH
  1853         -  case $host_vendor in
  1854         -    sni)
  1855         -      shlibpath_overrides_runpath=no
  1856         -      need_lib_prefix=no
  1857         -      export_dynamic_flag_spec='${wl}-Blargedynsym'
  1858         -      runpath_var=LD_RUN_PATH
  1859         -      ;;
  1860         -    siemens)
  1861         -      need_lib_prefix=no
  1862         -      ;;
  1863         -    motorola)
  1864         -      need_lib_prefix=no
  1865         -      need_version=no
  1866         -      shlibpath_overrides_runpath=no
  1867         -      sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib'
  1868         -      ;;
  1869         -  esac
  1870         -  ;;
  1871         -
  1872         -sysv4*MP*)
  1873         -  if test -d /usr/nec ;then
  1874         -    version_type=linux
  1875         -    library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}'
  1876         -    soname_spec='$libname${shared_ext}.$major'
  1877         -    shlibpath_var=LD_LIBRARY_PATH
  1878         -  fi
  1879         -  ;;
  1880         -
  1881         -sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
  1882         -  version_type=freebsd-elf
  1883         -  need_lib_prefix=no
  1884         -  need_version=no
  1885         -  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
  1886         -  soname_spec='${libname}${release}${shared_ext}$major'
  1887         -  shlibpath_var=LD_LIBRARY_PATH
  1888         -  hardcode_into_libs=yes
  1889         -  if test "$with_gnu_ld" = yes; then
  1890         -    sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib'
  1891         -    shlibpath_overrides_runpath=no
  1892         -  else
  1893         -    sys_lib_search_path_spec='/usr/ccs/lib /usr/lib'
  1894         -    shlibpath_overrides_runpath=yes
  1895         -    case $host_os in
  1896         -      sco3.2v5*)
  1897         -        sys_lib_search_path_spec="$sys_lib_search_path_spec /lib"
  1898         -	;;
  1899         -    esac
  1900         -  fi
  1901         -  sys_lib_dlsearch_path_spec='/usr/lib'
  1902         -  ;;
  1903         -
  1904         -uts4*)
  1905         -  version_type=linux
  1906         -  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
  1907         -  soname_spec='${libname}${release}${shared_ext}$major'
  1908         -  shlibpath_var=LD_LIBRARY_PATH
  1909         -  ;;
  1910         -
  1911         -*)
  1912         -  dynamic_linker=no
  1913         -  ;;
  1914         -esac
  1915         -AC_MSG_RESULT([$dynamic_linker])
  1916         -test "$dynamic_linker" = no && can_build_shared=no
  1917         -
  1918         -AC_CACHE_VAL([lt_cv_sys_lib_search_path_spec],
  1919         -[lt_cv_sys_lib_search_path_spec="$sys_lib_search_path_spec"])
  1920         -sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec"
  1921         -AC_CACHE_VAL([lt_cv_sys_lib_dlsearch_path_spec],
  1922         -[lt_cv_sys_lib_dlsearch_path_spec="$sys_lib_dlsearch_path_spec"])
  1923         -sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec"
  1924         -
  1925         -variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
  1926         -if test "$GCC" = yes; then
  1927         -  variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
  1928         -fi
  1929         -])# AC_LIBTOOL_SYS_DYNAMIC_LINKER
  1930         -
  1931         -
  1932         -# _LT_AC_TAGCONFIG
  1933         -# ----------------
  1934         -AC_DEFUN([_LT_AC_TAGCONFIG],
  1935         -[AC_REQUIRE([LT_AC_PROG_SED])dnl
  1936         -AC_ARG_WITH([tags],
  1937         -    [AC_HELP_STRING([--with-tags@<:@=TAGS@:>@],
  1938         -        [include additional configurations @<:@automatic@:>@])],
  1939         -    [tagnames="$withval"])
  1940         -
  1941         -if test -f "$ltmain" && test -n "$tagnames"; then
  1942         -  if test ! -f "${ofile}"; then
  1943         -    AC_MSG_WARN([output file `$ofile' does not exist])
  1944         -  fi
  1945         -
  1946         -  if test -z "$LTCC"; then
  1947         -    eval "`$SHELL ${ofile} --config | grep '^LTCC='`"
  1948         -    if test -z "$LTCC"; then
  1949         -      AC_MSG_WARN([output file `$ofile' does not look like a libtool script])
  1950         -    else
  1951         -      AC_MSG_WARN([using `LTCC=$LTCC', extracted from `$ofile'])
  1952         -    fi
  1953         -  fi
  1954         -  if test -z "$LTCFLAGS"; then
  1955         -    eval "`$SHELL ${ofile} --config | grep '^LTCFLAGS='`"
  1956         -  fi
  1957         -
  1958         -  # Extract list of available tagged configurations in $ofile.
  1959         -  # Note that this assumes the entire list is on one line.
  1960         -  available_tags=`grep "^available_tags=" "${ofile}" | $SED -e 's/available_tags=\(.*$\)/\1/' -e 's/\"//g'`
  1961         -
  1962         -  lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
  1963         -  for tagname in $tagnames; do
  1964         -    IFS="$lt_save_ifs"
  1965         -    # Check whether tagname contains only valid characters
  1966         -    case `$echo "X$tagname" | $Xsed -e 's:[[-_ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890,/]]::g'` in
  1967         -    "") ;;
  1968         -    *)  AC_MSG_ERROR([invalid tag name: $tagname])
  1969         -	;;
  1970         -    esac
  1971         -
  1972         -    if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$" < "${ofile}" > /dev/null
  1973         -    then
  1974         -      AC_MSG_ERROR([tag name \"$tagname\" already exists])
  1975         -    fi
  1976         -
  1977         -    # Update the list of available tags.
  1978         -    if test -n "$tagname"; then
  1979         -      echo appending configuration tag \"$tagname\" to $ofile
  1980         -
  1981         -      case $tagname in
  1982         -      CXX)
  1983         -	if test -n "$CXX" && ( test "X$CXX" != "Xno" &&
  1984         -	    ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) ||
  1985         -	    (test "X$CXX" != "Xg++"))) ; then
  1986         -	  AC_LIBTOOL_LANG_CXX_CONFIG
  1987         -	else
  1988         -	  tagname=""
  1989         -	fi
  1990         -	;;
  1991         -
  1992         -      F77)
  1993         -	if test -n "$F77" && test "X$F77" != "Xno"; then
  1994         -	  AC_LIBTOOL_LANG_F77_CONFIG
  1995         -	else
  1996         -	  tagname=""
  1997         -	fi
  1998         -	;;
  1999         -
  2000         -      GCJ)
  2001         -	if test -n "$GCJ" && test "X$GCJ" != "Xno"; then
  2002         -	  AC_LIBTOOL_LANG_GCJ_CONFIG
  2003         -	else
  2004         -	  tagname=""
  2005         -	fi
  2006         -	;;
  2007         -
  2008         -      RC)
  2009         -	AC_LIBTOOL_LANG_RC_CONFIG
  2010         -	;;
  2011         -
  2012         -      *)
  2013         -	AC_MSG_ERROR([Unsupported tag name: $tagname])
  2014         -	;;
  2015         -      esac
  2016         -
  2017         -      # Append the new tag name to the list of available tags.
  2018         -      if test -n "$tagname" ; then
  2019         -      available_tags="$available_tags $tagname"
  2020         -    fi
  2021         -    fi
  2022         -  done
  2023         -  IFS="$lt_save_ifs"
  2024         -
  2025         -  # Now substitute the updated list of available tags.
  2026         -  if eval "sed -e 's/^available_tags=.*\$/available_tags=\"$available_tags\"/' \"$ofile\" > \"${ofile}T\""; then
  2027         -    mv "${ofile}T" "$ofile"
  2028         -    chmod +x "$ofile"
  2029         -  else
  2030         -    rm -f "${ofile}T"
  2031         -    AC_MSG_ERROR([unable to update list of available tagged configurations.])
  2032         -  fi
  2033         -fi
  2034         -])# _LT_AC_TAGCONFIG
  2035         -
  2036         -
  2037         -# AC_LIBTOOL_DLOPEN
  2038         -# -----------------
  2039         -# enable checks for dlopen support
  2040         -AC_DEFUN([AC_LIBTOOL_DLOPEN],
  2041         - [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])
  2042         -])# AC_LIBTOOL_DLOPEN
  2043         -
  2044         -
  2045         -# AC_LIBTOOL_WIN32_DLL
  2046         -# --------------------
  2047         -# declare package support for building win32 DLLs
  2048         -AC_DEFUN([AC_LIBTOOL_WIN32_DLL],
  2049         -[AC_BEFORE([$0], [AC_LIBTOOL_SETUP])
  2050         -])# AC_LIBTOOL_WIN32_DLL
  2051         -
  2052         -
  2053         -# AC_ENABLE_SHARED([DEFAULT])
  2054         -# ---------------------------
  2055         -# implement the --enable-shared flag
  2056         -# DEFAULT is either `yes' or `no'.  If omitted, it defaults to `yes'.
  2057         -AC_DEFUN([AC_ENABLE_SHARED],
  2058         -[define([AC_ENABLE_SHARED_DEFAULT], ifelse($1, no, no, yes))dnl
  2059         -AC_ARG_ENABLE([shared],
  2060         -    [AC_HELP_STRING([--enable-shared@<:@=PKGS@:>@],
  2061         -	[build shared libraries @<:@default=]AC_ENABLE_SHARED_DEFAULT[@:>@])],
  2062         -    [p=${PACKAGE-default}
  2063         -    case $enableval in
  2064         -    yes) enable_shared=yes ;;
  2065         -    no) enable_shared=no ;;
  2066         -    *)
  2067         -      enable_shared=no
  2068         -      # Look at the argument we got.  We use all the common list separators.
  2069         -      lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
  2070         -      for pkg in $enableval; do
  2071         -	IFS="$lt_save_ifs"
  2072         -	if test "X$pkg" = "X$p"; then
  2073         -	  enable_shared=yes
  2074         -	fi
  2075         -      done
  2076         -      IFS="$lt_save_ifs"
  2077         -      ;;
  2078         -    esac],
  2079         -    [enable_shared=]AC_ENABLE_SHARED_DEFAULT)
  2080         -])# AC_ENABLE_SHARED
  2081         -
  2082         -
  2083         -# AC_DISABLE_SHARED
  2084         -# -----------------
  2085         -# set the default shared flag to --disable-shared
  2086         -AC_DEFUN([AC_DISABLE_SHARED],
  2087         -[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
  2088         -AC_ENABLE_SHARED(no)
  2089         -])# AC_DISABLE_SHARED
  2090         -
  2091         -
  2092         -# AC_ENABLE_STATIC([DEFAULT])
  2093         -# ---------------------------
  2094         -# implement the --enable-static flag
  2095         -# DEFAULT is either `yes' or `no'.  If omitted, it defaults to `yes'.
  2096         -AC_DEFUN([AC_ENABLE_STATIC],
  2097         -[define([AC_ENABLE_STATIC_DEFAULT], ifelse($1, no, no, yes))dnl
  2098         -AC_ARG_ENABLE([static],
  2099         -    [AC_HELP_STRING([--enable-static@<:@=PKGS@:>@],
  2100         -	[build static libraries @<:@default=]AC_ENABLE_STATIC_DEFAULT[@:>@])],
  2101         -    [p=${PACKAGE-default}
  2102         -    case $enableval in
  2103         -    yes) enable_static=yes ;;
  2104         -    no) enable_static=no ;;
  2105         -    *)
  2106         -     enable_static=no
  2107         -      # Look at the argument we got.  We use all the common list separators.
  2108         -      lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
  2109         -      for pkg in $enableval; do
  2110         -	IFS="$lt_save_ifs"
  2111         -	if test "X$pkg" = "X$p"; then
  2112         -	  enable_static=yes
  2113         -	fi
  2114         -      done
  2115         -      IFS="$lt_save_ifs"
  2116         -      ;;
  2117         -    esac],
  2118         -    [enable_static=]AC_ENABLE_STATIC_DEFAULT)
  2119         -])# AC_ENABLE_STATIC
  2120         -
  2121         -
  2122         -# AC_DISABLE_STATIC
  2123         -# -----------------
  2124         -# set the default static flag to --disable-static
  2125         -AC_DEFUN([AC_DISABLE_STATIC],
  2126         -[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
  2127         -AC_ENABLE_STATIC(no)
  2128         -])# AC_DISABLE_STATIC
  2129         -
  2130         -
  2131         -# AC_ENABLE_FAST_INSTALL([DEFAULT])
  2132         -# ---------------------------------
  2133         -# implement the --enable-fast-install flag
  2134         -# DEFAULT is either `yes' or `no'.  If omitted, it defaults to `yes'.
  2135         -AC_DEFUN([AC_ENABLE_FAST_INSTALL],
  2136         -[define([AC_ENABLE_FAST_INSTALL_DEFAULT], ifelse($1, no, no, yes))dnl
  2137         -AC_ARG_ENABLE([fast-install],
  2138         -    [AC_HELP_STRING([--enable-fast-install@<:@=PKGS@:>@],
  2139         -    [optimize for fast installation @<:@default=]AC_ENABLE_FAST_INSTALL_DEFAULT[@:>@])],
  2140         -    [p=${PACKAGE-default}
  2141         -    case $enableval in
  2142         -    yes) enable_fast_install=yes ;;
  2143         -    no) enable_fast_install=no ;;
  2144         -    *)
  2145         -      enable_fast_install=no
  2146         -      # Look at the argument we got.  We use all the common list separators.
  2147         -      lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
  2148         -      for pkg in $enableval; do
  2149         -	IFS="$lt_save_ifs"
  2150         -	if test "X$pkg" = "X$p"; then
  2151         -	  enable_fast_install=yes
  2152         -	fi
  2153         -      done
  2154         -      IFS="$lt_save_ifs"
  2155         -      ;;
  2156         -    esac],
  2157         -    [enable_fast_install=]AC_ENABLE_FAST_INSTALL_DEFAULT)
  2158         -])# AC_ENABLE_FAST_INSTALL
  2159         -
  2160         -
  2161         -# AC_DISABLE_FAST_INSTALL
  2162         -# -----------------------
  2163         -# set the default to --disable-fast-install
  2164         -AC_DEFUN([AC_DISABLE_FAST_INSTALL],
  2165         -[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
  2166         -AC_ENABLE_FAST_INSTALL(no)
  2167         -])# AC_DISABLE_FAST_INSTALL
  2168         -
  2169         -
  2170         -# AC_LIBTOOL_PICMODE([MODE])
  2171         -# --------------------------
  2172         -# implement the --with-pic flag
  2173         -# MODE is either `yes' or `no'.  If omitted, it defaults to `both'.
  2174         -AC_DEFUN([AC_LIBTOOL_PICMODE],
  2175         -[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
  2176         -pic_mode=ifelse($#,1,$1,default)
  2177         -])# AC_LIBTOOL_PICMODE
  2178         -
  2179         -
  2180         -# AC_PROG_EGREP
  2181         -# -------------
  2182         -# This is predefined starting with Autoconf 2.54, so this conditional
  2183         -# definition can be removed once we require Autoconf 2.54 or later.
  2184         -m4_ifndef([AC_PROG_EGREP], [AC_DEFUN([AC_PROG_EGREP],
  2185         -[AC_CACHE_CHECK([for egrep], [ac_cv_prog_egrep],
  2186         -   [if echo a | (grep -E '(a|b)') >/dev/null 2>&1
  2187         -    then ac_cv_prog_egrep='grep -E'
  2188         -    else ac_cv_prog_egrep='egrep'
  2189         -    fi])
  2190         - EGREP=$ac_cv_prog_egrep
  2191         - AC_SUBST([EGREP])
  2192         -])])
  2193         -
  2194         -
  2195         -# AC_PATH_TOOL_PREFIX
  2196         -# -------------------
  2197         -# find a file program which can recognize shared library
  2198         -AC_DEFUN([AC_PATH_TOOL_PREFIX],
  2199         -[AC_REQUIRE([AC_PROG_EGREP])dnl
  2200         -AC_MSG_CHECKING([for $1])
  2201         -AC_CACHE_VAL(lt_cv_path_MAGIC_CMD,
  2202         -[case $MAGIC_CMD in
  2203         -[[\\/*] |  ?:[\\/]*])
  2204         -  lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path.
  2205         -  ;;
  2206         -*)
  2207         -  lt_save_MAGIC_CMD="$MAGIC_CMD"
  2208         -  lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
  2209         -dnl $ac_dummy forces splitting on constant user-supplied paths.
  2210         -dnl POSIX.2 word splitting is done only on the output of word expansions,
  2211         -dnl not every word.  This closes a longstanding sh security hole.
  2212         -  ac_dummy="ifelse([$2], , $PATH, [$2])"
  2213         -  for ac_dir in $ac_dummy; do
  2214         -    IFS="$lt_save_ifs"
  2215         -    test -z "$ac_dir" && ac_dir=.
  2216         -    if test -f $ac_dir/$1; then
  2217         -      lt_cv_path_MAGIC_CMD="$ac_dir/$1"
  2218         -      if test -n "$file_magic_test_file"; then
  2219         -	case $deplibs_check_method in
  2220         -	"file_magic "*)
  2221         -	  file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"`
  2222         -	  MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
  2223         -	  if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null |
  2224         -	    $EGREP "$file_magic_regex" > /dev/null; then
  2225         -	    :
  2226         -	  else
  2227         -	    cat <<EOF 1>&2
  2228         -
  2229         -*** Warning: the command libtool uses to detect shared libraries,
  2230         -*** $file_magic_cmd, produces output that libtool cannot recognize.
  2231         -*** The result is that libtool may fail to recognize shared libraries
  2232         -*** as such.  This will affect the creation of libtool libraries that
  2233         -*** depend on shared libraries, but programs linked with such libtool
  2234         -*** libraries will work regardless of this problem.  Nevertheless, you
  2235         -*** may want to report the problem to your system manager and/or to
  2236         -*** bug-libtool@gnu.org
  2237         -
  2238         -EOF
  2239         -	  fi ;;
  2240         -	esac
  2241         -      fi
  2242         -      break
  2243         -    fi
  2244         -  done
  2245         -  IFS="$lt_save_ifs"
  2246         -  MAGIC_CMD="$lt_save_MAGIC_CMD"
  2247         -  ;;
  2248         -esac])
  2249         -MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
  2250         -if test -n "$MAGIC_CMD"; then
  2251         -  AC_MSG_RESULT($MAGIC_CMD)
  2252         -else
  2253         -  AC_MSG_RESULT(no)
  2254         -fi
  2255         -])# AC_PATH_TOOL_PREFIX
  2256         -
  2257         -
  2258         -# AC_PATH_MAGIC
  2259         -# -------------
  2260         -# find a file program which can recognize a shared library
  2261         -AC_DEFUN([AC_PATH_MAGIC],
  2262         -[AC_PATH_TOOL_PREFIX(${ac_tool_prefix}file, /usr/bin$PATH_SEPARATOR$PATH)
  2263         -if test -z "$lt_cv_path_MAGIC_CMD"; then
  2264         -  if test -n "$ac_tool_prefix"; then
  2265         -    AC_PATH_TOOL_PREFIX(file, /usr/bin$PATH_SEPARATOR$PATH)
  2266         -  else
  2267         -    MAGIC_CMD=:
  2268         -  fi
  2269         -fi
  2270         -])# AC_PATH_MAGIC
  2271         -
  2272         -
  2273         -# AC_PROG_LD
  2274         -# ----------
  2275         -# find the pathname to the GNU or non-GNU linker
  2276         -AC_DEFUN([AC_PROG_LD],
  2277         -[AC_ARG_WITH([gnu-ld],
  2278         -    [AC_HELP_STRING([--with-gnu-ld],
  2279         -	[assume the C compiler uses GNU ld @<:@default=no@:>@])],
  2280         -    [test "$withval" = no || with_gnu_ld=yes],
  2281         -    [with_gnu_ld=no])
  2282         -AC_REQUIRE([LT_AC_PROG_SED])dnl
  2283         -AC_REQUIRE([AC_PROG_CC])dnl
  2284         -AC_REQUIRE([AC_CANONICAL_HOST])dnl
  2285         -AC_REQUIRE([AC_CANONICAL_BUILD])dnl
  2286         -ac_prog=ld
  2287         -if test "$GCC" = yes; then
  2288         -  # Check if gcc -print-prog-name=ld gives a path.
  2289         -  AC_MSG_CHECKING([for ld used by $CC])
  2290         -  case $host in
  2291         -  *-*-mingw*)
  2292         -    # gcc leaves a trailing carriage return which upsets mingw
  2293         -    ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;;
  2294         -  *)
  2295         -    ac_prog=`($CC -print-prog-name=ld) 2>&5` ;;
  2296         -  esac
  2297         -  case $ac_prog in
  2298         -    # Accept absolute paths.
  2299         -    [[\\/]]* | ?:[[\\/]]*)
  2300         -      re_direlt='/[[^/]][[^/]]*/\.\./'
  2301         -      # Canonicalize the pathname of ld
  2302         -      ac_prog=`echo $ac_prog| $SED 's%\\\\%/%g'`
  2303         -      while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do
  2304         -	ac_prog=`echo $ac_prog| $SED "s%$re_direlt%/%"`
  2305         -      done
  2306         -      test -z "$LD" && LD="$ac_prog"
  2307         -      ;;
  2308         -  "")
  2309         -    # If it fails, then pretend we aren't using GCC.
  2310         -    ac_prog=ld
  2311         -    ;;
  2312         -  *)
  2313         -    # If it is relative, then search for the first ld in PATH.
  2314         -    with_gnu_ld=unknown
  2315         -    ;;
  2316         -  esac
  2317         -elif test "$with_gnu_ld" = yes; then
  2318         -  AC_MSG_CHECKING([for GNU ld])
  2319         -else
  2320         -  AC_MSG_CHECKING([for non-GNU ld])
  2321         -fi
  2322         -AC_CACHE_VAL(lt_cv_path_LD,
  2323         -[if test -z "$LD"; then
  2324         -  lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
  2325         -  for ac_dir in $PATH; do
  2326         -    IFS="$lt_save_ifs"
  2327         -    test -z "$ac_dir" && ac_dir=.
  2328         -    if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
  2329         -      lt_cv_path_LD="$ac_dir/$ac_prog"
  2330         -      # Check to see if the program is GNU ld.  I'd rather use --version,
  2331         -      # but apparently some variants of GNU ld only accept -v.
  2332         -      # Break only if it was the GNU/non-GNU ld that we prefer.
  2333         -      case `"$lt_cv_path_LD" -v 2>&1 </dev/null` in
  2334         -      *GNU* | *'with BFD'*)
  2335         -	test "$with_gnu_ld" != no && break
  2336         -	;;
  2337         -      *)
  2338         -	test "$with_gnu_ld" != yes && break
  2339         -	;;
  2340         -      esac
  2341         -    fi
  2342         -  done
  2343         -  IFS="$lt_save_ifs"
  2344         -else
  2345         -  lt_cv_path_LD="$LD" # Let the user override the test with a path.
  2346         -fi])
  2347         -LD="$lt_cv_path_LD"
  2348         -if test -n "$LD"; then
  2349         -  AC_MSG_RESULT($LD)
  2350         -else
  2351         -  AC_MSG_RESULT(no)
  2352         -fi
  2353         -test -z "$LD" && AC_MSG_ERROR([no acceptable ld found in \$PATH])
  2354         -AC_PROG_LD_GNU
  2355         -])# AC_PROG_LD
  2356         -
  2357         -
  2358         -# AC_PROG_LD_GNU
  2359         -# --------------
  2360         -AC_DEFUN([AC_PROG_LD_GNU],
  2361         -[AC_REQUIRE([AC_PROG_EGREP])dnl
  2362         -AC_CACHE_CHECK([if the linker ($LD) is GNU ld], lt_cv_prog_gnu_ld,
  2363         -[# I'd rather use --version here, but apparently some GNU lds only accept -v.
  2364         -case `$LD -v 2>&1 </dev/null` in
  2365         -*GNU* | *'with BFD'*)
  2366         -  lt_cv_prog_gnu_ld=yes
  2367         -  ;;
  2368         -*)
  2369         -  lt_cv_prog_gnu_ld=no
  2370         -  ;;
  2371         -esac])
  2372         -with_gnu_ld=$lt_cv_prog_gnu_ld
  2373         -])# AC_PROG_LD_GNU
  2374         -
  2375         -
  2376         -# AC_PROG_LD_RELOAD_FLAG
  2377         -# ----------------------
  2378         -# find reload flag for linker
  2379         -#   -- PORTME Some linkers may need a different reload flag.
  2380         -AC_DEFUN([AC_PROG_LD_RELOAD_FLAG],
  2381         -[AC_CACHE_CHECK([for $LD option to reload object files],
  2382         -  lt_cv_ld_reload_flag,
  2383         -  [lt_cv_ld_reload_flag='-r'])
  2384         -reload_flag=$lt_cv_ld_reload_flag
  2385         -case $reload_flag in
  2386         -"" | " "*) ;;
  2387         -*) reload_flag=" $reload_flag" ;;
  2388         -esac
  2389         -reload_cmds='$LD$reload_flag -o $output$reload_objs'
  2390         -case $host_os in
  2391         -  darwin*)
  2392         -    if test "$GCC" = yes; then
  2393         -      reload_cmds='$LTCC $LTCFLAGS -nostdlib ${wl}-r -o $output$reload_objs'
  2394         -    else
  2395         -      reload_cmds='$LD$reload_flag -o $output$reload_objs'
  2396         -    fi
  2397         -    ;;
  2398         -esac
  2399         -])# AC_PROG_LD_RELOAD_FLAG
  2400         -
  2401         -
  2402         -# AC_DEPLIBS_CHECK_METHOD
  2403         -# -----------------------
  2404         -# how to check for library dependencies
  2405         -#  -- PORTME fill in with the dynamic library characteristics
  2406         -AC_DEFUN([AC_DEPLIBS_CHECK_METHOD],
  2407         -[AC_CACHE_CHECK([how to recognize dependent libraries],
  2408         -lt_cv_deplibs_check_method,
  2409         -[lt_cv_file_magic_cmd='$MAGIC_CMD'
  2410         -lt_cv_file_magic_test_file=
  2411         -lt_cv_deplibs_check_method='unknown'
  2412         -# Need to set the preceding variable on all platforms that support
  2413         -# interlibrary dependencies.
  2414         -# 'none' -- dependencies not supported.
  2415         -# `unknown' -- same as none, but documents that we really don't know.
  2416         -# 'pass_all' -- all dependencies passed with no checks.
  2417         -# 'test_compile' -- check by making test program.
  2418         -# 'file_magic [[regex]]' -- check by looking for files in library path
  2419         -# which responds to the $file_magic_cmd with a given extended regex.
  2420         -# If you have `file' or equivalent on your system and you're not sure
  2421         -# whether `pass_all' will *always* work, you probably want this one.
  2422         -
  2423         -case $host_os in
  2424         -aix[[4-9]]*)
  2425         -  lt_cv_deplibs_check_method=pass_all
  2426         -  ;;
  2427         -
  2428         -beos*)
  2429         -  lt_cv_deplibs_check_method=pass_all
  2430         -  ;;
  2431         -
  2432         -bsdi[[45]]*)
  2433         -  lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib)'
  2434         -  lt_cv_file_magic_cmd='/usr/bin/file -L'
  2435         -  lt_cv_file_magic_test_file=/shlib/libc.so
  2436         -  ;;
  2437         -
  2438         -cygwin*)
  2439         -  # func_win32_libid is a shell function defined in ltmain.sh
  2440         -  lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL'
  2441         -  lt_cv_file_magic_cmd='func_win32_libid'
  2442         -  ;;
  2443         -
  2444         -mingw* | pw32*)
  2445         -  # Base MSYS/MinGW do not provide the 'file' command needed by
  2446         -  # func_win32_libid shell function, so use a weaker test based on 'objdump',
  2447         -  # unless we find 'file', for example because we are cross-compiling.
  2448         -  if ( file / ) >/dev/null 2>&1; then
  2449         -    lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL'
  2450         -    lt_cv_file_magic_cmd='func_win32_libid'
  2451         -  else
  2452         -    lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?'
  2453         -    lt_cv_file_magic_cmd='$OBJDUMP -f'
  2454         -  fi
  2455         -  ;;
  2456         -
  2457         -darwin* | rhapsody*)
  2458         -  lt_cv_deplibs_check_method=pass_all
  2459         -  ;;
  2460         -
  2461         -freebsd* | dragonfly*)
  2462         -  if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
  2463         -    case $host_cpu in
  2464         -    i*86 )
  2465         -      # Not sure whether the presence of OpenBSD here was a mistake.
  2466         -      # Let's accept both of them until this is cleared up.
  2467         -      lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[[3-9]]86 (compact )?demand paged shared library'
  2468         -      lt_cv_file_magic_cmd=/usr/bin/file
  2469         -      lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*`
  2470         -      ;;
  2471         -    esac
  2472         -  else
  2473         -    lt_cv_deplibs_check_method=pass_all
  2474         -  fi
  2475         -  ;;
  2476         -
  2477         -gnu*)
  2478         -  lt_cv_deplibs_check_method=pass_all
  2479         -  ;;
  2480         -
  2481         -hpux10.20* | hpux11*)
  2482         -  lt_cv_file_magic_cmd=/usr/bin/file
  2483         -  case $host_cpu in
  2484         -  ia64*)
  2485         -    lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|ELF-[[0-9]][[0-9]]) shared object file - IA64'
  2486         -    lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so
  2487         -    ;;
  2488         -  hppa*64*)
  2489         -    [lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - PA-RISC [0-9].[0-9]']
  2490         -    lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl
  2491         -    ;;
  2492         -  *)
  2493         -    lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|PA-RISC[[0-9]].[[0-9]]) shared library'
  2494         -    lt_cv_file_magic_test_file=/usr/lib/libc.sl
  2495         -    ;;
  2496         -  esac
  2497         -  ;;
  2498         -
  2499         -interix[[3-9]]*)
  2500         -  # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here
  2501         -  lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|\.a)$'
  2502         -  ;;
  2503         -
  2504         -irix5* | irix6* | nonstopux*)
  2505         -  case $LD in
  2506         -  *-32|*"-32 ") libmagic=32-bit;;
  2507         -  *-n32|*"-n32 ") libmagic=N32;;
  2508         -  *-64|*"-64 ") libmagic=64-bit;;
  2509         -  *) libmagic=never-match;;
  2510         -  esac
  2511         -  lt_cv_deplibs_check_method=pass_all
  2512         -  ;;
  2513         -
  2514         -# This must be Linux ELF.
  2515         -linux* | k*bsd*-gnu)
  2516         -  lt_cv_deplibs_check_method=pass_all
  2517         -  ;;
  2518         -
  2519         -netbsd* | netbsdelf*-gnu)
  2520         -  if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
  2521         -    lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$'
  2522         -  else
  2523         -    lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|_pic\.a)$'
  2524         -  fi
  2525         -  ;;
  2526         -
  2527         -newos6*)
  2528         -  lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (executable|dynamic lib)'
  2529         -  lt_cv_file_magic_cmd=/usr/bin/file
  2530         -  lt_cv_file_magic_test_file=/usr/lib/libnls.so
  2531         -  ;;
  2532         -
  2533         -nto-qnx*)
  2534         -  lt_cv_deplibs_check_method=unknown
  2535         -  ;;
  2536         -
  2537         -openbsd*)
  2538         -  if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
  2539         -    lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|\.so|_pic\.a)$'
  2540         -  else
  2541         -    lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$'
  2542         -  fi
  2543         -  ;;
  2544         -
  2545         -osf3* | osf4* | osf5*)
  2546         -  lt_cv_deplibs_check_method=pass_all
  2547         -  ;;
  2548         -
  2549         -rdos*)
  2550         -  lt_cv_deplibs_check_method=pass_all
  2551         -  ;;
  2552         -
  2553         -solaris*)
  2554         -  lt_cv_deplibs_check_method=pass_all
  2555         -  ;;
  2556         -
  2557         -sysv4 | sysv4.3*)
  2558         -  case $host_vendor in
  2559         -  motorola)
  2560         -    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]]'
  2561         -    lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*`
  2562         -    ;;
  2563         -  ncr)
  2564         -    lt_cv_deplibs_check_method=pass_all
  2565         -    ;;
  2566         -  sequent)
  2567         -    lt_cv_file_magic_cmd='/bin/file'
  2568         -    lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB (shared object|dynamic lib )'
  2569         -    ;;
  2570         -  sni)
  2571         -    lt_cv_file_magic_cmd='/bin/file'
  2572         -    lt_cv_deplibs_check_method="file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB dynamic lib"
  2573         -    lt_cv_file_magic_test_file=/lib/libc.so
  2574         -    ;;
  2575         -  siemens)
  2576         -    lt_cv_deplibs_check_method=pass_all
  2577         -    ;;
  2578         -  pc)
  2579         -    lt_cv_deplibs_check_method=pass_all
  2580         -    ;;
  2581         -  esac
  2582         -  ;;
  2583         -
  2584         -sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
  2585         -  lt_cv_deplibs_check_method=pass_all
  2586         -  ;;
  2587         -esac
  2588         -])
  2589         -file_magic_cmd=$lt_cv_file_magic_cmd
  2590         -deplibs_check_method=$lt_cv_deplibs_check_method
  2591         -test -z "$deplibs_check_method" && deplibs_check_method=unknown
  2592         -])# AC_DEPLIBS_CHECK_METHOD
  2593         -
  2594         -
  2595         -# AC_PROG_NM
  2596         -# ----------
  2597         -# find the pathname to a BSD-compatible name lister
  2598         -AC_DEFUN([AC_PROG_NM],
  2599         -[AC_CACHE_CHECK([for BSD-compatible nm], lt_cv_path_NM,
  2600         -[if test -n "$NM"; then
  2601         -  # Let the user override the test.
  2602         -  lt_cv_path_NM="$NM"
  2603         -else
  2604         -  lt_nm_to_check="${ac_tool_prefix}nm"
  2605         -  if test -n "$ac_tool_prefix" && test "$build" = "$host"; then
  2606         -    lt_nm_to_check="$lt_nm_to_check nm"
  2607         -  fi
  2608         -  for lt_tmp_nm in $lt_nm_to_check; do
  2609         -    lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
  2610         -    for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do
  2611         -      IFS="$lt_save_ifs"
  2612         -      test -z "$ac_dir" && ac_dir=.
  2613         -      tmp_nm="$ac_dir/$lt_tmp_nm"
  2614         -      if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then
  2615         -	# Check to see if the nm accepts a BSD-compat flag.
  2616         -	# Adding the `sed 1q' prevents false positives on HP-UX, which says:
  2617         -	#   nm: unknown option "B" ignored
  2618         -	# Tru64's nm complains that /dev/null is an invalid object file
  2619         -	case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in
  2620         -	*/dev/null* | *'Invalid file or object type'*)
  2621         -	  lt_cv_path_NM="$tmp_nm -B"
  2622         -	  break
  2623         -	  ;;
  2624         -	*)
  2625         -	  case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in
  2626         -	  */dev/null*)
  2627         -	    lt_cv_path_NM="$tmp_nm -p"
  2628         -	    break
  2629         -	    ;;
  2630         -	  *)
  2631         -	    lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but
  2632         -	    continue # so that we can try to find one that supports BSD flags
  2633         -	    ;;
  2634         -	  esac
  2635         -	  ;;
  2636         -	esac
  2637         -      fi
  2638         -    done
  2639         -    IFS="$lt_save_ifs"
  2640         -  done
  2641         -  test -z "$lt_cv_path_NM" && lt_cv_path_NM=nm
  2642         -fi])
  2643         -NM="$lt_cv_path_NM"
  2644         -])# AC_PROG_NM
  2645         -
  2646         -
  2647         -# AC_CHECK_LIBM
  2648         -# -------------
  2649         -# check for math library
  2650         -AC_DEFUN([AC_CHECK_LIBM],
  2651         -[AC_REQUIRE([AC_CANONICAL_HOST])dnl
  2652         -LIBM=
  2653         -case $host in
  2654         -*-*-beos* | *-*-cygwin* | *-*-pw32* | *-*-darwin*)
  2655         -  # These system don't have libm, or don't need it
  2656         -  ;;
  2657         -*-ncr-sysv4.3*)
  2658         -  AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM="-lmw")
  2659         -  AC_CHECK_LIB(m, cos, LIBM="$LIBM -lm")
  2660         -  ;;
  2661         -*)
  2662         -  AC_CHECK_LIB(m, cos, LIBM="-lm")
  2663         -  ;;
  2664         -esac
  2665         -])# AC_CHECK_LIBM
  2666         -
  2667         -
  2668         -# AC_LIBLTDL_CONVENIENCE([DIRECTORY])
  2669         -# -----------------------------------
  2670         -# sets LIBLTDL to the link flags for the libltdl convenience library and
  2671         -# LTDLINCL to the include flags for the libltdl header and adds
  2672         -# --enable-ltdl-convenience to the configure arguments.  Note that
  2673         -# AC_CONFIG_SUBDIRS is not called here.  If DIRECTORY is not provided,
  2674         -# it is assumed to be `libltdl'.  LIBLTDL will be prefixed with
  2675         -# '${top_builddir}/' and LTDLINCL will be prefixed with '${top_srcdir}/'
  2676         -# (note the single quotes!).  If your package is not flat and you're not
  2677         -# using automake, define top_builddir and top_srcdir appropriately in
  2678         -# the Makefiles.
  2679         -AC_DEFUN([AC_LIBLTDL_CONVENIENCE],
  2680         -[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
  2681         -  case $enable_ltdl_convenience in
  2682         -  no) AC_MSG_ERROR([this package needs a convenience libltdl]) ;;
  2683         -  "") enable_ltdl_convenience=yes
  2684         -      ac_configure_args="$ac_configure_args --enable-ltdl-convenience" ;;
  2685         -  esac
  2686         -  LIBLTDL='${top_builddir}/'ifelse($#,1,[$1],['libltdl'])/libltdlc.la
  2687         -  LTDLINCL='-I${top_srcdir}/'ifelse($#,1,[$1],['libltdl'])
  2688         -  # For backwards non-gettext consistent compatibility...
  2689         -  INCLTDL="$LTDLINCL"
  2690         -])# AC_LIBLTDL_CONVENIENCE
  2691         -
  2692         -
  2693         -# AC_LIBLTDL_INSTALLABLE([DIRECTORY])
  2694         -# -----------------------------------
  2695         -# sets LIBLTDL to the link flags for the libltdl installable library and
  2696         -# LTDLINCL to the include flags for the libltdl header and adds
  2697         -# --enable-ltdl-install to the configure arguments.  Note that
  2698         -# AC_CONFIG_SUBDIRS is not called here.  If DIRECTORY is not provided,
  2699         -# and an installed libltdl is not found, it is assumed to be `libltdl'.
  2700         -# LIBLTDL will be prefixed with '${top_builddir}/'# and LTDLINCL with
  2701         -# '${top_srcdir}/' (note the single quotes!).  If your package is not
  2702         -# flat and you're not using automake, define top_builddir and top_srcdir
  2703         -# appropriately in the Makefiles.
  2704         -# In the future, this macro may have to be called after AC_PROG_LIBTOOL.
  2705         -AC_DEFUN([AC_LIBLTDL_INSTALLABLE],
  2706         -[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
  2707         -  AC_CHECK_LIB(ltdl, lt_dlinit,
  2708         -  [test x"$enable_ltdl_install" != xyes && enable_ltdl_install=no],
  2709         -  [if test x"$enable_ltdl_install" = xno; then
  2710         -     AC_MSG_WARN([libltdl not installed, but installation disabled])
  2711         -   else
  2712         -     enable_ltdl_install=yes
  2713         -   fi
  2714         -  ])
  2715         -  if test x"$enable_ltdl_install" = x"yes"; then
  2716         -    ac_configure_args="$ac_configure_args --enable-ltdl-install"
  2717         -    LIBLTDL='${top_builddir}/'ifelse($#,1,[$1],['libltdl'])/libltdl.la
  2718         -    LTDLINCL='-I${top_srcdir}/'ifelse($#,1,[$1],['libltdl'])
  2719         -  else
  2720         -    ac_configure_args="$ac_configure_args --enable-ltdl-install=no"
  2721         -    LIBLTDL="-lltdl"
  2722         -    LTDLINCL=
  2723         -  fi
  2724         -  # For backwards non-gettext consistent compatibility...
  2725         -  INCLTDL="$LTDLINCL"
  2726         -])# AC_LIBLTDL_INSTALLABLE
  2727         -
  2728         -
  2729         -# AC_LIBTOOL_CXX
  2730         -# --------------
  2731         -# enable support for C++ libraries
  2732         -AC_DEFUN([AC_LIBTOOL_CXX],
  2733         -[AC_REQUIRE([_LT_AC_LANG_CXX])
  2734         -])# AC_LIBTOOL_CXX
  2735         -
  2736         -
  2737         -# _LT_AC_LANG_CXX
  2738         -# ---------------
  2739         -AC_DEFUN([_LT_AC_LANG_CXX],
  2740         -[AC_REQUIRE([AC_PROG_CXX])
  2741         -AC_REQUIRE([_LT_AC_PROG_CXXCPP])
  2742         -_LT_AC_SHELL_INIT([tagnames=${tagnames+${tagnames},}CXX])
  2743         -])# _LT_AC_LANG_CXX
  2744         -
  2745         -# _LT_AC_PROG_CXXCPP
  2746         -# ------------------
  2747         -AC_DEFUN([_LT_AC_PROG_CXXCPP],
  2748         -[
  2749         -AC_REQUIRE([AC_PROG_CXX])
  2750         -if test -n "$CXX" && ( test "X$CXX" != "Xno" &&
  2751         -    ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) ||
  2752         -    (test "X$CXX" != "Xg++"))) ; then
  2753         -  AC_PROG_CXXCPP
  2754         -fi
  2755         -])# _LT_AC_PROG_CXXCPP
  2756         -
  2757         -# AC_LIBTOOL_F77
  2758         -# --------------
  2759         -# enable support for Fortran 77 libraries
  2760         -AC_DEFUN([AC_LIBTOOL_F77],
  2761         -[AC_REQUIRE([_LT_AC_LANG_F77])
  2762         -])# AC_LIBTOOL_F77
  2763         -
  2764         -
  2765         -# _LT_AC_LANG_F77
  2766         -# ---------------
  2767         -AC_DEFUN([_LT_AC_LANG_F77],
  2768         -[AC_REQUIRE([AC_PROG_F77])
  2769         -_LT_AC_SHELL_INIT([tagnames=${tagnames+${tagnames},}F77])
  2770         -])# _LT_AC_LANG_F77
  2771         -
  2772         -
  2773         -# AC_LIBTOOL_GCJ
  2774         -# --------------
  2775         -# enable support for GCJ libraries
  2776         -AC_DEFUN([AC_LIBTOOL_GCJ],
  2777         -[AC_REQUIRE([_LT_AC_LANG_GCJ])
  2778         -])# AC_LIBTOOL_GCJ
  2779         -
  2780         -
  2781         -# _LT_AC_LANG_GCJ
  2782         -# ---------------
  2783         -AC_DEFUN([_LT_AC_LANG_GCJ],
  2784         -[AC_PROVIDE_IFELSE([AC_PROG_GCJ],[],
  2785         -  [AC_PROVIDE_IFELSE([A][M_PROG_GCJ],[],
  2786         -    [AC_PROVIDE_IFELSE([LT_AC_PROG_GCJ],[],
  2787         -      [ifdef([AC_PROG_GCJ],[AC_REQUIRE([AC_PROG_GCJ])],
  2788         -	 [ifdef([A][M_PROG_GCJ],[AC_REQUIRE([A][M_PROG_GCJ])],
  2789         -	   [AC_REQUIRE([A][C_PROG_GCJ_OR_A][M_PROG_GCJ])])])])])])
  2790         -_LT_AC_SHELL_INIT([tagnames=${tagnames+${tagnames},}GCJ])
  2791         -])# _LT_AC_LANG_GCJ
  2792         -
  2793         -
  2794         -# AC_LIBTOOL_RC
  2795         -# -------------
  2796         -# enable support for Windows resource files
  2797         -AC_DEFUN([AC_LIBTOOL_RC],
  2798         -[AC_REQUIRE([LT_AC_PROG_RC])
  2799         -_LT_AC_SHELL_INIT([tagnames=${tagnames+${tagnames},}RC])
  2800         -])# AC_LIBTOOL_RC
  2801         -
  2802         -
  2803         -# AC_LIBTOOL_LANG_C_CONFIG
  2804         -# ------------------------
  2805         -# Ensure that the configuration vars for the C compiler are
  2806         -# suitably defined.  Those variables are subsequently used by
  2807         -# AC_LIBTOOL_CONFIG to write the compiler configuration to `libtool'.
  2808         -AC_DEFUN([AC_LIBTOOL_LANG_C_CONFIG], [_LT_AC_LANG_C_CONFIG])
  2809         -AC_DEFUN([_LT_AC_LANG_C_CONFIG],
  2810         -[lt_save_CC="$CC"
  2811         -AC_LANG_PUSH(C)
  2812         -
  2813         -# Source file extension for C test sources.
  2814         -ac_ext=c
  2815         -
  2816         -# Object file extension for compiled C test sources.
  2817         -objext=o
  2818         -_LT_AC_TAGVAR(objext, $1)=$objext
  2819         -
  2820         -# Code to be used in simple compile tests
  2821         -lt_simple_compile_test_code="int some_variable = 0;"
  2822         -
  2823         -# Code to be used in simple link tests
  2824         -lt_simple_link_test_code='int main(){return(0);}'
  2825         -
  2826         -_LT_AC_SYS_COMPILER
  2827         -
  2828         -# save warnings/boilerplate of simple test code
  2829         -_LT_COMPILER_BOILERPLATE
  2830         -_LT_LINKER_BOILERPLATE
  2831         -
  2832         -AC_LIBTOOL_PROG_COMPILER_NO_RTTI($1)
  2833         -AC_LIBTOOL_PROG_COMPILER_PIC($1)
  2834         -AC_LIBTOOL_PROG_CC_C_O($1)
  2835         -AC_LIBTOOL_SYS_HARD_LINK_LOCKS($1)
  2836         -AC_LIBTOOL_PROG_LD_SHLIBS($1)
  2837         -AC_LIBTOOL_SYS_DYNAMIC_LINKER($1)
  2838         -AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH($1)
  2839         -AC_LIBTOOL_SYS_LIB_STRIP
  2840         -AC_LIBTOOL_DLOPEN_SELF
  2841         -
  2842         -# Report which library types will actually be built
  2843         -AC_MSG_CHECKING([if libtool supports shared libraries])
  2844         -AC_MSG_RESULT([$can_build_shared])
  2845         -
  2846         -AC_MSG_CHECKING([whether to build shared libraries])
  2847         -test "$can_build_shared" = "no" && enable_shared=no
  2848         -
  2849         -# On AIX, shared libraries and static libraries use the same namespace, and
  2850         -# are all built from PIC.
  2851         -case $host_os in
  2852         -aix3*)
  2853         -  test "$enable_shared" = yes && enable_static=no
  2854         -  if test -n "$RANLIB"; then
  2855         -    archive_cmds="$archive_cmds~\$RANLIB \$lib"
  2856         -    postinstall_cmds='$RANLIB $lib'
  2857         -  fi
  2858         -  ;;
  2859         -
  2860         -aix[[4-9]]*)
  2861         -  if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then
  2862         -    test "$enable_shared" = yes && enable_static=no
  2863         -  fi
  2864         -    ;;
  2865         -esac
  2866         -AC_MSG_RESULT([$enable_shared])
  2867         -
  2868         -AC_MSG_CHECKING([whether to build static libraries])
  2869         -# Make sure either enable_shared or enable_static is yes.
  2870         -test "$enable_shared" = yes || enable_static=yes
  2871         -AC_MSG_RESULT([$enable_static])
  2872         -
  2873         -AC_LIBTOOL_CONFIG($1)
  2874         -
  2875         -AC_LANG_POP
  2876         -CC="$lt_save_CC"
  2877         -])# AC_LIBTOOL_LANG_C_CONFIG
  2878         -
  2879         -
  2880         -# AC_LIBTOOL_LANG_CXX_CONFIG
  2881         -# --------------------------
  2882         -# Ensure that the configuration vars for the C compiler are
  2883         -# suitably defined.  Those variables are subsequently used by
  2884         -# AC_LIBTOOL_CONFIG to write the compiler configuration to `libtool'.
  2885         -AC_DEFUN([AC_LIBTOOL_LANG_CXX_CONFIG], [_LT_AC_LANG_CXX_CONFIG(CXX)])
  2886         -AC_DEFUN([_LT_AC_LANG_CXX_CONFIG],
  2887         -[AC_LANG_PUSH(C++)
  2888         -AC_REQUIRE([AC_PROG_CXX])
  2889         -AC_REQUIRE([_LT_AC_PROG_CXXCPP])
  2890         -
  2891         -_LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
  2892         -_LT_AC_TAGVAR(allow_undefined_flag, $1)=
  2893         -_LT_AC_TAGVAR(always_export_symbols, $1)=no
  2894         -_LT_AC_TAGVAR(archive_expsym_cmds, $1)=
  2895         -_LT_AC_TAGVAR(export_dynamic_flag_spec, $1)=
  2896         -_LT_AC_TAGVAR(hardcode_direct, $1)=no
  2897         -_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)=
  2898         -_LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)=
  2899         -_LT_AC_TAGVAR(hardcode_libdir_separator, $1)=
  2900         -_LT_AC_TAGVAR(hardcode_minus_L, $1)=no
  2901         -_LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=unsupported
  2902         -_LT_AC_TAGVAR(hardcode_automatic, $1)=no
  2903         -_LT_AC_TAGVAR(module_cmds, $1)=
  2904         -_LT_AC_TAGVAR(module_expsym_cmds, $1)=
  2905         -_LT_AC_TAGVAR(link_all_deplibs, $1)=unknown
  2906         -_LT_AC_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds
  2907         -_LT_AC_TAGVAR(no_undefined_flag, $1)=
  2908         -_LT_AC_TAGVAR(whole_archive_flag_spec, $1)=
  2909         -_LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=no
  2910         -
  2911         -# Dependencies to place before and after the object being linked:
  2912         -_LT_AC_TAGVAR(predep_objects, $1)=
  2913         -_LT_AC_TAGVAR(postdep_objects, $1)=
  2914         -_LT_AC_TAGVAR(predeps, $1)=
  2915         -_LT_AC_TAGVAR(postdeps, $1)=
  2916         -_LT_AC_TAGVAR(compiler_lib_search_path, $1)=
  2917         -_LT_AC_TAGVAR(compiler_lib_search_dirs, $1)=
  2918         -
  2919         -# Source file extension for C++ test sources.
  2920         -ac_ext=cpp
  2921         -
  2922         -# Object file extension for compiled C++ test sources.
  2923         -objext=o
  2924         -_LT_AC_TAGVAR(objext, $1)=$objext
  2925         -
  2926         -# Code to be used in simple compile tests
  2927         -lt_simple_compile_test_code="int some_variable = 0;"
  2928         -
  2929         -# Code to be used in simple link tests
  2930         -lt_simple_link_test_code='int main(int, char *[[]]) { return(0); }'
  2931         -
  2932         -# ltmain only uses $CC for tagged configurations so make sure $CC is set.
  2933         -_LT_AC_SYS_COMPILER
  2934         -
  2935         -# save warnings/boilerplate of simple test code
  2936         -_LT_COMPILER_BOILERPLATE
  2937         -_LT_LINKER_BOILERPLATE
  2938         -
  2939         -# Allow CC to be a program name with arguments.
  2940         -lt_save_CC=$CC
  2941         -lt_save_LD=$LD
  2942         -lt_save_GCC=$GCC
  2943         -GCC=$GXX
  2944         -lt_save_with_gnu_ld=$with_gnu_ld
  2945         -lt_save_path_LD=$lt_cv_path_LD
  2946         -if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then
  2947         -  lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx
  2948         -else
  2949         -  $as_unset lt_cv_prog_gnu_ld
  2950         -fi
  2951         -if test -n "${lt_cv_path_LDCXX+set}"; then
  2952         -  lt_cv_path_LD=$lt_cv_path_LDCXX
  2953         -else
  2954         -  $as_unset lt_cv_path_LD
  2955         -fi
  2956         -test -z "${LDCXX+set}" || LD=$LDCXX
  2957         -CC=${CXX-"c++"}
  2958         -compiler=$CC
  2959         -_LT_AC_TAGVAR(compiler, $1)=$CC
  2960         -_LT_CC_BASENAME([$compiler])
  2961         -
  2962         -# We don't want -fno-exception wen compiling C++ code, so set the
  2963         -# no_builtin_flag separately
  2964         -if test "$GXX" = yes; then
  2965         -  _LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin'
  2966         -else
  2967         -  _LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=
  2968         -fi
  2969         -
  2970         -if test "$GXX" = yes; then
  2971         -  # Set up default GNU C++ configuration
  2972         -
  2973         -  AC_PROG_LD
  2974         -
  2975         -  # Check if GNU C++ uses GNU ld as the underlying linker, since the
  2976         -  # archiving commands below assume that GNU ld is being used.
  2977         -  if test "$with_gnu_ld" = yes; then
  2978         -    _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
  2979         -    _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
  2980         -
  2981         -    _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir'
  2982         -    _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
  2983         -
  2984         -    # If archive_cmds runs LD, not CC, wlarc should be empty
  2985         -    # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to
  2986         -    #     investigate it a little bit more. (MM)
  2987         -    wlarc='${wl}'
  2988         -
  2989         -    # ancient GNU ld didn't support --whole-archive et. al.
  2990         -    if eval "`$CC -print-prog-name=ld` --help 2>&1" | \
  2991         -	grep 'no-whole-archive' > /dev/null; then
  2992         -      _LT_AC_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
  2993         -    else
  2994         -      _LT_AC_TAGVAR(whole_archive_flag_spec, $1)=
  2995         -    fi
  2996         -  else
  2997         -    with_gnu_ld=no
  2998         -    wlarc=
  2999         -
  3000         -    # A generic and very simple default shared library creation
  3001         -    # command for GNU C++ for the case where it uses the native
  3002         -    # linker, instead of GNU ld.  If possible, this setting should
  3003         -    # overridden to take advantage of the native linker features on
  3004         -    # the platform it is being used on.
  3005         -    _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib'
  3006         -  fi
  3007         -
  3008         -  # Commands to make compiler produce verbose output that lists
  3009         -  # what "hidden" libraries, object files and flags are used when
  3010         -  # linking a shared library.
  3011         -  output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"'
  3012         -
  3013         -else
  3014         -  GXX=no
  3015         -  with_gnu_ld=no
  3016         -  wlarc=
  3017         -fi
  3018         -
  3019         -# PORTME: fill in a description of your system's C++ link characteristics
  3020         -AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries])
  3021         -_LT_AC_TAGVAR(ld_shlibs, $1)=yes
  3022         -case $host_os in
  3023         -  aix3*)
  3024         -    # FIXME: insert proper C++ library support
  3025         -    _LT_AC_TAGVAR(ld_shlibs, $1)=no
  3026         -    ;;
  3027         -  aix[[4-9]]*)
  3028         -    if test "$host_cpu" = ia64; then
  3029         -      # On IA64, the linker does run time linking by default, so we don't
  3030         -      # have to do anything special.
  3031         -      aix_use_runtimelinking=no
  3032         -      exp_sym_flag='-Bexport'
  3033         -      no_entry_flag=""
  3034         -    else
  3035         -      aix_use_runtimelinking=no
  3036         -
  3037         -      # Test if we are trying to use run time linking or normal
  3038         -      # AIX style linking. If -brtl is somewhere in LDFLAGS, we
  3039         -      # need to do runtime linking.
  3040         -      case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*)
  3041         -	for ld_flag in $LDFLAGS; do
  3042         -	  case $ld_flag in
  3043         -	  *-brtl*)
  3044         -	    aix_use_runtimelinking=yes
  3045         -	    break
  3046         -	    ;;
  3047         -	  esac
  3048         -	done
  3049         -	;;
  3050         -      esac
  3051         -
  3052         -      exp_sym_flag='-bexport'
  3053         -      no_entry_flag='-bnoentry'
  3054         -    fi
  3055         -
  3056         -    # When large executables or shared objects are built, AIX ld can
  3057         -    # have problems creating the table of contents.  If linking a library
  3058         -    # or program results in "error TOC overflow" add -mminimal-toc to
  3059         -    # CXXFLAGS/CFLAGS for g++/gcc.  In the cases where that is not
  3060         -    # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
  3061         -
  3062         -    _LT_AC_TAGVAR(archive_cmds, $1)=''
  3063         -    _LT_AC_TAGVAR(hardcode_direct, $1)=yes
  3064         -    _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=':'
  3065         -    _LT_AC_TAGVAR(link_all_deplibs, $1)=yes
  3066         -
  3067         -    if test "$GXX" = yes; then
  3068         -      case $host_os in aix4.[[012]]|aix4.[[012]].*)
  3069         -      # We only want to do this on AIX 4.2 and lower, the check
  3070         -      # below for broken collect2 doesn't work under 4.3+
  3071         -	collect2name=`${CC} -print-prog-name=collect2`
  3072         -	if test -f "$collect2name" && \
  3073         -	   strings "$collect2name" | grep resolve_lib_name >/dev/null
  3074         -	then
  3075         -	  # We have reworked collect2
  3076         -	  :
  3077         -	else
  3078         -	  # We have old collect2
  3079         -	  _LT_AC_TAGVAR(hardcode_direct, $1)=unsupported
  3080         -	  # It fails to find uninstalled libraries when the uninstalled
  3081         -	  # path is not listed in the libpath.  Setting hardcode_minus_L
  3082         -	  # to unsupported forces relinking
  3083         -	  _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes
  3084         -	  _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
  3085         -	  _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=
  3086         -	fi
  3087         -	;;
  3088         -      esac
  3089         -      shared_flag='-shared'
  3090         -      if test "$aix_use_runtimelinking" = yes; then
  3091         -	shared_flag="$shared_flag "'${wl}-G'
  3092         -      fi
  3093         -    else
  3094         -      # not using gcc
  3095         -      if test "$host_cpu" = ia64; then
  3096         -	# VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
  3097         -	# chokes on -Wl,-G. The following line is correct:
  3098         -	shared_flag='-G'
  3099         -      else
  3100         -	if test "$aix_use_runtimelinking" = yes; then
  3101         -	  shared_flag='${wl}-G'
  3102         -	else
  3103         -	  shared_flag='${wl}-bM:SRE'
  3104         -	fi
  3105         -      fi
  3106         -    fi
  3107         -
  3108         -    # It seems that -bexpall does not export symbols beginning with
  3109         -    # underscore (_), so it is better to generate a list of symbols to export.
  3110         -    _LT_AC_TAGVAR(always_export_symbols, $1)=yes
  3111         -    if test "$aix_use_runtimelinking" = yes; then
  3112         -      # Warning - without using the other runtime loading flags (-brtl),
  3113         -      # -berok will link without error, but may produce a broken library.
  3114         -      _LT_AC_TAGVAR(allow_undefined_flag, $1)='-berok'
  3115         -      # Determine the default libpath from the value encoded in an empty executable.
  3116         -      _LT_AC_SYS_LIBPATH_AIX
  3117         -      _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath"
  3118         -
  3119         -      _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag"
  3120         -     else
  3121         -      if test "$host_cpu" = ia64; then
  3122         -	_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib'
  3123         -	_LT_AC_TAGVAR(allow_undefined_flag, $1)="-z nodefs"
  3124         -	_LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols"
  3125         -      else
  3126         -	# Determine the default libpath from the value encoded in an empty executable.
  3127         -	_LT_AC_SYS_LIBPATH_AIX
  3128         -	_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath"
  3129         -	# Warning - without using the other run time loading flags,
  3130         -	# -berok will link without error, but may produce a broken library.
  3131         -	_LT_AC_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok'
  3132         -	_LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok'
  3133         -	# Exported symbols can be pulled into shared objects from archives
  3134         -	_LT_AC_TAGVAR(whole_archive_flag_spec, $1)='$convenience'
  3135         -	_LT_AC_TAGVAR(archive_cmds_need_lc, $1)=yes
  3136         -	# This is similar to how AIX traditionally builds its shared libraries.
  3137         -	_LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
  3138         -      fi
  3139         -    fi
  3140         -    ;;
  3141         -
  3142         -  beos*)
  3143         -    if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
  3144         -      _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported
  3145         -      # Joseph Beckenbach <jrb3@best.com> says some releases of gcc
  3146         -      # support --undefined.  This deserves some investigation.  FIXME
  3147         -      _LT_AC_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
  3148         -    else
  3149         -      _LT_AC_TAGVAR(ld_shlibs, $1)=no
  3150         -    fi
  3151         -    ;;
  3152         -
  3153         -  chorus*)
  3154         -    case $cc_basename in
  3155         -      *)
  3156         -	# FIXME: insert proper C++ library support
  3157         -	_LT_AC_TAGVAR(ld_shlibs, $1)=no
  3158         -	;;
  3159         -    esac
  3160         -    ;;
  3161         -
  3162         -  cygwin* | mingw* | pw32*)
  3163         -    # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless,
  3164         -    # as there is no search path for DLLs.
  3165         -    _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
  3166         -    _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported
  3167         -    _LT_AC_TAGVAR(always_export_symbols, $1)=no
  3168         -    _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
  3169         -
  3170         -    if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then
  3171         -      _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
  3172         -      # If the export-symbols file already is a .def file (1st line
  3173         -      # is EXPORTS), use it as is; otherwise, prepend...
  3174         -      _LT_AC_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
  3175         -	cp $export_symbols $output_objdir/$soname.def;
  3176         -      else
  3177         -	echo EXPORTS > $output_objdir/$soname.def;
  3178         -	cat $export_symbols >> $output_objdir/$soname.def;
  3179         -      fi~
  3180         -      $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'
  3181         -    else
  3182         -      _LT_AC_TAGVAR(ld_shlibs, $1)=no
  3183         -    fi
  3184         -  ;;
  3185         -      darwin* | rhapsody*)
  3186         -      _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
  3187         -      _LT_AC_TAGVAR(hardcode_direct, $1)=no
  3188         -      _LT_AC_TAGVAR(hardcode_automatic, $1)=yes
  3189         -      _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=unsupported
  3190         -      _LT_AC_TAGVAR(whole_archive_flag_spec, $1)=''
  3191         -      _LT_AC_TAGVAR(link_all_deplibs, $1)=yes
  3192         -      _LT_AC_TAGVAR(allow_undefined_flag, $1)="$_lt_dar_allow_undefined"
  3193         -      if test "$GXX" = yes ; then
  3194         -      output_verbose_link_cmd='echo'
  3195         -      _LT_AC_TAGVAR(archive_cmds, $1)="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}"
  3196         -      _LT_AC_TAGVAR(module_cmds, $1)="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}"
  3197         -      _LT_AC_TAGVAR(archive_expsym_cmds, $1)="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}"
  3198         -      _LT_AC_TAGVAR(module_expsym_cmds, $1)="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}"
  3199         -      if test "$lt_cv_apple_cc_single_mod" != "yes"; then
  3200         -        _LT_AC_TAGVAR(archive_cmds, $1)="\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dsymutil}"
  3201         -        _LT_AC_TAGVAR(archive_expsym_cmds, $1)="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dar_export_syms}${_lt_dsymutil}"
  3202         -      fi
  3203         -      else
  3204         -      case $cc_basename in
  3205         -        xlc*)
  3206         -         output_verbose_link_cmd='echo'
  3207         -          _LT_AC_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj ${wl}-single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $xlcverstring'
  3208         -          _LT_AC_TAGVAR(module_cmds, $1)='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
  3209         -          # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds
  3210         -          _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj ${wl}-single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $xlcverstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
  3211         -          _LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag  -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
  3212         -          ;;
  3213         -       *)
  3214         -         _LT_AC_TAGVAR(ld_shlibs, $1)=no
  3215         -          ;;
  3216         -      esac
  3217         -      fi
  3218         -        ;;
  3219         -
  3220         -  dgux*)
  3221         -    case $cc_basename in
  3222         -      ec++*)
  3223         -	# FIXME: insert proper C++ library support
  3224         -	_LT_AC_TAGVAR(ld_shlibs, $1)=no
  3225         -	;;
  3226         -      ghcx*)
  3227         -	# Green Hills C++ Compiler
  3228         -	# FIXME: insert proper C++ library support
  3229         -	_LT_AC_TAGVAR(ld_shlibs, $1)=no
  3230         -	;;
  3231         -      *)
  3232         -	# FIXME: insert proper C++ library support
  3233         -	_LT_AC_TAGVAR(ld_shlibs, $1)=no
  3234         -	;;
  3235         -    esac
  3236         -    ;;
  3237         -  freebsd[[12]]*)
  3238         -    # C++ shared libraries reported to be fairly broken before switch to ELF
  3239         -    _LT_AC_TAGVAR(ld_shlibs, $1)=no
  3240         -    ;;
  3241         -  freebsd-elf*)
  3242         -    _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
  3243         -    ;;
  3244         -  freebsd* | dragonfly*)
  3245         -    # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF
  3246         -    # conventions
  3247         -    _LT_AC_TAGVAR(ld_shlibs, $1)=yes
  3248         -    ;;
  3249         -  gnu*)
  3250         -    ;;
  3251         -  hpux9*)
  3252         -    _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
  3253         -    _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
  3254         -    _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
  3255         -    _LT_AC_TAGVAR(hardcode_direct, $1)=yes
  3256         -    _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH,
  3257         -				# but as the default
  3258         -				# location of the library.
  3259         -
  3260         -    case $cc_basename in
  3261         -    CC*)
  3262         -      # FIXME: insert proper C++ library support
  3263         -      _LT_AC_TAGVAR(ld_shlibs, $1)=no
  3264         -      ;;
  3265         -    aCC*)
  3266         -      _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
  3267         -      # Commands to make compiler produce verbose output that lists
  3268         -      # what "hidden" libraries, object files and flags are used when
  3269         -      # linking a shared library.
  3270         -      #
  3271         -      # There doesn't appear to be a way to prevent this compiler from
  3272         -      # explicitly linking system object files so we need to strip them
  3273         -      # from the output so that they don't get included in the library
  3274         -      # dependencies.
  3275         -      output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | grep "[[-]]L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
  3276         -      ;;
  3277         -    *)
  3278         -      if test "$GXX" = yes; then
  3279         -        _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/$soname~$CC -shared -nostdlib -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
  3280         -      else
  3281         -        # FIXME: insert proper C++ library support
  3282         -        _LT_AC_TAGVAR(ld_shlibs, $1)=no
  3283         -      fi
  3284         -      ;;
  3285         -    esac
  3286         -    ;;
  3287         -  hpux10*|hpux11*)
  3288         -    if test $with_gnu_ld = no; then
  3289         -      _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
  3290         -      _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
  3291         -
  3292         -      case $host_cpu in
  3293         -      hppa*64*|ia64*) ;;
  3294         -      *)
  3295         -	_LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
  3296         -        ;;
  3297         -      esac
  3298         -    fi
  3299         -    case $host_cpu in
  3300         -    hppa*64*|ia64*)
  3301         -      _LT_AC_TAGVAR(hardcode_direct, $1)=no
  3302         -      _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
  3303         -      ;;
  3304         -    *)
  3305         -      _LT_AC_TAGVAR(hardcode_direct, $1)=yes
  3306         -      _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH,
  3307         -					      # but as the default
  3308         -					      # location of the library.
  3309         -      ;;
  3310         -    esac
  3311         -
  3312         -    case $cc_basename in
  3313         -      CC*)
  3314         -	# FIXME: insert proper C++ library support
  3315         -	_LT_AC_TAGVAR(ld_shlibs, $1)=no
  3316         -	;;
  3317         -      aCC*)
  3318         -	case $host_cpu in
  3319         -	hppa*64*)
  3320         -	  _LT_AC_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
  3321         -	  ;;
  3322         -	ia64*)
  3323         -	  _LT_AC_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
  3324         -	  ;;
  3325         -	*)
  3326         -	  _LT_AC_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
  3327         -	  ;;
  3328         -	esac
  3329         -	# Commands to make compiler produce verbose output that lists
  3330         -	# what "hidden" libraries, object files and flags are used when
  3331         -	# linking a shared library.
  3332         -	#
  3333         -	# There doesn't appear to be a way to prevent this compiler from
  3334         -	# explicitly linking system object files so we need to strip them
  3335         -	# from the output so that they don't get included in the library
  3336         -	# dependencies.
  3337         -	output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | grep "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
  3338         -	;;
  3339         -      *)
  3340         -	if test "$GXX" = yes; then
  3341         -	  if test $with_gnu_ld = no; then
  3342         -	    case $host_cpu in
  3343         -	    hppa*64*)
  3344         -	      _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
  3345         -	      ;;
  3346         -	    ia64*)
  3347         -	      _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
  3348         -	      ;;
  3349         -	    *)
  3350         -	      _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
  3351         -	      ;;
  3352         -	    esac
  3353         -	  fi
  3354         -	else
  3355         -	  # FIXME: insert proper C++ library support
  3356         -	  _LT_AC_TAGVAR(ld_shlibs, $1)=no
  3357         -	fi
  3358         -	;;
  3359         -    esac
  3360         -    ;;
  3361         -  interix[[3-9]]*)
  3362         -    _LT_AC_TAGVAR(hardcode_direct, $1)=no
  3363         -    _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
  3364         -    _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
  3365         -    _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
  3366         -    # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc.
  3367         -    # Instead, shared libraries are loaded at an image base (0x10000000 by
  3368         -    # default) and relocated if they conflict, which is a slow very memory
  3369         -    # consuming and fragmenting process.  To avoid this, we pick a random,
  3370         -    # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link
  3371         -    # time.  Moving up from 0x10000000 also allows more sbrk(2) space.
  3372         -    _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
  3373         -    _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
  3374         -    ;;
  3375         -  irix5* | irix6*)
  3376         -    case $cc_basename in
  3377         -      CC*)
  3378         -	# SGI C++
  3379         -	_LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
  3380         -
  3381         -	# Archives containing C++ object files must be created using
  3382         -	# "CC -ar", where "CC" is the IRIX C++ compiler.  This is
  3383         -	# necessary to make sure instantiated templates are included
  3384         -	# in the archive.
  3385         -	_LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -ar -WR,-u -o $oldlib $oldobjs'
  3386         -	;;
  3387         -      *)
  3388         -	if test "$GXX" = yes; then
  3389         -	  if test "$with_gnu_ld" = no; then
  3390         -	    _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
  3391         -	  else
  3392         -	    _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` -o $lib'
  3393         -	  fi
  3394         -	fi
  3395         -	_LT_AC_TAGVAR(link_all_deplibs, $1)=yes
  3396         -	;;
  3397         -    esac
  3398         -    _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
  3399         -    _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
  3400         -    ;;
  3401         -  linux* | k*bsd*-gnu)
  3402         -    case $cc_basename in
  3403         -      KCC*)
  3404         -	# Kuck and Associates, Inc. (KAI) C++ Compiler
  3405         -
  3406         -	# KCC will only create a shared library if the output file
  3407         -	# ends with ".so" (or ".sl" for HP-UX), so rename the library
  3408         -	# to its proper name (with version) after linking.
  3409         -	_LT_AC_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
  3410         -	_LT_AC_TAGVAR(archive_expsym_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib ${wl}-retain-symbols-file,$export_symbols; mv \$templib $lib'
  3411         -	# Commands to make compiler produce verbose output that lists
  3412         -	# what "hidden" libraries, object files and flags are used when
  3413         -	# linking a shared library.
  3414         -	#
  3415         -	# There doesn't appear to be a way to prevent this compiler from
  3416         -	# explicitly linking system object files so we need to strip them
  3417         -	# from the output so that they don't get included in the library
  3418         -	# dependencies.
  3419         -	output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | grep "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
  3420         -
  3421         -	_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath,$libdir'
  3422         -	_LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
  3423         -
  3424         -	# Archives containing C++ object files must be created using
  3425         -	# "CC -Bstatic", where "CC" is the KAI C++ compiler.
  3426         -	_LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs'
  3427         -	;;
  3428         -      icpc*)
  3429         -	# Intel C++
  3430         -	with_gnu_ld=yes
  3431         -	# version 8.0 and above of icpc choke on multiply defined symbols
  3432         -	# if we add $predep_objects and $postdep_objects, however 7.1 and
  3433         -	# earlier do not add the objects themselves.
  3434         -	case `$CC -V 2>&1` in
  3435         -	*"Version 7."*)
  3436         -  	  _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
  3437         -  	  _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
  3438         -	  ;;
  3439         -	*)  # Version 8.0 or newer
  3440         -	  tmp_idyn=
  3441         -	  case $host_cpu in
  3442         -	    ia64*) tmp_idyn=' -i_dynamic';;
  3443         -	  esac
  3444         -  	  _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
  3445         -	  _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
  3446         -	  ;;
  3447         -	esac
  3448         -	_LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
  3449         -	_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
  3450         -	_LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
  3451         -	_LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive'
  3452         -	;;
  3453         -      pgCC* | pgcpp*)
  3454         -        # Portland Group C++ compiler
  3455         -	_LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib'
  3456         -  	_LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib'
  3457         -
  3458         -	_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir'
  3459         -	_LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
  3460         -	_LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive'
  3461         -        ;;
  3462         -      cxx*)
  3463         -	# Compaq C++
  3464         -	_LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
  3465         -	_LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname  -o $lib ${wl}-retain-symbols-file $wl$export_symbols'
  3466         -
  3467         -	runpath_var=LD_RUN_PATH
  3468         -	_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir'
  3469         -	_LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
  3470         -
  3471         -	# Commands to make compiler produce verbose output that lists
  3472         -	# what "hidden" libraries, object files and flags are used when
  3473         -	# linking a shared library.
  3474         -	#
  3475         -	# There doesn't appear to be a way to prevent this compiler from
  3476         -	# explicitly linking system object files so we need to strip them
  3477         -	# from the output so that they don't get included in the library
  3478         -	# dependencies.
  3479         -	output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
  3480         -	;;
  3481         -      *)
  3482         -	case `$CC -V 2>&1 | sed 5q` in
  3483         -	*Sun\ C*)
  3484         -	  # Sun C++ 5.9
  3485         -	  _LT_AC_TAGVAR(no_undefined_flag, $1)=' -zdefs'
  3486         -	  _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
  3487         -	  _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file ${wl}$export_symbols'
  3488         -	  _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
  3489         -	  _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive'
  3490         -
  3491         -	  # Not sure whether something based on
  3492         -	  # $CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1
  3493         -	  # would be better.
  3494         -	  output_verbose_link_cmd='echo'
  3495         -
  3496         -	  # Archives containing C++ object files must be created using
  3497         -	  # "CC -xar", where "CC" is the Sun C++ compiler.  This is
  3498         -	  # necessary to make sure instantiated templates are included
  3499         -	  # in the archive.
  3500         -	  _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs'
  3501         -	  ;;
  3502         -	esac
  3503         -	;;
  3504         -    esac
  3505         -    ;;
  3506         -  lynxos*)
  3507         -    # FIXME: insert proper C++ library support
  3508         -    _LT_AC_TAGVAR(ld_shlibs, $1)=no
  3509         -    ;;
  3510         -  m88k*)
  3511         -    # FIXME: insert proper C++ library support
  3512         -    _LT_AC_TAGVAR(ld_shlibs, $1)=no
  3513         -    ;;
  3514         -  mvs*)
  3515         -    case $cc_basename in
  3516         -      cxx*)
  3517         -	# FIXME: insert proper C++ library support
  3518         -	_LT_AC_TAGVAR(ld_shlibs, $1)=no
  3519         -	;;
  3520         -      *)
  3521         -	# FIXME: insert proper C++ library support
  3522         -	_LT_AC_TAGVAR(ld_shlibs, $1)=no
  3523         -	;;
  3524         -    esac
  3525         -    ;;
  3526         -  netbsd* | netbsdelf*-gnu)
  3527         -    if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
  3528         -      _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable  -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags'
  3529         -      wlarc=
  3530         -      _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
  3531         -      _LT_AC_TAGVAR(hardcode_direct, $1)=yes
  3532         -      _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
  3533         -    fi
  3534         -    # Workaround some broken pre-1.5 toolchains
  3535         -    output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"'
  3536         -    ;;
  3537         -  openbsd2*)
  3538         -    # C++ shared libraries are fairly broken
  3539         -    _LT_AC_TAGVAR(ld_shlibs, $1)=no
  3540         -    ;;
  3541         -  openbsd*)
  3542         -    if test -f /usr/libexec/ld.so; then
  3543         -      _LT_AC_TAGVAR(hardcode_direct, $1)=yes
  3544         -      _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
  3545         -      _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib'
  3546         -      _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
  3547         -      if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
  3548         -	_LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib'
  3549         -	_LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
  3550         -	_LT_AC_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
  3551         -      fi
  3552         -      output_verbose_link_cmd='echo'
  3553         -    else
  3554         -      _LT_AC_TAGVAR(ld_shlibs, $1)=no
  3555         -    fi
  3556         -    ;;
  3557         -  osf3*)
  3558         -    case $cc_basename in
  3559         -      KCC*)
  3560         -	# Kuck and Associates, Inc. (KAI) C++ Compiler
  3561         -
  3562         -	# KCC will only create a shared library if the output file
  3563         -	# ends with ".so" (or ".sl" for HP-UX), so rename the library
  3564         -	# to its proper name (with version) after linking.
  3565         -	_LT_AC_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
  3566         -
  3567         -	_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
  3568         -	_LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
  3569         -
  3570         -	# Archives containing C++ object files must be created using
  3571         -	# "CC -Bstatic", where "CC" is the KAI C++ compiler.
  3572         -	_LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs'
  3573         -
  3574         -	;;
  3575         -      RCC*)
  3576         -	# Rational C++ 2.4.1
  3577         -	# FIXME: insert proper C++ library support
  3578         -	_LT_AC_TAGVAR(ld_shlibs, $1)=no
  3579         -	;;
  3580         -      cxx*)
  3581         -	_LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
  3582         -	_LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && echo ${wl}-set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
  3583         -
  3584         -	_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
  3585         -	_LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
  3586         -
  3587         -	# Commands to make compiler produce verbose output that lists
  3588         -	# what "hidden" libraries, object files and flags are used when
  3589         -	# linking a shared library.
  3590         -	#
  3591         -	# There doesn't appear to be a way to prevent this compiler from
  3592         -	# explicitly linking system object files so we need to strip them
  3593         -	# from the output so that they don't get included in the library
  3594         -	# dependencies.
  3595         -	output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld" | grep -v "ld:"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
  3596         -	;;
  3597         -      *)
  3598         -	if test "$GXX" = yes && test "$with_gnu_ld" = no; then
  3599         -	  _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
  3600         -	  _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
  3601         -
  3602         -	  _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
  3603         -	  _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
  3604         -
  3605         -	  # Commands to make compiler produce verbose output that lists
  3606         -	  # what "hidden" libraries, object files and flags are used when
  3607         -	  # linking a shared library.
  3608         -	  output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"'
  3609         -
  3610         -	else
  3611         -	  # FIXME: insert proper C++ library support
  3612         -	  _LT_AC_TAGVAR(ld_shlibs, $1)=no
  3613         -	fi
  3614         -	;;
  3615         -    esac
  3616         -    ;;
  3617         -  osf4* | osf5*)
  3618         -    case $cc_basename in
  3619         -      KCC*)
  3620         -	# Kuck and Associates, Inc. (KAI) C++ Compiler
  3621         -
  3622         -	# KCC will only create a shared library if the output file
  3623         -	# ends with ".so" (or ".sl" for HP-UX), so rename the library
  3624         -	# to its proper name (with version) after linking.
  3625         -	_LT_AC_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
  3626         -
  3627         -	_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
  3628         -	_LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
  3629         -
  3630         -	# Archives containing C++ object files must be created using
  3631         -	# the KAI C++ compiler.
  3632         -	_LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -o $oldlib $oldobjs'
  3633         -	;;
  3634         -      RCC*)
  3635         -	# Rational C++ 2.4.1
  3636         -	# FIXME: insert proper C++ library support
  3637         -	_LT_AC_TAGVAR(ld_shlibs, $1)=no
  3638         -	;;
  3639         -      cxx*)
  3640         -	_LT_AC_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*'
  3641         -	_LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
  3642         -	_LT_AC_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~
  3643         -	  echo "-hidden">> $lib.exp~
  3644         -	  $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~
  3645         -	  $rm $lib.exp'
  3646         -
  3647         -	_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir'
  3648         -	_LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
  3649         -
  3650         -	# Commands to make compiler produce verbose output that lists
  3651         -	# what "hidden" libraries, object files and flags are used when
  3652         -	# linking a shared library.
  3653         -	#
  3654         -	# There doesn't appear to be a way to prevent this compiler from
  3655         -	# explicitly linking system object files so we need to strip them
  3656         -	# from the output so that they don't get included in the library
  3657         -	# dependencies.
  3658         -	output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld" | grep -v "ld:"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
  3659         -	;;
  3660         -      *)
  3661         -	if test "$GXX" = yes && test "$with_gnu_ld" = no; then
  3662         -	  _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
  3663         -	 _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
  3664         -
  3665         -	  _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
  3666         -	  _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
  3667         -
  3668         -	  # Commands to make compiler produce verbose output that lists
  3669         -	  # what "hidden" libraries, object files and flags are used when
  3670         -	  # linking a shared library.
  3671         -	  output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"'
  3672         -
  3673         -	else
  3674         -	  # FIXME: insert proper C++ library support
  3675         -	  _LT_AC_TAGVAR(ld_shlibs, $1)=no
  3676         -	fi
  3677         -	;;
  3678         -    esac
  3679         -    ;;
  3680         -  psos*)
  3681         -    # FIXME: insert proper C++ library support
  3682         -    _LT_AC_TAGVAR(ld_shlibs, $1)=no
  3683         -    ;;
  3684         -  sunos4*)
  3685         -    case $cc_basename in
  3686         -      CC*)
  3687         -	# Sun C++ 4.x
  3688         -	# FIXME: insert proper C++ library support
  3689         -	_LT_AC_TAGVAR(ld_shlibs, $1)=no
  3690         -	;;
  3691         -      lcc*)
  3692         -	# Lucid
  3693         -	# FIXME: insert proper C++ library support
  3694         -	_LT_AC_TAGVAR(ld_shlibs, $1)=no
  3695         -	;;
  3696         -      *)
  3697         -	# FIXME: insert proper C++ library support
  3698         -	_LT_AC_TAGVAR(ld_shlibs, $1)=no
  3699         -	;;
  3700         -    esac
  3701         -    ;;
  3702         -  solaris*)
  3703         -    case $cc_basename in
  3704         -      CC*)
  3705         -	# Sun C++ 4.2, 5.x and Centerline C++
  3706         -        _LT_AC_TAGVAR(archive_cmds_need_lc,$1)=yes
  3707         -	_LT_AC_TAGVAR(no_undefined_flag, $1)=' -zdefs'
  3708         -	_LT_AC_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag}  -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
  3709         -	_LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
  3710         -	$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'
  3711         -
  3712         -	_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
  3713         -	_LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
  3714         -	case $host_os in
  3715         -	  solaris2.[[0-5]] | solaris2.[[0-5]].*) ;;
  3716         -	  *)
  3717         -	    # The compiler driver will combine and reorder linker options,
  3718         -	    # but understands `-z linker_flag'.
  3719         -	    # Supported since Solaris 2.6 (maybe 2.5.1?)
  3720         -	    _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract'
  3721         -	    ;;
  3722         -	esac
  3723         -	_LT_AC_TAGVAR(link_all_deplibs, $1)=yes
  3724         -
  3725         -	output_verbose_link_cmd='echo'
  3726         -
  3727         -	# Archives containing C++ object files must be created using
  3728         -	# "CC -xar", where "CC" is the Sun C++ compiler.  This is
  3729         -	# necessary to make sure instantiated templates are included
  3730         -	# in the archive.
  3731         -	_LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs'
  3732         -	;;
  3733         -      gcx*)
  3734         -	# Green Hills C++ Compiler
  3735         -	_LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
  3736         -
  3737         -	# The C++ compiler must be used to create the archive.
  3738         -	_LT_AC_TAGVAR(old_archive_cmds, $1)='$CC $LDFLAGS -archive -o $oldlib $oldobjs'
  3739         -	;;
  3740         -      *)
  3741         -	# GNU C++ compiler with Solaris linker
  3742         -	if test "$GXX" = yes && test "$with_gnu_ld" = no; then
  3743         -	  _LT_AC_TAGVAR(no_undefined_flag, $1)=' ${wl}-z ${wl}defs'
  3744         -	  if $CC --version | grep -v '^2\.7' > /dev/null; then
  3745         -	    _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
  3746         -	    _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
  3747         -		$CC -shared -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp'
  3748         -
  3749         -	    # Commands to make compiler produce verbose output that lists
  3750         -	    # what "hidden" libraries, object files and flags are used when
  3751         -	    # linking a shared library.
  3752         -	    output_verbose_link_cmd="$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep \"\-L\""
  3753         -	  else
  3754         -	    # g++ 2.7 appears to require `-G' NOT `-shared' on this
  3755         -	    # platform.
  3756         -	    _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
  3757         -	    _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
  3758         -		$CC -G -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp'
  3759         -
  3760         -	    # Commands to make compiler produce verbose output that lists
  3761         -	    # what "hidden" libraries, object files and flags are used when
  3762         -	    # linking a shared library.
  3763         -	    output_verbose_link_cmd="$CC -G $CFLAGS -v conftest.$objext 2>&1 | grep \"\-L\""
  3764         -	  fi
  3765         -
  3766         -	  _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $wl$libdir'
  3767         -	  case $host_os in
  3768         -	  solaris2.[[0-5]] | solaris2.[[0-5]].*) ;;
  3769         -	  *)
  3770         -	    _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract'
  3771         -	    ;;
  3772         -	  esac
  3773         -	fi
  3774         -	;;
  3775         -    esac
  3776         -    ;;
  3777         -  sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*)
  3778         -    _LT_AC_TAGVAR(no_undefined_flag, $1)='${wl}-z,text'
  3779         -    _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
  3780         -    _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
  3781         -    runpath_var='LD_RUN_PATH'
  3782         -
  3783         -    case $cc_basename in
  3784         -      CC*)
  3785         -	_LT_AC_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
  3786         -	_LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
  3787         -	;;
  3788         -      *)
  3789         -	_LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
  3790         -	_LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
  3791         -	;;
  3792         -    esac
  3793         -    ;;
  3794         -  sysv5* | sco3.2v5* | sco5v6*)
  3795         -    # Note: We can NOT use -z defs as we might desire, because we do not
  3796         -    # link with -lc, and that would cause any symbols used from libc to
  3797         -    # always be unresolved, which means just about no library would
  3798         -    # ever link correctly.  If we're not using GNU ld we use -z text
  3799         -    # though, which does catch some bad symbols but isn't as heavy-handed
  3800         -    # as -z defs.
  3801         -    # For security reasons, it is highly recommended that you always
  3802         -    # use absolute paths for naming shared libraries, and exclude the
  3803         -    # DT_RUNPATH tag from executables and libraries.  But doing so
  3804         -    # requires that you compile everything twice, which is a pain.
  3805         -    # So that behaviour is only enabled if SCOABSPATH is set to a
  3806         -    # non-empty value in the environment.  Most likely only useful for
  3807         -    # creating official distributions of packages.
  3808         -    # This is a hack until libtool officially supports absolute path
  3809         -    # names for shared libraries.
  3810         -    _LT_AC_TAGVAR(no_undefined_flag, $1)='${wl}-z,text'
  3811         -    _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs'
  3812         -    _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
  3813         -    _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
  3814         -    _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`'
  3815         -    _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=':'
  3816         -    _LT_AC_TAGVAR(link_all_deplibs, $1)=yes
  3817         -    _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport'
  3818         -    runpath_var='LD_RUN_PATH'
  3819         -
  3820         -    case $cc_basename in
  3821         -      CC*)
  3822         -	_LT_AC_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
  3823         -	_LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
  3824         -	;;
  3825         -      *)
  3826         -	_LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
  3827         -	_LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
  3828         -	;;
  3829         -    esac
  3830         -    ;;
  3831         -  tandem*)
  3832         -    case $cc_basename in
  3833         -      NCC*)
  3834         -	# NonStop-UX NCC 3.20
  3835         -	# FIXME: insert proper C++ library support
  3836         -	_LT_AC_TAGVAR(ld_shlibs, $1)=no
  3837         -	;;
  3838         -      *)
  3839         -	# FIXME: insert proper C++ library support
  3840         -	_LT_AC_TAGVAR(ld_shlibs, $1)=no
  3841         -	;;
  3842         -    esac
  3843         -    ;;
  3844         -  vxworks*)
  3845         -    # FIXME: insert proper C++ library support
  3846         -    _LT_AC_TAGVAR(ld_shlibs, $1)=no
  3847         -    ;;
  3848         -  *)
  3849         -    # FIXME: insert proper C++ library support
  3850         -    _LT_AC_TAGVAR(ld_shlibs, $1)=no
  3851         -    ;;
  3852         -esac
  3853         -AC_MSG_RESULT([$_LT_AC_TAGVAR(ld_shlibs, $1)])
  3854         -test "$_LT_AC_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no
  3855         -
  3856         -_LT_AC_TAGVAR(GCC, $1)="$GXX"
  3857         -_LT_AC_TAGVAR(LD, $1)="$LD"
  3858         -
  3859         -AC_LIBTOOL_POSTDEP_PREDEP($1)
  3860         -AC_LIBTOOL_PROG_COMPILER_PIC($1)
  3861         -AC_LIBTOOL_PROG_CC_C_O($1)
  3862         -AC_LIBTOOL_SYS_HARD_LINK_LOCKS($1)
  3863         -AC_LIBTOOL_PROG_LD_SHLIBS($1)
  3864         -AC_LIBTOOL_SYS_DYNAMIC_LINKER($1)
  3865         -AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH($1)
  3866         -
  3867         -AC_LIBTOOL_CONFIG($1)
  3868         -
  3869         -AC_LANG_POP
  3870         -CC=$lt_save_CC
  3871         -LDCXX=$LD
  3872         -LD=$lt_save_LD
  3873         -GCC=$lt_save_GCC
  3874         -with_gnu_ldcxx=$with_gnu_ld
  3875         -with_gnu_ld=$lt_save_with_gnu_ld
  3876         -lt_cv_path_LDCXX=$lt_cv_path_LD
  3877         -lt_cv_path_LD=$lt_save_path_LD
  3878         -lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld
  3879         -lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld
  3880         -])# AC_LIBTOOL_LANG_CXX_CONFIG
  3881         -
  3882         -# AC_LIBTOOL_POSTDEP_PREDEP([TAGNAME])
  3883         -# ------------------------------------
  3884         -# Figure out "hidden" library dependencies from verbose
  3885         -# compiler output when linking a shared library.
  3886         -# Parse the compiler output and extract the necessary
  3887         -# objects, libraries and library flags.
  3888         -AC_DEFUN([AC_LIBTOOL_POSTDEP_PREDEP],
  3889         -[AC_REQUIRE([LT_AC_PROG_SED])dnl
  3890         -dnl we can't use the lt_simple_compile_test_code here,
  3891         -dnl because it contains code intended for an executable,
  3892         -dnl not a library.  It's possible we should let each
  3893         -dnl tag define a new lt_????_link_test_code variable,
  3894         -dnl but it's only used here...
  3895         -ifelse([$1],[],[cat > conftest.$ac_ext <<EOF
  3896         -int a;
  3897         -void foo (void) { a = 0; }
  3898         -EOF
  3899         -],[$1],[CXX],[cat > conftest.$ac_ext <<EOF
  3900         -class Foo
  3901         -{
  3902         -public:
  3903         -  Foo (void) { a = 0; }
  3904         -private:
  3905         -  int a;
  3906         -};
  3907         -EOF
  3908         -],[$1],[F77],[cat > conftest.$ac_ext <<EOF
  3909         -      subroutine foo
  3910         -      implicit none
  3911         -      integer*4 a
  3912         -      a=0
  3913         -      return
  3914         -      end
  3915         -EOF
  3916         -],[$1],[GCJ],[cat > conftest.$ac_ext <<EOF
  3917         -public class foo {
  3918         -  private int a;
  3919         -  public void bar (void) {
  3920         -    a = 0;
  3921         -  }
  3922         -};
  3923         -EOF
  3924         -])
  3925         -dnl Parse the compiler output and extract the necessary
  3926         -dnl objects, libraries and library flags.
  3927         -if AC_TRY_EVAL(ac_compile); then
  3928         -  # Parse the compiler output and extract the necessary
  3929         -  # objects, libraries and library flags.
  3930         -
  3931         -  # Sentinel used to keep track of whether or not we are before
  3932         -  # the conftest object file.
  3933         -  pre_test_object_deps_done=no
  3934         -
  3935         -  # The `*' in the case matches for architectures that use `case' in
  3936         -  # $output_verbose_cmd can trigger glob expansion during the loop
  3937         -  # eval without this substitution.
  3938         -  output_verbose_link_cmd=`$echo "X$output_verbose_link_cmd" | $Xsed -e "$no_glob_subst"`
  3939         -
  3940         -  for p in `eval $output_verbose_link_cmd`; do
  3941         -    case $p in
  3942         -
  3943         -    -L* | -R* | -l*)
  3944         -       # Some compilers place space between "-{L,R}" and the path.
  3945         -       # Remove the space.
  3946         -       if test $p = "-L" \
  3947         -	  || test $p = "-R"; then
  3948         -	 prev=$p
  3949         -	 continue
  3950         -       else
  3951         -	 prev=
  3952         -       fi
  3953         -
  3954         -       if test "$pre_test_object_deps_done" = no; then
  3955         -	 case $p in
  3956         -	 -L* | -R*)
  3957         -	   # Internal compiler library paths should come after those
  3958         -	   # provided the user.  The postdeps already come after the
  3959         -	   # user supplied libs so there is no need to process them.
  3960         -	   if test -z "$_LT_AC_TAGVAR(compiler_lib_search_path, $1)"; then
  3961         -	     _LT_AC_TAGVAR(compiler_lib_search_path, $1)="${prev}${p}"
  3962         -	   else
  3963         -	     _LT_AC_TAGVAR(compiler_lib_search_path, $1)="${_LT_AC_TAGVAR(compiler_lib_search_path, $1)} ${prev}${p}"
  3964         -	   fi
  3965         -	   ;;
  3966         -	 # The "-l" case would never come before the object being
  3967         -	 # linked, so don't bother handling this case.
  3968         -	 esac
  3969         -       else
  3970         -	 if test -z "$_LT_AC_TAGVAR(postdeps, $1)"; then
  3971         -	   _LT_AC_TAGVAR(postdeps, $1)="${prev}${p}"
  3972         -	 else
  3973         -	   _LT_AC_TAGVAR(postdeps, $1)="${_LT_AC_TAGVAR(postdeps, $1)} ${prev}${p}"
  3974         -	 fi
  3975         -       fi
  3976         -       ;;
  3977         -
  3978         -    *.$objext)
  3979         -       # This assumes that the test object file only shows up
  3980         -       # once in the compiler output.
  3981         -       if test "$p" = "conftest.$objext"; then
  3982         -	 pre_test_object_deps_done=yes
  3983         -	 continue
  3984         -       fi
  3985         -
  3986         -       if test "$pre_test_object_deps_done" = no; then
  3987         -	 if test -z "$_LT_AC_TAGVAR(predep_objects, $1)"; then
  3988         -	   _LT_AC_TAGVAR(predep_objects, $1)="$p"
  3989         -	 else
  3990         -	   _LT_AC_TAGVAR(predep_objects, $1)="$_LT_AC_TAGVAR(predep_objects, $1) $p"
  3991         -	 fi
  3992         -       else
  3993         -	 if test -z "$_LT_AC_TAGVAR(postdep_objects, $1)"; then
  3994         -	   _LT_AC_TAGVAR(postdep_objects, $1)="$p"
  3995         -	 else
  3996         -	   _LT_AC_TAGVAR(postdep_objects, $1)="$_LT_AC_TAGVAR(postdep_objects, $1) $p"
  3997         -	 fi
  3998         -       fi
  3999         -       ;;
  4000         -
  4001         -    *) ;; # Ignore the rest.
  4002         -
  4003         -    esac
  4004         -  done
  4005         -
  4006         -  # Clean up.
  4007         -  rm -f a.out a.exe
  4008         -else
  4009         -  echo "libtool.m4: error: problem compiling $1 test program"
  4010         -fi
  4011         -
  4012         -$rm -f confest.$objext
  4013         -
  4014         -_LT_AC_TAGVAR(compiler_lib_search_dirs, $1)=
  4015         -if test -n "$_LT_AC_TAGVAR(compiler_lib_search_path, $1)"; then
  4016         -  _LT_AC_TAGVAR(compiler_lib_search_dirs, $1)=`echo " ${_LT_AC_TAGVAR(compiler_lib_search_path, $1)}" | ${SED} -e 's! -L! !g' -e 's!^ !!'`
  4017         -fi
  4018         -
  4019         -# PORTME: override above test on systems where it is broken
  4020         -ifelse([$1],[CXX],
  4021         -[case $host_os in
  4022         -interix[[3-9]]*)
  4023         -  # Interix 3.5 installs completely hosed .la files for C++, so rather than
  4024         -  # hack all around it, let's just trust "g++" to DTRT.
  4025         -  _LT_AC_TAGVAR(predep_objects,$1)=
  4026         -  _LT_AC_TAGVAR(postdep_objects,$1)=
  4027         -  _LT_AC_TAGVAR(postdeps,$1)=
  4028         -  ;;
  4029         -
  4030         -linux*)
  4031         -  case `$CC -V 2>&1 | sed 5q` in
  4032         -  *Sun\ C*)
  4033         -    # Sun C++ 5.9
  4034         -    #
  4035         -    # The more standards-conforming stlport4 library is
  4036         -    # incompatible with the Cstd library. Avoid specifying
  4037         -    # it if it's in CXXFLAGS. Ignore libCrun as
  4038         -    # -library=stlport4 depends on it.
  4039         -    case " $CXX $CXXFLAGS " in
  4040         -    *" -library=stlport4 "*)
  4041         -      solaris_use_stlport4=yes
  4042         -      ;;
  4043         -    esac
  4044         -    if test "$solaris_use_stlport4" != yes; then
  4045         -      _LT_AC_TAGVAR(postdeps,$1)='-library=Cstd -library=Crun'
  4046         -    fi
  4047         -    ;;
  4048         -  esac
  4049         -  ;;
  4050         -
  4051         -solaris*)
  4052         -  case $cc_basename in
  4053         -  CC*)
  4054         -    # The more standards-conforming stlport4 library is
  4055         -    # incompatible with the Cstd library. Avoid specifying
  4056         -    # it if it's in CXXFLAGS. Ignore libCrun as
  4057         -    # -library=stlport4 depends on it.
  4058         -    case " $CXX $CXXFLAGS " in
  4059         -    *" -library=stlport4 "*)
  4060         -      solaris_use_stlport4=yes
  4061         -      ;;
  4062         -    esac
  4063         -
  4064         -    # Adding this requires a known-good setup of shared libraries for
  4065         -    # Sun compiler versions before 5.6, else PIC objects from an old
  4066         -    # archive will be linked into the output, leading to subtle bugs.
  4067         -    if test "$solaris_use_stlport4" != yes; then
  4068         -      _LT_AC_TAGVAR(postdeps,$1)='-library=Cstd -library=Crun'
  4069         -    fi
  4070         -    ;;
  4071         -  esac
  4072         -  ;;
  4073         -esac
  4074         -])
  4075         -case " $_LT_AC_TAGVAR(postdeps, $1) " in
  4076         -*" -lc "*) _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no ;;
  4077         -esac
  4078         -])# AC_LIBTOOL_POSTDEP_PREDEP
  4079         -
  4080         -# AC_LIBTOOL_LANG_F77_CONFIG
  4081         -# --------------------------
  4082         -# Ensure that the configuration vars for the C compiler are
  4083         -# suitably defined.  Those variables are subsequently used by
  4084         -# AC_LIBTOOL_CONFIG to write the compiler configuration to `libtool'.
  4085         -AC_DEFUN([AC_LIBTOOL_LANG_F77_CONFIG], [_LT_AC_LANG_F77_CONFIG(F77)])
  4086         -AC_DEFUN([_LT_AC_LANG_F77_CONFIG],
  4087         -[AC_REQUIRE([AC_PROG_F77])
  4088         -AC_LANG_PUSH(Fortran 77)
  4089         -
  4090         -_LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
  4091         -_LT_AC_TAGVAR(allow_undefined_flag, $1)=
  4092         -_LT_AC_TAGVAR(always_export_symbols, $1)=no
  4093         -_LT_AC_TAGVAR(archive_expsym_cmds, $1)=
  4094         -_LT_AC_TAGVAR(export_dynamic_flag_spec, $1)=
  4095         -_LT_AC_TAGVAR(hardcode_direct, $1)=no
  4096         -_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)=
  4097         -_LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)=
  4098         -_LT_AC_TAGVAR(hardcode_libdir_separator, $1)=
  4099         -_LT_AC_TAGVAR(hardcode_minus_L, $1)=no
  4100         -_LT_AC_TAGVAR(hardcode_automatic, $1)=no
  4101         -_LT_AC_TAGVAR(module_cmds, $1)=
  4102         -_LT_AC_TAGVAR(module_expsym_cmds, $1)=
  4103         -_LT_AC_TAGVAR(link_all_deplibs, $1)=unknown
  4104         -_LT_AC_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds
  4105         -_LT_AC_TAGVAR(no_undefined_flag, $1)=
  4106         -_LT_AC_TAGVAR(whole_archive_flag_spec, $1)=
  4107         -_LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=no
  4108         -
  4109         -# Source file extension for f77 test sources.
  4110         -ac_ext=f
  4111         -
  4112         -# Object file extension for compiled f77 test sources.
  4113         -objext=o
  4114         -_LT_AC_TAGVAR(objext, $1)=$objext
  4115         -
  4116         -# Code to be used in simple compile tests
  4117         -lt_simple_compile_test_code="\
  4118         -      subroutine t
  4119         -      return
  4120         -      end
  4121         -"
  4122         -
  4123         -# Code to be used in simple link tests
  4124         -lt_simple_link_test_code="\
  4125         -      program t
  4126         -      end
  4127         -"
  4128         -
  4129         -# ltmain only uses $CC for tagged configurations so make sure $CC is set.
  4130         -_LT_AC_SYS_COMPILER
  4131         -
  4132         -# save warnings/boilerplate of simple test code
  4133         -_LT_COMPILER_BOILERPLATE
  4134         -_LT_LINKER_BOILERPLATE
  4135         -
  4136         -# Allow CC to be a program name with arguments.
  4137         -lt_save_CC="$CC"
  4138         -CC=${F77-"f77"}
  4139         -compiler=$CC
  4140         -_LT_AC_TAGVAR(compiler, $1)=$CC
  4141         -_LT_CC_BASENAME([$compiler])
  4142         -
  4143         -AC_MSG_CHECKING([if libtool supports shared libraries])
  4144         -AC_MSG_RESULT([$can_build_shared])
  4145         -
  4146         -AC_MSG_CHECKING([whether to build shared libraries])
  4147         -test "$can_build_shared" = "no" && enable_shared=no
  4148         -
  4149         -# On AIX, shared libraries and static libraries use the same namespace, and
  4150         -# are all built from PIC.
  4151         -case $host_os in
  4152         -aix3*)
  4153         -  test "$enable_shared" = yes && enable_static=no
  4154         -  if test -n "$RANLIB"; then
  4155         -    archive_cmds="$archive_cmds~\$RANLIB \$lib"
  4156         -    postinstall_cmds='$RANLIB $lib'
  4157         -  fi
  4158         -  ;;
  4159         -aix[[4-9]]*)
  4160         -  if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then
  4161         -    test "$enable_shared" = yes && enable_static=no
  4162         -  fi
  4163         -  ;;
  4164         -esac
  4165         -AC_MSG_RESULT([$enable_shared])
  4166         -
  4167         -AC_MSG_CHECKING([whether to build static libraries])
  4168         -# Make sure either enable_shared or enable_static is yes.
  4169         -test "$enable_shared" = yes || enable_static=yes
  4170         -AC_MSG_RESULT([$enable_static])
  4171         -
  4172         -_LT_AC_TAGVAR(GCC, $1)="$G77"
  4173         -_LT_AC_TAGVAR(LD, $1)="$LD"
  4174         -
  4175         -AC_LIBTOOL_PROG_COMPILER_PIC($1)
  4176         -AC_LIBTOOL_PROG_CC_C_O($1)
  4177         -AC_LIBTOOL_SYS_HARD_LINK_LOCKS($1)
  4178         -AC_LIBTOOL_PROG_LD_SHLIBS($1)
  4179         -AC_LIBTOOL_SYS_DYNAMIC_LINKER($1)
  4180         -AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH($1)
  4181         -
  4182         -AC_LIBTOOL_CONFIG($1)
  4183         -
  4184         -AC_LANG_POP
  4185         -CC="$lt_save_CC"
  4186         -])# AC_LIBTOOL_LANG_F77_CONFIG
  4187         -
  4188         -
  4189         -# AC_LIBTOOL_LANG_GCJ_CONFIG
  4190         -# --------------------------
  4191         -# Ensure that the configuration vars for the C compiler are
  4192         -# suitably defined.  Those variables are subsequently used by
  4193         -# AC_LIBTOOL_CONFIG to write the compiler configuration to `libtool'.
  4194         -AC_DEFUN([AC_LIBTOOL_LANG_GCJ_CONFIG], [_LT_AC_LANG_GCJ_CONFIG(GCJ)])
  4195         -AC_DEFUN([_LT_AC_LANG_GCJ_CONFIG],
  4196         -[AC_LANG_SAVE
  4197         -
  4198         -# Source file extension for Java test sources.
  4199         -ac_ext=java
  4200         -
  4201         -# Object file extension for compiled Java test sources.
  4202         -objext=o
  4203         -_LT_AC_TAGVAR(objext, $1)=$objext
  4204         -
  4205         -# Code to be used in simple compile tests
  4206         -lt_simple_compile_test_code="class foo {}"
  4207         -
  4208         -# Code to be used in simple link tests
  4209         -lt_simple_link_test_code='public class conftest { public static void main(String[[]] argv) {}; }'
  4210         -
  4211         -# ltmain only uses $CC for tagged configurations so make sure $CC is set.
  4212         -_LT_AC_SYS_COMPILER
  4213         -
  4214         -# save warnings/boilerplate of simple test code
  4215         -_LT_COMPILER_BOILERPLATE
  4216         -_LT_LINKER_BOILERPLATE
  4217         -
  4218         -# Allow CC to be a program name with arguments.
  4219         -lt_save_CC="$CC"
  4220         -CC=${GCJ-"gcj"}
  4221         -compiler=$CC
  4222         -_LT_AC_TAGVAR(compiler, $1)=$CC
  4223         -_LT_CC_BASENAME([$compiler])
  4224         -
  4225         -# GCJ did not exist at the time GCC didn't implicitly link libc in.
  4226         -_LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
  4227         -
  4228         -_LT_AC_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds
  4229         -
  4230         -AC_LIBTOOL_PROG_COMPILER_NO_RTTI($1)
  4231         -AC_LIBTOOL_PROG_COMPILER_PIC($1)
  4232         -AC_LIBTOOL_PROG_CC_C_O($1)
  4233         -AC_LIBTOOL_SYS_HARD_LINK_LOCKS($1)
  4234         -AC_LIBTOOL_PROG_LD_SHLIBS($1)
  4235         -AC_LIBTOOL_SYS_DYNAMIC_LINKER($1)
  4236         -AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH($1)
  4237         -
  4238         -AC_LIBTOOL_CONFIG($1)
  4239         -
  4240         -AC_LANG_RESTORE
  4241         -CC="$lt_save_CC"
  4242         -])# AC_LIBTOOL_LANG_GCJ_CONFIG
  4243         -
  4244         -
  4245         -# AC_LIBTOOL_LANG_RC_CONFIG
  4246         -# -------------------------
  4247         -# Ensure that the configuration vars for the Windows resource compiler are
  4248         -# suitably defined.  Those variables are subsequently used by
  4249         -# AC_LIBTOOL_CONFIG to write the compiler configuration to `libtool'.
  4250         -AC_DEFUN([AC_LIBTOOL_LANG_RC_CONFIG], [_LT_AC_LANG_RC_CONFIG(RC)])
  4251         -AC_DEFUN([_LT_AC_LANG_RC_CONFIG],
  4252         -[AC_LANG_SAVE
  4253         -
  4254         -# Source file extension for RC test sources.
  4255         -ac_ext=rc
  4256         -
  4257         -# Object file extension for compiled RC test sources.
  4258         -objext=o
  4259         -_LT_AC_TAGVAR(objext, $1)=$objext
  4260         -
  4261         -# Code to be used in simple compile tests
  4262         -lt_simple_compile_test_code='sample MENU { MENUITEM "&Soup", 100, CHECKED }'
  4263         -
  4264         -# Code to be used in simple link tests
  4265         -lt_simple_link_test_code="$lt_simple_compile_test_code"
  4266         -
  4267         -# ltmain only uses $CC for tagged configurations so make sure $CC is set.
  4268         -_LT_AC_SYS_COMPILER
  4269         -
  4270         -# save warnings/boilerplate of simple test code
  4271         -_LT_COMPILER_BOILERPLATE
  4272         -_LT_LINKER_BOILERPLATE
  4273         -
  4274         -# Allow CC to be a program name with arguments.
  4275         -lt_save_CC="$CC"
  4276         -CC=${RC-"windres"}
  4277         -compiler=$CC
  4278         -_LT_AC_TAGVAR(compiler, $1)=$CC
  4279         -_LT_CC_BASENAME([$compiler])
  4280         -_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes
  4281         -
  4282         -AC_LIBTOOL_CONFIG($1)
  4283         -
  4284         -AC_LANG_RESTORE
  4285         -CC="$lt_save_CC"
  4286         -])# AC_LIBTOOL_LANG_RC_CONFIG
  4287         -
  4288         -
  4289         -# AC_LIBTOOL_CONFIG([TAGNAME])
  4290         -# ----------------------------
  4291         -# If TAGNAME is not passed, then create an initial libtool script
  4292         -# with a default configuration from the untagged config vars.  Otherwise
  4293         -# add code to config.status for appending the configuration named by
  4294         -# TAGNAME from the matching tagged config vars.
  4295         -AC_DEFUN([AC_LIBTOOL_CONFIG],
  4296         -[# The else clause should only fire when bootstrapping the
  4297         -# libtool distribution, otherwise you forgot to ship ltmain.sh
  4298         -# with your package, and you will get complaints that there are
  4299         -# no rules to generate ltmain.sh.
  4300         -if test -f "$ltmain"; then
  4301         -  # See if we are running on zsh, and set the options which allow our commands through
  4302         -  # without removal of \ escapes.
  4303         -  if test -n "${ZSH_VERSION+set}" ; then
  4304         -    setopt NO_GLOB_SUBST
  4305         -  fi
  4306         -  # Now quote all the things that may contain metacharacters while being
  4307         -  # careful not to overquote the AC_SUBSTed values.  We take copies of the
  4308         -  # variables and quote the copies for generation of the libtool script.
  4309         -  for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC LTCFLAGS NM \
  4310         -    SED SHELL STRIP \
  4311         -    libname_spec library_names_spec soname_spec extract_expsyms_cmds \
  4312         -    old_striplib striplib file_magic_cmd finish_cmds finish_eval \
  4313         -    deplibs_check_method reload_flag reload_cmds need_locks \
  4314         -    lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \
  4315         -    lt_cv_sys_global_symbol_to_c_name_address \
  4316         -    sys_lib_search_path_spec sys_lib_dlsearch_path_spec \
  4317         -    old_postinstall_cmds old_postuninstall_cmds \
  4318         -    _LT_AC_TAGVAR(compiler, $1) \
  4319         -    _LT_AC_TAGVAR(CC, $1) \
  4320         -    _LT_AC_TAGVAR(LD, $1) \
  4321         -    _LT_AC_TAGVAR(lt_prog_compiler_wl, $1) \
  4322         -    _LT_AC_TAGVAR(lt_prog_compiler_pic, $1) \
  4323         -    _LT_AC_TAGVAR(lt_prog_compiler_static, $1) \
  4324         -    _LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) \
  4325         -    _LT_AC_TAGVAR(export_dynamic_flag_spec, $1) \
  4326         -    _LT_AC_TAGVAR(thread_safe_flag_spec, $1) \
  4327         -    _LT_AC_TAGVAR(whole_archive_flag_spec, $1) \
  4328         -    _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1) \
  4329         -    _LT_AC_TAGVAR(old_archive_cmds, $1) \
  4330         -    _LT_AC_TAGVAR(old_archive_from_new_cmds, $1) \
  4331         -    _LT_AC_TAGVAR(predep_objects, $1) \
  4332         -    _LT_AC_TAGVAR(postdep_objects, $1) \
  4333         -    _LT_AC_TAGVAR(predeps, $1) \
  4334         -    _LT_AC_TAGVAR(postdeps, $1) \
  4335         -    _LT_AC_TAGVAR(compiler_lib_search_path, $1) \
  4336         -    _LT_AC_TAGVAR(compiler_lib_search_dirs, $1) \
  4337         -    _LT_AC_TAGVAR(archive_cmds, $1) \
  4338         -    _LT_AC_TAGVAR(archive_expsym_cmds, $1) \
  4339         -    _LT_AC_TAGVAR(postinstall_cmds, $1) \
  4340         -    _LT_AC_TAGVAR(postuninstall_cmds, $1) \
  4341         -    _LT_AC_TAGVAR(old_archive_from_expsyms_cmds, $1) \
  4342         -    _LT_AC_TAGVAR(allow_undefined_flag, $1) \
  4343         -    _LT_AC_TAGVAR(no_undefined_flag, $1) \
  4344         -    _LT_AC_TAGVAR(export_symbols_cmds, $1) \
  4345         -    _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1) \
  4346         -    _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1) \
  4347         -    _LT_AC_TAGVAR(hardcode_libdir_separator, $1) \
  4348         -    _LT_AC_TAGVAR(hardcode_automatic, $1) \
  4349         -    _LT_AC_TAGVAR(module_cmds, $1) \
  4350         -    _LT_AC_TAGVAR(module_expsym_cmds, $1) \
  4351         -    _LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1) \
  4352         -    _LT_AC_TAGVAR(fix_srcfile_path, $1) \
  4353         -    _LT_AC_TAGVAR(exclude_expsyms, $1) \
  4354         -    _LT_AC_TAGVAR(include_expsyms, $1); do
  4355         -
  4356         -    case $var in
  4357         -    _LT_AC_TAGVAR(old_archive_cmds, $1) | \
  4358         -    _LT_AC_TAGVAR(old_archive_from_new_cmds, $1) | \
  4359         -    _LT_AC_TAGVAR(archive_cmds, $1) | \
  4360         -    _LT_AC_TAGVAR(archive_expsym_cmds, $1) | \
  4361         -    _LT_AC_TAGVAR(module_cmds, $1) | \
  4362         -    _LT_AC_TAGVAR(module_expsym_cmds, $1) | \
  4363         -    _LT_AC_TAGVAR(old_archive_from_expsyms_cmds, $1) | \
  4364         -    _LT_AC_TAGVAR(export_symbols_cmds, $1) | \
  4365         -    extract_expsyms_cmds | reload_cmds | finish_cmds | \
  4366         -    postinstall_cmds | postuninstall_cmds | \
  4367         -    old_postinstall_cmds | old_postuninstall_cmds | \
  4368         -    sys_lib_search_path_spec | sys_lib_dlsearch_path_spec)
  4369         -      # Double-quote double-evaled strings.
  4370         -      eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\""
  4371         -      ;;
  4372         -    *)
  4373         -      eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\""
  4374         -      ;;
  4375         -    esac
  4376         -  done
  4377         -
  4378         -  case $lt_echo in
  4379         -  *'\[$]0 --fallback-echo"')
  4380         -    lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\[$]0 --fallback-echo"[$]/[$]0 --fallback-echo"/'`
  4381         -    ;;
  4382         -  esac
  4383         -
  4384         -ifelse([$1], [],
  4385         -  [cfgfile="${ofile}T"
  4386         -  trap "$rm \"$cfgfile\"; exit 1" 1 2 15
  4387         -  $rm -f "$cfgfile"
  4388         -  AC_MSG_NOTICE([creating $ofile])],
  4389         -  [cfgfile="$ofile"])
  4390         -
  4391         -  cat <<__EOF__ >> "$cfgfile"
  4392         -ifelse([$1], [],
  4393         -[#! $SHELL
  4394         -
  4395         -# `$echo "$cfgfile" | sed 's%^.*/%%'` - Provide generalized library-building support services.
  4396         -# Generated automatically by $PROGRAM (GNU $PACKAGE $VERSION$TIMESTAMP)
  4397         -# NOTE: Changes made to this file will be lost: look at ltmain.sh.
  4398         -#
  4399         -# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008
  4400         -# Free Software Foundation, Inc.
  4401         -#
  4402         -# This file is part of GNU Libtool:
  4403         -# Originally by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
           23  +# pkg.m4 - Macros to locate and utilise pkg-config.            -*- Autoconf -*-
           24  +# serial 1 (pkg-config-0.24)
           25  +# 
           26  +# Copyright © 2004 Scott James Remnant <scott@netsplit.com>.
  4404     27   #
  4405     28   # This program is free software; you can redistribute it and/or modify
  4406     29   # it under the terms of the GNU General Public License as published by
  4407     30   # the Free Software Foundation; either version 2 of the License, or
  4408     31   # (at your option) any later version.
  4409     32   #
  4410     33   # This program is distributed in the hope that it will be useful, but
  4411     34   # WITHOUT ANY WARRANTY; without even the implied warranty of
  4412     35   # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  4413     36   # General Public License for more details.
  4414     37   #
  4415     38   # You should have received a copy of the GNU General Public License
  4416     39   # along with this program; if not, write to the Free Software
  4417         -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
           40  +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
  4418     41   #
  4419     42   # As a special exception to the GNU General Public License, if you
  4420     43   # distribute this file as part of a program that contains a
  4421     44   # configuration script generated by Autoconf, you may include it under
  4422     45   # the same distribution terms that you use for the rest of that program.
  4423     46   
  4424         -# A sed program that does not truncate output.
  4425         -SED=$lt_SED
  4426         -
  4427         -# Sed that helps us avoid accidentally triggering echo(1) options like -n.
  4428         -Xsed="$SED -e 1s/^X//"
  4429         -
  4430         -# The HP-UX ksh and POSIX shell print the target directory to stdout
  4431         -# if CDPATH is set.
  4432         -(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
  4433         -
  4434         -# The names of the tagged configurations supported by this script.
  4435         -available_tags=
  4436         -
  4437         -# ### BEGIN LIBTOOL CONFIG],
  4438         -[# ### BEGIN LIBTOOL TAG CONFIG: $tagname])
  4439         -
  4440         -# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
  4441         -
  4442         -# Shell to use when invoking shell scripts.
  4443         -SHELL=$lt_SHELL
  4444         -
  4445         -# Whether or not to build shared libraries.
  4446         -build_libtool_libs=$enable_shared
  4447         -
  4448         -# Whether or not to build static libraries.
  4449         -build_old_libs=$enable_static
  4450         -
  4451         -# Whether or not to add -lc for building shared libraries.
  4452         -build_libtool_need_lc=$_LT_AC_TAGVAR(archive_cmds_need_lc, $1)
  4453         -
  4454         -# Whether or not to disallow shared libs when runtime libs are static
  4455         -allow_libtool_libs_with_static_runtimes=$_LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)
  4456         -
  4457         -# Whether or not to optimize for fast installation.
  4458         -fast_install=$enable_fast_install
  4459         -
  4460         -# The host system.
  4461         -host_alias=$host_alias
  4462         -host=$host
  4463         -host_os=$host_os
  4464         -
  4465         -# The build system.
  4466         -build_alias=$build_alias
  4467         -build=$build
  4468         -build_os=$build_os
  4469         -
  4470         -# An echo program that does not interpret backslashes.
  4471         -echo=$lt_echo
  4472         -
  4473         -# The archiver.
  4474         -AR=$lt_AR
  4475         -AR_FLAGS=$lt_AR_FLAGS
  4476         -
  4477         -# A C compiler.
  4478         -LTCC=$lt_LTCC
  4479         -
  4480         -# LTCC compiler flags.
  4481         -LTCFLAGS=$lt_LTCFLAGS
  4482         -
  4483         -# A language-specific compiler.
  4484         -CC=$lt_[]_LT_AC_TAGVAR(compiler, $1)
  4485         -
  4486         -# Is the compiler the GNU C compiler?
  4487         -with_gcc=$_LT_AC_TAGVAR(GCC, $1)
  4488         -
  4489         -# An ERE matcher.
  4490         -EGREP=$lt_EGREP
  4491         -
  4492         -# The linker used to build libraries.
  4493         -LD=$lt_[]_LT_AC_TAGVAR(LD, $1)
  4494         -
  4495         -# Whether we need hard or soft links.
  4496         -LN_S=$lt_LN_S
  4497         -
  4498         -# A BSD-compatible nm program.
  4499         -NM=$lt_NM
  4500         -
  4501         -# A symbol stripping program
  4502         -STRIP=$lt_STRIP
  4503         -
  4504         -# Used to examine libraries when file_magic_cmd begins "file"
  4505         -MAGIC_CMD=$MAGIC_CMD
  4506         -
  4507         -# Used on cygwin: DLL creation program.
  4508         -DLLTOOL="$DLLTOOL"
  4509         -
  4510         -# Used on cygwin: object dumper.
  4511         -OBJDUMP="$OBJDUMP"
  4512         -
  4513         -# Used on cygwin: assembler.
  4514         -AS="$AS"
  4515         -
  4516         -# The name of the directory that contains temporary libtool files.
  4517         -objdir=$objdir
  4518         -
  4519         -# How to create reloadable object files.
  4520         -reload_flag=$lt_reload_flag
  4521         -reload_cmds=$lt_reload_cmds
  4522         -
  4523         -# How to pass a linker flag through the compiler.
  4524         -wl=$lt_[]_LT_AC_TAGVAR(lt_prog_compiler_wl, $1)
  4525         -
  4526         -# Object file suffix (normally "o").
  4527         -objext="$ac_objext"
  4528         -
  4529         -# Old archive suffix (normally "a").
  4530         -libext="$libext"
  4531         -
  4532         -# Shared library suffix (normally ".so").
  4533         -shrext_cmds='$shrext_cmds'
  4534         -
  4535         -# Executable file suffix (normally "").
  4536         -exeext="$exeext"
  4537         -
  4538         -# Additional compiler flags for building library objects.
  4539         -pic_flag=$lt_[]_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)
  4540         -pic_mode=$pic_mode
  4541         -
  4542         -# What is the maximum length of a command?
  4543         -max_cmd_len=$lt_cv_sys_max_cmd_len
  4544         -
  4545         -# Does compiler simultaneously support -c and -o options?
  4546         -compiler_c_o=$lt_[]_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)
  4547         -
  4548         -# Must we lock files when doing compilation?
  4549         -need_locks=$lt_need_locks
  4550         -
  4551         -# Do we need the lib prefix for modules?
  4552         -need_lib_prefix=$need_lib_prefix
  4553         -
  4554         -# Do we need a version for libraries?
  4555         -need_version=$need_version
  4556         -
  4557         -# Whether dlopen is supported.
  4558         -dlopen_support=$enable_dlopen
  4559         -
  4560         -# Whether dlopen of programs is supported.
  4561         -dlopen_self=$enable_dlopen_self
  4562         -
  4563         -# Whether dlopen of statically linked programs is supported.
  4564         -dlopen_self_static=$enable_dlopen_self_static
  4565         -
  4566         -# Compiler flag to prevent dynamic linking.
  4567         -link_static_flag=$lt_[]_LT_AC_TAGVAR(lt_prog_compiler_static, $1)
  4568         -
  4569         -# Compiler flag to turn off builtin functions.
  4570         -no_builtin_flag=$lt_[]_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)
  4571         -
  4572         -# Compiler flag to allow reflexive dlopens.
  4573         -export_dynamic_flag_spec=$lt_[]_LT_AC_TAGVAR(export_dynamic_flag_spec, $1)
  4574         -
  4575         -# Compiler flag to generate shared objects directly from archives.
  4576         -whole_archive_flag_spec=$lt_[]_LT_AC_TAGVAR(whole_archive_flag_spec, $1)
  4577         -
  4578         -# Compiler flag to generate thread-safe objects.
  4579         -thread_safe_flag_spec=$lt_[]_LT_AC_TAGVAR(thread_safe_flag_spec, $1)
  4580         -
  4581         -# Library versioning type.
  4582         -version_type=$version_type
  4583         -
  4584         -# Format of library name prefix.
  4585         -libname_spec=$lt_libname_spec
  4586         -
  4587         -# List of archive names.  First name is the real one, the rest are links.
  4588         -# The last name is the one that the linker finds with -lNAME.
  4589         -library_names_spec=$lt_library_names_spec
  4590         -
  4591         -# The coded name of the library, if different from the real name.
  4592         -soname_spec=$lt_soname_spec
  4593         -
  4594         -# Commands used to build and install an old-style archive.
  4595         -RANLIB=$lt_RANLIB
  4596         -old_archive_cmds=$lt_[]_LT_AC_TAGVAR(old_archive_cmds, $1)
  4597         -old_postinstall_cmds=$lt_old_postinstall_cmds
  4598         -old_postuninstall_cmds=$lt_old_postuninstall_cmds
  4599         -
  4600         -# Create an old-style archive from a shared archive.
  4601         -old_archive_from_new_cmds=$lt_[]_LT_AC_TAGVAR(old_archive_from_new_cmds, $1)
  4602         -
  4603         -# Create a temporary old-style archive to link instead of a shared archive.
  4604         -old_archive_from_expsyms_cmds=$lt_[]_LT_AC_TAGVAR(old_archive_from_expsyms_cmds, $1)
  4605         -
  4606         -# Commands used to build and install a shared archive.
  4607         -archive_cmds=$lt_[]_LT_AC_TAGVAR(archive_cmds, $1)
  4608         -archive_expsym_cmds=$lt_[]_LT_AC_TAGVAR(archive_expsym_cmds, $1)
  4609         -postinstall_cmds=$lt_postinstall_cmds
  4610         -postuninstall_cmds=$lt_postuninstall_cmds
  4611         -
  4612         -# Commands used to build a loadable module (assumed same as above if empty)
  4613         -module_cmds=$lt_[]_LT_AC_TAGVAR(module_cmds, $1)
  4614         -module_expsym_cmds=$lt_[]_LT_AC_TAGVAR(module_expsym_cmds, $1)
  4615         -
  4616         -# Commands to strip libraries.
  4617         -old_striplib=$lt_old_striplib
  4618         -striplib=$lt_striplib
  4619         -
  4620         -# Dependencies to place before the objects being linked to create a
  4621         -# shared library.
  4622         -predep_objects=$lt_[]_LT_AC_TAGVAR(predep_objects, $1)
  4623         -
  4624         -# Dependencies to place after the objects being linked to create a
  4625         -# shared library.
  4626         -postdep_objects=$lt_[]_LT_AC_TAGVAR(postdep_objects, $1)
  4627         -
  4628         -# Dependencies to place before the objects being linked to create a
  4629         -# shared library.
  4630         -predeps=$lt_[]_LT_AC_TAGVAR(predeps, $1)
  4631         -
  4632         -# Dependencies to place after the objects being linked to create a
  4633         -# shared library.
  4634         -postdeps=$lt_[]_LT_AC_TAGVAR(postdeps, $1)
  4635         -
  4636         -# The directories searched by this compiler when creating a shared
  4637         -# library
  4638         -compiler_lib_search_dirs=$lt_[]_LT_AC_TAGVAR(compiler_lib_search_dirs, $1)
  4639         -
  4640         -# The library search path used internally by the compiler when linking
  4641         -# a shared library.
  4642         -compiler_lib_search_path=$lt_[]_LT_AC_TAGVAR(compiler_lib_search_path, $1)
  4643         -
  4644         -# Method to check whether dependent libraries are shared objects.
  4645         -deplibs_check_method=$lt_deplibs_check_method
  4646         -
  4647         -# Command to use when deplibs_check_method == file_magic.
  4648         -file_magic_cmd=$lt_file_magic_cmd
  4649         -
  4650         -# Flag that allows shared libraries with undefined symbols to be built.
  4651         -allow_undefined_flag=$lt_[]_LT_AC_TAGVAR(allow_undefined_flag, $1)
  4652         -
  4653         -# Flag that forces no undefined symbols.
  4654         -no_undefined_flag=$lt_[]_LT_AC_TAGVAR(no_undefined_flag, $1)
  4655         -
  4656         -# Commands used to finish a libtool library installation in a directory.
  4657         -finish_cmds=$lt_finish_cmds
  4658         -
  4659         -# Same as above, but a single script fragment to be evaled but not shown.
  4660         -finish_eval=$lt_finish_eval
  4661         -
  4662         -# Take the output of nm and produce a listing of raw symbols and C names.
  4663         -global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe
  4664         -
  4665         -# Transform the output of nm in a proper C declaration
  4666         -global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl
  4667         -
  4668         -# Transform the output of nm in a C name address pair
  4669         -global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address
  4670         -
  4671         -# This is the shared library runtime path variable.
  4672         -runpath_var=$runpath_var
  4673         -
  4674         -# This is the shared library path variable.
  4675         -shlibpath_var=$shlibpath_var
  4676         -
  4677         -# Is shlibpath searched before the hard-coded library search path?
  4678         -shlibpath_overrides_runpath=$shlibpath_overrides_runpath
  4679         -
  4680         -# How to hardcode a shared library path into an executable.
  4681         -hardcode_action=$_LT_AC_TAGVAR(hardcode_action, $1)
  4682         -
  4683         -# Whether we should hardcode library paths into libraries.
  4684         -hardcode_into_libs=$hardcode_into_libs
  4685         -
  4686         -# Flag to hardcode \$libdir into a binary during linking.
  4687         -# This must work even if \$libdir does not exist.
  4688         -hardcode_libdir_flag_spec=$lt_[]_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)
  4689         -
  4690         -# If ld is used when linking, flag to hardcode \$libdir into
  4691         -# a binary during linking. This must work even if \$libdir does
  4692         -# not exist.
  4693         -hardcode_libdir_flag_spec_ld=$lt_[]_LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)
  4694         -
  4695         -# Whether we need a single -rpath flag with a separated argument.
  4696         -hardcode_libdir_separator=$lt_[]_LT_AC_TAGVAR(hardcode_libdir_separator, $1)
  4697         -
  4698         -# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the
  4699         -# resulting binary.
  4700         -hardcode_direct=$_LT_AC_TAGVAR(hardcode_direct, $1)
  4701         -
  4702         -# Set to yes if using the -LDIR flag during linking hardcodes DIR into the
  4703         -# resulting binary.
  4704         -hardcode_minus_L=$_LT_AC_TAGVAR(hardcode_minus_L, $1)
  4705         -
  4706         -# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into
  4707         -# the resulting binary.
  4708         -hardcode_shlibpath_var=$_LT_AC_TAGVAR(hardcode_shlibpath_var, $1)
  4709         -
  4710         -# Set to yes if building a shared library automatically hardcodes DIR into the library
  4711         -# and all subsequent libraries and executables linked against it.
  4712         -hardcode_automatic=$_LT_AC_TAGVAR(hardcode_automatic, $1)
  4713         -
  4714         -# Variables whose values should be saved in libtool wrapper scripts and
  4715         -# restored at relink time.
  4716         -variables_saved_for_relink="$variables_saved_for_relink"
  4717         -
  4718         -# Whether libtool must link a program against all its dependency libraries.
  4719         -link_all_deplibs=$_LT_AC_TAGVAR(link_all_deplibs, $1)
  4720         -
  4721         -# Compile-time system search path for libraries
  4722         -sys_lib_search_path_spec=$lt_sys_lib_search_path_spec
  4723         -
  4724         -# Run-time system search path for libraries
  4725         -sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec
  4726         -
  4727         -# Fix the shell variable \$srcfile for the compiler.
  4728         -fix_srcfile_path=$lt_fix_srcfile_path
  4729         -
  4730         -# Set to yes if exported symbols are required.
  4731         -always_export_symbols=$_LT_AC_TAGVAR(always_export_symbols, $1)
  4732         -
  4733         -# The commands to list exported symbols.
  4734         -export_symbols_cmds=$lt_[]_LT_AC_TAGVAR(export_symbols_cmds, $1)
  4735         -
  4736         -# The commands to extract the exported symbol list from a shared archive.
  4737         -extract_expsyms_cmds=$lt_extract_expsyms_cmds
  4738         -
  4739         -# Symbols that should not be listed in the preloaded symbols.
  4740         -exclude_expsyms=$lt_[]_LT_AC_TAGVAR(exclude_expsyms, $1)
  4741         -
  4742         -# Symbols that must always be exported.
  4743         -include_expsyms=$lt_[]_LT_AC_TAGVAR(include_expsyms, $1)
  4744         -
  4745         -ifelse([$1],[],
  4746         -[# ### END LIBTOOL CONFIG],
  4747         -[# ### END LIBTOOL TAG CONFIG: $tagname])
  4748         -
  4749         -__EOF__
  4750         -
  4751         -ifelse([$1],[], [
  4752         -  case $host_os in
  4753         -  aix3*)
  4754         -    cat <<\EOF >> "$cfgfile"
  4755         -
  4756         -# AIX sometimes has problems with the GCC collect2 program.  For some
  4757         -# reason, if we set the COLLECT_NAMES environment variable, the problems
  4758         -# vanish in a puff of smoke.
  4759         -if test "X${COLLECT_NAMES+set}" != Xset; then
  4760         -  COLLECT_NAMES=
  4761         -  export COLLECT_NAMES
  4762         -fi
  4763         -EOF
  4764         -    ;;
  4765         -  esac
  4766         -
  4767         -  # We use sed instead of cat because bash on DJGPP gets confused if
  4768         -  # if finds mixed CR/LF and LF-only lines.  Since sed operates in
  4769         -  # text mode, it properly converts lines to CR/LF.  This bash problem
  4770         -  # is reportedly fixed, but why not run on old versions too?
  4771         -  sed '$q' "$ltmain" >> "$cfgfile" || (rm -f "$cfgfile"; exit 1)
  4772         -
  4773         -  mv -f "$cfgfile" "$ofile" || \
  4774         -    (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile")
  4775         -  chmod +x "$ofile"
  4776         -])
           47  +# PKG_PROG_PKG_CONFIG([MIN-VERSION])
           48  +# ----------------------------------
           49  +AC_DEFUN([PKG_PROG_PKG_CONFIG],
           50  +[m4_pattern_forbid([^_?PKG_[A-Z_]+$])
           51  +m4_pattern_allow([^PKG_CONFIG(_PATH)?$])
           52  +AC_ARG_VAR([PKG_CONFIG], [path to pkg-config utility])
           53  +AC_ARG_VAR([PKG_CONFIG_PATH], [directories to add to pkg-config's search path])
           54  +AC_ARG_VAR([PKG_CONFIG_LIBDIR], [path overriding pkg-config's built-in search path])
           55  +
           56  +if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then
           57  +	AC_PATH_TOOL([PKG_CONFIG], [pkg-config])
           58  +fi
           59  +if test -n "$PKG_CONFIG"; then
           60  +	_pkg_min_version=m4_default([$1], [0.9.0])
           61  +	AC_MSG_CHECKING([pkg-config is at least version $_pkg_min_version])
           62  +	if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then
           63  +		AC_MSG_RESULT([yes])
           64  +	else
           65  +		AC_MSG_RESULT([no])
           66  +		PKG_CONFIG=""
           67  +	fi
           68  +fi[]dnl
           69  +])# PKG_PROG_PKG_CONFIG
           70  +
           71  +# PKG_CHECK_EXISTS(MODULES, [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND])
           72  +#
           73  +# Check to see whether a particular set of modules exists.  Similar
           74  +# to PKG_CHECK_MODULES(), but does not set variables or print errors.
           75  +#
           76  +# Please remember that m4 expands AC_REQUIRE([PKG_PROG_PKG_CONFIG])
           77  +# only at the first occurence in configure.ac, so if the first place
           78  +# it's called might be skipped (such as if it is within an "if", you
           79  +# have to call PKG_CHECK_EXISTS manually
           80  +# --------------------------------------------------------------
           81  +AC_DEFUN([PKG_CHECK_EXISTS],
           82  +[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl
           83  +if test -n "$PKG_CONFIG" && \
           84  +    AC_RUN_LOG([$PKG_CONFIG --exists --print-errors "$1"]); then
           85  +  m4_default([$2], [:])
           86  +m4_ifvaln([$3], [else
           87  +  $3])dnl
           88  +fi])
           89  +
           90  +# _PKG_CONFIG([VARIABLE], [COMMAND], [MODULES])
           91  +# ---------------------------------------------
           92  +m4_define([_PKG_CONFIG],
           93  +[if test -n "$$1"; then
           94  +    pkg_cv_[]$1="$$1"
           95  + elif test -n "$PKG_CONFIG"; then
           96  +    PKG_CHECK_EXISTS([$3],
           97  +                     [pkg_cv_[]$1=`$PKG_CONFIG --[]$2 "$3" 2>/dev/null`],
           98  +		     [pkg_failed=yes])
           99  + else
          100  +    pkg_failed=untried
          101  +fi[]dnl
          102  +])# _PKG_CONFIG
          103  +
          104  +# _PKG_SHORT_ERRORS_SUPPORTED
          105  +# -----------------------------
          106  +AC_DEFUN([_PKG_SHORT_ERRORS_SUPPORTED],
          107  +[AC_REQUIRE([PKG_PROG_PKG_CONFIG])
          108  +if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
          109  +        _pkg_short_errors_supported=yes
          110  +else
          111  +        _pkg_short_errors_supported=no
          112  +fi[]dnl
          113  +])# _PKG_SHORT_ERRORS_SUPPORTED
          114  +
          115  +
          116  +# PKG_CHECK_MODULES(VARIABLE-PREFIX, MODULES, [ACTION-IF-FOUND],
          117  +# [ACTION-IF-NOT-FOUND])
          118  +#
          119  +#
          120  +# Note that if there is a possibility the first call to
          121  +# PKG_CHECK_MODULES might not happen, you should be sure to include an
          122  +# explicit call to PKG_PROG_PKG_CONFIG in your configure.ac
          123  +#
          124  +#
          125  +# --------------------------------------------------------------
          126  +AC_DEFUN([PKG_CHECK_MODULES],
          127  +[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl
          128  +AC_ARG_VAR([$1][_CFLAGS], [C compiler flags for $1, overriding pkg-config])dnl
          129  +AC_ARG_VAR([$1][_LIBS], [linker flags for $1, overriding pkg-config])dnl
          130  +
          131  +pkg_failed=no
          132  +AC_MSG_CHECKING([for $1])
          133  +
          134  +_PKG_CONFIG([$1][_CFLAGS], [cflags], [$2])
          135  +_PKG_CONFIG([$1][_LIBS], [libs], [$2])
          136  +
          137  +m4_define([_PKG_TEXT], [Alternatively, you may set the environment variables $1[]_CFLAGS
          138  +and $1[]_LIBS to avoid the need to call pkg-config.
          139  +See the pkg-config man page for more details.])
          140  +
          141  +if test $pkg_failed = yes; then
          142  +   	AC_MSG_RESULT([no])
          143  +        _PKG_SHORT_ERRORS_SUPPORTED
          144  +        if test $_pkg_short_errors_supported = yes; then
          145  +	        $1[]_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors "$2" 2>&1`
          146  +        else 
          147  +	        $1[]_PKG_ERRORS=`$PKG_CONFIG --print-errors "$2" 2>&1`
          148  +        fi
          149  +	# Put the nasty error message in config.log where it belongs
          150  +	echo "$$1[]_PKG_ERRORS" >&AS_MESSAGE_LOG_FD
          151  +
          152  +	m4_default([$4], [AC_MSG_ERROR(
          153  +[Package requirements ($2) were not met:
          154  +
          155  +$$1_PKG_ERRORS
          156  +
          157  +Consider adjusting the PKG_CONFIG_PATH environment variable if you
          158  +installed software in a non-standard prefix.
          159  +
          160  +_PKG_TEXT])
          161  +        ])
          162  +elif test $pkg_failed = untried; then
          163  +     	AC_MSG_RESULT([no])
          164  +	m4_default([$4], [AC_MSG_FAILURE(
          165  +[The pkg-config script could not be found or is too old.  Make sure it
          166  +is in your PATH or set the PKG_CONFIG environment variable to the full
          167  +path to pkg-config.
          168  +
          169  +_PKG_TEXT
          170  +
          171  +To get pkg-config, see <http://pkg-config.freedesktop.org/>.])
          172  +        ])
  4777    173   else
  4778         -  # If there is no Makefile yet, we rely on a make rule to execute
  4779         -  # `config.status --recheck' to rerun these tests and create the
  4780         -  # libtool script then.
  4781         -  ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'`
  4782         -  if test -f "$ltmain_in"; then
  4783         -    test -f Makefile && make "$ltmain"
  4784         -  fi
  4785         -fi
  4786         -])# AC_LIBTOOL_CONFIG
  4787         -
  4788         -
  4789         -# AC_LIBTOOL_PROG_COMPILER_NO_RTTI([TAGNAME])
  4790         -# -------------------------------------------
  4791         -AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_NO_RTTI],
  4792         -[AC_REQUIRE([_LT_AC_SYS_COMPILER])dnl
  4793         -
  4794         -_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=
  4795         -
  4796         -if test "$GCC" = yes; then
  4797         -  _LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin'
  4798         -
  4799         -  AC_LIBTOOL_COMPILER_OPTION([if $compiler supports -fno-rtti -fno-exceptions],
  4800         -    lt_cv_prog_compiler_rtti_exceptions,
  4801         -    [-fno-rtti -fno-exceptions], [],
  4802         -    [_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)="$_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) -fno-rtti -fno-exceptions"])
  4803         -fi
  4804         -])# AC_LIBTOOL_PROG_COMPILER_NO_RTTI
  4805         -
  4806         -
  4807         -# AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE
  4808         -# ---------------------------------
  4809         -AC_DEFUN([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE],
  4810         -[AC_REQUIRE([AC_CANONICAL_HOST])
  4811         -AC_REQUIRE([LT_AC_PROG_SED])
  4812         -AC_REQUIRE([AC_PROG_NM])
  4813         -AC_REQUIRE([AC_OBJEXT])
  4814         -# Check for command to grab the raw symbol name followed by C symbol from nm.
  4815         -AC_MSG_CHECKING([command to parse $NM output from $compiler object])
  4816         -AC_CACHE_VAL([lt_cv_sys_global_symbol_pipe],
  4817         -[
  4818         -# These are sane defaults that work on at least a few old systems.
  4819         -# [They come from Ultrix.  What could be older than Ultrix?!! ;)]
  4820         -
  4821         -# Character class describing NM global symbol codes.
  4822         -symcode='[[BCDEGRST]]'
  4823         -
  4824         -# Regexp to match symbols that can be accessed directly from C.
  4825         -sympat='\([[_A-Za-z]][[_A-Za-z0-9]]*\)'
  4826         -
  4827         -# Transform an extracted symbol line into a proper C declaration
  4828         -lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^. .* \(.*\)$/extern int \1;/p'"
  4829         -
  4830         -# Transform an extracted symbol line into symbol name and symbol address
  4831         -lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\) $/  {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode \([[^ ]]*\) \([[^ ]]*\)$/  {\"\2\", (lt_ptr) \&\2},/p'"
  4832         -
  4833         -# Define system-specific variables.
  4834         -case $host_os in
  4835         -aix*)
  4836         -  symcode='[[BCDT]]'
  4837         -  ;;
  4838         -cygwin* | mingw* | pw32*)
  4839         -  symcode='[[ABCDGISTW]]'
  4840         -  ;;
  4841         -hpux*) # Its linker distinguishes data from code symbols
  4842         -  if test "$host_cpu" = ia64; then
  4843         -    symcode='[[ABCDEGRST]]'
  4844         -  fi
  4845         -  lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'"
  4846         -  lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\) $/  {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/  {\"\2\", (lt_ptr) \&\2},/p'"
  4847         -  ;;
  4848         -linux* | k*bsd*-gnu)
  4849         -  if test "$host_cpu" = ia64; then
  4850         -    symcode='[[ABCDGIRSTW]]'
  4851         -    lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'"
  4852         -    lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\) $/  {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/  {\"\2\", (lt_ptr) \&\2},/p'"
  4853         -  fi
  4854         -  ;;
  4855         -irix* | nonstopux*)
  4856         -  symcode='[[BCDEGRST]]'
  4857         -  ;;
  4858         -osf*)
  4859         -  symcode='[[BCDEGQRST]]'
  4860         -  ;;
  4861         -solaris*)
  4862         -  symcode='[[BDRT]]'
  4863         -  ;;
  4864         -sco3.2v5*)
  4865         -  symcode='[[DT]]'
  4866         -  ;;
  4867         -sysv4.2uw2*)
  4868         -  symcode='[[DT]]'
  4869         -  ;;
  4870         -sysv5* | sco5v6* | unixware* | OpenUNIX*)
  4871         -  symcode='[[ABDT]]'
  4872         -  ;;
  4873         -sysv4)
  4874         -  symcode='[[DFNSTU]]'
  4875         -  ;;
  4876         -esac
  4877         -
  4878         -# Handle CRLF in mingw tool chain
  4879         -opt_cr=
  4880         -case $build_os in
  4881         -mingw*)
  4882         -  opt_cr=`echo 'x\{0,1\}' | tr x '\015'` # option cr in regexp
  4883         -  ;;
  4884         -esac
  4885         -
  4886         -# If we're using GNU nm, then use its standard symbol codes.
  4887         -case `$NM -V 2>&1` in
  4888         -*GNU* | *'with BFD'*)
  4889         -  symcode='[[ABCDGIRSTW]]' ;;
  4890         -esac
  4891         -
  4892         -# Try without a prefix undercore, then with it.
  4893         -for ac_symprfx in "" "_"; do
  4894         -
  4895         -  # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol.
  4896         -  symxfrm="\\1 $ac_symprfx\\2 \\2"
  4897         -
  4898         -  # Write the raw and C identifiers.
  4899         -  lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[[ 	]]\($symcode$symcode*\)[[ 	]][[ 	]]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'"
  4900         -
  4901         -  # Check to see that the pipe works correctly.
  4902         -  pipe_works=no
  4903         -
  4904         -  rm -f conftest*
  4905         -  cat > conftest.$ac_ext <<EOF
  4906         -#ifdef __cplusplus
  4907         -extern "C" {
  4908         -#endif
  4909         -char nm_test_var;
  4910         -void nm_test_func(){}
  4911         -#ifdef __cplusplus
  4912         -}
  4913         -#endif
  4914         -int main(){nm_test_var='a';nm_test_func();return(0);}
  4915         -EOF
  4916         -
  4917         -  if AC_TRY_EVAL(ac_compile); then
  4918         -    # Now try to grab the symbols.
  4919         -    nlist=conftest.nm
  4920         -    if AC_TRY_EVAL(NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist) && test -s "$nlist"; then
  4921         -      # Try sorting and uniquifying the output.
  4922         -      if sort "$nlist" | uniq > "$nlist"T; then
  4923         -	mv -f "$nlist"T "$nlist"
  4924         -      else
  4925         -	rm -f "$nlist"T
  4926         -      fi
  4927         -
  4928         -      # Make sure that we snagged all the symbols we need.
  4929         -      if grep ' nm_test_var$' "$nlist" >/dev/null; then
  4930         -	if grep ' nm_test_func$' "$nlist" >/dev/null; then
  4931         -	  cat <<EOF > conftest.$ac_ext
  4932         -#ifdef __cplusplus
  4933         -extern "C" {
  4934         -#endif
  4935         -
  4936         -EOF
  4937         -	  # Now generate the symbol file.
  4938         -	  eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | grep -v main >> conftest.$ac_ext'
  4939         -
  4940         -	  cat <<EOF >> conftest.$ac_ext
  4941         -#if defined (__STDC__) && __STDC__
  4942         -# define lt_ptr_t void *
  4943         -#else
  4944         -# define lt_ptr_t char *
  4945         -# define const
  4946         -#endif
  4947         -
  4948         -/* The mapping between symbol names and symbols. */
  4949         -const struct {
  4950         -  const char *name;
  4951         -  lt_ptr_t address;
  4952         -}
  4953         -lt_preloaded_symbols[[]] =
  4954         -{
  4955         -EOF
  4956         -	  $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/  {\"\2\", (lt_ptr_t) \&\2},/" < "$nlist" | grep -v main >> conftest.$ac_ext
  4957         -	  cat <<\EOF >> conftest.$ac_ext
  4958         -  {0, (lt_ptr_t) 0}
  4959         -};
  4960         -
  4961         -#ifdef __cplusplus
  4962         -}
  4963         -#endif
  4964         -EOF
  4965         -	  # Now try linking the two files.
  4966         -	  mv conftest.$ac_objext conftstm.$ac_objext
  4967         -	  lt_save_LIBS="$LIBS"
  4968         -	  lt_save_CFLAGS="$CFLAGS"
  4969         -	  LIBS="conftstm.$ac_objext"
  4970         -	  CFLAGS="$CFLAGS$_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)"
  4971         -	  if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext}; then
  4972         -	    pipe_works=yes
  4973         -	  fi
  4974         -	  LIBS="$lt_save_LIBS"
  4975         -	  CFLAGS="$lt_save_CFLAGS"
  4976         -	else
  4977         -	  echo "cannot find nm_test_func in $nlist" >&AS_MESSAGE_LOG_FD
  4978         -	fi
  4979         -      else
  4980         -	echo "cannot find nm_test_var in $nlist" >&AS_MESSAGE_LOG_FD
  4981         -      fi
  4982         -    else
  4983         -      echo "cannot run $lt_cv_sys_global_symbol_pipe" >&AS_MESSAGE_LOG_FD
  4984         -    fi
  4985         -  else
  4986         -    echo "$progname: failed program was:" >&AS_MESSAGE_LOG_FD
  4987         -    cat conftest.$ac_ext >&5
  4988         -  fi
  4989         -  rm -rf conftest* conftst*
  4990         -
  4991         -  # Do not use the global_symbol_pipe unless it works.
  4992         -  if test "$pipe_works" = yes; then
  4993         -    break
  4994         -  else
  4995         -    lt_cv_sys_global_symbol_pipe=
  4996         -  fi
  4997         -done
  4998         -])
  4999         -if test -z "$lt_cv_sys_global_symbol_pipe"; then
  5000         -  lt_cv_sys_global_symbol_to_cdecl=
  5001         -fi
  5002         -if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then
  5003         -  AC_MSG_RESULT(failed)
  5004         -else
  5005         -  AC_MSG_RESULT(ok)
  5006         -fi
  5007         -]) # AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE
  5008         -
  5009         -
  5010         -# AC_LIBTOOL_PROG_COMPILER_PIC([TAGNAME])
  5011         -# ---------------------------------------
  5012         -AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_PIC],
  5013         -[_LT_AC_TAGVAR(lt_prog_compiler_wl, $1)=
  5014         -_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=
  5015         -_LT_AC_TAGVAR(lt_prog_compiler_static, $1)=
  5016         -
  5017         -AC_MSG_CHECKING([for $compiler option to produce PIC])
  5018         - ifelse([$1],[CXX],[
  5019         -  # C++ specific cases for pic, static, wl, etc.
  5020         -  if test "$GXX" = yes; then
  5021         -    _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
  5022         -    _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static'
  5023         -
  5024         -    case $host_os in
  5025         -    aix*)
  5026         -      # All AIX code is PIC.
  5027         -      if test "$host_cpu" = ia64; then
  5028         -	# AIX 5 now supports IA64 processor
  5029         -	_LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
  5030         -      fi
  5031         -      ;;
  5032         -    amigaos*)
  5033         -      # FIXME: we need at least 68020 code to build shared libraries, but
  5034         -      # adding the `-m68020' flag to GCC prevents building anything better,
  5035         -      # like `-m68040'.
  5036         -      _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4'
  5037         -      ;;
  5038         -    beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
  5039         -      # PIC is the default for these OSes.
  5040         -      ;;
  5041         -    mingw* | cygwin* | os2* | pw32*)
  5042         -      # This hack is so that the source file can tell whether it is being
  5043         -      # built for inclusion in a dll (and should export symbols for example).
  5044         -      # Although the cygwin gcc ignores -fPIC, still need this for old-style
  5045         -      # (--disable-auto-import) libraries
  5046         -      m4_if([$1], [GCJ], [],
  5047         -	[_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT'])
  5048         -      ;;
  5049         -    darwin* | rhapsody*)
  5050         -      # PIC is the default on this platform
  5051         -      # Common symbols not allowed in MH_DYLIB files
  5052         -      _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common'
  5053         -      ;;
  5054         -    *djgpp*)
  5055         -      # DJGPP does not support shared libraries at all
  5056         -      _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=
  5057         -      ;;
  5058         -    interix[[3-9]]*)
  5059         -      # Interix 3.x gcc -fpic/-fPIC options generate broken code.
  5060         -      # Instead, we relocate shared libraries at runtime.
  5061         -      ;;
  5062         -    sysv4*MP*)
  5063         -      if test -d /usr/nec; then
  5064         -	_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic
  5065         -      fi
  5066         -      ;;
  5067         -    hpux*)
  5068         -      # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
  5069         -      # not for PA HP-UX.
  5070         -      case $host_cpu in
  5071         -      hppa*64*|ia64*)
  5072         -	;;
  5073         -      *)
  5074         -	_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
  5075         -	;;
  5076         -      esac
  5077         -      ;;
  5078         -    *)
  5079         -      _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
  5080         -      ;;
  5081         -    esac
  5082         -  else
  5083         -    case $host_os in
  5084         -      aix[[4-9]]*)
  5085         -	# All AIX code is PIC.
  5086         -	if test "$host_cpu" = ia64; then
  5087         -	  # AIX 5 now supports IA64 processor
  5088         -	  _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
  5089         -	else
  5090         -	  _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp'
  5091         -	fi
  5092         -	;;
  5093         -      chorus*)
  5094         -	case $cc_basename in
  5095         -	cxch68*)
  5096         -	  # Green Hills C++ Compiler
  5097         -	  # _LT_AC_TAGVAR(lt_prog_compiler_static, $1)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a"
  5098         -	  ;;
  5099         -	esac
  5100         -	;;
  5101         -       darwin*)
  5102         -         # PIC is the default on this platform
  5103         -         # Common symbols not allowed in MH_DYLIB files
  5104         -         case $cc_basename in
  5105         -           xlc*)
  5106         -           _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-qnocommon'
  5107         -           _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
  5108         -           ;;
  5109         -         esac
  5110         -       ;;
  5111         -      dgux*)
  5112         -	case $cc_basename in
  5113         -	  ec++*)
  5114         -	    _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
  5115         -	    ;;
  5116         -	  ghcx*)
  5117         -	    # Green Hills C++ Compiler
  5118         -	    _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
  5119         -	    ;;
  5120         -	  *)
  5121         -	    ;;
  5122         -	esac
  5123         -	;;
  5124         -      freebsd* | dragonfly*)
  5125         -	# FreeBSD uses GNU C++
  5126         -	;;
  5127         -      hpux9* | hpux10* | hpux11*)
  5128         -	case $cc_basename in
  5129         -	  CC*)
  5130         -	    _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
  5131         -	    _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive'
  5132         -	    if test "$host_cpu" != ia64; then
  5133         -	      _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='+Z'
  5134         -	    fi
  5135         -	    ;;
  5136         -	  aCC*)
  5137         -	    _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
  5138         -	    _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive'
  5139         -	    case $host_cpu in
  5140         -	    hppa*64*|ia64*)
  5141         -	      # +Z the default
  5142         -	      ;;
  5143         -	    *)
  5144         -	      _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='+Z'
  5145         -	      ;;
  5146         -	    esac
  5147         -	    ;;
  5148         -	  *)
  5149         -	    ;;
  5150         -	esac
  5151         -	;;
  5152         -      interix*)
  5153         -	# This is c89, which is MS Visual C++ (no shared libs)
  5154         -	# Anyone wants to do a port?
  5155         -	;;
  5156         -      irix5* | irix6* | nonstopux*)
  5157         -	case $cc_basename in
  5158         -	  CC*)
  5159         -	    _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
  5160         -	    _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
  5161         -	    # CC pic flag -KPIC is the default.
  5162         -	    ;;
  5163         -	  *)
  5164         -	    ;;
  5165         -	esac
  5166         -	;;
  5167         -      linux* | k*bsd*-gnu)
  5168         -	case $cc_basename in
  5169         -	  KCC*)
  5170         -	    # KAI C++ Compiler
  5171         -	    _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,'
  5172         -	    _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
  5173         -	    ;;
  5174         -	  icpc* | ecpc*)
  5175         -	    # Intel C++
  5176         -	    _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
  5177         -	    _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
  5178         -	    _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static'
  5179         -	    ;;
  5180         -	  pgCC* | pgcpp*)
  5181         -	    # Portland Group C++ compiler.
  5182         -	    _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
  5183         -	    _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fpic'
  5184         -	    _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
  5185         -	    ;;
  5186         -	  cxx*)
  5187         -	    # Compaq C++
  5188         -	    # Make sure the PIC flag is empty.  It appears that all Alpha
  5189         -	    # Linux and Compaq Tru64 Unix objects are PIC.
  5190         -	    _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=
  5191         -	    _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
  5192         -	    ;;
  5193         -	  *)
  5194         -	    case `$CC -V 2>&1 | sed 5q` in
  5195         -	    *Sun\ C*)
  5196         -	      # Sun C++ 5.9
  5197         -	      _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
  5198         -	      _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
  5199         -	      _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld '
  5200         -	      ;;
  5201         -	    esac
  5202         -	    ;;
  5203         -	esac
  5204         -	;;
  5205         -      lynxos*)
  5206         -	;;
  5207         -      m88k*)
  5208         -	;;
  5209         -      mvs*)
  5210         -	case $cc_basename in
  5211         -	  cxx*)
  5212         -	    _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-W c,exportall'
  5213         -	    ;;
  5214         -	  *)
  5215         -	    ;;
  5216         -	esac
  5217         -	;;
  5218         -      netbsd* | netbsdelf*-gnu)
  5219         -	;;
  5220         -      osf3* | osf4* | osf5*)
  5221         -	case $cc_basename in
  5222         -	  KCC*)
  5223         -	    _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,'
  5224         -	    ;;
  5225         -	  RCC*)
  5226         -	    # Rational C++ 2.4.1
  5227         -	    _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
  5228         -	    ;;
  5229         -	  cxx*)
  5230         -	    # Digital/Compaq C++
  5231         -	    _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
  5232         -	    # Make sure the PIC flag is empty.  It appears that all Alpha
  5233         -	    # Linux and Compaq Tru64 Unix objects are PIC.
  5234         -	    _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=
  5235         -	    _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
  5236         -	    ;;
  5237         -	  *)
  5238         -	    ;;
  5239         -	esac
  5240         -	;;
  5241         -      psos*)
  5242         -	;;
  5243         -      solaris*)
  5244         -	case $cc_basename in
  5245         -	  CC*)
  5246         -	    # Sun C++ 4.2, 5.x and Centerline C++
  5247         -	    _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
  5248         -	    _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
  5249         -	    _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld '
  5250         -	    ;;
  5251         -	  gcx*)
  5252         -	    # Green Hills C++ Compiler
  5253         -	    _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-PIC'
  5254         -	    ;;
  5255         -	  *)
  5256         -	    ;;
  5257         -	esac
  5258         -	;;
  5259         -      sunos4*)
  5260         -	case $cc_basename in
  5261         -	  CC*)
  5262         -	    # Sun C++ 4.x
  5263         -	    _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
  5264         -	    _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
  5265         -	    ;;
  5266         -	  lcc*)
  5267         -	    # Lucid
  5268         -	    _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
  5269         -	    ;;
  5270         -	  *)
  5271         -	    ;;
  5272         -	esac
  5273         -	;;
  5274         -      tandem*)
  5275         -	case $cc_basename in
  5276         -	  NCC*)
  5277         -	    # NonStop-UX NCC 3.20
  5278         -	    _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
  5279         -	    ;;
  5280         -	  *)
  5281         -	    ;;
  5282         -	esac
  5283         -	;;
  5284         -      sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*)
  5285         -	case $cc_basename in
  5286         -	  CC*)
  5287         -	    _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
  5288         -	    _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
  5289         -	    _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
  5290         -	    ;;
  5291         -	esac
  5292         -	;;
  5293         -      vxworks*)
  5294         -	;;
  5295         -      *)
  5296         -	_LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no
  5297         -	;;
  5298         -    esac
  5299         -  fi
  5300         -],
  5301         -[
  5302         -  if test "$GCC" = yes; then
  5303         -    _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
  5304         -    _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static'
  5305         -
  5306         -    case $host_os in
  5307         -      aix*)
  5308         -      # All AIX code is PIC.
  5309         -      if test "$host_cpu" = ia64; then
  5310         -	# AIX 5 now supports IA64 processor
  5311         -	_LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
  5312         -      fi
  5313         -      ;;
  5314         -
  5315         -    amigaos*)
  5316         -      # FIXME: we need at least 68020 code to build shared libraries, but
  5317         -      # adding the `-m68020' flag to GCC prevents building anything better,
  5318         -      # like `-m68040'.
  5319         -      _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4'
  5320         -      ;;
  5321         -
  5322         -    beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
  5323         -      # PIC is the default for these OSes.
  5324         -      ;;
  5325         -
  5326         -    mingw* | cygwin* | pw32* | os2*)
  5327         -      # This hack is so that the source file can tell whether it is being
  5328         -      # built for inclusion in a dll (and should export symbols for example).
  5329         -      # Although the cygwin gcc ignores -fPIC, still need this for old-style
  5330         -      # (--disable-auto-import) libraries
  5331         -      m4_if([$1], [GCJ], [],
  5332         -	[_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT'])
  5333         -      ;;
  5334         -
  5335         -    darwin* | rhapsody*)
  5336         -      # PIC is the default on this platform
  5337         -      # Common symbols not allowed in MH_DYLIB files
  5338         -      _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common'
  5339         -      ;;
  5340         -
  5341         -    interix[[3-9]]*)
  5342         -      # Interix 3.x gcc -fpic/-fPIC options generate broken code.
  5343         -      # Instead, we relocate shared libraries at runtime.
  5344         -      ;;
  5345         -
  5346         -    msdosdjgpp*)
  5347         -      # Just because we use GCC doesn't mean we suddenly get shared libraries
  5348         -      # on systems that don't support them.
  5349         -      _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no
  5350         -      enable_shared=no
  5351         -      ;;
  5352         -
  5353         -    sysv4*MP*)
  5354         -      if test -d /usr/nec; then
  5355         -	_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic
  5356         -      fi
  5357         -      ;;
  5358         -
  5359         -    hpux*)
  5360         -      # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
  5361         -      # not for PA HP-UX.
  5362         -      case $host_cpu in
  5363         -      hppa*64*|ia64*)
  5364         -	# +Z the default
  5365         -	;;
  5366         -      *)
  5367         -	_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
  5368         -	;;
  5369         -      esac
  5370         -      ;;
  5371         -
  5372         -    *)
  5373         -      _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
  5374         -      ;;
  5375         -    esac
  5376         -  else
  5377         -    # PORTME Check for flag to pass linker flags through the system compiler.
  5378         -    case $host_os in
  5379         -    aix*)
  5380         -      _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
  5381         -      if test "$host_cpu" = ia64; then
  5382         -	# AIX 5 now supports IA64 processor
  5383         -	_LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
  5384         -      else
  5385         -	_LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp'
  5386         -      fi
  5387         -      ;;
  5388         -      darwin*)
  5389         -        # PIC is the default on this platform
  5390         -        # Common symbols not allowed in MH_DYLIB files
  5391         -       case $cc_basename in
  5392         -         xlc*)
  5393         -         _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-qnocommon'
  5394         -         _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
  5395         -         ;;
  5396         -       esac
  5397         -       ;;
  5398         -
  5399         -    mingw* | cygwin* | pw32* | os2*)
  5400         -      # This hack is so that the source file can tell whether it is being
  5401         -      # built for inclusion in a dll (and should export symbols for example).
  5402         -      m4_if([$1], [GCJ], [],
  5403         -	[_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT'])
  5404         -      ;;
  5405         -
  5406         -    hpux9* | hpux10* | hpux11*)
  5407         -      _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
  5408         -      # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
  5409         -      # not for PA HP-UX.
  5410         -      case $host_cpu in
  5411         -      hppa*64*|ia64*)
  5412         -	# +Z the default
  5413         -	;;
  5414         -      *)
  5415         -	_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='+Z'
  5416         -	;;
  5417         -      esac
  5418         -      # Is there a better lt_prog_compiler_static that works with the bundled CC?
  5419         -      _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive'
  5420         -      ;;
  5421         -
  5422         -    irix5* | irix6* | nonstopux*)
  5423         -      _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
  5424         -      # PIC (with -KPIC) is the default.
  5425         -      _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
  5426         -      ;;
  5427         -
  5428         -    newsos6)
  5429         -      _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
  5430         -      _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
  5431         -      ;;
  5432         -
  5433         -    linux* | k*bsd*-gnu)
  5434         -      case $cc_basename in
  5435         -      icc* | ecc*)
  5436         -	_LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
  5437         -	_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
  5438         -	_LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static'
  5439         -        ;;
  5440         -      pgcc* | pgf77* | pgf90* | pgf95*)
  5441         -        # Portland Group compilers (*not* the Pentium gcc compiler,
  5442         -	# which looks to be a dead project)
  5443         -	_LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
  5444         -	_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fpic'
  5445         -	_LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
  5446         -        ;;
  5447         -      ccc*)
  5448         -        _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
  5449         -        # All Alpha code is PIC.
  5450         -        _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
  5451         -        ;;
  5452         -      *)
  5453         -        case `$CC -V 2>&1 | sed 5q` in
  5454         -	*Sun\ C*)
  5455         -	  # Sun C 5.9
  5456         -	  _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
  5457         -	  _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
  5458         -	  _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
  5459         -	  ;;
  5460         -	*Sun\ F*)
  5461         -	  # Sun Fortran 8.3 passes all unrecognized flags to the linker
  5462         -	  _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
  5463         -	  _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
  5464         -	  _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)=''
  5465         -	  ;;
  5466         -	esac
  5467         -	;;
  5468         -      esac
  5469         -      ;;
  5470         -
  5471         -    osf3* | osf4* | osf5*)
  5472         -      _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
  5473         -      # All OSF/1 code is PIC.
  5474         -      _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
  5475         -      ;;
  5476         -
  5477         -    rdos*)
  5478         -      _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
  5479         -      ;;
  5480         -
  5481         -    solaris*)
  5482         -      _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
  5483         -      _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
  5484         -      case $cc_basename in
  5485         -      f77* | f90* | f95*)
  5486         -	_LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ';;
  5487         -      *)
  5488         -	_LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,';;
  5489         -      esac
  5490         -      ;;
  5491         -
  5492         -    sunos4*)
  5493         -      _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld '
  5494         -      _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-PIC'
  5495         -      _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
  5496         -      ;;
  5497         -
  5498         -    sysv4 | sysv4.2uw2* | sysv4.3*)
  5499         -      _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
  5500         -      _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
  5501         -      _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
  5502         -      ;;
  5503         -
  5504         -    sysv4*MP*)
  5505         -      if test -d /usr/nec ;then
  5506         -	_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-Kconform_pic'
  5507         -	_LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
  5508         -      fi
  5509         -      ;;
  5510         -
  5511         -    sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*)
  5512         -      _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
  5513         -      _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
  5514         -      _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
  5515         -      ;;
  5516         -
  5517         -    unicos*)
  5518         -      _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
  5519         -      _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no
  5520         -      ;;
  5521         -
  5522         -    uts4*)
  5523         -      _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
  5524         -      _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
  5525         -      ;;
  5526         -
  5527         -    *)
  5528         -      _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no
  5529         -      ;;
  5530         -    esac
  5531         -  fi
  5532         -])
  5533         -AC_MSG_RESULT([$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)])
  5534         -
  5535         -#
  5536         -# Check to make sure the PIC flag actually works.
  5537         -#
  5538         -if test -n "$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)"; then
  5539         -  AC_LIBTOOL_COMPILER_OPTION([if $compiler PIC flag $_LT_AC_TAGVAR(lt_prog_compiler_pic, $1) works],
  5540         -    _LT_AC_TAGVAR(lt_cv_prog_compiler_pic_works, $1),
  5541         -    [$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)ifelse([$1],[],[ -DPIC],[ifelse([$1],[CXX],[ -DPIC],[])])], [],
  5542         -    [case $_LT_AC_TAGVAR(lt_prog_compiler_pic, $1) in
  5543         -     "" | " "*) ;;
  5544         -     *) _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=" $_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)" ;;
  5545         -     esac],
  5546         -    [_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=
  5547         -     _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no])
  5548         -fi
  5549         -case $host_os in
  5550         -  # For platforms which do not support PIC, -DPIC is meaningless:
  5551         -  *djgpp*)
  5552         -    _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=
  5553         -    ;;
  5554         -  *)
  5555         -    _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)="$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)ifelse([$1],[],[ -DPIC],[ifelse([$1],[CXX],[ -DPIC],[])])"
  5556         -    ;;
  5557         -esac
  5558         -
  5559         -#
  5560         -# Check to make sure the static flag actually works.
  5561         -#
  5562         -wl=$_LT_AC_TAGVAR(lt_prog_compiler_wl, $1) eval lt_tmp_static_flag=\"$_LT_AC_TAGVAR(lt_prog_compiler_static, $1)\"
  5563         -AC_LIBTOOL_LINKER_OPTION([if $compiler static flag $lt_tmp_static_flag works],
  5564         -  _LT_AC_TAGVAR(lt_cv_prog_compiler_static_works, $1),
  5565         -  $lt_tmp_static_flag,
  5566         -  [],
  5567         -  [_LT_AC_TAGVAR(lt_prog_compiler_static, $1)=])
  5568         -])
  5569         -
  5570         -
  5571         -# AC_LIBTOOL_PROG_LD_SHLIBS([TAGNAME])
  5572         -# ------------------------------------
  5573         -# See if the linker supports building shared libraries.
  5574         -AC_DEFUN([AC_LIBTOOL_PROG_LD_SHLIBS],
  5575         -[AC_REQUIRE([LT_AC_PROG_SED])dnl
  5576         -AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries])
  5577         -ifelse([$1],[CXX],[
  5578         -  _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
  5579         -  case $host_os in
  5580         -  aix[[4-9]]*)
  5581         -    # If we're using GNU nm, then we don't want the "-C" option.
  5582         -    # -C means demangle to AIX nm, but means don't demangle with GNU nm
  5583         -    if $NM -V 2>&1 | grep 'GNU' > /dev/null; then
  5584         -      _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\[$]2 == "T") || (\[$]2 == "D") || (\[$]2 == "B")) && ([substr](\[$]3,1,1) != ".")) { print \[$]3 } }'\'' | sort -u > $export_symbols'
  5585         -    else
  5586         -      _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\[$]2 == "T") || (\[$]2 == "D") || (\[$]2 == "B")) && ([substr](\[$]3,1,1) != ".")) { print \[$]3 } }'\'' | sort -u > $export_symbols'
  5587         -    fi
  5588         -    ;;
  5589         -  pw32*)
  5590         -    _LT_AC_TAGVAR(export_symbols_cmds, $1)="$ltdll_cmds"
  5591         -  ;;
  5592         -  cygwin* | mingw*)
  5593         -    _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;/^.*[[ ]]__nm__/s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.*[[ ]]//'\'' | sort | uniq > $export_symbols'
  5594         -  ;;
  5595         -  linux* | k*bsd*-gnu)
  5596         -    _LT_AC_TAGVAR(link_all_deplibs, $1)=no
  5597         -  ;;
  5598         -  *)
  5599         -    _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
  5600         -  ;;
  5601         -  esac
  5602         -  _LT_AC_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*']
  5603         -],[
  5604         -  runpath_var=
  5605         -  _LT_AC_TAGVAR(allow_undefined_flag, $1)=
  5606         -  _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=no
  5607         -  _LT_AC_TAGVAR(archive_cmds, $1)=
  5608         -  _LT_AC_TAGVAR(archive_expsym_cmds, $1)=
  5609         -  _LT_AC_TAGVAR(old_archive_From_new_cmds, $1)=
  5610         -  _LT_AC_TAGVAR(old_archive_from_expsyms_cmds, $1)=
  5611         -  _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)=
  5612         -  _LT_AC_TAGVAR(whole_archive_flag_spec, $1)=
  5613         -  _LT_AC_TAGVAR(thread_safe_flag_spec, $1)=
  5614         -  _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)=
  5615         -  _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)=
  5616         -  _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=
  5617         -  _LT_AC_TAGVAR(hardcode_direct, $1)=no
  5618         -  _LT_AC_TAGVAR(hardcode_minus_L, $1)=no
  5619         -  _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=unsupported
  5620         -  _LT_AC_TAGVAR(link_all_deplibs, $1)=unknown
  5621         -  _LT_AC_TAGVAR(hardcode_automatic, $1)=no
  5622         -  _LT_AC_TAGVAR(module_cmds, $1)=
  5623         -  _LT_AC_TAGVAR(module_expsym_cmds, $1)=
  5624         -  _LT_AC_TAGVAR(always_export_symbols, $1)=no
  5625         -  _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
  5626         -  # include_expsyms should be a list of space-separated symbols to be *always*
  5627         -  # included in the symbol list
  5628         -  _LT_AC_TAGVAR(include_expsyms, $1)=
  5629         -  # exclude_expsyms can be an extended regexp of symbols to exclude
  5630         -  # it will be wrapped by ` (' and `)$', so one must not match beginning or
  5631         -  # end of line.  Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc',
  5632         -  # as well as any symbol that contains `d'.
  5633         -  _LT_AC_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*']
  5634         -  # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out
  5635         -  # platforms (ab)use it in PIC code, but their linkers get confused if
  5636         -  # the symbol is explicitly referenced.  Since portable code cannot
  5637         -  # rely on this symbol name, it's probably fine to never include it in
  5638         -  # preloaded symbol tables.
  5639         -  # Exclude shared library initialization/finalization symbols.
  5640         -dnl Note also adjust exclude_expsyms for C++ above.
  5641         -  extract_expsyms_cmds=
  5642         -  # Just being paranoid about ensuring that cc_basename is set.
  5643         -  _LT_CC_BASENAME([$compiler])
  5644         -  case $host_os in
  5645         -  cygwin* | mingw* | pw32*)
  5646         -    # FIXME: the MSVC++ port hasn't been tested in a loooong time
  5647         -    # When not using gcc, we currently assume that we are using
  5648         -    # Microsoft Visual C++.
  5649         -    if test "$GCC" != yes; then
  5650         -      with_gnu_ld=no
  5651         -    fi
  5652         -    ;;
  5653         -  interix*)
  5654         -    # we just hope/assume this is gcc and not c89 (= MSVC++)
  5655         -    with_gnu_ld=yes
  5656         -    ;;
  5657         -  openbsd*)
  5658         -    with_gnu_ld=no
  5659         -    ;;
  5660         -  esac
  5661         -
  5662         -  _LT_AC_TAGVAR(ld_shlibs, $1)=yes
  5663         -  if test "$with_gnu_ld" = yes; then
  5664         -    # If archive_cmds runs LD, not CC, wlarc should be empty
  5665         -    wlarc='${wl}'
  5666         -
  5667         -    # Set some defaults for GNU ld with shared library support. These
  5668         -    # are reset later if shared libraries are not supported. Putting them
  5669         -    # here allows them to be overridden if necessary.
  5670         -    runpath_var=LD_RUN_PATH
  5671         -    _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir'
  5672         -    _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
  5673         -    # ancient GNU ld didn't support --whole-archive et. al.
  5674         -    if $LD --help 2>&1 | grep 'no-whole-archive' > /dev/null; then
  5675         -	_LT_AC_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
  5676         -      else
  5677         -  	_LT_AC_TAGVAR(whole_archive_flag_spec, $1)=
  5678         -    fi
  5679         -    supports_anon_versioning=no
  5680         -    case `$LD -v 2>/dev/null` in
  5681         -      *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.10.*) ;; # catch versions < 2.11
  5682         -      *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ...
  5683         -      *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ...
  5684         -      *\ 2.11.*) ;; # other 2.11 versions
  5685         -      *) supports_anon_versioning=yes ;;
  5686         -    esac
  5687         -
  5688         -    # See if GNU ld supports shared libraries.
  5689         -    case $host_os in
  5690         -    aix[[3-9]]*)
  5691         -      # On AIX/PPC, the GNU linker is very broken
  5692         -      if test "$host_cpu" != ia64; then
  5693         -	_LT_AC_TAGVAR(ld_shlibs, $1)=no
  5694         -	cat <<EOF 1>&2
  5695         -
  5696         -*** Warning: the GNU linker, at least up to release 2.9.1, is reported
  5697         -*** to be unable to reliably create shared libraries on AIX.
  5698         -*** Therefore, libtool is disabling shared libraries support.  If you
  5699         -*** really care for shared libraries, you may want to modify your PATH
  5700         -*** so that a non-GNU linker is found, and then restart.
  5701         -
  5702         -EOF
  5703         -      fi
  5704         -      ;;
  5705         -
  5706         -    amigaos*)
  5707         -      _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
  5708         -      _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
  5709         -      _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes
  5710         -
  5711         -      # Samuel A. Falvo II <kc5tja@dolphin.openprojects.net> reports
  5712         -      # that the semantics of dynamic libraries on AmigaOS, at least up
  5713         -      # to version 4, is to share data among multiple programs linked
  5714         -      # with the same dynamic library.  Since this doesn't match the
  5715         -      # behavior of shared libraries on other platforms, we can't use
  5716         -      # them.
  5717         -      _LT_AC_TAGVAR(ld_shlibs, $1)=no
  5718         -      ;;
  5719         -
  5720         -    beos*)
  5721         -      if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
  5722         -	_LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported
  5723         -	# Joseph Beckenbach <jrb3@best.com> says some releases of gcc
  5724         -	# support --undefined.  This deserves some investigation.  FIXME
  5725         -	_LT_AC_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
  5726         -      else
  5727         -	_LT_AC_TAGVAR(ld_shlibs, $1)=no
  5728         -      fi
  5729         -      ;;
  5730         -
  5731         -    cygwin* | mingw* | pw32*)
  5732         -      # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless,
  5733         -      # as there is no search path for DLLs.
  5734         -      _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
  5735         -      _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported
  5736         -      _LT_AC_TAGVAR(always_export_symbols, $1)=no
  5737         -      _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
  5738         -      _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/'\'' -e '\''/^[[AITW]][[ ]]/s/.*[[ ]]//'\'' | sort | uniq > $export_symbols'
  5739         -
  5740         -      if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then
  5741         -        _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
  5742         -	# If the export-symbols file already is a .def file (1st line
  5743         -	# is EXPORTS), use it as is; otherwise, prepend...
  5744         -	_LT_AC_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
  5745         -	  cp $export_symbols $output_objdir/$soname.def;
  5746         -	else
  5747         -	  echo EXPORTS > $output_objdir/$soname.def;
  5748         -	  cat $export_symbols >> $output_objdir/$soname.def;
  5749         -	fi~
  5750         -	$CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
  5751         -      else
  5752         -	_LT_AC_TAGVAR(ld_shlibs, $1)=no
  5753         -      fi
  5754         -      ;;
  5755         -
  5756         -    interix[[3-9]]*)
  5757         -      _LT_AC_TAGVAR(hardcode_direct, $1)=no
  5758         -      _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
  5759         -      _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
  5760         -      _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
  5761         -      # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc.
  5762         -      # Instead, shared libraries are loaded at an image base (0x10000000 by
  5763         -      # default) and relocated if they conflict, which is a slow very memory
  5764         -      # consuming and fragmenting process.  To avoid this, we pick a random,
  5765         -      # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link
  5766         -      # time.  Moving up from 0x10000000 also allows more sbrk(2) space.
  5767         -      _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
  5768         -      _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
  5769         -      ;;
  5770         -
  5771         -    gnu* | linux* | k*bsd*-gnu)
  5772         -      if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
  5773         -	tmp_addflag=
  5774         -	case $cc_basename,$host_cpu in
  5775         -	pgcc*)				# Portland Group C compiler
  5776         -	  _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive'
  5777         -	  tmp_addflag=' $pic_flag'
  5778         -	  ;;
  5779         -	pgf77* | pgf90* | pgf95*)	# Portland Group f77 and f90 compilers
  5780         -	  _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive'
  5781         -	  tmp_addflag=' $pic_flag -Mnomain' ;;
  5782         -	ecc*,ia64* | icc*,ia64*)		# Intel C compiler on ia64
  5783         -	  tmp_addflag=' -i_dynamic' ;;
  5784         -	efc*,ia64* | ifort*,ia64*)	# Intel Fortran compiler on ia64
  5785         -	  tmp_addflag=' -i_dynamic -nofor_main' ;;
  5786         -	ifc* | ifort*)			# Intel Fortran compiler
  5787         -	  tmp_addflag=' -nofor_main' ;;
  5788         -	esac
  5789         -	case `$CC -V 2>&1 | sed 5q` in
  5790         -	*Sun\ C*)			# Sun C 5.9
  5791         -	  _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive'
  5792         -	  tmp_sharedflag='-G' ;;
  5793         -	*Sun\ F*)			# Sun Fortran 8.3
  5794         -	  tmp_sharedflag='-G' ;;
  5795         -	*)
  5796         -	  tmp_sharedflag='-shared' ;;
  5797         -	esac
  5798         -	_LT_AC_TAGVAR(archive_cmds, $1)='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
  5799         -
  5800         -	if test $supports_anon_versioning = yes; then
  5801         -	  _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $output_objdir/$libname.ver~
  5802         -  cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
  5803         -  $echo "local: *; };" >> $output_objdir/$libname.ver~
  5804         -	  $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
  5805         -	fi
  5806         -	_LT_AC_TAGVAR(link_all_deplibs, $1)=no
  5807         -      else
  5808         -	_LT_AC_TAGVAR(ld_shlibs, $1)=no
  5809         -      fi
  5810         -      ;;
  5811         -
  5812         -    netbsd* | netbsdelf*-gnu)
  5813         -      if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
  5814         -	_LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
  5815         -	wlarc=
  5816         -      else
  5817         -	_LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
  5818         -	_LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
  5819         -      fi
  5820         -      ;;
  5821         -
  5822         -    solaris*)
  5823         -      if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then
  5824         -	_LT_AC_TAGVAR(ld_shlibs, $1)=no
  5825         -	cat <<EOF 1>&2
  5826         -
  5827         -*** Warning: The releases 2.8.* of the GNU linker cannot reliably
  5828         -*** create shared libraries on Solaris systems.  Therefore, libtool
  5829         -*** is disabling shared libraries support.  We urge you to upgrade GNU
  5830         -*** binutils to release 2.9.1 or newer.  Another option is to modify
  5831         -*** your PATH or compiler configuration so that the native linker is
  5832         -*** used, and then restart.
  5833         -
  5834         -EOF
  5835         -      elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
  5836         -	_LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
  5837         -	_LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
  5838         -      else
  5839         -	_LT_AC_TAGVAR(ld_shlibs, $1)=no
  5840         -      fi
  5841         -      ;;
  5842         -
  5843         -    sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*)
  5844         -      case `$LD -v 2>&1` in
  5845         -        *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.1[[0-5]].*)
  5846         -	_LT_AC_TAGVAR(ld_shlibs, $1)=no
  5847         -	cat <<_LT_EOF 1>&2
  5848         -
  5849         -*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not
  5850         -*** reliably create shared libraries on SCO systems.  Therefore, libtool
  5851         -*** is disabling shared libraries support.  We urge you to upgrade GNU
  5852         -*** binutils to release 2.16.91.0.3 or newer.  Another option is to modify
  5853         -*** your PATH or compiler configuration so that the native linker is
  5854         -*** used, and then restart.
  5855         -
  5856         -_LT_EOF
  5857         -	;;
  5858         -	*)
  5859         -	  if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
  5860         -	    _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='`test -z "$SCOABSPATH" && echo ${wl}-rpath,$libdir`'
  5861         -	    _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib'
  5862         -	    _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname,-retain-symbols-file,$export_symbols -o $lib'
  5863         -	  else
  5864         -	    _LT_AC_TAGVAR(ld_shlibs, $1)=no
  5865         -	  fi
  5866         -	;;
  5867         -      esac
  5868         -      ;;
  5869         -
  5870         -    sunos4*)
  5871         -      _LT_AC_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags'
  5872         -      wlarc=
  5873         -      _LT_AC_TAGVAR(hardcode_direct, $1)=yes
  5874         -      _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
  5875         -      ;;
  5876         -
  5877         -    *)
  5878         -      if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
  5879         -	_LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
  5880         -	_LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
  5881         -      else
  5882         -	_LT_AC_TAGVAR(ld_shlibs, $1)=no
  5883         -      fi
  5884         -      ;;
  5885         -    esac
  5886         -
  5887         -    if test "$_LT_AC_TAGVAR(ld_shlibs, $1)" = no; then
  5888         -      runpath_var=
  5889         -      _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)=
  5890         -      _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)=
  5891         -      _LT_AC_TAGVAR(whole_archive_flag_spec, $1)=
  5892         -    fi
  5893         -  else
  5894         -    # PORTME fill in a description of your system's linker (not GNU ld)
  5895         -    case $host_os in
  5896         -    aix3*)
  5897         -      _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported
  5898         -      _LT_AC_TAGVAR(always_export_symbols, $1)=yes
  5899         -      _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname'
  5900         -      # Note: this linker hardcodes the directories in LIBPATH if there
  5901         -      # are no directories specified by -L.
  5902         -      _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes
  5903         -      if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then
  5904         -	# Neither direct hardcoding nor static linking is supported with a
  5905         -	# broken collect2.
  5906         -	_LT_AC_TAGVAR(hardcode_direct, $1)=unsupported
  5907         -      fi
  5908         -      ;;
  5909         -
  5910         -    aix[[4-9]]*)
  5911         -      if test "$host_cpu" = ia64; then
  5912         -	# On IA64, the linker does run time linking by default, so we don't
  5913         -	# have to do anything special.
  5914         -	aix_use_runtimelinking=no
  5915         -	exp_sym_flag='-Bexport'
  5916         -	no_entry_flag=""
  5917         -      else
  5918         -	# If we're using GNU nm, then we don't want the "-C" option.
  5919         -	# -C means demangle to AIX nm, but means don't demangle with GNU nm
  5920         -	if $NM -V 2>&1 | grep 'GNU' > /dev/null; then
  5921         -	  _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\[$]2 == "T") || (\[$]2 == "D") || (\[$]2 == "B")) && ([substr](\[$]3,1,1) != ".")) { print \[$]3 } }'\'' | sort -u > $export_symbols'
  5922         -	else
  5923         -	  _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\[$]2 == "T") || (\[$]2 == "D") || (\[$]2 == "B")) && ([substr](\[$]3,1,1) != ".")) { print \[$]3 } }'\'' | sort -u > $export_symbols'
  5924         -	fi
  5925         -	aix_use_runtimelinking=no
  5926         -
  5927         -	# Test if we are trying to use run time linking or normal
  5928         -	# AIX style linking. If -brtl is somewhere in LDFLAGS, we
  5929         -	# need to do runtime linking.
  5930         -	case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*)
  5931         -	  for ld_flag in $LDFLAGS; do
  5932         -  	  if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then
  5933         -  	    aix_use_runtimelinking=yes
  5934         -  	    break
  5935         -  	  fi
  5936         -	  done
  5937         -	  ;;
  5938         -	esac
  5939         -
  5940         -	exp_sym_flag='-bexport'
  5941         -	no_entry_flag='-bnoentry'
  5942         -      fi
  5943         -
  5944         -      # When large executables or shared objects are built, AIX ld can
  5945         -      # have problems creating the table of contents.  If linking a library
  5946         -      # or program results in "error TOC overflow" add -mminimal-toc to
  5947         -      # CXXFLAGS/CFLAGS for g++/gcc.  In the cases where that is not
  5948         -      # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
  5949         -
  5950         -      _LT_AC_TAGVAR(archive_cmds, $1)=''
  5951         -      _LT_AC_TAGVAR(hardcode_direct, $1)=yes
  5952         -      _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=':'
  5953         -      _LT_AC_TAGVAR(link_all_deplibs, $1)=yes
  5954         -
  5955         -      if test "$GCC" = yes; then
  5956         -	case $host_os in aix4.[[012]]|aix4.[[012]].*)
  5957         -	# We only want to do this on AIX 4.2 and lower, the check
  5958         -	# below for broken collect2 doesn't work under 4.3+
  5959         -	  collect2name=`${CC} -print-prog-name=collect2`
  5960         -	  if test -f "$collect2name" && \
  5961         -  	   strings "$collect2name" | grep resolve_lib_name >/dev/null
  5962         -	  then
  5963         -  	  # We have reworked collect2
  5964         -  	  :
  5965         -	  else
  5966         -  	  # We have old collect2
  5967         -  	  _LT_AC_TAGVAR(hardcode_direct, $1)=unsupported
  5968         -  	  # It fails to find uninstalled libraries when the uninstalled
  5969         -  	  # path is not listed in the libpath.  Setting hardcode_minus_L
  5970         -  	  # to unsupported forces relinking
  5971         -  	  _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes
  5972         -  	  _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
  5973         -  	  _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=
  5974         -	  fi
  5975         -	  ;;
  5976         -	esac
  5977         -	shared_flag='-shared'
  5978         -	if test "$aix_use_runtimelinking" = yes; then
  5979         -	  shared_flag="$shared_flag "'${wl}-G'
  5980         -	fi
  5981         -      else
  5982         -	# not using gcc
  5983         -	if test "$host_cpu" = ia64; then
  5984         -  	# VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
  5985         -  	# chokes on -Wl,-G. The following line is correct:
  5986         -	  shared_flag='-G'
  5987         -	else
  5988         -	  if test "$aix_use_runtimelinking" = yes; then
  5989         -	    shared_flag='${wl}-G'
  5990         -	  else
  5991         -	    shared_flag='${wl}-bM:SRE'
  5992         -	  fi
  5993         -	fi
  5994         -      fi
  5995         -
  5996         -      # It seems that -bexpall does not export symbols beginning with
  5997         -      # underscore (_), so it is better to generate a list of symbols to export.
  5998         -      _LT_AC_TAGVAR(always_export_symbols, $1)=yes
  5999         -      if test "$aix_use_runtimelinking" = yes; then
  6000         -	# Warning - without using the other runtime loading flags (-brtl),
  6001         -	# -berok will link without error, but may produce a broken library.
  6002         -	_LT_AC_TAGVAR(allow_undefined_flag, $1)='-berok'
  6003         -       # Determine the default libpath from the value encoded in an empty executable.
  6004         -       _LT_AC_SYS_LIBPATH_AIX
  6005         -       _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath"
  6006         -	_LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag"
  6007         -       else
  6008         -	if test "$host_cpu" = ia64; then
  6009         -	  _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib'
  6010         -	  _LT_AC_TAGVAR(allow_undefined_flag, $1)="-z nodefs"
  6011         -	  _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols"
  6012         -	else
  6013         -	 # Determine the default libpath from the value encoded in an empty executable.
  6014         -	 _LT_AC_SYS_LIBPATH_AIX
  6015         -	 _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath"
  6016         -	  # Warning - without using the other run time loading flags,
  6017         -	  # -berok will link without error, but may produce a broken library.
  6018         -	  _LT_AC_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok'
  6019         -	  _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok'
  6020         -	  # Exported symbols can be pulled into shared objects from archives
  6021         -	  _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='$convenience'
  6022         -	  _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=yes
  6023         -	  # This is similar to how AIX traditionally builds its shared libraries.
  6024         -	  _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
  6025         -	fi
  6026         -      fi
  6027         -      ;;
  6028         -
  6029         -    amigaos*)
  6030         -      _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
  6031         -      _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
  6032         -      _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes
  6033         -      # see comment about different semantics on the GNU ld section
  6034         -      _LT_AC_TAGVAR(ld_shlibs, $1)=no
  6035         -      ;;
  6036         -
  6037         -    bsdi[[45]]*)
  6038         -      _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)=-rdynamic
  6039         -      ;;
  6040         -
  6041         -    cygwin* | mingw* | pw32*)
  6042         -      # When not using gcc, we currently assume that we are using
  6043         -      # Microsoft Visual C++.
  6044         -      # hardcode_libdir_flag_spec is actually meaningless, as there is
  6045         -      # no search path for DLLs.
  6046         -      _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)=' '
  6047         -      _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported
  6048         -      # Tell ltmain to make .lib files, not .a files.
  6049         -      libext=lib
  6050         -      # Tell ltmain to make .dll files, not .so files.
  6051         -      shrext_cmds=".dll"
  6052         -      # FIXME: Setting linknames here is a bad hack.
  6053         -      _LT_AC_TAGVAR(archive_cmds, $1)='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | $SED -e '\''s/ -lc$//'\''` -link -dll~linknames='
  6054         -      # The linker will automatically build a .lib file if we build a DLL.
  6055         -      _LT_AC_TAGVAR(old_archive_From_new_cmds, $1)='true'
  6056         -      # FIXME: Should let the user specify the lib program.
  6057         -      _LT_AC_TAGVAR(old_archive_cmds, $1)='lib -OUT:$oldlib$oldobjs$old_deplibs'
  6058         -      _LT_AC_TAGVAR(fix_srcfile_path, $1)='`cygpath -w "$srcfile"`'
  6059         -      _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
  6060         -      ;;
  6061         -
  6062         -    darwin* | rhapsody*)
  6063         -      case $host_os in
  6064         -        rhapsody* | darwin1.[[012]])
  6065         -         _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-undefined ${wl}suppress'
  6066         -         ;;
  6067         -       *) # Darwin 1.3 on
  6068         -         if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then
  6069         -           _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-flat_namespace ${wl}-undefined ${wl}suppress'
  6070         -         else
  6071         -           case ${MACOSX_DEPLOYMENT_TARGET} in
  6072         -             10.[[012]])
  6073         -               _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-flat_namespace ${wl}-undefined ${wl}suppress'
  6074         -               ;;
  6075         -             10.*)
  6076         -               _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-undefined ${wl}dynamic_lookup'
  6077         -               ;;
  6078         -           esac
  6079         -         fi
  6080         -         ;;
  6081         -      esac
  6082         -      _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
  6083         -      _LT_AC_TAGVAR(hardcode_direct, $1)=no
  6084         -      _LT_AC_TAGVAR(hardcode_automatic, $1)=yes
  6085         -      _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=unsupported
  6086         -      _LT_AC_TAGVAR(whole_archive_flag_spec, $1)=''
  6087         -      _LT_AC_TAGVAR(link_all_deplibs, $1)=yes
  6088         -    if test "$GCC" = yes ; then
  6089         -    	output_verbose_link_cmd='echo'
  6090         -        _LT_AC_TAGVAR(archive_cmds, $1)="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}"
  6091         -        _LT_AC_TAGVAR(module_cmds, $1)="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}"
  6092         -        _LT_AC_TAGVAR(archive_expsym_cmds, $1)="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}"
  6093         -        _LT_AC_TAGVAR(module_expsym_cmds, $1)="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}"
  6094         -    else
  6095         -      case $cc_basename in
  6096         -        xlc*)
  6097         -         output_verbose_link_cmd='echo'
  6098         -         _LT_AC_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $xlcverstring'
  6099         -         _LT_AC_TAGVAR(module_cmds, $1)='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
  6100         -          # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds
  6101         -         _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $xlcverstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
  6102         -          _LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag  -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
  6103         -          ;;
  6104         -       *)
  6105         -         _LT_AC_TAGVAR(ld_shlibs, $1)=no
  6106         -          ;;
  6107         -      esac
  6108         -    fi
  6109         -      ;;
  6110         -
  6111         -    dgux*)
  6112         -      _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
  6113         -      _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
  6114         -      _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
  6115         -      ;;
  6116         -
  6117         -    freebsd1*)
  6118         -      _LT_AC_TAGVAR(ld_shlibs, $1)=no
  6119         -      ;;
  6120         -
  6121         -    # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor
  6122         -    # support.  Future versions do this automatically, but an explicit c++rt0.o
  6123         -    # does not break anything, and helps significantly (at the cost of a little
  6124         -    # extra space).
  6125         -    freebsd2.2*)
  6126         -      _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o'
  6127         -      _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
  6128         -      _LT_AC_TAGVAR(hardcode_direct, $1)=yes
  6129         -      _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
  6130         -      ;;
  6131         -
  6132         -    # Unfortunately, older versions of FreeBSD 2 do not have this feature.
  6133         -    freebsd2*)
  6134         -      _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
  6135         -      _LT_AC_TAGVAR(hardcode_direct, $1)=yes
  6136         -      _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes
  6137         -      _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
  6138         -      ;;
  6139         -
  6140         -    # FreeBSD 3 and greater uses gcc -shared to do shared libraries.
  6141         -    freebsd* | dragonfly*)
  6142         -      _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -o $lib $libobjs $deplibs $compiler_flags'
  6143         -      _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
  6144         -      _LT_AC_TAGVAR(hardcode_direct, $1)=yes
  6145         -      _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
  6146         -      ;;
  6147         -
  6148         -    hpux9*)
  6149         -      if test "$GCC" = yes; then
  6150         -	_LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
  6151         -      else
  6152         -	_LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
  6153         -      fi
  6154         -      _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
  6155         -      _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
  6156         -      _LT_AC_TAGVAR(hardcode_direct, $1)=yes
  6157         -
  6158         -      # hardcode_minus_L: Not really in the search PATH,
  6159         -      # but as the default location of the library.
  6160         -      _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes
  6161         -      _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
  6162         -      ;;
  6163         -
  6164         -    hpux10*)
  6165         -      if test "$GCC" = yes -a "$with_gnu_ld" = no; then
  6166         -	_LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
  6167         -      else
  6168         -	_LT_AC_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
  6169         -      fi
  6170         -      if test "$with_gnu_ld" = no; then
  6171         -	_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
  6172         -	_LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
  6173         -
  6174         -	_LT_AC_TAGVAR(hardcode_direct, $1)=yes
  6175         -	_LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
  6176         -
  6177         -	# hardcode_minus_L: Not really in the search PATH,
  6178         -	# but as the default location of the library.
  6179         -	_LT_AC_TAGVAR(hardcode_minus_L, $1)=yes
  6180         -      fi
  6181         -      ;;
  6182         -
  6183         -    hpux11*)
  6184         -      if test "$GCC" = yes -a "$with_gnu_ld" = no; then
  6185         -	case $host_cpu in
  6186         -	hppa*64*)
  6187         -	  _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
  6188         -	  ;;
  6189         -	ia64*)
  6190         -	  _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
  6191         -	  ;;
  6192         -	*)
  6193         -	  _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
  6194         -	  ;;
  6195         -	esac
  6196         -      else
  6197         -	case $host_cpu in
  6198         -	hppa*64*)
  6199         -	  _LT_AC_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
  6200         -	  ;;
  6201         -	ia64*)
  6202         -	  _LT_AC_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
  6203         -	  ;;
  6204         -	*)
  6205         -	  _LT_AC_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
  6206         -	  ;;
  6207         -	esac
  6208         -      fi
  6209         -      if test "$with_gnu_ld" = no; then
  6210         -	_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
  6211         -	_LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
  6212         -
  6213         -	case $host_cpu in
  6214         -	hppa*64*|ia64*)
  6215         -	  _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='+b $libdir'
  6216         -	  _LT_AC_TAGVAR(hardcode_direct, $1)=no
  6217         -	  _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
  6218         -	  ;;
  6219         -	*)
  6220         -	  _LT_AC_TAGVAR(hardcode_direct, $1)=yes
  6221         -	  _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
  6222         -
  6223         -	  # hardcode_minus_L: Not really in the search PATH,
  6224         -	  # but as the default location of the library.
  6225         -	  _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes
  6226         -	  ;;
  6227         -	esac
  6228         -      fi
  6229         -      ;;
  6230         -
  6231         -    irix5* | irix6* | nonstopux*)
  6232         -      if test "$GCC" = yes; then
  6233         -	_LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
  6234         -      else
  6235         -	_LT_AC_TAGVAR(archive_cmds, $1)='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
  6236         -	_LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='-rpath $libdir'
  6237         -      fi
  6238         -      _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
  6239         -      _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
  6240         -      _LT_AC_TAGVAR(link_all_deplibs, $1)=yes
  6241         -      ;;
  6242         -
  6243         -    netbsd* | netbsdelf*-gnu)
  6244         -      if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
  6245         -	_LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'  # a.out
  6246         -      else
  6247         -	_LT_AC_TAGVAR(archive_cmds, $1)='$LD -shared -o $lib $libobjs $deplibs $linker_flags'      # ELF
  6248         -      fi
  6249         -      _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
  6250         -      _LT_AC_TAGVAR(hardcode_direct, $1)=yes
  6251         -      _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
  6252         -      ;;
  6253         -
  6254         -    newsos6)
  6255         -      _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
  6256         -      _LT_AC_TAGVAR(hardcode_direct, $1)=yes
  6257         -      _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
  6258         -      _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
  6259         -      _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
  6260         -      ;;
  6261         -
  6262         -    openbsd*)
  6263         -      if test -f /usr/libexec/ld.so; then
  6264         -	_LT_AC_TAGVAR(hardcode_direct, $1)=yes
  6265         -	_LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
  6266         -	if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
  6267         -	  _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
  6268         -	  _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols'
  6269         -	  _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
  6270         -	  _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
  6271         -	else
  6272         -	  case $host_os in
  6273         -	   openbsd[[01]].* | openbsd2.[[0-7]] | openbsd2.[[0-7]].*)
  6274         -	     _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
  6275         -	     _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
  6276         -	     ;;
  6277         -	   *)
  6278         -	     _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
  6279         -	     _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
  6280         -	     ;;
  6281         -	  esac
  6282         -        fi
  6283         -      else
  6284         -	_LT_AC_TAGVAR(ld_shlibs, $1)=no
  6285         -      fi
  6286         -      ;;
  6287         -
  6288         -    os2*)
  6289         -      _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
  6290         -      _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes
  6291         -      _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported
  6292         -      _LT_AC_TAGVAR(archive_cmds, $1)='$echo "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$echo DATA >> $output_objdir/$libname.def~$echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~$echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def'
  6293         -      _LT_AC_TAGVAR(old_archive_From_new_cmds, $1)='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def'
  6294         -      ;;
  6295         -
  6296         -    osf3*)
  6297         -      if test "$GCC" = yes; then
  6298         -	_LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
  6299         -	_LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
  6300         -      else
  6301         -	_LT_AC_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*'
  6302         -	_LT_AC_TAGVAR(archive_cmds, $1)='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
  6303         -      fi
  6304         -      _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
  6305         -      _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
  6306         -      ;;
  6307         -
  6308         -    osf4* | osf5*)	# as osf3* with the addition of -msym flag
  6309         -      if test "$GCC" = yes; then
  6310         -	_LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
  6311         -	_LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
  6312         -	_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
  6313         -      else
  6314         -	_LT_AC_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*'
  6315         -	_LT_AC_TAGVAR(archive_cmds, $1)='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
  6316         -	_LT_AC_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~
  6317         -	$LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib~$rm $lib.exp'
  6318         -
  6319         -	# Both c and cxx compiler support -rpath directly
  6320         -	_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir'
  6321         -      fi
  6322         -      _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
  6323         -      ;;
  6324         -
  6325         -    solaris*)
  6326         -      _LT_AC_TAGVAR(no_undefined_flag, $1)=' -z text'
  6327         -      if test "$GCC" = yes; then
  6328         -	wlarc='${wl}'
  6329         -	_LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
  6330         -	_LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
  6331         -	  $CC -shared ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$rm $lib.exp'
  6332         -      else
  6333         -	wlarc=''
  6334         -	_LT_AC_TAGVAR(archive_cmds, $1)='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
  6335         -	_LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
  6336         -  	$LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp'
  6337         -      fi
  6338         -      _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
  6339         -      _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
  6340         -      case $host_os in
  6341         -      solaris2.[[0-5]] | solaris2.[[0-5]].*) ;;
  6342         -      *)
  6343         -	# The compiler driver will combine and reorder linker options,
  6344         -	# but understands `-z linker_flag'.  GCC discards it without `$wl',
  6345         -	# but is careful enough not to reorder.
  6346         - 	# Supported since Solaris 2.6 (maybe 2.5.1?)
  6347         -	if test "$GCC" = yes; then
  6348         -	  _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract'
  6349         -	else
  6350         -	  _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract'
  6351         -	fi
  6352         -	;;
  6353         -      esac
  6354         -      _LT_AC_TAGVAR(link_all_deplibs, $1)=yes
  6355         -      ;;
  6356         -
  6357         -    sunos4*)
  6358         -      if test "x$host_vendor" = xsequent; then
  6359         -	# Use $CC to link under sequent, because it throws in some extra .o
  6360         -	# files that make .init and .fini sections work.
  6361         -	_LT_AC_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags'
  6362         -      else
  6363         -	_LT_AC_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags'
  6364         -      fi
  6365         -      _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
  6366         -      _LT_AC_TAGVAR(hardcode_direct, $1)=yes
  6367         -      _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes
  6368         -      _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
  6369         -      ;;
  6370         -
  6371         -    sysv4)
  6372         -      case $host_vendor in
  6373         -	sni)
  6374         -	  _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
  6375         -	  _LT_AC_TAGVAR(hardcode_direct, $1)=yes # is this really true???
  6376         -	;;
  6377         -	siemens)
  6378         -	  ## LD is ld it makes a PLAMLIB
  6379         -	  ## CC just makes a GrossModule.
  6380         -	  _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -o $lib $libobjs $deplibs $linker_flags'
  6381         -	  _LT_AC_TAGVAR(reload_cmds, $1)='$CC -r -o $output$reload_objs'
  6382         -	  _LT_AC_TAGVAR(hardcode_direct, $1)=no
  6383         -        ;;
  6384         -	motorola)
  6385         -	  _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
  6386         -	  _LT_AC_TAGVAR(hardcode_direct, $1)=no #Motorola manual says yes, but my tests say they lie
  6387         -	;;
  6388         -      esac
  6389         -      runpath_var='LD_RUN_PATH'
  6390         -      _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
  6391         -      ;;
  6392         -
  6393         -    sysv4.3*)
  6394         -      _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
  6395         -      _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
  6396         -      _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='-Bexport'
  6397         -      ;;
  6398         -
  6399         -    sysv4*MP*)
  6400         -      if test -d /usr/nec; then
  6401         -	_LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
  6402         -	_LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
  6403         -	runpath_var=LD_RUN_PATH
  6404         -	hardcode_runpath_var=yes
  6405         -	_LT_AC_TAGVAR(ld_shlibs, $1)=yes
  6406         -      fi
  6407         -      ;;
  6408         -
  6409         -    sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*)
  6410         -      _LT_AC_TAGVAR(no_undefined_flag, $1)='${wl}-z,text'
  6411         -      _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
  6412         -      _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
  6413         -      runpath_var='LD_RUN_PATH'
  6414         -
  6415         -      if test "$GCC" = yes; then
  6416         -	_LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
  6417         -	_LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
  6418         -      else
  6419         -	_LT_AC_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
  6420         -	_LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
  6421         -      fi
  6422         -      ;;
  6423         -
  6424         -    sysv5* | sco3.2v5* | sco5v6*)
  6425         -      # Note: We can NOT use -z defs as we might desire, because we do not
  6426         -      # link with -lc, and that would cause any symbols used from libc to
  6427         -      # always be unresolved, which means just about no library would
  6428         -      # ever link correctly.  If we're not using GNU ld we use -z text
  6429         -      # though, which does catch some bad symbols but isn't as heavy-handed
  6430         -      # as -z defs.
  6431         -      _LT_AC_TAGVAR(no_undefined_flag, $1)='${wl}-z,text'
  6432         -      _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs'
  6433         -      _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
  6434         -      _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
  6435         -      _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`'
  6436         -      _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=':'
  6437         -      _LT_AC_TAGVAR(link_all_deplibs, $1)=yes
  6438         -      _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport'
  6439         -      runpath_var='LD_RUN_PATH'
  6440         -
  6441         -      if test "$GCC" = yes; then
  6442         -	_LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
  6443         -	_LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
  6444         -      else
  6445         -	_LT_AC_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
  6446         -	_LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
  6447         -      fi
  6448         -      ;;
  6449         -
  6450         -    uts4*)
  6451         -      _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
  6452         -      _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
  6453         -      _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
  6454         -      ;;
  6455         -
  6456         -    *)
  6457         -      _LT_AC_TAGVAR(ld_shlibs, $1)=no
  6458         -      ;;
  6459         -    esac
  6460         -  fi
  6461         -])
  6462         -AC_MSG_RESULT([$_LT_AC_TAGVAR(ld_shlibs, $1)])
  6463         -test "$_LT_AC_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no
  6464         -
  6465         -#
  6466         -# Do we need to explicitly link libc?
  6467         -#
  6468         -case "x$_LT_AC_TAGVAR(archive_cmds_need_lc, $1)" in
  6469         -x|xyes)
  6470         -  # Assume -lc should be added
  6471         -  _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=yes
  6472         -
  6473         -  if test "$enable_shared" = yes && test "$GCC" = yes; then
  6474         -    case $_LT_AC_TAGVAR(archive_cmds, $1) in
  6475         -    *'~'*)
  6476         -      # FIXME: we may have to deal with multi-command sequences.
  6477         -      ;;
  6478         -    '$CC '*)
  6479         -      # Test whether the compiler implicitly links with -lc since on some
  6480         -      # systems, -lgcc has to come before -lc. If gcc already passes -lc
  6481         -      # to ld, don't add -lc before -lgcc.
  6482         -      AC_MSG_CHECKING([whether -lc should be explicitly linked in])
  6483         -      $rm conftest*
  6484         -      echo "$lt_simple_compile_test_code" > conftest.$ac_ext
  6485         -
  6486         -      if AC_TRY_EVAL(ac_compile) 2>conftest.err; then
  6487         -        soname=conftest
  6488         -        lib=conftest
  6489         -        libobjs=conftest.$ac_objext
  6490         -        deplibs=
  6491         -        wl=$_LT_AC_TAGVAR(lt_prog_compiler_wl, $1)
  6492         -	pic_flag=$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)
  6493         -        compiler_flags=-v
  6494         -        linker_flags=-v
  6495         -        verstring=
  6496         -        output_objdir=.
  6497         -        libname=conftest
  6498         -        lt_save_allow_undefined_flag=$_LT_AC_TAGVAR(allow_undefined_flag, $1)
  6499         -        _LT_AC_TAGVAR(allow_undefined_flag, $1)=
  6500         -        if AC_TRY_EVAL(_LT_AC_TAGVAR(archive_cmds, $1) 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1)
  6501         -        then
  6502         -	  _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
  6503         -        else
  6504         -	  _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=yes
  6505         -        fi
  6506         -        _LT_AC_TAGVAR(allow_undefined_flag, $1)=$lt_save_allow_undefined_flag
  6507         -      else
  6508         -        cat conftest.err 1>&5
  6509         -      fi
  6510         -      $rm conftest*
  6511         -      AC_MSG_RESULT([$_LT_AC_TAGVAR(archive_cmds_need_lc, $1)])
  6512         -      ;;
  6513         -    esac
  6514         -  fi
  6515         -  ;;
  6516         -esac
  6517         -])# AC_LIBTOOL_PROG_LD_SHLIBS
  6518         -
  6519         -
  6520         -# _LT_AC_FILE_LTDLL_C
  6521         -# -------------------
  6522         -# Be careful that the start marker always follows a newline.
  6523         -AC_DEFUN([_LT_AC_FILE_LTDLL_C], [
  6524         -# /* ltdll.c starts here */
  6525         -# #define WIN32_LEAN_AND_MEAN
  6526         -# #include <windows.h>
  6527         -# #undef WIN32_LEAN_AND_MEAN
  6528         -# #include <stdio.h>
  6529         -#
  6530         -# #ifndef __CYGWIN__
  6531         -# #  ifdef __CYGWIN32__
  6532         -# #    define __CYGWIN__ __CYGWIN32__
  6533         -# #  endif
  6534         -# #endif
  6535         -#
  6536         -# #ifdef __cplusplus
  6537         -# extern "C" {
  6538         -# #endif
  6539         -# BOOL APIENTRY DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved);
  6540         -# #ifdef __cplusplus
  6541         -# }
  6542         -# #endif
  6543         -#
  6544         -# #ifdef __CYGWIN__
  6545         -# #include <cygwin/cygwin_dll.h>
  6546         -# DECLARE_CYGWIN_DLL( DllMain );
  6547         -# #endif
  6548         -# HINSTANCE __hDllInstance_base;
  6549         -#
  6550         -# BOOL APIENTRY
  6551         -# DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved)
  6552         -# {
  6553         -#   __hDllInstance_base = hInst;
  6554         -#   return TRUE;
  6555         -# }
  6556         -# /* ltdll.c ends here */
  6557         -])# _LT_AC_FILE_LTDLL_C
  6558         -
  6559         -
  6560         -# _LT_AC_TAGVAR(VARNAME, [TAGNAME])
  6561         -# ---------------------------------
  6562         -AC_DEFUN([_LT_AC_TAGVAR], [ifelse([$2], [], [$1], [$1_$2])])
  6563         -
  6564         -
  6565         -# old names
  6566         -AC_DEFUN([AM_PROG_LIBTOOL],   [AC_PROG_LIBTOOL])
  6567         -AC_DEFUN([AM_ENABLE_SHARED],  [AC_ENABLE_SHARED($@)])
  6568         -AC_DEFUN([AM_ENABLE_STATIC],  [AC_ENABLE_STATIC($@)])
  6569         -AC_DEFUN([AM_DISABLE_SHARED], [AC_DISABLE_SHARED($@)])
  6570         -AC_DEFUN([AM_DISABLE_STATIC], [AC_DISABLE_STATIC($@)])
  6571         -AC_DEFUN([AM_PROG_LD],        [AC_PROG_LD])
  6572         -AC_DEFUN([AM_PROG_NM],        [AC_PROG_NM])
  6573         -
  6574         -# This is just to silence aclocal about the macro not being used
  6575         -ifelse([AC_DISABLE_FAST_INSTALL])
  6576         -
  6577         -AC_DEFUN([LT_AC_PROG_GCJ],
  6578         -[AC_CHECK_TOOL(GCJ, gcj, no)
  6579         -  test "x${GCJFLAGS+set}" = xset || GCJFLAGS="-g -O2"
  6580         -  AC_SUBST(GCJFLAGS)
  6581         -])
  6582         -
  6583         -AC_DEFUN([LT_AC_PROG_RC],
  6584         -[AC_CHECK_TOOL(RC, windres, no)
  6585         -])
  6586         -
  6587         -
  6588         -# Cheap backport of AS_EXECUTABLE_P and required macros
  6589         -# from Autoconf 2.59; we should not use $as_executable_p directly.
  6590         -
  6591         -# _AS_TEST_PREPARE
  6592         -# ----------------
  6593         -m4_ifndef([_AS_TEST_PREPARE],
  6594         -[m4_defun([_AS_TEST_PREPARE],
  6595         -[if test -x / >/dev/null 2>&1; then
  6596         -  as_executable_p='test -x'
  6597         -else
  6598         -  as_executable_p='test -f'
  6599         -fi
  6600         -])])# _AS_TEST_PREPARE
  6601         -
  6602         -# AS_EXECUTABLE_P
  6603         -# ---------------
  6604         -# Check whether a file is executable.
  6605         -m4_ifndef([AS_EXECUTABLE_P],
  6606         -[m4_defun([AS_EXECUTABLE_P],
  6607         -[AS_REQUIRE([_AS_TEST_PREPARE])dnl
  6608         -$as_executable_p $1[]dnl
  6609         -])])# AS_EXECUTABLE_P
  6610         -
  6611         -# NOTE: This macro has been submitted for inclusion into   #
  6612         -#  GNU Autoconf as AC_PROG_SED.  When it is available in   #
  6613         -#  a released version of Autoconf we should remove this    #
  6614         -#  macro and use it instead.                               #
  6615         -# LT_AC_PROG_SED
  6616         -# --------------
  6617         -# Check for a fully-functional sed program, that truncates
  6618         -# as few characters as possible.  Prefer GNU sed if found.
  6619         -AC_DEFUN([LT_AC_PROG_SED],
  6620         -[AC_MSG_CHECKING([for a sed that does not truncate output])
  6621         -AC_CACHE_VAL(lt_cv_path_SED,
  6622         -[# Loop through the user's path and test for sed and gsed.
  6623         -# Then use that list of sed's as ones to test for truncation.
  6624         -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
  6625         -for as_dir in $PATH
  6626         -do
  6627         -  IFS=$as_save_IFS
  6628         -  test -z "$as_dir" && as_dir=.
  6629         -  for lt_ac_prog in sed gsed; do
  6630         -    for ac_exec_ext in '' $ac_executable_extensions; do
  6631         -      if AS_EXECUTABLE_P(["$as_dir/$lt_ac_prog$ac_exec_ext"]); then
  6632         -        lt_ac_sed_list="$lt_ac_sed_list $as_dir/$lt_ac_prog$ac_exec_ext"
  6633         -      fi
  6634         -    done
  6635         -  done
  6636         -done
  6637         -IFS=$as_save_IFS
  6638         -lt_ac_max=0
  6639         -lt_ac_count=0
  6640         -# Add /usr/xpg4/bin/sed as it is typically found on Solaris
  6641         -# along with /bin/sed that truncates output.
  6642         -for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do
  6643         -  test ! -f $lt_ac_sed && continue
  6644         -  cat /dev/null > conftest.in
  6645         -  lt_ac_count=0
  6646         -  echo $ECHO_N "0123456789$ECHO_C" >conftest.in
  6647         -  # Check for GNU sed and select it if it is found.
  6648         -  if "$lt_ac_sed" --version 2>&1 < /dev/null | grep 'GNU' > /dev/null; then
  6649         -    lt_cv_path_SED=$lt_ac_sed
  6650         -    break
  6651         -  fi
  6652         -  while true; do
  6653         -    cat conftest.in conftest.in >conftest.tmp
  6654         -    mv conftest.tmp conftest.in
  6655         -    cp conftest.in conftest.nl
  6656         -    echo >>conftest.nl
  6657         -    $lt_ac_sed -e 's/a$//' < conftest.nl >conftest.out || break
  6658         -    cmp -s conftest.out conftest.nl || break
  6659         -    # 10000 chars as input seems more than enough
  6660         -    test $lt_ac_count -gt 10 && break
  6661         -    lt_ac_count=`expr $lt_ac_count + 1`
  6662         -    if test $lt_ac_count -gt $lt_ac_max; then
  6663         -      lt_ac_max=$lt_ac_count
  6664         -      lt_cv_path_SED=$lt_ac_sed
  6665         -    fi
  6666         -  done
  6667         -done
  6668         -])
  6669         -SED=$lt_cv_path_SED
  6670         -AC_SUBST([SED])
  6671         -AC_MSG_RESULT([$SED])
  6672         -])
  6673         -
  6674         -# Copyright (C) 2002, 2003, 2005, 2006, 2007  Free Software Foundation, Inc.
  6675         -#
  6676         -# This file is free software; the Free Software Foundation
  6677         -# gives unlimited permission to copy and/or distribute it,
  6678         -# with or without modifications, as long as this notice is preserved.
          174  +	$1[]_CFLAGS=$pkg_cv_[]$1[]_CFLAGS
          175  +	$1[]_LIBS=$pkg_cv_[]$1[]_LIBS
          176  +        AC_MSG_RESULT([yes])
          177  +	$3
          178  +fi[]dnl
          179  +])# PKG_CHECK_MODULES
          180  +
          181  +# Copyright (C) 2002, 2003, 2005, 2006, 2007, 2008, 2011 Free Software
          182  +# Foundation, Inc.
          183  +#
          184  +# This file is free software; the Free Software Foundation
          185  +# gives unlimited permission to copy and/or distribute it,
          186  +# with or without modifications, as long as this notice is preserved.
          187  +
          188  +# serial 1
  6679    189   
  6680    190   # AM_AUTOMAKE_VERSION(VERSION)
  6681    191   # ----------------------------
  6682    192   # Automake X.Y traces this macro to ensure aclocal.m4 has been
  6683    193   # generated from the m4 files accompanying Automake X.Y.
  6684    194   # (This private macro should not be called outside this file.)
  6685    195   AC_DEFUN([AM_AUTOMAKE_VERSION],
  6686         -[am__api_version='1.10'
          196  +[am__api_version='1.11'
  6687    197   dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to
  6688    198   dnl require some minimum version.  Point them to the right macro.
  6689         -m4_if([$1], [1.10.1], [],
          199  +m4_if([$1], [1.11.6], [],
  6690    200         [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl
  6691    201   ])
  6692    202   
  6693    203   # _AM_AUTOCONF_VERSION(VERSION)
  6694    204   # -----------------------------
  6695    205   # aclocal traces this macro to find the Autoconf version.
  6696    206   # This is a private macro too.  Using m4_define simplifies
  6697    207   # the logic in aclocal, which can simply ignore this definition.
  6698    208   m4_define([_AM_AUTOCONF_VERSION], [])
  6699    209   
  6700    210   # AM_SET_CURRENT_AUTOMAKE_VERSION
  6701    211   # -------------------------------
  6702    212   # Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced.
  6703         -# This function is AC_REQUIREd by AC_INIT_AUTOMAKE.
          213  +# This function is AC_REQUIREd by AM_INIT_AUTOMAKE.
  6704    214   AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
  6705         -[AM_AUTOMAKE_VERSION([1.10.1])dnl
          215  +[AM_AUTOMAKE_VERSION([1.11.6])dnl
  6706    216   m4_ifndef([AC_AUTOCONF_VERSION],
  6707    217     [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
  6708         -_AM_AUTOCONF_VERSION(AC_AUTOCONF_VERSION)])
          218  +_AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))])
  6709    219   
  6710    220   # AM_AUX_DIR_EXPAND                                         -*- Autoconf -*-
  6711    221   
  6712         -# Copyright (C) 2001, 2003, 2005  Free Software Foundation, Inc.
          222  +# Copyright (C) 2001, 2003, 2005, 2011 Free Software Foundation, Inc.
  6713    223   #
  6714    224   # This file is free software; the Free Software Foundation
  6715    225   # gives unlimited permission to copy and/or distribute it,
  6716    226   # with or without modifications, as long as this notice is preserved.
          227  +
          228  +# serial 1
  6717    229   
  6718    230   # For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets
  6719    231   # $ac_aux_dir to `$srcdir/foo'.  In other projects, it is set to
  6720    232   # `$srcdir', `$srcdir/..', or `$srcdir/../..'.
  6721    233   #
  6722    234   # Of course, Automake must honor this variable whenever it calls a
  6723    235   # tool from the auxiliary directory.  The problem is that $srcdir (and
................................................................................
  6758    270   AC_PREREQ([2.50])dnl
  6759    271   # expand $ac_aux_dir to an absolute path
  6760    272   am_aux_dir=`cd $ac_aux_dir && pwd`
  6761    273   ])
  6762    274   
  6763    275   # AM_CONDITIONAL                                            -*- Autoconf -*-
  6764    276   
  6765         -# Copyright (C) 1997, 2000, 2001, 2003, 2004, 2005, 2006
          277  +# Copyright (C) 1997, 2000, 2001, 2003, 2004, 2005, 2006, 2008
  6766    278   # Free Software Foundation, Inc.
  6767    279   #
  6768    280   # This file is free software; the Free Software Foundation
  6769    281   # gives unlimited permission to copy and/or distribute it,
  6770    282   # with or without modifications, as long as this notice is preserved.
  6771    283   
  6772         -# serial 8
          284  +# serial 9
  6773    285   
  6774    286   # AM_CONDITIONAL(NAME, SHELL-CONDITION)
  6775    287   # -------------------------------------
  6776    288   # Define a conditional.
  6777    289   AC_DEFUN([AM_CONDITIONAL],
  6778    290   [AC_PREREQ(2.52)dnl
  6779    291    ifelse([$1], [TRUE],  [AC_FATAL([$0: invalid condition: $1])],
  6780    292   	[$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl
  6781    293   AC_SUBST([$1_TRUE])dnl
  6782    294   AC_SUBST([$1_FALSE])dnl
  6783    295   _AM_SUBST_NOTMAKE([$1_TRUE])dnl
  6784    296   _AM_SUBST_NOTMAKE([$1_FALSE])dnl
          297  +m4_define([_AM_COND_VALUE_$1], [$2])dnl
  6785    298   if $2; then
  6786    299     $1_TRUE=
  6787    300     $1_FALSE='#'
  6788    301   else
  6789    302     $1_TRUE='#'
  6790    303     $1_FALSE=
  6791    304   fi
  6792    305   AC_CONFIG_COMMANDS_PRE(
  6793    306   [if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then
  6794    307     AC_MSG_ERROR([[conditional "$1" was never defined.
  6795    308   Usually this means the macro was only invoked conditionally.]])
  6796    309   fi])])
  6797    310   
  6798         -# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006
  6799         -# Free Software Foundation, Inc.
          311  +# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2009,
          312  +# 2010, 2011 Free Software Foundation, Inc.
  6800    313   #
  6801    314   # This file is free software; the Free Software Foundation
  6802    315   # gives unlimited permission to copy and/or distribute it,
  6803    316   # with or without modifications, as long as this notice is preserved.
  6804    317   
  6805         -# serial 9
          318  +# serial 12
  6806    319   
  6807    320   # There are a few dirty hacks below to avoid letting `AC_PROG_CC' be
  6808    321   # written in clear, in which case automake, when reading aclocal.m4,
  6809    322   # will think it sees a *use*, and therefore will trigger all it's
  6810    323   # C support machinery.  Also note that it means that autoscan, seeing
  6811    324   # CC etc. in the Makefile, will ask for an AC_PROG_CC use...
  6812    325   
................................................................................
  6838    351                  [am_cv_$1_dependencies_compiler_type],
  6839    352   [if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
  6840    353     # We make a subdir and do the tests there.  Otherwise we can end up
  6841    354     # making bogus files that we don't know about and never remove.  For
  6842    355     # instance it was reported that on HP-UX the gcc test will end up
  6843    356     # making a dummy file named `D' -- because `-MD' means `put the output
  6844    357     # in D'.
          358  +  rm -rf conftest.dir
  6845    359     mkdir conftest.dir
  6846    360     # Copy depcomp to subdir because otherwise we won't find it if we're
  6847    361     # using a relative directory.
  6848    362     cp "$am_depcomp" conftest.dir
  6849    363     cd conftest.dir
  6850    364     # We will build objects and dependencies in a subdirectory because
  6851    365     # it helps to detect inapplicable dependency modes.  For instance
................................................................................
  6855    369     # directory.
  6856    370     mkdir sub
  6857    371   
  6858    372     am_cv_$1_dependencies_compiler_type=none
  6859    373     if test "$am_compiler_list" = ""; then
  6860    374        am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp`
  6861    375     fi
          376  +  am__universal=false
          377  +  m4_case([$1], [CC],
          378  +    [case " $depcc " in #(
          379  +     *\ -arch\ *\ -arch\ *) am__universal=true ;;
          380  +     esac],
          381  +    [CXX],
          382  +    [case " $depcc " in #(
          383  +     *\ -arch\ *\ -arch\ *) am__universal=true ;;
          384  +     esac])
          385  +
  6862    386     for depmode in $am_compiler_list; do
  6863    387       # Setup a source with many dependencies, because some compilers
  6864    388       # like to wrap large dependency lists on column 80 (with \), and
  6865    389       # we should not choose a depcomp mode which is confused by this.
  6866    390       #
  6867    391       # We need to recreate these files for each test, as the compiler may
  6868    392       # overwrite some of them when testing with obscure command lines.
................................................................................
  6872    396         echo '#include "conftst'$i'.h"' >> sub/conftest.c
  6873    397         # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with
  6874    398         # Solaris 8's {/usr,}/bin/sh.
  6875    399         touch sub/conftst$i.h
  6876    400       done
  6877    401       echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
  6878    402   
          403  +    # We check with `-c' and `-o' for the sake of the "dashmstdout"
          404  +    # mode.  It turns out that the SunPro C++ compiler does not properly
          405  +    # handle `-M -o', and we need to detect this.  Also, some Intel
          406  +    # versions had trouble with output in subdirs
          407  +    am__obj=sub/conftest.${OBJEXT-o}
          408  +    am__minus_obj="-o $am__obj"
  6879    409       case $depmode in
          410  +    gcc)
          411  +      # This depmode causes a compiler race in universal mode.
          412  +      test "$am__universal" = false || continue
          413  +      ;;
  6880    414       nosideeffect)
  6881    415         # after this tag, mechanisms are not by side-effect, so they'll
  6882    416         # only be used when explicitly requested
  6883    417         if test "x$enable_dependency_tracking" = xyes; then
  6884    418   	continue
  6885    419         else
  6886    420   	break
  6887    421         fi
  6888    422         ;;
          423  +    msvc7 | msvc7msys | msvisualcpp | msvcmsys)
          424  +      # This compiler won't grok `-c -o', but also, the minuso test has
          425  +      # not run yet.  These depmodes are late enough in the game, and
          426  +      # so weak that their functioning should not be impacted.
          427  +      am__obj=conftest.${OBJEXT-o}
          428  +      am__minus_obj=
          429  +      ;;
  6889    430       none) break ;;
  6890    431       esac
  6891         -    # We check with `-c' and `-o' for the sake of the "dashmstdout"
  6892         -    # mode.  It turns out that the SunPro C++ compiler does not properly
  6893         -    # handle `-M -o', and we need to detect this.
  6894    432       if depmode=$depmode \
  6895         -       source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \
          433  +       source=sub/conftest.c object=$am__obj \
  6896    434          depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
  6897         -       $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \
          435  +       $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \
  6898    436            >/dev/null 2>conftest.err &&
  6899    437          grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 &&
  6900    438          grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
  6901         -       grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 &&
          439  +       grep $am__obj sub/conftest.Po > /dev/null 2>&1 &&
  6902    440          ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
  6903    441         # icc doesn't choke on unknown options, it will just issue warnings
  6904    442         # or remarks (even with -Werror).  So we grep stderr for any message
  6905    443         # that says an option was ignored or not supported.
  6906    444         # When given -MP, icc 7.0 and 7.1 complain thusly:
  6907    445         #   icc: Command line warning: ignoring option '-M'; no argument required
  6908    446         # The diagnosis changed in icc 8.0:
................................................................................
  6943    481   AC_DEFUN([AM_DEP_TRACK],
  6944    482   [AC_ARG_ENABLE(dependency-tracking,
  6945    483   [  --disable-dependency-tracking  speeds up one-time build
  6946    484     --enable-dependency-tracking   do not reject slow dependency extractors])
  6947    485   if test "x$enable_dependency_tracking" != xno; then
  6948    486     am_depcomp="$ac_aux_dir/depcomp"
  6949    487     AMDEPBACKSLASH='\'
          488  +  am__nodep='_no'
  6950    489   fi
  6951    490   AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno])
  6952    491   AC_SUBST([AMDEPBACKSLASH])dnl
  6953    492   _AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl
          493  +AC_SUBST([am__nodep])dnl
          494  +_AM_SUBST_NOTMAKE([am__nodep])dnl
  6954    495   ])
  6955    496   
  6956    497   # Generate code to set up dependency tracking.              -*- Autoconf -*-
  6957    498   
  6958         -# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005
          499  +# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2008
  6959    500   # Free Software Foundation, Inc.
  6960    501   #
  6961    502   # This file is free software; the Free Software Foundation
  6962    503   # gives unlimited permission to copy and/or distribute it,
  6963    504   # with or without modifications, as long as this notice is preserved.
  6964    505   
  6965         -#serial 3
          506  +#serial 5
  6966    507   
  6967    508   # _AM_OUTPUT_DEPENDENCY_COMMANDS
  6968    509   # ------------------------------
  6969    510   AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS],
  6970         -[for mf in $CONFIG_FILES; do
  6971         -  # Strip MF so we end up with the name of the file.
  6972         -  mf=`echo "$mf" | sed -e 's/:.*$//'`
  6973         -  # Check whether this is an Automake generated Makefile or not.
  6974         -  # We used to match only the files named `Makefile.in', but
  6975         -  # some people rename them; so instead we look at the file content.
  6976         -  # Grep'ing the first line is not enough: some people post-process
  6977         -  # each Makefile.in and add a new line on top of each file to say so.
  6978         -  # Grep'ing the whole file is not good either: AIX grep has a line
  6979         -  # limit of 2048, but all sed's we know have understand at least 4000.
  6980         -  if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then
  6981         -    dirpart=`AS_DIRNAME("$mf")`
  6982         -  else
  6983         -    continue
  6984         -  fi
  6985         -  # Extract the definition of DEPDIR, am__include, and am__quote
  6986         -  # from the Makefile without running `make'.
  6987         -  DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"`
  6988         -  test -z "$DEPDIR" && continue
  6989         -  am__include=`sed -n 's/^am__include = //p' < "$mf"`
  6990         -  test -z "am__include" && continue
  6991         -  am__quote=`sed -n 's/^am__quote = //p' < "$mf"`
  6992         -  # When using ansi2knr, U may be empty or an underscore; expand it
  6993         -  U=`sed -n 's/^U = //p' < "$mf"`
  6994         -  # Find all dependency output files, they are included files with
  6995         -  # $(DEPDIR) in their names.  We invoke sed twice because it is the
  6996         -  # simplest approach to changing $(DEPDIR) to its actual value in the
  6997         -  # expansion.
  6998         -  for file in `sed -n "
  6999         -    s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \
  7000         -       sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do
  7001         -    # Make sure the directory exists.
  7002         -    test -f "$dirpart/$file" && continue
  7003         -    fdir=`AS_DIRNAME(["$file"])`
  7004         -    AS_MKDIR_P([$dirpart/$fdir])
  7005         -    # echo "creating $dirpart/$file"
  7006         -    echo '# dummy' > "$dirpart/$file"
          511  +[{
          512  +  # Autoconf 2.62 quotes --file arguments for eval, but not when files
          513  +  # are listed without --file.  Let's play safe and only enable the eval
          514  +  # if we detect the quoting.
          515  +  case $CONFIG_FILES in
          516  +  *\'*) eval set x "$CONFIG_FILES" ;;
          517  +  *)   set x $CONFIG_FILES ;;
          518  +  esac
          519  +  shift
          520  +  for mf
          521  +  do
          522  +    # Strip MF so we end up with the name of the file.
          523  +    mf=`echo "$mf" | sed -e 's/:.*$//'`
          524  +    # Check whether this is an Automake generated Makefile or not.
          525  +    # We used to match only the files named `Makefile.in', but
          526  +    # some people rename them; so instead we look at the file content.
          527  +    # Grep'ing the first line is not enough: some people post-process
          528  +    # each Makefile.in and add a new line on top of each file to say so.
          529  +    # Grep'ing the whole file is not good either: AIX grep has a line
          530  +    # limit of 2048, but all sed's we know have understand at least 4000.
          531  +    if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then
          532  +      dirpart=`AS_DIRNAME("$mf")`
          533  +    else
          534  +      continue
          535  +    fi
          536  +    # Extract the definition of DEPDIR, am__include, and am__quote
          537  +    # from the Makefile without running `make'.
          538  +    DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"`
          539  +    test -z "$DEPDIR" && continue
          540  +    am__include=`sed -n 's/^am__include = //p' < "$mf"`
          541  +    test -z "am__include" && continue
          542  +    am__quote=`sed -n 's/^am__quote = //p' < "$mf"`
          543  +    # When using ansi2knr, U may be empty or an underscore; expand it
          544  +    U=`sed -n 's/^U = //p' < "$mf"`
          545  +    # Find all dependency output files, they are included files with
          546  +    # $(DEPDIR) in their names.  We invoke sed twice because it is the
          547  +    # simplest approach to changing $(DEPDIR) to its actual value in the
          548  +    # expansion.
          549  +    for file in `sed -n "
          550  +      s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \
          551  +	 sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do
          552  +      # Make sure the directory exists.
          553  +      test -f "$dirpart/$file" && continue
          554  +      fdir=`AS_DIRNAME(["$file"])`
          555  +      AS_MKDIR_P([$dirpart/$fdir])
          556  +      # echo "creating $dirpart/$file"
          557  +      echo '# dummy' > "$dirpart/$file"
          558  +    done
  7007    559     done
  7008         -done
          560  +}
  7009    561   ])# _AM_OUTPUT_DEPENDENCY_COMMANDS
  7010    562   
  7011    563   
  7012    564   # AM_OUTPUT_DEPENDENCY_COMMANDS
  7013    565   # -----------------------------
  7014    566   # This macro should only be invoked once -- use via AC_REQUIRE.
  7015    567   #
................................................................................
  7018    570   # need in order to bootstrap the dependency handling code.
  7019    571   AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS],
  7020    572   [AC_CONFIG_COMMANDS([depfiles],
  7021    573        [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS],
  7022    574        [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"])
  7023    575   ])
  7024    576   
          577  +# Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005
          578  +# Free Software Foundation, Inc.
          579  +#
          580  +# This file is free software; the Free Software Foundation
          581  +# gives unlimited permission to copy and/or distribute it,
          582  +# with or without modifications, as long as this notice is preserved.
          583  +
          584  +# serial 8
          585  +
          586  +# AM_CONFIG_HEADER is obsolete.  It has been replaced by AC_CONFIG_HEADERS.
          587  +AU_DEFUN([AM_CONFIG_HEADER], [AC_CONFIG_HEADERS($@)])
          588  +
  7025    589   # Do all the work for Automake.                             -*- Autoconf -*-
  7026    590   
  7027    591   # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
  7028         -# 2005, 2006, 2008 Free Software Foundation, Inc.
          592  +# 2005, 2006, 2008, 2009 Free Software Foundation, Inc.
  7029    593   #
  7030    594   # This file is free software; the Free Software Foundation
  7031    595   # gives unlimited permission to copy and/or distribute it,
  7032    596   # with or without modifications, as long as this notice is preserved.
  7033    597   
  7034         -# serial 13
          598  +# serial 16
  7035    599   
  7036    600   # This macro actually does too much.  Some checks are only needed if
  7037    601   # your package does certain things.  But this isn't really a big deal.
  7038    602   
  7039    603   # AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE])
  7040    604   # AM_INIT_AUTOMAKE([OPTIONS])
  7041    605   # -----------------------------------------------
................................................................................
  7044    608   # and VERSION should now be passed to AC_INIT and removed from
  7045    609   # the call to AM_INIT_AUTOMAKE.
  7046    610   # We support both call styles for the transition.  After
  7047    611   # the next Automake release, Autoconf can make the AC_INIT
  7048    612   # arguments mandatory, and then we can depend on a new Autoconf
  7049    613   # release and drop the old call support.
  7050    614   AC_DEFUN([AM_INIT_AUTOMAKE],
  7051         -[AC_PREREQ([2.60])dnl
          615  +[AC_PREREQ([2.62])dnl
  7052    616   dnl Autoconf wants to disallow AM_ names.  We explicitly allow
  7053    617   dnl the ones we care about.
  7054    618   m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl
  7055    619   AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl
  7056    620   AC_REQUIRE([AC_PROG_INSTALL])dnl
  7057    621   if test "`cd $srcdir && pwd`" != "`pwd`"; then
  7058    622     # Use -I$(srcdir) only when $(srcdir) != ., so that make's output
................................................................................
  7095    659   AC_REQUIRE([AM_SANITY_CHECK])dnl
  7096    660   AC_REQUIRE([AC_ARG_PROGRAM])dnl
  7097    661   AM_MISSING_PROG(ACLOCAL, aclocal-${am__api_version})
  7098    662   AM_MISSING_PROG(AUTOCONF, autoconf)
  7099    663   AM_MISSING_PROG(AUTOMAKE, automake-${am__api_version})
  7100    664   AM_MISSING_PROG(AUTOHEADER, autoheader)
  7101    665   AM_MISSING_PROG(MAKEINFO, makeinfo)
  7102         -AM_PROG_INSTALL_SH
  7103         -AM_PROG_INSTALL_STRIP
          666  +AC_REQUIRE([AM_PROG_INSTALL_SH])dnl
          667  +AC_REQUIRE([AM_PROG_INSTALL_STRIP])dnl
  7104    668   AC_REQUIRE([AM_PROG_MKDIR_P])dnl
  7105    669   # We need awk for the "check" target.  The system "awk" is bad on
  7106    670   # some platforms.
  7107    671   AC_REQUIRE([AC_PROG_AWK])dnl
  7108    672   AC_REQUIRE([AC_PROG_MAKE_SET])dnl
  7109    673   AC_REQUIRE([AM_SET_LEADING_DOT])dnl
  7110    674   _AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])],
  7111         -              [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])],
  7112         -	      		     [_AM_PROG_TAR([v7])])])
          675  +	      [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])],
          676  +			     [_AM_PROG_TAR([v7])])])
  7113    677   _AM_IF_OPTION([no-dependencies],,
  7114    678   [AC_PROVIDE_IFELSE([AC_PROG_CC],
  7115         -                  [_AM_DEPENDENCIES(CC)],
  7116         -                  [define([AC_PROG_CC],
  7117         -                          defn([AC_PROG_CC])[_AM_DEPENDENCIES(CC)])])dnl
          679  +		  [_AM_DEPENDENCIES(CC)],
          680  +		  [define([AC_PROG_CC],
          681  +			  defn([AC_PROG_CC])[_AM_DEPENDENCIES(CC)])])dnl
  7118    682   AC_PROVIDE_IFELSE([AC_PROG_CXX],
  7119         -                  [_AM_DEPENDENCIES(CXX)],
  7120         -                  [define([AC_PROG_CXX],
  7121         -                          defn([AC_PROG_CXX])[_AM_DEPENDENCIES(CXX)])])dnl
          683  +		  [_AM_DEPENDENCIES(CXX)],
          684  +		  [define([AC_PROG_CXX],
          685  +			  defn([AC_PROG_CXX])[_AM_DEPENDENCIES(CXX)])])dnl
  7122    686   AC_PROVIDE_IFELSE([AC_PROG_OBJC],
  7123         -                  [_AM_DEPENDENCIES(OBJC)],
  7124         -                  [define([AC_PROG_OBJC],
  7125         -                          defn([AC_PROG_OBJC])[_AM_DEPENDENCIES(OBJC)])])dnl
          687  +		  [_AM_DEPENDENCIES(OBJC)],
          688  +		  [define([AC_PROG_OBJC],
          689  +			  defn([AC_PROG_OBJC])[_AM_DEPENDENCIES(OBJC)])])dnl
          690  +])
          691  +_AM_IF_OPTION([silent-rules], [AC_REQUIRE([AM_SILENT_RULES])])dnl
          692  +dnl The `parallel-tests' driver may need to know about EXEEXT, so add the
          693  +dnl `am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen.  This macro
          694  +dnl is hooked onto _AC_COMPILER_EXEEXT early, see below.
          695  +AC_CONFIG_COMMANDS_PRE(dnl
          696  +[m4_provide_if([_AM_COMPILER_EXEEXT],
          697  +  [AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl
  7126    698   ])
  7127         -])
          699  +
          700  +dnl Hook into `_AC_COMPILER_EXEEXT' early to learn its expansion.  Do not
          701  +dnl add the conditional right here, as _AC_COMPILER_EXEEXT may be further
          702  +dnl mangled by Autoconf and run in a shell conditional statement.
          703  +m4_define([_AC_COMPILER_EXEEXT],
          704  +m4_defn([_AC_COMPILER_EXEEXT])[m4_provide([_AM_COMPILER_EXEEXT])])
  7128    705   
  7129    706   
  7130    707   # When config.status generates a header, we must update the stamp-h file.
  7131    708   # This file resides in the same directory as the config header
  7132    709   # that is generated.  The stamp files are numbered to have different names.
  7133    710   
  7134    711   # Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the
................................................................................
  7144    721         break ;;
  7145    722       * )
  7146    723         _am_stamp_count=`expr $_am_stamp_count + 1` ;;
  7147    724     esac
  7148    725   done
  7149    726   echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count])
  7150    727   
  7151         -# Copyright (C) 2001, 2003, 2005  Free Software Foundation, Inc.
          728  +# Copyright (C) 2001, 2003, 2005, 2008, 2011 Free Software Foundation,
          729  +# Inc.
  7152    730   #
  7153    731   # This file is free software; the Free Software Foundation
  7154    732   # gives unlimited permission to copy and/or distribute it,
  7155    733   # with or without modifications, as long as this notice is preserved.
          734  +
          735  +# serial 1
  7156    736   
  7157    737   # AM_PROG_INSTALL_SH
  7158    738   # ------------------
  7159    739   # Define $install_sh.
  7160    740   AC_DEFUN([AM_PROG_INSTALL_SH],
  7161    741   [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
  7162         -install_sh=${install_sh-"\$(SHELL) $am_aux_dir/install-sh"}
          742  +if test x"${install_sh}" != xset; then
          743  +  case $am_aux_dir in
          744  +  *\ * | *\	*)
          745  +    install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;;
          746  +  *)
          747  +    install_sh="\${SHELL} $am_aux_dir/install-sh"
          748  +  esac
          749  +fi
  7163    750   AC_SUBST(install_sh)])
  7164    751   
  7165    752   # Copyright (C) 2003, 2005  Free Software Foundation, Inc.
  7166    753   #
  7167    754   # This file is free software; the Free Software Foundation
  7168    755   # gives unlimited permission to copy and/or distribute it,
  7169    756   # with or without modifications, as long as this notice is preserved.
................................................................................
  7182    769   fi
  7183    770   rmdir .tst 2>/dev/null
  7184    771   AC_SUBST([am__leading_dot])])
  7185    772   
  7186    773   # Add --enable-maintainer-mode option to configure.         -*- Autoconf -*-
  7187    774   # From Jim Meyering
  7188    775   
  7189         -# Copyright (C) 1996, 1998, 2000, 2001, 2002, 2003, 2004, 2005
  7190         -# Free Software Foundation, Inc.
          776  +# Copyright (C) 1996, 1998, 2000, 2001, 2002, 2003, 2004, 2005, 2008,
          777  +# 2011 Free Software Foundation, Inc.
  7191    778   #
  7192    779   # This file is free software; the Free Software Foundation
  7193    780   # gives unlimited permission to copy and/or distribute it,
  7194    781   # with or without modifications, as long as this notice is preserved.
  7195    782   
  7196         -# serial 4
          783  +# serial 5
  7197    784   
          785  +# AM_MAINTAINER_MODE([DEFAULT-MODE])
          786  +# ----------------------------------
          787  +# Control maintainer-specific portions of Makefiles.
          788  +# Default is to disable them, unless `enable' is passed literally.
          789  +# For symmetry, `disable' may be passed as well.  Anyway, the user
          790  +# can override the default with the --enable/--disable switch.
  7198    791   AC_DEFUN([AM_MAINTAINER_MODE],
  7199         -[AC_MSG_CHECKING([whether to enable maintainer-specific portions of Makefiles])
  7200         -  dnl maintainer-mode is disabled by default
  7201         -  AC_ARG_ENABLE(maintainer-mode,
  7202         -[  --enable-maintainer-mode  enable make rules and dependencies not useful
          792  +[m4_case(m4_default([$1], [disable]),
          793  +       [enable], [m4_define([am_maintainer_other], [disable])],
          794  +       [disable], [m4_define([am_maintainer_other], [enable])],
          795  +       [m4_define([am_maintainer_other], [enable])
          796  +        m4_warn([syntax], [unexpected argument to AM@&t@_MAINTAINER_MODE: $1])])
          797  +AC_MSG_CHECKING([whether to enable maintainer-specific portions of Makefiles])
          798  +  dnl maintainer-mode's default is 'disable' unless 'enable' is passed
          799  +  AC_ARG_ENABLE([maintainer-mode],
          800  +[  --][am_maintainer_other][-maintainer-mode  am_maintainer_other make rules and dependencies not useful
  7203    801   			  (and sometimes confusing) to the casual installer],
  7204         -      USE_MAINTAINER_MODE=$enableval,
  7205         -      USE_MAINTAINER_MODE=no)
          802  +      [USE_MAINTAINER_MODE=$enableval],
          803  +      [USE_MAINTAINER_MODE=]m4_if(am_maintainer_other, [enable], [no], [yes]))
  7206    804     AC_MSG_RESULT([$USE_MAINTAINER_MODE])
  7207         -  AM_CONDITIONAL(MAINTAINER_MODE, [test $USE_MAINTAINER_MODE = yes])
          805  +  AM_CONDITIONAL([MAINTAINER_MODE], [test $USE_MAINTAINER_MODE = yes])
  7208    806     MAINT=$MAINTAINER_MODE_TRUE
  7209         -  AC_SUBST(MAINT)dnl
          807  +  AC_SUBST([MAINT])dnl
  7210    808   ]
  7211    809   )
  7212    810   
  7213    811   AU_DEFUN([jm_MAINTAINER_MODE], [AM_MAINTAINER_MODE])
  7214    812   
  7215    813   # Check to see how 'make' treats includes.	            -*- Autoconf -*-
  7216    814   
  7217         -# Copyright (C) 2001, 2002, 2003, 2005  Free Software Foundation, Inc.
          815  +# Copyright (C) 2001, 2002, 2003, 2005, 2009  Free Software Foundation, Inc.
  7218    816   #
  7219    817   # This file is free software; the Free Software Foundation
  7220    818   # gives unlimited permission to copy and/or distribute it,
  7221    819   # with or without modifications, as long as this notice is preserved.
  7222    820   
  7223         -# serial 3
          821  +# serial 4
  7224    822   
  7225    823   # AM_MAKE_INCLUDE()
  7226    824   # -----------------
  7227    825   # Check to see how make treats includes.
  7228    826   AC_DEFUN([AM_MAKE_INCLUDE],
  7229    827   [am_make=${MAKE-make}
  7230    828   cat > confinc << 'END'
  7231    829   am__doit:
  7232         -	@echo done
          830  +	@echo this is the am__doit target
  7233    831   .PHONY: am__doit
  7234    832   END
  7235    833   # If we don't find an include directive, just comment out the code.
  7236    834   AC_MSG_CHECKING([for style of include used by $am_make])
  7237    835   am__include="#"
  7238    836   am__quote=
  7239    837   _am_result=none
  7240    838   # First try GNU make style include.
  7241    839   echo "include confinc" > confmf
  7242         -# We grep out `Entering directory' and `Leaving directory'
  7243         -# messages which can occur if `w' ends up in MAKEFLAGS.
  7244         -# In particular we don't look at `^make:' because GNU make might
  7245         -# be invoked under some other name (usually "gmake"), in which
  7246         -# case it prints its new name instead of `make'.
  7247         -if test "`$am_make -s -f confmf 2> /dev/null | grep -v 'ing directory'`" = "done"; then
  7248         -   am__include=include
  7249         -   am__quote=
  7250         -   _am_result=GNU
  7251         -fi
          840  +# Ignore all kinds of additional output from `make'.
          841  +case `$am_make -s -f confmf 2> /dev/null` in #(
          842  +*the\ am__doit\ target*)
          843  +  am__include=include
          844  +  am__quote=
          845  +  _am_result=GNU
          846  +  ;;
          847  +esac
  7252    848   # Now try BSD make style include.
  7253    849   if test "$am__include" = "#"; then
  7254    850      echo '.include "confinc"' > confmf
  7255         -   if test "`$am_make -s -f confmf 2> /dev/null`" = "done"; then
  7256         -      am__include=.include
  7257         -      am__quote="\""
  7258         -      _am_result=BSD
  7259         -   fi
          851  +   case `$am_make -s -f confmf 2> /dev/null` in #(
          852  +   *the\ am__doit\ target*)
          853  +     am__include=.include
          854  +     am__quote="\""
          855  +     _am_result=BSD
          856  +     ;;
          857  +   esac
  7260    858   fi
  7261    859   AC_SUBST([am__include])
  7262    860   AC_SUBST([am__quote])
  7263    861   AC_MSG_RESULT([$_am_result])
  7264    862   rm -f confinc confmf
  7265    863   ])
  7266    864   
  7267    865   # Fake the existence of programs that GNU maintainers use.  -*- Autoconf -*-
  7268    866   
  7269         -# Copyright (C) 1997, 1999, 2000, 2001, 2003, 2004, 2005
          867  +# Copyright (C) 1997, 1999, 2000, 2001, 2003, 2004, 2005, 2008
  7270    868   # Free Software Foundation, Inc.
  7271    869   #
  7272    870   # This file is free software; the Free Software Foundation
  7273    871   # gives unlimited permission to copy and/or distribute it,
  7274    872   # with or without modifications, as long as this notice is preserved.
  7275    873   
  7276         -# serial 5
          874  +# serial 6
  7277    875   
  7278    876   # AM_MISSING_PROG(NAME, PROGRAM)
  7279    877   # ------------------------------
  7280    878   AC_DEFUN([AM_MISSING_PROG],
  7281    879   [AC_REQUIRE([AM_MISSING_HAS_RUN])
  7282    880   $1=${$1-"${am_missing_run}$2"}
  7283    881   AC_SUBST($1)])
................................................................................
  7286    884   # AM_MISSING_HAS_RUN
  7287    885   # ------------------
  7288    886   # Define MISSING if not defined so far and test if it supports --run.
  7289    887   # If it does, set am_missing_run to use it, otherwise, to nothing.
  7290    888   AC_DEFUN([AM_MISSING_HAS_RUN],
  7291    889   [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
  7292    890   AC_REQUIRE_AUX_FILE([missing])dnl
  7293         -test x"${MISSING+set}" = xset || MISSING="\${SHELL} $am_aux_dir/missing"
          891  +if test x"${MISSING+set}" != xset; then
          892  +  case $am_aux_dir in
          893  +  *\ * | *\	*)
          894  +    MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;;
          895  +  *)
          896  +    MISSING="\${SHELL} $am_aux_dir/missing" ;;
          897  +  esac
          898  +fi
  7294    899   # Use eval to expand $SHELL
  7295    900   if eval "$MISSING --run true"; then
  7296    901     am_missing_run="$MISSING --run "
  7297    902   else
  7298    903     am_missing_run=
  7299    904     AC_MSG_WARN([`missing' script is too old or missing])
  7300    905   fi
  7301    906   ])
  7302    907   
  7303         -# Copyright (C) 2003, 2004, 2005, 2006  Free Software Foundation, Inc.
          908  +# Copyright (C) 2003, 2004, 2005, 2006, 2011 Free Software Foundation,
          909  +# Inc.
  7304    910   #
  7305    911   # This file is free software; the Free Software Foundation
  7306    912   # gives unlimited permission to copy and/or distribute it,
  7307    913   # with or without modifications, as long as this notice is preserved.
          914  +
          915  +# serial 1
  7308    916   
  7309    917   # AM_PROG_MKDIR_P
  7310    918   # ---------------
  7311    919   # Check for `mkdir -p'.
  7312    920   AC_DEFUN([AM_PROG_MKDIR_P],
  7313    921   [AC_PREREQ([2.60])dnl
  7314    922   AC_REQUIRE([AC_PROG_MKDIR_P])dnl
................................................................................
  7324    932     [[\\/$]]* | ?:[[\\/]]*) ;;
  7325    933     */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;;
  7326    934   esac
  7327    935   ])
  7328    936   
  7329    937   # Helper functions for option handling.                     -*- Autoconf -*-
  7330    938   
  7331         -# Copyright (C) 2001, 2002, 2003, 2005  Free Software Foundation, Inc.
          939  +# Copyright (C) 2001, 2002, 2003, 2005, 2008, 2010 Free Software
          940  +# Foundation, Inc.
  7332    941   #
  7333    942   # This file is free software; the Free Software Foundation
  7334    943   # gives unlimited permission to copy and/or distribute it,
  7335    944   # with or without modifications, as long as this notice is preserved.
  7336    945   
  7337         -# serial 3
          946  +# serial 5
  7338    947   
  7339    948   # _AM_MANGLE_OPTION(NAME)
  7340    949   # -----------------------
  7341    950   AC_DEFUN([_AM_MANGLE_OPTION],
  7342    951   [[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])])
  7343    952   
  7344    953   # _AM_SET_OPTION(NAME)
  7345         -# ------------------------------
          954  +# --------------------
  7346    955   # Set option NAME.  Presently that only means defining a flag for this option.
  7347    956   AC_DEFUN([_AM_SET_OPTION],
  7348    957   [m4_define(_AM_MANGLE_OPTION([$1]), 1)])
  7349    958   
  7350    959   # _AM_SET_OPTIONS(OPTIONS)
  7351         -# ----------------------------------
          960  +# ------------------------
  7352    961   # OPTIONS is a space-separated list of Automake options.
  7353    962   AC_DEFUN([_AM_SET_OPTIONS],
  7354         -[AC_FOREACH([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])])
          963  +[m4_foreach_w([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])])
  7355    964   
  7356    965   # _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET])
  7357    966   # -------------------------------------------
  7358    967   # Execute IF-SET if OPTION is set, IF-NOT-SET otherwise.
  7359    968   AC_DEFUN([_AM_IF_OPTION],
  7360    969   [m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])])
  7361    970   
  7362    971   # Check to make sure that the build environment is sane.    -*- Autoconf -*-
  7363    972   
  7364         -# Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005
          973  +# Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005, 2008
  7365    974   # Free Software Foundation, Inc.
  7366    975   #
  7367    976   # This file is free software; the Free Software Foundation
  7368    977   # gives unlimited permission to copy and/or distribute it,
  7369    978   # with or without modifications, as long as this notice is preserved.
  7370    979   
  7371         -# serial 4
          980  +# serial 5
  7372    981   
  7373    982   # AM_SANITY_CHECK
  7374    983   # ---------------
  7375    984   AC_DEFUN([AM_SANITY_CHECK],
  7376    985   [AC_MSG_CHECKING([whether build environment is sane])
  7377    986   # Just in case
  7378    987   sleep 1
  7379    988   echo timestamp > conftest.file
          989  +# Reject unsafe characters in $srcdir or the absolute working directory
          990  +# name.  Accept space and tab only in the latter.
          991  +am_lf='
          992  +'
          993  +case `pwd` in
          994  +  *[[\\\"\#\$\&\'\`$am_lf]]*)
          995  +    AC_MSG_ERROR([unsafe absolute working directory name]);;
          996  +esac
          997  +case $srcdir in
          998  +  *[[\\\"\#\$\&\'\`$am_lf\ \	]]*)
          999  +    AC_MSG_ERROR([unsafe srcdir value: `$srcdir']);;
         1000  +esac
         1001  +
  7380   1002   # Do `set' in a subshell so we don't clobber the current shell's
  7381   1003   # arguments.  Must try -L first in case configure is actually a
  7382   1004   # symlink; some systems play weird games with the mod time of symlinks
  7383   1005   # (eg FreeBSD returns the mod time of the symlink's containing
  7384   1006   # directory).
  7385   1007   if (
  7386         -   set X `ls -Lt $srcdir/configure conftest.file 2> /dev/null`
         1008  +   set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null`
  7387   1009      if test "$[*]" = "X"; then
  7388   1010         # -L didn't work.
  7389         -      set X `ls -t $srcdir/configure conftest.file`
         1011  +      set X `ls -t "$srcdir/configure" conftest.file`
  7390   1012      fi
  7391   1013      rm -f conftest.file
  7392   1014      if test "$[*]" != "X $srcdir/configure conftest.file" \
  7393   1015         && test "$[*]" != "X conftest.file $srcdir/configure"; then
  7394   1016   
  7395   1017         # If neither matched, then we have a broken ls.  This can happen
  7396   1018         # if, for instance, CONFIG_SHELL is bash and it inherits a
................................................................................
  7407   1029      :
  7408   1030   else
  7409   1031      AC_MSG_ERROR([newly created file is older than distributed files!
  7410   1032   Check your system clock])
  7411   1033   fi
  7412   1034   AC_MSG_RESULT(yes)])
  7413   1035   
  7414         -# Copyright (C) 2001, 2003, 2005  Free Software Foundation, Inc.
         1036  +# Copyright (C) 2001, 2003, 2005, 2011 Free Software Foundation, Inc.
  7415   1037   #
  7416   1038   # This file is free software; the Free Software Foundation
  7417   1039   # gives unlimited permission to copy and/or distribute it,
  7418   1040   # with or without modifications, as long as this notice is preserved.
         1041  +
         1042  +# serial 1
  7419   1043   
  7420   1044   # AM_PROG_INSTALL_STRIP
  7421   1045   # ---------------------
  7422   1046   # One issue with vendor `install' (even GNU) is that you can't
  7423   1047   # specify the program used to strip binaries.  This is especially
  7424   1048   # annoying in cross-compiling environments, where the build's strip
  7425   1049   # is unlikely to handle the host's binaries.
................................................................................
  7435   1059   dnl Don't test for $cross_compiling = yes, because it might be `maybe'.
  7436   1060   if test "$cross_compiling" != no; then
  7437   1061     AC_CHECK_TOOL([STRIP], [strip], :)
  7438   1062   fi
  7439   1063   INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s"
  7440   1064   AC_SUBST([INSTALL_STRIP_PROGRAM])])
  7441   1065   
  7442         -# Copyright (C) 2006  Free Software Foundation, Inc.
         1066  +# Copyright (C) 2006, 2008, 2010 Free Software Foundation, Inc.
  7443   1067   #
  7444   1068   # This file is free software; the Free Software Foundation
  7445   1069   # gives unlimited permission to copy and/or distribute it,
  7446   1070   # with or without modifications, as long as this notice is preserved.
         1071  +
         1072  +# serial 3
  7447   1073   
  7448   1074   # _AM_SUBST_NOTMAKE(VARIABLE)
  7449   1075   # ---------------------------
  7450   1076   # Prevent Automake from outputting VARIABLE = @VARIABLE@ in Makefile.in.
  7451   1077   # This macro is traced by Automake.
  7452   1078   AC_DEFUN([_AM_SUBST_NOTMAKE])
  7453   1079   
         1080  +# AM_SUBST_NOTMAKE(VARIABLE)
         1081  +# --------------------------
         1082  +# Public sister of _AM_SUBST_NOTMAKE.
         1083  +AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)])
         1084  +
  7454   1085   # Check how to create a tarball.                            -*- Autoconf -*-
  7455   1086   
  7456         -# Copyright (C) 2004, 2005  Free Software Foundation, Inc.
         1087  +# Copyright (C) 2004, 2005, 2012 Free Software Foundation, Inc.
  7457   1088   #
  7458   1089   # This file is free software; the Free Software Foundation
  7459   1090   # gives unlimited permission to copy and/or distribute it,
  7460   1091   # with or without modifications, as long as this notice is preserved.
  7461   1092   
  7462   1093   # serial 2
  7463   1094   
................................................................................
  7471   1102   # $tardir.
  7472   1103   #     tardir=directory && $(am__tar) > result.tar
  7473   1104   #
  7474   1105   # Substitute a variable $(am__untar) that extract such
  7475   1106   # a tarball read from stdin.
  7476   1107   #     $(am__untar) < result.tar
  7477   1108   AC_DEFUN([_AM_PROG_TAR],
  7478         -[# Always define AMTAR for backward compatibility.
  7479         -AM_MISSING_PROG([AMTAR], [tar])
         1109  +[# Always define AMTAR for backward compatibility.  Yes, it's still used
         1110  +# in the wild :-(  We should find a proper way to deprecate it ...
         1111  +AC_SUBST([AMTAR], ['$${TAR-tar}'])
  7480   1112   m4_if([$1], [v7],
  7481         -     [am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -'],
         1113  +     [am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'],
  7482   1114        [m4_case([$1], [ustar],, [pax],,
  7483   1115                 [m4_fatal([Unknown tar format])])
  7484   1116   AC_MSG_CHECKING([how to create a $1 tar archive])
  7485   1117   # Loop over all known methods to create a tar archive until one works.
  7486   1118   _am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none'
  7487   1119   _am_tools=${am_cv_prog_tar_$1-$_am_tools}
  7488   1120   # Do not fold the above two line into one, because Tru64 sh and
................................................................................
  7543   1175   
  7544   1176   AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool])
  7545   1177   AC_MSG_RESULT([$am_cv_prog_tar_$1])])
  7546   1178   AC_SUBST([am__tar])
  7547   1179   AC_SUBST([am__untar])
  7548   1180   ]) # _AM_PROG_TAR
  7549   1181   
         1182  +m4_include([m4/libtool.m4])
         1183  +m4_include([m4/ltoptions.m4])
         1184  +m4_include([m4/ltsugar.m4])
         1185  +m4_include([m4/ltversion.m4])
         1186  +m4_include([m4/lt~obsolete.m4])

Changes to config.guess.

     1      1   #! /bin/sh
     2      2   # Attempt to guess a canonical system name.
     3      3   #   Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
     4         -#   2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software Foundation,
     5         -#   Inc.
            4  +#   2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009
            5  +#   Free Software Foundation, Inc.
     6      6   
     7         -timestamp='2007-07-22'
            7  +timestamp='2009-11-20'
     8      8   
     9      9   # This file is free software; you can redistribute it and/or modify it
    10     10   # under the terms of the GNU General Public License as published by
    11     11   # the Free Software Foundation; either version 2 of the License, or
    12     12   # (at your option) any later version.
    13     13   #
    14     14   # This program is distributed in the hope that it will be useful, but
................................................................................
    23     23   #
    24     24   # As a special exception to the GNU General Public License, if you
    25     25   # distribute this file as part of a program that contains a
    26     26   # configuration script generated by Autoconf, you may include it under
    27     27   # the same distribution terms that you use for the rest of that program.
    28     28   
    29     29   
    30         -# Originally written by Per Bothner <per@bothner.com>.
    31         -# Please send patches to <config-patches@gnu.org>.  Submit a context
    32         -# diff and a properly formatted ChangeLog entry.
           30  +# Originally written by Per Bothner.  Please send patches (context
           31  +# diff format) to <config-patches@gnu.org> and include a ChangeLog
           32  +# entry.
    33     33   #
    34     34   # This script attempts to guess a canonical system name similar to
    35     35   # config.sub.  If it succeeds, it prints the system name on stdout, and
    36     36   # exits with 0.  Otherwise, it exits with 1.
    37     37   #
    38         -# The plan is that this can be called by configure scripts if you
    39         -# don't specify an explicit build system type.
           38  +# You can get the latest version of this script from:
           39  +# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD
    40     40   
    41     41   me=`echo "$0" | sed -e 's,.*/,,'`
    42     42   
    43     43   usage="\
    44     44   Usage: $0 [OPTION]
    45     45   
    46     46   Output the configuration name of the system \`$me' is run on.
................................................................................
    52     52   
    53     53   Report bugs and patches to <config-patches@gnu.org>."
    54     54   
    55     55   version="\
    56     56   GNU config.guess ($timestamp)
    57     57   
    58     58   Originally written by Per Bothner.
    59         -Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005
    60         -Free Software Foundation, Inc.
           59  +Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001,
           60  +2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
    61     61   
    62     62   This is free software; see the source for copying conditions.  There is NO
    63     63   warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
    64     64   
    65     65   help="
    66     66   Try \`$me --help' for more information."
    67     67   
................................................................................
   166    166   	esac
   167    167   	# The Operating System including object format, if it has switched
   168    168   	# to ELF recently, or will in the future.
   169    169   	case "${UNAME_MACHINE_ARCH}" in
   170    170   	    arm*|i386|m68k|ns32k|sh3*|sparc|vax)
   171    171   		eval $set_cc_for_build
   172    172   		if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \
   173         -			| grep __ELF__ >/dev/null
          173  +			| grep -q __ELF__
   174    174   		then
   175    175   		    # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout).
   176    176   		    # Return netbsd for either.  FIX?
   177    177   		    os=netbsd
   178    178   		else
   179    179   		    os=netbsdelf
   180    180   		fi
................................................................................
   320    320       DRS?6000:unix:4.0:6*)
   321    321   	echo sparc-icl-nx6
   322    322   	exit ;;
   323    323       DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*)
   324    324   	case `/usr/bin/uname -p` in
   325    325   	    sparc) echo sparc-icl-nx7; exit ;;
   326    326   	esac ;;
          327  +    s390x:SunOS:*:*)
          328  +	echo ${UNAME_MACHINE}-ibm-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
          329  +	exit ;;
   327    330       sun4H:SunOS:5.*:*)
   328    331   	echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
   329    332   	exit ;;
   330    333       sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*)
   331    334   	echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
          335  +	exit ;;
          336  +    i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*)
          337  +	echo i386-pc-auroraux${UNAME_RELEASE}
   332    338   	exit ;;
   333    339       i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*)
   334         -	echo i386-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
          340  +	eval $set_cc_for_build
          341  +	SUN_ARCH="i386"
          342  +	# If there is a compiler, see if it is configured for 64-bit objects.
          343  +	# Note that the Sun cc does not turn __LP64__ into 1 like gcc does.
          344  +	# This test works for both compilers.
          345  +	if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then
          346  +	    if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \
          347  +		(CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \
          348  +		grep IS_64BIT_ARCH >/dev/null
          349  +	    then
          350  +		SUN_ARCH="x86_64"
          351  +	    fi
          352  +	fi
          353  +	echo ${SUN_ARCH}-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
   335    354   	exit ;;
   336    355       sun4*:SunOS:6*:*)
   337    356   	# According to config.sub, this is the proper way to canonicalize
   338    357   	# SunOS6.  Hard to guess exactly what SunOS6 will be like, but
   339    358   	# it's likely to be more like Solaris than SunOS4.
   340    359   	echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
   341    360   	exit ;;
................................................................................
   528    547   		fi
   529    548   	elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then
   530    549   		echo rs6000-ibm-aix3.2.4
   531    550   	else
   532    551   		echo rs6000-ibm-aix3.2
   533    552   	fi
   534    553   	exit ;;
   535         -    *:AIX:*:[45])
          554  +    *:AIX:*:[456])
   536    555   	IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'`
   537    556   	if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then
   538    557   		IBM_ARCH=rs6000
   539    558   	else
   540    559   		IBM_ARCH=powerpc
   541    560   	fi
   542    561   	if [ -x /usr/bin/oslevel ] ; then
................................................................................
   636    655   	    #
   637    656   	    # $ CC_FOR_BUILD=cc ./config.guess
   638    657   	    # => hppa2.0w-hp-hpux11.23
   639    658   	    # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess
   640    659   	    # => hppa64-hp-hpux11.23
   641    660   
   642    661   	    if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) |
   643         -		grep __LP64__ >/dev/null
          662  +		grep -q __LP64__
   644    663   	    then
   645    664   		HP_ARCH="hppa2.0w"
   646    665   	    else
   647    666   		HP_ARCH="hppa64"
   648    667   	    fi
   649    668   	fi
   650    669   	echo ${HP_ARCH}-hp-hpux${HPUX_REV}
................................................................................
   787    806       i*:windows32*:*)
   788    807       	# uname -m includes "-pc" on this system.
   789    808       	echo ${UNAME_MACHINE}-mingw32
   790    809   	exit ;;
   791    810       i*:PW*:*)
   792    811   	echo ${UNAME_MACHINE}-pc-pw32
   793    812   	exit ;;
   794         -    *:Interix*:[3456]*)
          813  +    *:Interix*:*)
   795    814       	case ${UNAME_MACHINE} in
   796    815   	    x86)
   797    816   		echo i586-pc-interix${UNAME_RELEASE}
   798    817   		exit ;;
   799         -	    EM64T | authenticamd)
          818  +	    authenticamd | genuineintel | EM64T)
   800    819   		echo x86_64-unknown-interix${UNAME_RELEASE}
   801    820   		exit ;;
          821  +	    IA64)
          822  +		echo ia64-unknown-interix${UNAME_RELEASE}
          823  +		exit ;;
   802    824   	esac ;;
   803    825       [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*)
   804    826   	echo i${UNAME_MACHINE}-pc-mks
          827  +	exit ;;
          828  +    8664:Windows_NT:*)
          829  +	echo x86_64-pc-mks
   805    830   	exit ;;
   806    831       i*:Windows_NT*:* | Pentium*:Windows_NT*:*)
   807    832   	# How do we know it's Interix rather than the generic POSIX subsystem?
   808    833   	# It also conflicts with pre-2.0 versions of AT&T UWIN. Should we
   809    834   	# UNAME_MACHINE based on the output of uname instead of i386?
   810    835   	echo i586-pc-interix
   811    836   	exit ;;
................................................................................
   828    853       *:GNU/*:*:*)
   829    854   	# other systems with GNU libc and userland
   830    855   	echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-gnu
   831    856   	exit ;;
   832    857       i*86:Minix:*:*)
   833    858   	echo ${UNAME_MACHINE}-pc-minix
   834    859   	exit ;;
          860  +    alpha:Linux:*:*)
          861  +	case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in
          862  +	  EV5)   UNAME_MACHINE=alphaev5 ;;
          863  +	  EV56)  UNAME_MACHINE=alphaev56 ;;
          864  +	  PCA56) UNAME_MACHINE=alphapca56 ;;
          865  +	  PCA57) UNAME_MACHINE=alphapca56 ;;
          866  +	  EV6)   UNAME_MACHINE=alphaev6 ;;
          867  +	  EV67)  UNAME_MACHINE=alphaev67 ;;
          868  +	  EV68*) UNAME_MACHINE=alphaev68 ;;
          869  +        esac
          870  +	objdump --private-headers /bin/sh | grep -q ld.so.1
          871  +	if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi
          872  +	echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC}
          873  +	exit ;;
   835    874       arm*:Linux:*:*)
   836         -	echo ${UNAME_MACHINE}-unknown-linux-gnu
          875  +	eval $set_cc_for_build
          876  +	if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \
          877  +	    | grep -q __ARM_EABI__
          878  +	then
          879  +	    echo ${UNAME_MACHINE}-unknown-linux-gnu
          880  +	else
          881  +	    echo ${UNAME_MACHINE}-unknown-linux-gnueabi
          882  +	fi
   837    883   	exit ;;
   838    884       avr32*:Linux:*:*)
   839    885   	echo ${UNAME_MACHINE}-unknown-linux-gnu
   840    886   	exit ;;
   841    887       cris:Linux:*:*)
   842    888   	echo cris-axis-linux-gnu
   843    889   	exit ;;
   844    890       crisv32:Linux:*:*)
   845    891   	echo crisv32-axis-linux-gnu
   846    892   	exit ;;
   847    893       frv:Linux:*:*)
   848    894       	echo frv-unknown-linux-gnu
   849    895   	exit ;;
          896  +    i*86:Linux:*:*)
          897  +	LIBC=gnu
          898  +	eval $set_cc_for_build
          899  +	sed 's/^	//' << EOF >$dummy.c
          900  +	#ifdef __dietlibc__
          901  +	LIBC=dietlibc
          902  +	#endif
          903  +EOF
          904  +	eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC'`
          905  +	echo "${UNAME_MACHINE}-pc-linux-${LIBC}"
          906  +	exit ;;
   850    907       ia64:Linux:*:*)
   851    908   	echo ${UNAME_MACHINE}-unknown-linux-gnu
   852    909   	exit ;;
   853    910       m32r*:Linux:*:*)
   854    911   	echo ${UNAME_MACHINE}-unknown-linux-gnu
   855    912   	exit ;;
   856    913       m68*:Linux:*:*)
   857    914   	echo ${UNAME_MACHINE}-unknown-linux-gnu
   858    915   	exit ;;
   859         -    mips:Linux:*:*)
          916  +    mips:Linux:*:* | mips64:Linux:*:*)
   860    917   	eval $set_cc_for_build
   861    918   	sed 's/^	//' << EOF >$dummy.c
   862    919   	#undef CPU
   863         -	#undef mips
   864         -	#undef mipsel
          920  +	#undef ${UNAME_MACHINE}
          921  +	#undef ${UNAME_MACHINE}el
   865    922   	#if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL)
   866         -	CPU=mipsel
          923  +	CPU=${UNAME_MACHINE}el
   867    924   	#else
   868    925   	#if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB)
   869         -	CPU=mips
          926  +	CPU=${UNAME_MACHINE}
   870    927   	#else
   871    928   	CPU=
   872    929   	#endif
   873    930   	#endif
   874    931   EOF
   875         -	eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n '
   876         -	    /^CPU/{
   877         -		s: ::g
   878         -		p
   879         -	    }'`"
   880         -	test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; }
   881         -	;;
   882         -    mips64:Linux:*:*)
   883         -	eval $set_cc_for_build
   884         -	sed 's/^	//' << EOF >$dummy.c
   885         -	#undef CPU
   886         -	#undef mips64
   887         -	#undef mips64el
   888         -	#if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL)
   889         -	CPU=mips64el
   890         -	#else
   891         -	#if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB)
   892         -	CPU=mips64
   893         -	#else
   894         -	CPU=
   895         -	#endif
   896         -	#endif
   897         -EOF
   898         -	eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n '
   899         -	    /^CPU/{
   900         -		s: ::g
   901         -		p
   902         -	    }'`"
          932  +	eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'`
   903    933   	test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; }
   904    934   	;;
   905    935       or32:Linux:*:*)
   906    936   	echo or32-unknown-linux-gnu
   907    937   	exit ;;
   908         -    ppc:Linux:*:*)
   909         -	echo powerpc-unknown-linux-gnu
          938  +    padre:Linux:*:*)
          939  +	echo sparc-unknown-linux-gnu
   910    940   	exit ;;
   911         -    ppc64:Linux:*:*)
   912         -	echo powerpc64-unknown-linux-gnu
   913         -	exit ;;
   914         -    alpha:Linux:*:*)
   915         -	case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in
   916         -	  EV5)   UNAME_MACHINE=alphaev5 ;;
   917         -	  EV56)  UNAME_MACHINE=alphaev56 ;;
   918         -	  PCA56) UNAME_MACHINE=alphapca56 ;;
   919         -	  PCA57) UNAME_MACHINE=alphapca56 ;;
   920         -	  EV6)   UNAME_MACHINE=alphaev6 ;;
   921         -	  EV67)  UNAME_MACHINE=alphaev67 ;;
   922         -	  EV68*) UNAME_MACHINE=alphaev68 ;;
   923         -        esac
   924         -	objdump --private-headers /bin/sh | grep ld.so.1 >/dev/null
   925         -	if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi
   926         -	echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC}
          941  +    parisc64:Linux:*:* | hppa64:Linux:*:*)
          942  +	echo hppa64-unknown-linux-gnu
   927    943   	exit ;;
   928    944       parisc:Linux:*:* | hppa:Linux:*:*)
   929    945   	# Look for CPU level
   930    946   	case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in
   931    947   	  PA7*) echo hppa1.1-unknown-linux-gnu ;;
   932    948   	  PA8*) echo hppa2.0-unknown-linux-gnu ;;
   933    949   	  *)    echo hppa-unknown-linux-gnu ;;
   934    950   	esac
   935    951   	exit ;;
   936         -    parisc64:Linux:*:* | hppa64:Linux:*:*)
   937         -	echo hppa64-unknown-linux-gnu
          952  +    ppc64:Linux:*:*)
          953  +	echo powerpc64-unknown-linux-gnu
          954  +	exit ;;
          955  +    ppc:Linux:*:*)
          956  +	echo powerpc-unknown-linux-gnu
   938    957   	exit ;;
   939    958       s390:Linux:*:* | s390x:Linux:*:*)
   940    959   	echo ${UNAME_MACHINE}-ibm-linux
   941    960   	exit ;;
   942    961       sh64*:Linux:*:*)
   943    962       	echo ${UNAME_MACHINE}-unknown-linux-gnu
   944    963   	exit ;;
................................................................................
   950    969   	exit ;;
   951    970       vax:Linux:*:*)
   952    971   	echo ${UNAME_MACHINE}-dec-linux-gnu
   953    972   	exit ;;
   954    973       x86_64:Linux:*:*)
   955    974   	echo x86_64-unknown-linux-gnu
   956    975   	exit ;;
   957         -    xtensa:Linux:*:*)
   958         -    	echo xtensa-unknown-linux-gnu
          976  +    xtensa*:Linux:*:*)
          977  +    	echo ${UNAME_MACHINE}-unknown-linux-gnu
   959    978   	exit ;;
   960         -    i*86:Linux:*:*)
   961         -	# The BFD linker knows what the default object file format is, so
   962         -	# first see if it will tell us. cd to the root directory to prevent
   963         -	# problems with other programs or directories called `ld' in the path.
   964         -	# Set LC_ALL=C to ensure ld outputs messages in English.
   965         -	ld_supported_targets=`cd /; LC_ALL=C ld --help 2>&1 \
   966         -			 | sed -ne '/supported targets:/!d
   967         -				    s/[ 	][ 	]*/ /g
   968         -				    s/.*supported targets: *//
   969         -				    s/ .*//
   970         -				    p'`
   971         -        case "$ld_supported_targets" in
   972         -	  elf32-i386)
   973         -		TENTATIVE="${UNAME_MACHINE}-pc-linux-gnu"
   974         -		;;
   975         -	  a.out-i386-linux)
   976         -		echo "${UNAME_MACHINE}-pc-linux-gnuaout"
   977         -		exit ;;
   978         -	  coff-i386)
   979         -		echo "${UNAME_MACHINE}-pc-linux-gnucoff"
   980         -		exit ;;
   981         -	  "")
   982         -		# Either a pre-BFD a.out linker (linux-gnuoldld) or
   983         -		# one that does not give us useful --help.
   984         -		echo "${UNAME_MACHINE}-pc-linux-gnuoldld"
   985         -		exit ;;
   986         -	esac
   987         -	# Determine whether the default compiler is a.out or elf
   988         -	eval $set_cc_for_build
   989         -	sed 's/^	//' << EOF >$dummy.c
   990         -	#include <features.h>
   991         -	#ifdef __ELF__
   992         -	# ifdef __GLIBC__
   993         -	#  if __GLIBC__ >= 2
   994         -	LIBC=gnu
   995         -	#  else
   996         -	LIBC=gnulibc1
   997         -	#  endif
   998         -	# else
   999         -	LIBC=gnulibc1
  1000         -	# endif
  1001         -	#else
  1002         -	#if defined(__INTEL_COMPILER) || defined(__PGI) || defined(__SUNPRO_C) || defined(__SUNPRO_CC)
  1003         -	LIBC=gnu
  1004         -	#else
  1005         -	LIBC=gnuaout
  1006         -	#endif
  1007         -	#endif
  1008         -	#ifdef __dietlibc__
  1009         -	LIBC=dietlibc
  1010         -	#endif
  1011         -EOF
  1012         -	eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n '
  1013         -	    /^LIBC/{
  1014         -		s: ::g
  1015         -		p
  1016         -	    }'`"
  1017         -	test x"${LIBC}" != x && {
  1018         -		echo "${UNAME_MACHINE}-pc-linux-${LIBC}"
  1019         -		exit
  1020         -	}
  1021         -	test x"${TENTATIVE}" != x && { echo "${TENTATIVE}"; exit; }
  1022         -	;;
  1023    979       i*86:DYNIX/ptx:4*:*)
  1024    980   	# ptx 4.0 does uname -s correctly, with DYNIX/ptx in there.
  1025    981   	# earlier versions are messed up and put the nodename in both
  1026    982   	# sysname and nodename.
  1027    983   	echo i386-sequent-sysv4
  1028    984   	exit ;;
  1029    985       i*86:UNIX_SV:4.2MP:2.*)
................................................................................
  1044   1000   	exit ;;
  1045   1001       i*86:atheos:*:*)
  1046   1002   	echo ${UNAME_MACHINE}-unknown-atheos
  1047   1003   	exit ;;
  1048   1004       i*86:syllable:*:*)
  1049   1005   	echo ${UNAME_MACHINE}-pc-syllable
  1050   1006   	exit ;;
  1051         -    i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.0*:*)
         1007  +    i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*)
  1052   1008   	echo i386-unknown-lynxos${UNAME_RELEASE}
  1053   1009   	exit ;;
  1054   1010       i*86:*DOS:*:*)
  1055   1011   	echo ${UNAME_MACHINE}-pc-msdosdjgpp
  1056   1012   	exit ;;
  1057   1013       i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*)
  1058   1014   	UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'`
................................................................................
  1088   1044   	else
  1089   1045   		echo ${UNAME_MACHINE}-pc-sysv32
  1090   1046   	fi
  1091   1047   	exit ;;
  1092   1048       pc:*:*:*)
  1093   1049   	# Left here for compatibility:
  1094   1050           # uname -m prints for DJGPP always 'pc', but it prints nothing about
  1095         -        # the processor, so we play safe by assuming i386.
  1096         -	echo i386-pc-msdosdjgpp
         1051  +        # the processor, so we play safe by assuming i586.
         1052  +	# Note: whatever this is, it MUST be the same as what config.sub
         1053  +	# prints for the "djgpp" host, or else GDB configury will decide that
         1054  +	# this is a cross-build.
         1055  +	echo i586-pc-msdosdjgpp
  1097   1056           exit ;;
  1098   1057       Intel:Mach:3*:*)
  1099   1058   	echo i386-pc-mach3
  1100   1059   	exit ;;
  1101   1060       paragon:*:*:*)
  1102   1061   	echo i860-intel-osf1
  1103   1062   	exit ;;
................................................................................
  1127   1086   	/bin/uname -p 2>/dev/null | grep 86 >/dev/null \
  1128   1087   	  && { echo i486-ncr-sysv4.3${OS_REL}; exit; }
  1129   1088   	/bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
  1130   1089   	  && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;;
  1131   1090       3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*)
  1132   1091           /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
  1133   1092             && { echo i486-ncr-sysv4; exit; } ;;
         1093  +    NCR*:*:4.2:* | MPRAS*:*:4.2:*)
         1094  +	OS_REL='.3'
         1095  +	test -r /etc/.relid \
         1096  +	    && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`
         1097  +	/bin/uname -p 2>/dev/null | grep 86 >/dev/null \
         1098  +	    && { echo i486-ncr-sysv4.3${OS_REL}; exit; }
         1099  +	/bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
         1100  +	    && { echo i586-ncr-sysv4.3${OS_REL}; exit; }
         1101  +	/bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \
         1102  +	    && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;;
  1134   1103       m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*)
  1135   1104   	echo m68k-unknown-lynxos${UNAME_RELEASE}
  1136   1105   	exit ;;
  1137   1106       mc68030:UNIX_System_V:4.*:*)
  1138   1107   	echo m68k-atari-sysv4
  1139   1108   	exit ;;
  1140   1109       TSUNAMI:LynxOS:2.*:*)
  1141   1110   	echo sparc-unknown-lynxos${UNAME_RELEASE}
  1142   1111   	exit ;;
  1143   1112       rs6000:LynxOS:2.*:*)
  1144   1113   	echo rs6000-unknown-lynxos${UNAME_RELEASE}
  1145   1114   	exit ;;
  1146         -    PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.0*:*)
         1115  +    PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*)
  1147   1116   	echo powerpc-unknown-lynxos${UNAME_RELEASE}
  1148   1117   	exit ;;
  1149   1118       SM[BE]S:UNIX_SV:*:*)
  1150   1119   	echo mips-dde-sysv${UNAME_RELEASE}
  1151   1120   	exit ;;
  1152   1121       RM*:ReliantUNIX-*:*:*)
  1153   1122   	echo mips-sni-sysv4
................................................................................
  1201   1170   	echo powerpc-be-beos
  1202   1171   	exit ;;
  1203   1172       BeMac:BeOS:*:*)	# BeOS running on Mac or Mac clone, PPC only.
  1204   1173   	echo powerpc-apple-beos
  1205   1174   	exit ;;
  1206   1175       BePC:BeOS:*:*)	# BeOS running on Intel PC compatible.
  1207   1176   	echo i586-pc-beos
         1177  +	exit ;;
         1178  +    BePC:Haiku:*:*)	# Haiku running on Intel PC compatible.
         1179  +	echo i586-pc-haiku
  1208   1180   	exit ;;
  1209   1181       SX-4:SUPER-UX:*:*)
  1210   1182   	echo sx4-nec-superux${UNAME_RELEASE}
  1211   1183   	exit ;;
  1212   1184       SX-5:SUPER-UX:*:*)
  1213   1185   	echo sx5-nec-superux${UNAME_RELEASE}
  1214   1186   	exit ;;
................................................................................
  1229   1201   	exit ;;
  1230   1202       *:Rhapsody:*:*)
  1231   1203   	echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE}
  1232   1204   	exit ;;
  1233   1205       *:Darwin:*:*)
  1234   1206   	UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown
  1235   1207   	case $UNAME_PROCESSOR in
         1208  +	    i386)
         1209  +		eval $set_cc_for_build
         1210  +		if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then
         1211  +		  if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \
         1212  +		      (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \
         1213  +		      grep IS_64BIT_ARCH >/dev/null
         1214  +		  then
         1215  +		      UNAME_PROCESSOR="x86_64"
         1216  +		  fi
         1217  +		fi ;;
  1236   1218   	    unknown) UNAME_PROCESSOR=powerpc ;;
  1237   1219   	esac
  1238   1220   	echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE}
  1239   1221   	exit ;;
  1240   1222       *:procnto*:*:* | *:QNX:[0123456789]*:*)
  1241   1223   	UNAME_PROCESSOR=`uname -p`
  1242   1224   	if test "$UNAME_PROCESSOR" = "x86"; then
................................................................................
  1310   1292   	exit ;;
  1311   1293       i*86:skyos:*:*)
  1312   1294   	echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE}` | sed -e 's/ .*$//'
  1313   1295   	exit ;;
  1314   1296       i*86:rdos:*:*)
  1315   1297   	echo ${UNAME_MACHINE}-pc-rdos
  1316   1298   	exit ;;
         1299  +    i*86:AROS:*:*)
         1300  +	echo ${UNAME_MACHINE}-pc-aros
         1301  +	exit ;;
  1317   1302   esac
  1318   1303   
  1319   1304   #echo '(No uname command or uname output not recognized.)' 1>&2
  1320   1305   #echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2
  1321   1306   
  1322   1307   eval $set_cc_for_build
  1323   1308   cat >$dummy.c <<EOF
................................................................................
  1470   1455   cat >&2 <<EOF
  1471   1456   $0: unable to guess system type
  1472   1457   
  1473   1458   This script, last modified $timestamp, has failed to recognize
  1474   1459   the operating system you are using. It is advised that you
  1475   1460   download the most up to date version of the config scripts from
  1476   1461   
  1477         -  http://savannah.gnu.org/cgi-bin/viewcvs/*checkout*/config/config/config.guess
         1462  +  http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD
  1478   1463   and
  1479         -  http://savannah.gnu.org/cgi-bin/viewcvs/*checkout*/config/config/config.sub
         1464  +  http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD
  1480   1465   
  1481   1466   If the version you run ($0) is already up to date, please
  1482   1467   send the following data and any information you think might be
  1483   1468   pertinent to <config-patches@gnu.org> in order to provide the needed
  1484   1469   information to handle your system.
  1485   1470   
  1486   1471   config.guess timestamp = $timestamp

Added config.h.

            1  +/* config.h.  Generated from config.h.in by configure.  */
            2  +/* config.h.in.  Generated from configure.ac by autoheader.  */
            3  +
            4  +/* Define to 1 if you have the <dlfcn.h> header file. */
            5  +#define HAVE_DLFCN_H 1
            6  +
            7  +/* Define to 1 if you have the <fcntl.h> header file. */
            8  +#define HAVE_FCNTL_H 1
            9  +
           10  +/* Define to 1 if you have the `fdatasync' function. */
           11  +#define HAVE_FDATASYNC 1
           12  +
           13  +/* Define to 1 if you have the <float.h> header file. */
           14  +#define HAVE_FLOAT_H 1
           15  +
           16  +/* Define to 1 if you have the `ftruncate' function. */
           17  +#define HAVE_FTRUNCATE 1
           18  +
           19  +/* Define to 1 if you have the <geotiff/geotiff.h> header file. */
           20  +/* #undef HAVE_GEOTIFF_GEOTIFF_H */
           21  +
           22  +/* Define to 1 if you have the <geotiff.h> header file. */
           23  +/* #undef HAVE_GEOTIFF_H */
           24  +
           25  +/* Define to 1 if you have the `getcwd' function. */
           26  +#define HAVE_GETCWD 1
           27  +
           28  +/* Define to 1 if you have the `gettimeofday' function. */
           29  +#define HAVE_GETTIMEOFDAY 1
           30  +
           31  +/* Define to 1 if you have the <inttypes.h> header file. */
           32  +#define HAVE_INTTYPES_H 1
           33  +
           34  +/* Define to 1 if you have the <jerror.h> header file. */
           35  +#define HAVE_JERROR_H 1
           36  +
           37  +/* Define to 1 if you have the <jpeglib.h> header file. */
           38  +#define HAVE_JPEGLIB_H 1
           39  +
           40  +/* Define to 1 if you have the `geotiff' library (-lgeotiff). */
           41  +#define HAVE_LIBGEOTIFF 1
           42  +
           43  +/* Define to 1 if you have the <libgeotiff/geotiff.h> header file. */
           44  +#define HAVE_LIBGEOTIFF_GEOTIFF_H 1
           45  +
           46  +/* Define to 1 if you have the `jpeg' library (-ljpeg). */
           47  +#define HAVE_LIBJPEG 1
           48  +
           49  +/* Define to 1 if you have the `proj' library (-lproj). */
           50  +#define HAVE_LIBPROJ 1
           51  +
           52  +/* Define to 1 if you have the `tiff' library (-ltiff). */
           53  +#define HAVE_LIBTIFF 1
           54  +
           55  +/* Define to 1 if you have the `z' library (-lz). */
           56  +#define HAVE_LIBZ 1
           57  +
           58  +/* Define to 1 if you have the `localtime_r' function. */
           59  +#define HAVE_LOCALTIME_R 1
           60  +
           61  +/* Define to 1 if `lstat' has the bug that it succeeds when given the
           62  +   zero-length file name argument. */
           63  +/* #undef HAVE_LSTAT_EMPTY_STRING_BUG */
           64  +
           65  +/* Define to 1 if you have the <math.h> header file. */
           66  +#define HAVE_MATH_H 1
           67  +
           68  +/* Define to 1 if you have the `memmove' function. */
           69  +#define HAVE_MEMMOVE 1
           70  +
           71  +/* Define to 1 if you have the <memory.h> header file. */
           72  +#define HAVE_MEMORY_H 1
           73  +
           74  +/* Define to 1 if you have the `memset' function. */
           75  +#define HAVE_MEMSET 1
           76  +
           77  +/* Define to 1 if you have the `sqrt' function. */
           78  +/* #undef HAVE_SQRT */
           79  +
           80  +/* Define to 1 if `stat' has the bug that it succeeds when given the
           81  +   zero-length file name argument. */
           82  +/* #undef HAVE_STAT_EMPTY_STRING_BUG */
           83  +
           84  +/* Define to 1 if you have the <stddef.h> header file. */
           85  +#define HAVE_STDDEF_H 1
           86  +
           87  +/* Define to 1 if you have the <stdint.h> header file. */
           88  +#define HAVE_STDINT_H 1
           89  +
           90  +/* Define to 1 if you have the <stdio.h> header file. */
           91  +#define HAVE_STDIO_H 1
           92  +
           93  +/* Define to 1 if you have the <stdlib.h> header file. */
           94  +#define HAVE_STDLIB_H 1
           95  +
           96  +/* Define to 1 if you have the `strcasecmp' function. */
           97  +#define HAVE_STRCASECMP 1
           98  +
           99  +/* Define to 1 if you have the `strerror' function. */
          100  +#define HAVE_STRERROR 1
          101  +
          102  +/* Define to 1 if you have the `strftime' function. */
          103  +#define HAVE_STRFTIME 1
          104  +
          105  +/* Define to 1 if you have the <strings.h> header file. */
          106  +#define HAVE_STRINGS_H 1
          107  +
          108  +/* Define to 1 if you have the <string.h> header file. */
          109  +#define HAVE_STRING_H 1
          110  +
          111  +/* Define to 1 if you have the `strncasecmp' function. */
          112  +#define HAVE_STRNCASECMP 1
          113  +
          114  +/* Define to 1 if you have the `strstr' function. */
          115  +#define HAVE_STRSTR 1
          116  +
          117  +/* Define to 1 if you have the <sys/stat.h> header file. */
          118  +#define HAVE_SYS_STAT_H 1
          119  +
          120  +/* Define to 1 if you have the <sys/time.h> header file. */
          121  +#define HAVE_SYS_TIME_H 1
          122  +
          123  +/* Define to 1 if you have the <sys/types.h> header file. */
          124  +#define HAVE_SYS_TYPES_H 1
          125  +
          126  +/* Define to 1 if you have the <unistd.h> header file. */
          127  +#define HAVE_UNISTD_H 1
          128  +
          129  +/* Define to 1 if `lstat' dereferences a symlink specified with a trailing
          130  +   slash. */
          131  +#define LSTAT_FOLLOWS_SLASHED_SYMLINK 1
          132  +
          133  +/* Define to the sub-directory in which libtool stores uninstalled libraries.
          134  +   */
          135  +#define LT_OBJDIR ".libs/"
          136  +
          137  +/* Name of package */
          138  +#define PACKAGE "librasterlite"
          139  +
          140  +/* Define to the address where bug reports for this package should be sent. */
          141  +#define PACKAGE_BUGREPORT "a.furieri @ lqt.it"
          142  +
          143  +/* Define to the full name of this package. */
          144  +#define PACKAGE_NAME "librasterlite"
          145  +
          146  +/* Define to the full name and version of this package. */
          147  +#define PACKAGE_STRING "librasterlite 1.1f"
          148  +
          149  +/* Define to the one symbol short name of this package. */
          150  +#define PACKAGE_TARNAME "librasterlite"
          151  +
          152  +/* Define to the home page for this package. */
          153  +#define PACKAGE_URL ""
          154  +
          155  +/* Define to the version of this package. */
          156  +#define PACKAGE_VERSION "1.1f"
          157  +
          158  +/* Define to 1 if you have the ANSI C header files. */
          159  +#define STDC_HEADERS 1
          160  +
          161  +/* Define to 1 if you can safely include both <sys/time.h> and <time.h>. */
          162  +#define TIME_WITH_SYS_TIME 1
          163  +
          164  +/* Define to 1 if your <sys/time.h> declares `struct tm'. */
          165  +/* #undef TM_IN_SYS_TIME */
          166  +
          167  +/* Version number of package */
          168  +#define VERSION "1.1f"
          169  +
          170  +/* Define to empty if `const' does not conform to ANSI C. */
          171  +/* #undef const */
          172  +
          173  +/* Define to `long int' if <sys/types.h> does not define. */
          174  +/* #undef off_t */
          175  +
          176  +/* Define to `unsigned int' if <sys/types.h> does not define. */
          177  +/* #undef size_t */
          178  +
          179  +/* Define to empty if the keyword `volatile' does not work. Warning: valid
          180  +   code using `volatile' can become incorrect without. Disable with care. */
          181  +/* #undef volatile */

Added config.h.in.

            1  +/* config.h.in.  Generated from configure.ac by autoheader.  */
            2  +
            3  +/* Define to 1 if you have the <dlfcn.h> header file. */
            4  +#undef HAVE_DLFCN_H
            5  +
            6  +/* Define to 1 if you have the <fcntl.h> header file. */
            7  +#undef HAVE_FCNTL_H
            8  +
            9  +/* Define to 1 if you have the `fdatasync' function. */
           10  +#undef HAVE_FDATASYNC
           11  +
           12  +/* Define to 1 if you have the <float.h> header file. */
           13  +#undef HAVE_FLOAT_H
           14  +
           15  +/* Define to 1 if you have the `ftruncate' function. */
           16  +#undef HAVE_FTRUNCATE
           17  +
           18  +/* Define to 1 if you have the <geotiff/geotiff.h> header file. */
           19  +#undef HAVE_GEOTIFF_GEOTIFF_H
           20  +
           21  +/* Define to 1 if you have the <geotiff.h> header file. */
           22  +#undef HAVE_GEOTIFF_H
           23  +
           24  +/* Define to 1 if you have the `getcwd' function. */
           25  +#undef HAVE_GETCWD
           26  +
           27  +/* Define to 1 if you have the `gettimeofday' function. */
           28  +#undef HAVE_GETTIMEOFDAY
           29  +
           30  +/* Define to 1 if you have the <inttypes.h> header file. */
           31  +#undef HAVE_INTTYPES_H
           32  +
           33  +/* Define to 1 if you have the <jerror.h> header file. */
           34  +#undef HAVE_JERROR_H
           35  +
           36  +/* Define to 1 if you have the <jpeglib.h> header file. */
           37  +#undef HAVE_JPEGLIB_H
           38  +
           39  +/* Define to 1 if you have the `geotiff' library (-lgeotiff). */
           40  +#undef HAVE_LIBGEOTIFF
           41  +
           42  +/* Define to 1 if you have the <libgeotiff/geotiff.h> header file. */
           43  +#undef HAVE_LIBGEOTIFF_GEOTIFF_H
           44  +
           45  +/* Define to 1 if you have the `jpeg' library (-ljpeg). */
           46  +#undef HAVE_LIBJPEG
           47  +
           48  +/* Define to 1 if you have the `proj' library (-lproj). */
           49  +#undef HAVE_LIBPROJ
           50  +
           51  +/* Define to 1 if you have the `tiff' library (-ltiff). */
           52  +#undef HAVE_LIBTIFF
           53  +
           54  +/* Define to 1 if you have the `z' library (-lz). */
           55  +#undef HAVE_LIBZ
           56  +
           57  +/* Define to 1 if you have the `localtime_r' function. */
           58  +#undef HAVE_LOCALTIME_R
           59  +
           60  +/* Define to 1 if `lstat' has the bug that it succeeds when given the
           61  +   zero-length file name argument. */
           62  +#undef HAVE_LSTAT_EMPTY_STRING_BUG
           63  +
           64  +/* Define to 1 if you have the <math.h> header file. */
           65  +#undef HAVE_MATH_H
           66  +
           67  +/* Define to 1 if you have the `memmove' function. */
           68  +#undef HAVE_MEMMOVE
           69  +
           70  +/* Define to 1 if you have the <memory.h> header file. */
           71  +#undef HAVE_MEMORY_H
           72  +
           73  +/* Define to 1 if you have the `memset' function. */
           74  +#undef HAVE_MEMSET
           75  +
           76  +/* Define to 1 if you have the `sqrt' function. */
           77  +#undef HAVE_SQRT
           78  +
           79  +/* Define to 1 if `stat' has the bug that it succeeds when given the
           80  +   zero-length file name argument. */
           81  +#undef HAVE_STAT_EMPTY_STRING_BUG
           82  +
           83  +/* Define to 1 if you have the <stddef.h> header file. */
           84  +#undef HAVE_STDDEF_H
           85  +
           86  +/* Define to 1 if you have the <stdint.h> header file. */
           87  +#undef HAVE_STDINT_H
           88  +
           89  +/* Define to 1 if you have the <stdio.h> header file. */
           90  +#undef HAVE_STDIO_H
           91  +
           92  +/* Define to 1 if you have the <stdlib.h> header file. */
           93  +#undef HAVE_STDLIB_H
           94  +
           95  +/* Define to 1 if you have the `strcasecmp' function. */
           96  +#undef HAVE_STRCASECMP
           97  +
           98  +/* Define to 1 if you have the `strerror' function. */
           99  +#undef HAVE_STRERROR
          100  +
          101  +/* Define to 1 if you have the `strftime' function. */
          102  +#undef HAVE_STRFTIME
          103  +
          104  +/* Define to 1 if you have the <strings.h> header file. */
          105  +#undef HAVE_STRINGS_H
          106  +
          107  +/* Define to 1 if you have the <string.h> header file. */
          108  +#undef HAVE_STRING_H
          109  +
          110  +/* Define to 1 if you have the `strncasecmp' function. */
          111  +#undef HAVE_STRNCASECMP
          112  +
          113  +/* Define to 1 if you have the `strstr' function. */
          114  +#undef HAVE_STRSTR
          115  +
          116  +/* Define to 1 if you have the <sys/stat.h> header file. */
          117  +#undef HAVE_SYS_STAT_H
          118  +
          119  +/* Define to 1 if you have the <sys/time.h> header file. */
          120  +#undef HAVE_SYS_TIME_H
          121  +
          122  +/* Define to 1 if you have the <sys/types.h> header file. */
          123  +#undef HAVE_SYS_TYPES_H
          124  +
          125  +/* Define to 1 if you have the <unistd.h> header file. */
          126  +#undef HAVE_UNISTD_H
          127  +
          128  +/* Define to 1 if `lstat' dereferences a symlink specified with a trailing
          129  +   slash. */
          130  +#undef LSTAT_FOLLOWS_SLASHED_SYMLINK
          131  +
          132  +/* Define to the sub-directory in which libtool stores uninstalled libraries.
          133  +   */
          134  +#undef LT_OBJDIR
          135  +
          136  +/* Name of package */
          137  +#undef PACKAGE
          138  +
          139  +/* Define to the address where bug reports for this package should be sent. */
          140  +#undef PACKAGE_BUGREPORT
          141  +
          142  +/* Define to the full name of this package. */
          143  +#undef PACKAGE_NAME
          144  +
          145  +/* Define to the full name and version of this package. */
          146  +#undef PACKAGE_STRING
          147  +
          148  +/* Define to the one symbol short name of this package. */
          149  +#undef PACKAGE_TARNAME
          150  +
          151  +/* Define to the home page for this package. */
          152  +#undef PACKAGE_URL
          153  +
          154  +/* Define to the version of this package. */
          155  +#undef PACKAGE_VERSION
          156  +
          157  +/* Define to 1 if you have the ANSI C header files. */
          158  +#undef STDC_HEADERS
          159  +
          160  +/* Define to 1 if you can safely include both <sys/time.h> and <time.h>. */
          161  +#undef TIME_WITH_SYS_TIME
          162  +
          163  +/* Define to 1 if your <sys/time.h> declares `struct tm'. */
          164  +#undef TM_IN_SYS_TIME
          165  +
          166  +/* Version number of package */
          167  +#undef VERSION
          168  +
          169  +/* Define to empty if `const' does not conform to ANSI C. */
          170  +#undef const
          171  +
          172  +/* Define to `long int' if <sys/types.h> does not define. */
          173  +#undef off_t
          174  +
          175  +/* Define to `unsigned int' if <sys/types.h> does not define. */
          176  +#undef size_t
          177  +
          178  +/* Define to empty if the keyword `volatile' does not work. Warning: valid
          179  +   code using `volatile' can become incorrect without. Disable with care. */
          180  +#undef volatile

Changes to config.sub.

     1      1   #! /bin/sh
     2      2   # Configuration validation subroutine script.
     3      3   #   Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
     4         -#   2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software Foundation,
     5         -#   Inc.
            4  +#   2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009
            5  +#   Free Software Foundation, Inc.
     6      6   
     7         -timestamp='2007-06-28'
            7  +timestamp='2009-11-20'
     8      8   
     9      9   # This file is (in principle) common to ALL GNU software.
    10     10   # The presence of a machine in this file suggests that SOME GNU software
    11     11   # can handle that machine.  It does not imply ALL GNU software can.
    12     12   #
    13     13   # This file is free software; you can redistribute it and/or modify
    14     14   # it under the terms of the GNU General Public License as published by
................................................................................
    28     28   # As a special exception to the GNU General Public License, if you
    29     29   # distribute this file as part of a program that contains a
    30     30   # configuration script generated by Autoconf, you may include it under
    31     31   # the same distribution terms that you use for the rest of that program.
    32     32   
    33     33   
    34     34   # Please send patches to <config-patches@gnu.org>.  Submit a context
    35         -# diff and a properly formatted ChangeLog entry.
           35  +# diff and a properly formatted GNU ChangeLog entry.
    36     36   #
    37     37   # Configuration subroutine to validate and canonicalize a configuration type.
    38     38   # Supply the specified configuration type as an argument.
    39     39   # If it is invalid, we print an error message on stderr and exit with code 1.
    40     40   # Otherwise, we print the canonical config type on stdout and succeed.
    41     41   
           42  +# You can get the latest version of this script from:
           43  +# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD
           44  +
    42     45   # This file is supposed to be the same for all GNU packages
    43     46   # and recognize all the CPU types, system types and aliases
    44     47   # that are meaningful with *any* GNU software.
    45     48   # Each package is responsible for reporting which valid configurations
    46     49   # it does not support.  The user should be able to distinguish
    47     50   # a failure to support a valid configuration from a meaningless
    48     51   # configuration.
................................................................................
    68     71     -v, --version      print version number, then exit
    69     72   
    70     73   Report bugs and patches to <config-patches@gnu.org>."
    71     74   
    72     75   version="\
    73     76   GNU config.sub ($timestamp)
    74     77   
    75         -Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005
    76         -Free Software Foundation, Inc.
           78  +Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001,
           79  +2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
    77     80   
    78     81   This is free software; see the source for copying conditions.  There is NO
    79     82   warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
    80     83   
    81     84   help="
    82     85   Try \`$me --help' for more information."
    83     86   
................................................................................
   118    121   
   119    122   # Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any).
   120    123   # Here we must recognize all the valid KERNEL-OS combinations.
   121    124   maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'`
   122    125   case $maybe_os in
   123    126     nto-qnx* | linux-gnu* | linux-dietlibc | linux-newlib* | linux-uclibc* | \
   124    127     uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* | \
          128  +  kopensolaris*-gnu* | \
   125    129     storm-chaos* | os2-emx* | rtmk-nova*)
   126    130       os=-$maybe_os
   127    131       basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`
   128    132       ;;
   129    133     *)
   130    134       basic_machine=`echo $1 | sed 's/-[^-]*$//'`
   131    135       if [ $basic_machine != $1 ]
................................................................................
   144    148   		;;
   145    149   	-dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \
   146    150   	-att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \
   147    151   	-unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \
   148    152   	-convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\
   149    153   	-c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \
   150    154   	-harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \
   151         -	-apple | -axis | -knuth | -cray)
          155  +	-apple | -axis | -knuth | -cray | -microblaze)
   152    156   		os=
   153    157   		basic_machine=$1
          158  +		;;
          159  +        -bluegene*)
          160  +	        os=-cnk
   154    161   		;;
   155    162   	-sim | -cisco | -oki | -wec | -winbond)
   156    163   		os=
   157    164   		basic_machine=$1
   158    165   		;;
   159    166   	-scout)
   160    167   		;;
................................................................................
   245    252   	| bfin \
   246    253   	| c4x | clipper \
   247    254   	| d10v | d30v | dlx | dsp16xx \
   248    255   	| fido | fr30 | frv \
   249    256   	| h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
   250    257   	| i370 | i860 | i960 | ia64 \
   251    258   	| ip2k | iq2000 \
          259  +	| lm32 \
   252    260   	| m32c | m32r | m32rle | m68000 | m68k | m88k \
   253         -	| maxq | mb | microblaze | mcore | mep \
          261  +	| maxq | mb | microblaze | mcore | mep | metag \
   254    262   	| mips | mipsbe | mipseb | mipsel | mipsle \
   255    263   	| mips16 \
   256    264   	| mips64 | mips64el \
   257         -	| mips64vr | mips64vrel \
          265  +	| mips64octeon | mips64octeonel \
   258    266   	| mips64orion | mips64orionel \
          267  +	| mips64r5900 | mips64r5900el \
          268  +	| mips64vr | mips64vrel \
   259    269   	| mips64vr4100 | mips64vr4100el \
   260    270   	| mips64vr4300 | mips64vr4300el \
   261    271   	| mips64vr5000 | mips64vr5000el \
   262    272   	| mips64vr5900 | mips64vr5900el \
   263    273   	| mipsisa32 | mipsisa32el \
   264    274   	| mipsisa32r2 | mipsisa32r2el \
   265    275   	| mipsisa64 | mipsisa64el \
   266    276   	| mipsisa64r2 | mipsisa64r2el \
   267    277   	| mipsisa64sb1 | mipsisa64sb1el \
   268    278   	| mipsisa64sr71k | mipsisa64sr71kel \
   269    279   	| mipstx39 | mipstx39el \
   270    280   	| mn10200 | mn10300 \
          281  +	| moxie \
   271    282   	| mt \
   272    283   	| msp430 \
   273    284   	| nios | nios2 \
   274    285   	| ns16k | ns32k \
   275    286   	| or32 \
   276    287   	| pdp10 | pdp11 | pj | pjl \
   277    288   	| powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \
   278    289   	| pyramid \
          290  +	| rx \
   279    291   	| score \
   280         -	| sh | sh[1234] | sh[24]a | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \
          292  +	| sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \
   281    293   	| sh64 | sh64le \
   282    294   	| sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \
   283    295   	| sparcv8 | sparcv9 | sparcv9b | sparcv9v \
   284    296   	| spu | strongarm \
   285    297   	| tahoe | thumb | tic4x | tic80 | tron \
          298  +	| ubicom32 \
   286    299   	| v850 | v850e \
   287    300   	| we32k \
   288    301   	| x86 | xc16x | xscale | xscalee[bl] | xstormy16 | xtensa \
   289         -	| z8k)
          302  +	| z8k | z80)
   290    303   		basic_machine=$basic_machine-unknown
   291    304   		;;
   292         -	m6811 | m68hc11 | m6812 | m68hc12)
          305  +	m6811 | m68hc11 | m6812 | m68hc12 | picochip)
   293    306   		# Motorola 68HC11/12.
   294    307   		basic_machine=$basic_machine-unknown
   295    308   		os=-none
   296    309   		;;
   297    310   	m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k)
   298    311   		;;
   299    312   	ms1)
................................................................................
   325    338   	| d10v-* | d30v-* | dlx-* \
   326    339   	| elxsi-* \
   327    340   	| f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \
   328    341   	| h8300-* | h8500-* \
   329    342   	| hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \
   330    343   	| i*86-* | i860-* | i960-* | ia64-* \
   331    344   	| ip2k-* | iq2000-* \
          345  +	| lm32-* \
   332    346   	| m32c-* | m32r-* | m32rle-* \
   333    347   	| m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \
   334         -	| m88110-* | m88k-* | maxq-* | mcore-* \
          348  +	| m88110-* | m88k-* | maxq-* | mcore-* | metag-* | microblaze-* \
   335    349   	| mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \
   336    350   	| mips16-* \
   337    351   	| mips64-* | mips64el-* \
   338         -	| mips64vr-* | mips64vrel-* \
          352  +	| mips64octeon-* | mips64octeonel-* \
   339    353   	| mips64orion-* | mips64orionel-* \
          354  +	| mips64r5900-* | mips64r5900el-* \
          355  +	| mips64vr-* | mips64vrel-* \
   340    356   	| mips64vr4100-* | mips64vr4100el-* \
   341    357   	| mips64vr4300-* | mips64vr4300el-* \
   342    358   	| mips64vr5000-* | mips64vr5000el-* \
   343    359   	| mips64vr5900-* | mips64vr5900el-* \
   344    360   	| mipsisa32-* | mipsisa32el-* \
   345    361   	| mipsisa32r2-* | mipsisa32r2el-* \
   346    362   	| mipsisa64-* | mipsisa64el-* \
................................................................................
   353    369   	| msp430-* \
   354    370   	| nios-* | nios2-* \
   355    371   	| none-* | np1-* | ns16k-* | ns32k-* \
   356    372   	| orion-* \
   357    373   	| pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \
   358    374   	| powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \
   359    375   	| pyramid-* \
   360         -	| romp-* | rs6000-* \
   361         -	| sh-* | sh[1234]-* | sh[24]a-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \
          376  +	| romp-* | rs6000-* | rx-* \
          377  +	| sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \
   362    378   	| shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \
   363    379   	| sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \
   364    380   	| sparclite-* \
   365    381   	| sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | strongarm-* | sv1-* | sx?-* \
   366    382   	| tahoe-* | thumb-* \
   367         -	| tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \
          383  +	| tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* | tile-* \
   368    384   	| tron-* \
          385  +	| ubicom32-* \
   369    386   	| v850-* | v850e-* | vax-* \
   370    387   	| we32k-* \
   371    388   	| x86-* | x86_64-* | xc16x-* | xps100-* | xscale-* | xscalee[bl]-* \
   372         -	| xstormy16-* | xtensa-* \
          389  +	| xstormy16-* | xtensa*-* \
   373    390   	| ymp-* \
   374         -	| z8k-*)
          391  +	| z8k-* | z80-*)
          392  +		;;
          393  +	# Recognize the basic CPU types without company name, with glob match.
          394  +	xtensa*)
          395  +		basic_machine=$basic_machine-unknown
   375    396   		;;
   376    397   	# Recognize the various machine names and aliases which stand
   377    398   	# for a CPU type and a company and sometimes even an OS.
   378    399   	386bsd)
   379    400   		basic_machine=i386-unknown
   380    401   		os=-bsd
   381    402   		;;
................................................................................
   431    452   		basic_machine=m68k-apollo
   432    453   		os=-sysv
   433    454   		;;
   434    455   	apollo68bsd)
   435    456   		basic_machine=m68k-apollo
   436    457   		os=-bsd
   437    458   		;;
          459  +	aros)
          460  +		basic_machine=i386-pc
          461  +		os=-aros
          462  +		;;
   438    463   	aux)
   439    464   		basic_machine=m68k-apple
   440    465   		os=-aux
   441    466   		;;
   442    467   	balance)
   443    468   		basic_machine=ns32k-sequent
   444    469   		os=-dynix
   445    470   		;;
          471  +	blackfin)
          472  +		basic_machine=bfin-unknown
          473  +		os=-linux
          474  +		;;
          475  +	blackfin-*)
          476  +		basic_machine=bfin-`echo $basic_machine | sed 's/^[^-]*-//'`
          477  +		os=-linux
          478  +		;;
          479  +	bluegene*)
          480  +		basic_machine=powerpc-ibm
          481  +		os=-cnk
          482  +		;;
   446    483   	c90)
   447    484   		basic_machine=c90-cray
   448    485   		os=-unicos
          486  +		;;
          487  +        cegcc)
          488  +		basic_machine=arm-unknown
          489  +		os=-cegcc
   449    490   		;;
   450    491   	convex-c1)
   451    492   		basic_machine=c1-convex
   452    493   		os=-bsd
   453    494   		;;
   454    495   	convex-c2)
   455    496   		basic_machine=c2-convex
................................................................................
   510    551   	      | 3300-motorola | delta-motorola)
   511    552   		basic_machine=m68k-motorola
   512    553   		;;
   513    554   	delta88)
   514    555   		basic_machine=m88k-motorola
   515    556   		os=-sysv3
   516    557   		;;
          558  +	dicos)
          559  +		basic_machine=i686-pc
          560  +		os=-dicos
          561  +		;;
   517    562   	djgpp)
   518    563   		basic_machine=i586-pc
   519    564   		os=-msdosdjgpp
   520    565   		;;
   521    566   	dpx20 | dpx20-*)
   522    567   		basic_machine=rs6000-bull
   523    568   		os=-bosx
................................................................................
   663    708   			os=-irix4
   664    709   			;;
   665    710   		esac
   666    711   		;;
   667    712   	isi68 | isi)
   668    713   		basic_machine=m68k-isi
   669    714   		os=-sysv
          715  +		;;
          716  +	m68knommu)
          717  +		basic_machine=m68k-unknown
          718  +		os=-linux
          719  +		;;
          720  +	m68knommu-*)
          721  +		basic_machine=m68k-`echo $basic_machine | sed 's/^[^-]*-//'`
          722  +		os=-linux
   670    723   		;;
   671    724   	m88k-omron*)
   672    725   		basic_machine=m88k-omron
   673    726   		;;
   674    727   	magnum | m3230)
   675    728   		basic_machine=mips-mips
   676    729   		os=-sysv
   677    730   		;;
   678    731   	merlin)
   679    732   		basic_machine=ns32k-utek
   680    733   		os=-sysv
   681    734   		;;
          735  +        microblaze)
          736  +		basic_machine=microblaze-xilinx
          737  +		;;
   682    738   	mingw32)
   683    739   		basic_machine=i386-pc
   684    740   		os=-mingw32
   685    741   		;;
   686    742   	mingw32ce)
   687    743   		basic_machine=arm-unknown
   688    744   		os=-mingw32ce
................................................................................
   809    865   		basic_machine=hppa1.1-hitachi
   810    866   		os=-hiuxwe2
   811    867   		;;
   812    868   	paragon)
   813    869   		basic_machine=i860-intel
   814    870   		os=-osf
   815    871   		;;
          872  +	parisc)
          873  +		basic_machine=hppa-unknown
          874  +		os=-linux
          875  +		;;
          876  +	parisc-*)
          877  +		basic_machine=hppa-`echo $basic_machine | sed 's/^[^-]*-//'`
          878  +		os=-linux
          879  +		;;
   816    880   	pbd)
   817    881   		basic_machine=sparc-tti
   818    882   		;;
   819    883   	pbb)
   820    884   		basic_machine=m68k-tti
   821    885   		;;
   822    886   	pc532 | pc532-*)
................................................................................
  1017   1081   		basic_machine=tic55x-unknown
  1018   1082   		os=-coff
  1019   1083   		;;
  1020   1084   	tic6x | c6x*)
  1021   1085   		basic_machine=tic6x-unknown
  1022   1086   		os=-coff
  1023   1087   		;;
         1088  +	tile*)
         1089  +		basic_machine=tile-unknown
         1090  +		os=-linux-gnu
         1091  +		;;
  1024   1092   	tx39)
  1025   1093   		basic_machine=mipstx39-unknown
  1026   1094   		;;
  1027   1095   	tx39el)
  1028   1096   		basic_machine=mipstx39el-unknown
  1029   1097   		;;
  1030   1098   	toad1)
................................................................................
  1092   1160   		basic_machine=ymp-cray
  1093   1161   		os=-unicos
  1094   1162   		;;
  1095   1163   	z8k-*-coff)
  1096   1164   		basic_machine=z8k-unknown
  1097   1165   		os=-sim
  1098   1166   		;;
         1167  +	z80-*-coff)
         1168  +		basic_machine=z80-unknown
         1169  +		os=-sim
         1170  +		;;
  1099   1171   	none)
  1100   1172   		basic_machine=none-none
  1101   1173   		os=-none
  1102   1174   		;;
  1103   1175   
  1104   1176   # Here we handle the default manufacturer of certain CPU types.  It is in
  1105   1177   # some cases the only manufacturer, in others, it is the most popular.
................................................................................
  1130   1202   		;;
  1131   1203   	pdp11)
  1132   1204   		basic_machine=pdp11-dec
  1133   1205   		;;
  1134   1206   	we32k)
  1135   1207   		basic_machine=we32k-att
  1136   1208   		;;
  1137         -	sh[1234] | sh[24]a | sh[34]eb | sh[1234]le | sh[23]ele)
         1209  +	sh[1234] | sh[24]a | sh[24]aeb | sh[34]eb | sh[1234]le | sh[23]ele)
  1138   1210   		basic_machine=sh-unknown
  1139   1211   		;;
  1140   1212   	sparc | sparcv8 | sparcv9 | sparcv9b | sparcv9v)
  1141   1213   		basic_machine=sparc-sun
  1142   1214   		;;
  1143   1215   	cydra)
  1144   1216   		basic_machine=cydra-cydrome
................................................................................
  1180   1252   
  1181   1253   if [ x"$os" != x"" ]
  1182   1254   then
  1183   1255   case $os in
  1184   1256           # First match some system type aliases
  1185   1257           # that might get confused with valid system types.
  1186   1258   	# -solaris* is a basic system type, with this one exception.
         1259  +        -auroraux)
         1260  +	        os=-auroraux
         1261  +		;;
  1187   1262   	-solaris1 | -solaris1.*)
  1188   1263   		os=`echo $os | sed -e 's|solaris1|sunos4|'`
  1189   1264   		;;
  1190   1265   	-solaris)
  1191   1266   		os=-solaris2
  1192   1267   		;;
  1193   1268   	-svr4*)
................................................................................
  1200   1275   		os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'`
  1201   1276   		;;
  1202   1277   	# First accept the basic system types.
  1203   1278   	# The portable systems comes first.
  1204   1279   	# Each alternative MUST END IN A *, to match a version number.
  1205   1280   	# -sysv* is not here because it comes later, after sysvr4.
  1206   1281   	-gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \
  1207         -	      | -*vms* | -sco* | -esix* | -isc* | -aix* | -sunos | -sunos[34]*\
  1208         -	      | -hpux* | -unos* | -osf* | -luna* | -dgux* | -solaris* | -sym* \
         1282  +	      | -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\
         1283  +	      | -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \
         1284  +	      | -sym* | -kopensolaris* \
  1209   1285   	      | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \
  1210         -	      | -aos* \
         1286  +	      | -aos* | -aros* \
  1211   1287   	      | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \
  1212   1288   	      | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \
  1213   1289   	      | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \
  1214   1290   	      | -openbsd* | -solidbsd* \
  1215   1291   	      | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \
  1216   1292   	      | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \
  1217   1293   	      | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \
  1218   1294   	      | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \
  1219         -	      | -chorusos* | -chorusrdb* \
         1295  +	      | -chorusos* | -chorusrdb* | -cegcc* \
  1220   1296   	      | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
  1221   1297   	      | -mingw32* | -linux-gnu* | -linux-newlib* | -linux-uclibc* \
  1222   1298   	      | -uxpv* | -beos* | -mpeix* | -udk* \
  1223   1299   	      | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \
  1224   1300   	      | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \
  1225   1301   	      | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \
  1226   1302   	      | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \
  1227   1303   	      | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \
  1228   1304   	      | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \
  1229         -	      | -skyos* | -haiku* | -rdos* | -toppers* | -drops*)
         1305  +	      | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es*)
  1230   1306   	# Remember, each alternative MUST END IN *, to match a version number.
  1231   1307   		;;
  1232   1308   	-qnx*)
  1233   1309   		case $basic_machine in
  1234   1310   		    x86-* | i*86-*)
  1235   1311   			;;
  1236   1312   		    *)
................................................................................
  1352   1428   		;;
  1353   1429   	-kaos*)
  1354   1430   		os=-kaos
  1355   1431   		;;
  1356   1432   	-zvmoe)
  1357   1433   		os=-zvmoe
  1358   1434   		;;
         1435  +	-dicos*)
         1436  +		os=-dicos
         1437  +		;;
  1359   1438   	-none)
  1360   1439   		;;
  1361   1440   	*)
  1362   1441   		# Get rid of the `-' at the beginning of $os.
  1363   1442   		os=`echo $os | sed 's/[^-]*-//'`
  1364   1443   		echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2
  1365   1444   		exit 1
................................................................................
  1549   1628   		case $os in
  1550   1629   			-riscix*)
  1551   1630   				vendor=acorn
  1552   1631   				;;
  1553   1632   			-sunos*)
  1554   1633   				vendor=sun
  1555   1634   				;;
  1556         -			-aix*)
         1635  +			-cnk*|-aix*)
  1557   1636   				vendor=ibm
  1558   1637   				;;
  1559   1638   			-beos*)
  1560   1639   				vendor=be
  1561   1640   				;;
  1562   1641   			-hpux*)
  1563   1642   				vendor=hp

Changes to configure.

more than 10,000 changes

Changes to configure.ac.

     1      1   #                                               -*- Autoconf -*-
     2      2   # Process this file with autoconf to produce a configure script.
     3      3   
     4      4   AC_PREREQ(2.61)
     5         -AC_INIT(librasterlite, 1.0, a.furieri @ lqt.it)
            5  +AC_INIT(librasterlite, 1.1f, a.furieri @ lqt.it)
     6      6   AC_LANG(C) 
            7  +AC_CONFIG_AUX_DIR([.])
            8  +AC_CONFIG_MACRO_DIR([m4])
     7      9   
     8     10   AM_INIT_AUTOMAKE 
     9     11   AM_MAINTAINER_MODE
           12  +AM_CONFIG_HEADER(config.h)
    10     13   
    11     14   # Checks for header files.
    12     15   AC_CHECK_HEADERS(stdlib.h,, [AC_MSG_ERROR([cannot find stdlib.h, bailing out])])
    13     16   AC_CHECK_HEADERS(stdio.h,,[AC_MSG_ERROR([cannot find stdio.h, bailing out])])
    14     17   AC_CHECK_HEADERS(string.h,, [AC_MSG_ERROR([cannot find string.h, bailing out])])
    15     18   AC_CHECK_HEADERS(memory.h,, [AC_MSG_ERROR([cannot find memory.h, bailing out])])
    16     19   AC_CHECK_HEADERS(math.h,,[AC_MSG_ERROR([cannot find math.h, bailing out])])
................................................................................
    17     20   AC_CHECK_HEADERS(float.h,,[AC_MSG_ERROR([cannot find float.h, bailing out])])
    18     21   AC_CHECK_HEADERS(fcntl.h,,[AC_MSG_ERROR([cannot find fcntl.h, bailing out])])
    19     22   AC_CHECK_HEADERS(inttypes.h,, [AC_MSG_ERROR([cannot find inttypes.h, bailing out])])
    20     23   AC_CHECK_HEADERS(stddef.h,, [AC_MSG_ERROR([cannot find stddef.h, bailing out])])
    21     24   AC_CHECK_HEADERS(stdint.h,, [AC_MSG_ERROR([cannot find stdint.h, bailing out])])
    22     25   AC_CHECK_HEADERS(sys/time.h,, [AC_MSG_ERROR([cannot find sys/time.h, bailing out])])
    23     26   AC_CHECK_HEADERS(unistd.h,, [AC_MSG_ERROR([cannot find unistd.h, bailing out])])
           27  +AC_CHECK_HEADERS(jpeglib.h,, [AC_MSG_ERROR([cannot find jpeglib.h, bailing out])])
           28  +AC_CHECK_HEADERS(jerror.h,, [AC_MSG_ERROR([cannot find jerror.h, bailing out])])
           29  +
           30  +#
           31  +# testing GeoTiff headers
           32  +# on some systems they are located on -/include
           33  +# on other systems they are on -/include/geotiff
           34  +# or even on -/include/libgeotiff
           35  +#
           36  +# this patch was kindly contributed by Brad Hards
           37  +# 2011-09-02
           38  +#
           39  +AC_CHECK_HEADERS(geotiff/geotiff.h)
           40  +AC_CHECK_HEADERS(libgeotiff/geotiff.h)
           41  +AC_CHECK_HEADERS(geotiff.h)
           42  +if test x"$ac_cv_header_geotiff_geotiff_h" != x"yes" &&
           43  +    test x"$ac_cv_header_libgeotiff_geotiff_h" != x"yes" &&
           44  +    test x"$ac_cv_header_geotiff_h" != x"yes";
           45  +then
           46  +    AC_MSG_ERROR(['libgeotiff' is required but the header (geotiff.h) doesn't seem to be installed on this system])
           47  +fi 
    24     48   
    25     49   # Checks for programs.
    26     50   AC_PROG_CXX
    27     51   AC_PROG_CC
    28     52   AC_PROG_CPP
    29     53   AC_PROG_INSTALL
    30     54   AC_PROG_LN_S 
................................................................................
    43     67   # Checks for library functions.
    44     68   AC_FUNC_LSTAT
    45     69   AC_FUNC_LSTAT_FOLLOWS_SLASHED_SYMLINK
    46     70   AC_FUNC_MEMCMP 
    47     71   AC_FUNC_STAT 
    48     72   AC_FUNC_STRFTIME
    49     73   AC_CHECK_FUNCS([memset sqrt strcasecmp strerror strncasecmp strstr fdatasync ftruncate getcwd gettimeofday localtime_r memmove strerror])
           74  +
           75  +# Checks for required libraries
           76  +AC_CHECK_LIB(z,inflateInit_,,AC_MSG_ERROR(['libz' is required but it doesn't seem to be installed on this system.]),-lm)
           77  +AC_CHECK_LIB(jpeg,jpeg_start_compress,,AC_MSG_ERROR(['libjpeg' is required but it doesn't seem to be installed on this system.]),-lm)
           78  +AC_CHECK_LIB(tiff,TIFFClientOpen,,AC_MSG_ERROR(['libtiff' is required but it doesn't seem to be installed on this system.]),-lm)
           79  +AC_CHECK_LIB(proj,pj_init_plus,,AC_MSG_ERROR(['libproj' is required but it doesn't seem to be installed on this system.]),-lm)
           80  +AC_CHECK_LIB(geotiff,GTIFSetFromProj4,,AC_MSG_ERROR(['libgeotiff' [>= v.1.2.5] is required but it doesn't seem to be installed on this system.]),-lm)
           81  +
           82  +PKG_CHECK_MODULES([LIBSPATIALITE], [spatialite], , AC_MSG_ERROR(['libspatialite' is required but it doesn't seem to be installed on this system.]))
           83  +AC_SUBST(LIBSPATIALITE_CFLAGS)
           84  +AC_SUBST(LIBSPATIALITE_LIBS)
           85  +
           86  +PKG_CHECK_MODULES([LIBPNG], [libpng], , AC_MSG_ERROR(['libpng' is required but it doesn't seem to be installed on this system.]))
           87  +AC_SUBST(LIBPNG_CFLAGS)
           88  +AC_SUBST(LIBPNG_LIBS)
           89  +
           90  +#
           91  +#    --enable-gcov
           92  +#
           93  +AC_ARG_ENABLE(gcov, AC_HELP_STRING([--enable-gcov],[turn on code coverage analysis tools]))
           94  +if test "x$enable_gcov" = "xyes"; then
           95  +    dnl Check for -fprofile-arcs and -ftest-coverage option
           96  +    CFLAGS=$CFLAGS" -fprofile-arcs -ftest-coverage -g"
           97  +    GCOV_FLAGS="-lgcov"
           98  +fi
           99  +
    50    100   
    51    101   AC_CONFIG_FILES([Makefile \
    52    102   		headers/Makefile \
    53         -		epsilon/Makefile \
    54    103   		lib/Makefile \
    55    104   		src/Makefile \
          105  +		test/Makefile \
    56    106   		rasterlite.pc])
    57    107   
    58    108   AC_OUTPUT

Changes to depcomp.

     1      1   #! /bin/sh
     2      2   # depcomp - compile a program generating dependencies as side-effects
     3      3   
     4         -scriptversion=2007-03-29.01
            4  +scriptversion=2009-04-28.21; # UTC
     5      5   
     6         -# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006, 2007 Free Software
     7         -# Foundation, Inc.
            6  +# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006, 2007, 2009 Free
            7  +# Software Foundation, Inc.
     8      8   
     9      9   # This program is free software; you can redistribute it and/or modify
    10     10   # it under the terms of the GNU General Public License as published by
    11     11   # the Free Software Foundation; either version 2, or (at your option)
    12     12   # any later version.
    13     13   
    14     14   # This program is distributed in the hope that it will be useful,
    15     15   # but WITHOUT ANY WARRANTY; without even the implied warranty of
    16     16   # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    17     17   # GNU General Public License for more details.
    18     18   
    19     19   # You should have received a copy of the GNU General Public License
    20         -# along with this program; if not, write to the Free Software
    21         -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
    22         -# 02110-1301, USA.
           20  +# along with this program.  If not, see <http://www.gnu.org/licenses/>.
    23     21   
    24     22   # As a special exception to the GNU General Public License, if you
    25     23   # distribute this file as part of a program that contains a
    26     24   # configuration script generated by Autoconf, you may include it under
    27     25   # the same distribution terms that you use for the rest of that program.
    28     26   
    29     27   # Originally written by Alexandre Oliva <oliva@dcc.unicamp.br>.
................................................................................
    82     80   fi
    83     81   
    84     82   if test "$depmode" = dashXmstdout; then
    85     83      # This is just like dashmstdout with a different argument.
    86     84      dashmflag=-xM
    87     85      depmode=dashmstdout
    88     86   fi
           87  +
           88  +cygpath_u="cygpath -u -f -"
           89  +if test "$depmode" = msvcmsys; then
           90  +   # This is just like msvisualcpp but w/o cygpath translation.
           91  +   # Just convert the backslash-escaped backslashes to single forward
           92  +   # slashes to satisfy depend.m4
           93  +   cygpath_u="sed s,\\\\\\\\,/,g"
           94  +   depmode=msvisualcpp
           95  +fi
    89     96   
    90     97   case "$depmode" in
    91     98   gcc3)
    92     99   ## gcc 3 implements dependency tracking that does exactly what
    93    100   ## we want.  Yay!  Note: for some reason libtool 1.4 doesn't like
    94    101   ## it if -MD -MP comes after the -MF stuff.  Hmm.
    95    102   ## Unfortunately, FreeBSD c89 acceptance of flags depends upon
................................................................................
   188    195       # IRIX 6.2 sed, 8192 in IRIX 6.5).  We also remove comment lines;
   189    196       # the IRIX cc adds comments like `#:fec' to the end of the
   190    197       # dependency line.
   191    198       tr ' ' '
   192    199   ' < "$tmpdepfile" \
   193    200       | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \
   194    201       tr '
   195         -' ' ' >> $depfile
   196         -    echo >> $depfile
          202  +' ' ' >> "$depfile"
          203  +    echo >> "$depfile"
   197    204   
   198    205       # The second pass generates a dummy entry for each header file.
   199    206       tr ' ' '
   200    207   ' < "$tmpdepfile" \
   201    208      | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \
   202         -   >> $depfile
          209  +   >> "$depfile"
   203    210     else
   204    211       # The sourcefile does not contain any dependencies, so just
   205    212       # store a dummy comment line, to avoid errors with the Makefile
   206    213       # "include basename.Plo" scheme.
   207    214       echo "#dummy" > "$depfile"
   208    215     fi
   209    216     rm -f "$tmpdepfile"
................................................................................
   324    331     for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2"
   325    332     do
   326    333       test -f "$tmpdepfile" && break
   327    334     done
   328    335     if test -f "$tmpdepfile"; then
   329    336       sed -e "s,^.*\.[a-z]*:,$object:," "$tmpdepfile" > "$depfile"
   330    337       # Add `dependent.h:' lines.
   331         -    sed -ne '2,${; s/^ *//; s/ \\*$//; s/$/:/; p;}' "$tmpdepfile" >> "$depfile"
          338  +    sed -ne '2,${
          339  +	       s/^ *//
          340  +	       s/ \\*$//
          341  +	       s/$/:/
          342  +	       p
          343  +	     }' "$tmpdepfile" >> "$depfile"
   332    344     else
   333    345       echo "#dummy" > "$depfile"
   334    346     fi
   335    347     rm -f "$tmpdepfile" "$tmpdepfile2"
   336    348     ;;
   337    349   
   338    350   tru64)
................................................................................
   400    412   dashmstdout)
   401    413     # Important note: in order to support this mode, a compiler *must*
   402    414     # always write the preprocessed file to stdout, regardless of -o.
   403    415     "$@" || exit $?
   404    416   
   405    417     # Remove the call to Libtool.
   406    418     if test "$libtool" = yes; then
   407         -    while test $1 != '--mode=compile'; do
          419  +    while test "X$1" != 'X--mode=compile'; do
   408    420         shift
   409    421       done
   410    422       shift
   411    423     fi
   412    424   
   413    425     # Remove `-o $object'.
   414    426     IFS=" "
................................................................................
   451    463     exit 1
   452    464     ;;
   453    465   
   454    466   makedepend)
   455    467     "$@" || exit $?
   456    468     # Remove any Libtool call
   457    469     if test "$libtool" = yes; then
   458         -    while test $1 != '--mode=compile'; do
          470  +    while test "X$1" != 'X--mode=compile'; do
   459    471         shift
   460    472       done
   461    473       shift
   462    474     fi
   463    475     # X makedepend
   464    476     shift
   465         -  cleared=no
   466         -  for arg in "$@"; do
          477  +  cleared=no eat=no
          478  +  for arg
          479  +  do
   467    480       case $cleared in
   468    481       no)
   469    482         set ""; shift
   470    483         cleared=yes ;;
   471    484       esac
          485  +    if test $eat = yes; then
          486  +      eat=no
          487  +      continue
          488  +    fi
   472    489       case "$arg" in
   473    490       -D*|-I*)
   474    491         set fnord "$@" "$arg"; shift ;;
   475    492       # Strip any option that makedepend may not understand.  Remove
   476    493       # the object too, otherwise makedepend will parse it as a source file.
          494  +    -arch)
          495  +      eat=yes ;;
   477    496       -*|$object)
   478    497         ;;
   479    498       *)
   480    499         set fnord "$@" "$arg"; shift ;;
   481    500       esac
   482    501     done
   483         -  obj_suffix="`echo $object | sed 's/^.*\././'`"
          502  +  obj_suffix=`echo "$object" | sed 's/^.*\././'`
   484    503     touch "$tmpdepfile"
   485    504     ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@"
   486    505     rm -f "$depfile"
   487    506     cat < "$tmpdepfile" > "$depfile"
   488    507     sed '1,2d' "$tmpdepfile" | tr ' ' '
   489    508   ' | \
   490    509   ## Some versions of the HPUX 10.20 sed can't process this invocation
................................................................................
   496    515   cpp)
   497    516     # Important note: in order to support this mode, a compiler *must*
   498    517     # always write the preprocessed file to stdout.
   499    518     "$@" || exit $?
   500    519   
   501    520     # Remove the call to Libtool.
   502    521     if test "$libtool" = yes; then
   503         -    while test $1 != '--mode=compile'; do
          522  +    while test "X$1" != 'X--mode=compile'; do
   504    523         shift
   505    524       done
   506    525       shift
   507    526     fi
   508    527   
   509    528     # Remove `-o $object'.
   510    529     IFS=" "
................................................................................
   534    553     cat < "$tmpdepfile" >> "$depfile"
   535    554     sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile"
   536    555     rm -f "$tmpdepfile"
   537    556     ;;
   538    557   
   539    558   msvisualcpp)
   540    559     # Important note: in order to support this mode, a compiler *must*
   541         -  # always write the preprocessed file to stdout, regardless of -o,
   542         -  # because we must use -o when running libtool.
          560  +  # always write the preprocessed file to stdout.
   543    561     "$@" || exit $?
          562  +
          563  +  # Remove the call to Libtool.
          564  +  if test "$libtool" = yes; then
          565  +    while test "X$1" != 'X--mode=compile'; do
          566  +      shift
          567  +    done
          568  +    shift
          569  +  fi
          570  +
   544    571     IFS=" "
   545    572     for arg
   546    573     do
   547    574       case "$arg" in
          575  +    -o)
          576  +      shift
          577  +      ;;
          578  +    $object)
          579  +      shift
          580  +      ;;
   548    581       "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI")
   549    582   	set fnord "$@"
   550    583   	shift
   551    584   	shift
   552    585   	;;
   553    586       *)
   554    587   	set fnord "$@" "$arg"
   555    588   	shift
   556    589   	shift
   557    590   	;;
   558    591       esac
   559    592     done
   560         -  "$@" -E |
   561         -  sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::echo "`cygpath -u \\"\1\\"`":p' | sort | uniq > "$tmpdepfile"
          593  +  "$@" -E 2>/dev/null |
          594  +  sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile"
   562    595     rm -f "$depfile"
   563    596     echo "$object : \\" > "$depfile"
   564         -  . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s::	\1 \\:p' >> "$depfile"
          597  +  sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::	\1 \\:p' >> "$depfile"
   565    598     echo "	" >> "$depfile"
   566         -  . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s::\1\::p' >> "$depfile"
          599  +  sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile"
   567    600     rm -f "$tmpdepfile"
   568    601     ;;
          602  +
          603  +msvcmsys)
          604  +  # This case exists only to let depend.m4 do its work.  It works by
          605  +  # looking at the text of this script.  This case will never be run,
          606  +  # since it is checked for above.
          607  +  exit 1
          608  +  ;;
   569    609   
   570    610   none)
   571    611     exec "$@"
   572    612     ;;
   573    613   
   574    614   *)
   575    615     echo "Unknown depmode $depmode" 1>&2
................................................................................
   581    621   
   582    622   # Local Variables:
   583    623   # mode: shell-script
   584    624   # sh-indentation: 2
   585    625   # eval: (add-hook 'write-file-hooks 'time-stamp)
   586    626   # time-stamp-start: "scriptversion="
   587    627   # time-stamp-format: "%:y-%02m-%02d.%02H"
   588         -# time-stamp-end: "$"
          628  +# time-stamp-time-zone: "UTC"
          629  +# time-stamp-end: "; # UTC"
   589    630   # End:

Deleted epsilon/Makefile.am.

     1         -INCLUDES = -I$(top_srcdir)/lib
     2         -METASOURCES = AUTO
     3         -noinst_LTLIBRARIES = libepsilon.la
     4         -libepsilon_la_SOURCES = bit_io.c checksum.c cobs.c color.c common.c dc_level.c \
     5         -	filter.c filterbank.c libmain.c list.c mem_alloc.c merge_split.c pad.c \
     6         -	resample.c speck.c
     7         -noinst_HEADERS = bit_io.h checksum.h cobs.h color.h common.h daub97lift.h \
     8         -	dc_level.h filter.h filterbank.h libmain.h list.h mem_alloc.h \
     9         -	merge_split.h pad.h resample.h speck.h epsilon.h
    10         -
    11         -EXTRA_DIST = msvc/stdint.h msvc/inttypes.h

Deleted epsilon/Makefile.in.

     1         -# Makefile.in generated by automake 1.10.1 from Makefile.am.
     2         -# @configure_input@
     3         -
     4         -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
     5         -# 2003, 2004, 2005, 2006, 2007, 2008  Free Software Foundation, Inc.
     6         -# This Makefile.in is free software; the Free Software Foundation
     7         -# gives unlimited permission to copy and/or distribute it,
     8         -# with or without modifications, as long as this notice is preserved.
     9         -
    10         -# This program is distributed in the hope that it will be useful,
    11         -# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
    12         -# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
    13         -# PARTICULAR PURPOSE.
    14         -
    15         -@SET_MAKE@
    16         -
    17         -
    18         -VPATH = @srcdir@
    19         -pkgdatadir = $(datadir)/@PACKAGE@
    20         -pkglibdir = $(libdir)/@PACKAGE@
    21         -pkgincludedir = $(includedir)/@PACKAGE@
    22         -am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
    23         -install_sh_DATA = $(install_sh) -c -m 644
    24         -install_sh_PROGRAM = $(install_sh) -c
    25         -install_sh_SCRIPT = $(install_sh) -c
    26         -INSTALL_HEADER = $(INSTALL_DATA)
    27         -transform = $(program_transform_name)
    28         -NORMAL_INSTALL = :
    29         -PRE_INSTALL = :
    30         -POST_INSTALL = :
    31         -NORMAL_UNINSTALL = :
    32         -PRE_UNINSTALL = :
    33         -POST_UNINSTALL = :
    34         -build_triplet = @build@
    35         -host_triplet = @host@
    36         -subdir = epsilon
    37         -DIST_COMMON = $(noinst_HEADERS) $(srcdir)/Makefile.am \
    38         -	$(srcdir)/Makefile.in
    39         -ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
    40         -am__aclocal_m4_deps = $(top_srcdir)/configure.ac
    41         -am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
    42         -	$(ACLOCAL_M4)
    43         -mkinstalldirs = $(install_sh) -d
    44         -CONFIG_CLEAN_FILES =
    45         -LTLIBRARIES = $(noinst_LTLIBRARIES)
    46         -libepsilon_la_LIBADD =
    47         -am_libepsilon_la_OBJECTS = bit_io.lo checksum.lo cobs.lo color.lo \
    48         -	common.lo dc_level.lo filter.lo filterbank.lo libmain.lo \
    49         -	list.lo mem_alloc.lo merge_split.lo pad.lo resample.lo \
    50         -	speck.lo
    51         -libepsilon_la_OBJECTS = $(am_libepsilon_la_OBJECTS)
    52         -DEFAULT_INCLUDES = -I.@am__isrc@
    53         -depcomp = $(SHELL) $(top_srcdir)/depcomp
    54         -am__depfiles_maybe = depfiles
    55         -COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
    56         -	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
    57         -LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
    58         -	--mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
    59         -	$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
    60         -CCLD = $(CC)
    61         -LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
    62         -	--mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
    63         -	$(LDFLAGS) -o $@
    64         -SOURCES = $(libepsilon_la_SOURCES)
    65         -DIST_SOURCES = $(libepsilon_la_SOURCES)
    66         -HEADERS = $(noinst_HEADERS)
    67         -ETAGS = etags
    68         -CTAGS = ctags
    69         -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
    70         -ACLOCAL = @ACLOCAL@
    71         -AMTAR = @AMTAR@
    72         -AR = @AR@
    73         -AS = @AS@
    74         -AUTOCONF = @AUTOCONF@
    75         -AUTOHEADER = @AUTOHEADER@
    76         -AUTOMAKE = @AUTOMAKE@
    77         -AWK = @AWK@
    78         -CC = @CC@
    79         -CCDEPMODE = @CCDEPMODE@
    80         -CFLAGS = @CFLAGS@
    81         -CPP = @CPP@
    82         -CPPFLAGS = @CPPFLAGS@
    83         -CXX = @CXX@
    84         -CXXCPP = @CXXCPP@
    85         -CXXDEPMODE = @CXXDEPMODE@
    86         -CXXFLAGS = @CXXFLAGS@
    87         -CYGPATH_W = @CYGPATH_W@
    88         -DEFS = @DEFS@
    89         -DEPDIR = @DEPDIR@
    90         -DLLTOOL = @DLLTOOL@
    91         -DSYMUTIL = @DSYMUTIL@
    92         -ECHO = @ECHO@
    93         -ECHO_C = @ECHO_C@
    94         -ECHO_N = @ECHO_N@
    95         -ECHO_T = @ECHO_T@
    96         -EGREP = @EGREP@
    97         -EXEEXT = @EXEEXT@
    98         -F77 = @F77@
    99         -FFLAGS = @FFLAGS@
   100         -GREP = @GREP@
   101         -INSTALL = @INSTALL@
   102         -INSTALL_DATA = @INSTALL_DATA@
   103         -INSTALL_PROGRAM = @INSTALL_PROGRAM@
   104         -INSTALL_SCRIPT = @INSTALL_SCRIPT@
   105         -INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
   106         -LDFLAGS = @LDFLAGS@
   107         -LIBOBJS = @LIBOBJS@
   108         -LIBS = @LIBS@
   109         -LIBTOOL = @LIBTOOL@
   110         -LN_S = @LN_S@
   111         -LTLIBOBJS = @LTLIBOBJS@
   112         -MAINT = @MAINT@
   113         -MAKEINFO = @MAKEINFO@
   114         -MKDIR_P = @MKDIR_P@
   115         -NMEDIT = @NMEDIT@
   116         -OBJDUMP = @OBJDUMP@
   117         -OBJEXT = @OBJEXT@
   118         -PACKAGE = @PACKAGE@
   119         -PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
   120         -PACKAGE_NAME = @PACKAGE_NAME@
   121         -PACKAGE_STRING = @PACKAGE_STRING@
   122         -PACKAGE_TARNAME = @PACKAGE_TARNAME@
   123         -PACKAGE_VERSION = @PACKAGE_VERSION@
   124         -PATH_SEPARATOR = @PATH_SEPARATOR@
   125         -RANLIB = @RANLIB@
   126         -SED = @SED@
   127         -SET_MAKE = @SET_MAKE@
   128         -SHELL = @SHELL@
   129         -STRIP = @STRIP@
   130         -VERSION = @VERSION@
   131         -abs_builddir = @abs_builddir@
   132         -abs_srcdir = @abs_srcdir@
   133         -abs_top_builddir = @abs_top_builddir@
   134         -abs_top_srcdir = @abs_top_srcdir@
   135         -ac_ct_CC = @ac_ct_CC@
   136         -ac_ct_CXX = @ac_ct_CXX@
   137         -ac_ct_F77 = @ac_ct_F77@
   138         -am__include = @am__include@
   139         -am__leading_dot = @am__leading_dot@
   140         -am__quote = @am__quote@
   141         -am__tar = @am__tar@
   142         -am__untar = @am__untar@
   143         -bindir = @bindir@
   144         -build = @build@
   145         -build_alias = @build_alias@
   146         -build_cpu = @build_cpu@
   147         -build_os = @build_os@
   148         -build_vendor = @build_vendor@
   149         -builddir = @builddir@
   150         -datadir = @datadir@
   151         -datarootdir = @datarootdir@
   152         -docdir = @docdir@
   153         -dvidir = @dvidir@
   154         -exec_prefix = @exec_prefix@
   155         -host = @host@
   156         -host_alias = @host_alias@
   157         -host_cpu = @host_cpu@
   158         -host_os = @host_os@
   159         -host_vendor = @host_vendor@
   160         -htmldir = @htmldir@
   161         -includedir = @includedir@
   162         -infodir = @infodir@
   163         -install_sh = @install_sh@
   164         -libdir = @libdir@
   165         -libexecdir = @libexecdir@
   166         -localedir = @localedir@
   167         -localstatedir = @localstatedir@
   168         -mandir = @mandir@
   169         -mkdir_p = @mkdir_p@
   170         -oldincludedir = @oldincludedir@
   171         -pdfdir = @pdfdir@
   172         -prefix = @prefix@
   173         -program_transform_name = @program_transform_name@
   174         -psdir = @psdir@
   175         -sbindir = @sbindir@
   176         -sharedstatedir = @sharedstatedir@
   177         -srcdir = @srcdir@
   178         -sysconfdir = @sysconfdir@
   179         -target_alias = @target_alias@
   180         -top_builddir = @top_builddir@
   181         -top_srcdir = @top_srcdir@
   182         -INCLUDES = -I$(top_srcdir)/lib
   183         -METASOURCES = AUTO
   184         -noinst_LTLIBRARIES = libepsilon.la
   185         -libepsilon_la_SOURCES = bit_io.c checksum.c cobs.c color.c common.c dc_level.c \
   186         -	filter.c filterbank.c libmain.c list.c mem_alloc.c merge_split.c pad.c \
   187         -	resample.c speck.c
   188         -
   189         -noinst_HEADERS = bit_io.h checksum.h cobs.h color.h common.h daub97lift.h \
   190         -	dc_level.h filter.h filterbank.h libmain.h list.h mem_alloc.h \
   191         -	merge_split.h pad.h resample.h speck.h epsilon.h
   192         -
   193         -EXTRA_DIST = msvc/stdint.h msvc/inttypes.h
   194         -all: all-am
   195         -
   196         -.SUFFIXES:
   197         -.SUFFIXES: .c .lo .o .obj
   198         -$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps)
   199         -	@for dep in $?; do \
   200         -	  case '$(am__configure_deps)' in \
   201         -	    *$$dep*) \
   202         -	      cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
   203         -		&& exit 0; \
   204         -	      exit 1;; \
   205         -	  esac; \
   206         -	done; \
   207         -	echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign  epsilon/Makefile'; \
   208         -	cd $(top_srcdir) && \
   209         -	  $(AUTOMAKE) --foreign  epsilon/Makefile
   210         -.PRECIOUS: Makefile
   211         -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
   212         -	@case '$?' in \
   213         -	  *config.status*) \
   214         -	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
   215         -	  *) \
   216         -	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
   217         -	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
   218         -	esac;
   219         -
   220         -$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
   221         -	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
   222         -
   223         -$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
   224         -	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
   225         -$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
   226         -	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
   227         -
   228         -clean-noinstLTLIBRARIES:
   229         -	-test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES)
   230         -	@list='$(noinst_LTLIBRARIES)'; for p in $$list; do \
   231         -	  dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
   232         -	  test "$$dir" != "$$p" || dir=.; \
   233         -	  echo "rm -f \"$${dir}/so_locations\""; \
   234         -	  rm -f "$${dir}/so_locations"; \
   235         -	done
   236         -libepsilon.la: $(libepsilon_la_OBJECTS) $(libepsilon_la_DEPENDENCIES) 
   237         -	$(LINK)  $(libepsilon_la_OBJECTS) $(libepsilon_la_LIBADD) $(LIBS)
   238         -
   239         -mostlyclean-compile:
   240         -	-rm -f *.$(OBJEXT)
   241         -
   242         -distclean-compile:
   243         -	-rm -f *.tab.c
   244         -
   245         -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bit_io.Plo@am__quote@
   246         -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/checksum.Plo@am__quote@
   247         -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cobs.Plo@am__quote@
   248         -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/color.Plo@am__quote@
   249         -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/common.Plo@am__quote@
   250         -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dc_level.Plo@am__quote@
   251         -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/filter.Plo@am__quote@
   252         -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/filterbank.Plo@am__quote@
   253         -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libmain.Plo@am__quote@
   254         -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/list.Plo@am__quote@
   255         -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mem_alloc.Plo@am__quote@
   256         -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/merge_split.Plo@am__quote@
   257         -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pad.Plo@am__quote@
   258         -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/resample.Plo@am__quote@
   259         -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/speck.Plo@am__quote@
   260         -
   261         -.c.o:
   262         -@am__fastdepCC_TRUE@	$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
   263         -@am__fastdepCC_TRUE@	mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
   264         -@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
   265         -@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
   266         -@am__fastdepCC_FALSE@	$(COMPILE) -c $<
   267         -
   268         -.c.obj:
   269         -@am__fastdepCC_TRUE@	$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
   270         -@am__fastdepCC_TRUE@	mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
   271         -@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
   272         -@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
   273         -@am__fastdepCC_FALSE@	$(COMPILE) -c `$(CYGPATH_W) '$<'`
   274         -
   275         -.c.lo:
   276         -@am__fastdepCC_TRUE@	$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
   277         -@am__fastdepCC_TRUE@	mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
   278         -@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
   279         -@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
   280         -@am__fastdepCC_FALSE@	$(LTCOMPILE) -c -o $@ $<
   281         -
   282         -mostlyclean-libtool:
   283         -	-rm -f *.lo
   284         -
   285         -clean-libtool:
   286         -	-rm -rf .libs _libs
   287         -
   288         -ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
   289         -	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
   290         -	unique=`for i in $$list; do \
   291         -	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
   292         -	  done | \
   293         -	  $(AWK) '{ files[$$0] = 1; nonemtpy = 1; } \
   294         -	      END { if (nonempty) { for (i in files) print i; }; }'`; \
   295         -	mkid -fID $$unique
   296         -tags: TAGS
   297         -
   298         -TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
   299         -		$(TAGS_FILES) $(LISP)
   300         -	tags=; \
   301         -	here=`pwd`; \
   302         -	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
   303         -	unique=`for i in $$list; do \
   304         -	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
   305         -	  done | \
   306         -	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
   307         -	      END { if (nonempty) { for (i in files) print i; }; }'`; \
   308         -	if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
   309         -	  test -n "$$unique" || unique=$$empty_fix; \
   310         -	  $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
   311         -	    $$tags $$unique; \
   312         -	fi
   313         -ctags: CTAGS
   314         -CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
   315         -		$(TAGS_FILES) $(LISP)
   316         -	tags=; \
   317         -	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
   318         -	unique=`for i in $$list; do \
   319         -	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
   320         -	  done | \
   321         -	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
   322         -	      END { if (nonempty) { for (i in files) print i; }; }'`; \
   323         -	test -z "$(CTAGS_ARGS)$$tags$$unique" \
   324         -	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
   325         -	     $$tags $$unique
   326         -
   327         -GTAGS:
   328         -	here=`$(am__cd) $(top_builddir) && pwd` \
   329         -	  && cd $(top_srcdir) \
   330         -	  && gtags -i $(GTAGS_ARGS) $$here
   331         -
   332         -distclean-tags:
   333         -	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
   334         -
   335         -distdir: $(DISTFILES)
   336         -	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
   337         -	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
   338         -	list='$(DISTFILES)'; \
   339         -	  dist_files=`for file in $$list; do echo $$file; done | \
   340         -	  sed -e "s|^$$srcdirstrip/||;t" \
   341         -	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
   342         -	case $$dist_files in \
   343         -	  */*) $(MKDIR_P) `echo "$$dist_files" | \
   344         -			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
   345         -			   sort -u` ;; \
   346         -	esac; \
   347         -	for file in $$dist_files; do \
   348         -	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
   349         -	  if test -d $$d/$$file; then \
   350         -	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
   351         -	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
   352         -	      cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
   353         -	    fi; \
   354         -	    cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
   355         -	  else \
   356         -	    test -f $(distdir)/$$file \
   357         -	    || cp -p $$d/$$file $(distdir)/$$file \
   358         -	    || exit 1; \
   359         -	  fi; \
   360         -	done
   361         -check-am: all-am
   362         -check: check-am
   363         -all-am: Makefile $(LTLIBRARIES) $(HEADERS)
   364         -installdirs:
   365         -install: install-am
   366         -install-exec: install-exec-am
   367         -install-data: install-data-am
   368         -uninstall: uninstall-am
   369         -
   370         -install-am: all-am
   371         -	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
   372         -
   373         -installcheck: installcheck-am
   374         -install-strip:
   375         -	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
   376         -	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
   377         -	  `test -z '$(STRIP)' || \
   378         -	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
   379         -mostlyclean-generic:
   380         -
   381         -clean-generic:
   382         -
   383         -distclean-generic:
   384         -	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
   385         -
   386         -maintainer-clean-generic:
   387         -	@echo "This command is intended for maintainers to use"
   388         -	@echo "it deletes files that may require special tools to rebuild."
   389         -clean: clean-am
   390         -
   391         -clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \
   392         -	mostlyclean-am
   393         -
   394         -distclean: distclean-am
   395         -	-rm -rf ./$(DEPDIR)
   396         -	-rm -f Makefile
   397         -distclean-am: clean-am distclean-compile distclean-generic \
   398         -	distclean-tags
   399         -
   400         -dvi: dvi-am
   401         -
   402         -dvi-am:
   403         -
   404         -html: html-am
   405         -
   406         -info: info-am
   407         -
   408         -info-am:
   409         -
   410         -install-data-am:
   411         -
   412         -install-dvi: install-dvi-am
   413         -
   414         -install-exec-am:
   415         -
   416         -install-html: install-html-am
   417         -
   418         -install-info: install-info-am
   419         -
   420         -install-man:
   421         -
   422         -install-pdf: install-pdf-am
   423         -
   424         -install-ps: install-ps-am
   425         -
   426         -installcheck-am:
   427         -
   428         -maintainer-clean: maintainer-clean-am
   429         -	-rm -rf ./$(DEPDIR)
   430         -	-rm -f Makefile
   431         -maintainer-clean-am: distclean-am maintainer-clean-generic
   432         -
   433         -mostlyclean: mostlyclean-am
   434         -
   435         -mostlyclean-am: mostlyclean-compile mostlyclean-generic \
   436         -	mostlyclean-libtool
   437         -
   438         -pdf: pdf-am
   439         -
   440         -pdf-am:
   441         -
   442         -ps: ps-am
   443         -
   444         -ps-am:
   445         -
   446         -uninstall-am:
   447         -
   448         -.MAKE: install-am install-strip
   449         -
   450         -.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
   451         -	clean-libtool clean-noinstLTLIBRARIES ctags distclean \
   452         -	distclean-compile distclean-generic distclean-libtool \
   453         -	distclean-tags distdir dvi dvi-am html html-am info info-am \
   454         -	install install-am install-data install-data-am install-dvi \
   455         -	install-dvi-am install-exec install-exec-am install-html \
   456         -	install-html-am install-info install-info-am install-man \
   457         -	install-pdf install-pdf-am install-ps install-ps-am \
   458         -	install-strip installcheck installcheck-am installdirs \
   459         -	maintainer-clean maintainer-clean-generic mostlyclean \
   460         -	mostlyclean-compile mostlyclean-generic mostlyclean-libtool \
   461         -	pdf pdf-am ps ps-am tags uninstall uninstall-am
   462         -
   463         -# Tell versions [3.59,3.63) of GNU make to not export all variables.
   464         -# Otherwise a system limit (for SysV at least) may be exceeded.
   465         -.NOEXPORT:

Deleted epsilon/bit_io.c.

     1         -/*
     2         - * $Id: bit_io.c,v 1.12 2008/03/25 19:31:44 simakov Exp $
     3         - *
     4         - * EPSILON - wavelet image compression library.
     5         - * Copyright (C) 2006-2007 Alexander Simakov, <xander@entropyware.info>
     6         - *
     7         - * This program is free software; you can redistribute it and/or modify
     8         - * it under the terms of the GNU General Public License as published by
     9         - * the Free Software Foundation; either version 2 of the License, or
    10         - * (at your option) any later version.
    11         - *
    12         - * This program is distributed in the hope that it will be useful,
    13         - * but WITHOUT ANY WARRANTY; without even the implied warranty of
    14         - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    15         - * GNU General Public License for more details.
    16         - *
    17         - * You should have received a copy of the GNU General Public License
    18         - * along with this program; if not, write to the Free Software
    19         - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
    20         - *
    21         - * http://epsilon-project.sourceforge.net
    22         - */
    23         -
    24         -#include <common.h>
    25         -#include <bit_io.h>
    26         -
    27         -void
    28         -init_bits (bit_buffer * bb, unsigned char *buf, int size)
    29         -{
    30         -    assert (size > 0);
    31         -
    32         -    bb->start = bb->next = buf;
    33         -    bb->end = bb->start + size;
    34         -    bb->bits = bb->pending = 0;
    35         -}
    36         -
    37         -int
    38         -write_bits (bit_buffer * bb, int value, int size)
    39         -{
    40         -    assert (size <= 24);
    41         -
    42         -    /* No more space available */
    43         -    if (bb->next >= bb->end)
    44         -      {
    45         -	  return BIT_BUFFER_OVERFLOW;
    46         -      }
    47         -
    48         -    /* Save requested number of bits */
    49         -    bb->bits |= (value << bb->pending);
    50         -    bb->pending += size;
    51         -
    52         -    /* Write complete octets */
    53         -    while (bb->pending >= 8)
    54         -      {
    55         -	  if (bb->next >= bb->end)
    56         -	    {
    57         -		return BIT_BUFFER_OVERFLOW;
    58         -	    }
    59         -
    60         -	  *bb->next++ = (unsigned char) (bb->bits & 0xff);
    61         -
    62         -	  bb->bits >>= 8;
    63         -	  bb->pending -= 8;
    64         -      }
    65         -
    66         -    return BIT_BUFFER_OK;
    67         -}
    68         -
    69         -int
    70         -read_bits (bit_buffer * bb, int *value, int size)
    71         -{
    72         -    assert (size <= 24);
    73         -
    74         -    /* Read missing bytes */
    75         -    while (bb->pending < size)
    76         -      {
    77         -	  if (bb->next >= bb->end)
    78         -	    {
    79         -		return BIT_BUFFER_UNDERFLOW;
    80         -	    }
    81         -
    82         -	  bb->bits |= (*bb->next++ << bb->pending);
    83         -	  bb->pending += 8;
    84         -      }
    85         -
    86         -    *value = bb->bits & (~(~0 << size));
    87         -
    88         -    bb->bits >>= size;
    89         -    bb->pending -= size;
    90         -
    91         -    return BIT_BUFFER_OK;
    92         -}
    93         -
    94         -int
    95         -flush_bits (bit_buffer * bb)
    96         -{
    97         -    if (bb->pending)
    98         -      {
    99         -	  return write_bits (bb, 0UL, 8);
   100         -      }
   101         -    else
   102         -      {
   103         -	  return BIT_BUFFER_OK;
   104         -      }
   105         -}

Deleted epsilon/bit_io.h.

     1         -/*
     2         - * $Id: bit_io.h,v 1.15 2008/03/25 19:31:45 simakov Exp $
     3         - *
     4         - * EPSILON - wavelet image compression library.
     5         - * Copyright (C) 2006-2007 Alexander Simakov, <xander@entropyware.info>
     6         - *
     7         - * This program is free software; you can redistribute it and/or modify
     8         - * it under the terms of the GNU General Public License as published by
     9         - * the Free Software Foundation; either version 2 of the License, or
    10         - * (at your option) any later version.
    11         - *
    12         - * This program is distributed in the hope that it will be useful,
    13         - * but WITHOUT ANY WARRANTY; without even the implied warranty of
    14         - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    15         - * GNU General Public License for more details.
    16         - *
    17         - * You should have received a copy of the GNU General Public License
    18         - * along with this program; if not, write to the Free Software
    19         - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
    20         - *
    21         - * http://epsilon-project.sourceforge.net
    22         - */
    23         -
    24         -/** \file
    25         - *
    26         - *  \brief Bit I/O
    27         - *
    28         - *  This file contains bit I/O routines. */
    29         -
    30         -#ifndef __BIT_IO_H__
    31         -#define __BIT_IO_H__
    32         -
    33         -#ifdef __cplusplus
    34         -extern "C"
    35         -{
    36         -#endif
    37         -
    38         -/** \addtogroup bit_io Bit I/O */
    39         -/*@{*/
    40         -
    41         -#include <common.h>
    42         -
    43         -/** All bits are successfuly processed */
    44         -#define BIT_BUFFER_OK           0
    45         -/** Cannot write bits, output buffer is full */
    46         -#define BIT_BUFFER_OVERFLOW     1
    47         -/** Cannot read bits, input buffer is empty */
    48         -#define BIT_BUFFER_UNDERFLOW    2
    49         -
    50         -/** Bit-buffer structure
    51         - *
    52         - *  This structure represents bit-buffer. */
    53         -    typedef struct bit_buffer_tag
    54         -    {
    55         -    /** Start of buffer */
    56         -	unsigned char *start;
    57         -    /** End of buffer */
    58         -	unsigned char *end;
    59         -    /** Next input/output byte */
    60         -	unsigned char *next;
    61         -    /** Bit buffer */
    62         -	unsigned long bits;
    63         -    /** Pending bits */
    64         -	int pending;
    65         -    } bit_buffer;
    66         -
    67         -/** Write one zero bit */
    68         -#define write_0(_bb)            write_bits(_bb, 0UL, 1)
    69         -/** Write one unity bit */
    70         -#define write_1(_bb)            write_bits(_bb, 1UL, 1)
    71         -/** Read one bit */
    72         -#define read_bit(_bb, _bit)     read_bits(_bb, _bit, 1)
    73         -
    74         -/** Initialize bit-buffer for reading or writting
    75         - *
    76         - *  This function initializes bit-buffer \a bb for reading or
    77         - *  writting bits.
    78         - *
    79         - *  \param bb Bit-buffer to initialize
    80         - *  \param buf Actual input/output buffer
    81         - *  \param size Actual buffer size
    82         - *
    83         - *  \return \c VOID */
    84         -    void init_bits (bit_buffer * bb, unsigned char *buf, int size);
    85         -
    86         -/** Write bits
    87         - *
    88         - *  This function writes \a size least significant bits of
    89         - *  the \a value to the bit-buffer \a bb.
    90         - *
    91         - *  \note The function expects that \a size <= 24.
    92         - *
    93         - *  \param bb Bit-buffer
    94         - *  \param value Bits to write
    95         - *  \param size Number of bits to write
    96         - *
    97         - *  \return Either \ref BIT_BUFFER_OK or \ref BIT_BUFFER_OVERFLOW */
    98         -    int write_bits (bit_buffer * bb, int value, int size);
    99         -
   100         -/** Read bits
   101         - *
   102         - *  This function reads \a size least significant bits
   103         - *  from the bit-buffer \a bb  into the \a value argument.
   104         - *
   105         - *  \note Function expects that \a size <= 24.
   106         - *
   107         - *  \param bb Bit-buffer
   108         - *  \param value Location to store the bits
   109         - *  \param size Number of bits to read
   110         - *
   111         - *  \return Either \ref BIT_BUFFER_OK or \ref BIT_BUFFER_UNDERFLOW */
   112         -    int read_bits (bit_buffer * bb, int *value, int size);
   113         -
   114         -/** Flush bits
   115         - *
   116         - *  This function flushes all pending bits if there are any.
   117         - *
   118         - *  \param bb Bit-buffer
   119         - *
   120         - *  \return Either \ref BIT_BUFFER_OK or \ref BIT_BUFFER_OVERFLOW */
   121         -    int flush_bits (bit_buffer * bb);
   122         -
   123         -/*@}*/
   124         -
   125         -#ifdef __cplusplus
   126         -}
   127         -#endif
   128         -
   129         -#endif				/* __BIT_IO_H__ */

Deleted epsilon/checksum.c.

     1         -/*
     2         - * $Id: checksum.c,v 1.13 2007/07/21 15:15:25 simakov Exp $
     3         - *
     4         - * EPSILON - wavelet image compression library.
     5         - * Copyright (C) 2006-2007 Alexander Simakov, <xander@entropyware.info>
     6         - *
     7         - * This program is free software; you can redistribute it and/or modify
     8         - * it under the terms of the GNU General Public License as published by
     9         - * the Free Software Foundation; either version 2 of the License, or
    10         - * (at your option) any later version.
    11         - *
    12         - * This program is distributed in the hope that it will be useful,
    13         - * but WITHOUT ANY WARRANTY; without even the implied warranty of
    14         - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    15         - * GNU General Public License for more details.
    16         - *
    17         - * You should have received a copy of the GNU General Public License
    18         - * along with this program; if not, write to the Free Software
    19         - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
    20         - *
    21         - * http://epsilon-project.sourceforge.net
    22         - */
    23         -
    24         -#include <common.h>
    25         -#include <checksum.h>
    26         -
    27         -/* largest prime smaller than 65536 */
    28         -#define BASE 65521
    29         -
    30         -/* NMAX is the largest n such that 255 * n (n + 1) / 2 + (n + 1) * (BASE - 1) <= 2^32 - 1 */
    31         -#define NMAX 5552
    32         -
    33         -/* Loop unrolling hack */
    34         -#define SUM1(data, i) { s1 += data[i]; s2 += s1; }
    35         -#define SUM2(data, i) SUM1(data, i); SUM1(data, i + 1);
    36         -#define SUM4(data, i) SUM2(data, i); SUM2(data, i + 2);
    37         -#define SUM8(data, i) SUM4(data, i); SUM4(data, i + 4);
    38         -#define SUM16(data)   SUM8(data, 0); SUM8(data, 8)
    39         -
    40         -/* CRC32 polynomial */
    41         -#define CRC32_POLY 0xedb88320L
    42         -
    43         -/* CRC32 precalculated table */
    44         -local crc32_t crc32_table[256] = {
    45         -    0x00000000, 0x77073096, 0xee0e612c, 0x990951ba,
    46         -    0x076dc419, 0x706af48f, 0xe963a535, 0x9e6495a3,
    47         -    0x0edb8832, 0x79dcb8a4, 0xe0d5e91e, 0x97d2d988,
    48         -    0x09b64c2b, 0x7eb17cbd, 0xe7b82d07, 0x90bf1d91,
    49         -    0x1db71064, 0x6ab020f2, 0xf3b97148, 0x84be41de,
    50         -    0x1adad47d, 0x6ddde4eb, 0xf4d4b551, 0x83d385c7,
    51         -    0x136c9856, 0x646ba8c0, 0xfd62f97a, 0x8a65c9ec,
    52         -    0x14015c4f, 0x63066cd9, 0xfa0f3d63, 0x8d080df5,
    53         -    0x3b6e20c8, 0x4c69105e, 0xd56041e4, 0xa2677172,
    54         -    0x3c03e4d1, 0x4b04d447, 0xd20d85fd, 0xa50ab56b,
    55         -    0x35b5a8fa, 0x42b2986c, 0xdbbbc9d6, 0xacbcf940,
    56         -    0x32d86ce3, 0x45df5c75, 0xdcd60dcf, 0xabd13d59,
    57         -    0x26d930ac, 0x51de003a, 0xc8d75180, 0xbfd06116,
    58         -    0x21b4f4b5, 0x56b3c423, 0xcfba9599, 0xb8bda50f,
    59         -    0x2802b89e, 0x5f058808, 0xc60cd9b2, 0xb10be924,
    60         -    0x2f6f7c87, 0x58684c11, 0xc1611dab, 0xb6662d3d,
    61         -    0x76dc4190, 0x01db7106, 0x98d220bc, 0xefd5102a,
    62         -    0x71b18589, 0x06b6b51f, 0x9fbfe4a5, 0xe8b8d433,
    63         -    0x7807c9a2, 0x0f00f934, 0x9609a88e, 0xe10e9818,
    64         -    0x7f6a0dbb, 0x086d3d2d, 0x91646c97, 0xe6635c01,
    65         -    0x6b6b51f4, 0x1c6c6162, 0x856530d8, 0xf262004e,
    66         -    0x6c0695ed, 0x1b01a57b, 0x8208f4c1, 0xf50fc457,
    67         -    0x65b0d9c6, 0x12b7e950, 0x8bbeb8ea, 0xfcb9887c,
    68         -    0x62dd1ddf, 0x15da2d49, 0x8cd37cf3, 0xfbd44c65,
    69         -    0x4db26158, 0x3ab551ce, 0xa3bc0074, 0xd4bb30e2,
    70         -    0x4adfa541, 0x3dd895d7, 0xa4d1c46d, 0xd3d6f4fb,
    71         -    0x4369e96a, 0x346ed9fc, 0xad678846, 0xda60b8d0,
    72         -    0x44042d73, 0x33031de5, 0xaa0a4c5f, 0xdd0d7cc9,
    73         -    0x5005713c, 0x270241aa, 0xbe0b1010, 0xc90c2086,
    74         -    0x5768b525, 0x206f85b3, 0xb966d409, 0xce61e49f,
    75         -    0x5edef90e, 0x29d9c998, 0xb0d09822, 0xc7d7a8b4,
    76         -    0x59b33d17, 0x2eb40d81, 0xb7bd5c3b, 0xc0ba6cad,
    77         -    0xedb88320, 0x9abfb3b6, 0x03b6e20c, 0x74b1d29a,
    78         -    0xead54739, 0x9dd277af, 0x04db2615, 0x73dc1683,
    79         -    0xe3630b12, 0x94643b84, 0x0d6d6a3e, 0x7a6a5aa8,
    80         -    0xe40ecf0b, 0x9309ff9d, 0x0a00ae27, 0x7d079eb1,
    81         -    0xf00f9344, 0x8708a3d2, 0x1e01f268, 0x6906c2fe,
    82         -    0xf762575d, 0x806567cb, 0x196c3671, 0x6e6b06e7,
    83         -    0xfed41b76, 0x89d32be0, 0x10da7a5a, 0x67dd4acc,
    84         -    0xf9b9df6f, 0x8ebeeff9, 0x17b7be43, 0x60b08ed5,
    85         -    0xd6d6a3e8, 0xa1d1937e, 0x38d8c2c4, 0x4fdff252,
    86         -    0xd1bb67f1, 0xa6bc5767, 0x3fb506dd, 0x48b2364b,
    87         -    0xd80d2bda, 0xaf0a1b4c, 0x36034af6, 0x41047a60,
    88         -    0xdf60efc3, 0xa867df55, 0x316e8eef, 0x4669be79,
    89         -    0xcb61b38c, 0xbc66831a, 0x256fd2a0, 0x5268e236,
    90         -    0xcc0c7795, 0xbb0b4703, 0x220216b9, 0x5505262f,
    91         -    0xc5ba3bbe, 0xb2bd0b28, 0x2bb45a92, 0x5cb36a04,
    92         -    0xc2d7ffa7, 0xb5d0cf31, 0x2cd99e8b, 0x5bdeae1d,
    93         -    0x9b64c2b0, 0xec63f226, 0x756aa39c, 0x026d930a,
    94         -    0x9c0906a9, 0xeb0e363f, 0x72076785, 0x05005713,
    95         -    0x95bf4a82, 0xe2b87a14, 0x7bb12bae, 0x0cb61b38,
    96         -    0x92d28e9b, 0xe5d5be0d, 0x7cdcefb7, 0x0bdbdf21,
    97         -    0x86d3d2d4, 0xf1d4e242, 0x68ddb3f8, 0x1fda836e,
    98         -    0x81be16cd, 0xf6b9265b, 0x6fb077e1, 0x18b74777,
    99         -    0x88085ae6, 0xff0f6a70, 0x66063bca, 0x11010b5c,
   100         -    0x8f659eff, 0xf862ae69, 0x616bffd3, 0x166ccf45,
   101         -    0xa00ae278, 0xd70dd2ee, 0x4e048354, 0x3903b3c2,
   102         -    0xa7672661, 0xd06016f7, 0x4969474d, 0x3e6e77db,
   103         -    0xaed16a4a, 0xd9d65adc, 0x40df0b66, 0x37d83bf0,
   104         -    0xa9bcae53, 0xdebb9ec5, 0x47b2cf7f, 0x30b5ffe9,
   105         -    0xbdbdf21c, 0xcabac28a, 0x53b39330, 0x24b4a3a6,
   106         -    0xbad03605, 0xcdd70693, 0x54de5729, 0x23d967bf,
   107         -    0xb3667a2e, 0xc4614ab8, 0x5d681b02, 0x2a6f2b94,
   108         -    0xb40bbe37, 0xc30c8ea1, 0x5a05df1b, 0x2d02ef8d,
   109         -};
   110         -
   111         -crc32_t
   112         -epsilon_adler32 (unsigned char *data, int length)
   113         -{
   114         -    crc32_t s1 = 1;
   115         -    crc32_t s2 = 0;
   116         -    int k;
   117         -
   118         -    assert (length >= 0);
   119         -
   120         -    if (length == 0)
   121         -      {
   122         -	  return 1;
   123         -      }
   124         -
   125         -    while (length > 0)
   126         -      {
   127         -	  k = length < NMAX ? length : NMAX;
   128         -	  length -= k;
   129         -
   130         -	  while (k >= 16)
   131         -	    {
   132         -		SUM16 (data);
   133         -		data += 16;
   134         -		k -= 16;
   135         -	    }
   136         -
   137         -	  if (k != 0)
   138         -	      do
   139         -		{
   140         -		    s1 += *data++;
   141         -		    s2 += s1;
   142         -		}
   143         -	      while (--k);
   144         -
   145         -	  s1 %= BASE;
   146         -	  s2 %= BASE;
   147         -      }
   148         -
   149         -    return (s2 << 16) | s1;
   150         -}
   151         -
   152         -crc32_t
   153         -epsilon_crc32 (unsigned char *data, int length)
   154         -{
   155         -    crc32_t crc = 0xffffffff;
   156         -    int i;
   157         -    assert (length >= 0);
   158         -
   159         -    for (i = 0; i < length; i++)
   160         -      {
   161         -	  crc = crc32_table[(crc ^ data[i]) & 0xff] ^ (crc >> 8);
   162         -      }
   163         -    return crc ^ 0xffffffff;
   164         -}
   165         -
   166         -/* This auxilliary function is used for CRC-32 table
   167         - * generation. It is not exported or used by the program. */
   168         -local void
   169         -make_crc32_table (void)
   170         -{
   171         -    crc32_t crc;
   172         -    int n, k;
   173         -
   174         -    printf ("local crc32_t crc32_table[256] = {\n");
   175         -
   176         -    for (n = 0; n < 256; n++)
   177         -      {
   178         -	  crc = (crc32_t) n;
   179         -
   180         -	  for (k = 0; k < 8; k++)
   181         -	    {
   182         -		if (crc & 1)
   183         -		  {
   184         -		      crc = CRC32_POLY ^ (crc >> 1);
   185         -		  }
   186         -		else
   187         -		  {
   188         -		      crc >>= 1;
   189         -		  }
   190         -	    }
   191         -
   192         -	  if ((n & 0x03) == 0)
   193         -	    {
   194         -		printf ("    ");
   195         -	    }
   196         -
   197         -	  printf ("0x%08x,%s", crc, (n & 0x03) == 0x03 ? "" : " ");
   198         -
   199         -	  if ((n & 0x03) == 0x03)
   200         -	    {
   201         -		printf ("\n");
   202         -	    }
   203         -      }
   204         -
   205         -    printf ("};\n");
   206         -}

Deleted epsilon/checksum.h.

     1         -/*
     2         - * $Id: checksum.h,v 1.13 2007/07/21 15:15:25 simakov Exp $
     3         - *
     4         - * EPSILON - wavelet image compression library.
     5         - * Copyright (C) 2006-2007 Alexander Simakov, <xander@entropyware.info>
     6         - *
     7         - * This program is free software; you can redistribute it and/or modify
     8         - * it under the terms of the GNU General Public License as published by
     9         - * the Free Software Foundation; either version 2 of the License, or
    10         - * (at your option) any later version.
    11         - *
    12         - * This program is distributed in the hope that it will be useful,
    13         - * but WITHOUT ANY WARRANTY; without even the implied warranty of
    14         - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    15         - * GNU General Public License for more details.
    16         - *
    17         - * You should have received a copy of the GNU General Public License
    18         - * along with this program; if not, write to the Free Software
    19         - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
    20         - *
    21         - * http://epsilon-project.sourceforge.net
    22         - */
    23         -
    24         -/** \file
    25         - *
    26         - *  \brief Checksum calculation
    27         - *
    28         - *  This file contains routines for CRC-32 and ADLER-32 checksum
    29         - *  calculation. At the moment program uses only CRC-32 algorithm.
    30         - *
    31         - *  \section References
    32         - *
    33         - *  <a href="http://www.ross.net/crc/">A Painless Guide to CRC Error Detection Algorithms</a><br>
    34         - *  <a href="http://en.wikipedia.org/wiki/CRC32">Wikipedia: CRC-32</a><br>
    35         - *  <a href="http://en.wikipedia.org/wiki/Adler-32">Wikipedia: ADLER-32</a> */
    36         -
    37         -#ifndef __CHECKSUM_H__
    38         -#define __CHECKSUM_H__
    39         -
    40         -#ifdef __cplusplus
    41         -extern "C"
    42         -{
    43         -#endif
    44         -
    45         -/** \addtogroup checksum Checksum calculation */
    46         -/*@{*/
    47         -
    48         -#include <common.h>
    49         -#include <epsilon.h>
    50         -
    51         -/** Compute ADLER-32 checksum
    52         - *
    53         - *  This function computes ADLER-32 checksum.
    54         - *
    55         - *  \param data Data to sum
    56         - *  \param length Data length
    57         - *
    58         - *  \return Checksum */
    59         -    crc32_t epsilon_adler32 (unsigned char *data, int length);
    60         -
    61         -/** Compute CRC-32 checksum
    62         - *
    63         - *  This function computes CRC-32 checksum.
    64         - *
    65         - *  \param data Data to sum
    66         - *  \param length Data length
    67         - *
    68         - *  \return Checksum */
    69         -    crc32_t epsilon_crc32 (unsigned char *data, int length);
    70         -
    71         -/*@}*/
    72         -
    73         -#ifdef __cplusplus
    74         -}
    75         -#endif
    76         -
    77         -#endif				/* __CHECKSUM_H__ */

Deleted epsilon/cobs.c.

     1         -/*
     2         - * $Id: cobs.c,v 1.12 2007/05/20 13:19:12 simakov Exp $
     3         - *
     4         - * EPSILON - wavelet image compression library.
     5         - * Copyright (C) 2006-2007 Alexander Simakov, <xander@entropyware.info>
     6         - *
     7         - * This program is free software; you can redistribute it and/or modify
     8         - * it under the terms of the GNU General Public License as published by
     9         - * the Free Software Foundation; either version 2 of the License, or
    10         - * (at your option) any later version.
    11         - *
    12         - * This program is distributed in the hope that it will be useful,
    13         - * but WITHOUT ANY WARRANTY; without even the implied warranty of
    14         - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    15         - * GNU General Public License for more details.
    16         - *
    17         - * You should have received a copy of the GNU General Public License
    18         - * along with this program; if not, write to the Free Software
    19         - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
    20         - *
    21         - * http://epsilon-project.sourceforge.net
    22         - */
    23         -
    24         -#include <common.h>
    25         -#include <cobs.h>
    26         -
    27         -#define FINISH_BLOCK(_x) (*code_ptr = (_x), \
    28         -                           code_ptr = output_data++, \
    29         -                           code = 0x01)
    30         -
    31         -int
    32         -stuff_data (unsigned char *input_data, unsigned char *output_data,
    33         -	    int input_length, int output_length)
    34         -{
    35         -    unsigned char *input_end = input_data + input_length;
    36         -    unsigned char *output_start = output_data;
    37         -
    38         -    unsigned char *code_ptr = output_data++;
    39         -    unsigned char code = 0x01;
    40         -
    41         -    /* Sanity checks */
    42         -    assert (input_length > 0);
    43         -    assert (output_length >= input_length + input_length / 254 + 1);
    44         -
    45         -    while (input_data < input_end)
    46         -      {
    47         -	  if (*input_data == 0)
    48         -	    {
    49         -		FINISH_BLOCK (code);
    50         -	    }
    51         -	  else
    52         -	    {
    53         -		*output_data++ = *input_data;
    54         -		code++;
    55         -
    56         -		if (code == 0xff)
    57         -		  {
    58         -		      FINISH_BLOCK (code);
    59         -		  }
    60         -	    }
    61         -
    62         -	  input_data++;
    63         -      }
    64         -
    65         -    FINISH_BLOCK (code);
    66         -
    67         -    return output_data - output_start - 1;
    68         -}
    69         -
    70         -int
    71         -unstuff_data (unsigned char *input_data, unsigned char *output_data,
    72         -	      int input_length, int output_length)
    73         -{
    74         -    unsigned char *input_end = input_data + input_length;
    75         -    unsigned char *output_end = output_data + output_length;
    76         -    unsigned char *output_start = output_data;
    77         -
    78         -    /* Sanity checks */
    79         -    assert (input_length > 0);
    80         -    assert (output_length >= input_length);
    81         -
    82         -    while (input_data < input_end)
    83         -      {
    84         -	  int code = *input_data++;
    85         -	  int i;
    86         -
    87         -	  for (i = 1;
    88         -	       (i < code) && (input_data < input_end)
    89         -	       && (output_data < output_end); i++)
    90         -	    {
    91         -		*output_data++ = *input_data++;
    92         -	    }
    93         -
    94         -	  if ((code > 0x00) && (code < 0xff) &&
    95         -	      (input_data < input_end) && (output_data < output_end))
    96         -	    {
    97         -		*output_data++ = 0;
    98         -	    }
    99         -      }
   100         -
   101         -    return output_data - output_start;
   102         -}

Deleted epsilon/cobs.h.

     1         -/*
     2         - * $Id: cobs.h,v 1.14 2007/05/20 13:19:12 simakov Exp $
     3         - *
     4         - * EPSILON - wavelet image compression library.
     5         - * Copyright (C) 2006-2007 Alexander Simakov, <xander@entropyware.info>
     6         - *
     7         - * This program is free software; you can redistribute it and/or modify
     8         - * it under the terms of the GNU General Public License as published by
     9         - * the Free Software Foundation; either version 2 of the License, or
    10         - * (at your option) any later version.
    11         - *
    12         - * This program is distributed in the hope that it will be useful,
    13         - * but WITHOUT ANY WARRANTY; without even the implied warranty of
    14         - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    15         - * GNU General Public License for more details.
    16         - *
    17         - * You should have received a copy of the GNU General Public License
    18         - * along with this program; if not, write to the Free Software
    19         - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
    20         - *
    21         - * http://epsilon-project.sourceforge.net
    22         - */
    23         -
    24         -/** \file
    25         - *
    26         - *  \brief Byte stuffing
    27         - *
    28         - *  This file contains routines for efficient byte stuffing.
    29         - *  The algorithm used here called COBS, which is stands for Consistent
    30         - *  Overhead Byte Stuffing. Byte stuffing is very useful for parallel
    31         - *  image processing and improves overall system robustness.
    32         - *
    33         - *  \section References
    34         - *
    35         - *  Stuart Cheshire and Mary Baker, "Consistent Overhead Byte Stuffing".
    36         - *  IEEE/ACM Transactions on Networking. vol. 7 pp. 159-172 April 1999. */
    37         -
    38         -#ifndef __COBS_H__
    39         -#define __COBS_H__
    40         -
    41         -#ifdef __cplusplus
    42         -extern "C"
    43         -{
    44         -#endif
    45         -
    46         -/** \addtogroup stuffing Byte stuffing */
    47         -/*@{*/
    48         -
    49         -#include <common.h>
    50         -
    51         -/** Byte stuffing
    52         - *
    53         - *  This function performes byte stuffing. All zero-valued
    54         - *  bytes in the \a input_data will be eliminated. The result
    55         - *  will be stored in the \a output_data. This operation involves
    56         - *  some marginal data expansion, no more than 0.4% at worst case.
    57         - *
    58         - *  \param input_data Input data
    59         - *  \param output_data Output data
    60         - *  \param input_length Input data length
    61         - *  \param output_length Output data length
    62         - *
    63         - *  \return Number of bytes actually used in the \a output_data
    64         - *
    65         - *  \note Caller must allocate enough space for the \a output_data
    66         - *  beforehand. This value can be calculated by the following
    67         - *  formula: \a input_length + (\a input_length / 254) + 1. */
    68         -    int stuff_data (unsigned char *input_data, unsigned char *output_data,
    69         -		    int input_length, int output_length);
    70         -
    71         -/** Byte unstuffing
    72         - *
    73         - *  This function is inverse to the previous one. It recovers original data.
    74         - *  The result will be stored in the \a output_data.
    75         - *
    76         - *  \param input_data Input data
    77         - *  \param output_data Output data
    78         - *  \param input_length Input data length
    79         - *  \param output_length Output data length
    80         - *
    81         - *  \return Number of bytes actually used in the \a output_data
    82         - *
    83         - *  \note Caller must allocate enough space for the \a output_data
    84         - *  beforehand. Safe value is \a input_length.  */
    85         -    int unstuff_data (unsigned char *input_data, unsigned char *output_data,
    86         -		      int input_length, int output_length);
    87         -
    88         -/*@}*/
    89         -
    90         -#ifdef __cplusplus
    91         -}
    92         -#endif
    93         -
    94         -#endif				/* __COBS_H__ */

Deleted epsilon/color.c.

     1         -/*
     2         - * $Id: color.c,v 1.13 2008/03/29 21:37:06 simakov Exp $
     3         - *
     4         - * EPSILON - wavelet image compression library.
     5         - * Copyright (C) 2006-2007 Alexander Simakov, <xander@entropyware.info>
     6         - *
     7         - * This program is free software; you can redistribute it and/or modify
     8         - * it under the terms of the GNU General Public License as published by
     9         - * the Free Software Foundation; either version 2 of the License, or
    10         - * (at your option) any later version.
    11         - *
    12         - * This program is distributed in the hope that it will be useful,
    13         - * but WITHOUT ANY WARRANTY; without even the implied warranty of
    14         - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    15         - * GNU General Public License for more details.
    16         - *
    17         - * You should have received a copy of the GNU General Public License
    18         - * along with this program; if not, write to the Free Software
    19         - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
    20         - *
    21         - * http://epsilon-project.sourceforge.net
    22         - */
    23         -
    24         -#include <common.h>
    25         -#include <color.h>
    26         -
    27         -/* Look-up tables for increase RGB to YCbCr conversion speed */
    28         -
    29         -local double O_299000[256] = {
    30         -    0, 0.299, 0.598, 0.897, 1.196, 1.495, 1.794, 2.093,
    31         -    2.392, 2.691, 2.99, 3.289, 3.588, 3.887, 4.186, 4.485,
    32         -    4.784, 5.083, 5.382, 5.681, 5.98, 6.279, 6.578, 6.877,
    33         -    7.176, 7.475, 7.774, 8.073, 8.372, 8.671, 8.97, 9.269,
    34         -    9.568, 9.867, 10.166, 10.465, 10.764, 11.063, 11.362, 11.661,
    35         -    11.96, 12.259, 12.558, 12.857, 13.156, 13.455, 13.754, 14.053,
    36         -    14.352, 14.651, 14.95, 15.249, 15.548, 15.847, 16.146, 16.445,
    37         -    16.744, 17.043, 17.342, 17.641, 17.94, 18.239, 18.538, 18.837,
    38         -    19.136, 19.435, 19.734, 20.033, 20.332, 20.631, 20.93, 21.229,
    39         -    21.528, 21.827, 22.126, 22.425, 22.724, 23.023, 23.322, 23.621,
    40         -    23.92, 24.219, 24.518, 24.817, 25.116, 25.415, 25.714, 26.013,
    41         -    26.312, 26.611, 26.91, 27.209, 27.508, 27.807, 28.106, 28.405,
    42         -    28.704, 29.003, 29.302, 29.601, 29.9, 30.199, 30.498, 30.797,
    43         -    31.096, 31.395, 31.694, 31.993, 32.292, 32.591, 32.89, 33.189,
    44         -    33.488, 33.787, 34.086, 34.385, 34.684, 34.983, 35.282, 35.581,
    45         -    35.88, 36.179, 36.478, 36.777, 37.076, 37.375, 37.674, 37.973,
    46         -    38.272, 38.571, 38.87, 39.169, 39.468, 39.767, 40.066, 40.365,
    47         -    40.664, 40.963, 41.262, 41.561, 41.86, 42.159, 42.458, 42.757,
    48         -    43.056, 43.355, 43.654, 43.953, 44.252, 44.551, 44.85, 45.149,
    49         -    45.448, 45.747, 46.046, 46.345, 46.644, 46.943, 47.242, 47.541,
    50         -    47.84, 48.139, 48.438, 48.737, 49.036, 49.335, 49.634, 49.933,
    51         -    50.232, 50.531, 50.83, 51.129, 51.428, 51.727, 52.026, 52.325,
    52         -    52.624, 52.923, 53.222, 53.521, 53.82, 54.119, 54.418, 54.717,
    53         -    55.016, 55.315, 55.614, 55.913, 56.212, 56.511, 56.81, 57.109,
    54         -    57.408, 57.707, 58.006, 58.305, 58.604, 58.903, 59.202, 59.501,
    55         -    59.8, 60.099, 60.398, 60.697, 60.996, 61.295, 61.594, 61.893,
    56         -    62.192, 62.491, 62.79, 63.089, 63.388, 63.687, 63.986, 64.285,
    57         -    64.584, 64.883, 65.182, 65.481, 65.78, 66.079, 66.378, 66.677,
    58         -    66.976, 67.275, 67.574, 67.873, 68.172, 68.471, 68.77, 69.069,
    59         -    69.368, 69.667, 69.966, 70.265, 70.564, 70.863, 71.162, 71.461,
    60         -    71.76, 72.059, 72.358, 72.657, 72.956, 73.255, 73.554, 73.853,
    61         -    74.152, 74.451, 74.75, 75.049, 75.348, 75.647, 75.946, 76.245,
    62         -};
    63         -
    64         -local double O_587000[256] = {
    65         -    0, 0.587, 1.174, 1.761, 2.348, 2.935, 3.522, 4.109,
    66         -    4.696, 5.283, 5.87, 6.457, 7.044, 7.631, 8.218, 8.805,
    67         -    9.392, 9.979, 10.566, 11.153, 11.74, 12.327, 12.914, 13.501,
    68         -    14.088, 14.675, 15.262, 15.849, 16.436, 17.023, 17.61, 18.197,
    69         -    18.784, 19.371, 19.958, 20.545, 21.132, 21.719, 22.306, 22.893,
    70         -    23.48, 24.067, 24.654, 25.241, 25.828, 26.415, 27.002, 27.589,
    71         -    28.176, 28.763, 29.35, 29.937, 30.524, 31.111, 31.698, 32.285,
    72         -    32.872, 33.459, 34.046, 34.633, 35.22, 35.807, 36.394, 36.981,
    73         -    37.568, 38.155, 38.742, 39.329, 39.916, 40.503, 41.09, 41.677,
    74         -    42.264, 42.851, 43.438, 44.025, 44.612, 45.199, 45.786, 46.373,
    75         -    46.96, 47.547, 48.134, 48.721, 49.308, 49.895, 50.482, 51.069,
    76         -    51.656, 52.243, 52.83, 53.417, 54.004, 54.591, 55.178, 55.765,
    77         -    56.352, 56.939, 57.526, 58.113, 58.7, 59.287, 59.874, 60.461,
    78         -    61.048, 61.635, 62.222, 62.809, 63.396, 63.983, 64.57, 65.157,
    79         -    65.744, 66.331, 66.918, 67.505, 68.092, 68.679, 69.266, 69.853,
    80         -    70.44, 71.027, 71.614, 72.201, 72.788, 73.375, 73.962, 74.549,
    81         -    75.136, 75.723, 76.31, 76.897, 77.484, 78.071, 78.658, 79.245,
    82         -    79.832, 80.419, 81.006, 81.593, 82.18, 82.767, 83.354, 83.941,
    83         -    84.528, 85.115, 85.702, 86.289, 86.876, 87.463, 88.05, 88.637,
    84         -    89.224, 89.811, 90.398, 90.985, 91.572, 92.159, 92.746, 93.333,
    85         -    93.92, 94.507, 95.094, 95.681, 96.268, 96.855, 97.442, 98.029,
    86         -    98.616, 99.203, 99.79, 100.377, 100.964, 101.551, 102.138, 102.725,
    87         -    103.312, 103.899, 104.486, 105.073, 105.66, 106.247, 106.834, 107.421,
    88         -    108.008, 108.595, 109.182, 109.769, 110.356, 110.943, 111.53, 112.117,
    89         -    112.704, 113.291, 113.878, 114.465, 115.052, 115.639, 116.226, 116.813,
    90         -    117.4, 117.987, 118.574, 119.161, 119.748, 120.335, 120.922, 121.509,
    91         -    122.096, 122.683, 123.27, 123.857, 124.444, 125.031, 125.618, 126.205,
    92         -    126.792, 127.379, 127.966, 128.553, 129.14, 129.727, 130.314, 130.901,
    93         -    131.488, 132.075, 132.662, 133.249, 133.836, 134.423, 135.01, 135.597,
    94         -    136.184, 136.771, 137.358, 137.945, 138.532, 139.119, 139.706, 140.293,
    95         -    140.88, 141.467, 142.054, 142.641, 143.228, 143.815, 144.402, 144.989,
    96         -    145.576, 146.163, 146.75, 147.337, 147.924, 148.511, 149.098, 149.685,
    97         -};
    98         -
    99         -local double O_114000[256] = {
   100         -    0, 0.114, 0.228, 0.342, 0.456, 0.57, 0.684, 0.798,
   101         -    0.912, 1.026, 1.14, 1.254, 1.368, 1.482, 1.596, 1.71,
   102         -    1.824, 1.938, 2.052, 2.166, 2.28, 2.394, 2.508, 2.622,
   103         -    2.736, 2.85, 2.964, 3.078, 3.192, 3.306, 3.42, 3.534,
   104         -    3.648, 3.762, 3.876, 3.99, 4.104, 4.218, 4.332, 4.446,
   105         -    4.56, 4.674, 4.788, 4.902, 5.016, 5.13, 5.244, 5.358,
   106         -    5.472, 5.586, 5.7, 5.814, 5.928, 6.042, 6.156, 6.27,
   107         -    6.384, 6.498, 6.612, 6.726, 6.84, 6.954, 7.068, 7.182,
   108         -    7.296, 7.41, 7.524, 7.638, 7.752, 7.866, 7.98, 8.094,
   109         -    8.208, 8.322, 8.436, 8.55, 8.664, 8.778, 8.892, 9.006,
   110         -    9.12, 9.234, 9.348, 9.462, 9.576, 9.69, 9.804, 9.918,
   111         -    10.032, 10.146, 10.26, 10.374, 10.488, 10.602, 10.716, 10.83,
   112         -    10.944, 11.058, 11.172, 11.286, 11.4, 11.514, 11.628, 11.742,
   113         -    11.856, 11.97, 12.084, 12.198, 12.312, 12.426, 12.54, 12.654,
   114         -    12.768, 12.882, 12.996, 13.11, 13.224, 13.338, 13.452, 13.566,
   115         -    13.68, 13.794, 13.908, 14.022, 14.136, 14.25, 14.364, 14.478,
   116         -    14.592, 14.706, 14.82, 14.934, 15.048, 15.162, 15.276, 15.39,
   117         -    15.504, 15.618, 15.732, 15.846, 15.96, 16.074, 16.188, 16.302,
   118         -    16.416, 16.53, 16.644, 16.758, 16.872, 16.986, 17.1, 17.214,
   119         -    17.328, 17.442, 17.556, 17.67, 17.784, 17.898, 18.012, 18.126,
   120         -    18.24, 18.354, 18.468, 18.582, 18.696, 18.81, 18.924, 19.038,
   121         -    19.152, 19.266, 19.38, 19.494, 19.608, 19.722, 19.836, 19.95,
   122         -    20.064, 20.178, 20.292, 20.406, 20.52, 20.634, 20.748, 20.862,
   123         -    20.976, 21.09, 21.204, 21.318, 21.432, 21.546, 21.66, 21.774,
   124         -    21.888, 22.002, 22.116, 22.23, 22.344, 22.458, 22.572, 22.686,
   125         -    22.8, 22.914, 23.028, 23.142, 23.256, 23.37, 23.484, 23.598,
   126         -    23.712, 23.826, 23.94, 24.054, 24.168, 24.282, 24.396, 24.51,
   127         -    24.624, 24.738, 24.852, 24.966, 25.08, 25.194, 25.308, 25.422,
   128         -    25.536, 25.65, 25.764, 25.878, 25.992, 26.106, 26.22, 26.334,
   129         -    26.448, 26.562, 26.676, 26.79, 26.904, 27.018, 27.132, 27.246,
   130         -    27.36, 27.474, 27.588, 27.702, 27.816, 27.93, 28.044, 28.158,
   131         -    28.272, 28.386, 28.5, 28.614, 28.728, 28.842, 28.956, 29.07,
   132         -};
   133         -
   134         -local double O_168736[256] = {
   135         -    0, 0.168736, 0.337472, 0.506208, 0.674944, 0.84368, 1.01242, 1.18115,
   136         -    1.34989, 1.51862, 1.68736, 1.8561, 2.02483, 2.19357, 2.3623, 2.53104,
   137         -    2.69978, 2.86851, 3.03725, 3.20598, 3.37472, 3.54346, 3.71219, 3.88093,
   138         -    4.04966, 4.2184, 4.38714, 4.55587, 4.72461, 4.89334, 5.06208, 5.23082,
   139         -    5.39955, 5.56829, 5.73702, 5.90576, 6.0745, 6.24323, 6.41197, 6.5807,
   140         -    6.74944, 6.91818, 7.08691, 7.25565, 7.42438, 7.59312, 7.76186, 7.93059,
   141         -    8.09933, 8.26806, 8.4368, 8.60554, 8.77427, 8.94301, 9.11174, 9.28048,
   142         -    9.44922, 9.61795, 9.78669, 9.95542, 10.1242, 10.2929, 10.4616, 10.6304,
   143         -    10.7991, 10.9678, 11.1366, 11.3053, 11.474, 11.6428, 11.8115, 11.9803,
   144         -    12.149, 12.3177, 12.4865, 12.6552, 12.8239, 12.9927, 13.1614, 13.3301,
   145         -    13.4989, 13.6676, 13.8364, 14.0051, 14.1738, 14.3426, 14.5113, 14.68,
   146         -    14.8488, 15.0175, 15.1862, 15.355, 15.5237, 15.6924, 15.8612, 16.0299,
   147         -    16.1987, 16.3674, 16.5361, 16.7049, 16.8736, 17.0423, 17.2111, 17.3798,
   148         -    17.5485, 17.7173, 17.886, 18.0548, 18.2235, 18.3922, 18.561, 18.7297,
   149         -    18.8984, 19.0672, 19.2359, 19.4046, 19.5734, 19.7421, 19.9108, 20.0796,
   150         -    20.2483, 20.4171, 20.5858, 20.7545, 20.9233, 21.092, 21.2607, 21.4295,
   151         -    21.5982, 21.7669, 21.9357, 22.1044, 22.2732, 22.4419, 22.6106, 22.7794,
   152         -    22.9481, 23.1168, 23.2856, 23.4543, 23.623, 23.7918, 23.9605, 24.1292,
   153         -    24.298, 24.4667, 24.6355, 24.8042, 24.9729, 25.1417, 25.3104, 25.4791,
   154         -    25.6479, 25.8166, 25.9853, 26.1541, 26.3228, 26.4916, 26.6603, 26.829,
   155         -    26.9978, 27.1665, 27.3352, 27.504, 27.6727, 27.8414, 28.0102, 28.1789,
   156         -    28.3476, 28.5164, 28.6851, 28.8539, 29.0226, 29.1913, 29.3601, 29.5288,
   157         -    29.6975, 29.8663, 30.035, 30.2037, 30.3725, 30.5412, 30.71, 30.8787,
   158         -    31.0474, 31.2162, 31.3849, 31.5536, 31.7224, 31.8911, 32.0598, 32.2286,
   159         -    32.3973, 32.566, 32.7348, 32.9035, 33.0723, 33.241, 33.4097, 33.5785,
   160         -    33.7472, 33.9159, 34.0847, 34.2534, 34.4221, 34.5909, 34.7596, 34.9284,
   161         -    35.0971, 35.2658, 35.4346, 35.6033, 35.772, 35.9408, 36.1095, 36.2782,
   162         -    36.447, 36.6157, 36.7844, 36.9532, 37.1219, 37.2907, 37.4594, 37.6281,
   163         -    37.7969, 37.9656, 38.1343, 38.3031, 38.4718, 38.6405, 38.8093, 38.978,
   164         -    39.1468, 39.3155, 39.4842, 39.653, 39.8217, 39.9904, 40.1592, 40.3279,
   165         -    40.4966, 40.6654, 40.8341, 41.0028, 41.1716, 41.3403, 41.5091, 41.6778,
   166         -    41.8465, 42.0153, 42.184, 42.3527, 42.5215, 42.6902, 42.8589, 43.0277,
   167         -};
   168         -
   169         -local double O_331264[256] = {
   170         -    0, 0.331264, 0.662528, 0.993792, 1.32506, 1.65632, 1.98758, 2.31885,
   171         -    2.65011, 2.98138, 3.31264, 3.6439, 3.97517, 4.30643, 4.6377, 4.96896,
   172         -    5.30022, 5.63149, 5.96275, 6.29402, 6.62528, 6.95654, 7.28781, 7.61907,
   173         -    7.95034, 8.2816, 8.61286, 8.94413, 9.27539, 9.60666, 9.93792, 10.2692,
   174         -    10.6004, 10.9317, 11.263, 11.5942, 11.9255, 12.2568, 12.588, 12.9193,
   175         -    13.2506, 13.5818, 13.9131, 14.2444, 14.5756, 14.9069, 15.2381, 15.5694,
   176         -    15.9007, 16.2319, 16.5632, 16.8945, 17.2257, 17.557, 17.8883, 18.2195,
   177         -    18.5508, 18.882, 19.2133, 19.5446, 19.8758, 20.2071, 20.5384, 20.8696,
   178         -    21.2009, 21.5322, 21.8634, 22.1947, 22.526, 22.8572, 23.1885, 23.5197,
   179         -    23.851, 24.1823, 24.5135, 24.8448, 25.1761, 25.5073, 25.8386, 26.1699,
   180         -    26.5011, 26.8324, 27.1636, 27.4949, 27.8262, 28.1574, 28.4887, 28.82,
   181         -    29.1512, 29.4825, 29.8138, 30.145, 30.4763, 30.8076, 31.1388, 31.4701,
   182         -    31.8013, 32.1326, 32.4639, 32.7951, 33.1264, 33.4577, 33.7889, 34.1202,
   183         -    34.4515, 34.7827, 35.114, 35.4452, 35.7765, 36.1078, 36.439, 36.7703,
   184         -    37.1016, 37.4328, 37.7641, 38.0954, 38.4266, 38.7579, 39.0892, 39.4204,
   185         -    39.7517, 40.0829, 40.4142, 40.7455, 41.0767, 41.408, 41.7393, 42.0705,
   186         -    42.4018, 42.7331, 43.0643, 43.3956, 43.7268, 44.0581, 44.3894, 44.7206,
   187         -    45.0519, 45.3832, 45.7144, 46.0457, 46.377, 46.7082, 47.0395, 47.3708,
   188         -    47.702, 48.0333, 48.3645, 48.6958, 49.0271, 49.3583, 49.6896, 50.0209,
   189         -    50.3521, 50.6834, 51.0147, 51.3459, 51.6772, 52.0084, 52.3397, 52.671,
   190         -    53.0022, 53.3335, 53.6648, 53.996, 54.3273, 54.6586, 54.9898, 55.3211,
   191         -    55.6524, 55.9836, 56.3149, 56.6461, 56.9774, 57.3087, 57.6399, 57.9712,
   192         -    58.3025, 58.6337, 58.965, 59.2963, 59.6275, 59.9588, 60.29, 60.6213,
   193         -    60.9526, 61.2838, 61.6151, 61.9464, 62.2776, 62.6089, 62.9402, 63.2714,
   194         -    63.6027, 63.934, 64.2652, 64.5965, 64.9277, 65.259, 65.5903, 65.9215,
   195         -    66.2528, 66.5841, 66.9153, 67.2466, 67.5779, 67.9091, 68.2404, 68.5716,
   196         -    68.9029, 69.2342, 69.5654, 69.8967, 70.228, 70.5592, 70.8905, 71.2218,
   197         -    71.553, 71.8843, 72.2156, 72.5468, 72.8781, 73.2093, 73.5406, 73.8719,
   198         -    74.2031, 74.5344, 74.8657, 75.1969, 75.5282, 75.8595, 76.1907, 76.522,
   199         -    76.8532, 77.1845, 77.5158, 77.847, 78.1783, 78.5096, 78.8408, 79.1721,
   200         -    79.5034, 79.8346, 80.1659, 80.4972, 80.8284, 81.1597, 81.4909, 81.8222,
   201         -    82.1535, 82.4847, 82.816, 83.1473, 83.4785, 83.8098, 84.1411, 84.4723,
   202         -};
   203         -
   204         -local double O_500000[256] = {
   205         -    0, 0.5, 1, 1.5, 2, 2.5, 3, 3.5,
   206         -    4, 4.5, 5, 5.5, 6, 6.5, 7, 7.5,
   207         -    8, 8.5, 9, 9.5, 10, 10.5, 11, 11.5,
   208         -    12, 12.5, 13, 13.5, 14, 14.5, 15, 15.5,
   209         -    16, 16.5, 17, 17.5, 18, 18.5, 19, 19.5,
   210         -    20, 20.5, 21, 21.5, 22, 22.5, 23, 23.5,
   211         -    24, 24.5, 25, 25.5, 26, 26.5, 27, 27.5,
   212         -    28, 28.5, 29, 29.5, 30, 30.5, 31, 31.5,
   213         -    32, 32.5, 33, 33.5, 34, 34.5, 35, 35.5,
   214         -    36, 36.5, 37, 37.5, 38, 38.5, 39, 39.5,
   215         -    40, 40.5, 41, 41.5, 42, 42.5, 43, 43.5,
   216         -    44, 44.5, 45, 45.5, 46, 46.5, 47, 47.5,
   217         -    48, 48.5, 49, 49.5, 50, 50.5, 51, 51.5,
   218         -    52, 52.5, 53, 53.5, 54, 54.5, 55, 55.5,
   219         -    56, 56.5, 57, 57.5, 58, 58.5, 59, 59.5,
   220         -    60, 60.5, 61, 61.5, 62, 62.5, 63, 63.5,
   221         -    64, 64.5, 65, 65.5, 66, 66.5, 67, 67.5,
   222         -    68, 68.5, 69, 69.5, 70, 70.5, 71, 71.5,
   223         -    72, 72.5, 73, 73.5, 74, 74.5, 75, 75.5,
   224         -    76, 76.5, 77, 77.5, 78, 78.5, 79, 79.5,
   225         -    80, 80.5, 81, 81.5, 82, 82.5, 83, 83.5,
   226         -    84, 84.5, 85, 85.5, 86, 86.5, 87, 87.5,
   227         -    88, 88.5, 89, 89.5, 90, 90.5, 91, 91.5,
   228         -    92, 92.5, 93, 93.5, 94, 94.5, 95, 95.5,
   229         -    96, 96.5, 97, 97.5, 98, 98.5, 99, 99.5,
   230         -    100, 100.5, 101, 101.5, 102, 102.5, 103, 103.5,
   231         -    104, 104.5, 105, 105.5, 106, 106.5, 107, 107.5,
   232         -    108, 108.5, 109, 109.5, 110, 110.5, 111, 111.5,
   233         -    112, 112.5, 113, 113.5, 114, 114.5, 115, 115.5,
   234         -    116, 116.5, 117, 117.5, 118, 118.5, 119, 119.5,
   235         -    120, 120.5, 121, 121.5, 122, 122.5, 123, 123.5,
   236         -    124, 124.5, 125, 125.5, 126, 126.5, 127, 127.5,
   237         -};
   238         -
   239         -local double O_418688[256] = {
   240         -    0, 0.418688, 0.837376, 1.25606, 1.67475, 2.09344, 2.51213, 2.93082,
   241         -    3.3495, 3.76819, 4.18688, 4.60557, 5.02426, 5.44294, 5.86163, 6.28032,
   242         -    6.69901, 7.1177, 7.53638, 7.95507, 8.37376, 8.79245, 9.21114, 9.62982,
   243         -    10.0485, 10.4672, 10.8859, 11.3046, 11.7233, 12.142, 12.5606, 12.9793,
   244         -    13.398, 13.8167, 14.2354, 14.6541, 15.0728, 15.4915, 15.9101, 16.3288,
   245         -    16.7475, 17.1662, 17.5849, 18.0036, 18.4223, 18.841, 19.2596, 19.6783,
   246         -    20.097, 20.5157, 20.9344, 21.3531, 21.7718, 22.1905, 22.6092, 23.0278,
   247         -    23.4465, 23.8652, 24.2839, 24.7026, 25.1213, 25.54, 25.9587, 26.3773,
   248         -    26.796, 27.2147, 27.6334, 28.0521, 28.4708, 28.8895, 29.3082, 29.7268,
   249         -    30.1455, 30.5642, 30.9829, 31.4016, 31.8203, 32.239, 32.6577, 33.0764,
   250         -    33.495, 33.9137, 34.3324, 34.7511, 35.1698, 35.5885, 36.0072, 36.4259,
   251         -    36.8445, 37.2632, 37.6819, 38.1006, 38.5193, 38.938, 39.3567, 39.7754,
   252         -    40.194, 40.6127, 41.0314, 41.4501, 41.8688, 42.2875, 42.7062, 43.1249,
   253         -    43.5436, 43.9622, 44.3809, 44.7996, 45.2183, 45.637, 46.0557, 46.4744,
   254         -    46.8931, 47.3117, 47.7304, 48.1491, 48.5678, 48.9865, 49.4052, 49.8239,
   255         -    50.2426, 50.6612, 51.0799, 51.4986, 51.9173, 52.336, 52.7547, 53.1734,
   256         -    53.5921, 54.0108, 54.4294, 54.8481, 55.2668, 55.6855, 56.1042, 56.5229,
   257         -    56.9416, 57.3603, 57.7789, 58.1976, 58.6163, 59.035, 59.4537, 59.8724,
   258         -    60.2911, 60.7098, 61.1284, 61.5471, 61.9658, 62.3845, 62.8032, 63.2219,
   259         -    63.6406, 64.0593, 64.478, 64.8966, 65.3153, 65.734, 66.1527, 66.5714,
   260         -    66.9901, 67.4088, 67.8275, 68.2461, 68.6648, 69.0835, 69.5022, 69.9209,
   261         -    70.3396, 70.7583, 71.177, 71.5956, 72.0143, 72.433, 72.8517, 73.2704,
   262         -    73.6891, 74.1078, 74.5265, 74.9452, 75.3638, 75.7825, 76.2012, 76.6199,
   263         -    77.0386, 77.4573, 77.876, 78.2947, 78.7133, 79.132, 79.5507, 79.9694,
   264         -    80.3881, 80.8068, 81.2255, 81.6442, 82.0628, 82.4815, 82.9002, 83.3189,
   265         -    83.7376, 84.1563, 84.575, 84.9937, 85.4124, 85.831, 86.2497, 86.6684,
   266         -    87.0871, 87.5058, 87.9245, 88.3432, 88.7619, 89.1805, 89.5992, 90.0179,
   267         -    90.4366, 90.8553, 91.274, 91.6927, 92.1114, 92.53, 92.9487, 93.3674,
   268         -    93.7861, 94.2048, 94.6235, 95.0422, 95.4609, 95.8796, 96.2982, 96.7169,
   269         -    97.1356, 97.5543, 97.973, 98.3917, 98.8104, 99.2291, 99.6477, 100.066,
   270         -    100.485, 100.904, 101.322, 101.741, 102.16, 102.579, 102.997, 103.416,
   271         -    103.835, 104.253, 104.672, 105.091, 105.509, 105.928, 106.347, 106.765,
   272         -};
   273         -
   274         -local double O_081312[256] = {
   275         -    0, 0.081312, 0.162624, 0.243936, 0.325248, 0.40656, 0.487872, 0.569184,
   276         -    0.650496, 0.731808, 0.81312, 0.894432, 0.975744, 1.05706, 1.13837, 1.21968,
   277         -    1.30099, 1.3823, 1.46362, 1.54493, 1.62624, 1.70755, 1.78886, 1.87018,
   278         -    1.95149, 2.0328, 2.11411, 2.19542, 2.27674, 2.35805, 2.43936, 2.52067,
   279         -    2.60198, 2.6833, 2.76461, 2.84592, 2.92723, 3.00854, 3.08986, 3.17117,
   280         -    3.25248, 3.33379, 3.4151, 3.49642, 3.57773, 3.65904, 3.74035, 3.82166,
   281         -    3.90298, 3.98429, 4.0656, 4.14691, 4.22822, 4.30954, 4.39085, 4.47216,
   282         -    4.55347, 4.63478, 4.7161, 4.79741, 4.87872, 4.96003, 5.04134, 5.12266,
   283         -    5.20397, 5.28528, 5.36659, 5.4479, 5.52922, 5.61053, 5.69184, 5.77315,
   284         -    5.85446, 5.93578, 6.01709, 6.0984, 6.17971, 6.26102, 6.34234, 6.42365,
   285         -    6.50496, 6.58627, 6.66758, 6.7489, 6.83021, 6.91152, 6.99283, 7.07414,
   286         -    7.15546, 7.23677, 7.31808, 7.39939, 7.4807, 7.56202, 7.64333, 7.72464,
   287         -    7.80595, 7.88726, 7.96858, 8.04989, 8.1312, 8.21251, 8.29382, 8.37514,
   288         -    8.45645, 8.53776, 8.61907, 8.70038, 8.7817, 8.86301, 8.94432, 9.02563,
   289         -    9.10694, 9.18826, 9.26957, 9.35088, 9.43219, 9.5135, 9.59482, 9.67613,
   290         -    9.75744, 9.83875, 9.92006, 10.0014, 10.0827, 10.164, 10.2453, 10.3266,
   291         -    10.4079, 10.4892, 10.5706, 10.6519, 10.7332, 10.8145, 10.8958, 10.9771,
   292         -    11.0584, 11.1397, 11.2211, 11.3024, 11.3837, 11.465, 11.5463, 11.6276,
   293         -    11.7089, 11.7902, 11.8716, 11.9529, 12.0342, 12.1155, 12.1968, 12.2781,
   294         -    12.3594, 12.4407, 12.522, 12.6034, 12.6847, 12.766, 12.8473, 12.9286,
   295         -    13.0099, 13.0912, 13.1725, 13.2539, 13.3352, 13.4165, 13.4978, 13.5791,
   296         -    13.6604, 13.7417, 13.823, 13.9044, 13.9857, 14.067, 14.1483, 14.2296,
   297         -    14.3109, 14.3922, 14.4735, 14.5548, 14.6362, 14.7175, 14.7988, 14.8801,
   298         -    14.9614, 15.0427, 15.124, 15.2053, 15.2867, 15.368, 15.4493, 15.5306,
   299         -    15.6119, 15.6932, 15.7745, 15.8558, 15.9372, 16.0185, 16.0998, 16.1811,
   300         -    16.2624, 16.3437, 16.425, 16.5063, 16.5876, 16.669, 16.7503, 16.8316,
   301         -    16.9129, 16.9942, 17.0755, 17.1568, 17.2381, 17.3195, 17.4008, 17.4821,
   302         -    17.5634, 17.6447, 17.726, 17.8073, 17.8886, 17.97, 18.0513, 18.1326,
   303         -    18.2139, 18.2952, 18.3765, 18.4578, 18.5391, 18.6204, 18.7018, 18.7831,
   304         -    18.8644, 18.9457, 19.027, 19.1083, 19.1896, 19.2709, 19.3523, 19.4336,
   305         -    19.5149, 19.5962, 19.6775, 19.7588, 19.8401, 19.9214, 20.0028, 20.0841,
   306         -    20.1654, 20.2467, 20.328, 20.4093, 20.4906, 20.5719, 20.6532, 20.7346,
   307         -};
   308         -
   309         -void
   310         -convert_RGB_to_YCbCr (coeff_t ** R, coeff_t ** G, coeff_t ** B,
   311         -		      coeff_t ** Y, coeff_t ** Cb, coeff_t ** Cr,
   312         -		      int width, int height)
   313         -{
   314         -    int i, j;
   315         -
   316         -    assert (width > 0);
   317         -    assert (height > 0);
   318         -
   319         -    /* Perhaps one should optimize this code with integer-valued
   320         -     * look-up tables. On the other hand, the rest of the program
   321         -     * (e.g. wavelet transform, resampling etc.) still using FPU.
   322         -     * Moreover, additional rounding operation (even with proper
   323         -     * rescaling) will involve some marginal image distortion. */
   324         -    for (i = 0; i < height; i++)
   325         -      {
   326         -	  for (j = 0; j < width; j++)
   327         -	    {
   328         -		int r = (int) R[i][j];
   329         -		int g = (int) G[i][j];
   330         -		int b = (int) B[i][j];
   331         -
   332         -		Y[i][j] = O_299000[r] + O_587000[g] + O_114000[b];
   333         -		Cb[i][j] = -O_168736[r] - O_331264[g] + O_500000[b] + 128.0;
   334         -		Cr[i][j] = O_500000[r] - O_418688[g] - O_081312[b] + 128.0;
   335         -	    }
   336         -      }
   337         -}
   338         -
   339         -void
   340         -convert_YCbCr_to_RGB (coeff_t ** Y, coeff_t ** Cb, coeff_t ** Cr,
   341         -		      coeff_t ** R, coeff_t ** G, coeff_t ** B,
   342         -		      int width, int height)
   343         -{
   344         -    int i, j;
   345         -
   346         -    assert (width > 0);
   347         -    assert (height > 0);
   348         -
   349         -    /* Due to rounding and quantization errors output RGB values
   350         -     * may not be enclosed within [0..255] interval. To solve
   351         -     * this problem the values are clipped after transformation. */
   352         -    for (i = 0; i < height; i++)
   353         -      {
   354         -	  for (j = 0; j < width; j++)
   355         -	    {
   356         -		R[i][j] = CLIP (Y[i][j] + (Cr[i][j] - 128.0) * 1.402);
   357         -		G[i][j] =
   358         -		    CLIP (Y[i][j] - (Cb[i][j] - 128.0) * 0.34413 -
   359         -			  (Cr[i][j] - 128.0) * 0.71414);
   360         -		B[i][j] = CLIP (Y[i][j] + (Cb[i][j] - 128.0) * 1.772);
   361         -	    }
   362         -      }
   363         -}
   364         -
   365         -void
   366         -clip_channel (coeff_t ** channel, int width, int height)
   367         -{
   368         -    int i, j;
   369         -
   370         -    assert (width > 0);
   371         -    assert (height > 0);
   372         -
   373         -    for (i = 0; i < height; i++)
   374         -      {
   375         -	  for (j = 0; j < width; j++)
   376         -	    {
   377         -		channel[i][j] = CLIP (channel[i][j]);
   378         -	    }
   379         -      }
   380         -}

Deleted epsilon/color.h.

     1         -/*
     2         - * $Id: color.h,v 1.16 2008/03/29 21:37:06 simakov Exp $
     3         - *
     4         - * EPSILON - wavelet image compression library.
     5         - * Copyright (C) 2006-2007 Alexander Simakov, <xander@entropyware.info>
     6         - *
     7         - * This program is free software; you can redistribute it and/or modify
     8         - * it under the terms of the GNU General Public License as published by
     9         - * the Free Software Foundation; either version 2 of the License, or
    10         - * (at your option) any later version.
    11         - *
    12         - * This program is distributed in the hope that it will be useful,
    13         - * but WITHOUT ANY WARRANTY; without even the implied warranty of
    14         - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    15         - * GNU General Public License for more details.
    16         - *
    17         - * You should have received a copy of the GNU General Public License
    18         - * along with this program; if not, write to the Free Software
    19         - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
    20         - *
    21         - * http://epsilon-project.sourceforge.net
    22         - */
    23         -
    24         -/** \file
    25         - *
    26         - *  \brief Color space convertion
    27         - *
    28         - *  This file contains routines for color space conversion.
    29         - *
    30         - *  \section References
    31         - *
    32         - *  International Telecommunications Union, ITU-R BT.601 */
    33         -
    34         -#ifndef __COLOR_H__
    35         -#define __COLOR_H__
    36         -
    37         -#ifdef __cplusplus
    38         -extern "C"
    39         -{
    40         -#endif
    41         -
    42         -/** \addtogroup color Color space conversion */
    43         -/*@{*/
    44         -
    45         -#include <common.h>
    46         -
    47         -/** Round value to the nearest integer */
    48         -#define ROUND(_x)               ((_x) < 0 ? (int) ((_x) - 0.5) : (int) ((_x) + 0.5))
    49         -/** Enclose value in the [0..255] interval */
    50         -#define CLIP(_x)                ((_x) < 0 ? 0 : ((_x) > 255 ? 255 : ROUND((_x))))
    51         -
    52         -/** RGB to YCbCr conversion
    53         - *
    54         - *  This function converts image from RGB to YCbCr color space.
    55         - *
    56         - *  \param R Red channel
    57         - *  \param G Green channel
    58         - *  \param B Blue channel
    59         - *  \param Y Luma channel
    60         - *  \param Cb Chroma-blue channel
    61         - *  \param Cr Chroma-red channel
    62         - *  \param width Image width
    63         - *  \param height Image height
    64         - *
    65         - *  \return \c VOID */
    66         -    void convert_RGB_to_YCbCr (coeff_t ** R, coeff_t ** G, coeff_t ** B,
    67         -			       coeff_t ** Y, coeff_t ** Cb, coeff_t ** Cr,
    68         -			       int width, int height);
    69         -
    70         -/** YCbCr to RGB conversion
    71         - *
    72         - *  This function converts image from YCbCr to RGB color space.
    73         - *
    74         - *  \param Y Luma channel
    75         - *  \param Cb Chroma-blue channel
    76         - *  \param Cr Chroma-red channel
    77         - *  \param R Red channel
    78         - *  \param G Green channel
    79         - *  \param B Blue channel
    80         - *  \param width Image width
    81         - *  \param height Image height
    82         - *
    83         - *  \return \c VOID
    84         - *
    85         - *  \note On return, all values are enclosed within [0..255] interval. */
    86         -    void convert_YCbCr_to_RGB (coeff_t ** Y, coeff_t ** Cb, coeff_t ** Cr,
    87         -			       coeff_t ** R, coeff_t ** G, coeff_t ** B,
    88         -			       int width, int height);
    89         -
    90         -/** Channel clipping
    91         - *
    92         - *  This function encloses (clips) each \a channel value within [0..255] interval
    93         - *  with appropriative rounding.
    94         - *
    95         - *  \param channel Channel to clip
    96         - *  \param width Image width
    97         - *  \param height Image height
    98         - *
    99         - *  \return \c VOID */
   100         -    void clip_channel (coeff_t ** channel, int width, int height);
   101         -
   102         -/*@}*/
   103         -
   104         -#ifdef __cplusplus
   105         -}
   106         -#endif
   107         -
   108         -#endif				/* __COLOR_H__ */

Deleted epsilon/common.c.

     1         -/*
     2         - * $Id: common.c,v 1.13 2008/03/25 19:31:45 simakov Exp $
     3         - *
     4         - * EPSILON - wavelet image compression library.
     5         - * Copyright (C) 2006-2007 Alexander Simakov, <xander@entropyware.info>
     6         - *
     7         - * This program is free software; you can redistribute it and/or modify
     8         - * it under the terms of the GNU General Public License as published by
     9         - * the Free Software Foundation; either version 2 of the License, or
    10         - * (at your option) any later version.
    11         - *
    12         - * This program is distributed in the hope that it will be useful,
    13         - * but WITHOUT ANY WARRANTY; without even the implied warranty of
    14         - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    15         - * GNU General Public License for more details.
    16         - *
    17         - * You should have received a copy of the GNU General Public License
    18         - * along with this program; if not, write to the Free Software
    19         - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
    20         - *
    21         - * http://epsilon-project.sourceforge.net
    22         - */
    23         -
    24         -#include <common.h>
    25         -
    26         -int
    27         -number_of_bits (int value)
    28         -{
    29         -    int bits;
    30         -
    31         -    bits = NUMBER_OF_BITS (GET_BYTE (value, 3));
    32         -    if (bits)
    33         -	return bits + 24;
    34         -
    35         -    bits = NUMBER_OF_BITS (GET_BYTE (value, 2));
    36         -    if (bits)
    37         -	return bits + 16;
    38         -
    39         -    bits = NUMBER_OF_BITS (GET_BYTE (value, 1));
    40         -    if (bits)
    41         -	return bits + 8;
    42         -
    43         -    bits = NUMBER_OF_BITS (GET_BYTE (value, 0));
    44         -    if (bits)
    45         -	return bits;
    46         -
    47         -    return 0;
    48         -}
    49         -
    50         -int
    51         -is_power_of_two (int value)
    52         -{
    53         -    return (value == (1 << (number_of_bits (value) - 1)));
    54         -}

Deleted epsilon/common.h.

     1         -/*
     2         - * $Id: common.h,v 1.27 2008/03/25 19:31:45 simakov Exp $
     3         - *
     4         - * EPSILON - wavelet image compression library.
     5         - * Copyright (C) 2006-2007 Alexander Simakov, <xander@entropyware.info>
     6         - *
     7         - * This program is free software; you can redistribute it and/or modify
     8         - * it under the terms of the GNU General Public License as published by
     9         - * the Free Software Foundation; either version 2 of the License, or
    10         - * (at your option) any later version.
    11         - *
    12         - * This program is distributed in the hope that it will be useful,
    13         - * but WITHOUT ANY WARRANTY; without even the implied warranty of
    14         - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    15         - * GNU General Public License for more details.
    16         - *
    17         - * You should have received a copy of the GNU General Public License
    18         - * along with this program; if not, write to the Free Software
    19         - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
    20         - *
    21         - * http://epsilon-project.sourceforge.net
    22         - */
    23         -
    24         -/** \file
    25         - *
    26         - *  \brief Useful macro and defines
    27         - *
    28         - *  This file contains useful macro and defines which are
    29         - *  common to all library parts. */
    30         -
    31         -#ifndef __COMMON_H__
    32         -#define __COMMON_H__
    33         -
    34         -#ifdef __cplusplus
    35         -extern "C"
    36         -{
    37         -#endif
    38         -
    39         -/** \addtogroup misc Miscellanea */
    40         -/*@{*/
    41         -
    42         -#ifdef HAVE_CONFIG_H
    43         -# include <config.h>
    44         -#endif
    45         -
    46         -#include <stdlib.h>
    47         -#include <stdio.h>
    48         -#include <assert.h>
    49         -#include <sys/types.h>
    50         -
    51         -/** Maximum value */
    52         -#define MAX(_x, _y)             ((_x) > (_y) ? (_x) : (_y))
    53         -/** Minimum value */
    54         -#define MIN(_x, _y)             ((_x) < (_y) ? (_x) : (_y))
    55         -/** Absolute value */
    56         -#define ABS(_x)                 ((_x) >= 0 ? (_x) : -(_x))
    57         -/** Square root */
    58         -#define SQRT2                   1.414213562373095
    59         -/** Very helpful definition */
    60         -#define local                   static
    61         -
    62         -/** Table to speed-up number_of_bits() calculation */
    63         -    local int number_of_bits_table[256] = {
    64         -	0, 1, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4,
    65         -	5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
    66         -	6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
    67         -	6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
    68         -	7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
    69         -	7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
    70         -	7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
    71         -	7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
    72         -	8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
    73         -	8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
    74         -	8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
    75         -	8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
    76         -	8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
    77         -	8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
    78         -	8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
    79         -	8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
    80         -    };
    81         -
    82         -/** Number of bits in a byte value */
    83         -#define NUMBER_OF_BITS(_x) (number_of_bits_table[(_x)])
    84         -/** Extract one byte from integer */
    85         -#define GET_BYTE(_x, _i) (((unsigned char *) &(_x))[(_i)])
    86         -
    87         -/** Type definition for filter coefficients */
    88         -    typedef double coeff_t;
    89         -
    90         -/** Number of bits in the value
    91         - *
    92         - *  This function computes the number of bits in the \a value
    93         - *  (e.g. number_of_bits(13) = 4).
    94         - *
    95         - *  \param value Target value
    96         - *
    97         - *  \return Number of bits */
    98         -    int number_of_bits (int value);
    99         -
   100         -/** Check whether the \a value is a power of two or not
   101         - *
   102         - *  This function checks whether the \a value is a
   103         - *  power of two or not.
   104         - *
   105         - *  \param value Target value
   106         - *
   107         - *  \return \c 1 if \a value is a power of two and \c 0 otherwise */
   108         -    int is_power_of_two (int value);
   109         -
   110         -/*@}*/
   111         -
   112         -#ifdef __cplusplus
   113         -}
   114         -#endif
   115         -
   116         -#endif /* __COMMON_H__ */

Deleted epsilon/daub97lift.h.

     1         -/*
     2         - * $Id: daub97lift.h,v 1.2 2008/03/29 19:57:31 simakov Exp $
     3         - *
     4         - * EPSILON - wavelet image compression library.
     5         - * Copyright (C) 2006-2007 Alexander Simakov, <xander@entropyware.info>
     6         - *
     7         - * This program is free software; you can redistribute it and/or modify
     8         - * it under the terms of the GNU General Public License as published by
     9         - * the Free Software Foundation; either version 2 of the License, or
    10         - * (at your option) any later version.
    11         - *
    12         - * This program is distributed in the hope that it will be useful,
    13         - * but WITHOUT ANY WARRANTY; without even the implied warranty of
    14         - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    15         - * GNU General Public License for more details.
    16         - *
    17         - * You should have received a copy of the GNU General Public License
    18         - * along with this program; if not, write to the Free Software
    19         - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
    20         - *
    21         - * http://epsilon-project.sourceforge.net
    22         - */
    23         -
    24         -/** \file
    25         - *
    26         - *  \brief Daubechies 9/7 wavelet transform (Lifting)
    27         - *
    28         - *  This file contains lifting implementation of a famous Daubechies 9/7
    29         - *  wavelet transform. Lifting transforms are faster than generic
    30         - *  filter-based counterparts, but they lack uniformity.
    31         - *
    32         - *  \section References
    33         - *
    34         - *  <a href="http://qccpack.sourceforge.net/">QccPack, James E. Fowler</a> */
    35         -
    36         -#ifndef __DAUB97LIFT_H__
    37         -#define __DAUB97LIFT_H__
    38         -
    39         -#ifdef __cplusplus
    40         -extern "C"
    41         -{
    42         -#endif
    43         -
    44         -/** \addtogroup daub97lift Daubechies 9/7 wavelet transform (Lifting) */
    45         -/*@{*/
    46         -
    47         -#ifdef HAVE_CONFIG_H
    48         -# include <config.h>
    49         -#endif
    50         -
    51         -#include <common.h>
    52         -
    53         -/** ALPHA coefficient */
    54         -#define ALPHA     -1.58615986717275
    55         -/** BETA coefficient */
    56         -#define BETA      -0.05297864003258
    57         -/** GAMMA coefficient */
    58         -#define GAMMA      0.88293362717904
    59         -/** DELTA coefficient */
    60         -#define DELTA      0.44350482244527
    61         -/** EPSILON coefficient */
    62         -#define EPSILON    1.14960430535816
    63         -
    64         -/** One dimensional Daubechies 9/7 wavelet decomposition
    65         - *
    66         - *  This function performes one stage of 1D wavelet decomposition
    67         - *  of \a signal_in using Daubechies 9/7 lifting transform. The result is
    68         - *  stored in \a signal_out. On return, the first half of \a signal_out
    69         - *  will be occupied with lowpass coefficients, the second half - with highpass
    70         - *  coefficients.
    71         - *
    72         - *  \param signal_in Input signal
    73         - *  \param signal_out Output signal
    74         - *  \param signal_length Signal length
    75         - *
    76         - *  \return \c VOID
    77         - *
    78         - *  \note \a signal_length should be even. */
    79         -    inline local void daub97lift_analysis_1D_even (coeff_t * signal_in,
    80         -						   coeff_t * signal_out,
    81         -						   int signal_length);
    82         -
    83         -/** One dimensional wavelet reconstruction
    84         - *
    85         - *  This function performes one stage of 1D wavelet reconstruction
    86         - *  of \a signal_in using Daubechies 9/7 lifting transform. The result is
    87         - *  stored in \a signal_out.
    88         - *
    89         - *  \param signal_in Input signal
    90         - *  \param signal_out Output signal
    91         - *  \param signal_length Signal length
    92         - *
    93         - *  \return \c VOID
    94         - *
    95         - *  \note \a signal_length should be even. */
    96         -    inline local void daub97lift_synthesis_1D_even (coeff_t * signal_in,
    97         -						    coeff_t * signal_out,
    98         -						    int signal_length);
    99         -
   100         -/** One dimensional Daubechies 9/7 wavelet decomposition
   101         - *
   102         - *  This function performes one stage of 1D wavelet decomposition
   103         - *  of \a signal_in using Daubechies 9/7 lifting transform. The result is
   104         - *  stored in \a signal_out. On return, the first half of \a signal_out
   105         - *  will be occupied with lowpass coefficients, the second half - with highpass
   106         - *  coefficients.
   107         - *
   108         - *  \param signal_in Input signal
   109         - *  \param signal_out Output signal
   110         - *  \param signal_length Signal length
   111         - *
   112         - *  \return \c VOID
   113         - *
   114         - *  \note \a signal_length should be odd, as a consequence
   115         - *  there will be one extra lowpass coefficient. */
   116         -    inline local void daub97lift_analysis_1D_odd (coeff_t * signal_in,
   117         -						  coeff_t * signal_out,
   118         -						  int signal_length);
   119         -
   120         -/** One dimensional wavelet reconstruction
   121         - *
   122         - *  This function performes one stage of 1D wavelet reconstruction
   123         - *  of \a signal_in using Daubechies 9/7 lifting transform. The result is
   124         - *  stored in \a signal_out.
   125         - *
   126         - *  \param signal_in Input signal
   127         - *  \param signal_out Output signal
   128         - *  \param signal_length Signal length
   129         - *
   130         - *  \return \c VOID
   131         - *
   132         - *  \note \a signal_length should be odd. */
   133         -    inline local void daub97lift_synthesis_1D_odd (coeff_t * signal_in,
   134         -						   coeff_t * signal_out,
   135         -						   int signal_length);
   136         -
   137         -/* Those functions are placed here in order to be inline-ed */
   138         -
   139         -    inline local void daub97lift_analysis_1D_even (coeff_t * signal_in,
   140         -						   coeff_t * signal_out,
   141         -						   int signal_length)
   142         -    {
   143         -	int i;
   144         -
   145         -	for (i = 1; i < signal_length - 2; i += 2)
   146         -	  {
   147         -	      signal_in[i] += ALPHA * (signal_in[i - 1] + signal_in[i + 1]);
   148         -	  }
   149         -
   150         -	signal_in[signal_length - 1] +=
   151         -	    2 * ALPHA * signal_in[signal_length - 2];
   152         -	signal_in[0] += 2 * BETA * signal_in[1];
   153         -
   154         -	for (i = 2; i < signal_length; i += 2)
   155         -	  {
   156         -	      signal_in[i] += BETA * (signal_in[i + 1] + signal_in[i - 1]);
   157         -	  }
   158         -
   159         -	for (i = 1; i < signal_length - 2; i += 2)
   160         -	  {
   161         -	      signal_in[i] += GAMMA * (signal_in[i - 1] + signal_in[i + 1]);
   162         -	  }
   163         -
   164         -	signal_in[signal_length - 1] +=
   165         -	    2 * GAMMA * signal_in[signal_length - 2];
   166         -	signal_in[0] = EPSILON * (signal_in[0] + 2 * DELTA * signal_in[1]);
   167         -
   168         -	for (i = 2; i < signal_length; i += 2)
   169         -	  {
   170         -	      signal_in[i] =
   171         -		  EPSILON * (signal_in[i] +
   172         -			     DELTA * (signal_in[i + 1] + signal_in[i - 1]));
   173         -	  }
   174         -
   175         -	for (i = 1; i < signal_length; i += 2)
   176         -	  {
   177         -	      signal_in[i] /= (-EPSILON);
   178         -	  }
   179         -
   180         -	{
   181         -	    int half = signal_length / 2;
   182         -	    coeff_t *even = signal_out;
   183         -	    coeff_t *odd = signal_out + half;
   184         -
   185         -	    for (i = 0; i < half; i++)
   186         -	      {
   187         -		  even[i] = signal_in[i * 2];
   188         -		  odd[i] = signal_in[i * 2 + 1];
   189         -	      }
   190         -	}
   191         -    }
   192         -
   193         -    inline local void daub97lift_synthesis_1D_even (coeff_t * signal_in,
   194         -						    coeff_t * signal_out,
   195         -						    int signal_length)
   196         -    {
   197         -	int i;
   198         -
   199         -	{
   200         -	    int half = signal_length / 2;
   201         -	    coeff_t *even = signal_in;
   202         -	    coeff_t *odd = signal_in + half;
   203         -
   204         -	    for (i = 0; i < half; i++)
   205         -	      {
   206         -		  signal_out[i * 2] = even[i];
   207         -		  signal_out[i * 2 + 1] = odd[i];
   208         -	      }
   209         -	}
   210         -
   211         -	for (i = 1; i < signal_length; i += 2)
   212         -	  {
   213         -	      signal_out[i] *= (-EPSILON);
   214         -	  }
   215         -
   216         -	signal_out[0] = signal_out[0] / EPSILON - 2 * DELTA * signal_out[1];
   217         -
   218         -	for (i = 2; i < signal_length; i += 2)
   219         -	  {
   220         -	      signal_out[i] =
   221         -		  signal_out[i] / EPSILON - DELTA * (signal_out[i + 1] +
   222         -						     signal_out[i - 1]);
   223         -	  }
   224         -
   225         -	for (i = 1; i < signal_length - 2; i += 2)
   226         -	  {
   227         -	      signal_out[i] -= GAMMA * (signal_out[i - 1] + signal_out[i + 1]);
   228         -	  }
   229         -
   230         -	signal_out[signal_length - 1] -=
   231         -	    2 * GAMMA * signal_out[signal_length - 2];
   232         -	signal_out[0] -= 2 * BETA * signal_out[1];
   233         -
   234         -	for (i = 2; i < signal_length; i += 2)
   235         -	  {
   236         -	      signal_out[i] -= BETA * (signal_out[i + 1] + signal_out[i - 1]);
   237         -	  }
   238         -
   239         -	for (i = 1; i < signal_length - 2; i += 2)
   240         -	  {
   241         -	      signal_out[i] -= ALPHA * (signal_out[i - 1] + signal_out[i + 1]);
   242         -	  }
   243         -
   244         -	signal_out[signal_length - 1] -=
   245         -	    2 * ALPHA * signal_out[signal_length - 2];
   246         -    }
   247         -
   248         -    inline local void daub97lift_analysis_1D_odd (coeff_t * signal_in,
   249         -						  coeff_t * signal_out,
   250         -						  int signal_length)
   251         -    {
   252         -	int i;
   253         -
   254         -	for (i = 1; i < signal_length - 1; i += 2)
   255         -	  {
   256         -	      signal_in[i] += ALPHA * (signal_in[i - 1] + signal_in[i + 1]);
   257         -	  }
   258         -
   259         -	signal_in[0] += 2 * BETA * signal_in[1];
   260         -
   261         -	for (i = 2; i < signal_length - 2; i += 2)
   262         -	  {
   263         -	      signal_in[i] += BETA * (signal_in[i + 1] + signal_in[i - 1]);
   264         -	  }
   265         -
   266         -	signal_in[signal_length - 1] += 2 * BETA * signal_in[signal_length - 2];
   267         -
   268         -	for (i = 1; i < signal_length - 1; i += 2)
   269         -	  {
   270         -	      signal_in[i] += GAMMA * (signal_in[i - 1] + signal_in[i + 1]);
   271         -	  }
   272         -
   273         -	signal_in[0] = EPSILON * (signal_in[0] + 2 * DELTA * signal_in[1]);
   274         -
   275         -	for (i = 2; i < signal_length - 2; i += 2)
   276         -	  {
   277         -	      signal_in[i] =
   278         -		  EPSILON * (signal_in[i] +
   279         -			     DELTA * (signal_in[i + 1] + signal_in[i - 1]));
   280         -	  }
   281         -
   282         -	signal_in[signal_length - 1] = EPSILON * (signal_in[signal_length - 1] +
   283         -						  2 * DELTA *
   284         -						  signal_in[signal_length - 2]);
   285         -
   286         -	for (i = 1; i < signal_length - 1; i += 2)
   287         -	  {
   288         -	      signal_in[i] /= (-EPSILON);
   289         -	  }
   290         -
   291         -	{
   292         -	    int half = signal_length / 2 + 1;
   293         -	    coeff_t *even = signal_out;
   294         -	    coeff_t *odd = signal_out + half;
   295         -
   296         -	    for (i = 0; i < half - 1; i++)
   297         -	      {
   298         -		  even[i] = signal_in[i * 2];
   299         -		  odd[i] = signal_in[i * 2 + 1];
   300         -	      }
   301         -
   302         -	    even[half - 1] = signal_in[signal_length - 1];
   303         -	}
   304         -    }
   305         -
   306         -    inline local void daub97lift_synthesis_1D_odd (coeff_t * signal_in,
   307         -						   coeff_t * signal_out,
   308         -						   int signal_length)
   309         -    {
   310         -	int i;
   311         -
   312         -	{
   313         -	    int half = signal_length / 2 + 1;
   314         -	    coeff_t *even = signal_in;
   315         -	    coeff_t *odd = signal_in + half;
   316         -
   317         -	    for (i = 0; i < half - 1; i++)
   318         -	      {
   319         -		  signal_out[i * 2] = even[i];
   320         -		  signal_out[i * 2 + 1] = odd[i];
   321         -	      }
   322         -
   323         -	    signal_out[signal_length - 1] = even[half - 1];
   324         -	}
   325         -
   326         -	for (i = 1; i < signal_length - 1; i += 2)
   327         -	  {
   328         -	      signal_out[i] *= (-EPSILON);
   329         -	  }
   330         -
   331         -	signal_out[0] = signal_out[0] / EPSILON - 2 * DELTA * signal_out[1];
   332         -
   333         -	for (i = 2; i < signal_length - 2; i += 2)
   334         -	  {
   335         -	      signal_out[i] =
   336         -		  signal_out[i] / EPSILON - DELTA * (signal_out[i + 1] +
   337         -						     signal_out[i - 1]);
   338         -	  }
   339         -
   340         -	signal_out[signal_length - 1] =
   341         -	    signal_out[signal_length - 1] / EPSILON -
   342         -	    2 * DELTA * signal_out[signal_length - 2];
   343         -
   344         -	for (i = 1; i < signal_length - 1; i += 2)
   345         -	  {
   346         -	      signal_out[i] -= GAMMA * (signal_out[i - 1] + signal_out[i + 1]);
   347         -	  }
   348         -
   349         -	signal_out[0] -= 2 * BETA * signal_out[1];
   350         -
   351         -	for (i = 2; i < signal_length - 2; i += 2)
   352         -	  {
   353         -	      signal_out[i] -= BETA * (signal_out[i + 1] + signal_out[i - 1]);
   354         -	  }
   355         -
   356         -	signal_out[signal_length - 1] -=
   357         -	    2 * BETA * signal_out[signal_length - 2];
   358         -
   359         -	for (i = 1; i < signal_length - 1; i += 2)
   360         -	  {
   361         -	      signal_out[i] -= ALPHA * (signal_out[i - 1] + signal_out[i + 1]);
   362         -	  }
   363         -    }
   364         -
   365         -/*@}*/
   366         -
   367         -#ifdef __cplusplus
   368         -}
   369         -#endif
   370         -
   371         -#endif /* __DAUB97LIFT_H__ */

Deleted epsilon/dc_level.c.

     1         -/*
     2         - * $Id: dc_level.c,v 1.9 2007/05/20 13:19:12 simakov Exp $
     3         - *
     4         - * EPSILON - wavelet image compression library.
     5         - * Copyright (C) 2006-2007 Alexander Simakov, <xander@entropyware.info>
     6         - *
     7         - * This program is free software; you can redistribute it and/or modify
     8         - * it under the terms of the GNU General Public License as published by
     9         - * the Free Software Foundation; either version 2 of the License, or
    10         - * (at your option) any later version.
    11         - *
    12         - * This program is distributed in the hope that it will be useful,
    13         - * but WITHOUT ANY WARRANTY; without even the implied warranty of
    14         - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    15         - * GNU General Public License for more details.
    16         - *
    17         - * You should have received a copy of the GNU General Public License
    18         - * along with this program; if not, write to the Free Software
    19         - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
    20         - *
    21         - * http://epsilon-project.sourceforge.net
    22         - */
    23         -
    24         -#include <common.h>
    25         -#include <dc_level.h>
    26         -
    27         -coeff_t
    28         -dc_level_shift (coeff_t ** channel, int width, int height)
    29         -{
    30         -    int i, j;
    31         -    coeff_t average = 0.0;
    32         -
    33         -    for (i = 0; i < height; i++)
    34         -      {
    35         -	  for (j = 0; j < width; j++)
    36         -	    {
    37         -		average += channel[i][j];
    38         -	    }
    39         -      }
    40         -
    41         -    average = average / (width * height);
    42         -
    43         -    for (i = 0; i < height; i++)
    44         -      {
    45         -	  for (j = 0; j < width; j++)
    46         -	    {
    47         -		channel[i][j] -= average;
    48         -	    }
    49         -      }
    50         -
    51         -    return average;
    52         -}
    53         -
    54         -void
    55         -dc_level_unshift (coeff_t ** channel, coeff_t average, int width, int height)
    56         -{
    57         -    int i, j;
    58         -
    59         -    for (i = 0; i < height; i++)
    60         -      {
    61         -	  for (j = 0; j < width; j++)
    62         -	    {
    63         -		channel[i][j] += average;
    64         -	    }
    65         -      }
    66         -}

Deleted epsilon/dc_level.h.

     1         -/*
     2         - * $Id: dc_level.h,v 1.11 2007/05/20 13:19:12 simakov Exp $
     3         - *
     4         - * EPSILON - wavelet image compression library.
     5         - * Copyright (C) 2006-2007 Alexander Simakov, <xander@entropyware.info>
     6         - *
     7         - * This program is free software; you can redistribute it and/or modify
     8         - * it under the terms of the GNU General Public License as published by
     9         - * the Free Software Foundation; either version 2 of the License, or
    10         - * (at your option) any later version.
    11         - *
    12         - * This program is distributed in the hope that it will be useful,
    13         - * but WITHOUT ANY WARRANTY; without even the implied warranty of
    14         - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    15         - * GNU General Public License for more details.
    16         - *
    17         - * You should have received a copy of the GNU General Public License
    18         - * along with this program; if not, write to the Free Software
    19         - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
    20         - *
    21         - * http://epsilon-project.sourceforge.net
    22         - */
    23         -
    24         -/** \file
    25         - *
    26         - *  \brief DC level shift
    27         - *
    28         - *  In order to further improve codec perfomance, input signal must be
    29         - *  centered around zero before applying wavelet transform. One can
    30         - *  accomplish this by subtracting mean value from each image sample.
    31         - *  This preprocessing step results in wavelet coefficient magnitude
    32         - *  decrease, which in turn, reduces number of bits required for
    33         - *  image encoding. After decoding, one have to perform the inverse
    34         - *  operation, i.e. add stored mean value to each reconstructed image sample. */
    35         -
    36         -#ifndef __DC_LEVEL_H__
    37         -#define __DC_LEVEL_H__
    38         -
    39         -#ifdef __cplusplus
    40         -extern "C"
    41         -{
    42         -#endif
    43         -
    44         -/** \addtogroup dc_level DC level shift */
    45         -/*@{*/
    46         -
    47         -#include <common.h>
    48         -
    49         -/** DC level shift
    50         - *
    51         - *  This function subtracts mean value from each image sample.
    52         - *
    53         - *  \param channel Image channel
    54         - *  \param width Image width
    55         - *  \param height Image height
    56         - *
    57         - *  \return Mean value */
    58         -    coeff_t dc_level_shift (coeff_t ** channel, int width, int height);
    59         -
    60         -/** DC level unshift
    61         - *
    62         - *  This function adds stored mean value to each
    63         - *  reconstructed image sample.
    64         - *
    65         - *  \param channel Image channel
    66         - *  \param average Average (mean) value
    67         - *  \param width Image width
    68         - *  \param height Image height
    69         - *
    70         - *  \return \c VOID */
    71         -    void dc_level_unshift (coeff_t ** channel, coeff_t average, int width,
    72         -			   int height);
    73         -
    74         -/*@}*/
    75         -
    76         -#ifdef __cplusplus
    77         -}
    78         -#endif
    79         -
    80         -#endif				/* __DC_LEVEL_H__ */

Deleted epsilon/epsilon.h.

     1         -/*
     2         - * $Id: epsilon.h,v 1.58 2007/07/22 15:45:02 simakov Exp $
     3         - *
     4         - * EPSILON - wavelet image compression library.
     5         - * Copyright (C) 2006-2007 Alexander Simakov, <xander@entropyware.info>
     6         - *
     7         - * This program is free software; you can redistribute it and/or modify
     8         - * it under the terms of the GNU General Public License as published by
     9         - * the Free Software Foundation; either version 2 of the License, or
    10         - * (at your option) any later version.
    11         - *
    12         - * This program is distributed in the hope that it will be useful,
    13         - * but WITHOUT ANY WARRANTY; without even the implied warranty of
    14         - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    15         - * GNU General Public License for more details.
    16         - *
    17         - * You should have received a copy of the GNU General Public License
    18         - * along with this program; if not, write to the Free Software
    19         - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
    20         - *
    21         - * http://epsilon-project.sourceforge.net
    22         - */
    23         -
    24         -/** \file
    25         - *
    26         - *  \brief Top-level library interface
    27         - *
    28         - *  This file contains top-level library interface. This is the
    29         - *  only header that user program needs to include. */
    30         -
    31         -/** \mainpage EPSILON - wavelet image compression library
    32         - *
    33         - *  \section about_sec About
    34         - *
    35         - *  EPSILON is an OpenSource wavelet image compression library.
    36         - *  The library consists of several independed modules and have
    37         - *  very simple and clear layout. Each module is intensively
    38         - *  tested and carefully documented. This manual can be thought
    39         - *  as an exhaustive library API reference. It covers top-level
    40         - *  library interface as well as library internals. Being included
    41         - *  into the source code the information presented here is
    42         - *  always up to date.
    43         - *
    44         - *  \section contact_sec Contact
    45         - *
    46         - *  Feedback, bug-reports and patches are welcome.
    47         - *  Feel free to write: Alexander Simakov,
    48         - *  &lt;<a href="mailto:xander@entropyware.info">xander@entropyware.info</a>&gt;
    49         - *
    50         - *  <a href="http://epsilon-project.sourceforge.net">http://epsilon-project.sourceforge.net</a><br> */
    51         -
    52         -#ifndef __EPSILON_H__
    53         -#define __EPSILON_H__
    54         -
    55         -#ifdef __cplusplus
    56         -extern "C"
    57         -{
    58         -#endif
    59         -
    60         -#include <inttypes.h>
    61         -
    62         -/** \addtogroup toplevel Top-level library interface */
    63         -/*@{*/
    64         -
    65         -/** Block marker
    66         - *
    67         - *  Each block in the stream should be terminated
    68         - *  with one or more \ref EPS_MARKER values. This
    69         - *  technique greatly improves overall system
    70         - *  robustness and leads to quick stream
    71         - *  resynchronization. */
    72         -#define EPS_MARKER              0x00
    73         -
    74         -/** GRAYSCALE block
    75         - *
    76         - *  This type of blocks is intended for storing grayscale
    77         - *  image data. */
    78         -#define EPS_GRAYSCALE_BLOCK     1
    79         -
    80         -/** TRUECOLOR block
    81         - *
    82         - *  This type of blocks is intended for storing truecolor
    83         - *  image data. */
    84         -#define EPS_TRUECOLOR_BLOCK     2
    85         -
    86         -/** Maximal (recomended) block width and height */
    87         -#define EPS_MAX_BLOCK_SIZE       1024
    88         -/** Minimal (recomended) block width and height */
    89         -#define EPS_MIN_BLOCK_SIZE       32
    90         -
    91         -/** Minimal (mandatory) buffer size for GRAYSCALE block */
    92         -#define EPS_MIN_GRAYSCALE_BUF   256
    93         -/** Maximal (recomended) buffer size for GRAYSCALE block */
    94         -#define EPS_MAX_GRAYSCALE_BUF   2 * EPS_MAX_BLOCK_SIZE * EPS_MAX_BLOCK_SIZE
    95         -/** Minimal (mandatory) buffer size for TRUECOLOR block */
    96         -#define EPS_MIN_TRUECOLOR_BUF   256
    97         -/** Maximal (recomended) buffer size for TRUECOLOR block */
    98         -#define EPS_MAX_TRUECOLOR_BUF   6 * EPS_MAX_BLOCK_SIZE * EPS_MAX_BLOCK_SIZE
    99         -
   100         -/** Normal mode
   101         - *
   102         - *  This mode assumes that image is square and height = width = 2 ^ N. */
   103         -#define EPS_MODE_NORMAL         0
   104         -
   105         -/** OTLPF mode
   106         - *
   107         - *  This mode also assumes that image is square, but height = width = (2 ^ N) + 1.
   108         - *  In a few words, OTLPF is some kind of hack to reduce boundary artefacts
   109         - *  when image is broken into several tiles. Due to mathematical constrains
   110         - *  this method can be applied to biorthogonal filters only. */
   111         -#define EPS_MODE_OTLPF          1
   112         -
   113         -/** Data or header CRC is correct */
   114         -#define EPS_GOOD_CRC            0
   115         -/** Data or header CRC is incorrect */
   116         -#define EPS_BAD_CRC             1
   117         -
   118         -/** Extract all filterbank IDs */
   119         -#define EPS_FB_ID               0
   120         -/** Extract all filterbank names */
   121         -#define EPS_FB_NAME             1
   122         -/** Extract all filterbank orthogonality types */
   123         -#define EPS_FB_TYPE             2
   124         -
   125         -/** Default bit-budget percent for the Y channel */
   126         -#define EPS_Y_RT                90
   127         -/** Default bit-budget percent for the Cb channel */
   128         -#define EPS_Cb_RT               5
   129         -/** Default bit-budget percent for the Cr channel */
   130         -#define EPS_Cr_RT               5
   131         -
   132         -/** Minimal value for bit-budget percent value */
   133         -#define EPS_MIN_RT              1
   134         -/** Maximal value for bit-budget percent value */
   135         -#define EPS_MAX_RT              98
   136         -
   137         -/** Perform no image resampling */
   138         -#define EPS_RESAMPLE_444        0
   139         -/** Resample image according to the 4:2:0 scheme */
   140         -#define EPS_RESAMPLE_420        1
   141         -
   142         -/** Successful operation */
   143         -#define EPS_OK                  0
   144         -/** Incorrect function parameter */
   145         -#define EPS_PARAM_ERROR         1
   146         -/** Incorrect data format */
   147         -#define EPS_FORMAT_ERROR        2
   148         -/** Specified filterbank is not supported */
   149         -#define EPS_UNSUPPORTED_FB      3
   150         -
   151         -/** Type definition for CRC32 value */
   152         -    typedef uint32_t crc32_t;
   153         -
   154         -/** GRAYSCALE block header */
   155         -    typedef struct gs_hdr_tag
   156         -    {
   157         -    /** Image width */
   158         -	int W;
   159         -    /** Image height */
   160         -	int H;
   161         -    /** Block width */
   162         -	int w;
   163         -    /** Block height */
   164         -	int h;
   165         -    /** Block X coordinate */
   166         -	int x;
   167         -    /** Block Y coordinate */
   168         -	int y;
   169         -    /** Either \ref EPS_MODE_NORMAL or \ref EPS_MODE_OTLPF */
   170         -	int mode;
   171         -    /** DC value */
   172         -	int dc;
   173         -    /** Filterbank ID (should not be modified or released) */
   174         -	char *fb_id;
   175         -    } gs_hdr;
   176         -
   177         -/** TRUECOLOR block header */
   178         -    typedef struct tc_hdr_tag
   179         -    {
   180         -    /** Image width */
   181         -	int W;
   182         -    /** Image height */
   183         -	int H;
   184         -    /** Block width */
   185         -	int w;
   186         -    /** Block height */
   187         -	int h;
   188         -    /** Block X coordinate */
   189         -	int x;
   190         -    /** Block Y coordinate */
   191         -	int y;
   192         -    /** Either \ref EPS_MODE_NORMAL or \ref EPS_MODE_OTLPF */
   193         -	int mode;
   194         -    /** Either \ref EPS_RESAMPLE_444 or \ref EPS_RESAMPLE_420 */
   195         -	int resample;
   196         -    /** DC value of the Y channel */
   197         -	int dc_Y;
   198         -    /** DC value of the Cb channel */
   199         -	int dc_Cb;
   200         -    /** DC value of the Cr channel */
   201         -	int dc_Cr;
   202         -    /** Initial ratio of the Y channel */
   203         -	int Y_rt;
   204         -    /** Initial ratio of the Cb channel */
   205         -	int Cb_rt;
   206         -    /** Initial ratio of the Cr channel */
   207         -	int Cr_rt;
   208         -    /** Filterbank ID (should not be modified or released) */
   209         -	char *fb_id;
   210         -    } tc_hdr;
   211         -
   212         -/** Generic block header */
   213         -    typedef struct eps_block_header_tag
   214         -    {
   215         -    /** Block type
   216         -     *
   217         -     *  Either \ref EPS_GRAYSCALE_BLOCK or \ref EPS_TRUECOLOR_BLOCK. */
   218         -	int block_type;
   219         -
   220         -    /** Header size in bytes */
   221         -	int hdr_size;
   222         -    /** Data size in bytes */
   223         -	int data_size;
   224         -
   225         -    /** Header CRC */
   226         -	crc32_t chk;
   227         -    /** Data CRC */
   228         -	crc32_t crc;
   229         -
   230         -    /** Header CRC flag
   231         -     *
   232         -     *  Either \ref EPS_GOOD_CRC or \ref EPS_BAD_CRC */
   233         -	int chk_flag;
   234         -    /** Data CRC flag
   235         -     *
   236         -     *  Either \ref EPS_GOOD_CRC or \ref EPS_BAD_CRC */
   237         -	int crc_flag;
   238         -
   239         -	union
   240         -	{
   241         -	/** Special information for GRAYSCALE blocks */
   242         -	    gs_hdr gs;
   243         -	/** Special information for TRUECOLOR blocks */
   244         -	    tc_hdr tc;
   245         -	} uhdr;
   246         -    } eps_block_header;
   247         -
   248         -/** Query available filterbanks
   249         - *
   250         - *  Depending on the \a type parameter this function
   251         - *  composes a \c NULL terminated list of all available
   252         - *  filterbank IDs, names or orthogonality types.
   253         - *
   254         - *  \note The caller should subsequently release allocated list
   255         - *  (using \ref eps_free_fb_info function) when it is no longer
   256         - *  required.
   257         - *
   258         - *  \note The caller should not modify allocated structure.
   259         -
   260         - *  \param type Type of information: either \ref EPS_FB_ID or
   261         - *  \ref EPS_FB_NAME or \ref EPS_FB_TYPE
   262         - *
   263         - *  \return List of strings */
   264         -    char **eps_get_fb_info (int type);
   265         -
   266         -/** Release filterbank information
   267         - *
   268         - *  This function releases filterbank infomation,
   269         - *  allocated by the \ref eps_get_fb_info function.
   270         - *
   271         - *  \param info List of strings
   272         - *
   273         - *  \return \c VOID */
   274         -    void eps_free_fb_info (char **info);
   275         -
   276         -/** Memory allocation
   277         - *
   278         - *  This function allocates one-dimensional array of desired size.
   279         - *
   280         - *  \param size Size in bytes
   281         - *
   282         - *  \return Array pointer
   283         - *
   284         - *  \warning This function halts the program if all virtual memory
   285         - *  is exhausted. */
   286         -    void **eps_xmalloc (int size);
   287         -
   288         -/** 2D-malloc
   289         - *
   290         - *  This function allocates two-dimensional array of desired size.
   291         - *
   292         - *  \param width Array width
   293         - *  \param height Array height
   294         - *  \param size Element size
   295         - *
   296         - *  \return Array pointer
   297         - *
   298         - *  \warning This function halts the program if all virtual memory
   299         - *  is exhausted. */
   300         -    void **eps_malloc_2D (int width, int height, int size);
   301         -
   302         -/** 2D-free
   303         - *
   304         - *  This function releases two-dimensional array allocated by \ref eps_malloc_2D.
   305         - *
   306         - *  \param ptr Array pointer
   307         - *  \param width Array width
   308         - *  \param height Array height
   309         - *
   310         - *  \return \c VOID */
   311         -    void eps_free_2D (void **ptr, int width, int height);
   312         -
   313         -/** Read block header
   314         - *
   315         - *  This function performes a broad range of tasks:
   316         - *
   317         - *  <ul>
   318         - *  <li>Read and parse block header</li>
   319         - *  <li>Check header consistency</li>
   320         - *  <li>Check header and data CRC</li>
   321         - *  <li>Fill special \ref eps_block_header structure with
   322         - *  gathered information (it is worthwhile to mention that
   323         - *  all decoding functions in the library rely on this
   324         - *  structure)</li>
   325         - *  </ul>
   326         - *
   327         - *  The \ref eps_block_header structure consists of two parts:
   328         - *  general part and special part. The first one holds information
   329         - *  that is common for all block types. The second one holds
   330         - *  information that is specific for a particular block type.
   331         - *
   332         - *  \note The data buffer \a buf should hold \b whole block
   333         - *  without markers.
   334         - *
   335         - *  \param buf Data buffer
   336         - *  \param buf_size Buffer size
   337         - *  \param hdr Block header
   338         - *
   339         - *  \return The function returns either \ref EPS_OK (the header
   340         - *  is well-formed, the \a hdr structure is filled appropriately)
   341         - *  or \ref EPS_PARAM_ERROR (your should not get this error
   342         - *  unless you pass a \c NULL pointer, negative buffer size or
   343         - *  something like that) or \ref EPS_FORMAT_ERROR (the header is
   344         - *  malformed, block should be ignored). */
   345         -    int eps_read_block_header (unsigned char *buf, int buf_size,
   346         -			       eps_block_header * hdr);
   347         -
   348         -/** Encode a GRAYSCALE block
   349         - *
   350         - *  This function encodes a signle grayscale image \a block of
   351         - *  size \a w by \a h pixels as block of type \ref EPS_GRAYSCALE_BLOCK.
   352         - *  It is assumed that the \a block is taken from the image of size
   353         - *  \a W by \a H pixels at position (\a x, \a y). All these parameters
   354         - *  should be consistent. The encoded data is stored in the \a buf
   355         - *  of size \a buf_size.
   356         - *
   357         - *  \note The most surprising thing here is that you can choose almost
   358         - *  any (see note below) \a buf_size you wish! Thus you can precisely
   359         - *  control encoding bit-rate. This technique is called embedded coding.
   360         - *  In a few words, any encoded prefix can be used to decode a whole
   361         - *  image. So, you can safely truncate stream at any point.
   362         - *
   363         - *  \note The caller should allocate at least \ref EPS_MIN_GRAYSCALE_BUF
   364         - *  bytes for the \a buf.
   365         - *
   366         - *  \note On successful return, the value pointed by the \a buf_size
   367         - *  will be overwritten with a real amount of bytes used in the
   368         - *  \a buf (it will be less then or equal to the original \a buf_size
   369         - *  value).
   370         - *
   371         - *  \note Depending on the \a mode parameter maximal \a block
   372         - *  width or height is either \ref EPS_MAX_BLOCK_SIZE (if \a mode =
   373         - *  \ref EPS_MODE_NORMAL) or \ref EPS_MAX_BLOCK_SIZE + 1
   374         - *  (if \a mode = \ref EPS_MODE_OTLPF).
   375         - *
   376         - *  \note There is no restrictions on the image size itself.
   377         - *
   378         - *  \note The caller should select a value for the \a fb_id
   379         - *  parameter from the list generated by the \ref eps_get_fb_info
   380         - *  function.
   381         - *
   382         - *  \note The caller should not use orthogonal filterbanks
   383         - *  with \a mode = \ref EPS_MODE_OTLPF. Orthogonality type
   384         - *  can be queried with the \ref eps_get_fb_info function.
   385         - *
   386         - *  \param block Image block
   387         - *  \param W Image width
   388         - *  \param H Image height
   389         - *  \param w Block width
   390         - *  \param h Block height
   391         - *  \param x Block X coordinate
   392         - *  \param y Block Y coordinate
   393         - *  \param buf Buffer
   394         - *  \param buf_size Buffer size
   395         - *  \param fb_id Filterbank ID
   396         - *  \param mode Either \ref EPS_MODE_NORMAL or \ref EPS_MODE_OTLPF
   397         - *
   398         - *  \return The function returns either \ref EPS_OK (the block is
   399         - *  successfully encoded), or \ref EPS_PARAM_ERROR (one or more
   400         - *  parameters are incorrect) or \ref EPS_UNSUPPORTED_FB (filterbank with
   401         - *  specified \a fb_id not found). */
   402         -    int eps_encode_grayscale_block (unsigned char **block, int W, int H, int w,
   403         -				    int h, int x, int y, unsigned char *buf,
   404         -				    int *buf_size, char *fb_id, int mode);
   405         -
   406         -/** Decode a GRAYSCALE block
   407         - *
   408         - *  This function decodes a GRAYSCALE image \a block from
   409         - *  the \a buf. Block and image dimensions as well as other
   410         - *  necessary information is taken from the \a hdr structure
   411         - *  filled by the \ref eps_read_block_header function
   412         - *  beforehand.
   413         - *
   414         - *  \note The caller should not invoke this function if the \a buf
   415         - *  contains no data, i.e. \ref eps_block_header::data_size = 0.
   416         - *
   417         - *  \note The caller should allocate an image \a block
   418         - *  beforehand. Block dimensions as well as other information
   419         - *  is available in the \a hdr structure.
   420         - *
   421         - *  \param block Image block
   422         - *  \param buf Buffer
   423         - *  \param hdr Block header
   424         - *
   425         - *  \return The function returns either \ref EPS_OK (the block is
   426         - *  successfully decoded), or \ref EPS_PARAM_ERROR (one or more
   427         - *  parameters are incorrect) or \ref EPS_UNSUPPORTED_FB (filterbank
   428         - *  used by encoder not found). */
   429         -    int eps_decode_grayscale_block (unsigned char **block, unsigned char *buf,
   430         -				    eps_block_header * hdr);
   431         -
   432         -/** Encode a TRUECOLOR block
   433         - *
   434         - *  This function encodes a generic RGB truecolor image block.
   435         - *  The original RGB data is arranged in three arrays: \a block_R,
   436         - *  \a block_G and \a block_B respectively. All components should
   437         - *  have equal dimensions: \a w by \a h pixels. It is assumed that
   438         - *  the block is taken from the image of size \a W by \a H pixels
   439         - *  at position (\a x, \a y). All these parameters should be
   440         - *  consistent. The encoded data is stored in the \a buf of size
   441         - *  \a buf_size.
   442         - *
   443         - *  \note The most surprising thing here is that you can choose almost
   444         - *  any (see note below) \a buf_size you wish! Thus you can precisely
   445         - *  control encoding bit-rate. This technique is called embedded coding.
   446         - *  In a few words, any encoded prefix can be used to decode a whole
   447         - *  image. So, you can safely truncate stream at any point.
   448         - *
   449         - *  \note The caller should allocate at least \ref EPS_MIN_TRUECOLOR_BUF
   450         - *  bytes for the \a buf.
   451         - *
   452         - *  \note The overall bit-budget available for the encoder is
   453         - *  \a buf_size bytes. The caller should divide it between
   454         - *  three channels (Y, Cb, Cr) using the following parameters:
   455         - *  \a Y_rt, \a Cb_rt and \a Cr_rt. The function will report an
   456         - *  error unless  \a Y_rt + \a Cb_rt + \a Cr_rt equals to 100%.
   457         - *  If no matter you can use default values: \ref EPS_Y_RT,
   458         - *  \ref EPS_Cb_RT and \ref EPS_Cr_RT.
   459         - *
   460         - *  \note On successful return, the value pointed by the \a buf_size
   461         - *  will be overwritten with a real amount of bytes used in the
   462         - *  \a buf (it will be less then or equal to the original \a buf_size
   463         - *  value).
   464         - *
   465         - *  \note Depending on the \a mode parameter maximal block
   466         - *  width or height is either \ref EPS_MAX_BLOCK_SIZE (if \a mode =
   467         - *  \ref EPS_MODE_NORMAL) or \ref EPS_MAX_BLOCK_SIZE + 1
   468         - *  (if \a mode = \ref EPS_MODE_OTLPF).
   469         - *
   470         - *  \note There is no restrictions on the image size itself.
   471         - *
   472         - *  \note The caller should select a value for the \a fb_id
   473         - *  parameter from the list generated by the \ref eps_get_fb_info
   474         - *  function.
   475         - *
   476         - *  \note The caller should not use orthogonal filterbanks
   477         - *  with \a mode = \ref EPS_MODE_OTLPF. Orthogonality type
   478         - *  can be queried with the \ref eps_get_fb_info function.
   479         - *
   480         - *  \param block_R Red component
   481         - *  \param block_G Green component
   482         - *  \param block_B Blue component
   483         - *  \param W Image width
   484         - *  \param H Image height
   485         - *  \param w Block width
   486         - *  \param h Block height
   487         - *  \param x Block X coordinate
   488         - *  \param y Block Y coordinate
   489         - *  \param resample Resampling scheme: either \ref EPS_RESAMPLE_444 or \ref EPS_RESAMPLE_420
   490         - *  \param buf Buffer
   491         - *  \param buf_size Buffer size
   492         - *  \param Y_rt Bit-budget percent for the Y channel
   493         - *  \param Cb_rt Bit-budget percent for the Cb channel
   494         - *  \param Cr_rt Bit-budget percent for the Cr channel
   495         - *  \param fb_id Filterbank ID
   496         - *  \param mode Either \ref EPS_MODE_NORMAL or \ref EPS_MODE_OTLPF
   497         - *
   498         - *  \return The function returns either \ref EPS_OK (the block is
   499         - *  successfully encoded), or \ref EPS_PARAM_ERROR (one or more
   500         - *  parameters are incorrect) or \ref EPS_UNSUPPORTED_FB (filterbank
   501         - *  with specified \a fb_id not found). */
   502         -    int eps_encode_truecolor_block (unsigned char **block_R,
   503         -				    unsigned char **block_G,
   504         -				    unsigned char **block_B,
   505         -				    int W, int H, int w, int h,
   506         -				    int x, int y, int resample,
   507         -				    unsigned char *buf, int *buf_size,
   508         -				    int Y_rt, int Cb_rt, int Cr_rt,
   509         -				    char *fb_id, int mode);
   510         -
   511         -/** Decode a TRUECOLOR block
   512         - *
   513         - *  This function decodes a TRUECOLOR image block from
   514         - *  the \a buf. The resulted RGB data will be stored in the
   515         - *  \a block_R, \a block_G, and \a block_B arrays
   516         - *  respectively. Block and image dimensions as well as
   517         - *  other necessary information is taken from the \a hdr
   518         - *  structure filled by the \ref eps_read_block_header
   519         - *  function beforehand.
   520         - *
   521         - *  \note The caller should not invoke this function if the \a buf
   522         - *  contains no data, i.e. \ref eps_block_header::data_size = 0.
   523         - *
   524         - *  \note The caller should allocate \a block_R, \a block_G,
   525         - *  and \a block_B arrays beforehand. Block dimensions as well
   526         - *  as other information is available in the \a hdr structure.
   527         - *
   528         - *  \param block_R Red component
   529         - *  \param block_G Green component
   530         - *  \param block_B Blue component
   531         - *  \param buf Buffer
   532         - *  \param hdr Block header
   533         - *
   534         - *  \return The function returns either \ref EPS_OK (the block is
   535         - *  successfully decoded), or \ref EPS_PARAM_ERROR (one or more
   536         - *  parameters are incorrect) or \ref EPS_UNSUPPORTED_FB (filterbank
   537         - *  used by encoder not found) or \ref EPS_FORMAT_ERROR
   538         - *  (unsupported data format). */
   539         -    int eps_decode_truecolor_block (unsigned char **block_R,
   540         -				    unsigned char **block_G,
   541         -				    unsigned char **block_B,
   542         -				    unsigned char *buf, eps_block_header * hdr);
   543         -
   544         -/** Truncate block
   545         - *
   546         - *  This function truncates already encoded GRAYSCALE
   547         - *  or TRUECOLOR block. Due to embedded encoding
   548         - *  truncation is equivalent to block re-compression.
   549         - *
   550         - *  \param buf_in Input buffer
   551         - *  \param buf_out Output buffer
   552         - *  \param hdr Block header
   553         - *  \param truncate_size Desired truncated block size
   554         - *
   555         - *  \note On successful return, the value pointed by the
   556         - *  \a truncate_size parameter will be overwritten with a
   557         - *  real amount of bytes used in the \a buf_out (it will
   558         - *  be less then or equal to the original \a truncate_size value).
   559         - *
   560         - *  \note Minimal value for the \a truncate_size parameter can be
   561         - *  calculated as MAX(\ref EPS_MIN_GRAYSCALE_BUF, \ref EPS_MIN_TRUECOLOR_BUF).
   562         - *
   563         - *  \return The function returns either \ref EPS_OK (the block is
   564         - *  successfully truncated), or \ref EPS_PARAM_ERROR (one or more
   565         - *  parameters are incorrect). */
   566         -    int eps_truncate_block (unsigned char *buf_in, unsigned char *buf_out,
   567         -			    eps_block_header * hdr, int *truncate_size);
   568         -
   569         -/*@}*/
   570         -
   571         -#ifdef __cplusplus
   572         -}
   573         -#endif
   574         -
   575         -#endif				/* __EPSILON_H__ */

Deleted epsilon/filter.c.

     1         -/*
     2         - * $Id: filter.c,v 1.18 2008/03/30 07:38:53 simakov Exp $
     3         - *
     4         - * EPSILON - wavelet image compression library.
     5         - * Copyright (C) 2006-2007 Alexander Simakov, <xander@entropyware.info>
     6         - *
     7         - * This program is free software; you can redistribute it and/or modify
     8         - * it under the terms of the GNU General Public License as published by
     9         - * the Free Software Foundation; either version 2 of the License, or
    10         - * (at your option) any later version.
    11         - *
    12         - * This program is distributed in the hope that it will be useful,
    13         - * but WITHOUT ANY WARRANTY; without even the implied warranty of
    14         - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    15         - * GNU General Public License for more details.
    16         - *
    17         - * You should have received a copy of the GNU General Public License
    18         - * along with this program; if not, write to the Free Software
    19         - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
    20         - *
    21         - * http://epsilon-project.sourceforge.net
    22         - */
    23         -
    24         -#include <common.h>
    25         -#include <filter.h>
    26         -#include <filterbank.h>
    27         -#include <daub97lift.h>
    28         -#include <mem_alloc.h>
    29         -#include <string.h>
    30         -
    31         -inline local int
    32         -periodic_extension (int index, int length)
    33         -{
    34         -    if (index >= 0)
    35         -      {
    36         -	  if (index < length)
    37         -	    {
    38         -		return index;
    39         -	    }
    40         -	  else
    41         -	    {
    42         -		return (index % length);
    43         -	    }
    44         -      }
    45         -    else
    46         -      {
    47         -	  return (length - 1 - (ABS (index) - 1) % length);
    48         -      }
    49         -}
    50         -
    51         -inline local int
    52         -symmetric_W_extension (int index, int length)
    53         -{
    54         -    if ((index >= 0) && (index < length))
    55         -      {
    56         -	  return index;
    57         -      }
    58         -
    59         -    if (length == 1)
    60         -      {
    61         -	  return 0;
    62         -      }
    63         -
    64         -    index = ABS (index) % (2 * length - 2);
    65         -
    66         -    if (index >= length)
    67         -      {
    68         -	  index = 2 * length - 2 - index;
    69         -      }
    70         -
    71         -    return index;
    72         -}
    73         -
    74         -inline local int
    75         -symmetric_H_extension (int index, int length)
    76         -{
    77         -    if ((index >= 0) && (index < length))
    78         -      {
    79         -	  return index;
    80         -      }
    81         -
    82         -    if (length == 1)
    83         -      {
    84         -	  return 0;
    85         -      }
    86         -
    87         -    index = (ABS (index) - (index < 0)) % (2 * length);
    88         -
    89         -    if (index >= length)
    90         -      {
    91         -	  index = 2 * length - index - 1;
    92         -      }
    93         -
    94         -    return index;
    95         -}
    96         -
    97         -inline local void
    98         -downsample_signal (coeff_t * input_signal, coeff_t * output_signal,
    99         -		   int input_length, int output_length, int phase)
   100         -{
   101         -    int i, j;
   102         -
   103         -    for (i = phase, j = 0; i < input_length; i += 2, j++)
   104         -      {
   105         -	  output_signal[j] = input_signal[i];
   106         -      }
   107         -}
   108         -
   109         -inline local void
   110         -upsample_signal (coeff_t * input_signal, coeff_t * output_signal,
   111         -		 int input_length, int output_length, int phase)
   112         -{
   113         -    int i, j, k;
   114         -
   115         -    for (i = 0, j = phase; i < input_length; i++, j += 2)
   116         -      {
   117         -	  output_signal[j] = input_signal[i];
   118         -      }
   119         -
   120         -    for (k = phase ^ 1; k < output_length; k += 2)
   121         -      {
   122         -	  output_signal[k] = 0;
   123         -      }
   124         -}
   125         -
   126         -inline local void
   127         -filter_periodic (coeff_t * input_signal, coeff_t * output_signal,
   128         -		 int signal_length, filter_t * filter)
   129         -{
   130         -    int i, j, k;
   131         -
   132         -    switch (filter->causality)
   133         -      {
   134         -      case CAUSAL:
   135         -	  {
   136         -	      for (i = 0; i < signal_length; i += 1)
   137         -		{
   138         -		    output_signal[i] = 0;
   139         -		    for (j = 0; j < filter->length; j++)
   140         -		      {
   141         -			  k = periodic_extension (i - j, signal_length);
   142         -			  output_signal[i] +=
   143         -			      input_signal[k] * filter->coeffs[j];
   144         -		      }
   145         -		}
   146         -
   147         -	      break;
   148         -	  }
   149         -      case ANTICAUSAL:
   150         -	  {
   151         -	      for (i = 0; i < signal_length; i += 2)
   152         -		{
   153         -		    output_signal[i] = 0;
   154         -		    for (j = 0; j < filter->length; j++)
   155         -		      {
   156         -			  k = periodic_extension (i + j, signal_length);
   157         -			  output_signal[i] +=
   158         -			      input_signal[k] * filter->coeffs[filter->length -
   159         -							       j - 1];
   160         -		      }
   161         -		}
   162         -
   163         -	      break;
   164         -	  }
   165         -      default:
   166         -	  {
   167         -	      assert (0);
   168         -	      break;
   169         -	  }
   170         -      }
   171         -}
   172         -
   173         -inline local void
   174         -filter_symmetric (coeff_t * input_signal, coeff_t * output_signal,
   175         -		  int signal_length, filter_t * filter)
   176         -{
   177         -    int i, j, k1, k2;
   178         -
   179         -    switch (filter->causality)
   180         -      {
   181         -      case SYMMETRIC_WHOLE:
   182         -	  {
   183         -	      if (filter->type == LOWPASS_ANALYSIS)
   184         -		{
   185         -		    for (i = 0; i < signal_length; i += 2)
   186         -		      {
   187         -			  output_signal[i] =
   188         -			      input_signal[i] * filter->coeffs[0];
   189         -			  for (j = 1; j < filter->length; j++)
   190         -			    {
   191         -				k1 = symmetric_W_extension (i + j,
   192         -							    signal_length);
   193         -				k2 = symmetric_W_extension (i - j,
   194         -							    signal_length);
   195         -				output_signal[i] +=
   196         -				    (input_signal[k1] +
   197         -				     input_signal[k2]) * filter->coeffs[j];
   198         -			    }
   199         -		      }
   200         -		}
   201         -	      else if (filter->type == HIGHPASS_ANALYSIS)
   202         -		{
   203         -		    for (i = 1; i < signal_length; i += 2)
   204         -		      {
   205         -			  output_signal[i] =
   206         -			      input_signal[i] * filter->coeffs[0];
   207         -			  for (j = 1; j < filter->length; j++)
   208         -			    {
   209         -				k1 = symmetric_W_extension (i + j,
   210         -							    signal_length);
   211         -				k2 = symmetric_W_extension (i - j,
   212         -							    signal_length);
   213         -				output_signal[i] +=
   214         -				    (input_signal[k1] +
   215         -				     input_signal[k2]) * filter->coeffs[j];
   216         -			    }
   217         -		      }
   218         -		}
   219         -	      else
   220         -		{
   221         -		    for (i = 0; i < signal_length; i++)
   222         -		      {
   223         -			  output_signal[i] =
   224         -			      input_signal[i] * filter->coeffs[0];
   225         -			  for (j = 1; j < filter->length; j++)
   226         -			    {
   227         -				k1 = symmetric_W_extension (i + j,
   228         -							    signal_length);
   229         -				k2 = symmetric_W_extension (i - j,
   230         -							    signal_length);
   231         -				output_signal[i] +=
   232         -				    (input_signal[k1] +
   233         -				     input_signal[k2]) * filter->coeffs[j];
   234         -			    }
   235         -		      }
   236         -		}
   237         -
   238         -	      break;
   239         -	  }
   240         -	  /* Some day I hope to add 'case SYMMETRIC_HALF' here */
   241         -      default:
   242         -	  {
   243         -	      assert (0);
   244         -	      break;
   245         -	  }
   246         -      }
   247         -}
   248         -
   249         -local void
   250         -analysis_1D (coeff_t * input_signal, coeff_t * output_signal,
   251         -	     coeff_t * temp, int signal_length, filterbank_t * fb)
   252         -{
   253         -    coeff_t *lowpass;
   254         -    coeff_t *highpass;
   255         -
   256         -    /* Sanity checks */
   257         -    assert (signal_length > 0);
   258         -    assert ((fb->type == BIORTHOGONAL) || ((fb->type == ORTHOGONAL)
   259         -					   && !(signal_length & 1)));
   260         -
   261         -    /* Trivial case */
   262         -    if (signal_length == 1)
   263         -      {
   264         -	  output_signal[0] = input_signal[0] * SQRT2;
   265         -	  return;
   266         -      }
   267         -
   268         -    if (fb->type == ORTHOGONAL)
   269         -      {
   270         -	  lowpass = output_signal;
   271         -	  highpass = output_signal + signal_length / 2;
   272         -
   273         -	  /* Lowpass analysis */
   274         -	  filter_periodic (input_signal, temp, signal_length,
   275         -			   fb->lowpass_analysis);
   276         -	  downsample_signal (temp, lowpass, signal_length, signal_length / 2,
   277         -			     PHASE_EVEN);
   278         -
   279         -	  /* Highpass analysis */
   280         -	  filter_periodic (input_signal, temp, signal_length,
   281         -			   fb->highpass_analysis);
   282         -	  downsample_signal (temp, highpass, signal_length, signal_length / 2,
   283         -			     PHASE_EVEN);
   284         -      }
   285         -    else
   286         -      {
   287         -	  lowpass = output_signal;
   288         -	  highpass = output_signal + signal_length / 2 + (signal_length & 1);
   289         -
   290         -	  /* Lowpass analysis */
   291         -	  filter_symmetric (input_signal, temp, signal_length,
   292         -			    fb->lowpass_analysis);
   293         -	  downsample_signal (temp, lowpass, signal_length,
   294         -			     (signal_length + 1) / 2, PHASE_EVEN);
   295         -
   296         -	  /* Highpass analysis */
   297         -	  filter_symmetric (input_signal, temp, signal_length,
   298         -			    fb->highpass_analysis);
   299         -	  downsample_signal (temp, highpass, signal_length, signal_length / 2,
   300         -			     PHASE_ODD);
   301         -      }
   302         -}
   303         -
   304         -local void
   305         -synthesis_1D (coeff_t * input_signal, coeff_t * output_signal,
   306         -	      coeff_t * temp1, coeff_t * temp2, coeff_t * temp3,
   307         -	      int signal_length, filterbank_t * fb)
   308         -{
   309         -    coeff_t *lowpass;
   310         -    coeff_t *highpass;
   311         -    int i;
   312         -
   313         -    /* Sanity checks */
   314         -    assert (signal_length > 0);
   315         -    assert ((fb->type == BIORTHOGONAL) || ((fb->type == ORTHOGONAL)
   316         -					   && !(signal_length & 1)));
   317         -
   318         -    /* Trivial case */
   319         -    if (signal_length == 1)
   320         -      {
   321         -	  output_signal[0] = input_signal[0] / SQRT2;
   322         -	  return;
   323         -      }
   324         -
   325         -    if (fb->type == ORTHOGONAL)
   326         -      {
   327         -	  lowpass = input_signal;
   328         -	  highpass = input_signal + signal_length / 2;
   329         -
   330         -	  /* Lowpass synthesis */
   331         -	  upsample_signal (lowpass, temp1, signal_length / 2, signal_length,
   332         -			   PHASE_EVEN);
   333         -	  filter_periodic (temp1, temp2, signal_length, fb->lowpass_synthesis);
   334         -
   335         -	  /* Highpass synthesis */
   336         -	  upsample_signal (highpass, temp1, signal_length / 2, signal_length,
   337         -			   PHASE_EVEN);
   338         -	  filter_periodic (temp1, temp3, signal_length, fb->highpass_synthesis);
   339         -      }
   340         -    else
   341         -      {
   342         -	  lowpass = input_signal;
   343         -	  highpass = input_signal + signal_length / 2 + (signal_length & 1);
   344         -
   345         -	  /* Lowpass synthesis */
   346         -	  upsample_signal (lowpass, temp1, (signal_length + 1) / 2,
   347         -			   signal_length, PHASE_EVEN);
   348         -	  filter_symmetric (temp1, temp2, signal_length, fb->lowpass_synthesis);
   349         -
   350         -	  /* Highpass synthesis */
   351         -	  upsample_signal (highpass, temp1, signal_length / 2, signal_length,
   352         -			   PHASE_ODD);
   353         -	  filter_symmetric (temp1, temp3, signal_length,
   354         -			    fb->highpass_synthesis);
   355         -      }
   356         -
   357         -    /* Combine arrays */
   358         -    for (i = 0; i < signal_length; i++)
   359         -      {
   360         -	  output_signal[i] = temp2[i] + temp3[i];
   361         -      }
   362         -}
   363         -
   364         -void
   365         -analysis_2D (coeff_t ** input_signal, coeff_t ** output_signal,
   366         -	     int signal_length, int mode, filterbank_t * fb)
   367         -{
   368         -    coeff_t *input;
   369         -    coeff_t *output;
   370         -    coeff_t *temp;
   371         -
   372         -    int scale, length;
   373         -    int scales;
   374         -    int i, j;
   375         -
   376         -    assert (signal_length > 1);
   377         -
   378         -    /* Transform as many times as possible */
   379         -    scales = number_of_bits (signal_length) - 1;
   380         -
   381         -    /* Sanity checks */
   382         -    assert (((mode == MODE_NORMAL) && (signal_length == 1 << scales)) ||
   383         -	    ((mode == MODE_OTLPF) && (signal_length == (1 << scales) + 1)));
   384         -
   385         -    input = xmalloc (signal_length * sizeof (coeff_t));
   386         -    output = xmalloc (signal_length * sizeof (coeff_t));
   387         -    temp = xmalloc (signal_length * sizeof (coeff_t));
   388         -
   389         -    for (i = 0; i < signal_length; i++)
   390         -      {
   391         -	  for (j = 0; j < signal_length; j++)
   392         -	    {
   393         -		output_signal[i][j] = input_signal[i][j];
   394         -	    }
   395         -      }
   396         -
   397         -    /* Transform image */
   398         -    for (scale = 0; scale < scales; scale++)
   399         -      {
   400         -	  length = mode + (1 << (scales - scale));
   401         -
   402         -	  /* Transform rows */
   403         -	  for (i = 0; i < length; i++)
   404         -	    {
   405         -		for (j = 0; j < length; j++)
   406         -		  {
   407         -		      input[j] = output_signal[i][j];
   408         -		  }
   409         -
   410         -		if (!strcmp (fb->id, "daub97lift"))
   411         -		  {
   412         -		      if (length % 2)
   413         -			{
   414         -			    daub97lift_analysis_1D_odd (input, output, length);
   415         -			}
   416         -		      else
   417         -			{
   418         -			    daub97lift_analysis_1D_even (input, output, length);
   419         -			}
   420         -		  }
   421         -		else
   422         -		  {
   423         -		      analysis_1D (input, output, temp, length, fb);
   424         -		  }
   425         -
   426         -		for (j = 0; j < length; j++)
   427         -		  {
   428         -		      output_signal[i][j] = output[j];
   429         -		  }
   430         -	    }
   431         -
   432         -	  /* Transform columns */
   433         -	  for (i = 0; i < length; i++)
   434         -	    {
   435         -		for (j = 0; j < length; j++)
   436         -		  {
   437         -		      input[j] = output_signal[j][i];
   438         -		  }
   439         -
   440         -		if (!strcmp (fb->id, "daub97lift"))
   441         -		  {
   442         -		      if (length % 2)
   443         -			{
   444         -			    daub97lift_analysis_1D_odd (input, output, length);
   445         -			}
   446         -		      else
   447         -			{
   448         -			    daub97lift_analysis_1D_even (input, output, length);
   449         -			}
   450         -		  }
   451         -		else
   452         -		  {
   453         -		      analysis_1D (input, output, temp, length, fb);
   454         -		  }
   455         -
   456         -		for (j = 0; j < length; j++)
   457         -		  {
   458         -		      output_signal[j][i] = output[j];
   459         -		  }
   460         -	    }
   461         -      }
   462         -
   463         -    free (input);
   464         -    free (output);
   465         -    free (temp);
   466         -}
   467         -
   468         -void
   469         -synthesis_2D (coeff_t ** input_signal, coeff_t ** output_signal,
   470         -	      int signal_length, int mode, filterbank_t * fb)
   471         -{
   472         -    coeff_t *input;
   473         -    coeff_t *output;
   474         -    coeff_t *temp1;
   475         -    coeff_t *temp2;
   476         -    coeff_t *temp3;
   477         -
   478         -    int scale, length;
   479         -    int scales;
   480         -    int i, j;
   481         -
   482         -    assert (signal_length > 1);
   483         -
   484         -    /* Transform as many times as possible */
   485         -    scales = number_of_bits (signal_length) - 1;
   486         -
   487         -    /* Sanity checks */
   488         -    assert (((mode == MODE_NORMAL) && (signal_length == 1 << scales)) ||
   489         -	    ((mode == MODE_OTLPF) && (signal_length == (1 << scales) + 1)));
   490         -
   491         -    /* Temporary arrays */
   492         -    input = xmalloc (signal_length * sizeof (coeff_t));
   493         -    output = xmalloc (signal_length * sizeof (coeff_t));
   494         -    temp1 = xmalloc (signal_length * sizeof (coeff_t));
   495         -    temp2 = xmalloc (signal_length * sizeof (coeff_t));
   496         -    temp3 = xmalloc (signal_length * sizeof (coeff_t));
   497         -
   498         -    for (i = 0; i < signal_length; i++)
   499         -      {
   500         -	  for (j = 0; j < signal_length; j++)
   501         -	    {
   502         -		output_signal[i][j] = input_signal[i][j];
   503         -	    }
   504         -      }
   505         -
   506         -    /* Transform image */
   507         -    for (scale = 0; scale < scales; scale++)
   508         -      {
   509         -	  length = mode + (1 << (scale + 1));
   510         -
   511         -	  /* Transform rows */
   512         -	  for (i = 0; i < length; i++)
   513         -	    {
   514         -		for (j = 0; j < length; j++)
   515         -		  {
   516         -		      input[j] = output_signal[i][j];
   517         -		  }
   518         -
   519         -		if (!strcmp (fb->id, "daub97lift"))
   520         -		  {
   521         -		      if (length % 2)
   522         -			{
   523         -			    daub97lift_synthesis_1D_odd (input, output, length);
   524         -			}
   525         -		      else
   526         -			{
   527         -			    daub97lift_synthesis_1D_even (input, output,
   528         -							  length);
   529         -			}
   530         -		  }
   531         -		else
   532         -		  {
   533         -		      synthesis_1D (input, output, temp1, temp2, temp3, length,
   534         -				    fb);
   535         -		  }
   536         -
   537         -		for (j = 0; j < length; j++)
   538         -		  {
   539         -		      output_signal[i][j] = output[j];
   540         -		  }
   541         -	    }
   542         -
   543         -	  /* Transform columns */
   544         -	  for (i = 0; i < length; i++)
   545         -	    {
   546         -		for (j = 0; j < length; j++)
   547         -		  {
   548         -		      input[j] = output_signal[j][i];
   549         -		  }
   550         -
   551         -		if (!strcmp (fb->id, "daub97lift"))
   552         -		  {
   553         -		      if (length % 2)
   554         -			{
   555         -			    daub97lift_synthesis_1D_odd (input, output, length);
   556         -			}
   557         -		      else
   558         -			{
   559         -			    daub97lift_synthesis_1D_even (input, output,
   560         -							  length);
   561         -			}
   562         -		  }
   563         -		else
   564         -		  {
   565         -		      synthesis_1D (input, output, temp1, temp2, temp3, length,
   566         -				    fb);
   567         -		  }
   568         -
   569         -		for (j = 0; j < length; j++)
   570         -		  {
   571         -		      output_signal[j][i] = output[j];
   572         -		  }
   573         -	    }
   574         -      }
   575         -
   576         -    /* Release temporary arrays */
   577         -    free (input);
   578         -    free (output);
   579         -    free (temp1);
   580         -    free (temp2);
   581         -    free (temp3);
   582         -}

Deleted epsilon/filter.h.

     1         -/*
     2         - * $Id: filter.h,v 1.19 2008/03/28 22:52:29 simakov Exp $
     3         - *
     4         - * EPSILON - wavelet image compression library.
     5         - * Copyright (C) 2006-2007 Alexander Simakov, <xander@entropyware.info>
     6         - *
     7         - * This program is free software; you can redistribute it and/or modify
     8         - * it under the terms of the GNU General Public License as published by
     9         - * the Free Software Foundation; either version 2 of the License, or
    10         - * (at your option) any later version.
    11         - *
    12         - * This program is distributed in the hope that it will be useful,
    13         - * but WITHOUT ANY WARRANTY; without even the implied warranty of
    14         - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    15         - * GNU General Public License for more details.
    16         - *
    17         - * You should have received a copy of the GNU General Public License
    18         - * along with this program; if not, write to the Free Software
    19         - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
    20         - *
    21         - * http://epsilon-project.sourceforge.net
    22         - */
    23         -
    24         -/** \file
    25         - *
    26         - *  \brief Signal filtering
    27         - *
    28         - *  Wavelet transform implementation based on filter banks.
    29         - *
    30         - *  \section References
    31         - *
    32         - *  Gilbert Strang, Truong Nguyen "Wavelets and Filter Banks".
    33         - *
    34         - *  Jianxin Wei, Mark Pickering, Michael Frater, John Arnold,
    35         - *  John Boman, Wenjun Zeng "Boundary Artefact Reduction Using
    36         - *  Odd Tile Length and the Low Pass First Convention (OTLPF)". */
    37         -
    38         -#ifndef __FILTER_H__
    39         -#define __FILTER_H__
    40         -
    41         -#ifdef __cplusplus
    42         -extern "C"
    43         -{
    44         -#endif
    45         -
    46         -#if defined(_MSC_VER) && !defined(__cplusplus)
    47         -#define inline	__inline
    48         -#endif				/* not MSVC C compiler */
    49         -
    50         -/** \addtogroup wavelet Wavelet transform */
    51         -/*@{*/
    52         -
    53         -#include <common.h>
    54         -#include <filterbank.h>
    55         -
    56         -/** Normal mode
    57         - *
    58         - *  This mode assumes that image is square and height = width = 2 ^ N. */
    59         -#define MODE_NORMAL             0
    60         -/** OTLPF mode
    61         - *
    62         - *  This mode also assumes that image is square, but height = width = (2 ^ N) + 1.
    63         - *  In a few words, OTLPF is some kind of hack to reduce boundary artefacts
    64         - *  when image is broken into several tiles. Due to mathematical constrains
    65         - *  this method can be applied to biorthogonal filters only. For more
    66         - *  information see references. */
    67         -#define MODE_OTLPF              1
    68         -
    69         -/** Periodic signal extension
    70         - *
    71         - *  This function extends signal in a periodic fashion.
    72         - *  For example: ... 2 3 4 | 1 2 3 4 | 1 2 3 ...
    73         - *  This kind of extension is used with orthogonal filters.
    74         - *
    75         - *  \param index Sample index
    76         - *  \param length Signal length
    77         - *
    78         - *  \return Real sample index within array bounds
    79         - *
    80         - *  \note Actually, signal is not extended as the function name states.
    81         - *  This function just computes real sample index within array bounds. */
    82         -    inline local int periodic_extension (int index, int length);
    83         -
    84         -/** Symmetric-whole signal extension
    85         - *
    86         - *  This function extends signal in symmetric-whole fasion.
    87         - *  For example: ... 4 3 2 | 1 2 3 4 | 3 2 1 ... This kind
    88         - *  of extension is used with biorthogonal filters of odd length.
    89         - *
    90         - *  \param index Sample index
    91         - *  \param length Signal length
    92         - *
    93         - *  \return Real sample index within array bounds
    94         - *
    95         - *  \note Actually, signal is not extended as the function name states.
    96         - *  This function just computes real sample index within array bounds. */
    97         -    inline local int symmetric_W_extension (int index, int length);
    98         -
    99         -/** Symmetric-half signal extension
   100         - *
   101         - *  This function extends signal in symmetric-half fasion.
   102         - *  For example: ... 3 2 1 | 1 2 3 4 | 4 3 2 ... (i.e. boundary
   103         - *  samples are duplicated). This kind of extension is used with
   104         - *  biorthogonal filters of even length.
   105         - *
   106         - *  \param index Sample index
   107         - *  \param length Signal length
   108         - *
   109         - *  \return Real sample index within array bounds
   110         - *
   111         - *  \note Actually, signal is not extended as the function name states.
   112         - *  This function just computes real sample index within array bounds. */
   113         -    inline local int symmetric_H_extension (int index, int length);
   114         -
   115         -/** Signal downsampling
   116         - *
   117         - *  This function downsamples signal by the factor of two. Depending
   118         - *  on \a phase, #PHASE_EVEN or #PHASE_ODD, odd-numbered (1, 3, 5, ...)
   119         - *  or even-numbered (0, 2, 4, ...) samples are rejected respectively.
   120         - *
   121         - *  \param input_signal Input signal
   122         - *  \param output_signal Output signal
   123         - *  \param input_length Input signal length
   124         - *  \param output_length Output signal length
   125         - *  \param phase Downsampling phase
   126         - *
   127         - *  \return \c VOID
   128         - *
   129         - *  \note Caller must allocate enough space for \a output_signal beforehand. */
   130         -    inline local void downsample_signal (coeff_t * input_signal,
   131         -					 coeff_t * output_signal,
   132         -					 int input_length, int output_length,
   133         -					 int phase);
   134         -
   135         -/** Signal upsampling
   136         - *
   137         - *  This function is inverse to the previous one. It inserts zeros between
   138         - *  \a input_signal samples. Depending on \a phase, #PHASE_EVEN or #PHASE_ODD,
   139         - *  zeros are insered into the odd-numbered (1, 3, 5, ...) or
   140         - *  even-numbered (0, 2, 4, ...) positions respectively.
   141         - *
   142         - *  \param input_signal Input signal
   143         - *  \param output_signal Output signal
   144         - *  \param input_length Input signal length
   145         - *  \param output_length Output signal length
   146         - *  \param phase Upsampling phase
   147         - *
   148         - *  \return \c VOID
   149         - *
   150         - *  \note Caller must allocate enough space for \a output_signal beforehand. */
   151         -    inline local void upsample_signal (coeff_t * input_signal,
   152         -				       coeff_t * output_signal,
   153         -				       int input_length, int output_length,
   154         -				       int phase);
   155         -
   156         -/** Periodic signal filtering
   157         - *
   158         - *  This function filters \a input_signal of length \a signal_length
   159         - *  into the \a output_signal using specified \a filter. Boundary
   160         - *  samples are evaluated using peridic extension.
   161         - *
   162         - *  \param input_signal Input signal
   163         - *  \param output_signal Output signal
   164         - *  \param signal_length Signal length
   165         - *  \param filter Filter
   166         - *
   167         - *  \return \c VOID
   168         - *
   169         - *  \note \a filter must be orthogonal.
   170         - *  \note \a signal_length must be even. */
   171         -    inline local void filter_periodic (coeff_t * input_signal,
   172         -				       coeff_t * output_signal,
   173         -				       int signal_length, filter_t * filter);
   174         -
   175         -/** Symmetric signal filtering
   176         - *
   177         - *  This function filters \a input_signal of length \a signal_length
   178         - *  into the \a output_signal using specified \a filter. Boundary
   179         - *  samples are evaluated using symmetric extension.
   180         - *
   181         - *  \param input_signal Input signal
   182         - *  \param output_signal Output signal
   183         - *  \param signal_length Signal length
   184         - *  \param filter Filter
   185         - *
   186         - *  \return \c VOID
   187         - *
   188         - *  \note \a filter must be biorthogonal.
   189         - *  \note \a signal_length can be either even or odd.
   190         - *
   191         - *  \todo Add support for even-length biorthogonal filters. */
   192         -    inline local void filter_symmetric (coeff_t * input_signal,
   193         -					coeff_t * output_signal,
   194         -					int signal_length, filter_t * filter);
   195         -
   196         -/** One dimensional wavelet decomposition
   197         - *
   198         - *  This function performes one stage of 1D wavelet decomposition
   199         - *  of \a input_signal using filter bank \a fb. The result is
   200         - *  stored in \a output_signal. This operation requires one temporary
   201         - *  array of length \a signal_length. On return, the first half of \a output_signal
   202         - *  will be occupied with lowpass coefficients, the second half - with highpass
   203         - *  coefficients.
   204         - *
   205         - *  \param input_signal Input signal
   206         - *  \param output_signal Output signal
   207         - *  \param temp Temporary array
   208         - *  \param signal_length Signal length
   209         - *  \param fb Filter bank
   210         - *
   211         - *  \return \c VOID
   212         - *
   213         - *  \note If \a signal_length is odd and \a fb is biorthogonal, then
   214         - *  there will be one extra lowpass coefficient. */
   215         -    local void analysis_1D (coeff_t * input_signal, coeff_t * output_signal,
   216         -			    coeff_t * temp, int signal_length,
   217         -			    filterbank_t * fb);
   218         -
   219         -/** One dimensional wavelet reconstruction
   220         - *
   221         - *  This function performes one stage of 1D wavelet reconstruction
   222         - *  of \a input_signal using filter bank \a fb. The result is
   223         - *  stored in \a output_signal. This operation requires tree temporary
   224         - *  arrays of length \a signal_length.
   225         - *
   226         - *  \param input_signal Input signal
   227         - *  \param output_signal Output signal
   228         - *  \param temp1 Temporary array 1
   229         - *  \param temp2 Temporary array 2
   230         - *  \param temp3 Temporary array 3
   231         - *  \param signal_length Signal length
   232         - *  \param fb Filter bank
   233         - *
   234         - *  \return \c VOID */
   235         -    local void synthesis_1D (coeff_t * input_signal, coeff_t * output_signal,
   236         -			     coeff_t * temp1, coeff_t * temp2, coeff_t * temp3,
   237         -			     int signal_length, filterbank_t * fb);
   238         -
   239         -/** Two dimensional wavelet decomposition
   240         - *
   241         - *  This function performes N stages of 2D wavelet decomposition of
   242         - *  \a input_signal using filter bank \a fb. Image is assumed to be square:
   243         - *  if \a mode = #MODE_NORMAL, then width = height = signal_length = 2 ^ N;
   244         - *  if \a mode = #MODE_OTLPF, then width = height = signal_length = (2 ^ N) + 1.
   245         - *
   246         - *  \param input_signal Input signal
   247         - *  \param output_signal Output signal
   248         - *  \param signal_length Signal length (width = height)
   249         - *  \param mode Either #MODE_NORMAL or #MODE_OTLPF
   250         - *  \param fb Filter bank
   251         - *
   252         - *  \return \c VOID */
   253         -    void analysis_2D (coeff_t ** input_signal, coeff_t ** output_signal,
   254         -		      int signal_length, int mode, filterbank_t * fb);
   255         -
   256         -/** Two dimensional wavelet reconstruction
   257         - *
   258         - *  This function performes N stages of 2D wavelet reconstruction of
   259         - *  \a input_signal using filter bank \a fb. Image is assumed to be square:
   260         - *  if \a mode = #MODE_NORMAL, then width = height = signal_length = 2 ^ N;
   261         - *  if \a mode = #MODE_OTLPF, then width = height = signal_length = (2 ^ N) + 1.
   262         - *
   263         - *  \param input_signal Input signal
   264         - *  \param output_signal Output signal
   265         - *  \param signal_length Signal length (width = height)
   266         - *  \param mode Either #MODE_NORMAL or #MODE_OTLPF
   267         - *  \param fb Filter bank
   268         - *
   269         - *  \return \c VOID */
   270         -    void synthesis_2D (coeff_t ** input_signal, coeff_t ** output_signal,
   271         -		       int signal_length, int mode, filterbank_t * fb);
   272         -
   273         -/*@}*/
   274         -
   275         -#ifdef __cplusplus
   276         -}
   277         -#endif
   278         -
   279         -#endif				/* __FILTER_H__ */

Deleted epsilon/filterbank.c.

     1         -/*
     2         - * $Id: filterbank.c,v 1.12 2008/03/28 22:52:29 simakov Exp $
     3         - *
     4         - * EPSILON - wavelet image compression library.
     5         - * Copyright (C) 2006-2007 Alexander Simakov, <xander@entropyware.info>
     6         - *
     7         - * This program is free software; you can redistribute it and/or modify
     8         - * it under the terms of the GNU General Public License as published by
     9         - * the Free Software Foundation; either version 2 of the License, or
    10         - * (at your option) any later version.
    11         - *
    12         - * This program is distributed in the hope that it will be useful,
    13         - * but WITHOUT ANY WARRANTY; without even the implied warranty of
    14         - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    15         - * GNU General Public License for more details.
    16         - *
    17         - * You should have received a copy of the GNU General Public License
    18         - * along with this program; if not, write to the Free Software
    19         - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
    20         - *
    21         - * http://epsilon-project.sourceforge.net
    22         - */
    23         -
    24         -#include <common.h>
    25         -#include <filterbank.h>
    26         -
    27         -/* Haar filter. */
    28         -
    29         -static coeff_t haar_lowpass_analysis_coeffs[] = {
    30         -    0.7071067811865475,
    31         -    0.7071067811865475,
    32         -};
    33         -
    34         -static coeff_t haar_highpass_analysis_coeffs[] = {
    35         -    0.7071067811865475,
    36         -    -0.7071067811865475,
    37         -};
    38         -
    39         -static coeff_t haar_lowpass_synthesis_coeffs[] = {
    40         -    0.7071067811865475,
    41         -    0.7071067811865475,
    42         -};
    43         -
    44         -static coeff_t haar_highpass_synthesis_coeffs[] = {
    45         -    -0.7071067811865475,
    46         -    0.7071067811865475,
    47         -};
    48         -
    49         -static filter_t haar_lowpass_analysis = {
    50         -    2,
    51         -    ANTICAUSAL,
    52         -    LOWPASS_ANALYSIS,
    53         -    haar_lowpass_analysis_coeffs,
    54         -};
    55         -
    56         -static filter_t haar_highpass_analysis = {
    57         -    2,
    58         -    ANTICAUSAL,
    59         -    HIGHPASS_ANALYSIS,
    60         -    haar_highpass_analysis_coeffs,
    61         -};
    62         -
    63         -static filter_t haar_lowpass_synthesis = {
    64         -    2,
    65         -    CAUSAL,
    66         -    LOWPASS_SYNTHESIS,
    67         -    haar_lowpass_synthesis_coeffs,
    68         -};
    69         -
    70         -static filter_t haar_highpass_synthesis = {
    71         -    2,
    72         -    CAUSAL,
    73         -    HIGHPASS_SYNTHESIS,
    74         -    haar_highpass_synthesis_coeffs,
    75         -};
    76         -
    77         -static filterbank_t haar = {
    78         -    "haar",
    79         -    "Haar",
    80         -    ORTHOGONAL,
    81         -    &haar_lowpass_analysis,
    82         -    &haar_highpass_analysis,
    83         -    &haar_lowpass_synthesis,
    84         -    &haar_highpass_synthesis,
    85         -};
    86         -
    87         -/* I. Daubechies, "Orthonormal Bases of Compactly Supported Wavelets,"
    88         - * Communications on Pure and Applied Mathematics, vol. 41,
    89         - * pp. 909-996, 1988. */
    90         -
    91         -static coeff_t daub4_lowpass_analysis_coeffs[] = {
    92         -    0.4829629131445341,
    93         -    0.8365163037378077,
    94         -    0.2241438680420134,
    95         -    -0.1294095225512603,
    96         -};
    97         -
    98         -static coeff_t daub4_highpass_analysis_coeffs[] = {
    99         -    -0.1294095225512603,
   100         -    -0.2241438680420134,
   101         -    0.8365163037378077,
   102         -    -0.4829629131445341,
   103         -};
   104         -
   105         -static coeff_t daub4_lowpass_synthesis_coeffs[] = {
   106         -    -0.1294095225512603,
   107         -    0.2241438680420134,
   108         -    0.8365163037378077,
   109         -    0.4829629131445341,
   110         -};
   111         -
   112         -static coeff_t daub4_highpass_synthesis_coeffs[] = {
   113         -    -0.4829629131445341,
   114         -    0.8365163037378077,
   115         -    -0.2241438680420134,
   116         -    -0.1294095225512603,
   117         -};
   118         -
   119         -static filter_t daub4_lowpass_analysis = {
   120         -    4,
   121         -    ANTICAUSAL,
   122         -    LOWPASS_ANALYSIS,
   123         -    daub4_lowpass_analysis_coeffs,
   124         -};
   125         -
   126         -static filter_t daub4_highpass_analysis = {
   127         -    4,
   128         -    ANTICAUSAL,
   129         -    HIGHPASS_ANALYSIS,
   130         -    daub4_highpass_analysis_coeffs,
   131         -};
   132         -
   133         -static filter_t daub4_lowpass_synthesis = {
   134         -    4,
   135         -    CAUSAL,
   136         -    LOWPASS_SYNTHESIS,
   137         -    daub4_lowpass_synthesis_coeffs,
   138         -};
   139         -
   140         -static filter_t daub4_highpass_synthesis = {
   141         -    4,
   142         -    CAUSAL,
   143         -    HIGHPASS_SYNTHESIS,
   144         -    daub4_highpass_synthesis_coeffs,
   145         -};
   146         -
   147         -static filterbank_t daub4 = {
   148         -    "daub4",
   149         -    "Daubechies D4",
   150         -    ORTHOGONAL,
   151         -    &daub4_lowpass_analysis,
   152         -    &daub4_highpass_analysis,
   153         -    &daub4_lowpass_synthesis,
   154         -    &daub4_highpass_synthesis,
   155         -};
   156         -
   157         -/* I. Daubechies, "Orthonormal Bases of Compactly Supported Wavelets,"
   158         - * Communications on Pure and Applied Mathematics, vol. 41,
   159         - * pp. 909-996, 1988. */
   160         -
   161         -static coeff_t daub6_lowpass_analysis_coeffs[] = {
   162         -    0.3326705529500825,
   163         -    0.8068915093110924,
   164         -    0.4598775021184914,
   165         -    -0.1350110200102546,
   166         -    -0.0854412738820267,
   167         -    0.0352262918857095,
   168         -};
   169         -
   170         -static coeff_t daub6_highpass_analysis_coeffs[] = {
   171         -    0.0352262918857095,
   172         -    0.0854412738820267,
   173         -    -0.1350110200102546,
   174         -    -0.4598775021184914,
   175         -    0.8068915093110924,
   176         -    -0.3326705529500825,
   177         -};
   178         -
   179         -static coeff_t daub6_lowpass_synthesis_coeffs[] = {
   180         -    0.0352262918857095,
   181         -    -0.0854412738820267,
   182         -    -0.1350110200102546,
   183         -    0.4598775021184914,
   184         -    0.8068915093110924,
   185         -    0.3326705529500825,
   186         -};
   187         -
   188         -static coeff_t daub6_highpass_synthesis_coeffs[] = {
   189         -    -0.3326705529500825,
   190         -    0.8068915093110924,
   191         -    -0.4598775021184914,
   192         -    -0.1350110200102546,
   193         -    0.0854412738820267,
   194         -    0.0352262918857095,
   195         -};
   196         -
   197         -static filter_t daub6_lowpass_analysis = {
   198         -    6,
   199         -    ANTICAUSAL,
   200         -    LOWPASS_ANALYSIS,
   201         -    daub6_lowpass_analysis_coeffs,
   202         -};
   203         -
   204         -static filter_t daub6_highpass_analysis = {
   205         -    6,
   206         -    ANTICAUSAL,
   207         -    HIGHPASS_ANALYSIS,
   208         -    daub6_highpass_analysis_coeffs,
   209         -};
   210         -
   211         -static filter_t daub6_lowpass_synthesis = {
   212         -    6,
   213         -    CAUSAL,
   214         -    LOWPASS_SYNTHESIS,
   215         -    daub6_lowpass_synthesis_coeffs,
   216         -};
   217         -
   218         -static filter_t daub6_highpass_synthesis = {
   219         -    6,
   220         -    CAUSAL,
   221         -    HIGHPASS_SYNTHESIS,
   222         -    daub6_highpass_synthesis_coeffs,
   223         -};
   224         -
   225         -static filterbank_t daub6 = {
   226         -    "daub6",
   227         -    "Daubechies D6",
   228         -    ORTHOGONAL,
   229         -    &daub6_lowpass_analysis,
   230         -    &daub6_highpass_analysis,
   231         -    &daub6_lowpass_synthesis,
   232         -    &daub6_highpass_synthesis,
   233         -};
   234         -
   235         -/* I. Daubechies, "Orthonormal Bases of Compactly Supported Wavelets,"
   236         - * Communications on Pure and Applied Mathematics, vol. 41,
   237         - * pp. 909-996, 1988. */
   238         -
   239         -static coeff_t daub8_lowpass_analysis_coeffs[] = {
   240         -    0.2303778133088964,
   241         -    0.7148465705529154,
   242         -    0.6308807679398587,
   243         -    -0.0279837694168599,
   244         -    -0.1870348117190931,
   245         -    0.0308413818355607,
   246         -    0.0328830116668852,
   247         -    -0.0105974017850690,
   248         -};
   249         -
   250         -static coeff_t daub8_highpass_analysis_coeffs[] = {
   251         -    -0.0105974017850690,
   252         -    -0.0328830116668852,
   253         -    0.0308413818355607,
   254         -    0.1870348117190931,
   255         -    -0.0279837694168599,
   256         -    -0.6308807679398587,
   257         -    0.7148465705529154,
   258         -    -0.2303778133088964,
   259         -};
   260         -
   261         -static coeff_t daub8_lowpass_synthesis_coeffs[] = {
   262         -    -0.0105974017850690,
   263         -    0.0328830116668852,
   264         -    0.0308413818355607,
   265         -    -0.1870348117190931,
   266         -    -0.0279837694168599,
   267         -    0.6308807679398587,
   268         -    0.7148465705529154,
   269         -    0.2303778133088964,
   270         -};
   271         -
   272         -static coeff_t daub8_highpass_synthesis_coeffs[] = {
   273         -    -0.2303778133088964,
   274         -    0.7148465705529154,
   275         -    -0.6308807679398587,
   276         -    -0.0279837694168599,
   277         -    0.1870348117190931,
   278         -    0.0308413818355607,
   279         -    -0.0328830116668852,
   280         -    -0.0105974017850690,
   281         -};
   282         -
   283         -static filter_t daub8_lowpass_analysis = {
   284         -    8,
   285         -    ANTICAUSAL,
   286         -    LOWPASS_ANALYSIS,
   287         -    daub8_lowpass_analysis_coeffs,
   288         -};
   289         -
   290         -static filter_t daub8_highpass_analysis = {
   291         -    8,
   292         -    ANTICAUSAL,
   293         -    HIGHPASS_ANALYSIS,
   294         -    daub8_highpass_analysis_coeffs,
   295         -};
   296         -
   297         -static filter_t daub8_lowpass_synthesis = {
   298         -    8,
   299         -    CAUSAL,
   300         -    LOWPASS_SYNTHESIS,
   301         -    daub8_lowpass_synthesis_coeffs,
   302         -};
   303         -
   304         -static filter_t daub8_highpass_synthesis = {
   305         -    8,
   306         -    CAUSAL,
   307         -    HIGHPASS_SYNTHESIS,
   308         -    daub8_highpass_synthesis_coeffs,
   309         -};
   310         -
   311         -static filterbank_t daub8 = {
   312         -    "daub8",
   313         -    "Daubechies D8",
   314         -    ORTHOGONAL,
   315         -    &daub8_lowpass_analysis,
   316         -    &daub8_highpass_analysis,
   317         -    &daub8_lowpass_synthesis,
   318         -    &daub8_highpass_synthesis,
   319         -};
   320         -
   321         -/* I. Daubechies, "Orthonormal Bases of Compactly Supported Wavelets,"
   322         - * Communications on Pure and Applied Mathematics, vol. 41,
   323         - * pp. 909-996, 1988. */
   324         -
   325         -static coeff_t daub10_lowpass_analysis_coeffs[] = {
   326         -    0.16010239797419,
   327         -    0.60382926979719,
   328         -    0.72430852843777,
   329         -    0.13842814590132,
   330         -    -0.24229488706638,
   331         -    -0.03224486958464,
   332         -    0.07757149384005,
   333         -    -0.00624149021280,
   334         -    -0.01258075199908,
   335         -    0.00333572528547,
   336         -};
   337         -
   338         -static coeff_t daub10_highpass_analysis_coeffs[] = {
   339         -    0.00333572528547,
   340         -    0.01258075199908,
   341         -    -0.00624149021280,
   342         -    -0.07757149384005,
   343         -    -0.03224486958464,
   344         -    0.24229488706638,
   345         -    0.13842814590132,
   346         -    -0.72430852843777,
   347         -    0.60382926979719,
   348         -    -0.16010239797419,
   349         -};
   350         -
   351         -static coeff_t daub10_lowpass_synthesis_coeffs[] = {
   352         -    0.00333572528547,
   353         -    -0.01258075199908,
   354         -    -0.00624149021280,
   355         -    0.07757149384005,
   356         -    -0.03224486958464,
   357         -    -0.24229488706638,
   358         -    0.13842814590132,
   359         -    0.72430852843777,
   360         -    0.60382926979719,
   361         -    0.16010239797419,
   362         -};
   363         -
   364         -static coeff_t daub10_highpass_synthesis_coeffs[] = {
   365         -    -0.16010239797419,
   366         -    0.60382926979719,
   367         -    -0.72430852843777,
   368         -    0.13842814590132,
   369         -    0.24229488706638,
   370         -    -0.03224486958464,
   371         -    -0.07757149384005,
   372         -    -0.00624149021280,
   373         -    0.01258075199908,
   374         -    0.00333572528547,
   375         -};
   376         -
   377         -static filter_t daub10_lowpass_analysis = {
   378         -    10,
   379         -    ANTICAUSAL,
   380         -    LOWPASS_ANALYSIS,
   381         -    daub10_lowpass_analysis_coeffs,
   382         -};
   383         -
   384         -static filter_t daub10_highpass_analysis = {
   385         -    10,
   386         -    ANTICAUSAL,
   387         -    HIGHPASS_ANALYSIS,
   388         -    daub10_highpass_analysis_coeffs,
   389         -};
   390         -
   391         -static filter_t daub10_lowpass_synthesis = {
   392         -    10,
   393         -    CAUSAL,
   394         -    LOWPASS_SYNTHESIS,
   395         -    daub10_lowpass_synthesis_coeffs,
   396         -};
   397         -
   398         -static filter_t daub10_highpass_synthesis = {
   399         -    10,
   400         -    CAUSAL,
   401         -    HIGHPASS_SYNTHESIS,
   402         -    daub10_highpass_synthesis_coeffs,
   403         -};
   404         -
   405         -static filterbank_t daub10 = {
   406         -    "daub10",
   407         -    "Daubechies D10",
   408         -    ORTHOGONAL,
   409         -    &daub10_lowpass_analysis,
   410         -    &daub10_highpass_analysis,
   411         -    &daub10_lowpass_synthesis,
   412         -    &daub10_highpass_synthesis,
   413         -};
   414         -
   415         -/* I. Daubechies, "Orthonormal Bases of Compactly Supported Wavelets,"
   416         - * Communications on Pure and Applied Mathematics, vol. 41,
   417         - * pp. 909-996, 1988. */
   418         -
   419         -static coeff_t daub12_lowpass_analysis_coeffs[] = {
   420         -    0.111540743350,
   421         -    0.494623890398,
   422         -    0.751133908021,
   423         -    0.315250351709,
   424         -    -0.226264693965,
   425         -    -0.129766867567,
   426         -    0.097501605587,
   427         -    0.027522865530,
   428         -    -0.031582039317,
   429         -    0.000553842201,
   430         -    0.004777257511,
   431         -    -0.001077301085,
   432         -};
   433         -
   434         -static coeff_t daub12_highpass_analysis_coeffs[] = {
   435         -    -0.001077301085,
   436         -    -0.004777257511,
   437         -    0.000553842201,
   438         -    0.031582039317,
   439         -    0.027522865530,
   440         -    -0.097501605587,
   441         -    -0.129766867567,
   442         -    0.226264693965,
   443         -    0.315250351709,
   444         -    -0.751133908021,
   445         -    0.494623890398,
   446         -    -0.111540743350,
   447         -};
   448         -
   449         -static coeff_t daub12_lowpass_synthesis_coeffs[] = {
   450         -    -0.001077301085,
   451         -    0.004777257511,
   452         -    0.000553842201,
   453         -    -0.031582039317,
   454         -    0.027522865530,
   455         -    0.097501605587,
   456         -    -0.129766867567,
   457         -    -0.226264693965,
   458         -    0.315250351709,
   459         -    0.751133908021,
   460         -    0.494623890398,
   461         -    0.111540743350,
   462         -};
   463         -
   464         -static coeff_t daub12_highpass_synthesis_coeffs[] = {
   465         -    -0.111540743350,
   466         -    0.494623890398,
   467         -    -0.751133908021,
   468         -    0.315250351709,
   469         -    0.226264693965,
   470         -    -0.129766867567,
   471         -    -0.097501605587,
   472         -    0.027522865530,
   473         -    0.031582039317,
   474         -    0.000553842201,
   475         -    -0.004777257511,
   476         -    -0.001077301085,
   477         -};
   478         -
   479         -static filter_t daub12_lowpass_analysis = {
   480         -    12,
   481         -    ANTICAUSAL,
   482         -    LOWPASS_ANALYSIS,
   483         -    daub12_lowpass_analysis_coeffs,
   484         -};
   485         -
   486         -static filter_t daub12_highpass_analysis = {
   487         -    12,
   488         -    ANTICAUSAL,
   489         -    HIGHPASS_ANALYSIS,
   490         -    daub12_highpass_analysis_coeffs,
   491         -};
   492         -
   493         -static filter_t daub12_lowpass_synthesis = {
   494         -    12,
   495         -    CAUSAL,
   496         -    LOWPASS_SYNTHESIS,
   497         -    daub12_lowpass_synthesis_coeffs,
   498         -};
   499         -
   500         -static filter_t daub12_highpass_synthesis = {
   501         -    12,
   502         -    CAUSAL,
   503         -    HIGHPASS_SYNTHESIS,
   504         -    daub12_highpass_synthesis_coeffs,
   505         -};
   506         -
   507         -static filterbank_t daub12 = {
   508         -    "daub12",
   509         -    "Daubechies D12",
   510         -    ORTHOGONAL,
   511         -    &daub12_lowpass_analysis,
   512         -    &daub12_highpass_analysis,
   513         -    &daub12_lowpass_synthesis,
   514         -    &daub12_highpass_synthesis,
   515         -};
   516         -
   517         -/* I. Daubechies, "Orthonormal Bases of Compactly Supported Wavelets,"
   518         - * Communications on Pure and Applied Mathematics, vol. 41,
   519         - * pp. 909-996, 1988. */
   520         -
   521         -static coeff_t daub14_lowpass_analysis_coeffs[] = {
   522         -    0.077852054085,
   523         -    0.396539319482,
   524         -    0.729132090846,
   525         -    0.469782287405,
   526         -    -0.143906003929,
   527         -    -0.224036184994,
   528         -    0.071309219267,
   529         -    0.080612609151,
   530         -    -0.038029936935,
   531         -    -0.016574541631,
   532         -    0.012550998556,
   533         -    0.000429577973,
   534         -    -0.001801640704,
   535         -    0.000353713800,
   536         -};
   537         -
   538         -static coeff_t daub14_highpass_analysis_coeffs[] = {
   539         -    0.000353713800,
   540         -    0.001801640704,
   541         -    0.000429577973,
   542         -    -0.012550998556,
   543         -    -0.016574541631,
   544         -    0.038029936935,
   545         -    0.080612609151,
   546         -    -0.071309219267,
   547         -    -0.224036184994,
   548         -    0.143906003929,
   549         -    0.469782287405,
   550         -    -0.729132090846,
   551         -    0.396539319482,
   552         -    -0.077852054085,
   553         -};
   554         -
   555         -static coeff_t daub14_lowpass_synthesis_coeffs[] = {
   556         -    0.000353713800,
   557         -    -0.001801640704,
   558         -    0.000429577973,
   559         -    0.012550998556,
   560         -    -0.016574541631,
   561         -    -0.038029936935,
   562         -    0.080612609151,
   563         -    0.071309219267,
   564         -    -0.224036184994,
   565         -    -0.143906003929,
   566         -    0.469782287405,
   567         -    0.729132090846,
   568         -    0.396539319482,
   569         -    0.077852054085,
   570         -};
   571         -
   572         -static coeff_t daub14_highpass_synthesis_coeffs[] = {
   573         -    -0.077852054085,
   574         -    0.396539319482,
   575         -    -0.729132090846,
   576         -    0.469782287405,
   577         -    0.143906003929,
   578         -    -0.224036184994,
   579         -    -0.071309219267,
   580         -    0.080612609151,
   581         -    0.038029936935,
   582         -    -0.016574541631,
   583         -    -0.012550998556,
   584         -    0.000429577973,
   585         -    0.001801640704,
   586         -    0.000353713800,
   587         -};
   588         -
   589         -static filter_t daub14_lowpass_analysis = {
   590         -    14,
   591         -    ANTICAUSAL,
   592         -    LOWPASS_ANALYSIS,
   593         -    daub14_lowpass_analysis_coeffs,
   594         -};
   595         -
   596         -static filter_t daub14_highpass_analysis = {
   597         -    14,
   598         -    ANTICAUSAL,
   599         -    HIGHPASS_ANALYSIS,
   600         -    daub14_highpass_analysis_coeffs,
   601         -};
   602         -
   603         -static filter_t daub14_lowpass_synthesis = {
   604         -    14,
   605         -    CAUSAL,
   606         -    LOWPASS_SYNTHESIS,
   607         -    daub14_lowpass_synthesis_coeffs,
   608         -};
   609         -
   610         -static filter_t daub14_highpass_synthesis = {
   611         -    14,
   612         -    CAUSAL,
   613         -    HIGHPASS_SYNTHESIS,
   614         -    daub14_highpass_synthesis_coeffs,
   615         -};
   616         -
   617         -static filterbank_t daub14 = {
   618         -    "daub14",
   619         -    "Daubechies D14",
   620         -    ORTHOGONAL,
   621         -    &daub14_lowpass_analysis,
   622         -    &daub14_highpass_analysis,
   623         -    &daub14_lowpass_synthesis,
   624         -    &daub14_highpass_synthesis,
   625         -};
   626         -
   627         -/* I. Daubechies, "Orthonormal Bases of Compactly Supported Wavelets,"
   628         - * Communications on Pure and Applied Mathematics, vol. 41,
   629         - * pp. 909-996, 1988. */
   630         -
   631         -static coeff_t daub16_lowpass_analysis_coeffs[] = {
   632         -    0.054415842243,
   633         -    0.312871590914,
   634         -    0.675630736297,
   635         -    0.585354683654,
   636         -    -0.015829105256,
   637         -    -0.284015542962,
   638         -    0.000472484574,
   639         -    0.128747426620,
   640         -    -0.017369301002,
   641         -    -0.044088253931,
   642         -    0.013981027917,
   643         -    0.008746094047,
   644         -    -0.004870352993,
   645         -    -0.000391740373,
   646         -    0.000675449406,
   647         -    -0.000117476784,
   648         -};
   649         -
   650         -static coeff_t daub16_highpass_analysis_coeffs[] = {
   651         -    -0.000117476784,
   652         -    -0.000675449406,
   653         -    -0.000391740373,
   654         -    0.004870352993,
   655         -    0.008746094047,
   656         -    -0.013981027917,
   657         -    -0.044088253931,
   658         -    0.017369301002,
   659         -    0.128747426620,
   660         -    -0.000472484574,
   661         -    -0.284015542962,
   662         -    0.015829105256,
   663         -    0.585354683654,
   664         -    -0.675630736297,
   665         -    0.312871590914,
   666         -    -0.054415842243,
   667         -};
   668         -
   669         -static coeff_t daub16_lowpass_synthesis_coeffs[] = {
   670         -    -0.000117476784,
   671         -    0.000675449406,
   672         -    -0.000391740373,
   673         -    -0.004870352993,
   674         -    0.008746094047,
   675         -    0.013981027917,
   676         -    -0.044088253931,
   677         -    -0.017369301002,
   678         -    0.128747426620,
   679         -    0.000472484574,
   680         -    -0.284015542962,
   681         -    -0.015829105256,
   682         -    0.585354683654,
   683         -    0.675630736297,
   684         -    0.312871590914,
   685         -    0.054415842243,
   686         -};
   687         -
   688         -static coeff_t daub16_highpass_synthesis_coeffs[] = {
   689         -    -0.054415842243,
   690         -    0.312871590914,
   691         -    -0.675630736297,
   692         -    0.585354683654,
   693         -    0.015829105256,
   694         -    -0.284015542962,
   695         -    -0.000472484574,
   696         -    0.128747426620,
   697         -    0.017369301002,
   698         -    -0.044088253931,
   699         -    -0.013981027917,
   700         -    0.008746094047,
   701         -    0.004870352993,
   702         -    -0.000391740373,
   703         -    -0.000675449406,
   704         -    -0.000117476784,
   705         -};
   706         -
   707         -static filter_t daub16_lowpass_analysis = {
   708         -    16,
   709         -    ANTICAUSAL,
   710         -    LOWPASS_ANALYSIS,
   711         -    daub16_lowpass_analysis_coeffs,
   712         -};
   713         -
   714         -static filter_t daub16_highpass_analysis = {
   715         -    16,
   716         -    ANTICAUSAL,
   717         -    HIGHPASS_ANALYSIS,
   718         -    daub16_highpass_analysis_coeffs,
   719         -};
   720         -
   721         -static filter_t daub16_lowpass_synthesis = {
   722         -    16,
   723         -    CAUSAL,
   724         -    LOWPASS_SYNTHESIS,
   725         -    daub16_lowpass_synthesis_coeffs,
   726         -};
   727         -
   728         -static filter_t daub16_highpass_synthesis = {
   729         -    16,
   730         -    CAUSAL,
   731         -    HIGHPASS_SYNTHESIS,
   732         -    daub16_highpass_synthesis_coeffs,
   733         -};
   734         -
   735         -static filterbank_t daub16 = {
   736         -    "daub16",
   737         -    "Daubechies D16",
   738         -    ORTHOGONAL,
   739         -    &daub16_lowpass_analysis,
   740         -    &daub16_highpass_analysis,
   741         -    &daub16_lowpass_synthesis,
   742         -    &daub16_highpass_synthesis,
   743         -};
   744         -
   745         -/* I. Daubechies, "Orthonormal Bases of Compactly Supported Wavelets,"
   746         - * Communications on Pure and Applied Mathematics, vol. 41,
   747         - * pp. 909-996, 1988. */
   748         -
   749         -static coeff_t daub18_lowpass_analysis_coeffs[] = {
   750         -    0.038077947364,
   751         -    0.243834674613,
   752         -    0.604823123690,
   753         -    0.657288078051,
   754         -    0.133197385825,
   755         -    -0.293273783279,
   756         -    -0.096840783223,
   757         -    0.148540749338,
   758         -    0.030725681479,
   759         -    -0.067632829061,
   760         -    0.000250947115,
   761         -    0.022361662124,
   762         -    -0.004723204758,
   763         -    -0.004281503682,
   764         -    0.001847646883,
   765         -    0.000230385764,
   766         -    -0.000251963189,
   767         -    0.000039347320,
   768         -};
   769         -
   770         -static coeff_t daub18_highpass_analysis_coeffs[] = {
   771         -    0.000039347320,
   772         -    0.000251963189,
   773         -    0.000230385764,
   774         -    -0.001847646883,
   775         -    -0.004281503682,
   776         -    0.004723204758,
   777         -    0.022361662124,
   778         -    -0.000250947115,
   779         -    -0.067632829061,
   780         -    -0.030725681479,
   781         -    0.148540749338,
   782         -    0.096840783223,
   783         -    -0.293273783279,
   784         -    -0.133197385825,
   785         -    0.657288078051,
   786         -    -0.604823123690,
   787         -    0.243834674613,
   788         -    -0.038077947364,
   789         -};
   790         -
   791         -static coeff_t daub18_lowpass_synthesis_coeffs[] = {
   792         -    0.000039347320,
   793         -    -0.000251963189,
   794         -    0.000230385764,
   795         -    0.001847646883,
   796         -    -0.004281503682,
   797         -    -0.004723204758,
   798         -    0.022361662124,
   799         -    0.000250947115,
   800         -    -0.067632829061,
   801         -    0.030725681479,
   802         -    0.148540749338,
   803         -    -0.096840783223,
   804         -    -0.293273783279,
   805         -    0.133197385825,
   806         -    0.657288078051,
   807         -    0.604823123690,
   808         -    0.243834674613,
   809         -    0.038077947364,
   810         -};
   811         -
   812         -static coeff_t daub18_highpass_synthesis_coeffs[] = {
   813         -    -0.038077947364,
   814         -    0.243834674613,
   815         -    -0.604823123690,
   816         -    0.657288078051,
   817         -    -0.133197385825,
   818         -    -0.293273783279,
   819         -    0.096840783223,
   820         -    0.148540749338,
   821         -    -0.030725681479,
   822         -    -0.067632829061,
   823         -    -0.000250947115,
   824         -    0.022361662124,
   825         -    0.004723204758,
   826         -    -0.004281503682,
   827         -    -0.001847646883,
   828         -    0.000230385764,
   829         -    0.000251963189,
   830         -    0.000039347320,
   831         -};
   832         -
   833         -static filter_t daub18_lowpass_analysis = {
   834         -    18,
   835         -    ANTICAUSAL,
   836         -    LOWPASS_ANALYSIS,
   837         -    daub18_lowpass_analysis_coeffs,
   838         -};
   839         -
   840         -static filter_t daub18_highpass_analysis = {
   841         -    18,
   842         -    ANTICAUSAL,
   843         -    HIGHPASS_ANALYSIS,
   844         -    daub18_highpass_analysis_coeffs,
   845         -};
   846         -
   847         -static filter_t daub18_lowpass_synthesis = {
   848         -    18,
   849         -    CAUSAL,
   850         -    LOWPASS_SYNTHESIS,
   851         -    daub18_lowpass_synthesis_coeffs,
   852         -};
   853         -
   854         -static filter_t daub18_highpass_synthesis = {
   855         -    18,
   856         -    CAUSAL,
   857         -    HIGHPASS_SYNTHESIS,
   858         -    daub18_highpass_synthesis_coeffs,
   859         -};
   860         -
   861         -static filterbank_t daub18 = {
   862         -    "daub18",
   863         -    "Daubechies D18",
   864         -    ORTHOGONAL,
   865         -    &daub18_lowpass_analysis,
   866         -    &daub18_highpass_analysis,
   867         -    &daub18_lowpass_synthesis,
   868         -    &daub18_highpass_synthesis,
   869         -};
   870         -
   871         -/* I. Daubechies, "Orthonormal Bases of Compactly Supported Wavelets,"
   872         - * Communications on Pure and Applied Mathematics, vol. 41,
   873         - * pp. 909-996, 1988. */
   874         -
   875         -static coeff_t daub20_lowpass_analysis_coeffs[] = {
   876         -    0.026670057901,
   877         -    0.188176800078,
   878         -    0.527201188932,
   879         -    0.688459039454,
   880         -    0.281172343661,
   881         -    -0.249846424327,
   882         -    -0.195946274377,
   883         -    0.127369340336,
   884         -    0.093057364604,
   885         -    -0.071394147166,
   886         -    -0.029457536822,
   887         -    0.033212674059,
   888         -    0.003606553567,
   889         -    -0.010733175483,
   890         -    0.001395351747,
   891         -    0.001992405295,
   892         -    -0.000685856695,
   893         -    -0.000116466855,
   894         -    0.000093588670,
   895         -    -0.000013264203,
   896         -};
   897         -
   898         -static coeff_t daub20_highpass_analysis_coeffs[] = {
   899         -    -0.000013264203,
   900         -    -0.000093588670,
   901         -    -0.000116466855,
   902         -    0.000685856695,
   903         -    0.001992405295,
   904         -    -0.001395351747,
   905         -    -0.010733175483,
   906         -    -0.003606553567,
   907         -    0.033212674059,
   908         -    0.029457536822,
   909         -    -0.071394147166,
   910         -    -0.093057364604,
   911         -    0.127369340336,
   912         -    0.195946274377,
   913         -    -0.249846424327,
   914         -    -0.281172343661,
   915         -    0.688459039454,
   916         -    -0.527201188932,
   917         -    0.188176800078,
   918         -    -0.026670057901,
   919         -};
   920         -
   921         -static coeff_t daub20_lowpass_synthesis_coeffs[] = {
   922         -    -0.000013264203,
   923         -    0.000093588670,
   924         -    -0.000116466855,
   925         -    -0.000685856695,
   926         -    0.001992405295,
   927         -    0.001395351747,
   928         -    -0.010733175483,
   929         -    0.003606553567,
   930         -    0.033212674059,
   931         -    -0.029457536822,
   932         -    -0.071394147166,
   933         -    0.093057364604,
   934         -    0.127369340336,
   935         -    -0.195946274377,
   936         -    -0.249846424327,
   937         -    0.281172343661,
   938         -    0.688459039454,
   939         -    0.527201188932,
   940         -    0.188176800078,
   941         -    0.026670057901,
   942         -};
   943         -
   944         -static coeff_t daub20_highpass_synthesis_coeffs[] = {
   945         -    -0.026670057901,
   946         -    0.188176800078,
   947         -    -0.527201188932,
   948         -    0.688459039454,
   949         -    -0.281172343661,
   950         -    -0.249846424327,
   951         -    0.195946274377,
   952         -    0.127369340336,
   953         -    -0.093057364604,
   954         -    -0.071394147166,
   955         -    0.029457536822,
   956         -    0.033212674059,
   957         -    -0.003606553567,
   958         -    -0.010733175483,
   959         -    -0.001395351747,
   960         -    0.001992405295,
   961         -    0.000685856695,
   962         -    -0.000116466855,
   963         -    -0.000093588670,
   964         -    -0.000013264203,
   965         -};
   966         -
   967         -static filter_t daub20_lowpass_analysis = {
   968         -    20,
   969         -    ANTICAUSAL,
   970         -    LOWPASS_ANALYSIS,
   971         -    daub20_lowpass_analysis_coeffs,
   972         -};
   973         -
   974         -static filter_t daub20_highpass_analysis = {
   975         -    20,
   976         -    ANTICAUSAL,
   977         -    HIGHPASS_ANALYSIS,
   978         -    daub20_highpass_analysis_coeffs,
   979         -};
   980         -
   981         -static filter_t daub20_lowpass_synthesis = {
   982         -    20,
   983         -    CAUSAL,
   984         -    LOWPASS_SYNTHESIS,
   985         -    daub20_lowpass_synthesis_coeffs,
   986         -};
   987         -
   988         -static filter_t daub20_highpass_synthesis = {
   989         -    20,
   990         -    CAUSAL,
   991         -    HIGHPASS_SYNTHESIS,
   992         -    daub20_highpass_synthesis_coeffs,
   993         -};
   994         -
   995         -static filterbank_t daub20 = {
   996         -    "daub20",
   997         -    "Daubechies D20",
   998         -    ORTHOGONAL,
   999         -    &daub20_lowpass_analysis,
  1000         -    &daub20_highpass_analysis,
  1001         -    &daub20_lowpass_synthesis,
  1002         -    &daub20_highpass_synthesis,
  1003         -};
  1004         -
  1005         -/* The Beylkin filter places roots for the frequency response function
  1006         - * close to the Nyquist frequency on the real axis. */
  1007         -
  1008         -static coeff_t beylkin_lowpass_analysis_coeffs[] = {
  1009         -    0.099305765374,
  1010         -    0.424215360813,
  1011         -    0.699825214057,
  1012         -    0.449718251149,
  1013         -    -0.110927598348,
  1014         -    -0.264497231446,
  1015         -    0.026900308804,
  1016         -    0.155538731877,
  1017         -    -0.017520746267,
  1018         -    -0.088543630623,
  1019         -    0.019679866044,
  1020         -    0.042916387274,
  1021         -    -0.017460408696,
  1022         -    -0.014365807969,
  1023         -    0.010040411845,
  1024         -    0.001484234782,
  1025         -    -0.002736031626,
  1026         -    0.000640485329,
  1027         -};
  1028         -
  1029         -static coeff_t beylkin_highpass_analysis_coeffs[] = {
  1030         -    0.000640485329,
  1031         -    0.002736031626,
  1032         -    0.001484234782,
  1033         -    -0.010040411845,
  1034         -    -0.014365807969,
  1035         -    0.017460408696,
  1036         -    0.042916387274,
  1037         -    -0.019679866044,
  1038         -    -0.088543630623,
  1039         -    0.017520746267,
  1040         -    0.155538731877,
  1041         -    -0.026900308804,
  1042         -    -0.264497231446,
  1043         -    0.110927598348,
  1044         -    0.449718251149,
  1045         -    -0.699825214057,
  1046         -    0.424215360813,
  1047         -    -0.099305765374,
  1048         -};
  1049         -
  1050         -static coeff_t beylkin_lowpass_synthesis_coeffs[] = {
  1051         -    0.000640485329,
  1052         -    -0.002736031626,
  1053         -    0.001484234782,
  1054         -    0.010040411845,
  1055         -    -0.014365807969,
  1056         -    -0.017460408696,
  1057         -    0.042916387274,
  1058         -    0.019679866044,
  1059         -    -0.088543630623,
  1060         -    -0.017520746267,
  1061         -    0.155538731877,
  1062         -    0.026900308804,
  1063         -    -0.264497231446,
  1064         -    -0.110927598348,
  1065         -    0.449718251149,
  1066         -    0.699825214057,
  1067         -    0.424215360813,
  1068         -    0.099305765374,
  1069         -};
  1070         -
  1071         -static coeff_t beylkin_highpass_synthesis_coeffs[] = {
  1072         -    -0.099305765374,
  1073         -    0.424215360813,
  1074         -    -0.699825214057,
  1075         -    0.449718251149,
  1076         -    0.110927598348,
  1077         -    -0.264497231446,
  1078         -    -0.026900308804,
  1079         -    0.155538731877,
  1080         -    0.017520746267,
  1081         -    -0.088543630623,
  1082         -    -0.019679866044,
  1083         -    0.042916387274,
  1084         -    0.017460408696,
  1085         -    -0.014365807969,
  1086         -    -0.010040411845,
  1087         -    0.001484234782,
  1088         -    0.002736031626,
  1089         -    0.000640485329,
  1090         -};
  1091         -
  1092         -static filter_t beylkin_lowpass_analysis = {
  1093         -    18,
  1094         -    ANTICAUSAL,
  1095         -    LOWPASS_ANALYSIS,
  1096         -    beylkin_lowpass_analysis_coeffs,
  1097         -};
  1098         -
  1099         -static filter_t beylkin_highpass_analysis = {
  1100         -    18,
  1101         -    ANTICAUSAL,
  1102         -    HIGHPASS_ANALYSIS,
  1103         -    beylkin_highpass_analysis_coeffs,
  1104         -};
  1105         -
  1106         -static filter_t beylkin_lowpass_synthesis = {
  1107         -    18,
  1108         -    CAUSAL,
  1109         -    LOWPASS_SYNTHESIS,
  1110         -    beylkin_lowpass_synthesis_coeffs,
  1111         -};
  1112         -
  1113         -static filter_t beylkin_highpass_synthesis = {
  1114         -    18,
  1115         -    CAUSAL,
  1116         -    HIGHPASS_SYNTHESIS,
  1117         -    beylkin_highpass_synthesis_coeffs,
  1118         -};
  1119         -
  1120         -static filterbank_t beylkin = {
  1121         -    "beylkin",
  1122         -    "Beylkin",
  1123         -    ORTHOGONAL,
  1124         -    &beylkin_lowpass_analysis,
  1125         -    &beylkin_highpass_analysis,
  1126         -    &beylkin_lowpass_synthesis,
  1127         -    &beylkin_highpass_synthesis,
  1128         -};
  1129         -
  1130         -/* The Vaidyanathan filter gives an exact reconstruction, but does not
  1131         - * satisfy any moment condition.  The filter has been optimized for
  1132         - * speech coding. */
  1133         -
  1134         -static coeff_t vaidyanathan_lowpass_analysis_coeffs[] = {
  1135         -    -0.000062906118,
  1136         -    0.000343631905,
  1137         -    -0.000453956620,
  1138         -    -0.000944897136,
  1139         -    0.002843834547,
  1140         -    0.000708137504,
  1141         -    -0.008839103409,
  1142         -    0.003153847056,
  1143         -    0.019687215010,
  1144         -    -0.014853448005,
  1145         -    -0.035470398607,
  1146         -    0.038742619293,
  1147         -    0.055892523691,
  1148         -    -0.077709750902,
  1149         -    -0.083928884366,
  1150         -    0.131971661417,
  1151         -    0.135084227129,
  1152         -    -0.194450471766,
  1153         -    -0.263494802488,
  1154         -    0.201612161775,
  1155         -    0.635601059872,
  1156         -    0.572797793211,
  1157         -    0.250184129505,
  1158         -    0.045799334111,
  1159         -};
  1160         -
  1161         -static coeff_t vaidyanathan_highpass_analysis_coeffs[] = {
  1162         -    0.045799334111,
  1163         -    -0.250184129505,
  1164         -    0.572797793211,
  1165         -    -0.635601059872,
  1166         -    0.201612161775,
  1167         -    0.263494802488,
  1168         -    -0.194450471766,
  1169         -    -0.135084227129,
  1170         -    0.131971661417,
  1171         -    0.083928884366,
  1172         -    -0.077709750902,
  1173         -    -0.055892523691,
  1174         -    0.038742619293,
  1175         -    0.035470398607,
  1176         -    -0.014853448005,
  1177         -    -0.019687215010,
  1178         -    0.003153847056,
  1179         -    0.008839103409,
  1180         -    0.000708137504,
  1181         -    -0.002843834547,
  1182         -    -0.000944897136,
  1183         -    0.000453956620,
  1184         -    0.000343631905,
  1185         -    0.000062906118,
  1186         -};
  1187         -
  1188         -static coeff_t vaidyanathan_lowpass_synthesis_coeffs[] = {
  1189         -    0.045799334111,
  1190         -    0.250184129505,
  1191         -    0.572797793211,
  1192         -    0.635601059872,
  1193         -    0.201612161775,
  1194         -    -0.263494802488,
  1195         -    -0.194450471766,
  1196         -    0.135084227129,
  1197         -    0.131971661417,
  1198         -    -0.083928884366,
  1199         -    -0.077709750902,
  1200         -    0.055892523691,
  1201         -    0.038742619293,
  1202         -    -0.035470398607,
  1203         -    -0.014853448005,
  1204         -    0.019687215010,
  1205         -    0.003153847056,
  1206         -    -0.008839103409,
  1207         -    0.000708137504,
  1208         -    0.002843834547,
  1209         -    -0.000944897136,
  1210         -    -0.000453956620,
  1211         -    0.000343631905,
  1212         -    -0.000062906118,
  1213         -};
  1214         -
  1215         -static coeff_t vaidyanathan_highpass_synthesis_coeffs[] = {
  1216         -    0.000062906118,
  1217         -    0.000343631905,
  1218         -    0.000453956620,
  1219         -    -0.000944897136,
  1220         -    -0.002843834547,
  1221         -    0.000708137504,
  1222         -    0.008839103409,
  1223         -    0.003153847056,
  1224         -    -0.019687215010,
  1225         -    -0.014853448005,
  1226         -    0.035470398607,
  1227         -    0.038742619293,
  1228         -    -0.055892523691,
  1229         -    -0.077709750902,
  1230         -    0.083928884366,
  1231         -    0.131971661417,
  1232         -    -0.135084227129,
  1233         -    -0.194450471766,
  1234         -    0.263494802488,
  1235         -    0.201612161775,
  1236         -    -0.635601059872,
  1237         -    0.572797793211,
  1238         -    -0.250184129505,
  1239         -    0.045799334111,
  1240         -};
  1241         -
  1242         -static filter_t vaidyanathan_lowpass_analysis = {
  1243         -    24,
  1244         -    ANTICAUSAL,
  1245         -    LOWPASS_ANALYSIS,
  1246         -    vaidyanathan_lowpass_analysis_coeffs,
  1247         -};
  1248         -
  1249         -static filter_t vaidyanathan_highpass_analysis = {
  1250         -    24,
  1251         -    ANTICAUSAL,
  1252         -    HIGHPASS_ANALYSIS,
  1253         -    vaidyanathan_highpass_analysis_coeffs,
  1254         -};
  1255         -
  1256         -static filter_t vaidyanathan_lowpass_synthesis = {
  1257         -    24,
  1258         -    CAUSAL,
  1259         -    LOWPASS_SYNTHESIS,
  1260         -    vaidyanathan_lowpass_synthesis_coeffs,
  1261         -};
  1262         -
  1263         -static filter_t vaidyanathan_highpass_synthesis = {
  1264         -    24,
  1265         -    CAUSAL,
  1266         -    HIGHPASS_SYNTHESIS,
  1267         -    vaidyanathan_highpass_synthesis_coeffs,
  1268         -};
  1269         -
  1270         -static filterbank_t vaidyanathan = {
  1271         -    "vaidyanathan",
  1272         -    "Vaidyanathan",
  1273         -    ORTHOGONAL,
  1274         -    &vaidyanathan_lowpass_analysis,
  1275         -    &vaidyanathan_highpass_analysis,
  1276         -    &vaidyanathan_lowpass_synthesis,
  1277         -    &vaidyanathan_highpass_synthesis,
  1278         -};
  1279         -
  1280         -/* Coeflet �6 filter. */
  1281         -
  1282         -static coeff_t coiflet6_lowpass_analysis_coeffs[] = {
  1283         -    0.038580777748,
  1284         -    -0.126969125396,
  1285         -    -0.077161555496,
  1286         -    0.607491641386,
  1287         -    0.745687558934,
  1288         -    0.226584265197,
  1289         -};
  1290         -
  1291         -static coeff_t coiflet6_highpass_analysis_coeffs[] = {
  1292         -    0.226584265197,
  1293         -    -0.745687558934,
  1294         -    0.607491641386,
  1295         -    0.077161555496,
  1296         -    -0.126969125396,
  1297         -    -0.038580777748,
  1298         -};
  1299         -
  1300         -static coeff_t coiflet6_lowpass_synthesis_coeffs[] = {
  1301         -    0.226584265197,
  1302         -    0.745687558934,
  1303         -    0.607491641386,
  1304         -    -0.077161555496,
  1305         -    -0.126969125396,
  1306         -    0.038580777748,
  1307         -};
  1308         -
  1309         -static coeff_t coiflet6_highpass_synthesis_coeffs[] = {
  1310         -    -0.038580777748,
  1311         -    -0.126969125396,
  1312         -    0.077161555496,
  1313         -    0.607491641386,
  1314         -    -0.745687558934,
  1315         -    0.226584265197,
  1316         -};
  1317         -
  1318         -static filter_t coiflet6_lowpass_analysis = {
  1319         -    6,
  1320         -    ANTICAUSAL,
  1321         -    LOWPASS_ANALYSIS,
  1322         -    coiflet6_lowpass_analysis_coeffs,
  1323         -};
  1324         -
  1325         -static filter_t coiflet6_highpass_analysis = {
  1326         -    6,
  1327         -    ANTICAUSAL,
  1328         -    HIGHPASS_ANALYSIS,
  1329         -    coiflet6_highpass_analysis_coeffs,
  1330         -};
  1331         -
  1332         -static filter_t coiflet6_lowpass_synthesis = {
  1333         -    6,
  1334         -    CAUSAL,
  1335         -    LOWPASS_SYNTHESIS,
  1336         -    coiflet6_lowpass_synthesis_coeffs,
  1337         -};
  1338         -
  1339         -static filter_t coiflet6_highpass_synthesis = {
  1340         -    6,
  1341         -    CAUSAL,
  1342         -    HIGHPASS_SYNTHESIS,
  1343         -    coiflet6_highpass_synthesis_coeffs,
  1344         -};
  1345         -
  1346         -static filterbank_t coiflet6 = {
  1347         -    "coiflet6",
  1348         -    "Coeflet C6",
  1349         -    ORTHOGONAL,
  1350         -    &coiflet6_lowpass_analysis,
  1351         -    &coiflet6_highpass_analysis,
  1352         -    &coiflet6_lowpass_synthesis,
  1353         -    &coiflet6_highpass_synthesis,
  1354         -};
  1355         -
  1356         -/* Coeflet C12 filter. */
  1357         -
  1358         -static coeff_t coiflet12_lowpass_analysis_coeffs[] = {
  1359         -    0.016387336463,
  1360         -    -0.041464936782,
  1361         -    -0.067372554722,
  1362         -    0.386110066823,
  1363         -    0.812723635450,
  1364         -    0.417005184424,
  1365         -    -0.076488599078,
  1366         -    -0.059434418646,
  1367         -    0.023680171947,
  1368         -    0.005611434819,
  1369         -    -0.001823208871,
  1370         -    -0.000720549445,
  1371         -};
  1372         -
  1373         -static coeff_t coiflet12_highpass_analysis_coeffs[] = {
  1374         -    -0.000720549445,
  1375         -    0.001823208871,
  1376         -    0.005611434819,
  1377         -    -0.023680171947,
  1378         -    -0.059434418646,
  1379         -    0.076488599078,
  1380         -    0.417005184424,
  1381         -    -0.812723635450,
  1382         -    0.386110066823,
  1383         -    0.067372554722,
  1384         -    -0.041464936782,
  1385         -    -0.016387336463,
  1386         -};
  1387         -
  1388         -static coeff_t coiflet12_lowpass_synthesis_coeffs[] = {
  1389         -    -0.000720549445,
  1390         -    -0.001823208871,
  1391         -    0.005611434819,
  1392         -    0.023680171947,
  1393         -    -0.059434418646,
  1394         -    -0.076488599078,
  1395         -    0.417005184424,
  1396         -    0.812723635450,
  1397         -    0.386110066823,
  1398         -    -0.067372554722,
  1399         -    -0.041464936782,
  1400         -    0.016387336463,
  1401         -};
  1402         -
  1403         -static coeff_t coiflet12_highpass_synthesis_coeffs[] = {
  1404         -    -0.016387336463,
  1405         -    -0.041464936782,
  1406         -    0.067372554722,
  1407         -    0.386110066823,
  1408         -    -0.812723635450,
  1409         -    0.417005184424,
  1410         -    0.076488599078,
  1411         -    -0.059434418646,
  1412         -    -0.023680171947,
  1413         -    0.005611434819,
  1414         -    0.001823208871,
  1415         -    -0.000720549445,
  1416         -};
  1417         -
  1418         -static filter_t coiflet12_lowpass_analysis = {
  1419         -    12,
  1420         -    ANTICAUSAL,
  1421         -    LOWPASS_ANALYSIS,
  1422         -    coiflet12_lowpass_analysis_coeffs,
  1423         -};
  1424         -
  1425         -static filter_t coiflet12_highpass_analysis = {
  1426         -    12,
  1427         -    ANTICAUSAL,
  1428         -    HIGHPASS_ANALYSIS,
  1429         -    coiflet12_highpass_analysis_coeffs,
  1430         -};
  1431         -
  1432         -static filter_t coiflet12_lowpass_synthesis = {
  1433         -    12,
  1434         -    CAUSAL,
  1435         -    LOWPASS_SYNTHESIS,
  1436         -    coiflet12_lowpass_synthesis_coeffs,
  1437         -};
  1438         -
  1439         -static filter_t coiflet12_highpass_synthesis = {
  1440         -    12,
  1441         -    CAUSAL,
  1442         -    HIGHPASS_SYNTHESIS,
  1443         -    coiflet12_highpass_synthesis_coeffs,
  1444         -};
  1445         -
  1446         -static filterbank_t coiflet12 = {
  1447         -    "coiflet12",
  1448         -    "Coeflet C12",
  1449         -    ORTHOGONAL,
  1450         -    &coiflet12_lowpass_analysis,
  1451         -    &coiflet12_highpass_analysis,
  1452         -    &coiflet12_lowpass_synthesis,
  1453         -    &coiflet12_highpass_synthesis,
  1454         -};
  1455         -
  1456         -/* Coeflet C18 filter. */
  1457         -
  1458         -static coeff_t coiflet18_lowpass_analysis_coeffs[] = {
  1459         -    -0.003793512864,
  1460         -    0.007782596426,
  1461         -    0.023452696142,
  1462         -    -0.065771911281,
  1463         -    -0.061123390003,
  1464         -    0.405176902410,
  1465         -    0.793777222626,
  1466         -    0.428483476378,
  1467         -    -0.071799821619,
  1468         -    -0.082301927106,
  1469         -    0.034555027573,
  1470         -    0.015880544864,
  1471         -    -0.009007976137,
  1472         -    -0.002574517688,
  1473         -    0.001117518771,
  1474         -    0.000466216960,
  1475         -    -0.000070983303,
  1476         -    -0.000034599773,
  1477         -};
  1478         -
  1479         -static coeff_t coiflet18_highpass_analysis_coeffs[] = {
  1480         -    -0.000034599773,
  1481         -    0.000070983303,
  1482         -    0.000466216960,
  1483         -    -0.001117518771,
  1484         -    -0.002574517688,
  1485         -    0.009007976137,
  1486         -    0.015880544864,
  1487         -    -0.034555027573,
  1488         -    -0.082301927106,
  1489         -    0.071799821619,
  1490         -    0.428483476378,
  1491         -    -0.793777222626,
  1492         -    0.405176902410,
  1493         -    0.061123390003,
  1494         -    -0.065771911281,
  1495         -    -0.023452696142,
  1496         -    0.007782596426,
  1497         -    0.003793512864,
  1498         -};
  1499         -
  1500         -static coeff_t coiflet18_lowpass_synthesis_coeffs[] = {
  1501         -    -0.000034599773,
  1502         -    -0.000070983303,
  1503         -    0.000466216960,
  1504         -    0.001117518771,
  1505         -    -0.002574517688,
  1506         -    -0.009007976137,
  1507         -    0.015880544864,
  1508         -    0.034555027573,
  1509         -    -0.082301927106,
  1510         -    -0.071799821619,
  1511         -    0.428483476378,
  1512         -    0.793777222626,
  1513         -    0.405176902410,
  1514         -    -0.061123390003,
  1515         -    -0.065771911281,
  1516         -    0.023452696142,
  1517         -    0.007782596426,
  1518         -    -0.003793512864,
  1519         -};
  1520         -
  1521         -static coeff_t coiflet18_highpass_synthesis_coeffs[] = {
  1522         -    0.003793512864,
  1523         -    0.007782596426,
  1524         -    -0.023452696142,
  1525         -    -0.065771911281,
  1526         -    0.061123390003,
  1527         -    0.405176902410,
  1528         -    -0.793777222626,
  1529         -    0.428483476378,
  1530         -    0.071799821619,
  1531         -    -0.082301927106,
  1532         -    -0.034555027573,
  1533         -    0.015880544864,
  1534         -    0.009007976137,
  1535         -    -0.002574517688,
  1536         -    -0.001117518771,
  1537         -    0.000466216960,
  1538         -    0.000070983303,
  1539         -    -0.000034599773,
  1540         -};
  1541         -
  1542         -static filter_t coiflet18_lowpass_analysis = {
  1543         -    18,
  1544         -    ANTICAUSAL,
  1545         -    LOWPASS_ANALYSIS,
  1546         -    coiflet18_lowpass_analysis_coeffs,
  1547         -};
  1548         -
  1549         -static filter_t coiflet18_highpass_analysis = {
  1550         -    18,
  1551         -    ANTICAUSAL,
  1552         -    HIGHPASS_ANALYSIS,
  1553         -    coiflet18_highpass_analysis_coeffs,
  1554         -};
  1555         -
  1556         -static filter_t coiflet18_lowpass_synthesis = {
  1557         -    18,
  1558         -    CAUSAL,
  1559         -    LOWPASS_SYNTHESIS,
  1560         -    coiflet18_lowpass_synthesis_coeffs,
  1561         -};
  1562         -
  1563         -static filter_t coiflet18_highpass_synthesis = {
  1564         -    18,
  1565         -    CAUSAL,
  1566         -    HIGHPASS_SYNTHESIS,
  1567         -    coiflet18_highpass_synthesis_coeffs,
  1568         -};
  1569         -
  1570         -static filterbank_t coiflet18 = {
  1571         -    "coiflet18",
  1572         -    "Coeflet C18",
  1573         -    ORTHOGONAL,
  1574         -    &coiflet18_lowpass_analysis,
  1575         -    &coiflet18_highpass_analysis,
  1576         -    &coiflet18_lowpass_synthesis,
  1577         -    &coiflet18_highpass_synthesis,
  1578         -};
  1579         -
  1580         -/* Coeflet C24 filter. */
  1581         -
  1582         -static coeff_t coiflet24_lowpass_analysis_coeffs[] = {
  1583         -    0.000892313668,
  1584         -    -0.001629492013,
  1585         -    -0.007346166328,
  1586         -    0.016068943964,
  1587         -    0.026682300156,
  1588         -    -0.081266699680,
  1589         -    -0.056077313316,
  1590         -    0.415308407030,
  1591         -    0.782238930920,
  1592         -    0.434386056491,
  1593         -    -0.066627474263,
  1594         -    -0.096220442034,
  1595         -    0.039334427123,
  1596         -    0.025082261845,
  1597         -    -0.015211731527,
  1598         -    -0.005658286686,
  1599         -    0.003751436157,
  1600         -    0.001266561929,
  1601         -    -0.000589020757,
  1602         -    -0.000259974552,
  1603         -    0.000062339034,
  1604         -    0.000031229876,
  1605         -    -0.000003259680,
  1606         -    -0.000001784985,
  1607         -};
  1608         -
  1609         -static coeff_t coiflet24_highpass_analysis_coeffs[] = {
  1610         -    -0.000001784985,
  1611         -    0.000003259680,
  1612         -    0.000031229876,
  1613         -    -0.000062339034,
  1614         -    -0.000259974552,
  1615         -    0.000589020757,
  1616         -    0.001266561929,
  1617         -    -0.003751436157,
  1618         -    -0.005658286686,
  1619         -    0.015211731527,
  1620         -    0.025082261845,
  1621         -    -0.039334427123,
  1622         -    -0.096220442034,
  1623         -    0.066627474263,
  1624         -    0.434386056491,
  1625         -    -0.782238930920,
  1626         -    0.415308407030,
  1627         -    0.056077313316,
  1628         -    -0.081266699680,
  1629         -    -0.026682300156,
  1630         -    0.016068943964,
  1631         -    0.007346166328,
  1632         -    -0.001629492013,
  1633         -    -0.000892313668,
  1634         -};
  1635         -
  1636         -static coeff_t coiflet24_lowpass_synthesis_coeffs[] = {
  1637         -    -0.000001784985,
  1638         -    -0.000003259680,
  1639         -    0.000031229876,
  1640         -    0.000062339034,
  1641         -    -0.000259974552,
  1642         -    -0.000589020757,
  1643         -    0.001266561929,
  1644         -    0.003751436157,
  1645         -    -0.005658286686,
  1646         -    -0.015211731527,
  1647         -    0.025082261845,
  1648         -    0.039334427123,
  1649         -    -0.096220442034,
  1650         -    -0.066627474263,
  1651         -    0.434386056491,
  1652         -    0.782238930920,
  1653         -    0.415308407030,
  1654         -    -0.056077313316,
  1655         -    -0.081266699680,
  1656         -    0.026682300156,
  1657         -    0.016068943964,
  1658         -    -0.007346166328,
  1659         -    -0.001629492013,
  1660         -    0.000892313668,
  1661         -};
  1662         -
  1663         -static coeff_t coiflet24_highpass_synthesis_coeffs[] = {
  1664         -    -0.000892313668,
  1665         -    -0.001629492013,
  1666         -    0.007346166328,
  1667         -    0.016068943964,
  1668         -    -0.026682300156,
  1669         -    -0.081266699680,
  1670         -    0.056077313316,
  1671         -    0.415308407030,
  1672         -    -0.782238930920,
  1673         -    0.434386056491,
  1674         -    0.066627474263,
  1675         -    -0.096220442034,
  1676         -    -0.039334427123,
  1677         -    0.025082261845,
  1678         -    0.015211731527,
  1679         -    -0.005658286686,
  1680         -    -0.003751436157,
  1681         -    0.001266561929,
  1682         -    0.000589020757,
  1683         -    -0.000259974552,
  1684         -    -0.000062339034,
  1685         -    0.000031229876,
  1686         -    0.000003259680,
  1687         -    -0.000001784985,
  1688         -};
  1689         -
  1690         -static filter_t coiflet24_lowpass_analysis = {
  1691         -    24,
  1692         -    ANTICAUSAL,
  1693         -    LOWPASS_ANALYSIS,
  1694         -    coiflet24_lowpass_analysis_coeffs,
  1695         -};
  1696         -
  1697         -static filter_t coiflet24_highpass_analysis = {
  1698         -    24,
  1699         -    ANTICAUSAL,
  1700         -    HIGHPASS_ANALYSIS,
  1701         -    coiflet24_highpass_analysis_coeffs,
  1702         -};
  1703         -
  1704         -static filter_t coiflet24_lowpass_synthesis = {
  1705         -    24,
  1706         -    CAUSAL,
  1707         -    LOWPASS_SYNTHESIS,
  1708         -    coiflet24_lowpass_synthesis_coeffs,
  1709         -};
  1710         -
  1711         -static filter_t coiflet24_highpass_synthesis = {
  1712         -    24,
  1713         -    CAUSAL,
  1714         -    HIGHPASS_SYNTHESIS,
  1715         -    coiflet24_highpass_synthesis_coeffs,
  1716         -};
  1717         -
  1718         -static filterbank_t coiflet24 = {
  1719         -    "coiflet24",
  1720         -    "Coeflet C24",
  1721         -    ORTHOGONAL,
  1722         -    &coiflet24_lowpass_analysis,
  1723         -    &coiflet24_highpass_analysis,
  1724         -    &coiflet24_lowpass_synthesis,
  1725         -    &coiflet24_highpass_synthesis,
  1726         -};
  1727         -
  1728         -/* Coiflet C30 filter. */
  1729         -
  1730         -static coeff_t coiflet30_lowpass_analysis_coeffs[] = {
  1731         -    -0.000212080863,
  1732         -    0.000358589677,
  1733         -    0.002178236305,
  1734         -    -0.004159358782,
  1735         -    -0.010131117538,
  1736         -    0.023408156762,
  1737         -    0.028168029062,
  1738         -    -0.091920010549,
  1739         -    -0.052043163216,
  1740         -    0.421566206729,
  1741         -    0.774289603740,
  1742         -    0.437991626228,
  1743         -    -0.062035963906,
  1744         -    -0.105574208706,
  1745         -    0.041289208741,
  1746         -    0.032683574283,
  1747         -    -0.019761779012,
  1748         -    -0.009164231153,
  1749         -    0.006764185419,
  1750         -    0.002433373209,
  1751         -    -0.001662863769,
  1752         -    -0.000638131296,
  1753         -    0.000302259520,
  1754         -    0.000140541149,
  1755         -    -0.000041340484,
  1756         -    -0.000021315014,
  1757         -    0.000003734597,
  1758         -    0.000002063806,
  1759         -    -0.000000167408,
  1760         -    -0.000000095158,
  1761         -};
  1762         -
  1763         -static coeff_t coiflet30_highpass_analysis_coeffs[] = {
  1764         -    -0.000000095158,
  1765         -    0.000000167408,
  1766         -    0.000002063806,
  1767         -    -0.000003734597,
  1768         -    -0.000021315014,
  1769         -    0.000041340484,
  1770         -    0.000140541149,
  1771         -    -0.000302259520,
  1772         -    -0.000638131296,
  1773         -    0.001662863769,
  1774         -    0.002433373209,
  1775         -    -0.006764185419,
  1776         -    -0.009164231153,
  1777         -    0.019761779012,
  1778         -    0.032683574283,
  1779         -    -0.041289208741,
  1780         -    -0.105574208706,
  1781         -    0.062035963906,
  1782         -    0.437991626228,
  1783         -    -0.774289603740,
  1784         -    0.421566206729,
  1785         -    0.052043163216,
  1786         -    -0.091920010549,
  1787         -    -0.028168029062,
  1788         -    0.023408156762,
  1789         -    0.010131117538,
  1790         -    -0.004159358782,
  1791         -    -0.002178236305,
  1792         -    0.000358589677,
  1793         -    0.000212080863,
  1794         -};
  1795         -
  1796         -static coeff_t coiflet30_lowpass_synthesis_coeffs[] = {
  1797         -    -0.000000095158,
  1798         -    -0.000000167408,
  1799         -    0.000002063806,
  1800         -    0.000003734597,
  1801         -    -0.000021315014,
  1802         -    -0.000041340484,
  1803         -    0.000140541149,
  1804         -    0.000302259520,
  1805         -    -0.000638131296,
  1806         -    -0.001662863769,
  1807         -    0.002433373209,
  1808         -    0.006764185419,
  1809         -    -0.009164231153,
  1810         -    -0.019761779012,
  1811         -    0.032683574283,
  1812         -    0.041289208741,
  1813         -    -0.105574208706,
  1814         -    -0.062035963906,
  1815         -    0.437991626228,
  1816         -    0.774289603740,
  1817         -    0.421566206729,
  1818         -    -0.052043163216,
  1819         -    -0.091920010549,
  1820         -    0.028168029062,
  1821         -    0.023408156762,
  1822         -    -0.010131117538,
  1823         -    -0.004159358782,
  1824         -    0.002178236305,
  1825         -    0.000358589677,
  1826         -    -0.000212080863,
  1827         -};
  1828         -
  1829         -static coeff_t coiflet30_highpass_synthesis_coeffs[] = {
  1830         -    0.000212080863,
  1831         -    0.000358589677,
  1832         -    -0.002178236305,
  1833         -    -0.004159358782,
  1834         -    0.010131117538,
  1835         -    0.023408156762,
  1836         -    -0.028168029062,
  1837         -    -0.091920010549,
  1838         -    0.052043163216,
  1839         -    0.421566206729,
  1840         -    -0.774289603740,
  1841         -    0.437991626228,
  1842         -    0.062035963906,
  1843         -    -0.105574208706,
  1844         -    -0.041289208741,
  1845         -    0.032683574283,
  1846         -    0.019761779012,
  1847         -    -0.009164231153,
  1848         -    -0.006764185419,
  1849         -    0.002433373209,
  1850         -    0.001662863769,
  1851         -    -0.000638131296,
  1852         -    -0.000302259520,
  1853         -    0.000140541149,
  1854         -    0.000041340484,
  1855         -    -0.000021315014,
  1856         -    -0.000003734597,
  1857         -    0.000002063806,
  1858         -    0.000000167408,
  1859         -    -0.000000095158,
  1860         -};
  1861         -
  1862         -static filter_t coiflet30_lowpass_analysis = {
  1863         -    30,
  1864         -    ANTICAUSAL,
  1865         -    LOWPASS_ANALYSIS,
  1866         -    coiflet30_lowpass_analysis_coeffs,
  1867         -};
  1868         -
  1869         -static filter_t coiflet30_highpass_analysis = {
  1870         -    30,
  1871         -    ANTICAUSAL,
  1872         -    HIGHPASS_ANALYSIS,
  1873         -    coiflet30_highpass_analysis_coeffs,
  1874         -};
  1875         -
  1876         -static filter_t coiflet30_lowpass_synthesis = {
  1877         -    30,
  1878         -    CAUSAL,
  1879         -    LOWPASS_SYNTHESIS,
  1880         -    coiflet30_lowpass_synthesis_coeffs,
  1881         -};
  1882         -
  1883         -static filter_t coiflet30_highpass_synthesis = {
  1884         -    30,
  1885         -    CAUSAL,
  1886         -    HIGHPASS_SYNTHESIS,
  1887         -    coiflet30_highpass_synthesis_coeffs,
  1888         -};
  1889         -
  1890         -static filterbank_t coiflet30 = {
  1891         -    "coiflet30",
  1892         -    "Coiflet C30",
  1893         -    ORTHOGONAL,
  1894         -    &coiflet30_lowpass_analysis,
  1895         -    &coiflet30_highpass_analysis,
  1896         -    &coiflet30_lowpass_synthesis,
  1897         -    &coiflet30_highpass_synthesis,
  1898         -};
  1899         -
  1900         -/* Symmlets are wavelets within a minimum size support for a given
  1901         - * number of vanishing moments, but they are as symmetrical as possible,
  1902         - * as opposed to the Daubechies filters which are highly asymmetrical. */
  1903         -
  1904         -static coeff_t symmlet8_lowpass_analysis_coeffs[] = {
  1905         -    -0.075765714789357,
  1906         -    -0.029635527645960,
  1907         -    0.497618667632563,
  1908         -    0.803738751805386,
  1909         -    0.297857795605605,
  1910         -    -0.099219543576956,
  1911         -    -0.012603967262264,
  1912         -    0.032223100604078,
  1913         -};
  1914         -
  1915         -static coeff_t symmlet8_highpass_analysis_coeffs[] = {
  1916         -    0.032223100604078,
  1917         -    0.012603967262264,
  1918         -    -0.099219543576956,
  1919         -    -0.297857795605605,
  1920         -    0.803738751805386,
  1921         -    -0.497618667632563,
  1922         -    -0.029635527645960,
  1923         -    0.075765714789357,
  1924         -};
  1925         -
  1926         -static coeff_t symmlet8_lowpass_synthesis_coeffs[] = {
  1927         -    0.032223100604078,
  1928         -    -0.012603967262264,
  1929         -    -0.099219543576956,
  1930         -    0.297857795605605,
  1931         -    0.803738751805386,
  1932         -    0.497618667632563,
  1933         -    -0.029635527645960,
  1934         -    -0.075765714789357,
  1935         -};
  1936         -
  1937         -static coeff_t symmlet8_highpass_synthesis_coeffs[] = {
  1938         -    0.075765714789357,
  1939         -    -0.029635527645960,
  1940         -    -0.497618667632563,
  1941         -    0.803738751805386,
  1942         -    -0.297857795605605,
  1943         -    -0.099219543576956,
  1944         -    0.012603967262264,
  1945         -    0.032223100604078,
  1946         -};
  1947         -
  1948         -static filter_t symmlet8_lowpass_analysis = {
  1949         -    8,
  1950         -    ANTICAUSAL,
  1951         -    LOWPASS_ANALYSIS,
  1952         -    symmlet8_lowpass_analysis_coeffs,
  1953         -};
  1954         -
  1955         -static filter_t symmlet8_highpass_analysis = {
  1956         -    8,
  1957         -    ANTICAUSAL,
  1958         -    HIGHPASS_ANALYSIS,
  1959         -    symmlet8_highpass_analysis_coeffs,
  1960         -};
  1961         -
  1962         -static filter_t symmlet8_lowpass_synthesis = {
  1963         -    8,
  1964         -    CAUSAL,
  1965         -    LOWPASS_SYNTHESIS,
  1966         -    symmlet8_lowpass_synthesis_coeffs,
  1967         -};
  1968         -
  1969         -static filter_t symmlet8_highpass_synthesis = {
  1970         -    8,
  1971         -    CAUSAL,
  1972         -    HIGHPASS_SYNTHESIS,
  1973         -    symmlet8_highpass_synthesis_coeffs,
  1974         -};
  1975         -
  1976         -static filterbank_t symmlet8 = {
  1977         -    "symmlet8",
  1978         -    "Symmlet S8",
  1979         -    ORTHOGONAL,
  1980         -    &symmlet8_lowpass_analysis,
  1981         -    &symmlet8_highpass_analysis,
  1982         -    &symmlet8_lowpass_synthesis,
  1983         -    &symmlet8_highpass_synthesis,
  1984         -};
  1985         -
  1986         -/* Symmlets are wavelets within a minimum size support for a given
  1987         - * number of vanishing moments, but they are as symmetrical as possible,
  1988         - * as opposed to the Daubechies filters which are highly asymmetrical. */
  1989         -
  1990         -static coeff_t symmlet10_lowpass_analysis_coeffs[] = {
  1991         -    0.027333068345163,
  1992         -    0.029519490926072,
  1993         -    -0.039134249302581,
  1994         -    0.199397533976983,
  1995         -    0.723407690403764,
  1996         -    0.633978963456911,
  1997         -    0.016602105764423,
  1998         -    -0.175328089908097,
  1999         -    -0.021101834024929,
  2000         -    0.019538882735386,
  2001         -};
  2002         -
  2003         -static coeff_t symmlet10_highpass_analysis_coeffs[] = {
  2004         -    0.019538882735386,
  2005         -    0.021101834024929,
  2006         -    -0.175328089908097,
  2007         -    -0.016602105764423,
  2008         -    0.633978963456911,
  2009         -    -0.723407690403764,
  2010         -    0.199397533976983,
  2011         -    0.039134249302581,
  2012         -    0.029519490926072,
  2013         -    -0.027333068345163,
  2014         -};
  2015         -
  2016         -static coeff_t symmlet10_lowpass_synthesis_coeffs[] = {
  2017         -    0.019538882735386,
  2018         -    -0.021101834024929,
  2019         -    -0.175328089908097,
  2020         -    0.016602105764423,
  2021         -    0.633978963456911,
  2022         -    0.723407690403764,
  2023         -    0.199397533976983,
  2024         -    -0.039134249302581,
  2025         -    0.029519490926072,
  2026         -    0.027333068345163,
  2027         -};
  2028         -
  2029         -static coeff_t symmlet10_highpass_synthesis_coeffs[] = {
  2030         -    -0.027333068345163,
  2031         -    0.029519490926072,
  2032         -    0.039134249302581,
  2033         -    0.199397533976983,
  2034         -    -0.723407690403764,
  2035         -    0.633978963456911,
  2036         -    -0.016602105764423,
  2037         -    -0.175328089908097,
  2038         -    0.021101834024929,
  2039         -    0.019538882735386,
  2040         -};
  2041         -
  2042         -static filter_t symmlet10_lowpass_analysis = {
  2043         -    10,
  2044         -    ANTICAUSAL,
  2045         -    LOWPASS_ANALYSIS,
  2046         -    symmlet10_lowpass_analysis_coeffs,
  2047         -};
  2048         -
  2049         -static filter_t symmlet10_highpass_analysis = {
  2050         -    10,
  2051         -    ANTICAUSAL,
  2052         -    HIGHPASS_ANALYSIS,
  2053         -    symmlet10_highpass_analysis_coeffs,
  2054         -};
  2055         -
  2056         -static filter_t symmlet10_lowpass_synthesis = {
  2057         -    10,
  2058         -    CAUSAL,
  2059         -    LOWPASS_SYNTHESIS,
  2060         -    symmlet10_lowpass_synthesis_coeffs,
  2061         -};
  2062         -
  2063         -static filter_t symmlet10_highpass_synthesis = {
  2064         -    10,
  2065         -    CAUSAL,
  2066         -    HIGHPASS_SYNTHESIS,
  2067         -    symmlet10_highpass_synthesis_coeffs,
  2068         -};
  2069         -
  2070         -static filterbank_t symmlet10 = {
  2071         -    "symmlet10",
  2072         -    "Symmlet S10",
  2073         -    ORTHOGONAL,
  2074         -    &symmlet10_lowpass_analysis,
  2075         -    &symmlet10_highpass_analysis,
  2076         -    &symmlet10_lowpass_synthesis,
  2077         -    &symmlet10_highpass_synthesis,
  2078         -};
  2079         -
  2080         -/* Symmlets are wavelets within a minimum size support for a given
  2081         - * number of vanishing moments, but they are as symmetrical as possible,
  2082         - * as opposed to the Daubechies filters which are highly asymmetrical. */
  2083         -
  2084         -static coeff_t symmlet12_lowpass_analysis_coeffs[] = {
  2085         -    0.015404109327339,
  2086         -    0.003490712084331,
  2087         -    -0.117990111148417,
  2088         -    -0.048311742586001,
  2089         -    0.491055941927666,
  2090         -    0.787641141028836,
  2091         -    0.337929421728258,
  2092         -    -0.072637522786604,
  2093         -    -0.021060292512697,
  2094         -    0.044724901770751,
  2095         -    0.001767711864398,
  2096         -    -0.007800708324765,
  2097         -};
  2098         -
  2099         -static coeff_t symmlet12_highpass_analysis_coeffs[] = {
  2100         -    -0.007800708324765,
  2101         -    -0.001767711864398,
  2102         -    0.044724901770751,
  2103         -    0.021060292512697,
  2104         -    -0.072637522786604,
  2105         -    -0.337929421728258,
  2106         -    0.787641141028836,
  2107         -    -0.491055941927666,
  2108         -    -0.048311742586001,
  2109         -    0.117990111148417,
  2110         -    0.003490712084331,
  2111         -    -0.015404109327339,
  2112         -};
  2113         -
  2114         -static coeff_t symmlet12_lowpass_synthesis_coeffs[] = {
  2115         -    -0.007800708324765,
  2116         -    0.001767711864398,
  2117         -    0.044724901770751,
  2118         -    -0.021060292512697,
  2119         -    -0.072637522786604,
  2120         -    0.337929421728258,
  2121         -    0.787641141028836,
  2122         -    0.491055941927666,
  2123         -    -0.048311742586001,
  2124         -    -0.117990111148417,
  2125         -    0.003490712084331,
  2126         -    0.015404109327339,
  2127         -};
  2128         -
  2129         -static coeff_t symmlet12_highpass_synthesis_coeffs[] = {
  2130         -    -0.015404109327339,
  2131         -    0.003490712084331,
  2132         -    0.117990111148417,
  2133         -    -0.048311742586001,
  2134         -    -0.491055941927666,
  2135         -    0.787641141028836,
  2136         -    -0.337929421728258,
  2137         -    -0.072637522786604,
  2138         -    0.021060292512697,
  2139         -    0.044724901770751,
  2140         -    -0.001767711864398,
  2141         -    -0.007800708324765,
  2142         -};
  2143         -
  2144         -static filter_t symmlet12_lowpass_analysis = {
  2145         -    12,
  2146         -    ANTICAUSAL,
  2147         -    LOWPASS_ANALYSIS,
  2148         -    symmlet12_lowpass_analysis_coeffs,
  2149         -};
  2150         -
  2151         -static filter_t symmlet12_highpass_analysis = {
  2152         -    12,
  2153         -    ANTICAUSAL,
  2154         -    HIGHPASS_ANALYSIS,
  2155         -    symmlet12_highpass_analysis_coeffs,
  2156         -};
  2157         -
  2158         -static filter_t symmlet12_lowpass_synthesis = {
  2159         -    12,
  2160         -    CAUSAL,
  2161         -    LOWPASS_SYNTHESIS,
  2162         -    symmlet12_lowpass_synthesis_coeffs,
  2163         -};
  2164         -
  2165         -static filter_t symmlet12_highpass_synthesis = {
  2166         -    12,
  2167         -    CAUSAL,
  2168         -    HIGHPASS_SYNTHESIS,
  2169         -    symmlet12_highpass_synthesis_coeffs,
  2170         -};
  2171         -
  2172         -static filterbank_t symmlet12 = {
  2173         -    "symmlet12",
  2174         -    "Symmlet S12",
  2175         -    ORTHOGONAL,
  2176         -    &symmlet12_lowpass_analysis,
  2177         -    &symmlet12_highpass_analysis,
  2178         -    &symmlet12_lowpass_synthesis,
  2179         -    &symmlet12_highpass_synthesis,
  2180         -};
  2181         -
  2182         -/* Symmlets are wavelets within a minimum size support for a given
  2183         - * number of vanishing moments, but they are as symmetrical as possible,
  2184         - * as opposed to the Daubechies filters which are highly asymmetrical. */
  2185         -
  2186         -static coeff_t symmlet14_lowpass_analysis_coeffs[] = {
  2187         -    0.002681814568116,
  2188         -    -0.001047384888965,
  2189         -    -0.012636303403152,
  2190         -    0.030515513165906,
  2191         -    0.067892693501598,
  2192         -    -0.049552834937041,
  2193         -    0.017441255087110,
  2194         -    0.536101917090782,
  2195         -    0.767764317004585,
  2196         -    0.288629631750988,
  2197         -    -0.140047240442706,
  2198         -    -0.107808237703619,
  2199         -    0.004010244871703,
  2200         -    0.010268176708497,
  2201         -};
  2202         -
  2203         -static coeff_t symmlet14_highpass_analysis_coeffs[] = {
  2204         -    0.010268176708497,
  2205         -    -0.004010244871703,
  2206         -    -0.107808237703619,
  2207         -    0.140047240442706,
  2208         -    0.288629631750988,
  2209         -    -0.767764317004585,
  2210         -    0.536101917090782,
  2211         -    -0.017441255087110,
  2212         -    -0.049552834937041,
  2213         -    -0.067892693501598,
  2214         -    0.030515513165906,
  2215         -    0.012636303403152,
  2216         -    -0.001047384888965,
  2217         -    -0.002681814568116,
  2218         -};
  2219         -
  2220         -static coeff_t symmlet14_lowpass_synthesis_coeffs[] = {
  2221         -    0.010268176708497,
  2222         -    0.004010244871703,
  2223         -    -0.107808237703619,
  2224         -    -0.140047240442706,
  2225         -    0.288629631750988,
  2226         -    0.767764317004585,
  2227         -    0.536101917090782,
  2228         -    0.017441255087110,
  2229         -    -0.049552834937041,
  2230         -    0.067892693501598,
  2231         -    0.030515513165906,
  2232         -    -0.012636303403152,
  2233         -    -0.001047384888965,
  2234         -    0.002681814568116,
  2235         -};
  2236         -
  2237         -static coeff_t symmlet14_highpass_synthesis_coeffs[] = {
  2238         -    -0.002681814568116,
  2239         -    -0.001047384888965,
  2240         -    0.012636303403152,
  2241         -    0.030515513165906,
  2242         -    -0.067892693501598,
  2243         -    -0.049552834937041,
  2244         -    -0.017441255087110,
  2245         -    0.536101917090782,
  2246         -    -0.767764317004585,
  2247         -    0.288629631750988,
  2248         -    0.140047240442706,
  2249         -    -0.107808237703619,
  2250         -    -0.004010244871703,
  2251         -    0.010268176708497,
  2252         -};
  2253         -
  2254         -static filter_t symmlet14_lowpass_analysis = {
  2255         -    14,
  2256         -    ANTICAUSAL,
  2257         -    LOWPASS_ANALYSIS,
  2258         -    symmlet14_lowpass_analysis_coeffs,
  2259         -};
  2260         -
  2261         -static filter_t symmlet14_highpass_analysis = {
  2262         -    14,
  2263         -    ANTICAUSAL,
  2264         -    HIGHPASS_ANALYSIS,
  2265         -    symmlet14_highpass_analysis_coeffs,
  2266         -};
  2267         -
  2268         -static filter_t symmlet14_lowpass_synthesis = {
  2269         -    14,
  2270         -    CAUSAL,
  2271         -    LOWPASS_SYNTHESIS,
  2272         -    symmlet14_lowpass_synthesis_coeffs,
  2273         -};
  2274         -
  2275         -static filter_t symmlet14_highpass_synthesis = {
  2276         -    14,
  2277         -    CAUSAL,
  2278         -    HIGHPASS_SYNTHESIS,
  2279         -    symmlet14_highpass_synthesis_coeffs,
  2280         -};
  2281         -
  2282         -static filterbank_t symmlet14 = {
  2283         -    "symmlet14",
  2284         -    "Symmlet S14",
  2285         -    ORTHOGONAL,
  2286         -    &symmlet14_lowpass_analysis,
  2287         -    &symmlet14_highpass_analysis,
  2288         -    &symmlet14_lowpass_synthesis,
  2289         -    &symmlet14_highpass_synthesis,
  2290         -};
  2291         -
  2292         -/* Symmlets are wavelets within a minimum size support for a given
  2293         - * number of vanishing moments, but they are as symmetrical as possible,
  2294         - * as opposed to the Daubechies filters which are highly asymmetrical. */
  2295         -
  2296         -static coeff_t symmlet16_lowpass_analysis_coeffs[] = {
  2297         -    0.00188995033291,
  2298         -    -0.00030292051455,
  2299         -    -0.01495225833679,
  2300         -    0.00380875201406,
  2301         -    0.04913717967348,
  2302         -    -0.02721902991682,
  2303         -    -0.05194583810788,
  2304         -    0.36444189483599,
  2305         -    0.77718575169981,
  2306         -    0.48135965125924,
  2307         -    -0.06127335906791,
  2308         -    -0.14329423835107,
  2309         -    0.00760748732529,
  2310         -    0.03169508781035,
  2311         -    -0.00054213233164,
  2312         -    -0.00338241595136,
  2313         -};
  2314         -
  2315         -static coeff_t symmlet16_highpass_analysis_coeffs[] = {
  2316         -    -0.00338241595136,
  2317         -    0.00054213233164,
  2318         -    0.03169508781035,
  2319         -    -0.00760748732529,
  2320         -    -0.14329423835107,
  2321         -    0.06127335906791,
  2322         -    0.48135965125924,
  2323         -    -0.77718575169981,
  2324         -    0.36444189483599,
  2325         -    0.05194583810788,
  2326         -    -0.02721902991682,
  2327         -    -0.04913717967348,
  2328         -    0.00380875201406,
  2329         -    0.01495225833679,
  2330         -    -0.00030292051455,
  2331         -    -0.00188995033291,
  2332         -};
  2333         -
  2334         -static coeff_t symmlet16_lowpass_synthesis_coeffs[] = {
  2335         -    -0.00338241595136,
  2336         -    -0.00054213233164,
  2337         -    0.03169508781035,
  2338         -    0.00760748732529,
  2339         -    -0.14329423835107,
  2340         -    -0.06127335906791,
  2341         -    0.48135965125924,
  2342         -    0.77718575169981,
  2343         -    0.36444189483599,
  2344         -    -0.05194583810788,
  2345         -    -0.02721902991682,
  2346         -    0.04913717967348,
  2347         -    0.00380875201406,
  2348         -    -0.01495225833679,
  2349         -    -0.00030292051455,
  2350         -    0.00188995033291,
  2351         -};
  2352         -
  2353         -static coeff_t symmlet16_highpass_synthesis_coeffs[] = {
  2354         -    -0.00188995033291,
  2355         -    -0.00030292051455,
  2356         -    0.01495225833679,
  2357         -    0.00380875201406,
  2358         -    -0.04913717967348,
  2359         -    -0.02721902991682,
  2360         -    0.05194583810788,
  2361         -    0.36444189483599,
  2362         -    -0.77718575169981,
  2363         -    0.48135965125924,
  2364         -    0.06127335906791,
  2365         -    -0.14329423835107,
  2366         -    -0.00760748732529,
  2367         -    0.03169508781035,
  2368         -    0.00054213233164,
  2369         -    -0.00338241595136,
  2370         -};
  2371         -
  2372         -static filter_t symmlet16_lowpass_analysis = {
  2373         -    16,
  2374         -    ANTICAUSAL,
  2375         -    LOWPASS_ANALYSIS,
  2376         -    symmlet16_lowpass_analysis_coeffs,
  2377         -};
  2378         -
  2379         -static filter_t symmlet16_highpass_analysis = {
  2380         -    16,
  2381         -    ANTICAUSAL,
  2382         -    HIGHPASS_ANALYSIS,
  2383         -    symmlet16_highpass_analysis_coeffs,
  2384         -};
  2385         -
  2386         -static filter_t symmlet16_lowpass_synthesis = {
  2387         -    16,
  2388         -    CAUSAL,
  2389         -    LOWPASS_SYNTHESIS,
  2390         -    symmlet16_lowpass_synthesis_coeffs,
  2391         -};
  2392         -
  2393         -static filter_t symmlet16_highpass_synthesis = {
  2394         -    16,
  2395         -    CAUSAL,
  2396         -    HIGHPASS_SYNTHESIS,
  2397         -    symmlet16_highpass_synthesis_coeffs,
  2398         -};
  2399         -
  2400         -static filterbank_t symmlet16 = {
  2401         -    "symmlet16",
  2402         -    "Symmlet S16",
  2403         -    ORTHOGONAL,
  2404         -    &symmlet16_lowpass_analysis,
  2405         -    &symmlet16_highpass_analysis,
  2406         -    &symmlet16_lowpass_synthesis,
  2407         -    &symmlet16_highpass_synthesis,
  2408         -};
  2409         -
  2410         -/* Symmlets are wavelets within a minimum size support for a given
  2411         - * number of vanishing moments, but they are as symmetrical as possible,
  2412         - * as opposed to the Daubechies filters which are highly asymmetrical. */
  2413         -
  2414         -static coeff_t symmlet18_lowpass_analysis_coeffs[] = {
  2415         -    0.001069490032652,
  2416         -    -0.000473154498587,
  2417         -    -0.010264064027672,
  2418         -    0.008859267493501,
  2419         -    0.062077789302687,
  2420         -    -0.018233770779803,
  2421         -    -0.191550831296252,
  2422         -    0.035272488035891,
  2423         -    0.617338449140593,
  2424         -    0.717897082763343,
  2425         -    0.238760914607125,
  2426         -    -0.054568958430509,
  2427         -    0.000583462746330,
  2428         -    0.030224878857952,
  2429         -    -0.011528210207971,
  2430         -    -0.013271967781517,
  2431         -    0.000619780889054,
  2432         -    0.001400915525570,
  2433         -};
  2434         -
  2435         -static coeff_t symmlet18_highpass_analysis_coeffs[] = {
  2436         -    0.001400915525570,
  2437         -    -0.000619780889054,
  2438         -    -0.013271967781517,
  2439         -    0.011528210207971,
  2440         -    0.030224878857952,
  2441         -    -0.000583462746330,
  2442         -    -0.054568958430509,
  2443         -    -0.238760914607125,
  2444         -    0.717897082763343,
  2445         -    -0.617338449140593,
  2446         -    0.035272488035891,
  2447         -    0.191550831296252,
  2448         -    -0.018233770779803,
  2449         -    -0.062077789302687,
  2450         -    0.008859267493501,
  2451         -    0.010264064027672,
  2452         -    -0.000473154498587,
  2453         -    -0.001069490032652,
  2454         -};
  2455         -
  2456         -static coeff_t symmlet18_lowpass_synthesis_coeffs[] = {
  2457         -    0.001400915525570,
  2458         -    0.000619780889054,
  2459         -    -0.013271967781517,
  2460         -    -0.011528210207971,
  2461         -    0.030224878857952,
  2462         -    0.000583462746330,
  2463         -    -0.054568958430509,
  2464         -    0.238760914607125,
  2465         -    0.717897082763343,
  2466         -    0.617338449140593,
  2467         -    0.035272488035891,
  2468         -    -0.191550831296252,
  2469         -    -0.018233770779803,
  2470         -    0.062077789302687,
  2471         -    0.008859267493501,
  2472         -    -0.010264064027672,
  2473         -    -0.000473154498587,
  2474         -    0.001069490032652,
  2475         -};
  2476         -
  2477         -static coeff_t symmlet18_highpass_synthesis_coeffs[] = {
  2478         -    -0.001069490032652,
  2479         -    -0.000473154498587,
  2480         -    0.010264064027672,
  2481         -    0.008859267493501,
  2482         -    -0.062077789302687,
  2483         -    -0.018233770779803,
  2484         -    0.191550831296252,
  2485         -    0.035272488035891,
  2486         -    -0.617338449140593,
  2487         -    0.717897082763343,
  2488         -    -0.238760914607125,
  2489         -    -0.054568958430509,
  2490         -    -0.000583462746330,
  2491         -    0.030224878857952,
  2492         -    0.011528210207971,
  2493         -    -0.013271967781517,
  2494         -    -0.000619780889054,
  2495         -    0.001400915525570,
  2496         -};
  2497         -
  2498         -static filter_t symmlet18_lowpass_analysis = {
  2499         -    18,
  2500         -    ANTICAUSAL,
  2501         -    LOWPASS_ANALYSIS,
  2502         -    symmlet18_lowpass_analysis_coeffs,
  2503         -};
  2504         -
  2505         -static filter_t symmlet18_highpass_analysis = {
  2506         -    18,
  2507         -    ANTICAUSAL,
  2508         -    HIGHPASS_ANALYSIS,
  2509         -    symmlet18_highpass_analysis_coeffs,
  2510         -};
  2511         -
  2512         -static filter_t symmlet18_lowpass_synthesis = {
  2513         -    18,
  2514         -    CAUSAL,
  2515         -    LOWPASS_SYNTHESIS,
  2516         -    symmlet18_lowpass_synthesis_coeffs,
  2517         -};
  2518         -
  2519         -static filter_t symmlet18_highpass_synthesis = {
  2520         -    18,
  2521         -    CAUSAL,
  2522         -    HIGHPASS_SYNTHESIS,
  2523         -    symmlet18_highpass_synthesis_coeffs,
  2524         -};
  2525         -
  2526         -static filterbank_t symmlet18 = {
  2527         -    "symmlet18",
  2528         -    "Symmlet S18",
  2529         -    ORTHOGONAL,
  2530         -    &symmlet18_lowpass_analysis,
  2531         -    &symmlet18_highpass_analysis,
  2532         -    &symmlet18_lowpass_synthesis,
  2533         -    &symmlet18_highpass_synthesis,
  2534         -};
  2535         -
  2536         -/* Symmlets are wavelets within a minimum size support for a given
  2537         - * number of vanishing moments, but they are as symmetrical as possible,
  2538         - * as opposed to the Daubechies filters which are highly asymmetrical. */
  2539         -
  2540         -static coeff_t symmlet20_lowpass_analysis_coeffs[] = {
  2541         -    0.0007701598089417,
  2542         -    9.56326707637102e-05,
  2543         -    -0.0086412992741304,
  2544         -    -0.0014653825830397,
  2545         -    0.0459272392141469,
  2546         -    0.0116098939105411,
  2547         -    -0.1594942788241300,
  2548         -    -0.0708805357960178,
  2549         -    0.4716906667438780,
  2550         -    0.7695100368531890,
  2551         -    0.3838267611450020,
  2552         -    -0.0355367402980268,
  2553         -    -0.0319900568214638,
  2554         -    0.0499949720686861,
  2555         -    0.0057649120443445,
  2556         -    -0.0203549397996833,
  2557         -    -0.0008043589343686,
  2558         -    0.0045931735827084,
  2559         -    5.70360843270715e-05,
  2560         -    -0.0004593294204519,
  2561         -};
  2562         -
  2563         -static coeff_t symmlet20_highpass_analysis_coeffs[] = {
  2564         -    -0.0004593294204519,
  2565         -    -5.70360843270715e-05,
  2566         -    0.0045931735827084,
  2567         -    0.0008043589343686,
  2568         -    -0.0203549397996833,
  2569         -    -0.0057649120443445,
  2570         -    0.0499949720686861,
  2571         -    0.0319900568214638,
  2572         -    -0.0355367402980268,
  2573         -    -0.3838267611450020,
  2574         -    0.7695100368531890,
  2575         -    -0.4716906667438780,
  2576         -    -0.0708805357960178,
  2577         -    0.1594942788241300,
  2578         -    0.0116098939105411,
  2579         -    -0.0459272392141469,
  2580         -    -0.0014653825830397,
  2581         -    0.0086412992741304,
  2582         -    9.56326707637102e-05,
  2583         -    -0.0007701598089417,
  2584         -};
  2585         -
  2586         -static coeff_t symmlet20_lowpass_synthesis_coeffs[] = {
  2587         -    -0.0004593294204519,
  2588         -    5.70360843270715e-05,
  2589         -    0.0045931735827084,
  2590         -    -0.0008043589343686,
  2591         -    -0.0203549397996833,
  2592         -    0.0057649120443445,
  2593         -    0.0499949720686861,
  2594         -    -0.0319900568214638,
  2595         -    -0.0355367402980268,
  2596         -    0.3838267611450020,
  2597         -    0.7695100368531890,
  2598         -    0.4716906667438780,
  2599         -    -0.0708805357960178,
  2600         -    -0.1594942788241300,
  2601         -    0.0116098939105411,
  2602         -    0.0459272392141469,
  2603         -    -0.0014653825830397,
  2604         -    -0.0086412992741304,
  2605         -    9.56326707637102e-05,
  2606         -    0.0007701598089417,
  2607         -};
  2608         -
  2609         -static coeff_t symmlet20_highpass_synthesis_coeffs[] = {
  2610         -    -0.0007701598089417,
  2611         -    9.56326707637102e-05,
  2612         -    0.0086412992741304,
  2613         -    -0.0014653825830397,
  2614         -    -0.0459272392141469,
  2615         -    0.0116098939105411,
  2616         -    0.1594942788241300,
  2617         -    -0.0708805357960178,
  2618         -    -0.4716906667438780,
  2619         -    0.7695100368531890,
  2620         -    -0.3838267611450020,
  2621         -    -0.0355367402980268,
  2622         -    0.0319900568214638,
  2623         -    0.0499949720686861,
  2624         -    -0.0057649120443445,
  2625         -    -0.0203549397996833,
  2626         -    0.0008043589343686,
  2627         -    0.0045931735827084,
  2628         -    -5.70360843270715e-05,
  2629         -    -0.0004593294204519,
  2630         -};
  2631         -
  2632         -static filter_t symmlet20_lowpass_analysis = {
  2633         -    20,
  2634         -    ANTICAUSAL,
  2635         -    LOWPASS_ANALYSIS,
  2636         -    symmlet20_lowpass_analysis_coeffs,
  2637         -};
  2638         -
  2639         -static filter_t symmlet20_highpass_analysis = {
  2640         -    20,
  2641         -    ANTICAUSAL,
  2642         -    HIGHPASS_ANALYSIS,
  2643         -    symmlet20_highpass_analysis_coeffs,
  2644         -};
  2645         -
  2646         -static filter_t symmlet20_lowpass_synthesis = {
  2647         -    20,
  2648         -    CAUSAL,
  2649         -    LOWPASS_SYNTHESIS,
  2650         -    symmlet20_lowpass_synthesis_coeffs,
  2651         -};
  2652         -
  2653         -static filter_t symmlet20_highpass_synthesis = {
  2654         -    20,
  2655         -    CAUSAL,
  2656         -    HIGHPASS_SYNTHESIS,
  2657         -    symmlet20_highpass_synthesis_coeffs,
  2658         -};
  2659         -
  2660         -static filterbank_t symmlet20 = {
  2661         -    "symmlet20",
  2662         -    "Symmlet S20",
  2663         -    ORTHOGONAL,
  2664         -    &symmlet20_lowpass_analysis,
  2665         -    &symmlet20_highpass_analysis,
  2666         -    &symmlet20_lowpass_synthesis,
  2667         -    &symmlet20_highpass_synthesis,
  2668         -};
  2669         -
  2670         -/* Odegard's 9/7 filter. */
  2671         -
  2672         -static coeff_t odegard97_lowpass_analysis_coeffs[] = {
  2673         -    0.7875137715277921,
  2674         -    0.3869718638726204,
  2675         -    -0.0930692637035827,
  2676         -    -0.0334184732793468,
  2677         -    0.0528657685329605,
  2678         -};
  2679         -
  2680         -static coeff_t odegard97_highpass_analysis_coeffs[] = {
  2681         -    -0.8167806349921064,
  2682         -    0.4403017067249854,
  2683         -    0.0548369269027794,
  2684         -    -0.0867483161317116,
  2685         -};
  2686         -
  2687         -static coeff_t odegard97_lowpass_synthesis_coeffs[] = {
  2688         -    0.8167806349921064,
  2689         -    0.4403017067249854,
  2690         -    -0.0548369269027794,
  2691         -    -0.0867483161317116,
  2692         -};
  2693         -
  2694         -static coeff_t odegard97_highpass_synthesis_coeffs[] = {
  2695         -    -0.7875137715277921,
  2696         -    0.3869718638726204,
  2697         -    0.0930692637035827,
  2698         -    -0.0334184732793468,
  2699         -    -0.0528657685329605,
  2700         -};
  2701         -
  2702         -static filter_t odegard97_lowpass_analysis = {
  2703         -    5,
  2704         -    SYMMETRIC_WHOLE,
  2705         -    LOWPASS_ANALYSIS,
  2706         -    odegard97_lowpass_analysis_coeffs,
  2707         -};
  2708         -
  2709         -static filter_t odegard97_highpass_analysis = {
  2710         -    4,
  2711         -    SYMMETRIC_WHOLE,
  2712         -    HIGHPASS_ANALYSIS,
  2713         -    odegard97_highpass_analysis_coeffs,
  2714         -};
  2715         -
  2716         -static filter_t odegard97_lowpass_synthesis = {
  2717         -    4,
  2718         -    SYMMETRIC_WHOLE,
  2719         -    LOWPASS_SYNTHESIS,
  2720         -    odegard97_lowpass_synthesis_coeffs,
  2721         -};
  2722         -
  2723         -static filter_t odegard97_highpass_synthesis = {
  2724         -    5,
  2725         -    SYMMETRIC_WHOLE,
  2726         -    HIGHPASS_SYNTHESIS,
  2727         -    odegard97_highpass_synthesis_coeffs,
  2728         -};
  2729         -
  2730         -static filterbank_t odegard97 = {
  2731         -    "odegard97",
  2732         -    "Odegard 9/7",
  2733         -    BIORTHOGONAL,
  2734         -    &odegard97_lowpass_analysis,
  2735         -    &odegard97_highpass_analysis,
  2736         -    &odegard97_lowpass_synthesis,
  2737         -    &odegard97_highpass_synthesis,
  2738         -};
  2739         -
  2740         -/* 9/7 filter from M. Antonini, M. Barlaud, P. Mathieu, and
  2741         - * I. Daubechies, "Image coding using wavelet transform", IEEE
  2742         - * Transactions on Image Processing, Vol. pp. 205-220, 1992. */
  2743         -
  2744         -static coeff_t daub97_lowpass_analysis_coeffs[] = {
  2745         -    0.8526986790088938,
  2746         -    0.3774028556128306,
  2747         -    -0.1106244044184372,
  2748         -    -0.0238494650195568,
  2749         -    0.0378284555072640,
  2750         -};
  2751         -
  2752         -static coeff_t daub97_highpass_analysis_coeffs[] = {
  2753         -    -0.7884856164063712,
  2754         -    0.4180922732220353,
  2755         -    0.0406894176092047,
  2756         -    -0.0645388826287616,
  2757         -};
  2758         -
  2759         -static coeff_t daub97_lowpass_synthesis_coeffs[] = {
  2760         -    0.7884856164063712,
  2761         -    0.4180922732220353,
  2762         -    -0.0406894176092047,
  2763         -    -0.0645388826287616,
  2764         -};
  2765         -
  2766         -static coeff_t daub97_highpass_synthesis_coeffs[] = {
  2767         -    -0.8526986790088938,
  2768         -    0.3774028556128306,
  2769         -    0.1106244044184372,
  2770         -    -0.0238494650195568,
  2771         -    -0.0378284555072640,
  2772         -};
  2773         -
  2774         -static filter_t daub97_lowpass_analysis = {
  2775         -    5,
  2776         -    SYMMETRIC_WHOLE,
  2777         -    LOWPASS_ANALYSIS,
  2778         -    daub97_lowpass_analysis_coeffs,
  2779         -};
  2780         -
  2781         -static filter_t daub97_highpass_analysis = {
  2782         -    4,
  2783         -    SYMMETRIC_WHOLE,
  2784         -    HIGHPASS_ANALYSIS,
  2785         -    daub97_highpass_analysis_coeffs,
  2786         -};
  2787         -
  2788         -static filter_t daub97_lowpass_synthesis = {
  2789         -    4,
  2790         -    SYMMETRIC_WHOLE,
  2791         -    LOWPASS_SYNTHESIS,
  2792         -    daub97_lowpass_synthesis_coeffs,
  2793         -};
  2794         -
  2795         -static filter_t daub97_highpass_synthesis = {
  2796         -    5,
  2797         -    SYMMETRIC_WHOLE,
  2798         -    HIGHPASS_SYNTHESIS,
  2799         -    daub97_highpass_synthesis_coeffs,
  2800         -};
  2801         -
  2802         -static filterbank_t daub97 = {
  2803         -    "daub97",
  2804         -    "Daubechies 9/7",
  2805         -    BIORTHOGONAL,
  2806         -    &daub97_lowpass_analysis,
  2807         -    &daub97_highpass_analysis,
  2808         -    &daub97_lowpass_synthesis,
  2809         -    &daub97_highpass_synthesis,
  2810         -};
  2811         -
  2812         -static filterbank_t daub97lift = {
  2813         -    "daub97lift",
  2814         -    "Daubechies 9/7 (Lifting)",
  2815         -    BIORTHOGONAL,
  2816         -    NULL,
  2817         -    NULL,
  2818         -    NULL,
  2819         -    NULL,
  2820         -};
  2821         -
  2822         -/* A. Cohen, I. Daubechies, J. C. Feauveau, "Biorthogonal Bases of
  2823         - * Compactly Supported Wavelets," Communications on Pure and
  2824         - * Applied Mathematics, vol. 45, no. 5, pp. 485-560, May 1992. */
  2825         -
  2826         -static coeff_t cdf53_lowpass_analysis_coeffs[] = {
  2827         -    1.06066017177982,
  2828         -    0.35355339059327,
  2829         -    -0.17677669529664,
  2830         -};
  2831         -
  2832         -static coeff_t cdf53_highpass_analysis_coeffs[] = {
  2833         -    -0.70710678118655,
  2834         -    0.35355339059327,
  2835         -};
  2836         -
  2837         -static coeff_t cdf53_lowpass_synthesis_coeffs[] = {
  2838         -    0.70710678118655,
  2839         -    0.35355339059327,
  2840         -};
  2841         -
  2842         -static coeff_t cdf53_highpass_synthesis_coeffs[] = {
  2843         -    -1.06066017177982,
  2844         -    0.35355339059327,
  2845         -    0.17677669529664,
  2846         -};
  2847         -
  2848         -static filter_t cdf53_lowpass_analysis = {
  2849         -    3,
  2850         -    SYMMETRIC_WHOLE,
  2851         -    LOWPASS_ANALYSIS,
  2852         -    cdf53_lowpass_analysis_coeffs,
  2853         -};
  2854         -
  2855         -static filter_t cdf53_highpass_analysis = {
  2856         -    2,
  2857         -    SYMMETRIC_WHOLE,
  2858         -    HIGHPASS_ANALYSIS,
  2859         -    cdf53_highpass_analysis_coeffs,
  2860         -};
  2861         -
  2862         -static filter_t cdf53_lowpass_synthesis = {
  2863         -    2,
  2864         -    SYMMETRIC_WHOLE,
  2865         -    LOWPASS_SYNTHESIS,
  2866         -    cdf53_lowpass_synthesis_coeffs,
  2867         -};
  2868         -
  2869         -static filter_t cdf53_highpass_synthesis = {
  2870         -    3,
  2871         -    SYMMETRIC_WHOLE,
  2872         -    HIGHPASS_SYNTHESIS,
  2873         -    cdf53_highpass_synthesis_coeffs,
  2874         -};
  2875         -
  2876         -static filterbank_t cdf53 = {
  2877         -    "cdf53",
  2878         -    "Cohen Daubechies Feauveau 5/3",
  2879         -    BIORTHOGONAL,
  2880         -    &cdf53_lowpass_analysis,
  2881         -    &cdf53_highpass_analysis,
  2882         -    &cdf53_lowpass_synthesis,
  2883         -    &cdf53_highpass_synthesis,
  2884         -};
  2885         -
  2886         -/* A. Cohen, I. Daubechies, J. C. Feauveau, "Biorthogonal Bases of
  2887         - * Compactly Supported Wavelets," Communications on Pure and
  2888         - * Applied Mathematics, vol. 45, no. 5, pp. 485-560, May 1992. */
  2889         -
  2890         -static coeff_t cdf93_lowpass_analysis_coeffs[] = {
  2891         -    0.99436891104360,
  2892         -    0.41984465132952,
  2893         -    -0.17677669529665,
  2894         -    -0.06629126073624,
  2895         -    0.03314563036812,
  2896         -};
  2897         -
  2898         -static coeff_t cdf93_highpass_analysis_coeffs[] = {
  2899         -    -0.70710678118655,
  2900         -    0.35355339059327,
  2901         -};
  2902         -
  2903         -static coeff_t cdf93_lowpass_synthesis_coeffs[] = {
  2904         -    0.70710678118655,
  2905         -    0.35355339059327,
  2906         -};
  2907         -
  2908         -static coeff_t cdf93_highpass_synthesis_coeffs[] = {
  2909         -    -0.99436891104360,
  2910         -    0.41984465132952,
  2911         -    0.17677669529665,
  2912         -    -0.06629126073624,
  2913         -    -0.03314563036812,
  2914         -};
  2915         -
  2916         -static filter_t cdf93_lowpass_analysis = {
  2917         -    5,
  2918         -    SYMMETRIC_WHOLE,
  2919         -    LOWPASS_ANALYSIS,
  2920         -    cdf93_lowpass_analysis_coeffs,
  2921         -};
  2922         -
  2923         -static filter_t cdf93_highpass_analysis = {
  2924         -    2,
  2925         -    SYMMETRIC_WHOLE,
  2926         -    HIGHPASS_ANALYSIS,
  2927         -    cdf93_highpass_analysis_coeffs,
  2928         -};
  2929         -
  2930         -static filter_t cdf93_lowpass_synthesis = {
  2931         -    2,
  2932         -    SYMMETRIC_WHOLE,
  2933         -    LOWPASS_SYNTHESIS,
  2934         -    cdf93_lowpass_synthesis_coeffs,
  2935         -};
  2936         -
  2937         -static filter_t cdf93_highpass_synthesis = {
  2938         -    5,
  2939         -    SYMMETRIC_WHOLE,
  2940         -    HIGHPASS_SYNTHESIS,
  2941         -    cdf93_highpass_synthesis_coeffs,
  2942         -};
  2943         -
  2944         -static filterbank_t cdf93 = {
  2945         -    "cdf93",
  2946         -    "Cohen Daubechies Feauveau 9/3",
  2947         -    BIORTHOGONAL,
  2948         -    &cdf93_lowpass_analysis,
  2949         -    &cdf93_highpass_analysis,
  2950         -    &cdf93_lowpass_synthesis,
  2951         -    &cdf93_highpass_synthesis,
  2952         -};
  2953         -
  2954         -/* A. Cohen, I. Daubechies, J. C. Feauveau, "Biorthogonal Bases of
  2955         - * Compactly Supported Wavelets," Communications on Pure and
  2956         - * Applied Mathematics, vol. 45, no. 5, pp. 485-560, May 1992. */
  2957         -
  2958         -static coeff_t cdf133_lowpass_analysis_coeffs[] = {
  2959         -    0.96674755240348,
  2960         -    0.44746600996961,
  2961         -    -0.16987135563661,
  2962         -    -0.10772329869638,
  2963         -    0.04695630968816,
  2964         -    0.01381067932004,
  2965         -    -0.00690533966002,
  2966         -};
  2967         -
  2968         -static coeff_t cdf133_highpass_analysis_coeffs[] = {
  2969         -    -0.70710678118655,
  2970         -    0.35355339059327,
  2971         -};
  2972         -
  2973         -static coeff_t cdf133_lowpass_synthesis_coeffs[] = {
  2974         -    0.70710678118655,
  2975         -    0.35355339059327,
  2976         -};
  2977         -
  2978         -static coeff_t cdf133_highpass_synthesis_coeffs[] = {
  2979         -    -0.96674755240348,
  2980         -    0.44746600996961,
  2981         -    0.16987135563661,
  2982         -    -0.10772329869638,
  2983         -    -0.04695630968816,
  2984         -    0.01381067932004,
  2985         -    0.00690533966002,
  2986         -};
  2987         -
  2988         -static filter_t cdf133_lowpass_analysis = {
  2989         -    7,
  2990         -    SYMMETRIC_WHOLE,
  2991         -    LOWPASS_ANALYSIS,
  2992         -    cdf133_lowpass_analysis_coeffs,
  2993         -};
  2994         -
  2995         -static filter_t cdf133_highpass_analysis = {
  2996         -    2,
  2997         -    SYMMETRIC_WHOLE,
  2998         -    HIGHPASS_ANALYSIS,
  2999         -    cdf133_highpass_analysis_coeffs,
  3000         -};
  3001         -
  3002         -static filter_t cdf133_lowpass_synthesis = {
  3003         -    2,
  3004         -    SYMMETRIC_WHOLE,
  3005         -    LOWPASS_SYNTHESIS,
  3006         -    cdf133_lowpass_synthesis_coeffs,
  3007         -};
  3008         -
  3009         -static filter_t cdf133_highpass_synthesis = {
  3010         -    7,
  3011         -    SYMMETRIC_WHOLE,
  3012         -    HIGHPASS_SYNTHESIS,
  3013         -    cdf133_highpass_synthesis_coeffs,
  3014         -};
  3015         -
  3016         -static filterbank_t cdf133 = {
  3017         -    "cdf133",
  3018         -    "Cohen Daubechies Feauveau 13/3",
  3019         -    BIORTHOGONAL,
  3020         -    &cdf133_lowpass_analysis,
  3021         -    &cdf133_highpass_analysis,
  3022         -    &cdf133_lowpass_synthesis,
  3023         -    &cdf133_highpass_synthesis,
  3024         -};
  3025         -
  3026         -/* A. Cohen, I. Daubechies, J. C. Feauveau, "Biorthogonal Bases of
  3027         - * Compactly Supported Wavelets," Communications on Pure and
  3028         - * Applied Mathematics, vol. 45, no. 5, pp. 485-560, May 1992. */
  3029         -
  3030         -static coeff_t cdf173_lowpass_analysis_coeffs[] = {
  3031         -    0.95164212189717,
  3032         -    0.46257144047591,
  3033         -    -0.16382918343409,
  3034         -    -0.13491307360773,
  3035         -    0.05299848189069,
  3036         -    0.02891610982635,
  3037         -    -0.01294751186254,
  3038         -    -0.00302108610126,
  3039         -    0.00151054305063,
  3040         -};
  3041         -
  3042         -static coeff_t cdf173_highpass_analysis_coeffs[] = {
  3043         -    -0.70710678118655,
  3044         -    0.35355339059327,
  3045         -};
  3046         -
  3047         -static coeff_t cdf173_lowpass_synthesis_coeffs[] = {
  3048         -    0.70710678118655,
  3049         -    0.35355339059327,
  3050         -};
  3051         -
  3052         -static coeff_t cdf173_highpass_synthesis_coeffs[] = {
  3053         -    -0.95164212189717,
  3054         -    0.46257144047591,
  3055         -    0.16382918343409,
  3056         -    -0.13491307360773,
  3057         -    -0.05299848189069,
  3058         -    0.02891610982635,
  3059         -    0.01294751186254,
  3060         -    -0.00302108610126,
  3061         -    -0.00151054305063,
  3062         -};
  3063         -
  3064         -static filter_t cdf173_lowpass_analysis = {
  3065         -    9,
  3066         -    SYMMETRIC_WHOLE,
  3067         -    LOWPASS_ANALYSIS,
  3068         -    cdf173_lowpass_analysis_coeffs,
  3069         -};
  3070         -
  3071         -static filter_t cdf173_highpass_analysis = {
  3072         -    2,
  3073         -    SYMMETRIC_WHOLE,
  3074         -    HIGHPASS_ANALYSIS,
  3075         -    cdf173_highpass_analysis_coeffs,
  3076         -};
  3077         -
  3078         -static filter_t cdf173_lowpass_synthesis = {
  3079         -    2,
  3080         -    SYMMETRIC_WHOLE,
  3081         -    LOWPASS_SYNTHESIS,
  3082         -    cdf173_lowpass_synthesis_coeffs,
  3083         -};
  3084         -
  3085         -static filter_t cdf173_highpass_synthesis = {
  3086         -    9,
  3087         -    SYMMETRIC_WHOLE,
  3088         -    HIGHPASS_SYNTHESIS,
  3089         -    cdf173_highpass_synthesis_coeffs,
  3090         -};
  3091         -
  3092         -static filterbank_t cdf173 = {
  3093         -    "cdf173",
  3094         -    "Cohen Daubechies Feauveau 17/3",
  3095         -    BIORTHOGONAL,
  3096         -    &cdf173_lowpass_analysis,
  3097         -    &cdf173_highpass_analysis,
  3098         -    &cdf173_lowpass_synthesis,
  3099         -    &cdf173_highpass_synthesis,
  3100         -};
  3101         -
  3102         -/* Filter from J. Villasenor, B. Belzer, J. Liao, "Wavelet Filter
  3103         - * Evaluation for Image Compression." IEEE Transactions on Image
  3104         - * Processing, Vol. 2, pp. 1053-1060, August 1995. */
  3105         -
  3106         -static coeff_t villa1311_lowpass_analysis_coeffs[] = {
  3107         -    0.7672451593927493,
  3108         -    0.3832692613243884,
  3109         -    -0.0688781141906103,
  3110         -    -0.0334750810478015,
  3111         -    0.0472817528288275,
  3112         -    0.0037592103166868,
  3113         -    -0.0084728277413181,
  3114         -};
  3115         -
  3116         -static coeff_t villa1311_highpass_analysis_coeffs[] = {
  3117         -    -0.8328475700934288,
  3118         -    0.4481085999263908,
  3119         -    0.0691627101203004,
  3120         -    -0.1087373652243805,
  3121         -    -0.0062923156668598,
  3122         -    0.0141821558912635,
  3123         -};
  3124         -
  3125         -static coeff_t villa1311_lowpass_synthesis_coeffs[] = {
  3126         -    0.8328475700934288,
  3127         -    0.4481085999263908,
  3128         -    -0.0691627101203004,
  3129         -    -0.1087373652243805,
  3130         -    0.0062923156668598,
  3131         -    0.0141821558912635,
  3132         -};
  3133         -
  3134         -static coeff_t villa1311_highpass_synthesis_coeffs[] = {
  3135         -    -0.7672451593927493,
  3136         -    0.3832692613243884,
  3137         -    0.0688781141906103,
  3138         -    -0.0334750810478015,
  3139         -    -0.0472817528288275,
  3140         -    0.0037592103166868,
  3141         -    0.0084728277413181,
  3142         -};
  3143         -
  3144         -static filter_t villa1311_lowpass_analysis = {
  3145         -    7,
  3146         -    SYMMETRIC_WHOLE,
  3147         -    LOWPASS_ANALYSIS,
  3148         -    villa1311_lowpass_analysis_coeffs,
  3149         -};
  3150         -
  3151         -static filter_t villa1311_highpass_analysis = {
  3152         -    6,
  3153         -    SYMMETRIC_WHOLE,
  3154         -    HIGHPASS_ANALYSIS,
  3155         -    villa1311_highpass_analysis_coeffs,
  3156         -};
  3157         -
  3158         -static filter_t villa1311_lowpass_synthesis = {
  3159         -    6,
  3160         -    SYMMETRIC_WHOLE,
  3161         -    LOWPASS_SYNTHESIS,
  3162         -    villa1311_lowpass_synthesis_coeffs,
  3163         -};
  3164         -
  3165         -static filter_t villa1311_highpass_synthesis = {
  3166         -    7,
  3167         -    SYMMETRIC_WHOLE,
  3168         -    HIGHPASS_SYNTHESIS,
  3169         -    villa1311_highpass_synthesis_coeffs,
  3170         -};
  3171         -
  3172         -static filterbank_t villa1311 = {
  3173         -    "villa1311",
  3174         -    "Villasenor 13/11",
  3175         -    BIORTHOGONAL,
  3176         -    &villa1311_lowpass_analysis,
  3177         -    &villa1311_highpass_analysis,
  3178         -    &villa1311_lowpass_synthesis,
  3179         -    &villa1311_highpass_synthesis,
  3180         -};
  3181         -
  3182         -/* Append filterbank reference to this array: this is the only
  3183         - * thing you need to do by hand. The rest of the work will be done
  3184         - * by the make_filterbank.pl utility: just cut-and-paste its output. */
  3185         -
  3186         -filterbank_t *filterbanks[] = {
  3187         -    &haar,
  3188         -    &daub4,
  3189         -    &daub6,
  3190         -    &daub8,
  3191         -    &daub10,
  3192         -    &daub12,
  3193         -    &daub14,
  3194         -    &daub16,
  3195         -    &daub18,
  3196         -    &daub20,
  3197         -    &beylkin,
  3198         -    &vaidyanathan,
  3199         -    &coiflet6,
  3200         -    &coiflet12,
  3201         -    &coiflet18,
  3202         -    &coiflet24,
  3203         -    &coiflet30,
  3204         -    &symmlet8,
  3205         -    &symmlet10,
  3206         -    &symmlet12,
  3207         -    &symmlet14,
  3208         -    &symmlet16,
  3209         -    &symmlet18,
  3210         -    &symmlet20,
  3211         -    &odegard97,
  3212         -    &daub97,
  3213         -    &daub97lift,
  3214         -    &cdf53,
  3215         -    &cdf93,
  3216         -    &cdf133,
  3217         -    &cdf173,
  3218         -    &villa1311,
  3219         -    NULL
  3220         -};

Deleted epsilon/filterbank.h.

     1         -/*
     2         - * $Id: filterbank.h,v 1.15 2007/05/20 13:19:12 simakov Exp $
     3         - *
     4         - * EPSILON - wavelet image compression library.
     5         - * Copyright (C) 2006-2007 Alexander Simakov, <xander@entropyware.info>
     6         - *
     7         - * This program is free software; you can redistribute it and/or modify
     8         - * it under the terms of the GNU General Public License as published by
     9         - * the Free Software Foundation; either version 2 of the License, or
    10         - * (at your option) any later version.
    11         - *
    12         - * This program is distributed in the hope that it will be useful,
    13         - * but WITHOUT ANY WARRANTY; without even the implied warranty of
    14         - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    15         - * GNU General Public License for more details.
    16         - *
    17         - * You should have received a copy of the GNU General Public License
    18         - * along with this program; if not, write to the Free Software
    19         - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
    20         - *
    21         - * http://epsilon-project.sourceforge.net
    22         - */
    23         -
    24         -/** \file
    25         - *
    26         - *  \brief Filter banks
    27         - *
    28         - *  This file holds defines for filter and filterbank
    29         - *  data structures.
    30         - *
    31         - *  \section References
    32         - *
    33         - *  Gilbert Strang, Truong Nguyen "Wavelets and Filter Banks". */
    34         -
    35         -#ifndef __FILTERBANK_H__
    36         -#define __FILTERBANK_H__
    37         -
    38         -#ifdef __cplusplus
    39         -extern "C"
    40         -{
    41         -#endif
    42         -
    43         -/** \addtogroup wavelet Wavelet transform */
    44         -/*@{*/
    45         -
    46         -#include <common.h>
    47         -
    48         -/** Causal filter: h[i] = 0, i < 0 */
    49         -#define CAUSAL                  0
    50         -/** Anticausal filter: h[i] = 0, i > 0 */
    51         -#define ANTICAUSAL              1
    52         -/** Symmetric-whole filter: h[-i] = h[i] */
    53         -#define SYMMETRIC_WHOLE         2
    54         -/** Symmetric-half filter: h[-i] = h[i - 1] */
    55         -#define SYMMETRIC_HALF          3
    56         -
    57         -/** Lowpass analysis filter */
    58         -#define LOWPASS_ANALYSIS        0
    59         -/** Highpass analysis filter */
    60         -#define HIGHPASS_ANALYSIS       1
    61         -/** Lowpass synthesis filter */
    62         -#define LOWPASS_SYNTHESIS       2
    63         -/** Highpass synthesis filter */
    64         -#define HIGHPASS_SYNTHESIS      3
    65         -
    66         -/** Orthogonal filterbank */
    67         -#define ORTHOGONAL              0
    68         -/** Biothogonal filterbank */
    69         -#define BIORTHOGONAL            1
    70         -
    71         -/** Even subsampling phase */
    72         -#define PHASE_EVEN              0
    73         -/** Odd subsampling phase */
    74         -#define PHASE_ODD               1
    75         -
    76         -/** Filter structure
    77         - *
    78         - *  This structure represents a standalone filter.
    79         - *
    80         - *  \note There is no need to keep all coefficients for symmetric
    81         - *  filters. Only half (h[i], i >= 0) of them is kept. */
    82         -    typedef struct filter_t_tag
    83         -    {
    84         -    /** Filter length */
    85         -	int length;
    86         -    /** Filter causality */
    87         -	int causality;
    88         -    /** Filter type */
    89         -	int type;
    90         -    /** Filter coefficients */
    91         -	coeff_t *coeffs;
    92         -    } filter_t;
    93         -
    94         -/** Filterbank structure
    95         - *
    96         - *  Filter bank consists of two filter pairs. */
    97         -    typedef struct filterbank_t_tag
    98         -    {
    99         -    /** Short filter name (for a program) */
   100         -	char *id;
   101         -    /** Long filter name (for a user) */
   102         -	char *name;
   103         -    /** Filterbank type */
   104         -	int type;
   105         -    /** Lowpass analysis filter */
   106         -	filter_t *lowpass_analysis;
   107         -    /** Highpass analysis filter */
   108         -	filter_t *highpass_analysis;
   109         -    /** Lowpass synthesis filter */
   110         -	filter_t *lowpass_synthesis;
   111         -    /** Highpass synthesis filter */
   112         -	filter_t *highpass_synthesis;
   113         -    } filterbank_t;
   114         -
   115         -/** External array of all available filter banks
   116         - *
   117         - *  This array hold pointers to all available filter banks.
   118         - *  Last element is always \c NULL. */
   119         -    extern filterbank_t *filterbanks[];
   120         -
   121         -/*@}*/
   122         -
   123         -#ifdef __cplusplus
   124         -}
   125         -#endif
   126         -
   127         -#endif				/* __FILTERBANK_H__ */

Deleted epsilon/libmain.c.

     1         -/*
     2         - * $Id: libmain.c,v 1.59 2008/03/25 19:31:45 simakov Exp $
     3         - *
     4         - * EPSILON - wavelet image compression library.
     5         - * Copyright (C) 2006-2007 Alexander Simakov, <xander@entropyware.info>
     6         - *
     7         - * This program is free software; you can redistribute it and/or modify
     8         - * it under the terms of the GNU General Public License as published by
     9         - * the Free Software Foundation; either version 2 of the License, or
    10         - * (at your option) any later version.
    11         - *
    12         - * This program is distributed in the hope that it will be useful,
    13         - * but WITHOUT ANY WARRANTY; without even the implied warranty of
    14         - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    15         - * GNU General Public License for more details.
    16         - *
    17         - * You should have received a copy of the GNU General Public License
    18         - * along with this program; if not, write to the Free Software
    19         - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
    20         - *
    21         - * http://epsilon-project.sourceforge.net
    22         - */
    23         -
    24         -#include <epsilon.h>
    25         -#include <libmain.h>
    26         -#include <common.h>
    27         -#include <filter.h>
    28         -#include <filterbank.h>
    29         -#include <cobs.h>
    30         -#include <color.h>
    31         -#include <mem_alloc.h>
    32         -#include <dc_level.h>
    33         -#include <resample.h>
    34         -#include <checksum.h>
    35         -#include <pad.h>
    36         -#include <merge_split.h>
    37         -#include <speck.h>
    38         -#include <string.h>
    39         -
    40         -#if defined(_WIN32) && !defined(__MINGW32__)
    41         -#define snprintf	_snprintf
    42         -#endif /* not using the MSVC compiler */
    43         -
    44         -local void
    45         -round_channel (coeff_t ** in_channel, int **out_channel, int channel_size)
    46         -{
    47         -    int i, j;
    48         -
    49         -    for (i = 0; i < channel_size; i++)
    50         -      {
    51         -	  for (j = 0; j < channel_size; j++)
    52         -	    {
    53         -		out_channel[i][j] = (int) ROUND (in_channel[i][j]);
    54         -	    }
    55         -      }
    56         -}
    57         -
    58         -local void
    59         -copy_channel (int **in_channel, coeff_t ** out_channel, int channel_size)
    60         -{
    61         -    int i, j;
    62         -
    63         -    /* Expand data from int to coeff_t */
    64         -    for (i = 0; i < channel_size; i++)
    65         -      {
    66         -	  for (j = 0; j < channel_size; j++)
    67         -	    {
    68         -		out_channel[i][j] = in_channel[i][j];
    69         -	    }
    70         -      }
    71         -}
    72         -
    73         -local void
    74         -reset_RGB (unsigned char **block_R, unsigned char **block_G,
    75         -	   unsigned char **block_B, int width, int height)
    76         -{
    77         -    int i, j;
    78         -
    79         -    /* Reset everything to zero */
    80         -    for (i = 0; i < height; i++)
    81         -      {
    82         -	  for (j = 0; j < width; j++)
    83         -	    {
    84         -		block_R[i][j] = block_G[i][j] = block_B[i][j] = 0;
    85         -	    }
    86         -      }
    87         -}
    88         -
    89         -local void
    90         -reset_Y (unsigned char **block_Y, int width, int height)
    91         -{
    92         -    int i, j;
    93         -
    94         -    /* Reset everything to zero */
    95         -    for (i = 0; i < height; i++)
    96         -      {
    97         -	  for (j = 0; j < width; j++)
    98         -	    {
    99         -		block_Y[i][j] = 0;
   100         -	    }
   101         -      }
   102         -}
   103         -
   104         -local filterbank_t *
   105         -get_fb (char *id)
   106         -{
   107         -    int i, n;
   108         -
   109         -    /* Get the number of all available filterbanks */
   110         -    for (n = 0; filterbanks[n]; n++);
   111         -
   112         -    /* Find id in the list */
   113         -    for (i = 0; i < n; i++)
   114         -      {
   115         -	  if (strcmp (id, filterbanks[i]->id) == 0)
   116         -	    {
   117         -		return filterbanks[i];
   118         -	    }
   119         -      }
   120         -
   121         -    return NULL;
   122         -}
   123         -
   124         -local int
   125         -get_block_size (int w, int h, int mode, int min)
   126         -{
   127         -    int max = MAX (MAX (w, h), min);
   128         -    int bits = number_of_bits (max);
   129         -
   130         -    if (mode == EPS_MODE_NORMAL)
   131         -      {
   132         -	  /* W = H = 2 ^ N */
   133         -	  if (max == (1 << (bits - 1)))
   134         -	    {
   135         -		return max;
   136         -	    }
   137         -	  else
   138         -	    {
   139         -		return (1 << bits);
   140         -	    }
   141         -      }
   142         -    else
   143         -      {
   144         -	  /* W = H = 2 ^ N + 1 */
   145         -	  if (max == (1 << (bits - 1)) + 1)
   146         -	    {
   147         -		return max;
   148         -	    }
   149         -	  else if (max == (1 << (bits - 1)))
   150         -	    {
   151         -		return max + 1;
   152         -	    }
   153         -	  else
   154         -	    {
   155         -		return (1 << bits) + 1;
   156         -	    }
   157         -      }
   158         -}
   159         -
   160         -local int
   161         -terminate_header (unsigned char *buf, int buf_size, int n_fields)
   162         -{
   163         -    int field, i;
   164         -
   165         -    /* Report an error if data contains at least one zero byte */
   166         -    for (i = 0; i < buf_size; i++)
   167         -      {
   168         -	  if (!buf[i])
   169         -	    {
   170         -		return EPS_FORMAT_ERROR;
   171         -	    }
   172         -      }
   173         -
   174         -    /* Find n-th occurence of ';' symbol and replace it with zero */
   175         -    for (i = 0, field = 1; i < buf_size; i++)
   176         -      {
   177         -	  if (buf[i] == ';')
   178         -	    {
   179         -		if (field == n_fields)
   180         -		  {
   181         -		      buf[i] = 0;
   182         -		      return EPS_OK;
   183         -		  }
   184         -
   185         -		field++;
   186         -	    }
   187         -      }
   188         -
   189         -    return EPS_FORMAT_ERROR;
   190         -}
   191         -
   192         -local void
   193         -unterminate_header (unsigned char *buf)
   194         -{
   195         -    buf[strlen ((char *) buf)] = ';';
   196         -}
   197         -
   198         -local int
   199         -header_sanity_check (unsigned char *buf)
   200         -{
   201         -    int i, len;
   202         -
   203         -    len = strlen ((char *) buf);
   204         -
   205         -    /* Check header for malicious symbols */
   206         -    for (i = 0; i < len; i++)
   207         -      {
   208         -	  if ((buf[i] >= 'A') && (buf[i] <= 'Z'))
   209         -	    {
   210         -		continue;
   211         -	    }
   212         -
   213         -	  if ((buf[i] >= 'a') && (buf[i] <= 'z'))
   214         -	    {
   215         -		continue;
   216         -	    }
   217         -
   218         -	  if ((buf[i] >= '0') && (buf[i] <= '9'))
   219         -	    {
   220         -		continue;
   221         -	    }
   222         -
   223         -	  if ((buf[i] == ';') || (buf[i] == '=') ||
   224         -	      (buf[i] == '-') || (buf[i] == ':'))
   225         -	    {
   226         -		continue;
   227         -	    }
   228         -
   229         -	  return EPS_FORMAT_ERROR;
   230         -      }
   231         -
   232         -    return EPS_OK;
   233         -}
   234         -
   235         -local int
   236         -read_gs_header (unsigned char *buf, int buf_size, eps_block_header * hdr)
   237         -{
   238         -    filterbank_t *fb;
   239         -
   240         -    char fb_id[32];
   241         -
   242         -    crc32_t hdr_crc;
   243         -    crc32_t data_crc;
   244         -
   245         -    int result;
   246         -    int len;
   247         -    int n;
   248         -
   249         -    char *chk_pos;
   250         -    char *str;
   251         -
   252         -    /* Sanity checks */
   253         -    if (!buf || !hdr)
   254         -      {
   255         -	  return EPS_PARAM_ERROR;
   256         -      }
   257         -
   258         -    if (buf_size < 1)
   259         -      {
   260         -	  return EPS_PARAM_ERROR;
   261         -      }
   262         -
   263         -    /* Terminate header for ease of processing */
   264         -    if (terminate_header (buf, buf_size, 12) != EPS_OK)
   265         -      {
   266         -	  return EPS_FORMAT_ERROR;
   267         -      }
   268         -
   269         -    /* Check for maliciuos symbols */
   270         -    if (header_sanity_check (buf) != EPS_OK)
   271         -      {
   272         -	  unterminate_header (buf);
   273         -	  return EPS_FORMAT_ERROR;
   274         -      }
   275         -
   276         -    /* Handle header as a regular null-terminated string */
   277         -    str = (char *) buf;
   278         -    len = strlen (str);
   279         -
   280         -    /* Mark the position of header CRC field */
   281         -    chk_pos = strstr (str, "chk=");
   282         -
   283         -    /* Parse header fields */
   284         -    result = sscanf (str,
   285         -		     "type=gs;W=%d;H=%d;w=%d;h=%d;x=%d;y=%d;"
   286         -		     "m=%d;dc=%d;fb=%31[a-z0-9];chk=%x;crc=%x%n",
   287         -		     &hdr->uhdr.gs.W, &hdr->uhdr.gs.H, &hdr->uhdr.gs.w,
   288         -		     &hdr->uhdr.gs.h, &hdr->uhdr.gs.x, &hdr->uhdr.gs.y,
   289         -		     &hdr->uhdr.gs.mode, &hdr->uhdr.gs.dc, fb_id, &hdr->chk,
   290         -		     &hdr->crc, &n);
   291         -
   292         -    unterminate_header (buf);
   293         -
   294         -    /* Check for parsing errors (see also sscanf(3)) */
   295         -    if ((result < 11) || (n != len))
   296         -      {
   297         -	  return EPS_FORMAT_ERROR;
   298         -      }
   299         -
   300         -    /* Compute header & data size */
   301         -    hdr->hdr_size = len + 1;
   302         -    hdr->data_size = buf_size - hdr->hdr_size;
   303         -
   304         -    /* Sanity checks */
   305         -    assert (hdr->data_size >= 0);
   306         -    assert (hdr->hdr_size + hdr->data_size == buf_size);
   307         -
   308         -    /* Check transform mode */
   309         -    if ((hdr->uhdr.gs.mode != EPS_MODE_NORMAL)
   310         -	&& (hdr->uhdr.gs.mode != EPS_MODE_OTLPF))
   311         -      {
   312         -	  return EPS_FORMAT_ERROR;
   313         -      }
   314         -
   315         -    /* Check image (W, H) and block (w, y, w, h) parameters for consistency */
   316         -    if ((hdr->uhdr.gs.W <= 0) || (hdr->uhdr.gs.H <= 0))
   317         -      {
   318         -	  return EPS_FORMAT_ERROR;
   319         -      }
   320         -
   321         -    if ((hdr->uhdr.gs.w < 1) || (hdr->uhdr.gs.h < 1))
   322         -      {
   323         -	  return EPS_FORMAT_ERROR;
   324         -      }
   325         -
   326         -    if (hdr->uhdr.gs.w > EPS_MAX_BLOCK_SIZE + hdr->uhdr.gs.mode ==
   327         -	EPS_MODE_OTLPF)
   328         -      {
   329         -	  return EPS_FORMAT_ERROR;
   330         -      }
   331         -
   332         -    if (hdr->uhdr.gs.h > EPS_MAX_BLOCK_SIZE + hdr->uhdr.gs.mode ==
   333         -	EPS_MODE_OTLPF)
   334         -      {
   335         -	  return EPS_FORMAT_ERROR;
   336         -      }
   337         -
   338         -    if ((hdr->uhdr.gs.x < 0) || (hdr->uhdr.gs.y < 0))
   339         -      {
   340         -	  return EPS_FORMAT_ERROR;
   341         -      }
   342         -
   343         -    if (hdr->uhdr.gs.x + hdr->uhdr.gs.w > hdr->uhdr.gs.W)
   344         -      {
   345         -	  return EPS_FORMAT_ERROR;
   346         -      }
   347         -
   348         -    if (hdr->uhdr.gs.y + hdr->uhdr.gs.h > hdr->uhdr.gs.H)
   349         -      {
   350         -	  return EPS_FORMAT_ERROR;
   351         -      }
   352         -
   353         -    /* Check DC level */
   354         -    if ((hdr->uhdr.gs.dc < 0) || (hdr->uhdr.gs.dc > 255))
   355         -      {
   356         -	  return EPS_FORMAT_ERROR;
   357         -      }
   358         -
   359         -    /* Find filterbank by id */
   360         -    if (fb = get_fb (fb_id))
   361         -      {
   362         -	  hdr->uhdr.gs.fb_id = fb->id;
   363         -      }
   364         -    else
   365         -      {
   366         -	  hdr->uhdr.gs.fb_id = NULL;
   367         -      }
   368         -
   369         -    /* EPS_MODE_NORMAL is the only valid choise for orthogonal filters */
   370         -    if ((fb->type == ORTHOGONAL) && (hdr->uhdr.gs.mode != EPS_MODE_NORMAL))
   371         -      {
   372         -	  return EPS_FORMAT_ERROR;
   373         -      }
   374         -
   375         -    assert (chk_pos);
   376         -
   377         -    /* Compute header CRC and compare it against stored one */
   378         -    hdr_crc = epsilon_crc32 (buf, chk_pos - (char *) buf);
   379         -    hdr_crc = (hdr_crc ^ (hdr_crc >> 16)) & 0xffff;
   380         -
   381         -    if (hdr_crc == hdr->chk)
   382         -      {
   383         -	  hdr->chk_flag = EPS_GOOD_CRC;
   384         -      }
   385         -    else
   386         -      {
   387         -	  hdr->chk_flag = EPS_BAD_CRC;
   388         -      }
   389         -
   390         -    /* Compute data CRC and compare it against stored one */
   391         -    data_crc = epsilon_crc32 (buf + hdr->hdr_size, hdr->data_size);
   392         -
   393         -    if (data_crc == hdr->crc)
   394         -      {
   395         -	  hdr->crc_flag = EPS_GOOD_CRC;
   396         -      }
   397         -    else
   398         -      {
   399         -	  hdr->crc_flag = EPS_BAD_CRC;
   400         -      }
   401         -
   402         -    return EPS_OK;
   403         -}
   404         -
   405         -local int
   406         -read_tc_header (unsigned char *buf, int buf_size, eps_block_header * hdr)
   407         -{
   408         -    filterbank_t *fb;
   409         -
   410         -    char fb_id[32];
   411         -
   412         -    crc32_t hdr_crc;
   413         -    crc32_t data_crc;
   414         -
   415         -    int result;
   416         -    int len;
   417         -    int n;
   418         -
   419         -    char *chk_pos;
   420         -    char *str;
   421         -    /* Sanity checks */
   422         -    if (!buf || !hdr)
   423         -      {
   424         -	  return EPS_PARAM_ERROR;
   425         -      }
   426         -
   427         -    if (buf_size < 1)
   428         -      {
   429         -	  return EPS_PARAM_ERROR;
   430         -      }
   431         -
   432         -    /* Terminate header for ease of processing */
   433         -    if (terminate_header (buf, buf_size, 14) != EPS_OK)
   434         -      {
   435         -	  return EPS_FORMAT_ERROR;
   436         -      }
   437         -
   438         -    /* Check for maliciuos symbols */
   439         -    if (header_sanity_check (buf) != EPS_OK)
   440         -      {
   441         -	  unterminate_header (buf);
   442         -	  return EPS_FORMAT_ERROR;
   443         -      }
   444         -
   445         -    /* Handle header as a regular null-terminated string */
   446         -    str = (char *) buf;
   447         -    len = strlen (str);
   448         -
   449         -    /* Mark the position of header CRC field */
   450         -    chk_pos = strstr (str, "chk=");
   451         -    /* Parse header fields */
   452         -    result = sscanf (str,
   453         -		     "type=tc;W=%d;H=%d;w=%d;h=%d;x=%d;y=%d;m=%d;"
   454         -		     "r=%d;dc=%d:%d:%d;rt=%d:%d:%d;fb=%31[a-z0-9];"
   455         -		     "chk=%x;crc=%x%n",
   456         -		     &hdr->uhdr.tc.W, &hdr->uhdr.tc.H, &hdr->uhdr.tc.w,
   457         -		     &hdr->uhdr.tc.h, &hdr->uhdr.tc.x, &hdr->uhdr.tc.y,
   458         -		     &hdr->uhdr.tc.mode, &hdr->uhdr.tc.resample,
   459         -		     &hdr->uhdr.tc.dc_Y, &hdr->uhdr.tc.dc_Cb,
   460         -		     &hdr->uhdr.tc.dc_Cr, &hdr->uhdr.tc.Y_rt,
   461         -		     &hdr->uhdr.tc.Cb_rt, &hdr->uhdr.tc.Cr_rt, fb_id, &hdr->chk,
   462         -		     &hdr->crc, &n);
   463         -    unterminate_header (buf);
   464         -
   465         -    /* Check for parsing errors (see also sscanf(3)) */
   466         -    if ((result < 17) || (n != len))
   467         -      {
   468         -	  return EPS_FORMAT_ERROR;
   469         -      }
   470         -
   471         -    /* Compute header & data size */
   472         -    hdr->hdr_size = len + 1;
   473         -    hdr->data_size = buf_size - hdr->hdr_size;
   474         -
   475         -    /* Sanity checks */
   476         -    assert (hdr->data_size >= 0);
   477         -    assert (hdr->hdr_size + hdr->data_size == buf_size);
   478         -
   479         -    /* Check transform mode */
   480         -    if ((hdr->uhdr.tc.mode != EPS_MODE_NORMAL)
   481         -	&& (hdr->uhdr.tc.mode != EPS_MODE_OTLPF))
   482         -      {
   483         -	  return EPS_FORMAT_ERROR;
   484         -      }
   485         -
   486         -    /* Check image (W, H) and block (w, y, w, h) parameters for consistency */
   487         -    if ((hdr->uhdr.tc.W <= 0) || (hdr->uhdr.tc.H <= 0))
   488         -      {
   489         -	  return EPS_FORMAT_ERROR;
   490         -      }
   491         -
   492         -    if ((hdr->uhdr.tc.w < 1) || (hdr->uhdr.tc.h < 1))
   493         -      {
   494         -	  return EPS_FORMAT_ERROR;
   495         -      }
   496         -
   497         -    if (hdr->uhdr.tc.w > EPS_MAX_BLOCK_SIZE + hdr->uhdr.tc.mode ==
   498         -	EPS_MODE_OTLPF)
   499         -      {
   500         -	  return EPS_FORMAT_ERROR;
   501         -      }
   502         -
   503         -    if (hdr->uhdr.tc.h > EPS_MAX_BLOCK_SIZE + hdr->uhdr.tc.mode ==
   504         -	EPS_MODE_OTLPF)
   505         -      {
   506         -	  return EPS_FORMAT_ERROR;
   507         -      }
   508         -
   509         -    if ((hdr->uhdr.tc.x < 0) || (hdr->uhdr.tc.y < 0))
   510         -      {
   511         -	  return EPS_FORMAT_ERROR;
   512         -      }
   513         -
   514         -    if (hdr->uhdr.tc.x + hdr->uhdr.tc.w > hdr->uhdr.tc.W)
   515         -      {
   516         -	  return EPS_FORMAT_ERROR;
   517         -      }
   518         -
   519         -    if (hdr->uhdr.tc.y + hdr->uhdr.tc.h > hdr->uhdr.tc.H)
   520         -      {
   521         -	  return EPS_FORMAT_ERROR;
   522         -      }
   523         -
   524         -    /* Check resampling mode */
   525         -    if ((hdr->uhdr.tc.resample != EPS_RESAMPLE_444) &&
   526         -	(hdr->uhdr.tc.resample != EPS_RESAMPLE_420))
   527         -      {
   528         -	  return EPS_FORMAT_ERROR;
   529         -      }
   530         -
   531         -    /* Check DC level for Y, Cb and Cr channels */
   532         -    if ((hdr->uhdr.tc.dc_Y < 0) || (hdr->uhdr.tc.dc_Y > 255))
   533         -      {
   534         -	  return EPS_FORMAT_ERROR;
   535         -      }
   536         -
   537         -    if ((hdr->uhdr.tc.dc_Cb < 0) || (hdr->uhdr.tc.dc_Cb > 255))
   538         -      {
   539         -	  return EPS_FORMAT_ERROR;
   540         -      }
   541         -
   542         -    if ((hdr->uhdr.tc.dc_Cr < 0) || (hdr->uhdr.tc.dc_Cr > 255))
   543         -      {
   544         -	  return EPS_FORMAT_ERROR;
   545         -      }
   546         -
   547         -    if ((hdr->uhdr.tc.Y_rt <= 0) || (hdr->uhdr.tc.Cb_rt <= 0)
   548         -	|| (hdr->uhdr.tc.Cr_rt <= 0))
   549         -      {
   550         -	  return EPS_FORMAT_ERROR;
   551         -      }
   552         -
   553         -    /* Find filterbank by id */
   554         -    if (fb = get_fb (fb_id))
   555         -      {
   556         -	  hdr->uhdr.tc.fb_id = fb->id;
   557         -      }
   558         -    else
   559         -      {
   560         -	  hdr->uhdr.tc.fb_id = NULL;
   561         -      }
   562         -
   563         -    /* EPS_MODE_NORMAL is the only valid choise for orthogonal filters */
   564         -    if ((fb->type == ORTHOGONAL) && (hdr->uhdr.tc.mode != EPS_MODE_NORMAL))
   565         -      {
   566         -	  return EPS_FORMAT_ERROR;
   567         -      }
   568         -
   569         -    assert (chk_pos);
   570         -    /* Compute header CRC and compare it against stored one */
   571         -    hdr_crc = epsilon_crc32 (buf, chk_pos - (char *) buf);
   572         -    hdr_crc = (hdr_crc ^ (hdr_crc >> 16)) & 0xffff;
   573         -
   574         -    if (hdr_crc == hdr->chk)
   575         -      {
   576         -	  hdr->chk_flag = EPS_GOOD_CRC;
   577         -      }
   578         -    else
   579         -      {
   580         -	  hdr->chk_flag = EPS_BAD_CRC;
   581         -      }
   582         -    /* Compute data CRC and compare it against stored one */
   583         -    data_crc = epsilon_crc32 (buf + hdr->hdr_size, hdr->data_size);
   584         -
   585         -    if (data_crc == hdr->crc)
   586         -      {
   587         -	  hdr->crc_flag = EPS_GOOD_CRC;
   588         -      }
   589         -    else
   590         -      {
   591         -	  hdr->crc_flag = EPS_BAD_CRC;
   592         -      }
   593         -    return EPS_OK;
   594         -}
   595         -
   596         -int
   597         -eps_read_block_header (unsigned char *buf, int buf_size, eps_block_header * hdr)
   598         -{
   599         -    char *str;
   600         -    /* Sanity checks */
   601         -    if (!buf || !hdr)
   602         -      {
   603         -	  return EPS_PARAM_ERROR;
   604         -      }
   605         -
   606         -    if (buf_size < 1)
   607         -      {
   608         -	  return EPS_PARAM_ERROR;
   609         -      }
   610         -
   611         -    /* Extract first header field: block type */
   612         -    if (terminate_header (buf, buf_size, 1) != EPS_OK)
   613         -      {
   614         -	  return EPS_FORMAT_ERROR;
   615         -      }
   616         -
   617         -    str = (char *) buf;
   618         -
   619         -    /* Set block type */
   620         -    if ((strlen (str) == 7) && (strcmp (str, "type=gs") == 0))
   621         -      {
   622         -	  hdr->block_type = EPS_GRAYSCALE_BLOCK;
   623         -      }
   624         -    else if ((strlen (str) == 7) && (strcmp (str, "type=tc") == 0))
   625         -      {
   626         -	  hdr->block_type = EPS_TRUECOLOR_BLOCK;
   627         -      }
   628         -    else
   629         -      {
   630         -	  unterminate_header (buf);
   631         -	  return EPS_FORMAT_ERROR;
   632         -      }
   633         -
   634         -    unterminate_header (buf);
   635         -
   636         -    /* Process the block using appropriative function */
   637         -    switch (hdr->block_type)
   638         -      {
   639         -      case EPS_GRAYSCALE_BLOCK:
   640         -	  {
   641         -	      return read_gs_header (buf, buf_size, hdr);
   642         -	      break;
   643         -	  }
   644         -
   645         -      case EPS_TRUECOLOR_BLOCK:
   646         -	  {
   647         -	      return read_tc_header (buf, buf_size, hdr);
   648         -	      break;
   649         -	  }
   650         -
   651         -      default:
   652         -	  {
   653         -	      assert (0);
   654         -	      break;
   655         -	  }
   656         -      }
   657         -    return EPS_OK;
   658         -}
   659         -
   660         -char **
   661         -eps_get_fb_info (int type)
   662         -{
   663         -    char **info;
   664         -    int i, n;
   665         -
   666         -    /* Get the number of all available filterbanks */
   667         -    for (n = 0; filterbanks[n]; n++);
   668         -    info = (char **) xmalloc ((n + 1) * sizeof (char *));
   669         -
   670         -    /* Travels the list and populate `info' with requested information */
   671         -    for (i = 0; i < n; i++)
   672         -      {
   673         -	  if (type == EPS_FB_ID)
   674         -	    {
   675         -		info[i] = filterbanks[i]->id;
   676         -	    }
   677         -	  else if (type == EPS_FB_NAME)
   678         -	    {
   679         -		info[i] = filterbanks[i]->name;
   680         -	    }
   681         -	  else if (type == EPS_FB_TYPE)
   682         -	    {
   683         -		if (filterbanks[i]->type == BIORTHOGONAL)
   684         -		  {
   685         -		      info[i] = "biorthogonal";
   686         -		  }
   687         -		else
   688         -		  {
   689         -		      info[i] = "orthogonal";
   690         -		  }
   691         -	    }
   692         -	  else
   693         -	    {
   694         -		info[i] = NULL;
   695         -	    }
   696         -      }
   697         -
   698         -    /* Terminate list with NULL pointer */
   699         -    info[n] = NULL;
   700         -
   701         -    return info;
   702         -}
   703         -
   704         -void
   705         -eps_free_fb_info (char **info)
   706         -{
   707         -    free (info);
   708         -}
   709         -
   710         -void **
   711         -eps_xmalloc (int size)
   712         -{
   713         -    return xmalloc (size);
   714         -}
   715         -
   716         -void **
   717         -eps_malloc_2D (int width, int height, int size)
   718         -{
   719         -    return malloc_2D (width, height, size);
   720         -}
   721         -
   722         -void
   723         -eps_free_2D (void **ptr, int width, int height)
   724         -{
   725         -    free_2D (ptr, width, height);
   726         -}
   727         -
   728         -int
   729         -eps_encode_grayscale_block (unsigned char **block, int W, int H, int w, int h,
   730         -			    int x, int y, unsigned char *buf, int *buf_size,
   731         -			    char *fb_id, int mode)
   732         -{
   733         -    filterbank_t *fb;
   734         -
   735         -    unsigned char *buf_next;
   736         -    int bytes_left;
   737         -
   738         -    unsigned char *stuff_buf;
   739         -    int stuff_bytes;
   740         -    int stuff_max;
   741         -    int stuff_cut;
   742         -
   743         -    coeff_t **pad_block;
   744         -    coeff_t **dwt_block;
   745         -    int **int_block;
   746         -
   747         -    int speck_bytes;
   748         -    int block_size;
   749         -    int str_len;
   750         -
   751         -    unsigned char dc_int;
   752         -    coeff_t dc;
   753         -
   754         -    crc32_t hdr_crc;
   755         -    crc32_t data_crc;
   756         -
   757         -    unsigned char *crc_pos;
   758         -
   759         -    /* Sanity checks */
   760         -    if (!block || !buf || !buf_size || !fb_id)
   761         -      {
   762         -	  return EPS_PARAM_ERROR;
   763         -      }
   764         -
   765         -    /* Check input parameters for consistency */
   766         -    if ((mode != EPS_MODE_NORMAL) && (mode != EPS_MODE_OTLPF))
   767         -      {
   768         -	  return EPS_PARAM_ERROR;
   769         -      }
   770         -
   771         -    if ((W <= 0) || (H <= 0))
   772         -      {
   773         -	  return EPS_PARAM_ERROR;
   774         -      }
   775         -
   776         -    if ((w < 1) || (h < 1))
   777         -      {
   778         -	  return EPS_PARAM_ERROR;
   779         -      }
   780         -
   781         -    if (w > EPS_MAX_BLOCK_SIZE + mode == EPS_MODE_OTLPF)
   782         -      {
   783         -	  return EPS_PARAM_ERROR;
   784         -      }
   785         -
   786         -    if (h > EPS_MAX_BLOCK_SIZE + mode == EPS_MODE_OTLPF)
   787         -      {
   788         -	  return EPS_PARAM_ERROR;
   789         -      }
   790         -
   791         -    if ((x < 0) || (y < 0))
   792         -      {
   793         -	  return EPS_PARAM_ERROR;
   794         -      }
   795         -
   796         -    if ((x + w > W) || (y + h > H))
   797         -      {
   798         -	  return EPS_PARAM_ERROR;
   799         -      }
   800         -
   801         -    if (*buf_size < EPS_MIN_GRAYSCALE_BUF)
   802         -      {
   803         -	  return EPS_PARAM_ERROR;
   804         -      }
   805         -
   806         -    /* Find filterbank from id */
   807         -    if (!(fb = get_fb (fb_id)))
   808         -      {
   809         -	  return EPS_UNSUPPORTED_FB;
   810         -      }
   811         -
   812         -    /* EPS_MODE_NORMAL is the only valid choise for orthogonal filters */
   813         -    if ((fb->type == ORTHOGONAL) && (mode != EPS_MODE_NORMAL))
   814         -      {
   815         -	  return EPS_PARAM_ERROR;
   816         -      }
   817         -
   818         -    buf_next = buf;
   819         -    bytes_left = *buf_size;
   820         -
   821         -    /* Compute block size */
   822         -    block_size = get_block_size (w, h, mode, 2);
   823         -
   824         -    /* Extend block */
   825         -    pad_block =
   826         -	(coeff_t **) malloc_2D (block_size, block_size, sizeof (coeff_t));
   827         -    extend_channel (block, pad_block, w, h, block_size, block_size);
   828         -
   829         -    /* DC level shift */
   830         -    dc = dc_level_shift (pad_block, block_size, block_size);
   831         -    dc_int = (unsigned char) CLIP (dc);
   832         -
   833         -    /* Wavelet transform */
   834         -    dwt_block =
   835         -	(coeff_t **) malloc_2D (block_size, block_size, sizeof (coeff_t));
   836         -    analysis_2D (pad_block, dwt_block, block_size, mode, fb);
   837         -    free_2D ((void *) pad_block, block_size, block_size);
   838         -
   839         -    /* Round coefficients */
   840         -    int_block = (int **) malloc_2D (block_size, block_size, sizeof (int));
   841         -    round_channel (dwt_block, int_block, block_size);
   842         -    free_2D ((void *) dwt_block, block_size, block_size);
   843         -
   844         -    /* Write block header */
   845         -    str_len = snprintf ((char *) buf_next, bytes_left,
   846         -			"type=gs;W=%d;H=%d;w=%d;h=%d;x=%d;y=%d;"
   847         -			"m=%d;dc=%d;fb=%s;",
   848         -			W, H, w, h, x, y, mode, dc_int, fb_id);
   849         -
   850         -    assert (str_len < bytes_left);
   851         -
   852         -    buf_next += str_len;
   853         -    bytes_left -= str_len;
   854         -
   855         -    /* Compute and save block CRC */
   856         -    hdr_crc = epsilon_crc32 (buf, str_len);
   857         -    hdr_crc = (hdr_crc ^ (hdr_crc >> 16)) & 0xffff;
   858         -
   859         -    str_len = snprintf ((char *) buf_next, bytes_left,
   860         -			"chk=%04x;crc=????????;", hdr_crc);
   861         -
   862         -    assert (str_len < bytes_left);
   863         -
   864         -    buf_next += str_len;
   865         -    bytes_left -= str_len;
   866         -
   867         -    crc_pos = buf_next - 9;
   868         -
   869         -    /* Encode coefficients */
   870         -    speck_bytes = speck_encode (int_block, block_size, buf_next, bytes_left);
   871         -
   872         -    free_2D ((void *) int_block, block_size, block_size);
   873         -
   874         -    /* Byte stuffing */
   875         -    stuff_max = speck_bytes + speck_bytes / 254 + 1;
   876         -    stuff_buf = (unsigned char *) xmalloc (stuff_max);
   877         -    stuff_bytes = stuff_data (buf_next, stuff_buf, speck_bytes, stuff_max);
   878         -
   879         -    assert (stuff_bytes >= speck_bytes);
   880         -
   881         -    /* Cut encoded stream to fit it within available space */
   882         -    stuff_cut = MIN (bytes_left, stuff_bytes);
   883         -    memcpy (buf_next, stuff_buf, stuff_cut);
   884         -
   885         -    free (stuff_buf);
   886         -
   887         -    /* Compute and save data CRC */
   888         -    data_crc = epsilon_crc32 (buf_next, stuff_cut);
   889         -    snprintf ((char *) crc_pos, 9, "%08x", data_crc);
   890         -    crc_pos[8] = ';';
   891         -
   892         -    buf_next += stuff_cut;
   893         -    bytes_left -= stuff_cut;
   894         -
   895         -    /* Compute real amount of available bytes */
   896         -    *buf_size = buf_next - buf;
   897         -
   898         -    return EPS_OK;
   899         -}
   900         -
   901         -int
   902         -eps_decode_grayscale_block (unsigned char **block, unsigned char *buf,
   903         -			    eps_block_header * hdr)
   904         -{
   905         -    filterbank_t *fb;
   906         -
   907         -    unsigned char *unstuff_buf;
   908         -    int unstuff_bytes;
   909         -
   910         -    int **int_block;
   911         -    coeff_t **dwt_block;
   912         -    coeff_t **pad_block;
   913         -
   914         -    unsigned char dc_int;
   915         -    int block_size;
   916         -
   917         -    /* Sanity checks */
   918         -    if (!block || !buf || !hdr)
   919         -      {
   920         -	  return EPS_PARAM_ERROR;
   921         -      }
   922         -
   923         -    if (hdr->data_size < 1)
   924         -      {
   925         -	  return EPS_PARAM_ERROR;
   926         -      }
   927         -
   928         -    if (!hdr->uhdr.gs.fb_id)
   929         -      {
   930         -	  return EPS_UNSUPPORTED_FB;
   931         -      }
   932         -
   933         -    /* Reset Y channel */
   934         -    reset_Y (block, hdr->uhdr.gs.w, hdr->uhdr.gs.h);
   935         -
   936         -    /* Find filterbank from id */
   937         -    fb = get_fb (hdr->uhdr.gs.fb_id);
   938         -    assert (fb);
   939         -
   940         -    /* Unstuff data */
   941         -    unstuff_buf = (unsigned char *) xmalloc (hdr->data_size *
   942         -					     sizeof (unsigned char));
   943         -
   944         -    unstuff_bytes = unstuff_data (buf + hdr->hdr_size, unstuff_buf,
   945         -				  hdr->data_size, hdr->data_size);
   946         -
   947         -    if (unstuff_bytes == 0)
   948         -      {
   949         -	  unstuff_buf[0] = 0;
   950         -	  unstuff_bytes = 1;
   951         -      }
   952         -
   953         -    /* Compute block size */
   954         -    block_size =
   955         -	get_block_size (hdr->uhdr.gs.w, hdr->uhdr.gs.h, hdr->uhdr.gs.mode, 2);
   956         -
   957         -    /* Decode coefficients */
   958         -    int_block = (int **) malloc_2D (block_size, block_size, sizeof (int));
   959         -    speck_decode (unstuff_buf, unstuff_bytes, int_block, block_size);
   960         -    free (unstuff_buf);
   961         -
   962         -    /* Extend values from int to coeff_t */
   963         -    dwt_block =
   964         -	(coeff_t **) malloc_2D (block_size, block_size, sizeof (coeff_t));
   965         -    copy_channel (int_block, dwt_block, block_size);
   966         -    free_2D ((void *) int_block, block_size, block_size);
   967         -
   968         -    /* Inverse wavelet transform */
   969         -    pad_block =
   970         -	(coeff_t **) malloc_2D (block_size, block_size, sizeof (coeff_t));
   971         -    synthesis_2D (dwt_block, pad_block, block_size, hdr->uhdr.gs.mode, fb);
   972         -    free_2D ((void *) dwt_block, block_size, block_size);
   973         -
   974         -    dc_int = (unsigned char) hdr->uhdr.gs.dc;
   975         -
   976         -    /* DC level unshift */
   977         -    dc_level_unshift (pad_block, (coeff_t) dc_int, block_size, block_size);
   978         -
   979         -    /* Extract original data */
   980         -    extract_channel (pad_block, block, block_size, block_size,
   981         -		     hdr->uhdr.gs.w, hdr->uhdr.gs.h);
   982         -
   983         -    free_2D ((void *) pad_block, block_size, block_size);
   984         -
   985         -    return EPS_OK;
   986         -}
   987         -
   988         -int
   989         -eps_encode_truecolor_block (unsigned char **block_R,
   990         -			    unsigned char **block_G,
   991         -			    unsigned char **block_B,
   992         -			    int W, int H, int w, int h,
   993         -			    int x, int y, int resample,
   994         -			    unsigned char *buf, int *buf_size,
   995         -			    int Y_rt, int Cb_rt, int Cr_rt,
   996         -			    char *fb_id, int mode)
   997         -{
   998         -    filterbank_t *fb;
   999         -
  1000         -    unsigned char *buf_next;
  1001         -    int bytes_left;
  1002         -
  1003         -    unsigned char *buf_Y;
  1004         -    unsigned char *buf_Cb;
  1005         -    unsigned char *buf_Cr;
  1006         -
  1007         -    int buf_Y_size;
  1008         -    int buf_Cb_size;
  1009         -    int buf_Cr_size;
  1010         -
  1011         -    unsigned char *buf_Cb_Cr;
  1012         -    unsigned char *buf_Y_Cb_Cr;
  1013         -
  1014         -    unsigned char *stuff_buf;
  1015         -
  1016         -    int stuff_bytes;
  1017         -    int stuff_max;
  1018         -    int stuff_cut;
  1019         -
  1020         -    coeff_t **pad_block_R;
  1021         -    coeff_t **pad_block_G;
  1022         -    coeff_t **pad_block_B;
  1023         -
  1024         -    coeff_t **pad_block_Y;
  1025         -    coeff_t **pad_block_Cb;
  1026         -    coeff_t **pad_block_Cr;
  1027         -
  1028         -    coeff_t **block_Y;
  1029         -    coeff_t **block_Cb;
  1030         -    coeff_t **block_Cr;
  1031         -
  1032         -    coeff_t **dwt_block_Y;
  1033         -    coeff_t **dwt_block_Cb;
  1034         -    coeff_t **dwt_block_Cr;
  1035         -
  1036         -    int **int_block_Y;
  1037         -    int **int_block_Cb;
  1038         -    int **int_block_Cr;
  1039         -
  1040         -    int block_Y_size;
  1041         -    int block_Cb_size;
  1042         -    int block_Cr_size;
  1043         -
  1044         -    int speck_bytes_Y;
  1045         -    int speck_bytes_Cb;
  1046         -    int speck_bytes_Cr;
  1047         -
  1048         -    int speck_bytes;
  1049         -
  1050         -    int full_size;
  1051         -    int half_size;
  1052         -
  1053         -    coeff_t dc_Y;
  1054         -    coeff_t dc_Cb;
  1055         -    coeff_t dc_Cr;
  1056         -
  1057         -    unsigned char dc_Y_int;
  1058         -    unsigned char dc_Cb_int;
  1059         -    unsigned char dc_Cr_int;
  1060         -
  1061         -    crc32_t hdr_crc;
  1062         -    crc32_t data_crc;
  1063         -
  1064         -    unsigned char *crc_pos;
  1065         -    int str_len;
  1066         -
  1067         -    /* Sanity checks */
  1068         -    if (!block_R || !block_G || !block_B)
  1069         -      {
  1070         -	  return EPS_PARAM_ERROR;
  1071         -      }
  1072         -
  1073         -    if (!buf || !buf_size || !fb_id)
  1074         -      {
  1075         -	  return EPS_PARAM_ERROR;
  1076         -      }
  1077         -
  1078         -    /* Check input parameters for consistency */
  1079         -    if ((mode != EPS_MODE_NORMAL) && (mode != EPS_MODE_OTLPF))
  1080         -      {
  1081         -	  return EPS_PARAM_ERROR;
  1082         -      }
  1083         -
  1084         -    if ((W <= 0) || (H <= 0))
  1085         -      {
  1086         -	  return EPS_PARAM_ERROR;
  1087         -      }
  1088         -
  1089         -    if ((w < 1) || (h < 1))
  1090         -      {
  1091         -	  return EPS_PARAM_ERROR;
  1092         -      }
  1093         -
  1094         -    if (w > EPS_MAX_BLOCK_SIZE + mode == EPS_MODE_OTLPF)
  1095         -      {
  1096         -	  return EPS_PARAM_ERROR;
  1097         -      }
  1098         -
  1099         -    if (h > EPS_MAX_BLOCK_SIZE + mode == EPS_MODE_OTLPF)
  1100         -      {
  1101         -	  return EPS_PARAM_ERROR;
  1102         -      }
  1103         -
  1104         -    if ((x < 0) || (y < 0))
  1105         -      {
  1106         -	  return EPS_PARAM_ERROR;
  1107         -      }
  1108         -
  1109         -    if ((x + w > W) || (y + h > H))
  1110         -      {
  1111         -	  return EPS_PARAM_ERROR;
  1112         -      }
  1113         -
  1114         -    if ((resample != EPS_RESAMPLE_444) && (resample != EPS_RESAMPLE_420))
  1115         -      {
  1116         -	  return EPS_PARAM_ERROR;
  1117         -      }
  1118         -
  1119         -    if (*buf_size < EPS_MIN_TRUECOLOR_BUF)
  1120         -      {
  1121         -	  return EPS_PARAM_ERROR;
  1122         -      }
  1123         -
  1124         -    if ((Y_rt < EPS_MIN_RT) || (Cb_rt < EPS_MIN_RT) || (Cr_rt < EPS_MIN_RT))
  1125         -      {
  1126         -	  return EPS_PARAM_ERROR;
  1127         -      }
  1128         -
  1129         -    if (Y_rt + Cb_rt + Cr_rt != 100)
  1130         -      {
  1131         -	  return EPS_PARAM_ERROR;
  1132         -      }
  1133         -
  1134         -    /* Find filterbank from id */
  1135         -    if (!(fb = get_fb (fb_id)))
  1136         -      {
  1137         -	  return EPS_UNSUPPORTED_FB;
  1138         -      }
  1139         -
  1140         -    /* EPS_MODE_NORMAL is the only valid choise for orthogonal filters */
  1141         -    if ((fb->type == ORTHOGONAL) && (mode != EPS_MODE_NORMAL))
  1142         -      {
  1143         -	  return EPS_PARAM_ERROR;
  1144         -      }
  1145         -
  1146         -    buf_next = buf;
  1147         -    bytes_left = *buf_size;
  1148         -
  1149         -    /* Compute bid-budget for each channel */
  1150         -    buf_Cr_size = MAX ((bytes_left / 100) * Cr_rt, 1);
  1151         -    buf_Cb_size = MAX ((bytes_left / 100) * Cb_rt, 1);
  1152         -    buf_Y_size = bytes_left - buf_Cb_size - buf_Cr_size;
  1153         -
  1154         -    /* Ensure that everything is ok */
  1155         -    assert ((buf_Y_size > 0) && (buf_Cb_size > 0) && (buf_Cr_size > 0));
  1156         -    assert (buf_Y_size + buf_Cb_size + buf_Cr_size == bytes_left);
  1157         -
  1158         -    /* Compute block sizes for full and resampled channels */
  1159         -    full_size = get_block_size (w, h, mode, 4);
  1160         -    half_size = full_size / 2 + (mode == EPS_MODE_OTLPF);
  1161         -
  1162         -    /* Allocate memory for extended R,G,B channels */
  1163         -    pad_block_R = (coeff_t **) malloc_2D (full_size, full_size,
  1164         -					  sizeof (coeff_t));
  1165         -    pad_block_G = (coeff_t **) malloc_2D (full_size, full_size,
  1166         -					  sizeof (coeff_t));
  1167         -    pad_block_B = (coeff_t **) malloc_2D (full_size, full_size,
  1168         -					  sizeof (coeff_t));
  1169         -
  1170         -    /* Extend R,G,B channels */
  1171         -    extend_channel (block_R, pad_block_R, w, h, full_size, full_size);
  1172         -    extend_channel (block_G, pad_block_G, w, h, full_size, full_size);
  1173         -    extend_channel (block_B, pad_block_B, w, h, full_size, full_size);
  1174         -
  1175         -    /* Allocate memory for extended Y,Cb,Cr channels */
  1176         -    pad_block_Y = (coeff_t **) malloc_2D (full_size, full_size,
  1177         -					  sizeof (coeff_t));
  1178         -    pad_block_Cb = (coeff_t **) malloc_2D (full_size, full_size,
  1179         -					   sizeof (coeff_t));
  1180         -    pad_block_Cr = (coeff_t **) malloc_2D (full_size, full_size,
  1181         -					   sizeof (coeff_t));
  1182         -
  1183         -    /* Convert from R,G,B to Y,Cb,Cr color space */
  1184         -    convert_RGB_to_YCbCr (pad_block_R, pad_block_G, pad_block_B,
  1185         -			  pad_block_Y, pad_block_Cb, pad_block_Cr,
  1186         -			  full_size, full_size);
  1187         -
  1188         -    /* No longer needed */
  1189         -    free_2D ((void *) pad_block_R, full_size, full_size);
  1190         -    free_2D ((void *) pad_block_G, full_size, full_size);
  1191         -    free_2D ((void *) pad_block_B, full_size, full_size);
  1192         -
  1193         -    if (resample == EPS_RESAMPLE_444)
  1194         -      {
  1195         -	  /* No resampling: all channels are full sized */
  1196         -	  block_Y_size = full_size;
  1197         -	  block_Cb_size = full_size;
  1198         -	  block_Cr_size = full_size;
  1199         -
  1200         -	  /* No changes */
  1201         -	  block_Y = pad_block_Y;
  1202         -	  block_Cb = pad_block_Cb;
  1203         -	  block_Cr = pad_block_Cr;
  1204         -      }
  1205         -    else
  1206         -      {
  1207         -	  /* Resample image using 4:2:0 scheme */
  1208         -	  block_Y_size = full_size;
  1209         -	  block_Cb_size = half_size;
  1210         -	  block_Cr_size = half_size;
  1211         -
  1212         -	  /* No changes in Y channel */
  1213         -	  block_Y = pad_block_Y;
  1214         -
  1215         -	  /* Allocate memory for resampled Cb and Cr channels */
  1216         -	  block_Cb = (coeff_t **) malloc_2D (half_size, half_size,
  1217         -					     sizeof (coeff_t));
  1218         -	  block_Cr = (coeff_t **) malloc_2D (half_size, half_size,
  1219         -					     sizeof (coeff_t));
  1220         -
  1221         -	  /* Resample Cb channel */
  1222         -	  bilinear_resample_channel (pad_block_Cb, block_Cb,
  1223         -				     full_size, full_size,
  1224         -				     half_size, half_size);
  1225         -
  1226         -	  /* Resample Cr channel */
  1227         -	  bilinear_resample_channel (pad_block_Cr, block_Cr,
  1228         -				     full_size, full_size,
  1229         -				     half_size, half_size);
  1230         -
  1231         -	  /* No longer needed */
  1232         -	  free_2D ((void *) pad_block_Cb, full_size, full_size);
  1233         -	  free_2D ((void *) pad_block_Cr, full_size, full_size);
  1234         -      }
  1235         -
  1236         -    /* DC level shift */
  1237         -    dc_Y = dc_level_shift (block_Y, block_Y_size, block_Y_size);
  1238         -    dc_Cb = dc_level_shift (block_Cb, block_Cb_size, block_Cb_size);
  1239         -    dc_Cr = dc_level_shift (block_Cr, block_Cr_size, block_Cr_size);
  1240         -
  1241         -    /* Clip DC values */
  1242         -    dc_Y_int = (unsigned char) CLIP (dc_Y);
  1243         -    dc_Cb_int = (unsigned char) CLIP (dc_Cb);
  1244         -    dc_Cr_int = (unsigned char) CLIP (dc_Cr);
  1245         -
  1246         -    /* Allocate memory for wavelet coefficients */
  1247         -    dwt_block_Y = (coeff_t **) malloc_2D (block_Y_size, block_Y_size,
  1248         -					  sizeof (coeff_t));
  1249         -    dwt_block_Cb = (coeff_t **) malloc_2D (block_Cb_size, block_Cb_size,
  1250         -					   sizeof (coeff_t));
  1251         -    dwt_block_Cr = (coeff_t **) malloc_2D (block_Cr_size, block_Cr_size,
  1252         -					   sizeof (coeff_t));
  1253         -
  1254         -    /* Wavelet transform */
  1255         -    analysis_2D (block_Y, dwt_block_Y, block_Y_size, mode, fb);
  1256         -    analysis_2D (block_Cb, dwt_block_Cb, block_Cb_size, mode, fb);
  1257         -    analysis_2D (block_Cr, dwt_block_Cr, block_Cr_size, mode, fb);
  1258         -
  1259         -    /* No longer needed */
  1260         -    free_2D ((void *) block_Y, block_Y_size, block_Y_size);
  1261         -    free_2D ((void *) block_Cb, block_Cb_size, block_Cb_size);
  1262         -    free_2D ((void *) block_Cr, block_Cr_size, block_Cr_size);
  1263         -
  1264         -    /* Allocate memory for rounded wavelet coefficients */
  1265         -    int_block_Y = (int **) malloc_2D (block_Y_size, block_Y_size, sizeof (int));
  1266         -    int_block_Cb = (int **) malloc_2D (block_Cb_size, block_Cb_size,
  1267         -				       sizeof (int));
  1268         -    int_block_Cr = (int **) malloc_2D (block_Cr_size, block_Cr_size,
  1269         -				       sizeof (int));
  1270         -
  1271         -    /* Round wavelet coefficients */
  1272         -    round_channel (dwt_block_Y, int_block_Y, block_Y_size);
  1273         -    round_channel (dwt_block_Cb, int_block_Cb, block_Cb_size);
  1274         -    round_channel (dwt_block_Cr, int_block_Cr, block_Cr_size);
  1275         -
  1276         -    /* No longer needed */
  1277         -    free_2D ((void *) dwt_block_Y, block_Y_size, block_Y_size);
  1278         -    free_2D ((void *) dwt_block_Cb, block_Cb_size, block_Cb_size);
  1279         -    free_2D ((void *) dwt_block_Cr, block_Cr_size, block_Cr_size);
  1280         -
  1281         -    /* Allocate memory for encoded data */
  1282         -    buf_Y = (unsigned char *) xmalloc (buf_Y_size * sizeof (unsigned char));
  1283         -    buf_Cb = (unsigned char *) xmalloc (buf_Cb_size * sizeof (unsigned char));
  1284         -    buf_Cr = (unsigned char *) xmalloc (buf_Cr_size * sizeof (unsigned char));
  1285         -
  1286         -    /* Encode Y,Cb,Cr channels */
  1287         -    speck_bytes_Y = speck_encode (int_block_Y, block_Y_size, buf_Y, buf_Y_size);
  1288         -
  1289         -    speck_bytes_Cb = speck_encode (int_block_Cb, block_Cb_size,
  1290         -				   buf_Cb, buf_Cb_size);
  1291         -
  1292         -
  1293         -    speck_bytes_Cr = speck_encode (int_block_Cr, block_Cr_size,
  1294         -				   buf_Cr, buf_Cr_size);
  1295         -
  1296         -    /* No longer needed */
  1297         -    free_2D ((void *) int_block_Y, block_Y_size, block_Y_size);
  1298         -    free_2D ((void *) int_block_Cb, block_Cb_size, block_Cb_size);
  1299         -    free_2D ((void *) int_block_Cr, block_Cr_size, block_Cr_size);
  1300         -
  1301         -    /* Total number of encoded bytes */
  1302         -    speck_bytes = speck_bytes_Y + speck_bytes_Cb + speck_bytes_Cr;
  1303         -
  1304         -    /* Allocate memory for mixed Cb + Cr channel */
  1305         -    buf_Cb_Cr = (unsigned char *) xmalloc ((speck_bytes_Cb + speck_bytes_Cr) *
  1306         -					   sizeof (unsigned char));
  1307         -
  1308         -    /* Merge Cb and Cr channels */
  1309         -    merge_channels (buf_Cb, buf_Cr, buf_Cb_Cr, speck_bytes_Cb, speck_bytes_Cr);
  1310         -
  1311         -    /* No longer needed */
  1312         -    free (buf_Cb);
  1313         -    free (buf_Cr);
  1314         -
  1315         -    /* Allocate memory for mixed Y + (Cb + Cr) channel */
  1316         -    buf_Y_Cb_Cr = (unsigned char *) xmalloc (speck_bytes *
  1317         -					     sizeof (unsigned char));
  1318         -
  1319         -    /* Merge Y and (Cb + Cr) channels */
  1320         -    merge_channels (buf_Y, buf_Cb_Cr, buf_Y_Cb_Cr, speck_bytes_Y,
  1321         -		    speck_bytes_Cb + speck_bytes_Cr);
  1322         -
  1323         -    /* No longer needed */
  1324         -    free (buf_Y);
  1325         -    free (buf_Cb_Cr);
  1326         -
  1327         -    /* Byte stuffing */
  1328         -    stuff_max = speck_bytes + speck_bytes / 254 + 1;
  1329         -    stuff_buf = (unsigned char *) xmalloc (stuff_max * sizeof (unsigned char));
  1330         -    stuff_bytes = stuff_data (buf_Y_Cb_Cr, stuff_buf, speck_bytes, stuff_max);
  1331         -
  1332         -    assert (stuff_bytes >= speck_bytes);
  1333         -
  1334         -    free (buf_Y_Cb_Cr);
  1335         -
  1336         -    /* Write block header */
  1337         -    str_len = snprintf ((char *) buf_next, bytes_left,
  1338         -			"type=tc;W=%d;H=%d;w=%d;h=%d;x=%d;y=%d;m=%d;r=%d;"
  1339         -			"dc=%d:%d:%d;rt=%d:%d:%d;fb=%s;",
  1340         -			W, H, w, h, x, y, mode, resample,
  1341         -			dc_Y_int, dc_Cb_int, dc_Cr_int,
  1342         -			speck_bytes_Y, speck_bytes_Cb, speck_bytes_Cr, fb_id);
  1343         -
  1344         -    assert (str_len < bytes_left);
  1345         -
  1346         -    buf_next += str_len;
  1347         -    bytes_left -= str_len;
  1348         -
  1349         -    /* Compute and save header CRC */
  1350         -    hdr_crc = epsilon_crc32 (buf, str_len);
  1351         -    hdr_crc = (hdr_crc ^ (hdr_crc >> 16)) & 0xffff;
  1352         -
  1353         -    str_len = snprintf ((char *) buf_next, bytes_left,
  1354         -			"chk=%04x;crc=????????;", hdr_crc);
  1355         -
  1356         -    assert (str_len < bytes_left);
  1357         -
  1358         -    buf_next += str_len;
  1359         -    bytes_left -= str_len;
  1360         -
  1361         -    crc_pos = buf_next - 9;
  1362         -
  1363         -    /* Cut encoded stream to fit it within available space */
  1364         -    stuff_cut = MIN (bytes_left, stuff_bytes);
  1365         -    memcpy (buf_next, stuff_buf, stuff_cut);
  1366         -
  1367         -    free (stuff_buf);
  1368         -
  1369         -    /* Compute and save data CRC */
  1370         -    data_crc = epsilon_crc32 (buf_next, stuff_cut);
  1371         -    snprintf ((char *) crc_pos, 9, "%08x", data_crc);
  1372         -    crc_pos[8] = ';';
  1373         -
  1374         -    buf_next += stuff_cut;
  1375         -    bytes_left -= stuff_cut;
  1376         -
  1377         -    /* Compute real amount of used bytes */
  1378         -    *buf_size = buf_next - buf;
  1379         -
  1380         -    return EPS_OK;
  1381         -}
  1382         -
  1383         -int
  1384         -eps_decode_truecolor_block (unsigned char **block_R,
  1385         -			    unsigned char **block_G,
  1386         -			    unsigned char **block_B,
  1387         -			    unsigned char *buf, eps_block_header * hdr)
  1388         -{
  1389         -    filterbank_t *fb;
  1390         -
  1391         -    unsigned char *unstuff_buf;
  1392         -    int unstuff_bytes;
  1393         -
  1394         -    unsigned char *buf_Y;
  1395         -    unsigned char *buf_Cb;
  1396         -    unsigned char *buf_Cr;
  1397         -    unsigned char *buf_Cb_Cr;
  1398         -
  1399         -    int speck_bytes_Y;
  1400         -    int speck_bytes_Cb;
  1401         -    int speck_bytes_Cr;
  1402         -    int speck_bytes_Cb_Cr;
  1403         -
  1404         -    int full_size;
  1405         -    int half_size;
  1406         -
  1407         -    int **int_block_Y;
  1408         -    int **int_block_Cb;
  1409         -    int **int_block_Cr;
  1410         -
  1411         -    coeff_t **dwt_block_Y;
  1412         -    coeff_t **dwt_block_Cb;
  1413         -    coeff_t **dwt_block_Cr;
  1414         -
  1415         -    coeff_t **pad_block_Y;
  1416         -    coeff_t **pad_block_Cb;
  1417         -    coeff_t **pad_block_Cr;
  1418         -
  1419         -    coeff_t **pad_block_R;
  1420         -    coeff_t **pad_block_G;
  1421         -    coeff_t **pad_block_B;
  1422         -
  1423         -    coeff_t **block_Y;
  1424         -    coeff_t **block_Cb;
  1425         -    coeff_t **block_Cr;
  1426         -
  1427         -    int block_Y_size;
  1428         -    int block_Cb_size;
  1429         -    int block_Cr_size;
  1430         -
  1431         -    unsigned char dc_Y_int;
  1432         -    unsigned char dc_Cb_int;
  1433         -    unsigned char dc_Cr_int;
  1434         -
  1435         -    /* Sanity checks */
  1436         -    if (!block_R || !block_G || !block_B)
  1437         -      {
  1438         -	  return EPS_PARAM_ERROR;
  1439         -      }
  1440         -
  1441         -    if (!buf || !hdr)
  1442         -      {
  1443         -	  return EPS_PARAM_ERROR;
  1444         -      }
  1445         -
  1446         -    if (hdr->data_size < 1)
  1447         -      {
  1448         -	  return EPS_PARAM_ERROR;
  1449         -      }
  1450         -
  1451         -    /* Reset RGB channels */
  1452         -    reset_RGB (block_R, block_G, block_B, hdr->uhdr.tc.w, hdr->uhdr.tc.h);
  1453         -
  1454         -    /* Find filterbank by id */
  1455         -    if (!hdr->uhdr.tc.fb_id)
  1456         -      {
  1457         -	  return EPS_UNSUPPORTED_FB;
  1458         -      }
  1459         -
  1460         -    fb = get_fb (hdr->uhdr.tc.fb_id);
  1461         -    assert (fb);
  1462         -
  1463         -    /* Unstaff data */
  1464         -    unstuff_buf = (unsigned char *) xmalloc (hdr->data_size *
  1465         -					     sizeof (unsigned char));
  1466         -
  1467         -    unstuff_bytes = unstuff_data (buf + hdr->hdr_size, unstuff_buf,
  1468         -				  hdr->data_size, hdr->data_size);
  1469         -
  1470         -    /* Consistency check */
  1471         -    if (unstuff_bytes >
  1472         -	hdr->uhdr.tc.Y_rt + hdr->uhdr.tc.Cb_rt + hdr->uhdr.tc.Cr_rt)
  1473         -      {
  1474         -	  free (unstuff_buf);
  1475         -	  return EPS_FORMAT_ERROR;
  1476         -      }
  1477         -
  1478         -    /* Dummy data */
  1479         -    if (unstuff_bytes == 0)
  1480         -      {
  1481         -	  unstuff_buf[0] = 0;
  1482         -	  unstuff_bytes = 1;
  1483         -      }
  1484         -
  1485         -    /* Allocate memory for Y and (Cb + Cr) channels */
  1486         -    buf_Y = (unsigned char *) xmalloc (unstuff_bytes * sizeof (unsigned char));
  1487         -
  1488         -    buf_Cb_Cr = (unsigned char *) xmalloc (unstuff_bytes *
  1489         -					   sizeof (unsigned char));
  1490         -
  1491         -    /* Split stream into Y and (Cb + Cr) channels */
  1492         -    split_channels (unstuff_buf, buf_Y, buf_Cb_Cr, unstuff_bytes,
  1493         -		    hdr->uhdr.tc.Y_rt, hdr->uhdr.tc.Cb_rt + hdr->uhdr.tc.Cr_rt,
  1494         -		    &speck_bytes_Y, &speck_bytes_Cb_Cr);
  1495         -
  1496         -    /* No longer needed */
  1497         -    free (unstuff_buf);
  1498         -
  1499         -    /* Consistency check */
  1500         -    if (speck_bytes_Cb_Cr > hdr->uhdr.tc.Cb_rt + hdr->uhdr.tc.Cr_rt)
  1501         -      {
  1502         -	  free (buf_Y);
  1503         -	  free (buf_Cb_Cr);
  1504         -	  return EPS_FORMAT_ERROR;
  1505         -      }
  1506         -
  1507         -    /* Dummy data */
  1508         -    if (speck_bytes_Y == 0)
  1509         -      {
  1510         -	  buf_Y[0] = 0;
  1511         -	  speck_bytes_Y = 1;
  1512         -      }
  1513         -
  1514         -    /* Dummy data */
  1515         -    if (speck_bytes_Cb_Cr == 0)
  1516         -      {
  1517         -	  buf_Cb_Cr[0] = 0;
  1518         -	  speck_bytes_Cb_Cr = 1;
  1519         -      }
  1520         -
  1521         -    /* Allocate memory for Cb and Cr channels */
  1522         -    buf_Cb = (unsigned char *) xmalloc (speck_bytes_Cb_Cr *
  1523         -					sizeof (unsigned char));
  1524         -
  1525         -    buf_Cr = (unsigned char *) xmalloc (speck_bytes_Cb_Cr *
  1526         -					sizeof (unsigned char));
  1527         -
  1528         -    /* Split merged (Cb + Cr) channel into Cb and Cr channels */
  1529         -    split_channels (buf_Cb_Cr, buf_Cb, buf_Cr, speck_bytes_Cb_Cr,
  1530         -		    hdr->uhdr.tc.Cb_rt, hdr->uhdr.tc.Cr_rt,
  1531         -		    &speck_bytes_Cb, &speck_bytes_Cr);
  1532         -
  1533         -    /* No longer needed */
  1534         -    free (buf_Cb_Cr);
  1535         -
  1536         -    /* Dummy data */
  1537         -    if (speck_bytes_Cb == 0)
  1538         -      {
  1539         -	  buf_Cb[0] = 0;
  1540         -	  speck_bytes_Cb = 1;
  1541         -      }
  1542         -
  1543         -    /* Dummy data */
  1544         -    if (speck_bytes_Cr == 0)
  1545         -      {
  1546         -	  buf_Cr[0] = 0;
  1547         -	  speck_bytes_Cr = 1;
  1548         -      }
  1549         -
  1550         -    /* Compute block sizes for full and resampled channels */
  1551         -    full_size =
  1552         -	get_block_size (hdr->uhdr.tc.w, hdr->uhdr.tc.h, hdr->uhdr.tc.mode, 4);
  1553         -    half_size = full_size / 2 + (hdr->uhdr.tc.mode == EPS_MODE_OTLPF);
  1554         -
  1555         -    if (hdr->uhdr.tc.resample == EPS_RESAMPLE_444)
  1556         -      {
  1557         -	  block_Y_size = full_size;
  1558         -	  block_Cb_size = full_size;
  1559         -	  block_Cr_size = full_size;
  1560         -      }
  1561         -    else
  1562         -      {
  1563         -	  block_Y_size = full_size;
  1564         -	  block_Cb_size = half_size;
  1565         -	  block_Cr_size = half_size;
  1566         -      }
  1567         -
  1568         -    /* Allocate memory for Y,Cb,Cr channels */
  1569         -    int_block_Y = (int **) malloc_2D (block_Y_size, block_Y_size, sizeof (int));
  1570         -    int_block_Cb = (int **) malloc_2D (block_Cb_size, block_Cb_size,
  1571         -				       sizeof (int));
  1572         -    int_block_Cr = (int **) malloc_2D (block_Cr_size, block_Cr_size,
  1573         -				       sizeof (int));
  1574         -
  1575         -    /* Decode data */
  1576         -    speck_decode (buf_Y, speck_bytes_Y, int_block_Y, block_Y_size);
  1577         -    speck_decode (buf_Cb, speck_bytes_Cb, int_block_Cb, block_Cb_size);
  1578         -    speck_decode (buf_Cr, speck_bytes_Cr, int_block_Cr, block_Cr_size);
  1579         -
  1580         -    /* No longer needed */
  1581         -    free (buf_Y);
  1582         -    free (buf_Cb);
  1583         -    free (buf_Cr);
  1584         -
  1585         -    /* Allocate memory for real-valued wavelet coefficients */
  1586         -    dwt_block_Y = (coeff_t **) malloc_2D (block_Y_size, block_Y_size,
  1587         -					  sizeof (coeff_t));
  1588         -    dwt_block_Cb = (coeff_t **) malloc_2D (block_Cb_size, block_Cb_size,
  1589         -					   sizeof (coeff_t));
  1590         -    dwt_block_Cr = (coeff_t **) malloc_2D (block_Cr_size, block_Cr_size,
  1591         -					   sizeof (coeff_t));
  1592         -
  1593         -    /* Copy data with type extension */
  1594         -    copy_channel (int_block_Y, dwt_block_Y, block_Y_size);
  1595         -    copy_channel (int_block_Cb, dwt_block_Cb, block_Cb_size);
  1596         -    copy_channel (int_block_Cr, dwt_block_Cr, block_Cr_size);
  1597         -
  1598         -    /* No longer needed */
  1599         -    free_2D ((void *) int_block_Y, block_Y_size, block_Y_size);
  1600         -    free_2D ((void *) int_block_Cb, block_Cb_size, block_Cb_size);
  1601         -    free_2D ((void *) int_block_Cr, block_Cr_size, block_Cr_size);
  1602         -
  1603         -    /* Allocate memory for restored Y,Cb,Cr channels */
  1604         -    block_Y = (coeff_t **) malloc_2D (block_Y_size, block_Y_size,
  1605         -				      sizeof (coeff_t));
  1606         -    block_Cb = (coeff_t **) malloc_2D (block_Cb_size, block_Cb_size,
  1607         -				       sizeof (coeff_t));
  1608         -    block_Cr = (coeff_t **) malloc_2D (block_Cr_size, block_Cr_size,
  1609         -				       sizeof (coeff_t));
  1610         -
  1611         -    /* Inverse wavelet transform */
  1612         -    synthesis_2D (dwt_block_Y, block_Y, block_Y_size, hdr->uhdr.tc.mode, fb);
  1613         -    synthesis_2D (dwt_block_Cb, block_Cb, block_Cb_size, hdr->uhdr.tc.mode, fb);
  1614         -    synthesis_2D (dwt_block_Cr, block_Cr, block_Cr_size, hdr->uhdr.tc.mode, fb);
  1615         -
  1616         -    /* No longer needed */
  1617         -    free_2D ((void *) dwt_block_Y, block_Y_size, block_Y_size);
  1618         -    free_2D ((void *) dwt_block_Cb, block_Cb_size, block_Cb_size);
  1619         -    free_2D ((void *) dwt_block_Cr, block_Cr_size, block_Cr_size);
  1620         -
  1621         -    /* Get DC values */
  1622         -    dc_Y_int = (unsigned char) hdr->uhdr.tc.dc_Y;
  1623         -    dc_Cb_int = (unsigned char) hdr->uhdr.tc.dc_Cb;
  1624         -    dc_Cr_int = (unsigned char) hdr->uhdr.tc.dc_Cr;
  1625         -
  1626         -    /* DC level unshift */
  1627         -    dc_level_unshift (block_Y, (coeff_t) dc_Y_int, block_Y_size, block_Y_size);
  1628         -    dc_level_unshift (block_Cb, (coeff_t) dc_Cb_int,
  1629         -		      block_Cb_size, block_Cb_size);
  1630         -    dc_level_unshift (block_Cr, (coeff_t) dc_Cr_int,
  1631         -		      block_Cr_size, block_Cr_size);
  1632         -
  1633         -    if (hdr->uhdr.tc.resample == EPS_RESAMPLE_444)
  1634         -      {
  1635         -	  /* No upsampling */
  1636         -	  pad_block_Y = block_Y;
  1637         -	  pad_block_Cb = block_Cb;
  1638         -	  pad_block_Cr = block_Cr;
  1639         -      }
  1640         -    else
  1641         -      {
  1642         -	  pad_block_Y = block_Y;
  1643         -
  1644         -	  /* Allocate memory for full-sized Cb and Cr channels */
  1645         -	  pad_block_Cb = (coeff_t **) malloc_2D (full_size, full_size,
  1646         -						 sizeof (coeff_t));
  1647         -
  1648         -	  pad_block_Cr = (coeff_t **) malloc_2D (full_size, full_size,
  1649         -						 sizeof (coeff_t));
  1650         -
  1651         -	  /* Upsample Cb and Cr channels according to 4:2:0 scheme */
  1652         -	  bilinear_resample_channel (block_Cb, pad_block_Cb,
  1653         -				     block_Cb_size, block_Cb_size,
  1654         -				     full_size, full_size);
  1655         -
  1656         -	  bilinear_resample_channel (block_Cr, pad_block_Cr,
  1657         -				     block_Cr_size, block_Cr_size,
  1658         -				     full_size, full_size);
  1659         -
  1660         -	  /* No longer needed */
  1661         -	  free_2D ((void *) block_Cb, block_Cb_size, block_Cb_size);
  1662         -	  free_2D ((void *) block_Cr, block_Cr_size, block_Cr_size);
  1663         -      }
  1664         -
  1665         -    /* Allocate memory for extended R,G,B channels */
  1666         -    pad_block_R = (coeff_t **) malloc_2D (full_size, full_size,
  1667         -					  sizeof (coeff_t));
  1668         -    pad_block_G = (coeff_t **) malloc_2D (full_size, full_size,
  1669         -					  sizeof (coeff_t));
  1670         -    pad_block_B = (coeff_t **) malloc_2D (full_size, full_size,
  1671         -					  sizeof (coeff_t));
  1672         -
  1673         -    /* Convert from Y,Cb,Cr to R,G,B color space */
  1674         -    convert_YCbCr_to_RGB (pad_block_Y, pad_block_Cb, pad_block_Cr,
  1675         -			  pad_block_R, pad_block_G, pad_block_B,
  1676         -			  full_size, full_size);
  1677         -
  1678         -    /* No longer needed */
  1679         -    free_2D ((void *) pad_block_Y, full_size, full_size);
  1680         -    free_2D ((void *) pad_block_Cb, full_size, full_size);
  1681         -    free_2D ((void *) pad_block_Cr, full_size, full_size);
  1682         -
  1683         -    /* Clip R,G,B channels */
  1684         -    clip_channel (pad_block_R, full_size, full_size);
  1685         -    clip_channel (pad_block_G, full_size, full_size);
  1686         -    clip_channel (pad_block_B, full_size, full_size);
  1687         -
  1688         -    /* Extract original data from R,G,B channels */
  1689         -    extract_channel (pad_block_R, block_R,
  1690         -		     full_size, full_size, hdr->uhdr.tc.w, hdr->uhdr.tc.h);
  1691         -
  1692         -    extract_channel (pad_block_G, block_G,
  1693         -		     full_size, full_size, hdr->uhdr.tc.w, hdr->uhdr.tc.h);
  1694         -
  1695         -    extract_channel (pad_block_B, block_B,
  1696         -		     full_size, full_size, hdr->uhdr.tc.w, hdr->uhdr.tc.h);
  1697         -
  1698         -    /* No longer needed */
  1699         -    free_2D ((void *) pad_block_R, full_size, full_size);
  1700         -    free_2D ((void *) pad_block_G, full_size, full_size);
  1701         -    free_2D ((void *) pad_block_B, full_size, full_size);
  1702         -
  1703         -    return EPS_OK;
  1704         -}
  1705         -
  1706         -int
  1707         -eps_truncate_block (unsigned char *buf_in, unsigned char *buf_out,
  1708         -		    eps_block_header * hdr, int *truncate_size)
  1709         -{
  1710         -    crc32_t data_crc;
  1711         -
  1712         -    /* Sanity checks */
  1713         -    if (!buf_in || !buf_out || !hdr)
  1714         -      {
  1715         -	  return EPS_PARAM_ERROR;
  1716         -      }
  1717         -
  1718         -    if (*truncate_size < MAX (EPS_MIN_GRAYSCALE_BUF, EPS_MIN_TRUECOLOR_BUF))
  1719         -      {
  1720         -	  return EPS_PARAM_ERROR;
  1721         -      }
  1722         -
  1723         -    /* Copy data */
  1724         -    *truncate_size = MIN (*truncate_size, hdr->hdr_size + hdr->data_size);
  1725         -    memcpy (buf_out, buf_in, *truncate_size);
  1726         -
  1727         -    /* Recompute data CRC */
  1728         -    data_crc =
  1729         -	epsilon_crc32 (buf_out + hdr->hdr_size, *truncate_size - hdr->hdr_size);
  1730         -    snprintf ((char *) (buf_out + hdr->hdr_size - 9), 9, "%08x", data_crc);
  1731         -    *(buf_out + hdr->hdr_size - 1) = ';';
  1732         -
  1733         -    return EPS_OK;
  1734         -}

Deleted epsilon/libmain.h.

     1         -/*
     2         - * $Id: libmain.h,v 1.17 2007/06/15 18:09:16 simakov Exp $
     3         - *
     4         - * EPSILON - wavelet image compression library.
     5         - * Copyright (C) 2006-2007 Alexander Simakov, <xander@entropyware.info>
     6         - *
     7         - * This program is free software; you can redistribute it and/or modify
     8         - * it under the terms of the GNU General Public License as published by
     9         - * the Free Software Foundation; either version 2 of the License, or
    10         - * (at your option) any later version.
    11         - *
    12         - * This program is distributed in the hope that it will be useful,
    13         - * but WITHOUT ANY WARRANTY; without even the implied warranty of
    14         - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    15         - * GNU General Public License for more details.
    16         - *
    17         - * You should have received a copy of the GNU General Public License
    18         - * along with this program; if not, write to the Free Software
    19         - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
    20         - *
    21         - * http://epsilon-project.sourceforge.net
    22         - */
    23         -
    24         -/** \file
    25         - *
    26         - *  \brief Auxiliary support routines
    27         - *
    28         - *  This file contains auxiliary support routines for
    29         - *  the library. While being top-level they are not
    30         - *  intended for direct user access. */
    31         -
    32         -#ifndef __LIBMAIN_H__
    33         -#define __LIBMAIN_H__
    34         -
    35         -#ifdef __cplusplus
    36         -extern "C"
    37         -{
    38         -#endif
    39         -
    40         -/** \addtogroup misc Miscellanea */
    41         -/*@{*/
    42         -
    43         -#include <common.h>
    44         -#include <filterbank.h>
    45         -#include <filter.h>
    46         -
    47         -/** Round a channel
    48         - *
    49         - *  This function rounds each \a in_channel element to the
    50         - *  nearest integer and stores it in the \a out_channel.
    51         - *
    52         - *  \param in_channel Input channel
    53         - *  \param out_channel Output channel
    54         - *  \param channel_size Channel size
    55         - *
    56         - *  \return \c VOID */
    57         -    local void round_channel (coeff_t ** in_channel, int **out_channel,
    58         -			      int channel_size);
    59         -
    60         -/** Copy a channel
    61         - *
    62         - *  This function copies \a in_channel into the \a out_channel.
    63         - *
    64         - *  \param in_channel Input channel
    65         - *  \param out_channel Output channel
    66         - *  \param channel_size Channel size
    67         - *
    68         - *  \return \c VOID */
    69         -    local void copy_channel (int **in_channel, coeff_t ** out_channel,
    70         -			     int channel_size);
    71         -
    72         -/** Reset RGB channels
    73         - *
    74         - *  This function initializes arrays \a block_R, \a block_G
    75         - *  and \a block_B with zero.
    76         - *
    77         - *  \param block_R Red channel
    78         - *  \param block_G Green channel
    79         - *  \param block_B Blue channel
    80         - *  \param width Block width
    81         - *  \param height Block height
    82         - *
    83         - *  \return \c VOID */
    84         -    local void reset_RGB (unsigned char **block_R, unsigned char **block_G,
    85         -			  unsigned char **block_B, int width, int height);
    86         -
    87         -/** Reset Y channel
    88         - *
    89         - *  This function initializes array \a block_Y with zero.
    90         - *
    91         - *  \param block_Y Luma channel
    92         - *  \param width Block width
    93         - *  \param height Block height
    94         - *
    95         - *  \return \c VOID */
    96         -    local void reset_Y (unsigned char **block_Y, int width, int height);
    97         -
    98         -/** Get filterbank pointer from id
    99         - *
   100         - *  This function gets filterbank pointer from \a id.
   101         - *
   102         - *  \param id Filterbank id
   103         - *
   104         - *  \return Filterbank pointer or \c NULL if not found */
   105         -    local filterbank_t *get_fb (char *id);
   106         -
   107         -/** Compute required block size
   108         - *
   109         - *  This function computes block size (width=height) required
   110         - *  for encoding and decoding process. Depending on \a mode
   111         - *  parameter, function returns nearest power of two or
   112         - *  power of two plus one.
   113         - *
   114         - *  \param w Source width
   115         - *  \param h Source height
   116         - *  \param mode Either \ref EPS_MODE_NORMAL or \ref EPS_MODE_OTLPF
   117         - *  \param min Minimal block size
   118         - *
   119         - *  \return Block size (width = height) */
   120         -    local int get_block_size (int w, int h, int mode, int min);
   121         -
   122         -/** Terminate block header
   123         - *
   124         - *  This function replaces \a n_fields -th occurence of \c ;
   125         - *  symbol with \c 0. In other words, this function zero-terminates
   126         - *  header.
   127         - *
   128         - *  \param buf Data buffer
   129         - *  \param buf_size Buffer size
   130         - *  \param n_fields Number of header fields
   131         - *
   132         - *  \return Either \ref EPS_OK or \ref EPS_FORMAT_ERROR */
   133         -    local int terminate_header (unsigned char *buf, int buf_size, int n_fields);
   134         -
   135         -/** Unterminate header
   136         - *
   137         - *  This function is inverse to the previous one. It
   138         - *  replaces first occurence of \c 0 with \c ; symbol.
   139         - *
   140         - *  \param buf Data buffer
   141         - *
   142         - *  \return \c VOID */
   143         -    local void unterminate_header (unsigned char *buf);
   144         -
   145         -/** Header sanity check
   146         - *
   147         - *  This function ensures that header contains only
   148         - *  legal symbols.
   149         - *
   150         - *  \param buf Data buffer
   151         - *
   152         - *  \return Either \ref EPS_OK or \ref EPS_FORMAT_ERROR */
   153         -    local int header_sanity_check (unsigned char *buf);
   154         -
   155         -/** Read GRAYSCALE header
   156         - *
   157         - *  This function reads and checks block header of type
   158         - *  \ref EPS_GRAYSCALE_BLOCK. Result is stored in the \a hdr
   159         - *  structure.
   160         - *
   161         - *  \note Structure \a hdr is undefined unless function
   162         - *  returns \ref EPS_OK.
   163         - *
   164         - *  \param buf Data buffer
   165         - *  \param buf_size Buffer size
   166         - *  \param hdr Block header
   167         - *
   168         - *  \return Either \ref EPS_OK or \ref EPS_PARAM_ERROR
   169         - *  or \ref EPS_FORMAT_ERROR */
   170         -    local int read_gs_header (unsigned char *buf, int buf_size,
   171         -			      eps_block_header * hdr);
   172         -
   173         -/** Read TRUECOLOR header
   174         - *
   175         - *  This function reads and checks block header of type
   176         - *  \ref EPS_TRUECOLOR_BLOCK. Result is stored in the \a hdr
   177         - *  structure.
   178         - *
   179         - *  \note Structure \a hdr is undefined unless function
   180         - *  returns \ref EPS_OK.
   181         - *
   182         - *  \param buf Data buffer
   183         - *  \param buf_size Buffer size
   184         - *  \param hdr Block header
   185         - *
   186         - *  \return Either \ref EPS_OK or \ref EPS_PARAM_ERROR
   187         - *  or \ref EPS_FORMAT_ERROR */
   188         -    local int read_tc_header (unsigned char *buf, int buf_size,
   189         -			      eps_block_header * hdr);
   190         -
   191         -/*@}*/
   192         -
   193         -#ifdef __cplusplus
   194         -}
   195         -#endif
   196         -
   197         -#endif				/* __LIBMAIN_H__ */

Deleted epsilon/list.c.

     1         -/*
     2         - * $Id: list.c,v 1.16 2007/05/20 13:19:12 simakov Exp $
     3         - *
     4         - * EPSILON - wavelet image compression library.
     5         - * Copyright (C) 2006-2007 Alexander Simakov, <xander@entropyware.info>
     6         - *
     7         - * This program is free software; you can redistribute it and/or modify
     8         - * it under the terms of the GNU General Public License as published by
     9         - * the Free Software Foundation; either version 2 of the License, or
    10         - * (at your option) any later version.
    11         - *
    12         - * This program is distributed in the hope that it will be useful,
    13         - * but WITHOUT ANY WARRANTY; without even the implied warranty of
    14         - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    15         - * GNU General Public License for more details.
    16         - *
    17         - * You should have received a copy of the GNU General Public License
    18         - * along with this program; if not, write to the Free Software
    19         - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
    20         - *
    21         - * http://epsilon-project.sourceforge.net
    22         - */
    23         -
    24         -#include <common.h>
    25         -#include <list.h>
    26         -#include <mem_alloc.h>
    27         -
    28         -linked_list *
    29         -alloc_linked_list (void)
    30         -{
    31         -    linked_list *list;
    32         -
    33         -    list = (linked_list *) xmalloc (sizeof (linked_list));
    34         -    list->first = list->last = NULL;
    35         -
    36         -    return list;
    37         -}
    38         -
    39         -void
    40         -free_linked_list (linked_list * list)
    41         -{
    42         -    list_node *cur_node;
    43         -    list_node *next_node;
    44         -
    45         -    cur_node = list->first;
    46         -
    47         -    while (cur_node)
    48         -      {
    49         -	  next_node = cur_node->next;
    50         -	  free_list_node (cur_node);
    51         -	  cur_node = next_node;
    52         -      }
    53         -
    54         -    free (list);
    55         -}
    56         -
    57         -list_node *
    58         -alloc_list_node (int data_size)
    59         -{
    60         -    list_node *node;
    61         -
    62         -    node = (list_node *) xmalloc (sizeof (list_node));
    63         -    node->data = xmalloc (data_size);
    64         -    node->next = node->prev = NULL;
    65         -
    66         -    return node;
    67         -}
    68         -
    69         -void
    70         -free_list_node (list_node * node)
    71         -{
    72         -    free (node->data);
    73         -    free (node);
    74         -}
    75         -
    76         -void
    77         -append_list_node (linked_list * list, list_node * node)
    78         -{
    79         -    if ((list->first == NULL) && (list->last == NULL))
    80         -      {
    81         -	  node->next = node->prev = NULL;
    82         -	  list->first = list->last = node;
    83         -	  return;
    84         -      }
    85         -
    86         -    node->next = NULL;
    87         -    node->prev = list->last;
    88         -
    89         -    list->last->next = node;
    90         -    list->last = node;
    91         -}
    92         -
    93         -void
    94         -prepend_list_node (linked_list * list, list_node * node)
    95         -{
    96         -    if ((list->first == NULL) && (list->last == NULL))
    97         -      {
    98         -	  node->next = node->prev = NULL;
    99         -	  list->first = list->last = node;
   100         -	  return;
   101         -      }
   102         -
   103         -    node->prev = NULL;
   104         -    node->next = list->first;
   105         -
   106         -    list->first->prev = node;
   107         -    list->first = node;
   108         -}
   109         -
   110         -void
   111         -remove_list_node_link (linked_list * list, list_node * node)
   112         -{
   113         -    if (node->prev)
   114         -      {
   115         -	  node->prev->next = node->next;
   116         -      }
   117         -    else
   118         -      {
   119         -	  list->first = node->next;
   120         -      }
   121         -
   122         -    if (node->next)
   123         -      {
   124         -	  node->next->prev = node->prev;
   125         -      }
   126         -    else
   127         -      {
   128         -	  list->last = node->prev;
   129         -      }
   130         -}
   131         -
   132         -void
   133         -remove_list_node (linked_list * list, list_node * node)
   134         -{
   135         -    remove_list_node_link (list, node);
   136         -    free_list_node (node);
   137         -}
   138         -
   139         -void
   140         -move_list_node (linked_list * src_list, linked_list * dst_list,
   141         -		list_node * node)
   142         -{
   143         -    remove_list_node_link (src_list, node);
   144         -    append_list_node (dst_list, node);
   145         -}
   146         -
   147         -void
   148         -insert_before_list_node (linked_list * list, list_node * node,
   149         -			 list_node * new_node)
   150         -{
   151         -    if (!node)
   152         -      {
   153         -	  prepend_list_node (list, new_node);
   154         -	  return;
   155         -      }
   156         -
   157         -    if (node->prev)
   158         -      {
   159         -	  new_node->next = node;
   160         -	  new_node->prev = node->prev;
   161         -	  node->prev = node->prev->next = new_node;
   162         -      }
   163         -    else
   164         -      {
   165         -	  new_node->prev = NULL;
   166         -	  new_node->next = node;
   167         -	  node->prev = list->first = new_node;
   168         -      }
   169         -}
   170         -
   171         -void
   172         -insert_after_list_node (linked_list * list, list_node * node,
   173         -			list_node * new_node)
   174         -{
   175         -    if (!node)
   176         -      {
   177         -	  append_list_node (list, new_node);
   178         -	  return;
   179         -      }
   180         -
   181         -    if (node->next)
   182         -      {
   183         -	  new_node->prev = node;
   184         -	  new_node->next = node->next;
   185         -	  node->next = node->next->prev = new_node;
   186         -      }
   187         -    else
   188         -      {
   189         -	  new_node->next = NULL;
   190         -	  new_node->prev = node;
   191         -	  node->next = list->last = new_node;
   192         -      }
   193         -}

Deleted epsilon/list.h.

     1         -/*
     2         - * $Id: list.h,v 1.17 2007/05/20 13:19:12 simakov Exp $
     3         - *
     4         - * EPSILON - wavelet image compression library.
     5         - * Copyright (C) 2006-2007 Alexander Simakov, <xander@entropyware.info>
     6         - *
     7         - * This program is free software; you can redistribute it and/or modify
     8         - * it under the terms of the GNU General Public License as published by
     9         - * the Free Software Foundation; either version 2 of the License, or
    10         - * (at your option) any later version.
    11         - *
    12         - * This program is distributed in the hope that it will be useful,
    13         - * but WITHOUT ANY WARRANTY; without even the implied warranty of
    14         - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    15         - * GNU General Public License for more details.
    16         - *
    17         - * You should have received a copy of the GNU General Public License
    18         - * along with this program; if not, write to the Free Software
    19         - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
    20         - *
    21         - * http://epsilon-project.sourceforge.net
    22         - */
    23         -
    24         -/** \file
    25         - *
    26         - *  \brief Doubly-linked lists
    27         - *
    28         - *  This file contains routines to deal with doubly-linked lists. */
    29         -
    30         -#ifndef __LIST_H__
    31         -#define __LIST_H__
    32         -
    33         -#ifdef __cplusplus
    34         -extern "C"
    35         -{
    36         -#endif
    37         -
    38         -/** \addtogroup list Doubly-linked lists */
    39         -/*@{*/
    40         -
    41         -#include <common.h>
    42         -
    43         -/** This macro evaluates to 1 if list \a _x is empty */
    44         -#define LIST_IS_EMPTY(_x)       (_x->first == NULL)
    45         -
    46         -/** List node structure */
    47         -    typedef struct list_node_tag list_node;
    48         -
    49         -/** List node structure
    50         - *
    51         - *  This structure represents a doubly-linked list node. */
    52         -    struct list_node_tag
    53         -    {
    54         -    /** Data block pointer */
    55         -	void *data;
    56         -    /** Next list node */
    57         -	list_node *next;
    58         -    /** Previous list node */
    59         -	list_node *prev;
    60         -    };
    61         -
    62         -/** Doubly-linked list structure
    63         - *
    64         - *  This structure represents a doubly-linked list. */
    65         -    typedef struct linked_list_tag
    66         -    {
    67         -    /** First node */
    68         -	list_node *first;
    69         -    /** Last node */
    70         -	list_node *last;
    71         -    } linked_list;
    72         -
    73         -/** Allocate new doubly-linked list
    74         - *
    75         - *  This function allocates new doubly-linked list.
    76         - *
    77         - *  \return New list pointer */
    78         -    linked_list *alloc_linked_list (void);
    79         -
    80         -/** Release doubly-linked list
    81         - *
    82         - *  This function releases doubly-linked \a list with all
    83         - *  its internal nodes. Data blocks associated with nodes
    84         - *  are also released.
    85         - *
    86         - *  \return \c VOID */
    87         -    void free_linked_list (linked_list * list);
    88         -
    89         -/** Allocate new list node
    90         - *
    91         - *  This function allocates new list node with associated
    92         - *  data block of size \a data_size.
    93         - *
    94         - *  \return New node pointer */
    95         -    list_node *alloc_list_node (int data_size);
    96         -
    97         -/** Release list node
    98         - *
    99         - *  This function releases list \a node and data block
   100         - *  associated with it.
   101         - *
   102         - *  \return \c VOID */
   103         -    void free_list_node (list_node * node);
   104         -
   105         -/** Append list node
   106         - *
   107         - *  This function appends new \a node to the \a list tail.
   108         - *
   109         - *  \note Node must be properly allocated beforehand.
   110         - *
   111         - *  \return \c VOID */
   112         -    void append_list_node (linked_list * list, list_node * node);
   113         -
   114         -/** Prepend list node
   115         - *
   116         - *  This function prepends new \a node to the \a list head.
   117         - *
   118         - *  \note Node must be properly allocated beforehand.
   119         - *
   120         - *  \return \c VOID */
   121         -    void prepend_list_node (linked_list * list, list_node * node);
   122         -
   123         -/** Remove list node
   124         - *
   125         - *  This function removes \a node links from the \a list.
   126         - *
   127         - *  \note The \a node itself is not released and can be added
   128         - *  to another list.
   129         - *
   130         - *  \return \c VOID */
   131         -    void remove_list_node_link (linked_list * list, list_node * node);
   132         -
   133         -/** Remove list node
   134         - *
   135         - *  This function removes \a node from the \a list.
   136         - *
   137         - *  \note The \a node itself is released and cannot be added
   138         - *  to another list.
   139         - *
   140         - *  \return \c VOID */
   141         -    void remove_list_node (linked_list * list, list_node * node);
   142         -
   143         -/** Move node
   144         - *
   145         - *  This function moves \a node from \a src_list to \a dst_list.
   146         - *
   147         - *  \return \c VOID */
   148         -    void move_list_node (linked_list * src_list, linked_list * dst_list,
   149         -			 list_node * node);
   150         -
   151         -/** Insert node
   152         - *
   153         - *  This function inserts \a new_node to the \a list just before \a node.
   154         - *
   155         - *  \return \c VOID */
   156         -    void insert_before_list_node (linked_list * list, list_node * node,
   157         -				  list_node * new_node);
   158         -
   159         -/** Insert node
   160         - *
   161         - *  This function inserts \a new_node to the \a list just after \a node.
   162         - *
   163         - *  \return \c VOID */
   164         -    void insert_after_list_node (linked_list * list, list_node * node,
   165         -				 list_node * new_node);
   166         -
   167         -/*@}*/
   168         -
   169         -#ifdef __cplusplus
   170         -}
   171         -#endif
   172         -
   173         -#endif				/* __LIST_H__ */

Deleted epsilon/mem_alloc.c.

     1         -/*
     2         - * $Id: mem_alloc.c,v 1.15 2007/05/20 13:19:12 simakov Exp $
     3         - *
     4         - * EPSILON - wavelet image compression library.
     5         - * Copyright (C) 2006-2007 Alexander Simakov, <xander@entropyware.info>
     6         - *
     7         - * This program is free software; you can redistribute it and/or modify
     8         - * it under the terms of the GNU General Public License as published by
     9         - * the Free Software Foundation; either version 2 of the License, or
    10         - * (at your option) any later version.
    11         - *
    12         - * This program is distributed in the hope that it will be useful,
    13         - * but WITHOUT ANY WARRANTY; without even the implied warranty of
    14         - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    15         - * GNU General Public License for more details.
    16         - *
    17         - * You should have received a copy of the GNU General Public License
    18         - * along with this program; if not, write to the Free Software
    19         - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
    20         - *
    21         - * http://epsilon-project.sourceforge.net
    22         - */
    23         -
    24         -#include <common.h>
    25         -#include <mem_alloc.h>
    26         -
    27         -void *
    28         -xmalloc (size_t size)
    29         -{
    30         -    void *ptr;
    31         -
    32         -    ptr = malloc (size);
    33         -    assert (ptr);
    34         -
    35         -    return ptr;
    36         -}
    37         -
    38         -void **
    39         -malloc_2D (int width, int height, int size)
    40         -{
    41         -    void **ptr;
    42         -    int i;
    43         -
    44         -    assert ((width > 0) && (height > 0) && (size > 0));
    45         -    ptr = (void **) xmalloc (height * sizeof (void *));
    46         -
    47         -    for (i = 0; i < height; i++)
    48         -      {
    49         -	  ptr[i] = (void *) xmalloc (width * size);
    50         -      }
    51         -
    52         -    return ptr;
    53         -}
    54         -
    55         -void
    56         -free_2D (void **ptr, int width, int height)
    57         -{
    58         -    int i;
    59         -
    60         -    assert ((width > 0) && (height > 0));
    61         -
    62         -    for (i = 0; i < height; i++)
    63         -      {
    64         -	  free (ptr[i]);
    65         -      }
    66         -
    67         -    free (ptr);
    68         -}

Deleted epsilon/mem_alloc.h.

     1         -/*
     2         - * $Id: mem_alloc.h,v 1.14 2007/05/20 13:19:12 simakov Exp $
     3         - *
     4         - * EPSILON - wavelet image compression library.
     5         - * Copyright (C) 2006-2007 Alexander Simakov, <xander@entropyware.info>
     6         - *
     7         - * This program is free software; you can redistribute it and/or modify
     8         - * it under the terms of the GNU General Public License as published by
     9         - * the Free Software Foundation; either version 2 of the License, or
    10         - * (at your option) any later version.
    11         - *
    12         - * This program is distributed in the hope that it will be useful,
    13         - * but WITHOUT ANY WARRANTY; without even the implied warranty of
    14         - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    15         - * GNU General Public License for more details.
    16         - *
    17         - * You should have received a copy of the GNU General Public License
    18         - * along with this program; if not, write to the Free Software
    19         - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
    20         - *
    21         - * http://epsilon-project.sourceforge.net
    22         - */
    23         -
    24         -/** \file
    25         - *
    26         - *  \brief Two-dimensional memory management
    27         - *
    28         - *  This file contains two-dimensional memory management routines. */
    29         -
    30         -#ifndef __MEM_ALLOC_H__
    31         -#define __MEM_ALLOC_H__
    32         -
    33         -#ifdef __cplusplus
    34         -extern "C"
    35         -{
    36         -#endif
    37         -
    38         -/** \addtogroup mem_alloc Two-dimensional memory management */
    39         -/*@{*/
    40         -
    41         -#include <common.h>
    42         -
    43         -/** Memory allocation
    44         - *
    45         - *  This function allocates one-dimensional array of desired size.
    46         - *
    47         - *  \param size Size in bytes
    48         - *
    49         - *  \return Array pointer
    50         - *
    51         - *  \warning This function halts program if all virtual memory
    52         - *  is exhausted. */
    53         -    void *xmalloc (size_t size);
    54         -
    55         -/** Two-dimensional memory allocation
    56         - *
    57         - *  This function allocates two-dimensional array of desired size.
    58         - *
    59         - *  \param width Array width
    60         - *  \param height Array height
    61         - *  \param size Element size
    62         - *
    63         - *  \return Array pointer
    64         - *
    65         - *  \warning This function halts program if all virtual memory
    66         - *  is exhausted. */
    67         -    void **malloc_2D (int width, int height, int size);
    68         -
    69         -/** Two-dimensional memory releasing
    70         - *
    71         - *  This function releases two-dimensional array allocated by #malloc_2D.
    72         - *
    73         - *  \param ptr Array pointer
    74         - *  \param width Array width
    75         - *  \param height Array height
    76         - *
    77         - *  \return \c VOID */
    78         -    void free_2D (void **ptr, int width, int height);
    79         -
    80         -/*@}*/
    81         -
    82         -#ifdef __cplusplus
    83         -}
    84         -#endif
    85         -
    86         -#endif				/* __MEM_ALLOC_H__ */

Deleted epsilon/merge_split.c.

     1         -/*
     2         - * $Id: merge_split.c,v 1.13 2007/05/20 13:19:12 simakov Exp $
     3         - *
     4         - * EPSILON - wavelet image compression library.
     5         - * Copyright (C) 2006-2007 Alexander Simakov, <xander@entropyware.info>
     6         - *
     7         - * This program is free software; you can redistribute it and/or modify
     8         - * it under the terms of the GNU General Public License as published by
     9         - * the Free Software Foundation; either version 2 of the License, or
    10         - * (at your option) any later version.
    11         - *
    12         - * This program is distributed in the hope that it will be useful,
    13         - * but WITHOUT ANY WARRANTY; without even the implied warranty of
    14         - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    15         - * GNU General Public License for more details.
    16         - *
    17         - * You should have received a copy of the GNU General Public License
    18         - * along with this program; if not, write to the Free Software
    19         - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
    20         - *
    21         - * http://epsilon-project.sourceforge.net
    22         - */
    23         -
    24         -#include <common.h>
    25         -#include <merge_split.h>
    26         -
    27         -void
    28         -merge_channels (unsigned char *channel_A, unsigned char *channel_B,
    29         -		unsigned char *channel_AB, int len_A, int len_B)
    30         -{
    31         -    int pkg_A, pkg_B;		/* Real number of bytes in the package */
    32         -    int div_A, div_B;		/* Base number of bytes in the package */
    33         -    int rem_A, rem_B;		/* Instant reminder */
    34         -    int cur_A, cur_B;		/* Current savings */
    35         -    int tr0_A, tr0_B;		/* Lower threshold */
    36         -    int tr1_A, tr1_B;		/* Upper threshold */
    37         -    int i, pkg, min;
    38         -
    39         -    /* Sanity checks. I love them! */
    40         -    assert ((len_A > 0) && (len_B > 0));
    41         -
    42         -    /* Total number of packages */
    43         -    min = MIN (len_A, len_B);
    44         -
    45         -    /* 1-st channel setup */
    46         -    div_A = len_A / min;
    47         -    cur_A = len_A;
    48         -    rem_A = 0;
    49         -    tr0_A = div_A * min;
    50         -    tr1_A = tr0_A + min;
    51         -
    52         -    /* 2-nd channel setup */
    53         -    div_B = len_B / min;
    54         -    cur_B = len_B;
    55         -    rem_B = 0;
    56         -    tr0_B = div_B * min;
    57         -    tr1_B = tr0_B + min;
    58         -
    59         -    /* Loop for all packages */
    60         -    for (pkg = 0; pkg < min; pkg++)
    61         -      {
    62         -	  /* Update current savings */
    63         -	  cur_A = len_A + rem_A;
    64         -
    65         -	  if (cur_A >= tr1_A)
    66         -	    {
    67         -		/* Choose maximal package & update reminder */
    68         -		pkg_A = div_A + 1;
    69         -		rem_A = cur_A - tr1_A;
    70         -	    }
    71         -	  else
    72         -	    {
    73         -		/* Choose minimal package & update reminder */
    74         -		pkg_A = div_A;
    75         -		rem_A = cur_A - tr0_A;
    76         -	    }
    77         -
    78         -	  /* Update current savings */
    79         -	  cur_B = len_B + rem_B;
    80         -
    81         -	  if (cur_B >= tr1_B)
    82         -	    {
    83         -		/* Choose maximal package & update reminder */
    84         -		pkg_B = div_B + 1;
    85         -		rem_B = cur_B - tr1_B;
    86         -	    }
    87         -	  else
    88         -	    {
    89         -		/* Choose minimal package & update reminder */
    90         -		pkg_B = div_B;
    91         -		rem_B = cur_B - tr0_B;
    92         -	    }
    93         -
    94         -	  /* Put bytes from the 1-st channel */
    95         -	  for (i = 0; i < pkg_A; i++)
    96         -	    {
    97         -		*channel_AB++ = *channel_A++;
    98         -	    }
    99         -
   100         -	  /* Put bytes from the 2-nd channel */
   101         -	  for (i = 0; i < pkg_B; i++)
   102         -	    {
   103         -		*channel_AB++ = *channel_B++;
   104         -	    }
   105         -      }
   106         -}
   107         -
   108         -void
   109         -split_channels (unsigned char *channel_AB,
   110         -		unsigned char *channel_A, unsigned char *channel_B,
   111         -		int len_AB, int len_A, int len_B,
   112         -		int *real_len_A, int *real_len_B)
   113         -{
   114         -    int pkg_A, pkg_B;		/* Real number of bytes in the package */
   115         -    int div_A, div_B;		/* Base number of bytes in the package */
   116         -    int rem_A, rem_B;		/* Instant reminder */
   117         -    int cur_A, cur_B;		/* Current savings */
   118         -    int tr0_A, tr0_B;		/* Lower threshold */
   119         -    int tr1_A, tr1_B;		/* Upper threshold */
   120         -    int i, pkg, min;
   121         -
   122         -    unsigned char *end_AB;
   123         -    unsigned char *end_A;
   124         -    unsigned char *end_B;
   125         -
   126         -    /* Sanity checks */
   127         -    assert ((len_A > 0) && (len_B > 0) && (len_AB > 0));
   128         -    assert (real_len_A && real_len_B);
   129         -    assert (len_A + len_B >= len_AB);
   130         -
   131         -    /* Set end-of-buffer pointers */
   132         -    end_AB = channel_AB + len_AB;
   133         -    end_A = channel_A + len_A;
   134         -    end_B = channel_B + len_B;
   135         -
   136         -    /* Real amount of saved bytes */
   137         -    *real_len_A = *real_len_B = 0;
   138         -
   139         -    /* Original number of packages (real stream may be truncated) */
   140         -    min = MIN (len_A, len_B);
   141         -
   142         -    /* 1-st channel setup */
   143         -    div_A = len_A / min;
   144         -    cur_A = len_A;
   145         -    rem_A = 0;
   146         -    tr0_A = div_A * min;
   147         -    tr1_A = tr0_A + min;
   148         -
   149         -    /* 2-nd channel setup */
   150         -    div_B = len_B / min;
   151         -    cur_B = len_B;
   152         -    rem_B = 0;
   153         -    tr0_B = div_B * min;
   154         -    tr1_B = tr0_B + min;
   155         -
   156         -    /* Loop for all packages */
   157         -    for (pkg = 0; pkg < min; pkg++)
   158         -      {
   159         -	  /* Update current savings */
   160         -	  cur_A = len_A + rem_A;
   161         -
   162         -	  if (cur_A >= tr1_A)
   163         -	    {
   164         -		/* Choose maximal package & update reminder */
   165         -		pkg_A = div_A + 1;
   166         -		rem_A = cur_A - tr1_A;
   167         -	    }
   168         -	  else
   169         -	    {
   170         -		/* Choose minimal package & update reminder */
   171         -		pkg_A = div_A;
   172         -		rem_A = cur_A - tr0_A;
   173         -	    }
   174         -
   175         -	  /* Update current savings */
   176         -	  cur_B = len_B + rem_B;
   177         -
   178         -	  if (cur_B >= tr1_B)
   179         -	    {
   180         -		/* Choose maximal package & update reminder */
   181         -		pkg_B = div_B + 1;
   182         -		rem_B = cur_B - tr1_B;
   183         -	    }
   184         -	  else
   185         -	    {
   186         -		/* Choose minimal package & update reminder */
   187         -		pkg_B = div_B;
   188         -		rem_B = cur_B - tr0_B;
   189         -	    }
   190         -
   191         -	  /* Extract pkg_A bytes from the stream into the channel_A */
   192         -	  for (i = 0;
   193         -	       (i < pkg_A) && (channel_A < end_A) && (channel_AB < end_AB); i++)
   194         -	    {
   195         -		*channel_A++ = *channel_AB++;
   196         -		(*real_len_A)++;
   197         -	    }
   198         -
   199         -	  /* Extract pkg_B bytes from the stream into the channel_B */
   200         -	  for (i = 0;
   201         -	       (i < pkg_B) && (channel_B < end_B) && (channel_AB < end_AB); i++)
   202         -	    {
   203         -		*channel_B++ = *channel_AB++;
   204         -		(*real_len_B)++;
   205         -	    }
   206         -
   207         -	  /* All avaiable bytes are processed */
   208         -	  if (channel_AB >= end_AB)
   209         -	    {
   210         -		assert (*real_len_A + *real_len_B == len_AB);
   211         -
   212         -		if ((pkg == min - 1) && (channel_A == end_A)
   213         -		    && (channel_B == end_B))
   214         -		  {
   215         -		      assert ((*real_len_A == len_A) && (*real_len_B == len_B));
   216         -		  }
   217         -
   218         -		return;
   219         -	    }
   220         -      }
   221         -}

Deleted epsilon/merge_split.h.

     1         -/*
     2         - * $Id: merge_split.h,v 1.15 2007/05/20 13:19:12 simakov Exp $
     3         - *
     4         - * EPSILON - wavelet image compression library.
     5         - * Copyright (C) 2006-2007 Alexander Simakov, <xander@entropyware.info>
     6         - *
     7         - * This program is free software; you can redistribute it and/or modify
     8         - * it under the terms of the GNU General Public License as published by
     9         - * the Free Software Foundation; either version 2 of the License, or
    10         - * (at your option) any later version.
    11         - *
    12         - * This program is distributed in the hope that it will be useful,
    13         - * but WITHOUT ANY WARRANTY; without even the implied warranty of
    14         - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    15         - * GNU General Public License for more details.
    16         - *
    17         - * You should have received a copy of the GNU General Public License
    18         - * along with this program; if not, write to the Free Software
    19         - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
    20         - *
    21         - * http://epsilon-project.sourceforge.net
    22         - */
    23         -
    24         -/** \file
    25         - *
    26         - *  \brief Merge and split
    27         - *
    28         - *  The library expects that color image consists of 3 independent
    29         - *  channels: Y, Cb and Cr. In order to provide smooth image scaling
    30         - *  corresponding bitstreams should be merged into a singe bitstream.
    31         - *  On decoding, the inverse operation should be taken. */
    32         -
    33         -#ifndef __MERGE_SPLIT_H__
    34         -#define __MERGE_SPLIT_H__
    35         -
    36         -#ifdef __cplusplus
    37         -extern "C"
    38         -{
    39         -#endif
    40         -
    41         -/** \addtogroup merge_split Merge and split */
    42         -/*@{*/
    43         -
    44         -#include <common.h>
    45         -
    46         -/** Merge two channels
    47         - *
    48         - *  This function merges \a channel_A with \a channel_B. Result is stored
    49         - *  in the \a channel_AB. Note that on return, combined \a channel_AB can
    50         - *  be further merged with another channel.
    51         - *
    52         - *  \param channel_A Channel A
    53         - *  \param channel_B Channel B
    54         - *  \param channel_AB Combined channel AB
    55         - *  \param len_A Length of the \a channel_A
    56         - *  \param len_B Length of the \a channel_B
    57         - *
    58         - *  \note The caller should allocate at least \a len_A + \a len_B
    59         - *  bytes for the \a channel_AB array.
    60         - *
    61         - *  \return \c VOID */
    62         -    void merge_channels (unsigned char *channel_A, unsigned char *channel_B,
    63         -			 unsigned char *channel_AB, int len_A, int len_B);
    64         -
    65         -/** Split combined channel
    66         - *
    67         - *  This function splits combined \a channel_AB into
    68         - *  the \a channel_A and \a channel_B. It is important to note
    69         - *  that \a channel_AB can be truncated at any position beforehand.
    70         - *  In this case \a channel_A and \a channel_B will contain only
    71         - *  part of original data. Real amount of saved bytes will be stored
    72         - *  in the \a real_len_A and \a real_len_B respectively.
    73         - *
    74         - *  \param channel_AB Combined channel AB
    75         - *  \param channel_A Channel A
    76         - *  \param channel_B Channel B
    77         - *  \param len_AB Current length of the \a channel_AB
    78         - *  \param len_A Original length of the \a channel_A
    79         - *  \param len_B Original length of the \a channel_B
    80         - *  \param real_len_A Number of bytes actually used in the \a channel_A
    81         - *  \param real_len_B Number of bytes actually used in the \a channel_B
    82         - *
    83         - *  \note The caller should allocate at least \a len_AB bytes for
    84         - *  \a channel_A and \a channel_B arrays.
    85         - *
    86         - *  \return \c VOID */
    87         -    void split_channels (unsigned char *channel_AB,
    88         -			 unsigned char *channel_A, unsigned char *channel_B,
    89         -			 int len_AB, int len_A, int len_B,
    90         -			 int *real_len_A, int *real_len_B);
    91         -
    92         -/*@}*/
    93         -
    94         -#ifdef __cplusplus
    95         -}
    96         -#endif
    97         -
    98         -#endif				/* __MERGE_SPLIT_H__ */

Deleted epsilon/msvc/inttypes.h.

     1         -// ISO C9x  compliant inttypes.h for Microsoft Visual Studio
     2         -// Based on ISO/IEC 9899:TC2 Committee draft (May 6, 2005) WG14/N1124
     3         -//
     4         -//  Copyright (c) 2006 Alexander Chemeris
     5         -//
     6         -// Redistribution and use in source and binary forms, with or without
     7         -// modification, are permitted provided that the following conditions are met:
     8         -//
     9         -//   1. Redistributions of source code must retain the above copyright notice,
    10         -//      this list of conditions and the following disclaimer.
    11         -//
    12         -//   2. Redistributions in binary form must reproduce the above copyright
    13         -//      notice, this list of conditions and the following disclaimer in the
    14         -//      documentation and/or other materials provided with the distribution.
    15         -//
    16         -//   3. The name of the author may be used to endorse or promote products
    17         -//      derived from this software without specific prior written permission.
    18         -//
    19         -// THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
    20         -// WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
    21         -// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
    22         -// EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
    23         -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
    24         -// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
    25         -// OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
    26         -// WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
    27         -// OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
    28         -// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
    29         -//
    30         -///////////////////////////////////////////////////////////////////////////////
    31         -
    32         -#ifndef _MSC_VER // [
    33         -#error "Use this header only with Microsoft Visual C++ compilers!"
    34         -#endif // _MSC_VER ]
    35         -
    36         -#ifndef _MSC_INTTYPES_H_ // [
    37         -#define _MSC_INTTYPES_H_
    38         -
    39         -#if _MSC_VER > 1000
    40         -#pragma once
    41         -#endif
    42         -
    43         -#include <stdint.h>
    44         -
    45         -// 7.8 Format conversion of integer types
    46         -
    47         -typedef struct {
    48         -   intmax_t quot;
    49         -   intmax_t rem;
    50         -} imaxdiv_t;
    51         -
    52         -// 7.8.1 Macros for format specifiers
    53         -
    54         -// The fprintf macros for signed integers are:
    55         -#define PRId8       "d"
    56         -#define PRIi8       "i"
    57         -#define PRIdLEAST8  "d"
    58         -#define PRIiLEAST8  "i"
    59         -#define PRIdFAST8   "d"
    60         -#define PRIiFAST8   "i"
    61         -
    62         -#define PRId16       "hd"
    63         -#define PRIi16       "hi"
    64         -#define PRIdLEAST16  "hd"
    65         -#define PRIiLEAST16  "hi"
    66         -#define PRIdFAST16   "hd"
    67         -#define PRIiFAST16   "hi"
    68         -
    69         -#define PRId32       "I32d"
    70         -#define PRIi32       "I32i"
    71         -#define PRIdLEAST32  "I32d"
    72         -#define PRIiLEAST32  "I32i"
    73         -#define PRIdFAST32   "I32d"
    74         -#define PRIiFAST32   "I32i"
    75         -
    76         -#define PRId64       "I64d"
    77         -#define PRIi64       "I64i"
    78         -#define PRIdLEAST64  "I64d"
    79         -#define PRIiLEAST64  "I64i"
    80         -#define PRIdFAST64   "I64d"
    81         -#define PRIiFAST64   "I64i"
    82         -
    83         -#define PRIdMAX     "I64d"
    84         -#define PRIiMAX     "I64i"
    85         -
    86         -#define PRIdPTR     "Id"
    87         -#define PRIiPTR     "Ii"
    88         -
    89         -// The fprintf macros for unsigned integers are:
    90         -#define PRIo8       "o"
    91         -#define PRIu8       "u"
    92         -#define PRIx8       "x"
    93         -#define PRIX8       "X"
    94         -#define PRIoLEAST8  "o"
    95         -#define PRIuLEAST8  "u"
    96         -#define PRIxLEAST8  "x"
    97         -#define PRIXLEAST8  "X"
    98         -#define PRIoFAST8   "o"
    99         -#define PRIuFAST8   "u"
   100         -#define PRIxFAST8   "x"
   101         -#define PRIXFAST8   "X"
   102         -
   103         -#define PRIo16       "ho"
   104         -#define PRIu16       "hu"
   105         -#define PRIx16       "hx"
   106         -#define PRIX16       "hX"
   107         -#define PRIoLEAST16  "ho"
   108         -#define PRIuLEAST16  "hu"
   109         -#define PRIxLEAST16  "hx"
   110         -#define PRIXLEAST16  "hX"
   111         -#define PRIoFAST16   "ho"
   112         -#define PRIuFAST16   "hu"
   113         -#define PRIxFAST16   "hx"
   114         -#define PRIXFAST16   "hX"
   115         -
   116         -#define PRIo32       "I32o"
   117         -#define PRIu32       "I32u"
   118         -#define PRIx32       "I32x"
   119         -#define PRIX32       "I32X"
   120         -#define PRIoLEAST32  "I32o"
   121         -#define PRIuLEAST32  "I32u"
   122         -#define PRIxLEAST32  "I32x"
   123         -#define PRIXLEAST32  "I32X"
   124         -#define PRIoFAST32   "I32o"
   125         -#define PRIuFAST32   "I32u"
   126         -#define PRIxFAST32   "I32x"
   127         -#define PRIXFAST32   "I32X"
   128         -
   129         -#define PRIo64       "I64o"
   130         -#define PRIu64       "I64u"
   131         -#define PRIx64       "I64x"
   132         -#define PRIX64       "I64X"
   133         -#define PRIoLEAST64  "I64o"
   134         -#define PRIuLEAST64  "I64u"
   135         -#define PRIxLEAST64  "I64x"
   136         -#define PRIXLEAST64  "I64X"
   137         -#define PRIoFAST64   "I64o"
   138         -#define PRIuFAST64   "I64u"
   139         -#define PRIxFAST64   "I64x"
   140         -#define PRIXFAST64   "I64X"
   141         -
   142         -#define PRIoMAX     "I64o"
   143         -#define PRIuMAX     "I64u"
   144         -#define PRIxMAX     "I64x"
   145         -#define PRIXMAX     "I64X"
   146         -
   147         -#define PRIoPTR     "Io"
   148         -#define PRIuPTR     "Iu"
   149         -#define PRIxPTR     "Ix"
   150         -#define PRIXPTR     "IX"
   151         -
   152         -// The fscanf macros for signed integers are:
   153         -#define SCNd8       "d"
   154         -#define SCNi8       "i"
   155         -#define SCNdLEAST8  "d"
   156         -#define SCNiLEAST8  "i"
   157         -#define SCNdFAST8   "d"
   158         -#define SCNiFAST8   "i"
   159         -
   160         -#define SCNd16       "hd"
   161         -#define SCNi16       "hi"
   162         -#define SCNdLEAST16  "hd"
   163         -#define SCNiLEAST16  "hi"
   164         -#define SCNdFAST16   "hd"
   165         -#define SCNiFAST16   "hi"
   166         -
   167         -#define SCNd32       "ld"
   168         -#define SCNi32       "li"
   169         -#define SCNdLEAST32  "ld"
   170         -#define SCNiLEAST32  "li"
   171         -#define SCNdFAST32   "ld"
   172         -#define SCNiFAST32   "li"
   173         -
   174         -#define SCNd64       "I64d"
   175         -#define SCNi64       "I64i"
   176         -#define SCNdLEAST64  "I64d"
   177         -#define SCNiLEAST64  "I64i"
   178         -#define SCNdFAST64   "I64d"
   179         -#define SCNiFAST64   "I64i"
   180         -
   181         -#define SCNdMAX     "I64d"
   182         -#define SCNiMAX     "I64i"
   183         -
   184         -#ifdef _WIN64 // [
   185         -#  define SCNdPTR     "I64d"
   186         -#  define SCNiPTR     "I64i"
   187         -#else  // _WIN64 ][
   188         -#  define SCNdPTR     "ld"
   189         -#  define SCNiPTR     "li"
   190         -#endif  // _WIN64 ]
   191         -
   192         -// The fscanf macros for unsigned integers are:
   193         -#define SCNo8       "o"
   194         -#define SCNu8       "u"
   195         -#define SCNx8       "x"
   196         -#define SCNX8       "X"
   197         -#define SCNoLEAST8  "o"
   198         -#define SCNuLEAST8  "u"
   199         -#define SCNxLEAST8  "x"
   200         -#define SCNXLEAST8  "X"
   201         -#define SCNoFAST8   "o"
   202         -#define SCNuFAST8   "u"
   203         -#define SCNxFAST8   "x"
   204         -#define SCNXFAST8   "X"
   205         -
   206         -
   207         -#define SCNo16       "ho"
   208         -#define SCNu16       "hu"
   209         -#define SCNx16       "hx"
   210         -#define SCNX16       "hX"
   211         -#define SCNoLEAST16  "ho"
   212         -#define SCNuLEAST16  "hu"
   213         -#define SCNxLEAST16  "hx"
   214         -#define SCNXLEAST16  "hX"
   215         -#define SCNoFAST16   "ho"
   216         -#define SCNuFAST16   "hu"
   217         -#define SCNxFAST16   "hx"
   218         -#define SCNXFAST16   "hX"
   219         -
   220         -#define SCNo32       "lo"
   221         -#define SCNu32       "lu"
   222         -#define SCNx32       "lx"
   223         -#define SCNX32       "lX"
   224         -#define SCNoLEAST32  "lo"
   225         -#define SCNuLEAST32  "lu"
   226         -#define SCNxLEAST32  "lx"
   227         -#define SCNXLEAST32  "lX"
   228         -#define SCNoFAST32   "lo"
   229         -#define SCNuFAST32   "lu"
   230         -#define SCNxFAST32   "lx"
   231         -#define SCNXFAST32   "lX"
   232         -
   233         -#define SCNo64       "I64o"
   234         -#define SCNu64       "I64u"
   235         -#define SCNx64       "I64x"
   236         -#define SCNX64       "I64X"
   237         -#define SCNoLEAST64  "I64o"
   238         -#define SCNuLEAST64  "I64u"
   239         -#define SCNxLEAST64  "I64x"
   240         -#define SCNXLEAST64  "I64X"
   241         -#define SCNoFAST64   "I64o"
   242         -#define SCNuFAST64   "I64u"
   243         -#define SCNxFAST64   "I64x"
   244         -#define SCNXFAST64   "I64X"
   245         -
   246         -#define SCNoMAX     "I64o"
   247         -#define SCNuMAX     "I64u"
   248         -#define SCNxMAX     "I64x"
   249         -#define SCNXMAX     "I64X"
   250         -
   251         -#ifdef _WIN64 // [
   252         -#  define SCNoPTR     "I64o"
   253         -#  define SCNuPTR     "I64u"
   254         -#  define SCNxPTR     "I64x"
   255         -#  define SCNXPTR     "I64X"
   256         -#else  // _WIN64 ][
   257         -#  define SCNoPTR     "lo"
   258         -#  define SCNuPTR     "lu"
   259         -#  define SCNxPTR     "lx"
   260         -#  define SCNXPTR     "lX"
   261         -#endif  // _WIN64 ]
   262         -
   263         -// 7.8.2 Functions for greatest-width integer types
   264         -
   265         -// 7.8.2.1 The imaxabs function
   266         -#define imaxabs _abs64
   267         -
   268         -// 7.8.2.2 The imaxdiv function
   269         -
   270         -// This is modified version of div() function from Microsoft's div.c found
   271         -// in %MSVC.NET%\crt\src\div.c
   272         -#ifdef STATIC_IMAXDIV // [
   273         -static
   274         -#else // STATIC_IMAXDIV ][
   275         -_inline
   276         -#endif // STATIC_IMAXDIV ]
   277         -imaxdiv_t __cdecl imaxdiv(intmax_t numer, intmax_t denom)
   278         -{
   279         -   imaxdiv_t result;
   280         -
   281         -   result.quot = numer / denom;
   282         -   result.rem = numer % denom;
   283         -
   284         -   if (numer < 0 && result.rem > 0) {
   285         -      // did division wrong; must fix up
   286         -      ++result.quot;
   287         -      result.rem -= denom;
   288         -   }
   289         -
   290         -   return result;
   291         -}
   292         -
   293         -// 7.8.2.3 The strtoimax and strtoumax functions
   294         -#define strtoimax _strtoi64
   295         -#define strtoumax _strtoui64
   296         -
   297         -// 7.8.2.4 The wcstoimax and wcstoumax functions
   298         -#define wcstoimax _wcstoi64
   299         -#define wcstoumax _wcstoui64
   300         -
   301         -
   302         -#endif // _MSC_INTTYPES_H_ ]

Deleted epsilon/msvc/stdint.h.

     1         -// ISO C9x  compliant stdint.h for Microsoft Visual Studio
     2         -// Based on ISO/IEC 9899:TC2 Committee draft (May 6, 2005) WG14/N1124 
     3         -// 
     4         -//  Copyright (c) 2006-2008 Alexander Chemeris
     5         -// 
     6         -// Redistribution and use in source and binary forms, with or without
     7         -// modification, are permitted provided that the following conditions are met:
     8         -// 
     9         -//   1. Redistributions of source code must retain the above copyright notice,
    10         -//      this list of conditions and the following disclaimer.
    11         -// 
    12         -//   2. Redistributions in binary form must reproduce the above copyright
    13         -//      notice, this list of conditions and the following disclaimer in the
    14         -//      documentation and/or other materials provided with the distribution.
    15         -// 
    16         -//   3. The name of the author may be used to endorse or promote products
    17         -//      derived from this software without specific prior written permission.
    18         -// 
    19         -// THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
    20         -// WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
    21         -// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
    22         -// EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
    23         -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
    24         -// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
    25         -// OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 
    26         -// WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
    27         -// OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
    28         -// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
    29         -// 
    30         -///////////////////////////////////////////////////////////////////////////////
    31         -
    32         -#ifndef _MSC_VER // [
    33         -#error "Use this header only with Microsoft Visual C++ compilers!"
    34         -#endif // _MSC_VER ]
    35         -
    36         -#ifndef _MSC_STDINT_H_ // [
    37         -#define _MSC_STDINT_H_
    38         -
    39         -#if _MSC_VER > 1000
    40         -#pragma once
    41         -#endif
    42         -
    43         -#include <limits.h>
    44         -
    45         -// For Visual Studio 6 in C++ mode and for many Visual Studio versions when
    46         -// compiling for ARM we should wrap <wchar.h> include with 'extern "C++" {}'
    47         -// or compiler give many errors like this:
    48         -//   error C2733: second C linkage of overloaded function 'wmemchr' not allowed
    49         -#ifdef __cplusplus
    50         -extern "C" {
    51         -#endif
    52         -#  include <wchar.h>
    53         -#ifdef __cplusplus
    54         -}
    55         -#endif
    56         -
    57         -// Define _W64 macros to mark types changing their size, like intptr_t.
    58         -#ifndef _W64
    59         -#  if !defined(__midl) && (defined(_X86_) || defined(_M_IX86)) && _MSC_VER >= 1300
    60         -#     define _W64 __w64
    61         -#  else
    62         -#     define _W64
    63         -#  endif
    64         -#endif
    65         -
    66         -
    67         -// 7.18.1 Integer types
    68         -
    69         -// 7.18.1.1 Exact-width integer types
    70         -
    71         -// Visual Studio 6 and Embedded Visual C++ 4 doesn't
    72         -// realize that, e.g. char has the same size as __int8
    73         -// so we give up on __intX for them.
    74         -#if (_MSC_VER < 1300)
    75         -   typedef signed char       int8_t;
    76         -   typedef signed short      int16_t;
    77         -   typedef signed int        int32_t;
    78         -   typedef unsigned char     uint8_t;
    79         -   typedef unsigned short    uint16_t;
    80         -   typedef unsigned int      uint32_t;
    81         -#else
    82         -   typedef signed __int8     int8_t;
    83         -   typedef signed __int16    int16_t;
    84         -   typedef signed __int32    int32_t;
    85         -   typedef unsigned __int8   uint8_t;
    86         -   typedef unsigned __int16  uint16_t;
    87         -   typedef unsigned __int32  uint32_t;
    88         -#endif
    89         -typedef signed __int64       int64_t;
    90         -typedef unsigned __int64     uint64_t;
    91         -
    92         -
    93         -// 7.18.1.2 Minimum-width integer types
    94         -typedef int8_t    int_least8_t;
    95         -typedef int16_t   int_least16_t;
    96         -typedef int32_t   int_least32_t;
    97         -typedef int64_t   int_least64_t;
    98         -typedef uint8_t   uint_least8_t;
    99         -typedef uint16_t  uint_least16_t;
   100         -typedef uint32_t  uint_least32_t;
   101         -typedef uint64_t  uint_least64_t;
   102         -
   103         -// 7.18.1.3 Fastest minimum-width integer types
   104         -typedef int8_t    int_fast8_t;
   105         -typedef int16_t   int_fast16_t;
   106         -typedef int32_t   int_fast32_t;
   107         -typedef int64_t   int_fast64_t;
   108         -typedef uint8_t   uint_fast8_t;
   109         -typedef uint16_t  uint_fast16_t;
   110         -typedef uint32_t  uint_fast32_t;
   111         -typedef uint64_t  uint_fast64_t;
   112         -
   113         -// 7.18.1.4 Integer types capable of holding object pointers
   114         -#ifdef _WIN64 // [
   115         -   typedef signed __int64    intptr_t;
   116         -   typedef unsigned __int64  uintptr_t;
   117         -#else // _WIN64 ][
   118         -   typedef _W64 signed int   intptr_t;
   119         -   typedef _W64 unsigned int uintptr_t;
   120         -#endif // _WIN64 ]
   121         -
   122         -// 7.18.1.5 Greatest-width integer types
   123         -typedef int64_t   intmax_t;
   124         -typedef uint64_t  uintmax_t;
   125         -
   126         -
   127         -// 7.18.2 Limits of specified-width integer types
   128         -
   129         -#if !defined(__cplusplus) || defined(__STDC_LIMIT_MACROS) // [   See footnote 220 at page 257 and footnote 221 at page 259
   130         -
   131         -// 7.18.2.1 Limits of exact-width integer types
   132         -#define INT8_MIN     ((int8_t)_I8_MIN)
   133         -#define INT8_MAX     _I8_MAX
   134         -#define INT16_MIN    ((int16_t)_I16_MIN)
   135         -#define INT16_MAX    _I16_MAX
   136         -#define INT32_MIN    ((int32_t)_I32_MIN)
   137         -#define INT32_MAX    _I32_MAX
   138         -#define INT64_MIN    ((int64_t)_I64_MIN)
   139         -#define INT64_MAX    _I64_MAX
   140         -#define UINT8_MAX    _UI8_MAX
   141         -#define UINT16_MAX   _UI16_MAX
   142         -#define UINT32_MAX   _UI32_MAX
   143         -#define UINT64_MAX   _UI64_MAX
   144         -
   145         -// 7.18.2.2 Limits of minimum-width integer types
   146         -#define INT_LEAST8_MIN    INT8_MIN
   147         -#define INT_LEAST8_MAX    INT8_MAX
   148         -#define INT_LEAST16_MIN   INT16_MIN
   149         -#define INT_LEAST16_MAX   INT16_MAX
   150         -#define INT_LEAST32_MIN   INT32_MIN
   151         -#define INT_LEAST32_MAX   INT32_MAX
   152         -#define INT_LEAST64_MIN   INT64_MIN
   153         -#define INT_LEAST64_MAX   INT64_MAX
   154         -#define UINT_LEAST8_MAX   UINT8_MAX
   155         -#define UINT_LEAST16_MAX  UINT16_MAX
   156         -#define UINT_LEAST32_MAX  UINT32_MAX
   157         -#define UINT_LEAST64_MAX  UINT64_MAX
   158         -
   159         -// 7.18.2.3 Limits of fastest minimum-width integer types
   160         -#define INT_FAST8_MIN    INT8_MIN
   161         -#define INT_FAST8_MAX    INT8_MAX
   162         -#define INT_FAST16_MIN   INT16_MIN
   163         -#define INT_FAST16_MAX   INT16_MAX
   164         -#define INT_FAST32_MIN   INT32_MIN
   165         -#define INT_FAST32_MAX   INT32_MAX
   166         -#define INT_FAST64_MIN   INT64_MIN
   167         -#define INT_FAST64_MAX   INT64_MAX
   168         -#define UINT_FAST8_MAX   UINT8_MAX
   169         -#define UINT_FAST16_MAX  UINT16_MAX
   170         -#define UINT_FAST32_MAX  UINT32_MAX
   171         -#define UINT_FAST64_MAX  UINT64_MAX
   172         -
   173         -// 7.18.2.4 Limits of integer types capable of holding object pointers
   174         -#ifdef _WIN64 // [
   175         -#  define INTPTR_MIN   INT64_MIN
   176         -#  define INTPTR_MAX   INT64_MAX
   177         -#  define UINTPTR_MAX  UINT64_MAX
   178         -#else // _WIN64 ][
   179         -#  define INTPTR_MIN   INT32_MIN
   180         -#  define INTPTR_MAX   INT32_MAX
   181         -#  define UINTPTR_MAX  UINT32_MAX
   182         -#endif // _WIN64 ]
   183         -
   184         -// 7.18.2.5 Limits of greatest-width integer types
   185         -#define INTMAX_MIN   INT64_MIN
   186         -#define INTMAX_MAX   INT64_MAX
   187         -#define UINTMAX_MAX  UINT64_MAX
   188         -
   189         -// 7.18.3 Limits of other integer types
   190         -
   191         -#ifdef _WIN64 // [
   192         -#  define PTRDIFF_MIN  _I64_MIN
   193         -#  define PTRDIFF_MAX  _I64_MAX
   194         -#else  // _WIN64 ][
   195         -#  define PTRDIFF_MIN  _I32_MIN
   196         -#  define PTRDIFF_MAX  _I32_MAX
   197         -#endif  // _WIN64 ]
   198         -
   199         -#define SIG_ATOMIC_MIN  INT_MIN
   200         -#define SIG_ATOMIC_MAX  INT_MAX
   201         -
   202         -#ifndef SIZE_MAX // [
   203         -#  ifdef _WIN64 // [
   204         -#     define SIZE_MAX  _UI64_MAX
   205         -#  else // _WIN64 ][
   206         -#     define SIZE_MAX  _UI32_MAX
   207         -#  endif // _WIN64 ]
   208         -#endif // SIZE_MAX ]
   209         -
   210         -// WCHAR_MIN and WCHAR_MAX are also defined in <wchar.h>
   211         -#ifndef WCHAR_MIN // [
   212         -#  define WCHAR_MIN  0
   213         -#endif  // WCHAR_MIN ]
   214         -#ifndef WCHAR_MAX // [
   215         -#  define WCHAR_MAX  _UI16_MAX
   216         -#endif  // WCHAR_MAX ]
   217         -
   218         -#define WINT_MIN  0
   219         -#define WINT_MAX  _UI16_MAX
   220         -
   221         -#endif // __STDC_LIMIT_MACROS ]
   222         -
   223         -
   224         -// 7.18.4 Limits of other integer types
   225         -
   226         -#if !defined(__cplusplus) || defined(__STDC_CONSTANT_MACROS) // [   See footnote 224 at page 260
   227         -
   228         -// 7.18.4.1 Macros for minimum-width integer constants
   229         -
   230         -#define INT8_C(val)  val##i8
   231         -#define INT16_C(val) val##i16
   232         -#define INT32_C(val) val##i32
   233         -#define INT64_C(val) val##i64
   234         -
   235         -#define UINT8_C(val)  val##ui8
   236         -#define UINT16_C(val) val##ui16
   237         -#define UINT32_C(val) val##ui32
   238         -#define UINT64_C(val) val##ui64
   239         -
   240         -// 7.18.4.2 Macros for greatest-width integer constants
   241         -#define INTMAX_C   INT64_C
   242         -#define UINTMAX_C  UINT64_C
   243         -
   244         -#endif // __STDC_CONSTANT_MACROS ]
   245         -
   246         -
   247         -#endif // _MSC_STDINT_H_ ]

Deleted epsilon/pad.c.

     1         -/*
     2         - * $Id: pad.c,v 1.13 2007/05/20 13:19:12 simakov Exp $
     3         - *
     4         - * EPSILON - wavelet image compression library.
     5         - * Copyright (C) 2006-2007 Alexander Simakov, <xander@entropyware.info>
     6         - *
     7         - * This program is free software; you can redistribute it and/or modify
     8         - * it under the terms of the GNU General Public License as published by
     9         - * the Free Software Foundation; either version 2 of the License, or
    10         - * (at your option) any later version.
    11         - *
    12         - * This program is distributed in the hope that it will be useful,
    13         - * but WITHOUT ANY WARRANTY; without even the implied warranty of
    14         - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    15         - * GNU General Public License for more details.
    16         - *
    17         - * You should have received a copy of the GNU General Public License
    18         - * along with this program; if not, write to the Free Software
    19         - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
    20         - *
    21         - * http://epsilon-project.sourceforge.net
    22         - */
    23         -
    24         -#include <common.h>
    25         -#include <pad.h>
    26         -#include <color.h>
    27         -
    28         -void
    29         -extend_channel (unsigned char **input_channel,
    30         -		coeff_t ** output_channel,
    31         -		int input_width, int input_height,
    32         -		int output_width, int output_height)
    33         -{
    34         -    int i, j;
    35         -
    36         -    /* Sanity checks */
    37         -    assert ((input_width > 0) && (input_height > 0));
    38         -    assert ((output_width > 0) && (output_height > 0));
    39         -    assert (output_width >= input_width);
    40         -    assert (output_height >= input_height);
    41         -
    42         -    /* Copy original */
    43         -    for (i = 0; i < input_height; i++)
    44         -      {
    45         -	  for (j = 0; j < input_width; j++)
    46         -	    {
    47         -		output_channel[i][j] = input_channel[i][j];
    48         -	    }
    49         -      }
    50         -
    51         -    /* Fill horizontally */
    52         -    for (i = 0; i < input_height; i++)
    53         -      {
    54         -	  for (j = 0; j < output_width - input_width; j++)
    55         -	    {
    56         -		output_channel[i][input_width + j] =
    57         -		    output_channel[i][ABS (input_width - j - 1)];
    58         -	    }
    59         -      }
    60         -
    61         -    /* Fill vertically */
    62         -    for (j = 0; j < output_width; j++)
    63         -      {
    64         -	  for (i = 0; i < output_height - input_height; i++)
    65         -	    {
    66         -		output_channel[i + input_height][j] =
    67         -		    output_channel[ABS (input_height - i - 1)][j];
    68         -	    }
    69         -      }
    70         -}
    71         -
    72         -void
    73         -extract_channel (coeff_t ** input_channel,
    74         -		 unsigned char **output_channel,
    75         -		 int input_width, int input_height,
    76         -		 int output_width, int output_height)
    77         -{
    78         -    int i, j;
    79         -
    80         -    /* Sanity checks */
    81         -    assert ((input_width > 0) && (input_height > 0));
    82         -    assert ((output_width > 0) && (output_height > 0));
    83         -    assert (output_width <= input_width);
    84         -    assert (output_height <= output_height);
    85         -
    86         -    /* Extract & clip original data */
    87         -    for (i = 0; i < output_height; i++)
    88         -      {
    89         -	  for (j = 0; j < output_width; j++)
    90         -	    {
    91         -		output_channel[i][j] = CLIP (input_channel[i][j]);
    92         -	    }
    93         -      }
    94         -}

Deleted epsilon/pad.h.

     1         -/*
     2         - * $Id: pad.h,v 1.15 2007/05/20 13:19:12 simakov Exp $
     3         - *
     4         - * EPSILON - wavelet image compression library.
     5         - * Copyright (C) 2006-2007 Alexander Simakov, <xander@entropyware.info>
     6         - *
     7         - * This program is free software; you can redistribute it and/or modify
     8         - * it under the terms of the GNU General Public License as published by
     9         - * the Free Software Foundation; either version 2 of the License, or
    10         - * (at your option) any later version.
    11         - *
    12         - * This program is distributed in the hope that it will be useful,
    13         - * but WITHOUT ANY WARRANTY; without even the implied warranty of
    14         - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    15         - * GNU General Public License for more details.
    16         - *
    17         - * You should have received a copy of the GNU General Public License
    18         - * along with this program; if not, write to the Free Software
    19         - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
    20         - *
    21         - * http://epsilon-project.sourceforge.net
    22         - */
    23         -
    24         -/** \file
    25         - *
    26         - *  \brief Padding
    27         - *
    28         - *  The library expects that the image consists of square blocks
    29         - *  of certain size. Namely, 2^N or 2^N + 1 depending on selected
    30         - *  wavelet transform mode. Nevertheless, most real-life images
    31         - *  do not meet this strict requirement. That`s why we need to pad
    32         - *  boundary image blocks to the full size. Missing data is obtained
    33         - *  using pixel mirroring. */
    34         -
    35         -#ifndef __PAD_H__
    36         -#define __PAD_H__
    37         -
    38         -#ifdef __cplusplus
    39         -extern "C"
    40         -{
    41         -#endif
    42         -
    43         -/** \addtogroup pad Padding */
    44         -/*@{*/
    45         -
    46         -#include <common.h>
    47         -
    48         -/** Channel extension
    49         - *
    50         - *  This function extends \a input_channel using mirroring
    51         - *  operation. The result is stored in the \a output_channel.
    52         - *  Note that the \a output_channel must be greater than or
    53         - *  equal to the \a input_channel in both width and height.
    54         - *  Minimal channel size allowed is 1x1 pixels. Boundary
    55         - *  pixels are duplicated.
    56         - *
    57         - *  \param input_channel Input channel
    58         - *  \param output_channel Output channel
    59         - *  \param input_width Input channel width
    60         - *  \param input_height Input channel height
    61         - *  \param output_width Output channel width
    62         - *  \param output_height Output channel height
    63         - *
    64         - *  \return \c VOID */
    65         -    void extend_channel (unsigned char **input_channel,
    66         -			 coeff_t ** output_channel,
    67         -			 int input_width, int input_height,
    68         -			 int output_width, int output_height);
    69         -
    70         -/** Channel extraction
    71         - *
    72         - *  This function extracts a block of pixels from the
    73         - *  \a input_channel and stores it in the \a output_channel.
    74         - *  Note that the \a output_channel size must be less than
    75         - *  or equal to the \a input_channel in both width and height.
    76         - *  Minimal channel size allowed is 1x1 pixels.
    77         - *
    78         - *  \param input_channel Input channel
    79         - *  \param output_channel Output channel
    80         - *  \param input_width Input channel width
    81         - *  \param input_height Input channel height
    82         - *  \param output_width Output channel width
    83         - *  \param output_height Output channel height
    84         - *
    85         - *  \return \c VOID */
    86         -    void extract_channel (coeff_t ** input_channel,
    87         -			  unsigned char **output_channel,
    88         -			  int input_width, int input_height,
    89         -			  int output_width, int output_height);
    90         -
    91         -/*@}*/
    92         -
    93         -#ifdef __cplusplus
    94         -}
    95         -#endif
    96         -
    97         -#endif				/* __PAD_H__ */

Deleted epsilon/resample.c.

     1         -/*
     2         - * $Id: resample.c,v 1.9 2007/05/20 13:19:12 simakov Exp $
     3         - *
     4         - * EPSILON - wavelet image compression library.
     5         - * Copyright (C) 2006-2007 Alexander Simakov, <xander@entropyware.info>
     6         - *
     7         - * This program is free software; you can redistribute it and/or modify
     8         - * it under the terms of the GNU General Public License as published by
     9         - * the Free Software Foundation; either version 2 of the License, or
    10         - * (at your option) any later version.
    11         - *
    12         - * This program is distributed in the hope that it will be useful,
    13         - * but WITHOUT ANY WARRANTY; without even the implied warranty of
    14         - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    15         - * GNU General Public License for more details.
    16         - *
    17         - * You should have received a copy of the GNU General Public License
    18         - * along with this program; if not, write to the Free Software
    19         - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
    20         - *
    21         - * http://epsilon-project.sourceforge.net
    22         - */
    23         -
    24         -#include <common.h>
    25         -#include <resample.h>
    26         -
    27         -void
    28         -bilinear_resample_channel (coeff_t ** input_channel, coeff_t ** output_channel,
    29         -			   int input_width, int input_height,
    30         -			   int output_width, int output_height)
    31         -{
    32         -    coeff_t t, u;
    33         -    coeff_t tmp;
    34         -
    35         -    int i, j;
    36         -    int l, c;
    37         -
    38         -    /* Sanity checks */
    39         -    assert ((input_width > 1) && (input_height > 1));
    40         -    assert ((output_width > 1) && (output_height > 1));
    41         -
    42         -    for (i = 0; i < output_height; i++)
    43         -      {
    44         -	  for (j = 0; j < output_width; j++)
    45         -	    {
    46         -		tmp = (double) (input_height - 1) *
    47         -		    ((double) i / (double) (output_height - 1));
    48         -
    49         -		l = (int) tmp;
    50         -
    51         -		if (l < 0)
    52         -		  {
    53         -		      l = 0;
    54         -		  }
    55         -		else if (l >= input_height - 1)
    56         -		  {
    57         -		      l = input_height - 2;
    58         -		  }
    59         -
    60         -		u = tmp - (double) l;
    61         -
    62         -		tmp = (double) (input_width - 1) *
    63         -		    ((double) j / (double) (output_width - 1));
    64         -
    65         -		c = (int) tmp;
    66         -
    67         -		if (c < 0)
    68         -		  {
    69         -		      c = 0;
    70         -		  }
    71         -		else if (c >= input_width - 1)
    72         -		  {
    73         -		      c = input_width - 2;
    74         -		  }
    75         -
    76         -		t = tmp - (double) c;
    77         -
    78         -		output_channel[i][j] =
    79         -		    input_channel[l][c] * (1 - t) * (1 - u) +
    80         -		    input_channel[l + 1][c] * (1 - t) * u +
    81         -		    input_channel[l][c + 1] * t * (1 - u) +
    82         -		    input_channel[l + 1][c + 1] * t * u;
    83         -	    }
    84         -      }
    85         -}

Deleted epsilon/resample.h.

     1         -/*
     2         - * $Id: resample.h,v 1.12 2007/05/20 13:19:12 simakov Exp $
     3         - *
     4         - * EPSILON - wavelet image compression library.
     5         - * Copyright (C) 2006-2007 Alexander Simakov, <xander@entropyware.info>
     6         - *
     7         - * This program is free software; you can redistribute it and/or modify
     8         - * it under the terms of the GNU General Public License as published by
     9         - * the Free Software Foundation; either version 2 of the License, or
    10         - * (at your option) any later version.
    11         - *
    12         - * This program is distributed in the hope that it will be useful,
    13         - * but WITHOUT ANY WARRANTY; without even the implied warranty of
    14         - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    15         - * GNU General Public License for more details.
    16         - *
    17         - * You should have received a copy of the GNU General Public License
    18         - * along with this program; if not, write to the Free Software
    19         - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
    20         - *
    21         - * http://epsilon-project.sourceforge.net
    22         - */
    23         -
    24         -/** \file
    25         - *
    26         - *  \brief Resampling
    27         - *
    28         - *  It is well known that human eye is less sensitive to color
    29         - *  than intensity. It is worthwhile to utilize this fact. We can
    30         - *  store chroma channels with lower resolution than luma. One
    31         - *  can achieve this through channel resampling procedure.
    32         - *  At the moment EPSILON library uses bilinear resampling
    33         - *  algorithm.
    34         - *
    35         - *  \section References
    36         - *
    37         - *  <a href="http://en.wikipedia.org/wiki/Bilinear_interpolation">
    38         - *  Bilinear interpolation (Wikipedia) </a>
    39         - *
    40         - *  <a href="http://alglib.sources.ru/interpolation/bilinearresample.php">
    41         - *  Bilinear resampling (in Russian)</a> */
    42         -
    43         -#ifndef __RESAMPLE_H__
    44         -#define __RESAMPLE_H__
    45         -
    46         -#ifdef __cplusplus
    47         -extern "C"
    48         -{
    49         -#endif
    50         -
    51         -/** \addtogroup resampling Resampling */
    52         -/*@{*/
    53         -
    54         -#include <common.h>
    55         -
    56         -/** Bilinear channel resampling
    57         - *
    58         - *  This function performes bilinear channel resampling.
    59         - *
    60         - *  \param input_channel Input channel
    61         - *  \param output_channel Output channel
    62         - *  \param input_width Input channel width
    63         - *  \param input_height Input channel height
    64         - *  \param output_width Output channel width
    65         - *  \param output_height Output channel height
    66         - *
    67         - *  \return \c VOID
    68         - *
    69         - *  \note Input and output dimensions must be greater than 1. */
    70         -    void bilinear_resample_channel (coeff_t ** input_channel,
    71         -				    coeff_t ** output_channel, int input_width,
    72         -				    int input_height, int output_width,
    73         -				    int output_height);
    74         -/*@}*/
    75         -
    76         -#ifdef __cplusplus
    77         -}
    78         -#endif
    79         -
    80         -#endif				/* __RESAMPLE_H__ */

Deleted epsilon/speck.c.

     1         -/*
     2         - * $Id: speck.c,v 1.58 2008/03/22 18:04:23 simakov Exp $
     3         - *
     4         - * EPSILON - wavelet image compression library.
     5         - * Copyright (C) 2006-2007 Alexander Simakov, <xander@entropyware.info>
     6         - *
     7         - * This program is free software; you can redistribute it and/or modify
     8         - * it under the terms of the GNU General Public License as published by
     9         - * the Free Software Foundation; either version 2 of the License, or
    10         - * (at your option) any later version.
    11         - *
    12         - * This program is distributed in the hope that it will be useful,
    13         - * but WITHOUT ANY WARRANTY; without even the implied warranty of
    14         - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    15         - * GNU General Public License for more details.
    16         - *
    17         - * You should have received a copy of the GNU General Public License
    18         - * along with this program; if not, write to the Free Software
    19         - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
    20         - *
    21         - * http://epsilon-project.sourceforge.net
    22         - */
    23         -
    24         -#include <common.h>
    25         -#include <speck.h>
    26         -#include <mem_alloc.h>
    27         -#include <list.h>
    28         -#include <bit_io.h>
    29         -#include <filter.h>
    30         -#include <color.h>
    31         -
    32         -/* Before you dive into the sources, note that
    33         - * X and Y axes here are swapped. In other words,
    34         - * X denotes vertical position while Y denotes
    35         - * horizontal position. The origin is the top-left
    36         - * point. Now you a warned. */
    37         -
    38         -local int
    39         -max_coeff (int **channel, int channel_size)
    40         -{
    41         -    int i, j, max = 0;
    42         -
    43         -    for (i = 0; i < channel_size; i++)
    44         -      {
    45         -	  for (j = 0; j < channel_size; j++)
    46         -	    {
    47         -		if (ABS (channel[i][j]) > max)
    48         -		  {
    49         -		      max = ABS (channel[i][j]);
    50         -		  }
    51         -	    }
    52         -      }
    53         -
    54         -    return max;
    55         -}
    56         -
    57         -local int
    58         -validate_set (pixel_set * set, int channel_size)
    59         -{
    60         -    int base_size = channel_size & (~1);
    61         -
    62         -    /* Basic checks */
    63         -    if ((set->type != TYPE_POINT) && (set->type != TYPE_S)
    64         -	&& (set->type != TYPE_I))
    65         -	return 0;
    66         -
    67         -    if ((set->x < 0) || (set->x >= channel_size))
    68         -	return 0;
    69         -
    70         -    if ((set->y < 0) || (set->y >= channel_size))
    71         -	return 0;
    72         -
    73         -    if ((set->width <= 0) || (set->width > channel_size))
    74         -	return 0;
    75         -
    76         -    if ((set->height <= 0) || (set->height > channel_size))
    77         -	return 0;
    78         -
    79         -    if (set->x + set->height > channel_size)
    80         -	return 0;
    81         -
    82         -    if (set->y + set->width > channel_size)
    83         -	return 0;
    84         -
    85         -    switch (set->type)
    86         -      {
    87         -      case TYPE_POINT:
    88         -	  {
    89         -	      /* Single point */
    90         -	      if ((set->width != 1) || (set->height != 1))
    91         -		  return 0;
    92         -
    93         -	      return 1;
    94         -	  }
    95         -      case TYPE_S:
    96         -	  {
    97         -	      /* Set of type 'S' */
    98         -	      int scale;
    99         -
   100         -	      if ((set->width == 1) && (set->height == 1))
   101         -		  return 0;
   102         -
   103         -	      if (channel_size == base_size)
   104         -		{
   105         -		    /* Normal mode */
   106         -		    if (set->width != set->height)
   107         -			return 0;
   108         -
   109         -		    if (!is_power_of_two (set->width))
   110         -			return 0;
   111         -
   112         -		    scale = number_of_bits (set->width) - 1;
   113         -
   114         -		    if ((set->x) & (~(~0 << scale)))
   115         -			return 0;
   116         -
   117         -		    if ((set->y) & (~(~0 << scale)))
   118         -			return 0;
   119         -
   120         -		    return 1;
   121         -		}
   122         -	      else
   123         -		{
   124         -		    /* OTLPF mode */
   125         -		    if ((set->x == 0) && (set->y == 0))
   126         -		      {
   127         -			  /* Origin */
   128         -			  if (set->width != set->height)
   129         -			      return 0;
   130         -
   131         -			  if (!is_power_of_two (set->width - 1))
   132         -			      return 0;
   133         -
   134         -			  return 1;
   135         -		      }
   136         -		    else if ((set->x == 0) && (set->y > 1))
   137         -		      {
   138         -			  /* Top border */
   139         -			  if (set->height - set->width != 1)
   140         -			      return 0;
   141         -
   142         -			  if (!is_power_of_two (set->width))
   143         -			      return 0;
   144         -
   145         -			  scale = number_of_bits (set->width) - 1;
   146         -
   147         -			  if ((set->y - 1) & (~(~0 << scale)))
   148         -			      return 0;
   149         -
   150         -			  return 1;
   151         -		      }
   152         -		    else if ((set->x > 1) && (set->y == 0))
   153         -		      {
   154         -			  /* Left border */
   155         -			  if (set->width - set->height != 1)
   156         -			      return 0;
   157         -
   158         -			  if (!is_power_of_two (set->height))
   159         -			      return 0;
   160         -
   161         -			  scale = number_of_bits (set->height) - 1;
   162         -
   163         -			  if ((set->x - 1) & (~(~0 << scale)))
   164         -			      return 0;
   165         -
   166         -			  return 1;
   167         -		      }
   168         -		    else if ((set->x > 1) && (set->y > 1))
   169         -		      {
   170         -			  /* Internal */
   171         -			  if (set->width != set->height)
   172         -			      return 0;
   173         -
   174         -			  if (!is_power_of_two (set->width))
   175         -			      return 0;
   176         -
   177         -			  scale = number_of_bits (set->width) - 1;
   178         -
   179         -			  if ((set->x - 1) & (~(~0 << scale)))
   180         -			      return 0;
   181         -
   182         -			  if ((set->y - 1) & (~(~0 << scale)))
   183         -			      return 0;
   184         -
   185         -			  return 1;
   186         -		      }
   187         -		    else
   188         -		      {
   189         -			  return 0;
   190         -		      }
   191         -		}
   192         -	  }
   193         -      case TYPE_I:
   194         -	  {
   195         -	      /* Set of type 'I' */
   196         -	      if (set->x != set->y)
   197         -		  return 0;
   198         -
   199         -	      if (set->width != set->height)
   200         -		  return 0;
   201         -
   202         -	      if (set->x + set->width != channel_size)
   203         -		  return 0;
   204         -
   205         -	      if (channel_size == base_size)
   206         -		{
   207         -		    /* Normal mode */
   208         -		    if (!is_power_of_two (set->x))
   209         -			return 0;
   210         -		}
   211         -	      else
   212         -		{
   213         -		    /* OTLPF mode */
   214         -		    if (!is_power_of_two (set->x - 1))
   215         -			return 0;
   216         -		}
   217         -
   218         -	      return 1;
   219         -	  }
   220         -      default:
   221         -	  {
   222         -	      return 0;
   223         -	  }
   224         -      }
   225         -}
   226         -
   227         -local int
   228         -significance_test (pixel_set * set, int threshold,
   229         -		   int **channel, int channel_size)
   230         -{
   231         -#ifdef ENABLE_SET_VALIDATION
   232         -    /* Ensure that the set is valid */
   233         -    assert (validate_set (set, channel_size));
   234         -#endif
   235         -
   236         -    assert (threshold > 0);
   237         -
   238         -    switch (set->type)
   239         -      {
   240         -      case TYPE_POINT:
   241         -	  {
   242         -	      /* Single point */
   243         -	      return (ABS (channel[set->x][set->y]) >= threshold);
   244         -	      break;
   245         -	  }
   246         -      case TYPE_S:
   247         -	  {
   248         -	      /* Set of type 'S' */
   249         -	      int x, y;
   250         -
   251         -	      for (x = set->x; x < set->x + set->height; x++)
   252         -		{
   253         -		    for (y = set->y; y < set->y + set->width; y++)
   254         -		      {
   255         -			  if (ABS (channel[x][y]) >= threshold)
   256         -			    {
   257         -				return 1;
   258         -			    }
   259         -		      }
   260         -		}
   261         -
   262         -	      return 0;
   263         -	      break;
   264         -	  }
   265         -      case TYPE_I:
   266         -	  {
   267         -	      /* Set of type 'I' */
   268         -	      int x, y;
   269         -
   270         -	      for (x = 0; x < channel_size; x++)
   271         -		{
   272         -		    for (y = 0; y < channel_size; y++)
   273         -		      {
   274         -			  if ((x >= set->x) || (y >= set->y))
   275         -			    {
   276         -				if (ABS (channel[x][y]) >= threshold)
   277         -				  {
   278         -				      return 1;
   279         -				  }
   280         -			    }
   281         -		      }
   282         -		}
   283         -
   284         -	      return 0;
   285         -	      break;
   286         -	  }
   287         -      default:
   288         -	  {
   289         -	      assert (0);
   290         -	      break;
   291         -	  }
   292         -      }
   293         -    return -1;
   294         -}
   295         -
   296         -local void
   297         -select_part_type (pixel_set * set)
   298         -{
   299         -    /* Guess the set type after split operation */
   300         -    if ((set->width == 1) && (set->height == 1))
   301         -      {
   302         -	  set->type = TYPE_POINT;
   303         -      }
   304         -    else if ((set->width == 0) || (set->height == 0))
   305         -      {
   306         -	  set->type = TYPE_EMPTY;
   307         -      }
   308         -    else
   309         -      {
   310         -	  set->type = TYPE_S;
   311         -      }
   312         -}
   313         -
   314         -local void
   315         -split_set (pixel_set * set, pixel_set * part1, pixel_set * part2,
   316         -	   pixel_set * part3, pixel_set * part4, int channel_size)
   317         -{
   318         -    int base_size = channel_size & (~1);
   319         -
   320         -#ifdef ENABLE_SET_VALIDATION
   321         -    /* Ensure that the set is valid */
   322         -    assert (validate_set (set, channel_size));
   323         -#endif
   324         -
   325         -    switch (set->type)
   326         -      {
   327         -      case TYPE_S:
   328         -	  {
   329         -	      /* Split parent set of type 'S' */
   330         -	      part1->x = set->x;
   331         -	      part1->y = set->y;
   332         -	      part1->width = (set->width + 1) / 2;
   333         -	      part1->height = (set->height + 1) / 2;
   334         -	      select_part_type (part1);
   335         -
   336         -	      part2->x = set->x;
   337         -	      part2->y = set->y + (set->width + 1) / 2;
   338         -	      part2->width = set->width / 2;
   339         -	      part2->height = (set->height + 1) / 2;
   340         -	      select_part_type (part2);
   341         -
   342         -	      part3->x = set->x + (set->height + 1) / 2;
   343         -	      part3->y = set->y;
   344         -	      part3->width = (set->width + 1) / 2;
   345         -	      part3->height = set->height / 2;
   346         -	      select_part_type (part3);
   347         -
   348         -	      part4->x = set->x + (set->height + 1) / 2;
   349         -	      part4->y = set->y + (set->width + 1) / 2;
   350         -	      part4->width = set->width / 2;
   351         -	      part4->height = set->height / 2;
   352         -	      select_part_type (part4);
   353         -
   354         -	      break;
   355         -	  }
   356         -      case TYPE_I:
   357         -	  {
   358         -	      /* Split parent set of type 'I' */
   359         -	      int p0, p1;
   360         -	      int scale;
   361         -
   362         -	      scale = number_of_bits (set->x - (channel_size != base_size));
   363         -
   364         -	      p0 = set->x;
   365         -	      p1 = (1 << scale) + (channel_size != base_size);
   366         -
   367         -	      part1->x = part1->y = p1;
   368         -	      part1->width = part1->height = channel_size - p1;
   369         -	      part1->type = (p1 == channel_size) ? TYPE_EMPTY : TYPE_I;
   370         -
   371         -	      part2->x = 0;
   372         -	      part2->y = p0;
   373         -	      part2->width = p1 - p0;
   374         -	      part2->height = p0;
   375         -	      select_part_type (part2);
   376         -
   377         -	      part3->x = p0;
   378         -	      part3->y = 0;
   379         -	      part3->width = p0;
   380         -	      part3->height = p1 - p0;
   381         -	      select_part_type (part3);
   382         -
   383         -	      part4->x = part4->y = p0;
   384         -	      part4->width = part4->height = p1 - p0;
   385         -	      select_part_type (part4);
   386         -
   387         -	      break;
   388         -	  }
   389         -      default:
   390         -	  {
   391         -	      assert (0);
   392         -	      break;
   393         -	  }
   394         -      }
   395         -}
   396         -
   397         -local linked_list **
   398         -alloc_LIS_slots (int channel_size)
   399         -{
   400         -    linked_list **LIS_slots;
   401         -    int n_slots;
   402         -    int i;
   403         -
   404         -    /* Think of this structure as a list of lists. Splitting
   405         -     * entire list into several slots speed-ups algorithm:
   406         -     * one slot for each scale. */
   407         -    n_slots = number_of_bits (channel_size);
   408         -    LIS_slots = (linked_list **) xmalloc (n_slots * sizeof (linked_list *));
   409         -
   410         -    for (i = 0; i < n_slots; i++)
   411         -      {
   412         -	  LIS_slots[i] = alloc_linked_list ();
   413         -      }
   414         -
   415         -    return LIS_slots;
   416         -}
   417         -
   418         -local void
   419         -free_LIS_slots (linked_list ** LIS_slots, int channel_size)
   420         -{
   421         -    int n_slots;
   422         -    int i;
   423         -
   424         -    n_slots = number_of_bits (channel_size);
   425         -
   426         -    for (i = 0; i < n_slots; i++)
   427         -      {
   428         -	  free_linked_list (LIS_slots[i]);
   429         -      }
   430         -
   431         -    free (LIS_slots);
   432         -}
   433         -
   434         -local void
   435         -assign_set (list_node * node, pixel_set * set)
   436         -{
   437         -    PIXEL_SET (node)->type = set->type;
   438         -    PIXEL_SET (node)->x = set->x;
   439         -    PIXEL_SET (node)->y = set->y;
   440         -    PIXEL_SET (node)->width = set->width;
   441         -    PIXEL_SET (node)->height = set->height;
   442         -}
   443         -
   444         -local void
   445         -zero_channel (int **channel, int channel_size)
   446         -{
   447         -    int i, j;
   448         -
   449         -    /* Reset everything to zero */
   450         -    for (i = 0; i < channel_size; i++)
   451         -      {
   452         -	  for (j = 0; j < channel_size; j++)
   453         -	    {
   454         -		channel[i][j] = 0;
   455         -	    }
   456         -      }
   457         -}
   458         -
   459         -local int
   460         -speck_encode_S (int **channel, int channel_size,
   461         -		pixel_set * set, linked_list ** LIS_slots,
   462         -		linked_list * LSP, bit_buffer * bb, int threshold)
   463         -{
   464         -    pixel_set new_sets[4];
   465         -    int result;
   466         -    int st[4];
   467         -    int flag;
   468         -    int i;
   469         -
   470         -    /* Split parent set */
   471         -    split_set (set, &new_sets[0], &new_sets[1], &new_sets[2], &new_sets[3],
   472         -	       channel_size);
   473         -
   474         -    /* Test each set for significance skipping over empty sets */
   475         -    for (flag = 0, i = 3; i >= 0; i--)
   476         -      {
   477         -	  if (new_sets[i].type == TYPE_EMPTY)
   478         -	    {
   479         -		continue;
   480         -	    }
   481         -
   482         -	  st[i] =
   483         -	      significance_test (&new_sets[i], threshold, channel,
   484         -				 channel_size);
   485         -
   486         -	  if (i)
   487         -	    {
   488         -		flag |= st[i];
   489         -	    }
   490         -
   491         -	  /* If parent set is significant, but first three
   492         -	   * child sets are not, than undoubtedly fourth
   493         -	   * child set is significant: there is no need
   494         -	   * to code this explicitly. Using this trick
   495         -	   * saves some bit-budget. */
   496         -	  if (i || flag)
   497         -	    {
   498         -		result = st[i] ? write_1 (bb) : write_0 (bb);
   499         -		RETURN_IF_OVERFLOW (result);
   500         -	    }
   501         -      }
   502         -
   503         -    /* Process non-empty sets using their significance information */
   504         -    for (i = 0; i < 4; i++)
   505         -      {
   506         -	  if (new_sets[i].type == TYPE_EMPTY)
   507         -	    {
   508         -		continue;
   509         -	    }
   510         -
   511         -	  if (st[i])
   512         -	    {
   513         -		/* Significant set */
   514         -		if (new_sets[i].type == TYPE_POINT)
   515         -		  {
   516         -		      /* Single point */
   517         -		      list_node *new_node;
   518         -
   519         -		      /* Encode coefficient sign */
   520         -		      result =
   521         -			  channel[new_sets[i].x][new_sets[i].y] >
   522         -			  0 ? write_0 (bb) : write_1 (bb);
   523         -		      RETURN_IF_OVERFLOW (result);
   524         -
   525         -		      new_node = alloc_list_node (sizeof (pixel_set));
   526         -		      assign_set (new_node, &new_sets[i]);
   527         -		      append_list_node (LSP, new_node);
   528         -		  }
   529         -		else
   530         -		  {
   531         -		      /* Encode set of type 'S' */
   532         -		      result =
   533         -			  speck_encode_S (channel, channel_size, &new_sets[i],
   534         -					  LIS_slots, LSP, bb, threshold);
   535         -
   536         -		      RETURN_IF_OVERFLOW (result);
   537         -		  }
   538         -	    }
   539         -	  else
   540         -	    {
   541         -		/* Insignificant set */
   542         -		list_node *new_node = alloc_list_node (sizeof (pixel_set));
   543         -		assign_set (new_node, &new_sets[i]);
   544         -		prepend_list_node (LIS_slots[SLOT_INDEX ((&new_sets[i]))],
   545         -				   new_node);
   546         -	    }
   547         -      }
   548         -
   549         -    return BIT_BUFFER_OK;
   550         -}
   551         -
   552         -local int
   553         -speck_process_S (int **channel, int channel_size,
   554         -		 list_node * node, linked_list * slot,
   555         -		 linked_list ** LIS_slots, linked_list * LSP,
   556         -		 bit_buffer * bb, int threshold, int coding_stage)
   557         -{
   558         -    pixel_set *set;
   559         -    int result;
   560         -    int st;
   561         -
   562         -    /* Test the set for significance */
   563         -    set = PIXEL_SET (node);
   564         -    st = significance_test (set, threshold, channel, channel_size);
   565         -
   566         -    result = st ? write_1 (bb) : write_0 (bb);
   567         -    RETURN_IF_OVERFLOW (result);
   568         -
   569         -    if (st)
   570         -      {
   571         -	  /* Significant set */
   572         -	  if (set->type == TYPE_POINT)
   573         -	    {
   574         -		/* Single point: encode coefficient sign */
   575         -		result =
   576         -		    channel[set->x][set->y] > 0 ? write_0 (bb) : write_1 (bb);
   577         -		RETURN_IF_OVERFLOW (result);
   578         -
   579         -		if (coding_stage == STAGE_S)
   580         -		  {
   581         -		      remove_list_node_link (slot, node);
   582         -		  }
   583         -
   584         -		append_list_node (LSP, node);
   585         -	    }
   586         -	  else
   587         -	    {
   588         -		/* Encode set of type 'S' */
   589         -		result = speck_encode_S (channel, channel_size, set,
   590         -					 LIS_slots, LSP, bb, threshold);
   591         -
   592         -		RETURN_IF_OVERFLOW (result);
   593         -
   594         -		if (coding_stage == STAGE_S)
   595         -		  {
   596         -		      remove_list_node (slot, node);
   597         -		  }
   598         -		else
   599         -		  {
   600         -		      free_list_node (node);
   601         -		  }
   602         -	    }
   603         -      }
   604         -    else
   605         -      {
   606         -	  /* Insignificant set */
   607         -	  if (coding_stage == STAGE_I)
   608         -	    {
   609         -		prepend_list_node (LIS_slots[SLOT_INDEX (set)], node);
   610         -	    }
   611         -      }
   612         -
   613         -    return BIT_BUFFER_OK;
   614         -}
   615         -
   616         -local int
   617         -speck_encode_I (int **channel, int channel_size, pixel_set * I,
   618         -		linked_list ** LIS_slots, linked_list * LSP,
   619         -		bit_buffer * bb, int threshold)
   620         -{
   621         -    pixel_set new_sets[3];
   622         -    int result;
   623         -    int i;
   624         -
   625         -    /* Split parent set */
   626         -    split_set (I, I, &new_sets[0], &new_sets[1], &new_sets[2], channel_size);
   627         -
   628         -    /* Process child sets of type 'S' */
   629         -    for (i = 0; i < 3; i++)
   630         -      {
   631         -	  list_node *node = alloc_list_node (sizeof (pixel_set));
   632         -	  assign_set (node, &new_sets[i]);
   633         -
   634         -	  /* Process child set of type 'S' */
   635         -	  result = speck_process_S (channel, channel_size, node,
   636         -				    NULL, LIS_slots, LSP, bb,
   637         -				    threshold, STAGE_I);
   638         -
   639         -	  if (result == BIT_BUFFER_OVERFLOW)
   640         -	    {
   641         -		free_list_node (node);
   642         -		return result;
   643         -	    }
   644         -      }
   645         -
   646         -    /* Process child set of type 'I' */
   647         -    result = speck_process_I (channel, channel_size, I,
   648         -			      LIS_slots, LSP, bb, threshold);
   649         -
   650         -    return result;
   651         -}
   652         -
   653         -local int
   654         -speck_process_I (int **channel, int channel_size, pixel_set * I,
   655         -		 linked_list ** LIS_slots, linked_list * LSP,
   656         -		 bit_buffer * bb, int threshold)
   657         -{
   658         -    int result;
   659         -    int st;
   660         -
   661         -    /* Skip over empty sets */
   662         -    if (I->type == TYPE_EMPTY)
   663         -      {
   664         -	  return BIT_BUFFER_OK;
   665         -      }
   666         -
   667         -    /* Test the set for significance */
   668         -    st = significance_test (I, threshold, channel, channel_size);
   669         -
   670         -    result = st ? write_1 (bb) : write_0 (bb);
   671         -    RETURN_IF_OVERFLOW (result);
   672         -
   673         -    if (st)
   674         -      {
   675         -	  /* Encode set of type 'I' */
   676         -	  result = speck_encode_I (channel, channel_size, I,
   677         -				   LIS_slots, LSP, bb, threshold);
   678         -
   679         -	  RETURN_IF_OVERFLOW (result);
   680         -      }
   681         -
   682         -    return BIT_BUFFER_OK;
   683         -}
   684         -
   685         -local int
   686         -encode_sorting_pass (int **channel, int channel_size,
   687         -		     linked_list ** LIS_slots, linked_list * LSP,
   688         -		     pixel_set * I, bit_buffer * bb, int threshold)
   689         -{
   690         -    int n_slots;
   691         -    int result;
   692         -    int i;
   693         -
   694         -    n_slots = number_of_bits (channel_size);
   695         -
   696         -    /* Travels through all LIS slots */
   697         -    for (i = 0; i < n_slots; i++)
   698         -      {
   699         -	  linked_list *cur_slot = LIS_slots[i];
   700         -	  list_node *cur_node;
   701         -
   702         -	  /* Skip over empty slots */
   703         -	  CONTINUE_IF_EMPTY (cur_slot);
   704         -
   705         -	  /* Get first slot node */
   706         -	  cur_node = cur_slot->first;
   707         -
   708         -	  /* Process all nodes within this slot */
   709         -	  while (cur_node)
   710         -	    {
   711         -		list_node *next_node = cur_node->next;
   712         -
   713         -		/* Process set of type 'S' */
   714         -		result = speck_process_S (channel, channel_size, cur_node,
   715         -					  cur_slot, LIS_slots, LSP, bb,
   716         -					  threshold, STAGE_S);
   717         -
   718         -		RETURN_IF_OVERFLOW (result);
   719         -
   720         -		/* Next node */
   721         -		cur_node = next_node;
   722         -	    }
   723         -      }
   724         -
   725         -    /* Process set of type 'I' */
   726         -    result = speck_process_I (channel, channel_size, I,
   727         -			      LIS_slots, LSP, bb, threshold);
   728         -
   729         -    return result;
   730         -}
   731         -
   732         -local int
   733         -encode_refinement_pass (int **channel, linked_list * LSP,
   734         -			bit_buffer * bb, int threshold)
   735         -{
   736         -    list_node *node;
   737         -    int result;
   738         -
   739         -    node = LSP->first;
   740         -    threshold <<= 1;
   741         -
   742         -    /* Travels through all nodes in LSP */
   743         -    while (node)
   744         -      {
   745         -	  pixel_set *set = PIXEL_SET (node);
   746         -	  int coeff = ABS (channel[set->x][set->y]);
   747         -
   748         -	  /* Output next bit */
   749         -	  if (coeff >= threshold)
   750         -	    {
   751         -		result = coeff & (threshold >> 1) ? write_1 (bb) : write_0 (bb);
   752         -		RETURN_IF_OVERFLOW (result);
   753         -	    }
   754         -
   755         -	  /* Next node */
   756         -	  node = node->next;
   757         -      }
   758         -
   759         -    return BIT_BUFFER_OK;
   760         -}
   761         -
   762         -local int
   763         -speck_decode_S (int **channel, int channel_size,
   764         -		pixel_set * set, linked_list ** LIS_slots,
   765         -		linked_list * LSP, bit_buffer * bb, int threshold)
   766         -{
   767         -    pixel_set new_sets[4];
   768         -    int result;
   769         -    int st[4];
   770         -    int flag;
   771         -    int i;
   772         -
   773         -    /* Split parent set */
   774         -    split_set (set, &new_sets[0], &new_sets[1], &new_sets[2], &new_sets[3],
   775         -	       channel_size);
   776         -
   777         -    /* Test each set for significance skipping over empty sets */
   778         -    for (flag = 0, i = 3; i >= 0; i--)
   779         -      {
   780         -	  if (new_sets[i].type == TYPE_EMPTY)
   781         -	    {
   782         -		continue;
   783         -	    }
   784         -
   785         -	  if (i)
   786         -	    {
   787         -		result = read_bit (bb, &st[i]);
   788         -		RETURN_IF_UNDERFLOW (result);
   789         -
   790         -		flag |= st[i];
   791         -	    }
   792         -	  else
   793         -	    {
   794         -		if (flag)
   795         -		  {
   796         -		      result = read_bit (bb, &st[i]);
   797         -		      RETURN_IF_UNDERFLOW (result);
   798         -		  }
   799         -		else
   800         -		  {
   801         -		      /* Implicitly significant set */
   802         -		      st[i] = 1;
   803         -		  }
   804         -	    }
   805         -      }
   806         -
   807         -    /* Process non-empty sets using their significance information */
   808         -    for (i = 0; i < 4; i++)
   809         -      {
   810         -	  if (new_sets[i].type == TYPE_EMPTY)
   811         -	    {
   812         -		continue;
   813         -	    }
   814         -
   815         -	  if (st[i])
   816         -	    {
   817         -		/* Significant set */
   818         -		if (new_sets[i].type == TYPE_POINT)
   819         -		  {
   820         -		      /* Single point */
   821         -		      list_node *new_node;
   822         -		      int sign = 0;
   823         -
   824         -		      result = read_bit (bb, &sign);
   825         -		      RETURN_IF_UNDERFLOW (result);
   826         -
   827         -		      /* Decode coefficient sign */
   828         -		      if (sign)
   829         -			{
   830         -			    channel[new_sets[i].x][new_sets[i].y] =
   831         -				-(threshold + (threshold >> 1));
   832         -			}
   833         -		      else
   834         -			{
   835         -			    channel[new_sets[i].x][new_sets[i].y] =
   836         -				(threshold + (threshold >> 1));
   837         -			}
   838         -
   839         -		      new_node = alloc_list_node (sizeof (pixel_set));
   840         -		      assign_set (new_node, &new_sets[i]);
   841         -		      append_list_node (LSP, new_node);
   842         -		  }
   843         -		else
   844         -		  {
   845         -		      /* Decode set of type 'S' */
   846         -		      result =
   847         -			  speck_decode_S (channel, channel_size, &new_sets[i],
   848         -					  LIS_slots, LSP, bb, threshold);
   849         -
   850         -		      RETURN_IF_UNDERFLOW (result);
   851         -		  }
   852         -	    }
   853         -	  else
   854         -	    {
   855         -		/* Insignificant set */
   856         -		list_node *new_node = alloc_list_node (sizeof (pixel_set));
   857         -		assign_set (new_node, &new_sets[i]);
   858         -		prepend_list_node (LIS_slots[SLOT_INDEX ((&new_sets[i]))],
   859         -				   new_node);
   860         -	    }
   861         -      }
   862         -
   863         -    return BIT_BUFFER_OK;
   864         -}
   865         -
   866         -local int
   867         -speck_unprocess_S (int **channel, int channel_size,
   868         -		   list_node * node, linked_list * slot,
   869         -		   linked_list ** LIS_slots, linked_list * LSP,
   870         -		   bit_buffer * bb, int threshold, int coding_stage)
   871         -{
   872         -    pixel_set *set;
   873         -    int result;
   874         -    int st;
   875         -
   876         -    set = PIXEL_SET (node);
   877         -
   878         -    /* Read set significance information */
   879         -    result = read_bit (bb, &st);
   880         -    RETURN_IF_UNDERFLOW (result);
   881         -
   882         -    if (st)
   883         -      {
   884         -	  /* Significant set */
   885         -	  if (set->type == TYPE_POINT)
   886         -	    {
   887         -		int sign = 0;
   888         -
   889         -		/* Single point: read coefficient sign */
   890         -		result = read_bit (bb, &sign);
   891         -		RETURN_IF_UNDERFLOW (result);
   892         -
   893         -		if (sign)
   894         -		  {
   895         -		      channel[set->x][set->y] = -(threshold + (threshold >> 1));
   896         -		  }
   897         -		else
   898         -		  {
   899         -		      channel[set->x][set->y] = (threshold + (threshold >> 1));
   900         -		  }
   901         -
   902         -		if (coding_stage == STAGE_S)
   903         -		  {
   904         -		      remove_list_node_link (slot, node);
   905         -		  }
   906         -
   907         -		append_list_node (LSP, node);
   908         -	    }
   909         -	  else
   910         -	    {
   911         -		/* Decode set of type 'S' */
   912         -		result = speck_decode_S (channel, channel_size, set,
   913         -					 LIS_slots, LSP, bb, threshold);
   914         -
   915         -		RETURN_IF_UNDERFLOW (result);
   916         -
   917         -		if (coding_stage == STAGE_S)
   918         -		  {
   919         -		      remove_list_node (slot, node);
   920         -		  }
   921         -		else
   922         -		  {
   923         -		      free_list_node (node);
   924         -		  }
   925         -	    }
   926         -      }
   927         -    else
   928         -      {
   929         -	  /* Insignificant set */
   930         -	  if (coding_stage == STAGE_I)
   931         -	    {
   932         -		prepend_list_node (LIS_slots[SLOT_INDEX (set)], node);
   933         -	    }
   934         -      }
   935         -
   936         -    return BIT_BUFFER_OK;
   937         -}
   938         -
   939         -local int
   940         -speck_decode_I (int **channel, int channel_size, pixel_set * I,
   941         -		linked_list ** LIS_slots, linked_list * LSP,
   942         -		bit_buffer * bb, int threshold)
   943         -{
   944         -    pixel_set new_sets[3];
   945         -    int result;
   946         -    int i;
   947         -
   948         -    /* Split parent set */
   949         -    split_set (I, I, &new_sets[0], &new_sets[1], &new_sets[2], channel_size);
   950         -
   951         -    /* Unprocess sets of type 'S' */
   952         -    for (i = 0; i < 3; i++)
   953         -      {
   954         -	  list_node *node = alloc_list_node (sizeof (pixel_set));
   955         -	  assign_set (node, &new_sets[i]);
   956         -
   957         -	  result = speck_unprocess_S (channel, channel_size, node,
   958         -				      NULL, LIS_slots, LSP, bb,
   959         -				      threshold, STAGE_I);
   960         -
   961         -	  if (result == BIT_BUFFER_UNDERFLOW)
   962         -	    {
   963         -		free_list_node (node);
   964         -		return result;
   965         -	    }
   966         -      }
   967         -
   968         -    /* Unprocess set of type 'I' */
   969         -    result = speck_unprocess_I (channel, channel_size, I,
   970         -				LIS_slots, LSP, bb, threshold);
   971         -
   972         -    return result;
   973         -}
   974         -
   975         -local int
   976         -speck_unprocess_I (int **channel, int channel_size,
   977         -		   pixel_set * I, linked_list ** LIS_slots,
   978         -		   linked_list * LSP, bit_buffer * bb, int threshold)
   979         -{
   980         -    int result;
   981         -    int st;
   982         -
   983         -    /* Skip over empty sets */
   984         -    if (I->type == TYPE_EMPTY)
   985         -      {
   986         -	  return BIT_BUFFER_OK;
   987         -      }
   988         -
   989         -    /* Read significance information */
   990         -    result = read_bit (bb, &st);
   991         -    RETURN_IF_UNDERFLOW (result);
   992         -
   993         -    if (st)
   994         -      {
   995         -	  result = speck_decode_I (channel, channel_size, I,
   996         -				   LIS_slots, LSP, bb, threshold);
   997         -
   998         -	  RETURN_IF_UNDERFLOW (result);
   999         -      }
  1000         -
  1001         -    return BIT_BUFFER_OK;
  1002         -}
  1003         -
  1004         -local int
  1005         -decode_sorting_pass (int **channel, int channel_size,
  1006         -		     linked_list ** LIS_slots, linked_list * LSP,
  1007         -		     pixel_set * I, bit_buffer * bb, int threshold)
  1008         -{
  1009         -    int n_slots;
  1010         -    int result;
  1011         -    int i;
  1012         -
  1013         -    n_slots = number_of_bits (channel_size);
  1014         -
  1015         -    /* Travels through all LIS slots */
  1016         -    for (i = 0; i < n_slots; i++)
  1017         -      {
  1018         -	  linked_list *cur_slot = LIS_slots[i];
  1019         -	  list_node *cur_node;
  1020         -
  1021         -	  /* Skip over empty slots */
  1022         -	  CONTINUE_IF_EMPTY (cur_slot);
  1023         -
  1024         -	  /* Get first node */
  1025         -	  cur_node = cur_slot->first;
  1026         -
  1027         -	  /* Process all nodes within this slot */
  1028         -	  while (cur_node)
  1029         -	    {
  1030         -		list_node *next_node = cur_node->next;
  1031         -
  1032         -		/* Unprocess set of type 'S' */
  1033         -		result = speck_unprocess_S (channel, channel_size, cur_node,
  1034         -					    cur_slot, LIS_slots, LSP,
  1035         -					    bb, threshold, STAGE_S);
  1036         -
  1037         -		RETURN_IF_UNDERFLOW (result);
  1038         -
  1039         -		/* Next node */
  1040         -		cur_node = next_node;
  1041         -	    }
  1042         -      }
  1043         -
  1044         -    /* Unprocess set of type 'I' */
  1045         -    result = speck_unprocess_I (channel, channel_size, I,
  1046         -				LIS_slots, LSP, bb, threshold);
  1047         -
  1048         -    return result;
  1049         -}
  1050         -
  1051         -local int
  1052         -decode_refinement_pass (int **channel, linked_list * LSP,
  1053         -			bit_buffer * bb, int threshold)
  1054         -{
  1055         -    list_node *node;
  1056         -    int result;
  1057         -    int mask;
  1058         -
  1059         -    node = LSP->first;
  1060         -
  1061         -    mask = threshold;
  1062         -    threshold <<= 1;
  1063         -
  1064         -    /* Travels through all nodes in LSP */
  1065         -    while (node)
  1066         -      {
  1067         -	  pixel_set *set = PIXEL_SET (node);
  1068         -
  1069         -	  int coeff = ABS (channel[set->x][set->y]);
  1070         -	  int sign = channel[set->x][set->y] < 0;
  1071         -
  1072         -	  if (coeff >= threshold)
  1073         -	    {
  1074         -		int bit = 0;
  1075         -
  1076         -		/* Read and shift-in next bit */
  1077         -		result = read_bit (bb, &bit);
  1078         -		RETURN_IF_OVERFLOW (result);
  1079         -
  1080         -		if (bit)
  1081         -		  {
  1082         -		      coeff |= mask;
  1083         -		  }
  1084         -		else
  1085         -		  {
  1086         -		      coeff &= ~mask;
  1087         -		  }
  1088         -
  1089         -		coeff |= (mask >> 1);
  1090         -		channel[set->x][set->y] = sign ? -coeff : coeff;
  1091         -	    }
  1092         -
  1093         -	  /* Next node */
  1094         -	  node = node->next;
  1095         -      }
  1096         -
  1097         -    return BIT_BUFFER_OK;
  1098         -}
  1099         -
  1100         -local void
  1101         -speck_init (linked_list ** LIS_slots, pixel_set * I, int channel_size, int mode)
  1102         -{
  1103         -    list_node *root;
  1104         -
  1105         -    root = alloc_list_node (sizeof (pixel_set));
  1106         -
  1107         -    /* Setup root node */
  1108         -    if (mode == MODE_NORMAL)
  1109         -      {
  1110         -	  PIXEL_SET (root)->type = TYPE_POINT;
  1111         -	  PIXEL_SET (root)->x = PIXEL_SET (root)->y = 0;
  1112         -	  PIXEL_SET (root)->width = PIXEL_SET (root)->height = 1;
  1113         -
  1114         -	  I->type = TYPE_I;
  1115         -	  I->x = I->y = 1;
  1116         -	  I->width = I->height = channel_size - 1;
  1117         -
  1118         -	  prepend_list_node (LIS_slots[0], root);
  1119         -      }
  1120         -    else
  1121         -      {
  1122         -	  PIXEL_SET (root)->type = TYPE_S;
  1123         -	  PIXEL_SET (root)->x = PIXEL_SET (root)->y = 0;
  1124         -	  PIXEL_SET (root)->width = PIXEL_SET (root)->height = 2;
  1125         -
  1126         -	  I->type = TYPE_I;
  1127         -	  I->x = I->y = 2;
  1128         -	  I->width = I->height = channel_size - 2;
  1129         -
  1130         -	  prepend_list_node (LIS_slots[1], root);
  1131         -      }
  1132         -}
  1133         -
  1134         -int
  1135         -speck_encode (int **channel, int channel_size, unsigned char *buf, int buf_size)
  1136         -{
  1137         -    int threshold_bits;
  1138         -    int threshold;
  1139         -    int result;
  1140         -    int mode;
  1141         -    int n_bytes;
  1142         -
  1143         -    linked_list **LIS_slots;
  1144         -    linked_list *LSP;
  1145         -    pixel_set *I;
  1146         -
  1147         -    bit_buffer *bb;
  1148         -
  1149         -    mode = channel_size & 1;
  1150         -
  1151         -    /* Sanity checks */
  1152         -    assert (buf_size >= MIN_SPECK_BUF_SIZE);
  1153         -    assert (channel_size >= 2);
  1154         -
  1155         -    /* Allocate list of significant pixels (LSP),
  1156         -     * list of lists of insignificant sets (LIS_slots),
  1157         -     * and set of type 'I' */
  1158         -    LSP = alloc_linked_list ();
  1159         -    LIS_slots = alloc_LIS_slots (channel_size);
  1160         -    I = (pixel_set *) xmalloc (sizeof (pixel_set));
  1161         -
  1162         -    /* Setup initial encoding threshold */
  1163         -    threshold_bits = number_of_bits (max_coeff (channel, channel_size));
  1164         -    threshold = threshold_bits ? (1 << (threshold_bits - 1)) : 0;
  1165         -
  1166         -    /* Allocate bit-buffer */
  1167         -    bb = (bit_buffer *) xmalloc (sizeof (bit_buffer));
  1168         -
  1169         -    /* Initialize bit-buffer */
  1170         -    init_bits (bb, buf, buf_size);
  1171         -    write_bits (bb, threshold_bits, THRESHOLD_BITS);
  1172         -
  1173         -    /* Setup encoder */
  1174         -    speck_init (LIS_slots, I, channel_size, mode);
  1175         -
  1176         -    /* Travels through all bit planes */
  1177         -    while (threshold > 0)
  1178         -      {
  1179         -	  /* Sorting pass */
  1180         -	  result =
  1181         -	      encode_sorting_pass (channel, channel_size, LIS_slots, LSP, I, bb,
  1182         -				   threshold);
  1183         -	  BREAK_IF_OVERFLOW (result);
  1184         -
  1185         -	  /* Refinement pass */
  1186         -	  result = encode_refinement_pass (channel, LSP, bb, threshold);
  1187         -	  BREAK_IF_OVERFLOW (result);
  1188         -
  1189         -	  /* Proceed to the next bit plane */
  1190         -	  threshold >>= 1;
  1191         -      }
  1192         -
  1193         -    /* Flush bit-buffer */
  1194         -    flush_bits (bb);
  1195         -    n_bytes = bb->next - bb->start;
  1196         -
  1197         -    free (bb);
  1198         -    free (I);
  1199         -    free_LIS_slots (LIS_slots, channel_size);
  1200         -    free_linked_list (LSP);
  1201         -
  1202         -    return n_bytes;
  1203         -}
  1204         -
  1205         -void
  1206         -speck_decode (unsigned char *buf, int buf_size, int **channel, int channel_size)
  1207         -{
  1208         -    int threshold_bits;
  1209         -    int threshold;
  1210         -    int result;
  1211         -    int mode;
  1212         -
  1213         -    linked_list **LIS_slots;
  1214         -    linked_list *LSP;
  1215         -    pixel_set *I;
  1216         -
  1217         -    bit_buffer *bb;
  1218         -
  1219         -    mode = channel_size & 1;
  1220         -
  1221         -    /* Sanity checks */
  1222         -    assert (buf_size >= MIN_SPECK_BUF_SIZE);
  1223         -    assert (channel_size >= 2);
  1224         -
  1225         -    /* Reset output channel */
  1226         -    zero_channel (channel, channel_size);
  1227         -
  1228         -    /* Allocate list of significant pixels (LSP),
  1229         -     * list of lists of insignificant sets (LIS_slots),
  1230         -     * and set of type 'I' */
  1231         -    LSP = alloc_linked_list ();
  1232         -    LIS_slots = alloc_LIS_slots (channel_size);
  1233         -    I = (pixel_set *) xmalloc (sizeof (pixel_set));
  1234         -
  1235         -    /* Allocate bit-buffer */
  1236         -    bb = (bit_buffer *) xmalloc (sizeof (bit_buffer));
  1237         -
  1238         -    /* Initialize bit-buffer */
  1239         -    init_bits (bb, buf, buf_size);
  1240         -    read_bits (bb, &threshold_bits, THRESHOLD_BITS);
  1241         -
  1242         -    /* Read encoding threshold */
  1243         -    threshold = threshold_bits ? (1 << (threshold_bits - 1)) : 0;
  1244         -    speck_init (LIS_slots, I, channel_size, mode);
  1245         -
  1246         -    /* Travels through all bit planes */
  1247         -    while (threshold > 0)
  1248         -      {
  1249         -	  /* Decode sorting pass */
  1250         -	  result =
  1251         -	      decode_sorting_pass (channel, channel_size, LIS_slots, LSP, I, bb,
  1252         -				   threshold);
  1253         -	  BREAK_IF_UNDERFLOW (result);
  1254         -
  1255         -	  /* Decode refinement pass */
  1256         -	  result = decode_refinement_pass (channel, LSP, bb, threshold);
  1257         -	  BREAK_IF_UNDERFLOW (result);
  1258         -
  1259         -	  /* Proceed to the next bit plane */
  1260         -	  threshold >>= 1;
  1261         -      }
  1262         -
  1263         -    free (bb);
  1264         -    free (I);
  1265         -    free_LIS_slots (LIS_slots, channel_size);
  1266         -    free_linked_list (LSP);
  1267         -}

Deleted epsilon/speck.h.

     1         -/*
     2         - * $Id: speck.h,v 1.48 2007/05/20 13:19:12 simakov Exp $
     3         - *
     4         - * EPSILON - wavelet image compression library.
     5         - * Copyright (C) 2006-2007 Alexander Simakov, <xander@entropyware.info>
     6         - *
     7         - * This program is free software; you can redistribute it and/or modify
     8         - * it under the terms of the GNU General Public License as published by
     9         - * the Free Software Foundation; either version 2 of the License, or
    10         - * (at your option) any later version.
    11         - *
    12         - * This program is distributed in the hope that it will be useful,
    13         - * but WITHOUT ANY WARRANTY; without even the implied warranty of
    14         - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    15         - * GNU General Public License for more details.
    16         - *
    17         - * You should have received a copy of the GNU General Public License
    18         - * along with this program; if not, write to the Free Software
    19         - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
    20         - *
    21         - * http://epsilon-project.sourceforge.net
    22         - */
    23         -
    24         -/** \file
    25         - *
    26         - *  \brief SPECK wavelet codec
    27         - *
    28         - *  This file represents SPECK - The Set-Partitioning Embedded Block
    29         - *  wavelet codec. To understand the algorithm you have to read
    30         - *  original article from William Pearlman and Asad Islam. Also it
    31         - *  is highly recommended to get familar with coding example.
    32         - *
    33         - *  \warning The Set-Partitioning Embedded Block (SPECK) algorithm is
    34         - *  protected by US Patent #6,671,413 and also may be patented in your
    35         - *  country.
    36         - *
    37         - *  \section References
    38         - *
    39         - *  <a href="http://www.cipr.rpi.edu/~pearlman/">William A. Pearlman home page</a>
    40         - *
    41         - *  <a href="http://www.cipr.rpi.edu/~pearlman/papers/vcip99_ip.pdf">
    42         - *  A. Islam and W. A. Pearlman, An Embedded and Efficient Low-Complexity
    43         - *  Hierarchical Image Coder, Visual Communications and Image Processing 99,
    44         - *  Proceedings of SPIE Vol. 3653, pp. 294-305, Jan. 1999.</a>
    45         - *
    46         - *  <a href="http://www.cipr.rpi.edu/~pearlman/papers/speck_example.pdf">
    47         - *  SPECK coding example</a> */
    48         -
    49         -#ifndef __SPECK_H__
    50         -#define __SPECK_H__
    51         -
    52         -#ifdef __cplusplus
    53         -extern "C"
    54         -{
    55         -#endif
    56         -
    57         -/** \addtogroup speck SPECK wavelet codec */
    58         -/*@{*/
    59         -
    60         -#include <common.h>
    61         -#include <list.h>
    62         -#include <bit_io.h>
    63         -
    64         -/** Pixel set of type 'point' */
    65         -#define TYPE_POINT              0
    66         -/** Pixel set of type 'S' */
    67         -#define TYPE_S                  1
    68         -/** Pixel set of type 'I' */
    69         -#define TYPE_I                  2
    70         -/** Empty pixel set */
    71         -#define TYPE_EMPTY              3
    72         -
    73         -/** Processing sets of type 'S' */
    74         -#define STAGE_S                 0
    75         -/** Processing sets of type 'I' */
    76         -#define STAGE_I                 1
    77         -
    78         -/** Minimal SPECK buffer size */
    79         -#define MIN_SPECK_BUF_SIZE      1
    80         -/** Reserve 6 bits for \a theshold_bits parameter */
    81         -#define THRESHOLD_BITS          6
    82         -
    83         -/** Cast data pointer as \ref pixel_set structure */
    84         -#define PIXEL_SET(_set)         ((pixel_set *) (_set->data))
    85         -/** Select inserting index for array of LIS slots */
    86         -#define SLOT_INDEX(_set)        (number_of_bits(MIN(_set->width, _set->height)) - 1)
    87         -
    88         -/** Break if buffer is full */
    89         -#define BREAK_IF_OVERFLOW(_x)   if (_x == BIT_BUFFER_OVERFLOW) break
    90         -/** Return if buffer is full */
    91         -#define RETURN_IF_OVERFLOW(_x)  if (_x == BIT_BUFFER_OVERFLOW) return _x
    92         -/** Break if buffer is empty */
    93         -#define BREAK_IF_UNDERFLOW(_x)  if (_x == BIT_BUFFER_UNDERFLOW) break
    94         -/** Return if buffer is empty */
    95         -#define RETURN_IF_UNDERFLOW(_x) if (_x == BIT_BUFFER_UNDERFLOW) return _x
    96         -/** Contunue if list is empty */
    97         -#define CONTINUE_IF_EMPTY(_x)   if (LIST_IS_EMPTY(_x)) continue
    98         -
    99         -/** This structure represents pixel_set */
   100         -    typedef struct pixel_set_tag
   101         -    {
   102         -    /** Set type */
   103         -	short type;
   104         -    /** X coordinate */
   105         -	short x;
   106         -    /** Y coordinate */
   107         -	short y;
   108         -    /** Set width */
   109         -	short width;
   110         -    /** Set height */
   111         -	short height;
   112         -    } pixel_set;
   113         -
   114         -/** Find maximal coefficient
   115         - *
   116         - *  This function returns absolute value of maximal
   117         - *  wavelet coefficient.
   118         - *
   119         - *  \param channel Channel
   120         - *  \param channel_size Channel size
   121         - *
   122         - *  \return Maximal coefficient value */
   123         -    local int max_coeff (int **channel, int channel_size);
   124         -
   125         -/** Validate set
   126         - *
   127         - *  The process of splitting, moving and testing sets in the SPECK
   128         - *  algorithm is a bit tricky. This function can be thought as a very
   129         - *  strict validation tool.
   130         - *
   131         - *  \param set Set to validate
   132         - *  \param channel_size Channel size
   133         - *
   134         - *  \return \c 1 for valid sets and \c 0 for invalid ones */
   135         -    local int validate_set (pixel_set * set, int channel_size);
   136         -
   137         -/** Significance test
   138         - *
   139         - *  The purpose of this function is to compare \a set against \a threshold.
   140         - *  If the \a set have a coefficient greater than or equal to \a threshold,
   141         - *  then it is said that the \a set is significant. If all coefficients
   142         - *  of the \a set are below \a threshold, then it is said that the \a set
   143         - *  is insignificant.
   144         - *
   145         - *  \param set Set to test
   146         - *  \param threshold Threshold to compare against
   147         - *  \param channel Channel
   148         - *  \param channel_size Channel size
   149         - *
   150         - *  \return \c 1 for significant sets and \c 0 for insignificant ones */
   151         -    local int significance_test (pixel_set * set, int threshold,
   152         -				 int **channel, int channel_size);
   153         -
   154         -/** Select partition type
   155         - *
   156         - *  This function selects type of the \a set.
   157         - *
   158         - *  \param set Set
   159         - *
   160         - *  \return \c VOID */
   161         -    local void select_part_type (pixel_set * set);
   162         -
   163         -/** Split set
   164         - *
   165         - *  This function splits the \a set into pieces. Actual
   166         - *  splitting rule is defined within SPECK algorithm.
   167         - *
   168         - *  \param set Set to split
   169         - *  \param part1 First part
   170         - *  \param part2 Second part
   171         - *  \param part3 Third part
   172         - *  \param part4 Fourth part
   173         - *  \param channel_size Channel size
   174         - *
   175         - *  \return \c VOID */
   176         -    local void split_set (pixel_set * set, pixel_set * part1, pixel_set * part2,
   177         -			  pixel_set * part3, pixel_set * part4,
   178         -			  int channel_size);
   179         -
   180         -/** Allocate array of LIS slots
   181         - *
   182         - *  This function allocates array of LIS slots.
   183         - *
   184         - *  \param channel_size Channel size
   185         - *
   186         - *  \return Pointer to newly allocated structure */
   187         -    local linked_list **alloc_LIS_slots (int channel_size);
   188         -
   189         -/** Release array of LIS slots
   190         - *
   191         - *  This function releases array of LIS slots.
   192         - *
   193         - *  \param LIS_slots Array of LIS slots
   194         - *  \param channel_size Channel size
   195         - *
   196         - *  \return \c VOID */
   197         -    local void free_LIS_slots (linked_list ** LIS_slots, int channel_size);
   198         -
   199         -/** Assign set attributes
   200         - *
   201         - *  This function assigns \a set attributes to the \a node.
   202         - *
   203         - *  \param node Destination node
   204         - *  \param set Source set
   205         - *
   206         - *  \return \c VOID */
   207         -    local void assign_set (list_node * node, pixel_set * set);
   208         -
   209         -/** Reset channel
   210         - *
   211         - *  This function resets all \a channel components to zero.
   212         - *
   213         - *  \param channel Channel
   214         - *  \param channel_size Channel size
   215         - *
   216         - *  \return \c VOID */
   217         -    local void zero_channel (int **channel, int channel_size);
   218         -
   219         -/** Encode set of type 'S'
   220         - *
   221         - *  This function encodes \a set of type 'S'.
   222         - *
   223         - *  \param channel Channel
   224         - *  \param channel_size Channel size
   225         - *  \param set Set to encode
   226         - *  \param LIS_slots Array of LIS slots
   227         - *  \param LSP List of Significant Pixels
   228         - *  \param bb Bit-buffer
   229         - *  \param threshold Threshold
   230         - *
   231         - *  \return Either \ref BIT_BUFFER_OK or \ref BIT_BUFFER_OVERFLOW */
   232         -    local int speck_encode_S (int **channel, int channel_size,
   233         -			      pixel_set * set, linked_list ** LIS_slots,
   234         -			      linked_list * LSP, bit_buffer * bb,
   235         -			      int threshold);
   236         -
   237         -/** Process set of type 'S'
   238         - *
   239         - *  This function extracts \ref pixel_set structure from the \a node,
   240         - *  and encodes it using \ref speck_encode_S function.
   241         - *
   242         - *  \param channel Channel
   243         - *  \param channel_size Channel size
   244         - *  \param node Current node
   245         - *  \param slot Current LIS slot
   246         - *  \param LIS_slots Array of LIS slots
   247         - *  \param LSP List of Significant Pixels
   248         - *  \param bb Bit-buffer
   249         - *  \param threshold Threshold
   250         - *  \param coding_stage Either \ref STAGE_S or \ref STAGE_I
   251         - *
   252         - *  \return Either \ref BIT_BUFFER_OK or \ref BIT_BUFFER_OVERFLOW */
   253         -    local int speck_process_S (int **channel, int channel_size,
   254         -			       list_node * node, linked_list * slot,
   255         -			       linked_list ** LIS_slots, linked_list * LSP,
   256         -			       bit_buffer * bb, int threshold,
   257         -			       int coding_stage);
   258         -
   259         -/** Encode set of type 'I'
   260         - *
   261         - *  This function encodes set of type 'I'.
   262         - *
   263         - *  \param channel Channel
   264         - *  \param channel_size Channel size
   265         - *  \param I Set of type I
   266         - *  \param LIS_slots Array of LIS slots
   267         - *  \param LSP List of Significant Pixels
   268         - *  \param bb Bit-buffer
   269         - *  \param threshold Threshold
   270         - *
   271         - *  \return Either \ref BIT_BUFFER_OK or \ref BIT_BUFFER_OVERFLOW */
   272         -    local int speck_encode_I (int **channel, int channel_size, pixel_set * I,
   273         -			      linked_list ** LIS_slots, linked_list * LSP,
   274         -			      bit_buffer * bb, int threshold);
   275         -
   276         -/** Process set of type 'I'
   277         - *
   278         - *  This function encodes set \a I using \ref speck_encode_I function.
   279         - *
   280         - *  \param channel Channel
   281         - *  \param channel_size Channel size
   282         - *  \param I Set of type I
   283         - *  \param LIS_slots Array of LIS slots
   284         - *  \param LSP List of Significant Pixels
   285         - *  \param bb Bit-buffer
   286         - *  \param threshold Threshold
   287         - *
   288         - *  \return Either \ref BIT_BUFFER_OK or \ref BIT_BUFFER_OVERFLOW */
   289         -    local int speck_process_I (int **channel, int channel_size, pixel_set * I,
   290         -			       linked_list ** LIS_slots, linked_list * LSP,
   291         -			       bit_buffer * bb, int threshold);
   292         -
   293         -/** Encode sorting pass
   294         - *
   295         - *  The SPECK encoding algorithm alternates two types of passes
   296         - *  through the data: sorting pass and refinement pass. This
   297         - *  function implements the first one.
   298         - *
   299         - *  \param channel Channel
   300         - *  \param channel_size Channel size
   301         - *  \param LIS_slots Array of LIS slots
   302         - *  \param LSP List of Significant Pixels
   303         - *  \param I Set of type I
   304         - *  \param bb Bit-buffer
   305         - *  \param threshold Threshold
   306         - *
   307         - *  \return Either \ref BIT_BUFFER_OK or \ref BIT_BUFFER_OVERFLOW */
   308         -    local int encode_sorting_pass (int **channel, int channel_size,
   309         -				   linked_list ** LIS_slots, linked_list * LSP,
   310         -				   pixel_set * I, bit_buffer * bb,
   311         -				   int threshold);
   312         -
   313         -/** Encode refinement pass
   314         - *
   315         - *  The SPECK encoding algorithm alternates two types of passes
   316         - *  through the data: sorting pass and refinement pass. This
   317         - *  function implements the second one.
   318         - *
   319         - *  \param channel Channel
   320         - *  \param LSP List of Significant Pixels
   321         - *  \param bb Bit-buffer
   322         - *  \param threshold Threshold
   323         - *
   324         - *  \return Either \ref BIT_BUFFER_OK or \ref BIT_BUFFER_OVERFLOW */
   325         -    local int encode_refinement_pass (int **channel, linked_list * LSP,
   326         -				      bit_buffer * bb, int threshold);
   327         -
   328         -/** Decode set of type 'S'
   329         - *
   330         - *  This function is inverse to \ref speck_encode_S.
   331         - *
   332         - *  \param channel Channel
   333         - *  \param channel_size Channel size
   334         - *  \param set Set to decode
   335         - *  \param LIS_slots Array of LIS slots
   336         - *  \param LSP List of Significant Pixels
   337         - *  \param bb Bit-buffer
   338         - *  \param threshold Threshold
   339         - *
   340         - *  \return Either \ref BIT_BUFFER_OK or \ref BIT_BUFFER_UNDERFLOW */
   341         -    local int speck_decode_S (int **channel, int channel_size,
   342         -			      pixel_set * set, linked_list ** LIS_slots,
   343         -			      linked_list * LSP, bit_buffer * bb,
   344         -			      int threshold);
   345         -
   346         -/** Unprocess set of type 'S'
   347         - *
   348         - *  This function is inverse to \ref speck_process_S.
   349         - *
   350         - *  \param channel Channel
   351         - *  \param channel_size Channel size
   352         - *  \param node Current node
   353         - *  \param slot Current LIS slot
   354         - *  \param LIS_slots Array of LIS slots
   355         - *  \param LSP List of Significant Pixels
   356         - *  \param bb Bit-buffer
   357         - *  \param threshold Threshold
   358         - *  \param coding_stage Either \ref STAGE_S or \ref STAGE_I
   359         - *
   360         - *  \return Either \ref BIT_BUFFER_OK or \ref BIT_BUFFER_UNDERFLOW */
   361         -    local int speck_unprocess_S (int **channel, int channel_size,
   362         -				 list_node * node, linked_list * slot,
   363         -				 linked_list ** LIS_slots,
   364         -				 linked_list * LSP, bit_buffer * bb,
   365         -				 int threshold, int coding_stage);
   366         -
   367         -/** Decode set of type 'I'
   368         - *
   369         - *  This function is inverse to \ref speck_encode_I.
   370         - *
   371         - *  \param channel Channel
   372         - *  \param channel_size Channel size
   373         - *  \param I Set of type I
   374         - *  \param LIS_slots Array of LIS slots
   375         - *  \param LSP List of Significant Pixels
   376         - *  \param bb Bit-buffer
   377         - *  \param threshold Threshold
   378         - *
   379         - *  \return Either \ref BIT_BUFFER_OK or \ref BIT_BUFFER_UNDERFLOW */
   380         -    local int speck_decode_I (int **channel, int channel_size,
   381         -			      pixel_set * I, linked_list ** LIS_slots,
   382         -			      linked_list * LSP, bit_buffer * bb,
   383         -			      int threshold);
   384         -
   385         -/** Unprocess set of type 'I'
   386         - *
   387         - *  This function is inverse to \ref speck_process_I.
   388         - *
   389         - *  \param channel Channel
   390         - *  \param channel_size Channel size
   391         - *  \param I Set of type I
   392         - *  \param LIS_slots Array of LIS slots
   393         - *  \param LSP List of Significant Pixels
   394         - *  \param bb Bit-buffer
   395         - *  \param threshold Threshold
   396         - *
   397         - *  \return Either \ref BIT_BUFFER_OK or \ref BIT_BUFFER_UNDERFLOW */
   398         -    local int speck_unprocess_I (int **channel, int channel_size,
   399         -				 pixel_set * I, linked_list ** LIS_slots,
   400         -				 linked_list * LSP, bit_buffer * bb,
   401         -				 int threshold);
   402         -
   403         -/** Decode sorting pass
   404         - *
   405         - *  The SPECK decoding algorithm alternates two types of passes
   406         - *  through the data: sorting pass and refinement pass. This
   407         - *  function implements the first one.
   408         - *
   409         - *  \param channel Channel
   410         - *  \param channel_size Channel size
   411         - *  \param LIS_slots Array of LIS slots
   412         - *  \param LSP List of Significant Pixels
   413         - *  \param I Set of type I
   414         - *  \param bb Bit-buffer
   415         - *  \param threshold Threshold
   416         - *
   417         - *  \return Either \ref BIT_BUFFER_OK or \ref BIT_BUFFER_UNDERFLOW */
   418         -    local int decode_sorting_pass (int **channel, int channel_size,
   419         -				   linked_list ** LIS_slots,
   420         -				   linked_list * LSP, pixel_set * I,
   421         -				   bit_buffer * bb, int threshold);
   422         -
   423         -/** Decode refinement pass
   424         - *
   425         - *  The SPECK decoding algorithm alternates two types of passes
   426         - *  through the data: sorting pass and refinement pass. This
   427         - *  function implements the second one.
   428         - *
   429         - *  \param channel Channel
   430         - *  \param LSP List of Significant Pixels
   431         - *  \param bb Bit-buffer
   432         - *  \param threshold Threshold
   433         - *
   434         - *  \return Either \ref BIT_BUFFER_OK or \ref BIT_BUFFER_UNDERFLOW */
   435         -    local int decode_refinement_pass (int **channel, linked_list * LSP,
   436         -				      bit_buffer * bb, int threshold);
   437         -
   438         -/** Initialize SPECK encoder or decoder
   439         - *
   440         - *  This function initializes SPECK encoder or decoder.
   441         - *
   442         - *  \param LIS_slots Array of LIS slots
   443         - *  \param I Set of type I
   444         - *  \param channel_size Channel size
   445         - *  \param mode Either \ref MODE_NORMAL or \ref MODE_OTLPF
   446         - *
   447         - *  \return \c VOID */
   448         -    local void speck_init (linked_list ** LIS_slots, pixel_set * I,
   449         -			   int channel_size, int mode);
   450         -
   451         -/** Encode channel using SPECK algorithm
   452         - *
   453         - *  This function encodes \a channel of size \a channel_size
   454         - *  into the buffer \a buf of size \a buf_size.
   455         - *
   456         - *  \note Depending on encoding mode, minimal channel
   457         - *  size is \c 2 (for \ref MODE_NORMAL) or \c 3
   458         - *  (for \ref MODE_OTLPF).
   459         - *
   460         - *  \note Minimal buffer size is \ref MIN_SPECK_BUF_SIZE
   461         - *
   462         - *  \param channel Channel
   463         - *  \param channel_size Channel size
   464         - *  \param buf Buffer
   465         - *  \param buf_size Buffer size
   466         - *
   467         - *  \return Number of bytes in \a buf actualy used by encoder */
   468         -    int speck_encode (int **channel, int channel_size,
   469         -		      unsigned char *buf, int buf_size);
   470         -
   471         -/** Decode channel using SPECK algorithm
   472         - *
   473         - *  This function decodes \a channel of size \a channel_size
   474         - *  from the buffer \a buf of size \a buf_size.
   475         - *
   476         - *  \note Depending on encoding mode, minimal channel
   477         - *  size is \c 2 (for \ref MODE_NORMAL) or \c 3
   478         - *  (for \ref MODE_OTLPF).
   479         - *
   480         - *  \note Minimal buffer size is \ref MIN_SPECK_BUF_SIZE
   481         - *
   482         - *  \param buf Buffer
   483         - *  \param buf_size Buffer size
   484         - *  \param channel Channel
   485         - *  \param channel_size Channel size
   486         - *
   487         - *  \return \c VOID */
   488         -    void speck_decode (unsigned char *buf, int buf_size,
   489         -		       int **channel, int channel_size);
   490         -
   491         -/*@}*/
   492         -
   493         -#ifdef __cplusplus
   494         -}
   495         -#endif
   496         -
   497         -#endif				/* __SPECK_H__ */

Changes to headers/Makefile.am.

     1      1   
     2         -noinst_HEADERS = rasterlite_internals.h 
            2  +noinst_HEADERS = rasterlite_tiff_hdrs.h rasterlite_internals.h 
     3      3   include_HEADERS = rasterlite.h 
     4      4   

Changes to headers/Makefile.in.

     1         -# Makefile.in generated by automake 1.10.1 from Makefile.am.
            1  +# Makefile.in generated by automake 1.11.6 from Makefile.am.
     2      2   # @configure_input@
     3      3   
     4      4   # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
     5         -# 2003, 2004, 2005, 2006, 2007, 2008  Free Software Foundation, Inc.
            5  +# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
            6  +# Foundation, Inc.
     6      7   # This Makefile.in is free software; the Free Software Foundation
     7      8   # gives unlimited permission to copy and/or distribute it,
     8      9   # with or without modifications, as long as this notice is preserved.
     9     10   
    10     11   # This program is distributed in the hope that it will be useful,
    11     12   # but WITHOUT ANY WARRANTY, to the extent permitted by law; without
    12     13   # even the implied warranty of MERCHANTABILITY or FITNESS FOR A
    13     14   # PARTICULAR PURPOSE.
    14     15   
    15     16   @SET_MAKE@
    16     17   
    17     18   VPATH = @srcdir@
           19  +am__make_dryrun = \
           20  +  { \
           21  +    am__dry=no; \
           22  +    case $$MAKEFLAGS in \
           23  +      *\\[\ \	]*) \
           24  +        echo 'am--echo: ; @echo "AM"  OK' | $(MAKE) -f - 2>/dev/null \
           25  +          | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
           26  +      *) \
           27  +        for am__flg in $$MAKEFLAGS; do \
           28  +          case $$am__flg in \
           29  +            *=*|--*) ;; \
           30  +            *n*) am__dry=yes; break;; \
           31  +          esac; \
           32  +        done;; \
           33  +    esac; \
           34  +    test $$am__dry = yes; \
           35  +  }
    18     36   pkgdatadir = $(datadir)/@PACKAGE@
    19         -pkglibdir = $(libdir)/@PACKAGE@
    20     37   pkgincludedir = $(includedir)/@PACKAGE@
           38  +pkglibdir = $(libdir)/@PACKAGE@
           39  +pkglibexecdir = $(libexecdir)/@PACKAGE@
    21     40   am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
    22     41   install_sh_DATA = $(install_sh) -c -m 644
    23     42   install_sh_PROGRAM = $(install_sh) -c
    24     43   install_sh_SCRIPT = $(install_sh) -c
    25     44   INSTALL_HEADER = $(INSTALL_DATA)
    26     45   transform = $(program_transform_name)
    27     46   NORMAL_INSTALL = :
................................................................................
    32     51   POST_UNINSTALL = :
    33     52   build_triplet = @build@
    34     53   host_triplet = @host@
    35     54   subdir = headers
    36     55   DIST_COMMON = $(include_HEADERS) $(noinst_HEADERS) \
    37     56   	$(srcdir)/Makefile.am $(srcdir)/Makefile.in
    38     57   ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
    39         -am__aclocal_m4_deps = $(top_srcdir)/configure.ac
           58  +am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \
           59  +	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
           60  +	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
           61  +	$(top_srcdir)/configure.ac
    40     62   am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
    41     63   	$(ACLOCAL_M4)
    42     64   mkinstalldirs = $(install_sh) -d
           65  +CONFIG_HEADER = $(top_builddir)/config.h
    43     66   CONFIG_CLEAN_FILES =
           67  +CONFIG_CLEAN_VPATH_FILES =
    44     68   SOURCES =
    45     69   DIST_SOURCES =
           70  +am__can_run_installinfo = \
           71  +  case $$AM_UPDATE_INFO_DIR in \
           72  +    n|no|NO) false;; \
           73  +    *) (install-info --version) >/dev/null 2>&1;; \
           74  +  esac
    46     75   am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
    47     76   am__vpath_adj = case $$p in \
    48     77       $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
    49     78       *) f=$$p;; \
    50     79     esac;
    51         -am__strip_dir = `echo $$p | sed -e 's|^.*/||'`;
           80  +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
           81  +am__install_max = 40
           82  +am__nobase_strip_setup = \
           83  +  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
           84  +am__nobase_strip = \
           85  +  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
           86  +am__nobase_list = $(am__nobase_strip_setup); \
           87  +  for p in $$list; do echo "$$p $$p"; done | \
           88  +  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
           89  +  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
           90  +    if (++n[$$2] == $(am__install_max)) \
           91  +      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
           92  +    END { for (dir in files) print dir, files[dir] }'
           93  +am__base_list = \
           94  +  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
           95  +  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
           96  +am__uninstall_files_from_dir = { \
           97  +  test -z "$$files" \
           98  +    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
           99  +    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
          100  +         $(am__cd) "$$dir" && rm -f $$files; }; \
          101  +  }
    52    102   am__installdirs = "$(DESTDIR)$(includedir)"
    53         -includeHEADERS_INSTALL = $(INSTALL_HEADER)
    54    103   HEADERS = $(include_HEADERS) $(noinst_HEADERS)
    55    104   ETAGS = etags
    56    105   CTAGS = ctags
    57    106   DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
    58    107   ACLOCAL = @ACLOCAL@
    59    108   AMTAR = @AMTAR@
    60    109   AR = @AR@
................................................................................
    73    122   CXXDEPMODE = @CXXDEPMODE@
    74    123   CXXFLAGS = @CXXFLAGS@
    75    124   CYGPATH_W = @CYGPATH_W@
    76    125   DEFS = @DEFS@
    77    126   DEPDIR = @DEPDIR@
    78    127   DLLTOOL = @DLLTOOL@
    79    128   DSYMUTIL = @DSYMUTIL@
    80         -ECHO = @ECHO@
          129  +DUMPBIN = @DUMPBIN@
    81    130   ECHO_C = @ECHO_C@
    82    131   ECHO_N = @ECHO_N@
    83    132   ECHO_T = @ECHO_T@
    84    133   EGREP = @EGREP@
    85    134   EXEEXT = @EXEEXT@
    86         -F77 = @F77@
    87         -FFLAGS = @FFLAGS@
          135  +FGREP = @FGREP@
    88    136   GREP = @GREP@
    89    137   INSTALL = @INSTALL@
    90    138   INSTALL_DATA = @INSTALL_DATA@
    91    139   INSTALL_PROGRAM = @INSTALL_PROGRAM@
    92    140   INSTALL_SCRIPT = @INSTALL_SCRIPT@
    93    141   INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
          142  +LD = @LD@
    94    143   LDFLAGS = @LDFLAGS@
    95    144   LIBOBJS = @LIBOBJS@
          145  +LIBPNG_CFLAGS = @LIBPNG_CFLAGS@
          146  +LIBPNG_LIBS = @LIBPNG_LIBS@
    96    147   LIBS = @LIBS@
          148  +LIBSPATIALITE_CFLAGS = @LIBSPATIALITE_CFLAGS@
          149  +LIBSPATIALITE_LIBS = @LIBSPATIALITE_LIBS@
    97    150   LIBTOOL = @LIBTOOL@
          151  +LIPO = @LIPO@
    98    152   LN_S = @LN_S@
    99    153   LTLIBOBJS = @LTLIBOBJS@
   100    154   MAINT = @MAINT@
   101    155   MAKEINFO = @MAKEINFO@
          156  +MANIFEST_TOOL = @MANIFEST_TOOL@
   102    157   MKDIR_P = @MKDIR_P@
          158  +NM = @NM@
   103    159   NMEDIT = @NMEDIT@
   104    160   OBJDUMP = @OBJDUMP@
   105    161   OBJEXT = @OBJEXT@
          162  +OTOOL = @OTOOL@
          163  +OTOOL64 = @OTOOL64@
   106    164   PACKAGE = @PACKAGE@
   107    165   PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
   108    166   PACKAGE_NAME = @PACKAGE_NAME@
   109    167   PACKAGE_STRING = @PACKAGE_STRING@
   110    168   PACKAGE_TARNAME = @PACKAGE_TARNAME@
          169  +PACKAGE_URL = @PACKAGE_URL@
   111    170   PACKAGE_VERSION = @PACKAGE_VERSION@
   112    171   PATH_SEPARATOR = @PATH_SEPARATOR@
          172  +PKG_CONFIG = @PKG_CONFIG@
          173  +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
          174  +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
   113    175   RANLIB = @RANLIB@
   114    176   SED = @SED@
   115    177   SET_MAKE = @SET_MAKE@
   116    178   SHELL = @SHELL@
   117    179   STRIP = @STRIP@
   118    180   VERSION = @VERSION@
   119    181   abs_builddir = @abs_builddir@
   120    182   abs_srcdir = @abs_srcdir@
   121    183   abs_top_builddir = @abs_top_builddir@
   122    184   abs_top_srcdir = @abs_top_srcdir@
          185  +ac_ct_AR = @ac_ct_AR@
   123    186   ac_ct_CC = @ac_ct_CC@
   124    187   ac_ct_CXX = @ac_ct_CXX@
   125         -ac_ct_F77 = @ac_ct_F77@
          188  +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
   126    189   am__include = @am__include@
   127    190   am__leading_dot = @am__leading_dot@
   128    191   am__quote = @am__quote@
   129    192   am__tar = @am__tar@
   130    193   am__untar = @am__untar@
   131    194   bindir = @bindir@
   132    195   build = @build@
................................................................................
   161    224   program_transform_name = @program_transform_name@
   162    225   psdir = @psdir@
   163    226   sbindir = @sbindir@
   164    227   sharedstatedir = @sharedstatedir@
   165    228   srcdir = @srcdir@
   166    229   sysconfdir = @sysconfdir@
   167    230   target_alias = @target_alias@
          231  +top_build_prefix = @top_build_prefix@
   168    232   top_builddir = @top_builddir@
   169    233   top_srcdir = @top_srcdir@
   170         -noinst_HEADERS = rasterlite_internals.h 
          234  +noinst_HEADERS = rasterlite_tiff_hdrs.h rasterlite_internals.h 
   171    235   include_HEADERS = rasterlite.h 
   172    236   all: all-am
   173    237   
   174    238   .SUFFIXES:
   175    239   $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps)
   176    240   	@for dep in $?; do \
   177    241   	  case '$(am__configure_deps)' in \
   178    242   	    *$$dep*) \
   179         -	      cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
   180         -		&& exit 0; \
          243  +	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
          244  +	        && { if test -f $@; then exit 0; else break; fi; }; \
   181    245   	      exit 1;; \
   182    246   	  esac; \
   183    247   	done; \
   184         -	echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign  headers/Makefile'; \
   185         -	cd $(top_srcdir) && \
   186         -	  $(AUTOMAKE) --foreign  headers/Makefile
          248  +	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu headers/Makefile'; \
          249  +	$(am__cd) $(top_srcdir) && \
          250  +	  $(AUTOMAKE) --gnu headers/Makefile
   187    251   .PRECIOUS: Makefile
   188    252   Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
   189    253   	@case '$?' in \
   190    254   	  *config.status*) \
   191    255   	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
   192    256   	  *) \
   193    257   	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
................................................................................
   197    261   $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
   198    262   	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
   199    263   
   200    264   $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
   201    265   	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
   202    266   $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
   203    267   	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
          268  +$(am__aclocal_m4_deps):
   204    269   
   205    270   mostlyclean-libtool:
   206    271   	-rm -f *.lo
   207    272   
   208    273   clean-libtool:
   209    274   	-rm -rf .libs _libs
   210    275   install-includeHEADERS: $(include_HEADERS)
   211    276   	@$(NORMAL_INSTALL)
   212         -	test -z "$(includedir)" || $(MKDIR_P) "$(DESTDIR)$(includedir)"
   213         -	@list='$(include_HEADERS)'; for p in $$list; do \
          277  +	@list='$(include_HEADERS)'; test -n "$(includedir)" || list=; \
          278  +	if test -n "$$list"; then \
          279  +	  echo " $(MKDIR_P) '$(DESTDIR)$(includedir)'"; \
          280  +	  $(MKDIR_P) "$(DESTDIR)$(includedir)" || exit 1; \
          281  +	fi; \
          282  +	for p in $$list; do \
   214    283   	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
   215         -	  f=$(am__strip_dir) \
   216         -	  echo " $(includeHEADERS_INSTALL) '$$d$$p' '$(DESTDIR)$(includedir)/$$f'"; \
   217         -	  $(includeHEADERS_INSTALL) "$$d$$p" "$(DESTDIR)$(includedir)/$$f"; \
          284  +	  echo "$$d$$p"; \
          285  +	done | $(am__base_list) | \
          286  +	while read files; do \
          287  +	  echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(includedir)'"; \
          288  +	  $(INSTALL_HEADER) $$files "$(DESTDIR)$(includedir)" || exit $$?; \
   218    289   	done
   219    290   
   220    291   uninstall-includeHEADERS:
   221    292   	@$(NORMAL_UNINSTALL)
   222         -	@list='$(include_HEADERS)'; for p in $$list; do \
   223         -	  f=$(am__strip_dir) \
   224         -	  echo " rm -f '$(DESTDIR)$(includedir)/$$f'"; \
   225         -	  rm -f "$(DESTDIR)$(includedir)/$$f"; \
   226         -	done
          293  +	@list='$(include_HEADERS)'; test -n "$(includedir)" || list=; \
          294  +	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
          295  +	dir='$(DESTDIR)$(includedir)'; $(am__uninstall_files_from_dir)
   227    296   
   228    297   ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
   229    298   	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
   230    299   	unique=`for i in $$list; do \
   231    300   	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
   232    301   	  done | \
   233         -	  $(AWK) '{ files[$$0] = 1; nonemtpy = 1; } \
          302  +	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
   234    303   	      END { if (nonempty) { for (i in files) print i; }; }'`; \
   235    304   	mkid -fID $$unique
   236    305   tags: TAGS
   237    306   
   238    307   TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
   239    308   		$(TAGS_FILES) $(LISP)
   240         -	tags=; \
          309  +	set x; \
   241    310   	here=`pwd`; \
   242    311   	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
   243    312   	unique=`for i in $$list; do \
   244    313   	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
   245    314   	  done | \
   246    315   	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
   247    316   	      END { if (nonempty) { for (i in files) print i; }; }'`; \
   248         -	if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
          317  +	shift; \
          318  +	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
   249    319   	  test -n "$$unique" || unique=$$empty_fix; \
   250         -	  $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
   251         -	    $$tags $$unique; \
          320  +	  if test $$# -gt 0; then \
          321  +	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
          322  +	      "$$@" $$unique; \
          323  +	  else \
          324  +	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
          325  +	      $$unique; \
          326  +	  fi; \
   252    327   	fi
   253    328   ctags: CTAGS
   254    329   CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
   255    330   		$(TAGS_FILES) $(LISP)
   256         -	tags=; \
   257    331   	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
   258    332   	unique=`for i in $$list; do \
   259    333   	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
   260    334   	  done | \
   261    335   	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
   262    336   	      END { if (nonempty) { for (i in files) print i; }; }'`; \
   263         -	test -z "$(CTAGS_ARGS)$$tags$$unique" \
          337  +	test -z "$(CTAGS_ARGS)$$unique" \
   264    338   	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
   265         -	     $$tags $$unique
          339  +	     $$unique
   266    340   
   267    341   GTAGS:
   268    342   	here=`$(am__cd) $(top_builddir) && pwd` \
   269         -	  && cd $(top_srcdir) \
   270         -	  && gtags -i $(GTAGS_ARGS) $$here
          343  +	  && $(am__cd) $(top_srcdir) \
          344  +	  && gtags -i $(GTAGS_ARGS) "$$here"
   271    345   
   272    346   distclean-tags:
   273    347   	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
   274    348   
   275    349   distdir: $(DISTFILES)
   276    350   	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
   277    351   	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
................................................................................
   284    358   			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
   285    359   			   sort -u` ;; \
   286    360   	esac; \
   287    361   	for file in $$dist_files; do \
   288    362   	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
   289    363   	  if test -d $$d/$$file; then \
   290    364   	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
          365  +	    if test -d "$(distdir)/$$file"; then \
          366  +	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
          367  +	    fi; \
   291    368   	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
   292         -	      cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
          369  +	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
          370  +	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
   293    371   	    fi; \
   294         -	    cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
          372  +	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
   295    373   	  else \
   296         -	    test -f $(distdir)/$$file \
   297         -	    || cp -p $$d/$$file $(distdir)/$$file \
          374  +	    test -f "$(distdir)/$$file" \
          375  +	    || cp -p $$d/$$file "$(distdir)/$$file" \
   298    376   	    || exit 1; \
   299    377   	  fi; \
   300    378   	done
   301    379   check-am: all-am
   302    380   check: check-am
   303    381   all-am: Makefile $(HEADERS)
   304    382   installdirs:
................................................................................
   311    389   uninstall: uninstall-am
   312    390   
   313    391   install-am: all-am
   314    392   	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
   315    393   
   316    394   installcheck: installcheck-am
   317    395   install-strip:
   318         -	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
   319         -	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
   320         -	  `test -z '$(STRIP)' || \
   321         -	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
          396  +	if test -z '$(STRIP)'; then \
          397  +	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
          398  +	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
          399  +	      install; \
          400  +	else \
          401  +	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
          402  +	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
          403  +	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
          404  +	fi
   322    405   mostlyclean-generic:
   323    406   
   324    407   clean-generic:
   325    408   
   326    409   distclean-generic:
   327    410   	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
          411  +	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
   328    412   
   329    413   maintainer-clean-generic:
   330    414   	@echo "This command is intended for maintainers to use"
   331    415   	@echo "it deletes files that may require special tools to rebuild."
   332    416   clean: clean-am
   333    417   
   334    418   clean-am: clean-generic clean-libtool mostlyclean-am
................................................................................
   338    422   distclean-am: clean-am distclean-generic distclean-tags
   339    423   
   340    424   dvi: dvi-am
   341    425   
   342    426   dvi-am:
   343    427   
   344    428   html: html-am
          429  +
          430  +html-am:
   345    431   
   346    432   info: info-am
   347    433   
   348    434   info-am:
   349    435   
   350    436   install-data-am: install-includeHEADERS
   351    437   
   352    438   install-dvi: install-dvi-am
          439  +
          440  +install-dvi-am:
   353    441   
   354    442   install-exec-am:
   355    443   
   356    444   install-html: install-html-am
          445  +
          446  +install-html-am:
   357    447   
   358    448   install-info: install-info-am
          449  +
          450  +install-info-am:
   359    451   
   360    452   install-man:
   361    453   
   362    454   install-pdf: install-pdf-am
          455  +
          456  +install-pdf-am:
   363    457   
   364    458   install-ps: install-ps-am
          459  +
          460  +install-ps-am:
   365    461   
   366    462   installcheck-am:
   367    463   
   368    464   maintainer-clean: maintainer-clean-am
   369    465   	-rm -f Makefile
   370    466   maintainer-clean-am: distclean-am maintainer-clean-generic
   371    467   
................................................................................
   393    489   	install-exec-am install-html install-html-am \
   394    490   	install-includeHEADERS install-info install-info-am \
   395    491   	install-man install-pdf install-pdf-am install-ps \
   396    492   	install-ps-am install-strip installcheck installcheck-am \
   397    493   	installdirs maintainer-clean maintainer-clean-generic \
   398    494   	mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \
   399    495   	ps ps-am tags uninstall uninstall-am uninstall-includeHEADERS
          496  +
   400    497   
   401    498   # Tell versions [3.59,3.63) of GNU make to not export all variables.
   402    499   # Otherwise a system limit (for SysV at least) may be exceeded.
   403    500   .NOEXPORT:

Changes to headers/rasterlite.h.

     1      1   /* 
     2      2   / rasterlite.h
     3      3   /
     4      4   / public RasterLite declarations
     5      5   /
     6         -/ version 1.0, 2009 June 1
            6  +/ version 1.1a, 2011 November 12
     7      7   /
     8      8   / Author: Sandro Furieri a.furieri@lqt.it
     9      9   /
    10         -/ Copyright (C) 2009  Alessandro Furieri
           10  +/ ------------------------------------------------------------------------------
           11  +/ 
           12  +/ Version: MPL 1.1/GPL 2.0/LGPL 2.1
           13  +/ 
           14  +/ The contents of this file are subject to the Mozilla Public License Version
           15  +/ 1.1 (the "License"); you may not use this file except in compliance with
           16  +/ the License. You may obtain a copy of the License at
           17  +/ http://www.mozilla.org/MPL/
           18  +/ 
           19  +/ Software distributed under the License is distributed on an "AS IS" basis,
           20  +/ WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
           21  +/ for the specific language governing rights and limitations under the
           22  +/ License.
    11     23   /
    12         -/    This program is free software: you can redistribute it and/or modify
    13         -/    it under the terms of the GNU General Public License as published by
    14         -/    the Free Software Foundation, either version 3 of the License, or
    15         -/    (at your option) any later version.
           24  +/ The Original Code is the RasterLite library
    16     25   /
    17         -/    This program is distributed in the hope that it will be useful,
    18         -/    but WITHOUT ANY WARRANTY; without even the implied warranty of
    19         -/    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    20         -/    GNU General Public License for more details.
           26  +/ The Initial Developer of the Original Code is Alessandro Furieri
           27  +/ 
           28  +/ Portions created by the Initial Developer are Copyright (C) 2009
           29  +/ the Initial Developer. All Rights Reserved.
    21     30   /
    22         -/    You should have received a copy of the GNU General Public License
    23         -/    along with this program.  If not, see <http://www.gnu.org/licenses/>.
    24         -/
           31  +/ Alternatively, the contents of this file may be used under the terms of
           32  +/ either the GNU General Public License Version 2 or later (the "GPL"), or
           33  +/ the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
           34  +/ in which case the provisions of the GPL or the LGPL are applicable instead
           35  +/ of those above. If you wish to allow use of your version of this file only
           36  +/ under the terms of either the GPL or the LGPL, and not to allow others to
           37  +/ use your version of this file under the terms of the MPL, indicate your
           38  +/ decision by deleting the provisions above and replace them with the notice
           39  +/ and other provisions required by the GPL or the LGPL. If you do not delete
           40  +/ the provisions above, a recipient may use your version of this file under
           41  +/ the terms of any one of the MPL, the GPL or the LGPL.
           42  +/ 
    25     43   */
    26     44   
    27     45   #ifdef DLL_EXPORT
    28     46   #define RASTERLITE_DECLARE __declspec(dllexport)
    29     47   #else
    30     48   #define RASTERLITE_DECLARE extern
    31     49   #endif
................................................................................
   129    147       RASTERLITE_DECLARE int rasterliteIsError (void *handle);
   130    148       RASTERLITE_DECLARE const char *rasterliteGetPath (void *handle);
   131    149       RASTERLITE_DECLARE const char *rasterliteGetTablePrefix (void *handle);
   132    150       RASTERLITE_DECLARE const char *rasterliteGetLastError (void *handle);
   133    151       RASTERLITE_DECLARE const char *rasterliteGetSqliteVersion (void *handle);
   134    152       RASTERLITE_DECLARE const char *rasterliteGetSpatialiteVersion (void
   135    153   								   *handle);
          154  +    RASTERLITE_DECLARE const char *rasterliteGetVersion (void);
          155  +
   136    156       RASTERLITE_DECLARE int rasterliteGetLevels (void *handle);
   137    157       RASTERLITE_DECLARE int rasterliteGetResolution (void *handle, int level,
   138    158   						    double *pixel_x_size,
   139    159   						    double *pixel_y_size,
   140    160   						    int *tile_count);
   141    161       RASTERLITE_DECLARE int rasterliteGetSrid (void *handle, int *srid,
   142    162   					      const char **auth_name,
   143    163   					      int *auth_srid,
   144    164   					      const char **ref_sys_name,
   145    165   					      const char **proj4text);
   146    166       RASTERLITE_DECLARE int rasterliteGetExtent (void *handle, double *min_x,
   147    167   						double *min_y, double *max_x,
   148    168   						double *max_y);
   149         -    RASTERLITE_DECLARE int rasterliteWaveletToPng (const void *blob,
   150         -						   int blob_size,
   151         -						   void **png_blob,
   152         -						   int *png_size);
   153    169       RASTERLITE_DECLARE int rasterliteExportGeoTiff (void *handle,
   154    170   						    const char *img_path,
   155    171   						    void *raster, int size,
   156    172   						    double cx, double cy,
   157    173   						    double pixel_x_size,
   158    174   						    double pixel_y_size,
   159    175   						    int width, int height);
................................................................................
   160    176       RASTERLITE_DECLARE int rasterliteGetBestAccess (void *handle,
   161    177   						    double pixel_size,
   162    178   						    double *pixel_x_size,
   163    179   						    double *pixel_y_size,
   164    180   						    sqlite3_stmt ** stmt,
   165    181   						    int *use_rtree);
   166    182   
          183  +/*
          184  +/ utility functions returning a Raw image
          185  +*/
          186  +    RASTERLITE_DECLARE int rasterliteJpegBlobToRawImage (const void *blob,
          187  +							 int blob_size,
          188  +							 int raw_format,
          189  +							 void **raw, int *width,
          190  +							 int *height);
          191  +    RASTERLITE_DECLARE int rasterlitePngBlobToRawImage (const void *blob,
          192  +							int blob_size,
          193  +							int raw_format,
          194  +							void **raw, int *width,
          195  +							int *height);
          196  +    RASTERLITE_DECLARE int rasterliteGifBlobToRawImage (const void *blob,
          197  +							int blob_size,
          198  +							int raw_format,
          199  +							void **raw, int *width,
          200  +							int *height);
          201  +    RASTERLITE_DECLARE int rasterliteTiffBlobToRawImage (const void *blob,
          202  +							 int blob_size,
          203  +							 int raw_format,
          204  +							 void **raw, int *width,
          205  +							 int *height);
          206  +
          207  +/*
          208  +/ utility functions generating an image file from a Raw Image
          209  +*/
          210  +    RASTERLITE_DECLARE int rasterliteRawImageToJpegFile (const void *raw,
          211  +							 int raw_format,
          212  +							 int width, int height,
          213  +							 const char *path,
          214  +							 int quality);
          215  +    RASTERLITE_DECLARE int rasterliteRawImageToPngFile (const void *raw,
          216  +							int raw_format,
          217  +							int width, int height,
          218  +							const char *path);
          219  +    RASTERLITE_DECLARE int rasterliteRawImageToGifFile (const void *raw,
          220  +							int raw_format,
          221  +							int width, int height,
          222  +							const char *path);
          223  +    RASTERLITE_DECLARE int rasterliteRawImageToGeoTiffFile (const void *raw,
          224  +							    int raw_format,
          225  +							    int width,
          226  +							    int height,
          227  +							    const char *path,
          228  +							    double x_size,
          229  +							    double y_size,
          230  +							    double xllcorner,
          231  +							    double yllcorner,
          232  +							    const char
          233  +							    *proj4text);
          234  +
          235  +/*
          236  +/ utility functions generating an image mem-buffer from a Raw Image
          237  +*/
          238  +    RASTERLITE_DECLARE unsigned char *rasterliteRawImageToJpegMemBuf (const void
          239  +								      *raw,
          240  +								      int
          241  +								      raw_format,
          242  +								      int width,
          243  +								      int
          244  +								      height,
          245  +								      int *size,
          246  +								      int
          247  +								      quality);
          248  +    RASTERLITE_DECLARE unsigned char *rasterliteRawImageToPngMemBuf (const void
          249  +								     *raw,
          250  +								     int
          251  +								     raw_format,
          252  +								     int width,
          253  +								     int height,
          254  +								     int *size);
          255  +    RASTERLITE_DECLARE unsigned char *rasterliteRawImageToGifMemBuf (const void
          256  +								     *raw,
          257  +								     int
          258  +								     raw_format,
          259  +								     int width,
          260  +								     int height,
          261  +								     int *size);
          262  +    RASTERLITE_DECLARE unsigned char *rasterliteRawImageToTiffMemBuf (const void
          263  +								      *raw,
          264  +								      int
          265  +								      raw_format,
          266  +								      int width,
          267  +								      int
          268  +								      height,
          269  +								      int
          270  +								      *size);
          271  +
   167    272   #ifdef __cplusplus
   168    273   }
   169    274   #endif
   170    275   
   171    276   #endif				/* _RASTERLITE_H */

Changes to headers/rasterlite_internals.h.

     1      1   /* 
     2      2   / rasterlite_internals.h
     3      3   /
     4      4   / internal declarations
     5      5   /
     6         -/ version 1.0, 2009 June 1
            6  +/ version 1.1a, 2011 November 12
     7      7   /
     8      8   / Author: Sandro Furieri a.furieri@lqt.it
     9      9   /
    10         -/ Copyright (C) 2009  Alessandro Furieri
           10  +/ ------------------------------------------------------------------------------
           11  +/ 
           12  +/ Version: MPL 1.1/GPL 2.0/LGPL 2.1
           13  +/ 
           14  +/ The contents of this file are subject to the Mozilla Public License Version
           15  +/ 1.1 (the "License"); you may not use this file except in compliance with
           16  +/ the License. You may obtain a copy of the License at
           17  +/ http://www.mozilla.org/MPL/
           18  +/ 
           19  +/ Software distributed under the License is distributed on an "AS IS" basis,
           20  +/ WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
           21  +/ for the specific language governing rights and limitations under the
           22  +/ License.
    11     23   /
    12         -/    This program is free software: you can redistribute it and/or modify
    13         -/    it under the terms of the GNU General Public License as published by
    14         -/    the Free Software Foundation, either version 3 of the License, or
    15         -/    (at your option) any later version.
           24  +/ The Original Code is the RasterLite library
    16     25   /
    17         -/    This program is distributed in the hope that it will be useful,
    18         -/    but WITHOUT ANY WARRANTY; without even the implied warranty of
    19         -/    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    20         -/    GNU General Public License for more details.
           26  +/ The Initial Developer of the Original Code is Alessandro Furieri
           27  +/ 
           28  +/ Portions created by the Initial Developer are Copyright (C) 2009
           29  +/ the Initial Developer. All Rights Reserved.
    21     30   /
    22         -/    You should have received a copy of the GNU General Public License
    23         -/    along with this program.  If not, see <http://www.gnu.org/licenses/>.
    24         -/
           31  +/ Alternatively, the contents of this file may be used under the terms of
           32  +/ either the GNU General Public License Version 2 or later (the "GPL"), or
           33  +/ the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
           34  +/ in which case the provisions of the GPL or the LGPL are applicable instead
           35  +/ of those above. If you wish to allow use of your version of this file only
           36  +/ under the terms of either the GPL or the LGPL, and not to allow others to
           37  +/ use your version of this file under the terms of the MPL, indicate your
           38  +/ decision by deleting the provisions above and replace them with the notice
           39  +/ and other provisions required by the GPL or the LGPL. If you do not delete
           40  +/ the provisions above, a recipient may use your version of this file under
           41  +/ the terms of any one of the MPL, the GPL or the LGPL.
           42  +/ 
    25     43   */
    26     44   
    27     45   #define COLORSPACE_MONOCHROME	1
    28     46   #define COLORSPACE_PALETTE	2
    29     47   #define COLORSPACE_GRAYSCALE	3
    30     48   #define COLORSPACE_RGB		4
    31     49   
................................................................................
    43     61   #define IMAGE_GIF_PALETTE	111
    44     62   
    45     63   #define NTILES	8192
    46     64   
    47     65   #define STRATEGY_RTREE	1
    48     66   #define STRATEGY_PLAIN	2
    49     67   
           68  +#define RASTERLITE_TRUE	-1
           69  +#define RASTERLITE_FALSE	-2
           70  +
    50     71   #define true_color(r, g, b) (((r) << 16) + ((g) << 8) + (b))
    51     72   #define image_set_pixel(img, x, y, color) 	img->pixels[y][x] = color
    52     73   #define true_color_get_red(c) (((c) & 0xFF0000) >> 16)
    53     74   #define true_color_get_green(c) (((c) & 0x00FF00) >> 8)
    54     75   #define true_color_get_blue(c) ((c) & 0x0000FF)
    55     76   
    56     77   struct tile_info
................................................................................
    87    108       double pixel_y;		/* the Y pixel size [in map units] */
    88    109       int tile_height;		/* the TILE preferred height [in pixels]  */
    89    110       int tile_width;		/* the TILE preferred width [in pixels]  */
    90    111       sqlite3 *handle;		/* SQLite handle */
    91    112       sqlite3_stmt *stmt;		/* SQL preparared statement: INSERT INTO xx_rasters */
    92    113       const char *table;		/* the DB table name */
    93    114       int image_type;		/* the preferred image type [to be used for tiles] */
    94         -    int quality_factor;		/* the quality factor for JPEG or Wavelet compression */
          115  +    int quality_factor;		/* the quality factor for JPEG compression */
    95    116       struct tile_info tiles[NTILES];
    96    117   };
    97    118   
    98    119   struct source_item
    99    120   {
   100    121   /* a raster source item */
   101    122       char *name;
................................................................................
   178    199   /* a generic RGB image  */
   179    200       int **pixels;
   180    201       int sx;
   181    202       int sy;
   182    203       int color_space;
   183    204   } rasterliteImage;
   184    205   
   185         -typedef rasterliteImage *rasterliteImagePrt;
          206  +typedef rasterliteImage *rasterliteImagePtr;
   186    207   
   187         -extern rasterliteImagePrt image_create (int sx, int sy);
   188         -extern void image_destroy (rasterliteImagePrt img);
   189         -extern void image_fill (const rasterliteImagePrt img, int color);
   190         -extern void make_thumbnail (const rasterliteImagePrt thumbnail,
   191         -			    const rasterliteImagePrt image);
   192         -extern void image_resize (const rasterliteImagePrt dst,
   193         -			  const rasterliteImagePrt src);
          208  +extern rasterliteImagePtr image_create (int sx, int sy);
          209  +extern void image_destroy (rasterliteImagePtr img);
          210  +extern void image_fill (const rasterliteImagePtr img, int color);
          211  +extern void make_thumbnail (const rasterliteImagePtr thumbnail,
          212  +			    const rasterliteImagePtr image);
          213  +extern void image_resize (const rasterliteImagePtr dst,
          214  +			  const rasterliteImagePtr src);
   194    215   
   195         -extern void *image_to_jpeg (const rasterliteImagePrt img, int *size,
          216  +extern void *image_to_jpeg (const rasterliteImagePtr img, int *size,
   196    217   			    int quality);
   197         -extern void *image_to_jpeg_grayscale (const rasterliteImagePrt img, int *size,
          218  +extern void *image_to_jpeg_grayscale (const rasterliteImagePtr img, int *size,
   198    219   				      int quality);
   199         -extern void *image_to_wavelet (const rasterliteImagePrt img, int *size,
   200         -			       int ratio);
   201         -extern void *image_to_wavelet_grayscale (const rasterliteImagePrt img,
   202         -					 int *size, int ratio);
   203         -extern void *image_to_png_palette (const rasterliteImagePrt img, int *size);
   204         -extern void *image_to_png_grayscale (const rasterliteImagePrt img, int *size);
   205         -extern void *image_to_png_rgb (const rasterliteImagePrt img, int *size);
   206         -extern void *image_to_gif (const rasterliteImagePrt img, int *size);
   207         -extern void *image_to_tiff_fax4 (const rasterliteImagePrt img, int *size);
   208         -extern void *image_to_tiff_palette (const rasterliteImagePrt img, int *size);
   209         -extern void *image_to_tiff_grayscale (const rasterliteImagePrt img, int *size);
   210         -extern void *image_to_tiff_rgb (const rasterliteImagePrt img, int *size);
   211         -extern void *image_to_rgb_array (const rasterliteImagePrt img, int *size);
          220  +extern void *image_to_png_palette (const rasterliteImagePtr img, int *size);
          221  +extern void *image_to_png_grayscale (const rasterliteImagePtr img, int *size);
          222  +extern void *image_to_png_rgb (const rasterliteImagePtr img, int *size);
          223  +extern void *image_to_gif (const rasterliteImagePtr img, int *size);
          224  +extern void *image_to_tiff_fax4 (const rasterliteImagePtr img, int *size);
          225  +extern void *image_to_tiff_palette (const rasterliteImagePtr img, int *size);
          226  +extern void *image_to_tiff_grayscale (const rasterliteImagePtr img, int *size);
          227  +extern void *image_to_tiff_rgb (const rasterliteImagePtr img, int *size);
          228  +
          229  +extern void *image_to_rgb_array (const rasterliteImagePtr img, int *size);
   212    230   extern void *image_to_rgba_array (int transparent_color,
   213         -				  const rasterliteImagePrt img, int *size);
          231  +				  const rasterliteImagePtr img, int *size);
   214    232   extern void *image_to_argb_array (int transparent_color,
   215         -				  const rasterliteImagePrt img, int *size);
   216         -extern void *image_to_bgr_array (const rasterliteImagePrt img, int *size);
          233  +				  const rasterliteImagePtr img, int *size);
          234  +extern void *image_to_bgr_array (const rasterliteImagePtr img, int *size);
   217    235   extern void *image_to_bgra_array (int transparent_color,
   218         -				  const rasterliteImagePrt img, int *size);
          236  +				  const rasterliteImagePtr img, int *size);
          237  +
          238  +extern rasterliteImagePtr image_from_rgb_array (const void *raw, int width,
          239  +						int height);
          240  +extern rasterliteImagePtr image_from_rgba_array (const void *raw, int width,
          241  +						 int height);
          242  +extern rasterliteImagePtr image_from_argb_array (const void *raw, int width,
          243  +						 int height);
          244  +extern rasterliteImagePtr image_from_bgr_array (const void *raw, int width,
          245  +						int height);
          246  +extern rasterliteImagePtr image_from_bgra_array (const void *raw, int width,
          247  +						 int height);
          248  +
          249  +extern rasterliteImagePtr image_from_jpeg (int size, const void *data);
          250  +extern rasterliteImagePtr image_from_png (int size, const void *data);
          251  +extern rasterliteImagePtr image_from_gif (int size, const void *data);
          252  +extern rasterliteImagePtr image_from_tiff (int size, const void *data);
   219    253   
   220         -extern rasterliteImagePrt image_from_jpeg (int size, const void *data);
   221         -extern rasterliteImagePrt image_from_png (int size, const void *data);
   222         -extern rasterliteImagePrt image_from_gif (int size, const void *data);
   223         -extern rasterliteImagePrt image_from_tiff (int size, const void *data);
   224         -extern rasterliteImagePrt image_from_wavelet (int size, const void *data);
          254  +extern int is_image_monochrome (const rasterliteImagePtr img);
          255  +extern int is_image_grayscale (const rasterliteImagePtr img);
          256  +extern int is_image_palette256 (const rasterliteImagePtr img);
          257  +extern void image_resample_as_palette256 (const rasterliteImagePtr img);
   225    258   
   226    259   extern int write_geotiff (const char *path, const void *raster, int size,
   227    260   			  double xsize, double ysize, double xllcorner,
   228    261   			  double yllcorner, const char *proj4text);
   229    262   
   230    263   /* 
   231    264   /

Added headers/rasterlite_tiff_hdrs.h.

            1  +/*
            2  +/ rasterlite_tiff_hrds.h
            3  +/
            4  +/ internal declarations supporting geotiff
            5  +/
            6  +/ version 1.1a, 2011 November 12
            7  +/
            8  +/ Author: Brad Hards bradh@frogmouth.net
            9  +/
           10  +/ ------------------------------------------------------------------------------
           11  +/ 
           12  +/ Version: MPL 1.1/GPL 2.0/LGPL 2.1
           13  +/ 
           14  +/ The contents of this file are subject to the Mozilla Public License Version
           15  +/ 1.1 (the "License"); you may not use this file except in compliance with
           16  +/ the License. You may obtain a copy of the License at
           17  +/ http://www.mozilla.org/MPL/
           18  +/ 
           19  +/ Software distributed under the License is distributed on an "AS IS" basis,
           20  +/ WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
           21  +/ for the specific language governing rights and limitations under the
           22  +/ License.
           23  +/
           24  +/ The Original Code is the RasterLite library
           25  +/
           26  +/ The Initial Developer of the Original Code is Alessandro Furieri
           27  +/ 
           28  +/ Portions created by the Initial Developer are Copyright (C) 2011
           29  +/ the Initial Developer. All Rights Reserved.
           30  +/
           31  +/ Alternatively, the contents of this file may be used under the terms of
           32  +/ either the GNU General Public License Version 2 or later (the "GPL"), or
           33  +/ the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
           34  +/ in which case the provisions of the GPL or the LGPL are applicable instead
           35  +/ of those above. If you wish to allow use of your version of this file only
           36  +/ under the terms of either the GPL or the LGPL, and not to allow others to
           37  +/ use your version of this file under the terms of the MPL, indicate your
           38  +/ decision by deleting the provisions above and replace them with the notice
           39  +/ and other provisions required by the GPL or the LGPL. If you do not delete
           40  +/ the provisions above, a recipient may use your version of this file under
           41  +/ the terms of any one of the MPL, the GPL or the LGPL.
           42  +/ 
           43  +*/
           44  +
           45  +#ifndef _RASTERLITE_TIFF_HDRS_H
           46  +#define _RASTERLITE_TIFF_HDRS_H
           47  +
           48  +#include "config.h"
           49  +
           50  +#ifdef HAVE_GEOTIFF_GEOTIFF_H
           51  +#include <geotiff/geotiff.h>
           52  +#include <geotiff/xtiffio.h>
           53  +#include <geotiff/geo_tiffp.h>
           54  +#include <geotiff/geo_keyp.h>
           55  +#include <geotiff/geovalues.h>
           56  +#include <geotiff/geo_normalize.h>
           57  +#elif HAVE_LIBGEOTIFF_GEOTIFF_H
           58  +#include <libgeotiff/geotiff.h>
           59  +#include <libgeotiff/xtiffio.h>
           60  +#include <libgeotiff/geo_tiffp.h>
           61  +#include <libgeotiff/geo_keyp.h>
           62  +#include <libgeotiff/geovalues.h>
           63  +#include <libgeotiff/geo_normalize.h>
           64  +#else
           65  +#include <geotiff.h>
           66  +#include <xtiffio.h>
           67  +#include <geo_tiffp.h>
           68  +#include <geo_keyp.h>
           69  +#include <geovalues.h>
           70  +#include <geo_normalize.h>
           71  +#endif
           72  +
           73  +#endif

Changes to install-sh.

     1      1   #!/bin/sh
     2      2   # install - install a program, script, or datafile
     3      3   
     4         -scriptversion=2006-12-25.00
            4  +scriptversion=2009-04-28.21; # UTC
     5      5   
     6      6   # This originates from X11R5 (mit/util/scripts/install.sh), which was
     7      7   # later released in X11R6 (xc/config/util/install.sh) with the
     8      8   # following copyright and license.
     9      9   #
    10     10   # Copyright (C) 1994 X Consortium
    11     11   #
................................................................................
   511    511     fi
   512    512   done
   513    513   
   514    514   # Local variables:
   515    515   # eval: (add-hook 'write-file-hooks 'time-stamp)
   516    516   # time-stamp-start: "scriptversion="
   517    517   # time-stamp-format: "%:y-%02m-%02d.%02H"
   518         -# time-stamp-end: "$"
          518  +# time-stamp-time-zone: "UTC"
          519  +# time-stamp-end: "; # UTC"
   519    520   # End:

Changes to lib/Makefile.am.

     1      1   
     2         -AM_CFLAGS = -D_LARGE_FILE=1 -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE=1 
            2  +AM_CFLAGS = $(GCOV_FLAGS)
     3      3   
     4      4   INCLUDES = @CFLAGS@
     5      5   INCLUDES += -I$(top_srcdir)/headers
     6         -INCLUDES += -I$(top_srcdir)/epsilon
     7      6   
     8      7   lib_LTLIBRARIES = librasterlite.la 
     9      8   
    10      9   librasterlite_la_SOURCES = \
    11     10        rasterlite_io.c \
    12     11        rasterlite_image.c \
           12  +     rasterlite_aux.c \
           13  +     rasterlite_quantize.c \
    13     14        rasterlite_gif.c \
    14     15        rasterlite_png.c \
    15     16        rasterlite_jpeg.c \
    16     17        rasterlite_tiff.c \
    17         -     rasterlite_wavelet.c \
           18  +     rasterlite_version.c \
    18     19        rasterlite.c
    19     20   
    20         -librasterlite_la_LDFLAGS = -version-info 1:0:0 -no-undefined
           21  +librasterlite_la_LDFLAGS = -version-info 2:0:0 -no-undefined
    21     22   
    22         -librasterlite_la_LIBADD = \
    23         -	../epsilon/libepsilon.la \
    24         -	-lgeotiff -ltiff -ljpeg -lpng -lspatialite -lproj
           23  +librasterlite_la_LIBADD = @LIBSPATIALITE_LIBS@ @LIBPNG_LIBS@ \
           24  +	-lgeotiff -ltiff -ljpeg -lspatialite -lproj
    25     25   
           26  +MOSTLYCLEANFILES = *.gcna *.gcno *.gcda

Changes to lib/Makefile.in.

     1         -# Makefile.in generated by automake 1.10.1 from Makefile.am.
            1  +# Makefile.in generated by automake 1.11.6 from Makefile.am.
     2      2   # @configure_input@
     3      3   
     4      4   # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
     5         -# 2003, 2004, 2005, 2006, 2007, 2008  Free Software Foundation, Inc.
            5  +# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
            6  +# Foundation, Inc.
     6      7   # This Makefile.in is free software; the Free Software Foundation
     7      8   # gives unlimited permission to copy and/or distribute it,
     8      9   # with or without modifications, as long as this notice is preserved.
     9     10   
    10     11   # This program is distributed in the hope that it will be useful,
    11     12   # but WITHOUT ANY WARRANTY, to the extent permitted by law; without
    12     13   # even the implied warranty of MERCHANTABILITY or FITNESS FOR A
    13     14   # PARTICULAR PURPOSE.
    14     15   
    15     16   @SET_MAKE@
    16     17   
    17     18   VPATH = @srcdir@
           19  +am__make_dryrun = \
           20  +  { \
           21  +    am__dry=no; \
           22  +    case $$MAKEFLAGS in \
           23  +      *\\[\ \	]*) \
           24  +        echo 'am--echo: ; @echo "AM"  OK' | $(MAKE) -f - 2>/dev/null \
           25  +          | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
           26  +      *) \
           27  +        for am__flg in $$MAKEFLAGS; do \
           28  +          case $$am__flg in \
           29  +            *=*|--*) ;; \
           30  +            *n*) am__dry=yes; break;; \
           31  +          esac; \
           32  +        done;; \
           33  +    esac; \
           34  +    test $$am__dry = yes; \
           35  +  }
    18     36   pkgdatadir = $(datadir)/@PACKAGE@
    19         -pkglibdir = $(libdir)/@PACKAGE@
    20     37   pkgincludedir = $(includedir)/@PACKAGE@
           38  +pkglibdir = $(libdir)/@PACKAGE@
           39  +pkglibexecdir = $(libexecdir)/@PACKAGE@
    21     40   am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
    22     41   install_sh_DATA = $(install_sh) -c -m 644
    23     42   install_sh_PROGRAM = $(install_sh) -c
    24     43   install_sh_SCRIPT = $(install_sh) -c
    25     44   INSTALL_HEADER = $(INSTALL_DATA)
    26     45   transform = $(program_transform_name)
    27     46   NORMAL_INSTALL = :
................................................................................
    31     50   PRE_UNINSTALL = :
    32     51   POST_UNINSTALL = :
    33     52   build_triplet = @build@
    34     53   host_triplet = @host@
    35     54   subdir = lib
    36     55   DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
    37     56   ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
    38         -am__aclocal_m4_deps = $(top_srcdir)/configure.ac
           57  +am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \
           58  +	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
           59  +	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
           60  +	$(top_srcdir)/configure.ac
    39     61   am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
    40     62   	$(ACLOCAL_M4)
    41     63   mkinstalldirs = $(install_sh) -d
           64  +CONFIG_HEADER = $(top_builddir)/config.h
    42     65   CONFIG_CLEAN_FILES =
           66  +CONFIG_CLEAN_VPATH_FILES =
    43     67   am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
    44     68   am__vpath_adj = case $$p in \
    45     69       $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
    46     70       *) f=$$p;; \
    47     71     esac;
    48         -am__strip_dir = `echo $$p | sed -e 's|^.*/||'`;
           72  +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
           73  +am__install_max = 40
           74  +am__nobase_strip_setup = \
           75  +  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
           76  +am__nobase_strip = \
           77  +  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
           78  +am__nobase_list = $(am__nobase_strip_setup); \
           79  +  for p in $$list; do echo "$$p $$p"; done | \
           80  +  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
           81  +  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
           82  +    if (++n[$$2] == $(am__install_max)) \
           83  +      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
           84  +    END { for (dir in files) print dir, files[dir] }'
           85  +am__base_list = \
           86  +  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
           87  +  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
           88  +am__uninstall_files_from_dir = { \
           89  +  test -z "$$files" \
           90  +    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
           91  +    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
           92  +         $(am__cd) "$$dir" && rm -f $$files; }; \
           93  +  }
    49     94   am__installdirs = "$(DESTDIR)$(libdir)"
    50         -libLTLIBRARIES_INSTALL = $(INSTALL)
    51     95   LTLIBRARIES = $(lib_LTLIBRARIES)
    52         -librasterlite_la_DEPENDENCIES = ../epsilon/libepsilon.la
           96  +librasterlite_la_DEPENDENCIES =
    53     97   am_librasterlite_la_OBJECTS = rasterlite_io.lo rasterlite_image.lo \
    54         -	rasterlite_gif.lo rasterlite_png.lo rasterlite_jpeg.lo \
    55         -	rasterlite_tiff.lo rasterlite_wavelet.lo rasterlite.lo
           98  +	rasterlite_aux.lo rasterlite_quantize.lo rasterlite_gif.lo \
           99  +	rasterlite_png.lo rasterlite_jpeg.lo rasterlite_tiff.lo \
          100  +	rasterlite_version.lo rasterlite.lo
    56    101   librasterlite_la_OBJECTS = $(am_librasterlite_la_OBJECTS)
    57    102   librasterlite_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
    58    103   	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
    59    104   	$(librasterlite_la_LDFLAGS) $(LDFLAGS) -o $@
    60         -DEFAULT_INCLUDES = -I.@am__isrc@
          105  +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
    61    106   depcomp = $(SHELL) $(top_srcdir)/depcomp
    62    107   am__depfiles_maybe = depfiles
          108  +am__mv = mv -f
    63    109   COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
    64    110   	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
    65    111   LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
    66    112   	--mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
    67    113   	$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
    68    114   CCLD = $(CC)
    69    115   LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
    70    116   	--mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
    71    117   	$(LDFLAGS) -o $@
    72    118   SOURCES = $(librasterlite_la_SOURCES)
    73    119   DIST_SOURCES = $(librasterlite_la_SOURCES)
          120  +am__can_run_installinfo = \
          121  +  case $$AM_UPDATE_INFO_DIR in \
          122  +    n|no|NO) false;; \
          123  +    *) (install-info --version) >/dev/null 2>&1;; \
          124  +  esac
    74    125   ETAGS = etags
    75    126   CTAGS = ctags
    76    127   DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
    77    128   ACLOCAL = @ACLOCAL@
    78    129   AMTAR = @AMTAR@
    79    130   AR = @AR@
    80    131   AS = @AS@
................................................................................
    92    143   CXXDEPMODE = @CXXDEPMODE@
    93    144   CXXFLAGS = @CXXFLAGS@
    94    145   CYGPATH_W = @CYGPATH_W@
    95    146   DEFS = @DEFS@
    96    147   DEPDIR = @DEPDIR@
    97    148   DLLTOOL = @DLLTOOL@
    98    149   DSYMUTIL = @DSYMUTIL@
    99         -ECHO = @ECHO@
          150  +DUMPBIN = @DUMPBIN@
   100    151   ECHO_C = @ECHO_C@
   101    152   ECHO_N = @ECHO_N@
   102    153   ECHO_T = @ECHO_T@
   103    154   EGREP = @EGREP@
   104    155   EXEEXT = @EXEEXT@
   105         -F77 = @F77@
   106         -FFLAGS = @FFLAGS@
          156  +FGREP = @FGREP@
   107    157   GREP = @GREP@
   108    158   INSTALL = @INSTALL@
   109    159   INSTALL_DATA = @INSTALL_DATA@
   110    160   INSTALL_PROGRAM = @INSTALL_PROGRAM@
   111    161   INSTALL_SCRIPT = @INSTALL_SCRIPT@
   112    162   INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
          163  +LD = @LD@
   113    164   LDFLAGS = @LDFLAGS@
   114    165   LIBOBJS = @LIBOBJS@
          166  +LIBPNG_CFLAGS = @LIBPNG_CFLAGS@
          167  +LIBPNG_LIBS = @LIBPNG_LIBS@
   115    168   LIBS = @LIBS@
          169  +LIBSPATIALITE_CFLAGS = @LIBSPATIALITE_CFLAGS@
          170  +LIBSPATIALITE_LIBS = @LIBSPATIALITE_LIBS@
   116    171   LIBTOOL = @LIBTOOL@
          172  +LIPO = @LIPO@
   117    173   LN_S = @LN_S@
   118    174   LTLIBOBJS = @LTLIBOBJS@
   119    175   MAINT = @MAINT@
   120    176   MAKEINFO = @MAKEINFO@
          177  +MANIFEST_TOOL = @MANIFEST_TOOL@
   121    178   MKDIR_P = @MKDIR_P@
          179  +NM = @NM@
   122    180   NMEDIT = @NMEDIT@
   123    181   OBJDUMP = @OBJDUMP@
   124    182   OBJEXT = @OBJEXT@
          183  +OTOOL = @OTOOL@
          184  +OTOOL64 = @OTOOL64@
   125    185   PACKAGE = @PACKAGE@
   126    186   PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
   127    187   PACKAGE_NAME = @PACKAGE_NAME@
   128    188   PACKAGE_STRING = @PACKAGE_STRING@
   129    189   PACKAGE_TARNAME = @PACKAGE_TARNAME@
          190  +PACKAGE_URL = @PACKAGE_URL@
   130    191   PACKAGE_VERSION = @PACKAGE_VERSION@
   131    192   PATH_SEPARATOR = @PATH_SEPARATOR@
          193  +PKG_CONFIG = @PKG_CONFIG@
          194  +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
          195  +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
   132    196   RANLIB = @RANLIB@
   133    197   SED = @SED@
   134    198   SET_MAKE = @SET_MAKE@
   135    199   SHELL = @SHELL@
   136    200   STRIP = @STRIP@
   137    201   VERSION = @VERSION@
   138    202   abs_builddir = @abs_builddir@
   139    203   abs_srcdir = @abs_srcdir@
   140    204   abs_top_builddir = @abs_top_builddir@
   141    205   abs_top_srcdir = @abs_top_srcdir@
          206  +ac_ct_AR = @ac_ct_AR@
   142    207   ac_ct_CC = @ac_ct_CC@
   143    208   ac_ct_CXX = @ac_ct_CXX@
   144         -ac_ct_F77 = @ac_ct_F77@
          209  +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
   145    210   am__include = @am__include@
   146    211   am__leading_dot = @am__leading_dot@
   147    212   am__quote = @am__quote@
   148    213   am__tar = @am__tar@
   149    214   am__untar = @am__untar@
   150    215   bindir = @bindir@
   151    216   build = @build@
................................................................................
   180    245   program_transform_name = @program_transform_name@
   181    246   psdir = @psdir@
   182    247   sbindir = @sbindir@
   183    248   sharedstatedir = @sharedstatedir@
   184    249   srcdir = @srcdir@
   185    250   sysconfdir = @sysconfdir@
   186    251   target_alias = @target_alias@
          252  +top_build_prefix = @top_build_prefix@
   187    253   top_builddir = @top_builddir@
   188    254   top_srcdir = @top_srcdir@
   189         -AM_CFLAGS = -D_LARGE_FILE=1 -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE=1 
   190         -INCLUDES = @CFLAGS@ -I$(top_srcdir)/headers -I$(top_srcdir)/epsilon
          255  +AM_CFLAGS = $(GCOV_FLAGS)
          256  +INCLUDES = @CFLAGS@ -I$(top_srcdir)/headers
   191    257   lib_LTLIBRARIES = librasterlite.la 
   192    258   librasterlite_la_SOURCES = \
   193    259        rasterlite_io.c \
   194    260        rasterlite_image.c \
          261  +     rasterlite_aux.c \
          262  +     rasterlite_quantize.c \
   195    263        rasterlite_gif.c \
   196    264        rasterlite_png.c \
   197    265        rasterlite_jpeg.c \
   198    266        rasterlite_tiff.c \
   199         -     rasterlite_wavelet.c \
          267  +     rasterlite_version.c \
   200    268        rasterlite.c
   201    269   
   202         -librasterlite_la_LDFLAGS = -version-info 1:0:0 -no-undefined
   203         -librasterlite_la_LIBADD = \
   204         -	../epsilon/libepsilon.la \
   205         -	-lgeotiff -ltiff -ljpeg -lpng -lspatialite -lproj
          270  +librasterlite_la_LDFLAGS = -version-info 2:0:0 -no-undefined
          271  +librasterlite_la_LIBADD = @LIBSPATIALITE_LIBS@ @LIBPNG_LIBS@ \
          272  +	-lgeotiff -ltiff -ljpeg -lspatialite -lproj
   206    273   
          274  +MOSTLYCLEANFILES = *.gcna *.gcno *.gcda
   207    275   all: all-am
   208    276   
   209    277   .SUFFIXES:
   210    278   .SUFFIXES: .c .lo .o .obj
   211    279   $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps)
   212    280   	@for dep in $?; do \
   213    281   	  case '$(am__configure_deps)' in \
   214    282   	    *$$dep*) \
   215         -	      cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
   216         -		&& exit 0; \
          283  +	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
          284  +	        && { if test -f $@; then exit 0; else break; fi; }; \
   217    285   	      exit 1;; \
   218    286   	  esac; \
   219    287   	done; \
   220         -	echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign  lib/Makefile'; \
   221         -	cd $(top_srcdir) && \
   222         -	  $(AUTOMAKE) --foreign  lib/Makefile
          288  +	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu lib/Makefile'; \
          289  +	$(am__cd) $(top_srcdir) && \
          290  +	  $(AUTOMAKE) --gnu lib/Makefile
   223    291   .PRECIOUS: Makefile
   224    292   Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
   225    293   	@case '$?' in \
   226    294   	  *config.status*) \
   227    295   	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
   228    296   	  *) \
   229    297   	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
................................................................................
   233    301   $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
   234    302   	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
   235    303   
   236    304   $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
   237    305   	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
   238    306   $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
   239    307   	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
          308  +$(am__aclocal_m4_deps):
   240    309   install-libLTLIBRARIES: $(lib_LTLIBRARIES)
   241    310   	@$(NORMAL_INSTALL)
   242         -	test -z "$(libdir)" || $(MKDIR_P) "$(DESTDIR)$(libdir)"
   243         -	@list='$(lib_LTLIBRARIES)'; for p in $$list; do \
          311  +	@list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \
          312  +	list2=; for p in $$list; do \
   244    313   	  if test -f $$p; then \
   245         -	    f=$(am__strip_dir) \
   246         -	    echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(libLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) '$$p' '$(DESTDIR)$(libdir)/$$f'"; \
   247         -	    $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(libLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) "$$p" "$(DESTDIR)$(libdir)/$$f"; \
          314  +	    list2="$$list2 $$p"; \
   248    315   	  else :; fi; \
   249         -	done
          316  +	done; \
          317  +	test -z "$$list2" || { \
          318  +	  echo " $(MKDIR_P) '$(DESTDIR)$(libdir)'"; \
          319  +	  $(MKDIR_P) "$(DESTDIR)$(libdir)" || exit 1; \
          320  +	  echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(libdir)'"; \
          321  +	  $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(libdir)"; \
          322  +	}
   250    323   
   251    324   uninstall-libLTLIBRARIES:
   252    325   	@$(NORMAL_UNINSTALL)
   253         -	@list='$(lib_LTLIBRARIES)'; for p in $$list; do \
   254         -	  p=$(am__strip_dir) \
   255         -	  echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$p'"; \
   256         -	  $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$p"; \
          326  +	@list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \
          327  +	for p in $$list; do \
          328  +	  $(am__strip_dir) \
          329  +	  echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$f'"; \
          330  +	  $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$f"; \
   257    331   	done
   258    332   
   259    333   clean-libLTLIBRARIES:
   260    334   	-test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES)
   261    335   	@list='$(lib_LTLIBRARIES)'; for p in $$list; do \
   262    336   	  dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
   263    337   	  test "$$dir" != "$$p" || dir=.; \
   264    338   	  echo "rm -f \"$${dir}/so_locations\""; \
   265    339   	  rm -f "$${dir}/so_locations"; \
   266    340   	done
   267         -librasterlite.la: $(librasterlite_la_OBJECTS) $(librasterlite_la_DEPENDENCIES) 
          341  +librasterlite.la: $(librasterlite_la_OBJECTS) $(librasterlite_la_DEPENDENCIES) $(EXTRA_librasterlite_la_DEPENDENCIES) 
   268    342   	$(librasterlite_la_LINK) -rpath $(libdir) $(librasterlite_la_OBJECTS) $(librasterlite_la_LIBADD) $(LIBS)
   269    343   
   270    344   mostlyclean-compile:
   271    345   	-rm -f *.$(OBJEXT)
   272    346   
   273    347   distclean-compile:
   274    348   	-rm -f *.tab.c
   275    349   
   276    350   @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rasterlite.Plo@am__quote@
          351  +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rasterlite_aux.Plo@am__quote@
   277    352   @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rasterlite_gif.Plo@am__quote@
   278    353   @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rasterlite_image.Plo@am__quote@
   279    354   @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rasterlite_io.Plo@am__quote@
   280    355   @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rasterlite_jpeg.Plo@am__quote@
   281    356   @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rasterlite_png.Plo@am__quote@
          357  +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rasterlite_quantize.Plo@am__quote@
   282    358   @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rasterlite_tiff.Plo@am__quote@
   283         -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rasterlite_wavelet.Plo@am__quote@
          359  +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rasterlite_version.Plo@am__quote@
   284    360   
   285    361   .c.o:
   286    362   @am__fastdepCC_TRUE@	$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
   287         -@am__fastdepCC_TRUE@	mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
          363  +@am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
   288    364   @AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
   289    365   @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
   290    366   @am__fastdepCC_FALSE@	$(COMPILE) -c $<
   291    367   
   292    368   .c.obj:
   293    369   @am__fastdepCC_TRUE@	$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
   294         -@am__fastdepCC_TRUE@	mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
          370  +@am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
   295    371   @AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
   296    372   @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
   297    373   @am__fastdepCC_FALSE@	$(COMPILE) -c `$(CYGPATH_W) '$<'`
   298    374   
   299    375   .c.lo:
   300    376   @am__fastdepCC_TRUE@	$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
   301         -@am__fastdepCC_TRUE@	mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
          377  +@am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
   302    378   @AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
   303    379   @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
   304    380   @am__fastdepCC_FALSE@	$(LTCOMPILE) -c -o $@ $<
   305    381   
   306    382   mostlyclean-libtool:
   307    383   	-rm -f *.lo
   308    384   
................................................................................
   310    386   	-rm -rf .libs _libs
   311    387   
   312    388   ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
   313    389   	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
   314    390   	unique=`for i in $$list; do \
   315    391   	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
   316    392   	  done | \
   317         -	  $(AWK) '{ files[$$0] = 1; nonemtpy = 1; } \
          393  +	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
   318    394   	      END { if (nonempty) { for (i in files) print i; }; }'`; \
   319    395   	mkid -fID $$unique
   320    396   tags: TAGS
   321    397   
   322    398   TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
   323    399   		$(TAGS_FILES) $(LISP)
   324         -	tags=; \
          400  +	set x; \
   325    401   	here=`pwd`; \
   326    402   	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
   327    403   	unique=`for i in $$list; do \
   328    404   	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
   329    405   	  done | \
   330    406   	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
   331    407   	      END { if (nonempty) { for (i in files) print i; }; }'`; \
   332         -	if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
          408  +	shift; \
          409  +	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
   333    410   	  test -n "$$unique" || unique=$$empty_fix; \
   334         -	  $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
   335         -	    $$tags $$unique; \
          411  +	  if test $$# -gt 0; then \
          412  +	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
          413  +	      "$$@" $$unique; \
          414  +	  else \
          415  +	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
          416  +	      $$unique; \
          417  +	  fi; \
   336    418   	fi
   337    419   ctags: CTAGS
   338    420   CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
   339    421   		$(TAGS_FILES) $(LISP)
   340         -	tags=; \
   341    422   	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
   342    423   	unique=`for i in $$list; do \
   343    424   	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
   344    425   	  done | \
   345    426   	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
   346    427   	      END { if (nonempty) { for (i in files) print i; }; }'`; \
   347         -	test -z "$(CTAGS_ARGS)$$tags$$unique" \
          428  +	test -z "$(CTAGS_ARGS)$$unique" \
   348    429   	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
   349         -	     $$tags $$unique
          430  +	     $$unique
   350    431   
   351    432   GTAGS:
   352    433   	here=`$(am__cd) $(top_builddir) && pwd` \
   353         -	  && cd $(top_srcdir) \
   354         -	  && gtags -i $(GTAGS_ARGS) $$here
          434  +	  && $(am__cd) $(top_srcdir) \
          435  +	  && gtags -i $(GTAGS_ARGS) "$$here"
   355    436   
   356    437   distclean-tags:
   357    438   	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
   358    439   
   359    440   distdir: $(DISTFILES)
   360    441   	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
   361    442   	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
................................................................................
   368    449   			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
   369    450   			   sort -u` ;; \
   370    451   	esac; \
   371    452   	for file in $$dist_files; do \
   372    453   	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
   373    454   	  if test -d $$d/$$file; then \
   374    455   	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
          456  +	    if test -d "$(distdir)/$$file"; then \
          457  +	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
          458  +	    fi; \
   375    459   	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
   376         -	      cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
          460  +	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
          461  +	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
   377    462   	    fi; \
   378         -	    cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
          463  +	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
   379    464   	  else \
   380         -	    test -f $(distdir)/$$file \
   381         -	    || cp -p $$d/$$file $(distdir)/$$file \
          465  +	    test -f "$(distdir)/$$file" \
          466  +	    || cp -p $$d/$$file "$(distdir)/$$file" \
   382    467   	    || exit 1; \
   383    468   	  fi; \
   384    469   	done
   385    470   check-am: all-am
   386    471   check: check-am
   387    472   all-am: Makefile $(LTLIBRARIES)
   388    473   installdirs:
................................................................................
   395    480   uninstall: uninstall-am
   396    481   
   397    482   install-am: all-am
   398    483   	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
   399    484   
   400    485   installcheck: installcheck-am
   401    486   install-strip:
   402         -	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
   403         -	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
   404         -	  `test -z '$(STRIP)' || \
   405         -	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
          487  +	if test -z '$(STRIP)'; then \
          488  +	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
          489  +	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
          490  +	      install; \
          491  +	else \
          492  +	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
          493  +	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
          494  +	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
          495  +	fi
   406    496   mostlyclean-generic:
          497  +	-test -z "$(MOSTLYCLEANFILES)" || rm -f $(MOSTLYCLEANFILES)
   407    498   
   408    499   clean-generic:
   409    500   
   410    501   distclean-generic:
   411    502   	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
          503  +	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
   412    504   
   413    505   maintainer-clean-generic:
   414    506   	@echo "This command is intended for maintainers to use"
   415    507   	@echo "it deletes files that may require special tools to rebuild."
   416    508   clean: clean-am
   417    509   
   418    510   clean-am: clean-generic clean-libLTLIBRARIES clean-libtool \
................................................................................
   425    517   	distclean-tags
   426    518   
   427    519   dvi: dvi-am
   428    520   
   429    521   dvi-am:
   430    522   
   431    523   html: html-am
          524  +
          525  +html-am:
   432    526   
   433    527   info: info-am
   434    528   
   435    529   info-am:
   436    530   
   437    531   install-data-am:
   438    532   
   439    533   install-dvi: install-dvi-am
          534  +
          535  +install-dvi-am:
   440    536   
   441    537   install-exec-am: install-libLTLIBRARIES
   442    538   
   443    539   install-html: install-html-am
          540  +
          541  +install-html-am:
   444    542   
   445    543   install-info: install-info-am
          544  +
          545  +install-info-am:
   446    546   
   447    547   install-man:
   448    548   
   449    549   install-pdf: install-pdf-am
          550  +
          551  +install-pdf-am:
   450    552   
   451    553   install-ps: install-ps-am
          554  +
          555  +install-ps-am:
   452    556   
   453    557   installcheck-am:
   454    558   
   455    559   maintainer-clean: maintainer-clean-am
   456    560   	-rm -rf ./$(DEPDIR)
   457    561   	-rm -f Makefile
   458    562   maintainer-clean-am: distclean-am maintainer-clean-generic
................................................................................
   483    587   	install-html-am install-info install-info-am \
   484    588   	install-libLTLIBRARIES install-man install-pdf install-pdf-am \
   485    589   	install-ps install-ps-am install-strip installcheck \
   486    590   	installcheck-am installdirs maintainer-clean \
   487    591   	maintainer-clean-generic mostlyclean mostlyclean-compile \
   488    592   	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
   489    593   	tags uninstall uninstall-am uninstall-libLTLIBRARIES
          594  +
   490    595   
   491    596   # Tell versions [3.59,3.63) of GNU make to not export all variables.
   492    597   # Otherwise a system limit (for SysV at least) may be exceeded.
   493    598   .NOEXPORT:

Changes to lib/rasterlite.c.

     1      1   /* 
     2      2   / rasterlite.c
     3      3   /
     4      4   / the RasterLite library core 
     5      5   /
     6         -/ version 1.0, 2009 June 1
            6  +/ version 1.1a, 2011 November 12
     7      7   /
     8      8   / Author: Sandro Furieri a.furieri@lqt.it
     9      9   /
    10         -/ Copyright (C) 2009  Alessandro Furieri
           10  +/ ------------------------------------------------------------------------------
           11  +/ 
           12  +/ Version: MPL 1.1/GPL 2.0/LGPL 2.1
           13  +/ 
           14  +/ The contents of this file are subject to the Mozilla Public License Version
           15  +/ 1.1 (the "License"); you may not use this file except in compliance with
           16  +/ the License. You may obtain a copy of the License at
           17  +/ http://www.mozilla.org/MPL/
           18  +/ 
           19  +/ Software distributed under the License is distributed on an "AS IS" basis,
           20  +/ WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
           21  +/ for the specific language governing rights and limitations under the
           22  +/ License.
    11     23   /
    12         -/    This program is free software: you can redistribute it and/or modify
    13         -/    it under the terms of the GNU General Public License as published by
    14         -/    the Free Software Foundation, either version 3 of the License, or
    15         -/    (at your option) any later version.
           24  +/ The Original Code is the RasterLite library
    16     25   /
    17         -/    This program is distributed in the hope that it will be useful,
    18         -/    but WITHOUT ANY WARRANTY; without even the implied warranty of
    19         -/    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    20         -/    GNU General Public License for more details.
           26  +/ The Initial Developer of the Original Code is Alessandro Furieri
           27  +/ 
           28  +/ Portions created by the Initial Developer are Copyright (C) 2009
           29  +/ the Initial Developer. All Rights Reserved.
    21     30   /
    22         -/    You should have received a copy of the GNU General Public License
    23         -/    along with this program.  If not, see <http://www.gnu.org/licenses/>.
    24         -/
           31  +/ Alternatively, the contents of this file may be used under the terms of
           32  +/ either the GNU General Public License Version 2 or later (the "GPL"), or
           33  +/ the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
           34  +/ in which case the provisions of the GPL or the LGPL are applicable instead
           35  +/ of those above. If you wish to allow use of your version of this file only
           36  +/ under the terms of either the GPL or the LGPL, and not to allow others to
           37  +/ use your version of this file under the terms of the MPL, indicate your
           38  +/ decision by deleting the provisions above and replace them with the notice
           39  +/ and other provisions required by the GPL or the LGPL. If you do not delete
           40  +/ the provisions above, a recipient may use your version of this file under
           41  +/ the terms of any one of the MPL, the GPL or the LGPL.
           42  +/ 
    25     43   */
           44  +
           45  +#if defined(_WIN32) && !defined(__MINGW32__)
           46  +/* MSVC strictly requires this include [off_t] */
           47  +#include <sys/types.h>
           48  +#endif
    26     49   
    27     50   #include <stdlib.h>
    28     51   #include <stdio.h>
    29     52   #include <string.h>
    30     53   #include <float.h>
    31     54   #include <math.h>
    32     55   
    33         -#include <geotiff.h>
    34         -#include <xtiffio.h>
    35         -#include <geo_normalize.h>
    36         -#include <geovalues.h>
           56  +#include "rasterlite_tiff_hdrs.h"
    37     57   #include <tiffio.h>
    38     58   
           59  +#ifdef SPATIALITE_AMALGAMATION
    39     60   #include <spatialite/sqlite3.h>
           61  +#else
           62  +#include <sqlite3.h>
           63  +#endif
           64  +
    40     65   #include <spatialite/gaiaexif.h>
    41     66   #include <spatialite/gaiageo.h>
    42     67   #include <spatialite.h>
    43     68   
    44     69   #include "rasterlite.h"
    45     70   #include "rasterlite_internals.h"
    46     71   
................................................................................
   328    353   /* trying to connect SpatiaLite DB */
   329    354       sqlite3 *handle = NULL;
   330    355       int ret;
   331    356       char rasters[512];
   332    357       char meta[512];
   333    358       char sql[1024];
   334    359       int spatialite_rs = 0;
          360  +    int spatialite_legacy_gc = 0;
   335    361       int spatialite_gc = 0;
   336    362       int rs_srid = 0;
   337    363       int auth_name = 0;
   338    364       int auth_srid = 0;
   339    365       int ref_sys_name = 0;
   340    366       int proj4text = 0;
   341    367       int f_table_name = 0;
   342    368       int f_geometry_column = 0;
   343    369       int coord_dimension = 0;
   344    370       int gc_srid = 0;
   345    371       int type = 0;
          372  +    int geometry_type = 0;
   346    373       int spatial_index_enabled = 0;
   347    374       int tbl_rasters = 0;
   348    375       int tbl_meta = 0;
   349    376       const char *name;
   350    377       int i;
   351    378       char **results;
   352    379       int rows;
................................................................................
   378    405   		    f_geometry_column = 1;
   379    406   		if (strcasecmp (name, "coord_dimension") == 0)
   380    407   		    coord_dimension = 1;
   381    408   		if (strcasecmp (name, "srid") == 0)
   382    409   		    gc_srid = 1;
   383    410   		if (strcasecmp (name, "type") == 0)
   384    411   		    type = 1;
          412  +		if (strcasecmp (name, "geometry_type") == 0)
          413  +		    geometry_type = 1;
   385    414   		if (strcasecmp (name, "spatial_index_enabled") == 0)
   386    415   		    spatial_index_enabled = 1;
   387    416   	    }
   388    417         }
   389    418       sqlite3_free_table (results);
   390    419       if (f_table_name && f_geometry_column && type && coord_dimension && gc_srid
   391    420   	&& spatial_index_enabled)
          421  +	spatialite_legacy_gc = 1;
          422  +    if (f_table_name && f_geometry_column && geometry_type && coord_dimension
          423  +	&& gc_srid && spatial_index_enabled)
   392    424   	spatialite_gc = 1;
   393    425   
   394    426   /* checking the SPATIAL_REF_SYS table */
   395    427       strcpy (sql, "PRAGMA table_info(spatial_ref_sys)");
   396    428       ret = sqlite3_get_table (handle, sql, &results, &rows, &columns, NULL);
   397    429       if (ret != SQLITE_OK)
   398    430   	goto unknown;
................................................................................
   416    448   	    }
   417    449         }
   418    450       sqlite3_free_table (results);
   419    451       if (rs_srid && auth_name && auth_srid && ref_sys_name && proj4text)
   420    452   	spatialite_rs = 1;
   421    453   
   422    454   /* verifying the MetaData format */
   423         -    if (spatialite_gc && spatialite_rs)
          455  +    if ((spatialite_legacy_gc || spatialite_gc) && spatialite_rs)
   424    456   	goto check_tables;
   425    457   
   426    458     unknown:
   427    459       if (handle)
   428    460   	sqlite3_close (handle);
   429    461       sprintf (error, "this DB doesn't seems to contain valid Spatial Metadata");
   430    462       return NULL;
................................................................................
   608    640   	free (handle->pixel_y_size);
   609    641       if (handle->tile_count)
   610    642   	free (handle->tile_count);
   611    643       if (handle->stmt_rtree)
   612    644   	sqlite3_finalize (handle->stmt_rtree);
   613    645       if (handle->stmt_plain)
   614    646   	sqlite3_finalize (handle->stmt_plain);
          647  +    if (handle->sqlite_version)
          648  +	free (handle->sqlite_version);
          649  +    if (handle->spatialite_version)
          650  +	free (handle->spatialite_version);
   615    651       if (handle->handle)
   616    652   	sqlite3_close (handle->handle);
   617    653       free (handle);
          654  +    spatialite_cleanup ();
   618    655   }
   619    656   
   620    657   RASTERLITE_DECLARE int
   621    658   rasterliteHasTransparentColor (void *ext_handle)
   622    659   {
   623    660   /* return 1 if the TransparentColor is set; otherwise 0 */
   624    661       rasterlitePtr handle = (rasterlitePtr) ext_handle;
................................................................................
   720    757   	  /* best access strategy: TABLE SCAN */
   721    758   	  *strategy = STRATEGY_PLAIN;
   722    759         }
   723    760       return RASTERLITE_OK;
   724    761   }
   725    762   
   726    763   static void
   727         -mark_gray_rectangle (rasterliteImagePrt output, int base_x, int base_y,
          764  +mark_gray_rectangle (rasterliteImagePtr output, int base_x, int base_y,
   728    765   		     int width, int height)
   729    766   {
   730    767   /* marking a gray rectangle */
   731    768       int x;
   732    769       int y;
   733    770       int dst_x;
   734    771       int dst_y;
................................................................................
   753    790   		else
   754    791   		    image_set_pixel (output, dst_x, dst_y, fill_color);
   755    792   	    }
   756    793         }
   757    794   }
   758    795   
   759    796   static void
   760         -copy_rectangle (rasterliteImagePrt output, rasterliteImagePrt input,
          797  +copy_rectangle (rasterliteImagePtr output, rasterliteImagePtr input,
   761    798   		int transparent_color, int base_x, int base_y)
   762    799   {
   763    800   /* copying a raster rectangle */
   764    801       int x;
   765    802       int y;
   766    803       int dst_x;
   767    804       int dst_y;
................................................................................
   826    863       sqlite3_stmt *stmt;
   827    864       double map_width = (double) width * ext_pixel_x_size;
   828    865       double map_height = (double) height * ext_pixel_y_size;
   829    866       double min_x = cx - (map_width / 2.0);
   830    867       double max_x = cx + (map_width / 2.0);
   831    868       double min_y = cy - (map_height / 2.0);
   832    869       double max_y = cy + (map_height / 2.0);
   833         -    rasterliteImagePrt output = NULL;
          870  +    rasterliteImagePtr output = NULL;
   834    871       reset_error (handle);
   835    872       if (handle->handle == NULL || handle->stmt_rtree == NULL
   836    873   	|| handle->stmt_plain == NULL)
   837    874         {
   838    875   	  sprintf (error, "invalid datasource");
   839    876   	  set_error (handle, error);
   840    877   	  *raster = NULL;
................................................................................
   892    929   	  ret = sqlite3_step (stmt);
   893    930   	  if (ret == SQLITE_DONE)
   894    931   	      break;		/* end of result set */
   895    932   	  if (ret == SQLITE_ROW)
   896    933   	    {
   897    934   		/* retrieving query values */
   898    935   		gaiaGeomCollPtr geom = NULL;
   899         -		rasterliteImagePrt img = NULL;
          936  +		rasterliteImagePtr img = NULL;
   900    937   		if (sqlite3_column_type (stmt, 0) == SQLITE_BLOB)
   901    938   		  {
   902    939   		      /* fetching Geometry */
   903    940   		      const void *blob = sqlite3_column_blob (stmt, 0);
   904    941   		      int blob_size = sqlite3_column_bytes (stmt, 0);
   905    942   		      geom =
   906    943   			  gaiaFromSpatiaLiteBlobWkb ((const unsigned char *)
................................................................................
   933    970   					  ext_pixel_y_size);
   934    971   		      int new_width = (int) pre_width + 1;
   935    972   		      int new_height = (int) pre_height + 1;
   936    973   		      double x = (geom->MinX - min_x) / ext_pixel_x_size;
   937    974   		      double y =
   938    975   			  (double) height -
   939    976   			  ((geom->MaxY - min_y) / ext_pixel_y_size);
   940         -		      if (new_width > (img->sx * 2)
   941         -			  || new_height > (img->sy * 2))
          977  +		      if (new_width > (img->sx * 16)
          978  +			  || new_height > (img->sy * 16))
   942    979   			{
   943    980   			    /* TOO BIG: drawing a gray rectangle */
   944    981   			    mark_gray_rectangle (output, int_round (x),
   945    982   						 int_round (y), new_width,
   946    983   						 new_height);
   947    984   			}
   948    985   		      else
   949    986   			{
   950    987   			    /* resizing the raster tile */
   951    988   			    if (new_width == img->sx && new_height == img->sy)
   952    989   				;
   953    990   			    else
   954    991   			      {
   955         -				  rasterliteImagePrt img2 = img;
          992  +				  rasterliteImagePtr img2 = img;
   956    993   				  img = image_create (new_width, new_height);
   957    994   				  image_resize (img, img2);
   958    995   				  image_destroy (img2);
   959    996   			      }
   960    997   			    /* drawing the raster tile */
   961    998   			    copy_rectangle (output, img,
   962    999   					    handle->transparent_color,
................................................................................
  1167   1204       sqlite3_stmt *stmt;
  1168   1205       double map_width = (double) width * ext_pixel_x_size;
  1169   1206       double map_height = (double) height * ext_pixel_y_size;
  1170   1207       double min_x = cx - (map_width / 2.0);
  1171   1208       double max_x = cx + (map_width / 2.0);
  1172   1209       double min_y = cy - (map_height / 2.0);
  1173   1210       double max_y = cy + (map_height / 2.0);
  1174         -    rasterliteImagePrt output = NULL;
         1211  +    rasterliteImagePtr output = NULL;
  1175   1212       reset_error (handle);
  1176   1213       if (handle->handle == NULL || handle->stmt_rtree == NULL
  1177   1214   	|| handle->stmt_plain == NULL)
  1178   1215         {
  1179   1216   	  sprintf (error, "invalid datasource");
  1180   1217   	  set_error (handle, error);
  1181   1218   	  *raster = NULL;
................................................................................
  1245   1282   	  ret = sqlite3_step (stmt);
  1246   1283   	  if (ret == SQLITE_DONE)
  1247   1284   	      break;		/* end of result set */
  1248   1285   	  if (ret == SQLITE_ROW)
  1249   1286   	    {
  1250   1287   		/* retrieving query values */
  1251   1288   		gaiaGeomCollPtr geom = NULL;
  1252         -		rasterliteImagePrt img = NULL;
         1289  +		rasterliteImagePtr img = NULL;
  1253   1290   		if (sqlite3_column_type (stmt, 0) == SQLITE_BLOB)
  1254   1291   		  {
  1255   1292   		      /* fetching Geometry */
  1256   1293   		      const void *blob = sqlite3_column_blob (stmt, 0);
  1257   1294   		      int blob_size = sqlite3_column_bytes (stmt, 0);
  1258   1295   		      geom =
  1259   1296   			  gaiaFromSpatiaLiteBlobWkb ((const unsigned char *)
................................................................................
  1286   1323   					  ext_pixel_y_size);
  1287   1324   		      int new_width = (int) pre_width + 1;
  1288   1325   		      int new_height = (int) pre_height + 1;
  1289   1326   		      double x = (geom->MinX - min_x) / ext_pixel_x_size;
  1290   1327   		      double y =
  1291   1328   			  (double) height -
  1292   1329   			  ((geom->MaxY - min_y) / ext_pixel_y_size);
  1293         -		      if (new_width > (img->sx * 2)
  1294         -			  || new_height > (img->sy * 2))
         1330  +		      if (new_width > (img->sx * 16)
         1331  +			  || new_height > (img->sy * 16))
  1295   1332   			{
  1296   1333   			    /* TOO BIG: drawing a gray rectangle */
  1297   1334   			    mark_gray_rectangle (output, int_round (x),
  1298   1335   						 int_round (y), new_width,
  1299   1336   						 new_height);
  1300   1337   			}
  1301   1338   		      else
  1302   1339   			{
  1303   1340   			    /* resizing the raster tile */
  1304   1341   			    if (new_width == img->sx && new_height == img->sy)
  1305   1342   				;
  1306   1343   			    else
  1307   1344   			      {
  1308         -				  rasterliteImagePrt img2 = img;
         1345  +				  rasterliteImagePtr img2 = img;
  1309   1346   				  img = image_create (new_width, new_height);
  1310   1347   				  image_resize (img, img2);
  1311   1348   				  image_destroy (img2);
  1312   1349   			      }
  1313   1350   			    /* drawing the raster tile */
  1314   1351   			    copy_rectangle (output, img,
  1315   1352   					    handle->transparent_color,
................................................................................
  1564   1601   RASTERLITE_DECLARE const char *
  1565   1602   rasterliteGetSpatialiteVersion (void *ext_handle)
  1566   1603   {
  1567   1604       rasterlitePtr handle = (rasterlitePtr) ext_handle;
  1568   1605       return handle->spatialite_version;
  1569   1606   }
  1570   1607   
  1571         -RASTERLITE_DECLARE int
  1572         -rasterliteWaveletToPng (const void *blob, int blob_size, void **png_blob,
  1573         -			int *png_size)
  1574         -{
  1575         -/* transforming a Wavelet compressed image into a PNG */
  1576         -    rasterliteImagePrt img;
  1577         -    void *png;
  1578         -    int sz;
  1579         -    img = image_from_wavelet (blob_size, blob);
  1580         -    if (!img)
  1581         -      {
  1582         -	  *png_size = 0;
  1583         -	  *png_blob = NULL;
  1584         -	  return RASTERLITE_ERROR;
  1585         -      }
  1586         -    if (img->color_space == COLORSPACE_GRAYSCALE)
  1587         -	png = image_to_png_grayscale (img, &sz);
  1588         -    else
  1589         -	png = image_to_png_rgb (img, &sz);
  1590         -    *png_size = sz;
  1591         -    *png_blob = png;
  1592         -    return RASTERLITE_OK;
  1593         -}
  1594         -
  1595   1608   RASTERLITE_DECLARE int
  1596   1609   rasterliteExportGeoTiff (void *handle, const char *img_path, void *raster,
  1597   1610   			 int size, double cx, double cy, double pixel_x_size,
  1598   1611   			 double pixel_y_size, int width, int height)
  1599   1612   {
  1600   1613   /* exporting a TIFF as a GeoTIFF */
  1601   1614       double xllcorner;

Added lib/rasterlite_aux.c.

            1  +/* 
            2  +/ rasterlite_aux.c
            3  +/
            4  +/ RAW image helpers
            5  +/
            6  +/ version 1.1a, 2011 November 12
            7  +/
            8  +/ Author: Sandro Furieri a.furieri@lqt.it
            9  +/
           10  +/ ------------------------------------------------------------------------------
           11  +/ 
           12  +/ Version: MPL 1.1/GPL 2.0/LGPL 2.1
           13  +/ 
           14  +/ The contents of this file are subject to the Mozilla Public License Version
           15  +/ 1.1 (the "License"); you may not use this file except in compliance with
           16  +/ the License. You may obtain a copy of the License at
           17  +/ http://www.mozilla.org/MPL/
           18  +/ 
           19  +/ Software distributed under the License is distributed on an "AS IS" basis,
           20  +/ WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
           21  +/ for the specific language governing rights and limitations under the
           22  +/ License.
           23  +/
           24  +/ The Original Code is the RasterLite library
           25  +/
           26  +/ The Initial Developer of the Original Code is Alessandro Furieri
           27  +/ 
           28  +/ Portions created by the Initial Developer are Copyright (C) 2009
           29  +/ the Initial Developer. All Rights Reserved.
           30  +/
           31  +/ Alternatively, the contents of this file may be used under the terms of
           32  +/ either the GNU General Public License Version 2 or later (the "GPL"), or
           33  +/ the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
           34  +/ in which case the provisions of the GPL or the LGPL are applicable instead
           35  +/ of those above. If you wish to allow use of your version of this file only
           36  +/ under the terms of either the GPL or the LGPL, and not to allow others to
           37  +/ use your version of this file under the terms of the MPL, indicate your
           38  +/ decision by deleting the provisions above and replace them with the notice
           39  +/ and other provisions required by the GPL or the LGPL. If you do not delete
           40  +/ the provisions above, a recipient may use your version of this file under
           41  +/ the terms of any one of the MPL, the GPL or the LGPL.
           42  +/ 
           43  +*/
           44  +
           45  +#if defined(_WIN32) && !defined(__MINGW32__)
           46  +/* MSVC strictly requires this include [off_t] */
           47  +#include <sys/types.h>
           48  +#endif
           49  +
           50  +#include <stdlib.h>
           51  +#include <stdio.h>
           52  +#include <string.h>
           53  +#include <float.h>
           54  +#include <math.h>
           55  +
           56  +#ifdef _WIN32
           57  +#include <io.h>
           58  +#else
           59  +#include <unistd.h>
           60  +#endif
           61  +
           62  +#include "rasterlite_tiff_hdrs.h"
           63  +#include <tiffio.h>
           64  +
           65  +#ifdef SPATIALITE_AMALGAMATION
           66  +#include <spatialite/sqlite3.h>
           67  +#else
           68  +#include <sqlite3.h>
           69  +#endif
           70  +
           71  +#include <spatialite/gaiaexif.h>
           72  +#include <spatialite/gaiageo.h>
           73  +#include <spatialite.h>
           74  +
           75  +#include "rasterlite.h"
           76  +#include "rasterlite_internals.h"
           77  +
           78  +RASTERLITE_DECLARE int
           79  +rasterliteJpegBlobToRawImage (const void *blob, int blob_size, int raw_format,
           80  +			      void **raw, int *width, int *height)
           81  +{
           82  +/* decompressing a Jpeg compressed image and returning a RAW image */
           83  +    void *raw_array;
           84  +    int size;
           85  +    rasterliteImagePtr img = NULL;
           86  +    char *errmsg;
           87  +
           88  +    if (raw_format == GAIA_RGB_ARRAY || raw_format == GAIA_RGBA_ARRAY
           89  +	|| raw_format == GAIA_ARGB_ARRAY || raw_format == GAIA_BGR_ARRAY
           90  +	|| raw_format == GAIA_BGRA_ARRAY)
           91  +	;
           92  +    else
           93  +      {
           94  +	  errmsg = "invalid raster RAW format";
           95  +	  goto error;
           96  +      }
           97  +
           98  +    img = image_from_jpeg (blob_size, blob);
           99  +    if (!img)
          100  +      {
          101  +	  errmsg = "Jpeg decoder error";
          102  +	  goto error;
          103  +      }
          104  +
          105  +    if (raw_format == GAIA_RGB_ARRAY)
          106  +      {
          107  +	  raw_array = image_to_rgb_array (img, &size);
          108  +	  if (!raw_array)
          109  +	    {
          110  +		errmsg = "RGB ARRAY generation error";
          111  +		goto error;
          112  +	    }
          113  +      }
          114  +    if (raw_format == GAIA_RGBA_ARRAY)
          115  +      {
          116  +	  raw_array = image_to_rgba_array (-1, img, &size);
          117  +	  if (!raw_array)
          118  +	    {
          119  +		errmsg = "RGBA ARRAY generation error";
          120  +		goto error;
          121  +	    }
          122  +      }
          123  +    if (raw_format == GAIA_ARGB_ARRAY)
          124  +      {
          125  +	  raw_array = image_to_argb_array (-1, img, &size);
          126  +	  if (!raw_array)
          127  +	    {
          128  +		errmsg = "ARGB ARRAY generation error";
          129  +		goto error;
          130  +	    }
          131  +      }
          132  +    if (raw_format == GAIA_BGR_ARRAY)
          133  +      {
          134  +	  raw_array = image_to_bgr_array (img, &size);
          135  +	  if (!raw_array)
          136  +	    {
          137  +		errmsg = "BGR ARRAY generation error";
          138  +		goto error;
          139  +	    }
          140  +      }
          141  +    if (raw_format == GAIA_BGRA_ARRAY)
          142  +      {
          143  +	  raw_array = image_to_bgra_array (-1, img, &size);
          144  +	  if (!raw_array)
          145  +	    {
          146  +		errmsg = "BGRA ARRAY generation error";
          147  +		goto error;
          148  +	    }
          149  +      }
          150  +
          151  +    image_destroy (img);
          152  +    *raw = raw_array;
          153  +    *width = img->sx;
          154  +    *height = img->sy;
          155  +    return RASTERLITE_OK;
          156  +
          157  +  error:
          158  +    fprintf (stderr, "%s\n", errmsg);
          159  +    if (img)
          160  +	image_destroy (img);
          161  +    *raw = NULL;
          162  +    *width = 0;
          163  +    *height = 0;
          164  +    return RASTERLITE_ERROR;
          165  +}
          166  +
          167  +RASTERLITE_DECLARE int
          168  +rasterlitePngBlobToRawImage (const void *blob, int blob_size, int raw_format,
          169  +			     void **raw, int *width, int *height)
          170  +{
          171  +/* decompressing a Png compressed image and returning a RAW image*/
          172  +    void *raw_array;
          173  +    int size;
          174  +    rasterliteImagePtr img = NULL;
          175  +    char *errmsg;
          176  +
          177  +    if (raw_format == GAIA_RGB_ARRAY || raw_format == GAIA_RGBA_ARRAY
          178  +	|| raw_format == GAIA_ARGB_ARRAY || raw_format == GAIA_BGR_ARRAY
          179  +	|| raw_format == GAIA_BGRA_ARRAY)
          180  +	;
          181  +    else
          182  +      {
          183  +	  errmsg = "invalid raster RAW format";
          184  +	  goto error;
          185  +      }
          186  +
          187  +    img = image_from_png (blob_size, blob);
          188  +    if (!img)
          189  +      {
          190  +	  errmsg = "Png decoder error";
          191  +	  goto error;
          192  +      }
          193  +
          194  +    if (raw_format == GAIA_RGB_ARRAY)
          195  +      {
          196  +	  raw_array = image_to_rgb_array (img, &size);
          197  +	  if (!raw_array)
          198  +	    {
          199  +		errmsg = "RGB ARRAY generation error";
          200  +		goto error;
          201  +	    }
          202  +      }
          203  +    if (raw_format == GAIA_RGBA_ARRAY)
          204  +      {
          205  +	  raw_array = image_to_rgba_array (-1, img, &size);
          206  +	  if (!raw_array)
          207  +	    {
          208  +		errmsg = "RGBA ARRAY generation error";
          209  +		goto error;
          210  +	    }
          211  +      }
          212  +    if (raw_format == GAIA_ARGB_ARRAY)
          213  +      {
          214  +	  raw_array = image_to_argb_array (-1, img, &size);
          215  +	  if (!raw_array)
          216  +	    {
          217  +		errmsg = "ARGB ARRAY generation error";
          218  +		goto error;
          219  +	    }
          220  +      }
          221  +    if (raw_format == GAIA_BGR_ARRAY)
          222  +      {
          223  +	  raw_array = image_to_bgr_array (img, &size);
          224  +	  if (!raw_array)
          225  +	    {
          226  +		errmsg = "BGR ARRAY generation error";
          227  +		goto error;
          228  +	    }
          229  +      }
          230  +    if (raw_format == GAIA_BGRA_ARRAY)
          231  +      {
          232  +	  raw_array = image_to_bgra_array (-1, img, &size);
          233  +	  if (!raw_array)
          234  +	    {
          235  +		errmsg = "BGRA ARRAY generation error";
          236  +		goto error;
          237  +	    }
          238  +      }
          239  +
          240  +    image_destroy (img);
          241  +    *raw = raw_array;
          242  +    *width = img->sx;
          243  +    *height = img->sy;
          244  +    return RASTERLITE_OK;
          245  +
          246  +  error:
          247  +    fprintf (stderr, "%s\n", errmsg);
          248  +    if (img)
          249  +	image_destroy (img);
          250  +    *raw = NULL;
          251  +    *width = 0;
          252  +    *height = 0;
          253  +    return RASTERLITE_ERROR;
          254  +}
          255  +
          256  +RASTERLITE_DECLARE int
          257  +rasterliteGifBlobToRawImage (const void *blob, int blob_size, int raw_format,
          258  +			     void **raw, int *width, int *height)
          259  +{
          260  +/* decompressing a GIF compressed image and returning a RAW image */
          261  +    void *raw_array;
          262  +    int size;
          263  +    rasterliteImagePtr img = NULL;
          264  +    char *errmsg;
          265  +
          266  +    if (raw_format == GAIA_RGB_ARRAY || raw_format == GAIA_RGBA_ARRAY
          267  +	|| raw_format == GAIA_ARGB_ARRAY || raw_format == GAIA_BGR_ARRAY
          268  +	|| raw_format == GAIA_BGRA_ARRAY)
          269  +	;
          270  +    else
          271  +      {
          272  +	  errmsg = "invalid raster RAW format";
          273  +	  goto error;
          274  +      }
          275  +
          276  +    img = image_from_gif (blob_size, blob);
          277  +    if (!img)
          278  +      {
          279  +	  errmsg = "Gif decoder error";
          280  +	  goto error;
          281  +      }
          282  +
          283  +    if (raw_format == GAIA_RGB_ARRAY)
          284  +      {
          285  +	  raw_array = image_to_rgb_array (img, &size);
          286  +	  if (!raw_array)
          287  +	    {
          288  +		errmsg = "RGB ARRAY generation error";
          289  +		goto error;
          290  +	    }
          291  +      }
          292  +    if (raw_format == GAIA_RGBA_ARRAY)
          293  +      {
          294  +	  raw_array = image_to_rgba_array (-1, img, &size);
          295  +	  if (!raw_array)
          296  +	    {
          297  +		errmsg = "RGBA ARRAY generation error";
          298  +		goto error;
          299  +	    }
          300  +      }
          301  +    if (raw_format == GAIA_ARGB_ARRAY)
          302  +      {
          303  +	  raw_array = image_to_argb_array (-1, img, &size);
          304  +	  if (!raw_array)
          305  +	    {
          306  +		errmsg = "ARGB ARRAY generation error";
          307  +		goto error;
          308  +	    }
          309  +      }
          310  +    if (raw_format == GAIA_BGR_ARRAY)
          311  +      {
          312  +	  raw_array = image_to_bgr_array (img, &size);
          313  +	  if (!raw_array)
          314  +	    {
          315  +		errmsg = "BGR ARRAY generation error";
          316  +		goto error;
          317  +	    }
          318  +      }
          319  +    if (raw_format == GAIA_BGRA_ARRAY)
          320  +      {
          321  +	  raw_array = image_to_bgra_array (-1, img, &size);
          322  +	  if (!raw_array)
          323  +	    {
          324  +		errmsg = "BGRA ARRAY generation error";
          325  +		goto error;
          326  +	    }
          327  +      }
          328  +
          329  +    image_destroy (img);
          330  +    *raw = raw_array;
          331  +    *width = img->sx;
          332  +    *height = img->sy;
          333  +    return RASTERLITE_OK;
          334  +
          335  +  error:
          336  +    fprintf (stderr, "%s\n", errmsg);
          337  +    if (img)
          338  +	image_destroy (img);
          339  +    *raw = NULL;
          340  +    *width = 0;
          341  +    *height = 0;
          342  +    return RASTERLITE_ERROR;
          343  +}
          344  +
          345  +RASTERLITE_DECLARE int
          346  +rasterliteTiffBlobToRawImage (const void *blob, int blob_size, int raw_format,
          347  +			      void **raw, int *width, int *height)
          348  +{
          349  +/* decoding a TIFF encoded image and returning a RAW image */
          350  +    void *raw_array;
          351  +    int size;
          352  +    rasterliteImagePtr img = NULL;
          353  +    char *errmsg;
          354  +
          355  +    if (raw_format == GAIA_RGB_ARRAY || raw_format == GAIA_RGBA_ARRAY
          356  +	|| raw_format == GAIA_ARGB_ARRAY || raw_format == GAIA_BGR_ARRAY
          357  +	|| raw_format == GAIA_BGRA_ARRAY)
          358  +	;
          359  +    else
          360  +      {
          361  +	  errmsg = "invalid raster RAW format";
          362  +	  goto error;
          363  +      }
          364  +
          365  +    img = image_from_tiff (blob_size, blob);
          366  +    if (!img)
          367  +      {
          368  +	  errmsg = "Tiff decoder error";
          369  +	  goto error;
          370  +      }
          371  +
          372  +    if (raw_format == GAIA_RGB_ARRAY)
          373  +      {
          374  +	  raw_array = image_to_rgb_array (img, &size);
          375  +	  if (!raw_array)
          376  +	    {
          377  +		errmsg = "RGB ARRAY generation error";
          378  +		goto error;
          379  +	    }
          380  +      }
          381  +    if (raw_format == GAIA_RGBA_ARRAY)
          382  +      {
          383  +	  raw_array = image_to_rgba_array (-1, img, &size);
          384  +	  if (!raw_array)
          385  +	    {
          386  +		errmsg = "RGBA ARRAY generation error";
          387  +		goto error;
          388  +	    }
          389  +      }
          390  +    if (raw_format == GAIA_ARGB_ARRAY)
          391  +      {
          392  +	  raw_array = image_to_argb_array (-1, img, &size);
          393  +	  if (!raw_array)
          394  +	    {
          395  +		errmsg = "ARGB ARRAY generation error";
          396  +		goto error;
          397  +	    }
          398  +      }
          399  +    if (raw_format == GAIA_BGR_ARRAY)
          400  +      {
          401  +	  raw_array = image_to_bgr_array (img, &size);
          402  +	  if (!raw_array)
          403  +	    {
          404  +		errmsg = "BGR ARRAY generation error";
          405  +		goto error;
          406  +	    }
          407  +      }
          408  +    if (raw_format == GAIA_BGRA_ARRAY)
          409  +      {
          410  +	  raw_array = image_to_bgra_array (-1, img, &size);
          411  +	  if (!raw_array)
          412  +	    {
          413  +		errmsg = "BGRA ARRAY generation error";
          414  +		goto error;
          415  +	    }
          416  +      }
          417  +
          418  +    image_destroy (img);
          419  +    *raw = raw_array;
          420  +    *width = img->sx;
          421  +    *height = img->sy;
          422  +    return RASTERLITE_OK;
          423  +
          424  +  error:
          425  +    fprintf (stderr, "%s\n", errmsg);
          426  +    if (img)
          427  +	image_destroy (img);
          428  +    *raw = NULL;
          429  +    *width = 0;
          430  +    *height = 0;
          431  +    return RASTERLITE_ERROR;
          432  +}
          433  +
          434  +RASTERLITE_DECLARE int
          435  +rasterliteRawImageToJpegFile (const void *raw, int raw_format, int width,
          436  +			      int height, const char *path, int quality)
          437  +{
          438  +/* exports a RAW image into a JPEG compressed file */
          439  +    rasterliteImagePtr img = NULL;
          440  +    void *blob = NULL;
          441  +    int blob_size;
          442  +    char *errmsg;
          443  +    int err = 0;
          444  +    FILE *out;
          445  +
          446  +    if (raw == NULL)
          447  +      {
          448  +	  errmsg = "NULL RAW image";
          449  +	  goto error;
          450  +      }
          451  +    if (width <= 0 || height <= 0)
          452  +      {
          453  +	  errmsg = "invalid RAW image width/height";
          454  +	  goto error;
          455  +      }
          456  +    if (raw_format == GAIA_RGB_ARRAY || raw_format == GAIA_RGBA_ARRAY
          457  +	|| raw_format == GAIA_ARGB_ARRAY || raw_format == GAIA_BGR_ARRAY
          458  +	|| raw_format == GAIA_BGRA_ARRAY)
          459  +	;
          460  +    else
          461  +      {
          462  +	  errmsg = "invalid raster RAW format";
          463  +	  goto error;
          464  +      }
          465  +    if (raw_format == GAIA_RGB_ARRAY)
          466  +      {
          467  +	  img = image_from_rgb_array (raw, width, height);
          468  +	  if (!img)
          469  +	    {
          470  +		errmsg = "unable to get an image from RGB ARRAY";
          471  +		goto error;
          472  +	    }
          473  +      }
          474  +    if (raw_format == GAIA_RGBA_ARRAY)
          475  +      {
          476  +	  img = image_from_rgba_array (raw, width, height);
          477  +	  if (!img)
          478  +	    {
          479  +		errmsg = "unable to get an image from RGBA ARRAY";
          480  +		goto error;
          481  +	    }
          482  +      }
          483  +    if (raw_format == GAIA_ARGB_ARRAY)
          484  +      {
          485  +	  img = image_from_argb_array (raw, width, height);
          486  +	  if (!img)
          487  +	    {
          488  +		errmsg = "unable to get an image from ARGB ARRAY";
          489  +		goto error;
          490  +	    }
          491  +      }
          492  +    if (raw_format == GAIA_BGR_ARRAY)
          493  +      {
          494  +	  img = image_from_bgr_array (raw, width, height);
          495  +	  if (!img)
          496  +	    {
          497  +		errmsg = "unable to get an image from BGR ARRAY";
          498  +		goto error;
          499  +	    }
          500  +      }
          501  +    if (raw_format == GAIA_BGRA_ARRAY)
          502  +      {
          503  +	  img = image_from_bgra_array (raw, width, height);
          504  +	  if (!img)
          505  +	    {
          506  +		errmsg = "unable to get an image from BGRA ARRAY";
          507  +		goto error;
          508  +	    }
          509  +      }
          510  +
          511  +/* compressing as JPEG */
          512  +    if (is_image_grayscale (img) == RASTERLITE_TRUE)
          513  +	blob = image_to_jpeg_grayscale (img, &blob_size, quality);
          514  +    else
          515  +	blob = image_to_jpeg (img, &blob_size, quality);
          516  +    if (!blob)
          517  +      {
          518  +	  errmsg = "Jpeg encoder error";
          519  +	  goto error;
          520  +      }
          521  +
          522  +/* exporting to file */
          523  +    out = fopen (path, "wb");
          524  +    if (out == NULL)
          525  +      {
          526  +	  errmsg = "Unable to create output image";
          527  +	  goto error;
          528  +      }
          529  +    if (fwrite (blob, 1, blob_size, out) != (size_t) blob_size)
          530  +	err = 1;
          531  +    fclose (out);
          532  +    if (err)
          533  +      {
          534  +	  unlink (path);
          535  +	  goto error;
          536  +      }
          537  +    free (blob);
          538  +    image_destroy (img);
          539  +    return RASTERLITE_OK;
          540  +
          541  +  error:
          542  +    fprintf (stderr, "%s\n", errmsg);
          543  +    if (img)
          544  +	image_destroy (img);
          545  +    if (blob)
          546  +	free (blob);
          547  +    return RASTERLITE_ERROR;
          548  +}
          549  +
          550  +RASTERLITE_DECLARE unsigned char *
          551  +rasterliteRawImageToJpegMemBuf (const void *raw, int raw_format, int width,
          552  +				int height, int *size, int quality)
          553  +{
          554  +/* exports a RAW image into a JPEG compressed memory buffer */
          555  +    rasterliteImagePtr img = NULL;
          556  +    void *blob = NULL;
          557  +    int blob_size;
          558  +    char *errmsg;
          559  +
          560  +    if (raw == NULL)
          561  +      {
          562  +	  errmsg = "NULL RAW image";
          563  +	  goto error;
          564  +      }
          565  +    if (width <= 0 || height <= 0)
          566  +      {
          567  +	  errmsg = "invalid RAW image width/height";
          568  +	  goto error;
          569  +      }
          570  +    if (raw_format == GAIA_RGB_ARRAY || raw_format == GAIA_RGBA_ARRAY
          571  +	|| raw_format == GAIA_ARGB_ARRAY || raw_format == GAIA_BGR_ARRAY
          572  +	|| raw_format == GAIA_BGRA_ARRAY)
          573  +	;
          574  +    else
          575  +      {
          576  +	  errmsg = "invalid raster RAW format";
          577  +	  goto error;
          578  +      }
          579  +    if (raw_format == GAIA_RGB_ARRAY)
          580  +      {
          581  +	  img = image_from_rgb_array (raw, width, height);
          582  +	  if (!img)
          583  +	    {
          584  +		errmsg = "unable to get an image from RGB ARRAY";
          585  +		goto error;
          586  +	    }
          587  +      }
          588  +    if (raw_format == GAIA_RGBA_ARRAY)
          589  +      {
          590  +	  img = image_from_rgba_array (raw, width, height);
          591  +	  if (!img)
          592  +	    {
          593  +		errmsg = "unable to get an image from RGBA ARRAY";
          594  +		goto error;
          595  +	    }
          596  +      }
          597  +    if (raw_format == GAIA_ARGB_ARRAY)
          598  +      {
          599  +	  img = image_from_argb_array (raw, width, height);
          600  +	  if (!img)
          601  +	    {
          602  +		errmsg = "unable to get an image from ARGB ARRAY";
          603  +		goto error;
          604  +	    }
          605  +      }
          606  +    if (raw_format == GAIA_BGR_ARRAY)
          607  +      {
          608  +	  img = image_from_bgr_array (raw, width, height);
          609  +	  if (!img)
          610  +	    {
          611  +		errmsg = "unable to get an image from BGR ARRAY";
          612  +		goto error;
          613  +	    }
          614  +      }
          615  +    if (raw_format == GAIA_BGRA_ARRAY)
          616  +      {
          617  +	  img = image_from_bgra_array (raw, width, height);
          618  +	  if (!img)
          619  +	    {
          620  +		errmsg = "unable to get an image from BGRA ARRAY";
          621  +		goto error;
          622  +	    }
          623  +      }
          624  +
          625  +/* compressing as JPEG */
          626  +    if (is_image_grayscale (img) == RASTERLITE_TRUE)
          627  +	blob = image_to_jpeg_grayscale (img, &blob_size, quality);
          628  +    else
          629  +	blob = image_to_jpeg (img, &blob_size, quality);
          630  +    if (!blob)
          631  +      {
          632  +	  errmsg = "Jpeg encoder error";
          633  +	  goto error;
          634  +      }
          635  +
          636  +/* exporting the memory buffer */
          637  +    image_destroy (img);
          638  +    *size = blob_size;
          639  +    return blob;
          640  +
          641  +  error:
          642  +    fprintf (stderr, "%s\n", errmsg);
          643  +    if (img)
          644  +	image_destroy (img);
          645  +    if (blob)
          646  +	free (blob);
          647  +    *size = 0;
          648  +    return NULL;
          649  +}
          650  +
          651  +RASTERLITE_DECLARE int
          652  +rasterliteRawImageToPngFile (const void *raw, int raw_format, int width,
          653  +			     int height, const char *path)
          654  +{
          655  +/* exports a RAW image into a PNG compressed file */
          656  +    rasterliteImagePtr img = NULL;
          657  +    void *blob = NULL;
          658  +    int blob_size;
          659  +    char *errmsg;
          660  +    int err = 0;
          661  +    FILE *out;
          662  +
          663  +    if (raw == NULL)
          664  +      {
          665  +	  errmsg = "NULL RAW image";
          666  +	  goto error;
          667  +      }
          668  +    if (width <= 0 || height <= 0)
          669  +      {
          670  +	  errmsg = "invalid RAW image width/height";
          671  +	  goto error;
          672  +      }
          673  +    if (raw_format == GAIA_RGB_ARRAY || raw_format == GAIA_RGBA_ARRAY
          674  +	|| raw_format == GAIA_ARGB_ARRAY || raw_format == GAIA_BGR_ARRAY
          675  +	|| raw_format == GAIA_BGRA_ARRAY)
          676  +	;
          677  +    else
          678  +      {
          679  +	  errmsg = "invalid raster RAW format";
          680  +	  goto error;
          681  +      }
          682  +    if (raw_format == GAIA_RGB_ARRAY)
          683  +      {
          684  +	  img = image_from_rgb_array (raw, width, height);
          685  +	  if (!img)
          686  +	    {
          687  +		errmsg = "unable to get an image from RGB ARRAY";
          688  +		goto error;
          689  +	    }
          690  +      }
          691  +    if (raw_format == GAIA_RGBA_ARRAY)
          692  +      {
          693  +	  img = image_from_rgba_array (raw, width, height);
          694  +	  if (!img)
          695  +	    {
          696  +		errmsg = "unable to get an image from RGBA ARRAY";
          697  +		goto error;
          698  +	    }
          699  +      }
          700  +    if (raw_format == GAIA_ARGB_ARRAY)
          701  +      {
          702  +	  img = image_from_argb_array (raw, width, height);
          703  +	  if (!img)
          704  +	    {
          705  +		errmsg = "unable to get an image from ARGB ARRAY";
          706  +		goto error;
          707  +	    }
          708  +      }
          709  +    if (raw_format == GAIA_BGR_ARRAY)
          710  +      {
          711  +	  img = image_from_bgr_array (raw, width, height);
          712  +	  if (!img)
          713  +	    {
          714  +		errmsg = "unable to get an image from BGR ARRAY";
          715  +		goto error;
          716  +	    }
          717  +      }
          718  +    if (raw_format == GAIA_BGRA_ARRAY)
          719  +      {
          720  +	  img = image_from_bgra_array (raw, width, height);
          721  +	  if (!img)
          722  +	    {
          723  +		errmsg = "unable to get an image from BGRA ARRAY";
          724  +		goto error;
          725  +	    }
          726  +      }
          727  +
          728  +/* compressing as PNG */
          729  +    if (is_image_grayscale (img) == RASTERLITE_TRUE)
          730  +	blob = image_to_png_grayscale (img, &blob_size);
          731  +    else if (is_image_palette256 (img) == RASTERLITE_TRUE)
          732  +	blob = image_to_png_palette (img, &blob_size);
          733  +    else
          734  +	blob = image_to_png_rgb (img, &blob_size);
          735  +    if (!blob)
          736  +      {
          737  +	  errmsg = "Png encoder error";
          738  +	  goto error;
          739  +      }
          740  +
          741  +/* exporting to file */
          742  +    out = fopen (path, "wb");
          743  +    if (out == NULL)
          744  +      {
          745  +	  errmsg = "Unable to create output image";
          746  +	  goto error;
          747  +      }
          748  +    if (fwrite (blob, 1, blob_size, out) != (size_t) blob_size)
          749  +	err = 1;
          750  +    fclose (out);
          751  +    if (err)
          752  +      {
          753  +	  unlink (path);
          754  +	  goto error;
          755  +      }
          756  +    free (blob);
          757  +    image_destroy (img);
          758  +    return RASTERLITE_OK;
          759  +
          760  +  error:
          761  +    fprintf (stderr, "%s\n", errmsg);
          762  +    if (img)
          763  +	image_destroy (img);
          764  +    if (blob)
          765  +	free (blob);
          766  +    return RASTERLITE_ERROR;
          767  +}
          768  +
          769  +RASTERLITE_DECLARE unsigned char *
          770  +rasterliteRawImageToPngMemBuf (const void *raw, int raw_format, int width,
          771  +			       int height, int *size)
          772  +{
          773  +/* exports a RAW image into a PNG compressed memory buffer */
          774  +    rasterliteImagePtr img = NULL;
          775  +    void *blob = NULL;
          776  +    int blob_size;
          777  +    char *errmsg;
          778  +
          779  +    if (raw == NULL)
          780  +      {
          781  +	  errmsg = "NULL RAW image";
          782  +	  goto error;
          783  +      }
          784  +    if (width <= 0 || height <= 0)
          785  +      {
          786  +	  errmsg = "invalid RAW image width/height";
          787  +	  goto error;
          788  +      }
          789  +    if (raw_format == GAIA_RGB_ARRAY || raw_format == GAIA_RGBA_ARRAY
          790  +	|| raw_format == GAIA_ARGB_ARRAY || raw_format == GAIA_BGR_ARRAY
          791  +	|| raw_format == GAIA_BGRA_ARRAY)
          792  +	;
          793  +    else
          794  +      {
          795  +	  errmsg = "invalid raster RAW format";
          796  +	  goto error;
          797  +      }
          798  +    if (raw_format == GAIA_RGB_ARRAY)
          799  +      {
          800  +	  img = image_from_rgb_array (raw, width, height);
          801  +	  if (!img)
          802  +	    {
          803  +		errmsg = "unable to get an image from RGB ARRAY";
          804  +		goto error;
          805  +	    }
          806  +      }
          807  +    if (raw_format == GAIA_RGBA_ARRAY)
          808  +      {
          809  +	  img = image_from_rgba_array (raw, width, height);
          810  +	  if (!img)
          811  +	    {
          812  +		errmsg = "unable to get an image from RGBA ARRAY";
          813  +		goto error;
          814  +	    }
          815  +      }
          816  +    if (raw_format == GAIA_ARGB_ARRAY)
          817  +      {
          818  +	  img = image_from_argb_array (raw, width, height);
          819  +	  if (!img)
          820  +	    {
          821  +		errmsg = "unable to get an image from ARGB ARRAY";
          822  +		goto error;
          823  +	    }
          824  +      }
          825  +    if (raw_format == GAIA_BGR_ARRAY)
          826  +      {
          827  +	  img = image_from_bgr_array (raw, width, height);
          828  +	  if (!img)
          829  +	    {
          830  +		errmsg = "unable to get an image from BGR ARRAY";
          831  +		goto error;
          832  +	    }
          833  +      }
          834  +    if (raw_format == GAIA_BGRA_ARRAY)
          835  +      {
          836  +	  img = image_from_bgra_array (raw, width, height);
          837  +	  if (!img)
          838  +	    {
          839  +		errmsg = "unable to get an image from BGRA ARRAY";
          840  +		goto error;
          841  +	    }
          842  +      }
          843  +
          844  +/* compressing as PNG */
          845  +    if (is_image_grayscale (img) == RASTERLITE_TRUE)
          846  +	blob = image_to_png_grayscale (img, &blob_size);
          847  +    else if (is_image_palette256 (img) == RASTERLITE_TRUE)
          848  +	blob = image_to_png_palette (img, &blob_size);
          849  +    else
          850  +	blob = image_to_png_rgb (img, &blob_size);
          851  +    if (!blob)
          852  +      {
          853  +	  errmsg = "Png encoder error";
          854  +	  goto error;
          855  +      }
          856  +
          857  +/* exporting the memory buffer */
          858  +    image_destroy (img);
          859  +    *size = blob_size;
          860  +    return blob;
          861  +
          862  +  error:
          863  +    fprintf (stderr, "%s\n", errmsg);
          864  +    if (img)
          865  +	image_destroy (img);
          866  +    if (blob)
          867  +	free (blob);
          868  +    *size = 0;
          869  +    return NULL;
          870  +}
          871  +
          872  +RASTERLITE_DECLARE int
          873  +rasterliteRawImageToGifFile (const void *raw, int raw_format, int width,
          874  +			     int height, const char *path)
          875  +{
          876  +/* exports a RAW image into a GIF compressed file */
          877  +    rasterliteImagePtr img = NULL;
          878  +    void *blob = NULL;
          879  +    int blob_size;
          880  +    char *errmsg;
          881  +    int err = 0;
          882  +    FILE *out;
          883  +
          884  +    if (raw == NULL)
          885  +      {
          886  +	  errmsg = "NULL RAW image";
          887  +	  goto error;
          888  +      }
          889  +    if (width <= 0 || height <= 0)
          890  +      {
          891  +	  errmsg = "invalid RAW image width/height";
          892  +	  goto error;
          893  +      }
          894  +    if (raw_format == GAIA_RGB_ARRAY || raw_format == GAIA_RGBA_ARRAY
          895  +	|| raw_format == GAIA_ARGB_ARRAY || raw_format == GAIA_BGR_ARRAY
          896  +	|| raw_format == GAIA_BGRA_ARRAY)
          897  +	;
          898  +    else
          899  +      {
          900  +	  errmsg = "invalid raster RAW format";
          901  +	  goto error;
          902  +      }
          903  +    if (raw_format == GAIA_RGB_ARRAY)
          904  +      {
          905  +	  img = image_from_rgb_array (raw, width, height);
          906  +	  if (!img)
          907  +	    {
          908  +		errmsg = "unable to get an image from RGB ARRAY";
          909  +		goto error;
          910  +	    }
          911  +      }
          912  +    if (raw_format == GAIA_RGBA_ARRAY)
          913  +      {
          914  +	  img = image_from_rgba_array (raw, width, height);
          915  +	  if (!img)
          916  +	    {
          917  +		errmsg = "unable to get an image from RGBA ARRAY";
          918  +		goto error;
          919  +	    }
          920  +      }
          921  +    if (raw_format == GAIA_ARGB_ARRAY)
          922  +      {
          923  +	  img = image_from_argb_array (raw, width, height);
          924  +	  if (!img)
          925  +	    {
          926  +		errmsg = "unable to get an image from ARGB ARRAY";
          927  +		goto error;
          928  +	    }
          929  +      }
          930  +    if (raw_format == GAIA_BGR_ARRAY)
          931  +      {
          932  +	  img = image_from_bgr_array (raw, width, height);
          933  +	  if (!img)
          934  +	    {
          935  +		errmsg = "unable to get an image from BGR ARRAY";
          936  +		goto error;
          937  +	    }
          938  +      }
          939  +    if (raw_format == GAIA_BGRA_ARRAY)
          940  +      {
          941  +	  img = image_from_bgra_array (raw, width, height);
          942  +	  if (!img)
          943  +	    {
          944  +		errmsg = "unable to get an image from BGRA ARRAY";
          945  +		goto error;
          946  +	    }
          947  +      }
          948  +
          949  +/* compressing as GIF */
          950  +    if (is_image_palette256 (img) == RASTERLITE_FALSE)
          951  +	image_resample_as_palette256 (img);
          952  +
          953  +    blob = image_to_gif (img, &blob_size);
          954  +    if (!blob)
          955  +      {
          956  +	  errmsg = "Gif encoder error";
          957  +	  goto error;
          958  +      }
          959  +
          960  +/* exporting to file */
          961  +    out = fopen (path, "wb");
          962  +    if (out == NULL)
          963  +      {
          964  +	  errmsg = "Unable to create output image";
          965  +	  goto error;
          966  +      }
          967  +    if (fwrite (blob, 1, blob_size, out) != (size_t) blob_size)
          968  +	err = 1;
          969  +    fclose (out);
          970  +    if (err)
          971  +      {
          972  +	  unlink (path);
          973  +	  goto error;
          974  +      }
          975  +    free (blob);
          976  +    image_destroy (img);
          977  +    return RASTERLITE_OK;
          978  +
          979  +  error:
          980  +    fprintf (stderr, "%s\n", errmsg);
          981  +    if (img)
          982  +	image_destroy (img);
          983  +    if (blob)
          984  +	free (blob);
          985  +    return RASTERLITE_ERROR;
          986  +}
          987  +
          988  +RASTERLITE_DECLARE unsigned char *
          989  +rasterliteRawImageToGifMemBuf (const void *raw, int raw_format, int width,
          990  +			       int height, int *size)
          991  +{
          992  +/* exports a RAW image into a GIF compressed memory buffer */
          993  +    rasterliteImagePtr img = NULL;
          994  +    void *blob = NULL;
          995  +    int blob_size;
          996  +    char *errmsg;
          997  +
          998  +    if (raw == NULL)
          999  +      {
         1000  +	  errmsg = "NULL RAW image";
         1001  +	  goto error;
         1002  +      }
         1003  +    if (width <= 0 || height <= 0)
         1004  +      {
         1005  +	  errmsg = "invalid RAW image width/height";
         1006  +	  goto error;
         1007  +      }
         1008  +    if (raw_format == GAIA_RGB_ARRAY || raw_format == GAIA_RGBA_ARRAY
         1009  +	|| raw_format == GAIA_ARGB_ARRAY || raw_format == GAIA_BGR_ARRAY
         1010  +	|| raw_format == GAIA_BGRA_ARRAY)
         1011  +	;
         1012  +    else
         1013  +      {
         1014  +	  errmsg = "invalid raster RAW format";
         1015  +	  goto error;
         1016  +      }
         1017  +    if (raw_format == GAIA_RGB_ARRAY)
         1018  +      {
         1019  +	  img = image_from_rgb_array (raw, width, height);
         1020  +	  if (!img)
         1021  +	    {
         1022  +		errmsg = "unable to get an image from RGB ARRAY";
         1023  +		goto error;
         1024  +	    }
         1025  +      }
         1026  +    if (raw_format == GAIA_RGBA_ARRAY)
         1027  +      {
         1028  +	  img = image_from_rgba_array (raw, width, height);
         1029  +	  if (!img)
         1030  +	    {
         1031  +		errmsg = "unable to get an image from RGBA ARRAY";
         1032  +		goto error;
         1033  +	    }
         1034  +      }
         1035  +    if (raw_format == GAIA_ARGB_ARRAY)
         1036  +      {
         1037  +	  img = image_from_argb_array (raw, width, height);
         1038  +	  if (!img)
         1039  +	    {
         1040  +		errmsg = "unable to get an image from ARGB ARRAY";
         1041  +		goto error;
         1042  +	    }
         1043  +      }
         1044  +    if (raw_format == GAIA_BGR_ARRAY)
         1045  +      {
         1046  +	  img = image_from_bgr_array (raw, width, height);
         1047  +	  if (!img)
         1048  +	    {
         1049  +		errmsg = "unable to get an image from BGR ARRAY";
         1050  +		goto error;
         1051  +	    }
         1052  +      }
         1053  +    if (raw_format == GAIA_BGRA_ARRAY)
         1054  +      {
         1055  +	  img = image_from_bgra_array (raw, width, height);
         1056  +	  if (!img)
         1057  +	    {
         1058  +		errmsg = "unable to get an image from BGRA ARRAY";
         1059  +		goto error;
         1060  +	    }
         1061  +      }
         1062  +
         1063  +/* compressing as GIF */
         1064  +    if (is_image_palette256 (img) == RASTERLITE_FALSE)
         1065  +	image_resample_as_palette256 (img);
         1066  +
         1067  +    blob = image_to_gif (img, &blob_size);
         1068  +    if (!blob)
         1069  +      {
         1070  +	  errmsg = "Gif encoder error";
         1071  +	  goto error;
         1072  +      }
         1073  +
         1074  +/* exporting the memory buffer */
         1075  +    image_destroy (img);
         1076  +    *size = blob_size;
         1077  +    return blob;
         1078  +
         1079  +  error:
         1080  +    fprintf (stderr, "%s\n", errmsg);
         1081  +    if (img)
         1082  +	image_destroy (img);
         1083  +    if (blob)
         1084  +	free (blob);
         1085  +    *size = 0;
         1086  +    return NULL;
         1087  +}
         1088  +
         1089  +RASTERLITE_DECLARE int
         1090  +rasterliteRawImageToGeoTiffFile (const void *raw, int raw_format, int width,
         1091  +				 int height, const char *path, double x_size,
         1092  +				 double y_size, double xllcorner,
         1093  +				 double yllcorner, const char *proj4text)
         1094  +{
         1095  +/* exports a RAW image into a TIFF encoded file */
         1096  +    rasterliteImagePtr img = NULL;
         1097  +    void *blob = NULL;
         1098  +    int blob_size;
         1099  +    char *errmsg;
         1100  +
         1101  +    if (raw == NULL)
         1102  +      {
         1103  +	  errmsg = "NULL RAW image";
         1104  +	  goto error;
         1105  +      }
         1106  +    if (width <= 0 || height <= 0)
         1107  +      {
         1108  +	  errmsg = "invalid RAW image width/height";
         1109  +	  goto error;
         1110  +      }
         1111  +    if (raw_format == GAIA_RGB_ARRAY || raw_format == GAIA_RGBA_ARRAY
         1112  +	|| raw_format == GAIA_ARGB_ARRAY || raw_format == GAIA_BGR_ARRAY
         1113  +	|| raw_format == GAIA_BGRA_ARRAY)
         1114  +	;
         1115  +    else
         1116  +      {
         1117  +	  errmsg = "invalid raster RAW format";
         1118  +	  goto error;
         1119  +      }
         1120  +    if (raw_format == GAIA_RGB_ARRAY)
         1121  +      {
         1122  +	  img = image_from_rgb_array (raw, width, height);
         1123  +	  if (!img)
         1124  +	    {
         1125  +		errmsg = "unable to get an image from RGB ARRAY";
         1126  +		goto error;
         1127  +	    }
         1128  +      }
         1129  +    if (raw_format == GAIA_RGBA_ARRAY)
         1130  +      {
         1131  +	  img = image_from_rgba_array (raw, width, height);
         1132  +	  if (!img)
         1133  +	    {
         1134  +		errmsg = "unable to get an image from RGBA ARRAY";
         1135  +		goto error;
         1136  +	    }
         1137  +      }
         1138  +    if (raw_format == GAIA_ARGB_ARRAY)
         1139  +      {
         1140  +	  img = image_from_argb_array (raw, width, height);
         1141  +	  if (!img)
         1142  +	    {
         1143  +		errmsg = "unable to get an image from ARGB ARRAY";
         1144  +		goto error;
         1145  +	    }
         1146  +      }
         1147  +    if (raw_format == GAIA_BGR_ARRAY)
         1148  +      {
         1149  +	  img = image_from_bgr_array (raw, width, height);
         1150  +	  if (!img)
         1151  +	    {
         1152  +		errmsg = "unable to get an image from BGR ARRAY";
         1153  +		goto error;
         1154  +	    }
         1155  +      }
         1156  +    if (raw_format == GAIA_BGRA_ARRAY)
         1157  +      {
         1158  +	  img = image_from_bgra_array (raw, width, height);
         1159  +	  if (!img)
         1160  +	    {
         1161  +		errmsg = "unable to get an image from BGRA ARRAY";
         1162  +		goto error;
         1163  +	    }
         1164  +      }
         1165  +
         1166  +/* encoding as TIFF */
         1167  +    if (is_image_monochrome (img) == RASTERLITE_TRUE)
         1168  +	blob = image_to_tiff_fax4 (img, &blob_size);
         1169  +    else if (is_image_grayscale (img) == RASTERLITE_TRUE)
         1170  +	blob = image_to_tiff_grayscale (img, &blob_size);
         1171  +    else if (is_image_palette256 (img) == RASTERLITE_TRUE)
         1172  +	blob = image_to_tiff_palette (img, &blob_size);
         1173  +    else
         1174  +	blob = image_to_tiff_rgb (img, &blob_size);
         1175  +    if (!blob)
         1176  +      {
         1177  +	  errmsg = "Tiff encoder error";
         1178  +	  goto error;
         1179  +      }
         1180  +
         1181  +/* exporting to file as GeoTiff */
         1182  +    if (!write_geotiff
         1183  +	(path, blob, blob_size, x_size, y_size, xllcorner, yllcorner,
         1184  +	 proj4text))
         1185  +      {
         1186  +	  errmsg = "Unable to create output image";
         1187  +	  goto error;
         1188  +      }
         1189  +    free (blob);
         1190  +    image_destroy (img);
         1191  +    return RASTERLITE_OK;
         1192  +
         1193  +  error:
         1194  +    fprintf (stderr, "%s\n", errmsg);
         1195  +    if (img)
         1196  +	image_destroy (img);
         1197  +    if (blob)
         1198  +	free (blob);
         1199  +    return RASTERLITE_ERROR;
         1200  +}
         1201  +
         1202  +RASTERLITE_DECLARE unsigned char *
         1203  +rasterliteRawImageToTiffMemBuf (const void *raw, int raw_format, int width,
         1204  +				int height, int *size)
         1205  +{
         1206  +/* exports a RAW image into a TIFF encoded memory buffer */
         1207  +    rasterliteImagePtr img = NULL;
         1208  +    void *blob = NULL;
         1209  +    int blob_size;
         1210  +    char *errmsg;
         1211  +
         1212  +    if (raw == NULL)
         1213  +      {
         1214  +	  errmsg = "NULL RAW image";
         1215  +	  goto error;
         1216  +      }
         1217  +    if (width <= 0 || height <= 0)
         1218  +      {
         1219  +	  errmsg = "invalid RAW image width/height";
         1220  +	  goto error;
         1221  +      }
         1222  +    if (raw_format == GAIA_RGB_ARRAY || raw_format == GAIA_RGBA_ARRAY
         1223  +	|| raw_format == GAIA_ARGB_ARRAY || raw_format == GAIA_BGR_ARRAY
         1224  +	|| raw_format == GAIA_BGRA_ARRAY)
         1225  +	;
         1226  +    else
         1227  +      {
         1228  +	  errmsg = "invalid raster RAW format";
         1229  +	  goto error;
         1230  +      }
         1231  +    if (raw_format == GAIA_RGB_ARRAY)
         1232  +      {
         1233  +	  img = image_from_rgb_array (raw, width, height);
         1234  +	  if (!img)
         1235  +	    {
         1236  +		errmsg = "unable to get an image from RGB ARRAY";
         1237  +		goto error;
         1238  +	    }
         1239  +      }
         1240  +    if (raw_format == GAIA_RGBA_ARRAY)
         1241  +      {
         1242  +	  img = image_from_rgba_array (raw, width, height);
         1243  +	  if (!img)
         1244  +	    {
         1245  +		errmsg = "unable to get an image from RGBA ARRAY";
         1246  +		goto error;
         1247  +	    }
         1248  +      }
         1249  +    if (raw_format == GAIA_ARGB_ARRAY)
         1250  +      {
         1251  +	  img = image_from_argb_array (raw, width, height);
         1252  +	  if (!img)
         1253  +	    {
         1254  +		errmsg = "unable to get an image from ARGB ARRAY";
         1255  +		goto error;
         1256  +	    }
         1257  +      }
         1258  +    if (raw_format == GAIA_BGR_ARRAY)
         1259  +      {
         1260  +	  img = image_from_bgr_array (raw, width, height);
         1261  +	  if (!img)
         1262  +	    {
         1263  +		errmsg = "unable to get an image from BGR ARRAY";
         1264  +		goto error;
         1265  +	    }
         1266  +      }
         1267  +    if (raw_format == GAIA_BGRA_ARRAY)
         1268  +      {
         1269  +	  img = image_from_bgra_array (raw, width, height);
         1270  +	  if (!img)
         1271  +	    {
         1272  +		errmsg = "unable to get an image from BGRA ARRAY";
         1273  +		goto error;
         1274  +	    }
         1275  +      }
         1276  +
         1277  +/* encoding as TIFF */
         1278  +    if (is_image_monochrome (img) == RASTERLITE_TRUE)
         1279  +	blob = image_to_tiff_fax4 (img, &blob_size);
         1280  +    else if (is_image_grayscale (img) == RASTERLITE_TRUE)
         1281  +	blob = image_to_tiff_grayscale (img, &blob_size);
         1282  +    else if (is_image_palette256 (img) == RASTERLITE_TRUE)
         1283  +	blob = image_to_tiff_palette (img, &blob_size);
         1284  +    else
         1285  +	blob = image_to_tiff_rgb (img, &blob_size);
         1286  +    if (!blob)
         1287  +      {
         1288  +	  errmsg = "Tiff encoder error";
         1289  +	  goto error;
         1290  +      }
         1291  +
         1292  +/* exporting the memory buffer */
         1293  +    image_destroy (img);
         1294  +    *size = blob_size;
         1295  +    return blob;
         1296  +
         1297  +  error:
         1298  +    fprintf (stderr, "%s\n", errmsg);
         1299  +    if (img)
         1300  +	image_destroy (img);
         1301  +    if (blob)
         1302  +	free (blob);
         1303  +    *size = 0;
         1304  +    return NULL;
         1305  +}

Changes to lib/rasterlite_gif.c.

     1      1   /* 
     2      2   / rasterlite_gif.c
     3      3   /
     4      4   / GIF auxiliary helpers
     5      5   /
     6         -/ version 1.0, 2009 June 1
            6  +/ version 1.1a, 2011 November 12
     7      7   /
     8      8   / Author: Sandro Furieri a.furieri@lqt.it
     9      9   /
    10         -/ Copyright (C) 2009  Alessandro Furieri
           10  +/ ------------------------------------------------------------------------------
           11  +/ 
           12  +/ Version: MPL 1.1/GPL 2.0/LGPL 2.1
           13  +/ 
           14  +/ The contents of this file are subject to the Mozilla Public License Version
           15  +/ 1.1 (the "License"); you may not use this file except in compliance with
           16  +/ the License. You may obtain a copy of the License at
           17  +/ http://www.mozilla.org/MPL/
           18  +/ 
           19  +/ Software distributed under the License is distributed on an "AS IS" basis,
           20  +/ WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
           21  +/ for the specific language governing rights and limitations under the
           22  +/ License.
    11     23   /
    12         -/    This program is free software: you can redistribute it and/or modify
    13         -/    it under the terms of the GNU General Public License as published by
    14         -/    the Free Software Foundation, either version 3 of the License, or
    15         -/    (at your option) any later version.
           24  +/ The Original Code is the RasterLite library
    16     25   /
    17         -/    This program is distributed in the hope that it will be useful,
    18         -/    but WITHOUT ANY WARRANTY; without even the implied warranty of
    19         -/    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    20         -/    GNU General Public License for more details.
           26  +/ The Initial Developer of the Original Code is Alessandro Furieri
           27  +/ 
           28  +/ Portions created by the Initial Developer are Copyright (C) 2009
           29  +/ the Initial Developer. All Rights Reserved.
    21     30   /
    22         -/    You should have received a copy of the GNU General Public License
    23         -/    along with this program.  If not, see <http://www.gnu.org/licenses/>.
    24         -/
           31  +/ Alternatively, the contents of this file may be used under the terms of
           32  +/ either the GNU General Public License Version 2 or later (the "GPL"), or
           33  +/ the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
           34  +/ in which case the provisions of the GPL or the LGPL are applicable instead
           35  +/ of those above. If you wish to allow use of your version of this file only
           36  +/ under the terms of either the GPL or the LGPL, and not to allow others to
           37  +/ use your version of this file under the terms of the MPL, indicate your
           38  +/ decision by deleting the provisions above and replace them with the notice
           39  +/ and other provisions required by the GPL or the LGPL. If you do not delete
           40  +/ the provisions above, a recipient may use your version of this file under
           41  +/ the terms of any one of the MPL, the GPL or the LGPL.
           42  +/ 
    25     43   */
           44  +
           45  +#if defined(_WIN32) && !defined(__MINGW32__)
           46  +/* MSVC strictly requires this include [off_t] */
           47  +#include <sys/types.h>
           48  +#endif
    26     49   
    27     50   #include <stdio.h>
    28     51   #include <math.h>
    29     52   #include <string.h>
    30     53   #include <stdlib.h>
    31     54   
    32         -#include <spatialite/sqlite3.h>
    33         -#include <spatialite/gaiageo.h>
    34         -
    35     55   #include <tiffio.h>
    36     56   
           57  +#ifdef SPATIALITE_AMALGAMATION
           58  +#include <spatialite/sqlite3.h>
           59  +#else
           60  +#include <sqlite3.h>
           61  +#endif
           62  +
           63  +#include <spatialite/gaiageo.h>
           64  +
    37     65   #include "rasterlite_internals.h"
    38     66   
    39     67   /* 
    40     68   /
    41     69   / DISCLAIMER:
    42     70   / all the following code merely is an 'ad hoc' adaption
    43     71   / deriving from the original GD lib code
................................................................................
    80    108   
    81    109   #define maxmaxcode ((code_int)1 << GIFBITS)
    82    110   
    83    111   #define HSIZE  5003
    84    112   #define hsize HSIZE
    85    113   
    86    114   #ifdef COMPATIBLE
    87         -# define MAXCODE(n_bits)        ((code_int) 1 << (n_bits) - 1)
          115  +#define MAXCODE(n_bits)        ((code_int) 1 << (n_bits) - 1)
    88    116   #else /*COMPATIBLE*/
    89         -# define MAXCODE(n_bits)        (((code_int) 1 << (n_bits)) - 1)
          117  +#define MAXCODE(n_bits)        (((code_int) 1 << (n_bits)) - 1)
    90    118   #endif /*COMPATIBLE*/
    91    119   #define HashTabOf(i)       ctx->htab[i]
    92    120   #define CodeTabOf(i)    ctx->codetab[i]
    93    121       typedef struct
    94    122   {
    95    123       int Width, Height;
    96    124       int curx, cury;
................................................................................
   364    392   {
   365    393       int rv;
   366    394       rv = LWZReadByte_ (fd, sd, flag, input_code_size, ZeroDataBlockP);
   367    395       return (rv);
   368    396   }
   369    397   
   370    398   static void
   371         -ReadImage (rasterliteImagePrt im, xgdIOCtx * fd, int len, int height,
          399  +ReadImage (rasterliteImagePtr im, xgdIOCtx * fd, int len, int height,
   372    400   	   unsigned char (*cmap)[256], int interlace, int *ZeroDataBlockP)
   373    401   {
   374    402       unsigned char c;
   375    403       int v;
   376    404       int xpos = 0, ypos = 0, pass = 0;
   377    405       int i;
   378    406       int red[256];
................................................................................
   521    549   		      break;
   522    550   		  }
   523    551   	    }
   524    552         }
   525    553   }
   526    554   
   527    555   static int
   528         -GIFNextPixel (rasterliteImagePrt img, GifCtx * ctx)
          556  +GIFNextPixel (rasterliteImagePtr img, GifCtx * ctx)
   529    557   {
   530    558       int r;
   531    559       int **ptpixels = img->pixels;
   532    560       int *pThisRow;
   533    561       if (ctx->CountDown == 0)
   534    562   	return EOF;
   535    563       --(ctx->CountDown);
   536    564   
   537    565       pThisRow = *(ptpixels + ctx->cury);
   538    566       r = *(pThisRow + ctx->curx);
   539    567       BumpPixel (ctx);
   540    568       return r;
   541    569   }
          570  +
   542    571   static void
   543    572   xgdPutC (const unsigned char c, xgdIOCtx * ctx)
   544    573   {
   545    574       (ctx->putC) (ctx, c);
   546    575   }
   547    576   
   548    577   static void
................................................................................
   669    698   {
   670    699       xgdPutC (w & 0xFF, out);
   671    700       xgdPutC ((w >> 8) & 0xFF, out);
   672    701       return 0;
   673    702   }
   674    703   
   675    704   static void
   676         -GIFcompress (int init_bits, xgdIOCtxPtr outfile, rasterliteImagePrt img,
          705  +GIFcompress (int init_bits, xgdIOCtxPtr outfile, rasterliteImagePtr img,
   677    706   	     GifCtx * ctx)
   678    707   {
   679    708   /*
   680    709    * compress stdin to stdout
   681    710    *
   682    711    * Algorithm:  use open addressing double hashing (no chaining) on the
   683    712    * prefix code / next character combination.  We do a variant of Knuth's
................................................................................
   768    797       ++(ctx->out_count);
   769    798       output ((code_int) ctx->EOFCode, ctx);
   770    799   }
   771    800   
   772    801   static void
   773    802   GIFEncode (xgdIOCtxPtr fp, int GWidth, int GHeight, int GInterlace,
   774    803   	   int Background, int Transparent, int BitsPerPixel, int *Red,
   775         -	   int *Green, int *Blue, rasterliteImagePrt img)
          804  +	   int *Green, int *Blue, rasterliteImagePtr img)
   776    805   {
   777    806       int B;
   778    807       int RWidth, RHeight;
   779    808       int LeftOfs, TopOfs;
   780    809       int Resolution;
   781    810       int ColorMapSize;
   782    811       int InitCodeSize;
................................................................................
   858    887       else if (colors <= 128)
   859    888   	bpp = 7;
   860    889       else if (colors <= 256)
   861    890   	bpp = 8;
   862    891       return bpp;
   863    892   }
   864    893   
   865         -static rasterliteImagePrt
          894  +static rasterliteImagePtr
   866    895   xgdImageCreateFromGifCtx (xgdIOCtxPtr fd)
   867    896   {
   868    897       int BitPixel;
   869    898       int Transparent = (-1);
   870    899       unsigned char buf[16];
   871    900       unsigned char c;
   872    901       unsigned char ColorMap[3][MAXCOLORMAPSIZE];
   873    902       unsigned char localColorMap[3][MAXCOLORMAPSIZE];
   874    903       int imw, imh, screen_width, screen_height;
   875    904       int gif87a, useGlobalColormap;
   876    905       int bitPixel;
   877    906       int ZeroDataBlock = FALSE;
   878    907       int haveGlobalColormap;
   879         -    rasterliteImagePrt im = 0;
          908  +    rasterliteImagePtr im = 0;
   880    909       if (!ReadOK (fd, buf, 6))
   881    910         {
   882    911   	  return 0;
   883    912         }
   884    913       if (strncmp ((char *) buf, "GIF", 3) != 0)
   885    914         {
   886    915   	  return 0;
................................................................................
   984   1013         {
   985   1014   	  return 0;
   986   1015         }
   987   1016       return im;
   988   1017   }
   989   1018   
   990   1019   static void
   991         -xgdImageGifCtx (rasterliteImagePrt img, xgdIOCtxPtr out)
         1020  +xgdImageGifCtx (rasterliteImagePtr img, xgdIOCtxPtr out)
   992   1021   {
   993   1022       int BitsPerPixel;
   994   1023       int mapping[256];
   995   1024       int Red[256];
   996   1025       int Green[256];
   997   1026       int Blue[256];
   998   1027       int i, j, colors;
................................................................................
  1024   1053         }
  1025   1054       BitsPerPixel = colorstobpp (colors);
  1026   1055       GIFEncode (out, img->sx, img->sy, 0, 0, -1, BitsPerPixel, Red, Green, Blue,
  1027   1056   	       img);
  1028   1057   }
  1029   1058   
  1030   1059   extern void *
  1031         -image_to_gif (const rasterliteImagePrt img, int *size)
         1060  +image_to_gif (const rasterliteImagePtr img, int *size)
  1032   1061   {
  1033   1062   /* compressing an image as GIF */
  1034   1063       void *rv;
  1035   1064       xgdIOCtx *out = xgdNewDynamicCtx (2048, NULL);
  1036   1065       xgdImageGifCtx (img, out);
  1037   1066       rv = xgdDPExtractData (out, size);
  1038   1067       out->xgd_free (out);
  1039   1068       return rv;
  1040   1069   }
  1041   1070   
  1042         -extern rasterliteImagePrt
         1071  +extern rasterliteImagePtr
  1043   1072   image_from_gif (int size, const void *data)
  1044   1073   {
  1045   1074   /* uncompressing a GIF */
  1046         -    rasterliteImagePrt img;
         1075  +    rasterliteImagePtr img;
  1047   1076       xgdIOCtx *in = xgdNewDynamicCtxEx (size, data, 0);
  1048   1077       img = xgdImageCreateFromGifCtx (in);
  1049   1078       img->color_space = COLORSPACE_PALETTE;
  1050   1079       in->xgd_free (in);
  1051   1080       return img;
  1052   1081   }

Changes to lib/rasterlite_image.c.

     1      1   /* 
     2      2   / rasterlite_image.c
     3      3   /
     4      4   / image methods
     5      5   /
     6         -/ version 1.0, 2009 June 1
            6  +/ version 1.1a, 2011 November 12
     7      7   /
     8      8   / Author: Sandro Furieri a.furieri@lqt.it
     9      9   /
    10         -/ Copyright (C) 2009  Alessandro Furieri
           10  +/ ------------------------------------------------------------------------------
           11  +/ 
           12  +/ Version: MPL 1.1/GPL 2.0/LGPL 2.1
           13  +/ 
           14  +/ The contents of this file are subject to the Mozilla Public License Version
           15  +/ 1.1 (the "License"); you may not use this file except in compliance with
           16  +/ the License. You may obtain a copy of the License at
           17  +/ http://www.mozilla.org/MPL/
           18  +/ 
           19  +/ Software distributed under the License is distributed on an "AS IS" basis,
           20  +/ WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
           21  +/ for the specific language governing rights and limitations under the
           22  +/ License.
    11     23   /
    12         -/    This program is free software: you can redistribute it and/or modify
    13         -/    it under the terms of the GNU General Public License as published by
    14         -/    the Free Software Foundation, either version 3 of the License, or
    15         -/    (at your option) any later version.
           24  +/ The Original Code is the RasterLite library
    16     25   /
    17         -/    This program is distributed in the hope that it will be useful,
    18         -/    but WITHOUT ANY WARRANTY; without even the implied warranty of
    19         -/    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    20         -/    GNU General Public License for more details.
           26  +/ The Initial Developer of the Original Code is Alessandro Furieri
           27  +/ 
           28  +/ Portions created by the Initial Developer are Copyright (C) 2009
           29  +/ the Initial Developer. All Rights Reserved.
    21     30   /
    22         -/    You should have received a copy of the GNU General Public License
    23         -/    along with this program.  If not, see <http://www.gnu.org/licenses/>.
    24         -/
           31  +/ Alternatively, the contents of this file may be used under the terms of
           32  +/ either the GNU General Public License Version 2 or later (the "GPL"), or
           33  +/ the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
           34  +/ in which case the provisions of the GPL or the LGPL are applicable instead
           35  +/ of those above. If you wish to allow use of your version of this file only
           36  +/ under the terms of either the GPL or the LGPL, and not to allow others to
           37  +/ use your version of this file under the terms of the MPL, indicate your
           38  +/ decision by deleting the provisions above and replace them with the notice
           39  +/ and other provisions required by the GPL or the LGPL. If you do not delete
           40  +/ the provisions above, a recipient may use your version of this file under
           41  +/ the terms of any one of the MPL, the GPL or the LGPL.
           42  +/ 
    25     43   */
           44  +
           45  +#if defined(_WIN32) && !defined(__MINGW32__)
           46  +/* MSVC strictly requires this include [off_t] */
           47  +#include <sys/types.h>
           48  +#endif
    26     49   
    27     50   #include <stdio.h>
    28     51   #include <stdlib.h>
    29     52   #include <string.h>
           53  +#include <float.h>
    30     54   #include <limits.h>
    31     55   
    32     56   #include <tiffio.h>
           57  +
           58  +#ifdef SPATIALITE_AMALGAMATION
    33     59   #include <spatialite/sqlite3.h>
           60  +#else
           61  +#include <sqlite3.h>
           62  +#endif
           63  +
    34     64   #include <spatialite/gaiageo.h>
    35     65   
    36     66   #include "rasterlite_internals.h"
    37     67   
    38         -extern rasterliteImagePrt
           68  +extern rasterliteImagePtr
    39     69   image_create (int sx, int sy)
    40     70   {
    41     71   /*
    42     72   / creating a generic RGB image
    43     73   / vaguely inspired by GD lib
    44     74   */
    45     75       int i;
    46     76       int i2;
    47         -    rasterliteImagePrt img;
           77  +    rasterliteImagePtr img;
    48     78       img = malloc (sizeof (rasterliteImage));
    49     79       if (!img)
    50     80   	return NULL;
    51     81       img->pixels = NULL;
    52     82       img->sx = sx;
    53     83       img->sy = sy;
    54     84       img->color_space = COLORSPACE_RGB;
................................................................................
    70    100   		return NULL;
    71    101   	    }
    72    102         }
    73    103       return img;
    74    104   }
    75    105   
    76    106   extern void
    77         -image_destroy (rasterliteImagePrt img)
          107  +image_destroy (rasterliteImagePtr img)
    78    108   {
    79    109   /*
    80    110   / destroying a generic RGB image
    81    111   / vaguely inspired by GD lib
    82    112   */
    83    113       int i;
    84    114       if (img->pixels)
................................................................................
    87    117   	      free (img->pixels[i]);
    88    118   	  free (img->pixels);
    89    119         }
    90    120       free (img);
    91    121   }
    92    122   
    93    123   extern void
    94         -image_fill (const rasterliteImagePrt img, int color)
          124  +image_fill (const rasterliteImagePtr img, int color)
    95    125   {
    96    126   /* filling the image with given color */
    97    127       int x;
    98    128       int y;
    99    129       if (img->pixels)
   100    130         {
   101    131   	  for (y = 0; y < img->sy; y++)
................................................................................
   103    133   		for (x = 0; x < img->sx; x++)
   104    134   		    img->pixels[y][x] = color;
   105    135   	    }
   106    136         }
   107    137   }
   108    138   
   109    139   static void
   110         -shrink_by (const rasterliteImagePrt dst, const rasterliteImagePrt src)
          140  +shrink_by (const rasterliteImagePtr dst, const rasterliteImagePtr src)
   111    141   {
   112    142   /*
   113    143   / this code is widely base upon the original wxWidgets gwxImage wxImage::ShrinkBy(() function
   114    144   */
   115    145       int xFactor = src->sx / dst->sx;
   116    146       int yFactor = src->sy / dst->sy;
   117    147       int x;
   118    148       int y;
   119    149       int x1;
   120    150       int y1;
   121    151       int y_offset;
   122         -    unsigned int avgRed = 0;
   123         -    unsigned int avgGreen = 0;
   124         -    unsigned int avgBlue = 0;
   125         -    unsigned int counter = 0;
          152  +    int x_offset;
   126    153       int pixel;
   127         -    printf ("shrink\n");
   128         -    fflush (stdout);
   129    154       for (y = 0; y < dst->sy; y++)
   130    155         {
   131    156   	  for (x = 0; x < dst->sx; x++)
   132    157   	    {
   133    158   		/* determine average */
          159  +		unsigned int avgRed = 0;
          160  +		unsigned int avgGreen = 0;
          161  +		unsigned int avgBlue = 0;
          162  +		unsigned int counter = 0;
   134    163   		for (y1 = 0; y1 < yFactor; ++y1)
   135    164   		  {
   136    165   		      y_offset = (y * yFactor + y1) * src->sx;
   137    166   		      for (x1 = 0; x1 < xFactor; ++x1)
   138    167   			{
   139         -			    pixel = src->pixels[y1][x1];
          168  +			    x_offset = (x * xFactor) + x1;
          169  +			    pixel = src->pixels[y_offset][x_offset];
   140    170   			    avgRed += true_color_get_red (pixel);
   141    171   			    avgGreen += true_color_get_green (pixel);
   142    172   			    avgBlue += true_color_get_blue (pixel);
   143    173   			    counter++;
   144    174   			}
   145    175   		  }
   146    176   		pixel =
................................................................................
   148    178   				(avgBlue / counter));
   149    179   		dst->pixels[y][x] = pixel;
   150    180   	    }
   151    181         }
   152    182   }
   153    183   
   154    184   extern void
   155         -image_resize (const rasterliteImagePrt dst, const rasterliteImagePrt src)
          185  +image_resize (const rasterliteImagePtr dst, const rasterliteImagePtr src)
   156    186   {
   157    187   /*
   158    188   / this function builds an ordinary quality resized image, applying pixel replication
   159    189   /
   160    190   / this code is widely base upon the original wxWidgets gwxImage wxImage::Scale(() function
   161    191   / wxIMAGE_QUALITY_NORMAL
   162    192   */
................................................................................
   188    218   	  y += y_delta;
   189    219         }
   190    220   }
   191    221   
   192    222   #define floor2(exp) ((long) exp)
   193    223   
   194    224   extern void
   195         -make_thumbnail (const rasterliteImagePrt thumbnail,
   196         -		const rasterliteImagePrt image)
          225  +make_thumbnail (const rasterliteImagePtr thumbnail,
          226  +		const rasterliteImagePtr image)
   197    227   {
   198    228   /*
   199    229   / this function builds an high quality thumbnail image, applying pixel interpolation
   200    230   /
   201    231   / this code is widely base upon the original GD gdImageCopyResampled() function
   202    232   */
   203    233       int x, y;
................................................................................
   289    319   				 true_color ((int) red, (int) green,
   290    320   					     (int) blue));
   291    321   	    }
   292    322         }
   293    323   }
   294    324   
   295    325   extern void *
   296         -image_to_rgb_array (const rasterliteImagePrt img, int *size)
          326  +image_to_rgb_array (const rasterliteImagePtr img, int *size)
   297    327   {
   298    328   /* building a flat RGB array from this image */
   299    329       int x;
   300    330       int y;
   301    331       int pixel;
   302    332       unsigned char *data = NULL;
   303    333       unsigned char *p;
................................................................................
   317    347   	    }
   318    348         }
   319    349       *size = sz;
   320    350       return data;
   321    351   }
   322    352   
   323    353   extern void *
   324         -image_to_rgba_array (int transparent_color, const rasterliteImagePrt img,
          354  +image_to_rgba_array (int transparent_color, const rasterliteImagePtr img,
   325    355   		     int *size)
   326    356   {
   327    357   /* building a flat RGBA array from this image */
   328    358       int x;
   329    359       int y;
   330    360       int pixel;
   331    361       int r;
................................................................................
   358    388   	    }
   359    389         }
   360    390       *size = sz;
   361    391       return data;
   362    392   }
   363    393   
   364    394   extern void *
   365         -image_to_argb_array (int transparent_color, const rasterliteImagePrt img,
          395  +image_to_argb_array (int transparent_color, const rasterliteImagePtr img,
   366    396   		     int *size)
   367    397   {
   368    398   /* building a flat ARGB array from this image */
   369    399       int x;
   370    400       int y;
   371    401       int pixel;
   372    402       int r;
................................................................................
   399    429   	    }
   400    430         }
   401    431       *size = sz;
   402    432       return data;
   403    433   }
   404    434   
   405    435   extern void *
   406         -image_to_bgr_array (const rasterliteImagePrt img, int *size)
          436  +image_to_bgr_array (const rasterliteImagePtr img, int *size)
   407    437   {
   408    438   /* building a flat BGR array from this image */
   409    439       int x;
   410    440       int y;
   411    441       int pixel;
   412    442       unsigned char *data = NULL;
   413    443       unsigned char *p;
................................................................................
   427    457   	    }
   428    458         }
   429    459       *size = sz;
   430    460       return data;
   431    461   }
   432    462   
   433    463   extern void *
   434         -image_to_bgra_array (int transparent_color, const rasterliteImagePrt img,
          464  +image_to_bgra_array (int transparent_color, const rasterliteImagePtr img,
   435    465   		     int *size)
   436    466   {
   437    467   /* building a flat BGRA array from this image */
   438    468       int x;
   439    469       int y;
   440    470       int pixel;
   441    471       int r;
................................................................................
   466    496   		*p++ = r;
   467    497   		*p++ = a;
   468    498   	    }
   469    499         }
   470    500       *size = sz;
   471    501       return data;
   472    502   }
          503  +
          504  +extern rasterliteImagePtr
          505  +image_from_rgb_array (const void *raw, int width, int height)
          506  +{
          507  +/* building an image form this flat RGB array */
          508  +    int x;
          509  +    int y;
          510  +    int r;
          511  +    int g;
          512  +    int b;
          513  +    int pixel;
          514  +    const unsigned char *data = raw;
          515  +    const unsigned char *p;
          516  +    rasterliteImagePtr img = image_create (width, height);
          517  +    if (!img)
          518  +	return NULL;
          519  +    for (y = 0; y < img->sy; y++)
          520  +      {
          521  +	  p = data + (y * (width * 3));
          522  +	  for (x = 0; x < img->sx; x++)
          523  +	    {
          524  +		r = *p++;
          525  +		g = *p++;
          526  +		b = *p++;
          527  +		pixel = true_color (r, g, b);
          528  +		img->pixels[y][x] = pixel;
          529  +	    }
          530  +      }
          531  +    return img;
          532  +}
          533  +
          534  +extern rasterliteImagePtr
          535  +image_from_rgba_array (const void *raw, int width, int height)
          536  +{
          537  +/* building an image form this flat RGBA array */
          538  +    int x;
          539  +    int y;
          540  +    int r;
          541  +    int g;
          542  +    int b;
          543  +    int alpha;
          544  +    int pixel;
          545  +    const unsigned char *data = raw;
          546  +    const unsigned char *p;
          547  +    rasterliteImagePtr img = image_create (width, height);
          548  +    if (!img)
          549  +	return NULL;
          550  +    for (y = 0; y < img->sy; y++)
          551  +      {
          552  +	  p = data + (y * (width * 4));
          553  +	  for (x = 0; x < img->sx; x++)
          554  +	    {
          555  +		r = *p++;
          556  +		g = *p++;
          557  +		b = *p++;
          558  +		alpha = *p++;
          559  +		pixel = true_color (r, g, b);
          560  +		img->pixels[y][x] = pixel;
          561  +	    }
          562  +      }
          563  +    return img;
          564  +}
          565  +
          566  +extern rasterliteImagePtr
          567  +image_from_argb_array (const void *raw, int width, int height)
          568  +{
          569  +/* building an image form this flat ARGB array */
          570  +    int x;
          571  +    int y;
          572  +    int r;
          573  +    int g;
          574  +    int b;
          575  +    int alpha;
          576  +    int pixel;
          577  +    const unsigned char *data = raw;
          578  +    const unsigned char *p;
          579  +    rasterliteImagePtr img = image_create (width, height);
          580  +    if (!img)
          581  +	return NULL;
          582  +    for (y = 0; y < img->sy; y++)
          583  +      {
          584  +	  p = data + (y * (width * 4));
          585  +	  for (x = 0; x < img->sx; x++)
          586  +	    {
          587  +
          588  +		alpha = *p++;
          589  +		r = *p++;
          590  +		g = *p++;
          591  +		b = *p++;
          592  +		pixel = true_color (r, g, b);
          593  +		img->pixels[y][x] = pixel;
          594  +	    }
          595  +      }
          596  +    return img;
          597  +}
          598  +
          599  +extern rasterliteImagePtr
          600  +image_from_bgr_array (const void *raw, int width, int height)
          601  +{
          602  +/* building an image form this flat BGR array */
          603  +    int x;
          604  +    int y;
          605  +    int r;
          606  +    int g;
          607  +    int b;
          608  +    int pixel;
          609  +    const unsigned char *data = raw;
          610  +    const unsigned char *p;
          611  +    rasterliteImagePtr img = image_create (width, height);
          612  +    if (!img)
          613  +	return NULL;
          614  +    for (y = 0; y < img->sy; y++)
          615  +      {
          616  +	  p = data + (y * (width * 3));
          617  +	  for (x = 0; x < img->sx; x++)
          618  +	    {
          619  +		b = *p++;
          620  +		g = *p++;
          621  +		r = *p++;
          622  +		pixel = true_color (r, g, b);
          623  +		img->pixels[y][x] = pixel;
          624  +	    }
          625  +      }
          626  +    return img;
          627  +}
          628  +
          629  +extern rasterliteImagePtr
          630  +image_from_bgra_array (const void *raw, int width, int height)
          631  +{
          632  +/* building an image form this flat BGRA array */
          633  +    int x;
          634  +    int y;
          635  +    int r;
          636  +    int g;
          637  +    int b;
          638  +    int alpha;
          639  +    int pixel;
          640  +    const unsigned char *data = raw;
          641  +    const unsigned char *p;
          642  +    rasterliteImagePtr img = image_create (width, height);
          643  +    if (!img)
          644  +	return NULL;
          645  +    for (y = 0; y < img->sy; y++)
          646  +      {
          647  +	  p = data + (y * (width * 4));
          648  +	  for (x = 0; x < img->sx; x++)
          649  +	    {
          650  +		b = *p++;
          651  +		g = *p++;
          652  +		r = *p++;
          653  +		alpha = *p++;
          654  +		pixel = true_color (r, g, b);
          655  +		img->pixels[y][x] = pixel;
          656  +	    }
          657  +      }
          658  +    return img;
          659  +}
          660  +
          661  +extern int
          662  +is_image_monochrome (const rasterliteImagePtr img)
          663  +{
          664  +/* checking if this Image is into the Monochrome colorspace */
          665  +    int x;
          666  +    int y;
          667  +    int pixel;
          668  +    int r;
          669  +    int g;
          670  +    int b;
          671  +    for (y = 0; y < img->sy; y++)
          672  +      {
          673  +	  for (x = 0; x < img->sx; x++)
          674  +	    {
          675  +		pixel = img->pixels[y][x];
          676  +		r = true_color_get_red (pixel);
          677  +		g = true_color_get_green (pixel);
          678  +		b = true_color_get_blue (pixel);
          679  +		if (r == 0 && g == 0 && b == 0)
          680  +		    continue;
          681  +		if (r == 255 && g == 255 && b == 255)
          682  +		    continue;
          683  +		return RASTERLITE_FALSE;
          684  +	    }
          685  +      }
          686  +    return RASTERLITE_TRUE;
          687  +}
          688  +
          689  +extern int
          690  +is_image_grayscale (const rasterliteImagePtr img)
          691  +{
          692  +/* checking if this Image is into the GrayScale colorspace */
          693  +    int x;
          694  +    int y;
          695  +    int pixel;
          696  +    int r;
          697  +    int g;
          698  +    int b;
          699  +    for (y = 0; y < img->sy; y++)
          700  +      {
          701  +	  for (x = 0; x < img->sx; x++)
          702  +	    {
          703  +		pixel = img->pixels[y][x];
          704  +		r = true_color_get_red (pixel);
          705  +		g = true_color_get_green (pixel);
          706  +		b = true_color_get_blue (pixel);
          707  +		if (r == g && r == b)
          708  +		    continue;
          709  +		return RASTERLITE_FALSE;
          710  +	    }
          711  +      }
          712  +    return RASTERLITE_TRUE;
          713  +}
          714  +
          715  +static void
          716  +palette_init (int *palette)
          717  +{
          718  +/* initializing an empty palette */
          719  +    int x;
          720  +    for (x = 0; x < 256; x++)
          721  +	palette[x] = INT_MAX;
          722  +}
          723  +
          724  +static int
          725  +palette_check (int *palette, int pixel)
          726  +{
          727  +    int x;
          728  +    for (x = 0; x < 256; x++)
          729  +      {
          730  +	  if (palette[x] == pixel)
          731  +	      return RASTERLITE_TRUE;
          732  +	  if (palette[x] == INT_MAX)
          733  +	    {
          734  +		palette[x] = pixel;
          735  +		return RASTERLITE_TRUE;
          736  +	    }
          737  +      }
          738  +    return RASTERLITE_FALSE;
          739  +}
          740  +
          741  +extern int
          742  +is_image_palette256 (const rasterliteImagePtr img)
          743  +{
          744  +/* checking if this Image may be represented using a 256 colors palette */
          745  +    int x;
          746  +    int y;
          747  +    int pixel;
          748  +    int palette[256];
          749  +    palette_init (palette);
          750  +    for (y = 0; y < img->sy; y++)
          751  +      {
          752  +	  for (x = 0; x < img->sx; x++)
          753  +	    {
          754  +		pixel = img->pixels[y][x];
          755  +		if (palette_check (palette, pixel) == RASTERLITE_TRUE)
          756  +		    continue;
          757  +		return RASTERLITE_FALSE;
          758  +	    }
          759  +      }
          760  +    return RASTERLITE_TRUE;
          761  +}

Changes to lib/rasterlite_io.c.

     1      1   /* 
     2      2   / rasterlite_io.c
     3      3   /
     4      4   / IO helper methods
     5      5   /
     6         -/ version 1.0, 2009 June 1
            6  +/ version 1.1a, 2011 November 12
     7      7   /
     8      8   / Author: Sandro Furieri a.furieri@lqt.it
     9      9   /
    10         -/ Copyright (C) 2009  Alessandro Furieri
           10  +/ ------------------------------------------------------------------------------
           11  +/ 
           12  +/ Version: MPL 1.1/GPL 2.0/LGPL 2.1
           13  +/ 
           14  +/ The contents of this file are subject to the Mozilla Public License Version
           15  +/ 1.1 (the "License"); you may not use this file except in compliance with
           16  +/ the License. You may obtain a copy of the License at
           17  +/ http://www.mozilla.org/MPL/
           18  +/ 
           19  +/ Software distributed under the License is distributed on an "AS IS" basis,
           20  +/ WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
           21  +/ for the specific language governing rights and limitations under the
           22  +/ License.
    11     23   /
    12         -/    This program is free software: you can redistribute it and/or modify
    13         -/    it under the terms of the GNU General Public License as published by
    14         -/    the Free Software Foundation, either version 3 of the License, or
    15         -/    (at your option) any later version.
           24  +/ The Original Code is the RasterLite library
    16     25   /
    17         -/    This program is distributed in the hope that it will be useful,
    18         -/    but WITHOUT ANY WARRANTY; without even the implied warranty of
    19         -/    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    20         -/    GNU General Public License for more details.
           26  +/ The Initial Developer of the Original Code is Alessandro Furieri
           27  +/ 
           28  +/ Portions created by the Initial Developer are Copyright (C) 2009
           29  +/ the Initial Developer. All Rights Reserved.
    21     30   /
    22         -/    You should have received a copy of the GNU General Public License
    23         -/    along with this program.  If not, see <http://www.gnu.org/licenses/>.
    24         -/
           31  +/ Alternatively, the contents of this file may be used under the terms of
           32  +/ either the GNU General Public License Version 2 or later (the "GPL"), or
           33  +/ the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
           34  +/ in which case the provisions of the GPL or the LGPL are applicable instead
           35  +/ of those above. If you wish to allow use of your version of this file only
           36  +/ under the terms of either the GPL or the LGPL, and not to allow others to
           37  +/ use your version of this file under the terms of the MPL, indicate your
           38  +/ decision by deleting the provisions above and replace them with the notice
           39  +/ and other provisions required by the GPL or the LGPL. If you do not delete
           40  +/ the provisions above, a recipient may use your version of this file under
           41  +/ the terms of any one of the MPL, the GPL or the LGPL.
           42  +/ 
    25     43   */
           44  +
           45  +#if defined(_WIN32) && !defined(__MINGW32__)
           46  +/* MSVC strictly requires this include [off_t] */
           47  +#include <sys/types.h>
           48  +#endif
    26     49   
    27     50   #include <stdio.h>
    28     51   #include <stdlib.h>
    29     52   #include <string.h>
    30     53   #include <limits.h>
    31     54   
    32     55   #include <tiffio.h>
           56  +
           57  +#ifdef SPATIALITE_AMALGAMATION
    33     58   #include <spatialite/sqlite3.h>
           59  +#else
           60  +#include <sqlite3.h>
           61  +#endif
           62  +
    34     63   #include <spatialite/gaiageo.h>
    35     64   
    36     65   #include "rasterlite_internals.h"
    37     66   
    38     67   #define TRUE 1
    39     68   #define FALSE 0
    40     69   

Changes to lib/rasterlite_jpeg.c.

     1      1   /* 
     2      2   / rasterlite_jpeg.c
     3      3   /
     4      4   / JPEG auxiliary helpers
     5      5   /
     6         -/ version 1.0, 2009 June 1
            6  +/ version 1.1a, 2011 November 12
     7      7   /
     8      8   / Author: Sandro Furieri a.furieri@lqt.it
     9      9   /
    10         -/ Copyright (C) 2009  Alessandro Furieri
           10  +/ ------------------------------------------------------------------------------
           11  +/ 
           12  +/ Version: MPL 1.1/GPL 2.0/LGPL 2.1
           13  +/ 
           14  +/ The contents of this file are subject to the Mozilla Public License Version
           15  +/ 1.1 (the "License"); you may not use this file except in compliance with
           16  +/ the License. You may obtain a copy of the License at
           17  +/ http://www.mozilla.org/MPL/
           18  +/ 
           19  +/ Software distributed under the License is distributed on an "AS IS" basis,
           20  +/ WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
           21  +/ for the specific language governing rights and limitations under the
           22  +/ License.
    11     23   /
    12         -/    This program is free software: you can redistribute it and/or modify
    13         -/    it under the terms of the GNU General Public License as published by
    14         -/    the Free Software Foundation, either version 3 of the License, or
    15         -/    (at your option) any later version.
           24  +/ The Original Code is the RasterLite library
    16     25   /
    17         -/    This program is distributed in the hope that it will be useful,
    18         -/    but WITHOUT ANY WARRANTY; without even the implied warranty of
    19         -/    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    20         -/    GNU General Public License for more details.
           26  +/ The Initial Developer of the Original Code is Alessandro Furieri
           27  +/ 
           28  +/ Portions created by the Initial Developer are Copyright (C) 2009
           29  +/ the Initial Developer. All Rights Reserved.
    21     30   /
    22         -/    You should have received a copy of the GNU General Public License
    23         -/    along with this program.  If not, see <http://www.gnu.org/licenses/>.
    24         -/
           31  +/ Alternatively, the contents of this file may be used under the terms of
           32  +/ either the GNU General Public License Version 2 or later (the "GPL"), or
           33  +/ the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
           34  +/ in which case the provisions of the GPL or the LGPL are applicable instead
           35  +/ of those above. If you wish to allow use of your version of this file only
           36  +/ under the terms of either the GPL or the LGPL, and not to allow others to
           37  +/ use your version of this file under the terms of the MPL, indicate your
           38  +/ decision by deleting the provisions above and replace them with the notice
           39  +/ and other provisions required by the GPL or the LGPL. If you do not delete
           40  +/ the provisions above, a recipient may use your version of this file under
           41  +/ the terms of any one of the MPL, the GPL or the LGPL.
           42  +/ 
    25     43   */
           44  +
           45  +#if defined(_WIN32) && !defined(__MINGW32__)
           46  +/* MSVC strictly requires this include [off_t] */
           47  +#include <sys/types.h>
           48  +#endif
    26     49   
    27     50   #include <stdio.h>
    28     51   #include <stdlib.h>
    29     52   #include <setjmp.h>
    30     53   #include <limits.h>
    31     54   #include <string.h>
    32     55   
    33         -#include <spatialite/sqlite3.h>
    34         -#include <spatialite/gaiageo.h>
    35         -
    36     56   #include <tiffio.h>
    37         -
    38     57   #include <jpeglib.h>
    39     58   #include <jerror.h>
    40     59   
           60  +#ifdef SPATIALITE_AMALGAMATION
           61  +#include <spatialite/sqlite3.h>
           62  +#else
           63  +#include <sqlite3.h>
           64  +#endif
           65  +
           66  +#include <spatialite/gaiageo.h>
           67  +
    41     68   #include "rasterlite_internals.h"
    42     69   
    43     70   /* 
    44     71   /
    45     72   / DISCLAIMER:
    46     73   / all the following code merely is an 'ad hoc' adaption
    47     74   / deriving from the original GD lib code
................................................................................
   107    134   	  fprintf (stderr, "jpeg-wrappeg: EXTREMELY fatal error: jmpbuf"
   108    135   		   " unrecoverable; terminating\n");
   109    136         }
   110    137       fflush (stderr);
   111    138       exit (99);
   112    139   }
   113    140   
   114         -void
          141  +static void
   115    142   init_source (j_decompress_ptr cinfo)
   116    143   {
   117    144       my_src_ptr src = (my_src_ptr) cinfo->src;
   118    145       src->start_of_file = TRUE;
   119    146   }
   120    147   
   121    148   #define END_JPEG_SEQUENCE "\r\n[*]--:END JPEG:--[*]\r\n"
   122         -safeboolean
          149  +static safeboolean
   123    150   fill_input_buffer (j_decompress_ptr cinfo)
   124    151   {
   125    152       my_src_ptr src = (my_src_ptr) cinfo->src;
   126    153       int nbytes = 0;
   127    154       memset (src->buffer, 0, INPUT_BUF_SIZE);
   128    155       while (nbytes < INPUT_BUF_SIZE)
   129    156         {
................................................................................
   151    178         }
   152    179       src->pub.next_input_byte = src->buffer;
   153    180       src->pub.bytes_in_buffer = nbytes;
   154    181       src->start_of_file = FALSE;
   155    182       return TRUE;
   156    183   }
   157    184   
   158         -void
          185  +static void
   159    186   skip_input_data (j_decompress_ptr cinfo, long num_bytes)
   160    187   {
   161    188       my_src_ptr src = (my_src_ptr) cinfo->src;
   162    189       if (num_bytes > 0)
   163    190         {
   164    191   	  while (num_bytes > (long) src->pub.bytes_in_buffer)
   165    192   	    {
................................................................................
   167    194   		(void) fill_input_buffer (cinfo);
   168    195   	    }
   169    196   	  src->pub.next_input_byte += (size_t) num_bytes;
   170    197   	  src->pub.bytes_in_buffer -= (size_t) num_bytes;
   171    198         }
   172    199   }
   173    200   
   174         -void
          201  +static void
   175    202   term_source (j_decompress_ptr cinfo)
   176    203   {
   177    204       if (cinfo)
   178    205   	return;			/* does absolutely nothing - required in order to suppress warnings */
   179    206   }
   180    207   
   181    208   static void
................................................................................
   255    282       dest->pub.init_destination = init_destination;
   256    283       dest->pub.empty_output_buffer = empty_output_buffer;
   257    284       dest->pub.term_destination = term_destination;
   258    285       dest->outfile = outfile;
   259    286   }
   260    287   
   261    288   static void
   262         -xgdImageJpegCtx (rasterliteImagePrt img, xgdIOCtx * outfile, int quality,
          289  +xgdImageJpegCtx (rasterliteImagePtr img, xgdIOCtx * outfile, int quality,
   263    290   		 int mode)
   264    291   {
   265    292       struct jpeg_compress_struct cinfo;
   266    293       struct jpeg_error_mgr jerr;
   267    294       int i, j, jidx;
   268    295       volatile JSAMPROW row = 0;
   269    296       JSAMPROW rowptr[1];
................................................................................
   368    395   	  k = 255 - k;
   369    396         }
   370    397       return true_color ((255 - c) * (255 - k) / 255,
   371    398   		       (255 - m) * (255 - k) / 255,
   372    399   		       (255 - y) * (255 - k) / 255);
   373    400   }
   374    401   
   375         -static rasterliteImagePrt
          402  +static rasterliteImagePtr
   376    403   xgdImageCreateFromJpegCtx (xgdIOCtx * infile)
   377    404   {
   378    405       struct jpeg_decompress_struct cinfo;
   379    406       struct jpeg_error_mgr jerr;
   380    407       jmpbuf_wrapper jmpbufw;
   381    408       volatile JSAMPROW row = 0;
   382         -    volatile rasterliteImagePrt img = 0;
          409  +    volatile rasterliteImagePtr img = 0;
   383    410       JSAMPROW rowptr[1];
   384    411       int i, j, retval;
   385    412       JDIMENSION nrows;
   386    413       int channels = 3;
   387    414       int inverted = 0;
   388    415       memset (&cinfo, 0, sizeof (cinfo));
   389    416       memset (&jerr, 0, sizeof (jerr));
................................................................................
   390    417       cinfo.err = jpeg_std_error (&jerr);
   391    418       cinfo.client_data = &jmpbufw;
   392    419       if (setjmp (jmpbufw.jmpbuf) != 0)
   393    420         {
   394    421   	  if (row)
   395    422   	      free (row);
   396    423   	  if (img)
   397         -	      image_destroy ((rasterliteImagePrt) img);
          424  +	      image_destroy ((rasterliteImagePtr) img);
   398    425   	  return 0;
   399    426         }
   400    427       cinfo.err->error_exit = fatal_jpeg_error;
   401    428       jpeg_create_decompress (&cinfo);
   402    429       jpeg_xgdIOCtx_src (&cinfo, infile);
   403    430       jpeg_save_markers (&cinfo, JPEG_APP0 + 14, 256);
   404    431       retval = jpeg_read_header (&cinfo, TRUE);
................................................................................
   569    596   	    }
   570    597         }
   571    598       if (jpeg_finish_decompress (&cinfo) != TRUE)
   572    599   	fprintf (stderr,
   573    600   		 "jpeg-wrapper: warning: jpeg_finish_decompress reports suspended data source\n");
   574    601       jpeg_destroy_decompress (&cinfo);
   575    602       free (row);
   576         -    return (rasterliteImagePrt) img;
          603  +    return (rasterliteImagePtr) img;
   577    604     error:
   578    605       jpeg_destroy_decompress (&cinfo);
   579    606       if (row)
   580    607   	free (row);
   581    608       if (img)
   582         -	image_destroy ((rasterliteImagePrt) img);
          609  +	image_destroy ((rasterliteImagePtr) img);
   583    610       return 0;
   584    611   }
   585    612   
   586    613   extern void *
   587         -image_to_jpeg (const rasterliteImagePrt img, int *size, int quality)
          614  +image_to_jpeg (const rasterliteImagePtr img, int *size, int quality)
   588    615   {
   589    616   /* compressing an image as JPEG RGB */
   590    617       void *rv;
   591    618       xgdIOCtx *out = xgdNewDynamicCtx (2048, NULL);
   592    619       xgdImageJpegCtx (img, out, quality, IMAGE_JPEG_RGB);
   593    620       rv = xgdDPExtractData (out, size);
   594    621       out->xgd_free (out);
   595    622       return rv;
   596    623   }
   597    624   
   598    625   extern void *
   599         -image_to_jpeg_grayscale (const rasterliteImagePrt img, int *size, int quality)
          626  +image_to_jpeg_grayscale (const rasterliteImagePtr img, int *size, int quality)
   600    627   {
   601    628   /* compressing an image as JPEG GRAYSCALE */
   602    629       void *rv;
   603    630       xgdIOCtx *out = xgdNewDynamicCtx (2048, NULL);
   604    631       xgdImageJpegCtx (img, out, quality, IMAGE_JPEG_BW);
   605    632       rv = xgdDPExtractData (out, size);
   606    633       out->xgd_free (out);
   607    634       return rv;
   608    635   }
   609    636   
   610         -extern rasterliteImagePrt
          637  +extern rasterliteImagePtr
   611    638   image_from_jpeg (int size, const void *data)
   612    639   {
   613    640   /* uncompressing a JPEG */
   614         -    rasterliteImagePrt img;
          641  +    rasterliteImagePtr img;
   615    642       xgdIOCtx *in = xgdNewDynamicCtxEx (size, data, 0);
   616    643       img = xgdImageCreateFromJpegCtx (in);
   617    644       in->xgd_free (in);
   618    645       return img;
   619    646   }

Changes to lib/rasterlite_png.c.

     1      1   /* 
     2      2   / rasterlite_png.c
     3      3   /
     4      4   / PNG auxiliary helpers
     5      5   /
     6         -/ version 1.0, 2009 June 1
            6  +/ version 1.1a, 2011 November 12
     7      7   /
     8      8   / Author: Sandro Furieri a.furieri@lqt.it
     9      9   /
    10         -/ Copyright (C) 2009  Alessandro Furieri
           10  +/ ------------------------------------------------------------------------------
           11  +/ 
           12  +/ Version: MPL 1.1/GPL 2.0/LGPL 2.1
           13  +/ 
           14  +/ The contents of this file are subject to the Mozilla Public License Version
           15  +/ 1.1 (the "License"); you may not use this file except in compliance with
           16  +/ the License. You may obtain a copy of the License at
           17  +/ http://www.mozilla.org/MPL/
           18  +/ 
           19  +/ Software distributed under the License is distributed on an "AS IS" basis,
           20  +/ WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
           21  +/ for the specific language governing rights and limitations under the
           22  +/ License.
    11     23   /
    12         -/    This program is free software: you can redistribute it and/or modify
    13         -/    it under the terms of the GNU General Public License as published by
    14         -/    the Free Software Foundation, either version 3 of the License, or
    15         -/    (at your option) any later version.
           24  +/ The Original Code is the RasterLite library
    16     25   /
    17         -/    This program is distributed in the hope that it will be useful,
    18         -/    but WITHOUT ANY WARRANTY; without even the implied warranty of
    19         -/    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    20         -/    GNU General Public License for more details.
           26  +/ The Initial Developer of the Original Code is Alessandro Furieri
           27  +/ 
           28  +/ Portions created by the Initial Developer are Copyright (C) 2009
           29  +/ the Initial Developer. All Rights Reserved.
    21     30   /
    22         -/    You should have received a copy of the GNU General Public License
    23         -/    along with this program.  If not, see <http://www.gnu.org/licenses/>.
    24         -/
           31  +/ Alternatively, the contents of this file may be used under the terms of
           32  +/ either the GNU General Public License Version 2 or later (the "GPL"), or
           33  +/ the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
           34  +/ in which case the provisions of the GPL or the LGPL are applicable instead
           35  +/ of those above. If you wish to allow use of your version of this file only
           36  +/ under the terms of either the GPL or the LGPL, and not to allow others to
           37  +/ use your version of this file under the terms of the MPL, indicate your
           38  +/ decision by deleting the provisions above and replace them with the notice
           39  +/ and other provisions required by the GPL or the LGPL. If you do not delete
           40  +/ the provisions above, a recipient may use your version of this file under
           41  +/ the terms of any one of the MPL, the GPL or the LGPL.
           42  +/ 
    25     43   */
    26     44   
    27     45   #include <stdio.h>
    28     46   #include <math.h>
    29     47   #include <string.h>
    30     48   #include <stdlib.h>
    31     49   
    32         -#include <spatialite/sqlite3.h>
    33         -#include <spatialite/gaiageo.h>
    34         -
    35     50   #include <tiffio.h>
    36         -
    37     51   #include <png.h>
    38     52   
           53  +#ifdef SPATIALITE_AMALGAMATION
           54  +#include <spatialite/sqlite3.h>
           55  +#else
           56  +#include <sqlite3.h>
           57  +#endif
           58  +
           59  +#include <spatialite/gaiageo.h>
           60  +
    39     61   #define TRUE 1
    40     62   #define FALSE 0
    41     63   
    42     64   #include "rasterlite_internals.h"
    43     65   
    44     66   /* 
    45     67   /
................................................................................
    96    118   static void
    97    119   xgdPngFlushData (png_structp png_ptr)
    98    120   {
    99    121       if (png_ptr)
   100    122   	return;			/* does absolutely nothing - required in order to suppress warnings */
   101    123   }
   102    124   
   103         -static rasterliteImagePrt
          125  +static rasterliteImagePtr
   104    126   xgdImageCreateFromPngCtx (xgdIOCtx * infile)
   105    127   {
   106    128       png_byte sig[8];
   107    129       png_structp png_ptr;
   108    130       png_infop info_ptr;
   109    131       png_uint_32 width, height, rowbytes, w, h;
   110    132       int bit_depth, color_type, interlace_type;
................................................................................
   111    133       int num_palette;
   112    134       png_colorp palette;
   113    135       int red[256];
   114    136       int green[256];
   115    137       int blue[256];
   116    138       png_bytep image_data = NULL;
   117    139       png_bytepp row_pointers = NULL;
   118         -    rasterliteImagePrt im = NULL;
          140  +    rasterliteImagePtr im = NULL;
   119    141       int i, j;
   120    142       volatile int palette_allocated = FALSE;
   121    143       memset (sig, 0, sizeof (sig));
   122    144       if (xgdGetBuf (sig, 8, infile) < 8)
   123    145         {
   124    146   	  return NULL;
   125    147         }
   126         -    if (!png_check_sig (sig, 8))
          148  +    if (png_sig_cmp (sig, 0, 8))
   127    149         {
   128    150   	  return NULL;
   129    151         }
   130    152   #ifndef PNG_SETJMP_NOT_SUPPORTED
   131    153       png_ptr =
   132    154   	png_create_read_struct (PNG_LIBPNG_VER_STRING, &xgdPngJmpbufStruct,
   133    155   				xgdPngErrorHandler, NULL);
................................................................................
   346    368         }
   347    369       free (image_data);
   348    370       free (row_pointers);
   349    371       return im;
   350    372   }
   351    373   
   352    374   static void
   353         -xgdImagePngCtxPalette (rasterliteImagePrt img, xgdIOCtx * outfile, int level)
          375  +xgdImagePngCtxPalette (rasterliteImagePtr img, xgdIOCtx * outfile, int level)
   354    376   {
   355    377       int i, j, bit_depth = 0, interlace_type;
   356    378       int width = img->sx;
   357    379       int height = img->sy;
   358    380       int mapping[256];
   359    381       int colors;
   360    382       png_color palette[256];
................................................................................
   468    490       for (j = 0; j < height; ++j)
   469    491   	free (row_pointers[j]);
   470    492       free (row_pointers);
   471    493       png_destroy_write_struct (&png_ptr, &info_ptr);
   472    494   }
   473    495   
   474    496   static void
   475         -xgdImagePngCtxGrayscale (rasterliteImagePrt img, xgdIOCtx * outfile, int level)
          497  +xgdImagePngCtxGrayscale (rasterliteImagePtr img, xgdIOCtx * outfile, int level)
   476    498   {
   477    499       int i, j, bit_depth = 0, interlace_type;
   478    500       int width = img->sx;
   479    501       int height = img->sy;
   480    502       png_structp png_ptr;
   481    503       png_infop info_ptr;
   482    504       png_bytep *row_pointers;
................................................................................
   552    574       for (j = 0; j < height; ++j)
   553    575   	free (row_pointers[j]);
   554    576       free (row_pointers);
   555    577       png_destroy_write_struct (&png_ptr, &info_ptr);
   556    578   }
   557    579   
   558    580   static void
   559         -xgdImagePngCtxRgb (rasterliteImagePrt img, xgdIOCtx * outfile, int level)
          581  +xgdImagePngCtxRgb (rasterliteImagePtr img, xgdIOCtx * outfile, int level)
   560    582   {
   561    583       int i, j, bit_depth = 0, interlace_type;
   562    584       int width = img->sx;
   563    585       int height = img->sy;
   564    586       png_structp png_ptr;
   565    587       png_infop info_ptr;
   566    588       png_bytep *row_pointers;
................................................................................
   644    666       for (j = 0; j < height; ++j)
   645    667   	free (row_pointers[j]);
   646    668       free (row_pointers);
   647    669       png_destroy_write_struct (&png_ptr, &info_ptr);
   648    670   }
   649    671   
   650    672   extern void *
   651         -image_to_png_palette (const rasterliteImagePrt img, int *size)
          673  +image_to_png_palette (const rasterliteImagePtr img, int *size)
   652    674   {
   653    675   /* compressing an image as PNG PALETTE */
   654    676       void *rv;
   655    677       xgdIOCtx *out = xgdNewDynamicCtx (2048, NULL);
   656    678       xgdImagePngCtxPalette (img, out, -1);
   657    679       rv = xgdDPExtractData (out, size);
   658    680       out->xgd_free (out);
   659    681       return rv;
   660    682   }
   661    683   
   662    684   extern void *
   663         -image_to_png_grayscale (const rasterliteImagePrt img, int *size)
          685  +image_to_png_grayscale (const rasterliteImagePtr img, int *size)
   664    686   {
   665    687   /* compressing an image as PNG GRAYSCALE */
   666    688       void *rv;
   667    689       xgdIOCtx *out = xgdNewDynamicCtx (2048, NULL);
   668    690       xgdImagePngCtxGrayscale (img, out, -1);
   669    691       rv = xgdDPExtractData (out, size);
   670    692       out->xgd_free (out);
   671    693       return rv;
   672    694   }
   673    695   
   674    696   extern void *
   675         -image_to_png_rgb (const rasterliteImagePrt img, int *size)
          697  +image_to_png_rgb (const rasterliteImagePtr img, int *size)
   676    698   {
   677    699   /* compressing an image as PNG RGB */
   678    700       void *rv;
   679    701       xgdIOCtx *out = xgdNewDynamicCtx (2048, NULL);
   680    702       xgdImagePngCtxRgb (img, out, -1);
   681    703       rv = xgdDPExtractData (out, size);
   682    704       out->xgd_free (out);
   683    705       return rv;
   684    706   }
   685    707   
   686         -extern rasterliteImagePrt
          708  +extern rasterliteImagePtr
   687    709   image_from_png (int size, const void *data)
   688    710   {
   689    711   /* uncompressing a PNG */
   690         -    rasterliteImagePrt img;
          712  +    rasterliteImagePtr img;
   691    713       xgdIOCtx *in = xgdNewDynamicCtxEx (size, data, 0);
   692    714       img = xgdImageCreateFromPngCtx (in);
   693    715       in->xgd_free (in);
   694    716       return img;
   695    717   }

Added lib/rasterlite_quantize.c.

            1  +/* 
            2  +/ rasterlite_quantize.c
            3  +/
            4  +/ quantization methods
            5  +/
            6  +/ version 1.1a, 2011 November 12
            7  +/
            8  +/ Author: Sandro Furieri a.furieri@lqt.it
            9  +/
           10  +/ ------------------------------------------------------------------------------
           11  +/ 
           12  +/ Version: MPL 1.1/GPL 2.0/LGPL 2.1
           13  +/ 
           14  +/ The contents of this file are subject to the Mozilla Public License Version
           15  +/ 1.1 (the "License"); you may not use this file except in compliance with
           16  +/ the License. You may obtain a copy of the License at
           17  +/ http://www.mozilla.org/MPL/
           18  +/ 
           19  +/ Software distributed under the License is distributed on an "AS IS" basis,
           20  +/ WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
           21  +/ for the specific language governing rights and limitations under the
           22  +/ License.
           23  +/
           24  +/ The Original Code is the RasterLite library
           25  +/
           26  +/ The Initial Developer of the Original Code is Alessandro Furieri
           27  +/ 
           28  +/ Portions created by the Initial Developer are Copyright (C) 2009
           29  +/ the Initial Developer. All Rights Reserved.
           30  +/
           31  +/ Alternatively, the contents of this file may be used under the terms of
           32  +/ either the GNU General Public License Version 2 or later (the "GPL"), or
           33  +/ the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
           34  +/ in which case the provisions of the GPL or the LGPL are applicable instead
           35  +/ of those above. If you wish to allow use of your version of this file only
           36  +/ under the terms of either the GPL or the LGPL, and not to allow others to
           37  +/ use your version of this file under the terms of the MPL, indicate your
           38  +/ decision by deleting the provisions above and replace them with the notice
           39  +/ and other provisions required by the GPL or the LGPL. If you do not delete
           40  +/ the provisions above, a recipient may use your version of this file under
           41  +/ the terms of any one of the MPL, the GPL or the LGPL.
           42  +/ 
           43  +*/
           44  +
           45  +/* 
           46  +/
           47  +/ DISCLAIMER:
           48  +/ all the following code merely is an 'ad hoc' adaption
           49  +/ of the following LGPLed code:
           50  +/
           51  +//////////////////////////////////////////////////////////////////////////////
           52  +/
           53  + median.c: median cut - reducing a high color bitmap to certain number of colors
           54  +
           55  +   Copyright (C) 2001, 2002 Martin Weber
           56  +
           57  +   This library is free software; you can redistribute it and/or
           58  +   modify it under the terms of the GNU Lesser General Public License
           59  +   as published by the Free Software Foundation; either version 2.1 of
           60  +   the License, or (at your option) any later version.
           61  +
           62  +   This library is distributed in the hope that it will be useful, but
           63  +   WITHOUT ANY WARRANTY; without even the implied warranty of
           64  +   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
           65  +   Lesser General Public License for more details.
           66  +
           67  +   You should have received a copy of the GNU Lesser General Public
           68  +   License along with this library; if not, write to the Free Software
           69  +   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
           70  +   USA. 
           71  +*/
           72  +
           73  +#if defined(_WIN32) && !defined(__MINGW32__)
           74  +/* MSVC strictly requires this include [off_t] */
           75  +#include <sys/types.h>
           76  +#endif
           77  +
           78  +#include <stdlib.h>
           79  +
           80  +#include <tiffio.h>
           81  +
           82  +#ifdef SPATIALITE_AMALGAMATION
           83  +#include <spatialite/sqlite3.h>
           84  +#else
           85  +#include <sqlite3.h>
           86  +#endif
           87  +
           88  +#include <spatialite/gaiageo.h>
           89  +
           90  +#include "rasterlite_internals.h"
           91  +
           92  +#define MAXNUMCOLORS 256
           93  +
           94  +/* scale RGB distances by *2,*3,*1 */
           95  +#define R_SCALE  <<1
           96  +#define G_SCALE  *3
           97  +#define B_SCALE
           98  +
           99  +#define BITS_IN_SAMPLE 	8
          100  +
          101  +#define R_SHIFT  	(BITS_IN_SAMPLE - PRECISION_R)
          102  +#define G_SHIFT  	(BITS_IN_SAMPLE - PRECISION_G)
          103  +#define B_SHIFT  	(BITS_IN_SAMPLE - PRECISION_B)
          104  +
          105  +#define PRECISION_R 	7
          106  +#define PRECISION_G 	7
          107  +#define PRECISION_B 	7
          108  +
          109  +#define HIST_R_ELEMS 	(1<<PRECISION_R)
          110  +#define HIST_G_ELEMS 	(1<<PRECISION_G)
          111  +#define HIST_B_ELEMS 	(1<<PRECISION_B)
          112  +
          113  +#define MR 		HIST_G_ELEMS*HIST_B_ELEMS
          114  +#define MG 		HIST_B_ELEMS
          115  +
          116  +typedef unsigned long ColorFreq;
          117  +typedef ColorFreq *Histogram;
          118  +
          119  +typedef struct
          120  +{
          121  +    int desired_number_of_colors;	/* Number of colors we will allow */
          122  +    int actual_number_of_colors;	/* Number of colors actually needed */
          123  +    int cmap[256];		/* colormap created by quantization */
          124  +    ColorFreq freq[256];
          125  +    Histogram histogram;	/* holds the histogram */
          126  +} QuantizeObj;
          127  +
          128  +typedef struct
          129  +{
          130  +    /* The bounds of the box (inclusive); expressed as histogram indexes */
          131  +    int Rmin, Rmax;
          132  +    int Gmin, Gmax;
          133  +    int Bmin, Bmax;
          134  +    /* The volume (actually 2-norm) of the box */
          135  +    int volume;
          136  +    /* The number of nonzero histogram cells within this box */
          137  +    long colorcount;
          138  +} box, *boxptr;
          139  +
          140  +static void
          141  +zero_histogram_rgb (Histogram histogram)
          142  +{
          143  +    int r, g, b;
          144  +    for (r = 0; r < HIST_R_ELEMS; r++)
          145  +	for (g = 0; g < HIST_G_ELEMS; g++)
          146  +	    for (b = 0; b < HIST_B_ELEMS; b++)
          147  +		histogram[r * MR + g * MG + b] = 0;
          148  +}
          149  +
          150  +static void
          151  +generate_histogram_rgb (Histogram histogram, rasterliteImagePtr image)
          152  +{
          153  +    int pixel;
          154  +    int x;
          155  +    int y;
          156  +    int r;
          157  +    int g;
          158  +    int b;
          159  +    ColorFreq *col;
          160  +
          161  +    zero_histogram_rgb (histogram);
          162  +
          163  +    for (y = 0; y < image->sy; y++)
          164  +      {
          165  +	  for (x = 0; x < image->sx; x++)
          166  +	    {
          167  +		pixel = image->pixels[y][x];
          168  +		r = true_color_get_red (pixel);
          169  +		g = true_color_get_green (pixel);
          170  +		b = true_color_get_blue (pixel);
          171  +		col = &histogram[(r >> R_SHIFT) * MR
          172  +				 + (g >> G_SHIFT) * MG + (b >> B_SHIFT)];
          173  +		(*col)++;
          174  +	    }
          175  +      }
          176  +}
          177  +
          178  +
          179  +static boxptr
          180  +find_biggest_volume (boxptr boxlist, int numboxes)
          181  +/* Find the splittable box with the largest (scaled) volume */
          182  +/* Returns 0 if no splittable boxes remain */
          183  +{
          184  +    boxptr boxp;
          185  +    int i;
          186  +    int maxv = 0;
          187  +    boxptr which = 0;
          188  +
          189  +    for (i = 0, boxp = boxlist; i < numboxes; i++, boxp++)
          190  +      {
          191  +	  if (boxp->volume > maxv)
          192  +	    {
          193  +		which = boxp;
          194  +		maxv = boxp->volume;
          195  +	    }
          196  +      }
          197  +
          198  +    return which;
          199  +}
          200  +
          201  +
          202  +static void
          203  +update_box_rgb (Histogram histogram, boxptr boxp)
          204  +/* Shrink the min/max bounds of a box to enclose only nonzero elements, */
          205  +/* and recompute its volume and population */
          206  +{
          207  +    ColorFreq *histp;
          208  +    int R, G, B;
          209  +    int Rmin, Rmax, Gmin, Gmax, Bmin, Bmax;
          210  +    int dist0, dist1, dist2;
          211  +    long ccount;
          212  +
          213  +    Rmin = boxp->Rmin;
          214  +    Rmax = boxp->Rmax;
          215  +    Gmin = boxp->Gmin;
          216  +    Gmax = boxp->Gmax;
          217  +    Bmin = boxp->Bmin;
          218  +    Bmax = boxp->Bmax;
          219  +
          220  +    if (Rmax > Rmin)
          221  +	for (R = Rmin; R <= Rmax; R++)
          222  +	    for (G = Gmin; G <= Gmax; G++)
          223  +	      {
          224  +		  histp = histogram + R * MR + G * MG + Bmin;
          225  +		  for (B = Bmin; B <= Bmax; B++)
          226  +		      if (*histp++ != 0)
          227  +			{
          228  +			    boxp->Rmin = Rmin = R;
          229  +			    goto have_Rmin;
          230  +			}
          231  +	      }
          232  +  have_Rmin:
          233  +    if (Rmax > Rmin)
          234  +	for (R = Rmax; R >= Rmin; R--)
          235  +	    for (G = Gmin; G <= Gmax; G++)
          236  +	      {
          237  +		  histp = histogram + R * MR + G * MG + Bmin;
          238  +		  for (B = Bmin; B <= Bmax; B++)
          239  +		      if (*histp++ != 0)
          240  +			{
          241  +			    boxp->Rmax = Rmax = R;
          242  +			    goto have_Rmax;
          243  +			}
          244  +	      }
          245  +  have_Rmax:
          246  +    if (Gmax > Gmin)
          247  +	for (G = Gmin; G <= Gmax; G++)
          248  +	    for (R = Rmin; R <= Rmax; R++)
          249  +	      {
          250  +		  histp = histogram + R * MR + G * MG + Bmin;
          251  +		  for (B = Bmin; B <= Bmax; B++)
          252  +		      if (*histp++ != 0)
          253  +			{
          254  +			    boxp->Gmin = Gmin = G;
          255  +			    goto have_Gmin;
          256  +			}
          257  +	      }
          258  +  have_Gmin:
          259  +    if (Gmax > Gmin)
          260  +	for (G = Gmax; G >= Gmin; G--)
          261  +	    for (R = Rmin; R <= Rmax; R++)
          262  +	      {
          263  +		  histp = histogram + R * MR + G * MG + Bmin;
          264  +		  for (B = Bmin; B <= Bmax; B++)
          265  +		      if (*histp++ != 0)
          266  +			{
          267  +			    boxp->Gmax = Gmax = G;
          268  +			    goto have_Gmax;
          269  +			}
          270  +	      }
          271  +  have_Gmax:
          272  +    if (Bmax > Bmin)
          273  +	for (B = Bmin; B <= Bmax; B++)
          274  +	    for (R = Rmin; R <= Rmax; R++)
          275  +	      {
          276  +		  histp = histogram + R * MR + Gmin * MG + B;
          277  +		  for (G = Gmin; G <= Gmax; G++, histp += MG)
          278  +		      if (*histp != 0)
          279  +			{
          280  +			    boxp->Bmin = Bmin = B;
          281  +			    goto have_Bmin;
          282  +			}
          283  +	      }
          284  +  have_Bmin:
          285  +    if (Bmax > Bmin)
          286  +	for (B = Bmax; B >= Bmin; B--)
          287  +	    for (R = Rmin; R <= Rmax; R++)
          288  +	      {
          289  +		  histp = histogram + R * MR + Gmin * MG + B;
          290  +		  for (G = Gmin; G <= Gmax; G++, histp += MG)
          291  +		      if (*histp != 0)
          292  +			{
          293  +			    boxp->Bmax = Bmax = B;
          294  +			    goto have_Bmax;
          295  +			}
          296  +	      }
          297  +  have_Bmax:
          298  +
          299  +    /* Update box volume.
          300  +     * We use 2-norm rather than real volume here; this biases the method
          301  +     * against making long narrow boxes, and it has the side benefit that
          302  +     * a box is splittable iff norm > 0.
          303  +     * Since the differences are expressed in histogram-cell units,
          304  +     * we have to shift back to JSAMPLE units to get consistent distances;
          305  +     * after which, we scale according to the selected distance scale factors.
          306  +     */
          307  +    dist0 = Rmax - Rmin;
          308  +    dist1 = Gmax - Gmin;
          309  +    dist2 = Bmax - Bmin;
          310  +    boxp->volume = dist0 * dist0 + dist1 * dist1 + dist2 * dist2;
          311  +
          312  +    /* Now scan remaining volume of box and compute population */
          313  +    ccount = 0;
          314  +    for (R = Rmin; R <= Rmax; R++)
          315  +	for (G = Gmin; G <= Gmax; G++)
          316  +	  {
          317  +	      histp = histogram + R * MR + G * MG + Bmin;
          318  +	      for (B = Bmin; B <= Bmax; B++, histp++)
          319  +		  if (*histp != 0)
          320  +		    {
          321  +			ccount++;
          322  +		    }
          323  +	  }
          324  +
          325  +    boxp->colorcount = ccount;
          326  +}
          327  +
          328  +
          329  +static int
          330  +median_cut_rgb (Histogram histogram, boxptr boxlist, int numboxes,
          331  +		int desired_colors)
          332  +/* Repeatedly select and split the largest box until we have enough boxes */
          333  +{
          334  +    int n, lb;
          335  +    int R, G, B, cmax;
          336  +    boxptr b1, b2;
          337  +
          338  +    while (numboxes < desired_colors)
          339  +      {
          340  +	  /* Select box to split.
          341  +	   * Current algorithm: by population for first half, then by volume.
          342  +	   */
          343  +	  b1 = find_biggest_volume (boxlist, numboxes);
          344  +
          345  +	  if (b1 == 0)		/* no splittable boxes left! */
          346  +	      break;
          347  +	  b2 = boxlist + numboxes;	/* where new box will go */
          348  +	  /* Copy the color bounds to the new box. */
          349  +	  b2->Rmax = b1->Rmax;
          350  +	  b2->Gmax = b1->Gmax;
          351  +	  b2->Bmax = b1->Bmax;
          352  +	  b2->Rmin = b1->Rmin;
          353  +	  b2->Gmin = b1->Gmin;
          354  +	  b2->Bmin = b1->Bmin;
          355  +	  /* Choose which axis to split the box on.
          356  +	   * Current algorithm: longest scaled axis.
          357  +	   * See notes in update_box about scaling distances.
          358  +	   */
          359  +	  R = b1->Rmax - b1->Rmin;
          360  +	  G = b1->Gmax - b1->Gmin;
          361  +	  B = b1->Bmax - b1->Bmin;
          362  +	  /* We want to break any ties in favor of green, then red, blue last.
          363  +	   */
          364  +	  cmax = G;
          365  +	  n = 1;
          366  +	  if (R > cmax)
          367  +	    {
          368  +		cmax = R;
          369  +		n = 0;
          370  +	    }
          371  +	  if (B > cmax)
          372  +	    {
          373  +		n = 2;
          374  +	    }
          375  +	  /* Choose split point along selected axis, and update box bounds.
          376  +	   * Current algorithm: split at halfway point.
          377  +	   * (Since the box has been shrunk to minimum volume,
          378  +	   * any split will produce two nonempty subboxes.)
          379  +	   * Note that lb value is max for lower box, so must be < old max.
          380  +	   */
          381  +	  switch (n)
          382  +	    {
          383  +	    case 0:
          384  +		lb = (b1->Rmax + b1->Rmin) / 2;
          385  +		b1->Rmax = lb;
          386  +		b2->Rmin = lb + 1;
          387  +		break;
          388  +	    case 1:
          389  +		lb = (b1->Gmax + b1->Gmin) / 2;
          390  +		b1->Gmax = lb;
          391  +		b2->Gmin = lb + 1;
          392  +		break;
          393  +	    case 2:
          394  +		lb = (b1->Bmax + b1->Bmin) / 2;
          395  +		b1->Bmax = lb;
          396  +		b2->Bmin = lb + 1;
          397  +		break;
          398  +	    }
          399  +	  /* Update stats for boxes */
          400  +	  update_box_rgb (histogram, b1);
          401  +	  update_box_rgb (histogram, b2);
          402  +	  numboxes++;
          403  +      }
          404  +    return numboxes;
          405  +}
          406  +
          407  +
          408  +static void
          409  +compute_color_rgb (QuantizeObj * quantobj, Histogram histogram,
          410  +		   boxptr boxp, int icolor)
          411  +/* Compute representative color for a box, put it in colormap[icolor] */
          412  +{
          413  +    /* Current algorithm: mean weighted by pixels (not colors) */
          414  +    /* Note it is important to get the rounding correct! */
          415  +    ColorFreq *histp;
          416  +    int R, G, B;
          417  +    int Rmin, Rmax;
          418  +    int Gmin, Gmax;
          419  +    int Bmin, Bmax;
          420  +    unsigned long count;
          421  +    unsigned long total = 0;
          422  +    unsigned long Rtotal = 0;
          423  +    unsigned long Gtotal = 0;
          424  +    unsigned long Btotal = 0;
          425  +    int pixel;
          426  +    int r;
          427  +    int g;
          428  +    int b;
          429  +
          430  +    Rmin = boxp->Rmin;
          431  +    Rmax = boxp->Rmax;
          432  +    Gmin = boxp->Gmin;
          433  +    Gmax = boxp->Gmax;
          434  +    Bmin = boxp->Bmin;
          435  +    Bmax = boxp->Bmax;
          436  +
          437  +    for (R = Rmin; R <= Rmax; R++)
          438  +	for (G = Gmin; G <= Gmax; G++)
          439  +	  {
          440  +	      histp = histogram + R * MR + G * MG + Bmin;
          441  +	      for (B = Bmin; B <= Bmax; B++)
          442  +		{
          443  +		    if ((count = *histp++) != 0)
          444  +		      {
          445  +			  total += count;
          446  +			  Rtotal +=
          447  +			      ((R << R_SHIFT) + ((1 << R_SHIFT) >> 1)) * count;
          448  +			  Gtotal +=
          449  +			      ((G << G_SHIFT) + ((1 << G_SHIFT) >> 1)) * count;
          450  +			  Btotal +=
          451  +			      ((B << B_SHIFT) + ((1 << B_SHIFT) >> 1)) * count;
          452  +		      }
          453  +		}
          454  +	  }
          455  +
          456  +    r = (unsigned char) ((Rtotal + (total >> 1)) / total);
          457  +    g = (unsigned char) ((Gtotal + (total >> 1)) / total);
          458  +    b = (unsigned char) ((Btotal + (total >> 1)) / total);
          459  +    pixel = true_color (r, g, b);
          460  +    quantobj->cmap[icolor] = pixel;
          461  +    quantobj->freq[icolor] = total;
          462  +}
          463  +
          464  +
          465  +static void
          466  +select_colors_rgb (QuantizeObj * quantobj, Histogram histogram)
          467  +/* Master routine for color selection */
          468  +{
          469  +    boxptr boxlist;
          470  +    int numboxes;
          471  +    int desired = quantobj->desired_number_of_colors;
          472  +    int i;
          473  +
          474  +    /* Allocate workspace for box list */
          475  +    boxlist = malloc (desired * sizeof (box));
          476  +
          477  +    /* Initialize one box containing whole space */
          478  +    numboxes = 1;
          479  +    boxlist[0].Rmin = 0;
          480  +    boxlist[0].Rmax = (1 << PRECISION_R) - 1;
          481  +    boxlist[0].Gmin = 0;
          482  +    boxlist[0].Gmax = (1 << PRECISION_G) - 1;
          483  +    boxlist[0].Bmin = 0;
          484  +    boxlist[0].Bmax = (1 << PRECISION_B) - 1;
          485  +    /* Shrink it to actually-used volume and set its statistics */
          486  +    update_box_rgb (histogram, boxlist);
          487  +    /* Perform median-cut to produce final box list */
          488  +    numboxes = median_cut_rgb (histogram, boxlist, numboxes, desired);
          489  +    quantobj->actual_number_of_colors = numboxes;
          490  +    /* Compute the representative color for each box, fill colormap */
          491  +    for (i = 0; i < numboxes; i++)
          492  +	compute_color_rgb (quantobj, histogram, boxlist + i, i);
          493  +    free (boxlist);
          494  +}
          495  +
          496  +
          497  +/*
          498  + * These routines are concerned with the time-critical task of mapping input
          499  + * colors to the nearest color in the selected colormap.
          500  + *
          501  + * We re-use the histogram space as an "inverse color map", essentially a
          502  + * cache for the results of nearest-color searches.  All colors within a
          503  + * histogram cell will be mapped to the same colormap entry, namely the one
          504  + * closest to the cell's center.  This may not be quite the closest entry to
          505  + * the actual input color, but it's almost as good.  A zero in the cache
          506  + * indicates we haven't found the nearest color for that cell yet; the array
          507  + * is cleared to zeroes before starting the mapping pass.  When we find the
          508  + * nearest color for a cell, its colormap index plus one is recorded in the
          509  + * cache for future use.  The pass2 scanning routines call fill_inverse_cmap
          510  + * when they need to use an unfilled entry in the cache.
          511  + *
          512  + * Our method of efficiently finding nearest colors is based on the "locally
          513  + * sorted search" idea described by Heckbert and on the incremental distance
          514  + * calculation described by Spencer W. Thomas in chapter III.1 of Graphics
          515  + * Gems II (James Arvo, ed.  Academic Press, 1991).  Thomas points out that
          516  + * the distances from a given colormap entry to each cell of the histogram can
          517  + * be computed quickly using an incremental method: the differences between
          518  + * distances to adjacent cells themselves differ by a constant.  This allows a
          519  + * fairly fast implementation of the "brute force" approach of computing the
          520  + * distance from every colormap entry to every histogram cell.  Unfortunately,
          521  + * it needs a work array to hold the best-distance-so-far for each histogram
          522  + * cell (because the inner loop has to be over cells, not colormap entries).
          523  + * The work array elements have to be ints, so the work array would need
          524  + * 256Kb at our recommended precision.  This is not feasible in DOS machines.
          525  +
          526  +[ 256*1024/4 = 65,536 ]
          527  +
          528  + * To get around these problems, we apply Thomas' method to compute the
          529  + * nearest colors for only the cells within a small subbox of the histogram.
          530  + * The work array need be only as big as the subbox, so the memory usage
          531  + * problem is solved.  Furthermore, we need not fill subboxes that are never
          532  + * referenced in pass2; many images use only part of the color gamut, so a
          533  + * fair amount of work is saved.  An additional advantage of this
          534  + * approach is that we can apply Heckbert's locality criterion to quickly
          535  + * eliminate colormap entries that are far away from the subbox; typically
          536  + * three-fourths of the colormap entries are rejected by Heckbert's criterion,
          537  + * and we need not compute their distances to individual cells in the subbox.
          538  + * The speed of this approach is heavily influenced by the subbox size: too
          539  + * small means too much overhead, too big loses because Heckbert's criterion
          540  + * can't eliminate as many colormap entries.  Empirically the best subbox
          541  + * size seems to be about 1/512th of the histogram (1/8th in each direction).
          542  + *
          543  + * Thomas' article also describes a refined method which is asymptotically
          544  + * faster than the brute-force method, but it is also far more complex and
          545  + * cannot efficiently be applied to small subboxes.  It is therefore not
          546  + * useful for programs intended to be portable to DOS machines.  On machines
          547  + * with plenty of memory, filling the whole histogram in one shot with Thomas'
          548  + * refined method might be faster than the present code --- but then again,
          549  + * it might not be any faster, and it's certainly more complicated.
          550  + */
          551  +
          552  +/* log2(histogram cells in update box) for each axis; this can be adjusted */
          553  +#define BOX_R_LOG  (PRECISION_R-3)
          554  +#define BOX_G_LOG  (PRECISION_G-3)
          555  +#define BOX_B_LOG  (PRECISION_B-3)
          556  +
          557  +#define BOX_R_ELEMS  (1<<BOX_R_LOG)	/* # of hist cells in update box */
          558  +#define BOX_G_ELEMS  (1<<BOX_G_LOG)
          559  +#define BOX_B_ELEMS  (1<<BOX_B_LOG)
          560  +
          561  +#define BOX_R_SHIFT  (R_SHIFT + BOX_R_LOG)
          562  +#define BOX_G_SHIFT  (G_SHIFT + BOX_G_LOG)
          563  +#define BOX_B_SHIFT  (B_SHIFT + BOX_B_LOG)
          564  +
          565  +/*
          566  + * The next three routines implement inverse colormap filling.  They could
          567  + * all be folded into one big routine, but splitting them up this way saves
          568  + * some stack space (the mindist[] and bestdist[] arrays need not coexist)
          569  + * and may allow some compilers to produce better code by registerizing more
          570  + * inner-loop variables.
          571  + */
          572  +
          573  +static int
          574  +find_nearby_colors (QuantizeObj * quantobj, int minR, int minG,
          575  +		    int minB, int *colorlist)
          576  +/* Locate the colormap entries close enough to an update box to be candidates
          577  + * for the nearest entry to some cell(s) in the update box.  The update box
          578  + * is specified by the center coordinates of its first cell.  The number of
          579  + * candidate colormap entries is returned, and their colormap indexes are
          580  + * placed in colorlist[].
          581  + * This routine uses Heckbert's "locally sorted search" criterion to select
          582  + * the colors that need further consideration.
          583  + */
          584  +{
          585  +    int numcolors = quantobj->actual_number_of_colors;
          586  +    int maxR, maxG, maxB;
          587  +    int centerR, centerG, centerB;
          588  +    int i, x, ncolors;
          589  +    int minmaxdist, min_dist = 0, max_dist, tdist;
          590  +    int mindist[MAXNUMCOLORS];	/* min distance to colormap entry i */
          591  +    int pixel;
          592  +    int r;
          593  +    int g;
          594  +    int b;
          595  +
          596  +    /* Compute TRUE coordinates of update box's upper corner and center.
          597  +     * Actually we compute the coordinates of the center of the upper-corner
          598  +     * histogram cell, which are the upper bounds of the volume we care about.
          599  +     * Note that since ">>" rounds down, the "center" values may be closer to
          600  +     * min than to max; hence comparisons to them must be "<=", not "<".
          601  +     */
          602  +    maxR = minR + ((1 << BOX_R_SHIFT) - (1 << R_SHIFT));
          603  +    centerR = (minR + maxR) >> 1;
          604  +    maxG = minG + ((1 << BOX_G_SHIFT) - (1 << G_SHIFT));
          605  +    centerG = (minG + maxG) >> 1;
          606  +    maxB = minB + ((1 << BOX_B_SHIFT) - (1 << B_SHIFT));
          607  +    centerB = (minB + maxB) >> 1;
          608  +
          609  +    /* For each color in colormap, find:
          610  +     *  1. its minimum squared-distance to any point in the update box
          611  +     *     (zero if color is within update box);
          612  +     *  2. its maximum squared-distance to any point in the update box.
          613  +     * Both of these can be found by considering only the corners of the box.
          614  +     * We save the minimum distance for each color in mindist[];
          615  +     * only the smallest maximum distance is of interest.
          616  +     */
          617  +    minmaxdist = 0x7FFFFFFFL;
          618  +
          619  +    for (i = 0; i < numcolors; i++)
          620  +      {
          621  +	  /* We compute the squared-R-distance term, then add in the other two. */
          622  +	  pixel = quantobj->cmap[i];
          623  +	  r = true_color_get_red (pixel);
          624  +	  g = true_color_get_green (pixel);
          625  +	  b = true_color_get_blue (pixel);
          626  +	  x = r;
          627  +	  if (x < minR)
          628  +	    {
          629  +		tdist = (x - minR) R_SCALE;
          630  +		min_dist = tdist * tdist;
          631  +		tdist = (x - maxR) R_SCALE;
          632  +		max_dist = tdist * tdist;
          633  +	    }
          634  +	  else if (x > maxR)
          635  +	    {
          636  +		tdist = (x - maxR) R_SCALE;
          637  +		min_dist = tdist * tdist;
          638  +		tdist = (x - minR) R_SCALE;
          639  +		max_dist = tdist * tdist;
          640  +	    }
          641  +	  else
          642  +	    {
          643  +		/* within cell range so no contribution to min_dist */
          644  +		min_dist = 0;
          645  +		if (x <= centerR)
          646  +		  {
          647  +		      tdist = (x - maxR) R_SCALE;
          648  +		      max_dist = tdist * tdist;
          649  +		  }
          650  +		else
          651  +		  {
          652  +		      tdist = (x - minR) R_SCALE;
          653  +		      max_dist = tdist * tdist;
          654  +		  }
          655  +	    }
          656  +
          657  +	  x = g;
          658  +	  if (x < minG)
          659  +	    {
          660  +		tdist = (x - minG) G_SCALE;
          661  +		min_dist += tdist * tdist;
          662  +		tdist = (x - maxG) G_SCALE;
          663  +		max_dist += tdist * tdist;
          664  +	    }
          665  +	  else if (x > maxG)
          666  +	    {
          667  +		tdist = (x - maxG) G_SCALE;
          668  +		min_dist += tdist * tdist;
          669  +		tdist = (x - minG) G_SCALE;
          670  +		max_dist += tdist * tdist;
          671  +	    }
          672  +	  else
          673  +	    {
          674  +		/* within cell range so no contribution to min_dist */
          675  +		if (x <= centerG)
          676  +		  {
          677  +		      tdist = (x - maxG) G_SCALE;
          678  +		      max_dist += tdist * tdist;
          679  +		  }
          680  +		else
          681  +		  {
          682  +		      tdist = (x - minG) G_SCALE;
          683  +		      max_dist += tdist * tdist;
          684  +		  }
          685  +	    }
          686  +
          687  +	  x = b;
          688  +	  if (x < minB)
          689  +	    {
          690  +		tdist = (x - minB) B_SCALE;
          691  +		min_dist += tdist * tdist;
          692  +		tdist = (x - maxB) B_SCALE;
          693  +		max_dist += tdist * tdist;
          694  +	    }
          695  +	  else if (x > maxB)
          696  +	    {
          697  +		tdist = (x - maxB) B_SCALE;
          698  +		min_dist += tdist * tdist;
          699  +		tdist = (x - minB) B_SCALE;
          700  +		max_dist += tdist * tdist;
          701  +	    }
          702  +	  else
          703  +	    {
          704  +		/* within cell range so no contribution to min_dist */
          705  +		if (x <= centerB)
          706  +		  {
          707  +		      tdist = (x - maxB) B_SCALE;
          708  +		      max_dist += tdist * tdist;
          709  +		  }
          710  +		else
          711  +		  {
          712  +		      tdist = (x - minB) B_SCALE;
          713  +		      max_dist += tdist * tdist;
          714  +		  }
          715  +	    }
          716  +
          717  +	  mindist[i] = min_dist;	/* save away the results */
          718  +	  if (max_dist < minmaxdist)
          719  +	      minmaxdist = max_dist;
          720  +      }
          721  +
          722  +    /* Now we know that no cell in the update box is more than minmaxdist
          723  +     * away from some colormap entry.  Therefore, only colors that are
          724  +     * within minmaxdist of some part of the box need be considered.
          725  +     */
          726  +    ncolors = 0;
          727  +    for (i = 0; i < numcolors; i++)
          728  +      {
          729  +	  if (mindist[i] <= minmaxdist)
          730  +	      colorlist[ncolors++] = i;
          731  +      }
          732  +    return ncolors;
          733  +}
          734  +
          735  +
          736  +static void
          737  +find_best_colors (QuantizeObj * quantobj, int minR, int minG,
          738  +		  int minB, int numcolors, int *colorlist, int *bestcolor)
          739  +/* Find the closest colormap entry for each cell in the update box,
          740  +  given the list of candidate colors prepared by find_nearby_colors.
          741  +  Return the indexes of the closest entries in the bestcolor[] array.
          742  +  This routine uses Thomas' incremental distance calculation method to
          743  +  find the distance from a colormap entry to successive cells in the box.
          744  + */
          745  +{
          746  +    int iR, iG, iB;
          747  +    int i, icolor;
          748  +    int *bptr;			/* pointer into bestdist[] array */
          749  +    int *cptr;			/* pointer into bestcolor[] array */
          750  +    int dist0, dist1;		/* initial distance values */
          751  +    int dist2;			/* current distance in inner loop */
          752  +    int xx0, xx1;		/* distance increments */
          753  +    int xx2;
          754  +    int inR, inG, inB;		/* initial values for increments */
          755  +    int pixel;
          756  +    int r;
          757  +    int g;
          758  +    int b;
          759  +
          760  +    /* This array holds the distance to the nearest-so-far color for each cell */
          761  +    int bestdist[BOX_R_ELEMS * BOX_G_ELEMS * BOX_B_ELEMS];
          762  +
          763  +    /* Initialize best-distance for each cell of the update box */
          764  +    bptr = bestdist;
          765  +    for (i = BOX_R_ELEMS * BOX_G_ELEMS * BOX_B_ELEMS - 1; i >= 0; i--)
          766  +	*bptr++ = 0x7FFFFFFFL;
          767  +
          768  +    /* For each color selected by find_nearby_colors,
          769  +     * compute its distance to the center of each cell in the box.
          770  +     * If that's less than best-so-far, update best distance and color number.
          771  +     */
          772  +
          773  +    /* Nominal steps between cell centers ("x" in Thomas article) */
          774  +#define STEP_R  ((1 << R_SHIFT) R_SCALE)
          775  +#define STEP_G  ((1 << G_SHIFT) G_SCALE)
          776  +#define STEP_B  ((1 << B_SHIFT) B_SCALE)
          777  +
          778  +    for (i = 0; i < numcolors; i++)
          779  +      {
          780  +	  icolor = colorlist[i];
          781  +	  /* Compute (square of) distance from minR/G/B to this color */
          782  +	  pixel = quantobj->cmap[icolor];
          783  +	  r = true_color_get_red (pixel);
          784  +	  g = true_color_get_green (pixel);
          785  +	  b = true_color_get_blue (pixel);
          786  +	  inR = (minR - r) R_SCALE;
          787  +	  dist0 = inR * inR;
          788  +	  inG = (minG - g) G_SCALE;
          789  +	  dist0 += inG * inG;
          790  +	  inB = (minB - b) B_SCALE;
          791  +	  dist0 += inB * inB;
          792  +	  /* Form the initial difference increments */
          793  +	  inR = inR * (2 * STEP_R) + STEP_R * STEP_R;
          794  +	  inG = inG * (2 * STEP_G) + STEP_G * STEP_G;
          795  +	  inB = inB * (2 * STEP_B) + STEP_B * STEP_B;
          796  +	  /* Now loop over all cells in box, updating distance per Thomas method */
          797  +	  bptr = bestdist;
          798  +	  cptr = bestcolor;
          799  +	  xx0 = inR;
          800  +	  for (iR = BOX_R_ELEMS - 1; iR >= 0; iR--)
          801  +	    {
          802  +		dist1 = dist0;
          803  +		xx1 = inG;
          804  +		for (iG = BOX_G_ELEMS - 1; iG >= 0; iG--)
          805  +		  {
          806  +		      dist2 = dist1;
          807  +		      xx2 = inB;
          808  +		      for (iB = BOX_B_ELEMS - 1; iB >= 0; iB--)
          809  +			{
          810  +			    if (dist2 < *bptr)
          811  +			      {
          812  +				  *bptr = dist2;
          813  +				  *cptr = icolor;
          814  +			      }
          815  +			    dist2 += xx2;
          816  +			    xx2 += 2 * STEP_B * STEP_B;
          817  +			    bptr++;
          818  +			    cptr++;
          819  +			}
          820  +		      dist1 += xx1;
          821  +		      xx1 += 2 * STEP_G * STEP_G;
          822  +		  }
          823  +		dist0 += xx0;
          824  +		xx0 += 2 * STEP_R * STEP_R;
          825  +	    }
          826  +      }
          827  +}
          828  +
          829  +static void
          830  +fill_inverse_cmap_rgb (QuantizeObj * quantobj, Histogram histogram,
          831  +		       int R, int G, int B)
          832  +/* Fill the inverse-colormap entries in the update box that contains
          833  + histogram cell R/G/B.  (Only that one cell MUST be filled, but
          834  + we can fill as many others as we wish.) */
          835  +{
          836  +    int minR, minG, minB;	/* lower left corner of update box */
          837  +    int iR, iG, iB;
          838  +    int *cptr;			/* pointer into bestcolor[] array */
          839  +    ColorFreq *cachep;		/* pointer into main cache array */
          840  +    /* This array lists the candidate colormap indexes. */
          841  +    int colorlist[MAXNUMCOLORS];
          842  +    int numcolors;		/* number of candidate colors */
          843  +    /* This array holds the actually closest colormap index for each cell. */
          844  +    int bestcolor[BOX_R_ELEMS * BOX_G_ELEMS * BOX_B_ELEMS];
          845  +
          846  +    /* Convert cell coordinates to update box ID */
          847  +    R >>= BOX_R_LOG;
          848  +    G >>= BOX_G_LOG;
          849  +    B >>= BOX_B_LOG;
          850  +
          851  +    /* Compute TRUE coordinates of update box's origin corner.
          852  +     * Actually we compute the coordinates of the center of the corner
          853  +     * histogram cell, which are the lower bounds of the volume we care about.
          854  +     */
          855  +    minR = (R << BOX_R_SHIFT) + ((1 << R_SHIFT) >> 1);
          856  +    minG = (G << BOX_G_SHIFT) + ((1 << G_SHIFT) >> 1);
          857  +    minB = (B << BOX_B_SHIFT) + ((1 << B_SHIFT) >> 1);
          858  +
          859  +    /* Determine which colormap entries are close enough to be candidates
          860  +     * for the nearest entry to some cell in the update box.
          861  +     */
          862  +    numcolors = find_nearby_colors (quantobj, minR, minG, minB, colorlist);
          863  +
          864  +    /* Determine the actually nearest colors. */
          865  +    find_best_colors (quantobj, minR, minG, minB, numcolors, colorlist,
          866  +		      bestcolor);
          867  +
          868  +    /* Save the best color numbers (plus 1) in the main cache array */
          869  +    R <<= BOX_R_LOG;		/* convert ID back to base cell indexes */
          870  +    G <<= BOX_G_LOG;
          871  +    B <<= BOX_B_LOG;
          872  +    cptr = bestcolor;
          873  +    for (iR = 0; iR < BOX_R_ELEMS; iR++)
          874  +      {
          875  +	  for (iG = 0; iG < BOX_G_ELEMS; iG++)
          876  +	    {
          877  +		cachep = &histogram[(R + iR) * MR + (G + iG) * MG + B];
          878  +		for (iB = 0; iB < BOX_B_ELEMS; iB++)
          879  +		  {
          880  +		      *cachep++ = (*cptr++) + 1;
          881  +		  }
          882  +	    }
          883  +      }
          884  +}
          885  +
          886  +/*  This is pass 1  */
          887  +static void
          888  +median_cut_pass1_rgb (QuantizeObj * quantobj, rasterliteImagePtr image)
          889  +{
          890  +    generate_histogram_rgb (quantobj->histogram, image);
          891  +    select_colors_rgb (quantobj, quantobj->histogram);
          892  +}
          893  +
          894  +
          895  +/* Map some rows of pixels to the output colormapped representation. */
          896  +static void
          897  +median_cut_pass2_rgb (QuantizeObj * quantobj, rasterliteImagePtr image)
          898  + /* This version performs no dithering */
          899  +{
          900  +    Histogram histogram = quantobj->histogram;
          901  +    ColorFreq *cachep;
          902  +    int R, G, B;
          903  +    int origR, origG, origB;
          904  +    int row, col;
          905  +    int width = image->sx;
          906  +    int height = image->sy;
          907  +    int pixel;
          908  +
          909  +    zero_histogram_rgb (histogram);
          910  +
          911  +    for (row = 0; row < height; row++)
          912  +      {
          913  +	  for (col = 0; col < width; col++)
          914  +	    {
          915  +		/* get pixel value and index into the cache */
          916  +		pixel = image->pixels[row][col];
          917  +		origR = true_color_get_red (pixel);
          918  +		origG = true_color_get_green (pixel);
          919  +		origB = true_color_get_blue (pixel);
          920  +
          921  +		/* get pixel value and index into the cache */
          922  +		R = origR >> R_SHIFT;
          923  +		G = origG >> G_SHIFT;
          924  +		B = origB >> B_SHIFT;
          925  +		cachep = &histogram[R * MR + G * MG + B];
          926  +		/* If we have not seen this color before, find nearest
          927  +		   colormap entry and update the cache */
          928  +		if (*cachep == 0)
          929  +		  {
          930  +		      fill_inverse_cmap_rgb (quantobj, histogram, R, G, B);
          931  +		  }
          932  +		/* Now emit the colormap index for this cell */
          933  +		pixel = quantobj->cmap[*cachep - 1];
          934  +		image->pixels[row][col] = pixel;
          935  +	    }
          936  +      }
          937  +}
          938  +
          939  +static QuantizeObj *
          940  +initialize_median_cut (int num_colors)
          941  +{
          942  +    QuantizeObj *quantobj;
          943  +
          944  +    /* Initialize the data structures */
          945  +    quantobj = malloc (sizeof (QuantizeObj));
          946  +
          947  +    quantobj->histogram = malloc (sizeof (ColorFreq) *
          948  +				  HIST_R_ELEMS * HIST_G_ELEMS * HIST_B_ELEMS);
          949  +    quantobj->desired_number_of_colors = num_colors;
          950  +
          951  +    return quantobj;
          952  +}
          953  +
          954  +static void
          955  +quantize_object_free (QuantizeObj * quantobj)
          956  +{
          957  +    free (quantobj->histogram);
          958  +    free (quantobj);
          959  +}
          960  +
          961  +extern void
          962  +image_resample_as_palette256 (const rasterliteImagePtr img)
          963  +{
          964  +/* applies quantization to the current image, so to get 256 colors */
          965  +    QuantizeObj *quantobj;
          966  +
          967  +    /* If a pointer was sent in, let's use it. */
          968  +    quantobj = initialize_median_cut (256);
          969  +    median_cut_pass1_rgb (quantobj, img);
          970  +    median_cut_pass2_rgb (quantobj, img);
          971  +    quantize_object_free (quantobj);
          972  +}

Changes to lib/rasterlite_tiff.c.

     1      1   /* 
     2      2   / rasterlite_tiff.c
     3      3   /
     4      4   / TIFF auxiliary helpers
     5      5   /
     6         -/ version 1.0, 2009 June 1
            6  +/ version 1.1a, 2011 November 12
     7      7   /
     8      8   / Author: Sandro Furieri a.furieri@lqt.it
     9      9   /
    10         -/ Copyright (C) 2009  Alessandro Furieri
           10  +/ ------------------------------------------------------------------------------
           11  +/ 
           12  +/ Version: MPL 1.1/GPL 2.0/LGPL 2.1
           13  +/ 
           14  +/ The contents of this file are subject to the Mozilla Public License Version
           15  +/ 1.1 (the "License"); you may not use this file except in compliance with
           16  +/ the License. You may obtain a copy of the License at
           17  +/ http://www.mozilla.org/MPL/
           18  +/ 
           19  +/ Software distributed under the License is distributed on an "AS IS" basis,
           20  +/ WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
           21  +/ for the specific language governing rights and limitations under the
           22  +/ License.
    11     23   /
    12         -/    This program is free software: you can redistribute it and/or modify
    13         -/    it under the terms of the GNU General Public License as published by
    14         -/    the Free Software Foundation, either version 3 of the License, or
    15         -/    (at your option) any later version.
           24  +/ The Original Code is the RasterLite library
    16     25   /
    17         -/    This program is distributed in the hope that it will be useful,
    18         -/    but WITHOUT ANY WARRANTY; without even the implied warranty of
    19         -/    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    20         -/    GNU General Public License for more details.
           26  +/ The Initial Developer of the Original Code is Alessandro Furieri
           27  +/ 
           28  +/ Portions created by the Initial Developer are Copyright (C) 2009
           29  +/ the Initial Developer. All Rights Reserved.
    21     30   /
    22         -/    You should have received a copy of the GNU General Public License
    23         -/    along with this program.  If not, see <http://www.gnu.org/licenses/>.
    24         -/
           31  +/ Alternatively, the contents of this file may be used under the terms of
           32  +/ either the GNU General Public License Version 2 or later (the "GPL"), or
           33  +/ the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
           34  +/ in which case the provisions of the GPL or the LGPL are applicable instead
           35  +/ of those above. If you wish to allow use of your version of this file only
           36  +/ under the terms of either the GPL or the LGPL, and not to allow others to
           37  +/ use your version of this file under the terms of the MPL, indicate your
           38  +/ decision by deleting the provisions above and replace them with the notice
           39  +/ and other provisions required by the GPL or the LGPL. If you do not delete
           40  +/ the provisions above, a recipient may use your version of this file under
           41  +/ the terms of any one of the MPL, the GPL or the LGPL.
           42  +/ 
    25     43   */
           44  +
           45  +#if defined(_WIN32) && !defined(__MINGW32__)
           46  +/* MSVC strictly requires this include [off_t] */
           47  +#include <sys/types.h>
           48  +#endif
    26     49   
    27     50   #include <stdio.h>
    28     51   #include <math.h>
    29     52   #include <string.h>
    30     53   #include <stdlib.h>
    31     54   
    32         -#include <geotiff.h>
    33         -#include <xtiffio.h>
    34         -#include <geo_tiffp.h>
    35         -#include <geo_keyp.h>
    36         -#include <geovalues.h>
    37         -#include <geo_normalize.h>
           55  +#include "rasterlite_tiff_hdrs.h"
    38     56   
           57  +#ifdef SPATIALITE_AMALGAMATION
    39     58   #include <spatialite/sqlite3.h>
           59  +#else
           60  +#include <sqlite3.h>
           61  +#endif
           62  +
    40     63   #include <spatialite/gaiageo.h>
    41     64   
    42     65   #include "rasterlite_internals.h"
    43     66   
    44     67   struct memfile
    45     68   {
    46     69   /* a struct emulating a file [memory mapped] */
................................................................................
   143    166   {
   144    167       if (clientdata || data || offset)
   145    168   	return;			/* does absolutely nothing - required in order to suppress warnings */
   146    169       return;
   147    170   }
   148    171   
   149    172   extern void *
   150         -image_to_tiff_fax4 (const rasterliteImagePrt img, int *size)
          173  +image_to_tiff_fax4 (const rasterliteImagePtr img, int *size)
   151    174   {
   152    175   /* compressing a bi-level (monocrhome) image as TIFF FAX-4 */
   153    176       unsigned char *tiff_image = NULL;
   154    177       TIFF *out;
   155    178       int row;
   156    179       int col;
   157    180       int strip_rows;
................................................................................
   272    295   	  *size = clientdata.eof;
   273    296         }
   274    297       free (clientdata.buffer);
   275    298       return tiff_image;
   276    299   }
   277    300   
   278    301   extern void *
   279         -image_to_tiff_palette (const rasterliteImagePrt img, int *size)
          302  +image_to_tiff_palette (const rasterliteImagePtr img, int *size)
   280    303   {
   281    304   /* compressing a palettte image as TIFF  PALETTE */
   282    305       unsigned char *tiff_image = NULL;
   283    306       TIFF *out;
   284    307       int row;
   285    308       int col;
   286    309       int extimated_size;
................................................................................
   369    392   	  *size = clientdata.eof;
   370    393         }
   371    394       free (clientdata.buffer);
   372    395       return tiff_image;
   373    396   }
   374    397   
   375    398   extern void *
   376         -image_to_tiff_grayscale (const rasterliteImagePrt img, int *size)
          399  +image_to_tiff_grayscale (const rasterliteImagePtr img, int *size)
   377    400   {
   378    401   /* compressing a grayscale image as TIFF  GRAYSCALE */
   379    402       unsigned char *tiff_image = NULL;
   380    403       TIFF *out;
   381    404       int row;
   382    405       int col;
   383    406       int extimated_size;
................................................................................
   435    458   	  *size = clientdata.eof;
   436    459         }
   437    460       free (clientdata.buffer);
   438    461       return tiff_image;
   439    462   }
   440    463   
   441    464   extern void *
   442         -image_to_tiff_rgb (const rasterliteImagePrt img, int *size)
          465  +image_to_tiff_rgb (const rasterliteImagePtr img, int *size)
   443    466   {
   444    467   /* compressing an RGBimage as TIFF  RGB */
   445    468       unsigned char *tiff_image = NULL;
   446    469       TIFF *out;
   447    470       int row;
   448    471       int col;
   449    472       int extimated_size;
................................................................................
   502    525   	  memcpy (tiff_image, clientdata.buffer, clientdata.eof);
   503    526   	  *size = clientdata.eof;
   504    527         }
   505    528       free (clientdata.buffer);
   506    529       return tiff_image;
   507    530   }
   508    531   
   509         -extern rasterliteImagePrt
          532  +extern rasterliteImagePtr
   510    533   image_from_tiff (int size, const void *data)
   511    534   {
   512    535   /* uncompressing a TIFF */
   513         -    rasterliteImagePrt img;
          536  +    rasterliteImagePtr img;
   514    537       uint16 bits_per_sample;
   515    538       uint16 samples_per_pixel;
   516    539       uint16 photometric;
   517    540       uint32 width = 0;
   518    541       uint32 height = 0;
   519    542       uint32 rows_strip = 0;
   520    543       uint32 *raster = NULL;

Added lib/rasterlite_version.c.

            1  +/* 
            2  +/ rasterlite_version.c
            3  +/
            4  +/ Version numbers
            5  +/
            6  +/ version 1.1a, 2011 November 12
            7  +/
            8  +/ Author: Sandro Furieri a.furieri@lqt.it
            9  +/
           10  +/ ------------------------------------------------------------------------------
           11  +/ 
           12  +/ Version: MPL 1.1/GPL 2.0/LGPL 2.1
           13  +/ 
           14  +/ The contents of this file are subject to the Mozilla Public License Version
           15  +/ 1.1 (the "License"); you may not use this file except in compliance with
           16  +/ the License. You may obtain a copy of the License at
           17  +/ http://www.mozilla.org/MPL/
           18  +/ 
           19  +/ Software distributed under the License is distributed on an "AS IS" basis,
           20  +/ WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
           21  +/ for the specific language governing rights and limitations under the
           22  +/ License.
           23  +/
           24  +/ The Original Code is the RasterLite library
           25  +/
           26  +/ The Initial Developer of the Original Code is Alessandro Furieri
           27  +/ 
           28  +/ Portions created by the Initial Developer are Copyright (C) 2009
           29  +/ the Initial Developer. All Rights Reserved.
           30  +/
           31  +/ Alternatively, the contents of this file may be used under the terms of
           32  +/ either the GNU General Public License Version 2 or later (the "GPL"), or
           33  +/ the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
           34  +/ in which case the provisions of the GPL or the LGPL are applicable instead
           35  +/ of those above. If you wish to allow use of your version of this file only
           36  +/ under the terms of either the GPL or the LGPL, and not to allow others to
           37  +/ use your version of this file under the terms of the MPL, indicate your
           38  +/ decision by deleting the provisions above and replace them with the notice
           39  +/ and other provisions required by the GPL or the LGPL. If you do not delete
           40  +/ the provisions above, a recipient may use your version of this file under
           41  +/ the terms of any one of the MPL, the GPL or the LGPL.
           42  +/ 
           43  +*/
           44  +#include "config.h"
           45  +
           46  +#ifdef SPATIALITE_AMALGAMATION
           47  +#include <spatialite/sqlite3.h>
           48  +#else
           49  +#include <sqlite3.h>
           50  +#endif
           51  +
           52  +#include "rasterlite.h"
           53  +
           54  +const char rasterliteversion[] = VERSION;
           55  +
           56  +RASTERLITE_DECLARE const char *
           57  +rasterliteGetVersion (void)
           58  +{
           59  +    return rasterliteversion;
           60  +}

Deleted lib/rasterlite_wavelet.c.

     1         -/* 
     2         -/ rasterlite_wavelet.c
     3         -/
     4         -/ WAVELET auxiliary helpers
     5         -/
     6         -/ version 1.0, 2009 June 5
     7         -/
     8         -/ Author: Sandro Furieri a.furieri@lqt.it
     9         -/
    10         -/ Copyright (C) 2009  Alessandro Furieri
    11         -/
    12         -/    This program is free software: you can redistribute it and/or modify
    13         -/    it under the terms of the GNU General Public License as published by
    14         -/    the Free Software Foundation, either version 3 of the License, or
    15         -/    (at your option) any later version.
    16         -/
    17         -/    This program is distributed in the hope that it will be useful,
    18         -/    but WITHOUT ANY WARRANTY; without even the implied warranty of
    19         -/    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    20         -/    GNU General Public License for more details.
    21         -/
    22         -/    You should have received a copy of the GNU General Public License
    23         -/    along with this program.  If not, see <http://www.gnu.org/licenses/>.
    24         -/
    25         -*/
    26         -
    27         -#include <stdio.h>
    28         -#include <math.h>
    29         -#include <string.h>
    30         -#include <stdlib.h>
    31         -
    32         -#include <epsilon.h>
    33         -
    34         -#include <spatialite/sqlite3.h>
    35         -#include <spatialite/gaiageo.h>
    36         -
    37         -#include <tiffio.h>
    38         -
    39         -#include "rasterlite_internals.h"
    40         -
    41         -/* 
    42         -/
    43         -/ this code is widely based upon the cmd_encode_file.c 
    44         -/ source from the 'epsilon' library
    45         -/
    46         -*/
    47         -
    48         -#define BIORTHOGONAL	1
    49         -
    50         -#define MAX(_x, _y)		((_x) > (_y) ? (_x) : (_y))
    51         -
    52         -typedef struct decode_ctx_tag
    53         -{
    54         -    int buf_size;
    55         -    int n_blocks;
    56         -    int *done_blocks;
    57         -    int W;
    58         -    int H;
    59         -    int max_block_w;
    60         -    int max_block_h;
    61         -    rasterliteImagePrt img;
    62         -    int image_type;
    63         -    unsigned char *input;
    64         -    int in_size;
    65         -    int in_base;
    66         -    int in_current;
    67         -    int *clear_len;
    68         -    int *stop_flag;
    69         -} decode_ctx;
    70         -
    71         -typedef struct encode_ctx_tag
    72         -{
    73         -    char *filter_id;
    74         -    int block_size;
    75         -    int mode;
    76         -    int bytes_per_block;
    77         -    double Y_ratio;
    78         -    double Cb_ratio;
    79         -    double Cr_ratio;
    80         -    int resample;
    81         -    int W;
    82         -    int H;
    83         -    rasterliteImagePrt img;
    84         -    int image_type;
    85         -    unsigned char *output;
    86         -    int out_size;
    87         -    int out_current;
    88         -    int n_blocks;
    89         -    int *done_blocks;
    90         -    int *clear_len;
    91         -    int *stop_flag;
    92         -} encode_ctx;
    93         -
    94         -static int
    95         -get_byte (decode_ctx * ctx)
    96         -{
    97         -/* fetching the next byte from the input source */
    98         -    if (ctx->in_current < ctx->in_size)
    99         -	return *(ctx->input + ctx->in_current++);
   100         -    return EOF;
   101         -}
   102         -
   103         -static int
   104         -decoder_read_next_block (decode_ctx * ctx, unsigned char *buf, int *buf_size)
   105         -{
   106         -/* inserting input into the input buffer [decompressed image] */
   107         -    unsigned char *next_byte;
   108         -    int bytes_left;
   109         -    int ch;
   110         -/* Copy no more than *buf_size bytes */
   111         -    bytes_left = *buf_size;
   112         -    next_byte = buf;
   113         -/* Find first non-marker byte */
   114         -    for (;;)
   115         -      {
   116         -	  ch = get_byte (ctx);
   117         -	  if (ch == EOF)
   118         -	      return 0;
   119         -	  if (ch != EPS_MARKER)
   120         -	    {
   121         -		*next_byte++ = (unsigned char) ch;
   122         -		bytes_left--;
   123         -		break;
   124         -	    }
   125         -      }
   126         -/* Copy data until next marker, EOF or buffer end */
   127         -    for (;;)
   128         -      {
   129         -	  ch = get_byte (ctx);
   130         -	  if ((ch == EOF) || (ch == EPS_MARKER))
   131         -	      break;
   132         -/* No more space in the buffer or currupted data. Continue until EOF or syncronization marker */
   133         -	  if (!bytes_left)
   134         -	      continue;
   135         -	  *next_byte++ = (unsigned char) ch;
   136         -	  bytes_left--;
   137         -      }
   138         -/* Actual number of read bytes */
   139         -    *buf_size = next_byte - buf;
   140         -    return 1;
   141         -}
   142         -
   143         -static int
   144         -guess_wavelet_type (decode_ctx * ctx, int *ext_type, int *width, int *height,
   145         -		    int *max_block_w, int *max_block_h)
   146         -{
   147         -/* Block buffer */
   148         -    unsigned char *buf;
   149         -    int buf_size;
   150         -/* Image characteristics */
   151         -    int W;
   152         -    int H;
   153         -    int w;
   154         -    int h;
   155         -    int type;
   156         -/* Allocate block buffer */
   157         -    buf_size = MAX (EPS_MAX_GRAYSCALE_BUF, EPS_MAX_TRUECOLOR_BUF);
   158         -    buf = (unsigned char *) eps_xmalloc (buf_size);
   159         -    W = H = w = h = type = -1;
   160         -/* For all blocks */
   161         -    while (1)
   162         -      {
   163         -	  eps_block_header hdr;
   164         -	  /* Read next block */
   165         -	  if (!decoder_read_next_block (ctx, buf, &buf_size))
   166         -	      break;
   167         -/* Parse block header */
   168         -	  if (eps_read_block_header (buf, buf_size, &hdr) != EPS_OK)
   169         -	      continue;
   170         -/* Check block header CRC */
   171         -	  if (hdr.chk_flag == EPS_BAD_CRC)
   172         -	      continue;
   173         -/* Image type */
   174         -	  if (type == -1)
   175         -	      type = hdr.block_type;
   176         -	  else
   177         -	    {
   178         -		if (type != hdr.block_type)
   179         -		    return 0;
   180         -	    }
   181         -/* Image width */
   182         -	  if (W == -1)
   183         -	      W = type == EPS_GRAYSCALE_BLOCK ? hdr.uhdr.gs.W : hdr.uhdr.tc.W;
   184         -	  else
   185         -	    {
   186         -		if (type == EPS_GRAYSCALE_BLOCK ? W != hdr.uhdr.gs.W : W !=
   187         -		    hdr.uhdr.tc.W)
   188         -		    return 0;
   189         -	    }
   190         -/* Image height */
   191         -	  if (H == -1)
   192         -	      H = type == EPS_GRAYSCALE_BLOCK ? hdr.uhdr.gs.H : hdr.uhdr.tc.H;
   193         -	  else
   194         -	    {
   195         -		if (type == EPS_GRAYSCALE_BLOCK ? H != hdr.uhdr.gs.H : H !=
   196         -		    hdr.uhdr.tc.H)
   197         -		    return 0;
   198         -	    }
   199         -/* Maximal block width and height */
   200         -	  if (type == EPS_GRAYSCALE_BLOCK)
   201         -	    {
   202         -		if (hdr.uhdr.gs.w > w)
   203         -		    w = hdr.uhdr.gs.w;
   204         -		if (hdr.uhdr.gs.h > h)
   205         -		    h = hdr.uhdr.gs.h;
   206         -	    }
   207         -	  else
   208         -	    {
   209         -		if (hdr.uhdr.tc.w > w)
   210         -		    w = hdr.uhdr.tc.w;
   211         -		if (hdr.uhdr.tc.h > h)
   212         -		    h = hdr.uhdr.tc.h;
   213         -	    }
   214         -      }
   215         -/* Rewind file and free buffer */
   216         -    ctx->in_current = ctx->in_base;
   217         -    free (buf);
   218         -/* Buggy file */
   219         -    if (type == -1 || W == -1 || H == -1 || w == -1 || h == -1)
   220         -	return 0;
   221         -/* Save results */
   222         -    *ext_type =
   223         -	(type == EPS_GRAYSCALE_BLOCK) ? IMAGE_WAVELET_BW : IMAGE_WAVELET_RGB;
   224         -    *width = W;
   225         -    *height = H;
   226         -    *max_block_w = w;
   227         -    *max_block_h = h;
   228         -    return 1;
   229         -}
   230         -
   231         -static int
   232         -encoder_read_grayscale (rasterliteImagePrt img, unsigned char **Y, int x,
   233         -			int y, int width, int height)
   234         -{
   235         -/* fetching GRAYSCALE pixels from the uncompressed image */
   236         -    int j;
   237         -    int i;
   238         -    int pixel;
   239         -    int *p_scan;
   240         -/* Check params for consistency */
   241         -    if (x < 0 || y < 0)
   242         -	return 0;
   243         -    if (x >= img->sx || y >= img->sy)
   244         -	return 0;
   245         -    if (width <= 0 || height <= 0)
   246         -	return 0;
   247         -    if (x + width > img->sx)
   248         -	return 0;
   249         -    if (y + height > img->sy)
   250         -	return 0;
   251         -    for (j = 0; j < height; j++)
   252         -      {
   253         -	  /* fetching image rows */
   254         -	  p_scan = img->pixels[y + j];
   255         -	  p_scan += x;
   256         -	  for (i = 0; i < width; i++)
   257         -	    {
   258         -		/* fetching pixel by scanline */
   259         -		pixel = *p_scan++;
   260         -		Y[j][i] = true_color_get_red (pixel);
   261         -	    }
   262         -      }
   263         -    return 1;
   264         -}
   265         -
   266         -static int
   267         -encoder_read_rgb (rasterliteImagePrt img, unsigned char **R, unsigned char **G,
   268         -		  unsigned char **B, int x, int y, int width, int height)
   269         -{
   270         -/* fetching RGB pixels from the uncompressed image */
   271         -    int j;
   272         -    int i;
   273         -    int pixel;
   274         -    int *p_scan;
   275         -/* Check params for consistency */
   276         -    if (x < 0 || y < 0)
   277         -	return 0;
   278         -    if (x >= img->sx || y >= img->sy)
   279         -	return 0;
   280         -    if (width <= 0 || height <= 0)
   281         -	return 0;
   282         -    if (x + width > img->sx)
   283         -	return 0;
   284         -    if (y + height > img->sy)
   285         -	return 0;
   286         -    for (j = 0; j < height; j++)
   287         -      {
   288         -	  /* fetching image rows */
   289         -	  p_scan = img->pixels[y + j];
   290         -	  p_scan += x;
   291         -	  for (i = 0; i < width; i++)
   292         -	    {
   293         -		/* fetching pixel by scanline */
   294         -		pixel = *p_scan++;
   295         -		R[j][i] = true_color_get_red (pixel);
   296         -		G[j][i] = true_color_get_green (pixel);
   297         -		B[j][i] = true_color_get_blue (pixel);
   298         -	    }
   299         -      }
   300         -    return 1;
   301         -}
   302         -
   303         -static int
   304         -decoder_write_grayscale (rasterliteImagePrt img, unsigned char **Y, int x,
   305         -			 int y, int width, int height)
   306         -{
   307         -/* feeding grayscale pixels into the uncompressed image */
   308         -    int i;
   309         -    int j;
   310         -    int gray;
   311         -    int *p_scan;
   312         -/* Check params for consistency */
   313         -    if ((x < 0) || (y < 0))
   314         -	return 0;
   315         -    if (x >= img->sx || y >= img->sy)
   316         -	return 0;
   317         -    if (width <= 0 || height <= 0)
   318         -	return 0;
   319         -    if (x + width > img->sx)
   320         -	return 0;
   321         -    if (y + height > img->sy)
   322         -	return 0;
   323         -    for (j = 0; j < height; j++)
   324         -      {
   325         -	  p_scan = img->pixels[y + j];
   326         -	  p_scan += x;
   327         -	  for (i = 0; i < width; i++)
   328         -	    {
   329         -		gray = Y[j][i];
   330         -		*p_scan++ = true_color (gray, gray, gray);
   331         -	    }
   332         -      }
   333         -    return 1;
   334         -}
   335         -
   336         -static int
   337         -decoder_write_rgb (rasterliteImagePrt img, unsigned char **R,
   338         -		   unsigned char **G, unsigned char **B, int x, int y,
   339         -		   int width, int height)
   340         -{
   341         -/* feeding RGB pixels into the uncompressed image */
   342         -    int i;
   343         -    int j;
   344         -    int red;
   345         -    int green;
   346         -    int blue;
   347         -    int *p_scan;
   348         -/* Check params for consistency */
   349         -    if ((x < 0) || (y < 0))
   350         -	return 0;
   351         -    if (x >= img->sx || y >= img->sy)
   352         -	return 0;
   353         -    if (width <= 0 || height <= 0)
   354         -	return 0;
   355         -    if (x + width > img->sx)
   356         -	return 0;
   357         -    if (y + height > img->sy)
   358         -	return 0;
   359         -    for (j = 0; j < height; j++)
   360         -      {
   361         -	  p_scan = img->pixels[y + j];
   362         -	  p_scan += x;
   363         -	  for (i = 0; i < width; i++)
   364         -	    {
   365         -		red = R[j][i];
   366         -		green = G[j][i];
   367         -		blue = B[j][i];
   368         -		*p_scan++ = true_color (red, green, blue);
   369         -	    }
   370         -      }
   371         -    return 1;
   372         -}
   373         -
   374         -static int
   375         -encoder_write_next_block (encode_ctx * ctx, unsigned char *buf, int buf_size)
   376         -{
   377         -/* inserting output into the output buffer [compressed image] */
   378         -    if (ctx->out_current + buf_size + 1 > ctx->out_size)
   379         -	return 0;
   380         -/* Write data */
   381         -    memcpy (ctx->output + ctx->out_current, buf, buf_size);
   382         -    ctx->out_current += buf_size;
   383         -/* Write syncronization marker */
   384         -    *(ctx->output + ctx->out_current) = EPS_MARKER;
   385         -    ctx->out_current++;
   386         -    return 1;
   387         -}
   388         -
   389         -static int
   390         -encode_blocks (encode_ctx * ctx)
   391         -{
   392         -/* Input buffers */
   393         -    unsigned char **Y;
   394         -    unsigned char **R;
   395         -    unsigned char **G;
   396         -    unsigned char **B;
   397         -/* Output buffer */
   398         -    unsigned char *buf;
   399         -    int buf_size;
   400         -    int x;
   401         -    int y;
   402         -    int w;
   403         -    int h;
   404         -    char header[128];
   405         -/* Handy shortcuts */
   406         -    int block_size = ctx->block_size;
   407         -    int W = ctx->W;
   408         -    int H = ctx->H;
   409         -/* Error flag */
   410         -    int error_flag = 0;
   411         -/* Write wavelet image header */
   412         -    strcpy (header, "StartWaveletsImage$$");
   413         -    if (!encoder_write_next_block
   414         -	(ctx, (unsigned char *) header, strlen (header)))
   415         -      {
   416         -	  error_flag = 1;
   417         -	  fprintf (stderr, "Waveletets-wrapper: Cannot write header\n");
   418         -	  goto error;
   419         -      }
   420         -/* Allocate input buffers */
   421         -    if (ctx->image_type == IMAGE_WAVELET_BW)
   422         -	Y = (unsigned char **) eps_malloc_2D (block_size, block_size,
   423         -					      sizeof (unsigned char));
   424         -    else
   425         -      {
   426         -	  R = (unsigned char **) eps_malloc_2D (block_size, block_size,
   427         -						sizeof (unsigned char));
   428         -	  G = (unsigned char **) eps_malloc_2D (block_size, block_size,
   429         -						sizeof (unsigned char));
   430         -	  B = (unsigned char **) eps_malloc_2D (block_size, block_size,
   431         -						sizeof (unsigned char));
   432         -      }
   433         -/* Allocate output buffer */
   434         -    buf = (unsigned char *) eps_xmalloc (ctx->bytes_per_block);
   435         -/* Process all blocks */
   436         -    for (y = 0; y < H; y += block_size)
   437         -      {
   438         -	  for (x = 0; x < W; x += block_size)
   439         -	    {
   440         -		/* Block width */
   441         -		if (x + block_size > W)
   442         -		    w = W - x;
   443         -		else
   444         -		    w = block_size;
   445         -		/* Block height */
   446         -		if (y + block_size > H)
   447         -		    h = H - y;
   448         -		else
   449         -		    h = block_size;
   450         -		/* Output buffer size (not including marker) */
   451         -		buf_size = ctx->bytes_per_block - 1;
   452         -		if (ctx->image_type == IMAGE_WAVELET_BW)
   453         -		  {
   454         -		      /* Read next block */
   455         -		      if (!encoder_read_grayscale (ctx->img, Y, x, y, w, h))
   456         -			{
   457         -			    error_flag = 1;
   458         -			    fprintf (stderr,
   459         -				     "Waveletets-wrapper: Cannot read block\n");
   460         -			    goto error;
   461         -			}
   462         -		      /* Encode block */
   463         -		      if (eps_encode_grayscale_block
   464         -			  (Y, W, H, w, h, x, y, buf, &buf_size, ctx->filter_id,
   465         -			   ctx->mode) != EPS_OK)
   466         -			{
   467         -			    /* All function parameters are checked at the moment,  so everything except EPS_OK is a logical error. */
   468         -			    error_flag = 1;
   469         -			    fprintf (stderr,
   470         -				     "Waveletets-wrapper: encoder error\n");
   471         -			    goto error;
   472         -			}
   473         -		      /* Write encoded block */
   474         -		      if (!encoder_write_next_block (ctx, buf, buf_size))
   475         -			{
   476         -			    error_flag = 1;
   477         -			    fprintf (stderr,
   478         -				     "Waveletets-wrapper: Cannot write block\n");
   479         -			    goto error;
   480         -			}
   481         -		  }
   482         -		else
   483         -		  {
   484         -		      /* Read next block */
   485         -		      if (!encoder_read_rgb (ctx->img, R, G, B, x, y, w, h))
   486         -			{
   487         -			    error_flag = 1;
   488         -			    fprintf (stderr,
   489         -				     "Waveletets-wrapper: Cannot read block\n");
   490         -			    goto error;
   491         -			}
   492         -		      /* Encode block */
   493         -		      if (eps_encode_truecolor_block
   494         -			  (R, G, B, W, H, w, h, x, y, ctx->resample, buf,
   495         -			   &buf_size, (int) (ctx->Y_ratio),
   496         -			   (int) (ctx->Cb_ratio), (int) (ctx->Cr_ratio),
   497         -			   ctx->filter_id, ctx->mode) != EPS_OK)
   498         -			{
   499         -			    /* All function parameters are checked at the moment,  so everything except EPS_OK is a logical error. */
   500         -			    error_flag = 1;
   501         -			    fprintf (stderr,
   502         -				     "Waveletets-wrapper: encoder error\n");
   503         -			    goto error;
   504         -			}
   505         -		      /* Write encoded block */
   506         -		      if (!encoder_write_next_block (ctx, buf, buf_size))
   507         -			{
   508         -			    error_flag = 1;
   509         -			    fprintf (stderr,
   510         -				     "Waveletets-wrapper: Cannot write block\n");
   511         -			    goto error;
   512         -			}
   513         -		  }
   514         -	    }
   515         -      }
   516         -/* Write wavelet image footer */
   517         -    strcpy (header, "$$EndWaveletsImage");
   518         -    if (!encoder_write_next_block
   519         -	(ctx, (unsigned char *) header, strlen (header)))
   520         -      {
   521         -	  error_flag = 1;
   522         -	  fprintf (stderr, "Waveletets-wrapper: Cannot write footer\n");
   523         -	  goto error;
   524         -      }
   525         -  error:
   526         -/* Free input buffers */
   527         -    if (ctx->image_type == IMAGE_WAVELET_BW)
   528         -	eps_free_2D ((void **) Y, block_size, block_size);
   529         -    else
   530         -      {
   531         -	  eps_free_2D ((void **) R, block_size, block_size);
   532         -	  eps_free_2D ((void **) G, block_size, block_size);
   533         -	  eps_free_2D ((void **) B, block_size, block_size);
   534         -      }
   535         -/* Free output buffer */
   536         -    free (buf);
   537         -/* Return 0 for success or 1 for error */
   538         -    return error_flag;
   539         -}
   540         -
   541         -static void *
   542         -wavelet_compress (rasterliteImagePrt img, int *size, int ratio, int image_type)
   543         -{
   544         -/* preparing the compression */
   545         -    int W;
   546         -    int H;
   547         -    int bytes_per_block;
   548         -    int x_blocks;
   549         -    int y_blocks;
   550         -    int n_blocks;
   551         -    int block_size = 257;
   552         -    int data_size;
   553         -    int done_blocks = 0;
   554         -    int clear_len = 0;
   555         -    int stop_flag = 0;
   556         -    encode_ctx ctx;
   557         -    int ret;
   558         -/* Get image width and height */
   559         -    W = img->sx;
   560         -    H = img->sy;
   561         -    data_size = img->sx * img->sy;
   562         -    if (image_type != IMAGE_WAVELET_BW)
   563         -	data_size *= 3;
   564         -/* Compute number of blocks */
   565         -    if (W % block_size)
   566         -	x_blocks = W / block_size + 1;
   567         -    else
   568         -	x_blocks = W / block_size;
   569         -    if (H % block_size)
   570         -	y_blocks = H / block_size + 1;
   571         -    else
   572         -	y_blocks = H / block_size;
   573         -/* Compute number of bytes per block */
   574         -    n_blocks = x_blocks * y_blocks;
   575         -    bytes_per_block = (int) ((double) data_size / (ratio * n_blocks));
   576         -/* Clip buffer size if needed */
   577         -    if (image_type == IMAGE_WAVELET_BW)
   578         -	bytes_per_block = MAX (bytes_per_block, EPS_MIN_GRAYSCALE_BUF + 1);
   579         -    else
   580         -	bytes_per_block = MAX (bytes_per_block, EPS_MIN_TRUECOLOR_BUF + 1);
   581         -    /* Prepare CTXs */
   582         -    ctx.filter_id = malloc (strlen ("daub97lift") + 1);
   583         -    strcpy (ctx.filter_id, "daub97lift");
   584         -    ctx.block_size = block_size;
   585         -    ctx.mode = EPS_MODE_OTLPF;
   586         -    ctx.bytes_per_block = bytes_per_block;
   587         -    ctx.Y_ratio = EPS_Y_RT;
   588         -    ctx.Cb_ratio = EPS_Cb_RT;
   589         -    ctx.Cr_ratio = EPS_Cr_RT;
   590         -    ctx.resample = EPS_RESAMPLE_420;
   591         -    ctx.W = W;
   592         -    ctx.H = H;
   593         -    ctx.img = img;
   594         -    ctx.image_type = image_type;
   595         -    ctx.output = malloc (1024 * 1024);
   596         -    ctx.out_size = 1024 * 1024;
   597         -    ctx.out_current = 0;
   598         -    ctx.n_blocks = n_blocks;
   599         -    ctx.done_blocks = &done_blocks;
   600         -    ctx.clear_len = &clear_len;
   601         -    ctx.stop_flag = &stop_flag;
   602         -/* performing actual encoding */
   603         -    ret = encode_blocks (&ctx);
   604         -/* memory clean-up */
   605         -    free (ctx.filter_id);
   606         -    if (ret)
   607         -      {
   608         -	  /* error case */
   609         -	  free (ctx.output);
   610         -	  *size = 0;
   611         -	  return NULL;
   612         -      }
   613         -    *size = ctx.out_current;
   614         -    return ctx.output;
   615         -}
   616         -
   617         -static int
   618         -decode_blocks (decode_ctx * ctx)
   619         -{
   620         -/* Input buffer */
   621         -    unsigned char *buf;
   622         -/* Output buffers */
   623         -    unsigned char **Y;
   624         -    unsigned char **R;
   625         -    unsigned char **G;
   626         -    unsigned char **B;
   627         -/* Handy shortcuts */
   628         -    int max_block_w = ctx->max_block_w;
   629         -    int max_block_h = ctx->max_block_h;
   630         -    int W = ctx->W;
   631         -    int H = ctx->H;
   632         -/* Error flag */
   633         -    int error_flag = 0;
   634         -/* Allocate input buffer */
   635         -    buf = (unsigned char *) eps_xmalloc (ctx->buf_size);
   636         -/* Allocate output buffers */
   637         -    if (ctx->image_type == IMAGE_WAVELET_BW)
   638         -	Y = (unsigned char **) eps_malloc_2D (max_block_w, max_block_h,
   639         -					      sizeof (unsigned char));
   640         -    else
   641         -      {
   642         -	  R = (unsigned char **) eps_malloc_2D (max_block_w, max_block_h,
   643         -						sizeof (unsigned char));
   644         -	  G = (unsigned char **) eps_malloc_2D (max_block_w, max_block_h,
   645         -						sizeof (unsigned char));
   646         -	  B = (unsigned char **) eps_malloc_2D (max_block_w, max_block_h,
   647         -						sizeof (unsigned char));
   648         -      }
   649         -/* Process blocks */
   650         -    while (1)
   651         -      {
   652         -	  eps_block_header hdr;
   653         -	  int real_buf_size = ctx->buf_size;
   654         -	  int rc;
   655         -	  /* Are there any unprocessed blocks? */
   656         -	  if (*ctx->done_blocks == ctx->n_blocks)
   657         -	      break;
   658         -	  else
   659         -	      (*ctx->done_blocks)++;
   660         -	  /* Read next input block */
   661         -	  if (!decoder_read_next_block (ctx, buf, &real_buf_size))
   662         -	    {
   663         -		error_flag = 1;
   664         -		fprintf (stderr, "Waveletets-wrapper: Cannot read block\n");
   665         -		goto error;
   666         -	    }
   667         -	  /* Parse and check block header */
   668         -	  rc = eps_read_block_header (buf, real_buf_size, &hdr);
   669         -	  if (rc != EPS_OK)
   670         -	    {
   671         -		error_flag = 1;
   672         -		fprintf (stderr, "Waveletets-wrapper: Malformed block\n");
   673         -		goto error;
   674         -	    }
   675         -	  /* Check header CRC flag */
   676         -	  if (hdr.chk_flag == EPS_BAD_CRC)
   677         -	    {
   678         -		error_flag = 1;
   679         -		fprintf (stderr, "Wavelet-wrapper: Incorrect header CRC\n");
   680         -		goto error;
   681         -	    }
   682         -	  /* Check data CRC flag */
   683         -	  if (hdr.crc_flag == EPS_BAD_CRC)
   684         -	    {
   685         -		error_flag = 1;
   686         -		fprintf (stderr, "Wavelet-wrapper: Incorrect data CRC\n");
   687         -		goto error;
   688         -	    }
   689         -	  if (ctx->image_type == IMAGE_WAVELET_BW)
   690         -	    {
   691         -		/* Skip over broken blocks */
   692         -		if ((hdr.uhdr.gs.W != W) || (hdr.uhdr.gs.H != H))
   693         -		    continue;
   694         -		/* All function parameters are checked at the moment so everything except EPS_OK is a logical error. */
   695         -		rc = eps_decode_grayscale_block (Y, buf, &hdr);
   696         -		if (rc != EPS_OK)
   697         -		  {
   698         -		      error_flag = 1;
   699         -		      fprintf (stderr, "Wavelet-wrapper: decode error\n");
   700         -		      goto error;
   701         -		  }
   702         -		if (!decoder_write_grayscale
   703         -		    (ctx->img, Y, hdr.uhdr.gs.x, hdr.uhdr.gs.y, hdr.uhdr.gs.w,
   704         -		     hdr.uhdr.gs.h))
   705         -		  {
   706         -		      error_flag = 1;
   707         -		      fprintf (stderr, "Wavelet-wrapper: cannot write block\n");
   708         -		      goto error;
   709         -		  }
   710         -	    }
   711         -	  else
   712         -	    {
   713         -		/* Skip over broken blocks */
   714         -		if ((hdr.uhdr.tc.W != W) || (hdr.uhdr.tc.H != H))
   715         -		    continue;
   716         -		/* Decode block */
   717         -		rc = eps_decode_truecolor_block (R, G, B, buf, &hdr);
   718         -		if (rc != EPS_OK)
   719         -		  {
   720         -		      error_flag = 1;
   721         -		      fprintf (stderr, "Wavelet-wrapper: decode error\n");
   722         -		      goto error;
   723         -		  }
   724         -		/* Write encoded block */
   725         -		if (!decoder_write_rgb
   726         -		    (ctx->img, R, G, B, hdr.uhdr.tc.x, hdr.uhdr.tc.y,
   727         -		     hdr.uhdr.tc.w, hdr.uhdr.tc.h))
   728         -		  {
   729         -		      error_flag = 1;
   730         -		      fprintf (stderr, "Wavelet-wrapper: cannot write block\n");
   731         -		      goto error;
   732         -		  }
   733         -	    }
   734         -      }
   735         -  error:
   736         -/* Free input buffer */
   737         -    free (buf);
   738         -/* Free output buffers */
   739         -    if (ctx->image_type == IMAGE_WAVELET_BW)
   740         -	eps_free_2D ((void **) Y, max_block_w, max_block_h);
   741         -    else
   742         -      {
   743         -	  eps_free_2D ((void **) R, max_block_w, max_block_h);
   744         -	  eps_free_2D ((void **) G, max_block_w, max_block_h);
   745         -	  eps_free_2D ((void **) B, max_block_w, max_block_h);
   746         -      }
   747         -/* Return 0 for success or 1 for error */
   748         -    return error_flag;
   749         -}
   750         -
   751         -static int
   752         -check_header (const void *data, int size)
   753         -{
   754         -/* checking the SpatiaLite header */
   755         -    int len;
   756         -    char to_check[64];
   757         -    strcpy (to_check, "StartWaveletsImage$$");
   758         -    len = strlen (to_check) + 1;
   759         -    if (size > len)
   760         -      {
   761         -	  if (memcmp ((char *) data, to_check, len) == 0)
   762         -	      return len;
   763         -      }
   764         -    return 0;
   765         -}
   766         -
   767         -static int
   768         -check_footer (const void *data, int size)
   769         -{
   770         -/* checking the SpatiaLite footer */
   771         -    int len;
   772         -    char to_check[64];
   773         -    strcpy (to_check, "$$EndWaveletsImage");
   774         -    len = strlen (to_check) + 1;
   775         -    if (size > len)
   776         -      {
   777         -	  if (memcmp ((char *) data + (size - len), to_check, len) == 0)
   778         -	      return len;
   779         -      }
   780         -    return 0;
   781         -}
   782         -
   783         -static rasterliteImagePrt
   784         -wavelet_uncompress (int size, const void *data)
   785         -{
   786         -/* preparing the decompression */
   787         -    rasterliteImagePrt img;
   788         -    int ret;
   789         -    decode_ctx ctx;
   790         -/* Input buffer size */
   791         -    int buf_size;
   792         -/* Miscellaneous block stuff */
   793         -    int max_block_w;
   794         -    int max_block_h;
   795         -    int x_blocks;
   796         -    int y_blocks;
   797         -    int n_blocks;
   798         -    int done_blocks = 0;
   799         -    int clear_len = 0;
   800         -    int stop_flag = 0;
   801         -    int W;
   802         -    int H;
   803         -    int ext_type;
   804         -    int len;
   805         -/* checking the SpatiaLite header and footer */
   806         -    ctx.input = (unsigned char *) data;
   807         -    ctx.in_size = size;
   808         -    ctx.in_current = 0;
   809         -    len = check_header (data, size);
   810         -    if (len)
   811         -	ctx.in_current += len;
   812         -    else
   813         -	return NULL;
   814         -    len = check_footer (data, size);
   815         -    if (len)
   816         -	ctx.in_size -= len;
   817         -    else
   818         -	return NULL;
   819         -    ctx.in_base = ctx.in_current;
   820         -    if (!guess_wavelet_type
   821         -	(&ctx, &ext_type, &W, &H, &max_block_w, &max_block_h))
   822         -	return NULL;
   823         -    img = image_create (W, H);
   824         -/* Compute number of blocks */
   825         -    if (W % max_block_w)
   826         -	x_blocks = W / max_block_w + 1;
   827         -    else
   828         -	x_blocks = W / max_block_w;
   829         -    if (H % max_block_h)
   830         -	y_blocks = H / max_block_h + 1;
   831         -    else
   832         -	y_blocks = H / max_block_h;
   833         -/* Compute total number of blocks in the file */
   834         -    n_blocks = x_blocks * y_blocks;
   835         -    stop_flag = 0;
   836         -/* Prepare CTXs */
   837         -    if (ext_type == IMAGE_WAVELET_RGB)
   838         -      {
   839         -	  img->color_space = COLORSPACE_RGB;
   840         -	  buf_size = EPS_MAX_GRAYSCALE_BUF;
   841         -      }
   842         -    else
   843         -      {
   844         -	  img->color_space = COLORSPACE_GRAYSCALE;
   845         -	  buf_size = EPS_MAX_TRUECOLOR_BUF;
   846         -      }
   847         -    ctx.buf_size = buf_size;
   848         -    ctx.n_blocks = n_blocks;
   849         -    ctx.done_blocks = &done_blocks;
   850         -    ctx.clear_len = &clear_len;
   851         -    ctx.W = W;
   852         -    ctx.H = H;
   853         -    ctx.img = img;
   854         -    ctx.max_block_w = max_block_w;
   855         -    ctx.max_block_h = max_block_h;
   856         -    ctx.stop_flag = &stop_flag;
   857         -/* Decode blocks */
   858         -    ret = decode_blocks (&ctx);
   859         -    if (ret == 0)
   860         -	return img;
   861         -    image_destroy (img);
   862         -    return NULL;
   863         -}
   864         -
   865         -extern void *
   866         -image_to_wavelet (const rasterliteImagePrt img, int *size, int ratio)
   867         -{
   868         -/* compressing an image as WAVELET RGB */
   869         -    return wavelet_compress (img, size, ratio, IMAGE_WAVELET_RGB);
   870         -}
   871         -
   872         -extern void *
   873         -image_to_wavelet_grayscale (const rasterliteImagePrt img, int *size, int ratio)
   874         -{
   875         -/* compressing an image as JPEG WAVELET GRAYSCALE */
   876         -    return wavelet_compress (img, size, ratio, IMAGE_WAVELET_BW);
   877         -}
   878         -
   879         -extern rasterliteImagePrt
   880         -image_from_wavelet (int size, const void *data)
   881         -{
   882         -/* uncompressing a WAVELET compressed image */
   883         -    rasterliteImagePrt img;
   884         -    img = wavelet_uncompress (size, data);
   885         -    return img;
   886         -}

Deleted librasterlite.def.

     1         -LIBRARY rasterlite.dll
     2         -EXPORTS
     3         -rasterliteClose
     4         -rasterliteExportGeoTiff
     5         -rasterliteGetBackgroundColor
     6         -rasterliteGetBestAccess
     7         -rasterliteGetExtent
     8         -rasterliteGetLastError
     9         -rasterliteGetLevels
    10         -rasterliteGetPath
    11         -rasterliteGetRaster
    12         -rasterliteGetRaster2
    13         -rasterliteGetRasterByRect
    14         -rasterliteGetRasterByRect2
    15         -rasterliteGetResolution
    16         -rasterliteGetSpatialiteVersion
    17         -rasterliteGetSqliteVersion
    18         -rasterliteGetSrid
    19         -rasterliteGetTablePrefix
    20         -rasterliteGetTransparentColor
    21         -rasterliteHasTransparentColor
    22         -rasterliteIsError
    23         -rasterliteOpen
    24         -rasterliteSetBackgroundColor
    25         -rasterliteSetTransparentColor
    26         -rasterliteWaveletToPng

Changes to ltmain.sh.

more than 10,000 changes

Added m4/libtool.m4.

            1  +# libtool.m4 - Configure libtool for the host system. -*-Autoconf-*-
            2  +#
            3  +#   Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005,
            4  +#                 2006, 2007, 2008, 2009, 2010 Free Software Foundation,
            5  +#                 Inc.
            6  +#   Written by Gordon Matzigkeit, 1996
            7  +#
            8  +# This file is free software; the Free Software Foundation gives
            9  +# unlimited permission to copy and/or distribute it, with or without
           10  +# modifications, as long as this notice is preserved.
           11  +
           12  +m4_define([_LT_COPYING], [dnl
           13  +#   Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005,
           14  +#                 2006, 2007, 2008, 2009, 2010 Free Software Foundation,
           15  +#                 Inc.
           16  +#   Written by Gordon Matzigkeit, 1996
           17  +#
           18  +#   This file is part of GNU Libtool.
           19  +#
           20  +# GNU Libtool is free software; you can redistribute it and/or
           21  +# modify it under the terms of the GNU General Public License as
           22  +# published by the Free Software Foundation; either version 2 of
           23  +# the License, or (at your option) any later version.
           24  +#
           25  +# As a special exception to the GNU General Public License,
           26  +# if you distribute this file as part of a program or library that
           27  +# is built using GNU Libtool, you may include this file under the
           28  +# same distribution terms that you use for the rest of that program.
           29  +#
           30  +# GNU Libtool is distributed in the hope that it will be useful,
           31  +# but WITHOUT ANY WARRANTY; without even the implied warranty of
           32  +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
           33  +# GNU General Public License for more details.
           34  +#
           35  +# You should have received a copy of the GNU General Public License
           36  +# along with GNU Libtool; see the file COPYING.  If not, a copy
           37  +# can be downloaded from http://www.gnu.org/licenses/gpl.html, or
           38  +# obtained by writing to the Free Software Foundation, Inc.,
           39  +# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
           40  +])
           41  +
           42  +# serial 57 LT_INIT
           43  +
           44  +
           45  +# LT_PREREQ(VERSION)
           46  +# ------------------
           47  +# Complain and exit if this libtool version is less that VERSION.
           48  +m4_defun([LT_PREREQ],
           49  +[m4_if(m4_version_compare(m4_defn([LT_PACKAGE_VERSION]), [$1]), -1,
           50  +       [m4_default([$3],
           51  +		   [m4_fatal([Libtool version $1 or higher is required],
           52  +		             63)])],
           53  +       [$2])])
           54  +
           55  +
           56  +# _LT_CHECK_BUILDDIR
           57  +# ------------------
           58  +# Complain if the absolute build directory name contains unusual characters
           59  +m4_defun([_LT_CHECK_BUILDDIR],
           60  +[case `pwd` in
           61  +  *\ * | *\	*)
           62  +    AC_MSG_WARN([Libtool does not cope well with whitespace in `pwd`]) ;;
           63  +esac
           64  +])
           65  +
           66  +
           67  +# LT_INIT([OPTIONS])
           68  +# ------------------
           69  +AC_DEFUN([LT_INIT],
           70  +[AC_PREREQ([2.58])dnl We use AC_INCLUDES_DEFAULT
           71  +AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl
           72  +AC_BEFORE([$0], [LT_LANG])dnl
           73  +AC_BEFORE([$0], [LT_OUTPUT])dnl
           74  +AC_BEFORE([$0], [LTDL_INIT])dnl
           75  +m4_require([_LT_CHECK_BUILDDIR])dnl
           76  +
           77  +dnl Autoconf doesn't catch unexpanded LT_ macros by default:
           78  +m4_pattern_forbid([^_?LT_[A-Z_]+$])dnl
           79  +m4_pattern_allow([^(_LT_EOF|LT_DLGLOBAL|LT_DLLAZY_OR_NOW|LT_MULTI_MODULE)$])dnl
           80  +dnl aclocal doesn't pull ltoptions.m4, ltsugar.m4, or ltversion.m4
           81  +dnl unless we require an AC_DEFUNed macro:
           82  +AC_REQUIRE([LTOPTIONS_VERSION])dnl
           83  +AC_REQUIRE([LTSUGAR_VERSION])dnl
           84  +AC_REQUIRE([LTVERSION_VERSION])dnl
           85  +AC_REQUIRE([LTOBSOLETE_VERSION])dnl
           86  +m4_require([_LT_PROG_LTMAIN])dnl
           87  +
           88  +_LT_SHELL_INIT([SHELL=${CONFIG_SHELL-/bin/sh}])
           89  +
           90  +dnl Parse OPTIONS
           91  +_LT_SET_OPTIONS([$0], [$1])
           92  +
           93  +# This can be used to rebuild libtool when needed
           94  +LIBTOOL_DEPS="$ltmain"
           95  +
           96  +# Always use our own libtool.
           97  +LIBTOOL='$(SHELL) $(top_builddir)/libtool'
           98  +AC_SUBST(LIBTOOL)dnl
           99  +
          100  +_LT_SETUP
          101  +
          102  +# Only expand once:
          103  +m4_define([LT_INIT])
          104  +])# LT_INIT
          105  +
          106  +# Old names:
          107  +AU_ALIAS([AC_PROG_LIBTOOL], [LT_INIT])
          108  +AU_ALIAS([AM_PROG_LIBTOOL], [LT_INIT])
          109  +dnl aclocal-1.4 backwards compatibility:
          110  +dnl AC_DEFUN([AC_PROG_LIBTOOL], [])
          111  +dnl AC_DEFUN([AM_PROG_LIBTOOL], [])
          112  +
          113  +
          114  +# _LT_CC_BASENAME(CC)
          115  +# -------------------
          116  +# Calculate cc_basename.  Skip known compiler wrappers and cross-prefix.
          117  +m4_defun([_LT_CC_BASENAME],
          118  +[for cc_temp in $1""; do
          119  +  case $cc_temp in
          120  +    compile | *[[\\/]]compile | ccache | *[[\\/]]ccache ) ;;
          121  +    distcc | *[[\\/]]distcc | purify | *[[\\/]]purify ) ;;
          122  +    \-*) ;;
          123  +    *) break;;
          124  +  esac
          125  +done
          126  +cc_basename=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"`
          127  +])
          128  +
          129  +
          130  +# _LT_FILEUTILS_DEFAULTS
          131  +# ----------------------
          132  +# It is okay to use these file commands and assume they have been set
          133  +# sensibly after `m4_require([_LT_FILEUTILS_DEFAULTS])'.
          134  +m4_defun([_LT_FILEUTILS_DEFAULTS],
          135  +[: ${CP="cp -f"}
          136  +: ${MV="mv -f"}
          137  +: ${RM="rm -f"}
          138  +])# _LT_FILEUTILS_DEFAULTS
          139  +
          140  +
          141  +# _LT_SETUP
          142  +# ---------
          143  +m4_defun([_LT_SETUP],
          144  +[AC_REQUIRE([AC_CANONICAL_HOST])dnl
          145  +AC_REQUIRE([AC_CANONICAL_BUILD])dnl
          146  +AC_REQUIRE([_LT_PREPARE_SED_QUOTE_VARS])dnl
          147  +AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH])dnl
          148  +
          149  +_LT_DECL([], [host_alias], [0], [The host system])dnl
          150  +_LT_DECL([], [host], [0])dnl
          151  +_LT_DECL([], [host_os], [0])dnl
          152  +dnl
          153  +_LT_DECL([], [build_alias], [0], [The build system])dnl
          154  +_LT_DECL([], [build], [0])dnl
          155  +_LT_DECL([], [build_os], [0])dnl
          156  +dnl
          157  +AC_REQUIRE([AC_PROG_CC])dnl
          158  +AC_REQUIRE([LT_PATH_LD])dnl
          159  +AC_REQUIRE([LT_PATH_NM])dnl
          160  +dnl
          161  +AC_REQUIRE([AC_PROG_LN_S])dnl
          162  +test -z "$LN_S" && LN_S="ln -s"
          163  +_LT_DECL([], [LN_S], [1], [Whether we need soft or hard links])dnl
          164  +dnl
          165  +AC_REQUIRE([LT_CMD_MAX_LEN])dnl
          166  +_LT_DECL([objext], [ac_objext], [0], [Object file suffix (normally "o")])dnl
          167  +_LT_DECL([], [exeext], [0], [Executable file suffix (normally "")])dnl
          168  +dnl
          169  +m4_require([_LT_FILEUTILS_DEFAULTS])dnl
          170  +m4_require([_LT_CHECK_SHELL_FEATURES])dnl
          171  +m4_require([_LT_PATH_CONVERSION_FUNCTIONS])dnl
          172  +m4_require([_LT_CMD_RELOAD])dnl
          173  +m4_require([_LT_CHECK_MAGIC_METHOD])dnl
          174  +m4_require([_LT_CHECK_SHAREDLIB_FROM_LINKLIB])dnl
          175  +m4_require([_LT_CMD_OLD_ARCHIVE])dnl
          176  +m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl
          177  +m4_require([_LT_WITH_SYSROOT])dnl
          178  +
          179  +_LT_CONFIG_LIBTOOL_INIT([
          180  +# See if we are running on zsh, and set the options which allow our
          181  +# commands through without removal of \ escapes INIT.
          182  +if test -n "\${ZSH_VERSION+set}" ; then
          183  +   setopt NO_GLOB_SUBST
          184  +fi
          185  +])
          186  +if test -n "${ZSH_VERSION+set}" ; then
          187  +   setopt NO_GLOB_SUBST
          188  +fi
          189  +
          190  +_LT_CHECK_OBJDIR
          191  +
          192  +m4_require([_LT_TAG_COMPILER])dnl
          193  +
          194  +case $host_os in
          195  +aix3*)
          196  +  # AIX sometimes has problems with the GCC collect2 program.  For some
          197  +  # reason, if we set the COLLECT_NAMES environment variable, the problems
          198  +  # vanish in a puff of smoke.
          199  +  if test "X${COLLECT_NAMES+set}" != Xset; then
          200  +    COLLECT_NAMES=
          201  +    export COLLECT_NAMES
          202  +  fi
          203  +  ;;
          204  +esac
          205  +
          206  +# Global variables:
          207  +ofile=libtool
          208  +can_build_shared=yes
          209  +
          210  +# All known linkers require a `.a' archive for static linking (except MSVC,
          211  +# which needs '.lib').
          212  +libext=a
          213  +
          214  +with_gnu_ld="$lt_cv_prog_gnu_ld"
          215  +
          216  +old_CC="$CC"
          217  +old_CFLAGS="$CFLAGS"
          218  +
          219  +# Set sane defaults for various variables
          220  +test -z "$CC" && CC=cc
          221  +test -z "$LTCC" && LTCC=$CC
          222  +test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS
          223  +test -z "$LD" && LD=ld
          224  +test -z "$ac_objext" && ac_objext=o
          225  +
          226  +_LT_CC_BASENAME([$compiler])
          227  +
          228  +# Only perform the check for file, if the check method requires it
          229  +test -z "$MAGIC_CMD" && MAGIC_CMD=file
          230  +case $deplibs_check_method in
          231  +file_magic*)
          232  +  if test "$file_magic_cmd" = '$MAGIC_CMD'; then
          233  +    _LT_PATH_MAGIC
          234  +  fi
          235  +  ;;
          236  +esac
          237  +
          238  +# Use C for the default configuration in the libtool script
          239  +LT_SUPPORTED_TAG([CC])
          240  +_LT_LANG_C_CONFIG
          241  +_LT_LANG_DEFAULT_CONFIG
          242  +_LT_CONFIG_COMMANDS
          243  +])# _LT_SETUP
          244  +
          245  +
          246  +# _LT_PREPARE_SED_QUOTE_VARS
          247  +# --------------------------
          248  +# Define a few sed substitution that help us do robust quoting.
          249  +m4_defun([_LT_PREPARE_SED_QUOTE_VARS],
          250  +[# Backslashify metacharacters that are still active within
          251  +# double-quoted strings.
          252  +sed_quote_subst='s/\([["`$\\]]\)/\\\1/g'
          253  +
          254  +# Same as above, but do not quote variable references.
          255  +double_quote_subst='s/\([["`\\]]\)/\\\1/g'
          256  +
          257  +# Sed substitution to delay expansion of an escaped shell variable in a
          258  +# double_quote_subst'ed string.
          259  +delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g'
          260  +
          261  +# Sed substitution to delay expansion of an escaped single quote.
          262  +delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g'
          263  +
          264  +# Sed substitution to avoid accidental globbing in evaled expressions
          265  +no_glob_subst='s/\*/\\\*/g'
          266  +])
          267  +
          268  +# _LT_PROG_LTMAIN
          269  +# ---------------
          270  +# Note that this code is called both from `configure', and `config.status'
          271  +# now that we use AC_CONFIG_COMMANDS to generate libtool.  Notably,
          272  +# `config.status' has no value for ac_aux_dir unless we are using Automake,
          273  +# so we pass a copy along to make sure it has a sensible value anyway.
          274  +m4_defun([_LT_PROG_LTMAIN],
          275  +[m4_ifdef([AC_REQUIRE_AUX_FILE], [AC_REQUIRE_AUX_FILE([ltmain.sh])])dnl
          276  +_LT_CONFIG_LIBTOOL_INIT([ac_aux_dir='$ac_aux_dir'])
          277  +ltmain="$ac_aux_dir/ltmain.sh"
          278  +])# _LT_PROG_LTMAIN
          279  +
          280  +
          281  +## ------------------------------------- ##
          282  +## Accumulate code for creating libtool. ##
          283  +## ------------------------------------- ##
          284  +
          285  +# So that we can recreate a full libtool script including additional
          286  +# tags, we accumulate the chunks of code to send to AC_CONFIG_COMMANDS
          287  +# in macros and then make a single call at the end using the `libtool'
          288  +# label.
          289  +
          290  +
          291  +# _LT_CONFIG_LIBTOOL_INIT([INIT-COMMANDS])
          292  +# ----------------------------------------
          293  +# Register INIT-COMMANDS to be passed to AC_CONFIG_COMMANDS later.
          294  +m4_define([_LT_CONFIG_LIBTOOL_INIT],
          295  +[m4_ifval([$1],
          296  +          [m4_append([_LT_OUTPUT_LIBTOOL_INIT],
          297  +                     [$1
          298  +])])])
          299  +
          300  +# Initialize.
          301  +m4_define([_LT_OUTPUT_LIBTOOL_INIT])
          302  +
          303  +
          304  +# _LT_CONFIG_LIBTOOL([COMMANDS])
          305  +# ------------------------------
          306  +# Register COMMANDS to be passed to AC_CONFIG_COMMANDS later.
          307  +m4_define([_LT_CONFIG_LIBTOOL],
          308  +[m4_ifval([$1],
          309  +          [m4_append([_LT_OUTPUT_LIBTOOL_COMMANDS],
          310  +                     [$1
          311  +])])])
          312  +
          313  +# Initialize.
          314  +m4_define([_LT_OUTPUT_LIBTOOL_COMMANDS])
          315  +
          316  +
          317  +# _LT_CONFIG_SAVE_COMMANDS([COMMANDS], [INIT_COMMANDS])
          318  +# -----------------------------------------------------
          319  +m4_defun([_LT_CONFIG_SAVE_COMMANDS],
          320  +[_LT_CONFIG_LIBTOOL([$1])
          321  +_LT_CONFIG_LIBTOOL_INIT([$2])
          322  +])
          323  +
          324  +
          325  +# _LT_FORMAT_COMMENT([COMMENT])
          326  +# -----------------------------
          327  +# Add leading comment marks to the start of each line, and a trailing
          328  +# full-stop to the whole comment if one is not present already.
          329  +m4_define([_LT_FORMAT_COMMENT],
          330  +[m4_ifval([$1], [
          331  +m4_bpatsubst([m4_bpatsubst([$1], [^ *], [# ])],
          332  +              [['`$\]], [\\\&])]m4_bmatch([$1], [[!?.]$], [], [.])
          333  +)])
          334  +
          335  +
          336  +
          337  +## ------------------------ ##
          338  +## FIXME: Eliminate VARNAME ##
          339  +## ------------------------ ##
          340  +
          341  +
          342  +# _LT_DECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION], [IS-TAGGED?])
          343  +# -------------------------------------------------------------------
          344  +# CONFIGNAME is the name given to the value in the libtool script.
          345  +# VARNAME is the (base) name used in the configure script.
          346  +# VALUE may be 0, 1 or 2 for a computed quote escaped value based on
          347  +# VARNAME.  Any other value will be used directly.
          348  +m4_define([_LT_DECL],
          349  +[lt_if_append_uniq([lt_decl_varnames], [$2], [, ],
          350  +    [lt_dict_add_subkey([lt_decl_dict], [$2], [libtool_name],
          351  +	[m4_ifval([$1], [$1], [$2])])
          352  +    lt_dict_add_subkey([lt_decl_dict], [$2], [value], [$3])
          353  +    m4_ifval([$4],
          354  +	[lt_dict_add_subkey([lt_decl_dict], [$2], [description], [$4])])
          355  +    lt_dict_add_subkey([lt_decl_dict], [$2],
          356  +	[tagged?], [m4_ifval([$5], [yes], [no])])])
          357  +])
          358  +
          359  +
          360  +# _LT_TAGDECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION])
          361  +# --------------------------------------------------------
          362  +m4_define([_LT_TAGDECL], [_LT_DECL([$1], [$2], [$3], [$4], [yes])])
          363  +
          364  +
          365  +# lt_decl_tag_varnames([SEPARATOR], [VARNAME1...])
          366  +# ------------------------------------------------
          367  +m4_define([lt_decl_tag_varnames],
          368  +[_lt_decl_filter([tagged?], [yes], $@)])
          369  +
          370  +
          371  +# _lt_decl_filter(SUBKEY, VALUE, [SEPARATOR], [VARNAME1..])
          372  +# ---------------------------------------------------------
          373  +m4_define([_lt_decl_filter],
          374  +[m4_case([$#],
          375  +  [0], [m4_fatal([$0: too few arguments: $#])],
          376  +  [1], [m4_fatal([$0: too few arguments: $#: $1])],
          377  +  [2], [lt_dict_filter([lt_decl_dict], [$1], [$2], [], lt_decl_varnames)],
          378  +  [3], [lt_dict_filter([lt_decl_dict], [$1], [$2], [$3], lt_decl_varnames)],
          379  +  [lt_dict_filter([lt_decl_dict], $@)])[]dnl
          380  +])
          381  +
          382  +
          383  +# lt_decl_quote_varnames([SEPARATOR], [VARNAME1...])
          384  +# --------------------------------------------------
          385  +m4_define([lt_decl_quote_varnames],
          386  +[_lt_decl_filter([value], [1], $@)])
          387  +
          388  +
          389  +# lt_decl_dquote_varnames([SEPARATOR], [VARNAME1...])
          390  +# ---------------------------------------------------
          391  +m4_define([lt_decl_dquote_varnames],
          392  +[_lt_decl_filter([value], [2], $@)])
          393  +
          394  +
          395  +# lt_decl_varnames_tagged([SEPARATOR], [VARNAME1...])
          396  +# ---------------------------------------------------
          397  +m4_define([lt_decl_varnames_tagged],
          398  +[m4_assert([$# <= 2])dnl
          399  +_$0(m4_quote(m4_default([$1], [[, ]])),
          400  +    m4_ifval([$2], [[$2]], [m4_dquote(lt_decl_tag_varnames)]),
          401  +    m4_split(m4_normalize(m4_quote(_LT_TAGS)), [ ]))])
          402  +m4_define([_lt_decl_varnames_tagged],
          403  +[m4_ifval([$3], [lt_combine([$1], [$2], [_], $3)])])
          404  +
          405  +
          406  +# lt_decl_all_varnames([SEPARATOR], [VARNAME1...])
          407  +# ------------------------------------------------
          408  +m4_define([lt_decl_all_varnames],
          409  +[_$0(m4_quote(m4_default([$1], [[, ]])),
          410  +     m4_if([$2], [],
          411  +	   m4_quote(lt_decl_varnames),
          412  +	m4_quote(m4_shift($@))))[]dnl
          413  +])
          414  +m4_define([_lt_decl_all_varnames],
          415  +[lt_join($@, lt_decl_varnames_tagged([$1],
          416  +			lt_decl_tag_varnames([[, ]], m4_shift($@))))dnl
          417  +])
          418  +
          419  +
          420  +# _LT_CONFIG_STATUS_DECLARE([VARNAME])
          421  +# ------------------------------------
          422  +# Quote a variable value, and forward it to `config.status' so that its
          423  +# declaration there will have the same value as in `configure'.  VARNAME
          424  +# must have a single quote delimited value for this to work.
          425  +m4_define([_LT_CONFIG_STATUS_DECLARE],
          426  +[$1='`$ECHO "$][$1" | $SED "$delay_single_quote_subst"`'])
          427  +
          428  +
          429  +# _LT_CONFIG_STATUS_DECLARATIONS
          430  +# ------------------------------
          431  +# We delimit libtool config variables with single quotes, so when
          432  +# we write them to config.status, we have to be sure to quote all
          433  +# embedded single quotes properly.  In configure, this macro expands
          434  +# each variable declared with _LT_DECL (and _LT_TAGDECL) into:
          435  +#
          436  +#    <var>='`$ECHO "$<var>" | $SED "$delay_single_quote_subst"`'
          437  +m4_defun([_LT_CONFIG_STATUS_DECLARATIONS],
          438  +[m4_foreach([_lt_var], m4_quote(lt_decl_all_varnames),
          439  +    [m4_n([_LT_CONFIG_STATUS_DECLARE(_lt_var)])])])
          440  +
          441  +
          442  +# _LT_LIBTOOL_TAGS
          443  +# ----------------
          444  +# Output comment and list of tags supported by the script
          445  +m4_defun([_LT_LIBTOOL_TAGS],
          446  +[_LT_FORMAT_COMMENT([The names of the tagged configurations supported by this script])dnl
          447  +available_tags="_LT_TAGS"dnl
          448  +])
          449  +
          450  +
          451  +# _LT_LIBTOOL_DECLARE(VARNAME, [TAG])
          452  +# -----------------------------------
          453  +# Extract the dictionary values for VARNAME (optionally with TAG) and
          454  +# expand to a commented shell variable setting:
          455  +#
          456  +#    # Some comment about what VAR is for.
          457  +#    visible_name=$lt_internal_name
          458  +m4_define([_LT_LIBTOOL_DECLARE],
          459  +[_LT_FORMAT_COMMENT(m4_quote(lt_dict_fetch([lt_decl_dict], [$1],
          460  +					   [description])))[]dnl
          461  +m4_pushdef([_libtool_name],
          462  +    m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [libtool_name])))[]dnl
          463  +m4_case(m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [value])),
          464  +    [0], [_libtool_name=[$]$1],
          465  +    [1], [_libtool_name=$lt_[]$1],
          466  +    [2], [_libtool_name=$lt_[]$1],
          467  +    [_libtool_name=lt_dict_fetch([lt_decl_dict], [$1], [value])])[]dnl
          468  +m4_ifval([$2], [_$2])[]m4_popdef([_libtool_name])[]dnl
          469  +])
          470  +
          471  +
          472  +# _LT_LIBTOOL_CONFIG_VARS
          473  +# -----------------------
          474  +# Produce commented declarations of non-tagged libtool config variables
          475  +# suitable for insertion in the LIBTOOL CONFIG section of the `libtool'
          476  +# script.  Tagged libtool config variables (even for the LIBTOOL CONFIG
          477  +# section) are produced by _LT_LIBTOOL_TAG_VARS.
          478  +m4_defun([_LT_LIBTOOL_CONFIG_VARS],
          479  +[m4_foreach([_lt_var],
          480  +    m4_quote(_lt_decl_filter([tagged?], [no], [], lt_decl_varnames)),
          481  +    [m4_n([_LT_LIBTOOL_DECLARE(_lt_var)])])])
          482  +
          483  +
          484  +# _LT_LIBTOOL_TAG_VARS(TAG)
          485  +# -------------------------
          486  +m4_define([_LT_LIBTOOL_TAG_VARS],
          487  +[m4_foreach([_lt_var], m4_quote(lt_decl_tag_varnames),
          488  +    [m4_n([_LT_LIBTOOL_DECLARE(_lt_var, [$1])])])])
          489  +
          490  +
          491  +# _LT_TAGVAR(VARNAME, [TAGNAME])
          492  +# ------------------------------
          493  +m4_define([_LT_TAGVAR], [m4_ifval([$2], [$1_$2], [$1])])
          494  +
          495  +
          496  +# _LT_CONFIG_COMMANDS
          497  +# -------------------
          498  +# Send accumulated output to $CONFIG_STATUS.  Thanks to the lists of
          499  +# variables for single and double quote escaping we saved from calls
          500  +# to _LT_DECL, we can put quote escaped variables declarations
          501  +# into `config.status', and then the shell code to quote escape them in
          502  +# for loops in `config.status'.  Finally, any additional code accumulated
          503  +# from calls to _LT_CONFIG_LIBTOOL_INIT is expanded.
          504  +m4_defun([_LT_CONFIG_COMMANDS],
          505  +[AC_PROVIDE_IFELSE([LT_OUTPUT],
          506  +	dnl If the libtool generation code has been placed in $CONFIG_LT,
          507  +	dnl instead of duplicating it all over again into config.status,
          508  +	dnl then we will have config.status run $CONFIG_LT later, so it
          509  +	dnl needs to know what name is stored there:
          510  +        [AC_CONFIG_COMMANDS([libtool],
          511  +            [$SHELL $CONFIG_LT || AS_EXIT(1)], [CONFIG_LT='$CONFIG_LT'])],
          512  +    dnl If the libtool generation code is destined for config.status,
          513  +    dnl expand the accumulated commands and init code now:
          514  +    [AC_CONFIG_COMMANDS([libtool],
          515  +        [_LT_OUTPUT_LIBTOOL_COMMANDS], [_LT_OUTPUT_LIBTOOL_COMMANDS_INIT])])
          516  +])#_LT_CONFIG_COMMANDS
          517  +
          518  +
          519  +# Initialize.
          520  +m4_define([_LT_OUTPUT_LIBTOOL_COMMANDS_INIT],
          521  +[
          522  +
          523  +# The HP-UX ksh and POSIX shell print the target directory to stdout
          524  +# if CDPATH is set.
          525  +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
          526  +
          527  +sed_quote_subst='$sed_quote_subst'
          528  +double_quote_subst='$double_quote_subst'
          529  +delay_variable_subst='$delay_variable_subst'
          530  +_LT_CONFIG_STATUS_DECLARATIONS
          531  +LTCC='$LTCC'
          532  +LTCFLAGS='$LTCFLAGS'
          533  +compiler='$compiler_DEFAULT'
          534  +
          535  +# A function that is used when there is no print builtin or printf.
          536  +func_fallback_echo ()
          537  +{
          538  +  eval 'cat <<_LTECHO_EOF
          539  +\$[]1
          540  +_LTECHO_EOF'
          541  +}
          542  +
          543  +# Quote evaled strings.
          544  +for var in lt_decl_all_varnames([[ \
          545  +]], lt_decl_quote_varnames); do
          546  +    case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in
          547  +    *[[\\\\\\\`\\"\\\$]]*)
          548  +      eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\""
          549  +      ;;
          550  +    *)
          551  +      eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\""
          552  +      ;;
          553  +    esac
          554  +done
          555  +
          556  +# Double-quote double-evaled strings.
          557  +for var in lt_decl_all_varnames([[ \
          558  +]], lt_decl_dquote_varnames); do
          559  +    case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in
          560  +    *[[\\\\\\\`\\"\\\$]]*)
          561  +      eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\""
          562  +      ;;
          563  +    *)
          564  +      eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\""
          565  +      ;;
          566  +    esac
          567  +done
          568  +
          569  +_LT_OUTPUT_LIBTOOL_INIT
          570  +])
          571  +
          572  +# _LT_GENERATED_FILE_INIT(FILE, [COMMENT])
          573  +# ------------------------------------
          574  +# Generate a child script FILE with all initialization necessary to
          575  +# reuse the environment learned by the parent script, and make the
          576  +# file executable.  If COMMENT is supplied, it is inserted after the
          577  +# `#!' sequence but before initialization text begins.  After this
          578  +# macro, additional text can be appended to FILE to form the body of
          579  +# the child script.  The macro ends with non-zero status if the
          580  +# file could not be fully written (such as if the disk is full).
          581  +m4_ifdef([AS_INIT_GENERATED],
          582  +[m4_defun([_LT_GENERATED_FILE_INIT],[AS_INIT_GENERATED($@)])],
          583  +[m4_defun([_LT_GENERATED_FILE_INIT],
          584  +[m4_require([AS_PREPARE])]dnl
          585  +[m4_pushdef([AS_MESSAGE_LOG_FD])]dnl
          586  +[lt_write_fail=0
          587  +cat >$1 <<_ASEOF || lt_write_fail=1
          588  +#! $SHELL
          589  +# Generated by $as_me.
          590  +$2
          591  +SHELL=\${CONFIG_SHELL-$SHELL}
          592  +export SHELL
          593  +_ASEOF
          594  +cat >>$1 <<\_ASEOF || lt_write_fail=1
          595  +AS_SHELL_SANITIZE
          596  +_AS_PREPARE
          597  +exec AS_MESSAGE_FD>&1
          598  +_ASEOF
          599  +test $lt_write_fail = 0 && chmod +x $1[]dnl
          600  +m4_popdef([AS_MESSAGE_LOG_FD])])])# _LT_GENERATED_FILE_INIT
          601  +
          602  +# LT_OUTPUT
          603  +# ---------
          604  +# This macro allows early generation of the libtool script (before
          605  +# AC_OUTPUT is called), incase it is used in configure for compilation
          606  +# tests.
          607  +AC_DEFUN([LT_OUTPUT],
          608  +[: ${CONFIG_LT=./config.lt}
          609  +AC_MSG_NOTICE([creating $CONFIG_LT])
          610  +_LT_GENERATED_FILE_INIT(["$CONFIG_LT"],
          611  +[# Run this file to recreate a libtool stub with the current configuration.])
          612  +
          613  +cat >>"$CONFIG_LT" <<\_LTEOF
          614  +lt_cl_silent=false
          615  +exec AS_MESSAGE_LOG_FD>>config.log
          616  +{
          617  +  echo
          618  +  AS_BOX([Running $as_me.])
          619  +} >&AS_MESSAGE_LOG_FD
          620  +
          621  +lt_cl_help="\
          622  +\`$as_me' creates a local libtool stub from the current configuration,
          623  +for use in further configure time tests before the real libtool is
          624  +generated.
          625  +
          626  +Usage: $[0] [[OPTIONS]]
          627  +
          628  +  -h, --help      print this help, then exit
          629  +  -V, --version   print version number, then exit
          630  +  -q, --quiet     do not print progress messages
          631  +  -d, --debug     don't remove temporary files
          632  +
          633  +Report bugs to <bug-libtool@gnu.org>."
          634  +
          635  +lt_cl_version="\
          636  +m4_ifset([AC_PACKAGE_NAME], [AC_PACKAGE_NAME ])config.lt[]dnl
          637  +m4_ifset([AC_PACKAGE_VERSION], [ AC_PACKAGE_VERSION])
          638  +configured by $[0], generated by m4_PACKAGE_STRING.
          639  +
          640  +Copyright (C) 2010 Free Software Foundation, Inc.
          641  +This config.lt script is free software; the Free Software Foundation
          642  +gives unlimited permision to copy, distribute and modify it."
          643  +
          644  +while test $[#] != 0
          645  +do
          646  +  case $[1] in
          647  +    --version | --v* | -V )
          648  +      echo "$lt_cl_version"; exit 0 ;;
          649  +    --help | --h* | -h )
          650  +      echo "$lt_cl_help"; exit 0 ;;
          651  +    --debug | --d* | -d )
          652  +      debug=: ;;
          653  +    --quiet | --q* | --silent | --s* | -q )
          654  +      lt_cl_silent=: ;;
          655  +
          656  +    -*) AC_MSG_ERROR([unrecognized option: $[1]
          657  +Try \`$[0] --help' for more information.]) ;;
          658  +
          659  +    *) AC_MSG_ERROR([unrecognized argument: $[1]
          660  +Try \`$[0] --help' for more information.]) ;;
          661  +  esac
          662  +  shift
          663  +done
          664  +
          665  +if $lt_cl_silent; then
          666  +  exec AS_MESSAGE_FD>/dev/null
          667  +fi
          668  +_LTEOF
          669  +
          670  +cat >>"$CONFIG_LT" <<_LTEOF
          671  +_LT_OUTPUT_LIBTOOL_COMMANDS_INIT
          672  +_LTEOF
          673  +
          674  +cat >>"$CONFIG_LT" <<\_LTEOF
          675  +AC_MSG_NOTICE([creating $ofile])
          676  +_LT_OUTPUT_LIBTOOL_COMMANDS
          677  +AS_EXIT(0)
          678  +_LTEOF
          679  +chmod +x "$CONFIG_LT"
          680  +
          681  +# configure is writing to config.log, but config.lt does its own redirection,
          682  +# appending to config.log, which fails on DOS, as config.log is still kept
          683  +# open by configure.  Here we exec the FD to /dev/null, effectively closing
          684  +# config.log, so it can be properly (re)opened and appended to by config.lt.
          685  +lt_cl_success=:
          686  +test "$silent" = yes &&
          687  +  lt_config_lt_args="$lt_config_lt_args --quiet"
          688  +exec AS_MESSAGE_LOG_FD>/dev/null
          689  +$SHELL "$CONFIG_LT" $lt_config_lt_args || lt_cl_success=false
          690  +exec AS_MESSAGE_LOG_FD>>config.log
          691  +$lt_cl_success || AS_EXIT(1)
          692  +])# LT_OUTPUT
          693  +
          694  +
          695  +# _LT_CONFIG(TAG)
          696  +# ---------------
          697  +# If TAG is the built-in tag, create an initial libtool script with a
          698  +# default configuration from the untagged config vars.  Otherwise add code
          699  +# to config.status for appending the configuration named by TAG from the
          700  +# matching tagged config vars.
          701  +m4_defun([_LT_CONFIG],
          702  +[m4_require([_LT_FILEUTILS_DEFAULTS])dnl
          703  +_LT_CONFIG_SAVE_COMMANDS([
          704  +  m4_define([_LT_TAG], m4_if([$1], [], [C], [$1]))dnl
          705  +  m4_if(_LT_TAG, [C], [
          706  +    # See if we are running on zsh, and set the options which allow our
          707  +    # commands through without removal of \ escapes.
          708  +    if test -n "${ZSH_VERSION+set}" ; then
          709  +      setopt NO_GLOB_SUBST
          710  +    fi
          711  +
          712  +    cfgfile="${ofile}T"
          713  +    trap "$RM \"$cfgfile\"; exit 1" 1 2 15
          714  +    $RM "$cfgfile"
          715  +
          716  +    cat <<_LT_EOF >> "$cfgfile"
          717  +#! $SHELL
          718  +
          719  +# `$ECHO "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services.
          720  +# Generated automatically by $as_me ($PACKAGE$TIMESTAMP) $VERSION
          721  +# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
          722  +# NOTE: Changes made to this file will be lost: look at ltmain.sh.
          723  +#
          724  +_LT_COPYING
          725  +_LT_LIBTOOL_TAGS
          726  +
          727  +# ### BEGIN LIBTOOL CONFIG
          728  +_LT_LIBTOOL_CONFIG_VARS
          729  +_LT_LIBTOOL_TAG_VARS
          730  +# ### END LIBTOOL CONFIG
          731  +
          732  +_LT_EOF
          733  +
          734  +  case $host_os in
          735  +  aix3*)
          736  +    cat <<\_LT_EOF >> "$cfgfile"
          737  +# AIX sometimes has problems with the GCC collect2 program.  For some
          738  +# reason, if we set the COLLECT_NAMES environment variable, the problems
          739  +# vanish in a puff of smoke.
          740  +if test "X${COLLECT_NAMES+set}" != Xset; then
          741  +  COLLECT_NAMES=
          742  +  export COLLECT_NAMES
          743  +fi
          744  +_LT_EOF
          745  +    ;;
          746  +  esac
          747  +
          748  +  _LT_PROG_LTMAIN
          749  +
          750  +  # We use sed instead of cat because bash on DJGPP gets confused if
          751  +  # if finds mixed CR/LF and LF-only lines.  Since sed operates in
          752  +  # text mode, it properly converts lines to CR/LF.  This bash problem
          753  +  # is reportedly fixed, but why not run on old versions too?
          754  +  sed '$q' "$ltmain" >> "$cfgfile" \
          755  +     || (rm -f "$cfgfile"; exit 1)
          756  +
          757  +  _LT_PROG_REPLACE_SHELLFNS
          758  +
          759  +   mv -f "$cfgfile" "$ofile" ||
          760  +    (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile")
          761  +  chmod +x "$ofile"
          762  +],
          763  +[cat <<_LT_EOF >> "$ofile"
          764  +
          765  +dnl Unfortunately we have to use $1 here, since _LT_TAG is not expanded
          766  +dnl in a comment (ie after a #).
          767  +# ### BEGIN LIBTOOL TAG CONFIG: $1
          768  +_LT_LIBTOOL_TAG_VARS(_LT_TAG)
          769  +# ### END LIBTOOL TAG CONFIG: $1
          770  +_LT_EOF
          771  +])dnl /m4_if
          772  +],
          773  +[m4_if([$1], [], [
          774  +    PACKAGE='$PACKAGE'
          775  +    VERSION='$VERSION'
          776  +    TIMESTAMP='$TIMESTAMP'
          777  +    RM='$RM'
          778  +    ofile='$ofile'], [])
          779  +])dnl /_LT_CONFIG_SAVE_COMMANDS
          780  +])# _LT_CONFIG
          781  +
          782  +
          783  +# LT_SUPPORTED_TAG(TAG)
          784  +# ---------------------
          785  +# Trace this macro to discover what tags are supported by the libtool
          786  +# --tag option, using:
          787  +#    autoconf --trace 'LT_SUPPORTED_TAG:$1'
          788  +AC_DEFUN([LT_SUPPORTED_TAG], [])
          789  +
          790  +
          791  +# C support is built-in for now
          792  +m4_define([_LT_LANG_C_enabled], [])
          793  +m4_define([_LT_TAGS], [])
          794  +
          795  +
          796  +# LT_LANG(LANG)
          797  +# -------------
          798  +# Enable libtool support for the given language if not already enabled.
          799  +AC_DEFUN([LT_LANG],
          800  +[AC_BEFORE([$0], [LT_OUTPUT])dnl
          801  +m4_case([$1],
          802  +  [C],			[_LT_LANG(C)],
          803  +  [C++],		[_LT_LANG(CXX)],
          804  +  [Java],		[_LT_LANG(GCJ)],
          805  +  [Fortran 77],		[_LT_LANG(F77)],
          806  +  [Fortran],		[_LT_LANG(FC)],
          807  +  [Windows Resource],	[_LT_LANG(RC)],
          808  +  [m4_ifdef([_LT_LANG_]$1[_CONFIG],
          809  +    [_LT_LANG($1)],
          810  +    [m4_fatal([$0: unsupported language: "$1"])])])dnl
          811  +])# LT_LANG
          812  +
          813  +
          814  +# _LT_LANG(LANGNAME)
          815  +# ------------------
          816  +m4_defun([_LT_LANG],
          817  +[m4_ifdef([_LT_LANG_]$1[_enabled], [],
          818  +  [LT_SUPPORTED_TAG([$1])dnl
          819  +  m4_append([_LT_TAGS], [$1 ])dnl
          820  +  m4_define([_LT_LANG_]$1[_enabled], [])dnl
          821  +  _LT_LANG_$1_CONFIG($1)])dnl
          822  +])# _LT_LANG
          823  +
          824  +
          825  +# _LT_LANG_DEFAULT_CONFIG
          826  +# -----------------------
          827  +m4_defun([_LT_LANG_DEFAULT_CONFIG],
          828  +[AC_PROVIDE_IFELSE([AC_PROG_CXX],
          829  +  [LT_LANG(CXX)],
          830  +  [m4_define([AC_PROG_CXX], defn([AC_PROG_CXX])[LT_LANG(CXX)])])
          831  +
          832  +AC_PROVIDE_IFELSE([AC_PROG_F77],
          833  +  [LT_LANG(F77)],
          834  +  [m4_define([AC_PROG_F77], defn([AC_PROG_F77])[LT_LANG(F77)])])
          835  +
          836  +AC_PROVIDE_IFELSE([AC_PROG_FC],
          837  +  [LT_LANG(FC)],
          838  +  [m4_define([AC_PROG_FC], defn([AC_PROG_FC])[LT_LANG(FC)])])
          839  +
          840  +dnl The call to [A][M_PROG_GCJ] is quoted like that to stop aclocal
          841  +dnl pulling things in needlessly.
          842  +AC_PROVIDE_IFELSE([AC_PROG_GCJ],
          843  +  [LT_LANG(GCJ)],
          844  +  [AC_PROVIDE_IFELSE([A][M_PROG_GCJ],
          845  +    [LT_LANG(GCJ)],
          846  +    [AC_PROVIDE_IFELSE([LT_PROG_GCJ],
          847  +      [LT_LANG(GCJ)],
          848  +      [m4_ifdef([AC_PROG_GCJ],
          849  +	[m4_define([AC_PROG_GCJ], defn([AC_PROG_GCJ])[LT_LANG(GCJ)])])
          850  +       m4_ifdef([A][M_PROG_GCJ],
          851  +	[m4_define([A][M_PROG_GCJ], defn([A][M_PROG_GCJ])[LT_LANG(GCJ)])])
          852  +       m4_ifdef([LT_PROG_GCJ],
          853  +	[m4_define([LT_PROG_GCJ], defn([LT_PROG_GCJ])[LT_LANG(GCJ)])])])])])
          854  +
          855  +AC_PROVIDE_IFELSE([LT_PROG_RC],
          856  +  [LT_LANG(RC)],
          857  +  [m4_define([LT_PROG_RC], defn([LT_PROG_RC])[LT_LANG(RC)])])
          858  +])# _LT_LANG_DEFAULT_CONFIG
          859  +
          860  +# Obsolete macros:
          861  +AU_DEFUN([AC_LIBTOOL_CXX], [LT_LANG(C++)])
          862  +AU_DEFUN([AC_LIBTOOL_F77], [LT_LANG(Fortran 77)])
          863  +AU_DEFUN([AC_LIBTOOL_FC], [LT_LANG(Fortran)])
          864  +AU_DEFUN([AC_LIBTOOL_GCJ], [LT_LANG(Java)])
          865  +AU_DEFUN([AC_LIBTOOL_RC], [LT_LANG(Windows Resource)])
          866  +dnl aclocal-1.4 backwards compatibility:
          867  +dnl AC_DEFUN([AC_LIBTOOL_CXX], [])
          868  +dnl AC_DEFUN([AC_LIBTOOL_F77], [])
          869  +dnl AC_DEFUN([AC_LIBTOOL_FC], [])
          870  +dnl AC_DEFUN([AC_LIBTOOL_GCJ], [])
          871  +dnl AC_DEFUN([AC_LIBTOOL_RC], [])
          872  +
          873  +
          874  +# _LT_TAG_COMPILER
          875  +# ----------------
          876  +m4_defun([_LT_TAG_COMPILER],
          877  +[AC_REQUIRE([AC_PROG_CC])dnl
          878  +
          879  +_LT_DECL([LTCC], [CC], [1], [A C compiler])dnl
          880  +_LT_DECL([LTCFLAGS], [CFLAGS], [1], [LTCC compiler flags])dnl
          881  +_LT_TAGDECL([CC], [compiler], [1], [A language specific compiler])dnl
          882  +_LT_TAGDECL([with_gcc], [GCC], [0], [Is the compiler the GNU compiler?])dnl
          883  +
          884  +# If no C compiler was specified, use CC.
          885  +LTCC=${LTCC-"$CC"}
          886  +
          887  +# If no C compiler flags were specified, use CFLAGS.
          888  +LTCFLAGS=${LTCFLAGS-"$CFLAGS"}
          889  +
          890  +# Allow CC to be a program name with arguments.
          891  +compiler=$CC
          892  +])# _LT_TAG_COMPILER
          893  +
          894  +
          895  +# _LT_COMPILER_BOILERPLATE
          896  +# ------------------------
          897  +# Check for compiler boilerplate output or warnings with
          898  +# the simple compiler test code.
          899  +m4_defun([_LT_COMPILER_BOILERPLATE],
          900  +[m4_require([_LT_DECL_SED])dnl
          901  +ac_outfile=conftest.$ac_objext
          902  +echo "$lt_simple_compile_test_code" >conftest.$ac_ext
          903  +eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
          904  +_lt_compiler_boilerplate=`cat conftest.err`
          905  +$RM conftest*
          906  +])# _LT_COMPILER_BOILERPLATE
          907  +
          908  +
          909  +# _LT_LINKER_BOILERPLATE
          910  +# ----------------------
          911  +# Check for linker boilerplate output or warnings with
          912  +# the simple link test code.
          913  +m4_defun([_LT_LINKER_BOILERPLATE],
          914  +[m4_require([_LT_DECL_SED])dnl
          915  +ac_outfile=conftest.$ac_objext
          916  +echo "$lt_simple_link_test_code" >conftest.$ac_ext
          917  +eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
          918  +_lt_linker_boilerplate=`cat conftest.err`
          919  +$RM -r conftest*
          920  +])# _LT_LINKER_BOILERPLATE
          921  +
          922  +# _LT_REQUIRED_DARWIN_CHECKS
          923  +# -------------------------
          924  +m4_defun_once([_LT_REQUIRED_DARWIN_CHECKS],[
          925  +  case $host_os in
          926  +    rhapsody* | darwin*)
          927  +    AC_CHECK_TOOL([DSYMUTIL], [dsymutil], [:])
          928  +    AC_CHECK_TOOL([NMEDIT], [nmedit], [:])
          929  +    AC_CHECK_TOOL([LIPO], [lipo], [:])
          930  +    AC_CHECK_TOOL([OTOOL], [otool], [:])
          931  +    AC_CHECK_TOOL([OTOOL64], [otool64], [:])
          932  +    _LT_DECL([], [DSYMUTIL], [1],
          933  +      [Tool to manipulate archived DWARF debug symbol files on Mac OS X])
          934  +    _LT_DECL([], [NMEDIT], [1],
          935  +      [Tool to change global to local symbols on Mac OS X])
          936  +    _LT_DECL([], [LIPO], [1],
          937  +      [Tool to manipulate fat objects and archives on Mac OS X])
          938  +    _LT_DECL([], [OTOOL], [1],
          939  +      [ldd/readelf like tool for Mach-O binaries on Mac OS X])
          940  +    _LT_DECL([], [OTOOL64], [1],
          941  +      [ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4])
          942  +
          943  +    AC_CACHE_CHECK([for -single_module linker flag],[lt_cv_apple_cc_single_mod],
          944  +      [lt_cv_apple_cc_single_mod=no
          945  +      if test -z "${LT_MULTI_MODULE}"; then
          946  +	# By default we will add the -single_module flag. You can override
          947  +	# by either setting the environment variable LT_MULTI_MODULE
          948  +	# non-empty at configure time, or by adding -multi_module to the
          949  +	# link flags.
          950  +	rm -rf libconftest.dylib*
          951  +	echo "int foo(void){return 1;}" > conftest.c
          952  +	echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \
          953  +-dynamiclib -Wl,-single_module conftest.c" >&AS_MESSAGE_LOG_FD
          954  +	$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \
          955  +	  -dynamiclib -Wl,-single_module conftest.c 2>conftest.err
          956  +        _lt_result=$?
          957  +	if test -f libconftest.dylib && test ! -s conftest.err && test $_lt_result = 0; then
          958  +	  lt_cv_apple_cc_single_mod=yes
          959  +	else
          960  +	  cat conftest.err >&AS_MESSAGE_LOG_FD
          961  +	fi
          962  +	rm -rf libconftest.dylib*
          963  +	rm -f conftest.*
          964  +      fi])
          965  +    AC_CACHE_CHECK([for -exported_symbols_list linker flag],
          966  +      [lt_cv_ld_exported_symbols_list],
          967  +      [lt_cv_ld_exported_symbols_list=no
          968  +      save_LDFLAGS=$LDFLAGS
          969  +      echo "_main" > conftest.sym
          970  +      LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym"
          971  +      AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])],
          972  +	[lt_cv_ld_exported_symbols_list=yes],
          973  +	[lt_cv_ld_exported_symbols_list=no])
          974  +	LDFLAGS="$save_LDFLAGS"
          975  +    ])
          976  +    AC_CACHE_CHECK([for -force_load linker flag],[lt_cv_ld_force_load],
          977  +      [lt_cv_ld_force_load=no
          978  +      cat > conftest.c << _LT_EOF
          979  +int forced_loaded() { return 2;}
          980  +_LT_EOF
          981  +      echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&AS_MESSAGE_LOG_FD
          982  +      $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&AS_MESSAGE_LOG_FD
          983  +      echo "$AR cru libconftest.a conftest.o" >&AS_MESSAGE_LOG_FD
          984  +      $AR cru libconftest.a conftest.o 2>&AS_MESSAGE_LOG_FD
          985  +      echo "$RANLIB libconftest.a" >&AS_MESSAGE_LOG_FD
          986  +      $RANLIB libconftest.a 2>&AS_MESSAGE_LOG_FD
          987  +      cat > conftest.c << _LT_EOF
          988  +int main() { return 0;}
          989  +_LT_EOF
          990  +      echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&AS_MESSAGE_LOG_FD
          991  +      $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err
          992  +      _lt_result=$?
          993  +      if test -f conftest && test ! -s conftest.err && test $_lt_result = 0 && $GREP forced_load conftest 2>&1 >/dev/null; then
          994  +	lt_cv_ld_force_load=yes
          995  +      else
          996  +	cat conftest.err >&AS_MESSAGE_LOG_FD
          997  +      fi
          998  +        rm -f conftest.err libconftest.a conftest conftest.c
          999  +        rm -rf conftest.dSYM
         1000  +    ])
         1001  +    case $host_os in
         1002  +    rhapsody* | darwin1.[[012]])
         1003  +      _lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;;
         1004  +    darwin1.*)
         1005  +      _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;;
         1006  +    darwin*) # darwin 5.x on
         1007  +      # if running on 10.5 or later, the deployment target defaults
         1008  +      # to the OS version, if on x86, and 10.4, the deployment
         1009  +      # target defaults to 10.4. Don't you love it?
         1010  +      case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in
         1011  +	10.0,*86*-darwin8*|10.0,*-darwin[[91]]*)
         1012  +	  _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;;
         1013  +	10.[[012]]*)
         1014  +	  _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;;
         1015  +	10.*)
         1016  +	  _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;;
         1017  +      esac
         1018  +    ;;
         1019  +  esac
         1020  +    if test "$lt_cv_apple_cc_single_mod" = "yes"; then
         1021  +      _lt_dar_single_mod='$single_module'
         1022  +    fi
         1023  +    if test "$lt_cv_ld_exported_symbols_list" = "yes"; then
         1024  +      _lt_dar_export_syms=' ${wl}-exported_symbols_list,$output_objdir/${libname}-symbols.expsym'
         1025  +    else
         1026  +      _lt_dar_export_syms='~$NMEDIT -s $output_objdir/${libname}-symbols.expsym ${lib}'
         1027  +    fi
         1028  +    if test "$DSYMUTIL" != ":" && test "$lt_cv_ld_force_load" = "no"; then
         1029  +      _lt_dsymutil='~$DSYMUTIL $lib || :'
         1030  +    else
         1031  +      _lt_dsymutil=
         1032  +    fi
         1033  +    ;;
         1034  +  esac
         1035  +])
         1036  +
         1037  +
         1038  +# _LT_DARWIN_LINKER_FEATURES
         1039  +# --------------------------
         1040  +# Checks for linker and compiler features on darwin
         1041  +m4_defun([_LT_DARWIN_LINKER_FEATURES],
         1042  +[
         1043  +  m4_require([_LT_REQUIRED_DARWIN_CHECKS])
         1044  +  _LT_TAGVAR(archive_cmds_need_lc, $1)=no
         1045  +  _LT_TAGVAR(hardcode_direct, $1)=no
         1046  +  _LT_TAGVAR(hardcode_automatic, $1)=yes
         1047  +  _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported
         1048  +  if test "$lt_cv_ld_force_load" = "yes"; then
         1049  +    _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\"`'
         1050  +  else
         1051  +    _LT_TAGVAR(whole_archive_flag_spec, $1)=''
         1052  +  fi
         1053  +  _LT_TAGVAR(link_all_deplibs, $1)=yes
         1054  +  _LT_TAGVAR(allow_undefined_flag, $1)="$_lt_dar_allow_undefined"
         1055  +  case $cc_basename in
         1056  +     ifort*) _lt_dar_can_shared=yes ;;
         1057  +     *) _lt_dar_can_shared=$GCC ;;
         1058  +  esac
         1059  +  if test "$_lt_dar_can_shared" = "yes"; then
         1060  +    output_verbose_link_cmd=func_echo_all
         1061  +    _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}"
         1062  +    _LT_TAGVAR(module_cmds, $1)="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}"
         1063  +    _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}"
         1064  +    _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}"
         1065  +    m4_if([$1], [CXX],
         1066  +[   if test "$lt_cv_apple_cc_single_mod" != "yes"; then
         1067  +      _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}"
         1068  +      _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}"
         1069  +    fi
         1070  +],[])
         1071  +  else
         1072  +  _LT_TAGVAR(ld_shlibs, $1)=no
         1073  +  fi
         1074  +])
         1075  +
         1076  +# _LT_SYS_MODULE_PATH_AIX([TAGNAME])
         1077  +# ----------------------------------
         1078  +# Links a minimal program and checks the executable
         1079  +# for the system default hardcoded library path. In most cases,
         1080  +# this is /usr/lib:/lib, but when the MPI compilers are used
         1081  +# the location of the communication and MPI libs are included too.
         1082  +# If we don't find anything, use the default library path according
         1083  +# to the aix ld manual.
         1084  +# Store the results from the different compilers for each TAGNAME.
         1085  +# Allow to override them for all tags through lt_cv_aix_libpath.
         1086  +m4_defun([_LT_SYS_MODULE_PATH_AIX],
         1087  +[m4_require([_LT_DECL_SED])dnl
         1088  +if test "${lt_cv_aix_libpath+set}" = set; then
         1089  +  aix_libpath=$lt_cv_aix_libpath
         1090  +else
         1091  +  AC_CACHE_VAL([_LT_TAGVAR([lt_cv_aix_libpath_], [$1])],
         1092  +  [AC_LINK_IFELSE([AC_LANG_PROGRAM],[
         1093  +  lt_aix_libpath_sed='[
         1094  +      /Import File Strings/,/^$/ {
         1095  +	  /^0/ {
         1096  +	      s/^0  *\([^ ]*\) *$/\1/
         1097  +	      p
         1098  +	  }
         1099  +      }]'
         1100  +  _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
         1101  +  # Check for a 64-bit object if we didn't find anything.
         1102  +  if test -z "$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])"; then
         1103  +    _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
         1104  +  fi],[])
         1105  +  if test -z "$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])"; then
         1106  +    _LT_TAGVAR([lt_cv_aix_libpath_], [$1])="/usr/lib:/lib"
         1107  +  fi
         1108  +  ])
         1109  +  aix_libpath=$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])
         1110  +fi
         1111  +])# _LT_SYS_MODULE_PATH_AIX
         1112  +
         1113  +
         1114  +# _LT_SHELL_INIT(ARG)
         1115  +# -------------------
         1116  +m4_define([_LT_SHELL_INIT],
         1117  +[m4_divert_text([M4SH-INIT], [$1
         1118  +])])# _LT_SHELL_INIT
         1119  +
         1120  +
         1121  +
         1122  +# _LT_PROG_ECHO_BACKSLASH
         1123  +# -----------------------
         1124  +# Find how we can fake an echo command that does not interpret backslash.
         1125  +# In particular, with Autoconf 2.60 or later we add some code to the start
         1126  +# of the generated configure script which will find a shell with a builtin
         1127  +# printf (which we can use as an echo command).
         1128  +m4_defun([_LT_PROG_ECHO_BACKSLASH],
         1129  +[ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
         1130  +ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO
         1131  +ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO
         1132  +
         1133  +AC_MSG_CHECKING([how to print strings])
         1134  +# Test print first, because it will be a builtin if present.
         1135  +if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \
         1136  +   test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then
         1137  +  ECHO='print -r --'
         1138  +elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then
         1139  +  ECHO='printf %s\n'
         1140  +else
         1141  +  # Use this function as a fallback that always works.
         1142  +  func_fallback_echo ()
         1143  +  {
         1144  +    eval 'cat <<_LTECHO_EOF
         1145  +$[]1
         1146  +_LTECHO_EOF'
         1147  +  }
         1148  +  ECHO='func_fallback_echo'
         1149  +fi
         1150  +
         1151  +# func_echo_all arg...
         1152  +# Invoke $ECHO with all args, space-separated.
         1153  +func_echo_all ()
         1154  +{
         1155  +    $ECHO "$*" 
         1156  +}
         1157  +
         1158  +case "$ECHO" in
         1159  +  printf*) AC_MSG_RESULT([printf]) ;;
         1160  +  print*) AC_MSG_RESULT([print -r]) ;;
         1161  +  *) AC_MSG_RESULT([cat]) ;;
         1162  +esac
         1163  +
         1164  +m4_ifdef([_AS_DETECT_SUGGESTED],
         1165  +[_AS_DETECT_SUGGESTED([
         1166  +  test -n "${ZSH_VERSION+set}${BASH_VERSION+set}" || (
         1167  +    ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
         1168  +    ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO
         1169  +    ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO
         1170  +    PATH=/empty FPATH=/empty; export PATH FPATH
         1171  +    test "X`printf %s $ECHO`" = "X$ECHO" \
         1172  +      || test "X`print -r -- $ECHO`" = "X$ECHO" )])])
         1173  +
         1174  +_LT_DECL([], [SHELL], [1], [Shell to use when invoking shell scripts])
         1175  +_LT_DECL([], [ECHO], [1], [An echo program that protects backslashes])
         1176  +])# _LT_PROG_ECHO_BACKSLASH
         1177  +
         1178  +
         1179  +# _LT_WITH_SYSROOT
         1180  +# ----------------
         1181  +AC_DEFUN([_LT_WITH_SYSROOT],
         1182  +[AC_MSG_CHECKING([for sysroot])
         1183  +AC_ARG_WITH([sysroot],
         1184  +[  --with-sysroot[=DIR] Search for dependent libraries within DIR
         1185  +                        (or the compiler's sysroot if not specified).],
         1186  +[], [with_sysroot=no])
         1187  +
         1188  +dnl lt_sysroot will always be passed unquoted.  We quote it here
         1189  +dnl in case the user passed a directory name.
         1190  +lt_sysroot=
         1191  +case ${with_sysroot} in #(
         1192  + yes)
         1193  +   if test "$GCC" = yes; then
         1194  +     lt_sysroot=`$CC --print-sysroot 2>/dev/null`
         1195  +   fi
         1196  +   ;; #(
         1197  + /*)
         1198  +   lt_sysroot=`echo "$with_sysroot" | sed -e "$sed_quote_subst"`
         1199  +   ;; #(
         1200  + no|'')
         1201  +   ;; #(
         1202  + *)
         1203  +   AC_MSG_RESULT([${with_sysroot}])
         1204  +   AC_MSG_ERROR([The sysroot must be an absolute path.])
         1205  +   ;;
         1206  +esac
         1207  +
         1208  + AC_MSG_RESULT([${lt_sysroot:-no}])
         1209  +_LT_DECL([], [lt_sysroot], [0], [The root where to search for ]dnl
         1210  +[dependent libraries, and in which our libraries should be installed.])])
         1211  +
         1212  +# _LT_ENABLE_LOCK
         1213  +# ---------------
         1214  +m4_defun([_LT_ENABLE_LOCK],
         1215  +[AC_ARG_ENABLE([libtool-lock],
         1216  +  [AS_HELP_STRING([--disable-libtool-lock],
         1217  +    [avoid locking (might break parallel builds)])])
         1218  +test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes
         1219  +
         1220  +# Some flags need to be propagated to the compiler or linker for good
         1221  +# libtool support.
         1222  +case $host in
         1223  +ia64-*-hpux*)
         1224  +  # Find out which ABI we are using.
         1225  +  echo 'int i;' > conftest.$ac_ext
         1226  +  if AC_TRY_EVAL(ac_compile); then
         1227  +    case `/usr/bin/file conftest.$ac_objext` in
         1228  +      *ELF-32*)
         1229  +	HPUX_IA64_MODE="32"
         1230  +	;;
         1231  +      *ELF-64*)
         1232  +	HPUX_IA64_MODE="64"
         1233  +	;;
         1234  +    esac
         1235  +  fi
         1236  +  rm -rf conftest*
         1237  +  ;;
         1238  +*-*-irix6*)
         1239  +  # Find out which ABI we are using.
         1240  +  echo '[#]line '$LINENO' "configure"' > conftest.$ac_ext
         1241  +  if AC_TRY_EVAL(ac_compile); then
         1242  +    if test "$lt_cv_prog_gnu_ld" = yes; then
         1243  +      case `/usr/bin/file conftest.$ac_objext` in
         1244  +	*32-bit*)
         1245  +	  LD="${LD-ld} -melf32bsmip"
         1246  +	  ;;
         1247  +	*N32*)
         1248  +	  LD="${LD-ld} -melf32bmipn32"
         1249  +	  ;;
         1250  +	*64-bit*)
         1251  +	  LD="${LD-ld} -melf64bmip"
         1252  +	;;
         1253  +      esac
         1254  +    else
         1255  +      case `/usr/bin/file conftest.$ac_objext` in
         1256  +	*32-bit*)
         1257  +	  LD="${LD-ld} -32"
         1258  +	  ;;
         1259  +	*N32*)
         1260  +	  LD="${LD-ld} -n32"
         1261  +	  ;;
         1262  +	*64-bit*)
         1263  +	  LD="${LD-ld} -64"
         1264  +	  ;;
         1265  +      esac
         1266  +    fi
         1267  +  fi
         1268  +  rm -rf conftest*
         1269  +  ;;
         1270  +
         1271  +x86_64-*kfreebsd*-gnu|x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*| \
         1272  +s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
         1273  +  # Find out which ABI we are using.
         1274  +  echo 'int i;' > conftest.$ac_ext
         1275  +  if AC_TRY_EVAL(ac_compile); then
         1276  +    case `/usr/bin/file conftest.o` in
         1277  +      *32-bit*)
         1278  +	case $host in
         1279  +	  x86_64-*kfreebsd*-gnu)
         1280  +	    LD="${LD-ld} -m elf_i386_fbsd"
         1281  +	    ;;
         1282  +	  x86_64-*linux*)
         1283  +	    LD="${LD-ld} -m elf_i386"
         1284  +	    ;;
         1285  +	  ppc64-*linux*|powerpc64-*linux*)
         1286  +	    LD="${LD-ld} -m elf32ppclinux"
         1287  +	    ;;
         1288  +	  s390x-*linux*)
         1289  +	    LD="${LD-ld} -m elf_s390"
         1290  +	    ;;
         1291  +	  sparc64-*linux*)
         1292  +	    LD="${LD-ld} -m elf32_sparc"
         1293  +	    ;;
         1294  +	esac
         1295  +	;;
         1296  +      *64-bit*)
         1297  +	case $host in
         1298  +	  x86_64-*kfreebsd*-gnu)
         1299  +	    LD="${LD-ld} -m elf_x86_64_fbsd"
         1300  +	    ;;
         1301  +	  x86_64-*linux*)
         1302  +	    LD="${LD-ld} -m elf_x86_64"
         1303  +	    ;;
         1304  +	  ppc*-*linux*|powerpc*-*linux*)
         1305  +	    LD="${LD-ld} -m elf64ppc"
         1306  +	    ;;
         1307  +	  s390*-*linux*|s390*-*tpf*)
         1308  +	    LD="${LD-ld} -m elf64_s390"
         1309  +	    ;;
         1310  +	  sparc*-*linux*)
         1311  +	    LD="${LD-ld} -m elf64_sparc"
         1312  +	    ;;
         1313  +	esac
         1314  +	;;
         1315  +    esac
         1316  +  fi
         1317  +  rm -rf conftest*
         1318  +  ;;
         1319  +
         1320  +*-*-sco3.2v5*)
         1321  +  # On SCO OpenServer 5, we need -belf to get full-featured binaries.
         1322  +  SAVE_CFLAGS="$CFLAGS"
         1323  +  CFLAGS="$CFLAGS -belf"
         1324  +  AC_CACHE_CHECK([whether the C compiler needs -belf], lt_cv_cc_needs_belf,
         1325  +    [AC_LANG_PUSH(C)
         1326  +     AC_LINK_IFELSE([AC_LANG_PROGRAM([[]],[[]])],[lt_cv_cc_needs_belf=yes],[lt_cv_cc_needs_belf=no])
         1327  +     AC_LANG_POP])
         1328  +  if test x"$lt_cv_cc_needs_belf" != x"yes"; then
         1329  +    # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf
         1330  +    CFLAGS="$SAVE_CFLAGS"
         1331  +  fi
         1332  +  ;;
         1333  +sparc*-*solaris*)
         1334  +  # Find out which ABI we are using.
         1335  +  echo 'int i;' > conftest.$ac_ext
         1336  +  if AC_TRY_EVAL(ac_compile); then
         1337  +    case `/usr/bin/file conftest.o` in
         1338  +    *64-bit*)
         1339  +      case $lt_cv_prog_gnu_ld in
         1340  +      yes*) LD="${LD-ld} -m elf64_sparc" ;;
         1341  +      *)
         1342  +	if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then
         1343  +	  LD="${LD-ld} -64"
         1344  +	fi
         1345  +	;;
         1346  +      esac
         1347  +      ;;
         1348  +    esac
         1349  +  fi
         1350  +  rm -rf conftest*
         1351  +  ;;
         1352  +esac
         1353  +
         1354  +need_locks="$enable_libtool_lock"
         1355  +])# _LT_ENABLE_LOCK
         1356  +
         1357  +
         1358  +# _LT_PROG_AR
         1359  +# -----------
         1360  +m4_defun([_LT_PROG_AR],
         1361  +[AC_CHECK_TOOLS(AR, [ar], false)
         1362  +: ${AR=ar}
         1363  +: ${AR_FLAGS=cru}
         1364  +_LT_DECL([], [AR], [1], [The archiver])
         1365  +_LT_DECL([], [AR_FLAGS], [1], [Flags to create an archive])
         1366  +
         1367  +AC_CACHE_CHECK([for archiver @FILE support], [lt_cv_ar_at_file],
         1368  +  [lt_cv_ar_at_file=no
         1369  +   AC_COMPILE_IFELSE([AC_LANG_PROGRAM],
         1370  +     [echo conftest.$ac_objext > conftest.lst
         1371  +      lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&AS_MESSAGE_LOG_FD'
         1372  +      AC_TRY_EVAL([lt_ar_try])
         1373  +      if test "$ac_status" -eq 0; then
         1374  +	# Ensure the archiver fails upon bogus file names.
         1375  +	rm -f conftest.$ac_objext libconftest.a
         1376  +	AC_TRY_EVAL([lt_ar_try])
         1377  +	if test "$ac_status" -ne 0; then
         1378  +          lt_cv_ar_at_file=@
         1379  +        fi
         1380  +      fi
         1381  +      rm -f conftest.* libconftest.a
         1382  +     ])
         1383  +  ])
         1384  +
         1385  +if test "x$lt_cv_ar_at_file" = xno; then
         1386  +  archiver_list_spec=
         1387  +else
         1388  +  archiver_list_spec=$lt_cv_ar_at_file
         1389  +fi
         1390  +_LT_DECL([], [archiver_list_spec], [1],
         1391  +  [How to feed a file listing to the archiver])
         1392  +])# _LT_PROG_AR
         1393  +
         1394  +
         1395  +# _LT_CMD_OLD_ARCHIVE
         1396  +# -------------------
         1397  +m4_defun([_LT_CMD_OLD_ARCHIVE],
         1398  +[_LT_PROG_AR
         1399  +
         1400  +AC_CHECK_TOOL(STRIP, strip, :)
         1401  +test -z "$STRIP" && STRIP=:
         1402  +_LT_DECL([], [STRIP], [1], [A symbol stripping program])
         1403  +
         1404  +AC_CHECK_TOOL(RANLIB, ranlib, :)
         1405  +test -z "$RANLIB" && RANLIB=:
         1406  +_LT_DECL([], [RANLIB], [1],
         1407  +    [Commands used to install an old-style archive])
         1408  +
         1409  +# Determine commands to create old-style static archives.
         1410  +old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs'
         1411  +old_postinstall_cmds='chmod 644 $oldlib'
         1412  +old_postuninstall_cmds=
         1413  +
         1414  +if test -n "$RANLIB"; then
         1415  +  case $host_os in
         1416  +  openbsd*)
         1417  +    old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$oldlib"
         1418  +    ;;
         1419  +  *)
         1420  +    old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$oldlib"
         1421  +    ;;
         1422  +  esac
         1423  +  old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib"
         1424  +fi
         1425  +
         1426  +case $host_os in
         1427  +  darwin*)
         1428  +    lock_old_archive_extraction=yes ;;
         1429  +  *)
         1430  +    lock_old_archive_extraction=no ;;
         1431  +esac
         1432  +_LT_DECL([], [old_postinstall_cmds], [2])
         1433  +_LT_DECL([], [old_postuninstall_cmds], [2])
         1434  +_LT_TAGDECL([], [old_archive_cmds], [2],
         1435  +    [Commands used to build an old-style archive])
         1436  +_LT_DECL([], [lock_old_archive_extraction], [0],
         1437  +    [Whether to use a lock for old archive extraction])
         1438  +])# _LT_CMD_OLD_ARCHIVE
         1439  +
         1440  +
         1441  +# _LT_COMPILER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS,
         1442  +#		[OUTPUT-FILE], [ACTION-SUCCESS], [ACTION-FAILURE])
         1443  +# ----------------------------------------------------------------
         1444  +# Check whether the given compiler option works
         1445  +AC_DEFUN([_LT_COMPILER_OPTION],
         1446  +[m4_require([_LT_FILEUTILS_DEFAULTS])dnl
         1447  +m4_require([_LT_DECL_SED])dnl
         1448  +AC_CACHE_CHECK([$1], [$2],
         1449  +  [$2=no
         1450  +   m4_if([$4], , [ac_outfile=conftest.$ac_objext], [ac_outfile=$4])
         1451  +   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
         1452  +   lt_compiler_flag="$3"
         1453  +   # Insert the option either (1) after the last *FLAGS variable, or
         1454  +   # (2) before a word containing "conftest.", or (3) at the end.
         1455  +   # Note that $ac_compile itself does not contain backslashes and begins
         1456  +   # with a dollar sign (not a hyphen), so the echo should work correctly.
         1457  +   # The option is referenced via a variable to avoid confusing sed.
         1458  +   lt_compile=`echo "$ac_compile" | $SED \
         1459  +   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
         1460  +   -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \
         1461  +   -e 's:$: $lt_compiler_flag:'`
         1462  +   (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&AS_MESSAGE_LOG_FD)
         1463  +   (eval "$lt_compile" 2>conftest.err)
         1464  +   ac_status=$?
         1465  +   cat conftest.err >&AS_MESSAGE_LOG_FD
         1466  +   echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD
         1467  +   if (exit $ac_status) && test -s "$ac_outfile"; then
         1468  +     # The compiler can only warn and ignore the option if not recognized
         1469  +     # So say no if there are warnings other than the usual output.
         1470  +     $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp
         1471  +     $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
         1472  +     if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
         1473  +       $2=yes
         1474  +     fi
         1475  +   fi
         1476  +   $RM conftest*
         1477  +])
         1478  +
         1479  +if test x"[$]$2" = xyes; then
         1480  +    m4_if([$5], , :, [$5])
         1481  +else
         1482  +    m4_if([$6], , :, [$6])
         1483  +fi
         1484  +])# _LT_COMPILER_OPTION
         1485  +
         1486  +# Old name:
         1487  +AU_ALIAS([AC_LIBTOOL_COMPILER_OPTION], [_LT_COMPILER_OPTION])
         1488  +dnl aclocal-1.4 backwards compatibility:
         1489  +dnl AC_DEFUN([AC_LIBTOOL_COMPILER_OPTION], [])
         1490  +
         1491  +
         1492  +# _LT_LINKER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS,
         1493  +#                  [ACTION-SUCCESS], [ACTION-FAILURE])
         1494  +# ----------------------------------------------------
         1495  +# Check whether the given linker option works
         1496  +AC_DEFUN([_LT_LINKER_OPTION],
         1497  +[m4_require([_LT_FILEUTILS_DEFAULTS])dnl
         1498  +m4_require([_LT_DECL_SED])dnl
         1499  +AC_CACHE_CHECK([$1], [$2],
         1500  +  [$2=no
         1501  +   save_LDFLAGS="$LDFLAGS"
         1502  +   LDFLAGS="$LDFLAGS $3"
         1503  +   echo "$lt_simple_link_test_code" > conftest.$ac_ext
         1504  +   if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
         1505  +     # The linker can only warn and ignore the option if not recognized
         1506  +     # So say no if there are warnings
         1507  +     if test -s conftest.err; then
         1508  +       # Append any errors to the config.log.
         1509  +       cat conftest.err 1>&AS_MESSAGE_LOG_FD
         1510  +       $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp
         1511  +       $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
         1512  +       if diff conftest.exp conftest.er2 >/dev/null; then
         1513  +         $2=yes
         1514  +       fi
         1515  +     else
         1516  +       $2=yes
         1517  +     fi
         1518  +   fi
         1519  +   $RM -r conftest*
         1520  +   LDFLAGS="$save_LDFLAGS"
         1521  +])
         1522  +
         1523  +if test x"[$]$2" = xyes; then
         1524  +    m4_if([$4], , :, [$4])
         1525  +else
         1526  +    m4_if([$5], , :, [$5])
         1527  +fi
         1528  +])# _LT_LINKER_OPTION
         1529  +
         1530  +# Old name:
         1531  +AU_ALIAS([AC_LIBTOOL_LINKER_OPTION], [_LT_LINKER_OPTION])
         1532  +dnl aclocal-1.4 backwards compatibility:
         1533  +dnl AC_DEFUN([AC_LIBTOOL_LINKER_OPTION], [])
         1534  +
         1535  +
         1536  +# LT_CMD_MAX_LEN
         1537  +#---------------
         1538  +AC_DEFUN([LT_CMD_MAX_LEN],
         1539  +[AC_REQUIRE([AC_CANONICAL_HOST])dnl
         1540  +# find the maximum length of command line arguments
         1541  +AC_MSG_CHECKING([the maximum length of command line arguments])
         1542  +AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl
         1543  +  i=0
         1544  +  teststring="ABCD"
         1545  +
         1546  +  case $build_os in
         1547  +  msdosdjgpp*)
         1548  +    # On DJGPP, this test can blow up pretty badly due to problems in libc
         1549  +    # (any single argument exceeding 2000 bytes causes a buffer overrun
         1550  +    # during glob expansion).  Even if it were fixed, the result of this
         1551  +    # check would be larger than it should be.
         1552  +    lt_cv_sys_max_cmd_len=12288;    # 12K is about right
         1553  +    ;;
         1554  +
         1555  +  gnu*)
         1556  +    # Under GNU Hurd, this test is not required because there is
         1557  +    # no limit to the length of command line arguments.
         1558  +    # Libtool will interpret -1 as no limit whatsoever
         1559  +    lt_cv_sys_max_cmd_len=-1;
         1560  +    ;;
         1561  +
         1562  +  cygwin* | mingw* | cegcc*)
         1563  +    # On Win9x/ME, this test blows up -- it succeeds, but takes
         1564  +    # about 5 minutes as the teststring grows exponentially.
         1565  +    # Worse, since 9x/ME are not pre-emptively multitasking,
         1566  +    # you end up with a "frozen" computer, even though with patience
         1567  +    # the test eventually succeeds (with a max line length of 256k).
         1568  +    # Instead, let's just punt: use the minimum linelength reported by
         1569  +    # all of the supported platforms: 8192 (on NT/2K/XP).
         1570  +    lt_cv_sys_max_cmd_len=8192;
         1571  +    ;;
         1572  +
         1573  +  mint*)
         1574  +    # On MiNT this can take a long time and run out of memory.
         1575  +    lt_cv_sys_max_cmd_len=8192;
         1576  +    ;;
         1577  +
         1578  +  amigaos*)
         1579  +    # On AmigaOS with pdksh, this test takes hours, literally.
         1580  +    # So we just punt and use a minimum line length of 8192.
         1581  +    lt_cv_sys_max_cmd_len=8192;
         1582  +    ;;
         1583  +
         1584  +  netbsd* | freebsd* | openbsd* | darwin* | dragonfly*)
         1585  +    # This has been around since 386BSD, at least.  Likely further.
         1586  +    if test -x /sbin/sysctl; then
         1587  +      lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax`
         1588  +    elif test -x /usr/sbin/sysctl; then
         1589  +      lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax`
         1590  +    else
         1591  +      lt_cv_sys_max_cmd_len=65536	# usable default for all BSDs
         1592  +    fi
         1593  +    # And add a safety zone
         1594  +    lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4`
         1595  +    lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3`
         1596  +    ;;
         1597  +
         1598  +  interix*)
         1599  +    # We know the value 262144 and hardcode it with a safety zone (like BSD)
         1600  +    lt_cv_sys_max_cmd_len=196608
         1601  +    ;;
         1602  +
         1603  +  osf*)
         1604  +    # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure
         1605  +    # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not
         1606  +    # nice to cause kernel panics so lets avoid the loop below.
         1607  +    # First set a reasonable default.
         1608  +    lt_cv_sys_max_cmd_len=16384
         1609  +    #
         1610  +    if test -x /sbin/sysconfig; then
         1611  +      case `/sbin/sysconfig -q proc exec_disable_arg_limit` in
         1612  +        *1*) lt_cv_sys_max_cmd_len=-1 ;;
         1613  +      esac
         1614  +    fi
         1615  +    ;;
         1616  +  sco3.2v5*)
         1617  +    lt_cv_sys_max_cmd_len=102400
         1618  +    ;;
         1619  +  sysv5* | sco5v6* | sysv4.2uw2*)
         1620  +    kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null`
         1621  +    if test -n "$kargmax"; then
         1622  +      lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[[	 ]]//'`
         1623  +    else
         1624  +      lt_cv_sys_max_cmd_len=32768
         1625  +    fi
         1626  +    ;;
         1627  +  *)
         1628  +    lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null`
         1629  +    if test -n "$lt_cv_sys_max_cmd_len"; then
         1630  +      lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4`
         1631  +      lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3`
         1632  +    else
         1633  +      # Make teststring a little bigger before we do anything with it.
         1634  +      # a 1K string should be a reasonable start.
         1635  +      for i in 1 2 3 4 5 6 7 8 ; do
         1636  +        teststring=$teststring$teststring
         1637  +      done
         1638  +      SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}}
         1639  +      # If test is not a shell built-in, we'll probably end up computing a
         1640  +      # maximum length that is only half of the actual maximum length, but
         1641  +      # we can't tell.
         1642  +      while { test "X"`func_fallback_echo "$teststring$teststring" 2>/dev/null` \
         1643  +	         = "X$teststring$teststring"; } >/dev/null 2>&1 &&
         1644  +	      test $i != 17 # 1/2 MB should be enough
         1645  +      do
         1646  +        i=`expr $i + 1`
         1647  +        teststring=$teststring$teststring
         1648  +      done
         1649  +      # Only check the string length outside the loop.
         1650  +      lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1`
         1651  +      teststring=
         1652  +      # Add a significant safety factor because C++ compilers can tack on
         1653  +      # massive amounts of additional arguments before passing them to the
         1654  +      # linker.  It appears as though 1/2 is a usable value.
         1655  +      lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2`
         1656  +    fi
         1657  +    ;;
         1658  +  esac
         1659  +])
         1660  +if test -n $lt_cv_sys_max_cmd_len ; then
         1661  +  AC_MSG_RESULT($lt_cv_sys_max_cmd_len)
         1662  +else
         1663  +  AC_MSG_RESULT(none)
         1664  +fi
         1665  +max_cmd_len=$lt_cv_sys_max_cmd_len
         1666  +_LT_DECL([], [max_cmd_len], [0],
         1667  +    [What is the maximum length of a command?])
         1668  +])# LT_CMD_MAX_LEN
         1669  +
         1670  +# Old name:
         1671  +AU_ALIAS([AC_LIBTOOL_SYS_MAX_CMD_LEN], [LT_CMD_MAX_LEN])
         1672  +dnl aclocal-1.4 backwards compatibility:
         1673  +dnl AC_DEFUN([AC_LIBTOOL_SYS_MAX_CMD_LEN], [])
         1674  +
         1675  +
         1676  +# _LT_HEADER_DLFCN
         1677  +# ----------------
         1678  +m4_defun([_LT_HEADER_DLFCN],
         1679  +[AC_CHECK_HEADERS([dlfcn.h], [], [], [AC_INCLUDES_DEFAULT])dnl
         1680  +])# _LT_HEADER_DLFCN
         1681  +
         1682  +
         1683  +# _LT_TRY_DLOPEN_SELF (ACTION-IF-TRUE, ACTION-IF-TRUE-W-USCORE,
         1684  +#                      ACTION-IF-FALSE, ACTION-IF-CROSS-COMPILING)
         1685  +# ----------------------------------------------------------------
         1686  +m4_defun([_LT_TRY_DLOPEN_SELF],
         1687  +[m4_require([_LT_HEADER_DLFCN])dnl
         1688  +if test "$cross_compiling" = yes; then :
         1689  +  [$4]
         1690  +else
         1691  +  lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
         1692  +  lt_status=$lt_dlunknown
         1693  +  cat > conftest.$ac_ext <<_LT_EOF
         1694  +[#line $LINENO "configure"
         1695  +#include "confdefs.h"
         1696  +
         1697  +#if HAVE_DLFCN_H
         1698  +#include <dlfcn.h>
         1699  +#endif
         1700  +
         1701  +#include <stdio.h>
         1702  +
         1703  +#ifdef RTLD_GLOBAL
         1704  +#  define LT_DLGLOBAL		RTLD_GLOBAL
         1705  +#else
         1706  +#  ifdef DL_GLOBAL
         1707  +#    define LT_DLGLOBAL		DL_GLOBAL
         1708  +#  else
         1709  +#    define LT_DLGLOBAL		0
         1710  +#  endif
         1711  +#endif
         1712  +
         1713  +/* We may have to define LT_DLLAZY_OR_NOW in the command line if we
         1714  +   find out it does not work in some platform. */
         1715  +#ifndef LT_DLLAZY_OR_NOW
         1716  +#  ifdef RTLD_LAZY
         1717  +#    define LT_DLLAZY_OR_NOW		RTLD_LAZY
         1718  +#  else
         1719  +#    ifdef DL_LAZY
         1720  +#      define LT_DLLAZY_OR_NOW		DL_LAZY
         1721  +#    else
         1722  +#      ifdef RTLD_NOW
         1723  +#        define LT_DLLAZY_OR_NOW	RTLD_NOW
         1724  +#      else
         1725  +#        ifdef DL_NOW
         1726  +#          define LT_DLLAZY_OR_NOW	DL_NOW
         1727  +#        else
         1728  +#          define LT_DLLAZY_OR_NOW	0
         1729  +#        endif
         1730  +#      endif
         1731  +#    endif
         1732  +#  endif
         1733  +#endif
         1734  +
         1735  +/* When -fvisbility=hidden is used, assume the code has been annotated
         1736  +   correspondingly for the symbols needed.  */
         1737  +#if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3))
         1738  +int fnord () __attribute__((visibility("default")));
         1739  +#endif
         1740  +
         1741  +int fnord () { return 42; }
         1742  +int main ()
         1743  +{
         1744  +  void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
         1745  +  int status = $lt_dlunknown;
         1746  +
         1747  +  if (self)
         1748  +    {
         1749  +      if (dlsym (self,"fnord"))       status = $lt_dlno_uscore;
         1750  +      else
         1751  +        {
         1752  +	  if (dlsym( self,"_fnord"))  status = $lt_dlneed_uscore;
         1753  +          else puts (dlerror ());
         1754  +	}
         1755  +      /* dlclose (self); */
         1756  +    }
         1757  +  else
         1758  +    puts (dlerror ());
         1759  +
         1760  +  return status;
         1761  +}]
         1762  +_LT_EOF
         1763  +  if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext} 2>/dev/null; then
         1764  +    (./conftest; exit; ) >&AS_MESSAGE_LOG_FD 2>/dev/null
         1765  +    lt_status=$?
         1766  +    case x$lt_status in
         1767  +      x$lt_dlno_uscore) $1 ;;
         1768  +      x$lt_dlneed_uscore) $2 ;;
         1769  +      x$lt_dlunknown|x*) $3 ;;
         1770  +    esac
         1771  +  else :
         1772  +    # compilation failed
         1773  +    $3
         1774  +  fi
         1775  +fi
         1776  +rm -fr conftest*
         1777  +])# _LT_TRY_DLOPEN_SELF
         1778  +
         1779  +
         1780  +# LT_SYS_DLOPEN_SELF
         1781  +# ------------------
         1782  +AC_DEFUN([LT_SYS_DLOPEN_SELF],
         1783  +[m4_require([_LT_HEADER_DLFCN])dnl
         1784  +if test "x$enable_dlopen" != xyes; then
         1785  +  enable_dlopen=unknown
         1786  +  enable_dlopen_self=unknown
         1787  +  enable_dlopen_self_static=unknown
         1788  +else
         1789  +  lt_cv_dlopen=no
         1790  +  lt_cv_dlopen_libs=
         1791  +
         1792  +  case $host_os in
         1793  +  beos*)
         1794  +    lt_cv_dlopen="load_add_on"
         1795  +    lt_cv_dlopen_libs=
         1796  +    lt_cv_dlopen_self=yes
         1797  +    ;;
         1798  +
         1799  +  mingw* | pw32* | cegcc*)
         1800  +    lt_cv_dlopen="LoadLibrary"
         1801  +    lt_cv_dlopen_libs=
         1802  +    ;;
         1803  +
         1804  +  cygwin*)
         1805  +    lt_cv_dlopen="dlopen"
         1806  +    lt_cv_dlopen_libs=
         1807  +    ;;
         1808  +
         1809  +  darwin*)
         1810  +  # if libdl is installed we need to link against it
         1811  +    AC_CHECK_LIB([dl], [dlopen],
         1812  +		[lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"],[
         1813  +    lt_cv_dlopen="dyld"
         1814  +    lt_cv_dlopen_libs=
         1815  +    lt_cv_dlopen_self=yes
         1816  +    ])
         1817  +    ;;
         1818  +
         1819  +  *)
         1820  +    AC_CHECK_FUNC([shl_load],
         1821  +	  [lt_cv_dlopen="shl_load"],
         1822  +      [AC_CHECK_LIB([dld], [shl_load],
         1823  +	    [lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld"],
         1824  +	[AC_CHECK_FUNC([dlopen],
         1825  +	      [lt_cv_dlopen="dlopen"],
         1826  +	  [AC_CHECK_LIB([dl], [dlopen],
         1827  +		[lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"],
         1828  +	    [AC_CHECK_LIB([svld], [dlopen],
         1829  +		  [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"],
         1830  +	      [AC_CHECK_LIB([dld], [dld_link],
         1831  +		    [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld"])
         1832  +	      ])
         1833  +	    ])
         1834  +	  ])
         1835  +	])
         1836  +      ])
         1837  +    ;;
         1838  +  esac
         1839  +
         1840  +  if test "x$lt_cv_dlopen" != xno; then
         1841  +    enable_dlopen=yes
         1842  +  else
         1843  +    enable_dlopen=no
         1844  +  fi
         1845  +
         1846  +  case $lt_cv_dlopen in
         1847  +  dlopen)
         1848  +    save_CPPFLAGS="$CPPFLAGS"
         1849  +    test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H"
         1850  +
         1851  +    save_LDFLAGS="$LDFLAGS"
         1852  +    wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\"
         1853  +
         1854  +    save_LIBS="$LIBS"
         1855  +    LIBS="$lt_cv_dlopen_libs $LIBS"
         1856  +
         1857  +    AC_CACHE_CHECK([whether a program can dlopen itself],
         1858  +	  lt_cv_dlopen_self, [dnl
         1859  +	  _LT_TRY_DLOPEN_SELF(
         1860  +	    lt_cv_dlopen_self=yes, lt_cv_dlopen_self=yes,
         1861  +	    lt_cv_dlopen_self=no, lt_cv_dlopen_self=cross)
         1862  +    ])
         1863  +
         1864  +    if test "x$lt_cv_dlopen_self" = xyes; then
         1865  +      wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\"
         1866  +      AC_CACHE_CHECK([whether a statically linked program can dlopen itself],
         1867  +	  lt_cv_dlopen_self_static, [dnl
         1868  +	  _LT_TRY_DLOPEN_SELF(
         1869  +	    lt_cv_dlopen_self_static=yes, lt_cv_dlopen_self_static=yes,
         1870  +	    lt_cv_dlopen_self_static=no,  lt_cv_dlopen_self_static=cross)
         1871  +      ])
         1872  +    fi
         1873  +
         1874  +    CPPFLAGS="$save_CPPFLAGS"
         1875  +    LDFLAGS="$save_LDFLAGS"
         1876  +    LIBS="$save_LIBS"
         1877  +    ;;
         1878  +  esac
         1879  +
         1880  +  case $lt_cv_dlopen_self in
         1881  +  yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;;
         1882  +  *) enable_dlopen_self=unknown ;;
         1883  +  esac
         1884  +
         1885  +  case $lt_cv_dlopen_self_static in
         1886  +  yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;;
         1887  +  *) enable_dlopen_self_static=unknown ;;
         1888  +  esac
         1889  +fi
         1890  +_LT_DECL([dlopen_support], [enable_dlopen], [0],
         1891  +	 [Whether dlopen is supported])
         1892  +_LT_DECL([dlopen_self], [enable_dlopen_self], [0],
         1893  +	 [Whether dlopen of programs is supported])
         1894  +_LT_DECL([dlopen_self_static], [enable_dlopen_self_static], [0],
         1895  +	 [Whether dlopen of statically linked programs is supported])
         1896  +])# LT_SYS_DLOPEN_SELF
         1897  +
         1898  +# Old name:
         1899  +AU_ALIAS([AC_LIBTOOL_DLOPEN_SELF], [LT_SYS_DLOPEN_SELF])
         1900  +dnl aclocal-1.4 backwards compatibility:
         1901  +dnl AC_DEFUN([AC_LIBTOOL_DLOPEN_SELF], [])
         1902  +
         1903  +
         1904  +# _LT_COMPILER_C_O([TAGNAME])
         1905  +# ---------------------------
         1906  +# Check to see if options -c and -o are simultaneously supported by compiler.
         1907  +# This macro does not hard code the compiler like AC_PROG_CC_C_O.
         1908  +m4_defun([_LT_COMPILER_C_O],
         1909  +[m4_require([_LT_DECL_SED])dnl
         1910  +m4_require([_LT_FILEUTILS_DEFAULTS])dnl
         1911  +m4_require([_LT_TAG_COMPILER])dnl
         1912  +AC_CACHE_CHECK([if $compiler supports -c -o file.$ac_objext],
         1913  +  [_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)],
         1914  +  [_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=no
         1915  +   $RM -r conftest 2>/dev/null
         1916  +   mkdir conftest
         1917  +   cd conftest
         1918  +   mkdir out
         1919  +   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
         1920  +
         1921  +   lt_compiler_flag="-o out/conftest2.$ac_objext"
         1922  +   # Insert the option either (1) after the last *FLAGS variable, or
         1923  +   # (2) before a word containing "conftest.", or (3) at the end.
         1924  +   # Note that $ac_compile itself does not contain backslashes and begins
         1925  +   # with a dollar sign (not a hyphen), so the echo should work correctly.
         1926  +   lt_compile=`echo "$ac_compile" | $SED \
         1927  +   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
         1928  +   -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \
         1929  +   -e 's:$: $lt_compiler_flag:'`
         1930  +   (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&AS_MESSAGE_LOG_FD)
         1931  +   (eval "$lt_compile" 2>out/conftest.err)
         1932  +   ac_status=$?
         1933  +   cat out/conftest.err >&AS_MESSAGE_LOG_FD
         1934  +   echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD
         1935  +   if (exit $ac_status) && test -s out/conftest2.$ac_objext
         1936  +   then
         1937  +     # The compiler can only warn and ignore the option if not recognized
         1938  +     # So say no if there are warnings
         1939  +     $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp
         1940  +     $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2
         1941  +     if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then
         1942  +       _LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes
         1943  +     fi
         1944  +   fi
         1945  +   chmod u+w . 2>&AS_MESSAGE_LOG_FD
         1946  +   $RM conftest*
         1947  +   # SGI C++ compiler will create directory out/ii_files/ for
         1948  +   # template instantiation
         1949  +   test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files
         1950  +   $RM out/* && rmdir out
         1951  +   cd ..
         1952  +   $RM -r conftest
         1953  +   $RM conftest*
         1954  +])
         1955  +_LT_TAGDECL([compiler_c_o], [lt_cv_prog_compiler_c_o], [1],
         1956  +	[Does compiler simultaneously support -c and -o options?])
         1957  +])# _LT_COMPILER_C_O
         1958  +
         1959  +
         1960  +# _LT_COMPILER_FILE_LOCKS([TAGNAME])
         1961  +# ----------------------------------
         1962  +# Check to see if we can do hard links to lock some files if needed
         1963  +m4_defun([_LT_COMPILER_FILE_LOCKS],
         1964  +[m4_require([_LT_ENABLE_LOCK])dnl
         1965  +m4_require([_LT_FILEUTILS_DEFAULTS])dnl
         1966  +_LT_COMPILER_C_O([$1])
         1967  +
         1968  +hard_links="nottested"
         1969  +if test "$_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)" = no && test "$need_locks" != no; then
         1970  +  # do not overwrite the value of need_locks provided by the user
         1971  +  AC_MSG_CHECKING([if we can lock with hard links])
         1972  +  hard_links=yes
         1973  +  $RM conftest*
         1974  +  ln conftest.a conftest.b 2>/dev/null && hard_links=no
         1975  +  touch conftest.a
         1976  +  ln conftest.a conftest.b 2>&5 || hard_links=no
         1977  +  ln conftest.a conftest.b 2>/dev/null && hard_links=no
         1978  +  AC_MSG_RESULT([$hard_links])
         1979  +  if test "$hard_links" = no; then
         1980  +    AC_MSG_WARN([`$CC' does not support `-c -o', so `make -j' may be unsafe])
         1981  +    need_locks=warn
         1982  +  fi
         1983  +else
         1984  +  need_locks=no
         1985  +fi
         1986  +_LT_DECL([], [need_locks], [1], [Must we lock files when doing compilation?])
         1987  +])# _LT_COMPILER_FILE_LOCKS
         1988  +
         1989  +
         1990  +# _LT_CHECK_OBJDIR
         1991  +# ----------------
         1992  +m4_defun([_LT_CHECK_OBJDIR],
         1993  +[AC_CACHE_CHECK([for objdir], [lt_cv_objdir],
         1994  +[rm -f .libs 2>/dev/null
         1995  +mkdir .libs 2>/dev/null
         1996  +if test -d .libs; then
         1997  +  lt_cv_objdir=.libs
         1998  +else
         1999  +  # MS-DOS does not allow filenames that begin with a dot.
         2000  +  lt_cv_objdir=_libs
         2001  +fi
         2002  +rmdir .libs 2>/dev/null])
         2003  +objdir=$lt_cv_objdir
         2004  +_LT_DECL([], [objdir], [0],
         2005  +         [The name of the directory that contains temporary libtool files])dnl
         2006  +m4_pattern_allow([LT_OBJDIR])dnl
         2007  +AC_DEFINE_UNQUOTED(LT_OBJDIR, "$lt_cv_objdir/",
         2008  +  [Define to the sub-directory in which libtool stores uninstalled libraries.])
         2009  +])# _LT_CHECK_OBJDIR
         2010  +
         2011  +
         2012  +# _LT_LINKER_HARDCODE_LIBPATH([TAGNAME])
         2013  +# --------------------------------------
         2014  +# Check hardcoding attributes.
         2015  +m4_defun([_LT_LINKER_HARDCODE_LIBPATH],
         2016  +[AC_MSG_CHECKING([how to hardcode library paths into programs])
         2017  +_LT_TAGVAR(hardcode_action, $1)=
         2018  +if test -n "$_LT_TAGVAR(hardcode_libdir_flag_spec, $1)" ||
         2019  +   test -n "$_LT_TAGVAR(runpath_var, $1)" ||
         2020  +   test "X$_LT_TAGVAR(hardcode_automatic, $1)" = "Xyes" ; then
         2021  +
         2022  +  # We can hardcode non-existent directories.
         2023  +  if test "$_LT_TAGVAR(hardcode_direct, $1)" != no &&
         2024  +     # If the only mechanism to avoid hardcoding is shlibpath_var, we
         2025  +     # have to relink, otherwise we might link with an installed library
         2026  +     # when we should be linking with a yet-to-be-installed one
         2027  +     ## test "$_LT_TAGVAR(hardcode_shlibpath_var, $1)" != no &&
         2028  +     test "$_LT_TAGVAR(hardcode_minus_L, $1)" != no; then
         2029  +    # Linking always hardcodes the temporary library directory.
         2030  +    _LT_TAGVAR(hardcode_action, $1)=relink
         2031  +  else
         2032  +    # We can link without hardcoding, and we can hardcode nonexisting dirs.
         2033  +    _LT_TAGVAR(hardcode_action, $1)=immediate
         2034  +  fi
         2035  +else
         2036  +  # We cannot hardcode anything, or else we can only hardcode existing
         2037  +  # directories.
         2038  +  _LT_TAGVAR(hardcode_action, $1)=unsupported
         2039  +fi
         2040  +AC_MSG_RESULT([$_LT_TAGVAR(hardcode_action, $1)])
         2041  +
         2042  +if test "$_LT_TAGVAR(hardcode_action, $1)" = relink ||
         2043  +   test "$_LT_TAGVAR(inherit_rpath, $1)" = yes; then
         2044  +  # Fast installation is not supported
         2045  +  enable_fast_install=no
         2046  +elif test "$shlibpath_overrides_runpath" = yes ||
         2047  +     test "$enable_shared" = no; then
         2048  +  # Fast installation is not necessary
         2049  +  enable_fast_install=needless
         2050  +fi
         2051  +_LT_TAGDECL([], [hardcode_action], [0],
         2052  +    [How to hardcode a shared library path into an executable])
         2053  +])# _LT_LINKER_HARDCODE_LIBPATH
         2054  +
         2055  +
         2056  +# _LT_CMD_STRIPLIB
         2057  +# ----------------
         2058  +m4_defun([_LT_CMD_STRIPLIB],
         2059  +[m4_require([_LT_DECL_EGREP])
         2060  +striplib=
         2061  +old_striplib=
         2062  +AC_MSG_CHECKING([whether stripping libraries is possible])
         2063  +if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then
         2064  +  test -z "$old_striplib" && old_striplib="$STRIP --strip-debug"
         2065  +  test -z "$striplib" && striplib="$STRIP --strip-unneeded"
         2066  +  AC_MSG_RESULT([yes])
         2067  +else
         2068  +# FIXME - insert some real tests, host_os isn't really good enough
         2069  +  case $host_os in
         2070  +  darwin*)
         2071  +    if test -n "$STRIP" ; then
         2072  +      striplib="$STRIP -x"
         2073  +      old_striplib="$STRIP -S"
         2074  +      AC_MSG_RESULT([yes])
         2075  +    else
         2076  +      AC_MSG_RESULT([no])
         2077  +    fi
         2078  +    ;;
         2079  +  *)
         2080  +    AC_MSG_RESULT([no])
         2081  +    ;;
         2082  +  esac
         2083  +fi
         2084  +_LT_DECL([], [old_striplib], [1], [Commands to strip libraries])
         2085  +_LT_DECL([], [striplib], [1])
         2086  +])# _LT_CMD_STRIPLIB
         2087  +
         2088  +
         2089  +# _LT_SYS_DYNAMIC_LINKER([TAG])
         2090  +# -----------------------------
         2091  +# PORTME Fill in your ld.so characteristics
         2092  +m4_defun([_LT_SYS_DYNAMIC_LINKER],
         2093  +[AC_REQUIRE([AC_CANONICAL_HOST])dnl
         2094  +m4_require([_LT_DECL_EGREP])dnl
         2095  +m4_require([_LT_FILEUTILS_DEFAULTS])dnl
         2096  +m4_require([_LT_DECL_OBJDUMP])dnl
         2097  +m4_require([_LT_DECL_SED])dnl
         2098  +m4_require([_LT_CHECK_SHELL_FEATURES])dnl
         2099  +AC_MSG_CHECKING([dynamic linker characteristics])
         2100  +m4_if([$1],
         2101  +	[], [
         2102  +if test "$GCC" = yes; then
         2103  +  case $host_os in
         2104  +    darwin*) lt_awk_arg="/^libraries:/,/LR/" ;;
         2105  +    *) lt_awk_arg="/^libraries:/" ;;
         2106  +  esac
         2107  +  case $host_os in
         2108  +    mingw* | cegcc*) lt_sed_strip_eq="s,=\([[A-Za-z]]:\),\1,g" ;;
         2109  +    *) lt_sed_strip_eq="s,=/,/,g" ;;
         2110  +  esac
         2111  +  lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq`
         2112  +  case $lt_search_path_spec in
         2113  +  *\;*)
         2114  +    # if the path contains ";" then we assume it to be the separator
         2115  +    # otherwise default to the standard path separator (i.e. ":") - it is
         2116  +    # assumed that no part of a normal pathname contains ";" but that should
         2117  +    # okay in the real world where ";" in dirpaths is itself problematic.
         2118  +    lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED 's/;/ /g'`
         2119  +    ;;
         2120  +  *)
         2121  +    lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED "s/$PATH_SEPARATOR/ /g"`
         2122  +    ;;
         2123  +  esac
         2124  +  # Ok, now we have the path, separated by spaces, we can step through it
         2125  +  # and add multilib dir if necessary.
         2126  +  lt_tmp_lt_search_path_spec=
         2127  +  lt_multi_os_dir=`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null`
         2128  +  for lt_sys_path in $lt_search_path_spec; do
         2129  +    if test -d "$lt_sys_path/$lt_multi_os_dir"; then
         2130  +      lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path/$lt_multi_os_dir"
         2131  +    else
         2132  +      test -d "$lt_sys_path" && \
         2133  +	lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path"
         2134  +    fi
         2135  +  done
         2136  +  lt_search_path_spec=`$ECHO "$lt_tmp_lt_search_path_spec" | awk '
         2137  +BEGIN {RS=" "; FS="/|\n";} {
         2138  +  lt_foo="";
         2139  +  lt_count=0;
         2140  +  for (lt_i = NF; lt_i > 0; lt_i--) {
         2141  +    if ($lt_i != "" && $lt_i != ".") {
         2142  +      if ($lt_i == "..") {
         2143  +        lt_count++;
         2144  +      } else {
         2145  +        if (lt_count == 0) {
         2146  +          lt_foo="/" $lt_i lt_foo;
         2147  +        } else {
         2148  +          lt_count--;
         2149  +        }
         2150  +      }
         2151  +    }
         2152  +  }
         2153  +  if (lt_foo != "") { lt_freq[[lt_foo]]++; }
         2154  +  if (lt_freq[[lt_foo]] == 1) { print lt_foo; }
         2155  +}'`
         2156  +  # AWK program above erroneously prepends '/' to C:/dos/paths
         2157  +  # for these hosts.
         2158  +  case $host_os in
         2159  +    mingw* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\
         2160  +      $SED 's,/\([[A-Za-z]]:\),\1,g'` ;;
         2161  +  esac
         2162  +  sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP`
         2163  +else
         2164  +  sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
         2165  +fi])
         2166  +library_names_spec=
         2167  +libname_spec='lib$name'
         2168  +soname_spec=
         2169  +shrext_cmds=".so"
         2170  +postinstall_cmds=
         2171  +postuninstall_cmds=
         2172  +finish_cmds=
         2173  +finish_eval=
         2174  +shlibpath_var=
         2175  +shlibpath_overrides_runpath=unknown
         2176  +version_type=none
         2177  +dynamic_linker="$host_os ld.so"
         2178  +sys_lib_dlsearch_path_spec="/lib /usr/lib"
         2179  +need_lib_prefix=unknown
         2180  +hardcode_into_libs=no
         2181  +
         2182  +# when you set need_version to no, make sure it does not cause -set_version
         2183  +# flags to be left without arguments
         2184  +need_version=unknown
         2185  +
         2186  +case $host_os in
         2187  +aix3*)
         2188  +  version_type=linux
         2189  +  library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a'
         2190  +  shlibpath_var=LIBPATH
         2191  +
         2192  +  # AIX 3 has no versioning support, so we append a major version to the name.
         2193  +  soname_spec='${libname}${release}${shared_ext}$major'
         2194  +  ;;
         2195  +
         2196  +aix[[4-9]]*)
         2197  +  version_type=linux
         2198  +  need_lib_prefix=no
         2199  +  need_version=no
         2200  +  hardcode_into_libs=yes
         2201  +  if test "$host_cpu" = ia64; then
         2202  +    # AIX 5 supports IA64
         2203  +    library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}'
         2204  +    shlibpath_var=LD_LIBRARY_PATH
         2205  +  else
         2206  +    # With GCC up to 2.95.x, collect2 would create an import file
         2207  +    # for dependence libraries.  The import file would start with
         2208  +    # the line `#! .'.  This would cause the generated library to
         2209  +    # depend on `.', always an invalid library.  This was fixed in
         2210  +    # development snapshots of GCC prior to 3.0.
         2211  +    case $host_os in
         2212  +      aix4 | aix4.[[01]] | aix4.[[01]].*)
         2213  +      if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)'
         2214  +	   echo ' yes '
         2215  +	   echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then
         2216  +	:
         2217  +      else
         2218  +	can_build_shared=no
         2219  +      fi
         2220  +      ;;
         2221  +    esac
         2222  +    # AIX (on Power*) has no versioning support, so currently we can not hardcode correct
         2223  +    # soname into executable. Probably we can add versioning support to
         2224  +    # collect2, so additional links can be useful in future.
         2225  +    if test "$aix_use_runtimelinking" = yes; then
         2226  +      # If using run time linking (on AIX 4.2 or later) use lib<name>.so
         2227  +      # instead of lib<name>.a to let people know that these are not
         2228  +      # typical AIX shared libraries.
         2229  +      library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
         2230  +    else
         2231  +      # We preserve .a as extension for shared libraries through AIX4.2
         2232  +      # and later when we are not doing run time linking.
         2233  +      library_names_spec='${libname}${release}.a $libname.a'
         2234  +      soname_spec='${libname}${release}${shared_ext}$major'
         2235  +    fi
         2236  +    shlibpath_var=LIBPATH
         2237  +  fi
         2238  +  ;;
         2239  +
         2240  +amigaos*)
         2241  +  case $host_cpu in
         2242  +  powerpc)
         2243  +    # Since July 2007 AmigaOS4 officially supports .so libraries.
         2244  +    # When compiling the executable, add -use-dynld -Lsobjs: to the compileline.
         2245  +    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
         2246  +    ;;
         2247  +  m68k)
         2248  +    library_names_spec='$libname.ixlibrary $libname.a'
         2249  +    # Create ${libname}_ixlibrary.a entries in /sys/libs.
         2250  +    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'
         2251  +    ;;
         2252  +  esac
         2253  +  ;;
         2254  +
         2255  +beos*)
         2256  +  library_names_spec='${libname}${shared_ext}'
         2257  +  dynamic_linker="$host_os ld.so"
         2258  +  shlibpath_var=LIBRARY_PATH
         2259  +  ;;
         2260  +
         2261  +bsdi[[45]]*)
         2262  +  version_type=linux
         2263  +  need_version=no
         2264  +  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
         2265  +  soname_spec='${libname}${release}${shared_ext}$major'
         2266  +  finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir'
         2267  +  shlibpath_var=LD_LIBRARY_PATH
         2268  +  sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib"
         2269  +  sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib"
         2270  +  # the default ld.so.conf also contains /usr/contrib/lib and
         2271  +  # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow
         2272  +  # libtool to hard-code these into programs
         2273  +  ;;
         2274  +
         2275  +cygwin* | mingw* | pw32* | cegcc*)
         2276  +  version_type=windows
         2277  +  shrext_cmds=".dll"
         2278  +  need_version=no
         2279  +  need_lib_prefix=no
         2280  +
         2281  +  case $GCC,$cc_basename in
         2282  +  yes,*)
         2283  +    # gcc
         2284  +    library_names_spec='$libname.dll.a'
         2285  +    # DLL is installed to $(libdir)/../bin by postinstall_cmds
         2286  +    postinstall_cmds='base_file=`basename \${file}`~
         2287  +      dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~
         2288  +      dldir=$destdir/`dirname \$dlpath`~
         2289  +      test -d \$dldir || mkdir -p \$dldir~
         2290  +      $install_prog $dir/$dlname \$dldir/$dlname~
         2291  +      chmod a+x \$dldir/$dlname~
         2292  +      if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then
         2293  +        eval '\''$striplib \$dldir/$dlname'\'' || exit \$?;
         2294  +      fi'
         2295  +    postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
         2296  +      dlpath=$dir/\$dldll~
         2297  +       $RM \$dlpath'
         2298  +    shlibpath_overrides_runpath=yes
         2299  +
         2300  +    case $host_os in
         2301  +    cygwin*)
         2302  +      # Cygwin DLLs use 'cyg' prefix rather than 'lib'
         2303  +      soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}'
         2304  +m4_if([$1], [],[
         2305  +      sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api"])
         2306  +      ;;
         2307  +    mingw* | cegcc*)
         2308  +      # MinGW DLLs use traditional 'lib' prefix
         2309  +      soname_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}'
         2310  +      ;;
         2311  +    pw32*)
         2312  +      # pw32 DLLs use 'pw' prefix rather than 'lib'
         2313  +      library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}'
         2314  +      ;;
         2315  +    esac
         2316  +    dynamic_linker='Win32 ld.exe'
         2317  +    ;;
         2318  +
         2319  +  *,cl*)
         2320  +    # Native MSVC
         2321  +    libname_spec='$name'
         2322  +    soname_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}'
         2323  +    library_names_spec='${libname}.dll.lib'
         2324  +
         2325  +    case $build_os in
         2326  +    mingw*)
         2327  +      sys_lib_search_path_spec=
         2328  +      lt_save_ifs=$IFS
         2329  +      IFS=';'
         2330  +      for lt_path in $LIB
         2331  +      do
         2332  +        IFS=$lt_save_ifs
         2333  +        # Let DOS variable expansion print the short 8.3 style file name.
         2334  +        lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"`
         2335  +        sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path"
         2336  +      done
         2337  +      IFS=$lt_save_ifs
         2338  +      # Convert to MSYS style.
         2339  +      sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([[a-zA-Z]]\\):| /\\1|g' -e 's|^ ||'`
         2340  +      ;;
         2341  +    cygwin*)
         2342  +      # Convert to unix form, then to dos form, then back to unix form
         2343  +      # but this time dos style (no spaces!) so that the unix form looks
         2344  +      # like /cygdrive/c/PROGRA~1:/cygdr...
         2345  +      sys_lib_search_path_spec=`cygpath --path --unix "$LIB"`
         2346  +      sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null`
         2347  +      sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
         2348  +      ;;
         2349  +    *)
         2350  +      sys_lib_search_path_spec="$LIB"
         2351  +      if $ECHO "$sys_lib_search_path_spec" | [$GREP ';[c-zC-Z]:/' >/dev/null]; then
         2352  +        # It is most probably a Windows format PATH.
         2353  +        sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
         2354  +      else
         2355  +        sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
         2356  +      fi
         2357  +      # FIXME: find the short name or the path components, as spaces are
         2358  +      # common. (e.g. "Program Files" -> "PROGRA~1")
         2359  +      ;;
         2360  +    esac
         2361  +
         2362  +    # DLL is installed to $(libdir)/../bin by postinstall_cmds
         2363  +    postinstall_cmds='base_file=`basename \${file}`~
         2364  +      dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~
         2365  +      dldir=$destdir/`dirname \$dlpath`~
         2366  +      test -d \$dldir || mkdir -p \$dldir~
         2367  +      $install_prog $dir/$dlname \$dldir/$dlname'
         2368  +    postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
         2369  +      dlpath=$dir/\$dldll~
         2370  +       $RM \$dlpath'
         2371  +    shlibpath_overrides_runpath=yes
         2372  +    dynamic_linker='Win32 link.exe'
         2373  +    ;;
         2374  +
         2375  +  *)
         2376  +    # Assume MSVC wrapper
         2377  +    library_names_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext} $libname.lib'
         2378  +    dynamic_linker='Win32 ld.exe'
         2379  +    ;;
         2380  +  esac
         2381  +  # FIXME: first we should search . and the directory the executable is in
         2382  +  shlibpath_var=PATH
         2383  +  ;;
         2384  +
         2385  +darwin* | rhapsody*)
         2386  +  dynamic_linker="$host_os dyld"
         2387  +  version_type=darwin
         2388  +  need_lib_prefix=no
         2389  +  need_version=no
         2390  +  library_names_spec='${libname}${release}${major}$shared_ext ${libname}$shared_ext'
         2391  +  soname_spec='${libname}${release}${major}$shared_ext'
         2392  +  shlibpath_overrides_runpath=yes
         2393  +  shlibpath_var=DYLD_LIBRARY_PATH
         2394  +  shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`'
         2395  +m4_if([$1], [],[
         2396  +  sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib"])
         2397  +  sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib'
         2398  +  ;;
         2399  +
         2400  +dgux*)
         2401  +  version_type=linux
         2402  +  need_lib_prefix=no
         2403  +  need_version=no
         2404  +  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext'
         2405  +  soname_spec='${libname}${release}${shared_ext}$major'
         2406  +  shlibpath_var=LD_LIBRARY_PATH
         2407  +  ;;
         2408  +
         2409  +freebsd1*)
         2410  +  dynamic_linker=no
         2411  +  ;;
         2412  +
         2413  +freebsd* | dragonfly*)
         2414  +  # DragonFly does not have aout.  When/if they implement a new
         2415  +  # versioning mechanism, adjust this.
         2416  +  if test -x /usr/bin/objformat; then
         2417  +    objformat=`/usr/bin/objformat`
         2418  +  else
         2419  +    case $host_os in
         2420  +    freebsd[[123]]*) objformat=aout ;;
         2421  +    *) objformat=elf ;;
         2422  +    esac
         2423  +  fi
         2424  +  version_type=freebsd-$objformat
         2425  +  case $version_type in
         2426  +    freebsd-elf*)
         2427  +      library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
         2428  +      need_version=no
         2429  +      need_lib_prefix=no
         2430  +      ;;
         2431  +    freebsd-*)
         2432  +      library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix'
         2433  +      need_version=yes
         2434  +      ;;
         2435  +  esac
         2436  +  shlibpath_var=LD_LIBRARY_PATH
         2437  +  case $host_os in
         2438  +  freebsd2*)
         2439  +    shlibpath_overrides_runpath=yes
         2440  +    ;;
         2441  +  freebsd3.[[01]]* | freebsdelf3.[[01]]*)
         2442  +    shlibpath_overrides_runpath=yes
         2443  +    hardcode_into_libs=yes
         2444  +    ;;
         2445  +  freebsd3.[[2-9]]* | freebsdelf3.[[2-9]]* | \
         2446  +  freebsd4.[[0-5]] | freebsdelf4.[[0-5]] | freebsd4.1.1 | freebsdelf4.1.1)
         2447  +    shlibpath_overrides_runpath=no
         2448  +    hardcode_into_libs=yes
         2449  +    ;;
         2450  +  *) # from 4.6 on, and DragonFly
         2451  +    shlibpath_overrides_runpath=yes
         2452  +    hardcode_into_libs=yes
         2453  +    ;;
         2454  +  esac
         2455  +  ;;
         2456  +
         2457  +gnu*)
         2458  +  version_type=linux
         2459  +  need_lib_prefix=no
         2460  +  need_version=no
         2461  +  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
         2462  +  soname_spec='${libname}${release}${shared_ext}$major'
         2463  +  shlibpath_var=LD_LIBRARY_PATH
         2464  +  hardcode_into_libs=yes
         2465  +  ;;
         2466  +
         2467  +haiku*)
         2468  +  version_type=linux
         2469  +  need_lib_prefix=no
         2470  +  need_version=no
         2471  +  dynamic_linker="$host_os runtime_loader"
         2472  +  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
         2473  +  soname_spec='${libname}${release}${shared_ext}$major'
         2474  +  shlibpath_var=LIBRARY_PATH
         2475  +  shlibpath_overrides_runpath=yes
         2476  +  sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib'
         2477  +  hardcode_into_libs=yes
         2478  +  ;;
         2479  +
         2480  +hpux9* | hpux10* | hpux11*)
         2481  +  # Give a soname corresponding to the major version so that dld.sl refuses to
         2482  +  # link against other versions.
         2483  +  version_type=sunos
         2484  +  need_lib_prefix=no
         2485  +  need_version=no
         2486  +  case $host_cpu in
         2487  +  ia64*)
         2488  +    shrext_cmds='.so'
         2489  +    hardcode_into_libs=yes
         2490  +    dynamic_linker="$host_os dld.so"
         2491  +    shlibpath_var=LD_LIBRARY_PATH
         2492  +    shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
         2493  +    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
         2494  +    soname_spec='${libname}${release}${shared_ext}$major'
         2495  +    if test "X$HPUX_IA64_MODE" = X32; then
         2496  +      sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib"
         2497  +    else
         2498  +      sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64"
         2499  +    fi
         2500  +    sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
         2501  +    ;;
         2502  +  hppa*64*)
         2503  +    shrext_cmds='.sl'
         2504  +    hardcode_into_libs=yes
         2505  +    dynamic_linker="$host_os dld.sl"
         2506  +    shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH
         2507  +    shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
         2508  +    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
         2509  +    soname_spec='${libname}${release}${shared_ext}$major'
         2510  +    sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64"
         2511  +    sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
         2512  +    ;;
         2513  +  *)
         2514  +    shrext_cmds='.sl'
         2515  +    dynamic_linker="$host_os dld.sl"
         2516  +    shlibpath_var=SHLIB_PATH
         2517  +    shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH
         2518  +    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
         2519  +    soname_spec='${libname}${release}${shared_ext}$major'
         2520  +    ;;
         2521  +  esac
         2522  +  # HP-UX runs *really* slowly unless shared libraries are mode 555, ...
         2523  +  postinstall_cmds='chmod 555 $lib'
         2524  +  # or fails outright, so override atomically:
         2525  +  install_override_mode=555
         2526  +  ;;
         2527  +
         2528  +interix[[3-9]]*)
         2529  +  version_type=linux
         2530  +  need_lib_prefix=no
         2531  +  need_version=no
         2532  +  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
         2533  +  soname_spec='${libname}${release}${shared_ext}$major'
         2534  +  dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)'
         2535  +  shlibpath_var=LD_LIBRARY_PATH
         2536  +  shlibpath_overrides_runpath=no
         2537  +  hardcode_into_libs=yes
         2538  +  ;;
         2539  +
         2540  +irix5* | irix6* | nonstopux*)
         2541  +  case $host_os in
         2542  +    nonstopux*) version_type=nonstopux ;;
         2543  +    *)
         2544  +	if test "$lt_cv_prog_gnu_ld" = yes; then
         2545  +		version_type=linux
         2546  +	else
         2547  +		version_type=irix
         2548  +	fi ;;
         2549  +  esac
         2550  +  need_lib_prefix=no
         2551  +  need_version=no
         2552  +  soname_spec='${libname}${release}${shared_ext}$major'
         2553  +  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}'
         2554  +  case $host_os in
         2555  +  irix5* | nonstopux*)
         2556  +    libsuff= shlibsuff=
         2557  +    ;;
         2558  +  *)
         2559  +    case $LD in # libtool.m4 will add one of these switches to LD
         2560  +    *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ")
         2561  +      libsuff= shlibsuff= libmagic=32-bit;;
         2562  +    *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ")
         2563  +      libsuff=32 shlibsuff=N32 libmagic=N32;;
         2564  +    *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ")
         2565  +      libsuff=64 shlibsuff=64 libmagic=64-bit;;
         2566  +    *) libsuff= shlibsuff= libmagic=never-match;;
         2567  +    esac
         2568  +    ;;
         2569  +  esac
         2570  +  shlibpath_var=LD_LIBRARY${shlibsuff}_PATH
         2571  +  shlibpath_overrides_runpath=no
         2572  +  sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}"
         2573  +  sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}"
         2574  +  hardcode_into_libs=yes
         2575  +  ;;
         2576  +
         2577  +# No shared lib support for Linux oldld, aout, or coff.
         2578  +linux*oldld* | linux*aout* | linux*coff*)
         2579  +  dynamic_linker=no
         2580  +  ;;
         2581  +
         2582  +# This must be Linux ELF.
         2583  +linux* | k*bsd*-gnu | kopensolaris*-gnu)
         2584  +  version_type=linux
         2585  +  need_lib_prefix=no
         2586  +  need_version=no
         2587  +  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
         2588  +  soname_spec='${libname}${release}${shared_ext}$major'
         2589  +  finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
         2590  +  shlibpath_var=LD_LIBRARY_PATH
         2591  +  shlibpath_overrides_runpath=no
         2592  +
         2593  +  # Some binutils ld are patched to set DT_RUNPATH
         2594  +  AC_CACHE_VAL([lt_cv_shlibpath_overrides_runpath],
         2595  +    [lt_cv_shlibpath_overrides_runpath=no
         2596  +    save_LDFLAGS=$LDFLAGS
         2597  +    save_libdir=$libdir
         2598  +    eval "libdir=/foo; wl=\"$_LT_TAGVAR(lt_prog_compiler_wl, $1)\"; \
         2599  +	 LDFLAGS=\"\$LDFLAGS $_LT_TAGVAR(hardcode_libdir_flag_spec, $1)\""
         2600  +    AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])],
         2601  +      [AS_IF([ ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null],
         2602  +	 [lt_cv_shlibpath_overrides_runpath=yes])])
         2603  +    LDFLAGS=$save_LDFLAGS
         2604  +    libdir=$save_libdir
         2605  +    ])
         2606  +  shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath
         2607  +
         2608  +  # This implies no fast_install, which is unacceptable.
         2609  +  # Some rework will be needed to allow for fast_install
         2610  +  # before this can be enabled.
         2611  +  hardcode_into_libs=yes
         2612  +
         2613  +  # Add ABI-specific directories to the system library path.
         2614  +  sys_lib_dlsearch_path_spec="/lib64 /usr/lib64 /lib /usr/lib"
         2615  +
         2616  +  # Append ld.so.conf contents to the search path
         2617  +  if test -f /etc/ld.so.conf; then
         2618  +    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' ' '`
         2619  +    sys_lib_dlsearch_path_spec="$sys_lib_dlsearch_path_spec $lt_ld_extra"
         2620  +
         2621  +  fi
         2622  +
         2623  +  # We used to test for /lib/ld.so.1 and disable shared libraries on
         2624  +  # powerpc, because MkLinux only supported shared libraries with the
         2625  +  # GNU dynamic linker.  Since this was broken with cross compilers,
         2626  +  # most powerpc-linux boxes support dynamic linking these days and
         2627  +  # people can always --disable-shared, the test was removed, and we
         2628  +  # assume the GNU/Linux dynamic linker is in use.
         2629  +  dynamic_linker='GNU/Linux ld.so'
         2630  +  ;;
         2631  +
         2632  +netbsd*)
         2633  +  version_type=sunos
         2634  +  need_lib_prefix=no
         2635  +  need_version=no
         2636  +  if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
         2637  +    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
         2638  +    finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
         2639  +    dynamic_linker='NetBSD (a.out) ld.so'
         2640  +  else
         2641  +    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
         2642  +    soname_spec='${libname}${release}${shared_ext}$major'
         2643  +    dynamic_linker='NetBSD ld.elf_so'
         2644  +  fi
         2645  +  shlibpath_var=LD_LIBRARY_PATH
         2646  +  shlibpath_overrides_runpath=yes
         2647  +  hardcode_into_libs=yes
         2648  +  ;;
         2649  +
         2650  +newsos6)
         2651  +  version_type=linux
         2652  +  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
         2653  +  shlibpath_var=LD_LIBRARY_PATH
         2654  +  shlibpath_overrides_runpath=yes
         2655  +  ;;
         2656  +
         2657  +*nto* | *qnx*)
         2658  +  version_type=qnx
         2659  +  need_lib_prefix=no
         2660  +  need_version=no
         2661  +  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
         2662  +  soname_spec='${libname}${release}${shared_ext}$major'
         2663  +  shlibpath_var=LD_LIBRARY_PATH
         2664  +  shlibpath_overrides_runpath=no
         2665  +  hardcode_into_libs=yes
         2666  +  dynamic_linker='ldqnx.so'
         2667  +  ;;
         2668  +
         2669  +openbsd*)
         2670  +  version_type=sunos
         2671  +  sys_lib_dlsearch_path_spec="/usr/lib"
         2672  +  need_lib_prefix=no
         2673  +  # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs.
         2674  +  case $host_os in
         2675  +    openbsd3.3 | openbsd3.3.*)	need_version=yes ;;
         2676  +    *)				need_version=no  ;;
         2677  +  esac
         2678  +  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
         2679  +  finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
         2680  +  shlibpath_var=LD_LIBRARY_PATH
         2681  +  if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
         2682  +    case $host_os in
         2683  +      openbsd2.[[89]] | openbsd2.[[89]].*)
         2684  +	shlibpath_overrides_runpath=no
         2685  +	;;
         2686  +      *)
         2687  +	shlibpath_overrides_runpath=yes
         2688  +	;;
         2689  +      esac
         2690  +  else
         2691  +    shlibpath_overrides_runpath=yes
         2692  +  fi
         2693  +  ;;
         2694  +
         2695  +os2*)
         2696  +  libname_spec='$name'
         2697  +  shrext_cmds=".dll"
         2698  +  need_lib_prefix=no
         2699  +  library_names_spec='$libname${shared_ext} $libname.a'
         2700  +  dynamic_linker='OS/2 ld.exe'
         2701  +  shlibpath_var=LIBPATH
         2702  +  ;;
         2703  +
         2704  +osf3* | osf4* | osf5*)
         2705  +  version_type=osf
         2706  +  need_lib_prefix=no
         2707  +  need_version=no
         2708  +  soname_spec='${libname}${release}${shared_ext}$major'
         2709  +  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
         2710  +  shlibpath_var=LD_LIBRARY_PATH
         2711  +  sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib"
         2712  +  sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec"
         2713  +  ;;
         2714  +
         2715  +rdos*)
         2716  +  dynamic_linker=no
         2717  +  ;;
         2718  +
         2719  +solaris*)
         2720  +  version_type=linux
         2721  +  need_lib_prefix=no
         2722  +  need_version=no
         2723  +  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
         2724  +  soname_spec='${libname}${release}${shared_ext}$major'
         2725  +  shlibpath_var=LD_LIBRARY_PATH
         2726  +  shlibpath_overrides_runpath=yes
         2727  +  hardcode_into_libs=yes
         2728  +  # ldd complains unless libraries are executable
         2729  +  postinstall_cmds='chmod +x $lib'
         2730  +  ;;
         2731  +
         2732  +sunos4*)
         2733  +  version_type=sunos
         2734  +  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
         2735  +  finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir'
         2736  +  shlibpath_var=LD_LIBRARY_PATH
         2737  +  shlibpath_overrides_runpath=yes
         2738  +  if test "$with_gnu_ld" = yes; then
         2739  +    need_lib_prefix=no
         2740  +  fi
         2741  +  need_version=yes
         2742  +  ;;
         2743  +
         2744  +sysv4 | sysv4.3*)
         2745  +  version_type=linux
         2746  +  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
         2747  +  soname_spec='${libname}${release}${shared_ext}$major'
         2748  +  shlibpath_var=LD_LIBRARY_PATH
         2749  +  case $host_vendor in
         2750  +    sni)
         2751  +      shlibpath_overrides_runpath=no
         2752  +      need_lib_prefix=no
         2753  +      runpath_var=LD_RUN_PATH
         2754  +      ;;
         2755  +    siemens)
         2756  +      need_lib_prefix=no
         2757  +      ;;
         2758  +    motorola)
         2759  +      need_lib_prefix=no
         2760  +      need_version=no
         2761  +      shlibpath_overrides_runpath=no
         2762  +      sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib'
         2763  +      ;;
         2764  +  esac
         2765  +  ;;
         2766  +
         2767  +sysv4*MP*)
         2768  +  if test -d /usr/nec ;then
         2769  +    version_type=linux
         2770  +    library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}'
         2771  +    soname_spec='$libname${shared_ext}.$major'
         2772  +    shlibpath_var=LD_LIBRARY_PATH
         2773  +  fi
         2774  +  ;;
         2775  +
         2776  +sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
         2777  +  version_type=freebsd-elf
         2778  +  need_lib_prefix=no
         2779  +  need_version=no
         2780  +  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
         2781  +  soname_spec='${libname}${release}${shared_ext}$major'
         2782  +  shlibpath_var=LD_LIBRARY_PATH
         2783  +  shlibpath_overrides_runpath=yes
         2784  +  hardcode_into_libs=yes
         2785  +  if test "$with_gnu_ld" = yes; then
         2786  +    sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib'
         2787  +  else
         2788  +    sys_lib_search_path_spec='/usr/ccs/lib /usr/lib'
         2789  +    case $host_os in
         2790  +      sco3.2v5*)
         2791  +        sys_lib_search_path_spec="$sys_lib_search_path_spec /lib"
         2792  +	;;
         2793  +    esac
         2794  +  fi
         2795  +  sys_lib_dlsearch_path_spec='/usr/lib'
         2796  +  ;;
         2797  +
         2798  +tpf*)
         2799  +  # TPF is a cross-target only.  Preferred cross-host = GNU/Linux.
         2800  +  version_type=linux
         2801  +  need_lib_prefix=no
         2802  +  need_version=no
         2803  +  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
         2804  +  shlibpath_var=LD_LIBRARY_PATH
         2805  +  shlibpath_overrides_runpath=no
         2806  +  hardcode_into_libs=yes
         2807  +  ;;
         2808  +
         2809  +uts4*)
         2810  +  version_type=linux
         2811  +  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
         2812  +  soname_spec='${libname}${release}${shared_ext}$major'
         2813  +  shlibpath_var=LD_LIBRARY_PATH
         2814  +  ;;
         2815  +
         2816  +*)
         2817  +  dynamic_linker=no
         2818  +  ;;
         2819  +esac
         2820  +AC_MSG_RESULT([$dynamic_linker])
         2821  +test "$dynamic_linker" = no && can_build_shared=no
         2822  +
         2823  +variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
         2824  +if test "$GCC" = yes; then
         2825  +  variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
         2826  +fi
         2827  +
         2828  +if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then
         2829  +  sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec"
         2830  +fi
         2831  +if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then
         2832  +  sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec"
         2833  +fi
         2834  +
         2835  +_LT_DECL([], [variables_saved_for_relink], [1],
         2836  +    [Variables whose values should be saved in libtool wrapper scripts and
         2837  +    restored at link time])
         2838  +_LT_DECL([], [need_lib_prefix], [0],
         2839  +    [Do we need the "lib" prefix for modules?])
         2840  +_LT_DECL([], [need_version], [0], [Do we need a version for libraries?])
         2841  +_LT_DECL([], [version_type], [0], [Library versioning type])
         2842  +_LT_DECL([], [runpath_var], [0],  [Shared library runtime path variable])
         2843  +_LT_DECL([], [shlibpath_var], [0],[Shared library path variable])
         2844  +_LT_DECL([], [shlibpath_overrides_runpath], [0],
         2845  +    [Is shlibpath searched before the hard-coded library search path?])
         2846  +_LT_DECL([], [libname_spec], [1], [Format of library name prefix])
         2847  +_LT_DECL([], [library_names_spec], [1],
         2848  +    [[List of archive names.  First name is the real one, the rest are links.
         2849  +    The last name is the one that the linker finds with -lNAME]])
         2850  +_LT_DECL([], [soname_spec], [1],
         2851  +    [[The coded name of the library, if different from the real name]])
         2852  +_LT_DECL([], [install_override_mode], [1],
         2853  +    [Permission mode override for installation of shared libraries])
         2854  +_LT_DECL([], [postinstall_cmds], [2],
         2855  +    [Command to use after installation of a shared archive])
         2856  +_LT_DECL([], [postuninstall_cmds], [2],
         2857  +    [Command to use after uninstallation of a shared archive])
         2858  +_LT_DECL([], [finish_cmds], [2],
         2859  +    [Commands used to finish a libtool library installation in a directory])
         2860  +_LT_DECL([], [finish_eval], [1],
         2861  +    [[As "finish_cmds", except a single script fragment to be evaled but
         2862  +    not shown]])
         2863  +_LT_DECL([], [hardcode_into_libs], [0],
         2864  +    [Whether we should hardcode library paths into libraries])
         2865  +_LT_DECL([], [sys_lib_search_path_spec], [2],
         2866  +    [Compile-time system search path for libraries])
         2867  +_LT_DECL([], [sys_lib_dlsearch_path_spec], [2],
         2868  +    [Run-time system search path for libraries])
         2869  +])# _LT_SYS_DYNAMIC_LINKER
         2870  +
         2871  +
         2872  +# _LT_PATH_TOOL_PREFIX(TOOL)
         2873  +# --------------------------
         2874  +# find a file program which can recognize shared library
         2875  +AC_DEFUN([_LT_PATH_TOOL_PREFIX],
         2876  +[m4_require([_LT_DECL_EGREP])dnl
         2877  +AC_MSG_CHECKING([for $1])
         2878  +AC_CACHE_VAL(lt_cv_path_MAGIC_CMD,
         2879  +[case $MAGIC_CMD in
         2880  +[[\\/*] |  ?:[\\/]*])
         2881  +  lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path.
         2882  +  ;;
         2883  +*)
         2884  +  lt_save_MAGIC_CMD="$MAGIC_CMD"
         2885  +  lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
         2886  +dnl $ac_dummy forces splitting on constant user-supplied paths.
         2887  +dnl POSIX.2 word splitting is done only on the output of word expansions,
         2888  +dnl not every word.  This closes a longstanding sh security hole.
         2889  +  ac_dummy="m4_if([$2], , $PATH, [$2])"
         2890  +  for ac_dir in $ac_dummy; do
         2891  +    IFS="$lt_save_ifs"
         2892  +    test -z "$ac_dir" && ac_dir=.
         2893  +    if test -f $ac_dir/$1; then
         2894  +      lt_cv_path_MAGIC_CMD="$ac_dir/$1"
         2895  +      if test -n "$file_magic_test_file"; then
         2896  +	case $deplibs_check_method in
         2897  +	"file_magic "*)
         2898  +	  file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"`
         2899  +	  MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
         2900  +	  if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null |
         2901  +	    $EGREP "$file_magic_regex" > /dev/null; then
         2902  +	    :
         2903  +	  else
         2904  +	    cat <<_LT_EOF 1>&2
         2905  +
         2906  +*** Warning: the command libtool uses to detect shared libraries,
         2907  +*** $file_magic_cmd, produces output that libtool cannot recognize.
         2908  +*** The result is that libtool may fail to recognize shared libraries
         2909  +*** as such.  This will affect the creation of libtool libraries that
         2910  +*** depend on shared libraries, but programs linked with such libtool
         2911  +*** libraries will work regardless of this problem.  Nevertheless, you
         2912  +*** may want to report the problem to your system manager and/or to
         2913  +*** bug-libtool@gnu.org
         2914  +
         2915  +_LT_EOF
         2916  +	  fi ;;
         2917  +	esac
         2918  +      fi
         2919  +      break
         2920  +    fi
         2921  +  done
         2922  +  IFS="$lt_save_ifs"
         2923  +  MAGIC_CMD="$lt_save_MAGIC_CMD"
         2924  +  ;;
         2925  +esac])
         2926  +MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
         2927  +if test -n "$MAGIC_CMD"; then
         2928  +  AC_MSG_RESULT($MAGIC_CMD)
         2929  +else
         2930  +  AC_MSG_RESULT(no)
         2931  +fi
         2932  +_LT_DECL([], [MAGIC_CMD], [0],
         2933  +	 [Used to examine libraries when file_magic_cmd begins with "file"])dnl
         2934  +])# _LT_PATH_TOOL_PREFIX
         2935  +
         2936  +# Old name:
         2937  +AU_ALIAS([AC_PATH_TOOL_PREFIX], [_LT_PATH_TOOL_PREFIX])
         2938  +dnl aclocal-1.4 backwards compatibility:
         2939  +dnl AC_DEFUN([AC_PATH_TOOL_PREFIX], [])
         2940  +
         2941  +
         2942  +# _LT_PATH_MAGIC
         2943  +# --------------
         2944  +# find a file program which can recognize a shared library
         2945  +m4_defun([_LT_PATH_MAGIC],
         2946  +[_LT_PATH_TOOL_PREFIX(${ac_tool_prefix}file, /usr/bin$PATH_SEPARATOR$PATH)
         2947  +if test -z "$lt_cv_path_MAGIC_CMD"; then
         2948  +  if test -n "$ac_tool_prefix"; then
         2949  +    _LT_PATH_TOOL_PREFIX(file, /usr/bin$PATH_SEPARATOR$PATH)
         2950  +  else
         2951  +    MAGIC_CMD=:
         2952  +  fi
         2953  +fi
         2954  +])# _LT_PATH_MAGIC
         2955  +
         2956  +
         2957  +# LT_PATH_LD
         2958  +# ----------
         2959  +# find the pathname to the GNU or non-GNU linker
         2960  +AC_DEFUN([LT_PATH_LD],
         2961  +[AC_REQUIRE([AC_PROG_CC])dnl
         2962  +AC_REQUIRE([AC_CANONICAL_HOST])dnl
         2963  +AC_REQUIRE([AC_CANONICAL_BUILD])dnl
         2964  +m4_require([_LT_DECL_SED])dnl
         2965  +m4_require([_LT_DECL_EGREP])dnl
         2966  +m4_require([_LT_PROG_ECHO_BACKSLASH])dnl
         2967  +
         2968  +AC_ARG_WITH([gnu-ld],
         2969  +    [AS_HELP_STRING([--with-gnu-ld],
         2970  +	[assume the C compiler uses GNU ld @<:@default=no@:>@])],
         2971  +    [test "$withval" = no || with_gnu_ld=yes],
         2972  +    [with_gnu_ld=no])dnl
         2973  +
         2974  +ac_prog=ld
         2975  +if test "$GCC" = yes; then
         2976  +  # Check if gcc -print-prog-name=ld gives a path.
         2977  +  AC_MSG_CHECKING([for ld used by $CC])
         2978  +  case $host in
         2979  +  *-*-mingw*)
         2980  +    # gcc leaves a trailing carriage return which upsets mingw
         2981  +    ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;;
         2982  +  *)
         2983  +    ac_prog=`($CC -print-prog-name=ld) 2>&5` ;;
         2984  +  esac
         2985  +  case $ac_prog in
         2986  +    # Accept absolute paths.
         2987  +    [[\\/]]* | ?:[[\\/]]*)
         2988  +      re_direlt='/[[^/]][[^/]]*/\.\./'
         2989  +      # Canonicalize the pathname of ld
         2990  +      ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'`
         2991  +      while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do
         2992  +	ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"`
         2993  +      done
         2994  +      test -z "$LD" && LD="$ac_prog"
         2995  +      ;;
         2996  +  "")
         2997  +    # If it fails, then pretend we aren't using GCC.
         2998  +    ac_prog=ld
         2999  +    ;;
         3000  +  *)
         3001  +    # If it is relative, then search for the first ld in PATH.
         3002  +    with_gnu_ld=unknown
         3003  +    ;;
         3004  +  esac
         3005  +elif test "$with_gnu_ld" = yes; then
         3006  +  AC_MSG_CHECKING([for GNU ld])
         3007  +else
         3008  +  AC_MSG_CHECKING([for non-GNU ld])
         3009  +fi
         3010  +AC_CACHE_VAL(lt_cv_path_LD,
         3011  +[if test -z "$LD"; then
         3012  +  lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
         3013  +  for ac_dir in $PATH; do
         3014  +    IFS="$lt_save_ifs"
         3015  +    test -z "$ac_dir" && ac_dir=.
         3016  +    if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
         3017  +      lt_cv_path_LD="$ac_dir/$ac_prog"
         3018  +      # Check to see if the program is GNU ld.  I'd rather use --version,
         3019  +      # but apparently some variants of GNU ld only accept -v.
         3020  +      # Break only if it was the GNU/non-GNU ld that we prefer.
         3021  +      case `"$lt_cv_path_LD" -v 2>&1 </dev/null` in
         3022  +      *GNU* | *'with BFD'*)
         3023  +	test "$with_gnu_ld" != no && break
         3024  +	;;
         3025  +      *)
         3026  +	test "$with_gnu_ld" != yes && break
         3027  +	;;
         3028  +      esac
         3029  +    fi
         3030  +  done
         3031  +  IFS="$lt_save_ifs"
         3032  +else
         3033  +  lt_cv_path_LD="$LD" # Let the user override the test with a path.
         3034  +fi])
         3035  +LD="$lt_cv_path_LD"
         3036  +if test -n "$LD"; then
         3037  +  AC_MSG_RESULT($LD)
         3038  +else
         3039  +  AC_MSG_RESULT(no)
         3040  +fi
         3041  +test -z "$LD" && AC_MSG_ERROR([no acceptable ld found in \$PATH])
         3042  +_LT_PATH_LD_GNU
         3043  +AC_SUBST([LD])
         3044  +
         3045  +_LT_TAGDECL([], [LD], [1], [The linker used to build libraries])
         3046  +])# LT_PATH_LD
         3047  +
         3048  +# Old names:
         3049  +AU_ALIAS([AM_PROG_LD], [LT_PATH_LD])
         3050  +AU_ALIAS([AC_PROG_LD], [LT_PATH_LD])
         3051  +dnl aclocal-1.4 backwards compatibility:
         3052  +dnl AC_DEFUN([AM_PROG_LD], [])
         3053  +dnl AC_DEFUN([AC_PROG_LD], [])
         3054  +
         3055  +
         3056  +# _LT_PATH_LD_GNU
         3057  +#- --------------
         3058  +m4_defun([_LT_PATH_LD_GNU],
         3059  +[AC_CACHE_CHECK([if the linker ($LD) is GNU ld], lt_cv_prog_gnu_ld,
         3060  +[# I'd rather use --version here, but apparently some GNU lds only accept -v.
         3061  +case `$LD -v 2>&1 </dev/null` in
         3062  +*GNU* | *'with BFD'*)
         3063  +  lt_cv_prog_gnu_ld=yes
         3064  +  ;;
         3065  +*)
         3066  +  lt_cv_prog_gnu_ld=no
         3067  +  ;;
         3068  +esac])
         3069  +with_gnu_ld=$lt_cv_prog_gnu_ld
         3070  +])# _LT_PATH_LD_GNU
         3071  +
         3072  +
         3073  +# _LT_CMD_RELOAD
         3074  +# --------------
         3075  +# find reload flag for linker
         3076  +#   -- PORTME Some linkers may need a different reload flag.
         3077  +m4_defun([_LT_CMD_RELOAD],
         3078  +[AC_CACHE_CHECK([for $LD option to reload object files],
         3079  +  lt_cv_ld_reload_flag,
         3080  +  [lt_cv_ld_reload_flag='-r'])
         3081  +reload_flag=$lt_cv_ld_reload_flag
         3082  +case $reload_flag in
         3083  +"" | " "*) ;;
         3084  +*) reload_flag=" $reload_flag" ;;
         3085  +esac
         3086  +reload_cmds='$LD$reload_flag -o $output$reload_objs'
         3087  +case $host_os in
         3088  +  cygwin* | mingw* | pw32* | cegcc*)
         3089  +    if test "$GCC" != yes; then
         3090  +      reload_cmds=false
         3091  +    fi
         3092  +    ;;
         3093  +  darwin*)
         3094  +    if test "$GCC" = yes; then
         3095  +      reload_cmds='$LTCC $LTCFLAGS -nostdlib ${wl}-r -o $output$reload_objs'
         3096  +    else
         3097  +      reload_cmds='$LD$reload_flag -o $output$reload_objs'
         3098  +    fi
         3099  +    ;;
         3100  +esac
         3101  +_LT_TAGDECL([], [reload_flag], [1], [How to create reloadable object files])dnl
         3102  +_LT_TAGDECL([], [reload_cmds], [2])dnl
         3103  +])# _LT_CMD_RELOAD
         3104  +
         3105  +
         3106  +# _LT_CHECK_MAGIC_METHOD
         3107  +# ----------------------
         3108  +# how to check for library dependencies
         3109  +#  -- PORTME fill in with the dynamic library characteristics
         3110  +m4_defun([_LT_CHECK_MAGIC_METHOD],
         3111  +[m4_require([_LT_DECL_EGREP])
         3112  +m4_require([_LT_DECL_OBJDUMP])
         3113  +AC_CACHE_CHECK([how to recognize dependent libraries],
         3114  +lt_cv_deplibs_check_method,
         3115  +[lt_cv_file_magic_cmd='$MAGIC_CMD'
         3116  +lt_cv_file_magic_test_file=
         3117  +lt_cv_deplibs_check_method='unknown'
         3118  +# Need to set the preceding variable on all platforms that support
         3119  +# interlibrary dependencies.
         3120  +# 'none' -- dependencies not supported.
         3121  +# `unknown' -- same as none, but documents that we really don't know.
         3122  +# 'pass_all' -- all dependencies passed with no checks.
         3123  +# 'test_compile' -- check by making test program.
         3124  +# 'file_magic [[regex]]' -- check by looking for files in library path
         3125  +# which responds to the $file_magic_cmd with a given extended regex.
         3126  +# If you have `file' or equivalent on your system and you're not sure
         3127  +# whether `pass_all' will *always* work, you probably want this one.
         3128  +
         3129  +case $host_os in
         3130  +aix[[4-9]]*)
         3131  +  lt_cv_deplibs_check_method=pass_all
         3132  +  ;;
         3133  +
         3134  +beos*)
         3135  +  lt_cv_deplibs_check_method=pass_all
         3136  +  ;;
         3137  +
         3138  +bsdi[[45]]*)
         3139  +  lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib)'
         3140  +  lt_cv_file_magic_cmd='/usr/bin/file -L'
         3141  +  lt_cv_file_magic_test_file=/shlib/libc.so
         3142  +  ;;
         3143  +
         3144  +cygwin*)
         3145  +  # func_win32_libid is a shell function defined in ltmain.sh
         3146  +  lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL'
         3147  +  lt_cv_file_magic_cmd='func_win32_libid'
         3148  +  ;;
         3149  +
         3150  +mingw* | pw32*)
         3151  +  # Base MSYS/MinGW do not provide the 'file' command needed by
         3152  +  # func_win32_libid shell function, so use a weaker test based on 'objdump',
         3153  +  # unless we find 'file', for example because we are cross-compiling.
         3154  +  # func_win32_libid assumes BSD nm, so disallow it if using MS dumpbin.
         3155  +  if ( test "$lt_cv_nm_interface" = "BSD nm" && file / ) >/dev/null 2>&1; then
         3156  +    lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL'
         3157  +    lt_cv_file_magic_cmd='func_win32_libid'
         3158  +  else
         3159  +    # Keep this pattern in sync with the one in func_win32_libid.
         3160  +    lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)'
         3161  +    lt_cv_file_magic_cmd='$OBJDUMP -f'
         3162  +  fi
         3163  +  ;;
         3164  +
         3165  +cegcc*)
         3166  +  # use the weaker test based on 'objdump'. See mingw*.
         3167  +  lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?'
         3168  +  lt_cv_file_magic_cmd='$OBJDUMP -f'
         3169  +  ;;
         3170  +
         3171  +darwin* | rhapsody*)
         3172  +  lt_cv_deplibs_check_method=pass_all
         3173  +  ;;
         3174  +
         3175  +freebsd* | dragonfly*)
         3176  +  if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then
         3177  +    case $host_cpu in
         3178  +    i*86 )
         3179  +      # Not sure whether the presence of OpenBSD here was a mistake.
         3180  +      # Let's accept both of them until this is cleared up.
         3181  +      lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[[3-9]]86 (compact )?demand paged shared library'
         3182  +      lt_cv_file_magic_cmd=/usr/bin/file
         3183  +      lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*`
         3184  +      ;;
         3185  +    esac
         3186  +  else
         3187  +    lt_cv_deplibs_check_method=pass_all
         3188  +  fi
         3189  +  ;;
         3190  +
         3191  +gnu*)
         3192  +  lt_cv_deplibs_check_method=pass_all
         3193  +  ;;
         3194  +
         3195  +haiku*)
         3196  +  lt_cv_deplibs_check_method=pass_all
         3197  +  ;;
         3198  +
         3199  +hpux10.20* | hpux11*)
         3200  +  lt_cv_file_magic_cmd=/usr/bin/file
         3201  +  case $host_cpu in
         3202  +  ia64*)
         3203  +    lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|ELF-[[0-9]][[0-9]]) shared object file - IA64'
         3204  +    lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so
         3205  +    ;;
         3206  +  hppa*64*)
         3207  +    [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]']
         3208  +    lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl
         3209  +    ;;
         3210  +  *)
         3211  +    lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|PA-RISC[[0-9]]\.[[0-9]]) shared library'
         3212  +    lt_cv_file_magic_test_file=/usr/lib/libc.sl
         3213  +    ;;
         3214  +  esac
         3215  +  ;;
         3216  +
         3217  +interix[[3-9]]*)
         3218  +  # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here
         3219  +  lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|\.a)$'
         3220  +  ;;
         3221  +
         3222  +irix5* | irix6* | nonstopux*)
         3223  +  case $LD in
         3224  +  *-32|*"-32 ") libmagic=32-bit;;
         3225  +  *-n32|*"-n32 ") libmagic=N32;;
         3226  +  *-64|*"-64 ") libmagic=64-bit;;
         3227  +  *) libmagic=never-match;;
         3228  +  esac
         3229  +  lt_cv_deplibs_check_method=pass_all
         3230  +  ;;
         3231  +
         3232  +# This must be Linux ELF.
         3233  +linux* | k*bsd*-gnu | kopensolaris*-gnu)
         3234  +  lt_cv_deplibs_check_method=pass_all
         3235  +  ;;
         3236  +
         3237  +netbsd*)
         3238  +  if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then
         3239  +    lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$'
         3240  +  else
         3241  +    lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|_pic\.a)$'
         3242  +  fi
         3243  +  ;;
         3244  +
         3245  +newos6*)
         3246  +  lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (executable|dynamic lib)'
         3247  +  lt_cv_file_magic_cmd=/usr/bin/file
         3248  +  lt_cv_file_magic_test_file=/usr/lib/libnls.so
         3249  +  ;;
         3250  +
         3251  +*nto* | *qnx*)
         3252  +  lt_cv_deplibs_check_method=pass_all
         3253  +  ;;
         3254  +
         3255  +openbsd*)
         3256  +  if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
         3257  +    lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|\.so|_pic\.a)$'
         3258  +  else
         3259  +    lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$'
         3260  +  fi
         3261  +  ;;
         3262  +
         3263  +osf3* | osf4* | osf5*)
         3264  +  lt_cv_deplibs_check_method=pass_all
         3265  +  ;;
         3266  +
         3267  +rdos*)
         3268  +  lt_cv_deplibs_check_method=pass_all
         3269  +  ;;
         3270  +
         3271  +solaris*)
         3272  +  lt_cv_deplibs_check_method=pass_all
         3273  +  ;;
         3274  +
         3275  +sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
         3276  +  lt_cv_deplibs_check_method=pass_all
         3277  +  ;;
         3278  +
         3279  +sysv4 | sysv4.3*)
         3280  +  case $host_vendor in
         3281  +  motorola)
         3282  +    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]]'
         3283  +    lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*`
         3284  +    ;;
         3285  +  ncr)
         3286  +    lt_cv_deplibs_check_method=pass_all
         3287  +    ;;
         3288  +  sequent)
         3289  +    lt_cv_file_magic_cmd='/bin/file'
         3290  +    lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB (shared object|dynamic lib )'
         3291  +    ;;
         3292  +  sni)
         3293  +    lt_cv_file_magic_cmd='/bin/file'
         3294  +    lt_cv_deplibs_check_method="file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB dynamic lib"
         3295  +    lt_cv_file_magic_test_file=/lib/libc.so
         3296  +    ;;
         3297  +  siemens)
         3298  +    lt_cv_deplibs_check_method=pass_all
         3299  +    ;;
         3300  +  pc)
         3301  +    lt_cv_deplibs_check_method=pass_all
         3302  +    ;;
         3303  +  esac
         3304  +  ;;
         3305  +
         3306  +tpf*)
         3307  +  lt_cv_deplibs_check_method=pass_all
         3308  +  ;;
         3309  +esac
         3310  +])
         3311  +
         3312  +file_magic_glob=
         3313  +want_nocaseglob=no
         3314  +if test "$build" = "$host"; then
         3315  +  case $host_os in
         3316  +  mingw* | pw32*)
         3317  +    if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then
         3318  +      want_nocaseglob=yes
         3319  +    else
         3320  +      file_magic_glob=`echo aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ | $SED -e "s/\(..\)/s\/[[\1]]\/[[\1]]\/g;/g"`
         3321  +    fi
         3322  +    ;;
         3323  +  esac
         3324  +fi
         3325  +
         3326  +file_magic_cmd=$lt_cv_file_magic_cmd
         3327  +deplibs_check_method=$lt_cv_deplibs_check_method
         3328  +test -z "$deplibs_check_method" && deplibs_check_method=unknown
         3329  +
         3330  +_LT_DECL([], [deplibs_check_method], [1],
         3331  +    [Method to check whether dependent libraries are shared objects])
         3332  +_LT_DECL([], [file_magic_cmd], [1],
         3333  +    [Command to use when deplibs_check_method = "file_magic"])
         3334  +_LT_DECL([], [file_magic_glob], [1],
         3335  +    [How to find potential files when deplibs_check_method = "file_magic"])
         3336  +_LT_DECL([], [want_nocaseglob], [1],
         3337  +    [Find potential files using nocaseglob when deplibs_check_method = "file_magic"])
         3338  +])# _LT_CHECK_MAGIC_METHOD
         3339  +
         3340  +
         3341  +# LT_PATH_NM
         3342  +# ----------
         3343  +# find the pathname to a BSD- or MS-compatible name lister
         3344  +AC_DEFUN([LT_PATH_NM],
         3345  +[AC_REQUIRE([AC_PROG_CC])dnl
         3346  +AC_CACHE_CHECK([for BSD- or MS-compatible name lister (nm)], lt_cv_path_NM,
         3347  +[if test -n "$NM"; then
         3348  +  # Let the user override the test.
         3349  +  lt_cv_path_NM="$NM"
         3350  +else
         3351  +  lt_nm_to_check="${ac_tool_prefix}nm"
         3352  +  if test -n "$ac_tool_prefix" && test "$build" = "$host"; then
         3353  +    lt_nm_to_check="$lt_nm_to_check nm"
         3354  +  fi
         3355  +  for lt_tmp_nm in $lt_nm_to_check; do
         3356  +    lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
         3357  +    for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do
         3358  +      IFS="$lt_save_ifs"
         3359  +      test -z "$ac_dir" && ac_dir=.
         3360  +      tmp_nm="$ac_dir/$lt_tmp_nm"
         3361  +      if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then
         3362  +	# Check to see if the nm accepts a BSD-compat flag.
         3363  +	# Adding the `sed 1q' prevents false positives on HP-UX, which says:
         3364  +	#   nm: unknown option "B" ignored
         3365  +	# Tru64's nm complains that /dev/null is an invalid object file
         3366  +	case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in
         3367  +	*/dev/null* | *'Invalid file or object type'*)
         3368  +	  lt_cv_path_NM="$tmp_nm -B"
         3369  +	  break
         3370  +	  ;;
         3371  +	*)
         3372  +	  case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in
         3373  +	  */dev/null*)
         3374  +	    lt_cv_path_NM="$tmp_nm -p"
         3375  +	    break
         3376  +	    ;;
         3377  +	  *)
         3378  +	    lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but
         3379  +	    continue # so that we can try to find one that supports BSD flags
         3380  +	    ;;
         3381  +	  esac
         3382  +	  ;;
         3383  +	esac
         3384  +      fi
         3385  +    done
         3386  +    IFS="$lt_save_ifs"
         3387  +  done
         3388  +  : ${lt_cv_path_NM=no}
         3389  +fi])
         3390  +if test "$lt_cv_path_NM" != "no"; then
         3391  +  NM="$lt_cv_path_NM"
         3392  +else
         3393  +  # Didn't find any BSD compatible name lister, look for dumpbin.
         3394  +  if test -n "$DUMPBIN"; then :
         3395  +    # Let the user override the test.
         3396  +  else
         3397  +    AC_CHECK_TOOLS(DUMPBIN, [dumpbin "link -dump"], :)
         3398  +    case `$DUMPBIN -symbols /dev/null 2>&1 | sed '1q'` in
         3399  +    *COFF*)
         3400  +      DUMPBIN="$DUMPBIN -symbols"
         3401  +      ;;
         3402  +    *)
         3403  +      DUMPBIN=:
         3404  +      ;;
         3405  +    esac
         3406  +  fi
         3407  +  AC_SUBST([DUMPBIN])
         3408  +  if test "$DUMPBIN" != ":"; then
         3409  +    NM="$DUMPBIN"
         3410  +  fi
         3411  +fi
         3412  +test -z "$NM" && NM=nm
         3413  +AC_SUBST([NM])
         3414  +_LT_DECL([], [NM], [1], [A BSD- or MS-compatible name lister])dnl
         3415  +
         3416  +AC_CACHE_CHECK([the name lister ($NM) interface], [lt_cv_nm_interface],
         3417  +  [lt_cv_nm_interface="BSD nm"
         3418  +  echo "int some_variable = 0;" > conftest.$ac_ext
         3419  +  (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&AS_MESSAGE_LOG_FD)
         3420  +  (eval "$ac_compile" 2>conftest.err)
         3421  +  cat conftest.err >&AS_MESSAGE_LOG_FD
         3422  +  (eval echo "\"\$as_me:$LINENO: $NM \\\"conftest.$ac_objext\\\"\"" >&AS_MESSAGE_LOG_FD)
         3423  +  (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out)
         3424  +  cat conftest.err >&AS_MESSAGE_LOG_FD
         3425  +  (eval echo "\"\$as_me:$LINENO: output\"" >&AS_MESSAGE_LOG_FD)
         3426  +  cat conftest.out >&AS_MESSAGE_LOG_FD
         3427  +  if $GREP 'External.*some_variable' conftest.out > /dev/null; then
         3428  +    lt_cv_nm_interface="MS dumpbin"
         3429  +  fi
         3430  +  rm -f conftest*])
         3431  +])# LT_PATH_NM
         3432  +
         3433  +# Old names:
         3434  +AU_ALIAS([AM_PROG_NM], [LT_PATH_NM])
         3435  +AU_ALIAS([AC_PROG_NM], [LT_PATH_NM])
         3436  +dnl aclocal-1.4 backwards compatibility:
         3437  +dnl AC_DEFUN([AM_PROG_NM], [])
         3438  +dnl AC_DEFUN([AC_PROG_NM], [])
         3439  +
         3440  +# _LT_CHECK_SHAREDLIB_FROM_LINKLIB
         3441  +# --------------------------------
         3442  +# how to determine the name of the shared library
         3443  +# associated with a specific link library.
         3444  +#  -- PORTME fill in with the dynamic library characteristics
         3445  +m4_defun([_LT_CHECK_SHAREDLIB_FROM_LINKLIB],
         3446  +[m4_require([_LT_DECL_EGREP])
         3447  +m4_require([_LT_DECL_OBJDUMP])
         3448  +m4_require([_LT_DECL_DLLTOOL])
         3449  +AC_CACHE_CHECK([how to associate runtime and link libraries],
         3450  +lt_cv_sharedlib_from_linklib_cmd,
         3451  +[lt_cv_sharedlib_from_linklib_cmd='unknown'
         3452  +
         3453  +case $host_os in
         3454  +cygwin* | mingw* | pw32* | cegcc*)
         3455  +  # two different shell functions defined in ltmain.sh
         3456  +  # decide which to use based on capabilities of $DLLTOOL
         3457  +  case `$DLLTOOL --help 2>&1` in
         3458  +  *--identify-strict*)
         3459  +    lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib
         3460  +    ;;
         3461  +  *)
         3462  +    lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib_fallback
         3463  +    ;;
         3464  +  esac
         3465  +  ;;
         3466  +*)
         3467  +  # fallback: assume linklib IS sharedlib
         3468  +  lt_cv_sharedlib_from_linklib_cmd="$ECHO"
         3469  +  ;;
         3470  +esac
         3471  +])
         3472  +sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd
         3473  +test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO
         3474  +
         3475  +_LT_DECL([], [sharedlib_from_linklib_cmd], [1],
         3476  +    [Command to associate shared and link libraries])
         3477  +])# _LT_CHECK_SHAREDLIB_FROM_LINKLIB
         3478  +
         3479  +
         3480  +# _LT_PATH_MANIFEST_TOOL
         3481  +# ----------------------
         3482  +# locate the manifest tool
         3483  +m4_defun([_LT_PATH_MANIFEST_TOOL],
         3484  +[AC_CHECK_TOOL(MANIFEST_TOOL, mt, :)
         3485  +test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt
         3486  +AC_CACHE_CHECK([if $MANIFEST_TOOL is a manifest tool], [lt_cv_path_mainfest_tool],
         3487  +  [lt_cv_path_mainfest_tool=no
         3488  +  echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&AS_MESSAGE_LOG_FD
         3489  +  $MANIFEST_TOOL '-?' 2>conftest.err > conftest.out
         3490  +  cat conftest.err >&AS_MESSAGE_LOG_FD
         3491  +  if $GREP 'Manifest Tool' conftest.out > /dev/null; then
         3492  +    lt_cv_path_mainfest_tool=yes
         3493  +  fi
         3494  +  rm -f conftest*])
         3495  +if test "x$lt_cv_path_mainfest_tool" != xyes; then
         3496  +  MANIFEST_TOOL=:
         3497  +fi
         3498  +_LT_DECL([], [MANIFEST_TOOL], [1], [Manifest tool])dnl
         3499  +])# _LT_PATH_MANIFEST_TOOL
         3500  +
         3501  +
         3502  +# LT_LIB_M
         3503  +# --------
         3504  +# check for math library
         3505  +AC_DEFUN([LT_LIB_M],
         3506  +[AC_REQUIRE([AC_CANONICAL_HOST])dnl
         3507  +LIBM=
         3508  +case $host in
         3509  +*-*-beos* | *-*-cegcc* | *-*-cygwin* | *-*-haiku* | *-*-pw32* | *-*-darwin*)
         3510  +  # These system don't have libm, or don't need it
         3511  +  ;;
         3512  +*-ncr-sysv4.3*)
         3513  +  AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM="-lmw")
         3514  +  AC_CHECK_LIB(m, cos, LIBM="$LIBM -lm")
         3515  +  ;;
         3516  +*)
         3517  +  AC_CHECK_LIB(m, cos, LIBM="-lm")
         3518  +  ;;
         3519  +esac
         3520  +AC_SUBST([LIBM])
         3521  +])# LT_LIB_M
         3522  +
         3523  +# Old name:
         3524  +AU_ALIAS([AC_CHECK_LIBM], [LT_LIB_M])
         3525  +dnl aclocal-1.4 backwards compatibility:
         3526  +dnl AC_DEFUN([AC_CHECK_LIBM], [])
         3527  +
         3528  +
         3529  +# _LT_COMPILER_NO_RTTI([TAGNAME])
         3530  +# -------------------------------
         3531  +m4_defun([_LT_COMPILER_NO_RTTI],
         3532  +[m4_require([_LT_TAG_COMPILER])dnl
         3533  +
         3534  +_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=
         3535  +
         3536  +if test "$GCC" = yes; then
         3537  +  case $cc_basename in
         3538  +  nvcc*)
         3539  +    _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -Xcompiler -fno-builtin' ;;
         3540  +  *)
         3541  +    _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' ;;
         3542  +  esac
         3543  +
         3544  +  _LT_COMPILER_OPTION([if $compiler supports -fno-rtti -fno-exceptions],
         3545  +    lt_cv_prog_compiler_rtti_exceptions,
         3546  +    [-fno-rtti -fno-exceptions], [],
         3547  +    [_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)="$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) -fno-rtti -fno-exceptions"])
         3548  +fi
         3549  +_LT_TAGDECL([no_builtin_flag], [lt_prog_compiler_no_builtin_flag], [1],
         3550  +	[Compiler flag to turn off builtin functions])
         3551  +])# _LT_COMPILER_NO_RTTI
         3552  +
         3553  +
         3554  +# _LT_CMD_GLOBAL_SYMBOLS
         3555  +# ----------------------
         3556  +m4_defun([_LT_CMD_GLOBAL_SYMBOLS],
         3557  +[AC_REQUIRE([AC_CANONICAL_HOST])dnl
         3558  +AC_REQUIRE([AC_PROG_CC])dnl
         3559  +AC_REQUIRE([AC_PROG_AWK])dnl
         3560  +AC_REQUIRE([LT_PATH_NM])dnl
         3561  +AC_REQUIRE([LT_PATH_LD])dnl
         3562  +m4_require([_LT_DECL_SED])dnl
         3563  +m4_require([_LT_DECL_EGREP])dnl
         3564  +m4_require([_LT_TAG_COMPILER])dnl
         3565  +
         3566  +# Check for command to grab the raw symbol name followed by C symbol from nm.
         3567  +AC_MSG_CHECKING([command to parse $NM output from $compiler object])
         3568  +AC_CACHE_VAL([lt_cv_sys_global_symbol_pipe],
         3569  +[
         3570  +# These are sane defaults that work on at least a few old systems.
         3571  +# [They come from Ultrix.  What could be older than Ultrix?!! ;)]
         3572  +
         3573  +# Character class describing NM global symbol codes.
         3574  +symcode='[[BCDEGRST]]'
         3575  +
         3576  +# Regexp to match symbols that can be accessed directly from C.
         3577  +sympat='\([[_A-Za-z]][[_A-Za-z0-9]]*\)'
         3578  +
         3579  +# Define system-specific variables.
         3580  +case $host_os in
         3581  +aix*)
         3582  +  symcode='[[BCDT]]'
         3583  +  ;;
         3584  +cygwin* | mingw* | pw32* | cegcc*)
         3585  +  symcode='[[ABCDGISTW]]'
         3586  +  ;;
         3587  +hpux*)
         3588  +  if test "$host_cpu" = ia64; then
         3589  +    symcode='[[ABCDEGRST]]'
         3590  +  fi
         3591  +  ;;
         3592  +irix* | nonstopux*)
         3593  +  symcode='[[BCDEGRST]]'
         3594  +  ;;
         3595  +osf*)
         3596  +  symcode='[[BCDEGQRST]]'
         3597  +  ;;
         3598  +solaris*)
         3599  +  symcode='[[BDRT]]'
         3600  +  ;;
         3601  +sco3.2v5*)
         3602  +  symcode='[[DT]]'
         3603  +  ;;
         3604  +sysv4.2uw2*)
         3605  +  symcode='[[DT]]'
         3606  +  ;;
         3607  +sysv5* | sco5v6* | unixware* | OpenUNIX*)
         3608  +  symcode='[[ABDT]]'
         3609  +  ;;
         3610  +sysv4)
         3611  +  symcode='[[DFNSTU]]'
         3612  +  ;;
         3613  +esac
         3614  +
         3615  +# If we're using GNU nm, then use its standard symbol codes.
         3616  +case `$NM -V 2>&1` in
         3617  +*GNU* | *'with BFD'*)
         3618  +  symcode='[[ABCDGIRSTW]]' ;;
         3619  +esac
         3620  +
         3621  +# Transform an extracted symbol line into a proper C declaration.
         3622  +# Some systems (esp. on ia64) link data and code symbols differently,
         3623  +# so use this general approach.
         3624  +lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'"
         3625  +
         3626  +# Transform an extracted symbol line into symbol name and symbol address
         3627  +lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\)[[ ]]*$/  {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/  {\"\2\", (void *) \&\2},/p'"
         3628  +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'"
         3629  +
         3630  +# Handle CRLF in mingw tool chain
         3631  +opt_cr=
         3632  +case $build_os in
         3633  +mingw*)
         3634  +  opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp
         3635  +  ;;
         3636  +esac
         3637  +
         3638  +# Try without a prefix underscore, then with it.
         3639  +for ac_symprfx in "" "_"; do
         3640  +
         3641  +  # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol.
         3642  +  symxfrm="\\1 $ac_symprfx\\2 \\2"
         3643  +
         3644  +  # Write the raw and C identifiers.
         3645  +  if test "$lt_cv_nm_interface" = "MS dumpbin"; then
         3646  +    # Fake it for dumpbin and say T for any non-static function
         3647  +    # and D for any global variable.
         3648  +    # Also find C++ and __fastcall symbols from MSVC++,
         3649  +    # which start with @ or ?.
         3650  +    lt_cv_sys_global_symbol_pipe="$AWK ['"\
         3651  +"     {last_section=section; section=\$ 3};"\
         3652  +"     /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\
         3653  +"     \$ 0!~/External *\|/{next};"\
         3654  +"     / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\
         3655  +"     {if(hide[section]) next};"\
         3656  +"     {f=0}; \$ 0~/\(\).*\|/{f=1}; {printf f ? \"T \" : \"D \"};"\
         3657  +"     {split(\$ 0, a, /\||\r/); split(a[2], s)};"\
         3658  +"     s[1]~/^[@?]/{print s[1], s[1]; next};"\
         3659  +"     s[1]~prfx {split(s[1],t,\"@\"); print t[1], substr(t[1],length(prfx))}"\
         3660  +"     ' prfx=^$ac_symprfx]"
         3661  +  else
         3662  +    lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[[	 ]]\($symcode$symcode*\)[[	 ]][[	 ]]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'"
         3663  +  fi
         3664  +  lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | sed '/ __gnu_lto/d'"
         3665  +
         3666  +  # Check to see that the pipe works correctly.
         3667  +  pipe_works=no
         3668  +
         3669  +  rm -f conftest*
         3670  +  cat > conftest.$ac_ext <<_LT_EOF
         3671  +#ifdef __cplusplus
         3672  +extern "C" {
         3673  +#endif
         3674  +char nm_test_var;
         3675  +void nm_test_func(void);
         3676  +void nm_test_func(void){}
         3677  +#ifdef __cplusplus
         3678  +}
         3679  +#endif
         3680  +int main(){nm_test_var='a';nm_test_func();return(0);}
         3681  +_LT_EOF
         3682  +
         3683  +  if AC_TRY_EVAL(ac_compile); then
         3684  +    # Now try to grab the symbols.
         3685  +    nlist=conftest.nm
         3686  +    if AC_TRY_EVAL(NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist) && test -s "$nlist"; then
         3687  +      # Try sorting and uniquifying the output.
         3688  +      if sort "$nlist" | uniq > "$nlist"T; then
         3689  +	mv -f "$nlist"T "$nlist"
         3690  +      else
         3691  +	rm -f "$nlist"T
         3692  +      fi
         3693  +
         3694  +      # Make sure that we snagged all the symbols we need.
         3695  +      if $GREP ' nm_test_var$' "$nlist" >/dev/null; then
         3696  +	if $GREP ' nm_test_func$' "$nlist" >/dev/null; then
         3697  +	  cat <<_LT_EOF > conftest.$ac_ext
         3698  +/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests.  */
         3699  +#if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE)
         3700  +/* DATA imports from DLLs on WIN32 con't be const, because runtime
         3701  +   relocations are performed -- see ld's documentation on pseudo-relocs.  */
         3702  +# define LT@&t@_DLSYM_CONST
         3703  +#elif defined(__osf__)
         3704  +/* This system does not cope well with relocations in const data.  */
         3705  +# define LT@&t@_DLSYM_CONST
         3706  +#else
         3707  +# define LT@&t@_DLSYM_CONST const
         3708  +#endif
         3709  +
         3710  +#ifdef __cplusplus
         3711  +extern "C" {
         3712  +#endif
         3713  +
         3714  +_LT_EOF
         3715  +	  # Now generate the symbol file.
         3716  +	  eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext'
         3717  +
         3718  +	  cat <<_LT_EOF >> conftest.$ac_ext
         3719  +
         3720  +/* The mapping between symbol names and symbols.  */
         3721  +LT@&t@_DLSYM_CONST struct {
         3722  +  const char *name;
         3723  +  void       *address;
         3724  +}
         3725  +lt__PROGRAM__LTX_preloaded_symbols[[]] =
         3726  +{
         3727  +  { "@PROGRAM@", (void *) 0 },
         3728  +_LT_EOF
         3729  +	  $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/  {\"\2\", (void *) \&\2},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext
         3730  +	  cat <<\_LT_EOF >> conftest.$ac_ext
         3731  +  {0, (void *) 0}
         3732  +};
         3733  +
         3734  +/* This works around a problem in FreeBSD linker */
         3735  +#ifdef FREEBSD_WORKAROUND
         3736  +static const void *lt_preloaded_setup() {
         3737  +  return lt__PROGRAM__LTX_preloaded_symbols;
         3738  +}
         3739  +#endif
         3740  +
         3741  +#ifdef __cplusplus
         3742  +}
         3743  +#endif
         3744  +_LT_EOF
         3745  +	  # Now try linking the two files.
         3746  +	  mv conftest.$ac_objext conftstm.$ac_objext
         3747  +	  lt_globsym_save_LIBS=$LIBS
         3748  +	  lt_globsym_save_CFLAGS=$CFLAGS
         3749  +	  LIBS="conftstm.$ac_objext"
         3750  +	  CFLAGS="$CFLAGS$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)"
         3751  +	  if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext}; then
         3752  +	    pipe_works=yes
         3753  +	  fi
         3754  +	  LIBS=$lt_globsym_save_LIBS
         3755  +	  CFLAGS=$lt_globsym_save_CFLAGS
         3756  +	else
         3757  +	  echo "cannot find nm_test_func in $nlist" >&AS_MESSAGE_LOG_FD
         3758  +	fi
         3759  +      else
         3760  +	echo "cannot find nm_test_var in $nlist" >&AS_MESSAGE_LOG_FD
         3761  +      fi
         3762  +    else
         3763  +      echo "cannot run $lt_cv_sys_global_symbol_pipe" >&AS_MESSAGE_LOG_FD
         3764  +    fi
         3765  +  else
         3766  +    echo "$progname: failed program was:" >&AS_MESSAGE_LOG_FD
         3767  +    cat conftest.$ac_ext >&5
         3768  +  fi
         3769  +  rm -rf conftest* conftst*
         3770  +
         3771  +  # Do not use the global_symbol_pipe unless it works.
         3772  +  if test "$pipe_works" = yes; then
         3773  +    break
         3774  +  else
         3775  +    lt_cv_sys_global_symbol_pipe=
         3776  +  fi
         3777  +done
         3778  +])
         3779  +if test -z "$lt_cv_sys_global_symbol_pipe"; then
         3780  +  lt_cv_sys_global_symbol_to_cdecl=
         3781  +fi
         3782  +if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then
         3783  +  AC_MSG_RESULT(failed)
         3784  +else
         3785  +  AC_MSG_RESULT(ok)
         3786  +fi
         3787  +
         3788  +# Response file support.
         3789  +if test "$lt_cv_nm_interface" = "MS dumpbin"; then
         3790  +  nm_file_list_spec='@'
         3791  +elif $NM --help 2>/dev/null | grep '[[@]]FILE' >/dev/null; then
         3792  +  nm_file_list_spec='@'
         3793  +fi
         3794  +
         3795  +_LT_DECL([global_symbol_pipe], [lt_cv_sys_global_symbol_pipe], [1],
         3796  +    [Take the output of nm and produce a listing of raw symbols and C names])
         3797  +_LT_DECL([global_symbol_to_cdecl], [lt_cv_sys_global_symbol_to_cdecl], [1],
         3798  +    [Transform the output of nm in a proper C declaration])
         3799  +_LT_DECL([global_symbol_to_c_name_address],
         3800  +    [lt_cv_sys_global_symbol_to_c_name_address], [1],
         3801  +    [Transform the output of nm in a C name address pair])
         3802  +_LT_DECL([global_symbol_to_c_name_address_lib_prefix],
         3803  +    [lt_cv_sys_global_symbol_to_c_name_address_lib_prefix], [1],
         3804  +    [Transform the output of nm in a C name address pair when lib prefix is needed])
         3805  +_LT_DECL([], [nm_file_list_spec], [1],
         3806  +    [Specify filename containing input files for $NM])
         3807  +]) # _LT_CMD_GLOBAL_SYMBOLS
         3808  +
         3809  +
         3810  +# _LT_COMPILER_PIC([TAGNAME])
         3811  +# ---------------------------
         3812  +m4_defun([_LT_COMPILER_PIC],
         3813  +[m4_require([_LT_TAG_COMPILER])dnl
         3814  +_LT_TAGVAR(lt_prog_compiler_wl, $1)=
         3815  +_LT_TAGVAR(lt_prog_compiler_pic, $1)=
         3816  +_LT_TAGVAR(lt_prog_compiler_static, $1)=
         3817  +
         3818  +m4_if([$1], [CXX], [
         3819  +  # C++ specific cases for pic, static, wl, etc.
         3820  +  if test "$GXX" = yes; then
         3821  +    _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
         3822  +    _LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
         3823  +
         3824  +    case $host_os in
         3825  +    aix*)
         3826  +      # All AIX code is PIC.
         3827  +      if test "$host_cpu" = ia64; then
         3828  +	# AIX 5 now supports IA64 processor
         3829  +	_LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
         3830  +      fi
         3831  +      ;;
         3832  +
         3833  +    amigaos*)
         3834  +      case $host_cpu in
         3835  +      powerpc)
         3836  +            # see comment about AmigaOS4 .so support
         3837  +            _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
         3838  +        ;;
         3839  +      m68k)
         3840  +            # FIXME: we need at least 68020 code to build shared libraries, but
         3841  +            # adding the `-m68020' flag to GCC prevents building anything better,
         3842  +            # like `-m68040'.
         3843  +            _LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4'
         3844  +        ;;
         3845  +      esac
         3846  +      ;;
         3847  +
         3848  +    beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
         3849  +      # PIC is the default for these OSes.
         3850  +      ;;
         3851  +    mingw* | cygwin* | os2* | pw32* | cegcc*)
         3852  +      # This hack is so that the source file can tell whether it is being
         3853  +      # built for inclusion in a dll (and should export symbols for example).
         3854  +      # Although the cygwin gcc ignores -fPIC, still need this for old-style
         3855  +      # (--disable-auto-import) libraries
         3856  +      m4_if([$1], [GCJ], [],
         3857  +	[_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT'])
         3858  +      ;;
         3859  +    darwin* | rhapsody*)
         3860  +      # PIC is the default on this platform
         3861  +      # Common symbols not allowed in MH_DYLIB files
         3862  +      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common'
         3863  +      ;;
         3864  +    *djgpp*)
         3865  +      # DJGPP does not support shared libraries at all
         3866  +      _LT_TAGVAR(lt_prog_compiler_pic, $1)=
         3867  +      ;;
         3868  +    haiku*)
         3869  +      # PIC is the default for Haiku.
         3870  +      # The "-static" flag exists, but is broken.
         3871  +      _LT_TAGVAR(lt_prog_compiler_static, $1)=
         3872  +      ;;
         3873  +    interix[[3-9]]*)
         3874  +      # Interix 3.x gcc -fpic/-fPIC options generate broken code.
         3875  +      # Instead, we relocate shared libraries at runtime.
         3876  +      ;;
         3877  +    sysv4*MP*)
         3878  +      if test -d /usr/nec; then
         3879  +	_LT_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic
         3880  +      fi
         3881  +      ;;
         3882  +    hpux*)
         3883  +      # PIC is the default for 64-bit PA HP-UX, but not for 32-bit
         3884  +      # PA HP-UX.  On IA64 HP-UX, PIC is the default but the pic flag
         3885  +      # sets the default TLS model and affects inlining.
         3886  +      case $host_cpu in
         3887  +      hppa*64*)
         3888  +	;;
         3889  +      *)
         3890  +	_LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
         3891  +	;;
         3892  +      esac
         3893  +      ;;
         3894  +    *qnx* | *nto*)
         3895  +      # QNX uses GNU C++, but need to define -shared option too, otherwise
         3896  +      # it will coredump.
         3897  +      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared'
         3898  +      ;;
         3899  +    *)
         3900  +      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
         3901  +      ;;
         3902  +    esac
         3903  +  else
         3904  +    case $host_os in
         3905  +      aix[[4-9]]*)
         3906  +	# All AIX code is PIC.
         3907  +	if test "$host_cpu" = ia64; then
         3908  +	  # AIX 5 now supports IA64 processor
         3909  +	  _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
         3910  +	else
         3911  +	  _LT_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp'
         3912  +	fi
         3913  +	;;
         3914  +      chorus*)
         3915  +	case $cc_basename in
         3916  +	cxch68*)
         3917  +	  # Green Hills C++ Compiler
         3918  +	  # _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"
         3919  +	  ;;
         3920  +	esac
         3921  +	;;
         3922  +      mingw* | cygwin* | os2* | pw32* | cegcc*)
         3923  +	# This hack is so that the source file can tell whether it is being
         3924  +	# built for inclusion in a dll (and should export symbols for example).
         3925  +	m4_if([$1], [GCJ], [],
         3926  +	  [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT'])
         3927  +	;;
         3928  +      dgux*)
         3929  +	case $cc_basename in
         3930  +	  ec++*)
         3931  +	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
         3932  +	    ;;
         3933  +	  ghcx*)
         3934  +	    # Green Hills C++ Compiler
         3935  +	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
         3936  +	    ;;
         3937  +	  *)
         3938  +	    ;;
         3939  +	esac
         3940  +	;;
         3941  +      freebsd* | dragonfly*)
         3942  +	# FreeBSD uses GNU C++
         3943  +	;;
         3944  +      hpux9* | hpux10* | hpux11*)
         3945  +	case $cc_basename in
         3946  +	  CC*)
         3947  +	    _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
         3948  +	    _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive'
         3949  +	    if test "$host_cpu" != ia64; then
         3950  +	      _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z'
         3951  +	    fi
         3952  +	    ;;
         3953  +	  aCC*)
         3954  +	    _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
         3955  +	    _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive'
         3956  +	    case $host_cpu in
         3957  +	    hppa*64*|ia64*)
         3958  +	      # +Z the default
         3959  +	      ;;
         3960  +	    *)
         3961  +	      _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z'
         3962  +	      ;;
         3963  +	    esac
         3964  +	    ;;
         3965  +	  *)
         3966  +	    ;;
         3967  +	esac
         3968  +	;;
         3969  +      interix*)
         3970  +	# This is c89, which is MS Visual C++ (no shared libs)
         3971  +	# Anyone wants to do a port?
         3972  +	;;
         3973  +      irix5* | irix6* | nonstopux*)
         3974  +	case $cc_basename in
         3975  +	  CC*)
         3976  +	    _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
         3977  +	    _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
         3978  +	    # CC pic flag -KPIC is the default.
         3979  +	    ;;
         3980  +	  *)
         3981  +	    ;;
         3982  +	esac
         3983  +	;;
         3984  +      linux* | k*bsd*-gnu | kopensolaris*-gnu)
         3985  +	case $cc_basename in
         3986  +	  KCC*)
         3987  +	    # KAI C++ Compiler
         3988  +	    _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,'
         3989  +	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
         3990  +	    ;;
         3991  +	  ecpc* )
         3992  +	    # old Intel C++ for x86_64 which still supported -KPIC.
         3993  +	    _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
         3994  +	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
         3995  +	    _LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
         3996  +	    ;;
         3997  +	  icpc* )
         3998  +	    # Intel C++, used to be incompatible with GCC.
         3999  +	    # ICC 10 doesn't accept -KPIC any more.
         4000  +	    _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
         4001  +	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
         4002  +	    _LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
         4003  +	    ;;
         4004  +	  pgCC* | pgcpp*)
         4005  +	    # Portland Group C++ compiler
         4006  +	    _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
         4007  +	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic'
         4008  +	    _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
         4009  +	    ;;
         4010  +	  cxx*)
         4011  +	    # Compaq C++
         4012  +	    # Make sure the PIC flag is empty.  It appears that all Alpha
         4013  +	    # Linux and Compaq Tru64 Unix objects are PIC.
         4014  +	    _LT_TAGVAR(lt_prog_compiler_pic, $1)=
         4015  +	    _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
         4016  +	    ;;
         4017  +	  xlc* | xlC* | bgxl[[cC]]* | mpixl[[cC]]*)
         4018  +	    # IBM XL 8.0, 9.0 on PPC and BlueGene
         4019  +	    _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
         4020  +	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic'
         4021  +	    _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink'
         4022  +	    ;;
         4023  +	  *)
         4024  +	    case `$CC -V 2>&1 | sed 5q` in
         4025  +	    *Sun\ C*)
         4026  +	      # Sun C++ 5.9
         4027  +	      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
         4028  +	      _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
         4029  +	      _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld '
         4030  +	      ;;
         4031  +	    esac
         4032  +	    ;;
         4033  +	esac
         4034  +	;;
         4035  +      lynxos*)
         4036  +	;;
         4037  +      m88k*)
         4038  +	;;
         4039  +      mvs*)
         4040  +	case $cc_basename in
         4041  +	  cxx*)
         4042  +	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-W c,exportall'
         4043  +	    ;;
         4044  +	  *)
         4045  +	    ;;
         4046  +	esac
         4047  +	;;
         4048  +      netbsd*)
         4049  +	;;
         4050  +      *qnx* | *nto*)
         4051  +        # QNX uses GNU C++, but need to define -shared option too, otherwise
         4052  +        # it will coredump.
         4053  +        _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared'
         4054  +        ;;
         4055  +      osf3* | osf4* | osf5*)
         4056  +	case $cc_basename in
         4057  +	  KCC*)
         4058  +	    _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,'
         4059  +	    ;;
         4060  +	  RCC*)
         4061  +	    # Rational C++ 2.4.1
         4062  +	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
         4063  +	    ;;
         4064  +	  cxx*)
         4065  +	    # Digital/Compaq C++
         4066  +	    _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
         4067  +	    # Make sure the PIC flag is empty.  It appears that all Alpha
         4068  +	    # Linux and Compaq Tru64 Unix objects are PIC.
         4069  +	    _LT_TAGVAR(lt_prog_compiler_pic, $1)=
         4070  +	    _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
         4071  +	    ;;
         4072  +	  *)
         4073  +	    ;;
         4074  +	esac
         4075  +	;;
         4076  +      psos*)
         4077  +	;;
         4078  +      solaris*)
         4079  +	case $cc_basename in
         4080  +	  CC* | sunCC*)
         4081  +	    # Sun C++ 4.2, 5.x and Centerline C++
         4082  +	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
         4083  +	    _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
         4084  +	    _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld '
         4085  +	    ;;
         4086  +	  gcx*)
         4087  +	    # Green Hills C++ Compiler
         4088  +	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC'
         4089  +	    ;;
         4090  +	  *)
         4091  +	    ;;
         4092  +	esac
         4093  +	;;
         4094  +      sunos4*)
         4095  +	case $cc_basename in
         4096  +	  CC*)
         4097  +	    # Sun C++ 4.x
         4098  +	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
         4099  +	    _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
         4100  +	    ;;
         4101  +	  lcc*)
         4102  +	    # Lucid
         4103  +	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
         4104  +	    ;;
         4105  +	  *)
         4106  +	    ;;
         4107  +	esac
         4108  +	;;
         4109  +      sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*)
         4110  +	case $cc_basename in
         4111  +	  CC*)
         4112  +	    _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
         4113  +	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
         4114  +	    _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
         4115  +	    ;;
         4116  +	esac
         4117  +	;;
         4118  +      tandem*)
         4119  +	case $cc_basename in
         4120  +	  NCC*)
         4121  +	    # NonStop-UX NCC 3.20
         4122  +	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
         4123  +	    ;;
         4124  +	  *)
         4125  +	    ;;
         4126  +	esac
         4127  +	;;
         4128  +      vxworks*)
         4129  +	;;
         4130  +      *)
         4131  +	_LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no
         4132  +	;;
         4133  +    esac
         4134  +  fi
         4135  +],
         4136  +[
         4137  +  if test "$GCC" = yes; then
         4138  +    _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
         4139  +    _LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
         4140  +
         4141  +    case $host_os in
         4142  +      aix*)
         4143  +      # All AIX code is PIC.
         4144  +      if test "$host_cpu" = ia64; then
         4145  +	# AIX 5 now supports IA64 processor
         4146  +	_LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
         4147  +      fi
         4148  +      ;;
         4149  +
         4150  +    amigaos*)
         4151  +      case $host_cpu in
         4152  +      powerpc)
         4153  +            # see comment about AmigaOS4 .so support
         4154  +            _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
         4155  +        ;;
         4156  +      m68k)
         4157  +            # FIXME: we need at least 68020 code to build shared libraries, but
         4158  +            # adding the `-m68020' flag to GCC prevents building anything better,
         4159  +            # like `-m68040'.
         4160  +            _LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4'
         4161  +        ;;
         4162  +      esac
         4163  +      ;;
         4164  +
         4165  +    beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
         4166  +      # PIC is the default for these OSes.
         4167  +      ;;
         4168  +
         4169  +    mingw* | cygwin* | pw32* | os2* | cegcc*)
         4170  +      # This hack is so that the source file can tell whether it is being
         4171  +      # built for inclusion in a dll (and should export symbols for example).
         4172  +      # Although the cygwin gcc ignores -fPIC, still need this for old-style
         4173  +      # (--disable-auto-import) libraries
         4174  +      m4_if([$1], [GCJ], [],
         4175  +	[_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT'])
         4176  +      ;;
         4177  +
         4178  +    darwin* | rhapsody*)
         4179  +      # PIC is the default on this platform
         4180  +      # Common symbols not allowed in MH_DYLIB files
         4181  +      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common'
         4182  +      ;;
         4183  +
         4184  +    haiku*)
         4185  +      # PIC is the default for Haiku.
         4186  +      # The "-static" flag exists, but is broken.
         4187  +      _LT_TAGVAR(lt_prog_compiler_static, $1)=
         4188  +      ;;
         4189  +
         4190  +    hpux*)
         4191  +      # PIC is the default for 64-bit PA HP-UX, but not for 32-bit
         4192  +      # PA HP-UX.  On IA64 HP-UX, PIC is the default but the pic flag
         4193  +      # sets the default TLS model and affects inlining.
         4194  +      case $host_cpu in
         4195  +      hppa*64*)
         4196  +	# +Z the default
         4197  +	;;
         4198  +      *)
         4199  +	_LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
         4200  +	;;
         4201  +      esac
         4202  +      ;;
         4203  +
         4204  +    interix[[3-9]]*)
         4205  +      # Interix 3.x gcc -fpic/-fPIC options generate broken code.
         4206  +      # Instead, we relocate shared libraries at runtime.
         4207  +      ;;
         4208  +
         4209  +    msdosdjgpp*)
         4210  +      # Just because we use GCC doesn't mean we suddenly get shared libraries
         4211  +      # on systems that don't support them.
         4212  +      _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no
         4213  +      enable_shared=no
         4214  +      ;;
         4215  +
         4216  +    *nto* | *qnx*)
         4217  +      # QNX uses GNU C++, but need to define -shared option too, otherwise
         4218  +      # it will coredump.
         4219  +      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared'
         4220  +      ;;
         4221  +
         4222  +    sysv4*MP*)
         4223  +      if test -d /usr/nec; then
         4224  +	_LT_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic
         4225  +      fi
         4226  +      ;;
         4227  +
         4228  +    *)
         4229  +      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
         4230  +      ;;
         4231  +    esac
         4232  +
         4233  +    case $cc_basename in
         4234  +    nvcc*) # Cuda Compiler Driver 2.2
         4235  +      _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Xlinker '
         4236  +      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-Xcompiler -fPIC'
         4237  +      ;;
         4238  +    esac
         4239  +  else
         4240  +    # PORTME Check for flag to pass linker flags through the system compiler.
         4241  +    case $host_os in
         4242  +    aix*)
         4243  +      _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
         4244  +      if test "$host_cpu" = ia64; then
         4245  +	# AIX 5 now supports IA64 processor
         4246  +	_LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
         4247  +      else
         4248  +	_LT_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp'
         4249  +      fi
         4250  +      ;;
         4251  +
         4252  +    mingw* | cygwin* | pw32* | os2* | cegcc*)
         4253  +      # This hack is so that the source file can tell whether it is being
         4254  +      # built for inclusion in a dll (and should export symbols for example).
         4255  +      m4_if([$1], [GCJ], [],
         4256  +	[_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT'])
         4257  +      ;;
         4258  +
         4259  +    hpux9* | hpux10* | hpux11*)
         4260  +      _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
         4261  +      # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
         4262  +      # not for PA HP-UX.
         4263  +      case $host_cpu in
         4264  +      hppa*64*|ia64*)
         4265  +	# +Z the default
         4266  +	;;
         4267  +      *)
         4268  +	_LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z'
         4269  +	;;
         4270  +      esac
         4271  +      # Is there a better lt_prog_compiler_static that works with the bundled CC?
         4272  +      _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive'
         4273  +      ;;
         4274  +
         4275  +    irix5* | irix6* | nonstopux*)
         4276  +      _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
         4277  +      # PIC (with -KPIC) is the default.
         4278  +      _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
         4279  +      ;;
         4280  +
         4281  +    linux* | k*bsd*-gnu | kopensolaris*-gnu)
         4282  +      case $cc_basename in
         4283  +      # old Intel for x86_64 which still supported -KPIC.
         4284  +      ecc*)
         4285  +	_LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
         4286  +	_LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
         4287  +	_LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
         4288  +        ;;
         4289  +      # icc used to be incompatible with GCC.
         4290  +      # ICC 10 doesn't accept -KPIC any more.
         4291  +      icc* | ifort*)
         4292  +	_LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
         4293  +	_LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
         4294  +	_LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
         4295  +        ;;
         4296  +      # Lahey Fortran 8.1.
         4297  +      lf95*)
         4298  +	_LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
         4299  +	_LT_TAGVAR(lt_prog_compiler_pic, $1)='--shared'
         4300  +	_LT_TAGVAR(lt_prog_compiler_static, $1)='--static'
         4301  +	;;
         4302  +      nagfor*)
         4303  +	# NAG Fortran compiler
         4304  +	_LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,-Wl,,'
         4305  +	_LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC'
         4306  +	_LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
         4307  +	;;
         4308  +      pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*)
         4309  +        # Portland Group compilers (*not* the Pentium gcc compiler,
         4310  +	# which looks to be a dead project)
         4311  +	_LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
         4312  +	_LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic'
         4313  +	_LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
         4314  +        ;;
         4315  +      ccc*)
         4316  +        _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
         4317  +        # All Alpha code is PIC.
         4318  +        _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
         4319  +        ;;
         4320  +      xl* | bgxl* | bgf* | mpixl*)
         4321  +	# IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene
         4322  +	_LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
         4323  +	_LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic'
         4324  +	_LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink'
         4325  +	;;
         4326  +      *)
         4327  +	case `$CC -V 2>&1 | sed 5q` in
         4328  +	*Sun\ F* | *Sun*Fortran*)
         4329  +	  # Sun Fortran 8.3 passes all unrecognized flags to the linker
         4330  +	  _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
         4331  +	  _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
         4332  +	  _LT_TAGVAR(lt_prog_compiler_wl, $1)=''
         4333  +	  ;;
         4334  +	*Sun\ C*)
         4335  +	  # Sun C 5.9
         4336  +	  _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
         4337  +	  _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
         4338  +	  _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
         4339  +	  ;;
         4340  +	esac
         4341  +	;;
         4342  +      esac
         4343  +      ;;
         4344  +
         4345  +    newsos6)
         4346  +      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
         4347  +      _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
         4348  +      ;;
         4349  +
         4350  +    *nto* | *qnx*)
         4351  +      # QNX uses GNU C++, but need to define -shared option too, otherwise
         4352  +      # it will coredump.
         4353  +      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared'
         4354  +      ;;
         4355  +
         4356  +    osf3* | osf4* | osf5*)
         4357  +      _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
         4358  +      # All OSF/1 code is PIC.
         4359  +      _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
         4360  +      ;;
         4361  +
         4362  +    rdos*)
         4363  +      _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
         4364  +      ;;
         4365  +
         4366  +    solaris*)
         4367  +      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
         4368  +      _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
         4369  +      case $cc_basename in
         4370  +      f77* | f90* | f95* | sunf77* | sunf90* | sunf95*)
         4371  +	_LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ';;
         4372  +      *)
         4373  +	_LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,';;
         4374  +      esac
         4375  +      ;;
         4376  +
         4377  +    sunos4*)
         4378  +      _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld '
         4379  +      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC'
         4380  +      _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
         4381  +      ;;
         4382  +
         4383  +    sysv4 | sysv4.2uw2* | sysv4.3*)
         4384  +      _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
         4385  +      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
         4386  +      _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
         4387  +      ;;
         4388  +
         4389  +    sysv4*MP*)
         4390  +      if test -d /usr/nec ;then
         4391  +	_LT_TAGVAR(lt_prog_compiler_pic, $1)='-Kconform_pic'
         4392  +	_LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
         4393  +      fi
         4394  +      ;;
         4395  +
         4396  +    sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*)
         4397  +      _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
         4398  +      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
         4399  +      _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
         4400  +      ;;
         4401  +
         4402  +    unicos*)
         4403  +      _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
         4404  +      _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no
         4405  +      ;;
         4406  +
         4407  +    uts4*)
         4408  +      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
         4409  +      _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
         4410  +      ;;
         4411  +
         4412  +    *)
         4413  +      _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no
         4414  +      ;;
         4415  +    esac
         4416  +  fi
         4417  +])
         4418  +case $host_os in
         4419  +  # For platforms which do not support PIC, -DPIC is meaningless:
         4420  +  *djgpp*)
         4421  +    _LT_TAGVAR(lt_prog_compiler_pic, $1)=
         4422  +    ;;
         4423  +  *)
         4424  +    _LT_TAGVAR(lt_prog_compiler_pic, $1)="$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t@m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])"
         4425  +    ;;
         4426  +esac
         4427  +
         4428  +AC_CACHE_CHECK([for $compiler option to produce PIC],
         4429  +  [_LT_TAGVAR(lt_cv_prog_compiler_pic, $1)],
         4430  +  [_LT_TAGVAR(lt_cv_prog_compiler_pic, $1)=$_LT_TAGVAR(lt_prog_compiler_pic, $1)])
         4431  +_LT_TAGVAR(lt_prog_compiler_pic, $1)=$_LT_TAGVAR(lt_cv_prog_compiler_pic, $1)
         4432  +
         4433  +#
         4434  +# Check to make sure the PIC flag actually works.
         4435  +#
         4436  +if test -n "$_LT_TAGVAR(lt_prog_compiler_pic, $1)"; then
         4437  +  _LT_COMPILER_OPTION([if $compiler PIC flag $_LT_TAGVAR(lt_prog_compiler_pic, $1) works],
         4438  +    [_LT_TAGVAR(lt_cv_prog_compiler_pic_works, $1)],
         4439  +    [$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t@m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])], [],
         4440  +    [case $_LT_TAGVAR(lt_prog_compiler_pic, $1) in
         4441  +     "" | " "*) ;;
         4442  +     *) _LT_TAGVAR(lt_prog_compiler_pic, $1)=" $_LT_TAGVAR(lt_prog_compiler_pic, $1)" ;;
         4443  +     esac],
         4444  +    [_LT_TAGVAR(lt_prog_compiler_pic, $1)=
         4445  +     _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no])
         4446  +fi
         4447  +_LT_TAGDECL([pic_flag], [lt_prog_compiler_pic], [1],
         4448  +	[Additional compiler flags for building library objects])
         4449  +
         4450  +_LT_TAGDECL([wl], [lt_prog_compiler_wl], [1],
         4451  +	[How to pass a linker flag through the compiler])
         4452  +#
         4453  +# Check to make sure the static flag actually works.
         4454  +#
         4455  +wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1) eval lt_tmp_static_flag=\"$_LT_TAGVAR(lt_prog_compiler_static, $1)\"
         4456  +_LT_LINKER_OPTION([if $compiler static flag $lt_tmp_static_flag works],
         4457  +  _LT_TAGVAR(lt_cv_prog_compiler_static_works, $1),
         4458  +  $lt_tmp_static_flag,
         4459  +  [],
         4460  +  [_LT_TAGVAR(lt_prog_compiler_static, $1)=])
         4461  +_LT_TAGDECL([link_static_flag], [lt_prog_compiler_static], [1],
         4462  +	[Compiler flag to prevent dynamic linking])
         4463  +])# _LT_COMPILER_PIC
         4464  +
         4465  +
         4466  +# _LT_LINKER_SHLIBS([TAGNAME])
         4467  +# ----------------------------
         4468  +# See if the linker supports building shared libraries.
         4469  +m4_defun([_LT_LINKER_SHLIBS],
         4470  +[AC_REQUIRE([LT_PATH_LD])dnl
         4471  +AC_REQUIRE([LT_PATH_NM])dnl
         4472  +m4_require([_LT_PATH_MANIFEST_TOOL])dnl
         4473  +m4_require([_LT_FILEUTILS_DEFAULTS])dnl
         4474  +m4_require([_LT_DECL_EGREP])dnl
         4475  +m4_require([_LT_DECL_SED])dnl
         4476  +m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl
         4477  +m4_require([_LT_TAG_COMPILER])dnl
         4478  +AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries])
         4479  +m4_if([$1], [CXX], [
         4480  +  _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
         4481  +  _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*']
         4482  +  case $host_os in
         4483  +  aix[[4-9]]*)
         4484  +    # If we're using GNU nm, then we don't want the "-C" option.
         4485  +    # -C means demangle to AIX nm, but means don't demangle with GNU nm
         4486  +    # Also, AIX nm treats weak defined symbols like other global defined
         4487  +    # symbols, whereas GNU nm marks them as "W".
         4488  +    if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then
         4489  +      _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'
         4490  +    else
         4491  +      _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'
         4492  +    fi
         4493  +    ;;
         4494  +  pw32*)
         4495  +    _LT_TAGVAR(export_symbols_cmds, $1)="$ltdll_cmds"
         4496  +    ;;
         4497  +  cygwin* | mingw* | cegcc*)
         4498  +    case $cc_basename in
         4499  +    cl*) ;;
         4500  +    *)
         4501  +      _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'
         4502  +      _LT_TAGVAR(exclude_expsyms, $1)=['[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname']
         4503  +      ;;
         4504  +    esac
         4505  +    ;;
         4506  +  *)
         4507  +    _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
         4508  +    ;;
         4509  +  esac
         4510  +], [
         4511  +  runpath_var=
         4512  +  _LT_TAGVAR(allow_undefined_flag, $1)=
         4513  +  _LT_TAGVAR(always_export_symbols, $1)=no
         4514  +  _LT_TAGVAR(archive_cmds, $1)=
         4515  +  _LT_TAGVAR(archive_expsym_cmds, $1)=
         4516  +  _LT_TAGVAR(compiler_needs_object, $1)=no
         4517  +  _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no
         4518  +  _LT_TAGVAR(export_dynamic_flag_spec, $1)=
         4519  +  _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
         4520  +  _LT_TAGVAR(hardcode_automatic, $1)=no
         4521  +  _LT_TAGVAR(hardcode_direct, $1)=no
         4522  +  _LT_TAGVAR(hardcode_direct_absolute, $1)=no
         4523  +  _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
         4524  +  _LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)=
         4525  +  _LT_TAGVAR(hardcode_libdir_separator, $1)=
         4526  +  _LT_TAGVAR(hardcode_minus_L, $1)=no
         4527  +  _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported
         4528  +  _LT_TAGVAR(inherit_rpath, $1)=no
         4529  +  _LT_TAGVAR(link_all_deplibs, $1)=unknown
         4530  +  _LT_TAGVAR(module_cmds, $1)=
         4531  +  _LT_TAGVAR(module_expsym_cmds, $1)=
         4532  +  _LT_TAGVAR(old_archive_from_new_cmds, $1)=
         4533  +  _LT_TAGVAR(old_archive_from_expsyms_cmds, $1)=
         4534  +  _LT_TAGVAR(thread_safe_flag_spec, $1)=
         4535  +  _LT_TAGVAR(whole_archive_flag_spec, $1)=
         4536  +  # include_expsyms should be a list of space-separated symbols to be *always*
         4537  +  # included in the symbol list
         4538  +  _LT_TAGVAR(include_expsyms, $1)=
         4539  +  # exclude_expsyms can be an extended regexp of symbols to exclude
         4540  +  # it will be wrapped by ` (' and `)$', so one must not match beginning or
         4541  +  # end of line.  Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc',
         4542  +  # as well as any symbol that contains `d'.
         4543  +  _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*']
         4544  +  # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out
         4545  +  # platforms (ab)use it in PIC code, but their linkers get confused if
         4546  +  # the symbol is explicitly referenced.  Since portable code cannot
         4547  +  # rely on this symbol name, it's probably fine to never include it in
         4548  +  # preloaded symbol tables.
         4549  +  # Exclude shared library initialization/finalization symbols.
         4550  +dnl Note also adjust exclude_expsyms for C++ above.
         4551  +  extract_expsyms_cmds=
         4552  +
         4553  +  case $host_os in
         4554  +  cygwin* | mingw* | pw32* | cegcc*)
         4555  +    # FIXME: the MSVC++ port hasn't been tested in a loooong time
         4556  +    # When not using gcc, we currently assume that we are using
         4557  +    # Microsoft Visual C++.
         4558  +    if test "$GCC" != yes; then
         4559  +      with_gnu_ld=no
         4560  +    fi
         4561  +    ;;
         4562  +  interix*)
         4563  +    # we just hope/assume this is gcc and not c89 (= MSVC++)
         4564  +    with_gnu_ld=yes
         4565  +    ;;
         4566  +  openbsd*)
         4567  +    with_gnu_ld=no
         4568  +    ;;
         4569  +  esac
         4570  +
         4571  +  _LT_TAGVAR(ld_shlibs, $1)=yes
         4572  +
         4573  +  # On some targets, GNU ld is compatible enough with the native linker
         4574  +  # that we're better off using the native interface for both.
         4575  +  lt_use_gnu_ld_interface=no
         4576  +  if test "$with_gnu_ld" = yes; then
         4577  +    case $host_os in
         4578  +      aix*)
         4579  +	# The AIX port of GNU ld has always aspired to compatibility
         4580  +	# with the native linker.  However, as the warning in the GNU ld
         4581  +	# block says, versions before 2.19.5* couldn't really create working
         4582  +	# shared libraries, regardless of the interface used.
         4583  +	case `$LD -v 2>&1` in
         4584  +	  *\ \(GNU\ Binutils\)\ 2.19.5*) ;;
         4585  +	  *\ \(GNU\ Binutils\)\ 2.[[2-9]]*) ;;
         4586  +	  *\ \(GNU\ Binutils\)\ [[3-9]]*) ;;
         4587  +	  *)
         4588  +	    lt_use_gnu_ld_interface=yes
         4589  +	    ;;
         4590  +	esac
         4591  +	;;
         4592  +      *)
         4593  +	lt_use_gnu_ld_interface=yes
         4594  +	;;
         4595  +    esac
         4596  +  fi
         4597  +
         4598  +  if test "$lt_use_gnu_ld_interface" = yes; then
         4599  +    # If archive_cmds runs LD, not CC, wlarc should be empty
         4600  +    wlarc='${wl}'
         4601  +
         4602  +    # Set some defaults for GNU ld with shared library support. These
         4603  +    # are reset later if shared libraries are not supported. Putting them
         4604  +    # here allows them to be overridden if necessary.
         4605  +    runpath_var=LD_RUN_PATH
         4606  +    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
         4607  +    _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
         4608  +    # ancient GNU ld didn't support --whole-archive et. al.
         4609  +    if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then
         4610  +      _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
         4611  +    else
         4612  +      _LT_TAGVAR(whole_archive_flag_spec, $1)=
         4613  +    fi
         4614  +    supports_anon_versioning=no
         4615  +    case `$LD -v 2>&1` in
         4616  +      *GNU\ gold*) supports_anon_versioning=yes ;;
         4617  +      *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.10.*) ;; # catch versions < 2.11
         4618  +      *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ...
         4619  +      *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ...
         4620  +      *\ 2.11.*) ;; # other 2.11 versions
         4621  +      *) supports_anon_versioning=yes ;;
         4622  +    esac
         4623  +
         4624  +    # See if GNU ld supports shared libraries.
         4625  +    case $host_os in
         4626  +    aix[[3-9]]*)
         4627  +      # On AIX/PPC, the GNU linker is very broken
         4628  +      if test "$host_cpu" != ia64; then
         4629  +	_LT_TAGVAR(ld_shlibs, $1)=no
         4630  +	cat <<_LT_EOF 1>&2
         4631  +
         4632  +*** Warning: the GNU linker, at least up to release 2.19, is reported
         4633  +*** to be unable to reliably create shared libraries on AIX.
         4634  +*** Therefore, libtool is disabling shared libraries support.  If you
         4635  +*** really care for shared libraries, you may want to install binutils
         4636  +*** 2.20 or above, or modify your PATH so that a non-GNU linker is found.
         4637  +*** You will then need to restart the configuration process.
         4638  +
         4639  +_LT_EOF
         4640  +      fi
         4641  +      ;;
         4642  +
         4643  +    amigaos*)
         4644  +      case $host_cpu in
         4645  +      powerpc)
         4646  +            # see comment about AmigaOS4 .so support
         4647  +            _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
         4648  +            _LT_TAGVAR(archive_expsym_cmds, $1)=''
         4649  +        ;;
         4650  +      m68k)
         4651  +            _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)'
         4652  +            _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
         4653  +            _LT_TAGVAR(hardcode_minus_L, $1)=yes
         4654  +        ;;
         4655  +      esac
         4656  +      ;;
         4657  +
         4658  +    beos*)
         4659  +      if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
         4660  +	_LT_TAGVAR(allow_undefined_flag, $1)=unsupported
         4661  +	# Joseph Beckenbach <jrb3@best.com> says some releases of gcc
         4662  +	# support --undefined.  This deserves some investigation.  FIXME
         4663  +	_LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
         4664  +      else
         4665  +	_LT_TAGVAR(ld_shlibs, $1)=no
         4666  +      fi
         4667  +      ;;
         4668  +
         4669  +    cygwin* | mingw* | pw32* | cegcc*)
         4670  +      # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless,
         4671  +      # as there is no search path for DLLs.
         4672  +      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
         4673  +      _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-all-symbols'
         4674  +      _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
         4675  +      _LT_TAGVAR(always_export_symbols, $1)=no
         4676  +      _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
         4677  +      _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'
         4678  +      _LT_TAGVAR(exclude_expsyms, $1)=['[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname']
         4679  +
         4680  +      if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then
         4681  +        _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'
         4682  +	# If the export-symbols file already is a .def file (1st line
         4683  +	# is EXPORTS), use it as is; otherwise, prepend...
         4684  +	_LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
         4685  +	  cp $export_symbols $output_objdir/$soname.def;
         4686  +	else
         4687  +	  echo EXPORTS > $output_objdir/$soname.def;
         4688  +	  cat $export_symbols >> $output_objdir/$soname.def;
         4689  +	fi~
         4690  +	$CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
         4691  +      else
         4692  +	_LT_TAGVAR(ld_shlibs, $1)=no
         4693  +      fi
         4694  +      ;;
         4695  +
         4696  +    haiku*)
         4697  +      _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
         4698  +      _LT_TAGVAR(link_all_deplibs, $1)=yes
         4699  +      ;;
         4700  +
         4701  +    interix[[3-9]]*)
         4702  +      _LT_TAGVAR(hardcode_direct, $1)=no
         4703  +      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
         4704  +      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
         4705  +      _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
         4706  +      # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc.
         4707  +      # Instead, shared libraries are loaded at an image base (0x10000000 by
         4708  +      # default) and relocated if they conflict, which is a slow very memory
         4709  +      # consuming and fragmenting process.  To avoid this, we pick a random,
         4710  +      # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link
         4711  +      # time.  Moving up from 0x10000000 also allows more sbrk(2) space.
         4712  +      _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'
         4713  +      _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'
         4714  +      ;;
         4715  +
         4716  +    gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu)
         4717  +      tmp_diet=no
         4718  +      if test "$host_os" = linux-dietlibc; then
         4719  +	case $cc_basename in
         4720  +	  diet\ *) tmp_diet=yes;;	# linux-dietlibc with static linking (!diet-dyn)
         4721  +	esac
         4722  +      fi
         4723  +      if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \
         4724  +	 && test "$tmp_diet" = no
         4725  +      then
         4726  +	tmp_addflag=' $pic_flag'
         4727  +	tmp_sharedflag='-shared'
         4728  +	case $cc_basename,$host_cpu in
         4729  +        pgcc*)				# Portland Group C compiler
         4730  +	  _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'
         4731  +	  tmp_addflag=' $pic_flag'
         4732  +	  ;;
         4733  +	pgf77* | pgf90* | pgf95* | pgfortran*)
         4734  +					# Portland Group f77 and f90 compilers
         4735  +	  _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'
         4736  +	  tmp_addflag=' $pic_flag -Mnomain' ;;
         4737  +	ecc*,ia64* | icc*,ia64*)	# Intel C compiler on ia64
         4738  +	  tmp_addflag=' -i_dynamic' ;;
         4739  +	efc*,ia64* | ifort*,ia64*)	# Intel Fortran compiler on ia64
         4740  +	  tmp_addflag=' -i_dynamic -nofor_main' ;;
         4741  +	ifc* | ifort*)			# Intel Fortran compiler
         4742  +	  tmp_addflag=' -nofor_main' ;;
         4743  +	lf95*)				# Lahey Fortran 8.1
         4744  +	  _LT_TAGVAR(whole_archive_flag_spec, $1)=
         4745  +	  tmp_sharedflag='--shared' ;;
         4746  +	xl[[cC]]* | bgxl[[cC]]* | mpixl[[cC]]*) # IBM XL C 8.0 on PPC (deal with xlf below)
         4747  +	  tmp_sharedflag='-qmkshrobj'
         4748  +	  tmp_addflag= ;;
         4749  +	nvcc*)	# Cuda Compiler Driver 2.2
         4750  +	  _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'
         4751  +	  _LT_TAGVAR(compiler_needs_object, $1)=yes
         4752  +	  ;;
         4753  +	esac
         4754  +	case `$CC -V 2>&1 | sed 5q` in
         4755  +	*Sun\ C*)			# Sun C 5.9
         4756  +	  _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'
         4757  +	  _LT_TAGVAR(compiler_needs_object, $1)=yes
         4758  +	  tmp_sharedflag='-G' ;;
         4759  +	*Sun\ F*)			# Sun Fortran 8.3
         4760  +	  tmp_sharedflag='-G' ;;
         4761  +	esac
         4762  +	_LT_TAGVAR(archive_cmds, $1)='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
         4763  +
         4764  +        if test "x$supports_anon_versioning" = xyes; then
         4765  +          _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~
         4766  +	    cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
         4767  +	    echo "local: *; };" >> $output_objdir/$libname.ver~
         4768  +	    $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
         4769  +        fi
         4770  +
         4771  +	case $cc_basename in
         4772  +	xlf* | bgf* | bgxlf* | mpixlf*)
         4773  +	  # IBM XL Fortran 10.1 on PPC cannot create shared libs itself
         4774  +	  _LT_TAGVAR(whole_archive_flag_spec, $1)='--whole-archive$convenience --no-whole-archive'
         4775  +	  _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
         4776  +	  _LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='-rpath $libdir'
         4777  +	  _LT_TAGVAR(archive_cmds, $1)='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib'
         4778  +	  if test "x$supports_anon_versioning" = xyes; then
         4779  +	    _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~
         4780  +	      cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
         4781  +	      echo "local: *; };" >> $output_objdir/$libname.ver~
         4782  +	      $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib'
         4783  +	  fi
         4784  +	  ;;
         4785  +	esac
         4786  +      else
         4787  +        _LT_TAGVAR(ld_shlibs, $1)=no
         4788  +      fi
         4789  +      ;;
         4790  +
         4791  +    netbsd*)
         4792  +      if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
         4793  +	_LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
         4794  +	wlarc=
         4795  +      else
         4796  +	_LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
         4797  +	_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'
         4798  +      fi
         4799  +      ;;
         4800  +
         4801  +    solaris*)
         4802  +      if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then
         4803  +	_LT_TAGVAR(ld_shlibs, $1)=no
         4804  +	cat <<_LT_EOF 1>&2
         4805  +
         4806  +*** Warning: The releases 2.8.* of the GNU linker cannot reliably
         4807  +*** create shared libraries on Solaris systems.  Therefore, libtool
         4808  +*** is disabling shared libraries support.  We urge you to upgrade GNU
         4809  +*** binutils to release 2.9.1 or newer.  Another option is to modify
         4810  +*** your PATH or compiler configuration so that the native linker is
         4811  +*** used, and then restart.
         4812  +
         4813  +_LT_EOF
         4814  +      elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
         4815  +	_LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
         4816  +	_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'
         4817  +      else
         4818  +	_LT_TAGVAR(ld_shlibs, $1)=no
         4819  +      fi
         4820  +      ;;
         4821  +
         4822  +    sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*)
         4823  +      case `$LD -v 2>&1` in
         4824  +        *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.1[[0-5]].*)
         4825  +	_LT_TAGVAR(ld_shlibs, $1)=no
         4826  +	cat <<_LT_EOF 1>&2
         4827  +
         4828  +*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not
         4829  +*** reliably create shared libraries on SCO systems.  Therefore, libtool
         4830  +*** is disabling shared libraries support.  We urge you to upgrade GNU
         4831  +*** binutils to release 2.16.91.0.3 or newer.  Another option is to modify
         4832  +*** your PATH or compiler configuration so that the native linker is
         4833  +*** used, and then restart.
         4834  +
         4835  +_LT_EOF
         4836  +	;;
         4837  +	*)
         4838  +	  # For security reasons, it is highly recommended that you always
         4839  +	  # use absolute paths for naming shared libraries, and exclude the
         4840  +	  # DT_RUNPATH tag from executables and libraries.  But doing so
         4841  +	  # requires that you compile everything twice, which is a pain.
         4842  +	  if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
         4843  +	    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
         4844  +	    _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
         4845  +	    _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'
         4846  +	  else
         4847  +	    _LT_TAGVAR(ld_shlibs, $1)=no
         4848  +	  fi
         4849  +	;;
         4850  +      esac
         4851  +      ;;
         4852  +
         4853  +    sunos4*)
         4854  +      _LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags'
         4855  +      wlarc=
         4856  +      _LT_TAGVAR(hardcode_direct, $1)=yes
         4857  +      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
         4858  +      ;;
         4859  +
         4860  +    *)
         4861  +      if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
         4862  +	_LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
         4863  +	_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'
         4864  +      else
         4865  +	_LT_TAGVAR(ld_shlibs, $1)=no
         4866  +      fi
         4867  +      ;;
         4868  +    esac
         4869  +
         4870  +    if test "$_LT_TAGVAR(ld_shlibs, $1)" = no; then
         4871  +      runpath_var=
         4872  +      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
         4873  +      _LT_TAGVAR(export_dynamic_flag_spec, $1)=
         4874  +      _LT_TAGVAR(whole_archive_flag_spec, $1)=
         4875  +    fi
         4876  +  else
         4877  +    # PORTME fill in a description of your system's linker (not GNU ld)
         4878  +    case $host_os in
         4879  +    aix3*)
         4880  +      _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
         4881  +      _LT_TAGVAR(always_export_symbols, $1)=yes
         4882  +      _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'
         4883  +      # Note: this linker hardcodes the directories in LIBPATH if there
         4884  +      # are no directories specified by -L.
         4885  +      _LT_TAGVAR(hardcode_minus_L, $1)=yes
         4886  +      if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then
         4887  +	# Neither direct hardcoding nor static linking is supported with a
         4888  +	# broken collect2.
         4889  +	_LT_TAGVAR(hardcode_direct, $1)=unsupported
         4890  +      fi
         4891  +      ;;
         4892  +
         4893  +    aix[[4-9]]*)
         4894  +      if test "$host_cpu" = ia64; then
         4895  +	# On IA64, the linker does run time linking by default, so we don't
         4896  +	# have to do anything special.
         4897  +	aix_use_runtimelinking=no
         4898  +	exp_sym_flag='-Bexport'
         4899  +	no_entry_flag=""
         4900  +      else
         4901  +	# If we're using GNU nm, then we don't want the "-C" option.
         4902  +	# -C means demangle to AIX nm, but means don't demangle with GNU nm
         4903  +	# Also, AIX nm treats weak defined symbols like other global
         4904  +	# defined symbols, whereas GNU nm marks them as "W".
         4905  +	if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then
         4906  +	  _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'
         4907  +	else
         4908  +	  _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'
         4909  +	fi
         4910  +	aix_use_runtimelinking=no
         4911  +
         4912  +	# Test if we are trying to use run time linking or normal
         4913  +	# AIX style linking. If -brtl is somewhere in LDFLAGS, we
         4914  +	# need to do runtime linking.
         4915  +	case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*)
         4916  +	  for ld_flag in $LDFLAGS; do
         4917  +	  if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then
         4918  +	    aix_use_runtimelinking=yes
         4919  +	    break
         4920  +	  fi
         4921  +	  done
         4922  +	  ;;
         4923  +	esac
         4924  +
         4925  +	exp_sym_flag='-bexport'
         4926  +	no_entry_flag='-bnoentry'
         4927  +      fi
         4928  +
         4929  +      # When large executables or shared objects are built, AIX ld can
         4930  +      # have problems creating the table of contents.  If linking a library
         4931  +      # or program results in "error TOC overflow" add -mminimal-toc to
         4932  +      # CXXFLAGS/CFLAGS for g++/gcc.  In the cases where that is not
         4933  +      # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
         4934  +
         4935  +      _LT_TAGVAR(archive_cmds, $1)=''
         4936  +      _LT_TAGVAR(hardcode_direct, $1)=yes
         4937  +      _LT_TAGVAR(hardcode_direct_absolute, $1)=yes
         4938  +      _LT_TAGVAR(hardcode_libdir_separator, $1)=':'
         4939  +      _LT_TAGVAR(link_all_deplibs, $1)=yes
         4940  +      _LT_TAGVAR(file_list_spec, $1)='${wl}-f,'
         4941  +
         4942  +      if test "$GCC" = yes; then
         4943  +	case $host_os in aix4.[[012]]|aix4.[[012]].*)
         4944  +	# We only want to do this on AIX 4.2 and lower, the check
         4945  +	# below for broken collect2 doesn't work under 4.3+
         4946  +	  collect2name=`${CC} -print-prog-name=collect2`
         4947  +	  if test -f "$collect2name" &&
         4948  +	   strings "$collect2name" | $GREP resolve_lib_name >/dev/null
         4949  +	  then
         4950  +	  # We have reworked collect2
         4951  +	  :
         4952  +	  else
         4953  +	  # We have old collect2
         4954  +	  _LT_TAGVAR(hardcode_direct, $1)=unsupported
         4955  +	  # It fails to find uninstalled libraries when the uninstalled
         4956  +	  # path is not listed in the libpath.  Setting hardcode_minus_L
         4957  +	  # to unsupported forces relinking
         4958  +	  _LT_TAGVAR(hardcode_minus_L, $1)=yes
         4959  +	  _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
         4960  +	  _LT_TAGVAR(hardcode_libdir_separator, $1)=
         4961  +	  fi
         4962  +	  ;;
         4963  +	esac
         4964  +	shared_flag='-shared'
         4965  +	if test "$aix_use_runtimelinking" = yes; then
         4966  +	  shared_flag="$shared_flag "'${wl}-G'
         4967  +	fi
         4968  +      else
         4969  +	# not using gcc
         4970  +	if test "$host_cpu" = ia64; then
         4971  +	# VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
         4972  +	# chokes on -Wl,-G. The following line is correct:
         4973  +	  shared_flag='-G'
         4974  +	else
         4975  +	  if test "$aix_use_runtimelinking" = yes; then
         4976  +	    shared_flag='${wl}-G'
         4977  +	  else
         4978  +	    shared_flag='${wl}-bM:SRE'
         4979  +	  fi
         4980  +	fi
         4981  +      fi
         4982  +
         4983  +      _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-bexpall'
         4984  +      # It seems that -bexpall does not export symbols beginning with
         4985  +      # underscore (_), so it is better to generate a list of symbols to export.
         4986  +      _LT_TAGVAR(always_export_symbols, $1)=yes
         4987  +      if test "$aix_use_runtimelinking" = yes; then
         4988  +	# Warning - without using the other runtime loading flags (-brtl),
         4989  +	# -berok will link without error, but may produce a broken library.
         4990  +	_LT_TAGVAR(allow_undefined_flag, $1)='-berok'
         4991  +        # Determine the default libpath from the value encoded in an
         4992  +        # empty executable.
         4993  +        _LT_SYS_MODULE_PATH_AIX([$1])
         4994  +        _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath"
         4995  +        _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"
         4996  +      else
         4997  +	if test "$host_cpu" = ia64; then
         4998  +	  _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib'
         4999  +	  _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs"
         5000  +	  _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"
         5001  +	else
         5002  +	 # Determine the default libpath from the value encoded in an
         5003  +	 # empty executable.
         5004  +	 _LT_SYS_MODULE_PATH_AIX([$1])
         5005  +	 _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath"
         5006  +	  # Warning - without using the other run time loading flags,
         5007  +	  # -berok will link without error, but may produce a broken library.
         5008  +	  _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok'
         5009  +	  _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok'
         5010  +	  if test "$with_gnu_ld" = yes; then
         5011  +	    # We only use this code for GNU lds that support --whole-archive.
         5012  +	    _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive'
         5013  +	  else
         5014  +	    # Exported symbols can be pulled into shared objects from archives
         5015  +	    _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience'
         5016  +	  fi
         5017  +	  _LT_TAGVAR(archive_cmds_need_lc, $1)=yes
         5018  +	  # This is similar to how AIX traditionally builds its shared libraries.
         5019  +	  _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'
         5020  +	fi
         5021  +      fi
         5022  +      ;;
         5023  +
         5024  +    amigaos*)
         5025  +      case $host_cpu in
         5026  +      powerpc)
         5027  +            # see comment about AmigaOS4 .so support
         5028  +            _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
         5029  +            _LT_TAGVAR(archive_expsym_cmds, $1)=''
         5030  +        ;;
         5031  +      m68k)
         5032  +            _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)'
         5033  +            _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
         5034  +            _LT_TAGVAR(hardcode_minus_L, $1)=yes
         5035  +        ;;
         5036  +      esac
         5037  +      ;;
         5038  +
         5039  +    bsdi[[45]]*)
         5040  +      _LT_TAGVAR(export_dynamic_flag_spec, $1)=-rdynamic
         5041  +      ;;
         5042  +
         5043  +    cygwin* | mingw* | pw32* | cegcc*)
         5044  +      # When not using gcc, we currently assume that we are using
         5045  +      # Microsoft Visual C++.
         5046  +      # hardcode_libdir_flag_spec is actually meaningless, as there is
         5047  +      # no search path for DLLs.
         5048  +      case $cc_basename in
         5049  +      cl*)
         5050  +	# Native MSVC
         5051  +	_LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' '
         5052  +	_LT_TAGVAR(allow_undefined_flag, $1)=unsupported
         5053  +	_LT_TAGVAR(always_export_symbols, $1)=yes
         5054  +	_LT_TAGVAR(file_list_spec, $1)='@'
         5055  +	# Tell ltmain to make .lib files, not .a files.
         5056  +	libext=lib
         5057  +	# Tell ltmain to make .dll files, not .so files.
         5058  +	shrext_cmds=".dll"
         5059  +	# FIXME: Setting linknames here is a bad hack.
         5060  +	_LT_TAGVAR(archive_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames='
         5061  +	_LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
         5062  +	    sed -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp;
         5063  +	  else
         5064  +	    sed -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp;
         5065  +	  fi~
         5066  +	  $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~
         5067  +	  linknames='
         5068  +	# The linker will not automatically build a static lib if we build a DLL.
         5069  +	# _LT_TAGVAR(old_archive_from_new_cmds, $1)='true'
         5070  +	_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
         5071  +	_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'
         5072  +	# Don't use ranlib
         5073  +	_LT_TAGVAR(old_postinstall_cmds, $1)='chmod 644 $oldlib'
         5074  +	_LT_TAGVAR(postlink_cmds, $1)='lt_outputfile="@OUTPUT@"~
         5075  +	  lt_tool_outputfile="@TOOL_OUTPUT@"~
         5076  +	  case $lt_outputfile in
         5077  +	    *.exe|*.EXE) ;;
         5078  +	    *)
         5079  +	      lt_outputfile="$lt_outputfile.exe"
         5080  +	      lt_tool_outputfile="$lt_tool_outputfile.exe"
         5081  +	      ;;
         5082  +	  esac~
         5083  +	  if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then
         5084  +	    $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1;
         5085  +	    $RM "$lt_outputfile.manifest";
         5086  +	  fi'
         5087  +	;;
         5088  +      *)
         5089  +	# Assume MSVC wrapper
         5090  +	_LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' '
         5091  +	_LT_TAGVAR(allow_undefined_flag, $1)=unsupported
         5092  +	# Tell ltmain to make .lib files, not .a files.
         5093  +	libext=lib
         5094  +	# Tell ltmain to make .dll files, not .so files.
         5095  +	shrext_cmds=".dll"
         5096  +	# FIXME: Setting linknames here is a bad hack.
         5097  +	_LT_TAGVAR(archive_cmds, $1)='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames='
         5098  +	# The linker will automatically build a .lib file if we build a DLL.
         5099  +	_LT_TAGVAR(old_archive_from_new_cmds, $1)='true'
         5100  +	# FIXME: Should let the user specify the lib program.
         5101  +	_LT_TAGVAR(old_archive_cmds, $1)='lib -OUT:$oldlib$oldobjs$old_deplibs'
         5102  +	_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
         5103  +	;;
         5104  +      esac
         5105  +      ;;
         5106  +
         5107  +    darwin* | rhapsody*)
         5108  +      _LT_DARWIN_LINKER_FEATURES($1)
         5109  +      ;;
         5110  +
         5111  +    dgux*)
         5112  +      _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
         5113  +      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
         5114  +      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
         5115  +      ;;
         5116  +
         5117  +    freebsd1*)
         5118  +      _LT_TAGVAR(ld_shlibs, $1)=no
         5119  +      ;;
         5120  +
         5121  +    # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor
         5122  +    # support.  Future versions do this automatically, but an explicit c++rt0.o
         5123  +    # does not break anything, and helps significantly (at the cost of a little
         5124  +    # extra space).
         5125  +    freebsd2.2*)
         5126  +      _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o'
         5127  +      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
         5128  +      _LT_TAGVAR(hardcode_direct, $1)=yes
         5129  +      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
         5130  +      ;;
         5131  +
         5132  +    # Unfortunately, older versions of FreeBSD 2 do not have this feature.
         5133  +    freebsd2*)
         5134  +      _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
         5135  +      _LT_TAGVAR(hardcode_direct, $1)=yes
         5136  +      _LT_TAGVAR(hardcode_minus_L, $1)=yes
         5137  +      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
         5138  +      ;;
         5139  +
         5140  +    # FreeBSD 3 and greater uses gcc -shared to do shared libraries.
         5141  +    freebsd* | dragonfly*)
         5142  +      _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
         5143  +      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
         5144  +      _LT_TAGVAR(hardcode_direct, $1)=yes
         5145  +      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
         5146  +      ;;
         5147  +
         5148  +    hpux9*)
         5149  +      if test "$GCC" = yes; then
         5150  +	_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'
         5151  +      else
         5152  +	_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'
         5153  +      fi
         5154  +      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
         5155  +      _LT_TAGVAR(hardcode_libdir_separator, $1)=:
         5156  +      _LT_TAGVAR(hardcode_direct, $1)=yes
         5157  +
         5158  +      # hardcode_minus_L: Not really in the search PATH,
         5159  +      # but as the default location of the library.
         5160  +      _LT_TAGVAR(hardcode_minus_L, $1)=yes
         5161  +      _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
         5162  +      ;;
         5163  +
         5164  +    hpux10*)
         5165  +      if test "$GCC" = yes && test "$with_gnu_ld" = no; then
         5166  +	_LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
         5167  +      else
         5168  +	_LT_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
         5169  +      fi
         5170  +      if test "$with_gnu_ld" = no; then
         5171  +	_LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
         5172  +	_LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='+b $libdir'
         5173  +	_LT_TAGVAR(hardcode_libdir_separator, $1)=:
         5174  +	_LT_TAGVAR(hardcode_direct, $1)=yes
         5175  +	_LT_TAGVAR(hardcode_direct_absolute, $1)=yes
         5176  +	_LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
         5177  +	# hardcode_minus_L: Not really in the search PATH,
         5178  +	# but as the default location of the library.
         5179  +	_LT_TAGVAR(hardcode_minus_L, $1)=yes
         5180  +      fi
         5181  +      ;;
         5182  +
         5183  +    hpux11*)
         5184  +      if test "$GCC" = yes && test "$with_gnu_ld" = no; then
         5185  +	case $host_cpu in
         5186  +	hppa*64*)
         5187  +	  _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
         5188  +	  ;;
         5189  +	ia64*)
         5190  +	  _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
         5191  +	  ;;
         5192  +	*)
         5193  +	  _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
         5194  +	  ;;
         5195  +	esac
         5196  +      else
         5197  +	case $host_cpu in
         5198  +	hppa*64*)
         5199  +	  _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
         5200  +	  ;;
         5201  +	ia64*)
         5202  +	  _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
         5203  +	  ;;
         5204  +	*)
         5205  +	m4_if($1, [], [
         5206  +	  # Older versions of the 11.00 compiler do not understand -b yet
         5207  +	  # (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does)
         5208  +	  _LT_LINKER_OPTION([if $CC understands -b],
         5209  +	    _LT_TAGVAR(lt_cv_prog_compiler__b, $1), [-b],
         5210  +	    [_LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'],
         5211  +	    [_LT_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'])],
         5212  +	  [_LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'])
         5213  +	  ;;
         5214  +	esac
         5215  +      fi
         5216  +      if test "$with_gnu_ld" = no; then
         5217  +	_LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
         5218  +	_LT_TAGVAR(hardcode_libdir_separator, $1)=:
         5219  +
         5220  +	case $host_cpu in
         5221  +	hppa*64*|ia64*)
         5222  +	  _LT_TAGVAR(hardcode_direct, $1)=no
         5223  +	  _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
         5224  +	  ;;
         5225  +	*)
         5226  +	  _LT_TAGVAR(hardcode_direct, $1)=yes
         5227  +	  _LT_TAGVAR(hardcode_direct_absolute, $1)=yes
         5228  +	  _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
         5229  +
         5230  +	  # hardcode_minus_L: Not really in the search PATH,
         5231  +	  # but as the default location of the library.
         5232  +	  _LT_TAGVAR(hardcode_minus_L, $1)=yes
         5233  +	  ;;
         5234  +	esac
         5235  +      fi
         5236  +      ;;
         5237  +
         5238  +    irix5* | irix6* | nonstopux*)
         5239  +      if test "$GCC" = yes; then
         5240  +	_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'
         5241  +	# Try to use the -exported_symbol ld option, if it does not
         5242  +	# work, assume that -exports_file does not work either and
         5243  +	# implicitly export all symbols.
         5244  +	# This should be the same for all languages, so no per-tag cache variable.
         5245  +	AC_CACHE_CHECK([whether the $host_os linker accepts -exported_symbol],
         5246  +	  [lt_cv_irix_exported_symbol],
         5247  +	  [save_LDFLAGS="$LDFLAGS"
         5248  +	   LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null"
         5249  +	   AC_LINK_IFELSE(
         5250  +	     [AC_LANG_SOURCE(
         5251  +	        [AC_LANG_CASE([C], [[int foo (void) { return 0; }]],
         5252  +			      [C++], [[int foo (void) { return 0; }]],
         5253  +			      [Fortran 77], [[
         5254  +      subroutine foo
         5255  +      end]],
         5256  +			      [Fortran], [[
         5257  +      subroutine foo
         5258  +      end]])])],
         5259  +	      [lt_cv_irix_exported_symbol=yes],
         5260  +	      [lt_cv_irix_exported_symbol=no])
         5261  +           LDFLAGS="$save_LDFLAGS"])
         5262  +	if test "$lt_cv_irix_exported_symbol" = yes; then
         5263  +          _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'
         5264  +	fi
         5265  +      else
         5266  +	_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'
         5267  +	_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'
         5268  +      fi
         5269  +      _LT_TAGVAR(archive_cmds_need_lc, $1)='no'
         5270  +      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
         5271  +      _LT_TAGVAR(hardcode_libdir_separator, $1)=:
         5272  +      _LT_TAGVAR(inherit_rpath, $1)=yes
         5273  +      _LT_TAGVAR(link_all_deplibs, $1)=yes
         5274  +      ;;
         5275  +
         5276  +    netbsd*)
         5277  +      if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
         5278  +	_LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'  # a.out
         5279  +      else
         5280  +	_LT_TAGVAR(archive_cmds, $1)='$LD -shared -o $lib $libobjs $deplibs $linker_flags'      # ELF
         5281  +      fi
         5282  +      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
         5283  +      _LT_TAGVAR(hardcode_direct, $1)=yes
         5284  +      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
         5285  +      ;;
         5286  +
         5287  +    newsos6)
         5288  +      _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
         5289  +      _LT_TAGVAR(hardcode_direct, $1)=yes
         5290  +      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
         5291  +      _LT_TAGVAR(hardcode_libdir_separator, $1)=:
         5292  +      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
         5293  +      ;;
         5294  +
         5295  +    *nto* | *qnx*)
         5296  +      ;;
         5297  +
         5298  +    openbsd*)
         5299  +      if test -f /usr/libexec/ld.so; then
         5300  +	_LT_TAGVAR(hardcode_direct, $1)=yes
         5301  +	_LT_TAGVAR(hardcode_shlibpath_var, $1)=no
         5302  +	_LT_TAGVAR(hardcode_direct_absolute, $1)=yes
         5303  +	if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
         5304  +	  _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
         5305  +	  _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols'
         5306  +	  _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
         5307  +	  _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
         5308  +	else
         5309  +	  case $host_os in
         5310  +	   openbsd[[01]].* | openbsd2.[[0-7]] | openbsd2.[[0-7]].*)
         5311  +	     _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
         5312  +	     _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
         5313  +	     ;;
         5314  +	   *)
         5315  +	     _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
         5316  +	     _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
         5317  +	     ;;
         5318  +	  esac
         5319  +	fi
         5320  +      else
         5321  +	_LT_TAGVAR(ld_shlibs, $1)=no
         5322  +      fi
         5323  +      ;;
         5324  +
         5325  +    os2*)
         5326  +      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
         5327  +      _LT_TAGVAR(hardcode_minus_L, $1)=yes
         5328  +      _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
         5329  +      _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'
         5330  +      _LT_TAGVAR(old_archive_from_new_cmds, $1)='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def'
         5331  +      ;;
         5332  +
         5333  +    osf3*)
         5334  +      if test "$GCC" = yes; then
         5335  +	_LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
         5336  +	_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'
         5337  +      else
         5338  +	_LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*'
         5339  +	_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'
         5340  +      fi
         5341  +      _LT_TAGVAR(archive_cmds_need_lc, $1)='no'
         5342  +      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
         5343  +      _LT_TAGVAR(hardcode_libdir_separator, $1)=:
         5344  +      ;;
         5345  +
         5346  +    osf4* | osf5*)	# as osf3* with the addition of -msym flag
         5347  +      if test "$GCC" = yes; then
         5348  +	_LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
         5349  +	_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'
         5350  +	_LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
         5351  +      else
         5352  +	_LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*'
         5353  +	_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'
         5354  +	_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~
         5355  +	$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'
         5356  +
         5357  +	# Both c and cxx compiler support -rpath directly
         5358  +	_LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir'
         5359  +      fi
         5360  +      _LT_TAGVAR(archive_cmds_need_lc, $1)='no'
         5361  +      _LT_TAGVAR(hardcode_libdir_separator, $1)=:
         5362  +      ;;
         5363  +
         5364  +    solaris*)
         5365  +      _LT_TAGVAR(no_undefined_flag, $1)=' -z defs'
         5366  +      if test "$GCC" = yes; then
         5367  +	wlarc='${wl}'
         5368  +	_LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
         5369  +	_LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
         5370  +	  $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'
         5371  +      else
         5372  +	case `$CC -V 2>&1` in
         5373  +	*"Compilers 5.0"*)
         5374  +	  wlarc=''
         5375  +	  _LT_TAGVAR(archive_cmds, $1)='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
         5376  +	  _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
         5377  +	  $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp'
         5378  +	  ;;
         5379  +	*)
         5380  +	  wlarc='${wl}'
         5381  +	  _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $compiler_flags'
         5382  +	  _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
         5383  +	  $CC -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
         5384  +	  ;;
         5385  +	esac
         5386  +      fi
         5387  +      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
         5388  +      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
         5389  +      case $host_os in
         5390  +      solaris2.[[0-5]] | solaris2.[[0-5]].*) ;;
         5391  +      *)
         5392  +	# The compiler driver will combine and reorder linker options,
         5393  +	# but understands `-z linker_flag'.  GCC discards it without `$wl',
         5394  +	# but is careful enough not to reorder.
         5395  +	# Supported since Solaris 2.6 (maybe 2.5.1?)
         5396  +	if test "$GCC" = yes; then
         5397  +	  _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract'
         5398  +	else
         5399  +	  _LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract'
         5400  +	fi
         5401  +	;;
         5402  +      esac
         5403  +      _LT_TAGVAR(link_all_deplibs, $1)=yes
         5404  +      ;;
         5405  +
         5406  +    sunos4*)
         5407  +      if test "x$host_vendor" = xsequent; then
         5408  +	# Use $CC to link under sequent, because it throws in some extra .o
         5409  +	# files that make .init and .fini sections work.
         5410  +	_LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags'
         5411  +      else
         5412  +	_LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags'
         5413  +      fi
         5414  +      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
         5415  +      _LT_TAGVAR(hardcode_direct, $1)=yes
         5416  +      _LT_TAGVAR(hardcode_minus_L, $1)=yes
         5417  +      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
         5418  +      ;;
         5419  +
         5420  +    sysv4)
         5421  +      case $host_vendor in
         5422  +	sni)
         5423  +	  _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
         5424  +	  _LT_TAGVAR(hardcode_direct, $1)=yes # is this really true???
         5425  +	;;
         5426  +	siemens)
         5427  +	  ## LD is ld it makes a PLAMLIB
         5428  +	  ## CC just makes a GrossModule.
         5429  +	  _LT_TAGVAR(archive_cmds, $1)='$LD -G -o $lib $libobjs $deplibs $linker_flags'
         5430  +	  _LT_TAGVAR(reload_cmds, $1)='$CC -r -o $output$reload_objs'
         5431  +	  _LT_TAGVAR(hardcode_direct, $1)=no
         5432  +        ;;
         5433  +	motorola)
         5434  +	  _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
         5435  +	  _LT_TAGVAR(hardcode_direct, $1)=no #Motorola manual says yes, but my tests say they lie
         5436  +	;;
         5437  +      esac
         5438  +      runpath_var='LD_RUN_PATH'
         5439  +      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
         5440  +      ;;
         5441  +
         5442  +    sysv4.3*)
         5443  +      _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
         5444  +      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
         5445  +      _LT_TAGVAR(export_dynamic_flag_spec, $1)='-Bexport'
         5446  +      ;;
         5447  +
         5448  +    sysv4*MP*)
         5449  +      if test -d /usr/nec; then
         5450  +	_LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
         5451  +	_LT_TAGVAR(hardcode_shlibpath_var, $1)=no
         5452  +	runpath_var=LD_RUN_PATH
         5453  +	hardcode_runpath_var=yes
         5454  +	_LT_TAGVAR(ld_shlibs, $1)=yes
         5455  +      fi
         5456  +      ;;
         5457  +
         5458  +    sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*)
         5459  +      _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text'
         5460  +      _LT_TAGVAR(archive_cmds_need_lc, $1)=no
         5461  +      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
         5462  +      runpath_var='LD_RUN_PATH'
         5463  +
         5464  +      if test "$GCC" = yes; then
         5465  +	_LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
         5466  +	_LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
         5467  +      else
         5468  +	_LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
         5469  +	_LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
         5470  +      fi
         5471  +      ;;
         5472  +
         5473  +    sysv5* | sco3.2v5* | sco5v6*)
         5474  +      # Note: We can NOT use -z defs as we might desire, because we do not
         5475  +      # link with -lc, and that would cause any symbols used from libc to
         5476  +      # always be unresolved, which means just about no library would
         5477  +      # ever link correctly.  If we're not using GNU ld we use -z text
         5478  +      # though, which does catch some bad symbols but isn't as heavy-handed
         5479  +      # as -z defs.
         5480  +      _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text'
         5481  +      _LT_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs'
         5482  +      _LT_TAGVAR(archive_cmds_need_lc, $1)=no
         5483  +      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
         5484  +      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R,$libdir'
         5485  +      _LT_TAGVAR(hardcode_libdir_separator, $1)=':'
         5486  +      _LT_TAGVAR(link_all_deplibs, $1)=yes
         5487  +      _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport'
         5488  +      runpath_var='LD_RUN_PATH'
         5489  +
         5490  +      if test "$GCC" = yes; then
         5491  +	_LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
         5492  +	_LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
         5493  +      else
         5494  +	_LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
         5495  +	_LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
         5496  +      fi
         5497  +      ;;
         5498  +
         5499  +    uts4*)
         5500  +      _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
         5501  +      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
         5502  +      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
         5503  +      ;;
         5504  +
         5505  +    *)
         5506  +      _LT_TAGVAR(ld_shlibs, $1)=no
         5507  +      ;;
         5508  +    esac
         5509  +
         5510  +    if test x$host_vendor = xsni; then
         5511  +      case $host in
         5512  +      sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
         5513  +	_LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Blargedynsym'
         5514  +	;;
         5515  +      esac
         5516  +    fi
         5517  +  fi
         5518  +])
         5519  +AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)])
         5520  +test "$_LT_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no
         5521  +
         5522  +_LT_TAGVAR(with_gnu_ld, $1)=$with_gnu_ld
         5523  +
         5524  +_LT_DECL([], [libext], [0], [Old archive suffix (normally "a")])dnl
         5525  +_LT_DECL([], [shrext_cmds], [1], [Shared library suffix (normally ".so")])dnl
         5526  +_LT_DECL([], [extract_expsyms_cmds], [2],
         5527  +    [The commands to extract the exported symbol list from a shared archive])
         5528  +
         5529  +#
         5530  +# Do we need to explicitly link libc?
         5531  +#
         5532  +case "x$_LT_TAGVAR(archive_cmds_need_lc, $1)" in
         5533  +x|xyes)
         5534  +  # Assume -lc should be added
         5535  +  _LT_TAGVAR(archive_cmds_need_lc, $1)=yes
         5536  +
         5537  +  if test "$enable_shared" = yes && test "$GCC" = yes; then
         5538  +    case $_LT_TAGVAR(archive_cmds, $1) in
         5539  +    *'~'*)
         5540  +      # FIXME: we may have to deal with multi-command sequences.
         5541  +      ;;
         5542  +    '$CC '*)
         5543  +      # Test whether the compiler implicitly links with -lc since on some
         5544  +      # systems, -lgcc has to come before -lc. If gcc already passes -lc
         5545  +      # to ld, don't add -lc before -lgcc.
         5546  +      AC_CACHE_CHECK([whether -lc should be explicitly linked in],
         5547  +	[lt_cv_]_LT_TAGVAR(archive_cmds_need_lc, $1),
         5548  +	[$RM conftest*
         5549  +	echo "$lt_simple_compile_test_code" > conftest.$ac_ext
         5550  +
         5551  +	if AC_TRY_EVAL(ac_compile) 2>conftest.err; then
         5552  +	  soname=conftest
         5553  +	  lib=conftest
         5554  +	  libobjs=conftest.$ac_objext
         5555  +	  deplibs=
         5556  +	  wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1)
         5557  +	  pic_flag=$_LT_TAGVAR(lt_prog_compiler_pic, $1)
         5558  +	  compiler_flags=-v
         5559  +	  linker_flags=-v
         5560  +	  verstring=
         5561  +	  output_objdir=.
         5562  +	  libname=conftest
         5563  +	  lt_save_allow_undefined_flag=$_LT_TAGVAR(allow_undefined_flag, $1)
         5564  +	  _LT_TAGVAR(allow_undefined_flag, $1)=
         5565  +	  if AC_TRY_EVAL(_LT_TAGVAR(archive_cmds, $1) 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1)
         5566  +	  then
         5567  +	    lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1)=no
         5568  +	  else
         5569  +	    lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1)=yes
         5570  +	  fi
         5571  +	  _LT_TAGVAR(allow_undefined_flag, $1)=$lt_save_allow_undefined_flag
         5572  +	else
         5573  +	  cat conftest.err 1>&5
         5574  +	fi
         5575  +	$RM conftest*
         5576  +	])
         5577  +      _LT_TAGVAR(archive_cmds_need_lc, $1)=$lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1)
         5578  +      ;;
         5579  +    esac
         5580  +  fi
         5581  +  ;;
         5582  +esac
         5583  +
         5584  +_LT_TAGDECL([build_libtool_need_lc], [archive_cmds_need_lc], [0],
         5585  +    [Whether or not to add -lc for building shared libraries])
         5586  +_LT_TAGDECL([allow_libtool_libs_with_static_runtimes],
         5587  +    [enable_shared_with_static_runtimes], [0],
         5588  +    [Whether or not to disallow shared libs when runtime libs are static])
         5589  +_LT_TAGDECL([], [export_dynamic_flag_spec], [1],
         5590  +    [Compiler flag to allow reflexive dlopens])
         5591  +_LT_TAGDECL([], [whole_archive_flag_spec], [1],
         5592  +    [Compiler flag to generate shared objects directly from archives])
         5593  +_LT_TAGDECL([], [compiler_needs_object], [1],
         5594  +    [Whether the compiler copes with passing no objects directly])
         5595  +_LT_TAGDECL([], [old_archive_from_new_cmds], [2],
         5596  +    [Create an old-style archive from a shared archive])
         5597  +_LT_TAGDECL([], [old_archive_from_expsyms_cmds], [2],
         5598  +    [Create a temporary old-style archive to link instead of a shared archive])
         5599  +_LT_TAGDECL([], [archive_cmds], [2], [Commands used to build a shared archive])
         5600  +_LT_TAGDECL([], [archive_expsym_cmds], [2])
         5601  +_LT_TAGDECL([], [module_cmds], [2],
         5602  +    [Commands used to build a loadable module if different from building
         5603  +    a shared archive.])
         5604  +_LT_TAGDECL([], [module_expsym_cmds], [2])
         5605  +_LT_TAGDECL([], [with_gnu_ld], [1],
         5606  +    [Whether we are building with GNU ld or not])
         5607  +_LT_TAGDECL([], [allow_undefined_flag], [1],
         5608  +    [Flag that allows shared libraries with undefined symbols to be built])
         5609  +_LT_TAGDECL([], [no_undefined_flag], [1],
         5610  +    [Flag that enforces no undefined symbols])
         5611  +_LT_TAGDECL([], [hardcode_libdir_flag_spec], [1],
         5612  +    [Flag to hardcode $libdir into a binary during linking.
         5613  +    This must work even if $libdir does not exist])
         5614  +_LT_TAGDECL([], [hardcode_libdir_flag_spec_ld], [1],
         5615  +    [[If ld is used when linking, flag to hardcode $libdir into a binary
         5616  +    during linking.  This must work even if $libdir does not exist]])
         5617  +_LT_TAGDECL([], [hardcode_libdir_separator], [1],
         5618  +    [Whether we need a single "-rpath" flag with a separated argument])
         5619  +_LT_TAGDECL([], [hardcode_direct], [0],
         5620  +    [Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes
         5621  +    DIR into the resulting binary])
         5622  +_LT_TAGDECL([], [hardcode_direct_absolute], [0],
         5623  +    [Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes
         5624  +    DIR into the resulting binary and the resulting library dependency is
         5625  +    "absolute", i.e impossible to change by setting ${shlibpath_var} if the
         5626  +    library is relocated])
         5627  +_LT_TAGDECL([], [hardcode_minus_L], [0],
         5628  +    [Set to "yes" if using the -LDIR flag during linking hardcodes DIR
         5629  +    into the resulting binary])
         5630  +_LT_TAGDECL([], [hardcode_shlibpath_var], [0],
         5631  +    [Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR
         5632  +    into the resulting binary])
         5633  +_LT_TAGDECL([], [hardcode_automatic], [0],
         5634  +    [Set to "yes" if building a shared library automatically hardcodes DIR
         5635  +    into the library and all subsequent libraries and executables linked
         5636  +    against it])
         5637  +_LT_TAGDECL([], [inherit_rpath], [0],
         5638  +    [Set to yes if linker adds runtime paths of dependent libraries
         5639  +    to runtime path list])
         5640  +_LT_TAGDECL([], [link_all_deplibs], [0],
         5641  +    [Whether libtool must link a program against all its dependency libraries])
         5642  +_LT_TAGDECL([], [always_export_symbols], [0],
         5643  +    [Set to "yes" if exported symbols are required])
         5644  +_LT_TAGDECL([], [export_symbols_cmds], [2],
         5645  +    [The commands to list exported symbols])
         5646  +_LT_TAGDECL([], [exclude_expsyms], [1],
         5647  +    [Symbols that should not be listed in the preloaded symbols])
         5648  +_LT_TAGDECL([], [include_expsyms], [1],
         5649  +    [Symbols that must always be exported])
         5650  +_LT_TAGDECL([], [prelink_cmds], [2],
         5651  +    [Commands necessary for linking programs (against libraries) with templates])
         5652  +_LT_TAGDECL([], [postlink_cmds], [2],
         5653  +    [Commands necessary for finishing linking programs])
         5654  +_LT_TAGDECL([], [file_list_spec], [1],
         5655  +    [Specify filename containing input files])
         5656  +dnl FIXME: Not yet implemented
         5657  +dnl _LT_TAGDECL([], [thread_safe_flag_spec], [1],
         5658  +dnl    [Compiler flag to generate thread safe objects])
         5659  +])# _LT_LINKER_SHLIBS
         5660  +
         5661  +
         5662  +# _LT_LANG_C_CONFIG([TAG])
         5663  +# ------------------------
         5664  +# Ensure that the configuration variables for a C compiler are suitably
         5665  +# defined.  These variables are subsequently used by _LT_CONFIG to write
         5666  +# the compiler configuration to `libtool'.
         5667  +m4_defun([_LT_LANG_C_CONFIG],
         5668  +[m4_require([_LT_DECL_EGREP])dnl
         5669  +lt_save_CC="$CC"
         5670  +AC_LANG_PUSH(C)
         5671  +
         5672  +# Source file extension for C test sources.
         5673  +ac_ext=c
         5674  +
         5675  +# Object file extension for compiled C test sources.
         5676  +objext=o
         5677  +_LT_TAGVAR(objext, $1)=$objext
         5678  +
         5679  +# Code to be used in simple compile tests
         5680  +lt_simple_compile_test_code="int some_variable = 0;"
         5681  +
         5682  +# Code to be used in simple link tests
         5683  +lt_simple_link_test_code='int main(){return(0);}'
         5684  +
         5685  +_LT_TAG_COMPILER
         5686  +# Save the default compiler, since it gets overwritten when the other
         5687  +# tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP.
         5688  +compiler_DEFAULT=$CC
         5689  +
         5690  +# save warnings/boilerplate of simple test code
         5691  +_LT_COMPILER_BOILERPLATE
         5692  +_LT_LINKER_BOILERPLATE
         5693  +
         5694  +## CAVEAT EMPTOR:
         5695  +## There is no encapsulation within the following macros, do not change
         5696  +## the running order or otherwise move them around unless you know exactly
         5697  +## what you are doing...
         5698  +if test -n "$compiler"; then
         5699  +  _LT_COMPILER_NO_RTTI($1)
         5700  +  _LT_COMPILER_PIC($1)
         5701  +  _LT_COMPILER_C_O($1)
         5702  +  _LT_COMPILER_FILE_LOCKS($1)
         5703  +  _LT_LINKER_SHLIBS($1)
         5704  +  _LT_SYS_DYNAMIC_LINKER($1)
         5705  +  _LT_LINKER_HARDCODE_LIBPATH($1)
         5706  +  LT_SYS_DLOPEN_SELF
         5707  +  _LT_CMD_STRIPLIB
         5708  +
         5709  +  # Report which library types will actually be built
         5710  +  AC_MSG_CHECKING([if libtool supports shared libraries])
         5711  +  AC_MSG_RESULT([$can_build_shared])
         5712  +
         5713  +  AC_MSG_CHECKING([whether to build shared libraries])
         5714  +  test "$can_build_shared" = "no" && enable_shared=no
         5715  +
         5716  +  # On AIX, shared libraries and static libraries use the same namespace, and
         5717  +  # are all built from PIC.
         5718  +  case $host_os in
         5719  +  aix3*)
         5720  +    test "$enable_shared" = yes && enable_static=no
         5721  +    if test -n "$RANLIB"; then
         5722  +      archive_cmds="$archive_cmds~\$RANLIB \$lib"
         5723  +      postinstall_cmds='$RANLIB $lib'
         5724  +    fi
         5725  +    ;;
         5726  +
         5727  +  aix[[4-9]]*)
         5728  +    if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then
         5729  +      test "$enable_shared" = yes && enable_static=no
         5730  +    fi
         5731  +    ;;
         5732  +  esac
         5733  +  AC_MSG_RESULT([$enable_shared])
         5734  +
         5735  +  AC_MSG_CHECKING([whether to build static libraries])
         5736  +  # Make sure either enable_shared or enable_static is yes.
         5737  +  test "$enable_shared" = yes || enable_static=yes
         5738  +  AC_MSG_RESULT([$enable_static])
         5739  +
         5740  +  _LT_CONFIG($1)
         5741  +fi
         5742  +AC_LANG_POP
         5743  +CC="$lt_save_CC"
         5744  +])# _LT_LANG_C_CONFIG
         5745  +
         5746  +
         5747  +# _LT_LANG_CXX_CONFIG([TAG])
         5748  +# --------------------------
         5749  +# Ensure that the configuration variables for a C++ compiler are suitably
         5750  +# defined.  These variables are subsequently used by _LT_CONFIG to write
         5751  +# the compiler configuration to `libtool'.
         5752  +m4_defun([_LT_LANG_CXX_CONFIG],
         5753  +[m4_require([_LT_FILEUTILS_DEFAULTS])dnl
         5754  +m4_require([_LT_DECL_EGREP])dnl
         5755  +m4_require([_LT_PATH_MANIFEST_TOOL])dnl
         5756  +if test -n "$CXX" && ( test "X$CXX" != "Xno" &&
         5757  +    ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) ||
         5758  +    (test "X$CXX" != "Xg++"))) ; then
         5759  +  AC_PROG_CXXCPP
         5760  +else
         5761  +  _lt_caught_CXX_error=yes
         5762  +fi
         5763  +
         5764  +AC_LANG_PUSH(C++)
         5765  +_LT_TAGVAR(archive_cmds_need_lc, $1)=no
         5766  +_LT_TAGVAR(allow_undefined_flag, $1)=
         5767  +_LT_TAGVAR(always_export_symbols, $1)=no
         5768  +_LT_TAGVAR(archive_expsym_cmds, $1)=
         5769  +_LT_TAGVAR(compiler_needs_object, $1)=no
         5770  +_LT_TAGVAR(export_dynamic_flag_spec, $1)=
         5771  +_LT_TAGVAR(hardcode_direct, $1)=no
         5772  +_LT_TAGVAR(hardcode_direct_absolute, $1)=no
         5773  +_LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
         5774  +_LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)=
         5775  +_LT_TAGVAR(hardcode_libdir_separator, $1)=
         5776  +_LT_TAGVAR(hardcode_minus_L, $1)=no
         5777  +_LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported
         5778  +_LT_TAGVAR(hardcode_automatic, $1)=no
         5779  +_LT_TAGVAR(inherit_rpath, $1)=no
         5780  +_LT_TAGVAR(module_cmds, $1)=
         5781  +_LT_TAGVAR(module_expsym_cmds, $1)=
         5782  +_LT_TAGVAR(link_all_deplibs, $1)=unknown
         5783  +_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds
         5784  +_LT_TAGVAR(reload_flag, $1)=$reload_flag
         5785  +_LT_TAGVAR(reload_cmds, $1)=$reload_cmds
         5786  +_LT_TAGVAR(no_undefined_flag, $1)=
         5787  +_LT_TAGVAR(whole_archive_flag_spec, $1)=
         5788  +_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no
         5789  +
         5790  +# Source file extension for C++ test sources.
         5791  +ac_ext=cpp
         5792  +
         5793  +# Object file extension for compiled C++ test sources.
         5794  +objext=o
         5795  +_LT_TAGVAR(objext, $1)=$objext
         5796  +
         5797  +# No sense in running all these tests if we already determined that
         5798  +# the CXX compiler isn't working.  Some variables (like enable_shared)
         5799  +# are currently assumed to apply to all compilers on this platform,
         5800  +# and will be corrupted by setting them based on a non-working compiler.
         5801  +if test "$_lt_caught_CXX_error" != yes; then
         5802  +  # Code to be used in simple compile tests
         5803  +  lt_simple_compile_test_code="int some_variable = 0;"
         5804  +
         5805  +  # Code to be used in simple link tests
         5806  +  lt_simple_link_test_code='int main(int, char *[[]]) { return(0); }'
         5807  +
         5808  +  # ltmain only uses $CC for tagged configurations so make sure $CC is set.
         5809  +  _LT_TAG_COMPILER
         5810  +
         5811  +  # save warnings/boilerplate of simple test code
         5812  +  _LT_COMPILER_BOILERPLATE
         5813  +  _LT_LINKER_BOILERPLATE
         5814  +
         5815  +  # Allow CC to be a program name with arguments.
         5816  +  lt_save_CC=$CC
         5817  +  lt_save_CFLAGS=$CFLAGS
         5818  +  lt_save_LD=$LD
         5819  +  lt_save_GCC=$GCC
         5820  +  GCC=$GXX
         5821  +  lt_save_with_gnu_ld=$with_gnu_ld
         5822  +  lt_save_path_LD=$lt_cv_path_LD
         5823  +  if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then
         5824  +    lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx
         5825  +  else
         5826  +    $as_unset lt_cv_prog_gnu_ld
         5827  +  fi
         5828  +  if test -n "${lt_cv_path_LDCXX+set}"; then
         5829  +    lt_cv_path_LD=$lt_cv_path_LDCXX
         5830  +  else
         5831  +    $as_unset lt_cv_path_LD
         5832  +  fi
         5833  +  test -z "${LDCXX+set}" || LD=$LDCXX
         5834  +  CC=${CXX-"c++"}
         5835  +  CFLAGS=$CXXFLAGS
         5836  +  compiler=$CC
         5837  +  _LT_TAGVAR(compiler, $1)=$CC
         5838  +  _LT_CC_BASENAME([$compiler])
         5839  +
         5840  +  if test -n "$compiler"; then
         5841  +    # We don't want -fno-exception when compiling C++ code, so set the
         5842  +    # no_builtin_flag separately
         5843  +    if test "$GXX" = yes; then
         5844  +      _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin'
         5845  +    else
         5846  +      _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=
         5847  +    fi
         5848  +
         5849  +    if test "$GXX" = yes; then
         5850  +      # Set up default GNU C++ configuration
         5851  +
         5852  +      LT_PATH_LD
         5853  +
         5854  +      # Check if GNU C++ uses GNU ld as the underlying linker, since the
         5855  +      # archiving commands below assume that GNU ld is being used.
         5856  +      if test "$with_gnu_ld" = yes; then
         5857  +        _LT_TAGVAR(archive_cmds, $1)='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
         5858  +        _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'
         5859  +
         5860  +        _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
         5861  +        _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
         5862  +
         5863  +        # If archive_cmds runs LD, not CC, wlarc should be empty
         5864  +        # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to
         5865  +        #     investigate it a little bit more. (MM)
         5866  +        wlarc='${wl}'
         5867  +
         5868  +        # ancient GNU ld didn't support --whole-archive et. al.
         5869  +        if eval "`$CC -print-prog-name=ld` --help 2>&1" |
         5870  +	  $GREP 'no-whole-archive' > /dev/null; then
         5871  +          _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
         5872  +        else
         5873  +          _LT_TAGVAR(whole_archive_flag_spec, $1)=
         5874  +        fi
         5875  +      else
         5876  +        with_gnu_ld=no
         5877  +        wlarc=
         5878  +
         5879  +        # A generic and very simple default shared library creation
         5880  +        # command for GNU C++ for the case where it uses the native
         5881  +        # linker, instead of GNU ld.  If possible, this setting should
         5882  +        # overridden to take advantage of the native linker features on
         5883  +        # the platform it is being used on.
         5884  +        _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib'
         5885  +      fi
         5886  +
         5887  +      # Commands to make compiler produce verbose output that lists
         5888  +      # what "hidden" libraries, object files and flags are used when
         5889  +      # linking a shared library.
         5890  +      output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"'
         5891  +
         5892  +    else
         5893  +      GXX=no
         5894  +      with_gnu_ld=no
         5895  +      wlarc=
         5896  +    fi
         5897  +
         5898  +    # PORTME: fill in a description of your system's C++ link characteristics
         5899  +    AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries])
         5900  +    _LT_TAGVAR(ld_shlibs, $1)=yes
         5901  +    case $host_os in
         5902  +      aix3*)
         5903  +        # FIXME: insert proper C++ library support
         5904  +        _LT_TAGVAR(ld_shlibs, $1)=no
         5905  +        ;;
         5906  +      aix[[4-9]]*)
         5907  +        if test "$host_cpu" = ia64; then
         5908  +          # On IA64, the linker does run time linking by default, so we don't
         5909  +          # have to do anything special.
         5910  +          aix_use_runtimelinking=no
         5911  +          exp_sym_flag='-Bexport'
         5912  +          no_entry_flag=""
         5913  +        else
         5914  +          aix_use_runtimelinking=no
         5915  +
         5916  +          # Test if we are trying to use run time linking or normal
         5917  +          # AIX style linking. If -brtl is somewhere in LDFLAGS, we
         5918  +          # need to do runtime linking.
         5919  +          case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*)
         5920  +	    for ld_flag in $LDFLAGS; do
         5921  +	      case $ld_flag in
         5922  +	      *-brtl*)
         5923  +	        aix_use_runtimelinking=yes
         5924  +	        break
         5925  +	        ;;
         5926  +	      esac
         5927  +	    done
         5928  +	    ;;
         5929  +          esac
         5930  +
         5931  +          exp_sym_flag='-bexport'
         5932  +          no_entry_flag='-bnoentry'
         5933  +        fi
         5934  +
         5935  +        # When large executables or shared objects are built, AIX ld can
         5936  +        # have problems creating the table of contents.  If linking a library
         5937  +        # or program results in "error TOC overflow" add -mminimal-toc to
         5938  +        # CXXFLAGS/CFLAGS for g++/gcc.  In the cases where that is not
         5939  +        # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
         5940  +
         5941  +        _LT_TAGVAR(archive_cmds, $1)=''
         5942  +        _LT_TAGVAR(hardcode_direct, $1)=yes
         5943  +        _LT_TAGVAR(hardcode_direct_absolute, $1)=yes
         5944  +        _LT_TAGVAR(hardcode_libdir_separator, $1)=':'
         5945  +        _LT_TAGVAR(link_all_deplibs, $1)=yes
         5946  +        _LT_TAGVAR(file_list_spec, $1)='${wl}-f,'
         5947  +
         5948  +        if test "$GXX" = yes; then
         5949  +          case $host_os in aix4.[[012]]|aix4.[[012]].*)
         5950  +          # We only want to do this on AIX 4.2 and lower, the check
         5951  +          # below for broken collect2 doesn't work under 4.3+
         5952  +	  collect2name=`${CC} -print-prog-name=collect2`
         5953  +	  if test -f "$collect2name" &&
         5954  +	     strings "$collect2name" | $GREP resolve_lib_name >/dev/null
         5955  +	  then
         5956  +	    # We have reworked collect2
         5957  +	    :
         5958  +	  else
         5959  +	    # We have old collect2
         5960  +	    _LT_TAGVAR(hardcode_direct, $1)=unsupported
         5961  +	    # It fails to find uninstalled libraries when the uninstalled
         5962  +	    # path is not listed in the libpath.  Setting hardcode_minus_L
         5963  +	    # to unsupported forces relinking
         5964  +	    _LT_TAGVAR(hardcode_minus_L, $1)=yes
         5965  +	    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
         5966  +	    _LT_TAGVAR(hardcode_libdir_separator, $1)=
         5967  +	  fi
         5968  +          esac
         5969  +          shared_flag='-shared'
         5970  +	  if test "$aix_use_runtimelinking" = yes; then
         5971  +	    shared_flag="$shared_flag "'${wl}-G'
         5972  +	  fi
         5973  +        else
         5974  +          # not using gcc
         5975  +          if test "$host_cpu" = ia64; then
         5976  +	  # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
         5977  +	  # chokes on -Wl,-G. The following line is correct:
         5978  +	  shared_flag='-G'
         5979  +          else
         5980  +	    if test "$aix_use_runtimelinking" = yes; then
         5981  +	      shared_flag='${wl}-G'
         5982  +	    else
         5983  +	      shared_flag='${wl}-bM:SRE'
         5984  +	    fi
         5985  +          fi
         5986  +        fi
         5987  +
         5988  +        _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-bexpall'
         5989  +        # It seems that -bexpall does not export symbols beginning with
         5990  +        # underscore (_), so it is better to generate a list of symbols to
         5991  +	# export.
         5992  +        _LT_TAGVAR(always_export_symbols, $1)=yes
         5993  +        if test "$aix_use_runtimelinking" = yes; then
         5994  +          # Warning - without using the other runtime loading flags (-brtl),
         5995  +          # -berok will link without error, but may produce a broken library.
         5996  +          _LT_TAGVAR(allow_undefined_flag, $1)='-berok'
         5997  +          # Determine the default libpath from the value encoded in an empty
         5998  +          # executable.
         5999  +          _LT_SYS_MODULE_PATH_AIX([$1])
         6000  +          _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath"
         6001  +
         6002  +          _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"
         6003  +        else
         6004  +          if test "$host_cpu" = ia64; then
         6005  +	    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib'
         6006  +	    _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs"
         6007  +	    _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"
         6008  +          else
         6009  +	    # Determine the default libpath from the value encoded in an
         6010  +	    # empty executable.
         6011  +	    _LT_SYS_MODULE_PATH_AIX([$1])
         6012  +	    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath"
         6013  +	    # Warning - without using the other run time loading flags,
         6014  +	    # -berok will link without error, but may produce a broken library.
         6015  +	    _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok'
         6016  +	    _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok'
         6017  +	    if test "$with_gnu_ld" = yes; then
         6018  +	      # We only use this code for GNU lds that support --whole-archive.
         6019  +	      _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive'
         6020  +	    else
         6021  +	      # Exported symbols can be pulled into shared objects from archives
         6022  +	      _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience'
         6023  +	    fi
         6024  +	    _LT_TAGVAR(archive_cmds_need_lc, $1)=yes
         6025  +	    # This is similar to how AIX traditionally builds its shared
         6026  +	    # libraries.
         6027  +	    _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'
         6028  +          fi
         6029  +        fi
         6030  +        ;;
         6031  +
         6032  +      beos*)
         6033  +	if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
         6034  +	  _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
         6035  +	  # Joseph Beckenbach <jrb3@best.com> says some releases of gcc
         6036  +	  # support --undefined.  This deserves some investigation.  FIXME
         6037  +	  _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
         6038  +	else
         6039  +	  _LT_TAGVAR(ld_shlibs, $1)=no
         6040  +	fi
         6041  +	;;
         6042  +
         6043  +      chorus*)
         6044  +        case $cc_basename in
         6045  +          *)
         6046  +	  # FIXME: insert proper C++ library support
         6047  +	  _LT_TAGVAR(ld_shlibs, $1)=no
         6048  +	  ;;
         6049  +        esac
         6050  +        ;;
         6051  +
         6052  +      cygwin* | mingw* | pw32* | cegcc*)
         6053  +	case $GXX,$cc_basename in
         6054  +	,cl* | no,cl*)
         6055  +	  # Native MSVC
         6056  +	  # hardcode_libdir_flag_spec is actually meaningless, as there is
         6057  +	  # no search path for DLLs.
         6058  +	  _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' '
         6059  +	  _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
         6060  +	  _LT_TAGVAR(always_export_symbols, $1)=yes
         6061  +	  _LT_TAGVAR(file_list_spec, $1)='@'
         6062  +	  # Tell ltmain to make .lib files, not .a files.
         6063  +	  libext=lib
         6064  +	  # Tell ltmain to make .dll files, not .so files.
         6065  +	  shrext_cmds=".dll"
         6066  +	  # FIXME: Setting linknames here is a bad hack.
         6067  +	  _LT_TAGVAR(archive_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames='
         6068  +	  _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
         6069  +	      $SED -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp;
         6070  +	    else
         6071  +	      $SED -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp;
         6072  +	    fi~
         6073  +	    $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~
         6074  +	    linknames='
         6075  +	  # The linker will not automatically build a static lib if we build a DLL.
         6076  +	  # _LT_TAGVAR(old_archive_from_new_cmds, $1)='true'
         6077  +	  _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
         6078  +	  # Don't use ranlib
         6079  +	  _LT_TAGVAR(old_postinstall_cmds, $1)='chmod 644 $oldlib'
         6080  +	  _LT_TAGVAR(postlink_cmds, $1)='lt_outputfile="@OUTPUT@"~
         6081  +	    lt_tool_outputfile="@TOOL_OUTPUT@"~
         6082  +	    case $lt_outputfile in
         6083  +	      *.exe|*.EXE) ;;
         6084  +	      *)
         6085  +		lt_outputfile="$lt_outputfile.exe"
         6086  +		lt_tool_outputfile="$lt_tool_outputfile.exe"
         6087  +		;;
         6088  +	    esac~
         6089  +	    func_to_tool_file "$lt_outputfile"~
         6090  +	    if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then
         6091  +	      $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1;
         6092  +	      $RM "$lt_outputfile.manifest";
         6093  +	    fi'
         6094  +	  ;;
         6095  +	*)
         6096  +	  # g++
         6097  +	  # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless,
         6098  +	  # as there is no search path for DLLs.
         6099  +	  _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
         6100  +	  _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-all-symbols'
         6101  +	  _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
         6102  +	  _LT_TAGVAR(always_export_symbols, $1)=no
         6103  +	  _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
         6104  +
         6105  +	  if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then
         6106  +	    _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'
         6107  +	    # If the export-symbols file already is a .def file (1st line
         6108  +	    # is EXPORTS), use it as is; otherwise, prepend...
         6109  +	    _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
         6110  +	      cp $export_symbols $output_objdir/$soname.def;
         6111  +	    else
         6112  +	      echo EXPORTS > $output_objdir/$soname.def;
         6113  +	      cat $export_symbols >> $output_objdir/$soname.def;
         6114  +	    fi~
         6115  +	    $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'
         6116  +	  else
         6117  +	    _LT_TAGVAR(ld_shlibs, $1)=no
         6118  +	  fi
         6119  +	  ;;
         6120  +	esac
         6121  +	;;
         6122  +      darwin* | rhapsody*)
         6123  +        _LT_DARWIN_LINKER_FEATURES($1)
         6124  +	;;
         6125  +
         6126  +      dgux*)
         6127  +        case $cc_basename in
         6128  +          ec++*)
         6129  +	    # FIXME: insert proper C++ library support
         6130  +	    _LT_TAGVAR(ld_shlibs, $1)=no
         6131  +	    ;;
         6132  +          ghcx*)
         6133  +	    # Green Hills C++ Compiler
         6134  +	    # FIXME: insert proper C++ library support
         6135  +	    _LT_TAGVAR(ld_shlibs, $1)=no
         6136  +	    ;;
         6137  +          *)
         6138  +	    # FIXME: insert proper C++ library support
         6139  +	    _LT_TAGVAR(ld_shlibs, $1)=no
         6140  +	    ;;
         6141  +        esac
         6142  +        ;;
         6143  +
         6144  +      freebsd[[12]]*)
         6145  +        # C++ shared libraries reported to be fairly broken before
         6146  +	# switch to ELF
         6147  +        _LT_TAGVAR(ld_shlibs, $1)=no
         6148  +        ;;
         6149  +
         6150  +      freebsd-elf*)
         6151  +        _LT_TAGVAR(archive_cmds_need_lc, $1)=no
         6152  +        ;;
         6153  +
         6154  +      freebsd* | dragonfly*)
         6155  +        # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF
         6156  +        # conventions
         6157  +        _LT_TAGVAR(ld_shlibs, $1)=yes
         6158  +        ;;
         6159  +
         6160  +      gnu*)
         6161  +        ;;
         6162  +
         6163  +      haiku*)
         6164  +        _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
         6165  +        _LT_TAGVAR(link_all_deplibs, $1)=yes
         6166  +        ;;
         6167  +
         6168  +      hpux9*)
         6169  +        _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
         6170  +        _LT_TAGVAR(hardcode_libdir_separator, $1)=:
         6171  +        _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
         6172  +        _LT_TAGVAR(hardcode_direct, $1)=yes
         6173  +        _LT_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH,
         6174  +				             # but as the default
         6175  +				             # location of the library.
         6176  +
         6177  +        case $cc_basename in
         6178  +          CC*)
         6179  +            # FIXME: insert proper C++ library support
         6180  +            _LT_TAGVAR(ld_shlibs, $1)=no
         6181  +            ;;
         6182  +          aCC*)
         6183  +            _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'
         6184  +            # Commands to make compiler produce verbose output that lists
         6185  +            # what "hidden" libraries, object files and flags are used when
         6186  +            # linking a shared library.
         6187  +            #
         6188  +            # There doesn't appear to be a way to prevent this compiler from
         6189  +            # explicitly linking system object files so we need to strip them
         6190  +            # from the output so that they don't get included in the library
         6191  +            # dependencies.
         6192  +            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"'
         6193  +            ;;
         6194  +          *)
         6195  +            if test "$GXX" = yes; then
         6196  +              _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'
         6197  +            else
         6198  +              # FIXME: insert proper C++ library support
         6199  +              _LT_TAGVAR(ld_shlibs, $1)=no
         6200  +            fi
         6201  +            ;;
         6202  +        esac
         6203  +        ;;
         6204  +
         6205  +      hpux10*|hpux11*)
         6206  +        if test $with_gnu_ld = no; then
         6207  +	  _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
         6208  +	  _LT_TAGVAR(hardcode_libdir_separator, $1)=:
         6209  +
         6210  +          case $host_cpu in
         6211  +            hppa*64*|ia64*)
         6212  +              ;;
         6213  +            *)
         6214  +	      _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
         6215  +              ;;
         6216  +          esac
         6217  +        fi
         6218  +        case $host_cpu in
         6219  +          hppa*64*|ia64*)
         6220  +            _LT_TAGVAR(hardcode_direct, $1)=no
         6221  +            _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
         6222  +            ;;
         6223  +          *)
         6224  +            _LT_TAGVAR(hardcode_direct, $1)=yes
         6225  +            _LT_TAGVAR(hardcode_direct_absolute, $1)=yes
         6226  +            _LT_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH,
         6227  +					         # but as the default
         6228  +					         # location of the library.
         6229  +            ;;
         6230  +        esac
         6231  +
         6232  +        case $cc_basename in
         6233  +          CC*)
         6234  +	    # FIXME: insert proper C++ library support
         6235  +	    _LT_TAGVAR(ld_shlibs, $1)=no
         6236  +	    ;;
         6237  +          aCC*)
         6238  +	    case $host_cpu in
         6239  +	      hppa*64*)
         6240  +	        _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
         6241  +	        ;;
         6242  +	      ia64*)
         6243  +	        _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
         6244  +	        ;;
         6245  +	      *)
         6246  +	        _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'
         6247  +	        ;;
         6248  +	    esac
         6249  +	    # Commands to make compiler produce verbose output that lists
         6250  +	    # what "hidden" libraries, object files and flags are used when
         6251  +	    # linking a shared library.
         6252  +	    #
         6253  +	    # There doesn't appear to be a way to prevent this compiler from
         6254  +	    # explicitly linking system object files so we need to strip them
         6255  +	    # from the output so that they don't get included in the library
         6256  +	    # dependencies.
         6257  +	    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"'
         6258  +	    ;;
         6259  +          *)
         6260  +	    if test "$GXX" = yes; then
         6261  +	      if test $with_gnu_ld = no; then
         6262  +	        case $host_cpu in
         6263  +	          hppa*64*)
         6264  +	            _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
         6265  +	            ;;
         6266  +	          ia64*)
         6267  +	            _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'
         6268  +	            ;;
         6269  +	          *)
         6270  +	            _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'
         6271  +	            ;;
         6272  +	        esac
         6273  +	      fi
         6274  +	    else
         6275  +	      # FIXME: insert proper C++ library support
         6276  +	      _LT_TAGVAR(ld_shlibs, $1)=no
         6277  +	    fi
         6278  +	    ;;
         6279  +        esac
         6280  +        ;;
         6281  +
         6282  +      interix[[3-9]]*)
         6283  +	_LT_TAGVAR(hardcode_direct, $1)=no
         6284  +	_LT_TAGVAR(hardcode_shlibpath_var, $1)=no
         6285  +	_LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
         6286  +	_LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
         6287  +	# Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc.
         6288  +	# Instead, shared libraries are loaded at an image base (0x10000000 by
         6289  +	# default) and relocated if they conflict, which is a slow very memory
         6290  +	# consuming and fragmenting process.  To avoid this, we pick a random,
         6291  +	# 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link
         6292  +	# time.  Moving up from 0x10000000 also allows more sbrk(2) space.
         6293  +	_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'
         6294  +	_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'
         6295  +	;;
         6296  +      irix5* | irix6*)
         6297  +        case $cc_basename in
         6298  +          CC*)
         6299  +	    # SGI C++
         6300  +	    _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'
         6301  +
         6302  +	    # Archives containing C++ object files must be created using
         6303  +	    # "CC -ar", where "CC" is the IRIX C++ compiler.  This is
         6304  +	    # necessary to make sure instantiated templates are included
         6305  +	    # in the archive.
         6306  +	    _LT_TAGVAR(old_archive_cmds, $1)='$CC -ar -WR,-u -o $oldlib $oldobjs'
         6307  +	    ;;
         6308  +          *)
         6309  +	    if test "$GXX" = yes; then
         6310  +	      if test "$with_gnu_ld" = no; then
         6311  +	        _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'
         6312  +	      else
         6313  +	        _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'
         6314  +	      fi
         6315  +	    fi
         6316  +	    _LT_TAGVAR(link_all_deplibs, $1)=yes
         6317  +	    ;;
         6318  +        esac
         6319  +        _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
         6320  +        _LT_TAGVAR(hardcode_libdir_separator, $1)=:
         6321  +        _LT_TAGVAR(inherit_rpath, $1)=yes
         6322  +        ;;
         6323  +
         6324  +      linux* | k*bsd*-gnu | kopensolaris*-gnu)
         6325  +        case $cc_basename in
         6326  +          KCC*)
         6327  +	    # Kuck and Associates, Inc. (KAI) C++ Compiler
         6328  +
         6329  +	    # KCC will only create a shared library if the output file
         6330  +	    # ends with ".so" (or ".sl" for HP-UX), so rename the library
         6331  +	    # to its proper name (with version) after linking.
         6332  +	    _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'
         6333  +	    _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'
         6334  +	    # Commands to make compiler produce verbose output that lists
         6335  +	    # what "hidden" libraries, object files and flags are used when
         6336  +	    # linking a shared library.
         6337  +	    #
         6338  +	    # There doesn't appear to be a way to prevent this compiler from
         6339  +	    # explicitly linking system object files so we need to strip them
         6340  +	    # from the output so that they don't get included in the library
         6341  +	    # dependencies.
         6342  +	    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"'
         6343  +
         6344  +	    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
         6345  +	    _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
         6346  +
         6347  +	    # Archives containing C++ object files must be created using
         6348  +	    # "CC -Bstatic", where "CC" is the KAI C++ compiler.
         6349  +	    _LT_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs'
         6350  +	    ;;
         6351  +	  icpc* | ecpc* )
         6352  +	    # Intel C++
         6353  +	    with_gnu_ld=yes
         6354  +	    # version 8.0 and above of icpc choke on multiply defined symbols
         6355  +	    # if we add $predep_objects and $postdep_objects, however 7.1 and
         6356  +	    # earlier do not add the objects themselves.
         6357  +	    case `$CC -V 2>&1` in
         6358  +	      *"Version 7."*)
         6359  +	        _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
         6360  +		_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'
         6361  +		;;
         6362  +	      *)  # Version 8.0 or newer
         6363  +	        tmp_idyn=
         6364  +	        case $host_cpu in
         6365  +		  ia64*) tmp_idyn=' -i_dynamic';;
         6366  +		esac
         6367  +	        _LT_TAGVAR(archive_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
         6368  +		_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'
         6369  +		;;
         6370  +	    esac
         6371  +	    _LT_TAGVAR(archive_cmds_need_lc, $1)=no
         6372  +	    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
         6373  +	    _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
         6374  +	    _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive'
         6375  +	    ;;
         6376  +          pgCC* | pgcpp*)
         6377  +            # Portland Group C++ compiler
         6378  +	    case `$CC -V` in
         6379  +	    *pgCC\ [[1-5]].* | *pgcpp\ [[1-5]].*)
         6380  +	      _LT_TAGVAR(prelink_cmds, $1)='tpldir=Template.dir~
         6381  +		rm -rf $tpldir~
         6382  +		$CC --prelink_objects --instantiation_dir $tpldir $objs $libobjs $compile_deplibs~
         6383  +		compile_command="$compile_command `find $tpldir -name \*.o | sort | $NL2SP`"'
         6384  +	      _LT_TAGVAR(old_archive_cmds, $1)='tpldir=Template.dir~
         6385  +		rm -rf $tpldir~
         6386  +		$CC --prelink_objects --instantiation_dir $tpldir $oldobjs$old_deplibs~
         6387  +		$AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | sort | $NL2SP`~
         6388  +		$RANLIB $oldlib'
         6389  +	      _LT_TAGVAR(archive_cmds, $1)='tpldir=Template.dir~
         6390  +		rm -rf $tpldir~
         6391  +		$CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~
         6392  +		$CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib'
         6393  +	      _LT_TAGVAR(archive_expsym_cmds, $1)='tpldir=Template.dir~
         6394  +		rm -rf $tpldir~
         6395  +		$CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~
         6396  +		$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'
         6397  +	      ;;
         6398  +	    *) # Version 6 and above use weak symbols
         6399  +	      _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib'
         6400  +	      _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'
         6401  +	      ;;
         6402  +	    esac
         6403  +
         6404  +	    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir'
         6405  +	    _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
         6406  +	    _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'
         6407  +            ;;
         6408  +	  cxx*)
         6409  +	    # Compaq C++
         6410  +	    _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
         6411  +	    _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'
         6412  +
         6413  +	    runpath_var=LD_RUN_PATH
         6414  +	    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir'
         6415  +	    _LT_TAGVAR(hardcode_libdir_separator, $1)=:
         6416  +
         6417  +	    # Commands to make compiler produce verbose output that lists
         6418  +	    # what "hidden" libraries, object files and flags are used when
         6419  +	    # linking a shared library.
         6420  +	    #
         6421  +	    # There doesn't appear to be a way to prevent this compiler from
         6422  +	    # explicitly linking system object files so we need to strip them
         6423  +	    # from the output so that they don't get included in the library
         6424  +	    # dependencies.
         6425  +	    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'
         6426  +	    ;;
         6427  +	  xl* | mpixl* | bgxl*)
         6428  +	    # IBM XL 8.0 on PPC, with GNU ld
         6429  +	    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
         6430  +	    _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
         6431  +	    _LT_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
         6432  +	    if test "x$supports_anon_versioning" = xyes; then
         6433  +	      _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~
         6434  +		cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
         6435  +		echo "local: *; };" >> $output_objdir/$libname.ver~
         6436  +		$CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
         6437  +	    fi
         6438  +	    ;;
         6439  +	  *)
         6440  +	    case `$CC -V 2>&1 | sed 5q` in
         6441  +	    *Sun\ C*)
         6442  +	      # Sun C++ 5.9
         6443  +	      _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs'
         6444  +	      _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
         6445  +	      _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'
         6446  +	      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
         6447  +	      _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'
         6448  +	      _LT_TAGVAR(compiler_needs_object, $1)=yes
         6449  +
         6450  +	      # Not sure whether something based on
         6451  +	      # $CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1
         6452  +	      # would be better.
         6453  +	      output_verbose_link_cmd='func_echo_all'
         6454  +
         6455  +	      # Archives containing C++ object files must be created using
         6456  +	      # "CC -xar", where "CC" is the Sun C++ compiler.  This is
         6457  +	      # necessary to make sure instantiated templates are included
         6458  +	      # in the archive.
         6459  +	      _LT_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs'
         6460  +	      ;;
         6461  +	    esac
         6462  +	    ;;
         6463  +	esac
         6464  +	;;
         6465  +
         6466  +      lynxos*)
         6467  +        # FIXME: insert proper C++ library support
         6468  +	_LT_TAGVAR(ld_shlibs, $1)=no
         6469  +	;;
         6470  +
         6471  +      m88k*)
         6472  +        # FIXME: insert proper C++ library support
         6473  +        _LT_TAGVAR(ld_shlibs, $1)=no
         6474  +	;;
         6475  +
         6476  +      mvs*)
         6477  +        case $cc_basename in
         6478  +          cxx*)
         6479  +	    # FIXME: insert proper C++ library support
         6480  +	    _LT_TAGVAR(ld_shlibs, $1)=no
         6481  +	    ;;
         6482  +	  *)
         6483  +	    # FIXME: insert proper C++ library support
         6484  +	    _LT_TAGVAR(ld_shlibs, $1)=no
         6485  +	    ;;
         6486  +	esac
         6487  +	;;
         6488  +
         6489  +      netbsd*)
         6490  +        if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
         6491  +	  _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable  -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags'
         6492  +	  wlarc=
         6493  +	  _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
         6494  +	  _LT_TAGVAR(hardcode_direct, $1)=yes
         6495  +	  _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
         6496  +	fi
         6497  +	# Workaround some broken pre-1.5 toolchains
         6498  +	output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"'
         6499  +	;;
         6500  +
         6501  +      *nto* | *qnx*)
         6502  +        _LT_TAGVAR(ld_shlibs, $1)=yes
         6503  +	;;
         6504  +
         6505  +      openbsd2*)
         6506  +        # C++ shared libraries are fairly broken
         6507  +	_LT_TAGVAR(ld_shlibs, $1)=no
         6508  +	;;
         6509  +
         6510  +      openbsd*)
         6511  +	if test -f /usr/libexec/ld.so; then
         6512  +	  _LT_TAGVAR(hardcode_direct, $1)=yes
         6513  +	  _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
         6514  +	  _LT_TAGVAR(hardcode_direct_absolute, $1)=yes
         6515  +	  _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib'
         6516  +	  _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
         6517  +	  if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
         6518  +	    _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'
         6519  +	    _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
         6520  +	    _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
         6521  +	  fi
         6522  +	  output_verbose_link_cmd=func_echo_all
         6523  +	else
         6524  +	  _LT_TAGVAR(ld_shlibs, $1)=no
         6525  +	fi
         6526  +	;;
         6527  +
         6528  +      osf3* | osf4* | osf5*)
         6529  +        case $cc_basename in
         6530  +          KCC*)
         6531  +	    # Kuck and Associates, Inc. (KAI) C++ Compiler
         6532  +
         6533  +	    # KCC will only create a shared library if the output file
         6534  +	    # ends with ".so" (or ".sl" for HP-UX), so rename the library
         6535  +	    # to its proper name (with version) after linking.
         6536  +	    _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'
         6537  +
         6538  +	    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
         6539  +	    _LT_TAGVAR(hardcode_libdir_separator, $1)=:
         6540  +
         6541  +	    # Archives containing C++ object files must be created using
         6542  +	    # the KAI C++ compiler.
         6543  +	    case $host in
         6544  +	      osf3*) _LT_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' ;;
         6545  +	      *) _LT_TAGVAR(old_archive_cmds, $1)='$CC -o $oldlib $oldobjs' ;;
         6546  +	    esac
         6547  +	    ;;
         6548  +          RCC*)
         6549  +	    # Rational C++ 2.4.1
         6550  +	    # FIXME: insert proper C++ library support
         6551  +	    _LT_TAGVAR(ld_shlibs, $1)=no
         6552  +	    ;;
         6553  +          cxx*)
         6554  +	    case $host in
         6555  +	      osf3*)
         6556  +	        _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
         6557  +	        _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'
         6558  +	        _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
         6559  +		;;
         6560  +	      *)
         6561  +	        _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*'
         6562  +	        _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'
         6563  +	        _LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~
         6564  +	          echo "-hidden">> $lib.exp~
         6565  +	          $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~
         6566  +	          $RM $lib.exp'
         6567  +	        _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir'
         6568  +		;;
         6569  +	    esac
         6570  +
         6571  +	    _LT_TAGVAR(hardcode_libdir_separator, $1)=:
         6572  +
         6573  +	    # Commands to make compiler produce verbose output that lists
         6574  +	    # what "hidden" libraries, object files and flags are used when
         6575  +	    # linking a shared library.
         6576  +	    #
         6577  +	    # There doesn't appear to be a way to prevent this compiler from
         6578  +	    # explicitly linking system object files so we need to strip them
         6579  +	    # from the output so that they don't get included in the library
         6580  +	    # dependencies.
         6581  +	    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"'
         6582  +	    ;;
         6583  +	  *)
         6584  +	    if test "$GXX" = yes && test "$with_gnu_ld" = no; then
         6585  +	      _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
         6586  +	      case $host in
         6587  +	        osf3*)
         6588  +	          _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'
         6589  +		  ;;
         6590  +	        *)
         6591  +	          _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'
         6592  +		  ;;
         6593  +	      esac
         6594  +
         6595  +	      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
         6596  +	      _LT_TAGVAR(hardcode_libdir_separator, $1)=:
         6597  +
         6598  +	      # Commands to make compiler produce verbose output that lists
         6599  +	      # what "hidden" libraries, object files and flags are used when
         6600  +	      # linking a shared library.
         6601  +	      output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"'
         6602  +
         6603  +	    else
         6604  +	      # FIXME: insert proper C++ library support
         6605  +	      _LT_TAGVAR(ld_shlibs, $1)=no
         6606  +	    fi
         6607  +	    ;;
         6608  +        esac
         6609  +        ;;
         6610  +
         6611  +      psos*)
         6612  +        # FIXME: insert proper C++ library support
         6613  +        _LT_TAGVAR(ld_shlibs, $1)=no
         6614  +        ;;
         6615  +
         6616  +      sunos4*)
         6617  +        case $cc_basename in
         6618  +          CC*)
         6619  +	    # Sun C++ 4.x
         6620  +	    # FIXME: insert proper C++ library support
         6621  +	    _LT_TAGVAR(ld_shlibs, $1)=no
         6622  +	    ;;
         6623  +          lcc*)
         6624  +	    # Lucid
         6625  +	    # FIXME: insert proper C++ library support
         6626  +	    _LT_TAGVAR(ld_shlibs, $1)=no
         6627  +	    ;;
         6628  +          *)
         6629  +	    # FIXME: insert proper C++ library support
         6630  +	    _LT_TAGVAR(ld_shlibs, $1)=no
         6631  +	    ;;
         6632  +        esac
         6633  +        ;;
         6634  +
         6635  +      solaris*)
         6636  +        case $cc_basename in
         6637  +          CC* | sunCC*)
         6638  +	    # Sun C++ 4.2, 5.x and Centerline C++
         6639  +            _LT_TAGVAR(archive_cmds_need_lc,$1)=yes
         6640  +	    _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs'
         6641  +	    _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag}  -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
         6642  +	    _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
         6643  +	      $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'
         6644  +
         6645  +	    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
         6646  +	    _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
         6647  +	    case $host_os in
         6648  +	      solaris2.[[0-5]] | solaris2.[[0-5]].*) ;;
         6649  +	      *)
         6650  +		# The compiler driver will combine and reorder linker options,
         6651  +		# but understands `-z linker_flag'.
         6652  +	        # Supported since Solaris 2.6 (maybe 2.5.1?)
         6653  +		_LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract'
         6654  +	        ;;
         6655  +	    esac
         6656  +	    _LT_TAGVAR(link_all_deplibs, $1)=yes
         6657  +
         6658  +	    output_verbose_link_cmd='func_echo_all'
         6659  +
         6660  +	    # Archives containing C++ object files must be created using
         6661  +	    # "CC -xar", where "CC" is the Sun C++ compiler.  This is
         6662  +	    # necessary to make sure instantiated templates are included
         6663  +	    # in the archive.
         6664  +	    _LT_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs'
         6665  +	    ;;
         6666  +          gcx*)
         6667  +	    # Green Hills C++ Compiler
         6668  +	    _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
         6669  +
         6670  +	    # The C++ compiler must be used to create the archive.
         6671  +	    _LT_TAGVAR(old_archive_cmds, $1)='$CC $LDFLAGS -archive -o $oldlib $oldobjs'
         6672  +	    ;;
         6673  +          *)
         6674  +	    # GNU C++ compiler with Solaris linker
         6675  +	    if test "$GXX" = yes && test "$with_gnu_ld" = no; then
         6676  +	      _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-z ${wl}defs'
         6677  +	      if $CC --version | $GREP -v '^2\.7' > /dev/null; then
         6678  +	        _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'
         6679  +	        _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
         6680  +		  $CC -shared $pic_flag -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp'
         6681  +
         6682  +	        # Commands to make compiler produce verbose output that lists
         6683  +	        # what "hidden" libraries, object files and flags are used when
         6684  +	        # linking a shared library.
         6685  +	        output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"'
         6686  +	      else
         6687  +	        # g++ 2.7 appears to require `-G' NOT `-shared' on this
         6688  +	        # platform.
         6689  +	        _LT_TAGVAR(archive_cmds, $1)='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
         6690  +	        _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
         6691  +		  $CC -G -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp'
         6692  +
         6693  +	        # Commands to make compiler produce verbose output that lists
         6694  +	        # what "hidden" libraries, object files and flags are used when
         6695  +	        # linking a shared library.
         6696  +	        output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"'
         6697  +	      fi
         6698  +
         6699  +	      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $wl$libdir'
         6700  +	      case $host_os in
         6701  +		solaris2.[[0-5]] | solaris2.[[0-5]].*) ;;
         6702  +		*)
         6703  +		  _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract'
         6704  +		  ;;
         6705  +	      esac
         6706  +	    fi
         6707  +	    ;;
         6708  +        esac
         6709  +        ;;
         6710  +
         6711  +    sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*)
         6712  +      _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text'
         6713  +      _LT_TAGVAR(archive_cmds_need_lc, $1)=no
         6714  +      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
         6715  +      runpath_var='LD_RUN_PATH'
         6716  +
         6717  +      case $cc_basename in
         6718  +        CC*)
         6719  +	  _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
         6720  +	  _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
         6721  +	  ;;
         6722  +	*)
         6723  +	  _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
         6724  +	  _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
         6725  +	  ;;
         6726  +      esac
         6727  +      ;;
         6728  +
         6729  +      sysv5* | sco3.2v5* | sco5v6*)
         6730  +	# Note: We can NOT use -z defs as we might desire, because we do not
         6731  +	# link with -lc, and that would cause any symbols used from libc to
         6732  +	# always be unresolved, which means just about no library would
         6733  +	# ever link correctly.  If we're not using GNU ld we use -z text
         6734  +	# though, which does catch some bad symbols but isn't as heavy-handed
         6735  +	# as -z defs.
         6736  +	_LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text'
         6737  +	_LT_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs'
         6738  +	_LT_TAGVAR(archive_cmds_need_lc, $1)=no
         6739  +	_LT_TAGVAR(hardcode_shlibpath_var, $1)=no
         6740  +	_LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R,$libdir'
         6741  +	_LT_TAGVAR(hardcode_libdir_separator, $1)=':'
         6742  +	_LT_TAGVAR(link_all_deplibs, $1)=yes
         6743  +	_LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport'
         6744  +	runpath_var='LD_RUN_PATH'
         6745  +
         6746  +	case $cc_basename in
         6747  +          CC*)
         6748  +	    _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
         6749  +	    _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
         6750  +	    _LT_TAGVAR(old_archive_cmds, $1)='$CC -Tprelink_objects $oldobjs~
         6751  +	      '"$_LT_TAGVAR(old_archive_cmds, $1)"
         6752  +	    _LT_TAGVAR(reload_cmds, $1)='$CC -Tprelink_objects $reload_objs~
         6753  +	      '"$_LT_TAGVAR(reload_cmds, $1)"
         6754  +	    ;;
         6755  +	  *)
         6756  +	    _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
         6757  +	    _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
         6758  +	    ;;
         6759  +	esac
         6760  +      ;;
         6761  +
         6762  +      tandem*)
         6763  +        case $cc_basename in
         6764  +          NCC*)
         6765  +	    # NonStop-UX NCC 3.20
         6766  +	    # FIXME: insert proper C++ library support
         6767  +	    _LT_TAGVAR(ld_shlibs, $1)=no
         6768  +	    ;;
         6769  +          *)
         6770  +	    # FIXME: insert proper C++ library support
         6771  +	    _LT_TAGVAR(ld_shlibs, $1)=no
         6772  +	    ;;
         6773  +        esac
         6774  +        ;;
         6775  +
         6776  +      vxworks*)
         6777  +        # FIXME: insert proper C++ library support
         6778  +        _LT_TAGVAR(ld_shlibs, $1)=no
         6779  +        ;;
         6780  +
         6781  +      *)
         6782  +        # FIXME: insert proper C++ library support
         6783  +        _LT_TAGVAR(ld_shlibs, $1)=no
         6784  +        ;;
         6785  +    esac
         6786  +
         6787  +    AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)])
         6788  +    test "$_LT_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no
         6789  +
         6790  +    _LT_TAGVAR(GCC, $1)="$GXX"
         6791  +    _LT_TAGVAR(LD, $1)="$LD"
         6792  +
         6793  +    ## CAVEAT EMPTOR:
         6794  +    ## There is no encapsulation within the following macros, do not change
         6795  +    ## the running order or otherwise move them around unless you know exactly
         6796  +    ## what you are doing...
         6797  +    _LT_SYS_HIDDEN_LIBDEPS($1)
         6798  +    _LT_COMPILER_PIC($1)
         6799  +    _LT_COMPILER_C_O($1)
         6800  +    _LT_COMPILER_FILE_LOCKS($1)
         6801  +    _LT_LINKER_SHLIBS($1)
         6802  +    _LT_SYS_DYNAMIC_LINKER($1)
         6803  +    _LT_LINKER_HARDCODE_LIBPATH($1)
         6804  +
         6805  +    _LT_CONFIG($1)
         6806  +  fi # test -n "$compiler"
         6807  +
         6808  +  CC=$lt_save_CC
         6809  +  CFLAGS=$lt_save_CFLAGS
         6810  +  LDCXX=$LD
         6811  +  LD=$lt_save_LD
         6812  +  GCC=$lt_save_GCC
         6813  +  with_gnu_ld=$lt_save_with_gnu_ld
         6814  +  lt_cv_path_LDCXX=$lt_cv_path_LD
         6815  +  lt_cv_path_LD=$lt_save_path_LD
         6816  +  lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld
         6817  +  lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld
         6818  +fi # test "$_lt_caught_CXX_error" != yes
         6819  +
         6820  +AC_LANG_POP
         6821  +])# _LT_LANG_CXX_CONFIG
         6822  +
         6823  +
         6824  +# _LT_FUNC_STRIPNAME_CNF
         6825  +# ----------------------
         6826  +# func_stripname_cnf prefix suffix name
         6827  +# strip PREFIX and SUFFIX off of NAME.
         6828  +# PREFIX and SUFFIX must not contain globbing or regex special
         6829  +# characters, hashes, percent signs, but SUFFIX may contain a leading
         6830  +# dot (in which case that matches only a dot).
         6831  +#
         6832  +# This function is identical to the (non-XSI) version of func_stripname,
         6833  +# except this one can be used by m4 code that may be executed by configure,
         6834  +# rather than the libtool script.
         6835  +m4_defun([_LT_FUNC_STRIPNAME_CNF],[dnl
         6836  +AC_REQUIRE([_LT_DECL_SED])
         6837  +AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH])
         6838  +func_stripname_cnf ()
         6839  +{
         6840  +  case ${2} in
         6841  +  .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;;
         6842  +  *)  func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;;
         6843  +  esac
         6844  +} # func_stripname_cnf
         6845  +])# _LT_FUNC_STRIPNAME_CNF
         6846  +
         6847  +# _LT_SYS_HIDDEN_LIBDEPS([TAGNAME])
         6848  +# ---------------------------------
         6849  +# Figure out "hidden" library dependencies from verbose
         6850  +# compiler output when linking a shared library.
         6851  +# Parse the compiler output and extract the necessary
         6852  +# objects, libraries and library flags.
         6853  +m4_defun([_LT_SYS_HIDDEN_LIBDEPS],
         6854  +[m4_require([_LT_FILEUTILS_DEFAULTS])dnl
         6855  +AC_REQUIRE([_LT_FUNC_STRIPNAME_CNF])dnl
         6856  +# Dependencies to place before and after the object being linked:
         6857  +_LT_TAGVAR(predep_objects, $1)=
         6858  +_LT_TAGVAR(postdep_objects, $1)=
         6859  +_LT_TAGVAR(predeps, $1)=
         6860  +_LT_TAGVAR(postdeps, $1)=
         6861  +_LT_TAGVAR(compiler_lib_search_path, $1)=
         6862  +
         6863  +dnl we can't use the lt_simple_compile_test_code here,
         6864  +dnl because it contains code intended for an executable,
         6865  +dnl not a library.  It's possible we should let each
         6866  +dnl tag define a new lt_????_link_test_code variable,
         6867  +dnl but it's only used here...
         6868  +m4_if([$1], [], [cat > conftest.$ac_ext <<_LT_EOF
         6869  +int a;
         6870  +void foo (void) { a = 0; }
         6871  +_LT_EOF
         6872  +], [$1], [CXX], [cat > conftest.$ac_ext <<_LT_EOF
         6873  +class Foo
         6874  +{
         6875  +public:
         6876  +  Foo (void) { a = 0; }
         6877  +private:
         6878  +  int a;
         6879  +};
         6880  +_LT_EOF
         6881  +], [$1], [F77], [cat > conftest.$ac_ext <<_LT_EOF
         6882  +      subroutine foo
         6883  +      implicit none
         6884  +      integer*4 a
         6885  +      a=0
         6886  +      return
         6887  +      end
         6888  +_LT_EOF
         6889  +], [$1], [FC], [cat > conftest.$ac_ext <<_LT_EOF
         6890  +      subroutine foo
         6891  +      implicit none
         6892  +      integer a
         6893  +      a=0
         6894  +      return
         6895  +      end
         6896  +_LT_EOF
         6897  +], [$1], [GCJ], [cat > conftest.$ac_ext <<_LT_EOF
         6898  +public class foo {
         6899  +  private int a;
         6900  +  public void bar (void) {
         6901  +    a = 0;
         6902  +  }
         6903  +};
         6904  +_LT_EOF
         6905  +])
         6906  +
         6907  +_lt_libdeps_save_CFLAGS=$CFLAGS
         6908  +case "$CC $CFLAGS " in #(
         6909  +*\ -flto*\ *) CFLAGS="$CFLAGS -fno-lto" ;;
         6910  +*\ -fwhopr*\ *) CFLAGS="$CFLAGS -fno-whopr" ;;
         6911  +esac
         6912  +
         6913  +dnl Parse the compiler output and extract the necessary
         6914  +dnl objects, libraries and library flags.
         6915  +if AC_TRY_EVAL(ac_compile); then
         6916  +  # Parse the compiler output and extract the necessary
         6917  +  # objects, libraries and library flags.
         6918  +
         6919  +  # Sentinel used to keep track of whether or not we are before
         6920  +  # the conftest object file.
         6921  +  pre_test_object_deps_done=no
         6922  +
         6923  +  for p in `eval "$output_verbose_link_cmd"`; do
         6924  +    case ${prev}${p} in
         6925  +
         6926  +    -L* | -R* | -l*)
         6927  +       # Some compilers place space between "-{L,R}" and the path.
         6928  +       # Remove the space.
         6929  +       if test $p = "-L" ||
         6930  +          test $p = "-R"; then
         6931  +	 prev=$p
         6932  +	 continue
         6933  +       fi
         6934  +
         6935  +       # Expand the sysroot to ease extracting the directories later.
         6936  +       if test -z "$prev"; then
         6937  +         case $p in
         6938  +         -L*) func_stripname_cnf '-L' '' "$p"; prev=-L; p=$func_stripname_result ;;
         6939  +         -R*) func_stripname_cnf '-R' '' "$p"; prev=-R; p=$func_stripname_result ;;
         6940  +         -l*) func_stripname_cnf '-l' '' "$p"; prev=-l; p=$func_stripname_result ;;
         6941  +         esac
         6942  +       fi
         6943  +       case $p in
         6944  +       =*) func_stripname_cnf '=' '' "$p"; p=$lt_sysroot$func_stripname_result ;;
         6945  +       esac
         6946  +       if test "$pre_test_object_deps_done" = no; then
         6947  +	 case ${prev} in
         6948  +	 -L | -R)
         6949  +	   # Internal compiler library paths should come after those
         6950  +	   # provided the user.  The postdeps already come after the
         6951  +	   # user supplied libs so there is no need to process them.
         6952  +	   if test -z "$_LT_TAGVAR(compiler_lib_search_path, $1)"; then
         6953  +	     _LT_TAGVAR(compiler_lib_search_path, $1)="${prev}${p}"
         6954  +	   else
         6955  +	     _LT_TAGVAR(compiler_lib_search_path, $1)="${_LT_TAGVAR(compiler_lib_search_path, $1)} ${prev}${p}"
         6956  +	   fi
         6957  +	   ;;
         6958  +	 # The "-l" case would never come before the object being
         6959  +	 # linked, so don't bother handling this case.
         6960  +	 esac
         6961  +       else
         6962  +	 if test -z "$_LT_TAGVAR(postdeps, $1)"; then
         6963  +	   _LT_TAGVAR(postdeps, $1)="${prev}${p}"
         6964  +	 else
         6965  +	   _LT_TAGVAR(postdeps, $1)="${_LT_TAGVAR(postdeps, $1)} ${prev}${p}"
         6966  +	 fi
         6967  +       fi
         6968  +       prev=
         6969  +       ;;
         6970  +
         6971  +    *.lto.$objext) ;; # Ignore GCC LTO objects
         6972  +    *.$objext)
         6973  +       # This assumes that the test object file only shows up
         6974  +       # once in the compiler output.
         6975  +       if test "$p" = "conftest.$objext"; then
         6976  +	 pre_test_object_deps_done=yes
         6977  +	 continue
         6978  +       fi
         6979  +
         6980  +       if test "$pre_test_object_deps_done" = no; then
         6981  +	 if test -z "$_LT_TAGVAR(predep_objects, $1)"; then
         6982  +	   _LT_TAGVAR(predep_objects, $1)="$p"
         6983  +	 else
         6984  +	   _LT_TAGVAR(predep_objects, $1)="$_LT_TAGVAR(predep_objects, $1) $p"
         6985  +	 fi
         6986  +       else
         6987  +	 if test -z "$_LT_TAGVAR(postdep_objects, $1)"; then
         6988  +	   _LT_TAGVAR(postdep_objects, $1)="$p"
         6989  +	 else
         6990  +	   _LT_TAGVAR(postdep_objects, $1)="$_LT_TAGVAR(postdep_objects, $1) $p"
         6991  +	 fi
         6992  +       fi
         6993  +       ;;
         6994  +
         6995  +    *) ;; # Ignore the rest.
         6996  +
         6997  +    esac
         6998  +  done
         6999  +
         7000  +  # Clean up.
         7001  +  rm -f a.out a.exe
         7002  +else
         7003  +  echo "libtool.m4: error: problem compiling $1 test program"
         7004  +fi
         7005  +
         7006  +$RM -f confest.$objext
         7007  +CFLAGS=$_lt_libdeps_save_CFLAGS
         7008  +
         7009  +# PORTME: override above test on systems where it is broken
         7010  +m4_if([$1], [CXX],
         7011  +[case $host_os in
         7012  +interix[[3-9]]*)
         7013  +  # Interix 3.5 installs completely hosed .la files for C++, so rather than
         7014  +  # hack all around it, let's just trust "g++" to DTRT.
         7015  +  _LT_TAGVAR(predep_objects,$1)=
         7016  +  _LT_TAGVAR(postdep_objects,$1)=
         7017  +  _LT_TAGVAR(postdeps,$1)=
         7018  +  ;;
         7019  +
         7020  +linux*)
         7021  +  case `$CC -V 2>&1 | sed 5q` in
         7022  +  *Sun\ C*)
         7023  +    # Sun C++ 5.9
         7024  +
         7025  +    # The more standards-conforming stlport4 library is
         7026  +    # incompatible with the Cstd library. Avoid specifying
         7027  +    # it if it's in CXXFLAGS. Ignore libCrun as
         7028  +    # -library=stlport4 depends on it.
         7029  +    case " $CXX $CXXFLAGS " in
         7030  +    *" -library=stlport4 "*)
         7031  +      solaris_use_stlport4=yes
         7032  +      ;;
         7033  +    esac
         7034  +
         7035  +    if test "$solaris_use_stlport4" != yes; then
         7036  +      _LT_TAGVAR(postdeps,$1)='-library=Cstd -library=Crun'
         7037  +    fi
         7038  +    ;;
         7039  +  esac
         7040  +  ;;
         7041  +
         7042  +solaris*)
         7043  +  case $cc_basename in
         7044  +  CC* | sunCC*)
         7045  +    # The more standards-conforming stlport4 library is
         7046  +    # incompatible with the Cstd library. Avoid specifying
         7047  +    # it if it's in CXXFLAGS. Ignore libCrun as
         7048  +    # -library=stlport4 depends on it.
         7049  +    case " $CXX $CXXFLAGS " in
         7050  +    *" -library=stlport4 "*)
         7051  +      solaris_use_stlport4=yes
         7052  +      ;;
         7053  +    esac
         7054  +
         7055  +    # Adding this requires a known-good setup of shared libraries for
         7056  +    # Sun compiler versions before 5.6, else PIC objects from an old
         7057  +    # archive will be linked into the output, leading to subtle bugs.
         7058  +    if test "$solaris_use_stlport4" != yes; then
         7059  +      _LT_TAGVAR(postdeps,$1)='-library=Cstd -library=Crun'
         7060  +    fi
         7061  +    ;;
         7062  +  esac
         7063  +  ;;
         7064  +esac
         7065  +])
         7066  +
         7067  +case " $_LT_TAGVAR(postdeps, $1) " in
         7068  +*" -lc "*) _LT_TAGVAR(archive_cmds_need_lc, $1)=no ;;
         7069  +esac
         7070  + _LT_TAGVAR(compiler_lib_search_dirs, $1)=
         7071  +if test -n "${_LT_TAGVAR(compiler_lib_search_path, $1)}"; then
         7072  + _LT_TAGVAR(compiler_lib_search_dirs, $1)=`echo " ${_LT_TAGVAR(compiler_lib_search_path, $1)}" | ${SED} -e 's! -L! !g' -e 's!^ !!'`
         7073  +fi
         7074  +_LT_TAGDECL([], [compiler_lib_search_dirs], [1],
         7075  +    [The directories searched by this compiler when creating a shared library])
         7076  +_LT_TAGDECL([], [predep_objects], [1],
         7077  +    [Dependencies to place before and after the objects being linked to
         7078  +    create a shared library])
         7079  +_LT_TAGDECL([], [postdep_objects], [1])
         7080  +_LT_TAGDECL([], [predeps], [1])
         7081  +_LT_TAGDECL([], [postdeps], [1])
         7082  +_LT_TAGDECL([], [compiler_lib_search_path], [1],
         7083  +    [The library search path used internally by the compiler when linking
         7084  +    a shared library])
         7085  +])# _LT_SYS_HIDDEN_LIBDEPS
         7086  +
         7087  +
         7088  +# _LT_LANG_F77_CONFIG([TAG])
         7089  +# --------------------------
         7090  +# Ensure that the configuration variables for a Fortran 77 compiler are
         7091  +# suitably defined.  These variables are subsequently used by _LT_CONFIG
         7092  +# to write the compiler configuration to `libtool'.
         7093  +m4_defun([_LT_LANG_F77_CONFIG],
         7094  +[AC_LANG_PUSH(Fortran 77)
         7095  +if test -z "$F77" || test "X$F77" = "Xno"; then
         7096  +  _lt_disable_F77=yes
         7097  +fi
         7098  +
         7099  +_LT_TAGVAR(archive_cmds_need_lc, $1)=no
         7100  +_LT_TAGVAR(allow_undefined_flag, $1)=
         7101  +_LT_TAGVAR(always_export_symbols, $1)=no
         7102  +_LT_TAGVAR(archive_expsym_cmds, $1)=
         7103  +_LT_TAGVAR(export_dynamic_flag_spec, $1)=
         7104  +_LT_TAGVAR(hardcode_direct, $1)=no
         7105  +_LT_TAGVAR(hardcode_direct_absolute, $1)=no
         7106  +_LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
         7107  +_LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)=
         7108  +_LT_TAGVAR(hardcode_libdir_separator, $1)=
         7109  +_LT_TAGVAR(hardcode_minus_L, $1)=no
         7110  +_LT_TAGVAR(hardcode_automatic, $1)=no
         7111  +_LT_TAGVAR(inherit_rpath, $1)=no
         7112  +_LT_TAGVAR(module_cmds, $1)=
         7113  +_LT_TAGVAR(module_expsym_cmds, $1)=
         7114  +_LT_TAGVAR(link_all_deplibs, $1)=unknown
         7115  +_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds
         7116  +_LT_TAGVAR(reload_flag, $1)=$reload_flag
         7117  +_LT_TAGVAR(reload_cmds, $1)=$reload_cmds
         7118  +_LT_TAGVAR(no_undefined_flag, $1)=
         7119  +_LT_TAGVAR(whole_archive_flag_spec, $1)=
         7120  +_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no
         7121  +
         7122  +# Source file extension for f77 test sources.
         7123  +ac_ext=f
         7124  +
         7125  +# Object file extension for compiled f77 test sources.
         7126  +objext=o
         7127  +_LT_TAGVAR(objext, $1)=$objext
         7128  +
         7129  +# No sense in running all these tests if we already determined that
         7130  +# the F77 compiler isn't working.  Some variables (like enable_shared)
         7131  +# are currently assumed to apply to all compilers on this platform,
         7132  +# and will be corrupted by setting them based on a non-working compiler.
         7133  +if test "$_lt_disable_F77" != yes; then
         7134  +  # Code to be used in simple compile tests
         7135  +  lt_simple_compile_test_code="\
         7136  +      subroutine t
         7137  +      return
         7138  +      end
         7139  +"
         7140  +
         7141  +  # Code to be used in simple link tests
         7142  +  lt_simple_link_test_code="\
         7143  +      program t
         7144  +      end
         7145  +"
         7146  +
         7147  +  # ltmain only uses $CC for tagged configurations so make sure $CC is set.
         7148  +  _LT_TAG_COMPILER
         7149  +
         7150  +  # save warnings/boilerplate of simple test code
         7151  +  _LT_COMPILER_BOILERPLATE
         7152  +  _LT_LINKER_BOILERPLATE
         7153  +
         7154  +  # Allow CC to be a program name with arguments.
         7155  +  lt_save_CC="$CC"
         7156  +  lt_save_GCC=$GCC
         7157  +  lt_save_CFLAGS=$CFLAGS
         7158  +  CC=${F77-"f77"}
         7159  +  CFLAGS=$FFLAGS
         7160  +  compiler=$CC
         7161  +  _LT_TAGVAR(compiler, $1)=$CC
         7162  +  _LT_CC_BASENAME([$compiler])
         7163  +  GCC=$G77
         7164  +  if test -n "$compiler"; then
         7165  +    AC_MSG_CHECKING([if libtool supports shared libraries])
         7166  +    AC_MSG_RESULT([$can_build_shared])
         7167  +
         7168  +    AC_MSG_CHECKING([whether to build shared libraries])
         7169  +    test "$can_build_shared" = "no" && enable_shared=no
         7170  +
         7171  +    # On AIX, shared libraries and static libraries use the same namespace, and
         7172  +    # are all built from PIC.
         7173  +    case $host_os in
         7174  +      aix3*)
         7175  +        test "$enable_shared" = yes && enable_static=no
         7176  +        if test -n "$RANLIB"; then
         7177  +          archive_cmds="$archive_cmds~\$RANLIB \$lib"
         7178  +          postinstall_cmds='$RANLIB $lib'
         7179  +        fi
         7180  +        ;;
         7181  +      aix[[4-9]]*)
         7182  +	if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then
         7183  +	  test "$enable_shared" = yes && enable_static=no
         7184  +	fi
         7185  +        ;;
         7186  +    esac
         7187  +    AC_MSG_RESULT([$enable_shared])
         7188  +
         7189  +    AC_MSG_CHECKING([whether to build static libraries])
         7190  +    # Make sure either enable_shared or enable_static is yes.
         7191  +    test "$enable_shared" = yes || enable_static=yes
         7192  +    AC_MSG_RESULT([$enable_static])
         7193  +
         7194  +    _LT_TAGVAR(GCC, $1)="$G77"
         7195  +    _LT_TAGVAR(LD, $1)="$LD"
         7196  +
         7197  +    ## CAVEAT EMPTOR:
         7198  +    ## There is no encapsulation within the following macros, do not change
         7199  +    ## the running order or otherwise move them around unless you know exactly
         7200  +    ## what you are doing...
         7201  +    _LT_COMPILER_PIC($1)
         7202  +    _LT_COMPILER_C_O($1)
         7203  +    _LT_COMPILER_FILE_LOCKS($1)
         7204  +    _LT_LINKER_SHLIBS($1)
         7205  +    _LT_SYS_DYNAMIC_LINKER($1)
         7206  +    _LT_LINKER_HARDCODE_LIBPATH($1)
         7207  +
         7208  +    _LT_CONFIG($1)
         7209  +  fi # test -n "$compiler"
         7210  +
         7211  +  GCC=$lt_save_GCC
         7212  +  CC="$lt_save_CC"
         7213  +  CFLAGS="$lt_save_CFLAGS"
         7214  +fi # test "$_lt_disable_F77" != yes
         7215  +
         7216  +AC_LANG_POP
         7217  +])# _LT_LANG_F77_CONFIG
         7218  +
         7219  +
         7220  +# _LT_LANG_FC_CONFIG([TAG])
         7221  +# -------------------------
         7222  +# Ensure that the configuration variables for a Fortran compiler are
         7223  +# suitably defined.  These variables are subsequently used by _LT_CONFIG
         7224  +# to write the compiler configuration to `libtool'.
         7225  +m4_defun([_LT_LANG_FC_CONFIG],
         7226  +[AC_LANG_PUSH(Fortran)
         7227  +
         7228  +if test -z "$FC" || test "X$FC" = "Xno"; then
         7229  +  _lt_disable_FC=yes
         7230  +fi
         7231  +
         7232  +_LT_TAGVAR(archive_cmds_need_lc, $1)=no
         7233  +_LT_TAGVAR(allow_undefined_flag, $1)=
         7234  +_LT_TAGVAR(always_export_symbols, $1)=no
         7235  +_LT_TAGVAR(archive_expsym_cmds, $1)=
         7236  +_LT_TAGVAR(export_dynamic_flag_spec, $1)=
         7237  +_LT_TAGVAR(hardcode_direct, $1)=no
         7238  +_LT_TAGVAR(hardcode_direct_absolute, $1)=no
         7239  +_LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
         7240  +_LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)=
         7241  +_LT_TAGVAR(hardcode_libdir_separator, $1)=
         7242  +_LT_TAGVAR(hardcode_minus_L, $1)=no
         7243  +_LT_TAGVAR(hardcode_automatic, $1)=no
         7244  +_LT_TAGVAR(inherit_rpath, $1)=no
         7245  +_LT_TAGVAR(module_cmds, $1)=
         7246  +_LT_TAGVAR(module_expsym_cmds, $1)=
         7247  +_LT_TAGVAR(link_all_deplibs, $1)=unknown
         7248  +_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds
         7249  +_LT_TAGVAR(reload_flag, $1)=$reload_flag
         7250  +_LT_TAGVAR(reload_cmds, $1)=$reload_cmds
         7251  +_LT_TAGVAR(no_undefined_flag, $1)=
         7252  +_LT_TAGVAR(whole_archive_flag_spec, $1)=
         7253  +_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no
         7254  +
         7255  +# Source file extension for fc test sources.
         7256  +ac_ext=${ac_fc_srcext-f}
         7257  +
         7258  +# Object file extension for compiled fc test sources.
         7259  +objext=o
         7260  +_LT_TAGVAR(objext, $1)=$objext
         7261  +
         7262  +# No sense in running all these tests if we already determined that
         7263  +# the FC compiler isn't working.  Some variables (like enable_shared)
         7264  +# are currently assumed to apply to all compilers on this platform,
         7265  +# and will be corrupted by setting them based on a non-working compiler.
         7266  +if test "$_lt_disable_FC" != yes; then
         7267  +  # Code to be used in simple compile tests
         7268  +  lt_simple_compile_test_code="\
         7269  +      subroutine t
         7270  +      return
         7271  +      end
         7272  +"
         7273  +
         7274  +  # Code to be used in simple link tests
         7275  +  lt_simple_link_test_code="\
         7276  +      program t
         7277  +      end
         7278  +"
         7279  +
         7280  +  # ltmain only uses $CC for tagged configurations so make sure $CC is set.
         7281  +  _LT_TAG_COMPILER
         7282  +
         7283  +  # save warnings/boilerplate of simple test code
         7284  +  _LT_COMPILER_BOILERPLATE
         7285  +  _LT_LINKER_BOILERPLATE
         7286  +
         7287  +  # Allow CC to be a program name with arguments.
         7288  +  lt_save_CC="$CC"
         7289  +  lt_save_GCC=$GCC
         7290  +  lt_save_CFLAGS=$CFLAGS
         7291  +  CC=${FC-"f95"}
         7292  +  CFLAGS=$FCFLAGS
         7293  +  compiler=$CC
         7294  +  GCC=$ac_cv_fc_compiler_gnu
         7295  +
         7296  +  _LT_TAGVAR(compiler, $1)=$CC
         7297  +  _LT_CC_BASENAME([$compiler])
         7298  +
         7299  +  if test -n "$compiler"; then
         7300  +    AC_MSG_CHECKING([if libtool supports shared libraries])
         7301  +    AC_MSG_RESULT([$can_build_shared])
         7302  +
         7303  +    AC_MSG_CHECKING([whether to build shared libraries])
         7304  +    test "$can_build_shared" = "no" && enable_shared=no
         7305  +
         7306  +    # On AIX, shared libraries and static libraries use the same namespace, and
         7307  +    # are all built from PIC.
         7308  +    case $host_os in
         7309  +      aix3*)
         7310  +        test "$enable_shared" = yes && enable_static=no
         7311  +        if test -n "$RANLIB"; then
         7312  +          archive_cmds="$archive_cmds~\$RANLIB \$lib"
         7313  +          postinstall_cmds='$RANLIB $lib'
         7314  +        fi
         7315  +        ;;
         7316  +      aix[[4-9]]*)
         7317  +	if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then
         7318  +	  test "$enable_shared" = yes && enable_static=no
         7319  +	fi
         7320  +        ;;
         7321  +    esac
         7322  +    AC_MSG_RESULT([$enable_shared])
         7323  +
         7324  +    AC_MSG_CHECKING([whether to build static libraries])
         7325  +    # Make sure either enable_shared or enable_static is yes.
         7326  +    test "$enable_shared" = yes || enable_static=yes
         7327  +    AC_MSG_RESULT([$enable_static])
         7328  +
         7329  +    _LT_TAGVAR(GCC, $1)="$ac_cv_fc_compiler_gnu"
         7330  +    _LT_TAGVAR(LD, $1)="$LD"
         7331  +
         7332  +    ## CAVEAT EMPTOR:
         7333  +    ## There is no encapsulation within the following macros, do not change
         7334  +    ## the running order or otherwise move them around unless you know exactly
         7335  +    ## what you are doing...
         7336  +    _LT_SYS_HIDDEN_LIBDEPS($1)
         7337  +    _LT_COMPILER_PIC($1)
         7338  +    _LT_COMPILER_C_O($1)
         7339  +    _LT_COMPILER_FILE_LOCKS($1)
         7340  +    _LT_LINKER_SHLIBS($1)
         7341  +    _LT_SYS_DYNAMIC_LINKER($1)
         7342  +    _LT_LINKER_HARDCODE_LIBPATH($1)
         7343  +
         7344  +    _LT_CONFIG($1)
         7345  +  fi # test -n "$compiler"
         7346  +
         7347  +  GCC=$lt_save_GCC
         7348  +  CC=$lt_save_CC
         7349  +  CFLAGS=$lt_save_CFLAGS
         7350  +fi # test "$_lt_disable_FC" != yes
         7351  +
         7352  +AC_LANG_POP
         7353  +])# _LT_LANG_FC_CONFIG
         7354  +
         7355  +
         7356  +# _LT_LANG_GCJ_CONFIG([TAG])
         7357  +# --------------------------
         7358  +# Ensure that the configuration variables for the GNU Java Compiler compiler
         7359  +# are suitably defined.  These variables are subsequently used by _LT_CONFIG
         7360  +# to write the compiler configuration to `libtool'.
         7361  +m4_defun([_LT_LANG_GCJ_CONFIG],
         7362  +[AC_REQUIRE([LT_PROG_GCJ])dnl
         7363  +AC_LANG_SAVE
         7364  +
         7365  +# Source file extension for Java test sources.
         7366  +ac_ext=java
         7367  +
         7368  +# Object file extension for compiled Java test sources.
         7369  +objext=o
         7370  +_LT_TAGVAR(objext, $1)=$objext
         7371  +
         7372  +# Code to be used in simple compile tests
         7373  +lt_simple_compile_test_code="class foo {}"
         7374  +
         7375  +# Code to be used in simple link tests
         7376  +lt_simple_link_test_code='public class conftest { public static void main(String[[]] argv) {}; }'
         7377  +
         7378  +# ltmain only uses $CC for tagged configurations so make sure $CC is set.
         7379  +_LT_TAG_COMPILER
         7380  +
         7381  +# save warnings/boilerplate of simple test code
         7382  +_LT_COMPILER_BOILERPLATE
         7383  +_LT_LINKER_BOILERPLATE
         7384  +
         7385  +# Allow CC to be a program name with arguments.
         7386  +lt_save_CC=$CC
         7387  +lt_save_CFLAGS=$CFLAGS
         7388  +lt_save_GCC=$GCC
         7389  +GCC=yes
         7390  +CC=${GCJ-"gcj"}
         7391  +CFLAGS=$GCJFLAGS
         7392  +compiler=$CC
         7393  +_LT_TAGVAR(compiler, $1)=$CC
         7394  +_LT_TAGVAR(LD, $1)="$LD"
         7395  +_LT_CC_BASENAME([$compiler])
         7396  +
         7397  +# GCJ did not exist at the time GCC didn't implicitly link libc in.
         7398  +_LT_TAGVAR(archive_cmds_need_lc, $1)=no
         7399  +
         7400  +_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds
         7401  +_LT_TAGVAR(reload_flag, $1)=$reload_flag
         7402  +_LT_TAGVAR(reload_cmds, $1)=$reload_cmds
         7403  +
         7404  +## CAVEAT EMPTOR:
         7405  +## There is no encapsulation within the following macros, do not change
         7406  +## the running order or otherwise move them around unless you know exactly
         7407  +## what you are doing...
         7408  +if test -n "$compiler"; then
         7409  +  _LT_COMPILER_NO_RTTI($1)
         7410  +  _LT_COMPILER_PIC($1)
         7411  +  _LT_COMPILER_C_O($1)
         7412  +  _LT_COMPILER_FILE_LOCKS($1)
         7413  +  _LT_LINKER_SHLIBS($1)
         7414  +  _LT_LINKER_HARDCODE_LIBPATH($1)
         7415  +
         7416  +  _LT_CONFIG($1)
         7417  +fi
         7418  +
         7419  +AC_LANG_RESTORE
         7420  +
         7421  +GCC=$lt_save_GCC
         7422  +CC=$lt_save_CC
         7423  +CFLAGS=$lt_save_CFLAGS
         7424  +])# _LT_LANG_GCJ_CONFIG
         7425  +
         7426  +
         7427  +# _LT_LANG_RC_CONFIG([TAG])
         7428  +# -------------------------
         7429  +# Ensure that the configuration variables for the Windows resource compiler
         7430  +# are suitably defined.  These variables are subsequently used by _LT_CONFIG
         7431  +# to write the compiler configuration to `libtool'.
         7432  +m4_defun([_LT_LANG_RC_CONFIG],
         7433  +[AC_REQUIRE([LT_PROG_RC])dnl
         7434  +AC_LANG_SAVE
         7435  +
         7436  +# Source file extension for RC test sources.
         7437  +ac_ext=rc
         7438  +
         7439  +# Object file extension for compiled RC test sources.
         7440  +objext=o
         7441  +_LT_TAGVAR(objext, $1)=$objext
         7442  +
         7443  +# Code to be used in simple compile tests
         7444  +lt_simple_compile_test_code='sample MENU { MENUITEM "&Soup", 100, CHECKED }'
         7445  +
         7446  +# Code to be used in simple link tests
         7447  +lt_simple_link_test_code="$lt_simple_compile_test_code"
         7448  +
         7449  +# ltmain only uses $CC for tagged configurations so make sure $CC is set.
         7450  +_LT_TAG_COMPILER
         7451  +
         7452  +# save warnings/boilerplate of simple test code
         7453  +_LT_COMPILER_BOILERPLATE
         7454  +_LT_LINKER_BOILERPLATE
         7455  +
         7456  +# Allow CC to be a program name with arguments.
         7457  +lt_save_CC="$CC"
         7458  +lt_save_CFLAGS=$CFLAGS
         7459  +lt_save_GCC=$GCC
         7460  +GCC=
         7461  +CC=${RC-"windres"}
         7462  +CFLAGS=
         7463  +compiler=$CC
         7464  +_LT_TAGVAR(compiler, $1)=$CC
         7465  +_LT_CC_BASENAME([$compiler])
         7466  +_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes
         7467  +
         7468  +if test -n "$compiler"; then
         7469  +  :
         7470  +  _LT_CONFIG($1)
         7471  +fi
         7472  +
         7473  +GCC=$lt_save_GCC
         7474  +AC_LANG_RESTORE
         7475  +CC=$lt_save_CC
         7476  +CFLAGS=$lt_save_CFLAGS
         7477  +])# _LT_LANG_RC_CONFIG
         7478  +
         7479  +
         7480  +# LT_PROG_GCJ
         7481  +# -----------
         7482  +AC_DEFUN([LT_PROG_GCJ],
         7483  +[m4_ifdef([AC_PROG_GCJ], [AC_PROG_GCJ],
         7484  +  [m4_ifdef([A][M_PROG_GCJ], [A][M_PROG_GCJ],
         7485  +    [AC_CHECK_TOOL(GCJ, gcj,)
         7486  +      test "x${GCJFLAGS+set}" = xset || GCJFLAGS="-g -O2"
         7487  +      AC_SUBST(GCJFLAGS)])])[]dnl
         7488  +])
         7489  +
         7490  +# Old name:
         7491  +AU_ALIAS([LT_AC_PROG_GCJ], [LT_PROG_GCJ])
         7492  +dnl aclocal-1.4 backwards compatibility:
         7493  +dnl AC_DEFUN([LT_AC_PROG_GCJ], [])
         7494  +
         7495  +
         7496  +# LT_PROG_RC
         7497  +# ----------
         7498  +AC_DEFUN([LT_PROG_RC],
         7499  +[AC_CHECK_TOOL(RC, windres,)
         7500  +])
         7501  +
         7502  +# Old name:
         7503  +AU_ALIAS([LT_AC_PROG_RC], [LT_PROG_RC])
         7504  +dnl aclocal-1.4 backwards compatibility:
         7505  +dnl AC_DEFUN([LT_AC_PROG_RC], [])
         7506  +
         7507  +
         7508  +# _LT_DECL_EGREP
         7509  +# --------------
         7510  +# If we don't have a new enough Autoconf to choose the best grep
         7511  +# available, choose the one first in the user's PATH.
         7512  +m4_defun([_LT_DECL_EGREP],
         7513  +[AC_REQUIRE([AC_PROG_EGREP])dnl
         7514  +AC_REQUIRE([AC_PROG_FGREP])dnl
         7515  +test -z "$GREP" && GREP=grep
         7516  +_LT_DECL([], [GREP], [1], [A grep program that handles long lines])
         7517  +_LT_DECL([], [EGREP], [1], [An ERE matcher])
         7518  +_LT_DECL([], [FGREP], [1], [A literal string matcher])
         7519  +dnl Non-bleeding-edge autoconf doesn't subst GREP, so do it here too
         7520  +AC_SUBST([GREP])
         7521  +])
         7522  +
         7523  +
         7524  +# _LT_DECL_OBJDUMP
         7525  +# --------------
         7526  +# If we don't have a new enough Autoconf to choose the best objdump
         7527  +# available, choose the one first in the user's PATH.
         7528  +m4_defun([_LT_DECL_OBJDUMP],
         7529  +[AC_CHECK_TOOL(OBJDUMP, objdump, false)
         7530  +test -z "$OBJDUMP" && OBJDUMP=objdump
         7531  +_LT_DECL([], [OBJDUMP], [1], [An object symbol dumper])
         7532  +AC_SUBST([OBJDUMP])
         7533  +])
         7534  +
         7535  +# _LT_DECL_DLLTOOL
         7536  +# ----------------
         7537  +# Ensure DLLTOOL variable is set.
         7538  +m4_defun([_LT_DECL_DLLTOOL],
         7539  +[AC_CHECK_TOOL(DLLTOOL, dlltool, false)
         7540  +test -z "$DLLTOOL" && DLLTOOL=dlltool
         7541  +_LT_DECL([], [DLLTOOL], [1], [DLL creation program])
         7542  +AC_SUBST([DLLTOOL])
         7543  +])
         7544  +
         7545  +# _LT_DECL_SED
         7546  +# ------------
         7547  +# Check for a fully-functional sed program, that truncates
         7548  +# as few characters as possible.  Prefer GNU sed if found.
         7549  +m4_defun([_LT_DECL_SED],
         7550  +[AC_PROG_SED
         7551  +test -z "$SED" && SED=sed
         7552  +Xsed="$SED -e 1s/^X//"
         7553  +_LT_DECL([], [SED], [1], [A sed program that does not truncate output])
         7554  +_LT_DECL([], [Xsed], ["\$SED -e 1s/^X//"],
         7555  +    [Sed that helps us avoid accidentally triggering echo(1) options like -n])
         7556  +])# _LT_DECL_SED
         7557  +
         7558  +m4_ifndef([AC_PROG_SED], [
         7559  +############################################################
         7560  +# NOTE: This macro has been submitted for inclusion into   #
         7561  +#  GNU Autoconf as AC_PROG_SED.  When it is available in   #
         7562  +#  a released version of Autoconf we should remove this    #
         7563  +#  macro and use it instead.                               #
         7564  +############################################################
         7565  +
         7566  +m4_defun([AC_PROG_SED],
         7567  +[AC_MSG_CHECKING([for a sed that does not truncate output])
         7568  +AC_CACHE_VAL(lt_cv_path_SED,
         7569  +[# Loop through the user's path and test for sed and gsed.
         7570  +# Then use that list of sed's as ones to test for truncation.
         7571  +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
         7572  +for as_dir in $PATH
         7573  +do
         7574  +  IFS=$as_save_IFS
         7575  +  test -z "$as_dir" && as_dir=.
         7576  +  for lt_ac_prog in sed gsed; do
         7577  +    for ac_exec_ext in '' $ac_executable_extensions; do
         7578  +      if $as_executable_p "$as_dir/$lt_ac_prog$ac_exec_ext"; then
         7579  +        lt_ac_sed_list="$lt_ac_sed_list $as_dir/$lt_ac_prog$ac_exec_ext"
         7580  +      fi
         7581  +    done
         7582  +  done
         7583  +done
         7584  +IFS=$as_save_IFS
         7585  +lt_ac_max=0
         7586  +lt_ac_count=0
         7587  +# Add /usr/xpg4/bin/sed as it is typically found on Solaris
         7588  +# along with /bin/sed that truncates output.
         7589  +for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do
         7590  +  test ! -f $lt_ac_sed && continue
         7591  +  cat /dev/null > conftest.in
         7592  +  lt_ac_count=0
         7593  +  echo $ECHO_N "0123456789$ECHO_C" >conftest.in
         7594  +  # Check for GNU sed and select it if it is found.
         7595  +  if "$lt_ac_sed" --version 2>&1 < /dev/null | grep 'GNU' > /dev/null; then
         7596  +    lt_cv_path_SED=$lt_ac_sed
         7597  +    break
         7598  +  fi
         7599  +  while true; do
         7600  +    cat conftest.in conftest.in >conftest.tmp
         7601  +    mv conftest.tmp conftest.in
         7602  +    cp conftest.in conftest.nl
         7603  +    echo >>conftest.nl
         7604  +    $lt_ac_sed -e 's/a$//' < conftest.nl >conftest.out || break
         7605  +    cmp -s conftest.out conftest.nl || break
         7606  +    # 10000 chars as input seems more than enough
         7607  +    test $lt_ac_count -gt 10 && break
         7608  +    lt_ac_count=`expr $lt_ac_count + 1`
         7609  +    if test $lt_ac_count -gt $lt_ac_max; then
         7610  +      lt_ac_max=$lt_ac_count
         7611  +      lt_cv_path_SED=$lt_ac_sed
         7612  +    fi
         7613  +  done
         7614  +done
         7615  +])
         7616  +SED=$lt_cv_path_SED
         7617  +AC_SUBST([SED])
         7618  +AC_MSG_RESULT([$SED])
         7619  +])#AC_PROG_SED
         7620  +])#m4_ifndef
         7621  +
         7622  +# Old name:
         7623  +AU_ALIAS([LT_AC_PROG_SED], [AC_PROG_SED])
         7624  +dnl aclocal-1.4 backwards compatibility:
         7625  +dnl AC_DEFUN([LT_AC_PROG_SED], [])
         7626  +
         7627  +
         7628  +# _LT_CHECK_SHELL_FEATURES
         7629  +# ------------------------
         7630  +# Find out whether the shell is Bourne or XSI compatible,
         7631  +# or has some other useful features.
         7632  +m4_defun([_LT_CHECK_SHELL_FEATURES],
         7633  +[AC_MSG_CHECKING([whether the shell understands some XSI constructs])
         7634  +# Try some XSI features
         7635  +xsi_shell=no
         7636  +( _lt_dummy="a/b/c"
         7637  +  test "${_lt_dummy##*/},${_lt_dummy%/*},${_lt_dummy#??}"${_lt_dummy%"$_lt_dummy"}, \
         7638  +      = c,a/b,b/c, \
         7639  +    && eval 'test $(( 1 + 1 )) -eq 2 \
         7640  +    && test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \
         7641  +  && xsi_shell=yes
         7642  +AC_MSG_RESULT([$xsi_shell])
         7643  +_LT_CONFIG_LIBTOOL_INIT([xsi_shell='$xsi_shell'])
         7644  +
         7645  +AC_MSG_CHECKING([whether the shell understands "+="])
         7646  +lt_shell_append=no
         7647  +( foo=bar; set foo baz; eval "$[1]+=\$[2]" && test "$foo" = barbaz ) \
         7648  +    >/dev/null 2>&1 \
         7649  +  && lt_shell_append=yes
         7650  +AC_MSG_RESULT([$lt_shell_append])
         7651  +_LT_CONFIG_LIBTOOL_INIT([lt_shell_append='$lt_shell_append'])
         7652  +
         7653  +if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then
         7654  +  lt_unset=unset
         7655  +else
         7656  +  lt_unset=false
         7657  +fi
         7658  +_LT_DECL([], [lt_unset], [0], [whether the shell understands "unset"])dnl
         7659  +
         7660  +# test EBCDIC or ASCII
         7661  +case `echo X|tr X '\101'` in
         7662  + A) # ASCII based system
         7663  +    # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr
         7664  +  lt_SP2NL='tr \040 \012'
         7665  +  lt_NL2SP='tr \015\012 \040\040'
         7666  +  ;;
         7667  + *) # EBCDIC based system
         7668  +  lt_SP2NL='tr \100 \n'
         7669  +  lt_NL2SP='tr \r\n \100\100'
         7670  +  ;;
         7671  +esac
         7672  +_LT_DECL([SP2NL], [lt_SP2NL], [1], [turn spaces into newlines])dnl
         7673  +_LT_DECL([NL2SP], [lt_NL2SP], [1], [turn newlines into spaces])dnl
         7674  +])# _LT_CHECK_SHELL_FEATURES
         7675  +
         7676  +
         7677  +# _LT_PROG_FUNCTION_REPLACE (FUNCNAME, REPLACEMENT-BODY)
         7678  +# ------------------------------------------------------
         7679  +# In `$cfgfile', look for function FUNCNAME delimited by `^FUNCNAME ()$' and
         7680  +# '^} FUNCNAME ', and replace its body with REPLACEMENT-BODY.
         7681  +m4_defun([_LT_PROG_FUNCTION_REPLACE],
         7682  +[dnl {
         7683  +sed -e '/^$1 ()$/,/^} # $1 /c\
         7684  +$1 ()\
         7685  +{\
         7686  +m4_bpatsubsts([$2], [$], [\\], [^\([	 ]\)], [\\\1])
         7687  +} # Extended-shell $1 implementation' "$cfgfile" > $cfgfile.tmp \
         7688  +  && mv -f "$cfgfile.tmp" "$cfgfile" \
         7689  +    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
         7690  +test 0 -eq $? || _lt_function_replace_fail=:
         7691  +])
         7692  +
         7693  +
         7694  +# _LT_PROG_REPLACE_SHELLFNS
         7695  +# -------------------------
         7696  +# Replace existing portable implementations of several shell functions with
         7697  +# equivalent extended shell implementations where those features are available..
         7698  +m4_defun([_LT_PROG_REPLACE_SHELLFNS],
         7699  +[if test x"$xsi_shell" = xyes; then
         7700  +  _LT_PROG_FUNCTION_REPLACE([func_dirname], [dnl
         7701  +    case ${1} in
         7702  +      */*) func_dirname_result="${1%/*}${2}" ;;
         7703  +      *  ) func_dirname_result="${3}" ;;
         7704  +    esac])
         7705  +
         7706  +  _LT_PROG_FUNCTION_REPLACE([func_basename], [dnl
         7707  +    func_basename_result="${1##*/}"])
         7708  +
         7709  +  _LT_PROG_FUNCTION_REPLACE([func_dirname_and_basename], [dnl
         7710  +    case ${1} in
         7711  +      */*) func_dirname_result="${1%/*}${2}" ;;
         7712  +      *  ) func_dirname_result="${3}" ;;
         7713  +    esac
         7714  +    func_basename_result="${1##*/}"])
         7715  +
         7716  +  _LT_PROG_FUNCTION_REPLACE([func_stripname], [dnl
         7717  +    # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are
         7718  +    # positional parameters, so assign one to ordinary parameter first.
         7719  +    func_stripname_result=${3}
         7720  +    func_stripname_result=${func_stripname_result#"${1}"}
         7721  +    func_stripname_result=${func_stripname_result%"${2}"}])
         7722  +
         7723  +  _LT_PROG_FUNCTION_REPLACE([func_split_long_opt], [dnl
         7724  +    func_split_long_opt_name=${1%%=*}
         7725  +    func_split_long_opt_arg=${1#*=}])
         7726  +
         7727  +  _LT_PROG_FUNCTION_REPLACE([func_split_short_opt], [dnl
         7728  +    func_split_short_opt_arg=${1#??}
         7729  +    func_split_short_opt_name=${1%"$func_split_short_opt_arg"}])
         7730  +
         7731  +  _LT_PROG_FUNCTION_REPLACE([func_lo2o], [dnl
         7732  +    case ${1} in
         7733  +      *.lo) func_lo2o_result=${1%.lo}.${objext} ;;
         7734  +      *)    func_lo2o_result=${1} ;;
         7735  +    esac])
         7736  +
         7737  +  _LT_PROG_FUNCTION_REPLACE([func_xform], [    func_xform_result=${1%.*}.lo])
         7738  +
         7739  +  _LT_PROG_FUNCTION_REPLACE([func_arith], [    func_arith_result=$(( $[*] ))])
         7740  +
         7741  +  _LT_PROG_FUNCTION_REPLACE([func_len], [    func_len_result=${#1}])
         7742  +fi
         7743  +
         7744  +if test x"$lt_shell_append" = xyes; then
         7745  +  _LT_PROG_FUNCTION_REPLACE([func_append], [    eval "${1}+=\\${2}"])
         7746  +
         7747  +  _LT_PROG_FUNCTION_REPLACE([func_append_quoted], [dnl
         7748  +    func_quote_for_eval "${2}"
         7749  +dnl m4 expansion turns \\\\ into \\, and then the shell eval turns that into \
         7750  +    eval "${1}+=\\\\ \\$func_quote_for_eval_result"])
         7751  +
         7752  +  # Save a `func_append' function call where possible by direct use of '+='
         7753  +  sed -e 's%func_append \([[a-zA-Z_]]\{1,\}\) "%\1+="%g' $cfgfile > $cfgfile.tmp \
         7754  +    && mv -f "$cfgfile.tmp" "$cfgfile" \
         7755  +      || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
         7756  +  test 0 -eq $? || _lt_function_replace_fail=:
         7757  +else
         7758  +  # Save a `func_append' function call even when '+=' is not available
         7759  +  sed -e 's%func_append \([[a-zA-Z_]]\{1,\}\) "%\1="$\1%g' $cfgfile > $cfgfile.tmp \
         7760  +    && mv -f "$cfgfile.tmp" "$cfgfile" \
         7761  +      || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
         7762  +  test 0 -eq $? || _lt_function_replace_fail=:
         7763  +fi
         7764  +
         7765  +if test x"$_lt_function_replace_fail" = x":"; then
         7766  +  AC_MSG_WARN([Unable to substitute extended shell functions in $ofile])
         7767  +fi
         7768  +])
         7769  +
         7770  +# _LT_PATH_CONVERSION_FUNCTIONS
         7771  +# -----------------------------
         7772  +# Determine which file name conversion functions should be used by
         7773  +# func_to_host_file (and, implicitly, by func_to_host_path).  These are needed
         7774  +# for certain cross-compile configurations and native mingw.
         7775  +m4_defun([_LT_PATH_CONVERSION_FUNCTIONS],
         7776  +[AC_REQUIRE([AC_CANONICAL_HOST])dnl
         7777  +AC_REQUIRE([AC_CANONICAL_BUILD])dnl
         7778  +AC_MSG_CHECKING([how to convert $build file names to $host format])
         7779  +AC_CACHE_VAL(lt_cv_to_host_file_cmd,
         7780  +[case $host in
         7781  +  *-*-mingw* )
         7782  +    case $build in
         7783  +      *-*-mingw* ) # actually msys
         7784  +        lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32
         7785  +        ;;
         7786  +      *-*-cygwin* )
         7787  +        lt_cv_to_host_file_cmd=func_convert_file_cygwin_to_w32
         7788  +        ;;
         7789  +      * ) # otherwise, assume *nix
         7790  +        lt_cv_to_host_file_cmd=func_convert_file_nix_to_w32
         7791  +        ;;
         7792  +    esac
         7793  +    ;;
         7794  +  *-*-cygwin* )
         7795  +    case $build in
         7796  +      *-*-mingw* ) # actually msys
         7797  +        lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin
         7798  +        ;;
         7799  +      *-*-cygwin* )
         7800  +        lt_cv_to_host_file_cmd=func_convert_file_noop
         7801  +        ;;
         7802  +      * ) # otherwise, assume *nix
         7803  +        lt_cv_to_host_file_cmd=func_convert_file_nix_to_cygwin
         7804  +        ;;
         7805  +    esac
         7806  +    ;;
         7807  +  * ) # unhandled hosts (and "normal" native builds)
         7808  +    lt_cv_to_host_file_cmd=func_convert_file_noop
         7809  +    ;;
         7810  +esac
         7811  +])
         7812  +to_host_file_cmd=$lt_cv_to_host_file_cmd
         7813  +AC_MSG_RESULT([$lt_cv_to_host_file_cmd])
         7814  +_LT_DECL([to_host_file_cmd], [lt_cv_to_host_file_cmd],
         7815  +         [0], [convert $build file names to $host format])dnl
         7816  +
         7817  +AC_MSG_CHECKING([how to convert $build file names to toolchain format])
         7818  +AC_CACHE_VAL(lt_cv_to_tool_file_cmd,
         7819  +[#assume ordinary cross tools, or native build.
         7820  +lt_cv_to_tool_file_cmd=func_convert_file_noop
         7821  +case $host in
         7822  +  *-*-mingw* )
         7823  +    case $build in
         7824  +      *-*-mingw* ) # actually msys
         7825  +        lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32
         7826  +        ;;
         7827  +    esac
         7828  +    ;;
         7829  +esac
         7830  +])
         7831  +to_tool_file_cmd=$lt_cv_to_tool_file_cmd
         7832  +AC_MSG_RESULT([$lt_cv_to_tool_file_cmd])
         7833  +_LT_DECL([to_tool_file_cmd], [lt_cv_to_tool_file_cmd],
         7834  +         [0], [convert $build files to toolchain format])dnl
         7835  +])# _LT_PATH_CONVERSION_FUNCTIONS

Added m4/ltoptions.m4.

            1  +# Helper functions for option handling.                    -*- Autoconf -*-
            2  +#
            3  +#   Copyright (C) 2004, 2005, 2007, 2008, 2009 Free Software Foundation,
            4  +#   Inc.
            5  +#   Written by Gary V. Vaughan, 2004
            6  +#
            7  +# This file is free software; the Free Software Foundation gives
            8  +# unlimited permission to copy and/or distribute it, with or without
            9  +# modifications, as long as this notice is preserved.
           10  +
           11  +# serial 7 ltoptions.m4
           12  +
           13  +# This is to help aclocal find these macros, as it can't see m4_define.
           14  +AC_DEFUN([LTOPTIONS_VERSION], [m4_if([1])])
           15  +
           16  +
           17  +# _LT_MANGLE_OPTION(MACRO-NAME, OPTION-NAME)
           18  +# ------------------------------------------
           19  +m4_define([_LT_MANGLE_OPTION],
           20  +[[_LT_OPTION_]m4_bpatsubst($1__$2, [[^a-zA-Z0-9_]], [_])])
           21  +
           22  +
           23  +# _LT_SET_OPTION(MACRO-NAME, OPTION-NAME)
           24  +# ---------------------------------------
           25  +# Set option OPTION-NAME for macro MACRO-NAME, and if there is a
           26  +# matching handler defined, dispatch to it.  Other OPTION-NAMEs are
           27  +# saved as a flag.
           28  +m4_define([_LT_SET_OPTION],
           29  +[m4_define(_LT_MANGLE_OPTION([$1], [$2]))dnl
           30  +m4_ifdef(_LT_MANGLE_DEFUN([$1], [$2]),
           31  +        _LT_MANGLE_DEFUN([$1], [$2]),
           32  +    [m4_warning([Unknown $1 option `$2'])])[]dnl
           33  +])
           34  +
           35  +
           36  +# _LT_IF_OPTION(MACRO-NAME, OPTION-NAME, IF-SET, [IF-NOT-SET])
           37  +# ------------------------------------------------------------
           38  +# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise.
           39  +m4_define([_LT_IF_OPTION],
           40  +[m4_ifdef(_LT_MANGLE_OPTION([$1], [$2]), [$3], [$4])])
           41  +
           42  +
           43  +# _LT_UNLESS_OPTIONS(MACRO-NAME, OPTION-LIST, IF-NOT-SET)
           44  +# -------------------------------------------------------
           45  +# Execute IF-NOT-SET unless all options in OPTION-LIST for MACRO-NAME
           46  +# are set.
           47  +m4_define([_LT_UNLESS_OPTIONS],
           48  +[m4_foreach([_LT_Option], m4_split(m4_normalize([$2])),
           49  +	    [m4_ifdef(_LT_MANGLE_OPTION([$1], _LT_Option),
           50  +		      [m4_define([$0_found])])])[]dnl
           51  +m4_ifdef([$0_found], [m4_undefine([$0_found])], [$3
           52  +])[]dnl
           53  +])
           54  +
           55  +
           56  +# _LT_SET_OPTIONS(MACRO-NAME, OPTION-LIST)
           57  +# ----------------------------------------
           58  +# OPTION-LIST is a space-separated list of Libtool options associated
           59  +# with MACRO-NAME.  If any OPTION has a matching handler declared with
           60  +# LT_OPTION_DEFINE, dispatch to that macro; otherwise complain about
           61  +# the unknown option and exit.
           62  +m4_defun([_LT_SET_OPTIONS],
           63  +[# Set options
           64  +m4_foreach([_LT_Option], m4_split(m4_normalize([$2])),
           65  +    [_LT_SET_OPTION([$1], _LT_Option)])
           66  +
           67  +m4_if([$1],[LT_INIT],[
           68  +  dnl
           69  +  dnl Simply set some default values (i.e off) if boolean options were not
           70  +  dnl specified:
           71  +  _LT_UNLESS_OPTIONS([LT_INIT], [dlopen], [enable_dlopen=no
           72  +  ])
           73  +  _LT_UNLESS_OPTIONS([LT_INIT], [win32-dll], [enable_win32_dll=no
           74  +  ])
           75  +  dnl
           76  +  dnl If no reference was made to various pairs of opposing options, then
           77  +  dnl we run the default mode handler for the pair.  For example, if neither
           78  +  dnl `shared' nor `disable-shared' was passed, we enable building of shared
           79  +  dnl archives by default:
           80  +  _LT_UNLESS_OPTIONS([LT_INIT], [shared disable-shared], [_LT_ENABLE_SHARED])
           81  +  _LT_UNLESS_OPTIONS([LT_INIT], [static disable-static], [_LT_ENABLE_STATIC])
           82  +  _LT_UNLESS_OPTIONS([LT_INIT], [pic-only no-pic], [_LT_WITH_PIC])
           83  +  _LT_UNLESS_OPTIONS([LT_INIT], [fast-install disable-fast-install],
           84  +  		   [_LT_ENABLE_FAST_INSTALL])
           85  +  ])
           86  +])# _LT_SET_OPTIONS
           87  +
           88  +
           89  +## --------------------------------- ##
           90  +## Macros to handle LT_INIT options. ##
           91  +## --------------------------------- ##
           92  +
           93  +# _LT_MANGLE_DEFUN(MACRO-NAME, OPTION-NAME)
           94  +# -----------------------------------------
           95  +m4_define([_LT_MANGLE_DEFUN],
           96  +[[_LT_OPTION_DEFUN_]m4_bpatsubst(m4_toupper([$1__$2]), [[^A-Z0-9_]], [_])])
           97  +
           98  +
           99  +# LT_OPTION_DEFINE(MACRO-NAME, OPTION-NAME, CODE)
          100  +# -----------------------------------------------
          101  +m4_define([LT_OPTION_DEFINE],
          102  +[m4_define(_LT_MANGLE_DEFUN([$1], [$2]), [$3])[]dnl
          103  +])# LT_OPTION_DEFINE
          104  +
          105  +
          106  +# dlopen
          107  +# ------
          108  +LT_OPTION_DEFINE([LT_INIT], [dlopen], [enable_dlopen=yes
          109  +])
          110  +
          111  +AU_DEFUN([AC_LIBTOOL_DLOPEN],
          112  +[_LT_SET_OPTION([LT_INIT], [dlopen])
          113  +AC_DIAGNOSE([obsolete],
          114  +[$0: Remove this warning and the call to _LT_SET_OPTION when you
          115  +put the `dlopen' option into LT_INIT's first parameter.])
          116  +])
          117  +
          118  +dnl aclocal-1.4 backwards compatibility:
          119  +dnl AC_DEFUN([AC_LIBTOOL_DLOPEN], [])
          120  +
          121  +
          122  +# win32-dll
          123  +# ---------
          124  +# Declare package support for building win32 dll's.
          125  +LT_OPTION_DEFINE([LT_INIT], [win32-dll],
          126  +[enable_win32_dll=yes
          127  +
          128  +case $host in
          129  +*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-cegcc*)
          130  +  AC_CHECK_TOOL(AS, as, false)
          131  +  AC_CHECK_TOOL(DLLTOOL, dlltool, false)
          132  +  AC_CHECK_TOOL(OBJDUMP, objdump, false)
          133  +  ;;
          134  +esac
          135  +
          136  +test -z "$AS" && AS=as
          137  +_LT_DECL([], [AS],      [1], [Assembler program])dnl
          138  +
          139  +test -z "$DLLTOOL" && DLLTOOL=dlltool
          140  +_LT_DECL([], [DLLTOOL], [1], [DLL creation program])dnl
          141  +
          142  +test -z "$OBJDUMP" && OBJDUMP=objdump
          143  +_LT_DECL([], [OBJDUMP], [1], [Object dumper program])dnl
          144  +])# win32-dll
          145  +
          146  +AU_DEFUN([AC_LIBTOOL_WIN32_DLL],
          147  +[AC_REQUIRE([AC_CANONICAL_HOST])dnl
          148  +_LT_SET_OPTION([LT_INIT], [win32-dll])
          149  +AC_DIAGNOSE([obsolete],
          150  +[$0: Remove this warning and the call to _LT_SET_OPTION when you
          151  +put the `win32-dll' option into LT_INIT's first parameter.])
          152  +])
          153  +
          154  +dnl aclocal-1.4 backwards compatibility:
          155  +dnl AC_DEFUN([AC_LIBTOOL_WIN32_DLL], [])
          156  +
          157  +
          158  +# _LT_ENABLE_SHARED([DEFAULT])
          159  +# ----------------------------
          160  +# implement the --enable-shared flag, and supports the `shared' and
          161  +# `disable-shared' LT_INIT options.
          162  +# DEFAULT is either `yes' or `no'.  If omitted, it defaults to `yes'.
          163  +m4_define([_LT_ENABLE_SHARED],
          164  +[m4_define([_LT_ENABLE_SHARED_DEFAULT], [m4_if($1, no, no, yes)])dnl
          165  +AC_ARG_ENABLE([shared],
          166  +    [AS_HELP_STRING([--enable-shared@<:@=PKGS@:>@],
          167  +	[build shared libraries @<:@default=]_LT_ENABLE_SHARED_DEFAULT[@:>@])],
          168  +    [p=${PACKAGE-default}
          169  +    case $enableval in
          170  +    yes) enable_shared=yes ;;
          171  +    no) enable_shared=no ;;
          172  +    *)
          173  +      enable_shared=no
          174  +      # Look at the argument we got.  We use all the common list separators.
          175  +      lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
          176  +      for pkg in $enableval; do
          177  +	IFS="$lt_save_ifs"
          178  +	if test "X$pkg" = "X$p"; then
          179  +	  enable_shared=yes
          180  +	fi
          181  +      done
          182  +      IFS="$lt_save_ifs"
          183  +      ;;
          184  +    esac],
          185  +    [enable_shared=]_LT_ENABLE_SHARED_DEFAULT)
          186  +
          187  +    _LT_DECL([build_libtool_libs], [enable_shared], [0],
          188  +	[Whether or not to build shared libraries])
          189  +])# _LT_ENABLE_SHARED
          190  +
          191  +LT_OPTION_DEFINE([LT_INIT], [shared], [_LT_ENABLE_SHARED([yes])])
          192  +LT_OPTION_DEFINE([LT_INIT], [disable-shared], [_LT_ENABLE_SHARED([no])])
          193  +
          194  +# Old names:
          195  +AC_DEFUN([AC_ENABLE_SHARED],
          196  +[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[shared])
          197  +])
          198  +
          199  +AC_DEFUN([AC_DISABLE_SHARED],
          200  +[_LT_SET_OPTION([LT_INIT], [disable-shared])
          201  +])
          202  +
          203  +AU_DEFUN([AM_ENABLE_SHARED], [AC_ENABLE_SHARED($@)])
          204  +AU_DEFUN([AM_DISABLE_SHARED], [AC_DISABLE_SHARED($@)])
          205  +
          206  +dnl aclocal-1.4 backwards compatibility:
          207  +dnl AC_DEFUN([AM_ENABLE_SHARED], [])
          208  +dnl AC_DEFUN([AM_DISABLE_SHARED], [])
          209  +
          210  +
          211  +
          212  +# _LT_ENABLE_STATIC([DEFAULT])
          213  +# ----------------------------
          214  +# implement the --enable-static flag, and support the `static' and
          215  +# `disable-static' LT_INIT options.
          216  +# DEFAULT is either `yes' or `no'.  If omitted, it defaults to `yes'.
          217  +m4_define([_LT_ENABLE_STATIC],
          218  +[m4_define([_LT_ENABLE_STATIC_DEFAULT], [m4_if($1, no, no, yes)])dnl
          219  +AC_ARG_ENABLE([static],
          220  +    [AS_HELP_STRING([--enable-static@<:@=PKGS@:>@],
          221  +	[build static libraries @<:@default=]_LT_ENABLE_STATIC_DEFAULT[@:>@])],
          222  +    [p=${PACKAGE-default}
          223  +    case $enableval in
          224  +    yes) enable_static=yes ;;
          225  +    no) enable_static=no ;;
          226  +    *)
          227  +     enable_static=no
          228  +      # Look at the argument we got.  We use all the common list separators.
          229  +      lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
          230  +      for pkg in $enableval; do
          231  +	IFS="$lt_save_ifs"
          232  +	if test "X$pkg" = "X$p"; then
          233  +	  enable_static=yes
          234  +	fi
          235  +      done
          236  +      IFS="$lt_save_ifs"
          237  +      ;;
          238  +    esac],
          239  +    [enable_static=]_LT_ENABLE_STATIC_DEFAULT)
          240  +
          241  +    _LT_DECL([build_old_libs], [enable_static], [0],
          242  +	[Whether or not to build static libraries])
          243  +])# _LT_ENABLE_STATIC
          244  +
          245  +LT_OPTION_DEFINE([LT_INIT], [static], [_LT_ENABLE_STATIC([yes])])
          246  +LT_OPTION_DEFINE([LT_INIT], [disable-static], [_LT_ENABLE_STATIC([no])])
          247  +
          248  +# Old names:
          249  +AC_DEFUN([AC_ENABLE_STATIC],
          250  +[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[static])
          251  +])
          252  +
          253  +AC_DEFUN([AC_DISABLE_STATIC],
          254  +[_LT_SET_OPTION([LT_INIT], [disable-static])
          255  +])
          256  +
          257  +AU_DEFUN([AM_ENABLE_STATIC], [AC_ENABLE_STATIC($@)])
          258  +AU_DEFUN([AM_DISABLE_STATIC], [AC_DISABLE_STATIC($@)])
          259  +
          260  +dnl aclocal-1.4 backwards compatibility:
          261  +dnl AC_DEFUN([AM_ENABLE_STATIC], [])
          262  +dnl AC_DEFUN([AM_DISABLE_STATIC], [])
          263  +
          264  +
          265  +
          266  +# _LT_ENABLE_FAST_INSTALL([DEFAULT])
          267  +# ----------------------------------
          268  +# implement the --enable-fast-install flag, and support the `fast-install'
          269  +# and `disable-fast-install' LT_INIT options.
          270  +# DEFAULT is either `yes' or `no'.  If omitted, it defaults to `yes'.
          271  +m4_define([_LT_ENABLE_FAST_INSTALL],
          272  +[m4_define([_LT_ENABLE_FAST_INSTALL_DEFAULT], [m4_if($1, no, no, yes)])dnl
          273  +AC_ARG_ENABLE([fast-install],
          274  +    [AS_HELP_STRING([--enable-fast-install@<:@=PKGS@:>@],
          275  +    [optimize for fast installation @<:@default=]_LT_ENABLE_FAST_INSTALL_DEFAULT[@:>@])],
          276  +    [p=${PACKAGE-default}
          277  +    case $enableval in
          278  +    yes) enable_fast_install=yes ;;
          279  +    no) enable_fast_install=no ;;
          280  +    *)
          281  +      enable_fast_install=no
          282  +      # Look at the argument we got.  We use all the common list separators.
          283  +      lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
          284  +      for pkg in $enableval; do
          285  +	IFS="$lt_save_ifs"
          286  +	if test "X$pkg" = "X$p"; then
          287  +	  enable_fast_install=yes
          288  +	fi
          289  +      done
          290  +      IFS="$lt_save_ifs"
          291  +      ;;
          292  +    esac],
          293  +    [enable_fast_install=]_LT_ENABLE_FAST_INSTALL_DEFAULT)
          294  +
          295  +_LT_DECL([fast_install], [enable_fast_install], [0],
          296  +	 [Whether or not to optimize for fast installation])dnl
          297  +])# _LT_ENABLE_FAST_INSTALL
          298  +
          299  +LT_OPTION_DEFINE([LT_INIT], [fast-install], [_LT_ENABLE_FAST_INSTALL([yes])])
          300  +LT_OPTION_DEFINE([LT_INIT], [disable-fast-install], [_LT_ENABLE_FAST_INSTALL([no])])
          301  +
          302  +# Old names:
          303  +AU_DEFUN([AC_ENABLE_FAST_INSTALL],
          304  +[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[fast-install])
          305  +AC_DIAGNOSE([obsolete],
          306  +[$0: Remove this warning and the call to _LT_SET_OPTION when you put
          307  +the `fast-install' option into LT_INIT's first parameter.])
          308  +])
          309  +
          310  +AU_DEFUN([AC_DISABLE_FAST_INSTALL],
          311  +[_LT_SET_OPTION([LT_INIT], [disable-fast-install])
          312  +AC_DIAGNOSE([obsolete],
          313  +[$0: Remove this warning and the call to _LT_SET_OPTION when you put
          314  +the `disable-fast-install' option into LT_INIT's first parameter.])
          315  +])
          316  +
          317  +dnl aclocal-1.4 backwards compatibility:
          318  +dnl AC_DEFUN([AC_ENABLE_FAST_INSTALL], [])
          319  +dnl AC_DEFUN([AM_DISABLE_FAST_INSTALL], [])
          320  +
          321  +
          322  +# _LT_WITH_PIC([MODE])
          323  +# --------------------
          324  +# implement the --with-pic flag, and support the `pic-only' and `no-pic'
          325  +# LT_INIT options.
          326  +# MODE is either `yes' or `no'.  If omitted, it defaults to `both'.
          327  +m4_define([_LT_WITH_PIC],
          328  +[AC_ARG_WITH([pic],
          329  +    [AS_HELP_STRING([--with-pic],
          330  +	[try to use only PIC/non-PIC objects @<:@default=use both@:>@])],
          331  +    [pic_mode="$withval"],
          332  +    [pic_mode=default])
          333  +
          334  +test -z "$pic_mode" && pic_mode=m4_default([$1], [default])
          335  +
          336  +_LT_DECL([], [pic_mode], [0], [What type of objects to build])dnl
          337  +])# _LT_WITH_PIC
          338  +
          339  +LT_OPTION_DEFINE([LT_INIT], [pic-only], [_LT_WITH_PIC([yes])])
          340  +LT_OPTION_DEFINE([LT_INIT], [no-pic], [_LT_WITH_PIC([no])])
          341  +
          342  +# Old name:
          343  +AU_DEFUN([AC_LIBTOOL_PICMODE],
          344  +[_LT_SET_OPTION([LT_INIT], [pic-only])
          345  +AC_DIAGNOSE([obsolete],
          346  +[$0: Remove this warning and the call to _LT_SET_OPTION when you
          347  +put the `pic-only' option into LT_INIT's first parameter.])
          348  +])
          349  +
          350  +dnl aclocal-1.4 backwards compatibility:
          351  +dnl AC_DEFUN([AC_LIBTOOL_PICMODE], [])
          352  +
          353  +## ----------------- ##
          354  +## LTDL_INIT Options ##
          355  +## ----------------- ##
          356  +
          357  +m4_define([_LTDL_MODE], [])
          358  +LT_OPTION_DEFINE([LTDL_INIT], [nonrecursive],
          359  +		 [m4_define([_LTDL_MODE], [nonrecursive])])
          360  +LT_OPTION_DEFINE([LTDL_INIT], [recursive],
          361  +		 [m4_define([_LTDL_MODE], [recursive])])
          362  +LT_OPTION_DEFINE([LTDL_INIT], [subproject],
          363  +		 [m4_define([_LTDL_MODE], [subproject])])
          364  +
          365  +m4_define([_LTDL_TYPE], [])
          366  +LT_OPTION_DEFINE([LTDL_INIT], [installable],
          367  +		 [m4_define([_LTDL_TYPE], [installable])])
          368  +LT_OPTION_DEFINE([LTDL_INIT], [convenience],
          369  +		 [m4_define([_LTDL_TYPE], [convenience])])

Added m4/ltsugar.m4.

            1  +# ltsugar.m4 -- libtool m4 base layer.                         -*-Autoconf-*-
            2  +#
            3  +# Copyright (C) 2004, 2005, 2007, 2008 Free Software Foundation, Inc.
            4  +# Written by Gary V. Vaughan, 2004
            5  +#
            6  +# This file is free software; the Free Software Foundation gives
            7  +# unlimited permission to copy and/or distribute it, with or without
            8  +# modifications, as long as this notice is preserved.
            9  +
           10  +# serial 6 ltsugar.m4
           11  +
           12  +# This is to help aclocal find these macros, as it can't see m4_define.
           13  +AC_DEFUN([LTSUGAR_VERSION], [m4_if([0.1])])
           14  +
           15  +
           16  +# lt_join(SEP, ARG1, [ARG2...])
           17  +# -----------------------------
           18  +# Produce ARG1SEPARG2...SEPARGn, omitting [] arguments and their
           19  +# associated separator.
           20  +# Needed until we can rely on m4_join from Autoconf 2.62, since all earlier
           21  +# versions in m4sugar had bugs.
           22  +m4_define([lt_join],
           23  +[m4_if([$#], [1], [],
           24  +       [$#], [2], [[$2]],
           25  +       [m4_if([$2], [], [], [[$2]_])$0([$1], m4_shift(m4_shift($@)))])])
           26  +m4_define([_lt_join],
           27  +[m4_if([$#$2], [2], [],
           28  +       [m4_if([$2], [], [], [[$1$2]])$0([$1], m4_shift(m4_shift($@)))])])
           29  +
           30  +
           31  +# lt_car(LIST)
           32  +# lt_cdr(LIST)
           33  +# ------------
           34  +# Manipulate m4 lists.
           35  +# These macros are necessary as long as will still need to support
           36  +# Autoconf-2.59 which quotes differently.
           37  +m4_define([lt_car], [[$1]])
           38  +m4_define([lt_cdr],
           39  +[m4_if([$#], 0, [m4_fatal([$0: cannot be called without arguments])],
           40  +       [$#], 1, [],
           41  +       [m4_dquote(m4_shift($@))])])
           42  +m4_define([lt_unquote], $1)
           43  +
           44  +
           45  +# lt_append(MACRO-NAME, STRING, [SEPARATOR])
           46  +# ------------------------------------------
           47  +# Redefine MACRO-NAME to hold its former content plus `SEPARATOR'`STRING'.
           48  +# Note that neither SEPARATOR nor STRING are expanded; they are appended
           49  +# to MACRO-NAME as is (leaving the expansion for when MACRO-NAME is invoked).
           50  +# No SEPARATOR is output if MACRO-NAME was previously undefined (different
           51  +# than defined and empty).
           52  +#
           53  +# This macro is needed until we can rely on Autoconf 2.62, since earlier
           54  +# versions of m4sugar mistakenly expanded SEPARATOR but not STRING.
           55  +m4_define([lt_append],
           56  +[m4_define([$1],
           57  +	   m4_ifdef([$1], [m4_defn([$1])[$3]])[$2])])
           58  +
           59  +
           60  +
           61  +# lt_combine(SEP, PREFIX-LIST, INFIX, SUFFIX1, [SUFFIX2...])
           62  +# ----------------------------------------------------------
           63  +# Produce a SEP delimited list of all paired combinations of elements of
           64  +# PREFIX-LIST with SUFFIX1 through SUFFIXn.  Each element of the list
           65  +# has the form PREFIXmINFIXSUFFIXn.
           66  +# Needed until we can rely on m4_combine added in Autoconf 2.62.
           67  +m4_define([lt_combine],
           68  +[m4_if(m4_eval([$# > 3]), [1],
           69  +       [m4_pushdef([_Lt_sep], [m4_define([_Lt_sep], m4_defn([lt_car]))])]]dnl
           70  +[[m4_foreach([_Lt_prefix], [$2],
           71  +	     [m4_foreach([_Lt_suffix],
           72  +		]m4_dquote(m4_dquote(m4_shift(m4_shift(m4_shift($@)))))[,
           73  +	[_Lt_sep([$1])[]m4_defn([_Lt_prefix])[$3]m4_defn([_Lt_suffix])])])])])
           74  +
           75  +
           76  +# lt_if_append_uniq(MACRO-NAME, VARNAME, [SEPARATOR], [UNIQ], [NOT-UNIQ])
           77  +# -----------------------------------------------------------------------
           78  +# Iff MACRO-NAME does not yet contain VARNAME, then append it (delimited
           79  +# by SEPARATOR if supplied) and expand UNIQ, else NOT-UNIQ.
           80  +m4_define([lt_if_append_uniq],
           81  +[m4_ifdef([$1],
           82  +	  [m4_if(m4_index([$3]m4_defn([$1])[$3], [$3$2$3]), [-1],
           83  +		 [lt_append([$1], [$2], [$3])$4],
           84  +		 [$5])],
           85  +	  [lt_append([$1], [$2], [$3])$4])])
           86  +
           87  +
           88  +# lt_dict_add(DICT, KEY, VALUE)
           89  +# -----------------------------
           90  +m4_define([lt_dict_add],
           91  +[m4_define([$1($2)], [$3])])
           92  +
           93  +
           94  +# lt_dict_add_subkey(DICT, KEY, SUBKEY, VALUE)
           95  +# --------------------------------------------
           96  +m4_define([lt_dict_add_subkey],
           97  +[m4_define([$1($2:$3)], [$4])])
           98  +
           99  +
          100  +# lt_dict_fetch(DICT, KEY, [SUBKEY])
          101  +# ----------------------------------
          102  +m4_define([lt_dict_fetch],
          103  +[m4_ifval([$3],
          104  +	m4_ifdef([$1($2:$3)], [m4_defn([$1($2:$3)])]),
          105  +    m4_ifdef([$1($2)], [m4_defn([$1($2)])]))])
          106  +
          107  +
          108  +# lt_if_dict_fetch(DICT, KEY, [SUBKEY], VALUE, IF-TRUE, [IF-FALSE])
          109  +# -----------------------------------------------------------------
          110  +m4_define([lt_if_dict_fetch],
          111  +[m4_if(lt_dict_fetch([$1], [$2], [$3]), [$4],
          112  +	[$5],
          113  +    [$6])])
          114  +
          115  +
          116  +# lt_dict_filter(DICT, [SUBKEY], VALUE, [SEPARATOR], KEY, [...])
          117  +# --------------------------------------------------------------
          118  +m4_define([lt_dict_filter],
          119  +[m4_if([$5], [], [],
          120  +  [lt_join(m4_quote(m4_default([$4], [[, ]])),
          121  +           lt_unquote(m4_split(m4_normalize(m4_foreach(_Lt_key, lt_car([m4_shiftn(4, $@)]),
          122  +		      [lt_if_dict_fetch([$1], _Lt_key, [$2], [$3], [_Lt_key ])])))))])[]dnl
          123  +])

Added m4/ltversion.m4.

            1  +# ltversion.m4 -- version numbers			-*- Autoconf -*-
            2  +#
            3  +#   Copyright (C) 2004 Free Software Foundation, Inc.
            4  +#   Written by Scott James Remnant, 2004
            5  +#
            6  +# This file is free software; the Free Software Foundation gives
            7  +# unlimited permission to copy and/or distribute it, with or without
            8  +# modifications, as long as this notice is preserved.
            9  +
           10  +# @configure_input@
           11  +
           12  +# serial 3337 ltversion.m4
           13  +# This file is part of GNU Libtool
           14  +
           15  +m4_define([LT_PACKAGE_VERSION], [2.4.2])
           16  +m4_define([LT_PACKAGE_REVISION], [1.3337])
           17  +
           18  +AC_DEFUN([LTVERSION_VERSION],
           19  +[macro_version='2.4.2'
           20  +macro_revision='1.3337'
           21  +_LT_DECL(, macro_version, 0, [Which release of libtool.m4 was used?])
           22  +_LT_DECL(, macro_revision, 0)
           23  +])

Added m4/lt~obsolete.m4.

            1  +# lt~obsolete.m4 -- aclocal satisfying obsolete definitions.    -*-Autoconf-*-
            2  +#
            3  +#   Copyright (C) 2004, 2005, 2007, 2009 Free Software Foundation, Inc.
            4  +#   Written by Scott James Remnant, 2004.
            5  +#
            6  +# This file is free software; the Free Software Foundation gives
            7  +# unlimited permission to copy and/or distribute it, with or without
            8  +# modifications, as long as this notice is preserved.
            9  +
           10  +# serial 5 lt~obsolete.m4
           11  +
           12  +# These exist entirely to fool aclocal when bootstrapping libtool.
           13  +#
           14  +# In the past libtool.m4 has provided macros via AC_DEFUN (or AU_DEFUN)
           15  +# which have later been changed to m4_define as they aren't part of the
           16  +# exported API, or moved to Autoconf or Automake where they belong.
           17  +#
           18  +# The trouble is, aclocal is a bit thick.  It'll see the old AC_DEFUN
           19  +# in /usr/share/aclocal/libtool.m4 and remember it, then when it sees us
           20  +# using a macro with the same name in our local m4/libtool.m4 it'll
           21  +# pull the old libtool.m4 in (it doesn't see our shiny new m4_define
           22  +# and doesn't know about Autoconf macros at all.)
           23  +#
           24  +# So we provide this file, which has a silly filename so it's always
           25  +# included after everything else.  This provides aclocal with the
           26  +# AC_DEFUNs it wants, but when m4 processes it, it doesn't do anything
           27  +# because those macros already exist, or will be overwritten later.
           28  +# We use AC_DEFUN over AU_DEFUN for compatibility with aclocal-1.6. 
           29  +#
           30  +# Anytime we withdraw an AC_DEFUN or AU_DEFUN, remember to add it here.
           31  +# Yes, that means every name once taken will need to remain here until
           32  +# we give up compatibility with versions before 1.7, at which point
           33  +# we need to keep only those names which we still refer to.
           34  +
           35  +# This is to help aclocal find these macros, as it can't see m4_define.
           36  +AC_DEFUN([LTOBSOLETE_VERSION], [m4_if([1])])
           37  +
           38  +m4_ifndef([AC_LIBTOOL_LINKER_OPTION],	[AC_DEFUN([AC_LIBTOOL_LINKER_OPTION])])
           39  +m4_ifndef([AC_PROG_EGREP],		[AC_DEFUN([AC_PROG_EGREP])])
           40  +m4_ifndef([_LT_AC_PROG_ECHO_BACKSLASH],	[AC_DEFUN([_LT_AC_PROG_ECHO_BACKSLASH])])
           41  +m4_ifndef([_LT_AC_SHELL_INIT],		[AC_DEFUN([_LT_AC_SHELL_INIT])])
           42  +m4_ifndef([_LT_AC_SYS_LIBPATH_AIX],	[AC_DEFUN([_LT_AC_SYS_LIBPATH_AIX])])
           43  +m4_ifndef([_LT_PROG_LTMAIN],		[AC_DEFUN([_LT_PROG_LTMAIN])])
           44  +m4_ifndef([_LT_AC_TAGVAR],		[AC_DEFUN([_LT_AC_TAGVAR])])
           45  +m4_ifndef([AC_LTDL_ENABLE_INSTALL],	[AC_DEFUN([AC_LTDL_ENABLE_INSTALL])])
           46  +m4_ifndef([AC_LTDL_PREOPEN],		[AC_DEFUN([AC_LTDL_PREOPEN])])
           47  +m4_ifndef([_LT_AC_SYS_COMPILER],	[AC_DEFUN([_LT_AC_SYS_COMPILER])])
           48  +m4_ifndef([_LT_AC_LOCK],		[AC_DEFUN([_LT_AC_LOCK])])
           49  +m4_ifndef([AC_LIBTOOL_SYS_OLD_ARCHIVE],	[AC_DEFUN([AC_LIBTOOL_SYS_OLD_ARCHIVE])])
           50  +m4_ifndef([_LT_AC_TRY_DLOPEN_SELF],	[AC_DEFUN([_LT_AC_TRY_DLOPEN_SELF])])
           51  +m4_ifndef([AC_LIBTOOL_PROG_CC_C_O],	[AC_DEFUN([AC_LIBTOOL_PROG_CC_C_O])])
           52  +m4_ifndef([AC_LIBTOOL_SYS_HARD_LINK_LOCKS], [AC_DEFUN([AC_LIBTOOL_SYS_HARD_LINK_LOCKS])])
           53  +m4_ifndef([AC_LIBTOOL_OBJDIR],		[AC_DEFUN([AC_LIBTOOL_OBJDIR])])
           54  +m4_ifndef([AC_LTDL_OBJDIR],		[AC_DEFUN([AC_LTDL_OBJDIR])])
           55  +m4_ifndef([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH], [AC_DEFUN([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH])])
           56  +m4_ifndef([AC_LIBTOOL_SYS_LIB_STRIP],	[AC_DEFUN([AC_LIBTOOL_SYS_LIB_STRIP])])
           57  +m4_ifndef([AC_PATH_MAGIC],		[AC_DEFUN([AC_PATH_MAGIC])])
           58  +m4_ifndef([AC_PROG_LD_GNU],		[AC_DEFUN([AC_PROG_LD_GNU])])
           59  +m4_ifndef([AC_PROG_LD_RELOAD_FLAG],	[AC_DEFUN([AC_PROG_LD_RELOAD_FLAG])])
           60  +m4_ifndef([AC_DEPLIBS_CHECK_METHOD],	[AC_DEFUN([AC_DEPLIBS_CHECK_METHOD])])
           61  +m4_ifndef([AC_LIBTOOL_PROG_COMPILER_NO_RTTI], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_NO_RTTI])])
           62  +m4_ifndef([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE], [AC_DEFUN([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE])])
           63  +m4_ifndef([AC_LIBTOOL_PROG_COMPILER_PIC], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_PIC])])
           64  +m4_ifndef([AC_LIBTOOL_PROG_LD_SHLIBS],	[AC_DEFUN([AC_LIBTOOL_PROG_LD_SHLIBS])])
           65  +m4_ifndef([AC_LIBTOOL_POSTDEP_PREDEP],	[AC_DEFUN([AC_LIBTOOL_POSTDEP_PREDEP])])
           66  +m4_ifndef([LT_AC_PROG_EGREP],		[AC_DEFUN([LT_AC_PROG_EGREP])])
           67  +m4_ifndef([LT_AC_PROG_SED],		[AC_DEFUN([LT_AC_PROG_SED])])
           68  +m4_ifndef([_LT_CC_BASENAME],		[AC_DEFUN([_LT_CC_BASENAME])])
           69  +m4_ifndef([_LT_COMPILER_BOILERPLATE],	[AC_DEFUN([_LT_COMPILER_BOILERPLATE])])
           70  +m4_ifndef([_LT_LINKER_BOILERPLATE],	[AC_DEFUN([_LT_LINKER_BOILERPLATE])])
           71  +m4_ifndef([_AC_PROG_LIBTOOL],		[AC_DEFUN([_AC_PROG_LIBTOOL])])
           72  +m4_ifndef([AC_LIBTOOL_SETUP],		[AC_DEFUN([AC_LIBTOOL_SETUP])])
           73  +m4_ifndef([_LT_AC_CHECK_DLFCN],		[AC_DEFUN([_LT_AC_CHECK_DLFCN])])
           74  +m4_ifndef([AC_LIBTOOL_SYS_DYNAMIC_LINKER],	[AC_DEFUN([AC_LIBTOOL_SYS_DYNAMIC_LINKER])])
           75  +m4_ifndef([_LT_AC_TAGCONFIG],		[AC_DEFUN([_LT_AC_TAGCONFIG])])
           76  +m4_ifndef([AC_DISABLE_FAST_INSTALL],	[AC_DEFUN([AC_DISABLE_FAST_INSTALL])])
           77  +m4_ifndef([_LT_AC_LANG_CXX],		[AC_DEFUN([_LT_AC_LANG_CXX])])
           78  +m4_ifndef([_LT_AC_LANG_F77],		[AC_DEFUN([_LT_AC_LANG_F77])])
           79  +m4_ifndef([_LT_AC_LANG_GCJ],		[AC_DEFUN([_LT_AC_LANG_GCJ])])
           80  +m4_ifndef([AC_LIBTOOL_LANG_C_CONFIG],	[AC_DEFUN([AC_LIBTOOL_LANG_C_CONFIG])])
           81  +m4_ifndef([_LT_AC_LANG_C_CONFIG],	[AC_DEFUN([_LT_AC_LANG_C_CONFIG])])
           82  +m4_ifndef([AC_LIBTOOL_LANG_CXX_CONFIG],	[AC_DEFUN([AC_LIBTOOL_LANG_CXX_CONFIG])])
           83  +m4_ifndef([_LT_AC_LANG_CXX_CONFIG],	[AC_DEFUN([_LT_AC_LANG_CXX_CONFIG])])
           84  +m4_ifndef([AC_LIBTOOL_LANG_F77_CONFIG],	[AC_DEFUN([AC_LIBTOOL_LANG_F77_CONFIG])])
           85  +m4_ifndef([_LT_AC_LANG_F77_CONFIG],	[AC_DEFUN([_LT_AC_LANG_F77_CONFIG])])
           86  +m4_ifndef([AC_LIBTOOL_LANG_GCJ_CONFIG],	[AC_DEFUN([AC_LIBTOOL_LANG_GCJ_CONFIG])])
           87  +m4_ifndef([_LT_AC_LANG_GCJ_CONFIG],	[AC_DEFUN([_LT_AC_LANG_GCJ_CONFIG])])
           88  +m4_ifndef([AC_LIBTOOL_LANG_RC_CONFIG],	[AC_DEFUN([AC_LIBTOOL_LANG_RC_CONFIG])])
           89  +m4_ifndef([_LT_AC_LANG_RC_CONFIG],	[AC_DEFUN([_LT_AC_LANG_RC_CONFIG])])
           90  +m4_ifndef([AC_LIBTOOL_CONFIG],		[AC_DEFUN([AC_LIBTOOL_CONFIG])])
           91  +m4_ifndef([_LT_AC_FILE_LTDLL_C],	[AC_DEFUN([_LT_AC_FILE_LTDLL_C])])
           92  +m4_ifndef([_LT_REQUIRED_DARWIN_CHECKS],	[AC_DEFUN([_LT_REQUIRED_DARWIN_CHECKS])])
           93  +m4_ifndef([_LT_AC_PROG_CXXCPP],		[AC_DEFUN([_LT_AC_PROG_CXXCPP])])
           94  +m4_ifndef([_LT_PREPARE_SED_QUOTE_VARS],	[AC_DEFUN([_LT_PREPARE_SED_QUOTE_VARS])])
           95  +m4_ifndef([_LT_PROG_ECHO_BACKSLASH],	[AC_DEFUN([_LT_PROG_ECHO_BACKSLASH])])
           96  +m4_ifndef([_LT_PROG_F77],		[AC_DEFUN([_LT_PROG_F77])])
           97  +m4_ifndef([_LT_PROG_FC],		[AC_DEFUN([_LT_PROG_FC])])
           98  +m4_ifndef([_LT_PROG_CXX],		[AC_DEFUN([_LT_PROG_CXX])])

Changes to makefile.vc.

     5      5   !INCLUDE nmake.opt
     6      6   
     7      7   OBJ_EXT = obj
     8      8   EXT = $(OBJ_EXT)
     9      9   
    10     10   LIBOBJ = lib\rasterlite.$(EXT) lib\rasterlite_gif.$(EXT) \
    11     11   	lib\rasterlite_png.$(EXT) lib\rasterlite_jpeg.$(EXT) \
    12         -	lib\rasterlite_tiff.$(EXT) lib\rasterlite_wavelet.$(EXT) \
    13     12   	lib\rasterlite_io.$(EXT) lib\rasterlite_image.$(EXT) \
    14         -	epsilon\bit_io.$(EXT) epsilon\checksum.$(EXT) \
    15         -	epsilon\cobs.$(EXT) epsilon\color.$(EXT) epsilon\common.$(EXT) \
    16         -	epsilon\dc_level.$(EXT) epsilon\filter.$(EXT) \
    17         -	epsilon\filterbank.$(EXT) epsilon\libmain.$(EXT) \
    18         -	epsilon\list.$(EXT) epsilon\mem_alloc.$(EXT) \
    19         -	epsilon\merge_split.$(EXT) epsilon\pad.$(EXT) \
    20         -	epsilon\resample.$(EXT) epsilon\speck.$(EXT)
           13  +	lib\rasterlite_tiff.$(EXT) lib\rasterlite_aux.$(EXT) \
           14  +	lib\rasterlite_quantize.$(EXT)
    21     15   RASTERLITE_DLL 	       =	rasterlite$(VERSION).dll
    22     16   
    23         -CFLAGS	=	/nologo -IC:\OSGeo4W\include -I.\headers -I.\epsilon -I.\epsilon\msvc $(OPTFLAGS)
           17  +CFLAGS	=	/nologo -IC:\OSGeo4W\include -I.\headers $(OPTFLAGS)
           18  +
           19  +CFLAGS2	=	/nologo -IC:\OSGeo4W\include -I.\headers $(OPTFLAGS2)
    24     20   
    25     21   default:	all
    26     22   
    27     23   all: rasterlite.lib rasterlite_i.lib rasterlite_grid.exe rasterlite_load.exe \
    28     24   	rasterlite_pyramid.exe rasterlite_tool.exe rasterlite_topmost.exe
    29     25   
    30     26   rasterlite.lib:	$(LIBOBJ)
    31     27   	if exist rasterlite.lib del rasterlite.lib
    32     28   	lib /out:rasterlite.lib $(LIBOBJ)
    33     29   
    34     30   $(RASTERLITE_DLL):	rasterlite_i.lib
    35     31   
    36     32   rasterlite_i.lib:	$(LIBOBJ)
    37         -	link /debug /dll /def:librasterlite.def /out:$(RASTERLITE_DLL) \
           33  +	link /debug /dll /out:$(RASTERLITE_DLL) \
    38     34   		/implib:rasterlite_i.lib $(LIBOBJ) \
    39     35   		C:\OSGeo4W\lib\jpeg_i.lib C:\OSGeo4W\lib\libtiff_i.lib \
    40     36   		C:\OSGeo4W\lib\libpng13.lib C:\OSGeo4W\lib\zlib.lib \
    41     37   		C:\OSGeo4W\lib\geotiff_i.lib C:\OSGeo4W\lib\spatialite_i.lib
    42     38   	if exist $(RASTERLITE_DLL).manifest mt -manifest \
    43     39   		$(RASTERLITE_DLL).manifest -outputresource:$(RASTERLITE_DLL);2
    44     40   
    45         -rasterlite_grid.exe: $(RASTERLITE_DLL) src\rasterlite_grid.obj
    46         -	link /debug src\rasterlite_grid.obj $(LIBOBJ) \
           41  +rasterlite_grid.exe: $(LIBOBJ) src\rasterlite_grid.obj
           42  +	cl src\rasterlite_grid.obj .\rasterlite.lib \
    47     43   	C:\OSGeo4W\lib\jpeg_i.lib C:\OSGeo4W\lib\libtiff_i.lib \
    48     44   	C:\OSGeo4W\lib\libpng13.lib C:\OSGeo4W\lib\zlib.lib \
    49     45   	C:\OSGeo4W\lib\geotiff_i.lib C:\OSGeo4W\lib\spatialite_i.lib
    50     46   
    51         -rasterlite_load.exe: $(RASTERLITE_DLL) src\rasterlite_load.obj
    52         -	link /debug src\rasterlite_load.obj $(LIBOBJ) \
           47  +rasterlite_load.exe: $(LIBOBJ) src\rasterlite_load.obj
           48  +	cl src\rasterlite_load.obj .\rasterlite.lib \
    53     49   	C:\OSGeo4W\lib\jpeg_i.lib C:\OSGeo4W\lib\libtiff_i.lib \
    54     50   	C:\OSGeo4W\lib\libpng13.lib C:\OSGeo4W\lib\zlib.lib \
    55     51   	C:\OSGeo4W\lib\geotiff_i.lib C:\OSGeo4W\lib\spatialite_i.lib
    56     52   
    57         -rasterlite_pyramid.exe: $(RASTERLITE_DLL) src\rasterlite_pyramid.obj
    58         -	link /debug src\rasterlite_pyramid.obj $(LIBOBJ) \
           53  +rasterlite_pyramid.exe: $(LIBOBJ) src\rasterlite_pyramid.obj
           54  +	cl src\rasterlite_pyramid.obj .\rasterlite.lib \
    59     55   	C:\OSGeo4W\lib\jpeg_i.lib C:\OSGeo4W\lib\libtiff_i.lib \
    60     56   	C:\OSGeo4W\lib\libpng13.lib C:\OSGeo4W\lib\zlib.lib \
    61     57   	C:\OSGeo4W\lib\geotiff_i.lib C:\OSGeo4W\lib\spatialite_i.lib
    62     58   
    63         -rasterlite_tool.exe: $(RASTERLITE_DLL) src\rasterlite_tool.obj
    64         -	link /debug src\rasterlite_tool.obj $(LIBOBJ) \
           59  +rasterlite_tool.exe: $(LIBOBJ) src\rasterlite_tool.obj
           60  +	cl src\rasterlite_tool.obj .\rasterlite.lib \
    65     61   	C:\OSGeo4W\lib\jpeg_i.lib C:\OSGeo4W\lib\libtiff_i.lib \
    66     62   	C:\OSGeo4W\lib\libpng13.lib C:\OSGeo4W\lib\zlib.lib \
    67     63   	C:\OSGeo4W\lib\geotiff_i.lib C:\OSGeo4W\lib\spatialite_i.lib
    68     64   	
    69         -rasterlite_topmost.exe: $(RASTERLITE_DLL) src\rasterlite_topmost.obj
    70         -	link /debug src\rasterlite_topmost.obj $(LIBOBJ) \
           65  +rasterlite_topmost.exe: $(LIBOBJ) src\rasterlite_topmost.obj
           66  +	cl src\rasterlite_topmost.obj .\rasterlite.lib \
    71     67   	C:\OSGeo4W\lib\jpeg_i.lib C:\OSGeo4W\lib\libtiff_i.lib \
    72     68   	C:\OSGeo4W\lib\libpng13.lib C:\OSGeo4W\lib\zlib.lib \
    73     69   	C:\OSGeo4W\lib\geotiff_i.lib C:\OSGeo4W\lib\spatialite_i.lib
    74     70   		
           71  +lib\rasterlite.$(EXT): lib\rasterlite.c
           72  +	$(CC) $(CFLAGS2) /c lib\rasterlite.c /Fo$@
           73  +	
           74  +lib\rasterlite_gif.$(EXT): lib\rasterlite_gif.c
           75  +	$(CC) $(CFLAGS2) /c lib\rasterlite_gif.c /Fo$@
           76  +	
           77  +lib\rasterlite_png.$(EXT): lib\rasterlite_png.c
           78  +	$(CC) $(CFLAGS2) /c lib\rasterlite_png.c /Fo$@
           79  +	
           80  +lib\rasterlite_jpeg.$(EXT): lib\rasterlite_jpeg.c
           81  +	$(CC) $(CFLAGS2) /c lib\rasterlite_jpeg.c /Fo$@
           82  +
           83  +lib\rasterlite_io.$(EXT): lib\rasterlite_io.c
           84  +	$(CC) $(CFLAGS2) /c lib\rasterlite_io.c /Fo$@
           85  +	
           86  +lib\rasterlite_image.$(EXT): lib\rasterlite_image.c
           87  +	$(CC) $(CFLAGS2) /c lib\rasterlite_image.c /Fo$@
           88  +	
           89  +lib\rasterlite_aux.$(EXT): lib\rasterlite_aux.c
           90  +	$(CC) $(CFLAGS2) /c lib\rasterlite_aux.c /Fo$@
           91  +	
           92  +lib\rasterlite_tiff.$(EXT): lib\rasterlite_tiff.c
           93  +	$(CC) $(CFLAGS2) /c lib\rasterlite_tiff.c /Fo$@
           94  +	
           95  +lib\rasterlite_quantize.$(EXT): lib\rasterlite_quantize.c
           96  +	$(CC) $(CFLAGS2) /c lib\rasterlite_quantize.c /Fo$@
           97  +	
           98  +	
    75     99   .c.obj:
    76    100   	$(CC) $(CFLAGS) /c $*.c /Fo$@
    77    101   
    78    102   clean:
    79    103   	del *.dll
    80    104   	del *.exp
    81    105   	del *.manifest

Changes to missing.

     1         -#! /bin/sh
     2         -# Common stub for a few missing GNU programs while installing.
     3         -
     4         -scriptversion=2006-05-10.23
     5         -
     6         -# Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003, 2004, 2005, 2006
     7         -#   Free Software Foundation, Inc.
     8         -# Originally by Fran,cois Pinard <pinard@iro.umontreal.ca>, 1996.
     9         -
    10         -# This program is free software; you can redistribute it and/or modify
    11         -# it under the terms of the GNU General Public License as published by
    12         -# the Free Software Foundation; either version 2, or (at your option)
    13         -# any later version.
    14         -
    15         -# This program is distributed in the hope that it will be useful,
    16         -# but WITHOUT ANY WARRANTY; without even the implied warranty of
    17         -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    18         -# GNU General Public License for more details.
    19         -
    20         -# You should have received a copy of the GNU General Public License
    21         -# along with this program; if not, write to the Free Software
    22         -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
    23         -# 02110-1301, USA.
    24         -
    25         -# As a special exception to the GNU General Public License, if you
    26         -# distribute this file as part of a program that contains a
    27         -# configuration script generated by Autoconf, you may include it under
    28         -# the same distribution terms that you use for the rest of that program.
    29         -
    30         -if test $# -eq 0; then
    31         -  echo 1>&2 "Try \`$0 --help' for more information"
    32         -  exit 1
    33         -fi
    34         -
    35         -run=:
    36         -sed_output='s/.* --output[ =]\([^ ]*\).*/\1/p'
    37         -sed_minuso='s/.* -o \([^ ]*\).*/\1/p'
    38         -
    39         -# In the cases where this matters, `missing' is being run in the
    40         -# srcdir already.
    41         -if test -f configure.ac; then
    42         -  configure_ac=configure.ac
    43         -else
    44         -  configure_ac=configure.in
    45         -fi
    46         -
    47         -msg="missing on your system"
    48         -
    49         -case $1 in
    50         ---run)
    51         -  # Try to run requested program, and just exit if it succeeds.
    52         -  run=
    53         -  shift
    54         -  "$@" && exit 0
    55         -  # Exit code 63 means version mismatch.  This often happens
    56         -  # when the user try to use an ancient version of a tool on
    57         -  # a file that requires a minimum version.  In this case we
    58         -  # we should proceed has if the program had been absent, or
    59         -  # if --run hadn't been passed.
    60         -  if test $? = 63; then
    61         -    run=:
    62         -    msg="probably too old"
    63         -  fi
    64         -  ;;
    65         -
    66         -  -h|--h|--he|--hel|--help)
    67         -    echo "\
    68         -$0 [OPTION]... PROGRAM [ARGUMENT]...
    69         -
    70         -Handle \`PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an
    71         -error status if there is no known handling for PROGRAM.
    72         -
    73         -Options:
    74         -  -h, --help      display this help and exit
    75         -  -v, --version   output version information and exit
    76         -  --run           try to run the given command, and emulate it if it fails
    77         -
    78         -Supported PROGRAM values:
    79         -  aclocal      touch file \`aclocal.m4'
    80         -  autoconf     touch file \`configure'
    81         -  autoheader   touch file \`config.h.in'
    82         -  autom4te     touch the output file, or create a stub one
    83         -  automake     touch all \`Makefile.in' files
    84         -  bison        create \`y.tab.[ch]', if possible, from existing .[ch]
    85         -  flex         create \`lex.yy.c', if possible, from existing .c
    86         -  help2man     touch the output file
    87         -  lex          create \`lex.yy.c', if possible, from existing .c
    88         -  makeinfo     touch the output file
    89         -  tar          try tar, gnutar, gtar, then tar without non-portable flags
    90         -  yacc         create \`y.tab.[ch]', if possible, from existing .[ch]
    91         -
    92         -Send bug reports to <bug-automake@gnu.org>."
    93         -    exit $?
    94         -    ;;
    95         -
    96         -  -v|--v|--ve|--ver|--vers|--versi|--versio|--version)
    97         -    echo "missing $scriptversion (GNU Automake)"
    98         -    exit $?
    99         -    ;;
   100         -
   101         -  -*)
   102         -    echo 1>&2 "$0: Unknown \`$1' option"
   103         -    echo 1>&2 "Try \`$0 --help' for more information"
   104         -    exit 1
   105         -    ;;
   106         -
   107         -esac
   108         -
   109         -# Now exit if we have it, but it failed.  Also exit now if we
   110         -# don't have it and --version was passed (most likely to detect
   111         -# the program).
   112         -case $1 in
   113         -  lex|yacc)
   114         -    # Not GNU programs, they don't have --version.
   115         -    ;;
   116         -
   117         -  tar)
   118         -    if test -n "$run"; then
   119         -       echo 1>&2 "ERROR: \`tar' requires --run"
   120         -       exit 1
   121         -    elif test "x$2" = "x--version" || test "x$2" = "x--help"; then
   122         -       exit 1
   123         -    fi
   124         -    ;;
   125         -
   126         -  *)
   127         -    if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
   128         -       # We have it, but it failed.
   129         -       exit 1
   130         -    elif test "x$2" = "x--version" || test "x$2" = "x--help"; then
   131         -       # Could not run --version or --help.  This is probably someone
   132         -       # running `$TOOL --version' or `$TOOL --help' to check whether
   133         -       # $TOOL exists and not knowing $TOOL uses missing.
   134         -       exit 1
   135         -    fi
   136         -    ;;
   137         -esac
   138         -
   139         -# If it does not exist, or fails to run (possibly an outdated version),
   140         -# try to emulate it.
   141         -case $1 in
   142         -  aclocal*)
   143         -    echo 1>&2 "\
   144         -WARNING: \`$1' is $msg.  You should only need it if
   145         -         you modified \`acinclude.m4' or \`${configure_ac}'.  You might want
   146         -         to install the \`Automake' and \`Perl' packages.  Grab them from
   147         -         any GNU archive site."
   148         -    touch aclocal.m4
   149         -    ;;
   150         -
   151         -  autoconf)
   152         -    echo 1>&2 "\
   153         -WARNING: \`$1' is $msg.  You should only need it if
   154         -         you modified \`${configure_ac}'.  You might want to install the
   155         -         \`Autoconf' and \`GNU m4' packages.  Grab them from any GNU
   156         -         archive site."
   157         -    touch configure
   158         -    ;;
   159         -
   160         -  autoheader)
   161         -    echo 1>&2 "\
   162         -WARNING: \`$1' is $msg.  You should only need it if
   163         -         you modified \`acconfig.h' or \`${configure_ac}'.  You might want
   164         -         to install the \`Autoconf' and \`GNU m4' packages.  Grab them
   165         -         from any GNU archive site."
   166         -    files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' ${configure_ac}`
   167         -    test -z "$files" && files="config.h"
   168         -    touch_files=
   169         -    for f in $files; do
   170         -      case $f in
   171         -      *:*) touch_files="$touch_files "`echo "$f" |
   172         -				       sed -e 's/^[^:]*://' -e 's/:.*//'`;;
   173         -      *) touch_files="$touch_files $f.in";;
   174         -      esac
   175         -    done
   176         -    touch $touch_files
   177         -    ;;
   178         -
   179         -  automake*)
   180         -    echo 1>&2 "\
   181         -WARNING: \`$1' is $msg.  You should only need it if
   182         -         you modified \`Makefile.am', \`acinclude.m4' or \`${configure_ac}'.
   183         -         You might want to install the \`Automake' and \`Perl' packages.
   184         -         Grab them from any GNU archive site."
   185         -    find . -type f -name Makefile.am -print |
   186         -	   sed 's/\.am$/.in/' |
   187         -	   while read f; do touch "$f"; done
   188         -    ;;
   189         -
   190         -  autom4te)
   191         -    echo 1>&2 "\
   192         -WARNING: \`$1' is needed, but is $msg.
   193         -         You might have modified some files without having the
   194         -         proper tools for further handling them.
   195         -         You can get \`$1' as part of \`Autoconf' from any GNU
   196         -         archive site."
   197         -
   198         -    file=`echo "$*" | sed -n "$sed_output"`
   199         -    test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
   200         -    if test -f "$file"; then
   201         -	touch $file
   202         -    else
   203         -	test -z "$file" || exec >$file
   204         -	echo "#! /bin/sh"
   205         -	echo "# Created by GNU Automake missing as a replacement of"
   206         -	echo "#  $ $@"
   207         -	echo "exit 0"
   208         -	chmod +x $file
   209         -	exit 1
   210         -    fi
   211         -    ;;
   212         -
   213         -  bison|yacc)
   214         -    echo 1>&2 "\
   215         -WARNING: \`$1' $msg.  You should only need it if
   216         -         you modified a \`.y' file.  You may need the \`Bison' package
   217         -         in order for those modifications to take effect.  You can get
   218         -         \`Bison' from any GNU archive site."
   219         -    rm -f y.tab.c y.tab.h
   220         -    if test $# -ne 1; then
   221         -        eval LASTARG="\${$#}"
   222         -	case $LASTARG in
   223         -	*.y)
   224         -	    SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'`
   225         -	    if test -f "$SRCFILE"; then
   226         -	         cp "$SRCFILE" y.tab.c
   227         -	    fi
   228         -	    SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'`
   229         -	    if test -f "$SRCFILE"; then
   230         -	         cp "$SRCFILE" y.tab.h
   231         -	    fi
   232         -	  ;;
   233         -	esac
   234         -    fi
   235         -    if test ! -f y.tab.h; then
   236         -	echo >y.tab.h
   237         -    fi
   238         -    if test ! -f y.tab.c; then
   239         -	echo 'main() { return 0; }' >y.tab.c
   240         -    fi
   241         -    ;;
   242         -
   243         -  lex|flex)
   244         -    echo 1>&2 "\
   245         -WARNING: \`$1' is $msg.  You should only need it if
   246         -         you modified a \`.l' file.  You may need the \`Flex' package
   247         -         in order for those modifications to take effect.  You can get
   248         -         \`Flex' from any GNU archive site."
   249         -    rm -f lex.yy.c
   250         -    if test $# -ne 1; then
   251         -        eval LASTARG="\${$#}"
   252         -	case $LASTARG in
   253         -	*.l)
   254         -	    SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'`
   255         -	    if test -f "$SRCFILE"; then
   256         -	         cp "$SRCFILE" lex.yy.c
   257         -	    fi
   258         -	  ;;
   259         -	esac
   260         -    fi
   261         -    if test ! -f lex.yy.c; then
   262         -	echo 'main() { return 0; }' >lex.yy.c
   263         -    fi
   264         -    ;;
   265         -
   266         -  help2man)
   267         -    echo 1>&2 "\
   268         -WARNING: \`$1' is $msg.  You should only need it if
   269         -	 you modified a dependency of a manual page.  You may need the
   270         -	 \`Help2man' package in order for those modifications to take
   271         -	 effect.  You can get \`Help2man' from any GNU archive site."
   272         -
   273         -    file=`echo "$*" | sed -n "$sed_output"`
   274         -    test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
   275         -    if test -f "$file"; then
   276         -	touch $file
   277         -    else
   278         -	test -z "$file" || exec >$file
   279         -	echo ".ab help2man is required to generate this page"
   280         -	exit 1
   281         -    fi
   282         -    ;;
   283         -
   284         -  makeinfo)
   285         -    echo 1>&2 "\
   286         -WARNING: \`$1' is $msg.  You should only need it if
   287         -         you modified a \`.texi' or \`.texinfo' file, or any other file
   288         -         indirectly affecting the aspect of the manual.  The spurious
   289         -         call might also be the consequence of using a buggy \`make' (AIX,
   290         -         DU, IRIX).  You might want to install the \`Texinfo' package or
   291         -         the \`GNU make' package.  Grab either from any GNU archive site."
   292         -    # The file to touch is that specified with -o ...
   293         -    file=`echo "$*" | sed -n "$sed_output"`
   294         -    test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
   295         -    if test -z "$file"; then
   296         -      # ... or it is the one specified with @setfilename ...
   297         -      infile=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'`
   298         -      file=`sed -n '
   299         -	/^@setfilename/{
   300         -	  s/.* \([^ ]*\) *$/\1/
   301         -	  p
   302         -	  q
   303         -	}' $infile`
   304         -      # ... or it is derived from the source name (dir/f.texi becomes f.info)
   305         -      test -z "$file" && file=`echo "$infile" | sed 's,.*/,,;s,.[^.]*$,,'`.info
   306         -    fi
   307         -    # If the file does not exist, the user really needs makeinfo;
   308         -    # let's fail without touching anything.
   309         -    test -f $file || exit 1
   310         -    touch $file
   311         -    ;;
   312         -
   313         -  tar)
   314         -    shift
   315         -
   316         -    # We have already tried tar in the generic part.
   317         -    # Look for gnutar/gtar before invocation to avoid ugly error
   318         -    # messages.
   319         -    if (gnutar --version > /dev/null 2>&1); then
   320         -       gnutar "$@" && exit 0
   321         -    fi
   322         -    if (gtar --version > /dev/null 2>&1); then
   323         -       gtar "$@" && exit 0
   324         -    fi
   325         -    firstarg="$1"
   326         -    if shift; then
   327         -	case $firstarg in
   328         -	*o*)
   329         -	    firstarg=`echo "$firstarg" | sed s/o//`
   330         -	    tar "$firstarg" "$@" && exit 0
   331         -	    ;;
   332         -	esac
   333         -	case $firstarg in
   334         -	*h*)
   335         -	    firstarg=`echo "$firstarg" | sed s/h//`
   336         -	    tar "$firstarg" "$@" && exit 0
   337         -	    ;;
   338         -	esac
   339         -    fi
   340         -
   341         -    echo 1>&2 "\
   342         -WARNING: I can't seem to be able to run \`tar' with the given arguments.
   343         -         You may want to install GNU tar or Free paxutils, or check the
   344         -         command line arguments."
   345         -    exit 1
   346         -    ;;
   347         -
   348         -  *)
   349         -    echo 1>&2 "\
   350         -WARNING: \`$1' is needed, and is $msg.
   351         -         You might have modified some files without having the
   352         -         proper tools for further handling them.  Check the \`README' file,
   353         -         it often tells you about the needed prerequisites for installing
   354         -         this package.  You may also peek at any GNU archive site, in case
   355         -         some other package would contain this missing \`$1' program."
   356         -    exit 1
   357         -    ;;
   358         -esac
   359         -
   360         -exit 0
   361         -
   362         -# Local variables:
   363         -# eval: (add-hook 'write-file-hooks 'time-stamp)
   364         -# time-stamp-start: "scriptversion="
   365         -# time-stamp-format: "%:y-%02m-%02d.%02H"
   366         -# time-stamp-end: "$"
   367         -# End:
            1  +/usr/share/automake-1.11/missing

Changes to nmake.opt.

     1      1   # Directory tree where RasterLite will be installed.
     2      2   INSTDIR=C:\OSGeo4W
     3      3   
     4      4   # Uncomment the first for an optimized build, or the second for debug.
     5      5   OPTFLAGS=	/nologo /Ox /fp:precise /W3 /MD /D_CRT_SECURE_NO_WARNINGS \
     6         -		/D_LARGE_FILE=1 /D_FILE_OFFSET_BITS=64 /D_LARGEFILE_SOURCE=1 
            6  +		/D_LARGE_FILE=1 /D_FILE_OFFSET_BITS=64 /D_LARGEFILE_SOURCE=1 \
            7  +		/DSPATIALITE_AMALGAMATION=1 /D_USE_MATH_DEFINES
            8  +OPTFLAGS2=	/nologo /Ox /fp:precise /W3 /MD /D_CRT_SECURE_NO_WARNINGS \
            9  +		/D_LARGE_FILE=1 /D_FILE_OFFSET_BITS=64 /D_LARGEFILE_SOURCE=1 \
           10  +		/DSPATIALITE_AMALGAMATION=1 /D_USE_MATH_DEFINES /DDLL_EXPORT
     7     11   #OPTFLAGS=	/nologo /Zi /MD /Fdrasterlite.pdb
     8     12   
     9     13   # Set the version number for the DLL.  Normally we leave this blank since
    10     14   # we want software that is dynamically loading the DLL to have no problem
    11     15   # with version numbers.
    12     16   VERSION=

Changes to src/Makefile.am.

     1      1   
     2         -AM_CFLAGS = -D_LARGE_FILE=1 -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE=1
     3         -
     4      2   bin_PROGRAMS =rasterlite_load \
     5      3   	rasterlite_pyramid \
     6      4   	rasterlite_topmost \
     7      5   	rasterlite_grid \
     8      6   	rasterlite_tool
     9      7   
    10      8   INCLUDES = @CFLAGS@
    11      9   INCLUDES += -I$(top_srcdir)/headers
    12         -INCLUDES += -I$(top_srcdir)/epsilon
    13     10   
    14     11   rasterlite_load_SOURCES = rasterlite_load.c
    15     12   rasterlite_pyramid_SOURCES = rasterlite_pyramid.c
    16     13   rasterlite_topmost_SOURCES = rasterlite_topmost.c
    17     14   rasterlite_grid_SOURCES = rasterlite_grid.c
    18     15   rasterlite_tool_SOURCES = rasterlite_tool.c
    19     16   
    20     17   LDADD = ../lib/.libs/librasterlite.a \
    21         -        -lgeotiff -ltiff -ljpeg -lpng -lspatialite -lproj
           18  +	@LIBSPATIALITE_LIBS@ @LIBPNG_LIBS@ \
           19  +        -lgeotiff -ltiff -ljpeg -lspatialite -lproj
    22     20   
           21  +MOSTLYCLEANFILES = *.gcna *.gcno *.gcda

Changes to src/Makefile.in.

     1         -# Makefile.in generated by automake 1.10.1 from Makefile.am.
            1  +# Makefile.in generated by automake 1.11.6 from Makefile.am.
     2      2   # @configure_input@
     3      3   
     4      4   # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
     5         -# 2003, 2004, 2005, 2006, 2007, 2008  Free Software Foundation, Inc.
            5  +# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
            6  +# Foundation, Inc.
     6      7   # This Makefile.in is free software; the Free Software Foundation
     7      8   # gives unlimited permission to copy and/or distribute it,
     8      9   # with or without modifications, as long as this notice is preserved.
     9     10   
    10     11   # This program is distributed in the hope that it will be useful,
    11     12   # but WITHOUT ANY WARRANTY, to the extent permitted by law; without
    12     13   # even the implied warranty of MERCHANTABILITY or FITNESS FOR A
    13     14   # PARTICULAR PURPOSE.
    14     15   
    15     16   @SET_MAKE@
    16     17   
    17     18   VPATH = @srcdir@
           19  +am__make_dryrun = \
           20  +  { \
           21  +    am__dry=no; \
           22  +    case $$MAKEFLAGS in \
           23  +      *\\[\ \	]*) \
           24  +        echo 'am--echo: ; @echo "AM"  OK' | $(MAKE) -f - 2>/dev/null \
           25  +          | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
           26  +      *) \
           27  +        for am__flg in $$MAKEFLAGS; do \
           28  +          case $$am__flg in \
           29  +            *=*|--*) ;; \
           30  +            *n*) am__dry=yes; break;; \
           31  +          esac; \
           32  +        done;; \
           33  +    esac; \
           34  +    test $$am__dry = yes; \
           35  +  }
    18     36   pkgdatadir = $(datadir)/@PACKAGE@
    19         -pkglibdir = $(libdir)/@PACKAGE@
    20     37   pkgincludedir = $(includedir)/@PACKAGE@
           38  +pkglibdir = $(libdir)/@PACKAGE@
           39  +pkglibexecdir = $(libexecdir)/@PACKAGE@
    21     40   am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
    22     41   install_sh_DATA = $(install_sh) -c -m 644
    23     42   install_sh_PROGRAM = $(install_sh) -c
    24     43   install_sh_SCRIPT = $(install_sh) -c
    25     44   INSTALL_HEADER = $(INSTALL_DATA)
    26     45   transform = $(program_transform_name)
    27     46   NORMAL_INSTALL = :
................................................................................
    34     53   host_triplet = @host@
    35     54   bin_PROGRAMS = rasterlite_load$(EXEEXT) rasterlite_pyramid$(EXEEXT) \
    36     55   	rasterlite_topmost$(EXEEXT) rasterlite_grid$(EXEEXT) \
    37     56   	rasterlite_tool$(EXEEXT)
    38     57   subdir = src
    39     58   DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
    40     59   ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
    41         -am__aclocal_m4_deps = $(top_srcdir)/configure.ac
           60  +am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \
           61  +	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
           62  +	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
           63  +	$(top_srcdir)/configure.ac
    42     64   am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
    43     65   	$(ACLOCAL_M4)
    44     66   mkinstalldirs = $(install_sh) -d
           67  +CONFIG_HEADER = $(top_builddir)/config.h
    45     68   CONFIG_CLEAN_FILES =
           69  +CONFIG_CLEAN_VPATH_FILES =
    46     70   am__installdirs = "$(DESTDIR)$(bindir)"
    47         -binPROGRAMS_INSTALL = $(INSTALL_PROGRAM)
    48     71   PROGRAMS = $(bin_PROGRAMS)
    49     72   am_rasterlite_grid_OBJECTS = rasterlite_grid.$(OBJEXT)
    50     73   rasterlite_grid_OBJECTS = $(am_rasterlite_grid_OBJECTS)
    51     74   rasterlite_grid_LDADD = $(LDADD)
    52     75   rasterlite_grid_DEPENDENCIES = ../lib/.libs/librasterlite.a
    53     76   am_rasterlite_load_OBJECTS = rasterlite_load.$(OBJEXT)
    54     77   rasterlite_load_OBJECTS = $(am_rasterlite_load_OBJECTS)
................................................................................
    62     85   rasterlite_tool_OBJECTS = $(am_rasterlite_tool_OBJECTS)
    63     86   rasterlite_tool_LDADD = $(LDADD)
    64     87   rasterlite_tool_DEPENDENCIES = ../lib/.libs/librasterlite.a
    65     88   am_rasterlite_topmost_OBJECTS = rasterlite_topmost.$(OBJEXT)
    66     89   rasterlite_topmost_OBJECTS = $(am_rasterlite_topmost_OBJECTS)
    67     90   rasterlite_topmost_LDADD = $(LDADD)
    68     91   rasterlite_topmost_DEPENDENCIES = ../lib/.libs/librasterlite.a
    69         -DEFAULT_INCLUDES = -I.@am__isrc@
           92  +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
    70     93   depcomp = $(SHELL) $(top_srcdir)/depcomp
    71     94   am__depfiles_maybe = depfiles
           95  +am__mv = mv -f
    72     96   COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
    73     97   	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
    74     98   LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
    75     99   	--mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
    76    100   	$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
    77    101   CCLD = $(CC)
    78    102   LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
................................................................................
    80    104   	$(LDFLAGS) -o $@
    81    105   SOURCES = $(rasterlite_grid_SOURCES) $(rasterlite_load_SOURCES) \
    82    106   	$(rasterlite_pyramid_SOURCES) $(rasterlite_tool_SOURCES) \
    83    107   	$(rasterlite_topmost_SOURCES)
    84    108   DIST_SOURCES = $(rasterlite_grid_SOURCES) $(rasterlite_load_SOURCES) \
    85    109   	$(rasterlite_pyramid_SOURCES) $(rasterlite_tool_SOURCES) \
    86    110   	$(rasterlite_topmost_SOURCES)
          111  +am__can_run_installinfo = \
          112  +  case $$AM_UPDATE_INFO_DIR in \
          113  +    n|no|NO) false;; \
          114  +    *) (install-info --version) >/dev/null 2>&1;; \
          115  +  esac
    87    116   ETAGS = etags
    88    117   CTAGS = ctags
    89    118   DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
    90    119   ACLOCAL = @ACLOCAL@
    91    120   AMTAR = @AMTAR@
    92    121   AR = @AR@
    93    122   AS = @AS@
................................................................................
   105    134   CXXDEPMODE = @CXXDEPMODE@
   106    135   CXXFLAGS = @CXXFLAGS@
   107    136   CYGPATH_W = @CYGPATH_W@
   108    137   DEFS = @DEFS@
   109    138   DEPDIR = @DEPDIR@
   110    139   DLLTOOL = @DLLTOOL@
   111    140   DSYMUTIL = @DSYMUTIL@
   112         -ECHO = @ECHO@
          141  +DUMPBIN = @DUMPBIN@
   113    142   ECHO_C = @ECHO_C@
   114    143   ECHO_N = @ECHO_N@
   115    144   ECHO_T = @ECHO_T@
   116    145   EGREP = @EGREP@
   117    146   EXEEXT = @EXEEXT@
   118         -F77 = @F77@
   119         -FFLAGS = @FFLAGS@
          147  +FGREP = @FGREP@
   120    148   GREP = @GREP@
   121    149   INSTALL = @INSTALL@
   122    150   INSTALL_DATA = @INSTALL_DATA@
   123    151   INSTALL_PROGRAM = @INSTALL_PROGRAM@
   124    152   INSTALL_SCRIPT = @INSTALL_SCRIPT@
   125    153   INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
          154  +LD = @LD@
   126    155   LDFLAGS = @LDFLAGS@
   127    156   LIBOBJS = @LIBOBJS@
          157  +LIBPNG_CFLAGS = @LIBPNG_CFLAGS@
          158  +LIBPNG_LIBS = @LIBPNG_LIBS@
   128    159   LIBS = @LIBS@
          160  +LIBSPATIALITE_CFLAGS = @LIBSPATIALITE_CFLAGS@
          161  +LIBSPATIALITE_LIBS = @LIBSPATIALITE_LIBS@
   129    162   LIBTOOL = @LIBTOOL@
          163  +LIPO = @LIPO@
   130    164   LN_S = @LN_S@
   131    165   LTLIBOBJS = @LTLIBOBJS@
   132    166   MAINT = @MAINT@
   133    167   MAKEINFO = @MAKEINFO@
          168  +MANIFEST_TOOL = @MANIFEST_TOOL@
   134    169   MKDIR_P = @MKDIR_P@
          170  +NM = @NM@
   135    171   NMEDIT = @NMEDIT@
   136    172   OBJDUMP = @OBJDUMP@
   137    173   OBJEXT = @OBJEXT@
          174  +OTOOL = @OTOOL@
          175  +OTOOL64 = @OTOOL64@
   138    176   PACKAGE = @PACKAGE@
   139    177   PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
   140    178   PACKAGE_NAME = @PACKAGE_NAME@
   141    179   PACKAGE_STRING = @PACKAGE_STRING@
   142    180   PACKAGE_TARNAME = @PACKAGE_TARNAME@
          181  +PACKAGE_URL = @PACKAGE_URL@
   143    182   PACKAGE_VERSION = @PACKAGE_VERSION@
   144    183   PATH_SEPARATOR = @PATH_SEPARATOR@
          184  +PKG_CONFIG = @PKG_CONFIG@
          185  +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
          186  +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
   145    187   RANLIB = @RANLIB@
   146    188   SED = @SED@
   147    189   SET_MAKE = @SET_MAKE@
   148    190   SHELL = @SHELL@
   149    191   STRIP = @STRIP@
   150    192   VERSION = @VERSION@
   151    193   abs_builddir = @abs_builddir@
   152    194   abs_srcdir = @abs_srcdir@
   153    195   abs_top_builddir = @abs_top_builddir@
   154    196   abs_top_srcdir = @abs_top_srcdir@
          197  +ac_ct_AR = @ac_ct_AR@
   155    198   ac_ct_CC = @ac_ct_CC@
   156    199   ac_ct_CXX = @ac_ct_CXX@
   157         -ac_ct_F77 = @ac_ct_F77@
          200  +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
   158    201   am__include = @am__include@
   159    202   am__leading_dot = @am__leading_dot@
   160    203   am__quote = @am__quote@
   161    204   am__tar = @am__tar@
   162    205   am__untar = @am__untar@
   163    206   bindir = @bindir@
   164    207   build = @build@
................................................................................
   193    236   program_transform_name = @program_transform_name@
   194    237   psdir = @psdir@
   195    238   sbindir = @sbindir@
   196    239   sharedstatedir = @sharedstatedir@
   197    240   srcdir = @srcdir@
   198    241   sysconfdir = @sysconfdir@
   199    242   target_alias = @target_alias@
          243  +top_build_prefix = @top_build_prefix@
   200    244   top_builddir = @top_builddir@
   201    245   top_srcdir = @top_srcdir@
   202         -AM_CFLAGS = -D_LARGE_FILE=1 -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE=1
   203         -INCLUDES = @CFLAGS@ -I$(top_srcdir)/headers -I$(top_srcdir)/epsilon
          246  +INCLUDES = @CFLAGS@ -I$(top_srcdir)/headers
   204    247   rasterlite_load_SOURCES = rasterlite_load.c
   205    248   rasterlite_pyramid_SOURCES = rasterlite_pyramid.c
   206    249   rasterlite_topmost_SOURCES = rasterlite_topmost.c
   207    250   rasterlite_grid_SOURCES = rasterlite_grid.c
   208    251   rasterlite_tool_SOURCES = rasterlite_tool.c
   209    252   LDADD = ../lib/.libs/librasterlite.a \
   210         -        -lgeotiff -ltiff -ljpeg -lpng -lspatialite -lproj
          253  +	@LIBSPATIALITE_LIBS@ @LIBPNG_LIBS@ \
          254  +        -lgeotiff -ltiff -ljpeg -lspatialite -lproj
   211    255   
          256  +MOSTLYCLEANFILES = *.gcna *.gcno *.gcda
   212    257   all: all-am
   213    258   
   214    259   .SUFFIXES:
   215    260   .SUFFIXES: .c .lo .o .obj
   216    261   $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps)
   217    262   	@for dep in $?; do \
   218    263   	  case '$(am__configure_deps)' in \
   219    264   	    *$$dep*) \
   220         -	      cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
   221         -		&& exit 0; \
          265  +	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
          266  +	        && { if test -f $@; then exit 0; else break; fi; }; \
   222    267   	      exit 1;; \
   223    268   	  esac; \
   224    269   	done; \
   225         -	echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign  src/Makefile'; \
   226         -	cd $(top_srcdir) && \
   227         -	  $(AUTOMAKE) --foreign  src/Makefile
          270  +	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/Makefile'; \
          271  +	$(am__cd) $(top_srcdir) && \
          272  +	  $(AUTOMAKE) --gnu src/Makefile
   228    273   .PRECIOUS: Makefile
   229    274   Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
   230    275   	@case '$?' in \
   231    276   	  *config.status*) \
   232    277   	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
   233    278   	  *) \
   234    279   	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
................................................................................
   238    283   $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
   239    284   	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
   240    285   
   241    286   $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
   242    287   	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
   243    288   $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
   244    289   	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
          290  +$(am__aclocal_m4_deps):
   245    291   install-binPROGRAMS: $(bin_PROGRAMS)
   246    292   	@$(NORMAL_INSTALL)
   247         -	test -z "$(bindir)" || $(MKDIR_P) "$(DESTDIR)$(bindir)"
   248         -	@list='$(bin_PROGRAMS)'; for p in $$list; do \
   249         -	  p1=`echo $$p|sed 's/$(EXEEXT)$$//'`; \
   250         -	  if test -f $$p \
   251         -	     || test -f $$p1 \
   252         -	  ; then \
   253         -	    f=`echo "$$p1" | sed 's,^.*/,,;$(transform);s/$$/$(EXEEXT)/'`; \
   254         -	   echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(binPROGRAMS_INSTALL) '$$p' '$(DESTDIR)$(bindir)/$$f'"; \
   255         -	   $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(binPROGRAMS_INSTALL) "$$p" "$(DESTDIR)$(bindir)/$$f" || exit 1; \
   256         -	  else :; fi; \
   257         -	done
          293  +	@list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \
          294  +	if test -n "$$list"; then \
          295  +	  echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \
          296  +	  $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \
          297  +	fi; \
          298  +	for p in $$list; do echo "$$p $$p"; done | \
          299  +	sed 's/$(EXEEXT)$$//' | \
          300  +	while read p p1; do if test -f $$p || test -f $$p1; \
          301  +	  then echo "$$p"; echo "$$p"; else :; fi; \
          302  +	done | \
          303  +	sed -e 'p;s,.*/,,;n;h' -e 's|.*|.|' \
          304  +	    -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \
          305  +	sed 'N;N;N;s,\n, ,g' | \
          306  +	$(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \
          307  +	  { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \
          308  +	    if ($$2 == $$4) files[d] = files[d] " " $$1; \
          309  +	    else { print "f", $$3 "/" $$4, $$1; } } \
          310  +	  END { for (d in files) print "f", d, files[d] }' | \
          311  +	while read type dir files; do \
          312  +	    if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \
          313  +	    test -z "$$files" || { \
          314  +	    echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(bindir)$$dir'"; \
          315  +	    $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \
          316  +	    } \
          317  +	; done
   258    318   
   259    319   uninstall-binPROGRAMS:
   260    320   	@$(NORMAL_UNINSTALL)
   261         -	@list='$(bin_PROGRAMS)'; for p in $$list; do \
   262         -	  f=`echo "$$p" | sed 's,^.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \
   263         -	  echo " rm -f '$(DESTDIR)$(bindir)/$$f'"; \
   264         -	  rm -f "$(DESTDIR)$(bindir)/$$f"; \
   265         -	done
          321  +	@list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \
          322  +	files=`for p in $$list; do echo "$$p"; done | \
          323  +	  sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \
          324  +	      -e 's/$$/$(EXEEXT)/' `; \
          325  +	test -n "$$list" || exit 0; \
          326  +	echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \
          327  +	cd "$(DESTDIR)$(bindir)" && rm -f $$files
   266    328   
   267    329   clean-binPROGRAMS:
   268         -	@list='$(bin_PROGRAMS)'; for p in $$list; do \
   269         -	  f=`echo $$p|sed 's/$(EXEEXT)$$//'`; \
   270         -	  echo " rm -f $$p $$f"; \
   271         -	  rm -f $$p $$f ; \
   272         -	done
   273         -rasterlite_grid$(EXEEXT): $(rasterlite_grid_OBJECTS) $(rasterlite_grid_DEPENDENCIES) 
          330  +	@list='$(bin_PROGRAMS)'; test -n "$$list" || exit 0; \
          331  +	echo " rm -f" $$list; \
          332  +	rm -f $$list || exit $$?; \
          333  +	test -n "$(EXEEXT)" || exit 0; \
          334  +	list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
          335  +	echo " rm -f" $$list; \
          336  +	rm -f $$list
          337  +rasterlite_grid$(EXEEXT): $(rasterlite_grid_OBJECTS) $(rasterlite_grid_DEPENDENCIES) $(EXTRA_rasterlite_grid_DEPENDENCIES) 
   274    338   	@rm -f rasterlite_grid$(EXEEXT)
   275    339   	$(LINK) $(rasterlite_grid_OBJECTS) $(rasterlite_grid_LDADD) $(LIBS)
   276         -rasterlite_load$(EXEEXT): $(rasterlite_load_OBJECTS) $(rasterlite_load_DEPENDENCIES) 
          340  +rasterlite_load$(EXEEXT): $(rasterlite_load_OBJECTS) $(rasterlite_load_DEPENDENCIES) $(EXTRA_rasterlite_load_DEPENDENCIES) 
   277    341   	@rm -f rasterlite_load$(EXEEXT)
   278    342   	$(LINK) $(rasterlite_load_OBJECTS) $(rasterlite_load_LDADD) $(LIBS)
   279         -rasterlite_pyramid$(EXEEXT): $(rasterlite_pyramid_OBJECTS) $(rasterlite_pyramid_DEPENDENCIES) 
          343  +rasterlite_pyramid$(EXEEXT): $(rasterlite_pyramid_OBJECTS) $(rasterlite_pyramid_DEPENDENCIES) $(EXTRA_rasterlite_pyramid_DEPENDENCIES) 
   280    344   	@rm -f rasterlite_pyramid$(EXEEXT)
   281    345   	$(LINK) $(rasterlite_pyramid_OBJECTS) $(rasterlite_pyramid_LDADD) $(LIBS)
   282         -rasterlite_tool$(EXEEXT): $(rasterlite_tool_OBJECTS) $(rasterlite_tool_DEPENDENCIES) 
          346  +rasterlite_tool$(EXEEXT): $(rasterlite_tool_OBJECTS) $(rasterlite_tool_DEPENDENCIES) $(EXTRA_rasterlite_tool_DEPENDENCIES) 
   283    347   	@rm -f rasterlite_tool$(EXEEXT)
   284    348   	$(LINK) $(rasterlite_tool_OBJECTS) $(rasterlite_tool_LDADD) $(LIBS)
   285         -rasterlite_topmost$(EXEEXT): $(rasterlite_topmost_OBJECTS) $(rasterlite_topmost_DEPENDENCIES) 
          349  +rasterlite_topmost$(EXEEXT): $(rasterlite_topmost_OBJECTS) $(rasterlite_topmost_DEPENDENCIES) $(EXTRA_rasterlite_topmost_DEPENDENCIES) 
   286    350   	@rm -f rasterlite_topmost$(EXEEXT)
   287    351   	$(LINK) $(rasterlite_topmost_OBJECTS) $(rasterlite_topmost_LDADD) $(LIBS)
   288    352   
   289    353   mostlyclean-compile:
   290    354   	-rm -f *.$(OBJEXT)
   291    355   
   292    356   distclean-compile:
................................................................................
   296    360   @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rasterlite_load.Po@am__quote@
   297    361   @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rasterlite_pyramid.Po@am__quote@
   298    362   @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rasterlite_tool.Po@am__quote@
   299    363   @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rasterlite_topmost.Po@am__quote@
   300    364   
   301    365   .c.o:
   302    366   @am__fastdepCC_TRUE@	$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
   303         -@am__fastdepCC_TRUE@	mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
          367  +@am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
   304    368   @AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
   305    369   @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
   306    370   @am__fastdepCC_FALSE@	$(COMPILE) -c $<
   307    371   
   308    372   .c.obj:
   309    373   @am__fastdepCC_TRUE@	$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
   310         -@am__fastdepCC_TRUE@	mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
          374  +@am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
   311    375   @AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
   312    376   @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
   313    377   @am__fastdepCC_FALSE@	$(COMPILE) -c `$(CYGPATH_W) '$<'`
   314    378   
   315    379   .c.lo:
   316    380   @am__fastdepCC_TRUE@	$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
   317         -@am__fastdepCC_TRUE@	mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
          381  +@am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
   318    382   @AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
   319    383   @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
   320    384   @am__fastdepCC_FALSE@	$(LTCOMPILE) -c -o $@ $<
   321    385   
   322    386   mostlyclean-libtool:
   323    387   	-rm -f *.lo
   324    388   
................................................................................
   326    390   	-rm -rf .libs _libs
   327    391   
   328    392   ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
   329    393   	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
   330    394   	unique=`for i in $$list; do \
   331    395   	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
   332    396   	  done | \
   333         -	  $(AWK) '{ files[$$0] = 1; nonemtpy = 1; } \
          397  +	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
   334    398   	      END { if (nonempty) { for (i in files) print i; }; }'`; \
   335    399   	mkid -fID $$unique
   336    400   tags: TAGS
   337    401   
   338    402   TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
   339    403   		$(TAGS_FILES) $(LISP)
   340         -	tags=; \
          404  +	set x; \
   341    405   	here=`pwd`; \
   342    406   	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
   343    407   	unique=`for i in $$list; do \
   344    408   	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
   345    409   	  done | \
   346    410   	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
   347    411   	      END { if (nonempty) { for (i in files) print i; }; }'`; \
   348         -	if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
          412  +	shift; \
          413  +	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
   349    414   	  test -n "$$unique" || unique=$$empty_fix; \
   350         -	  $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
   351         -	    $$tags $$unique; \
          415  +	  if test $$# -gt 0; then \
          416  +	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
          417  +	      "$$@" $$unique; \
          418  +	  else \
          419  +	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
          420  +	      $$unique; \
          421  +	  fi; \
   352    422   	fi
   353    423   ctags: CTAGS
   354    424   CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
   355    425   		$(TAGS_FILES) $(LISP)
   356         -	tags=; \
   357    426   	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
   358    427   	unique=`for i in $$list; do \
   359    428   	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
   360    429   	  done | \
   361    430   	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
   362    431   	      END { if (nonempty) { for (i in files) print i; }; }'`; \
   363         -	test -z "$(CTAGS_ARGS)$$tags$$unique" \
          432  +	test -z "$(CTAGS_ARGS)$$unique" \
   364    433   	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
   365         -	     $$tags $$unique
          434  +	     $$unique
   366    435   
   367    436   GTAGS:
   368    437   	here=`$(am__cd) $(top_builddir) && pwd` \
   369         -	  && cd $(top_srcdir) \
   370         -	  && gtags -i $(GTAGS_ARGS) $$here
          438  +	  && $(am__cd) $(top_srcdir) \
          439  +	  && gtags -i $(GTAGS_ARGS) "$$here"
   371    440   
   372    441   distclean-tags:
   373    442   	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
   374    443   
   375    444   distdir: $(DISTFILES)
   376    445   	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
   377    446   	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
................................................................................
   384    453   			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
   385    454   			   sort -u` ;; \
   386    455   	esac; \
   387    456   	for file in $$dist_files; do \
   388    457   	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
   389    458   	  if test -d $$d/$$file; then \
   390    459   	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
          460  +	    if test -d "$(distdir)/$$file"; then \
          461  +	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
          462  +	    fi; \
   391    463   	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
   392         -	      cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
          464  +	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
          465  +	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
   393    466   	    fi; \
   394         -	    cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
          467  +	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
   395    468   	  else \
   396         -	    test -f $(distdir)/$$file \
   397         -	    || cp -p $$d/$$file $(distdir)/$$file \
          469  +	    test -f "$(distdir)/$$file" \
          470  +	    || cp -p $$d/$$file "$(distdir)/$$file" \
   398    471   	    || exit 1; \
   399    472   	  fi; \
   400    473   	done
   401    474   check-am: all-am
   402    475   check: check-am
   403    476   all-am: Makefile $(PROGRAMS)
   404    477   installdirs:
................................................................................
   411    484   uninstall: uninstall-am
   412    485   
   413    486   install-am: all-am
   414    487   	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
   415    488   
   416    489   installcheck: installcheck-am
   417    490   install-strip:
   418         -	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
   419         -	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
   420         -	  `test -z '$(STRIP)' || \
   421         -	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
          491  +	if test -z '$(STRIP)'; then \
          492  +	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
          493  +	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
          494  +	      install; \
          495  +	else \
          496  +	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
          497  +	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
          498  +	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
          499  +	fi
   422    500   mostlyclean-generic:
          501  +	-test -z "$(MOSTLYCLEANFILES)" || rm -f $(MOSTLYCLEANFILES)
   423    502   
   424    503   clean-generic:
   425    504   
   426    505   distclean-generic:
   427    506   	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
          507  +	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
   428    508   
   429    509   maintainer-clean-generic:
   430    510   	@echo "This command is intended for maintainers to use"
   431    511   	@echo "it deletes files that may require special tools to rebuild."
   432    512   clean: clean-am
   433    513   
   434    514   clean-am: clean-binPROGRAMS clean-generic clean-libtool mostlyclean-am
................................................................................
   440    520   	distclean-tags
   441    521   
   442    522   dvi: dvi-am
   443    523   
   444    524   dvi-am:
   445    525   
   446    526   html: html-am
          527  +
          528  +html-am:
   447    529   
   448    530   info: info-am
   449    531   
   450    532   info-am:
   451    533   
   452    534   install-data-am:
   453    535   
   454    536   install-dvi: install-dvi-am
          537  +
          538  +install-dvi-am:
   455    539   
   456    540   install-exec-am: install-binPROGRAMS
   457    541   
   458    542   install-html: install-html-am
          543  +
          544  +install-html-am:
   459    545   
   460    546   install-info: install-info-am
          547  +
          548  +install-info-am:
   461    549   
   462    550   install-man:
   463    551   
   464    552   install-pdf: install-pdf-am
          553  +
          554  +install-pdf-am:
   465    555   
   466    556   install-ps: install-ps-am
          557  +
          558  +install-ps-am:
   467    559   
   468    560   installcheck-am:
   469    561   
   470    562   maintainer-clean: maintainer-clean-am
   471    563   	-rm -rf ./$(DEPDIR)
   472    564   	-rm -f Makefile
   473    565   maintainer-clean-am: distclean-am maintainer-clean-generic
................................................................................
   498    590   	install-html-am install-info install-info-am install-man \
   499    591   	install-pdf install-pdf-am install-ps install-ps-am \
   500    592   	install-strip installcheck installcheck-am installdirs \
   501    593   	maintainer-clean maintainer-clean-generic mostlyclean \
   502    594   	mostlyclean-compile mostlyclean-generic mostlyclean-libtool \
   503    595   	pdf pdf-am ps ps-am tags uninstall uninstall-am \
   504    596   	uninstall-binPROGRAMS
          597  +
   505    598   
   506    599   # Tell versions [3.59,3.63) of GNU make to not export all variables.
   507    600   # Otherwise a system limit (for SysV at least) may be exceeded.
   508    601   .NOEXPORT:

Changes to src/rasterlite_grid.c.

     1      1   /* 
     2      2   / rasterlite_grid.c
     3      3   /
     4      4   / a tool generating a GeoTIFF from am ASCII or BINARY Grid 
     5      5   /
     6         -/ version 1.0, 2009 June 28
            6  +/ version 1.1a, 2011 November 12
     7      7   /
     8      8   / Author: Sandro Furieri a.furieri@lqt.it
     9      9   /
    10         -/ Copyright (C) 2009  Alessandro Furieri
           10  +/ ------------------------------------------------------------------------------
           11  +/ 
           12  +/ Version: MPL 1.1/GPL 2.0/LGPL 2.1
           13  +/ 
           14  +/ The contents of this file are subject to the Mozilla Public License Version
           15  +/ 1.1 (the "License"); you may not use this file except in compliance with
           16  +/ the License. You may obtain a copy of the License at
           17  +/ http://www.mozilla.org/MPL/
           18  +/ 
           19  +/ Software distributed under the License is distributed on an "AS IS" basis,
           20  +/ WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
           21  +/ for the specific language governing rights and limitations under the
           22  +/ License.
    11     23   /
    12         -/    This program is free software: you can redistribute it and/or modify
    13         -/    it under the terms of the GNU General Public License as published by
    14         -/    the Free Software Foundation, either version 3 of the License, or
    15         -/    (at your option) any later version.
           24  +/ The Original Code is the RasterLite library
    16     25   /
    17         -/    This program is distributed in the hope that it will be useful,
    18         -/    but WITHOUT ANY WARRANTY; without even the implied warranty of
    19         -/    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    20         -/    GNU General Public License for more details.
           26  +/ The Initial Developer of the Original Code is Alessandro Furieri
           27  +/ 
           28  +/ Portions created by the Initial Developer are Copyright (C) 2009
           29  +/ the Initial Developer. All Rights Reserved.
    21     30   /
    22         -/    You should have received a copy of the GNU General Public License
    23         -/    along with this program.  If not, see <http://www.gnu.org/licenses/>.
    24         -/
           31  +/ Alternatively, the contents of this file may be used under the terms of
           32  +/ either the GNU General Public License Version 2 or later (the "GPL"), or
           33  +/ the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
           34  +/ in which case the provisions of the GPL or the LGPL are applicable instead
           35  +/ of those above. If you wish to allow use of your version of this file only
           36  +/ under the terms of either the GPL or the LGPL, and not to allow others to
           37  +/ use your version of this file under the terms of the MPL, indicate your
           38  +/ decision by deleting the provisions above and replace them with the notice
           39  +/ and other provisions required by the GPL or the LGPL. If you do not delete
           40  +/ the provisions above, a recipient may use your version of this file under
           41  +/ the terms of any one of the MPL, the GPL or the LGPL.
           42  +/ 
    25     43   */
    26     44   
    27     45   #include <stdlib.h>
    28     46   #include <stdio.h>
    29     47   #include <string.h>
    30     48   #include <float.h>
           49  +#include <math.h>
    31     50   #include <errno.h>
    32     51   #include <sys/types.h>
    33     52   
    34         -#include <geotiff.h>
    35         -#include <xtiffio.h>
    36         -#include <geo_tiffp.h>
    37         -#include <geo_keyp.h>
    38         -#include <geovalues.h>
    39         -#include <geo_normalize.h>
           53  +#include "rasterlite_tiff_hdrs.h"
    40     54   
    41     55   #if defined(_WIN32) && !defined(__MINGW32__)
    42     56   #include <io.h>
    43     57   #include <direct.h>
    44     58   #else
    45     59   #include <dirent.h>
    46     60   #endif
................................................................................
    53     67   #define ARG_GRID_PATH		1
    54     68   #define ARG_COLOR_PATH		2
    55     69   #define ARG_TIFF_PATH		3
    56     70   #define ARG_GRID_TYPE		4
    57     71   #define ARG_EPSG_CODE		5
    58     72   #define ARG_NODATA_COLOR	6
    59     73   #define ARG_PROJ4TEXT		7
           74  +#define ARG_MONO_COLOR		9
           75  +#define ARG_Z_FACTOR		10
           76  +#define ARG_SCALE			11
           77  +#define ARG_AZIMUTH			12
           78  +#define ARG_ALTITUDE		13
    60     79   
    61     80   #define ASCII_GRID	100
    62     81   #define FLOAT_GRID	101
    63     82   
    64     83   #define BYTE_ORDER_NONE	0
    65     84   #define BYTE_ORDER_BIG	1
    66     85   #define BYTE_ORDER_LITTLE	2
    67     86   
    68     87   struct colorTable
    69     88   {
           89  +/* a color table value range */
    70     90       double min;
    71     91       double max;
    72     92       unsigned char red;
    73     93       unsigned char green;
    74     94       unsigned char blue;
    75     95   };
           96  +
           97  +struct triple_scan
           98  +{
           99  +/* the 3-scanlines object for Shaded Relief */
          100  +    int ncols;
          101  +    double z_factor;
          102  +    double scale_factor;
          103  +    double altitude;
          104  +    double azimuth;
          105  +    int mono_color;
          106  +    unsigned char mono_red;
          107  +    unsigned char mono_green;
          108  +    unsigned char mono_blue;
          109  +    float no_data_value;
          110  +    unsigned char no_red;
          111  +    unsigned char no_green;
          112  +    unsigned char no_blue;
          113  +    float *row1;
          114  +    float *row2;
          115  +    float *row3;
          116  +    float *current_row;
          117  +};
          118  +
          119  +static int
          120  +cmp_color_qsort (const void *p1, const void *p2)
          121  +{
          122  +/* compares two colorTable entries [for QSORT] */
          123  +    struct colorTable *pc1 = (struct colorTable *) p1;
          124  +    struct colorTable *pc2 = (struct colorTable *) p2;
          125  +    if (pc1->min > pc2->min)
          126  +	return 1;
          127  +    if (pc1->min < pc2->min)
          128  +	return -1;
          129  +    if (pc1->max > pc2->max)
          130  +	return 1;
          131  +    if (pc1->max < pc2->max)
          132  +	return -1;
          133  +    return 0;
          134  +}
          135  +
          136  +static int
          137  +cmp_color_bsearch (const void *p1, const void *p2)
          138  +{
          139  +/* compares two colorTable entries [for BSEARCH] */
          140  +    struct colorTable *pc1 = (struct colorTable *) p1;
          141  +    struct colorTable *pc2 = (struct colorTable *) p2;
          142  +    if (pc1->min >= pc2->min && pc1->min <= pc2->max)
          143  +	return 0;
          144  +    if (pc1->min > pc2->min)
          145  +	return 1;
          146  +    if (pc1->min < pc2->min)
          147  +	return -1;
          148  +    if (pc1->min > pc2->max)
          149  +	return 1;
          150  +    if (pc1->min < pc2->max)
          151  +	return -1;
          152  +    return 0;
          153  +}
          154  +
          155  +static int
          156  +match_color (struct colorTable *color_table, int colors, double value,
          157  +	     unsigned char *red, unsigned char *green, unsigned char *blue)
          158  +{
          159  +/* mapping a value into the corresponding color */
          160  +    struct colorTable *ret;
          161  +    struct colorTable src;
          162  +    src.min = value;
          163  +    ret =
          164  +	bsearch (&src, color_table, colors, sizeof (struct colorTable),
          165  +		 cmp_color_bsearch);
          166  +    if (ret)
          167  +      {
          168  +	  *red = ret->red;
          169  +	  *green = ret->green;
          170  +	  *blue = ret->blue;
          171  +	  return 1;
          172  +      }
          173  +    return 0;
          174  +}
          175  +
          176  +static struct triple_scan *
          177  +triple_alloc (int ncols)
          178  +{
          179  +/* allocating the 3-scanlines object */
          180  +    struct triple_scan *p = malloc (sizeof (struct triple_scan));
          181  +    p->ncols = ncols;
          182  +    p->row1 = malloc (sizeof (float) * ncols);
          183  +    p->row2 = malloc (sizeof (float) * ncols);
          184  +    p->row3 = malloc (sizeof (float) * ncols);
          185  +    p->current_row = p->row1;
          186  +    p->mono_color = 0;
          187  +    p->mono_red = 0;
          188  +    p->mono_green = 0;
          189  +    p->mono_blue = 0;
          190  +    p->no_data_value = 0.0;
          191  +    p->no_red = 0;
          192  +    p->no_green = 0;
          193  +    p->no_blue = 0;
          194  +    p->z_factor = 1.0;
          195  +    p->scale_factor = 1.0;
          196  +    p->altitude = 45.0;
          197  +    p->azimuth = 315.0;
          198  +    return p;
          199  +}
          200  +
          201  +static void
          202  +triple_free (struct triple_scan *p)
          203  +{
          204  +/* freeing the 3-scanlines object */
          205  +    free (p->row1);
          206  +    free (p->row2);
          207  +    free (p->row3);
          208  +    free (p);
          209  +}
          210  +
          211  +static void
          212  +triple_set_no_data (struct triple_scan *p, float no_data_value,
          213  +		    unsigned char no_red, unsigned char no_green,
          214  +		    unsigned char no_blue)
          215  +{
          216  +/* setting NODATA params */
          217  +    p->no_data_value = no_data_value;
          218  +    p->no_red = no_red;
          219  +    p->no_green = no_green;
          220  +    p->no_blue = no_blue;
          221  +}
          222  +
          223  +static void
          224  +triple_set_monochrome_params (struct triple_scan *p, int mono_color,
          225  +			      unsigned char mono_red, unsigned char mono_green,
          226  +			      unsigned char mono_blue)
          227  +{
          228  +/* setting ShadedRelief params */
          229  +    p->mono_color = mono_color;
          230  +    p->mono_red = mono_red;
          231  +    p->mono_green = mono_green;
          232  +    p->mono_blue = mono_blue;
          233  +}
          234  +
          235  +static void
          236  +triple_set_shaded_relief_params (struct triple_scan *p, double z, double scale,
          237  +				 double alt, double az)
          238  +{
          239  +/* setting ShadedRelief params */
          240  +    p->z_factor = z;
          241  +    p->scale_factor = scale;
          242  +    p->altitude = alt;
          243  +    p->azimuth = az;
          244  +}
          245  +
          246  +static void
          247  +triple_rotate (struct triple_scan *p)
          248  +{
          249  +/* rotating the 3-scanlines */
          250  +    if (p->current_row == p->row1)
          251  +      {
          252  +	  p->current_row = p->row2;
          253  +	  goto zero_init;
          254  +      }
          255  +    if (p->current_row == p->row2)
          256  +      {
          257  +	  p->current_row = p->row3;
          258  +	  goto zero_init;
          259  +      }
          260  +    p->current_row = p->row1;
          261  +    p->row1 = p->row2;
          262  +    p->row2 = p->row3;
          263  +    p->row3 = p->current_row;
          264  +  zero_init:
          265  +    memset (p->current_row, 0, sizeof (float) * p->ncols);
          266  +}
          267  +
          268  +static void
          269  +triple_store_cell (struct triple_scan *p, int icol, float value)
          270  +{
          271  +/* storing a cell value into 3-scanlines */
          272  +    if (icol < 0 || icol >= p->ncols)
          273  +	return;
          274  +    *(p->current_row + icol) = value;
          275  +}
          276  +
          277  +static int
          278  +triple_is_valid (struct triple_scan *p)
          279  +{
          280  +/* checking for validitity */
          281  +    if (p->current_row == p->row3)
          282  +	return 1;
          283  +    return 0;
          284  +}
          285  +
          286  +static void
          287  +triple_shaded_relief (struct triple_scan *p, unsigned char *raster)
          288  +{
          289  +/* creating a shaded relief scanline */
          290  +    int j;
          291  +    int n;
          292  +    double x;
          293  +    double y;
          294  +    double aspect;
          295  +    double slope;
          296  +    double cang;
          297  +    int gray;
          298  +    float afWin[9];
          299  +    const double degreesToRadians = M_PI / 180.0;
          300  +    const double altRadians = p->altitude * degreesToRadians;
          301  +    const double azRadians = p->azimuth * degreesToRadians;
          302  +    double red;
          303  +    double green;
          304  +    double blue;
          305  +    double alpha;
          306  +    int bContainsNull;
          307  +    unsigned char *p_raster = raster;
          308  +    unsigned char r;
          309  +    unsigned char g;
          310  +    unsigned char b;
          311  +
          312  +/*
          313  +/ Move a 3x3 pafWindow over each cell 
          314  +/ (where the cell in question is #4)
          315  +/ 
          316  +/      0 1 2
          317  +/      3 4 5
          318  +/      6 7 8
          319  +*/
          320  +    for (j = 0; j < p->ncols; j++)
          321  +      {
          322  +	  /* Exclude the edges */
          323  +	  if (j == 0 || j == p->ncols - 1)
          324  +	      continue;
          325  +
          326  +	  bContainsNull = 0;
          327  +
          328  +	  afWin[0] = p->row1[j - 1];
          329  +	  afWin[1] = p->row1[j];
          330  +	  afWin[2] = p->row1[j + 1];
          331  +	  afWin[3] = p->row2[j - 1];
          332  +	  afWin[4] = p->row2[j];
          333  +	  afWin[5] = p->row2[j + 1];
          334  +	  afWin[6] = p->row3[j - 1];
          335  +	  afWin[7] = p->row3[j];
          336  +	  afWin[8] = p->row3[j + 1];
          337  +
          338  +	  for (n = 0; n <= 8; n++)
          339  +	    {
          340  +		if (afWin[n] == p->no_data_value)
          341  +		  {
          342  +		      bContainsNull = 1;
          343  +		      break;
          344  +		  }
          345  +	    }
          346  +
          347  +	  if (bContainsNull)
          348  +	    {
          349  +		/* We have nulls so write nullValue and move on */
          350  +		r = p->no_red;
          351  +		g = p->no_green;
          352  +		b = p->no_blue;
          353  +	    }
          354  +	  else
          355  +	    {
          356  +		/* We have a valid 3x3 window. */
          357  +
          358  +		/* ---------------------------------------
          359  +		 * Compute Hillshade
          360  +		 */
          361  +
          362  +		/* First Slope ... */
          363  +		x = p->z_factor * ((afWin[0] + afWin[3] + afWin[3] + afWin[6]) -
          364  +				   (afWin[2] + afWin[5] + afWin[5] +
          365  +				    afWin[8])) / (8.0 * p->scale_factor);
          366  +
          367  +		y = p->z_factor * ((afWin[6] + afWin[7] + afWin[7] + afWin[8]) -
          368  +				   (afWin[0] + afWin[1] + afWin[1] +
          369  +				    afWin[2])) / (8.0 * p->scale_factor);
          370  +
          371  +		slope = M_PI / 2 - atan (sqrt (x * x + y * y));
          372  +
          373  +		/* ... then aspect... */
          374  +		aspect = atan2 (x, y);
          375  +
          376  +		/* ... then the shade value */
          377  +		cang = sin (altRadians) * sin (slope) +
          378  +		    cos (altRadians) * cos (slope) *
          379  +		    cos (azRadians - M_PI / 2 - aspect);
          380  +
          381  +		if (cang <= 0.0)
          382  +		    cang = 1.0;
          383  +		else
          384  +		    cang = 1.0 + (254.0 * cang);
          385  +
          386  +		if (p->mono_color)
          387  +		  {
          388  +		      /* using the monochrome base color + ALPHA */
          389  +		      alpha = cang / 255.0;
          390  +		      red = (double) (p->mono_red) * alpha;
          391  +		      green = (double) (p->mono_green) * alpha;
          392  +		      blue = (double) (p->mono_blue) * alpha;
          393  +		      if (red < 0.0)
          394  +			  red = 0.0;
          395  +		      if (green < 0.0)
          396  +			  green = 0.0;
          397  +		      if (blue < 0.0)
          398  +			  blue = 0.0;
          399  +		      if (red > 255.0)
          400  +			  red = 255.0;
          401  +		      if (green > 255.0)
          402  +			  green = 255.0;
          403  +		      if (blue > 255.0)
          404  +			  blue = 255.0;
          405  +		      r = (unsigned char) red;
          406  +		      g = (unsigned char) green;
          407  +		      b = (unsigned) blue;
          408  +		  }
          409  +		else
          410  +		  {
          411  +		      /* plain gray-scale */
          412  +		      gray = (int) cang;
          413  +		      r = (unsigned char) gray;
          414  +		      g = (unsigned char) gray;
          415  +		      b = (unsigned) gray;
          416  +		  }
          417  +	    }
          418  +	  *p_raster++ = r;
          419  +	  *p_raster++ = g;
          420  +	  *p_raster++ = b;
          421  +      }
          422  +}
          423  +
          424  +static int
          425  +triple_shaded_relief_color (struct colorTable *color_table, int colors,
          426  +			    struct triple_scan *p, unsigned char *raster,
          427  +			    int row)
          428  +{
          429  +/* creating a shaded relief color scanline */
          430  +    int j;
          431  +    int n;
          432  +    double x;
          433  +    double y;
          434  +    double aspect;
          435  +    double slope;
          436  +    double cang;
          437  +    float afWin[9];
          438  +    const double degreesToRadians = M_PI / 180.0;
          439  +    const double altRadians = p->altitude * degreesToRadians;
          440  +    const double azRadians = p->azimuth * degreesToRadians;
          441  +    double red;
          442  +    double green;
          443  +    double blue;
          444  +    double alpha;
          445  +    double thisValue;
          446  +    int bContainsNull;
          447  +    unsigned char *p_raster = raster;
          448  +    unsigned char r;
          449  +    unsigned char g;
          450  +    unsigned char b;
          451  +
          452  +/*
          453  +/ Move a 3x3 pafWindow over each cell 
          454  +/ (where the cell in question is #4)
          455  +/ 
          456  +/      0 1 2
          457  +/      3 4 5
          458  +/      6 7 8
          459  +*/
          460  +    for (j = 0; j < p->ncols; j++)
          461  +      {
          462  +	  /* Exclude the edges */
          463  +	  if (j == 0 || j == p->ncols - 1)
          464  +	      continue;
          465  +
          466  +	  bContainsNull = 0;
          467  +
          468  +	  afWin[0] = p->row1[j - 1];
          469  +	  afWin[1] = p->row1[j];
          470  +	  afWin[2] = p->row1[j + 1];
          471  +	  afWin[3] = p->row2[j - 1];
          472  +	  afWin[4] = p->row2[j];
          473  +	  afWin[5] = p->row2[j + 1];
          474  +	  afWin[6] = p->row3[j - 1];
          475  +	  afWin[7] = p->row3[j];
          476  +	  afWin[8] = p->row3[j + 1];
          477  +
          478  +	  thisValue = afWin[4];
          479  +
          480  +	  for (n = 0; n <= 8; n++)
          481  +	    {
          482  +		if (afWin[n] == p->no_data_value)
          483  +		  {
          484  +		      bContainsNull = 1;
          485  +		      break;
          486  +		  }
          487  +	    }
          488  +
          489  +	  if (bContainsNull)
          490  +	    {
          491  +		/* We have nulls so write nullValue and move on */
          492  +		r = p->no_red;
          493  +		g = p->no_green;
          494  +		b = p->no_blue;
          495  +	    }
          496  +	  else
          497  +	    {
          498  +		/* We have a valid 3x3 window. */
          499  +
          500  +		/* ---------------------------------------
          501  +		 * Compute Hillshade
          502  +		 */
          503  +
          504  +		/* First Slope ... */
          505  +		x = p->z_factor * ((afWin[0] + afWin[3] + afWin[3] + afWin[6]) -
          506  +				   (afWin[2] + afWin[5] + afWin[5] +
          507  +				    afWin[8])) / (8.0 * p->scale_factor);
          508  +
          509  +		y = p->z_factor * ((afWin[6] + afWin[7] + afWin[7] + afWin[8]) -
          510  +				   (afWin[0] + afWin[1] + afWin[1] +
          511  +				    afWin[2])) / (8.0 * p->scale_factor);
          512  +
          513  +		slope = M_PI / 2 - atan (sqrt (x * x + y * y));
          514  +
          515  +		/* ... then aspect... */
          516  +		aspect = atan2 (x, y);
          517  +
          518  +		/* ... then the shade value */
          519  +		cang = sin (altRadians) * sin (slope) +
          520  +		    cos (altRadians) * cos (slope) *
          521  +		    cos (azRadians - M_PI / 2 - aspect);
          522  +
          523  +		if (cang <= 0.0)
          524  +		    cang = 1.0;
          525  +		else
          526  +		    cang = 1.0 + (254.0 * cang);
          527  +
          528  +		/* merging the color + ALPHA */
          529  +		if (!match_color (color_table, colors, thisValue, &r, &g, &b))
          530  +		  {
          531  +		      printf
          532  +			  ("Grid row %d: unmatched value %1.8f; color not found\n",
          533  +			   row, thisValue);
          534  +		      return 0;
          535  +		  }
          536  +		alpha = cang / 255.0;
          537  +		red = (double) r *alpha;
          538  +		green = (double) g *alpha;
          539  +		blue = (double) b *alpha;
          540  +		if (red < 0.0)
          541  +		    red = 0.0;
          542  +		if (green < 0.0)
          543  +		    green = 0.0;
          544  +		if (blue < 0.0)
          545  +		    blue = 0.0;
          546  +		if (red > 255.0)
          547  +		    red = 255.0;
          548  +		if (green > 255.0)
          549  +		    green = 255.0;
          550  +		if (blue > 255.0)
          551  +		    blue = 255.0;
          552  +		r = (unsigned char) red;
          553  +		g = (unsigned char) green;
          554  +		b = (unsigned) blue;
          555  +	    }
          556  +	  *p_raster++ = r;
          557  +	  *p_raster++ = g;
          558  +	  *p_raster++ = b;
          559  +      }
          560  +    return 1;
          561  +}
    76    562   
    77    563   static int
    78    564   parse_hex (const char hi, const char lo)
    79    565   {
    80    566   /* parsing an hexedecimal value XX */
    81    567       int hex;
    82    568       switch (hi)
................................................................................
   350    836   	    }
   351    837   	  return 1;
   352    838         }
   353    839       return 0;
   354    840   }
   355    841   
   356    842   static struct colorTable *
   357         -parse_color_table (const char *path)
          843  +parse_color_table (const char *path, int *count)
   358    844   {
   359    845   /* parsing the Color Table */
   360    846       double min;
   361    847       double max;
   362    848       unsigned char red;
   363    849       unsigned char green;
   364    850       unsigned char blue;
................................................................................
   400    886   		ptr = buf;
   401    887   		continue;
   402    888   	    }
   403    889   	  *ptr++ = c;
   404    890         }
   405    891       if (lines == 0 || error > 0)
   406    892   	return NULL;
   407         -    table = malloc (sizeof (struct colorTable) * (lines + 1));
   408         -/* marking the last (stop) table item */
   409         -    (table + lines)->min = DBL_MAX;
   410         -    (table + lines)->max = DBL_MAX;
   411         -    (table + lines)->red = 0;
   412         -    (table + lines)->green = 0;
   413         -    (table + lines)->blue = 0;
          893  +    table = malloc (sizeof (struct colorTable) * (lines));
   414    894   /* closing and reopening the Color Table file */
   415    895       fclose (in);
   416    896       in = fopen (path, "rb");
   417    897       if (!in)
   418    898         {
   419    899   	  printf ("Re-Open error: %s\n", path);
   420    900   	  return NULL;
................................................................................
   457    937         {
   458    938   	  /* unexected error */
   459    939   	  fprintf (stderr, "ColorTable: unexpected read error\n");
   460    940   	  free (table);
   461    941   	  table = NULL;
   462    942         }
   463    943       fclose (in);
          944  +/* sorting the color table */
          945  +    *count = lines;
          946  +    qsort (table, lines, sizeof (struct colorTable), cmp_color_qsort);
   464    947       return table;
   465    948   }
   466    949   
   467    950   static int
   468    951   parseIntHeader (const char *row, const char *tag, int *value)
   469    952   {
   470    953   /* parsing an Integer value Header */
................................................................................
   504    987   	  *value = BYTE_ORDER_BIG;
   505    988   	  return 1;
   506    989         }
   507    990       return 0;
   508    991   }
   509    992   
   510    993   static int
   511         -match_color (struct colorTable *color_table, double value, unsigned char *red,
   512         -	     unsigned char *green, unsigned char *blue)
   513         -{
   514         -/* mapping a value into the corresponding color */
   515         -    struct colorTable *p = color_table;
   516         -    while (p)
   517         -      {
   518         -	  if (p->min == DBL_MAX)
   519         -	      return 0;
   520         -	  if (value >= p->min && value <= p->max)
   521         -	    {
   522         -		*red = p->red;
   523         -		*green = p->green;
   524         -		*blue = p->blue;
   525         -		return 1;
   526         -	    }
   527         -	  p++;
   528         -      }
   529         -    return 0;
   530         -}
   531         -
   532         -static int
   533         -fetch_scanline (int row, struct colorTable *color_table, FILE * asc,
          994  +fetch_scanline (int row, struct colorTable *color_table, int colors, FILE * asc,
   534    995   		unsigned char *raster, int columns, double nodata,
   535    996   		unsigned char no_red, unsigned char no_green,
   536    997   		unsigned char no_blue)
   537    998   {
   538    999   /* feeding a TIFF scanline from an ASCII Grid */
   539   1000       int c;
   540   1001       int cell = 0;
................................................................................
   565   1026   		  {
   566   1027   		      *p_raster++ = no_red;
   567   1028   		      *p_raster++ = no_green;
   568   1029   		      *p_raster++ = no_blue;
   569   1030   		  }
   570   1031   		else
   571   1032   		  {
   572         -		      if (match_color (color_table, value, &red, &green, &blue))
         1033  +		      if (match_color
         1034  +			  (color_table, colors, value, &red, &green, &blue))
   573   1035   			{
   574   1036   			    *p_raster++ = red;
   575   1037   			    *p_raster++ = green;
   576   1038   			    *p_raster++ = blue;
   577   1039   			}
   578   1040   		      else
   579   1041   			{
................................................................................
   653   1115       convert.int_value = 1;
   654   1116       if (convert.byte[0] == 0)
   655   1117   	return 0;
   656   1118       return 1;
   657   1119   }
   658   1120   
   659   1121   static int
   660         -fetch_float_scanline (int row, struct colorTable *color_table,
         1122  +fetch_float_scanline (int row, struct colorTable *color_table, int colors,
   661   1123   		      unsigned char *floats, unsigned char *raster, int columns,
   662   1124   		      double nodata, unsigned char no_red,
   663   1125   		      unsigned char no_green, unsigned char no_blue,
   664   1126   		      int byteorder)
   665   1127   {
   666   1128   /* feeding a TIFF scanline from a FLOAT Grid */
   667   1129       int cell = 0;
................................................................................
   679   1141   	    {
   680   1142   		*p_raster++ = no_red;
   681   1143   		*p_raster++ = no_green;
   682   1144   		*p_raster++ = no_blue;
   683   1145   	    }
   684   1146   	  else
   685   1147   	    {
   686         -		if (match_color (color_table, value, &red, &green, &blue))
         1148  +		if (match_color
         1149  +		    (color_table, colors, value, &red, &green, &blue))
   687   1150   		  {
   688   1151   		      *p_raster++ = red;
   689   1152   		      *p_raster++ = green;
   690   1153   		      *p_raster++ = blue;
   691   1154   		  }
   692   1155   		else
   693   1156   		  {
................................................................................
   699   1162   	    }
   700   1163   	  ptr += sizeof (float);
   701   1164         }
   702   1165       return 1;
   703   1166   }
   704   1167   
   705   1168   static void
   706         -export_geoTiff_float (struct colorTable *color_table, const char *proj4text,
   707         -		      const char *grid_path, const char *tiff_path,
   708         -		      unsigned char no_red, unsigned char no_green,
   709         -		      unsigned char no_blue, int verbose)
         1169  +export_geoTiff_float (struct colorTable *color_table, int colors,
         1170  +		      const char *proj4text, const char *grid_path,
         1171  +		      const char *tiff_path, unsigned char no_red,
         1172  +		      unsigned char no_green, unsigned char no_blue,
         1173  +		      int verbose)
   710   1174   {
   711   1175   /* exporting a FLOAT GRID as GeoTIFF */
   712   1176       TIFF *tiff = NULL;
   713   1177       GTIF *gtif = NULL;
   714   1178       int byteorder = BYTE_ORDER_NONE;
   715   1179       int c;
   716   1180       int row = 0;
................................................................................
   856   1320   	  if (rd != (sizeof (float) * ncols))
   857   1321   	    {
   858   1322   		printf ("*** Grid read error ***\n");
   859   1323   		printf ("An invalid GeoTIFF was generated ... aborting ...\n");
   860   1324   		goto stop;
   861   1325   	    }
   862   1326   	  if (fetch_float_scanline
   863         -	      (row + 1, color_table, flt_buf, raster, ncols, nodata, no_red,
   864         -	       no_green, no_blue, byteorder))
         1327  +	      (row + 1, color_table, colors, flt_buf, raster, ncols, nodata,
         1328  +	       no_red, no_green, no_blue, byteorder))
   865   1329   	    {
   866   1330   		if (TIFFWriteScanline (tiff, raster, row, 0) < 0)
   867   1331   		  {
   868   1332   		      printf ("\tTIFF write error @ row=%d\n", row);
   869   1333   		      printf
   870   1334   			  ("An invalid GeoTIFF was generated ... aborting ...\n");
   871   1335   		      goto stop;
................................................................................
   888   1352   	free (raster);
   889   1353       if (flt_buf)
   890   1354   	free (flt_buf);
   891   1355       fclose (grid);
   892   1356   }
   893   1357   
   894   1358   static void
   895         -export_geoTiff_ascii (struct colorTable *color_table, const char *proj4text,
   896         -		      const char *grid_path, const char *tiff_path,
   897         -		      unsigned char no_red, unsigned char no_green,
   898         -		      unsigned char no_blue, int verbose)
         1359  +export_geoTiff_ascii (struct colorTable *color_table, int colors,
         1360  +		      const char *proj4text, const char *grid_path,
         1361  +		      const char *tiff_path, unsigned char no_red,
         1362  +		      unsigned char no_green, unsigned char no_blue,
         1363  +		      int verbose)
   899   1364   {
   900   1365   /* exporting an ASCII GRID as GeoTIFF */
   901   1366       TIFF *tiff = NULL;
   902   1367       GTIF *gtif = NULL;
   903   1368       int c;
   904   1369       int row = 0;
   905   1370       char buf[1024];
................................................................................
  1015   1480         {
  1016   1481   	  if (verbose)
  1017   1482   	    {
  1018   1483   		fprintf (stderr, "writing scanline %d of %d\n", row + 1, nrows);
  1019   1484   		fflush (stderr);
  1020   1485   	    }
  1021   1486   	  if (fetch_scanline
  1022         -	      (row + 1, color_table, asc, raster, ncols, nodata, no_red,
         1487  +	      (row + 1, color_table, colors, asc, raster, ncols, nodata, no_red,
  1023   1488   	       no_green, no_blue))
  1024   1489   	    {
  1025   1490   		if (TIFFWriteScanline (tiff, raster, row, 0) < 0)
  1026   1491   		  {
  1027   1492   		      printf ("\tTIFF write error @ row=%d\n", row);
  1028   1493   		      printf
  1029   1494   			  ("An invalid GeoTIFF was generated ... aborting ...\n");
................................................................................
  1043   1508   	GTIFFree (gtif);
  1044   1509       if (tiff)
  1045   1510   	XTIFFClose (tiff);
  1046   1511       if (raster)
  1047   1512   	free (raster);
  1048   1513       fclose (asc);
  1049   1514   }
         1515  +
         1516  +static int
         1517  +fetch_float_scanline_shaded (unsigned char *floats, int columns,
         1518  +			     int byteorder, struct triple_scan *triplet)
         1519  +{
         1520  +/* feeding a TIFF scanline from a FLOAT Grid */
         1521  +    int cell = 0;
         1522  +    double value;
         1523  +    unsigned char *ptr = floats;
         1524  +    int endian_arch = check_endian_arch ();
         1525  +    for (cell = 0; cell < columns; cell++)
         1526  +      {
         1527  +	  value = fetch_float (ptr, byteorder, endian_arch);
         1528  +	  triple_store_cell (triplet, cell, (float) value);
         1529  +	  ptr += sizeof (float);
         1530  +      }
         1531  +    return 1;
         1532  +}
         1533  +
         1534  +static void
         1535  +export_geoTiff_shaded_float (struct colorTable *color_table, int colors,
         1536  +			     const char *proj4text, const char *grid_path,
         1537  +			     const char *tiff_path, unsigned char no_red,
         1538  +			     unsigned char no_green, unsigned char no_blue,
         1539  +			     int mono_color, unsigned char mono_red,
         1540  +			     unsigned char mono_green, unsigned char mono_blue,
         1541  +			     double z_factor, double scale_factor,
         1542  +			     double azimuth, double altitude, int verbose)
         1543  +{
         1544  +/* exporting a FLOAT GRID as GeoTIFF */
         1545  +    TIFF *tiff = NULL;
         1546  +    GTIF *gtif = NULL;
         1547  +    int byteorder = BYTE_ORDER_NONE;
         1548  +    int c;
         1549  +    int row = 0;
         1550  +    char buf[1024];
         1551  +    char path[1024];
         1552  +    char *ptr = buf;
         1553  +    int err = 0;
         1554  +    int ncols = -1;
         1555  +    int nrows = -1;
         1556  +    double xllcorner = 0.0;
         1557  +    double yllcorner = 0.0;
         1558  +    double cellsize = 0.0;
         1559  +    double nodata = 0.0;
         1560  +    double tiepoint[6];
         1561  +    double pixsize[3];
         1562  +    struct triple_scan *triplet = NULL;
         1563  +    unsigned char *raster = NULL;
         1564  +    unsigned char *flt_buf = NULL;
         1565  +    size_t rd;
         1566  +    FILE *grid;
         1567  +
         1568  +/* parsing the Grid Header .hdr */
         1569  +    sprintf (path, "%s.hdr", grid_path);
         1570  +    grid = fopen (path, "rb");
         1571  +    if (!grid)
         1572  +      {
         1573  +	  printf ("Open error: %s\n", path);
         1574  +	  return;
         1575  +      }
         1576  +    while ((c = getc (grid)) != EOF)
         1577  +      {
         1578  +	  if (c == '\r')
         1579  +	    {
         1580  +		/* ignoring Return chars */
         1581  +		continue;
         1582  +	    }
         1583  +	  if (c == '\n')
         1584  +	    {
         1585  +		*ptr = '\0';
         1586  +		switch (row)
         1587  +		  {
         1588  +		  case 0:
         1589  +		      if (!parseIntHeader (buf, "ncols ", &ncols))
         1590  +			  err = 1;
         1591  +		      break;
         1592  +		  case 1:
         1593  +		      if (!parseIntHeader (buf, "nrows ", &nrows))
         1594  +			  err = 1;
         1595  +		      break;
         1596  +		  case 2:
         1597  +		      if (!parseDblHeader (buf, "xllcorner ", &xllcorner))
         1598  +			  err = 1;
         1599  +		      break;
         1600  +		  case 3:
         1601  +		      if (!parseDblHeader (buf, "yllcorner ", &yllcorner))
         1602  +			  err = 1;
         1603  +		      break;
         1604  +		  case 4:
         1605  +		      if (!parseDblHeader (buf, "cellsize ", &cellsize))
         1606  +			  err = 1;
         1607  +		      break;
         1608  +		  case 5:
         1609  +		      if (!parseDblHeader (buf, "NODATA_value ", &nodata))
         1610  +			  err = 1;
         1611  +		      break;
         1612  +		  case 6:
         1613  +		      if (!parseOrderHeader (buf, "byteorder ", &byteorder))
         1614  +			  err = 1;
         1615  +		      break;
         1616  +		  };
         1617  +		ptr = buf;
         1618  +		row++;
         1619  +		if (row == 7)
         1620  +		    break;
         1621  +		continue;
         1622  +	    }
         1623  +	  *ptr++ = c;
         1624  +      }
         1625  +    if (err)
         1626  +      {
         1627  +	  /* there was some error */
         1628  +	  printf ("Invalid FLOAT Grid Header format in: %s\n", path);
         1629  +	  goto stop;
         1630  +      }
         1631  +    fclose (grid);
         1632  +
         1633  +/* resizing CellSize */
         1634  +    cellsize = (cellsize * (double) ncols) / (double) (ncols - 2);
         1635  +
         1636  +/* parsing the Grid Cells .flt */
         1637  +    sprintf (path, "%s.flt", grid_path);
         1638  +    grid = fopen (path, "rb");
         1639  +    if (!grid)
         1640  +      {
         1641  +	  printf ("Open error: %s\n", path);
         1642  +	  return;
         1643  +      }
         1644  +/* creating the GeoTIFF file */
         1645  +    tiff = XTIFFOpen (tiff_path, "w");
         1646  +    if (!tiff)
         1647  +      {
         1648  +	  printf ("\tCould not open TIFF image '%s'\n", tiff_path);
         1649  +	  goto stop;
         1650  +      }
         1651  +    gtif = GTIFNew (tiff);
         1652  +    if (!gtif)
         1653  +      {
         1654  +	  printf ("\tCould not open GeoTIFF image '%s'\n", tiff_path);
         1655  +	  goto stop;
         1656  +      }
         1657  +
         1658  +/* writing the TIFF Tags */
         1659  +    TIFFSetField (tiff, TIFFTAG_IMAGEWIDTH, ncols - 2);
         1660  +    TIFFSetField (tiff, TIFFTAG_IMAGELENGTH, nrows - 2);
         1661  +    TIFFSetField (tiff, TIFFTAG_COMPRESSION, COMPRESSION_NONE);
         1662  +    TIFFSetField (tiff, TIFFTAG_SAMPLEFORMAT, SAMPLEFORMAT_UINT);
         1663  +    TIFFSetField (tiff, TIFFTAG_ROWSPERSTRIP, 1);
         1664  +    TIFFSetField (tiff, TIFFTAG_PLANARCONFIG, PLANARCONFIG_CONTIG);
         1665  +    TIFFSetField (tiff, TIFFTAG_PHOTOMETRIC, PHOTOMETRIC_RGB);
         1666  +    TIFFSetField (tiff, TIFFTAG_BITSPERSAMPLE, 8);
         1667  +    TIFFSetField (tiff, TIFFTAG_SAMPLESPERPIXEL, 3);
         1668  +
         1669  +/* writing the GeoTIFF Tags */
         1670  +    pixsize[0] = cellsize;
         1671  +    pixsize[1] = cellsize;
         1672  +    pixsize[2] = 0.0;
         1673  +    TIFFSetField (tiff, GTIFF_PIXELSCALE, 3, pixsize);
         1674  +    tiepoint[0] = 0.0;
         1675  +    tiepoint[1] = 0.0;
         1676  +    tiepoint[2] = 0.0;
         1677  +    tiepoint[3] = xllcorner;
         1678  +    tiepoint[4] = yllcorner + (cellsize * nrows);
         1679  +    tiepoint[5] = 0.0;
         1680  +    TIFFSetField (tiff, GTIFF_TIEPOINTS, 6, tiepoint);
         1681  +    GTIFSetFromProj4 (gtif, proj4text);
         1682  +    GTIFWriteKeys (gtif);
         1683  +    raster = malloc (ncols * 3);
         1684  +    flt_buf = malloc (sizeof (float) * ncols);
         1685  +
         1686  +/* initializing the TripleRow object */
         1687  +    triplet = triple_alloc (ncols);
         1688  +    triple_set_shaded_relief_params (triplet, z_factor, scale_factor, altitude,
         1689  +				     azimuth);
         1690  +    triple_set_monochrome_params (triplet, mono_color, mono_red, mono_green,
         1691  +				  mono_blue);
         1692  +    triple_set_no_data (triplet, (float) nodata, no_red, no_green, no_blue);
         1693  +
         1694  +    for (row = 0; row < nrows; row++)
         1695  +      {
         1696  +	  if (verbose)
         1697  +	    {
         1698  +		fprintf (stderr, "writing scanline %d of %d\n", row + 1, nrows);
         1699  +		fflush (stderr);
         1700  +	    }
         1701  +	  rd = fread (flt_buf, 1, ncols * sizeof (float), grid);
         1702  +	  if (rd != (sizeof (float) * ncols))
         1703  +	    {
         1704  +		printf ("*** Grid read error ***\n");
         1705  +		printf ("An invalid GeoTIFF was generated ... aborting ...\n");
         1706  +		goto stop;
         1707  +	    }
         1708  +	  if (fetch_float_scanline_shaded (flt_buf, ncols, byteorder, triplet))
         1709  +	    {
         1710  +		if (triple_is_valid (triplet))
         1711  +		  {
         1712  +		      int ret = 1;
         1713  +		      if (!color_table)
         1714  +			  triple_shaded_relief (triplet, raster);
         1715  +		      else
         1716  +			  ret =
         1717  +			      triple_shaded_relief_color (color_table, colors,
         1718  +							  triplet, raster,
         1719  +							  row + 1);
         1720  +		      if (!ret)
         1721  +			  goto stop;
         1722  +		      if (TIFFWriteScanline (tiff, raster, row - 2, 0) < 0)
         1723  +			{
         1724  +			    printf ("\tTIFF write error @ row=%d\n", row);
         1725  +			    printf
         1726  +				("An invalid GeoTIFF was generated ... aborting ...\n");
         1727  +			    goto stop;
         1728  +			}
         1729  +		  }
         1730  +		triple_rotate (triplet);
         1731  +	    }
         1732  +	  else
         1733  +	    {
         1734  +		printf ("*** Grid read error ***\n");
         1735  +		printf ("An invalid GeoTIFF was generated ... aborting ...\n");
         1736  +		goto stop;
         1737  +	    }
         1738  +      }
         1739  +
         1740  +  stop:
         1741  +    if (gtif)
         1742  +	GTIFFree (gtif);
         1743  +    if (tiff)
         1744  +	XTIFFClose (tiff);
         1745  +    if (raster)
         1746  +	free (raster);
         1747  +    if (flt_buf)
         1748  +	free (flt_buf);
         1749  +    fclose (grid);
         1750  +    if (triplet)
         1751  +	triple_free (triplet);
         1752  +}
         1753  +
         1754  +static int
         1755  +fetch_scanline_shaded (int row, FILE * asc, int columns,
         1756  +		       struct triple_scan *triplet)
         1757  +{
         1758  +/* feeding a TIFF scanline from an ASCII Grid */
         1759  +    int c;
         1760  +    int cell = 0;
         1761  +    char buf[1024];
         1762  +    char *ptr = buf;
         1763  +    double value;
         1764  +    while ((c = getc (asc)) != EOF)
         1765  +      {
         1766  +	  if (c == '\n')
         1767  +	      break;
         1768  +	  *ptr++ = c;
         1769  +	  if (c == ' ')
         1770  +	    {
         1771  +		/* value delimiter */
         1772  +		*ptr = '\0';
         1773  +		cell++;
         1774  +		if (cell > columns)
         1775  +		  {
         1776  +		      printf ("Grid row %d: exceding column\n", row);
         1777  +		      return 0;
         1778  +		  }
         1779  +		value = atof (buf);
         1780  +		triple_store_cell (triplet, cell, (float) value);
         1781  +		ptr = buf;
         1782  +	    }
         1783  +      }
         1784  +    return 1;
         1785  +}
         1786  +
         1787  +static void
         1788  +export_geoTiff_shaded_ascii (struct colorTable *color_table, int colors,
         1789  +			     const char *proj4text, const char *grid_path,
         1790  +			     const char *tiff_path, unsigned char no_red,
         1791  +			     unsigned char no_green, unsigned char no_blue,
         1792  +			     int mono_color, unsigned char mono_red,
         1793  +			     unsigned char mono_green, unsigned char mono_blue,
         1794  +			     double z_factor, double scale_factor,
         1795  +			     double azimuth, double altitude, int verbose)
         1796  +{
         1797  +/* exporting an ASCII GRID as GeoTIFF */
         1798  +    TIFF *tiff = NULL;
         1799  +    GTIF *gtif = NULL;
         1800  +    int c;
         1801  +    int row = 0;
         1802  +    char buf[1024];
         1803  +    char *ptr = buf;
         1804  +    int err = 0;
         1805  +    int ncols = -1;
         1806  +    int nrows = -1;
         1807  +    double xllcorner = 0.0;
         1808  +    double yllcorner = 0.0;
         1809  +    double cellsize = 0.0;
         1810  +    double nodata = 0.0;
         1811  +    double tiepoint[6];
         1812  +    double pixsize[3];
         1813  +    unsigned char *raster = NULL;
         1814  +    struct triple_scan *triplet = NULL;
         1815  +    FILE *asc = fopen (grid_path, "rb");
         1816  +    if (!asc)
         1817  +      {
         1818  +	  printf ("Open error: %s\n", grid_path);
         1819  +	  return;
         1820  +      }
         1821  +    while ((c = getc (asc)) != EOF)
         1822  +      {
         1823  +	  if (c == '\r')
         1824  +	    {
         1825  +		/* ignoring Return chars */
         1826  +		continue;
         1827  +	    }
         1828  +	  if (c == '\n')
         1829  +	    {
         1830  +		*ptr = '\0';
         1831  +		switch (row)
         1832  +		  {
         1833  +		  case 0:
         1834  +		      if (!parseIntHeader (buf, "ncols ", &ncols))
         1835  +			  err = 1;
         1836  +		      break;
         1837  +		  case 1:
         1838  +		      if (!parseIntHeader (buf, "nrows ", &nrows))
         1839  +			  err = 1;
         1840  +		      break;
         1841  +		  case 2:
         1842  +		      if (!parseDblHeader (buf, "xllcorner ", &xllcorner))
         1843  +			  err = 1;
         1844  +		      break;
         1845  +		  case 3:
         1846  +		      if (!parseDblHeader (buf, "yllcorner ", &yllcorner))
         1847  +			  err = 1;
         1848  +		      break;
         1849  +		  case 4:
         1850  +		      if (!parseDblHeader (buf, "cellsize ", &cellsize))
         1851  +			  err = 1;
         1852  +		      break;
         1853  +		  case 5:
         1854  +		      if (!parseDblHeader (buf, "NODATA_value ", &nodata))
         1855  +			  err = 1;
         1856  +		      break;
         1857  +		  };
         1858  +		ptr = buf;
         1859  +		row++;
         1860  +		if (row == 6)
         1861  +		    break;
         1862  +		continue;
         1863  +	    }
         1864  +	  *ptr++ = c;
         1865  +      }
         1866  +    if (err)
         1867  +      {
         1868  +	  /* there was some error */
         1869  +	  printf ("Invalid ASCII Grid format in: %s\n", grid_path);
         1870  +	  goto stop;
         1871  +      }
         1872  +
         1873  +/* resizing CellSize */
         1874  +    cellsize = (cellsize * (double) ncols) / (double) (ncols - 2);
         1875  +
         1876  +/* creating the GeoTIFF file */
         1877  +    tiff = XTIFFOpen (tiff_path, "w");
         1878  +    if (!tiff)
         1879  +      {
         1880  +	  printf ("\tCould not open TIFF image '%s'\n", tiff_path);
         1881  +	  goto stop;
         1882  +      }
         1883  +    gtif = GTIFNew (tiff);
         1884  +    if (!gtif)
         1885  +      {
         1886  +	  printf ("\tCould not open GeoTIFF image '%s'\n", tiff_path);
         1887  +	  goto stop;
         1888  +      }
         1889  +
         1890  +/* writing the TIFF Tags */
         1891  +    TIFFSetField (tiff, TIFFTAG_IMAGEWIDTH, ncols - 2);
         1892  +    TIFFSetField (tiff, TIFFTAG_IMAGELENGTH, nrows - 2);
         1893  +    TIFFSetField (tiff, TIFFTAG_COMPRESSION, COMPRESSION_NONE);
         1894  +    TIFFSetField (tiff, TIFFTAG_SAMPLEFORMAT, SAMPLEFORMAT_UINT);
         1895  +    TIFFSetField (tiff, TIFFTAG_ROWSPERSTRIP, 1);
         1896  +    TIFFSetField (tiff, TIFFTAG_PLANARCONFIG, PLANARCONFIG_CONTIG);
         1897  +    TIFFSetField (tiff, TIFFTAG_PHOTOMETRIC, PHOTOMETRIC_RGB);
         1898  +    TIFFSetField (tiff, TIFFTAG_BITSPERSAMPLE, 8);
         1899  +    TIFFSetField (tiff, TIFFTAG_SAMPLESPERPIXEL, 3);
         1900  +
         1901  +/* writing the GeoTIFF Tags */
         1902  +    pixsize[0] = cellsize;
         1903  +    pixsize[1] = cellsize;
         1904  +    pixsize[2] = 0.0;
         1905  +    TIFFSetField (tiff, GTIFF_PIXELSCALE, 3, pixsize);
         1906  +    tiepoint[0] = 0.0;
         1907  +    tiepoint[1] = 0.0;
         1908  +    tiepoint[2] = 0.0;
         1909  +    tiepoint[3] = xllcorner;
         1910  +    tiepoint[4] = yllcorner + (cellsize * nrows);
         1911  +    tiepoint[5] = 0.0;
         1912  +    TIFFSetField (tiff, GTIFF_TIEPOINTS, 6, tiepoint);
         1913  +    GTIFSetFromProj4 (gtif, proj4text);
         1914  +    GTIFWriteKeys (gtif);
         1915  +    raster = malloc (ncols * 3);
         1916  +
         1917  +/* initializing the TripleRow object */
         1918  +    triplet = triple_alloc (ncols);
         1919  +    triple_set_shaded_relief_params (triplet, z_factor, scale_factor, altitude,
         1920  +				     azimuth);
         1921  +    triple_set_monochrome_params (triplet, mono_color, mono_red, mono_green,
         1922  +				  mono_blue);
         1923  +    triple_set_no_data (triplet, (float) nodata, no_red, no_green, no_blue);
         1924  +
         1925  +    for (row = 0; row < nrows; row++)
         1926  +      {
         1927  +	  if (verbose)
         1928  +	    {
         1929  +		fprintf (stderr, "writing scanline %d of %d\n", row + 1, nrows);
         1930  +		fflush (stderr);
         1931  +	    }
         1932  +	  if (fetch_scanline_shaded (row + 1, asc, ncols, triplet))
         1933  +	    {
         1934  +		if (triple_is_valid (triplet))
         1935  +		  {
         1936  +		      int ret = 1;
         1937  +		      if (!color_table)
         1938  +			  triple_shaded_relief (triplet, raster);
         1939  +		      else
         1940  +			  ret =
         1941  +			      triple_shaded_relief_color (color_table, colors,
         1942  +							  triplet, raster,
         1943  +							  row + 1);
         1944  +		      if (!ret)
         1945  +			  goto stop;
         1946  +		      if (TIFFWriteScanline (tiff, raster, row - 2, 0) < 0)
         1947  +			{
         1948  +			    printf ("\tTIFF write error @ row=%d\n", row);
         1949  +			    printf
         1950  +				("An invalid GeoTIFF was generated ... aborting ...\n");
         1951  +			    goto stop;
         1952  +			}
         1953  +		  }
         1954  +		triple_rotate (triplet);
         1955  +	    }
         1956  +	  else
         1957  +	    {
         1958  +		printf ("*** Grid read error ***\n");
         1959  +		printf ("An invalid GeoTIFF was generated ... aborting ...\n");
         1960  +		goto stop;
         1961  +	    }
         1962  +      }
         1963  +
         1964  +  stop:
         1965  +    if (gtif)
         1966  +	GTIFFree (gtif);
         1967  +    if (tiff)
         1968  +	XTIFFClose (tiff);
         1969  +    if (raster)
         1970  +	free (raster);
         1971  +    fclose (asc);
         1972  +    if (triplet)
         1973  +	triple_free (triplet);
         1974  +}
  1050   1975   
  1051   1976   static void
  1052   1977   do_help ()
  1053   1978   {
  1054   1979   /* printing the argument list */
  1055   1980       fprintf (stderr, "\n\nusage: rasterlite_grid ARGLIST\n");
  1056   1981       fprintf (stderr,
................................................................................
  1064   1989       fprintf (stderr,
  1065   1990   	     "-t or --tiff-path     pathname    the GeoTIFF path (output)\n");
  1066   1991       fprintf (stderr,
  1067   1992   	     "-p or --proj4text     proj4text   the PROJ.4 parameters\n");
  1068   1993       fprintf (stderr, "-f or --grid-format   grid-type   [ASCII | FLOAT]\n");
  1069   1994       fprintf (stderr,
  1070   1995   	     "-n or --nodata-color  0xRRGGBB    [default = 0x000000]\n");
  1071         -    fprintf (stderr, "-v or --verbose                   verbose output\n");
         1996  +    fprintf (stderr, "-v or --verbose                   verbose output\n\n");
         1997  +    fprintf (stderr, "Shaded Relief specific arguments:\n");
         1998  +    fprintf (stderr, "---------------------------------\n");
         1999  +    fprintf (stderr,
         2000  +	     "-sr or --shaded-relief            *disabled by default*\n");
         2001  +    fprintf (stderr, "-m or --monochrome    0xRRGGBB    [default = none]\n");
         2002  +    fprintf (stderr, "-z or --z-factor      numeric     [default = 1.0]\n");
         2003  +    fprintf (stderr, "-s or --scale-factor  numeric     [default = 1.0]\n");
         2004  +    fprintf (stderr, "-az or --azimuth      numeric     [default = 315.0]\n");
         2005  +    fprintf (stderr, "-al or --altitude     numeric     [default = 45.0]\n\n");
         2006  +    fprintf (stderr, "Please note: --monochrome and --color-path are\n");
         2007  +    fprintf (stderr, "mutually exclusive options\n");
  1072   2008   }
  1073   2009   
  1074   2010   int
  1075   2011   main (int argc, char *argv[])
  1076   2012   {
  1077   2013   /* the MAIN function simply perform arguments checking */
  1078   2014       int i;
................................................................................
  1085   2021       int verbose = 0;
  1086   2022       int error = 0;
  1087   2023       struct colorTable *color_table = NULL;
  1088   2024       unsigned char no_red = 0;
  1089   2025       unsigned char no_green = 0;
  1090   2026       unsigned char no_blue = 0;
  1091   2027       char error_nodata_color[1024];
         2028  +    int shaded_relief = 0;
         2029  +    int mono_color = 0;
         2030  +    unsigned char mono_red = 0;
         2031  +    unsigned char mono_green = 0;
         2032  +    unsigned char mono_blue = 0;
         2033  +    char error_mono_color[1024];
         2034  +    double z_factor = 1.0;
         2035  +    double scale_factor = 1.0;
         2036  +    double azimuth = 315.0;
         2037  +    double altitude = 45.0;
         2038  +    int colors;
  1092   2039       *error_nodata_color = '\0';
         2040  +    *error_mono_color = '\0';
  1093   2041       for (i = 1; i < argc; i++)
  1094   2042         {
  1095   2043   	  /* parsing the invocation arguments */
  1096   2044   	  if (next_arg != ARG_NONE)
  1097   2045   	    {
  1098   2046   		switch (next_arg)
  1099   2047   		  {
................................................................................
  1115   2063   		      if (strcasecmp (argv[i], "FLOAT") == 0)
  1116   2064   			  grid_type = FLOAT_GRID;
  1117   2065   		      break;
  1118   2066   		  case ARG_NODATA_COLOR:
  1119   2067   		      if (!parse_rgb (argv[i], &no_red, &no_green, &no_blue))
  1120   2068   			  strcpy (error_nodata_color, argv[i]);
  1121   2069   		      break;
         2070  +		  case ARG_MONO_COLOR:
         2071  +		      if (!parse_rgb
         2072  +			  (argv[i], &mono_red, &mono_green, &mono_blue))
         2073  +			  strcpy (error_mono_color, argv[i]);
         2074  +		      else
         2075  +			  mono_color = 1;
         2076  +		      break;
         2077  +		  case ARG_Z_FACTOR:
         2078  +		      z_factor = atof (argv[i]);
         2079  +		      break;
         2080  +		  case ARG_SCALE:
         2081  +		      scale_factor = atof (argv[i]);
         2082  +		      break;
         2083  +		  case ARG_AZIMUTH:
         2084  +		      azimuth = atof (argv[i]);
         2085  +		      break;
         2086  +		  case ARG_ALTITUDE:
         2087  +		      altitude = atof (argv[i]);
         2088  +		      break;
  1122   2089   		  };
  1123   2090   		next_arg = ARG_NONE;
  1124   2091   		continue;
  1125   2092   	    }
  1126   2093   	  if (strcasecmp (argv[i], "--help") == 0
  1127   2094   	      || strcmp (argv[i], "-?") == 0)
  1128   2095   	    {
................................................................................
  1194   2161   		verbose = 1;
  1195   2162   		continue;
  1196   2163   	    }
  1197   2164   	  if (strcmp (argv[i], "-v") == 0)
  1198   2165   	    {
  1199   2166   		verbose = 1;
  1200   2167   		continue;
         2168  +	    }
         2169  +	  if (strcasecmp (argv[i], "--shared-relief") == 0)
         2170  +	    {
         2171  +		shaded_relief = 1;
         2172  +		continue;
         2173  +	    }
         2174  +	  if (strcmp (argv[i], "-sr") == 0)
         2175  +	    {
         2176  +		shaded_relief = 1;
         2177  +		continue;
         2178  +	    }
         2179  +	  if (strcmp (argv[i], "-m") == 0)
         2180  +	    {
         2181  +		next_arg = ARG_MONO_COLOR;
         2182  +		continue;
         2183  +	    }
         2184  +	  if (strcasecmp (argv[i], "--monochrome") == 0)
         2185  +	    {
         2186  +		next_arg = ARG_MONO_COLOR;
         2187  +		continue;
         2188  +	    }
         2189  +	  if (strcmp (argv[i], "-z") == 0)
         2190  +	    {
         2191  +		next_arg = ARG_Z_FACTOR;
         2192  +		continue;
         2193  +	    }
         2194  +	  if (strcasecmp (argv[i], "--z-factor") == 0)
         2195  +	    {
         2196  +		next_arg = ARG_Z_FACTOR;
         2197  +		continue;
         2198  +	    }
         2199  +	  if (strcmp (argv[i], "-s") == 0)
         2200  +	    {
         2201  +		next_arg = ARG_SCALE;
         2202  +		continue;
         2203  +	    }
         2204  +	  if (strcasecmp (argv[i], "--scale-factor") == 0)
         2205  +	    {
         2206  +		next_arg = ARG_SCALE;
         2207  +		continue;
         2208  +	    }
         2209  +	  if (strcmp (argv[i], "-az") == 0)
         2210  +	    {
         2211  +		next_arg = ARG_AZIMUTH;
         2212  +		continue;
         2213  +	    }
         2214  +	  if (strcasecmp (argv[i], "--azimuth") == 0)
         2215  +	    {
         2216  +		next_arg = ARG_AZIMUTH;
         2217  +		continue;
         2218  +	    }
         2219  +	  if (strcmp (argv[i], "-al") == 0)
         2220  +	    {
         2221  +		next_arg = ARG_ALTITUDE;
         2222  +		continue;
         2223  +	    }
         2224  +	  if (strcasecmp (argv[i], "--altitude") == 0)
         2225  +	    {
         2226  +		next_arg = ARG_ALTITUDE;
         2227  +		continue;
  1201   2228   	    }
  1202   2229   	  fprintf (stderr, "unknown argument: %s\n", argv[i]);
  1203   2230   	  error = 1;
  1204   2231         }
  1205   2232       if (error)
  1206   2233         {
  1207   2234   	  do_help ();
................................................................................
  1210   2237   /* checking the arguments */
  1211   2238       if (!grid_path)
  1212   2239         {
  1213   2240   	  fprintf (stderr,
  1214   2241   		   "did you forget setting the --grid-path argument ?\n");
  1215   2242   	  error = 1;
  1216   2243         }
  1217         -    if (!color_path)
         2244  +    if (!shaded_relief)
  1218   2245         {
  1219         -	  fprintf (stderr,
  1220         -		   "did you forget setting the --color-path argument ?\n");
  1221         -	  error = 1;
         2246  +	  if (!color_path)
         2247  +	    {
         2248  +		fprintf (stderr,
         2249  +			 "did you forget setting the --color-path argument ?\n");
         2250  +		error = 1;
         2251  +	    }
  1222   2252         }
  1223   2253       if (!tiff_path)
  1224   2254         {
  1225   2255   	  fprintf (stderr,
  1226   2256   		   "did you forget setting the --tiff-path argument ?\n");
  1227   2257   	  error = 1;
  1228   2258         }
................................................................................
  1238   2268   		   "did you forget setting the --grid-format argument ?\n");
  1239   2269   	  error = 1;
  1240   2270         }
  1241   2271       if (strlen (error_nodata_color))
  1242   2272         {
  1243   2273   	  printf ("invalid NODATA color '%s'\n", error_nodata_color);
  1244   2274   	  error = 1;
         2275  +      }
         2276  +    if (strlen (error_mono_color))
         2277  +      {
         2278  +	  printf ("invalid Shaded Relief Monochrome color '%s'\n",
         2279  +		  error_mono_color);
         2280  +	  error = 1;
         2281  +      }
         2282  +    if (color_path && mono_color)
         2283  +      {
         2284  +	  printf ("--monochrome and --color-path are mutually exclusive\n");
         2285  +	  error = 1;
  1245   2286         }
  1246   2287       if (error)
  1247   2288         {
  1248   2289   	  do_help ();
  1249   2290   	  return -1;
  1250   2291         }
  1251   2292       printf ("=====================================================\n");
  1252   2293       printf ("             Arguments Summary\n");
  1253   2294       printf ("=====================================================\n");
  1254   2295       printf ("Grid       pathname: '%s'\n", grid_path);
  1255         -    printf ("ColorTable pathname: '%s'\n", color_path);
         2296  +    if (color_path)
         2297  +	printf ("ColorTable pathname: '%s'\n", color_path);
  1256   2298       printf ("GeoTIFF    pathname: '%s'\n", tiff_path);
  1257   2299       printf ("PROJ.4       string: '%s'\n", proj4text);
         2300  +    printf ("NoData        color: 0x%02x%02x%02x\n", no_red, no_green, no_blue);
  1258   2301       switch (grid_type)
  1259   2302         {
  1260   2303         case ASCII_GRID:
  1261   2304   	  printf ("Grid Format: ASCII\n");
  1262   2305   	  break;
  1263   2306         case FLOAT_GRID:
  1264   2307   	  printf ("Grid Format: FLOAT\n");
  1265   2308   	  break;
  1266   2309         default:
  1267   2310   	  printf ("Grid Format: UNKNOWN\n");
  1268   2311   	  break;
         2312  +      }
         2313  +    if (shaded_relief)
         2314  +      {
         2315  +	  printf ("\n           Shaded Relief arguments:\n");
         2316  +	  printf ("-----------------------------------------------------\n");
         2317  +	  printf ("Z-factor     : %1.4f\n", z_factor);
         2318  +	  printf ("Scale-factor : %1.4f\n", scale_factor);
         2319  +	  printf ("Azimuth      : %1.4f\n", azimuth);
         2320  +	  printf ("Altitude     : %1.4f\n", altitude);
         2321  +	  if (mono_color)
         2322  +	      printf ("Monochrome   : 0x%02x%02x%02x\n", mono_red, mono_green,
         2323  +		      mono_blue);
  1269   2324         }
  1270   2325       printf ("=====================================================\n\n");
  1271         -    color_table = parse_color_table (color_path);
  1272         -    if (!color_table)
         2326  +    if (color_path)
  1273   2327         {
  1274         -	  fprintf (stderr, "\n*********** Invalid Color Table\n");
  1275         -	  return -1;
         2328  +	  color_table = parse_color_table (color_path, &colors);
         2329  +	  if (!color_table)
         2330  +	    {
         2331  +		fprintf (stderr, "\n*********** Invalid Color Table\n");
         2332  +		return -1;
         2333  +	    }
  1276   2334         }
  1277         -    if (grid_type == FLOAT_GRID)
  1278         -	export_geoTiff_float (color_table, proj4text, grid_path, tiff_path,
  1279         -			      no_red, no_green, no_blue, verbose);
         2335  +    if (shaded_relief)
         2336  +      {
         2337  +	  if (grid_type == FLOAT_GRID)
         2338  +	      export_geoTiff_shaded_float (color_table, colors, proj4text,
         2339  +					   grid_path, tiff_path, no_red,
         2340  +					   no_green, no_blue, mono_color,
         2341  +					   mono_red, mono_green, mono_blue,
         2342  +					   z_factor, scale_factor, azimuth,
         2343  +					   altitude, verbose);
         2344  +	  else
         2345  +	      export_geoTiff_shaded_ascii (color_table, colors, proj4text,
         2346  +					   grid_path, tiff_path, no_red,
         2347  +					   no_green, no_blue, mono_color,
         2348  +					   mono_red, mono_green, mono_blue,
         2349  +					   z_factor, scale_factor, azimuth,
         2350  +					   altitude, verbose);
         2351  +      }
  1280   2352       else
  1281         -	export_geoTiff_ascii (color_table, proj4text, grid_path, tiff_path,
  1282         -			      no_red, no_green, no_blue, verbose);
  1283         -    free (color_table);
         2353  +      {
         2354  +	  if (grid_type == FLOAT_GRID)
         2355  +	      export_geoTiff_float (color_table, colors, proj4text, grid_path,
         2356  +				    tiff_path, no_red, no_green, no_blue,
         2357  +				    verbose);
         2358  +	  else
         2359  +	      export_geoTiff_ascii (color_table, colors, proj4text, grid_path,
         2360  +				    tiff_path, no_red, no_green, no_blue,
         2361  +				    verbose);
         2362  +      }
         2363  +    if (color_table)
         2364  +	free (color_table);
  1284   2365       return 0;
  1285   2366   }

Changes to src/rasterlite_load.c.

     1      1   /* 
     2      2   / rasterlite_load.c
     3      3   /
     4      4   / a tool for uploading GeoTIFF rasters into a SpatiaLite DB 
     5      5   /
     6         -/ version 1.0, 2009 June 1
            6  +/ version 1.1a, 2011 November 12
     7      7   /
     8      8   / Author: Sandro Furieri a.furieri@lqt.it
     9      9   /
    10         -/ Copyright (C) 2009  Alessandro Furieri
           10  +/ ------------------------------------------------------------------------------
           11  +/ 
           12  +/ Version: MPL 1.1/GPL 2.0/LGPL 2.1
           13  +/ 
           14  +/ The contents of this file are subject to the Mozilla Public License Version
           15  +/ 1.1 (the "License"); you may not use this file except in compliance with
           16  +/ the License. You may obtain a copy of the License at
           17  +/ http://www.mozilla.org/MPL/
           18  +/ 
           19  +/ Software distributed under the License is distributed on an "AS IS" basis,
           20  +/ WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
           21  +/ for the specific language governing rights and limitations under the
           22  +/ License.
    11     23   /
    12         -/    This program is free software: you can redistribute it and/or modify
    13         -/    it under the terms of the GNU General Public License as published by
    14         -/    the Free Software Foundation, either version 3 of the License, or
    15         -/    (at your option) any later version.
           24  +/ The Original Code is the RasterLite library
    16     25   /
    17         -/    This program is distributed in the hope that it will be useful,
    18         -/    but WITHOUT ANY WARRANTY; without even the implied warranty of
    19         -/    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    20         -/    GNU General Public License for more details.
           26  +/ The Initial Developer of the Original Code is Alessandro Furieri
           27  +/ 
           28  +/ Portions created by the Initial Developer are Copyright (C) 2009
           29  +/ the Initial Developer. All Rights Reserved.
    21     30   /
    22         -/    You should have received a copy of the GNU General Public License
    23         -/    along with this program.  If not, see <http://www.gnu.org/licenses/>.
    24         -/
           31  +/ Alternatively, the contents of this file may be used under the terms of
           32  +/ either the GNU General Public License Version 2 or later (the "GPL"), or
           33  +/ the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
           34  +/ in which case the provisions of the GPL or the LGPL are applicable instead
           35  +/ of those above. If you wish to allow use of your version of this file only
           36  +/ under the terms of either the GPL or the LGPL, and not to allow others to
           37  +/ use your version of this file under the terms of the MPL, indicate your
           38  +/ decision by deleting the provisions above and replace them with the notice
           39  +/ and other provisions required by the GPL or the LGPL. If you do not delete
           40  +/ the provisions above, a recipient may use your version of this file under
           41  +/ the terms of any one of the MPL, the GPL or the LGPL.
           42  +/ 
    25     43   */
    26     44   
    27     45   #include <stdlib.h>
    28     46   #include <stdio.h>
    29     47   #include <string.h>
    30     48   #include <errno.h>
    31     49   #include <sys/types.h>
    32     50   
    33         -#include <geotiff.h>
    34         -#include <xtiffio.h>
    35         -#include <geo_normalize.h>
    36         -#include <geovalues.h>
           51  +#include "rasterlite_tiff_hdrs.h"
    37     52   #include <tiffio.h>
    38     53   
    39     54   #if defined(_WIN32) && !defined(__MINGW32__)
    40     55   #include <io.h>
    41     56   #include <direct.h>
    42     57   #else
    43     58   #include <dirent.h>
    44     59   #endif
    45     60   
           61  +#ifdef SPATIALITE_AMALGAMATION
    46     62   #include <spatialite/sqlite3.h>
           63  +#else
           64  +#include <sqlite3.h>
           65  +#endif
           66  +
    47     67   #include <spatialite/gaiaexif.h>
    48     68   #include <spatialite/gaiageo.h>
    49     69   #include <spatialite.h>
    50     70   
    51     71   #include "rasterlite.h"
    52     72   #include "rasterlite_internals.h"
    53     73   
................................................................................
    62     82   #define ARG_FILE			4
    63     83   #define ARG_TILE_SIZE		5
    64     84   #define ARG_IMAGE_TYPE		6
    65     85   #define ARG_QUALITY_FACTOR	7
    66     86   #define ARG_EPSG_CODE		8
    67     87   
    68     88   static int
    69         -read_by_tile (TIFF * tif, rasterliteImagePrt img, struct geo_info *infos,
           89  +read_by_tile (TIFF * tif, rasterliteImagePtr img, struct geo_info *infos,
    70     90   	      int baseVert, int baseHorz)
    71     91   {
    72     92   /* reading from a TIFF using TILES */
    73     93       uint32 *raster = NULL;
    74     94       int x;
    75     95       int y;
    76     96       int img_x;
    77     97       int img_y;
    78         -    int effective_width;
    79         -    int effective_height;
           98  +    int dst_x;
           99  +    int dst_y;
          100  +    int width;
          101  +    int height;
    80    102       uint32 pixel;
    81    103       int color;
    82    104       uint32 *scanline;
    83    105       int current_row;
    84    106       int current_col;
    85    107       int current_col_save;
    86         -    int current_x;
    87         -    int current_y;
    88         -    int max_y;
    89         -    int max_x;
    90    108   /* allocating the tile raster */
    91         -    raster =
    92         -	malloc (sizeof (uint32) *
    93         -		(infos->tif_tile_width * infos->tif_tile_height));
          109  +    height = infos->tif_tile_height;
          110  +    width = infos->tif_tile_width;
          111  +    raster = malloc (sizeof (uint32) * (width * height));
    94    112   
    95    113   /* determining the first tile to be read */
    96         -    for (y = 0; y < (int) infos->height; y += infos->tif_tile_height)
          114  +    for (y = 0; y < (int) infos->height; y += height)
    97    115         {
    98         -	  if (y <= baseVert && baseVert < (int) (y + infos->tif_tile_height))
          116  +	  if (y <= baseVert && baseVert < (int) (y + height))
    99    117   	    {
   100    118   		current_row = y;
   101         -		for (x = 0; x < (int) infos->width; x += infos->tif_tile_width)
          119  +		for (x = 0; x < (int) infos->width; x += width)
   102    120   		  {
   103         -		      if (x <= baseHorz
   104         -			  && baseHorz < (x + (int) infos->tif_tile_width))
          121  +		      if (x <= baseHorz && baseHorz < (x + (int) width))
   105    122   			{
   106    123   			    current_col = x;
   107    124   			    goto done;
   108    125   			}
   109    126   		  }
   110    127   	    }
   111    128         }
   112    129     done:
   113    130       current_col_save = current_col;
   114    131   /* feeding tile pixels */
   115         -    y = 0;
   116         -    while (y < img->sy)
          132  +    while (current_row < infos->height)
   117    133         {
   118         -	  x = 0;
   119         -	  max_y = 0;
   120         -	  while (x < img->sx)
          134  +	  if (current_row > (baseVert + img->sy))
          135  +	      break;
          136  +	  while (current_col < infos->width)
   121    137   	    {
   122    138   		/* reading a TIFF tile */
          139  +		if (current_col > (baseHorz + img->sx))
          140  +		    break;
   123    141   		if (!TIFFReadRGBATile (tif, current_col, current_row, raster))
   124    142   		    goto error;
   125         -		effective_height = infos->tif_tile_height;
   126         -		effective_width = infos->tif_tile_width;
   127         -		if ((current_col + infos->tif_tile_width) > infos->width)
   128         -		    effective_width = infos->width - current_col;
   129         -		max_x = 0;
   130         -		for (current_y = 0; current_y < (int) effective_height;
   131         -		     current_y++)
          143  +		for (y = 0; y < height; y++)
   132    144   		  {
   133         -		      img_y =
   134         -			  (current_row - baseVert) +
   135         -			  ((effective_height - current_y) - 1);
   136         -		      if (img_y >= img->sy || img_y < 0)
          145  +		      img_y = current_row + (height - y) - 1;
          146  +		      dst_y = img_y - baseVert;
          147  +		      if (dst_y < 0)
          148  +			  continue;
          149  +		      if (dst_y >= (int) img->sy)
   137    150   			  continue;
   138         -		      scanline = raster + (infos->tif_tile_width * current_y);
   139         -		      for (current_x = 0;
   140         -			   current_x < (int) effective_width; current_x++)
          151  +		      scanline = raster + (width * y);
          152  +		      for (x = 0; x < width; x++)
   141    153   			{
   142         -			    img_x = current_col - baseHorz + current_x;
   143         -			    if (img_x < 0)
          154  +			    img_x = current_col + x;
          155  +			    dst_x = img_x - baseHorz;
          156  +			    if (dst_x < 0)
   144    157   				continue;
   145         -			    if (img_x >= img->sx)
          158  +			    if (dst_x >= (int) img->sx)
   146    159   				break;
   147         -			    pixel = scanline[current_x];
          160  +			    pixel = scanline[x];
   148    161   			    color =
   149    162   				true_color (TIFFGetR (pixel), TIFFGetG (pixel),
   150    163   					    TIFFGetB (pixel));
   151         -			    image_set_pixel (img, img_x, img_y, color);
   152         -			    if ((img_y + 1) > max_y)
   153         -				max_y = img_y + 1;
   154         -			    if ((img_x + 1) > max_x)
   155         -				max_x = img_x + 1;
          164  +			    image_set_pixel (img, dst_x, dst_y, color);
   156    165   			}
   157    166   		  }
   158         -		current_col += effective_width;
   159         -		x += max_x;
          167  +		current_col += width;
   160    168   	    }
   161         -	  y += max_y;
   162         -	  current_row += infos->tif_tile_height;
          169  +	  current_row += height;
   163    170   	  current_col = current_col_save;
   164    171         }
   165    172   
   166    173       if (raster)
   167    174   	free (raster);
   168    175       return 1;
   169    176     error:
   170    177       if (raster)
   171    178   	free (raster);
   172    179       return 0;
   173    180   }
   174    181   
   175    182   static int
   176         -read_by_strip (TIFF * tif, rasterliteImagePrt img, struct geo_info *infos,
          183  +read_by_strip (TIFF * tif, rasterliteImagePtr img, struct geo_info *infos,
   177    184   	       int baseVert, int baseHorz)
   178    185   {
   179    186   /* reading from a TIFF using STRIPS */
   180    187       uint32 *raster = NULL;
   181    188       int x;
   182    189       int y;
   183    190       int img_y;
................................................................................
   262    269   /* accessing the TIFF by strips or tiles */
   263    270       int retval = 0;
   264    271       void *image;
   265    272       int image_size;
   266    273       int ret;
   267    274       double xx;
   268    275       double yy;
   269         -    rasterliteImagePrt img = NULL;
          276  +    rasterliteImagePtr img = NULL;
   270    277       gaiaPolygonPtr polyg;
   271    278       tile->geometry = gaiaAllocGeomColl ();
   272    279       tile->tileNo = tileNo;
   273    280   
   274    281   /* computing actual tile dims */
   275    282       tile->raster_horz = infos->tile_width;
   276    283       tile->raster_vert = infos->tile_height;
................................................................................
   397    404   	  /* compressing the section image as TIFF RGB */
   398    405   	  image = image_to_tiff_rgb (img, &image_size);
   399    406   	  if (!image)
   400    407   	    {
   401    408   		printf ("TIFF RGB compression error\n");
   402    409   		goto stop;
   403    410   	    }
   404         -      }
   405         -    else if (infos->image_type == IMAGE_WAVELET_BW)
   406         -      {
   407         -	  /* compressing the section image as WAVELET GRAYSCALE */
   408         -	  image =
   409         -	      image_to_wavelet_grayscale (img, &image_size,
   410         -					  infos->quality_factor);
   411         -	  if (!image)
   412         -	    {
   413         -		printf ("WAVELET compression error\n");
   414         -		goto stop;
   415         -	    }
   416         -      }
   417         -    else if (infos->image_type == IMAGE_WAVELET_RGB)
   418         -      {
   419         -	  /* compressing the section image as WAVELET RGB */
   420         -	  image = image_to_wavelet (img, &image_size, infos->quality_factor);
   421         -	  if (!image)
   422         -	    {
   423         -		printf ("WAVELET compression error\n");
   424         -		goto stop;
   425         -	    }
   426    411         }
   427    412       else if (infos->image_type == IMAGE_JPEG_BW)
   428    413         {
   429    414   	  /* compressing the section image as JPEG GRAYSCALE */
   430    415   	  image =
   431    416   	      image_to_jpeg_grayscale (img, &image_size, infos->quality_factor);
   432    417   	  if (!image)
................................................................................
   592    577   	  printf
   593    578   	      ("table \"%s_metadata\" already exists, but has an invalid column layout\n",
   594    579   	       infos->table);
   595    580   	  return 0;
   596    581         }
   597    582   
   598    583       sprintf (sql,
   599         -	     "SELECT f_geometry_column FROM geometry_columns WHERE f_table_name = '%s_metadata'",
   600         -	     infos->table);
          584  +	     "SELECT f_geometry_column FROM geometry_columns WHERE "
          585  +	     "Lower(f_table_name) = Lower('%s_metadata')", infos->table);
   601    586       ret =
   602    587   	sqlite3_get_table (infos->handle, sql, &results, &rows, &columns,
   603    588   			   &errMsg);
   604    589       if (ret != SQLITE_OK)
   605    590         {
   606    591   	  printf ("SQL error: %s\n", errMsg);
   607    592   	  sqlite3_free (errMsg);
................................................................................
   844    829   		actual_format = (const char *) "GIF";
   845    830   		infos.image_type = IMAGE_GIF_PALETTE;
   846    831   	    }
   847    832         }
   848    833       if (bits_per_sample == 8 && samples_per_pixel == 1 && photometric < 2)
   849    834         {
   850    835   	  colorspace_name = (const char *) "GrayScale - 256 levels";
   851         -	  format_hint = (const char *) "JPEG / WAVELET / PNG / TIFF";
          836  +	  format_hint = (const char *) "JPEG / PNG / TIFF";
   852    837   	  if (image_type == GAIA_TIFF_BLOB)
   853    838   	    {
   854    839   		strcpy (dummy, "TIFF [GRAYSCALE]");
   855    840   		infos.image_type = IMAGE_TIFF_GRAYSCALE;
   856    841   	    }
   857    842   	  else if (image_type == GAIA_PNG_BLOB)
   858    843   	    {
   859    844   		strcpy (dummy, "PNG [GRAYSCALE]");
   860    845   		infos.image_type = IMAGE_PNG_GRAYSCALE;
   861    846   	    }
   862         -	  else if (image_type == IMAGE_WAVELET_RGB)
   863         -	    {
   864         -		sprintf (dummy, "WAVELET [GRAYSCALE] compression ratio 1:%d",
   865         -			 quality_factor);
   866         -		infos.image_type = IMAGE_WAVELET_BW;
   867         -	    }
   868    847   	  else
   869    848   	    {
   870    849   		sprintf (dummy, "JPEG [GRAYSCALE] quality=%d", quality_factor);
   871    850   		infos.image_type = IMAGE_JPEG_BW;
   872    851   	    }
   873    852   	  actual_format = (const char *) dummy;
   874    853         }
   875    854       if (samples_per_pixel >= 3)
   876    855         {
   877    856   	  colorspace_name = (const char *) "RGB - TrueColor";
   878         -	  format_hint = (const char *) "JPEG / WAVELET / TIFF";
          857  +	  format_hint = (const char *) "JPEG / TIFF";
   879    858   	  if (image_type == GAIA_TIFF_BLOB)
   880    859   	    {
   881    860   		sprintf (dummy, "TIFF [RGB]");
   882    861   		infos.image_type = IMAGE_TIFF_RGB;
   883    862   	    }
   884    863   	  else if (image_type == GAIA_PNG_BLOB)
   885    864   	    {
   886    865   		sprintf (dummy, "PNG [RGB]");
   887    866   		infos.image_type = IMAGE_PNG_RGB;
   888    867   	    }
   889         -	  else if (image_type == GAIA_WAVELET_BLOB)
   890         -	    {
   891         -		sprintf (dummy, "WAVELET [RGB] compression ratio 1:%d",
   892         -			 quality_factor);
   893         -		infos.image_type = IMAGE_WAVELET_RGB;
   894         -	    }
   895    868   	  else
   896    869   	    {
   897    870   		sprintf (dummy, "JPEG [RGB] quality=%d", quality_factor);
   898    871   		infos.image_type = IMAGE_JPEG_RGB;
   899    872   	    }
   900    873   	  actual_format = (const char *) dummy;
   901    874         }
................................................................................
   974    947         case COMPRESSION_JP2000:
   975    948   	  compression_name = (const char *) "JPEG-2000";
   976    949   	  break;
   977    950         default:
   978    951   	  compression_name = (const char *) "UNKNOWN";
   979    952   	  break;
   980    953         };
   981         -/* retrieving the EPSG code */
   982         -    infos.epsg = definition.GCS;
          954  +
          955  +/* retrieving the EPSG code: Sandro 2012-12-15 */
          956  +    if (definition.PCS == 32767)
          957  +      {
          958  +	  if (definition.GCS != 32767)
          959  +	      infos.epsg = definition.GCS;
          960  +      }
          961  +    else
          962  +	infos.epsg = definition.PCS;
          963  +
   983    964   /* computing the corners coords */
   984    965       cx = 0.0;
   985    966       cy = 0.0;
   986    967       GTIFImageToPCS (gtif, &cx, &cy);
   987    968       infos.upper_left_x = cx;
   988    969       infos.upper_left_y = cy;
   989    970       cx = 0.0;
................................................................................
  1076   1057         }
  1077   1058       extra_width = tile_width * sect;
  1078   1059       extra_height = tile_height * sect;
  1079   1060       baseHorz = 0;
  1080   1061       baseVert = 0;
  1081   1062       while (1)
  1082   1063         {
  1083         -	  /* computing the totale tiles # */
         1064  +	  /* computing the total tiles # */
  1084   1065   	  maxTile++;
  1085   1066   	  baseHorz += tile_width;
  1086   1067   	  if (baseHorz >= extra_width)
  1087   1068   	    {
  1088   1069   		baseHorz = 0;
  1089   1070   		baseVert += tile_height;
  1090   1071   		if (baseVert >= extra_height)
................................................................................
  1105   1086       if (ret != SQLITE_OK)
  1106   1087         {
  1107   1088   	  printf ("BEGIN TRANSACTION error: %s\n", sql_err);
  1108   1089   	  sqlite3_free (sql_err);
  1109   1090   	  goto stop;
  1110   1091         }
  1111   1092   
  1112         -/* just in case it doesn't exists, we'll try anyway to create the table */
         1093  +/* just in case it doesn't exist, we'll try anyway to create the table */
  1113   1094       if (!create_raster_table (&infos))
  1114   1095   	goto stop;
  1115   1096   
  1116   1097   /* creating the INSERT INTO xx_rasters prepared statement */
  1117   1098       sprintf (sql, "INSERT INTO \"%s_rasters\" ", infos.table);
  1118   1099       strcat (sql, "(id, raster) ");
  1119   1100       strcat (sql, " VALUES (NULL, ?)");
................................................................................
  1203   1184       if (ret != SQLITE_OK)
  1204   1185         {
  1205   1186   	  printf ("COMMIT TRANSACTION error: %s\n", sql_err);
  1206   1187   	  sqlite3_free (sql_err);
  1207   1188   	  goto stop;
  1208   1189         }
  1209   1190   
         1191  +    if (tif)
         1192  +	XTIFFClose (tif);
         1193  +    if (gtif)
         1194  +	GTIFFree (gtif);
  1210   1195       for (i = 0; i < NTILES; i++)
  1211   1196         {
  1212   1197   	  tile = &(infos.tiles[i]);
  1213   1198   	  if (tile->geometry)
  1214   1199   	      gaiaFreeGeomColl (tile->geometry);
  1215   1200         }
  1216   1201   
................................................................................
  1251   1236       if (_chdir (dir_path) < 0)
  1252   1237         {
  1253   1238   	  fprintf (stderr, "rasterlite_load: cannot access dir '%s'", dir_path);
  1254   1239   	  return 0;
  1255   1240         }
  1256   1241       if ((hFile = _findfirst ("*.*", &c_file)) == -1L)
  1257   1242   	fprintf (stderr,
  1258         -		 "rastererlite_load: cannot access dir '%s' [or empty dir]\n",
         1243  +		 "rasterlite_load: cannot access dir '%s' [or empty dir]\n",
  1259   1244   		 dir_path);
  1260   1245       else
  1261   1246         {
  1262   1247   	  while (1)
  1263   1248   	    {
  1264   1249   		if ((c_file.attrib & _A_RDONLY) == _A_RDONLY
  1265   1250   		    || (c_file.attrib & _A_NORMAL) == _A_NORMAL)
................................................................................
  1309   1294   db_connect (const char *path)
  1310   1295   {
  1311   1296   /* trying to connect SpatiaLite DB */
  1312   1297       sqlite3 *handle = NULL;
  1313   1298       int ret;
  1314   1299       char sql[1024];
  1315   1300       int spatialite_rs = 0;
         1301  +    int spatialite_legacy_gc = 0;
  1316   1302       int spatialite_gc = 0;
  1317   1303       int rs_srid = 0;
  1318   1304       int auth_name = 0;
  1319   1305       int auth_srid = 0;
  1320   1306       int ref_sys_name = 0;
  1321   1307       int proj4text = 0;
  1322   1308       int f_table_name = 0;
  1323   1309       int f_geometry_column = 0;
  1324   1310       int coord_dimension = 0;
  1325   1311       int gc_srid = 0;
  1326   1312       int type = 0;
         1313  +    int geometry_type = 0;
  1327   1314       int spatial_index_enabled = 0;
  1328   1315       const char *name;
  1329   1316       int i;
  1330   1317       char **results;
  1331   1318       int rows;
  1332   1319       int columns;
  1333   1320   
................................................................................
  1361   1348   		    f_geometry_column = 1;
  1362   1349   		if (strcasecmp (name, "coord_dimension") == 0)
  1363   1350   		    coord_dimension = 1;
  1364   1351   		if (strcasecmp (name, "srid") == 0)
  1365   1352   		    gc_srid = 1;
  1366   1353   		if (strcasecmp (name, "type") == 0)
  1367   1354   		    type = 1;
         1355  +		if (strcasecmp (name, "geometry_type") == 0)
         1356  +		    geometry_type = 1;
  1368   1357   		if (strcasecmp (name, "spatial_index_enabled") == 0)
  1369   1358   		    spatial_index_enabled = 1;
  1370   1359   	    }
  1371   1360         }
  1372   1361       sqlite3_free_table (results);
  1373   1362       if (f_table_name && f_geometry_column && type && coord_dimension && gc_srid
  1374   1363   	&& spatial_index_enabled)
         1364  +	spatialite_legacy_gc = 1;
         1365  +    if (f_table_name && f_geometry_column && geometry_type && coord_dimension
         1366  +	&& gc_srid && spatial_index_enabled)
  1375   1367   	spatialite_gc = 1;
  1376   1368   
  1377   1369   /* checking the SPATIAL_REF_SYS table */
  1378   1370       strcpy (sql, "PRAGMA table_info(spatial_ref_sys)");
  1379   1371       ret = sqlite3_get_table (handle, sql, &results, &rows, &columns, NULL);
  1380   1372       if (ret != SQLITE_OK)
  1381   1373   	goto unknown;
................................................................................
  1399   1391   	    }
  1400   1392         }
  1401   1393       sqlite3_free_table (results);
  1402   1394       if (rs_srid && auth_name && auth_srid && ref_sys_name && proj4text)
  1403   1395   	spatialite_rs = 1;
  1404   1396   
  1405   1397   /* verifying the MetaData format */
  1406         -    if (spatialite_gc && spatialite_rs)
         1398  +    if ((spatialite_legacy_gc || spatialite_gc) && spatialite_rs)
  1407   1399   	return handle;
  1408   1400   
  1409   1401     unknown:
  1410   1402       if (handle)
  1411   1403   	sqlite3_close (handle);
  1412   1404       printf ("DB '%s'\n", path);
  1413   1405       printf ("doesn't seems to contain valid Spatial Metadata ...\n\n");
................................................................................
  1434   1426       fprintf (stderr,
  1435   1427   	     "-D or --dir         dir_path      the DIR path containing GeoTIFF files\n");
  1436   1428       fprintf (stderr,
  1437   1429   	     "-f or --file        file_name     a single GeoTIFF file\n");
  1438   1430       fprintf (stderr, "-s or --tile-size   num           [default = 512]\n");
  1439   1431       fprintf (stderr,
  1440   1432   	     "-e or --epsg-code   num           [optional: EPSG code]\n");
  1441         -    fprintf (stderr,
  1442         -	     "-i or --image-type  type          [JPEG|PNG|GIF|TIFF|WAVELET]\n");
         1433  +    fprintf (stderr, "-i or --image-type  type          [JPEG|PNG|GIF|TIFF]\n");
  1443   1434       fprintf (stderr,
  1444         -	     "-q or --quality     num           [default = 75(JPEG) / 25(WAVELET)]\n");
         1435  +	     "-q or --quality     num           [default = 75(JPEG)]\n");
  1445   1436   }
  1446   1437   
  1447   1438   int
  1448   1439   main (int argc, char *argv[])
  1449   1440   {
  1450   1441   /* the MAIN function simply perform arguments checking */
  1451   1442       sqlite3 *handle;
................................................................................
  1494   1485   			  image_type = GAIA_JPEG_BLOB;
  1495   1486   		      if (strcasecmp (argv[i], "PNG") == 0)
  1496   1487   			  image_type = GAIA_PNG_BLOB;
  1497   1488   		      if (strcasecmp (argv[i], "GIF") == 0)
  1498   1489   			  image_type = GAIA_GIF_BLOB;
  1499   1490   		      if (strcasecmp (argv[i], "TIFF") == 0)
  1500   1491   			  image_type = GAIA_TIFF_BLOB;
  1501         -		      if (strcasecmp (argv[i], "WAVELET") == 0)
  1502         -			  image_type = GAIA_WAVELET_BLOB;
  1503   1492   		      break;
  1504   1493   		  case ARG_QUALITY_FACTOR:
  1505   1494   		      quality_factor = atoi (argv[i]);
  1506   1495   		      break;
  1507   1496   		  case ARG_EPSG_CODE:
  1508   1497   		      epsg_code = atoi (argv[i]);
  1509   1498   		      break;
................................................................................
  1627   1616         }
  1628   1617   /* checking the arguments */
  1629   1618       if (!test_mode)
  1630   1619         {
  1631   1620   	  if (!path)
  1632   1621   	    {
  1633   1622   		fprintf (stderr,
  1634         -			 "did you forget setting the --db-path argument ?\n");
         1623  +			 "did you forget to set the --db-path argument ?\n");
  1635   1624   		error = 1;
  1636   1625   	    }
  1637   1626   	  if (!table)
  1638   1627   	    {
  1639         -		printf ("did you forget setting the --table-name argument ?\n");
         1628  +		printf ("did you forget to set the --table-name argument ?\n");
  1640   1629   		error = 1;
  1641   1630   	    }
  1642   1631         }
  1643   1632       if (!dir_path && !file_path)
  1644   1633         {
  1645   1634   	  fprintf (stderr,
  1646         -		   "did you forget setting the --dir-path OR --file-path argument ?\n");
         1635  +		   "did you forget to set the --dir-path OR --file-path argument ?\n");
  1647   1636   	  error = 1;
  1648   1637         }
  1649   1638       if (dir_path && file_path)
  1650   1639         {
  1651   1640   	  fprintf (stderr,
  1652         -		   "--dir_path AND --file_path argument are mutually exclusive\n");
         1641  +		   "--dir_path AND --file_path arguments are mutually exclusive\n");
  1653   1642   	  error = 1;
  1654   1643         }
  1655   1644       if (error)
  1656   1645         {
  1657   1646   	  do_help ();
  1658   1647   	  return -1;
  1659   1648         }
................................................................................
  1663   1652   	  if (quality_factor == -999999)
  1664   1653   	      quality_factor = 75;
  1665   1654   	  if (quality_factor < 10)
  1666   1655   	      quality_factor = 10;
  1667   1656   	  if (quality_factor > 90)
  1668   1657   	      quality_factor = 90;
  1669   1658         }
  1670         -    if (image_type == GAIA_WAVELET_BLOB)
  1671         -      {
  1672         -	  /* normalizing the commpression factor */
  1673         -	  if (quality_factor == -999999)
  1674         -	      quality_factor = 25;
  1675         -	  if (quality_factor < 10)
  1676         -	      quality_factor = 10;
  1677         -	  if (quality_factor > 200)
  1678         -	      quality_factor = 200;
  1679         -      }
  1680   1659       printf ("=====================================================\n");
  1681   1660       printf ("             Arguments Summary\n");
  1682   1661       printf ("=====================================================\n");
  1683   1662       if (test_mode)
  1684   1663         {
  1685   1664   	  printf ("TEST mode: no actual action will be performed\n");
  1686   1665   	  printf ("*** ignoring the SpatiaLite DB ***\n");
................................................................................
  1709   1688   	  break;
  1710   1689         case GAIA_GIF_BLOB:
  1711   1690   	  printf ("Tile image type: GIF\n");
  1712   1691   	  break;
  1713   1692         case GAIA_TIFF_BLOB:
  1714   1693   	  printf ("Tile image type: TIFF\n");
  1715   1694   	  break;
  1716         -      case GAIA_WAVELET_BLOB:
  1717         -	  printf ("Tile image type: WAVELET compression ratio 1:%d\n",
  1718         -		  quality_factor);
  1719         -	  break;
  1720   1695         default:
  1721   1696   	  printf ("Tile image type: UNKNOWN\n");
  1722   1697   	  break;
  1723   1698         };
  1724   1699       printf ("=====================================================\n\n");
  1725   1700       if (!test_mode)
  1726   1701         {

Changes to src/rasterlite_pyramid.c.

     1      1   /* 
     2      2   / rasterlite_pyramid.c
     3      3   /
     4      4   / a tool building raster pyramids into a SpatiaLite DB 
     5      5   /
     6         -/ version 1.0, 2009 June 1
            6  +/ version 1.1a, 2011 November 12
     7      7   /
     8      8   / Author: Sandro Furieri a.furieri@lqt.it
     9      9   /
    10         -/ Copyright (C) 2009  Alessandro Furieri
           10  +/ ------------------------------------------------------------------------------
           11  +/ 
           12  +/ Version: MPL 1.1/GPL 2.0/LGPL 2.1
           13  +/ 
           14  +/ The contents of this file are subject to the Mozilla Public License Version
           15  +/ 1.1 (the "License"); you may not use this file except in compliance with
           16  +/ the License. You may obtain a copy of the License at
           17  +/ http://www.mozilla.org/MPL/
           18  +/ 
           19  +/ Software distributed under the License is distributed on an "AS IS" basis,
           20  +/ WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
           21  +/ for the specific language governing rights and limitations under the
           22  +/ License.
    11     23   /
    12         -/    This program is free software: you can redistribute it and/or modify
    13         -/    it under the terms of the GNU General Public License as published by
    14         -/    the Free Software Foundation, either version 3 of the License, or
    15         -/    (at your option) any later version.
           24  +/ The Original Code is the RasterLite library
    16     25   /
    17         -/    This program is distributed in the hope that it will be useful,
    18         -/    but WITHOUT ANY WARRANTY; without even the implied warranty of
    19         -/    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    20         -/    GNU General Public License for more details.
           26  +/ The Initial Developer of the Original Code is Alessandro Furieri
           27  +/ 
           28  +/ Portions created by the Initial Developer are Copyright (C) 2009
           29  +/ the Initial Developer. All Rights Reserved.
    21     30   /
    22         -/    You should have received a copy of the GNU General Public License
    23         -/    along with this program.  If not, see <http://www.gnu.org/licenses/>.
    24         -/
           31  +/ Alternatively, the contents of this file may be used under the terms of
           32  +/ either the GNU General Public License Version 2 or later (the "GPL"), or
           33  +/ the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
           34  +/ in which case the provisions of the GPL or the LGPL are applicable instead
           35  +/ of those above. If you wish to allow use of your version of this file only
           36  +/ under the terms of either the GPL or the LGPL, and not to allow others to
           37  +/ use your version of this file under the terms of the MPL, indicate your
           38  +/ decision by deleting the provisions above and replace them with the notice
           39  +/ and other provisions required by the GPL or the LGPL. If you do not delete
           40  +/ the provisions above, a recipient may use your version of this file under
           41  +/ the terms of any one of the MPL, the GPL or the LGPL.
           42  +/ 
    25     43   */
    26     44   
    27     45   #include <stdlib.h>
    28     46   #include <stdio.h>
    29     47   #include <string.h>
    30     48   #include <errno.h>
    31     49   #include <sys/types.h>
    32     50   #include <float.h>
    33     51   
    34         -#include <geotiff.h>
    35         -#include <xtiffio.h>
    36         -#include <geo_normalize.h>
    37         -#include <geovalues.h>
           52  +#include "rasterlite_tiff_hdrs.h"
    38     53   #include <tiffio.h>
    39     54   
           55  +#ifdef SPATIALITE_AMALGAMATION
    40     56   #include <spatialite/sqlite3.h>
           57  +#else
           58  +#include <sqlite3.h>
           59  +#endif
           60  +
    41     61   #include <spatialite/gaiaexif.h>
    42     62   #include <spatialite/gaiageo.h>
    43     63   #include <spatialite.h>
    44     64   
    45     65   #include "rasterlite.h"
    46     66   #include "rasterlite_internals.h"
    47     67   
    48         -#ifdef _WIN32 
           68  +#ifdef _WIN32
    49     69   #define strcasecmp	_stricmp
    50     70   #endif /* not WIN32 */
    51     71   
    52     72   #if defined(_WIN32) || defined (__MINGW32__)
    53     73   #define FORMAT_64	"%I64d"
    54     74   #else
    55     75   #define FORMAT_64	"%lld"
................................................................................
   257    277   		break;
   258    278   	    }
   259    279   	  p = p->next;
   260    280         }
   261    281       return NULL;
   262    282   }
   263    283   
   264         -static rasterliteImagePrt
          284  +static rasterliteImagePtr
   265    285   raster_decode (const void *blob, int blob_size)
   266    286   {
   267    287   /* trying to decode a BLOB as an image */
   268         -    rasterliteImagePrt img = NULL;
          288  +    rasterliteImagePtr img = NULL;
   269    289       int type = gaiaGuessBlobType (blob, blob_size);
   270    290       if (type == GAIA_JPEG_BLOB || type == GAIA_EXIF_BLOB
   271    291   	|| type == GAIA_EXIF_GPS_BLOB)
   272    292   	img = image_from_jpeg (blob_size, (void *) blob);
   273    293       else if (type == GAIA_PNG_BLOB)
   274    294   	img = image_from_png (blob_size, (void *) blob);
   275    295       else if (type == GAIA_GIF_BLOB)
   276    296   	img = image_from_gif (blob_size, (void *) blob);
   277    297       else if (type == GAIA_TIFF_BLOB)
   278    298   	img = image_from_tiff (blob_size, (void *) blob);
   279         -    else if (type == GAIA_WAVELET_BLOB)
   280         -	img = image_from_wavelet (blob_size, (void *) blob);
   281    299       return img;
   282    300   }
   283    301   
   284    302   static int
   285         -get_tile (sqlite3 * handle, rasterliteImagePrt img, const char *table,
          303  +get_tile (sqlite3 * handle, rasterliteImagePtr img, const char *table,
   286    304   	  sqlite3_int64 tile_id, int declared_x, int declared_y, int where)
   287    305   {
   288    306   /* fetching a raster tile */
   289    307       sqlite3_stmt *stmt;
   290    308       int ret;
   291    309       char sql[1024];
   292    310       char dummy64[64];
................................................................................
   293    311       const void *blob;
   294    312       int blob_size;
   295    313       int row;
   296    314       int col;
   297    315       int x;
   298    316       int y;
   299    317       int pixel;
   300         -    rasterliteImagePrt tile_img = NULL;
          318  +    rasterliteImagePtr tile_img = NULL;
   301    319       sprintf (sql, "SELECT raster FROM \"%s_rasters\" WHERE id = ?", table);
   302    320       ret = sqlite3_prepare_v2 (handle, sql, strlen (sql), &stmt, NULL);
   303    321       if (ret != SQLITE_OK)
   304    322         {
   305    323   	  printf ("SQL error: %s\n", sqlite3_errmsg (handle));
   306    324   	  return 0;
   307    325         }
................................................................................
   420    438       image_destroy (tile_img);
   421    439   
   422    440       return 1;
   423    441   }
   424    442   
   425    443   static void
   426    444   thumbnail_export (sqlite3 * handle, sqlite3_stmt * stmt,
   427         -		  rasterliteImagePrt img, int image_type, int quality_factor,
          445  +		  rasterliteImagePtr img, int image_type, int quality_factor,
   428    446   		  struct thumbnail_tile *tile)
   429    447   {
   430    448   /* saving the thumbnail into the DB */
   431    449       int ret;
   432    450       void *blob;
   433    451       int blob_size;
   434    452       int width = img->sx / 2;
   435    453       int height = img->sy / 2;
   436         -    rasterliteImagePrt thumbnail = image_create (width, height);
          454  +    rasterliteImagePtr thumbnail = image_create (width, height);
   437    455       make_thumbnail (thumbnail, img);
   438    456       if (image_type == GAIA_TIFF_BLOB)
   439    457         {
   440    458   	  blob = image_to_tiff_rgb (thumbnail, &blob_size);
   441    459   	  if (!blob)
   442    460   	    {
   443    461   		printf ("TIFF RGB compression error\n");
................................................................................
   448    466         {
   449    467   	  blob = image_to_png_rgb (thumbnail, &blob_size);
   450    468   	  if (!blob)
   451    469   	    {
   452    470   		printf ("PNG RGB compression error\n");
   453    471   		goto end;
   454    472   	    }
   455         -      }
   456         -    else if (image_type == GAIA_WAVELET_BLOB)
   457         -      {
   458         -	  blob = image_to_wavelet (thumbnail, &blob_size, quality_factor);
   459         -	  if (!blob)
   460         -	    {
   461         -		printf ("WAVELET compression error\n");
   462         -		goto end;
   463         -	    }
   464    473         }
   465    474       else
   466    475         {
   467    476   	  blob = image_to_jpeg (thumbnail, &blob_size, quality_factor);
   468    477   	  if (!blob)
   469    478   	    {
   470    479   		printf ("JPEG compression error\n");
................................................................................
   584    593       struct tiles_list tiles;
   585    594       struct tile_item *tile_1;
   586    595       struct tile_item *tile_2;
   587    596       struct tile_item *tile_3;
   588    597       struct tile_item *tile_4;
   589    598       double x;
   590    599       double y;
   591         -    rasterliteImagePrt img = NULL;
          600  +    rasterliteImagePtr img = NULL;
   592    601       struct thumbnail_tile thumb_tiles[NTILES];
   593    602       struct thumbnail_tile *thumb_tile;
   594    603       int max_tile;
   595    604       gaiaPolygonPtr polyg;
   596    605       int raster_ok = 0;
   597    606       int metadata_ok = 0;
   598    607       int i;
................................................................................
  1468   1477   /* trying to connect SpatiaLite DB */
  1469   1478       sqlite3 *handle = NULL;
  1470   1479       int ret;
  1471   1480       char rasters[512];
  1472   1481       char meta[512];
  1473   1482       char sql[1024];
  1474   1483       int spatialite_rs = 0;
         1484  +    int spatialite_legacy_gc = 0;
  1475   1485       int spatialite_gc = 0;
  1476   1486       int rs_srid = 0;
  1477   1487       int auth_name = 0;
  1478   1488       int auth_srid = 0;
  1479   1489       int ref_sys_name = 0;
  1480   1490       int proj4text = 0;
  1481   1491       int f_table_name = 0;
  1482   1492       int f_geometry_column = 0;
  1483   1493       int coord_dimension = 0;
  1484   1494       int gc_srid = 0;
  1485   1495       int type = 0;
         1496  +    int geometry_type = 0;
  1486   1497       int spatial_index_enabled = 0;
  1487   1498       int tbl_rasters = 0;
  1488   1499       int tbl_meta = 0;
  1489   1500       const char *name;
  1490   1501       int i;
  1491   1502       char **results;
  1492   1503       int rows;
................................................................................
  1522   1533   		    f_geometry_column = 1;
  1523   1534   		if (strcasecmp (name, "coord_dimension") == 0)
  1524   1535   		    coord_dimension = 1;
  1525   1536   		if (strcasecmp (name, "srid") == 0)
  1526   1537   		    gc_srid = 1;
  1527   1538   		if (strcasecmp (name, "type") == 0)
  1528   1539   		    type = 1;
         1540  +		if (strcasecmp (name, "geometry_type") == 0)
         1541  +		    geometry_type = 1;
  1529   1542   		if (strcasecmp (name, "spatial_index_enabled") == 0)
  1530   1543   		    spatial_index_enabled = 1;
  1531   1544   	    }
  1532   1545         }
  1533   1546       sqlite3_free_table (results);
  1534   1547       if (f_table_name && f_geometry_column && type && coord_dimension && gc_srid
  1535   1548   	&& spatial_index_enabled)
         1549  +	spatialite_legacy_gc = 1;
         1550  +    if (f_table_name && f_geometry_column && geometry_type && coord_dimension
         1551  +	&& gc_srid && spatial_index_enabled)
  1536   1552   	spatialite_gc = 1;
  1537   1553   
  1538   1554   /* checking the SPATIAL_REF_SYS table */
  1539   1555       strcpy (sql, "PRAGMA table_info(spatial_ref_sys)");
  1540   1556       ret = sqlite3_get_table (handle, sql, &results, &rows, &columns, NULL);
  1541   1557       if (ret != SQLITE_OK)
  1542   1558   	goto unknown;
................................................................................
  1560   1576   	    }
  1561   1577         }
  1562   1578       sqlite3_free_table (results);
  1563   1579       if (rs_srid && auth_name && auth_srid && ref_sys_name && proj4text)
  1564   1580   	spatialite_rs = 1;
  1565   1581   
  1566   1582   /* verifying the MetaData format */
  1567         -    if (spatialite_gc && spatialite_rs)
         1583  +    if ((spatialite_legacy_gc || spatialite_gc) && spatialite_rs)
  1568   1584   	goto check_tables;
  1569   1585   
  1570   1586     unknown:
  1571   1587       if (handle)
  1572   1588   	sqlite3_close (handle);
  1573   1589       printf ("DB '%s'\n", path);
  1574   1590       printf ("doesn't seems to contain valid Spatial Metadata ...\n\n");
................................................................................
  1621   1637   	     "-? or --help                      print this help message\n");
  1622   1638       fprintf (stderr,
  1623   1639   	     "-t or --test                      test only - no actual action\n");
  1624   1640       fprintf (stderr, "-v or --verbose                   verbose output\n");
  1625   1641       fprintf (stderr,
  1626   1642   	     "-d or --db-path     pathname      the SpatiaLite db path\n");
  1627   1643       fprintf (stderr, "-T or --table-name  name          DB table name\n");
  1628         -    fprintf (stderr, "-i or --image-type  type          [JPEG|WAVELET|TIFF]\n");
         1644  +    fprintf (stderr, "-i or --image-type  type          [JPEG|TIFF]\n");
  1629   1645       fprintf (stderr,
  1630         -	     "-q or --quality     num           [default = 75(JPEG) / 25(WAVELET)]\n");
         1646  +	     "-q or --quality     num           [default = 75(JPEG)]\n");
  1631   1647   }
  1632   1648   
  1633   1649   int
  1634   1650   main (int argc, char *argv[])
  1635   1651   {
  1636   1652   /* the MAIN function simply perform arguments checking */
  1637   1653       sqlite3 *handle;
................................................................................
  1657   1673   		      break;
  1658   1674   		  case ARG_TABLE_NAME:
  1659   1675   		      table = argv[i];
  1660   1676   		      break;
  1661   1677   		  case ARG_IMAGE_TYPE:
  1662   1678   		      if (strcasecmp (argv[i], "JPEG") == 0)
  1663   1679   			  image_type = GAIA_JPEG_BLOB;
  1664         -		      if (strcasecmp (argv[i], "WAVELET") == 0)
  1665         -			  image_type = GAIA_WAVELET_BLOB;
  1666   1680   		      if (strcasecmp (argv[i], "PNG") == 0)
  1667   1681   			  image_type = GAIA_PNG_BLOB;
  1668   1682   		      if (strcasecmp (argv[i], "TIFF") == 0)
  1669   1683   			  image_type = GAIA_TIFF_BLOB;
  1670   1684   		      break;
  1671   1685   		  case ARG_QUALITY_FACTOR:
  1672   1686   		      quality_factor = atoi (argv[i]);
................................................................................
  1771   1785   	  if (quality_factor == -999999)
  1772   1786   	      quality_factor = 75;
  1773   1787   	  if (quality_factor < 10)
  1774   1788   	      quality_factor = 10;
  1775   1789   	  if (quality_factor > 90)
  1776   1790   	      quality_factor = 90;
  1777   1791         }
  1778         -    if (image_type == GAIA_WAVELET_BLOB)
  1779         -      {
  1780         -	  /* normalizing the commpression factor */
  1781         -	  if (quality_factor == -999999)
  1782         -	      quality_factor = 25;
  1783         -	  if (quality_factor < 10)
  1784         -	      quality_factor = 10;
  1785         -	  if (quality_factor > 200)
  1786         -	      quality_factor = 200;
  1787         -      }
  1788   1792       printf ("=====================================================\n");
  1789   1793       printf ("             Arguments Summary\n");
  1790   1794       printf ("=====================================================\n");
  1791   1795       if (test_mode)
  1792   1796   	printf ("TEST mode: no actual action will be performed\n");
  1793   1797       printf ("SpatiaLite DB path: '%s'\n", path);
  1794   1798       printf ("Table prefix: '%s'\n", table);
................................................................................
  1795   1799       printf ("\ttable '%s_rasters' is assumed to store raster tiles\n", table);
  1796   1800       printf ("\ttable '%s_metadata' is assumed to store tile metadata\n", table);
  1797   1801       switch (image_type)
  1798   1802         {
  1799   1803         case GAIA_JPEG_BLOB:
  1800   1804   	  printf ("Pyramid Tile image type: JPEG quality=%d\n", quality_factor);
  1801   1805   	  break;
  1802         -      case GAIA_WAVELET_BLOB:
  1803         -	  printf ("Pyramid Tile image type: WAVELET compression ratio 1:%d\n",
  1804         -		  quality_factor);
  1805         -	  break;
  1806   1806         case GAIA_PNG_BLOB:
  1807   1807   	  printf ("Pyramid Tile image type: PNG [RGB]\n");
  1808   1808   	  break;
  1809   1809         case GAIA_TIFF_BLOB:
  1810   1810   	  printf ("Pyramid Tile image type: TIFF [RGB]\n");
  1811   1811   	  break;
  1812   1812         default:

Changes to src/rasterlite_tool.c.

     1      1   /* 
     2      2   / rasterlite_tool.c
     3      3   /
     4      4   / a tool generating rasters from a SpatiaLite DB 
     5      5   /
     6         -/ version 1.0, 2009 June 1
            6  +/ version 1.1a, 2011 November 12
     7      7   /
     8      8   / Author: Sandro Furieri a.furieri@lqt.it
     9      9   /
    10         -/ Copyright (C) 2009  Alessandro Furieri
           10  +/ ------------------------------------------------------------------------------
           11  +/ 
           12  +/ Version: MPL 1.1/GPL 2.0/LGPL 2.1
           13  +/ 
           14  +/ The contents of this file are subject to the Mozilla Public License Version
           15  +/ 1.1 (the "License"); you may not use this file except in compliance with
           16  +/ the License. You may obtain a copy of the License at
           17  +/ http://www.mozilla.org/MPL/
           18  +/ 
           19  +/ Software distributed under the License is distributed on an "AS IS" basis,
           20  +/ WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
           21  +/ for the specific language governing rights and limitations under the
           22  +/ License.
    11     23   /
    12         -/    This program is free software: you can redistribute it and/or modify
    13         -/    it under the terms of the GNU General Public License as published by
    14         -/    the Free Software Foundation, either version 3 of the License, or
    15         -/    (at your option) any later version.
           24  +/ The Original Code is the RasterLite library
    16     25   /
    17         -/    This program is distributed in the hope that it will be useful,
    18         -/    but WITHOUT ANY WARRANTY; without even the implied warranty of
    19         -/    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    20         -/    GNU General Public License for more details.
           26  +/ The Initial Developer of the Original Code is Alessandro Furieri
           27  +/ 
           28  +/ Portions created by the Initial Developer are Copyright (C) 2009
           29  +/ the Initial Developer. All Rights Reserved.
    21     30   /
    22         -/    You should have received a copy of the GNU General Public License
    23         -/    along with this program.  If not, see <http://www.gnu.org/licenses/>.
    24         -/
           31  +/ Alternatively, the contents of this file may be used under the terms of
           32  +/ either the GNU General Public License Version 2 or later (the "GPL"), or
           33  +/ the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
           34  +/ in which case the provisions of the GPL or the LGPL are applicable instead
           35  +/ of those above. If you wish to allow use of your version of this file only
           36  +/ under the terms of either the GPL or the LGPL, and not to allow others to
           37  +/ use your version of this file under the terms of the MPL, indicate your
           38  +/ decision by deleting the provisions above and replace them with the notice
           39  +/ and other provisions required by the GPL or the LGPL. If you do not delete
           40  +/ the provisions above, a recipient may use your version of this file under
           41  +/ the terms of any one of the MPL, the GPL or the LGPL.
           42  +/ 
    25     43   */
           44  +
           45  +#if defined(_WIN32) && !defined(__MINGW32__)
           46  +/* MSVC strictly requires this include [off_t] */
           47  +#include <sys/types.h>
           48  +#endif
    26     49   
    27     50   #include <stdlib.h>
    28     51   #include <stdio.h>
    29     52   #include <string.h>
    30     53   #include <float.h>
    31     54   
    32     55   #include <tiffio.h>
    33     56   
           57  +#ifdef SPATIALITE_AMALGAMATION
    34     58   #include <spatialite/sqlite3.h>
           59  +#else
           60  +#include <sqlite3.h>
           61  +#endif
           62  +
    35     63   #include <spatialite/gaiaexif.h>
    36     64   #include <spatialite/gaiageo.h>
    37     65   #include <spatialite.h>
    38     66   
    39     67   #include "rasterlite.h"
    40     68   #include "rasterlite_internals.h"
    41     69   

Changes to src/rasterlite_topmost.c.

     1      1   /* 
     2      2   / rasterlite_topmpst.c
     3      3   /
     4      4   / a tool building raster topmost pyramid's levels into a SpatiaLite DB 
     5      5   /
     6         -/ version 1.0, 2009 June 25
            6  +/ version 1.1a, 2011 November 12
     7      7   /
     8      8   / Author: Sandro Furieri a.furieri@lqt.it
     9      9   /
    10         -/ Copyright (C) 2009  Alessandro Furieri
           10  +/ ------------------------------------------------------------------------------
           11  +/ 
           12  +/ Version: MPL 1.1/GPL 2.0/LGPL 2.1
           13  +/ 
           14  +/ The contents of this file are subject to the Mozilla Public License Version
           15  +/ 1.1 (the "License"); you may not use this file except in compliance with
           16  +/ the License. You may obtain a copy of the License at
           17  +/ http://www.mozilla.org/MPL/
           18  +/ 
           19  +/ Software distributed under the License is distributed on an "AS IS" basis,
           20  +/ WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
           21  +/ for the specific language governing rights and limitations under the
           22  +/ License.
    11     23   /
    12         -/    This program is free software: you can redistribute it and/or modify
    13         -/    it under the terms of the GNU General Public License as published by
    14         -/    the Free Software Foundation, either version 3 of the License, or
    15         -/    (at your option) any later version.
           24  +/ The Original Code is the RasterLite library
    16     25   /
    17         -/    This program is distributed in the hope that it will be useful,
    18         -/    but WITHOUT ANY WARRANTY; without even the implied warranty of
    19         -/    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    20         -/    GNU General Public License for more details.
           26  +/ The Initial Developer of the Original Code is Alessandro Furieri
           27  +/ 
           28  +/ Portions created by the Initial Developer are Copyright (C) 2009
           29  +/ the Initial Developer. All Rights Reserved.
    21     30   /
    22         -/    You should have received a copy of the GNU General Public License
    23         -/    along with this program.  If not, see <http://www.gnu.org/licenses/>.
    24         -/
           31  +/ Alternatively, the contents of this file may be used under the terms of
           32  +/ either the GNU General Public License Version 2 or later (the "GPL"), or
           33  +/ the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
           34  +/ in which case the provisions of the GPL or the LGPL are applicable instead
           35  +/ of those above. If you wish to allow use of your version of this file only
           36  +/ under the terms of either the GPL or the LGPL, and not to allow others to
           37  +/ use your version of this file under the terms of the MPL, indicate your
           38  +/ decision by deleting the provisions above and replace them with the notice
           39  +/ and other provisions required by the GPL or the LGPL. If you do not delete
           40  +/ the provisions above, a recipient may use your version of this file under
           41  +/ the terms of any one of the MPL, the GPL or the LGPL.
           42  +/ 
    25     43   */
    26     44   
           45  +#if defined(_WIN32) && !defined(__MINGW32__)
           46  +/* MSVC strictly requires this include [off_t] */
           47  +#include <sys/types.h>
           48  +#endif
    27     49   
    28     50   #include <stdlib.h>
    29     51   #include <stdio.h>
    30     52   #include <string.h>
    31     53   #include <float.h>
    32     54   #include <math.h>
    33     55   
    34     56   #include <tiffio.h>
    35     57   
           58  +#ifdef SPATIALITE_AMALGAMATION
    36     59   #include <spatialite/sqlite3.h>
           60  +#else
           61  +#include <sqlite3.h>
           62  +#endif
           63  +
    37     64   #include <spatialite/gaiaexif.h>
    38     65   #include <spatialite/gaiageo.h>
    39     66   #include <spatialite.h>
    40     67   
    41     68   #include "rasterlite.h"
    42     69   #include "rasterlite_internals.h"
    43     70   
................................................................................
   279    306   	list->first = p;
   280    307       if (list->last != NULL)
   281    308   	list->last->next = p;
   282    309       list->last = p;
   283    310   }
   284    311   
   285    312   static void
   286         -copy_rectangle (rasterliteImagePrt output, rasterliteImagePrt input,
          313  +copy_rectangle (rasterliteImagePtr output, rasterliteImagePtr input,
   287    314   		int transparent_color, int base_x, int base_y)
   288    315   {
   289    316   /* copying a raster rectangle */
   290    317       int x;
   291    318       int y;
   292    319       int dst_x;
   293    320       int dst_y;
................................................................................
   332    359       int ret;
   333    360       int hits = 0;
   334    361       void *blob;
   335    362       int blob_size;
   336    363       int new_tile_width;
   337    364       int new_tile_height;
   338    365       gaiaPolygonPtr polyg;
   339         -    rasterliteImagePrt full_size = NULL;
   340         -    rasterliteImagePrt thumbnail = NULL;
          366  +    rasterliteImagePtr full_size = NULL;
          367  +    rasterliteImagePtr thumbnail = NULL;
   341    368       int srid;
   342    369   /* creating the full size image */
   343    370       full_size = image_create (tile_width, tile_height);
   344    371       image_fill (full_size, info->background_color);
   345    372   /* binding query params */
   346    373       sqlite3_reset (info->stmt_query);
   347    374       sqlite3_clear_bindings (info->stmt_query);
................................................................................
   357    384   	  ret = sqlite3_step (info->stmt_query);
   358    385   	  if (ret == SQLITE_DONE)
   359    386   	      break;		/* end of result set */
   360    387   	  if (ret == SQLITE_ROW)
   361    388   	    {
   362    389   		/* retrieving query values */
   363    390   		gaiaGeomCollPtr geom = NULL;
   364         -		rasterliteImagePrt img = NULL;
          391  +		rasterliteImagePtr img = NULL;
   365    392   		if (sqlite3_column_type (info->stmt_query, 0) == SQLITE_BLOB)
   366    393   		  {
   367    394   		      /* fetching Geometry */
   368    395   		      const void *blob =
   369    396   			  sqlite3_column_blob (info->stmt_query, 0);
   370    397   		      int blob_size =
   371    398   			  sqlite3_column_bytes (info->stmt_query, 0);
................................................................................
   412    439   	    {
   413    440   		printf ("SQL error: %s\n", sqlite3_errmsg (info->handle));
   414    441   		image_destroy (full_size);
   415    442   		return 0;
   416    443   	    }
   417    444         }
   418    445       if (!hits)
   419         -	return -1;
          446  +      {
          447  +	  image_destroy (full_size);	/* 2011-11-18 ASAHI Kosuke */
          448  +	  return -1;
          449  +      }
   420    450   /* saving the tile params */
   421    451       new_tile_width = tile_width / 2;
   422    452       if ((new_tile_width * 2) < tile_width)
   423    453   	new_tile_width++;
   424    454       new_tile_height = tile_height / 2;
   425    455       if ((new_tile_height * 2) < tile_height)
   426    456   	new_tile_height++;
................................................................................
   456    486         {
   457    487   	  blob = image_to_png_rgb (thumbnail, &blob_size);
   458    488   	  if (!blob)
   459    489   	    {
   460    490   		printf ("PNG RGB compression error\n");
   461    491   		return 0;
   462    492   	    }
   463         -      }
   464         -    else if (info->image_type == GAIA_WAVELET_BLOB)
   465         -      {
   466         -	  blob = image_to_wavelet (thumbnail, &blob_size, info->quality_factor);
   467         -	  if (!blob)
   468         -	    {
   469         -		printf ("WAVELET compression error\n");
   470         -		return 0;
   471         -	    }
   472    493         }
   473    494       else
   474    495         {
   475    496   	  blob = image_to_jpeg (thumbnail, &blob_size, info->quality_factor);
   476    497   	  if (!blob)
   477    498   	    {
   478    499   		printf ("JPEG compression error\n");
................................................................................
   489    510       else
   490    511         {
   491    512   	  printf ("sqlite3_step() error: %s\n", sqlite3_errmsg (info->handle));
   492    513   	  return 0;
   493    514         }
   494    515       tile->id_raster = sqlite3_last_insert_rowid (info->handle);
   495    516       tile->valid = 1;
          517  +    image_destroy (full_size);	/* 2011-11-18 ASAHI Kosuke */
          518  +    image_destroy (thumbnail);	/* 2011-11-18 ASAHI Kosuke */
   496    519       return 1;
   497    520   }
   498    521   
   499    522   static int
   500    523   build_pyramid_topmost_level (sqlite3 * handle, const char *table,
   501    524   			     int image_type, int quality_factor, int level,
   502    525   			     int tile_size, double x_size, double y_size,
................................................................................
  1178   1201   /* trying to connect SpatiaLite DB */
  1179   1202       sqlite3 *handle = NULL;
  1180   1203       int ret;
  1181   1204       char rasters[512];
  1182   1205       char meta[512];
  1183   1206       char sql[1024];
  1184   1207       int spatialite_rs = 0;
         1208  +    int spatialite_legacy_gc = 0;
  1185   1209       int spatialite_gc = 0;
  1186   1210       int rs_srid = 0;
  1187   1211       int auth_name = 0;
  1188   1212       int auth_srid = 0;
  1189   1213       int ref_sys_name = 0;
  1190   1214       int proj4text = 0;
  1191   1215       int f_table_name = 0;
  1192   1216       int f_geometry_column = 0;
  1193   1217       int coord_dimension = 0;
  1194   1218       int gc_srid = 0;
  1195   1219       int type = 0;
         1220  +    int geometry_type = 0;
  1196   1221       int spatial_index_enabled = 0;
  1197   1222       int tbl_rasters = 0;
  1198   1223       int tbl_meta = 0;
  1199   1224       const char *name;
  1200   1225       int i;
  1201   1226       char **results;
  1202   1227       int rows;
................................................................................
  1232   1257   		    f_geometry_column = 1;
  1233   1258   		if (strcasecmp (name, "coord_dimension") == 0)
  1234   1259   		    coord_dimension = 1;
  1235   1260   		if (strcasecmp (name, "srid") == 0)
  1236   1261   		    gc_srid = 1;
  1237   1262   		if (strcasecmp (name, "type") == 0)
  1238   1263   		    type = 1;
         1264  +		if (strcasecmp (name, "geometry_type") == 0)
         1265  +		    geometry_type = 1;
  1239   1266   		if (strcasecmp (name, "spatial_index_enabled") == 0)
  1240   1267   		    spatial_index_enabled = 1;
  1241   1268   	    }
  1242   1269         }
  1243   1270       sqlite3_free_table (results);
  1244   1271       if (f_table_name && f_geometry_column && type && coord_dimension && gc_srid
  1245   1272   	&& spatial_index_enabled)
         1273  +	spatialite_legacy_gc = 1;
         1274  +    if (f_table_name && f_geometry_column && geometry_type && coord_dimension
         1275  +	&& gc_srid && spatial_index_enabled)
  1246   1276   	spatialite_gc = 1;
  1247   1277   
  1248   1278   /* checking the SPATIAL_REF_SYS table */
  1249   1279       strcpy (sql, "PRAGMA table_info(spatial_ref_sys)");
  1250   1280       ret = sqlite3_get_table (handle, sql, &results, &rows, &columns, NULL);
  1251   1281       if (ret != SQLITE_OK)
  1252   1282   	goto unknown;
................................................................................
  1270   1300   	    }
  1271   1301         }
  1272   1302       sqlite3_free_table (results);
  1273   1303       if (rs_srid && auth_name && auth_srid && ref_sys_name && proj4text)
  1274   1304   	spatialite_rs = 1;
  1275   1305   
  1276   1306   /* verifying the MetaData format */
  1277         -    if (spatialite_gc && spatialite_rs)
         1307  +    if ((spatialite_legacy_gc || spatialite_gc) && spatialite_rs)
  1278   1308   	goto check_tables;
  1279   1309   
  1280   1310     unknown:
  1281   1311       if (handle)
  1282   1312   	sqlite3_close (handle);
  1283   1313       printf ("DB '%s'\n", path);
  1284   1314       printf ("doesn't seems to contain valid Spatial Metadata ...\n\n");
................................................................................
  1373   1403   	     "-? or --help                      print this help message\n");
  1374   1404       fprintf (stderr,
  1375   1405   	     "-t or --test                      test only - no actual action\n");
  1376   1406       fprintf (stderr, "-v or --verbose                   verbose output\n");
  1377   1407       fprintf (stderr,
  1378   1408   	     "-d or --db-path     pathname      the SpatiaLite db path\n");
  1379   1409       fprintf (stderr, "-T or --table-name  name          DB table name\n");
  1380         -    fprintf (stderr, "-i or --image-type  type          [JPEG|WAVELET|TIFF]\n");
         1410  +    fprintf (stderr, "-i or --image-type  type          [JPEG|TIFF]\n");
  1381   1411       fprintf (stderr,
  1382         -	     "-q or --quality     num           [default = 75(JPEG) / 25(WAVELET)]\n");
         1412  +	     "-q or --quality     num           [default = 75(JPEG)]\n");
  1383   1413       fprintf (stderr, "-c or --transparent-color 0xRRGGBB [default = NONE]\n");
  1384   1414       fprintf (stderr,
  1385   1415   	     "-b or --background-color  0xRRGGBB [default = 0x000000]\n");
  1386   1416   }
  1387   1417   
  1388   1418   int
  1389   1419   main (int argc, char *argv[])
................................................................................
  1417   1447   		      break;
  1418   1448   		  case ARG_TABLE_NAME:
  1419   1449   		      table = argv[i];
  1420   1450   		      break;
  1421   1451   		  case ARG_IMAGE_TYPE:
  1422   1452   		      if (strcasecmp (argv[i], "JPEG") == 0)
  1423   1453   			  image_type = GAIA_JPEG_BLOB;
  1424         -		      if (strcasecmp (argv[i], "WAVELET") == 0)
  1425         -			  image_type = GAIA_WAVELET_BLOB;
  1426   1454   		      if (strcasecmp (argv[i], "PNG") == 0)
  1427   1455   			  image_type = GAIA_PNG_BLOB;
  1428   1456   		      if (strcasecmp (argv[i], "TIFF") == 0)
  1429   1457   			  image_type = GAIA_TIFF_BLOB;
  1430   1458   		      break;
  1431   1459   		  case ARG_QUALITY_FACTOR:
  1432   1460   		      quality_factor = atoi (argv[i]);
................................................................................
  1588   1616   	  if (quality_factor == -999999)
  1589   1617   	      quality_factor = 75;
  1590   1618   	  if (quality_factor < 10)
  1591   1619   	      quality_factor = 10;
  1592   1620   	  if (quality_factor > 90)
  1593   1621   	      quality_factor = 90;
  1594   1622         }
  1595         -    if (image_type == GAIA_WAVELET_BLOB)
  1596         -      {
  1597         -	  /* normalizing the commpression factor */
  1598         -	  if (quality_factor == -999999)
  1599         -	      quality_factor = 25;
  1600         -	  if (quality_factor < 10)
  1601         -	      quality_factor = 10;
  1602         -	  if (quality_factor > 200)
  1603         -	      quality_factor = 200;
  1604         -      }
  1605   1623       printf ("=====================================================\n");
  1606   1624       printf ("             Arguments Summary\n");
  1607   1625       printf ("=====================================================\n");
  1608   1626       if (test_mode)
  1609   1627   	printf ("TEST mode: no actual action will be performed\n");
  1610   1628       printf ("SpatiaLite DB path: '%s'\n", path);
  1611   1629       printf ("Table prefix: '%s'\n", table);
................................................................................
  1614   1632       printf ("Tile preferred max size: %d pixels\n", tile_size);
  1615   1633       switch (image_type)
  1616   1634         {
  1617   1635         case GAIA_JPEG_BLOB:
  1618   1636   	  printf ("Topmost Pyramid Tile image type: JPEG quality=%d\n",
  1619   1637   		  quality_factor);
  1620   1638   	  break;
  1621         -      case GAIA_WAVELET_BLOB:
  1622         -	  printf
  1623         -	      ("Topmost Pyramid Tile image type: WAVELET compression ratio 1:%d\n",
  1624         -	       quality_factor);
  1625         -	  break;
  1626   1639         case GAIA_PNG_BLOB:
  1627   1640   	  printf ("Topmost Pyramid Tile image type: PNG [RGB]\n");
  1628   1641   	  break;
  1629   1642         case GAIA_TIFF_BLOB:
  1630   1643   	  printf ("Topmost Pyramid Tile image type: TIFF [RGB]\n");
  1631   1644   	  break;
  1632   1645         default:

Deleted svn-commit.2.tmp.

     1         -Creating 'librasterlite' SVN
     2         ---Questa linea, e quelle sotto di essa, saranno ignorate--
     3         -
     4         -A    .

Deleted svn-commit.3.tmp.

     1         -Initial load for 'librasterlite'
     2         ---Questa linea, e quelle sotto di essa, saranno ignorate--
     3         -
     4         -A    .

Deleted svn-commit.tmp.

     1         -Creating the 'librasterlite' SVN
     2         ---Questa linea, e quelle sotto di essa, saranno ignorate--
     3         -
     4         -A    https://www.gaia-gis.it/svn/librasterlite

Added test/Makefile.am.

            1  +check_PROGRAMS = check_version \
            2  +		check_openclose \
            3  +		check_badopen \
            4  +		check_metadata \
            5  +		check_resolution \
            6  +		check_colours \
            7  +		check_rastergen
            8  +
            9  +AM_CFLAGS = -I$(top_srcdir)/headers
           10  +AM_LDFLAGS = -L../lib @LIBSPATIALITE_LIBS@  -lrasterlite -lm $(GCOV_FLAGS)
           11  +
           12  +TESTS = $(check_PROGRAMS)
           13  +
           14  +MOSTLYCLEANFILES = *.gcna *.gcno *.gcda
           15  +
           16  +EXTRA_DIST = globe.sqlite jpeg50ref.jpg

Added test/Makefile.in.

            1  +# Makefile.in generated by automake 1.11.6 from Makefile.am.
            2  +# @configure_input@
            3  +
            4  +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
            5  +# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
            6  +# Foundation, Inc.
            7  +# This Makefile.in is free software; the Free Software Foundation
            8  +# gives unlimited permission to copy and/or distribute it,
            9  +# with or without modifications, as long as this notice is preserved.
           10  +
           11  +# This program is distributed in the hope that it will be useful,
           12  +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
           13  +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
           14  +# PARTICULAR PURPOSE.
           15  +
           16  +@SET_MAKE@
           17  +VPATH = @srcdir@
           18  +am__make_dryrun = \
           19  +  { \
           20  +    am__dry=no; \
           21  +    case $$MAKEFLAGS in \
           22  +      *\\[\ \	]*) \
           23  +        echo 'am--echo: ; @echo "AM"  OK' | $(MAKE) -f - 2>/dev/null \
           24  +          | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
           25  +      *) \
           26  +        for am__flg in $$MAKEFLAGS; do \
           27  +          case $$am__flg in \
           28  +            *=*|--*) ;; \
           29  +            *n*) am__dry=yes; break;; \
           30  +          esac; \
           31  +        done;; \
           32  +    esac; \
           33  +    test $$am__dry = yes; \
           34  +  }
           35  +pkgdatadir = $(datadir)/@PACKAGE@
           36  +pkgincludedir = $(includedir)/@PACKAGE@
           37  +pkglibdir = $(libdir)/@PACKAGE@
           38  +pkglibexecdir = $(libexecdir)/@PACKAGE@
           39  +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
           40  +install_sh_DATA = $(install_sh) -c -m 644
           41  +install_sh_PROGRAM = $(install_sh) -c
           42  +install_sh_SCRIPT = $(install_sh) -c
           43  +INSTALL_HEADER = $(INSTALL_DATA)
           44  +transform = $(program_transform_name)
           45  +NORMAL_INSTALL = :
           46  +PRE_INSTALL = :
           47  +POST_INSTALL = :
           48  +NORMAL_UNINSTALL = :
           49  +PRE_UNINSTALL = :
           50  +POST_UNINSTALL = :
           51  +build_triplet = @build@
           52  +host_triplet = @host@
           53  +check_PROGRAMS = check_version$(EXEEXT) check_openclose$(EXEEXT) \
           54  +	check_badopen$(EXEEXT) check_metadata$(EXEEXT) \
           55  +	check_resolution$(EXEEXT) check_colours$(EXEEXT) \
           56  +	check_rastergen$(EXEEXT)
           57  +subdir = test
           58  +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
           59  +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
           60  +am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \
           61  +	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
           62  +	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
           63  +	$(top_srcdir)/configure.ac
           64  +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
           65  +	$(ACLOCAL_M4)
           66  +mkinstalldirs = $(install_sh) -d
           67  +CONFIG_HEADER = $(top_builddir)/config.h
           68  +CONFIG_CLEAN_FILES =
           69  +CONFIG_CLEAN_VPATH_FILES =
           70  +check_badopen_SOURCES = check_badopen.c
           71  +check_badopen_OBJECTS = check_badopen.$(OBJEXT)
           72  +check_badopen_LDADD = $(LDADD)
           73  +check_colours_SOURCES = check_colours.c
           74  +check_colours_OBJECTS = check_colours.$(OBJEXT)
           75  +check_colours_LDADD = $(LDADD)
           76  +check_metadata_SOURCES = check_metadata.c
           77  +check_metadata_OBJECTS = check_metadata.$(OBJEXT)
           78  +check_metadata_LDADD = $(LDADD)
           79  +check_openclose_SOURCES = check_openclose.c
           80  +check_openclose_OBJECTS = check_openclose.$(OBJEXT)
           81  +check_openclose_LDADD = $(LDADD)
           82  +check_rastergen_SOURCES = check_rastergen.c
           83  +check_rastergen_OBJECTS = check_rastergen.$(OBJEXT)
           84  +check_rastergen_LDADD = $(LDADD)
           85  +check_resolution_SOURCES = check_resolution.c
           86  +check_resolution_OBJECTS = check_resolution.$(OBJEXT)
           87  +check_resolution_LDADD = $(LDADD)
           88  +check_version_SOURCES = check_version.c
           89  +check_version_OBJECTS = check_version.$(OBJEXT)
           90  +check_version_LDADD = $(LDADD)
           91  +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
           92  +depcomp = $(SHELL) $(top_srcdir)/depcomp
           93  +am__depfiles_maybe = depfiles
           94  +am__mv = mv -f
           95  +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
           96  +	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
           97  +LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
           98  +	--mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
           99  +	$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
          100  +CCLD = $(CC)
          101  +LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
          102  +	--mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
          103  +	$(LDFLAGS) -o $@
          104  +SOURCES = check_badopen.c check_colours.c check_metadata.c \
          105  +	check_openclose.c check_rastergen.c check_resolution.c \
          106  +	check_version.c
          107  +DIST_SOURCES = check_badopen.c check_colours.c check_metadata.c \
          108  +	check_openclose.c check_rastergen.c check_resolution.c \
          109  +	check_version.c
          110  +am__can_run_installinfo = \
          111  +  case $$AM_UPDATE_INFO_DIR in \
          112  +    n|no|NO) false;; \
          113  +    *) (install-info --version) >/dev/null 2>&1;; \
          114  +  esac
          115  +ETAGS = etags
          116  +CTAGS = ctags
          117  +am__tty_colors = \
          118  +red=; grn=; lgn=; blu=; std=
          119  +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
          120  +ACLOCAL = @ACLOCAL@
          121  +AMTAR = @AMTAR@
          122  +AR = @AR@
          123  +AS = @AS@
          124  +AUTOCONF = @AUTOCONF@
          125  +AUTOHEADER = @AUTOHEADER@
          126  +AUTOMAKE = @AUTOMAKE@
          127  +AWK = @AWK@
          128  +CC = @CC@
          129  +CCDEPMODE = @CCDEPMODE@
          130  +CFLAGS = @CFLAGS@
          131  +CPP = @CPP@
          132  +CPPFLAGS = @CPPFLAGS@
          133  +CXX = @CXX@
          134  +CXXCPP = @CXXCPP@
          135  +CXXDEPMODE = @CXXDEPMODE@
          136  +CXXFLAGS = @CXXFLAGS@
          137  +CYGPATH_W = @CYGPATH_W@
          138  +DEFS = @DEFS@
          139  +DEPDIR = @DEPDIR@
          140  +DLLTOOL = @DLLTOOL@
          141  +DSYMUTIL = @DSYMUTIL@
          142  +DUMPBIN = @DUMPBIN@
          143  +ECHO_C = @ECHO_C@
          144  +ECHO_N = @ECHO_N@
          145  +ECHO_T = @ECHO_T@
          146  +EGREP = @EGREP@
          147  +EXEEXT = @EXEEXT@
          148  +FGREP = @FGREP@
          149  +GREP = @GREP@
          150  +INSTALL = @INSTALL@
          151  +INSTALL_DATA = @INSTALL_DATA@
          152  +INSTALL_PROGRAM = @INSTALL_PROGRAM@
          153  +INSTALL_SCRIPT = @INSTALL_SCRIPT@
          154  +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
          155  +LD = @LD@
          156  +LDFLAGS = @LDFLAGS@
          157  +LIBOBJS = @LIBOBJS@
          158  +LIBPNG_CFLAGS = @LIBPNG_CFLAGS@
          159  +LIBPNG_LIBS = @LIBPNG_LIBS@
          160  +LIBS = @LIBS@
          161  +LIBSPATIALITE_CFLAGS = @LIBSPATIALITE_CFLAGS@
          162  +LIBSPATIALITE_LIBS = @LIBSPATIALITE_LIBS@
          163  +LIBTOOL = @LIBTOOL@
          164  +LIPO = @LIPO@
          165  +LN_S = @LN_S@
          166  +LTLIBOBJS = @LTLIBOBJS@
          167  +MAINT = @MAINT@
          168  +MAKEINFO = @MAKEINFO@
          169  +MANIFEST_TOOL = @MANIFEST_TOOL@
          170  +MKDIR_P = @MKDIR_P@
          171  +NM = @NM@
          172  +NMEDIT = @NMEDIT@
          173  +OBJDUMP = @OBJDUMP@
          174  +OBJEXT = @OBJEXT@
          175  +OTOOL = @OTOOL@
          176  +OTOOL64 = @OTOOL64@
          177  +PACKAGE = @PACKAGE@
          178  +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
          179  +PACKAGE_NAME = @PACKAGE_NAME@
          180  +PACKAGE_STRING = @PACKAGE_STRING@
          181  +PACKAGE_TARNAME = @PACKAGE_TARNAME@
          182  +PACKAGE_URL = @PACKAGE_URL@
          183  +PACKAGE_VERSION = @PACKAGE_VERSION@
          184  +PATH_SEPARATOR = @PATH_SEPARATOR@
          185  +PKG_CONFIG = @PKG_CONFIG@
          186  +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
          187  +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
          188  +RANLIB = @RANLIB@
          189  +SED = @SED@
          190  +SET_MAKE = @SET_MAKE@
          191  +SHELL = @SHELL@
          192  +STRIP = @STRIP@
          193  +VERSION = @VERSION@
          194  +abs_builddir = @abs_builddir@
          195  +abs_srcdir = @abs_srcdir@
          196  +abs_top_builddir = @abs_top_builddir@
          197  +abs_top_srcdir = @abs_top_srcdir@
          198  +ac_ct_AR = @ac_ct_AR@
          199  +ac_ct_CC = @ac_ct_CC@
          200  +ac_ct_CXX = @ac_ct_CXX@
          201  +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
          202  +am__include = @am__include@
          203  +am__leading_dot = @am__leading_dot@
          204  +am__quote = @am__quote@
          205  +am__tar = @am__tar@
          206  +am__untar = @am__untar@
          207  +bindir = @bindir@
          208  +build = @build@
          209  +build_alias = @build_alias@
          210  +build_cpu = @build_cpu@
          211  +build_os = @build_os@
          212  +build_vendor = @build_vendor@
          213  +builddir = @builddir@
          214  +datadir = @datadir@
          215  +datarootdir = @datarootdir@
          216  +docdir = @docdir@
          217  +dvidir = @dvidir@
          218  +exec_prefix = @exec_prefix@
          219  +host = @host@
          220  +host_alias = @host_alias@
          221  +host_cpu = @host_cpu@
          222  +host_os = @host_os@
          223  +host_vendor = @host_vendor@
          224  +htmldir = @htmldir@
          225  +includedir = @includedir@
          226  +infodir = @infodir@
          227  +install_sh = @install_sh@
          228  +libdir = @libdir@
          229  +libexecdir = @libexecdir@
          230  +localedir = @localedir@
          231  +localstatedir = @localstatedir@
          232  +mandir = @mandir@
          233  +mkdir_p = @mkdir_p@
          234  +oldincludedir = @oldincludedir@
          235  +pdfdir = @pdfdir@
          236  +prefix = @prefix@
          237  +program_transform_name = @program_transform_name@
          238  +psdir = @psdir@
          239  +sbindir = @sbindir@
          240  +sharedstatedir = @sharedstatedir@
          241  +srcdir = @srcdir@
          242  +sysconfdir = @sysconfdir@
          243  +target_alias = @target_alias@
          244  +top_build_prefix = @top_build_prefix@
          245  +top_builddir = @top_builddir@
          246  +top_srcdir = @top_srcdir@
          247  +AM_CFLAGS = -I$(top_srcdir)/headers
          248  +AM_LDFLAGS = -L../lib @LIBSPATIALITE_LIBS@  -lrasterlite -lm $(GCOV_FLAGS)
          249  +TESTS = $(check_PROGRAMS)
          250  +MOSTLYCLEANFILES = *.gcna *.gcno *.gcda
          251  +EXTRA_DIST = globe.sqlite jpeg50ref.jpg
          252  +all: all-am
          253  +
          254  +.SUFFIXES:
          255  +.SUFFIXES: .c .lo .o .obj
          256  +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps)
          257  +	@for dep in $?; do \
          258  +	  case '$(am__configure_deps)' in \
          259  +	    *$$dep*) \
          260  +	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
          261  +	        && { if test -f $@; then exit 0; else break; fi; }; \
          262  +	      exit 1;; \
          263  +	  esac; \
          264  +	done; \
          265  +	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu test/Makefile'; \
          266  +	$(am__cd) $(top_srcdir) && \
          267  +	  $(AUTOMAKE) --gnu test/Makefile
          268  +.PRECIOUS: Makefile
          269  +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
          270  +	@case '$?' in \
          271  +	  *config.status*) \
          272  +	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
          273  +	  *) \
          274  +	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
          275  +	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
          276  +	esac;
          277  +
          278  +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
          279  +	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
          280  +
          281  +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
          282  +	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
          283  +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
          284  +	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
          285  +$(am__aclocal_m4_deps):
          286  +
          287  +clean-checkPROGRAMS:
          288  +	@list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \
          289  +	echo " rm -f" $$list; \
          290  +	rm -f $$list || exit $$?; \
          291  +	test -n "$(EXEEXT)" || exit 0; \
          292  +	list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
          293  +	echo " rm -f" $$list; \
          294  +	rm -f $$list
          295  +check_badopen$(EXEEXT): $(check_badopen_OBJECTS) $(check_badopen_DEPENDENCIES) $(EXTRA_check_badopen_DEPENDENCIES) 
          296  +	@rm -f check_badopen$(EXEEXT)
          297  +	$(LINK) $(check_badopen_OBJECTS) $(check_badopen_LDADD) $(LIBS)
          298  +check_colours$(EXEEXT): $(check_colours_OBJECTS) $(check_colours_DEPENDENCIES) $(EXTRA_check_colours_DEPENDENCIES) 
          299  +	@rm -f check_colours$(EXEEXT)
          300  +	$(LINK) $(check_colours_OBJECTS) $(check_colours_LDADD) $(LIBS)
          301  +check_metadata$(EXEEXT): $(check_metadata_OBJECTS) $(check_metadata_DEPENDENCIES) $(EXTRA_check_metadata_DEPENDENCIES) 
          302  +	@rm -f check_metadata$(EXEEXT)
          303  +	$(LINK) $(check_metadata_OBJECTS) $(check_metadata_LDADD) $(LIBS)
          304  +check_openclose$(EXEEXT): $(check_openclose_OBJECTS) $(check_openclose_DEPENDENCIES) $(EXTRA_check_openclose_DEPENDENCIES) 
          305  +	@rm -f check_openclose$(EXEEXT)
          306  +	$(LINK) $(check_openclose_OBJECTS) $(check_openclose_LDADD) $(LIBS)
          307  +check_rastergen$(EXEEXT): $(check_rastergen_OBJECTS) $(check_rastergen_DEPENDENCIES) $(EXTRA_check_rastergen_DEPENDENCIES) 
          308  +	@rm -f check_rastergen$(EXEEXT)
          309  +	$(LINK) $(check_rastergen_OBJECTS) $(check_rastergen_LDADD) $(LIBS)
          310  +check_resolution$(EXEEXT): $(check_resolution_OBJECTS) $(check_resolution_DEPENDENCIES) $(EXTRA_check_resolution_DEPENDENCIES) 
          311  +	@rm -f check_resolution$(EXEEXT)
          312  +	$(LINK) $(check_resolution_OBJECTS) $(check_resolution_LDADD) $(LIBS)
          313  +check_version$(EXEEXT): $(check_version_OBJECTS) $(check_version_DEPENDENCIES) $(EXTRA_check_version_DEPENDENCIES) 
          314  +	@rm -f check_version$(EXEEXT)
          315  +	$(LINK) $(check_version_OBJECTS) $(check_version_LDADD) $(LIBS)
          316  +
          317  +mostlyclean-compile:
          318  +	-rm -f *.$(OBJEXT)
          319  +
          320  +distclean-compile:
          321  +	-rm -f *.tab.c
          322  +
          323  +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/check_badopen.Po@am__quote@
          324  +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/check_colours.Po@am__quote@
          325  +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/check_metadata.Po@am__quote@
          326  +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/check_openclose.Po@am__quote@
          327  +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/check_rastergen.Po@am__quote@
          328  +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/check_resolution.Po@am__quote@
          329  +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/check_version.Po@am__quote@
          330  +
          331  +.c.o:
          332  +@am__fastdepCC_TRUE@	$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
          333  +@am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
          334  +@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
          335  +@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
          336  +@am__fastdepCC_FALSE@	$(COMPILE) -c $<
          337  +
          338  +.c.obj:
          339  +@am__fastdepCC_TRUE@	$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
          340  +@am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
          341  +@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
          342  +@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
          343  +@am__fastdepCC_FALSE@	$(COMPILE) -c `$(CYGPATH_W) '$<'`
          344  +
          345  +.c.lo:
          346  +@am__fastdepCC_TRUE@	$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
          347  +@am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
          348  +@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
          349  +@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
          350  +@am__fastdepCC_FALSE@	$(LTCOMPILE) -c -o $@ $<
          351  +
          352  +mostlyclean-libtool:
          353  +	-rm -f *.lo
          354  +
          355  +clean-libtool:
          356  +	-rm -rf .libs _libs
          357  +
          358  +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
          359  +	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
          360  +	unique=`for i in $$list; do \
          361  +	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
          362  +	  done | \
          363  +	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
          364  +	      END { if (nonempty) { for (i in files) print i; }; }'`; \
          365  +	mkid -fID $$unique
          366  +tags: TAGS
          367  +
          368  +TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
          369  +		$(TAGS_FILES) $(LISP)
          370  +	set x; \
          371  +	here=`pwd`; \
          372  +	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
          373  +	unique=`for i in $$list; do \
          374  +	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
          375  +	  done | \
          376  +	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
          377  +	      END { if (nonempty) { for (i in files) print i; }; }'`; \
          378  +	shift; \
          379  +	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
          380  +	  test -n "$$unique" || unique=$$empty_fix; \
          381  +	  if test $$# -gt 0; then \
          382  +	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
          383  +	      "$$@" $$unique; \
          384  +	  else \
          385  +	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
          386  +	      $$unique; \
          387  +	  fi; \
          388  +	fi
          389  +ctags: CTAGS
          390  +CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
          391  +		$(TAGS_FILES) $(LISP)
          392  +	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
          393  +	unique=`for i in $$list; do \
          394  +	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
          395  +	  done | \
          396  +	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
          397  +	      END { if (nonempty) { for (i in files) print i; }; }'`; \
          398  +	test -z "$(CTAGS_ARGS)$$unique" \
          399  +	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
          400  +	     $$unique
          401  +
          402  +GTAGS:
          403  +	here=`$(am__cd) $(top_builddir) && pwd` \
          404  +	  && $(am__cd) $(top_srcdir) \
          405  +	  && gtags -i $(GTAGS_ARGS) "$$here"
          406  +
          407  +distclean-tags:
          408  +	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
          409  +
          410  +check-TESTS: $(TESTS)
          411  +	@failed=0; all=0; xfail=0; xpass=0; skip=0; \
          412  +	srcdir=$(srcdir); export srcdir; \
          413  +	list=' $(TESTS) '; \
          414  +	$(am__tty_colors); \
          415  +	if test -n "$$list"; then \
          416  +	  for tst in $$list; do \
          417  +	    if test -f ./$$tst; then dir=./; \
          418  +	    elif test -f $$tst; then dir=; \
          419  +	    else dir="$(srcdir)/"; fi; \
          420  +	    if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \
          421  +	      all=`expr $$all + 1`; \
          422  +	      case " $(XFAIL_TESTS) " in \
          423  +	      *[\ \	]$$tst[\ \	]*) \
          424  +		xpass=`expr $$xpass + 1`; \
          425  +		failed=`expr $$failed + 1`; \
          426  +		col=$$red; res=XPASS; \
          427  +	      ;; \
          428  +	      *) \
          429  +		col=$$grn; res=PASS; \
          430  +	      ;; \
          431  +	      esac; \
          432  +	    elif test $$? -ne 77; then \
          433  +	      all=`expr $$all + 1`; \
          434  +	      case " $(XFAIL_TESTS) " in \
          435  +	      *[\ \	]$$tst[\ \	]*) \
          436  +		xfail=`expr $$xfail + 1`; \
          437  +		col=$$lgn; res=XFAIL; \
          438  +	      ;; \
          439  +	      *) \
          440  +		failed=`expr $$failed + 1`; \
          441  +		col=$$red; res=FAIL; \
          442  +	      ;; \
          443  +	      esac; \
          444  +	    else \
          445  +	      skip=`expr $$skip + 1`; \
          446  +	      col=$$blu; res=SKIP; \
          447  +	    fi; \
          448  +	    echo "$${col}$$res$${std}: $$tst"; \
          449  +	  done; \
          450  +	  if test "$$all" -eq 1; then \
          451  +	    tests="test"; \
          452  +	    All=""; \
          453  +	  else \
          454  +	    tests="tests"; \
          455  +	    All="All "; \
          456  +	  fi; \
          457  +	  if test "$$failed" -eq 0; then \
          458  +	    if test "$$xfail" -eq 0; then \
          459  +	      banner="$$All$$all $$tests passed"; \
          460  +	    else \
          461  +	      if test "$$xfail" -eq 1; then failures=failure; else failures=failures; fi; \
          462  +	      banner="$$All$$all $$tests behaved as expected ($$xfail expected $$failures)"; \
          463  +	    fi; \
          464  +	  else \
          465  +	    if test "$$xpass" -eq 0; then \
          466  +	      banner="$$failed of $$all $$tests failed"; \
          467  +	    else \
          468  +	      if test "$$xpass" -eq 1; then passes=pass; else passes=passes; fi; \
          469  +	      banner="$$failed of $$all $$tests did not behave as expected ($$xpass unexpected $$passes)"; \
          470  +	    fi; \
          471  +	  fi; \
          472  +	  dashes="$$banner"; \
          473  +	  skipped=""; \
          474  +	  if test "$$skip" -ne 0; then \
          475  +	    if test "$$skip" -eq 1; then \
          476  +	      skipped="($$skip test was not run)"; \
          477  +	    else \
          478  +	      skipped="($$skip tests were not run)"; \
          479  +	    fi; \
          480  +	    test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \
          481  +	      dashes="$$skipped"; \
          482  +	  fi; \
          483  +	  report=""; \
          484  +	  if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \
          485  +	    report="Please report to $(PACKAGE_BUGREPORT)"; \
          486  +	    test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \
          487  +	      dashes="$$report"; \
          488  +	  fi; \
          489  +	  dashes=`echo "$$dashes" | sed s/./=/g`; \
          490  +	  if test "$$failed" -eq 0; then \
          491  +	    col="$$grn"; \
          492  +	  else \
          493  +	    col="$$red"; \
          494  +	  fi; \
          495  +	  echo "$${col}$$dashes$${std}"; \
          496  +	  echo "$${col}$$banner$${std}"; \
          497  +	  test -z "$$skipped" || echo "$${col}$$skipped$${std}"; \
          498  +	  test -z "$$report" || echo "$${col}$$report$${std}"; \
          499  +	  echo "$${col}$$dashes$${std}"; \
          500  +	  test "$$failed" -eq 0; \
          501  +	else :; fi
          502  +
          503  +distdir: $(DISTFILES)
          504  +	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
          505  +	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
          506  +	list='$(DISTFILES)'; \
          507  +	  dist_files=`for file in $$list; do echo $$file; done | \
          508  +	  sed -e "s|^$$srcdirstrip/||;t" \
          509  +	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
          510  +	case $$dist_files in \
          511  +	  */*) $(MKDIR_P) `echo "$$dist_files" | \
          512  +			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
          513  +			   sort -u` ;; \
          514  +	esac; \
          515  +	for file in $$dist_files; do \
          516  +	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
          517  +	  if test -d $$d/$$file; then \
          518  +	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
          519  +	    if test -d "$(distdir)/$$file"; then \
          520  +	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
          521  +	    fi; \
          522  +	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
          523  +	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
          524  +	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
          525  +	    fi; \
          526  +	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
          527  +	  else \
          528  +	    test -f "$(distdir)/$$file" \
          529  +	    || cp -p $$d/$$file "$(distdir)/$$file" \
          530  +	    || exit 1; \
          531  +	  fi; \
          532  +	done
          533  +check-am: all-am
          534  +	$(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS)
          535  +	$(MAKE) $(AM_MAKEFLAGS) check-TESTS
          536  +check: check-am
          537  +all-am: Makefile
          538  +installdirs:
          539  +install: install-am
          540  +install-exec: install-exec-am
          541  +install-data: install-data-am
          542  +uninstall: uninstall-am
          543  +
          544  +install-am: all-am
          545  +	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
          546  +
          547  +installcheck: installcheck-am
          548  +install-strip:
          549  +	if test -z '$(STRIP)'; then \
          550  +	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
          551  +	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
          552  +	      install; \
          553  +	else \
          554  +	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
          555  +	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
          556  +	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
          557  +	fi
          558  +mostlyclean-generic:
          559  +	-test -z "$(MOSTLYCLEANFILES)" || rm -f $(MOSTLYCLEANFILES)
          560  +
          561  +clean-generic:
          562  +
          563  +distclean-generic:
          564  +	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
          565  +	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
          566  +
          567  +maintainer-clean-generic:
          568  +	@echo "This command is intended for maintainers to use"
          569  +	@echo "it deletes files that may require special tools to rebuild."
          570  +clean: clean-am
          571  +
          572  +clean-am: clean-checkPROGRAMS clean-generic clean-libtool \
          573  +	mostlyclean-am
          574  +
          575  +distclean: distclean-am
          576  +	-rm -rf ./$(DEPDIR)
          577  +	-rm -f Makefile
          578  +distclean-am: clean-am distclean-compile distclean-generic \
          579  +	distclean-tags
          580  +
          581  +dvi: dvi-am
          582  +
          583  +dvi-am:
          584  +
          585  +html: html-am
          586  +
          587  +html-am:
          588  +
          589  +info: info-am
          590  +
          591  +info-am:
          592  +
          593  +install-data-am:
          594  +
          595  +install-dvi: install-dvi-am
          596  +
          597  +install-dvi-am:
          598  +
          599  +install-exec-am:
          600  +
          601  +install-html: install-html-am
          602  +
          603  +install-html-am:
          604  +
          605  +install-info: install-info-am
          606  +
          607  +install-info-am:
          608  +
          609  +install-man:
          610  +
          611  +install-pdf: install-pdf-am
          612  +
          613  +install-pdf-am:
          614  +
          615  +install-ps: install-ps-am
          616  +
          617  +install-ps-am:
          618  +
          619  +installcheck-am:
          620  +
          621  +maintainer-clean: maintainer-clean-am
          622  +	-rm -rf ./$(DEPDIR)
          623  +	-rm -f Makefile
          624  +maintainer-clean-am: distclean-am maintainer-clean-generic
          625  +
          626  +mostlyclean: mostlyclean-am
          627  +
          628  +mostlyclean-am: mostlyclean-compile mostlyclean-generic \
          629  +	mostlyclean-libtool
          630  +
          631  +pdf: pdf-am
          632  +
          633  +pdf-am:
          634  +
          635  +ps: ps-am
          636  +
          637  +ps-am:
          638  +
          639  +uninstall-am:
          640  +
          641  +.MAKE: check-am install-am install-strip
          642  +
          643  +.PHONY: CTAGS GTAGS all all-am check check-TESTS check-am clean \
          644  +	clean-checkPROGRAMS clean-generic clean-libtool ctags \
          645  +	distclean distclean-compile distclean-generic \
          646  +	distclean-libtool distclean-tags distdir dvi dvi-am html \
          647  +	html-am info info-am install install-am install-data \
          648  +	install-data-am install-dvi install-dvi-am install-exec \
          649  +	install-exec-am install-html install-html-am install-info \
          650  +	install-info-am install-man install-pdf install-pdf-am \
          651  +	install-ps install-ps-am install-strip installcheck \
          652  +	installcheck-am installdirs maintainer-clean \
          653  +	maintainer-clean-generic mostlyclean mostlyclean-compile \
          654  +	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
          655  +	tags uninstall uninstall-am
          656  +
          657  +
          658  +# Tell versions [3.59,3.63) of GNU make to not export all variables.
          659  +# Otherwise a system limit (for SysV at least) may be exceeded.
          660  +.NOEXPORT:

Added test/check_badopen.c.

            1  +/*
            2  +
            3  + check_badopen.c -- RasterLite Test Case
            4  +
            5  + Author: Brad Hards <bradh@frogmouth.net>
            6  +
            7  + ------------------------------------------------------------------------------
            8  + 
            9  + Version: MPL 1.1/GPL 2.0/LGPL 2.1
           10  + 
           11  + The contents of this file are subject to the Mozilla Public License Version
           12  + 1.1 (the "License"); you may not use this file except in compliance with
           13  + the License. You may obtain a copy of the License at
           14  + http://www.mozilla.org/MPL/
           15  + 
           16  +Software distributed under the License is distributed on an "AS IS" basis,
           17  +WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
           18  +for the specific language governing rights and limitations under the
           19  +License.
           20  +
           21  +The Original Code is the SpatiaLite library
           22  +
           23  +The Initial Developer of the Original Code is Alessandro Furieri
           24  + 
           25  +Portions created by the Initial Developer are Copyright (C) 2011
           26  +the Initial Developer. All Rights Reserved.
           27  +
           28  +Contributor(s):
           29  +Brad Hards <bradh@frogmouth.net>
           30  +
           31  +Alternatively, the contents of this file may be used under the terms of
           32  +either the GNU General Public License Version 2 or later (the "GPL"), or
           33  +the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
           34  +in which case the provisions of the GPL or the LGPL are applicable instead
           35  +of those above. If you wish to allow use of your version of this file only
           36  +under the terms of either the GPL or the LGPL, and not to allow others to
           37  +use your version of this file under the terms of the MPL, indicate your
           38  +decision by deleting the provisions above and replace them with the notice
           39  +and other provisions required by the GPL or the LGPL. If you do not delete
           40  +the provisions above, a recipient may use your version of this file under
           41  +the terms of any one of the MPL, the GPL or the LGPL.
           42  + 
           43  +*/
           44  +#include <stdlib.h>
           45  +#include <stdio.h>
           46  +#include <string.h>
           47  +
           48  +#include "config.h"
           49  +
           50  +#ifdef SPATIALITE_AMALGAMATION
           51  +#include <spatialite/sqlite3.h>
           52  +#else
           53  +#include <sqlite3.h>
           54  +#endif
           55  +
           56  +#include <spatialite/gaiaexif.h>
           57  +
           58  +#include "../headers/rasterlite.h"
           59  +
           60  +int main (void)
           61  +{
           62  +    void *handle = NULL;
           63  +    int result;
           64  +    unsigned char *raster;
           65  +    int size;
           66  +    
           67  +    handle = rasterliteOpen ("no such file.sqlite", "globe");
           68  +    if ( ! rasterliteIsError(handle))
           69  +    {
           70  +	/* some unexpected error occurred */
           71  +	printf("ERROR: expected failure for bad filename\n");
           72  +	return -1;
           73  +    }
           74  +    rasterliteClose(handle);
           75  +
           76  +    handle = rasterliteOpen ("globe.sqlite", "no such entries");
           77  +    if ( ! rasterliteIsError(handle))
           78  +    {
           79  +	/* some unexpected error occurred */
           80  +	printf("ERROR: expected failure for bad table\n");
           81  +	return -2;
           82  +    }
           83  +    
           84  +    result = rasterliteGetRaster(handle, 133.0, -40.0, 0.36, 256, 256, GAIA_JPEG_BLOB, 50, (void**)&raster, &size);
           85  +    if (result != RASTERLITE_ERROR)
           86  +    {
           87  +	printf("ERROR: GetRaster bad handle unexpected result: %i\n", result);
           88  +	rasterliteClose(handle);
           89  +	return -3;
           90  +    }
           91  +    if (strcmp(rasterliteGetLastError(handle), "invalid datasource") != 0)
           92  +    {
           93  +	printf("ERROR: last error mismatch: %s\n", rasterliteGetLastError(handle));
           94  +	rasterliteClose(handle);
           95  +	return -4;
           96  +    }
           97  +    
           98  +    rasterliteClose(handle);
           99  +    
          100  +    return 0;
          101  +}

Added test/check_colours.c.

            1  +/*
            2  +
            3  + check_colours.c -- RasterLite Test Case
            4  +
            5  + Author: Brad Hards <bradh@frogmouth.net>
            6  +
            7  + ------------------------------------------------------------------------------
            8  + 
            9  + Version: MPL 1.1/GPL 2.0/LGPL 2.1
           10  + 
           11  + The contents of this file are subject to the Mozilla Public License Version
           12  + 1.1 (the "License"); you may not use this file except in compliance with
           13  + the License. You may obtain a copy of the License at
           14  + http://www.mozilla.org/MPL/
           15  + 
           16  +Software distributed under the License is distributed on an "AS IS" basis,
           17  +WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
           18  +for the specific language governing rights and limitations under the
           19  +License.
           20  +
           21  +The Original Code is the SpatiaLite library
           22  +
           23  +The Initial Developer of the Original Code is Alessandro Furieri
           24  + 
           25  +Portions created by the Initial Developer are Copyright (C) 2011
           26  +the Initial Developer. All Rights Reserved.
           27  +
           28  +Contributor(s):
           29  +Brad Hards <bradh@frogmouth.net>
           30  +
           31  +Alternatively, the contents of this file may be used under the terms of
           32  +either the GNU General Public License Version 2 or later (the "GPL"), or
           33  +the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
           34  +in which case the provisions of the GPL or the LGPL are applicable instead
           35  +of those above. If you wish to allow use of your version of this file only
           36  +under the terms of either the GPL or the LGPL, and not to allow others to
           37  +use your version of this file under the terms of the MPL, indicate your
           38  +decision by deleting the provisions above and replace them with the notice
           39  +and other provisions required by the GPL or the LGPL. If you do not delete
           40  +the provisions above, a recipient may use your version of this file under
           41  +the terms of any one of the MPL, the GPL or the LGPL.
           42  + 
           43  +*/
           44  +#include <stdlib.h>
           45  +#include <stdio.h>
           46  +#include <string.h>
           47  +
           48  +#include "config.h"
           49  +
           50  +#ifdef SPATIALITE_AMALGAMATION
           51  +#include <spatialite/sqlite3.h>
           52  +#else
           53  +#include <sqlite3.h>
           54  +#endif
           55  +
           56  +#include "../headers/rasterlite.h"
           57  +
           58  +int main (void)
           59  +{
           60  +    void *handle = NULL;
           61  +    int hasTransparentColour = RASTERLITE_OK;
           62  +    int hasBackgroundColour = RASTERLITE_OK;
           63  +    unsigned char red = 128;
           64  +    unsigned char green = 128;
           65  +    unsigned char blue = 128;
           66  +    
           67  +    handle = rasterliteOpen ("globe.sqlite", "globe");
           68  +    if (rasterliteIsError(handle))
           69  +    {
           70  +	/* some unexpected error occurred */
           71  +	printf("ERROR: rasterliteOpen %s\n", rasterliteGetLastError(handle));
           72  +	rasterliteClose(handle);
           73  +	return -1;
           74  +    }
           75  +    
           76  +    hasTransparentColour = rasterliteHasTransparentColor(handle);
           77  +    if (hasTransparentColour != RASTERLITE_ERROR)
           78  +    {
           79  +	printf("ERROR: unexpected transparent colour result: %i\n", hasTransparentColour);
           80  +	rasterliteClose(handle);
           81  +	return -2;
           82  +    }
           83  +    
           84  +    /* no colour yet, so we expect defaults */
           85  +    hasTransparentColour = rasterliteGetTransparentColor(handle, &red, &green, &blue);
           86  +    if (hasTransparentColour != RASTERLITE_ERROR)
           87  +    {
           88  +	printf("ERROR: unexpected default get transparent colour result: %i\n", hasTransparentColour);
           89  +	rasterliteClose(handle);
           90  +	return -3;
           91  +    }
           92  +    if ((red != 0) || (green != 0) || (blue != 0))
           93  +    {
           94  +	printf("ERROR: unexpected default values, red = %i, green = %i, blue = %i\n", red, green, blue);
           95  +	rasterliteClose(handle);
           96  +	return -4;
           97  +    }
           98  +    
           99  +    /* set the colour */
          100  +    rasterliteSetTransparentColor(handle, 64, 128, 172);
          101  +    
          102  +    /* check again */
          103  +    hasTransparentColour = rasterliteHasTransparentColor(handle);
          104  +    if (hasTransparentColour != RASTERLITE_OK)
          105  +    {
          106  +	printf("ERROR: unexpected transparent colour result2: %i\n", hasTransparentColour);
          107  +	rasterliteClose(handle);
          108  +	return -5;
          109  +    }
          110  +    hasTransparentColour = rasterliteGetTransparentColor(handle, &red, &green, &blue);
          111  +    if (hasTransparentColour != RASTERLITE_OK)
          112  +    {
          113  +	printf("ERROR: unexpected default get transparent colour result2: %i\n", hasTransparentColour);
          114  +	rasterliteClose(handle);
          115  +	return -6;
          116  +    }
          117  +    if ((red != 64) || (green != 128) || (blue != 172))
          118  +    {
          119  +	printf("ERROR: unexpected default values2, red = %i, green = %i, blue = %i\n", red, green, blue);
          120  +	rasterliteClose(handle);
          121  +	return -7;
          122  +    }
          123  +    
          124  +    /* check default background */
          125  +    hasBackgroundColour = rasterliteGetBackgroundColor(handle, &red, &green, &blue);
          126  +    if (hasBackgroundColour != RASTERLITE_OK)
          127  +    {
          128  +	printf("ERROR: unexpected default get background colour result: %i\n", hasBackgroundColour);
          129  +	rasterliteClose(handle);
          130  +	return -8;
          131  +    }
          132  +    if ((red != 0) || (green != 0) || (blue != 0))
          133  +    {
          134  +	printf("ERROR: unexpected background default values, red = %i, green = %i, blue = %i\n", red, green, blue);
          135  +	rasterliteClose(handle);
          136  +	return -9;
          137  +    }
          138  +    
          139  +    /* set background colour */
          140  +    rasterliteSetBackgroundColor(handle, 56, 103, 202);
          141  +
          142  +    /* check again */
          143  +    hasBackgroundColour = rasterliteGetBackgroundColor(handle, &red, &green, &blue);
          144  +    if (hasBackgroundColour != RASTERLITE_OK)
          145  +    {
          146  +	printf("ERROR: unexpected default get background colour result2: %i\n", hasBackgroundColour);
          147  +	rasterliteClose(handle);
          148  +	return -10;
          149  +    }
          150  +    if ((red != 56) || (green != 103) || (blue != 202))
          151  +    {
          152  +	printf("ERROR: unexpected background values, red = %i, green = %i, blue = %i\n", red, green, blue);
          153  +	rasterliteClose(handle);
          154  +	return -11;
          155  +    }
          156  +    
          157  +    rasterliteClose(handle);
          158  +    return 0;
          159  +}

Added test/check_metadata.c.

            1  +/*
            2  +
            3  + check_metadata.c -- RasterLite Test Case
            4  +
            5  + Author: Brad Hards <bradh@frogmouth.net>
            6  +
            7  + ------------------------------------------------------------------------------
            8  + 
            9  + Version: MPL 1.1/GPL 2.0/LGPL 2.1
           10  + 
           11  + The contents of this file are subject to the Mozilla Public License Version
           12  + 1.1 (the "License"); you may not use this file except in compliance with
           13  + the License. You may obtain a copy of the License at
           14  + http://www.mozilla.org/MPL/
           15  + 
           16  +Software distributed under the License is distributed on an "AS IS" basis,
           17  +WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
           18  +for the specific language governing rights and limitations under the
           19  +License.
           20  +
           21  +The Original Code is the SpatiaLite library
           22  +
           23  +The Initial Developer of the Original Code is Alessandro Furieri
           24  + 
           25  +Portions created by the Initial Developer are Copyright (C) 2011
           26  +the Initial Developer. All Rights Reserved.
           27  +
           28  +Contributor(s):
           29  +Brad Hards <bradh@frogmouth.net>
           30  +
           31  +Alternatively, the contents of this file may be used under the terms of
           32  +either the GNU General Public License Version 2 or later (the "GPL"), or
           33  +the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
           34  +in which case the provisions of the GPL or the LGPL are applicable instead
           35  +of those above. If you wish to allow use of your version of this file only
           36  +under the terms of either the GPL or the LGPL, and not to allow others to
           37  +use your version of this file under the terms of the MPL, indicate your
           38  +decision by deleting the provisions above and replace them with the notice
           39  +and other provisions required by the GPL or the LGPL. If you do not delete
           40  +the provisions above, a recipient may use your version of this file under
           41  +the terms of any one of the MPL, the GPL or the LGPL.
           42  + 
           43  +*/
           44  +#include <stdlib.h>
           45  +#include <stdio.h>
           46  +#include <string.h>
           47  +
           48  +#include "config.h"
           49  +
           50  +#ifdef SPATIALITE_AMALGAMATION
           51  +#include <spatialite/sqlite3.h>
           52  +#else
           53  +#include <sqlite3.h>
           54  +#endif
           55  +
           56  +#include <spatialite.h>
           57  +
           58  +#include "../headers/rasterlite.h"
           59  +
           60  +int main (void)
           61  +{
           62  +    void *handle = NULL;
           63  +    int levels = 0;
           64  +    const char *prefixName = NULL;
           65  +    double min_x;
           66  +    double min_y;
           67  +    double max_x;
           68  +    double max_y;
           69  +    int srid;
           70  +    const char *auth_name;
           71  +    int auth_srid;
           72  +    const char *ref_sys_name;
           73  +    const char *proj4text;
           74  +	
           75  +    handle = rasterliteOpen ("globe.sqlite", "globe");
           76  +    if (rasterliteIsError(handle))
           77  +    {
           78  +	/* some unexpected error occurred */
           79  +	printf("ERROR: rasterliteOpen %s\n", rasterliteGetLastError(handle));
           80  +	rasterliteClose(handle);
           81  +	return -1;
           82  +    }
           83  +    
           84  +    levels = rasterliteGetLevels(handle);
           85  +    if (levels != 4)
           86  +    {
           87  +	printf("ERROR: unexpected levels count: %i\n", levels);
           88  +	rasterliteClose(handle);
           89  +	return -2;
           90  +    }
           91  +
           92  +    prefixName = rasterliteGetTablePrefix(handle);
           93  +    if (strcmp(prefixName, "globe") != 0)
           94  +    {
           95  +	printf("ERROR: unexpected prefix: %s\n", prefixName);
           96  +	rasterliteClose(handle);
           97  +	return -3;
           98  +    }
           99  +    
          100  +    if (rasterliteGetExtent(handle, &min_x, &min_y, &max_x, &max_y) != RASTERLITE_OK)
          101  +    {
          102  +	printf("ERROR: rasterliteGetExtent %s\n", rasterliteGetLastError(handle));
          103  +	rasterliteClose(handle);
          104  +	return -4;
          105  +    }
          106  +    if (min_x != -180.0)
          107  +    {
          108  +	printf("ERROR: bad minimum X extent: %f", min_x);
          109  +	rasterliteClose(handle);
          110  +	return -5;
          111  +    }
          112  +    if (max_x != 180.0)
          113  +    {
          114  +	printf("ERROR: bad maximum X extent: %f", max_x);
          115  +	rasterliteClose(handle);
          116  +	return -6;
          117  +    }
          118  +    if (min_y != -90.0)
          119  +    {
          120  +	printf("ERROR: bad minimum Y extent: %f", min_y);
          121  +	rasterliteClose(handle);
          122  +	return -7;
          123  +    }
          124  +    if (max_x != 180.0)
          125  +    {
          126  +	printf("ERROR: bad maximum Y extent: %f", max_y);
          127  +	rasterliteClose(handle);
          128  +	return -8;
          129  +    }
          130  +    
          131  +    if (rasterliteGetSrid(handle, &srid, &auth_name, &auth_srid, &ref_sys_name, &proj4text) != RASTERLITE_OK)
          132  +    {
          133  +	printf("ERROR: rasterliteGetSrid %s\n", rasterliteGetLastError(handle));
          134  +	rasterliteClose(handle);
          135  +	return -9;
          136  +    }
          137  +    if (srid != 4326)
          138  +    {
          139  +	printf("ERROR: unexpected SRID: %i\n", srid);
          140  +	rasterliteClose(handle);
          141  +	return -10;
          142  +    }
          143  +    if (strcmp(auth_name, "epsg") !=0)
          144  +    {
          145  +	printf("ERROR: unexpected SRID authority: %s\n", auth_name);
          146  +	rasterliteClose(handle);
          147  +	return -11;
          148  +    }
          149  +    if (auth_srid != 4326)
          150  +    {
          151  +	printf("ERROR: unexpected Authority SRID: %i\n", auth_srid);
          152  +	rasterliteClose(handle);
          153  +	return -12;
          154  +    }
          155  +    if (strcmp(ref_sys_name, "WGS 84") != 0)
          156  +    {
          157  +	printf("ERROR: unexpected Ref System name: %s\n", ref_sys_name);
          158  +	rasterliteClose(handle);
          159  +	return -13;
          160  +    }
          161  +    if (strcmp(proj4text, "+proj=longlat +datum=WGS84 +no_defs") != 0)
          162  +    {
          163  +	printf("ERROR: unexpected PROJ.4 text: %s\n", proj4text);
          164  +	rasterliteClose(handle);
          165  +	return -14;
          166  +    }
          167  +    
          168  +    if (strcmp(rasterliteGetSqliteVersion(handle), sqlite3_libversion()) != 0)
          169  +    {
          170  +	printf("ERROR: unexpected sqlite version: %s\n", rasterliteGetSqliteVersion(handle));
          171  +	rasterliteClose(handle);
          172  +	return -15;
          173  +    }
          174  +    
          175  +    if (strcmp(rasterliteGetSpatialiteVersion(handle), spatialite_version()) != 0)
          176  +    {
          177  +	printf("ERROR: unexpected spatialite version: %s\n", rasterliteGetSpatialiteVersion(handle));
          178  +	rasterliteClose(handle);
          179  +	return -16;
          180  +    }
          181  +    
          182  +    if (strcmp(rasterliteGetPath(handle), "globe.sqlite") != 0)
          183  +    {
          184  +	printf("ERROR: unexpected path: %s\n", rasterliteGetPath(handle));
          185  +	rasterliteClose(handle);
          186  +	return -17;
          187  +    }
          188  +    
          189  +    rasterliteClose(handle);
          190  +    return 0;
          191  +}

Added test/check_openclose.c.

            1  +/*
            2  +
            3  + check_openclose.c -- RasterLite Test Case
            4  +
            5  + Author: Brad Hards <bradh@frogmouth.net>
            6  +
            7  + ------------------------------------------------------------------------------
            8  + 
            9  + Version: MPL 1.1/GPL 2.0/LGPL 2.1
           10  + 
           11  + The contents of this file are subject to the Mozilla Public License Version
           12  + 1.1 (the "License"); you may not use this file except in compliance with
           13  + the License. You may obtain a copy of the License at
           14  + http://www.mozilla.org/MPL/
           15  + 
           16  +Software distributed under the License is distributed on an "AS IS" basis,
           17  +WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
           18  +for the specific language governing rights and limitations under the
           19  +License.
           20  +
           21  +The Original Code is the SpatiaLite library
           22  +
           23  +The Initial Developer of the Original Code is Alessandro Furieri
           24  + 
           25  +Portions created by the Initial Developer are Copyright (C) 2011
           26  +the Initial Developer. All Rights Reserved.
           27  +
           28  +Contributor(s):
           29  +Brad Hards <bradh@frogmouth.net>
           30  +
           31  +Alternatively, the contents of this file may be used under the terms of
           32  +either the GNU General Public License Version 2 or later (the "GPL"), or
           33  +the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
           34  +in which case the provisions of the GPL or the LGPL are applicable instead
           35  +of those above. If you wish to allow use of your version of this file only
           36  +under the terms of either the GPL or the LGPL, and not to allow others to
           37  +use your version of this file under the terms of the MPL, indicate your
           38  +decision by deleting the provisions above and replace them with the notice
           39  +and other provisions required by the GPL or the LGPL. If you do not delete
           40  +the provisions above, a recipient may use your version of this file under
           41  +the terms of any one of the MPL, the GPL or the LGPL.
           42  + 
           43  +*/
           44  +#include <stdlib.h>
           45  +#include <stdio.h>
           46  +#include <string.h>
           47  +
           48  +#include "config.h"
           49  +
           50  +#ifdef SPATIALITE_AMALGAMATION
           51  +#include <spatialite/sqlite3.h>
           52  +#else
           53  +#include <sqlite3.h>
           54  +#endif
           55  +
           56  +#include "../headers/rasterlite.h"
           57  +
           58  +int main (void)
           59  +{
           60  +    void *handle = NULL;
           61  +    handle = rasterliteOpen ("globe.sqlite", "globe");
           62  +    if (rasterliteIsError(handle))
           63  +    {
           64  +	/* some unexpected error occurred */
           65  +	printf("ERROR: %s\n", rasterliteGetLastError(handle));
           66  +	rasterliteClose(handle);
           67  +	return -1;
           68  +    }
           69  +    
           70  +    rasterliteClose(handle);
           71  +    return 0;
           72  +}

Added test/check_rastergen.c.

            1  +/*
            2  +
            3  + check_rastergen.c -- RasterLite Test Case
            4  +
            5  + Author: Brad Hards <bradh@frogmouth.net>
            6  +
            7  + ------------------------------------------------------------------------------
            8  + 
            9  + Version: MPL 1.1/GPL 2.0/LGPL 2.1
           10  + 
           11  + The contents of this file are subject to the Mozilla Public License Version
           12  + 1.1 (the "License"); you may not use this file except in compliance with
           13  + the License. You may obtain a copy of the License at
           14  + http://www.mozilla.org/MPL/
           15  + 
           16  +Software distributed under the License is distributed on an "AS IS" basis,
           17  +WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
           18  +for the specific language governing rights and limitations under the
           19  +License.
           20  +
           21  +The Original Code is the SpatiaLite library
           22  +
           23  +The Initial Developer of the Original Code is Alessandro Furieri
           24  + 
           25  +Portions created by the Initial Developer are Copyright (C) 2011
           26  +the Initial Developer. All Rights Reserved.
           27  +
           28  +Contributor(s):
           29  +Brad Hards <bradh@frogmouth.net>
           30  +
           31  +Alternatively, the contents of this file may be used under the terms of
           32  +either the GNU General Public License Version 2 or later (the "GPL"), or
           33  +the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
           34  +in which case the provisions of the GPL or the LGPL are applicable instead
           35  +of those above. If you wish to allow use of your version of this file only
           36  +under the terms of either the GPL or the LGPL, and not to allow others to
           37  +use your version of this file under the terms of the MPL, indicate your
           38  +decision by deleting the provisions above and replace them with the notice
           39  +and other provisions required by the GPL or the LGPL. If you do not delete
           40  +the provisions above, a recipient may use your version of this file under
           41  +the terms of any one of the MPL, the GPL or the LGPL.
           42  + 
           43  +*/
           44  +#include <stdlib.h>
           45  +#include <stdio.h>
           46  +#include <string.h>
           47  +
           48  +#include "config.h"
           49  +
           50  +#ifdef SPATIALITE_AMALGAMATION
           51  +#include <spatialite/sqlite3.h>
           52  +#else
           53  +#include <sqlite3.h>
           54  +#endif
           55  +
           56  +#include <spatialite/gaiaexif.h>
           57  +
           58  +#include "../headers/rasterlite.h"
           59  +
           60  +int main (void)
           61  +{
           62  +    void *handle = NULL;
           63  +    int result;
           64  +    unsigned char *raster;
           65  +    unsigned char *refraster;
           66  +    int size;
           67  +    int sizeref = 4540;
           68  +    int sizemin = sizeref;
           69  +    FILE *reffilestream;
           70  +    int i;
           71  +    
           72  +    handle = rasterliteOpen ("globe.sqlite", "globe");
           73  +    if (rasterliteIsError(handle))
           74  +    {
           75  +	/* some unexpected error occurred */
           76  +	printf("ERROR: rasterliteOpen %s\n", rasterliteGetLastError(handle));
           77  +	rasterliteClose(handle);
           78  +	return -1;
           79  +    }
           80  +    
           81  +    
           82  +    result = rasterliteGetRaster(handle, 133.0, -40.0, 0.36, 256, 256, GAIA_JPEG_BLOB, 50, (void**)&raster, &size);
           83  +    if (result != RASTERLITE_OK)
           84  +    {
           85  +	printf("ERROR: GetRaster JPEG 50 %s\n", rasterliteGetLastError(handle));
           86  +	rasterliteClose(handle);
           87  +	return -2;
           88  +    }
           89  +    if (sizemin > size)
           90  +        sizemin = size;
           91  + 
           92  +    reffilestream = fopen("jpeg50ref.jpg", "rb");
           93  +    refraster = malloc(sizeref);
           94  +    if ((int) fread (refraster, 1, sizeref, reffilestream) != sizeref)
           95  +    {
           96  +	fprintf (stderr, "read error on jpeg50ref.jpg reference file\n");
           97  +	rasterliteClose(handle);
           98  +	return -3;
           99  +    }
          100  +    fclose (reffilestream);
          101  +    
          102  +    for (i = 0; i < sizemin; i++)
          103  +    {
          104  +        if (i == 63 || i == 64)
          105  +        {
          106  +        /* skipping libjpeg version number */
          107  +            continue;
          108  +        }
          109  +	if (refraster[i] != raster[i])
          110  +	{
          111  +	    printf("ERROR: jpeg50 reference image mismatch at offset %i\n", i);
          112  +	    rasterliteClose(handle);
          113  +	    free(raster);
          114  +	    free(refraster);
          115  +	    return -4;
          116  +	}
          117  +    }
          118  +    free(raster);
          119  +    free(refraster);
          120  +  
          121  +    /* TODO: we could generate reference images and do the comparison for each case */
          122  +    result = rasterliteGetRaster(handle, 133.0, -40.0, 0.36, 256, 256, GAIA_EXIF_BLOB, 50, (void**)&raster, &size);
          123  +    if ((result != RASTERLITE_OK) || (size != 4540))
          124  +    {
          125  +	printf("ERROR: GetRaster EXIF 50 %s, %i bytes\n", rasterliteGetLastError(handle), size);
          126  +	rasterliteClose(handle);
          127  +	return -5;
          128  +    }
          129  +    free(raster);
          130  +	
          131  +    result = rasterliteGetRaster(handle, 133.0, -40.0, 0.36, 256, 256, GAIA_EXIF_GPS_BLOB, 50, (void**)&raster, &size);
          132  +    if ((result != RASTERLITE_OK) || (size != 4540))
          133  +    {
          134  +	printf("ERROR: GetRaster EXIF GPS 50 %s, %i bytes\n", rasterliteGetLastError(handle), size);
          135  +	rasterliteClose(handle);
          136  +	return -6;
          137  +    }
          138  +    free(raster);
          139  +    
          140  +    result = rasterliteGetRaster(handle, 133.0, -40.0, 0.36, 256, 256, GAIA_PNG_BLOB, 0, (void**)&raster, &size);
          141  +    if ((result != RASTERLITE_OK) || (size != 43280))
          142  +    {
          143  +	printf("ERROR: GetRaster PNG %s, %i bytes\n", rasterliteGetLastError(handle), size);
          144  +	rasterliteClose(handle);
          145  +	return -7;
          146  +    }
          147  +    free(raster);
          148  +    
          149  +    /* very small blob */
          150  +    result = rasterliteGetRaster(handle, 133.0, -40.0, 0.36, 64, 64, GAIA_PNG_BLOB, 0, (void**)&raster, &size);
          151  +    if ((result != RASTERLITE_OK) || (size != 3955))
          152  +    {
          153  +	printf("ERROR: GetRaster PNG 64 x 64 %s, %i bytes\n", rasterliteGetLastError(handle), size);
          154  +	rasterliteClose(handle);
          155  +	return -8;
          156  +    }
          157  +    free(raster);
          158  +    
          159  +    /* too small */
          160  +    result = rasterliteGetRaster(handle, 133.0, -40.0, 0.36, 63, 63, GAIA_PNG_BLOB, 0, (void**)&raster, &size);
          161  +    if (result != RASTERLITE_ERROR)
          162  +    {
          163  +	printf("ERROR: unexpected result for GetRaster PNG 63 x 63\n");
          164  +	rasterliteClose(handle);
          165  +	return -9;
          166  +    }
          167  +    free(raster);
          168  +    
          169  +    result = rasterliteGetRaster(handle, 133.0, -40.0, 0.36, 64, 63, GAIA_PNG_BLOB, 0, (void**)&raster, &size);
          170  +    if (result != RASTERLITE_ERROR)
          171  +    {
          172  +	printf("ERROR: unexpected result for GetRaster PNG 63 x 63\n");
          173  +	rasterliteClose(handle);
          174  +	return -10;
          175  +    }
          176  +    free(raster);
          177  +    
          178  +    /* too big */
          179  +    result = rasterliteGetRaster(handle, 133.0, -40.0, 0.36, 32769, 64, GAIA_PNG_BLOB, 0, (void**)&raster, &size);
          180  +    if (result != RASTERLITE_ERROR)
          181  +    {
          182  +	printf("ERROR: unexpected result for GetRaster PNG 32769 x 64\n");
          183  +	rasterliteClose(handle);
          184  +	return -11;
          185  +    }
          186  +    free(raster);
          187  +    
          188  +    result = rasterliteGetRaster(handle, 133.0, -40.0, 0.36, 1024, 32769, GAIA_PNG_BLOB, 0, (void**)&raster, &size);
          189  +    if (result != RASTERLITE_ERROR)
          190  +    {
          191  +	printf("ERROR: unexpected result for GetRaster PNG 64 x 32769\n");
          192  +	rasterliteClose(handle);
          193  +	return -12;
          194  +    }
          195  +    free(raster);
          196  +
          197  +    /* pretty big - you may wish to disable this test if you don't have much RAM */
          198  +    result = rasterliteGetRaster(handle, 133.0, -40.0, 0.36, 8192, 8192, GAIA_PNG_BLOB, 0, (void**)&raster, &size);
          199  +    if (result != RASTERLITE_OK)
          200  +    {
          201  +	printf("ERROR: unexpected result for GetRaster PNG 8192 x 8192\n");
          202  +	rasterliteClose(handle);
          203  +	return -13;
          204  +    }
          205  +    free(raster);
          206  +    
          207  +    result = rasterliteGetRaster(handle, 133.0, -40.0, 0.36, 256, 256, GAIA_RGB_ARRAY, 50, (void**)&raster, &size);
          208  +    if ((result != RASTERLITE_OK) || (size != (256*256*3)))
          209  +    {
          210  +	printf("ERROR: GetRaster RGB ARRAY 256 x 256 %s, %i bytes\n", rasterliteGetLastError(handle), size);
          211  +	rasterliteClose(handle);
          212  +	return -14;
          213  +    }
          214  +    free(raster);
          215  +    
          216  +#if 0
          217  +    /* this returns a "GIF compression error" */
          218  +    result = rasterliteGetRaster(handle, 133.0, -40.0, 0.36, 256, 256, GAIA_GIF_BLOB, 50, (void**)&raster, &size);
          219  +    if ((result != RASTERLITE_OK) || (size != 5000))
          220  +    {
          221  +	printf("ERROR: GetRaster GIF BLOB 256 x 256 %s, %i bytes\n", rasterliteGetLastError(handle), size);
          222  +	rasterliteClose(handle);
          223  +	return -15;
          224  +    }
          225  +    free(raster);
          226  +#endif
          227  +
          228  +    result = rasterliteGetRaster(handle, 133.0, -40.0, 0.36, 256, 256, GAIA_TIFF_BLOB, 50, (void**)&raster, &size);
          229  +    if ((result != RASTERLITE_OK) || (size != 198901))
          230  +    {
          231  +	printf("ERROR: GetRaster TIFF BLOB 256 x 256 %s, %i bytes\n", rasterliteGetLastError(handle), size);
          232  +	rasterliteClose(handle);
          233  +	return -15;
          234  +    }
          235  +    free(raster);
          236  +    rasterliteClose(handle);
          237  +    
          238  +    return 0;
          239  +}

Added test/check_resolution.c.

            1  +/*
            2  +
            3  + check_resolution.c -- RasterLite Test Case
            4  +
            5  + Author: Brad Hards <bradh@frogmouth.net>
            6  +
            7  + ------------------------------------------------------------------------------
            8  + 
            9  + Version: MPL 1.1/GPL 2.0/LGPL 2.1
           10  + 
           11  + The contents of this file are subject to the Mozilla Public License Version
           12  + 1.1 (the "License"); you may not use this file except in compliance with
           13  + the License. You may obtain a copy of the License at
           14  + http://www.mozilla.org/MPL/
           15  + 
           16  +Software distributed under the License is distributed on an "AS IS" basis,
           17  +WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
           18  +for the specific language governing rights and limitations under the
           19  +License.
           20  +
           21  +The Original Code is the SpatiaLite library
           22  +
           23  +The Initial Developer of the Original Code is Alessandro Furieri
           24  + 
           25  +Portions created by the Initial Developer are Copyright (C) 2011
           26  +the Initial Developer. All Rights Reserved.
           27  +
           28  +Contributor(s):
           29  +Brad Hards <bradh@frogmouth.net>
           30  +
           31  +Alternatively, the contents of this file may be used under the terms of
           32  +either the GNU General Public License Version 2 or later (the "GPL"), or
           33  +the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
           34  +in which case the provisions of the GPL or the LGPL are applicable instead
           35  +of those above. If you wish to allow use of your version of this file only
           36  +under the terms of either the GPL or the LGPL, and not to allow others to
           37  +use your version of this file under the terms of the MPL, indicate your
           38  +decision by deleting the provisions above and replace them with the notice
           39  +and other provisions required by the GPL or the LGPL. If you do not delete
           40  +the provisions above, a recipient may use your version of this file under
           41  +the terms of any one of the MPL, the GPL or the LGPL.
           42  + 
           43  +*/
           44  +#include <stdlib.h>
           45  +#include <stdio.h>
           46  +#include <string.h>
           47  +
           48  +#include "config.h"
           49  +
           50  +#ifdef SPATIALITE_AMALGAMATION
           51  +#include <spatialite/sqlite3.h>
           52  +#else
           53  +#include <sqlite3.h>
           54  +#endif
           55  +
           56  +#include "../headers/rasterlite.h"
           57  +
           58  +int main (void)
           59  +{
           60  +    void *handle = NULL;
           61  +    int levels = 0;
           62  +    double x_size = 0.0;
           63  +    double y_size = 0.0;
           64  +    int tile_count = 0;
           65  +
           66  +    handle = rasterliteOpen ("globe.sqlite", "globe");
           67  +    if (rasterliteIsError(handle))
           68  +    {
           69  +	/* some unexpected error occurred */
           70  +	printf("ERROR: rasterliteOpen %s\n", rasterliteGetLastError(handle));
           71  +	rasterliteClose(handle);
           72  +	return -1;
           73  +    }
           74  +    
           75  +    levels = rasterliteGetLevels(handle);
           76  +    if (levels != 4)
           77  +    {
           78  +	printf("ERROR: unexpected levels count: %i\n", levels);
           79  +	rasterliteClose(handle);
           80  +	return -2;
           81  +    }
           82  +
           83  +    rasterliteGetResolution(handle, 0, &x_size, &y_size, &tile_count);
           84  +    if ((x_size != 1.44) || (y_size != 1.44) || (tile_count != 1))
           85  +    {
           86  +	printf("ERROR: unexpected resolution at level 0: x_size = %f, y_size = %f, tiles = %i\n", x_size, y_size, tile_count);
           87  +	rasterliteClose(handle);
           88  +	return -3;
           89  +    }
           90  +    
           91  +    rasterliteGetResolution(handle, 1, &x_size, &y_size, &tile_count);
           92  +    if ((x_size != 0.72) || (y_size != 0.72) || (tile_count != 1))
           93  +    {
           94  +	printf("ERROR: unexpected resolution at level 1: x_size = %f, y_size = %f, tiles = %i\n", x_size, y_size, tile_count);
           95  +	rasterliteClose(handle);
           96  +	return -4;
           97  +    }
           98  +    
           99  +    rasterliteGetResolution(handle, 2, &x_size, &y_size, &tile_count);
          100  +    if ((x_size != 0.36) || (y_size != 0.36) || (tile_count != 4))
          101  +    {
          102  +	printf("ERROR: unexpected resolution at level 2: x_size = %f, y_size = %f, tiles = %i\n", x_size, y_size, tile_count);
          103  +	rasterliteClose(handle);
          104  +	return -5;
          105  +    }
          106  +
          107  +    rasterliteGetResolution(handle, 3, &x_size, &y_size, &tile_count);
          108  +    if ((x_size != 0.18) || (y_size != 0.18) || (tile_count != 16))
          109  +    {
          110  +	printf("ERROR: unexpected resolution at level 3: x_size = %f, y_size = %f, tiles = %i\n", x_size, y_size, tile_count);
          111  +	rasterliteClose(handle);
          112  +	return -6;
          113  +    }
          114  +    
          115  +    rasterliteClose(handle);
          116  +    return 0;
          117  +}

Added test/check_version.c.

            1  +/*
            2  +
            3  + check_version.c -- RasterLite Test Case
            4  +
            5  + Author: Brad Hards <bradh@frogmouth.net>
            6  +
            7  + ------------------------------------------------------------------------------
            8  + 
            9  + Version: MPL 1.1/GPL 2.0/LGPL 2.1
           10  + 
           11  + The contents of this file are subject to the Mozilla Public License Version
           12  + 1.1 (the "License"); you may not use this file except in compliance with
           13  + the License. You may obtain a copy of the License at
           14  + http://www.mozilla.org/MPL/
           15  + 
           16  +Software distributed under the License is distributed on an "AS IS" basis,
           17  +WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
           18  +for the specific language governing rights and limitations under the
           19  +License.
           20  +
           21  +The Original Code is the SpatiaLite library
           22  +
           23  +The Initial Developer of the Original Code is Alessandro Furieri
           24  + 
           25  +Portions created by the Initial Developer are Copyright (C) 2011
           26  +the Initial Developer. All Rights Reserved.
           27  +
           28  +Contributor(s):
           29  +Brad Hards <bradh@frogmouth.net>
           30  +
           31  +Alternatively, the contents of this file may be used under the terms of
           32  +either the GNU General Public License Version 2 or later (the "GPL"), or
           33  +the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
           34  +in which case the provisions of the GPL or the LGPL are applicable instead
           35  +of those above. If you wish to allow use of your version of this file only
           36  +under the terms of either the GPL or the LGPL, and not to allow others to
           37  +use your version of this file under the terms of the MPL, indicate your
           38  +decision by deleting the provisions above and replace them with the notice
           39  +and other provisions required by the GPL or the LGPL. If you do not delete
           40  +the provisions above, a recipient may use your version of this file under
           41  +the terms of any one of the MPL, the GPL or the LGPL.
           42  + 
           43  +*/
           44  +#include <stdlib.h>
           45  +#include <stdio.h>
           46  +#include <string.h>
           47  +
           48  +#include "config.h"
           49  +
           50  +#ifdef SPATIALITE_AMALGAMATION
           51  +#include <spatialite/sqlite3.h>
           52  +#else
           53  +#include <sqlite3.h>
           54  +#endif
           55  +
           56  +#include "../headers/rasterlite.h"
           57  +
           58  +int main (void)
           59  +{
           60  +    if (strcmp(rasterliteGetVersion(), VERSION) != 0) {
           61  +	fprintf(stderr, "RasterLite version mismatch: %s and %s\n",
           62  +		VERSION, rasterliteGetVersion());
           63  +	return -1;
           64  +    }
           65  +    
           66  +    return 0;
           67  +}

Added test/globe.sqlite.

cannot compute difference between binary files

Added test/jpeg50ref.jpg.

cannot compute difference between binary files