pax_global_header00006660000000000000000000000064147736711340014527gustar00rootroot0000000000000052 comment=1b5a23551508a96c958f8bce81f173458104fdb2 giza-1.5.0/000077500000000000000000000000001477367113400124645ustar00rootroot00000000000000giza-1.5.0/.github/000077500000000000000000000000001477367113400140245ustar00rootroot00000000000000giza-1.5.0/.github/workflows/000077500000000000000000000000001477367113400160615ustar00rootroot00000000000000giza-1.5.0/.github/workflows/api.yml000066400000000000000000000007601477367113400173600ustar00rootroot00000000000000name: Update API docs on: push jobs: report: runs-on: ubuntu-latest steps: - name: checkout code uses: actions/checkout@v3 - name: update api docs run: | cd scripts ./generate-docs.sh - name: Commit API documentation uses: EndBug/add-and-commit@v8 with: default_author: github_actions message: '[web-bot] updated auto-generated documentation' add: 'docs/documentation/*.html --force' giza-1.5.0/.github/workflows/build.yml000066400000000000000000000025141477367113400177050ustar00rootroot00000000000000name: build # Controls when the action will run. Triggers the workflow on push or pull request # events but only for the master branch on: push: branches: [ master ] pull_request: branches: [ master ] jobs: build: runs-on: ${{ matrix.os }} strategy: fail-fast: false matrix: os: [ubuntu-latest, macos-latest] env: DISPLAY: :99 steps: # make sure we have gfortran installed and linked - name: Install gfortran compiler uses: fortran-lang/setup-fortran@v1 with: compiler: gcc # Set up Xvfb for graphical tests - name: Install cairo and also Xvfb to pretend to launch X-windows in the workflow if: matrix.os == 'ubuntu-latest' run: | sudo apt-get update sudo apt-get install -y libcairo2-dev xvfb # check out the repository - uses: actions/checkout@v4 - name: compile and install giza run: | ./configure make sudo make install # Run tests - name: Run test programs, pressing enter to all prompts if: matrix.os == 'ubuntu-latest' run: | Xvfb :99 -screen 0 1920x1080x24 & echo "Current DISPLAY: $DISPLAY" yes "" | make check || { echo "Tests failed. Printing test-suite.log..."; cat test/C/test-suite.log; cat test/F90/test-suite.log; exit 1; } giza-1.5.0/.github/workflows/release.yml000066400000000000000000000065011477367113400202260ustar00rootroot00000000000000name: release # a general github action to generate a release whenever a version tag is pushed # generates and uploads a tarball of the source code # in a way that plays nicely with git submodules # could be easily adapted to produce binaries for each OS # Daniel Price, Aug 2020 on: push: tags: - 'v*' # Push events to matching v*, i.e. v1.0, v20.15.10 jobs: release: strategy: matrix: os: [ubuntu-latest] runs-on: ${{ matrix.os }} # Steps represent a sequence of tasks that will be executed as part of the job steps: - name: checkout code uses: actions/checkout@v3 with: submodules: recursive - name: Get version id: get_version env: vernum: ${{ github.ref }} repo: ${{ github.repository }} run: | echo "version=${vernum/refs\/tags\//}" >> $GITHUB_ENV echo "repo=$(basename ${repo})" >> $GITHUB_ENV echo "tarfile=$(basename ${repo})-${vernum/refs\/tags\//}.tar.gz" >> $GITHUB_ENV # - name: build tarball mac # if: matrix.os == 'macos-latest' # env: # tarfile: ${{ steps.get_version.outputs.tarfile }} # repo: ${{ steps.get_version.outputs.repo }} # run: | # tar cfz /tmp/$tarfile --exclude ".git*" -s "/./${repo}/" . - name: build tarball if: matrix.os == 'ubuntu-latest' env: tarfile: ${{ env.tarfile }} repo: ${{ env.repo }} run: | env echo "tarfile is $tarfile, repo is $repo" tar cfz /tmp/$tarfile --exclude ".git*" \ --transform "s,.,${repo}," . - name: check tarball and get SHA env: tarfile: ${{ env.tarfile }} id: shasum run: | mv /tmp/$tarfile . tar tfz $tarfile echo "sha=$(shasum -a 256 $tarfile | awk '{printf $1}')" >> $GITHUB_ENV - name: Create Release id: create_release uses: actions/create-release@v1 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: tag_name: ${{ env.version }} release_name: ${{ env.version }} body_path: LATEST.md draft: false prerelease: false - name: Upload Release Asset id: upload-release-asset uses: actions/upload-release-asset@v1 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: upload_url: ${{ steps.create_release.outputs.upload_url }} asset_path: ${{ env.tarfile }} asset_name: ${{ env.tarfile }} asset_content_type: application/gzip - name: Set up Homebrew id: set-up-homebrew uses: Homebrew/actions/setup-homebrew@master - name: Bump Brew env: HOMEBREW_GITHUB_API_TOKEN: ${{ secrets.BREW_TOKEN_GIZA }} version: ${{ env.version }} brewtap: danieljprice/all formula: giza-x11 #${{ steps.get_version.outputs.repo }} # formula name same as repo name run: | git config --global user.email "daniel.price@monash.edu" git config --global user.name "Daniel Price" brew install pipgrip brew tap $brewtap brew bump-formula-pr -f --version=${version/v/} --no-browse --no-audit \ --sha256=${{ env.sha }} \ --url="https://github.com/${{ github.repository }}/releases/download/${{ env.version }}/${{ env.tarfile }}" \ $brewtap/$formula giza-1.5.0/.gitignore000066400000000000000000000000601477367113400144500ustar00rootroot00000000000000*.o *.lo *.la *.mod *.a *.dylib include/* lib/* giza-1.5.0/.mailmap000066400000000000000000000004701477367113400141060ustar00rootroot00000000000000Daniel Price danielprice Joachim Frieben jfrieben Harro Verkouter Harro Verkouter Harro Verkouter giza-1.5.0/AUTHORS000066400000000000000000000010061477367113400135310ustar00rootroot00000000000000Contributors (for updated list, use git shortlog -s -n -e): Daniel Price (main contact) Harro Verkouter James Wetter Joachim Frieben Hiroyuki Ito Mark Hutchison Terrence Tricco Aard Keimpema Benson Muite Fabian P. Schmidt giza-1.5.0/COPYING000066400000000000000000001045151477367113400135250ustar00rootroot00000000000000 GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007 Copyright (C) 2007 Free Software Foundation, Inc. Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The GNU General Public License is a free, copyleft license for software and other kinds of works. The licenses for most software and other practical works are designed to take away your freedom to share and change the works. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change all versions of a program--to make sure it remains free software for all its users. We, the Free Software Foundation, use the GNU General Public License for most of our software; it applies also to any other work released this way by its authors. You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for them if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs, and that you know you can do these things. To protect your rights, we need to prevent others from denying you these rights or asking you to surrender the rights. Therefore, you have certain responsibilities if you distribute copies of the software, or if you modify it: responsibilities to respect the freedom of others. For example, if you distribute copies of such a program, whether gratis or for a fee, you must pass on to the recipients the same freedoms that you received. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. Developers that use the GNU GPL protect your rights with two steps: (1) assert copyright on the software, and (2) offer you this License giving you legal permission to copy, distribute and/or modify it. For the developers' and authors' protection, the GPL clearly explains that there is no warranty for this free software. For both users' and authors' sake, the GPL requires that modified versions be marked as changed, so that their problems will not be attributed erroneously to authors of previous versions. Some devices are designed to deny users access to install or run modified versions of the software inside them, although the manufacturer can do so. This is fundamentally incompatible with the aim of protecting users' freedom to change the software. The systematic pattern of such abuse occurs in the area of products for individuals to use, which is precisely where it is most unacceptable. Therefore, we have designed this version of the GPL to prohibit the practice for those products. If such problems arise substantially in other domains, we stand ready to extend this provision to those domains in future versions of the GPL, as needed to protect the freedom of users. Finally, every program is threatened constantly by software patents. States should not allow patents to restrict development and use of software on general-purpose computers, but in those that do, we wish to avoid the special danger that patents applied to a free program could make it effectively proprietary. To prevent this, the GPL assures that patents cannot be used to render the program non-free. The precise terms and conditions for copying, distribution and modification follow. TERMS AND CONDITIONS 0. Definitions. "This License" refers to version 3 of the GNU General Public License. "Copyright" also means copyright-like laws that apply to other kinds of works, such as semiconductor masks. "The Program" refers to any copyrightable work licensed under this License. Each licensee is addressed as "you". "Licensees" and "recipients" may be individuals or organizations. To "modify" a work means to copy from or adapt all or part of the work in a fashion requiring copyright permission, other than the making of an exact copy. The resulting work is called a "modified version" of the earlier work or a work "based on" the earlier work. A "covered work" means either the unmodified Program or a work based on the Program. To "propagate" a work means to do anything with it that, without permission, would make you directly or secondarily liable for infringement under applicable copyright law, except executing it on a computer or modifying a private copy. Propagation includes copying, distribution (with or without modification), making available to the public, and in some countries other activities as well. To "convey" a work means any kind of propagation that enables other parties to make or receive copies. Mere interaction with a user through a computer network, with no transfer of a copy, is not conveying. An interactive user interface displays "Appropriate Legal Notices" to the extent that it includes a convenient and prominently visible feature that (1) displays an appropriate copyright notice, and (2) tells the user that there is no warranty for the work (except to the extent that warranties are provided), that licensees may convey the work under this License, and how to view a copy of this License. If the interface presents a list of user commands or options, such as a menu, a prominent item in the list meets this criterion. 1. Source Code. The "source code" for a work means the preferred form of the work for making modifications to it. "Object code" means any non-source form of a work. A "Standard Interface" means an interface that either is an official standard defined by a recognized standards body, or, in the case of interfaces specified for a particular programming language, one that is widely used among developers working in that language. The "System Libraries" of an executable work include anything, other than the work as a whole, that (a) is included in the normal form of packaging a Major Component, but which is not part of that Major Component, and (b) serves only to enable use of the work with that Major Component, or to implement a Standard Interface for which an implementation is available to the public in source code form. A "Major Component", in this context, means a major essential component (kernel, window system, and so on) of the specific operating system (if any) on which the executable work runs, or a compiler used to produce the work, or an object code interpreter used to run it. The "Corresponding Source" for a work in object code form means all the source code needed to generate, install, and (for an executable work) run the object code and to modify the work, including scripts to control those activities. However, it does not include the work's System Libraries, or general-purpose tools or generally available free programs which are used unmodified in performing those activities but which are not part of the work. For example, Corresponding Source includes interface definition files associated with source files for the work, and the source code for shared libraries and dynamically linked subprograms that the work is specifically designed to require, such as by intimate data communication or control flow between those subprograms and other parts of the work. The Corresponding Source need not include anything that users can regenerate automatically from other parts of the Corresponding Source. The Corresponding Source for a work in source code form is that same work. 2. Basic Permissions. All rights granted under this License are granted for the term of copyright on the Program, and are irrevocable provided the stated conditions are met. This License explicitly affirms your unlimited permission to run the unmodified Program. The output from running a covered work is covered by this License only if the output, given its content, constitutes a covered work. This License acknowledges your rights of fair use or other equivalent, as provided by copyright law. You may make, run and propagate covered works that you do not convey, without conditions so long as your license otherwise remains in force. You may convey covered works to others for the sole purpose of having them make modifications exclusively for you, or provide you with facilities for running those works, provided that you comply with the terms of this License in conveying all material for which you do not control copyright. Those thus making or running the covered works for you must do so exclusively on your behalf, under your direction and control, on terms that prohibit them from making any copies of your copyrighted material outside their relationship with you. Conveying under any other circumstances is permitted solely under the conditions stated below. Sublicensing is not allowed; section 10 makes it unnecessary. 3. Protecting Users' Legal Rights From Anti-Circumvention Law. No covered work shall be deemed part of an effective technological measure under any applicable law fulfilling obligations under article 11 of the WIPO copyright treaty adopted on 20 December 1996, or similar laws prohibiting or restricting circumvention of such measures. When you convey a covered work, you waive any legal power to forbid circumvention of technological measures to the extent such circumvention is effected by exercising rights under this License with respect to the covered work, and you disclaim any intention to limit operation or modification of the work as a means of enforcing, against the work's users, your or third parties' legal rights to forbid circumvention of technological measures. 4. Conveying Verbatim Copies. You may convey verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice; keep intact all notices stating that this License and any non-permissive terms added in accord with section 7 apply to the code; keep intact all notices of the absence of any warranty; and give all recipients a copy of this License along with the Program. You may charge any price or no price for each copy that you convey, and you may offer support or warranty protection for a fee. 5. Conveying Modified Source Versions. You may convey a work based on the Program, or the modifications to produce it from the Program, in the form of source code under the terms of section 4, provided that you also meet all of these conditions: a) The work must carry prominent notices stating that you modified it, and giving a relevant date. b) The work must carry prominent notices stating that it is released under this License and any conditions added under section 7. This requirement modifies the requirement in section 4 to "keep intact all notices". c) You must license the entire work, as a whole, under this License to anyone who comes into possession of a copy. This License will therefore apply, along with any applicable section 7 additional terms, to the whole of the work, and all its parts, regardless of how they are packaged. This License gives no permission to license the work in any other way, but it does not invalidate such permission if you have separately received it. d) If the work has interactive user interfaces, each must display Appropriate Legal Notices; however, if the Program has interactive interfaces that do not display Appropriate Legal Notices, your work need not make them do so. A compilation of a covered work with other separate and independent works, which are not by their nature extensions of the covered work, and which are not combined with it such as to form a larger program, in or on a volume of a storage or distribution medium, is called an "aggregate" if the compilation and its resulting copyright are not used to limit the access or legal rights of the compilation's users beyond what the individual works permit. Inclusion of a covered work in an aggregate does not cause this License to apply to the other parts of the aggregate. 6. Conveying Non-Source Forms. You may convey a covered work in object code form under the terms of sections 4 and 5, provided that you also convey the machine-readable Corresponding Source under the terms of this License, in one of these ways: a) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by the Corresponding Source fixed on a durable physical medium customarily used for software interchange. b) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by a written offer, valid for at least three years and valid for as long as you offer spare parts or customer support for that product model, to give anyone who possesses the object code either (1) a copy of the Corresponding Source for all the software in the product that is covered by this License, on a durable physical medium customarily used for software interchange, for a price no more than your reasonable cost of physically performing this conveying of source, or (2) access to copy the Corresponding Source from a network server at no charge. c) Convey individual copies of the object code with a copy of the written offer to provide the Corresponding Source. This alternative is allowed only occasionally and noncommercially, and only if you received the object code with such an offer, in accord with subsection 6b. d) Convey the object code by offering access from a designated place (gratis or for a charge), and offer equivalent access to the Corresponding Source in the same way through the same place at no further charge. You need not require recipients to copy the Corresponding Source along with the object code. If the place to copy the object code is a network server, the Corresponding Source may be on a different server (operated by you or a third party) that supports equivalent copying facilities, provided you maintain clear directions next to the object code saying where to find the Corresponding Source. Regardless of what server hosts the Corresponding Source, you remain obligated to ensure that it is available for as long as needed to satisfy these requirements. e) Convey the object code using peer-to-peer transmission, provided you inform other peers where the object code and Corresponding Source of the work are being offered to the general public at no charge under subsection 6d. A separable portion of the object code, whose source code is excluded from the Corresponding Source as a System Library, need not be included in conveying the object code work. A "User Product" is either (1) a "consumer product", which means any tangible personal property which is normally used for personal, family, or household purposes, or (2) anything designed or sold for incorporation into a dwelling. In determining whether a product is a consumer product, doubtful cases shall be resolved in favor of coverage. For a particular product received by a particular user, "normally used" refers to a typical or common use of that class of product, regardless of the status of the particular user or of the way in which the particular user actually uses, or expects or is expected to use, the product. A product is a consumer product regardless of whether the product has substantial commercial, industrial or non-consumer uses, unless such uses represent the only significant mode of use of the product. "Installation Information" for a User Product means any methods, procedures, authorization keys, or other information required to install and execute modified versions of a covered work in that User Product from a modified version of its Corresponding Source. The information must suffice to ensure that the continued functioning of the modified object code is in no case prevented or interfered with solely because modification has been made. If you convey an object code work under this section in, or with, or specifically for use in, a User Product, and the conveying occurs as part of a transaction in which the right of possession and use of the User Product is transferred to the recipient in perpetuity or for a fixed term (regardless of how the transaction is characterized), the Corresponding Source conveyed under this section must be accompanied by the Installation Information. But this requirement does not apply if neither you nor any third party retains the ability to install modified object code on the User Product (for example, the work has been installed in ROM). The requirement to provide Installation Information does not include a requirement to continue to provide support service, warranty, or updates for a work that has been modified or installed by the recipient, or for the User Product in which it has been modified or installed. Access to a network may be denied when the modification itself materially and adversely affects the operation of the network or violates the rules and protocols for communication across the network. Corresponding Source conveyed, and Installation Information provided, in accord with this section must be in a format that is publicly documented (and with an implementation available to the public in source code form), and must require no special password or key for unpacking, reading or copying. 7. Additional Terms. "Additional permissions" are terms that supplement the terms of this License by making exceptions from one or more of its conditions. Additional permissions that are applicable to the entire Program shall be treated as though they were included in this License, to the extent that they are valid under applicable law. If additional permissions apply only to part of the Program, that part may be used separately under those permissions, but the entire Program remains governed by this License without regard to the additional permissions. When you convey a copy of a covered work, you may at your option remove any additional permissions from that copy, or from any part of it. (Additional permissions may be written to require their own removal in certain cases when you modify the work.) You may place additional permissions on material, added by you to a covered work, for which you have or can give appropriate copyright permission. Notwithstanding any other provision of this License, for material you add to a covered work, you may (if authorized by the copyright holders of that material) supplement the terms of this License with terms: a) Disclaiming warranty or limiting liability differently from the terms of sections 15 and 16 of this License; or b) Requiring preservation of specified reasonable legal notices or author attributions in that material or in the Appropriate Legal Notices displayed by works containing it; or c) Prohibiting misrepresentation of the origin of that material, or requiring that modified versions of such material be marked in reasonable ways as different from the original version; or d) Limiting the use for publicity purposes of names of licensors or authors of the material; or e) Declining to grant rights under trademark law for use of some trade names, trademarks, or service marks; or f) Requiring indemnification of licensors and authors of that material by anyone who conveys the material (or modified versions of it) with contractual assumptions of liability to the recipient, for any liability that these contractual assumptions directly impose on those licensors and authors. All other non-permissive additional terms are considered "further restrictions" within the meaning of section 10. If the Program as you received it, or any part of it, contains a notice stating that it is governed by this License along with a term that is a further restriction, you may remove that term. If a license document contains a further restriction but permits relicensing or conveying under this License, you may add to a covered work material governed by the terms of that license document, provided that the further restriction does not survive such relicensing or conveying. If you add terms to a covered work in accord with this section, you must place, in the relevant source files, a statement of the additional terms that apply to those files, or a notice indicating where to find the applicable terms. Additional terms, permissive or non-permissive, may be stated in the form of a separately written license, or stated as exceptions; the above requirements apply either way. 8. Termination. You may not propagate or modify a covered work except as expressly provided under this License. Any attempt otherwise to propagate or modify it is void, and will automatically terminate your rights under this License (including any patent licenses granted under the third paragraph of section 11). However, if you cease all violation of this License, then your license from a particular copyright holder is reinstated (a) provisionally, unless and until the copyright holder explicitly and finally terminates your license, and (b) permanently, if the copyright holder fails to notify you of the violation by some reasonable means prior to 60 days after the cessation. Moreover, your license from a particular copyright holder is reinstated permanently if the copyright holder notifies you of the violation by some reasonable means, this is the first time you have received notice of violation of this License (for any work) from that copyright holder, and you cure the violation prior to 30 days after your receipt of the notice. Termination of your rights under this section does not terminate the licenses of parties who have received copies or rights from you under this License. If your rights have been terminated and not permanently reinstated, you do not qualify to receive new licenses for the same material under section 10. 9. Acceptance Not Required for Having Copies. You are not required to accept this License in order to receive or run a copy of the Program. Ancillary propagation of a covered work occurring solely as a consequence of using peer-to-peer transmission to receive a copy likewise does not require acceptance. However, nothing other than this License grants you permission to propagate or modify any covered work. These actions infringe copyright if you do not accept this License. Therefore, by modifying or propagating a covered work, you indicate your acceptance of this License to do so. 10. Automatic Licensing of Downstream Recipients. Each time you convey a covered work, the recipient automatically receives a license from the original licensors, to run, modify and propagate that work, subject to this License. You are not responsible for enforcing compliance by third parties with this License. An "entity transaction" is a transaction transferring control of an organization, or substantially all assets of one, or subdividing an organization, or merging organizations. If propagation of a covered work results from an entity transaction, each party to that transaction who receives a copy of the work also receives whatever licenses to the work the party's predecessor in interest had or could give under the previous paragraph, plus a right to possession of the Corresponding Source of the work from the predecessor in interest, if the predecessor has it or can get it with reasonable efforts. You may not impose any further restrictions on the exercise of the rights granted or affirmed under this License. For example, you may not impose a license fee, royalty, or other charge for exercise of rights granted under this License, and you may not initiate litigation (including a cross-claim or counterclaim in a lawsuit) alleging that any patent claim is infringed by making, using, selling, offering for sale, or importing the Program or any portion of it. 11. Patents. A "contributor" is a copyright holder who authorizes use under this License of the Program or a work on which the Program is based. The work thus licensed is called the contributor's "contributor version". A contributor's "essential patent claims" are all patent claims owned or controlled by the contributor, whether already acquired or hereafter acquired, that would be infringed by some manner, permitted by this License, of making, using, or selling its contributor version, but do not include claims that would be infringed only as a consequence of further modification of the contributor version. For purposes of this definition, "control" includes the right to grant patent sublicenses in a manner consistent with the requirements of this License. Each contributor grants you a non-exclusive, worldwide, royalty-free patent license under the contributor's essential patent claims, to make, use, sell, offer for sale, import and otherwise run, modify and propagate the contents of its contributor version. In the following three paragraphs, a "patent license" is any express agreement or commitment, however denominated, not to enforce a patent (such as an express permission to practice a patent or covenant not to sue for patent infringement). To "grant" such a patent license to a party means to make such an agreement or commitment not to enforce a patent against the party. If you convey a covered work, knowingly relying on a patent license, and the Corresponding Source of the work is not available for anyone to copy, free of charge and under the terms of this License, through a publicly available network server or other readily accessible means, then you must either (1) cause the Corresponding Source to be so available, or (2) arrange to deprive yourself of the benefit of the patent license for this particular work, or (3) arrange, in a manner consistent with the requirements of this License, to extend the patent license to downstream recipients. "Knowingly relying" means you have actual knowledge that, but for the patent license, your conveying the covered work in a country, or your recipient's use of the covered work in a country, would infringe one or more identifiable patents in that country that you have reason to believe are valid. If, pursuant to or in connection with a single transaction or arrangement, you convey, or propagate by procuring conveyance of, a covered work, and grant a patent license to some of the parties receiving the covered work authorizing them to use, propagate, modify or convey a specific copy of the covered work, then the patent license you grant is automatically extended to all recipients of the covered work and works based on it. A patent license is "discriminatory" if it does not include within the scope of its coverage, prohibits the exercise of, or is conditioned on the non-exercise of one or more of the rights that are specifically granted under this License. You may not convey a covered work if you are a party to an arrangement with a third party that is in the business of distributing software, under which you make payment to the third party based on the extent of your activity of conveying the work, and under which the third party grants, to any of the parties who would receive the covered work from you, a discriminatory patent license (a) in connection with copies of the covered work conveyed by you (or copies made from those copies), or (b) primarily for and in connection with specific products or compilations that contain the covered work, unless you entered into that arrangement, or that patent license was granted, prior to 28 March 2007. Nothing in this License shall be construed as excluding or limiting any implied license or other defenses to infringement that may otherwise be available to you under applicable patent law. 12. No Surrender of Others' Freedom. If conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot convey a covered work so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not convey it at all. For example, if you agree to terms that obligate you to collect a royalty for further conveying from those to whom you convey the Program, the only way you could satisfy both those terms and this License would be to refrain entirely from conveying the Program. 13. Use with the GNU Affero General Public License. Notwithstanding any other provision of this License, you have permission to link or combine any covered work with a work licensed under version 3 of the GNU Affero General Public License into a single combined work, and to convey the resulting work. The terms of this License will continue to apply to the part which is the covered work, but the special requirements of the GNU Affero General Public License, section 13, concerning interaction through a network will apply to the combination as such. 14. Revised Versions of this License. The Free Software Foundation may publish revised and/or new versions of the GNU General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies that a certain numbered version of the GNU General Public License "or any later version" applies to it, you have the option of following the terms and conditions either of that numbered version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of the GNU General Public License, you may choose any version ever published by the Free Software Foundation. If the Program specifies that a proxy can decide which future versions of the GNU General Public License can be used, that proxy's public statement of acceptance of a version permanently authorizes you to choose that version for the Program. Later license versions may give you additional or different permissions. However, no additional obligations are imposed on any author or copyright holder as a result of your choosing to follow a later version. 15. Disclaimer of Warranty. THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 16. Limitation of Liability. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. 17. Interpretation of Sections 15 and 16. If the disclaimer of warranty and limitation of liability provided above cannot be given local legal effect according to their terms, reviewing courts shall apply local law that most closely approximates an absolute waiver of all civil liability in connection with the Program, unless a warranty or assumption of liability accompanies a copy of the Program in return for a fee. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Programs If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively state the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . Also add information on how to contact you by electronic and paper mail. If the program does terminal interaction, make it output a short notice like this when it starts in an interactive mode: Copyright (C) This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, your program's commands might be different; for a GUI interface, you would use an "about box". You should also get your employer (if you work as a programmer) or school, if any, to sign a "copyright disclaimer" for the program, if necessary. For more information on this, and how to apply and follow the GNU GPL, see . The GNU General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Lesser General Public License instead of this License. But first, please read . giza-1.5.0/COPYING.LESSER000066400000000000000000000167441477367113400145270ustar00rootroot00000000000000 GNU LESSER GENERAL PUBLIC LICENSE Version 3, 29 June 2007 Copyright (C) 2007 Free Software Foundation, Inc. Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. This version of the GNU Lesser General Public License incorporates the terms and conditions of version 3 of the GNU General Public License, supplemented by the additional permissions listed below. 0. Additional Definitions. As used herein, "this License" refers to version 3 of the GNU Lesser General Public License, and the "GNU GPL" refers to version 3 of the GNU General Public License. "The Library" refers to a covered work governed by this License, other than an Application or a Combined Work as defined below. An "Application" is any work that makes use of an interface provided by the Library, but which is not otherwise based on the Library. Defining a subclass of a class defined by the Library is deemed a mode of using an interface provided by the Library. A "Combined Work" is a work produced by combining or linking an Application with the Library. The particular version of the Library with which the Combined Work was made is also called the "Linked Version". The "Minimal Corresponding Source" for a Combined Work means the Corresponding Source for the Combined Work, excluding any source code for portions of the Combined Work that, considered in isolation, are based on the Application, and not on the Linked Version. The "Corresponding Application Code" for a Combined Work means the object code and/or source code for the Application, including any data and utility programs needed for reproducing the Combined Work from the Application, but excluding the System Libraries of the Combined Work. 1. Exception to Section 3 of the GNU GPL. You may convey a covered work under sections 3 and 4 of this License without being bound by section 3 of the GNU GPL. 2. Conveying Modified Versions. If you modify a copy of the Library, and, in your modifications, a facility refers to a function or data to be supplied by an Application that uses the facility (other than as an argument passed when the facility is invoked), then you may convey a copy of the modified version: a) under this License, provided that you make a good faith effort to ensure that, in the event an Application does not supply the function or data, the facility still operates, and performs whatever part of its purpose remains meaningful, or b) under the GNU GPL, with none of the additional permissions of this License applicable to that copy. 3. Object Code Incorporating Material from Library Header Files. The object code form of an Application may incorporate material from a header file that is part of the Library. You may convey such object code under terms of your choice, provided that, if the incorporated material is not limited to numerical parameters, data structure layouts and accessors, or small macros, inline functions and templates (ten or fewer lines in length), you do both of the following: a) Give prominent notice with each copy of the object code that the Library is used in it and that the Library and its use are covered by this License. b) Accompany the object code with a copy of the GNU GPL and this license document. 4. Combined Works. You may convey a Combined Work under terms of your choice that, taken together, effectively do not restrict modification of the portions of the Library contained in the Combined Work and reverse engineering for debugging such modifications, if you also do each of the following: a) Give prominent notice with each copy of the Combined Work that the Library is used in it and that the Library and its use are covered by this License. b) Accompany the Combined Work with a copy of the GNU GPL and this license document. c) For a Combined Work that displays copyright notices during execution, include the copyright notice for the Library among these notices, as well as a reference directing the user to the copies of the GNU GPL and this license document. d) Do one of the following: 0) Convey the Minimal Corresponding Source under the terms of this License, and the Corresponding Application Code in a form suitable for, and under terms that permit, the user to recombine or relink the Application with a modified version of the Linked Version to produce a modified Combined Work, in the manner specified by section 6 of the GNU GPL for conveying Corresponding Source. 1) Use a suitable shared library mechanism for linking with the Library. A suitable mechanism is one that (a) uses at run time a copy of the Library already present on the user's computer system, and (b) will operate properly with a modified version of the Library that is interface-compatible with the Linked Version. e) Provide Installation Information, but only if you would otherwise be required to provide such information under section 6 of the GNU GPL, and only to the extent that such information is necessary to install and execute a modified version of the Combined Work produced by recombining or relinking the Application with a modified version of the Linked Version. (If you use option 4d0, the Installation Information must accompany the Minimal Corresponding Source and Corresponding Application Code. If you use option 4d1, you must provide the Installation Information in the manner specified by section 6 of the GNU GPL for conveying Corresponding Source.) 5. Combined Libraries. You may place library facilities that are a work based on the Library side by side in a single library together with other library facilities that are not Applications and are not covered by this License, and convey such a combined library under terms of your choice, if you do both of the following: a) Accompany the combined library with a copy of the same work based on the Library, uncombined with any other library facilities, conveyed under the terms of this License. b) Give prominent notice with the combined library that part of it is a work based on the Library, and explaining where to find the accompanying uncombined form of the same work. 6. Revised Versions of the GNU Lesser General Public License. The Free Software Foundation may publish revised and/or new versions of the GNU Lesser General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Library as you received it specifies that a certain numbered version of the GNU Lesser General Public License "or any later version" applies to it, you have the option of following the terms and conditions either of that published version or of any later version published by the Free Software Foundation. If the Library as you received it does not specify a version number of the GNU Lesser General Public License, you may choose any version of the GNU Lesser General Public License ever published by the Free Software Foundation. If the Library as you received it specifies that a proxy can decide whether future versions of the GNU Lesser General Public License shall apply, that proxy's public statement of acceptance of any version is permanent authorization for you to choose that version for the Library. giza-1.5.0/ChangeLog000066400000000000000000006150721477367113400142510ustar00rootroot000000000000002023-11-30 Daniel Price * LATEST.md, NEWS, configure, configure.ac, docs/news/index.html: v1.4.1 2023-11-30 Daniel Price * src/giza-driver-mp4.c: (mp4) use -loglevel quiet in default ffmpeg flags 2023-11-28 Daniel Price * LATEST.md, NEWS: update release notes for v1.4.0 2023-11-28 Daniel Price * .github/workflows/api.yml, .github/workflows/build.yml, .github/workflows/release.yml: update github workflows 2023-11-28 Daniel Price * src/giza-driver-mp4.c: (mp4) avoid possibility to overflow string length using environment variable 2023-11-28 Daniel Price * ChangeLog, NEWS: updated ChangeLog + NEWS 2023-11-28 Daniel Price * .github/workflows/release.yml: (release) fix bump brew command 2023-11-28 Daniel Price * : Merge pull request #47 from danieljprice/mp4 mp4 device, v1.4.0 2023-11-28 Daniel Price * LATEST.md, configure, configure.ac, docs/documentation/api.html, docs/index.html, docs/news/index.html: v1.4.0 2023-11-28 github-actions <41898282+github-actions[bot]@users.noreply.github.com> * docs/documentation/api.html: [web-bot] updated auto-generated documentation 2023-11-28 Daniel Price * src/giza-driver-mp4.c: (mp4) always replace existing mp4 file; allow user to set ffmpeg flags using GIZA_FFMPEG_FLAGS environment variable 2023-11-28 Daniel Price * LICENSE => COPYING, src/Makefile.am, src/Makefile.in, src/giza-driver-mp4-private.h, src/giza-driver-mp4.c, src/giza-drivers-private.h, src/giza-drivers.c: (mp4) added mp4 device; tested and seems to work 2023-11-28 Daniel Price * COPYING, LICENSE: changed license to LGPL3 2023-10-10 Daniel Price * : Merge pull request #46 from htrb/add_registered_and_copyright_sign add registered and copyright sign as symbols. 2023-09-29 Hiroyuki Ito * src/giza-hershey-to-utf.h: add registered and copyright sign as symbols. 2023-09-29 Hiroyuki Ito * src/giza-box.c: Add support for '1' and '2' options to giza_box. 2023-03-10 Daniel Price * : Merge pull request #40 from bkmgit/empty-file Delete empty api-ref.html file 2022-09-09 github-actions <41898282+github-actions[bot]@users.noreply.github.com> * docs/documentation/cpgplot-status.html, docs/documentation/pgplot-status.html, docs/documentation/pgplot.html: [web-bot] updated auto-generated documentation 2022-09-09 Daniel Price * src/giza-cpgplot.c, src/giza-pgplot.f90: (docs) updated pgplot implementation status for PGSITF/PGQITF 2022-09-09 Daniel Price * Makefile.in, aclocal.m4, config.h.in, configure, src/Makefile.in, test/C/Makefile.in, test/F90/Makefile.in, test/Makefile.in: (build) updated automake files 2022-09-09 Daniel Price * : commit 1902b4d55ffc1439fabc7e564f9d3e16cf2c8817 Merge: 4ff70a8 ace6b44 Author: Daniel Price Date: Tue Sep 6 08:32:19 2022 +1000 2022-09-06 Daniel Price * : Merge pull request #38 from kerel-fs/pr/fix_readme 2022-08-01 Harro Verkouter * src/Makefile.am, src/giza-cpgplot.c, src/giza-fortran.F90, src/giza-itf.c, src/giza-itf.h, src/giza-pgplot.f90, src/giza-private.h, src/giza-render-private.h, src/giza-render.c, src/giza.h: Add support for PG[SQ]ITF, fix PGCONT PGPLOT has three image transfer functions defined for PGIMAG: linear, log, sqrt. These are now implemented by this commit. The current render engine uses pixel-colour-indices to colour pixels: based on the pixel value, limits, the transfer function computes the "position" of the pixel on the 0->1 scale and transforms that to the nearest colour index from the current CIMIN/CIMAX colour index range. (To follow PGPLOT docs.) The old code would ignore the colour index range and for each pixel interpolate the colour table that was set, basically always "true colour" representation. In a subsequent commit I could provide infrastructure to support both: code calling giza_render() directly would return to this behaviour, the call via the PGPLOT interface would force it through using colour index range. The code now has several flavours of transforming a pixel value to a normalized colour (on the interval 0..1) or converting that directly into a colour index between cimin, cimax. In the process fixed some minor bugs. Tested using pgdemo4, adding a PGSITF([123]) manually in the demo program. 2022-08-01 Harro Verkouter * src/giza-colour-table.c: Fix giza_set_colour_table to set colourindices The function would warn about inconsistent entries in the controlPoints and return with an error, not setting the colour-index table. PGPLOT pgdemo4 (demonstrating PGIMAG) has a table with controlpoints outside the range 0->1 (-.5, 1.7) triggering this warning and error exit. The colour table is installed nonetheless! Net effect: pixel colourings in "true colour" - i.e. those that do not go through colour indices - keep on working, but those relying on colour indices don't. This fix prints the warning, checks that a sensible number of control points remain, and then goes on computing the colours for the set colour index range (PGSCIR) - as per documentation. 2022-08-01 Harro Verkouter * src/giza-colour-index.c: Simplified set_colour_index_range 2022-08-01 Harro Verkouter * src/giza-contour.c: Follow PGPLOT auto-linestyle in PGCONT 2022-07-27 Fabian P. Schmidt * README.md: (docs) fix typo in pgplot replacement usage section 2022-07-25 Harro Verkouter * src/giza-points.c: Address char height/line width scaling issues According to PGPLOT documentation, symbols are drawn using current attributes character height and line width (see https://sites.astro.caltech.edu/~tjp/pgplot/subroutines.html#PGPT). Using the pgdemo2 program, 2nd page (SUBROUTINE PGEX22 in pgdemo2.f), this behaviour can be tested. I modified both the linewidth (LW=8) and the character height (CH=2.5) to see how PGPLOT handles this. Indeed PGPLOT makes the symbols larger and draws thicker lines. The Giza master branch does not follow this behaviour. This commit seeks to address that. Some base symbols had to be scaled up a bit wrt to their current setting, after which character height scaling could be used to do the rest. giza-points.c does not set a fixed line width anymore, in stead it follows the current device's setting. 2022-03-14 Daniel Price * LATEST.md, configure, configure.ac: v1.3.2 2022-03-14 Daniel Price * src/giza-fortran.F90: (giza-fortran) cleanup unnecessary implicit none statements; keep only the one at the top of the module 2022-03-14 Daniel Price * src/giza-drivers.c, src/giza-fortran.F90: (#35) added additional trims for safety where required 2022-03-14 Daniel Price * src/giza-drivers.c: (giza-drivers) trim spaces at end of device string in C causing test failures in Fortran interface, fixes #35 2022-01-28 github-actions <41898282+github-actions[bot]@users.noreply.github.com> * docs/documentation/api.html: [web-bot] updated auto-generated documentation 2022-01-28 Daniel Price * ChangeLog, LATEST.md, configure, configure.ac, docs/news/index.html: v1.3.1 2022-01-28 Daniel Price * test/F90/test-pgaxis.f90: (pgaxis) better pgaxis test 2022-01-28 Daniel Price * : commit e27012112cb66166dfe3a50d86a22aeba1fbeab2 Author: Daniel Price Date: Fri Jan 28 15:51:26 2022 +1100 2022-01-28 github-actions <41898282+github-actions[bot]@users.noreply.github.com> * docs/documentation/api.html: [web-bot] updated auto-generated documentation 2022-01-28 Daniel Price * : commit 23d9c67e0caa0fafde228f2d9b20f1696d77326b Author: Daniel Price Date: Fri Jan 28 15:44:05 2022 +1100 2022-01-28 github-actions <41898282+github-actions[bot]@users.noreply.github.com> * docs/documentation/api.html: [web-bot] updated auto-generated documentation 2022-01-28 Daniel Price * : commit 6a52d44e30da0beb293e31ff5571b3fa60678bba Author: Daniel Price Date: Fri Jan 28 15:35:09 2022 +1100 2022-01-28 github-actions <41898282+github-actions[bot]@users.noreply.github.com> * docs/documentation/pgplot.html: [web-bot] updated auto-generated documentation 2022-01-28 Daniel Price * .github/workflows/api.yml, docs/documentation/{pgplot.shtml => pgplot-header.html}, scripts/generate-docs.sh: (docs) bug fix with auto-generated docs: use simple cat instead of sed -r 2022-01-28 Daniel Price * : commit c3429bf2707b6a2ec55cf5d41a554bb7b9d2c1ad Author: Daniel Price Date: Fri Jan 28 15:15:08 2022 +1100 2022-01-28 github-actions <41898282+github-actions[bot]@users.noreply.github.com> * docs/documentation/pgplot.html: [web-bot] updated auto-generated documentation 2022-01-28 Daniel Price * .github/workflows/api.yml: (api) fix github workflow 2022-01-28 Daniel Price * .github/workflows/api.yml: (api) fix github workflow 2022-01-28 Daniel Price * .github/workflows/api.yml: (api) fix github workflow 2022-01-28 Daniel Price * .github/workflows/api.yml: (api) fix github workflow 2022-01-28 Daniel Price * .github/workflows/api.yml: (api) fix github workflow 2022-01-28 Daniel Price * .github/workflows/api.yml, {doc => scripts}/api.pl, {doc => scripts}/cpgplot_status.pl, {doc => scripts}/generate-docs.sh, {doc => scripts}/get-fortran-params.pl, {doc => scripts}/get-source-files.pl, {doc => scripts}/pgplot_status.pl: (docs) moved doc->scripts to avoid confusion 2022-01-28 Daniel Price * LATEST.md, doc/generate-docs.sh, docs/documentation/pgplot.html, docs/documentation/pgplot.shtml: (docs) broken links fixed 2022-01-28 Daniel Price * doc/generate-docs.sh, docs/documentation/cpgplot-status.html, docs/documentation/index.html, docs/documentation/pgplot.html, docs/index.html, src/giza-cpgplot.c: (docs) updated cpgplot interfaces for giza_axis and giza_tick; fix issues in documentation 2022-01-28 Daniel Price * docs/documentation/gettingstarted.html, docs/news/index.html: (docs) fix broken links 2022-01-27 Daniel Price * docs/documentation/api.html, docs/documentation/pgplot-status.html: [web-bot] updated auto-generated documentation 2022-01-27 Daniel Price * docs/news/index.html: updated version 2022-01-27 Daniel Price * LATEST.md, src/Makefile.am, src/Makefile.in, src/giza-axis.c, src/giza-fortran.F90, src/giza-pgplot.f90, src/giza-tick-private.h, src/giza-tick.c, src/giza.h: (#12) implemented giza_tick replacement functionality for PGTICK 2022-01-21 Daniel Price * LATEST.md, configure, configure.ac: v1.3.0 2022-01-21 Daniel Price * : Merge pull request #34 from danieljprice/motion-callback Motion callback 2022-01-21 Daniel Price * src/giza-drivers.c, src/giza-fortran.F90, src/giza.h: (motion callback) added giza_end_motion_callback 2022-01-21 Daniel Price * src/giza-driver-xw.c: (motion callback) bug fix: make sure transform is to world coords 2022-01-19 Daniel Price * src/giza-driver-xw-private.h, src/giza-driver-xw.c: (motion callback) bug fix: restore clipping at end of Xwindows loop 2022-01-19 Daniel Price * src/giza-axis.c, src/giza-box.c, src/giza-character-size.c: (giza_axis) bug fixes; everything now works according to the API 2022-01-18 Daniel Price * src/Makefile.am, src/Makefile.in, src/giza-band.c, src/giza-box.c, src/giza-fortran.F90, src/giza-pgplot.f90, src/giza-render.c, src/giza-stroke-private.h, src/giza.h: (giza_axis) implemented giza_axis to replace PGAXIS 2022-01-17 Daniel Price * src/giza-driver-xw.c: (motion callback) expand clipping during Xwindows loop 2022-01-17 Daniel Price * src/giza-driver-xw.c, src/giza-drivers.c, src/giza-fortran.F90, src/giza-private.h, src/giza.h: (motion callback) send band mode 2022-01-14 Daniel Price * src/giza-fortran.F90: (fortran) do not trim strings when passing text to giza 2022-01-14 Daniel Price * src/giza-fortran.F90: (motion callback) fortran interface to giza_set_motion_callback added 2022-01-14 Daniel Price * src/giza-driver-xw.c, src/giza-drivers.c, src/giza-private.h, src/giza-window.c, src/giza.h: (motion callback) implemented giza_set_motion_callback specifying function to be called during cursor movement (works for xw device) 2021-06-18 Daniel Price * .github/workflows/release.yml: updated brew update to point to giza-x11 in danieljprice/all 2021-06-18 Daniel Price * LATEST.md, configure.ac: v1.2.1 2021-06-18 Daniel Price * .github/workflows/release.yml: (github) updated API token 2021-06-18 Daniel Price * src/giza-colour-palette.c: (giza_colour_palette) compiler warning/bug fixed for GIZA_PALETTE=8 (matlab-inspired) 2021-06-18 Daniel Price * src/giza-drivers.c: (device) bug fix specifying device with directory path e.g. dir/file.png 2021-01-22 Daniel Price * .github/workflows/api.yml: (doc-bot) second attempt to stop failing github action if no files committed 2021-01-22 Daniel Price * .mailmap: updated .mailmap 2021-01-22 Daniel Price * .github/workflows/api.yml: (doc-bot) do not fail build if nothing to commit 2021-01-22 Daniel Price * .github/workflows/release.yml, LATEST.md: added release notes and github workflow for automated release-on-tag 2021-01-22 Daniel Price * docs/documentation/installation.html, docs/download/index.html: (docs) updated links 2021-01-22 Daniel Price * : commit 91a67f39b63eb537066ec0e584034b36e0f4d98b Author: Daniel Price Date: Fri Jan 22 15:23:06 2021 +1100 2021-01-22 Daniel Price * docs/documentation/api.html: [doc-bot] updated auto-generated documentation 2021-01-22 Daniel Price * : commit 9ad57ce8a0eff64e9c31462cea960d45c0cfa242 Author: Daniel Price Date: Fri Jan 22 04:00:17 2021 +0000 2021-01-22 Daniel Price * .github/workflows/api.yml: Create api.yml 2021-01-22 Daniel Price * ChangeLog: updated ChangeLog 2021-01-22 Daniel Price * doc/api.pl: fix comment about api not being stable (not true, it is very stable) 2021-01-22 Daniel Price * docs/samples/index.html: updated sample images on webpage 2021-01-22 Daniel Price * INSTALL, Makefile.am, Makefile.in, aclocal.m4, configure, src/Makefile.in, test/C/Makefile.in, test/F90/Makefile.in, test/Makefile.in: updated automake and autoconf, restored necessary INSTALL file and added rule for README to Makefile.am 2021-01-22 Daniel Price * : commit 03c20ab804e59a6d9d247083efacb8bbf4577f0f Author: Daniel Price Date: Fri Jan 22 14:22:37 2021 +1100 2021-01-22 Daniel Price * Makefile.am: remove INSTALL from Makefile.am 2021-01-22 Daniel Price * .github/workflows/build.yml: Update build.yml 2021-01-22 Daniel Price * .github/workflows/build.yml: Create build.yml 2021-01-22 Daniel Price * README, INSTALL => README.md: (docs) updated README.md for github; include contents of old INSTALL file 2020-04-03 Daniel Price * : Merge pull request #30 from chafarderix/hack Avoid some compile warnings in tests 2020-04-03 chafarderix * : Merge pull request #1 from danieljprice/master following upstream 2020-04-02 chafar * src/giza-box.c, src/giza-drivers.c, src/giza-format-number.c, src/giza-private.h, src/giza.h: new giza_set_number_format() sets format to use by giza_box() 2020-02-17 Daniel Price * : Merge pull request #28 from aardk/master For PNG images sometimes the internal logic would classify a single page 2019-03-20 Daniel Price * : Merge pull request #25 from markahutch/master Avoid compilation errors with Splash 2019-03-20 Daniel Price * : Merge pull request #26 from haavee/issue-21 Issue 21 2019-01-17 Harro Verkouter * src/giza-box-time.c: Fix unused expression result warning A no-op statement was still left in the code; it is now removed 2019-01-17 Harro Verkouter * src/giza-box-time.c: Remove C99 for-loop initial declarations There were still two C99-only idioms left which are now rewritten to use a single, not-quite-as-transient-as-hoped, variable char* to upcase the x/y option input strings. 2019-01-11 Mark Hutchison * src/giza-colour-palette.c: added Matlab style colour palette 2019-01-11 Mark Hutchison * src/giza-box-time.c, src/giza-drivers.c: define variables outside of for loop to avoid the 'initial declarations are only allowed in C99 mode' error 2018-11-28 Daniel Price * src/giza-driver-xw.c, src/giza-format-number.c: more compiler warnings fixed 2018-11-28 Daniel Price * src/giza-box-time.c: (giza-box-time) compiler warnings fixed 2018-11-28 Daniel Price * src/giza-box-time.c: (giza-box-time) rename routines to follow internal routine conventions consistent with rest of giza; whitespaces removed at end of lines 2018-11-28 Daniel Price * : commit fb8c0e00805f73dc7cde7f09d2484df722c887cb Author: Daniel Price Date: Wed Nov 28 11:15:29 2018 +1100 2018-11-28 Daniel Price * : commit 34cbae10601f412fbdf46de33f47baf433aec317 Author: Daniel Price Date: Wed Nov 28 10:11:47 2018 +1100 2018-11-28 Daniel Price * : Merge pull request #24 from haavee/issue-21 This should fix issue #21 "missing braces" 2018-11-27 Harro Verkouter * src/giza-driver-xw.c, src/giza-drivers.c: Synchronize XW device id with giza_device_t The global variable 'id' is now also used to address the instance of the GIZA_XWindow struct where giza_device_t Dev[id]'s properties are stored. This can be done because: - giza-driver-xw.c implements a shadow array, "XW", of euqal length as the Dev[...] array (GIZA_MAX_DEVICES - `giza_open_...()` now searches for an unused entry in Dev[...] when opening a device - `giza_close_device()` closes the correct device when it's, well, closed. If the entry happened to be an XWindow, the corresponding XW[id] struct will now also be properly closed. 2018-11-27 Harro Verkouter * src/giza-driver-null.c, src/giza-driver-pdf.c, src/giza-driver-png.c, src/giza-driver-ps.c, src/giza-driver-svg.c, src/giza-driver-xw.c: Fix device specific close fn's giza_open() now detects and handles errors occuring during setup of the new device. The device specific _giza_close_() functions needed to be updated to deal with partially/not fully initialized devices. For the XWindow driver, its shadow administration of GIZA_XWindow devices (the "XW[...]" array) needed to be managed slightly different, not unlinke how devices are now initialized/de-initialized in giza-drivers.c The global 'xid' variable was removed and replaced by a lookup in the (already existing) giza_xw_id[...] table. Thinking about it, it seems to me the whole shadow 'xid' administration can be simplified if Dev[N], if Dev[N] refers to an XWindow, stores its peculiars in XW[N]. `giza_open()` now already takes care of finding an empty slot and there should be no reason for the XWindow driver to use that assigned slot as well. A separate commit implementing that will follow, which makes that change opt-in. 2018-11-26 Harro Verkouter * src/giza-drivers.c, src/giza-private.h, src/giza-set-font-private.h, src/giza-set-font.c, src/giza.h: Font memory management changed In order to (1) prevent excessive font unload/load sequences and (2) proper support for per-device font handling and (3) simplifying font loading and (4) get a handle on memory management, the giza_set_font() implementation was changed. Fonts are now cached internally based on the primary key (font-family, slant, weight) and reference counted across open devices. Up to three mechanisms of loading a font are tried: FreeType, FontConfig and cairo_toy_font - depending on cairo version and wether cairo was compiled with support for that. FreeType/FontConfig library initialization code made more robust and handling error(s) and releasing allocated memory in such a case was improved. Extra code to ensure cache unloading at program end was added. 2018-11-23 Harro Verkouter * src/giza-box.c, src/giza-cpgplot.c, src/giza-format-number.c, src/giza-fortran.F90, src/giza.h: `giza_format_number()` string buffer length The `giza_format_number()` function writes unconditionally to a destination string buffer without being informed how large that buffer is. This commit adds an extra parameter to be passed to `giza_format_number()` - the size of the string buffer. It changes the implementation to take care of not writing outside the destination string's boundaries. It should be noted that this may have an effect on cpgnumb()/PGNUMB() because there is no officially documented necessity that the *string_length parameter in cpgnumb() has to contain the size of the buffer upon entry; the documentation only mentions the contents of that parameter are set on output to the number of characters written. I have checked the official PGPLOT libcpgplot binding and perl5-PGPLOT which both do this: both write the size of the FORTRAN string in the parameter before calling cpgnumb() or use a temporary variable and pass that size in. I have updated giza-fortran.F90 to do the same. The Python-PGPLOT binding (ppgplot) does not expose cpgnumb() so at this point that's not an issue. 2018-11-23 Harro Verkouter * src/giza-cpgplot.c, src/giza-drivers.c, src/giza.h: Fix multi dev handling (SIGSEGV, libc corruption) The giza library, specifically in `giza_open_device_size()` and `giza_close_device()`, did not handle multiple devices being opened and closed in random order - which is what my own application happens to do. The internal bookkeeping got out of sync with the user's device identification, leading to API calls wreaking havoc because they would apply to an unitialized giza_device_t entry or overwrite properties of a giza_device_t they weren't supposed to. (E.g. cpgopen() could easily overwrite an already open device entry, cpgclos() could fail because the internal bookkeeping had forgotten that the user's open device actually existed). Long story short: SIGSEGV and program termination because libc malloc had detected corruption of its internal structures ensued. In order to fix this a slightly larger than normal edit had to take place. Entries in the global giza_device_t array are now properly initialized and de-initialized to a known state, even when opening a device fails halfway through. PGEND() / cpgend() did not, contrary to documentation, close all current open devices; now it does. 2018-11-20 Daniel Price * docs/documentation/api.html: [web-bot] updated auto-generated documentation 2018-11-20 Daniel Price * configure, configure.ac: updated version number 2018-11-17 Daniel Price * : commit 2733835a13c73b272a5ff999f86906b7c8992bcc Author: Harro Verkouter Date: Fri Nov 16 17:55:41 2018 +0100 2018-11-15 Harro Verkouter * src/giza-drivers.c: Remove _giza_change_size() because it's not used anywhere anymore. 2018-11-15 Daniel Price * : Merge pull request #20 from haavee/issue-19 This fixes #19 build failure macports PPC 2018-11-14 Harro Verkouter * src/giza-cpgplot.c: Revert "Args swapped between API and giza implementation" This reverts commit c323737e7d49dd998d068b2964ffe76c86f648c5. Should be on a completely different branch! 2018-11-14 Harro Verkouter * src/giza-driver-xw-private.h, src/giza-driver-xw.c, src/giza-drivers.c, src/giza-paper.c, src/giza-private.h: Attempt to be more PGPLOT compatible * PGPAP() does not resize the window immediately anymore, only sets .resize flag. Only when moving to a new page the change in size takes effect * PGPAGE() skips asking for confirmation the first time * XWindow specific "_giza_change_size_xw()" removed - now handled better in giza_set_paper_size(). The resize flag is detected in _giza_change_page_xw() and handled correctly there. 2018-11-12 Harro Verkouter * src/giza-driver-xw.c, src/giza-environment.c: Savegame issue #18 2018-11-12 Harro Verkouter * src/giza-cpgplot.c: Args swapped between API and giza implementation giza_render has calling convention giza_render_*( ..., valMin, valMax, ...) whereas PGPLOT API cpggray(..., float fg, float bg, ...) but the parameters 'fg', 'bg' were passed to giza_render in that order as 'valMin', 'valMax' i.e. fg, bg are reversed 2018-11-09 Harro Verkouter * src/giza-box-time.c: This fixes #19 build failure macports PPC I erroneously used scoped for loop variables in a non-100% portable way. 2018-11-09 Daniel Price * : Merge pull request #16 from haavee/symbol-issues Fixes #5 Symbol issues 2018-11-08 Harro Verkouter * src/giza-points.c: Scale up symbols #-3..-8 They came out (noticeably) smaller in giza than in PGPLOT as far as I could tell. 2018-11-08 Harro Verkouter * src/giza-points.c: Scaled up the arrows (#28-31) a bit The arrows looked markedly smaller in giza than on the PGPLOT original. Scaled them up a bit. 2018-11-08 Harro Verkouter * src/giza-points.c: Fix #19, update #0, 6 Symbol #19 was not a hexagon with a cross but a larger open square than #6. The squares are also drawn with a slightly thinner line. 2018-11-08 Harro Verkouter * src/giza-points.c: Fix symbols #20 - 27 (inclusive) The open circles are now exponentially scaled and drawn with a slightly thinner line than before 2018-11-08 Harro Verkouter * src/giza-points.c: Fix symbols 12, 18 (5-pt star), #20 initiated Symbols 12 and 18 now are five-point stars, open and filled. Symbol 20 was entered as seven-point star but it should be a small open circle. Already changed it from _giza_star() => _giza_circle() but symbols 20-27 are a bit off anyway, so that's going to be fixed in a different commit. 2018-11-08 Harro Verkouter * src/giza-points.c: New line widths only used if you actually stroke 2018-11-08 Harro Verkouter * src/giza-points.c: Fix symbol 14 (open plus sign) 2018-11-08 Harro Verkouter * src/giza-points.c: Fix symbol #10 (concave rect) 2018-11-07 Harro Verkouter * src/giza-points.c: Fix symbols 7,13,15 The triangles 7, 13 were pointing the wrong way and symbol 15 is the star of David formed by overplotting two open triangles offset a little bit 2018-11-07 Harro Verkouter * : Merge remote-tracking branch 'upstream/master' 2018-10-31 Daniel Price * : Merge pull request #3 from haavee/master giza_parse_string() fix, add cpgqinf() support, fix critical bug found doing this 2018-09-06 Harro Verkouter * src/giza-cpgplot.c, src/giza-drivers-private.h, src/giza-drivers.c, src/giza-fortran.F90, src/giza.h: Support cpgqinf(), fix critical bug Found out that the fortron giza pgplot binding implemented PQQINF() (to query version &cet) but the C-language binding didn't. Whilst implementing cpgqinf() found that giza_query_device() and _giza_int_to_device() contained a serious bug, with SIGSEGV looming or loss of information. Both quoted functions copy information into a user allocated string buffer. Extract of relevant code with 'noise' deleted: _giza_int_to_device (int numDevice, char *DeviceName) { case GIZA_DEVICE_NULL: strncpy(DeviceName, "/null", sizeof(DeviceName)-1); break; .... The user allocated buffers are passed by pointer ("char* DeviceName") and the 'sizeof(...)' operator returns the size of the _pointer_ not the size of the buffer it's pointing at! Depending on the platform "sizeof(char*) - 1" evaluates to 3 (32 bit) or 7 (64 bit), irrespective of how many characters the user really allocated. This can lead to either: - overestimating the amount of characters available in case the user allocated less than 3 (or 7) bytes for their buffer. A strncpy() with a source longer than 3 (or 7) would then overwrite memory that it shouldn't, which in turn would lead to unpredictable behaviour at best and program termination via SIGSEGV at worst. - underestimating the amount characters available if the user allocated more than 3 (or 7) characters for their target buffer. In this case, the strncpy() with a source string > 3 (or 7) characters would truncate the output - e.g. the file name of a device would easily be > 7 characters long but at most 3 (or 7) of them would be copied. This would lead to unnecessary loss of information. In order to fix this the target buffer size must be explicitly passed to the functions by the caller. Thus the prototype of giza_query_device() needed to be altered and as a result the Fortran wrapper needed adapting to the new signature and pass in the extra variable accordingly. 2018-09-06 Harro Verkouter * src/giza-scanner.l, src/lex.yy.c: Fix backspace handling ... The meaning of the nGlyph index used in giza_parse_string changed subtly during development and the handling of backspace was not changed accordingly. The result was that "x^2\b_i" rendered fine but the unit superscript over the decimal point in PGTBOX() now looked horrible because the pen position was moved to an erroneous position. Sigh. In order to make "x-i-squared" render nicely it must now be spelled as: x^2\b\b_i with two backspaces. The first backs up over the superscript '2', the second backs up over the '^' superscript operation; when entering the superscript the baseline of the font and the current pen position is changed immediately. So if that is not undone before staring to render further characters, the pen position is not where you hoped it would be. 2018-09-06 Daniel Price * docs/news/index.html: updated docs 2018-09-06 Daniel Price * docs/documentation/api.html, docs/documentation/cpgplot-status.html, docs/documentation/pgplot-status.html: [web-bot] updated auto-generated documentation 2018-09-06 Daniel Price * configure: updated configure script 2018-09-06 Daniel Price * AUTHORS, README, configure.ac, src/giza-cpgplot.c, src/giza-pgplot.f90: updated docs and version number to following merge 2018-09-06 Daniel Price * src/giza-points.c: (giza_points) revert marker size to behaviour on master 2018-09-06 Daniel Price * src/giza-driver-xw.c: (xw) spaces at end of lines removed 2018-09-06 Daniel Price * : Merge https://github.com/haavee/giza into haavee-master 2018-09-05 Harro Verkouter * : commit 553bf85db2f60aaf908113322b0cae4c0d0836de Author: Harro Verkouter Date: Wed Sep 5 15:35:47 2018 +0200 2018-09-05 Harro Verkouter * src/giza-set-font.c, src/giza.h: giza_set_font_*(...) take const char* Sometimes compile time static strings are fed into giza_set_font*(...) calls but their prototype is "char *", implying mutable strings. None of the functions actually modify their argument so it probably is better to make this explicit in their prototypes. 2018-09-04 Harro Verkouter * src/giza-driver-xw.c, src/giza-drivers.c: Better XWindow resizing implementation It turned out that the XWindow resizing wasn't handled correctly in all cases; notable pgdemo13 (with two x-windows) exposed a problem in the code in the first window, the one with the choice menu. More often than not it would show ellipses where circles should be drawn and the text was (way) ouside the window. What happened was two calls to giza_change_page_xw() quickly after each other. The first had Dev[id].resize = 1 (from PGPAP(...) in pgdemo13), which triggered an XResizeWindow(...) in the code, to change the size of the XWindow to the requested device size. The next call entered with Dev[id].resize = 0 (because that was already handled) ... but that one detected a window geometry change! Upon inspection it turned out that, as far as X11 was concerned, the window still had the /old/ size whilst our internal bookkeeping was already updated with the requested size. Turns out that the XResizeWindow() does not take effect immediately. So the code now waits for ConfigureNotify events until the requested window size has been achieved. Now it works reliably and windows can be resized between plotting. 2018-08-30 Harro Verkouter * src/giza-io-private.h, src/giza-io.c: Enable formatted warning/error messages (compat) By changing _giza_warning() and _giza_error() prototype (and implementation) slightly it is now possible to make the 'message' parameter be a formatting string (cf. printf("formatting string %s = %d", s, i)) Now this is possible: _giza_warning("giza_parse_string", "Invalid Hershey number %d", hershey); _giza_error("giza_parse_string", "Unrecognized token #%d '%s'", token, yytext); Existing _giza_warning()/_giza_error() calls are completely unaffected by this. 2018-08-30 Harro Verkouter * src/giza-driver-xw.c: no XWindow resize waiting for keypress Whilst the system is waiting for a keypress, do not honour window resizing requests. PGPLOT also does not do this. 2018-08-30 Harro Verkouter * src/giza-box.c: Fixed earlier broken 'repair' Sometimes the PGPLOT doc is somewhat ambiguous but not for 'N' and 'M' options: both imply labels have to be drawn, only 'M' sais to do so in the unconvential location. Ambiguity example: does 'L' (logarithmic labelling) *imply* 'N' or 'M' ("write labels")? Or is 'L' only honoured if either 'N' or 'M' is specified (which is how the code currently works). 2018-08-30 Harro Verkouter * src/giza-box.c: Add support for 'M' option to PG(T)BOX When it comes to writing labels PG(T)BOX supports the following: -N :- Label the axis (conventional, below/left viewport) -M :- Put labels in the unconvential location (above/right viewport) The 'M' option was not implemented by giza so I added it. Whilst at it removed a few levels of somewhat unnecessary if()'s by adding a high-level check and sometimes continue'ing from a loop if the rest of the loop body is precluded from being executed anyway. 2018-08-30 Harro Verkouter * src/giza-box-time.c: Fixed minor bugs (logic, off-by-one, missing /) There were two off-by-one lost-in-FORTRAN-to-C-translation: - using number of items as last accessible index ok in fortran, not so much in C (a classic) - end condition off by one because of pretty much the same in fortran "<" must be <= in C (if C-style counting with fortran meaning of index) I condensed what I thought three levels of fortran IF .. END IF into a single C "if( x && y && y)" but missed that the 3rd IF was a single-statement and did not introduce the 3rd 'and' ... IF x THEN IF y THEN IF z END IF END IF at first erroneously translated by me into if( x && y && z ) { } now reads if( x && y ) { if( z ) } And finally in the specification of the super/subscript label formats I had forgotten to escape the backslash with a backslash in the strings. 2018-08-30 Harro Verkouter * src/giza-box.c: y-axis ticks on the right were drawn wrong side Obviously the previous edit introduced a sign error :-) If y-axis ticks were drawn on the right hand side they'd be drawn the same direction as the ones on the left-hand side. Fixed. 2018-08-30 Harro Verkouter * src/giza-box.c: Support for PGBOX 'I' and 'P' options and bug fix giza's pgbox(...) routine did not support the PGPLOT options 'I' and 'P': -I: Invert tick marks - write them outside the viewport in stead of inside (default) -P: Project major tick marks outside the viewport (ignored if 'I' also specified) Fixed bug where tickmarks on 'the other side' of the frame were drawn in the same direction but they need to be inverted: If tick marks on the bottom are drawn inwards (i.e. up) then at the top they must be drawn downwards to achieve the same effect. The existing code drew the top tick marks outside the viewport because it would draw them 'up' as well. 2018-08-30 Harro Verkouter * src/giza-box.c: Fix axis ticks not being drawn if axis 'reversed' In checking pgdemo1 certain axes did not display any tick marks at all! This was traced to be when the window set through pgswin() was such that Dev[id].Win.[xy]max < Dev[id].Win.[xy]min, i.e. the axis is reversed: the values decrease towards the right (X) or top (Y) 2018-08-22 Harro Verkouter * : commit c00f33c3c943fba12f94916ed468f76afdd76bd1 Author: Harro Verkouter Date: Fri Aug 17 17:38:56 2018 +0200 2018-08-16 Harro Verkouter * src/giza-cursor-routines.c: fix pgdemo5 misbehaving of pgolin/pglcur pgdemo5 with giza master branch draws all subsequent polygons in black whereas PGPLOT draws subsequenct polygons in different colours by incrementing colour index at each new polygon. 2018-08-16 Harro Verkouter * src/giza-viewport.c: Revert "fix PGPLOT incompatibility" This reverts commit e9644f6b098e54fb2cd246434d8d1c58fc6e1ba1. Breaks pgdemo2 (pgvsiz() function). It was not specifically a bug or fix and it doesn't hurt keeping the original code but it hurts not keeping the original version ... ;-) 2018-08-16 Harro Verkouter * src/giza-driver-xw.c, src/giza-drivers.c: revert to drawing to pixamp, XCopyArea to window Turns out there's code relying on drawing onto the pixmap and in general, direct drawing to the window is probably best avoided 2018-08-16 Daniel Price * : commit da2f2eca704c4002386610f8f5b344f5f9465e17 Merge: 6c8ce0d 99aaa05 Author: Daniel Price Date: Thu Aug 16 10:35:33 2018 +1000 2018-08-15 eee software boss * src/giza-box-time.c: fix sigsegv in pgtbox() Using printf()'s Parameter field(*) I used 0-based counting for the argument replacement fields but it has to be 1-based for argument 0 is the format string itself ... (*) https://en.wikipedia.org/wiki/Printf_format_string#Parameter_field 2018-08-14 Harro Verkouter * src/giza-print-id.c: Fix compiler warning prototype for sprintf() missing 2018-08-14 Harro Verkouter * src/giza-cpgplot.c: fix off-by-one between external/internal device id When using multiple open devices simultaneously, the returned device id from cpgoen should be usable to later select that open device. There was an extra +/- 1 mismatch between cpgopen and cpgslct. 2018-08-14 Harro Verkouter * src/giza-drivers-private.h, src/giza-drivers.c, src/giza-io.c: fix compiler warning casting const away When splitting the device string sometimes 'const char*' was assigned to 'char *' - which the compiler doesn't like. Fixed by changing prototype and destination data type of the split string. 2018-08-14 Harro Verkouter * src/giza-io.c: fix warning about unused return value fgets() returns an error code and the caller is expected to check that return valuer; compiler verifies this. 2018-08-14 Harro Verkouter * src/giza-box-time.c: Support for pgtbox() The existing pgtbox() redirected to pgbox(). For astronomy application(s) time labelling is very important and a highly desirable property. The existing PGTBOX() from the PGPLOT source code was ported into an initial working version, behaving identically, modulo porting bugs. 2018-08-14 Harro Verkouter * src/giza-scanner.l, src/lex.yy.c: Support for backspace (\b) in printing strings For time labelling to look good it is 'necessary' to make the superscript appear on top of e.g. the decimal point. This can be done if 'backspace' is supported - backing up the text by one or more characters. This necessitated rewriting the giza_parse_string() a bit because in the current version backing up to a previous character's position was impossible. 2018-08-14 Harro Verkouter * src/giza-viewport.c: fix PGPLOT incompatibility When setting a viewport (pgsvp) the window should not be automatically set (pgswin), cf. "pgsvp.f" source code 2018-08-14 Harro Verkouter * src/giza-io.c: fix warning about unused return value fgets() returns an error code and the caller is expected to check that return valuer; compiler verifies this. 2018-08-14 Harro Verkouter * src/giza-drivers-private.h, src/giza-drivers.c, src/giza-io.c: fix compiler warning casting const away When splitting the device string sometimes 'const char*' was assigned to 'char *' - which the compiler doesn't like. Fixed by changing prototype and destination data type of the split string. 2018-08-14 Harro Verkouter * src/giza-print-id.c: Fix compiler warning prototype for sprintf() missing 2018-08-14 Harro Verkouter * src/giza-driver-xw.c, src/giza-drivers.c: fix external XWindow resize If plotting to an XWindow and the window was resized by the user before re-plotting, the draw surface would not get updated to reflect the new XWindow size. Fixes necessary: - detect if the XWindow was resized (in handle change to new page event) and set resize flag for the device in such a case - the PANEL size(s) were not updated: this was the main culprit. The window and cairo surface were always changed upon a new XWindow page but the panel sizes, kept internally in units of pixels(!) were never updated. Thus even if the XWindow was made smaller/larger, the amount of pixels actually drawn was never changed. 2018-08-14 Harro Verkouter * src/giza-cpgplot.c: fix off-by-one between external/internal device id When using multiple open devices simultaneously, the returned device id from cpgoen should be usable to later select that open device. There was an extra +/- 1 mismatch between cpgopen and cpgslct. 2018-05-14 Daniel Price * INSTALL: updated pgplot instructions 2018-05-14 Daniel Price * INSTALL: (install) added instructions for running basic examples to INSTALL file 2018-03-07 Daniel Price * docs/news/index.html, src/Makefile.in, test/C/Makefile.in, test/F90/Makefile.in: docs for 0.9.5 2018-03-07 Daniel Price * Makefile.in, aclocal.m4, configure, configure.ac: (config) updated configure scripts 2018-03-07 Daniel Price * .mailmap, configure.ac: 0.9.5 2018-03-05 Daniel Price * ChangeLog, NEWS, docs/news/index.html: 0.9.5 2018-03-05 Daniel Price * docs/documentation/api.html, docs/documentation/cpgplot-status.html: [web-bot] updated auto-generated documentation 2018-03-05 Daniel Price * doc/api.pl: (web) updated links in api script 2018-03-05 Daniel Price * docs/samples/index.html: (web) updated links 2018-03-05 Daniel Price * docs/documentation/api.html, docs/documentation/gettingstarted.html, docs/documentation/installation.html: (web) updated links 2018-03-05 Daniel Price * docs/contact/index.html, docs/documentation/index.html, docs/download/index.html, docs/news/index.html, docs/samples/index.html: (web) updated links 2018-03-05 Daniel Price * docs/contact/index.html, docs/documentation/index.html, docs/download/index.html, docs/index.html, docs/news/index.html, docs/samples/index.html: (web) updated links 2018-03-05 Daniel Price * docs/contact/index.html, docs/documentation/api-ref.html, docs/documentation/api.html, docs/documentation/api.shtml, docs/documentation/cpgplot-status.html, docs/documentation/gettingstarted.c, docs/documentation/gettingstarted.html, docs/documentation/index.html, docs/documentation/installation.html, docs/documentation/pgplot-status.html, docs/documentation/pgplot.shtml, docs/download/index.html, docs/news/index.html, docs/samples/index.html: (giza) added website for github pages build 2018-03-05 Daniel Price * docs/index.html, docs/style.css: (web) test github pages 2017-11-23 Daniel Price * src/giza-box.c: (giza_box) bug fix with drawing major axis only; also with drawing grid (iaxis=1) git-svn-id: https://svn.code.sf.net/p/giza/code@533 952f94de-64c9-43ce-8081-c12abd9885bf 2017-09-07 Daniel Price * .gitignore: updated .gitignore to ignore .lo and .la files git-svn-id: https://svn.code.sf.net/p/giza/code@532 952f94de-64c9-43ce-8081-c12abd9885bf 2017-09-07 Daniel Price * src/giza-viewport.c, src/giza-window.c: fix compiler warning in giza-viewport/giza-window git-svn-id: https://svn.code.sf.net/p/giza/code@531 952f94de-64c9-43ce-8081-c12abd9885bf 2017-09-07 Daniel Price * src/giza-box.c: (giza_box) bug fix with spacing between box and numbers when numbers written on top of box git-svn-id: https://svn.code.sf.net/p/giza/code@530 952f94de-64c9-43ce-8081-c12abd9885bf 2017-07-22 Joachim Frieben * src/giza-print-id.c: fix string allocation (thanks to Ole Streicher) git-svn-id: https://svn.code.sf.net/p/giza/code@529 952f94de-64c9-43ce-8081-c12abd9885bf 2017-04-24 Daniel Price * src/giza-error-bars.c: bug fix with shaded error bars git-svn-id: https://svn.code.sf.net/p/giza/code@528 952f94de-64c9-43ce-8081-c12abd9885bf 2016-07-23 Joachim Frieben * src/giza-drivers.c: Fix off-by-one in string definition (thanks to Ole Streicher) git-svn-id: https://svn.code.sf.net/p/giza/code@527 952f94de-64c9-43ce-8081-c12abd9885bf 2016-06-05 Daniel Price * src/giza-driver-xw.c: (giza_driver_xw) blank screen issue on Linux fixed (thanks to Ole Streicher); also enabled XW error handling routine git-svn-id: https://svn.code.sf.net/p/giza/code@526 952f94de-64c9-43ce-8081-c12abd9885bf 2016-06-03 Daniel Price * src/giza-scanner.l, src/lex.yy.c: (giza-scanner) declared internal functions static; recompiled flex file git-svn-id: https://svn.code.sf.net/p/giza/code@525 952f94de-64c9-43ce-8081-c12abd9885bf 2016-06-03 Daniel Price * src/giza-band.c, src/giza-colour-index.c: (libgiza) build failures from previous commit fixed git-svn-id: https://svn.code.sf.net/p/giza/code@524 952f94de-64c9-43ce-8081-c12abd9885bf 2016-06-03 Daniel Price * src/giza-band.c, src/giza-colour-index.c, src/giza-cpgplot.c, src/giza-warnings.c: (libgiza) shared variables declared static where possible (thanks to Ole Streicher) git-svn-id: https://svn.code.sf.net/p/giza/code@523 952f94de-64c9-43ce-8081-c12abd9885bf 2016-06-03 Daniel Price * src/giza-save.c: (giza_save) shared variables declared static (thanks to Ole Streicher) git-svn-id: https://svn.code.sf.net/p/giza/code@522 952f94de-64c9-43ce-8081-c12abd9885bf 2016-05-30 Daniel Price * src/giza-cpgplot.c: (cpgplot) typo in cpgplot interface fixed (cpghi2D->cpghi2d); thanks to Ole Streicher git-svn-id: https://svn.code.sf.net/p/giza/code@521 952f94de-64c9-43ce-8081-c12abd9885bf 2016-01-19 Joachim Frieben * Makefile.am, Makefile.in, src/Makefile.am, src/Makefile.in: Move directive .NOTPARALLEL to the correct location git-svn-id: https://svn.code.sf.net/p/giza/code@520 952f94de-64c9-43ce-8081-c12abd9885bf 2016-01-18 Daniel Price * Makefile.am, Makefile.in: bug fix: .NOTPARALLEL: instead of .NOTPARALLEL (thanks to Joachim Frieben) git-svn-id: https://svn.code.sf.net/p/giza/code@519 952f94de-64c9-43ce-8081-c12abd9885bf 2016-01-18 Daniel Price * Makefile.am, Makefile.in: added .NOTPARALLEL to avoid build problems git-svn-id: https://svn.code.sf.net/p/giza/code@518 952f94de-64c9-43ce-8081-c12abd9885bf 2015-12-27 Joachim Frieben * README: update postal address of the FSF git-svn-id: https://svn.code.sf.net/p/giza/code@517 952f94de-64c9-43ce-8081-c12abd9885bf 2015-12-22 Joachim Frieben * COPYING: update to current GPLv2 git-svn-id: https://svn.code.sf.net/p/giza/code@516 952f94de-64c9-43ce-8081-c12abd9885bf 2015-12-12 Joachim Frieben * src/Makefile.am, src/Makefile.in: Install giza.mod in the module directory git-svn-id: https://svn.code.sf.net/p/giza/code@515 952f94de-64c9-43ce-8081-c12abd9885bf 2015-12-12 Joachim Frieben * src/giza-points.c: Draw correct symbol for marker type -4 git-svn-id: https://svn.code.sf.net/p/giza/code@514 952f94de-64c9-43ce-8081-c12abd9885bf 2015-11-20 Daniel Price * Makefile.in, aclocal.m4, configure, configure.ac, src/Makefile.in, test/C/Makefile.in, test/F90/Makefile.in, test/Makefile.in: use AM_MAINTAINER_MODE([disable]) to avoid problems with timestamps if exported from svn git-svn-id: https://svn.code.sf.net/p/giza/code@513 952f94de-64c9-43ce-8081-c12abd9885bf 2015-11-17 Daniel Price * src/Makefile.am, src/Makefile.in: added .h files to Makefile.am so that make dist works git-svn-id: https://svn.code.sf.net/p/giza/code@512 952f94de-64c9-43ce-8081-c12abd9885bf 2015-11-17 Daniel Price * AUTHORS, ChangeLog, NEWS: 0.9.4 git-svn-id: https://svn.code.sf.net/p/giza/code@511 952f94de-64c9-43ce-8081-c12abd9885bf 2015-11-13 Daniel Price * src/giza-points.c: patch for negative marker indices; now matches expected PGPLOT behaviour; contributed by Joachim Frieben git-svn-id: https://svn.code.sf.net/p/giza/code@510 952f94de-64c9-43ce-8081-c12abd9885bf 2015-11-03 Daniel Price * INSTALL: updated INSTALL instructions git-svn-id: https://svn.code.sf.net/p/giza/code@509 952f94de-64c9-43ce-8081-c12abd9885bf 2015-11-03 Daniel Price * configure, configure.ac: added fallback options for cairo and x11 on OS/X if pkg-config not available git-svn-id: https://svn.code.sf.net/p/giza/code@508 952f94de-64c9-43ce-8081-c12abd9885bf 2015-11-03 Daniel Price * src/Makefile.am, src/Makefile.in: libpgplot and libcpgplot link to libgiza instead of including .o files; faster build (thanks to Joachim Frieben) git-svn-id: https://svn.code.sf.net/p/giza/code@507 952f94de-64c9-43ce-8081-c12abd9885bf 2015-11-02 Daniel Price * src/Makefile.am, src/Makefile.in: build libgiza before libcpgplot; also copy giza-fortran.F90 to include directory git-svn-id: https://svn.code.sf.net/p/giza/code@506 952f94de-64c9-43ce-8081-c12abd9885bf 2015-11-01 Daniel Price * configure, configure.ac: update libtool version info + added comments git-svn-id: https://svn.code.sf.net/p/giza/code@505 952f94de-64c9-43ce-8081-c12abd9885bf 2015-11-01 Daniel Price * test/{ => C}/test-error-bars-2.c: test-error-bars-2.c -> test/C (thanks to Joachim Frieben) git-svn-id: https://svn.code.sf.net/p/giza/code@504 952f94de-64c9-43ce-8081-c12abd9885bf 2015-11-01 Daniel Price * INSTALL: updated INSTALL instructions for autotools build (thanks to Joachim Frieben) git-svn-id: https://svn.code.sf.net/p/giza/code@503 952f94de-64c9-43ce-8081-c12abd9885bf 2015-11-01 Daniel Price * : removed obsolete dirs in svn (thanks to Joachim Frieben) git-svn-id: https://svn.code.sf.net/p/giza/code@502 952f94de-64c9-43ce-8081-c12abd9885bf 2015-10-30 lolo-2 * src/giza-character-size.c: typo in giza_set_character_height_float doc string (missing _float) git-svn-id: https://svn.code.sf.net/p/giza/code@500 952f94de-64c9-43ce-8081-c12abd9885bf 2015-10-30 Daniel Price * Makefile.in, aclocal.m4, configure, configure.ac, src/Makefile.am, src/Makefile.in, test/C/Makefile.in, test/F90/Makefile.in, test/Makefile.in: updated build to use pkg-config to find X11 and cairo libs git-svn-id: https://svn.code.sf.net/p/giza/code@499 952f94de-64c9-43ce-8081-c12abd9885bf 2015-10-30 Daniel Price * configure.ac, src/giza-version.h.in: added versioning of giza-version.h to configure stuff git-svn-id: https://svn.code.sf.net/p/giza/code@498 952f94de-64c9-43ce-8081-c12abd9885bf 2015-10-30 Daniel Price * build/compile, build/config.guess, build/config.sub, build/depcomp, build/install-sh, build/ltmain.sh, build/missing, build/test-driver: added autoconf scripts to build dir git-svn-id: https://svn.code.sf.net/p/giza/code@497 952f94de-64c9-43ce-8081-c12abd9885bf 2015-10-30 Daniel Price * Makefile.in, config.h.in, configure, src/Makefile.in, test/C/Makefile.in, test/F90/Makefile.in, test/Makefile.in: added autotools-generated files for distribution (thanks to Joachim Frieben) git-svn-id: https://svn.code.sf.net/p/giza/code@496 952f94de-64c9-43ce-8081-c12abd9885bf 2015-10-30 Daniel Price * test/Makefile.am: replaced Makefiles with automake and autoconf scripts (thanks to Joachim Frieben) git-svn-id: https://svn.code.sf.net/p/giza/code@495 952f94de-64c9-43ce-8081-c12abd9885bf 2015-10-30 Daniel Price * Makefile, Makefile.am, aclocal.m4, build/Makefile, configure.ac, m4/libtool.m4, m4/ltoptions.m4, m4/ltsugar.m4, m4/ltversion.m4, m4/lt~obsolete.m4, src/Makefile.am, test/C/Makefile.am, test/F90/Makefile.am, test/Makefile: replaced Makefiles with automake and autoconf scripts (thanks to Joachim Frieben) git-svn-id: https://svn.code.sf.net/p/giza/code@494 952f94de-64c9-43ce-8081-c12abd9885bf 2015-10-30 Daniel Price * src/giza-band-private.h, src/giza-band.c, src/giza-colour-index.c, src/giza-colour-private.h, src/giza-drivers.c, src/giza-private.h: bug fixes with variables defined in headers; now uses extern and declared in .c files git-svn-id: https://svn.code.sf.net/p/giza/code@493 952f94de-64c9-43ce-8081-c12abd9885bf 2015-10-30 Daniel Price * src/cpgplot.pc.in, src/giza.pc.in, src/pgplot.pc.in: added pkg-config metadata files (thanks to Joachim Frieben) git-svn-id: https://svn.code.sf.net/p/giza/code@492 952f94de-64c9-43ce-8081-c12abd9885bf 2015-10-30 Daniel Price * ChangeLog, CHANGES => NEWS: CHANGES->NEWS and added ChangeLog (thanks to Joachim Frieben) git-svn-id: https://svn.code.sf.net/p/giza/code@491 952f94de-64c9-43ce-8081-c12abd9885bf 2015-10-30 Daniel Price * include/.gitignore, lib/.gitignore: removed include and lib dirs (thanks to Joachim Frieben) git-svn-id: https://svn.code.sf.net/p/giza/code@490 952f94de-64c9-43ce-8081-c12abd9885bf 2015-10-30 Daniel Price * doc/cpgplot_status.pl, doc/get-fortran-params.pl, doc/pgplot_status.pl: perl scripts updated to point to ../src instead of ../interface (thanks to Joachim Frieben) git-svn-id: https://svn.code.sf.net/p/giza/code@489 952f94de-64c9-43ce-8081-c12abd9885bf 2015-10-30 Daniel Price * {include => src}/cpgplot.h, {include => src}/giza-shared.h, {include => src}/giza.h: include/*.h->src (thanks to Joachim Frieben) git-svn-id: https://svn.code.sf.net/p/giza/code@488 952f94de-64c9-43ce-8081-c12abd9885bf 2015-10-30 Daniel Price * {interface => src}/giza-cpgplot.c, {interface => src}/giza-fortran.F90, {interface => src}/giza-pgplot.f90: interface/*->src (thanks to Joachim Frieben) git-svn-id: https://svn.code.sf.net/p/giza/code@487 952f94de-64c9-43ce-8081-c12abd9885bf 2015-10-30 Daniel Price * test/test-2D.f90, test/test-XOpenDisplay.c, test/test-arrow.c, test/test-band.c, test/test-box.c, test/test-cairo-xw.c, test/test-change-page.c, test/test-circle.c, test/test-colour-index.c, test/test-contour.c, test/test-environment.c, test/test-error-bars.c, test/test-format-number.c, test/test-fortran.f90, test/test-giza-xw.c, test/test-line-cap.c, test/test-line-style.c, test/test-openclose.c, test/test-pdf.c, test/test-pgaxis.f90, test/test-pgncur.f90, test/test-png.c, test/test-points.c, test/test-qtext.c, test/test-rectangle.c, test/test-render.c, test/test-set-line-width.c, test/test-svg.c, test/test-vector.c, test/test-window.c: test->test/C test/F90 (thanks to Joachim Frieben) git-svn-id: https://svn.code.sf.net/p/giza/code@486 952f94de-64c9-43ce-8081-c12abd9885bf 2015-10-30 Daniel Price * test/C/test-XOpenDisplay.c, test/C/test-arrow.c, test/C/test-band.c, test/C/test-box.c, test/C/test-cairo-xw.c, test/C/test-change-page.c, test/C/test-circle.c, test/C/test-colour-index.c, test/C/test-contour.c, test/C/test-environment.c, test/C/test-error-bars.c, test/C/test-format-number.c, test/C/test-giza-xw.c, test/C/test-line-cap.c, test/C/test-line-style.c, test/C/test-openclose.c, test/C/test-pdf.c, test/C/test-png.c, test/C/test-points.c, test/C/test-qtext.c, test/C/test-rectangle.c, test/C/test-render.c, test/C/test-set-line-width.c, test/C/test-svg.c, test/C/test-vector.c, test/C/test-window.c, test/F90/test-2D.f90, test/F90/test-fortran.f90, test/F90/test-pgaxis.f90, test/F90/test-pgncur.f90: test->test/C test/F90 (thanks to Joachim Frieben) git-svn-id: https://svn.code.sf.net/p/giza/code@485 952f94de-64c9-43ce-8081-c12abd9885bf 2015-10-30 Daniel Price * {docs => doc}/api.pl, {docs => doc}/cpgplot_status.pl, {docs => doc}/get-fortran-params.pl, {docs => doc}/get-source-files.pl, {docs => doc}/pgplot_status.pl: docs->doc (thanks to Joachim Frieben) git-svn-id: https://svn.code.sf.net/p/giza/code@484 952f94de-64c9-43ce-8081-c12abd9885bf 2015-10-29 lolo-2 * include/giza.h: added giza_rectangle_rounded and giza_rectangle_rounded_float functions declarations git-svn-id: https://svn.code.sf.net/p/giza/code@483 952f94de-64c9-43ce-8081-c12abd9885bf 2015-10-29 lolo-2 * test/test-error-bars-2.c: added test-error-bars-2.c file for all direction values (included shaded mode) git-svn-id: https://svn.code.sf.net/p/giza/code@482 952f94de-64c9-43ce-8081-c12abd9885bf 2015-10-29 lolo-2 * src/giza-error-bars.c: fix error bars bug in shaded region mode (dir = 9) git-svn-id: https://svn.code.sf.net/p/giza/code@481 952f94de-64c9-43ce-8081-c12abd9885bf 2015-10-20 Daniel Price * build/Makefile: (os/x) fixed X11 library path for OS/X El Capitan git-svn-id: https://svn.code.sf.net/p/giza/code@480 952f94de-64c9-43ce-8081-c12abd9885bf 2015-04-27 Daniel Price * README: updated readme git-svn-id: https://svn.code.sf.net/p/giza/code@479 952f94de-64c9-43ce-8081-c12abd9885bf 2015-04-27 Daniel Price * CHANGES: Changelog updated for 0.9.3 git-svn-id: https://svn.code.sf.net/p/giza/code@478 952f94de-64c9-43ce-8081-c12abd9885bf 2015-04-17 Daniel Price * build/Makefile: version bumped to 0.9.3 git-svn-id: https://svn.code.sf.net/p/giza/code@477 952f94de-64c9-43ce-8081-c12abd9885bf 2015-04-17 Daniel Price * build/Makefile: add -I$(PREFIX)/include/cairo to include flags git-svn-id: https://svn.code.sf.net/p/giza/code@476 952f94de-64c9-43ce-8081-c12abd9885bf 2015-04-17 Daniel Price * src/giza-io.c: flushing achieved with fflush instead of getchar to avoid unnecessary hangs git-svn-id: https://svn.code.sf.net/p/giza/code@475 952f94de-64c9-43ce-8081-c12abd9885bf 2015-04-16 Daniel Price * src/giza-io.c: flush stdin after giza prompt to avoid repeated device tries git-svn-id: https://svn.code.sf.net/p/giza/code@474 952f94de-64c9-43ce-8081-c12abd9885bf 2015-04-16 Daniel Price * src/giza-drivers.c, src/giza-io.c, src/giza-private.h: BUG FIX with long device names; string length increased to 256 chars; added error checks for strings too long (thanks to Hugh Williams) git-svn-id: https://svn.code.sf.net/p/giza/code@473 952f94de-64c9-43ce-8081-c12abd9885bf 2015-04-16 Daniel Price * src/giza-driver-png.c: better error handling in png device (thanks to Hugh Williams) git-svn-id: https://svn.code.sf.net/p/giza/code@472 952f94de-64c9-43ce-8081-c12abd9885bf 2015-01-28 Daniel Price * test/Makefile: added testpg target to compile pgplot tests (thanks to Joachim Frieben) git-svn-id: https://svn.code.sf.net/p/giza/code@471 952f94de-64c9-43ce-8081-c12abd9885bf 2015-01-28 Daniel Price * test/Makefile, test/test-pdf.c, test/test-svg.c: added separate test-svg; test-pdf now outputs pdf git-svn-id: https://svn.code.sf.net/p/giza/code@470 952f94de-64c9-43ce-8081-c12abd9885bf 2015-01-28 Daniel Price * test/test-png.c: test-png spits out sensible number of files git-svn-id: https://svn.code.sf.net/p/giza/code@469 952f94de-64c9-43ce-8081-c12abd9885bf 2015-01-28 Daniel Price * test/test-png.c: test-png spits out sensible number of files git-svn-id: https://svn.code.sf.net/p/giza/code@468 952f94de-64c9-43ce-8081-c12abd9885bf 2015-01-28 Daniel Price * test/test-arrow.c: test-arrow now works as expected (thanks to Joachim Frieben) git-svn-id: https://svn.code.sf.net/p/giza/code@467 952f94de-64c9-43ce-8081-c12abd9885bf 2015-01-28 Daniel Price * test/Makefile, test/test-2D.f90: added test-2D to default tests git-svn-id: https://svn.code.sf.net/p/giza/code@466 952f94de-64c9-43ce-8081-c12abd9885bf 2015-01-28 Daniel Price * test/Makefile, test/{test-xw.c => test-giza-xw.c}: renamed test-xw.c->test-giza-xw.c (thanks to Joachim Frieben) git-svn-id: https://svn.code.sf.net/p/giza/code@465 952f94de-64c9-43ce-8081-c12abd9885bf 2015-01-28 Daniel Price * test/Makefile, test/test-fortran.f90: fixed build of test-fortran git-svn-id: https://svn.code.sf.net/p/giza/code@464 952f94de-64c9-43ce-8081-c12abd9885bf 2015-01-28 Daniel Price * build/Makefile: added FFLAGS setting and -fPIC to Makefile git-svn-id: https://svn.code.sf.net/p/giza/code@463 952f94de-64c9-43ce-8081-c12abd9885bf 2015-01-05 Daniel Price * CHANGES: updated ChangeLog for 0.9.2 git-svn-id: https://svn.code.sf.net/p/giza/code@462 952f94de-64c9-43ce-8081-c12abd9885bf 2015-01-04 Daniel Price * build/Makefile: 0.9.2 git-svn-id: https://svn.code.sf.net/p/giza/code@461 952f94de-64c9-43ce-8081-c12abd9885bf 2015-01-04 Daniel Price * build/Makefile: use $(FC) instead of $(LIBTOOL) to compile shared Fortran library (thanks to Sean Farley) git-svn-id: https://svn.code.sf.net/p/giza/code@460 952f94de-64c9-43ce-8081-c12abd9885bf 2014-11-11 Daniel Price * src/giza-line-style-private.h, src/giza-line-style.c: fine-tuning of line styles; added offset to patterns to give better legend git-svn-id: https://svn.code.sf.net/p/giza/code@459 952f94de-64c9-43ce-8081-c12abd9885bf 2014-11-06 Daniel Price * src/giza-fill.c: bug fix with typedef of line width in giza fill (thanks to W. Dehnen) git-svn-id: https://svn.code.sf.net/p/giza/code@458 952f94de-64c9-43ce-8081-c12abd9885bf 2014-08-28 Daniel Price * build/Makefile: bug fix with giza.mod in install target git-svn-id: https://svn.code.sf.net/p/giza/code@457 952f94de-64c9-43ce-8081-c12abd9885bf 2014-08-28 Daniel Price * build/Makefile: reverted build targets; also install giza.mod into include dir by default git-svn-id: https://svn.code.sf.net/p/giza/code@456 952f94de-64c9-43ce-8081-c12abd9885bf 2014-08-27 Daniel Price * build/Makefile: workaround for macports issue with all target git-svn-id: https://svn.code.sf.net/p/giza/code@455 952f94de-64c9-43ce-8081-c12abd9885bf 2014-08-27 Daniel Price * CHANGES, build/Makefile: version 0.9.1 git-svn-id: https://svn.code.sf.net/p/giza/code@454 952f94de-64c9-43ce-8081-c12abd9885bf 2014-08-27 Daniel Price * test/Makefile, test/test-pgaxis.f90: added test for pgaxis routines git-svn-id: https://svn.code.sf.net/p/giza/code@453 952f94de-64c9-43ce-8081-c12abd9885bf 2014-08-27 Daniel Price * Makefile, build/Makefile: minor changes to build: default target is default, not all to avoid macports issue git-svn-id: https://svn.code.sf.net/p/giza/code@452 952f94de-64c9-43ce-8081-c12abd9885bf 2014-08-26 Daniel Price * interface/giza-pgplot.f90, src/giza-cursor-routines.c, test/Makefile, test/test-pgncur.f90: implemented sorting in mark_cursor/PGNCUR git-svn-id: https://svn.code.sf.net/p/giza/code@451 952f94de-64c9-43ce-8081-c12abd9885bf 2014-08-26 Daniel Price * src/giza-error-bars.c: bug fix with shaded error bar plotting (causing shading of outside not inside) git-svn-id: https://svn.code.sf.net/p/giza/code@450 952f94de-64c9-43ce-8081-c12abd9885bf 2014-08-22 Daniel Price * interface/giza-pgplot.f90: updated docs for fortran interface git-svn-id: https://svn.code.sf.net/p/giza/code@449 952f94de-64c9-43ce-8081-c12abd9885bf 2014-08-22 Daniel Price * CHANGES: 0.9.0 git-svn-id: https://svn.code.sf.net/p/giza/code@448 952f94de-64c9-43ce-8081-c12abd9885bf 2014-08-22 Daniel Price * build/Makefile: version 0.9.0 git-svn-id: https://svn.code.sf.net/p/giza/code@447 952f94de-64c9-43ce-8081-c12abd9885bf 2014-08-22 Daniel Price * src/giza-viewport.c: better margins in PGENV/giza_environment git-svn-id: https://svn.code.sf.net/p/giza/code@446 952f94de-64c9-43ce-8081-c12abd9885bf 2014-08-22 Daniel Price * src/giza-character-size.c, src/giza-drivers.c, src/giza-subpanel.c: character size scaled according to panel height not page height git-svn-id: https://svn.code.sf.net/p/giza/code@445 952f94de-64c9-43ce-8081-c12abd9885bf 2014-08-22 Daniel Price * src/giza-viewport.c, src/giza-window.c: BUG FIX with clipping and positioning of panels if more than one row git-svn-id: https://svn.code.sf.net/p/giza/code@444 952f94de-64c9-43ce-8081-c12abd9885bf 2014-08-22 Daniel Price * src/giza-subpanel.c: BUG FIX with panel changing if more than one row git-svn-id: https://svn.code.sf.net/p/giza/code@443 952f94de-64c9-43ce-8081-c12abd9885bf 2014-08-22 Daniel Price * src/giza-driver-xw.c: BUG FIX with flushing if multiple XW devices used git-svn-id: https://svn.code.sf.net/p/giza/code@442 952f94de-64c9-43ce-8081-c12abd9885bf 2014-08-22 Daniel Price * src/giza-drivers.c: BUG FIX with missing last page on interactive devices if prompting is on git-svn-id: https://svn.code.sf.net/p/giza/code@441 952f94de-64c9-43ce-8081-c12abd9885bf 2014-08-22 Daniel Price * interface/giza-pgplot.f90: comment removed git-svn-id: https://svn.code.sf.net/p/giza/code@440 952f94de-64c9-43ce-8081-c12abd9885bf 2014-06-28 Daniel Price * branches/opengl/INSTALL, branches/opengl/LICENSE, branches/opengl/Makefile, branches/opengl/build/Makefile, branches/opengl/docs/api.pl, branches/opengl/docs/pgplot_status.pl, branches/opengl/include/.gitignore, branches/opengl/interface/Makefile, branches/opengl/interface/giza-fortran.F90, branches/opengl/interface/giza-pgplot.f90, branches/opengl/interface/pgplot-stubs.f90, branches/opengl/lib/.gitignore, branches/opengl/src/giza-annotate.c, branches/opengl/src/giza-arrow-style-private.h, branches/opengl/src/giza-arrow-style.c, branches/opengl/src/giza-arrow.c, branches/opengl/src/giza-band-private.h, branches/opengl/src/giza-band-style.c, branches/opengl/src/giza-band.c, branches/opengl/src/giza-box.c, branches/opengl/src/giza-buffering.c, branches/opengl/src/giza-character-size-private.h, branches/opengl/src/giza-character-size.c, branches/opengl/src/giza-circle.c, branches/opengl/src/giza-colour-index-private.h, branches/opengl/src/giza-colour-index.c, branches/opengl/src/giza-colour-table-private.h, branches/opengl/src/giza-colour-table.c, branches/opengl/src/giza-contour.c, branches/opengl/src/giza-device-has-cursor.c, branches/opengl/src/giza-draw.c, branches/opengl/src/giza-driver-eps-private.h, branches/opengl/src/giza-driver-eps.c, branches/opengl/src/giza-driver-null-private.h, branches/opengl/src/giza-driver-null.c, branches/opengl/src/giza-driver-pdf-private.h, branches/opengl/src/giza-driver-pdf.c, branches/opengl/src/giza-driver-png-private.h, branches/opengl/src/giza-driver-png.c, branches/opengl/src/giza-driver-ps-private.h, branches/opengl/src/giza-driver-ps.c, branches/opengl/src/giza-driver-xw-private.h, branches/opengl/src/giza-driver-xw.c, branches/opengl/src/giza-drivers-private.h, branches/opengl/src/giza-drivers.c, branches/opengl/src/giza-environment.c, branches/opengl/src/giza-error-bars.c, branches/opengl/src/giza-features.h, branches/opengl/src/giza-fill-private.h, branches/opengl/src/giza-fill.c, branches/opengl/src/giza-format-number.c, branches/opengl/src/giza-function-t.c, branches/opengl/src/giza-function-x.c, branches/opengl/src/giza-function-y.c, branches/opengl/src/giza-get-key-press.c, branches/opengl/src/giza-get-surface-size.c, branches/opengl/src/giza-gl-interactive.c, branches/opengl/src/giza-gl-private.h, branches/opengl/src/giza-gl.h, branches/opengl/src/giza-io-private.h, branches/opengl/src/giza-io.c, branches/opengl/src/giza-label.c, branches/opengl/src/giza-line-cap.c, branches/opengl/src/giza-line-style-private.h, branches/opengl/src/giza-line-style.c, branches/opengl/src/giza-line-width.c, branches/opengl/src/giza-line.c, branches/opengl/src/giza-move.c, branches/opengl/src/giza-paper.c, branches/opengl/src/giza-points.c, branches/opengl/src/giza-polygon.c, branches/opengl/src/giza-private.h, branches/opengl/src/giza-prompting-private.h, branches/opengl/src/giza-prompting.c, branches/opengl/src/giza-ptext.c, branches/opengl/src/giza-qtext.c, branches/opengl/src/giza-rectangle.c, branches/opengl/src/giza-render.c, branches/opengl/src/giza-save.c, branches/opengl/src/giza-scanner.l, branches/opengl/src/giza-set-font-private.h, branches/opengl/src/giza-set-font.c, branches/opengl/src/giza-shared-cpp.h, branches/opengl/src/giza-stroke-private.h, branches/opengl/src/giza-stroke.c, branches/opengl/src/giza-text-background-private.h, branches/opengl/src/giza-text-background.c, branches/opengl/src/giza-text-private.h, branches/opengl/src/giza-text.c, branches/opengl/src/giza-transforms-private.h, branches/opengl/src/giza-transforms.c, branches/opengl/src/giza-vector.c, branches/opengl/src/giza-viewport-private.h, branches/opengl/src/giza-viewport.c, branches/opengl/src/giza-warnings-private.h, branches/opengl/src/giza-warnings.c, branches/opengl/src/giza-window-private.h, branches/opengl/src/giza-window.c, branches/opengl/src/giza.c, branches/opengl/src/giza.h, branches/opengl/src/lex.yy.c, branches/opengl/test/test-arrow.c, branches/opengl/test/test-band.c, branches/opengl/test/test-box.c, branches/opengl/test/test-change-page.c, branches/opengl/test/test-circle.c, branches/opengl/test/test-colour-index.c, branches/opengl/test/test-contour.c, branches/opengl/test/test-environment.c, branches/opengl/test/test-error-bars.c, branches/opengl/test/test-format-number.c, branches/opengl/test/test-gl.c, branches/opengl/test/test-line-cap.c, branches/opengl/test/test-line-style.c, branches/opengl/test/test-points.c, branches/opengl/test/test-qtext.c, branches/opengl/test/test-rectangle.c, branches/opengl/test/test-render.c, branches/opengl/test/test-set-line-width.c, branches/opengl/test/test-vector.c, branches/opengl/test/test-window.c, build/Makefile: deleted obsolete branch git-svn-id: https://svn.code.sf.net/p/giza/code@439 952f94de-64c9-43ce-8081-c12abd9885bf 2014-06-17 Daniel Price * src/giza-drivers.c, src/giza-paper.c, src/giza-subpanel.c, src/giza-window.c: sub-panelling now works; various bugs fixed with this git-svn-id: https://svn.code.sf.net/p/giza/code@438 952f94de-64c9-43ce-8081-c12abd9885bf 2014-06-17 Daniel Price * src/giza-viewport.c: bug fix with uninitialised variables if bad args to giza_viewport git-svn-id: https://svn.code.sf.net/p/giza/code@437 952f94de-64c9-43ce-8081-c12abd9885bf 2014-06-17 Daniel Price * src/giza-viewport.c: docs fixed for viewport routines git-svn-id: https://svn.code.sf.net/p/giza/code@436 952f94de-64c9-43ce-8081-c12abd9885bf 2014-06-17 Daniel Price * src/giza-drivers.c, src/giza-subpanel-private.h, src/giza-subpanel.c, src/giza-viewport.c: clipping of plot for sub-panels now works as expected; advance_subpanel returns flag when page changes git-svn-id: https://svn.code.sf.net/p/giza/code@435 952f94de-64c9-43ce-8081-c12abd9885bf 2014-06-17 Daniel Price * interface/giza-cpgplot.c, interface/giza-pgplot.f90, src/giza-histogram.c: implemented giza_histogram_binned; implements PGBIN git-svn-id: https://svn.code.sf.net/p/giza/code@434 952f94de-64c9-43ce-8081-c12abd9885bf 2014-06-17 Daniel Price * src/giza-histogram.c: giza_histogram implemented; compatible with PGHIST git-svn-id: https://svn.code.sf.net/p/giza/code@433 952f94de-64c9-43ce-8081-c12abd9885bf 2014-06-17 Daniel Price * build/Makefile, include/giza.h, interface/giza-cpgplot.c, interface/giza-fortran.F90, interface/giza-pgplot.f90, src/giza-histogram.c: added interfaces for histogram routines git-svn-id: https://svn.code.sf.net/p/giza/code@432 952f94de-64c9-43ce-8081-c12abd9885bf 2014-06-17 Daniel Price * src/giza-drivers.c: can use /xs, /xserve and /xwindow to specify X-windows device git-svn-id: https://svn.code.sf.net/p/giza/code@431 952f94de-64c9-43ce-8081-c12abd9885bf 2014-06-17 Daniel Price * build/Makefile, include/giza.h, interface/giza-cpgplot.c, interface/giza-fortran.F90, interface/giza-pgplot.f90, src/giza-drivers.c, src/giza-private.h, src/giza-subpanel-private.h, src/giza-subpanel.c, src/giza-viewport.c: sub-panelling routines implemented (not yet working) git-svn-id: https://svn.code.sf.net/p/giza/code@430 952f94de-64c9-43ce-8081-c12abd9885bf 2014-03-31 Daniel Price * CHANGES, README: updated changelog git-svn-id: https://svn.code.sf.net/p/giza/code@429 952f94de-64c9-43ce-8081-c12abd9885bf 2014-03-27 Daniel Price * src/giza-scanner.l, src/lex.yy.c: support for limited scope of font changing commands in strings, i.e. {\bf text} and {\it text} git-svn-id: https://svn.code.sf.net/p/giza/code@428 952f94de-64c9-43ce-8081-c12abd9885bf 2014-03-26 Daniel Price * src/giza-scanner.l, src/lex.yy.c: text routines handle escape sequences for backslash (\\), underscore (\_), hat (\^) and curly brackets git-svn-id: https://svn.code.sf.net/p/giza/code@427 952f94de-64c9-43ce-8081-c12abd9885bf 2014-03-26 Daniel Price * src/giza-save.c: giza-save uses GIZA_FONT_LEN to be consistent git-svn-id: https://svn.code.sf.net/p/giza/code@426 952f94de-64c9-43ce-8081-c12abd9885bf 2014-03-26 Daniel Price * build/Makefile: version bumped to 0.8.1 git-svn-id: https://svn.code.sf.net/p/giza/code@425 952f94de-64c9-43ce-8081-c12abd9885bf 2014-03-26 Daniel Price * src/giza-points.c, src/giza-ptext.c, src/giza-qtext.c, src/giza-set-font.c: BUG FIX with font changing in rotated strings; also original font now preserved after string is printed git-svn-id: https://svn.code.sf.net/p/giza/code@424 952f94de-64c9-43ce-8081-c12abd9885bf 2014-03-26 Daniel Price * src/giza-scanner.l, src/giza-text-private.h, src/giza-text.c, src/lex.yy.c: can use \bf or \fb to get bold face in strings git-svn-id: https://svn.code.sf.net/p/giza/code@423 952f94de-64c9-43ce-8081-c12abd9885bf 2014-03-25 Daniel Price * test/test-2D.f90: minor change to 2D test git-svn-id: https://svn.code.sf.net/p/giza/code@422 952f94de-64c9-43ce-8081-c12abd9885bf 2014-03-25 Daniel Price * src/giza-scanner.l, src/lex.yy.c: updated text scanner (uses unicode Sun symbol) git-svn-id: https://svn.code.sf.net/p/giza/code@421 952f94de-64c9-43ce-8081-c12abd9885bf 2013-12-19 Daniel Price * src/giza-render.c: added link to giza_set_colour_table in docs git-svn-id: https://svn.code.sf.net/p/giza/code@420 952f94de-64c9-43ce-8081-c12abd9885bf 2013-12-18 Daniel Price * src/giza-colour-bar.c, src/giza-render.c: bug fix in docs referring to giza_colour_ramp, should be to giza_set_colour_table git-svn-id: https://svn.code.sf.net/p/giza/code@419 952f94de-64c9-43ce-8081-c12abd9885bf 2013-12-18 Daniel Price * src/giza-box-time.c: updated links in docs git-svn-id: https://svn.code.sf.net/p/giza/code@418 952f94de-64c9-43ce-8081-c12abd9885bf 2013-12-18 Daniel Price * interface/giza-fortran.F90: affine array does not need to be passed for most rendered images in simple f90 interface git-svn-id: https://svn.code.sf.net/p/giza/code@417 952f94de-64c9-43ce-8081-c12abd9885bf 2013-12-18 Daniel Price * test/Makefile, test/test-2D.f90: added test-2D thanks to Jean-Francois Gonzalez git-svn-id: https://svn.code.sf.net/p/giza/code@416 952f94de-64c9-43ce-8081-c12abd9885bf 2013-12-18 Daniel Price * include/giza.h: interface added for giza_get_device_id in giza.h git-svn-id: https://svn.code.sf.net/p/giza/code@415 952f94de-64c9-43ce-8081-c12abd9885bf 2013-12-18 Daniel Price * interface/giza-cpgplot.c: added cpgtbox interface to giza_box_time; also bug fix with cpgswin git-svn-id: https://svn.code.sf.net/p/giza/code@414 952f94de-64c9-43ce-8081-c12abd9885bf 2013-11-15 Daniel Price * CHANGES: updated changelog git-svn-id: https://svn.code.sf.net/p/giza/code@413 952f94de-64c9-43ce-8081-c12abd9885bf 2013-11-15 Daniel Price * AUTHORS, build/Makefile: extra files included in release tarball git-svn-id: https://svn.code.sf.net/p/giza/code@412 952f94de-64c9-43ce-8081-c12abd9885bf 2013-11-15 Daniel Price * CHANGES: updated changelog for 0.8.0 git-svn-id: https://svn.code.sf.net/p/giza/code@411 952f94de-64c9-43ce-8081-c12abd9885bf 2013-11-15 Daniel Price * docs/api.pl: typo fixed in api script git-svn-id: https://svn.code.sf.net/p/giza/code@410 952f94de-64c9-43ce-8081-c12abd9885bf 2013-11-14 Daniel Price * interface/giza-cpgplot.c, interface/giza-pgplot.f90: updated status of PGPAP/cpgpap git-svn-id: https://svn.code.sf.net/p/giza/code@409 952f94de-64c9-43ce-8081-c12abd9885bf 2013-11-14 Daniel Price * src/giza-version.c: bug fix with documentation of giza_version git-svn-id: https://svn.code.sf.net/p/giza/code@408 952f94de-64c9-43ce-8081-c12abd9885bf 2013-11-14 Daniel Price * interface/giza-fortran.F90, src/giza-version.c: added giza_version routine to Fortran interface git-svn-id: https://svn.code.sf.net/p/giza/code@407 952f94de-64c9-43ce-8081-c12abd9885bf 2013-11-14 Daniel Price * build/Makefile, include/giza.h, src/giza-version.c: added giza version routine to query version info git-svn-id: https://svn.code.sf.net/p/giza/code@406 952f94de-64c9-43ce-8081-c12abd9885bf 2013-11-14 Daniel Price * src/giza-vector.c: added docs for giza_vector git-svn-id: https://svn.code.sf.net/p/giza/code@405 952f94de-64c9-43ce-8081-c12abd9885bf 2013-11-14 Daniel Price * interface/giza-fortran.F90: added integer parameters giving version number info in Fortran interface git-svn-id: https://svn.code.sf.net/p/giza/code@404 952f94de-64c9-43ce-8081-c12abd9885bf 2013-11-14 Daniel Price * src/giza-drivers.c: debugging/commented out cruft removed git-svn-id: https://svn.code.sf.net/p/giza/code@403 952f94de-64c9-43ce-8081-c12abd9885bf 2013-11-14 Daniel Price * src/giza-drivers.c: updated docs on return value for giza_open_device git-svn-id: https://svn.code.sf.net/p/giza/code@402 952f94de-64c9-43ce-8081-c12abd9885bf 2013-11-14 Daniel Price * src/giza-drivers.c: device help shows filename option (file.png instead of /png) git-svn-id: https://svn.code.sf.net/p/giza/code@401 952f94de-64c9-43ce-8081-c12abd9885bf 2013-11-14 Daniel Price * src/giza-driver-xw.c: debugging info removed git-svn-id: https://svn.code.sf.net/p/giza/code@400 952f94de-64c9-43ce-8081-c12abd9885bf 2013-11-14 Daniel Price * src/giza-text-background.c: bug fix with default text background (should be -1 not 0) git-svn-id: https://svn.code.sf.net/p/giza/code@399 952f94de-64c9-43ce-8081-c12abd9885bf 2013-11-14 Daniel Price * src/giza-clipping.c, src/giza-private.h: clip setting specific to each device git-svn-id: https://svn.code.sf.net/p/giza/code@398 952f94de-64c9-43ce-8081-c12abd9885bf 2013-11-14 Daniel Price * src/giza-drivers.c, src/giza-private.h, src/giza-ptext.c, src/giza-text-background-private.h, src/giza-text-background.c: text background colour setting specific to each device git-svn-id: https://svn.code.sf.net/p/giza/code@397 952f94de-64c9-43ce-8081-c12abd9885bf 2013-11-14 Daniel Price * src/giza-line-style.c: get_line_style always returns something even if giza not started git-svn-id: https://svn.code.sf.net/p/giza/code@396 952f94de-64c9-43ce-8081-c12abd9885bf 2013-11-14 Daniel Price * src/giza-character-size.c, src/giza-private.h: character height setting specific to each device git-svn-id: https://svn.code.sf.net/p/giza/code@395 952f94de-64c9-43ce-8081-c12abd9885bf 2013-11-14 Daniel Price * src/giza-drivers.c, src/giza-private.h, src/giza-ptext.c, src/giza-qtext.c, src/giza-text.c, src/giza.c: fontAngle setting specific to each device git-svn-id: https://svn.code.sf.net/p/giza/code@394 952f94de-64c9-43ce-8081-c12abd9885bf 2013-11-14 Daniel Price * src/giza-box.c, src/giza-character-size.c, src/giza-points.c, src/giza-private.h, src/giza-text.c: fontExtents stored specific to each device; not globally git-svn-id: https://svn.code.sf.net/p/giza/code@393 952f94de-64c9-43ce-8081-c12abd9885bf 2013-11-14 Daniel Price * src/giza-line-style-private.h, src/giza-line-style.c, src/giza-private.h: line style setting specific to each device git-svn-id: https://svn.code.sf.net/p/giza/code@392 952f94de-64c9-43ce-8081-c12abd9885bf 2013-11-14 Daniel Price * src/giza-line-width.c, src/giza-private.h: line width setting specific to each device git-svn-id: https://svn.code.sf.net/p/giza/code@391 952f94de-64c9-43ce-8081-c12abd9885bf 2013-11-14 Daniel Price * src/giza-arrow-style-private.h, src/giza-arrow-style.c, src/giza-arrow.c, src/giza-private.h: arrow style settings specific to each device (giza_arrow_t) git-svn-id: https://svn.code.sf.net/p/giza/code@390 952f94de-64c9-43ce-8081-c12abd9885bf 2013-11-14 Daniel Price * src/giza-fill.c, src/giza-private.h: fill style and settings specific to each device git-svn-id: https://svn.code.sf.net/p/giza/code@389 952f94de-64c9-43ce-8081-c12abd9885bf 2013-11-14 Daniel Price * include/giza.h, src/giza-annotate.c, src/giza-arrow.c, src/giza-box.c, src/giza-buffering.c, src/giza-circle.c, src/giza-colour-bar.c, src/giza-contour.c, src/giza-draw.c, src/giza-drivers.c, src/giza-error-bars.c, src/giza-function-t.c, src/giza-function-x.c, src/giza-function-y.c, src/giza-line.c, src/giza-points.c, src/giza-polygon.c, src/giza-private.h, src/giza-ptext.c, src/giza-rectangle.c, src/giza-render.c, src/giza-vector.c, src/giza.c: buffering setting is specific to each device git-svn-id: https://svn.code.sf.net/p/giza/code@388 952f94de-64c9-43ce-8081-c12abd9885bf 2013-11-14 Daniel Price * src/giza-colour-index.c: commented out temporary stuff git-svn-id: https://svn.code.sf.net/p/giza/code@387 952f94de-64c9-43ce-8081-c12abd9885bf 2013-11-14 Daniel Price * src/giza-box.c, src/giza-drivers.c, src/giza-private.h, src/giza-viewport-private.h, src/giza-viewport.c, src/giza-window.c: viewport settings now specific to each device git-svn-id: https://svn.code.sf.net/p/giza/code@386 952f94de-64c9-43ce-8081-c12abd9885bf 2013-11-14 Daniel Price * src/giza-annotate.c, src/giza-box.c, src/giza-driver-xw.c, src/giza-drivers.c, src/giza-private.h, src/giza-transforms.c, src/giza-viewport.c, src/giza-window-private.h, src/giza-window.c: window settings now specific to each device git-svn-id: https://svn.code.sf.net/p/giza/code@385 952f94de-64c9-43ce-8081-c12abd9885bf 2013-11-14 Daniel Price * src/giza-drivers.c: typo fixed git-svn-id: https://svn.code.sf.net/p/giza/code@384 952f94de-64c9-43ce-8081-c12abd9885bf 2013-11-14 Daniel Price * src/giza-driver-xw.c, src/giza-drivers.c, src/giza-private.h, src/giza-prompting-private.h, src/giza-prompting.c: start/stop prompting setting now specific to each device, not global git-svn-id: https://svn.code.sf.net/p/giza/code@383 952f94de-64c9-43ce-8081-c12abd9885bf 2013-11-14 Daniel Price * interface/giza-cpgplot.c, interface/giza-fortran.F90, interface/giza-pgplot.f90, src/giza-drivers.c, src/giza.c: numbering of devices now from 1->N externally, from 0->N-1 internally; implemented PGQID/giza_get_device_id git-svn-id: https://svn.code.sf.net/p/giza/code@382 952f94de-64c9-43ce-8081-c12abd9885bf 2013-11-14 Daniel Price * src/giza-driver-xw.c, src/giza-drivers.c, src/giza-paper.c, src/giza-private.h: implemented resizing of X-window/bitmap devices via giza_paper_size (not perfect yet) git-svn-id: https://svn.code.sf.net/p/giza/code@381 952f94de-64c9-43ce-8081-c12abd9885bf 2013-11-14 Daniel Price * src/giza-driver-eps-private.h, src/giza-driver-eps.c, src/giza-driver-null-private.h, src/giza-driver-null.c, src/giza-driver-pdf-private.h, src/giza-driver-pdf.c, src/giza-driver-png-private.h, src/giza-driver-png.c, src/giza-driver-ps-private.h, src/giza-driver-ps.c, src/giza-driver-svg-private.h, src/giza-driver-svg.c, src/giza-driver-xw-private.h, src/giza-driver-xw.c, src/giza-drivers-private.h, src/giza-drivers.c, src/giza-paper.c, src/giza-private.h, src/giza.c: deviceOpen and drawn now specific to each device: removed sizeSpecified and reworked the way devices are opened to handle this (giza_open_device now calls giza_open_device_size rather than vice-versa) git-svn-id: https://svn.code.sf.net/p/giza/code@380 952f94de-64c9-43ce-8081-c12abd9885bf 2013-11-14 Daniel Price * build/Makefile, include/giza.h, interface/giza-cpgplot.c, interface/giza-fortran.F90, interface/giza-pgplot.f90, src/giza-arrow.c, src/giza-box.c, src/giza-character-size.c, src/giza-circle.c, src/giza-clipping.c, src/giza-colour-index.c, src/giza-contour.c, src/giza-cursor-routines.c, src/giza-device-has-cursor.c, src/giza-draw-background.c, src/giza-draw.c, src/giza-driver-eps.c, src/giza-driver-null.c, src/giza-driver-pdf.c, src/giza-driver-png.c, src/giza-driver-ps.c, src/giza-driver-svg.c, src/giza-driver-xw-private.h, src/giza-driver-xw.c, src/giza-drivers.c, src/giza-error-bars.c, src/giza-fill.c, src/giza-function-t.c, src/giza-function-x.c, src/giza-function-y.c, src/giza-get-surface-size.c, src/giza-line-cap.c, src/giza-line-style.c, src/giza-line-width.c, src/giza-line.c, src/giza-move.c, src/giza-paper.c, src/giza-points.c, src/giza-polygon.c, src/giza-print-id.c, src/giza-private.h, src/giza-ptext.c, src/giza-qtext.c, src/giza-rectangle.c, src/giza-render.c, src/giza-set-font.c, src/giza-stroke.c, src/giza-text.c, src/giza-transforms.c, src/giza-viewport.c, src/giza-window.c, src/lex.yy.c: multiple device support implemented (LOTS of code changed): added giza_select/pgslct routines to switch between devices git-svn-id: https://svn.code.sf.net/p/giza/code@379 952f94de-64c9-43ce-8081-c12abd9885bf 2013-08-23 Daniel Price * src/giza-driver-xw.c, src/giza-drivers.c: better cleanup on failure to open device; does not require giza_close_device call git-svn-id: https://svn.code.sf.net/p/giza/code@378 952f94de-64c9-43ce-8081-c12abd9885bf 2013-06-18 Daniel Price * src/giza-colour-table.c: silenced warning regarding colour not set if NaNs input to giza-render routines git-svn-id: https://svn.code.sf.net/p/giza/code@377 952f94de-64c9-43ce-8081-c12abd9885bf 2013-06-08 Daniel Price * include/giza.h, src/giza-driver-xw.c, src/giza-drivers.c, src/giza-io.c, src/giza-private.h, src/giza.c: added autolog feature: controlled via begin_autolog/end_autolog routines and GIZA_LOG environment variable git-svn-id: https://svn.code.sf.net/p/giza/code@376 952f94de-64c9-43ce-8081-c12abd9885bf 2013-06-08 Daniel Price * build/Makefile: link for -lgfortran fixed git-svn-id: https://svn.code.sf.net/p/giza/code@375 952f94de-64c9-43ce-8081-c12abd9885bf 2013-06-08 Daniel Price * src/giza-vector.c: BUG FIX with vector arrows in double precision git-svn-id: https://svn.code.sf.net/p/giza/code@374 952f94de-64c9-43ce-8081-c12abd9885bf 2013-06-08 Daniel Price * interface/giza-fortran.F90: newline removed git-svn-id: https://svn.code.sf.net/p/giza/code@373 952f94de-64c9-43ce-8081-c12abd9885bf 2013-06-08 Daniel Price * src/giza-window.c: floating exception fixed in giza_set_window_equal_scale if width=height=0 git-svn-id: https://svn.code.sf.net/p/giza/code@372 952f94de-64c9-43ce-8081-c12abd9885bf 2013-02-20 Daniel Price * build/Makefile: gfortran version checking removed (obsolete/no longer necessary) git-svn-id: https://svn.code.sf.net/p/giza/code@371 952f94de-64c9-43ce-8081-c12abd9885bf 2013-02-18 Daniel Price * CHANGES, Makefile, README: dates/changelog updated for 0.7.6 git-svn-id: https://svn.code.sf.net/p/giza/code@370 952f94de-64c9-43ce-8081-c12abd9885bf 2013-02-18 Daniel Price * Makefile, build/Makefile: minor fixes to install target; should now work with Macports git-svn-id: https://svn.code.sf.net/p/giza/code@369 952f94de-64c9-43ce-8081-c12abd9885bf 2013-02-18 Daniel Price * interface/giza-fortran.F90: [PATCH] fortran interface compiles with ifort+debugging; thanks to Andy McLeod git-svn-id: https://svn.code.sf.net/p/giza/code@368 952f94de-64c9-43ce-8081-c12abd9885bf 2012-11-22 Daniel Price * src/giza-drivers.c: bug fix with box being drawn randomly due to giza_stroke call git-svn-id: https://svn.code.sf.net/p/giza/code@367 952f94de-64c9-43ce-8081-c12abd9885bf 2012-11-16 Daniel Price * build/Makefile, test/Makefile: better clean targets for Makefiles git-svn-id: https://svn.code.sf.net/p/giza/code@366 952f94de-64c9-43ce-8081-c12abd9885bf 2012-11-16 Daniel Price * CHANGES: updated CHANGES for 0.7.5 git-svn-id: https://svn.code.sf.net/p/giza/code@365 952f94de-64c9-43ce-8081-c12abd9885bf 2012-11-16 Daniel Price * src/giza-drivers.c: compiler warnings with strncpy fixed (clang) git-svn-id: https://svn.code.sf.net/p/giza/code@364 952f94de-64c9-43ce-8081-c12abd9885bf 2012-11-16 Daniel Price * build/Makefile: version number bumped to 0.7.5 git-svn-id: https://svn.code.sf.net/p/giza/code@363 952f94de-64c9-43ce-8081-c12abd9885bf 2012-11-16 Daniel Price * src/giza-drivers.c: compiler warning fixed git-svn-id: https://svn.code.sf.net/p/giza/code@362 952f94de-64c9-43ce-8081-c12abd9885bf 2012-11-16 Daniel Price * AUTHORS: added AUTHORS file git-svn-id: https://svn.code.sf.net/p/giza/code@361 952f94de-64c9-43ce-8081-c12abd9885bf 2012-11-16 Daniel Price * INSTALL: updated INSTALL instructions git-svn-id: https://svn.code.sf.net/p/giza/code@360 952f94de-64c9-43ce-8081-c12abd9885bf 2012-11-16 Daniel Price * CHANGES, README: CHANGES file added; README now contains small blurb git-svn-id: https://svn.code.sf.net/p/giza/code@359 952f94de-64c9-43ce-8081-c12abd9885bf 2012-11-16 Daniel Price * LICENSE => COPYING: LICENSE file renamed to COPYING git-svn-id: https://svn.code.sf.net/p/giza/code@358 952f94de-64c9-43ce-8081-c12abd9885bf 2012-11-16 Daniel Price * src/giza-driver-xw.c: XW driver no longer uses XNextEvent to prevent compile problems on Ubuntu; also initial window call uses WhitePixel as defined by Xlib git-svn-id: https://svn.code.sf.net/p/giza/code@357 952f94de-64c9-43ce-8081-c12abd9885bf 2012-11-16 Daniel Price * test/Makefile, test/test-arrow.c, test/test-box.c: added box/more arrow tests git-svn-id: https://svn.code.sf.net/p/giza/code@356 952f94de-64c9-43ce-8081-c12abd9885bf 2012-11-16 Daniel Price * src/giza-arrow.c: giza arrow uses semi-angle instead of full angle, as in PGPLOT (pgdemo1) git-svn-id: https://svn.code.sf.net/p/giza/code@355 952f94de-64c9-43ce-8081-c12abd9885bf 2012-11-16 Daniel Price * src/giza-arrow.c: BUG FIX with arrow heads becoming small in certain directions git-svn-id: https://svn.code.sf.net/p/giza/code@354 952f94de-64c9-43ce-8081-c12abd9885bf 2012-11-16 Daniel Price * src/giza-drivers.c: giza_stroke called after device opened; avoids black page bug if no box/window/viewport called prior to drawing git-svn-id: https://svn.code.sf.net/p/giza/code@353 952f94de-64c9-43ce-8081-c12abd9885bf 2012-11-09 Daniel Price * src/giza-colour-palette.c: new colour palette options added git-svn-id: https://svn.code.sf.net/p/giza/code@352 952f94de-64c9-43ce-8081-c12abd9885bf 2012-11-09 Daniel Price * src/giza-box.c: BUG FIX with log axis labelling if interval < 10 git-svn-id: https://svn.code.sf.net/p/giza/code@351 952f94de-64c9-43ce-8081-c12abd9885bf 2012-11-02 Daniel Price * build/Makefile: build respects DESTDIR conventions git-svn-id: https://svn.code.sf.net/p/giza/code@350 952f94de-64c9-43ce-8081-c12abd9885bf 2012-11-02 Daniel Price * src/giza-colour-palette.c: various line palettes added; can be selected with GIZA_PALETTE environment variable git-svn-id: https://svn.code.sf.net/p/giza/code@349 952f94de-64c9-43ce-8081-c12abd9885bf 2012-11-02 Daniel Price * include/giza.h, src/giza-colour-index.c: routines added to set colour representation in rgb git-svn-id: https://svn.code.sf.net/p/giza/code@348 952f94de-64c9-43ce-8081-c12abd9885bf 2012-08-28 Daniel Price * README: README added to repository git-svn-id: https://svn.code.sf.net/p/giza/code@347 952f94de-64c9-43ce-8081-c12abd9885bf 2012-08-28 Daniel Price * build/Makefile: README included in distribution git-svn-id: https://svn.code.sf.net/p/giza/code@346 952f94de-64c9-43ce-8081-c12abd9885bf 2012-08-28 Daniel Price * src/giza-driver-xw.c: commented out X-windows error-handling routine to avoid compilation problems in Ubuntu git-svn-id: https://svn.code.sf.net/p/giza/code@345 952f94de-64c9-43ce-8081-c12abd9885bf 2012-08-23 Daniel Price * src/giza-driver-eps.c, src/giza-driver-svg.c: uses _0000 numbering if part of sequence for eps and svg devices (by renaming file when changing page) git-svn-id: https://svn.code.sf.net/p/giza/code@344 952f94de-64c9-43ce-8081-c12abd9885bf 2012-08-23 Daniel Price * src/giza-driver-eps.c, src/giza-driver-pdf.c, src/giza-driver-png-private.h, src/giza-driver-png.c, src/giza-driver-ps.c, src/giza-driver-svg.c, src/giza-drivers-private.h, src/giza-drivers.c: png device names first file differently depending on whether or not it is part of a sequence git-svn-id: https://svn.code.sf.net/p/giza/code@343 952f94de-64c9-43ce-8081-c12abd9885bf 2012-08-23 Daniel Price * test/Makefile, test/test-fortran.f90: test Makefile compiles a fortran example git-svn-id: https://svn.code.sf.net/p/giza/code@342 952f94de-64c9-43ce-8081-c12abd9885bf 2012-08-23 Daniel Price * src/giza-drivers.c: can specify hardcopy devices just using the filename e.g. crap.png instead of having to type crap.png/png git-svn-id: https://svn.code.sf.net/p/giza/code@341 952f94de-64c9-43ce-8081-c12abd9885bf 2012-08-22 Daniel Price * src/giza-render.c: better handling of valMin=valMax in giza_render_float git-svn-id: https://svn.code.sf.net/p/giza/code@340 952f94de-64c9-43ce-8081-c12abd9885bf 2012-07-21 Daniel Price * build/Makefile: minor change to comment git-svn-id: https://svn.code.sf.net/p/giza/code@339 952f94de-64c9-43ce-8081-c12abd9885bf 2012-07-21 Daniel Price * interface/giza-fortran.F90: BUG FIX with giza_function_x/y/t interfaces with gfortran v4.7; also giza_plot_line now giza_line in Fortran interface git-svn-id: https://svn.code.sf.net/p/giza/code@338 952f94de-64c9-43ce-8081-c12abd9885bf 2012-06-15 Daniel Price * build/Makefile: bumped version to 0.7.4 in Makefile git-svn-id: https://svn.code.sf.net/p/giza/code@337 952f94de-64c9-43ce-8081-c12abd9885bf 2012-06-15 Daniel Price * interface/giza-fortran.F90, src/giza-rectangle.c: added giza_rectangle_rounded routine for plotting rectangles with rounded corners git-svn-id: https://svn.code.sf.net/p/giza/code@336 952f94de-64c9-43ce-8081-c12abd9885bf 2012-06-15 Daniel Price * src/giza-cursor-routines.c: improvements to cursor routines: mark_with_cursor handled by get_key_press routine, allows polygon selection to be redrawn on the fly like giza_band; get_key_press takes array of anchor points instead of just one; get_key_press handles and returns shift-click event; added mark_line_char routines which return last character pressed, like giza_band git-svn-id: https://svn.code.sf.net/p/giza/code@335 952f94de-64c9-43ce-8081-c12abd9885bf 2012-06-15 Daniel Price * include/giza-shared.h, interface/giza-fortran.F90, src/giza-band-private.h, src/giza-band.c, src/giza-cursor-private.h, src/giza-driver-xw-private.h, src/giza-driver-xw.c, src/giza-drivers-private.h, src/giza-drivers.c, src/giza-get-key-press.c: improvements to cursor routines: mark_with_cursor handled by get_key_press routine, allows polygon selection to be redrawn on the fly like giza_band; get_key_press takes array of anchor points instead of just one; get_key_press handles and returns shift-click event; added mark_line_char routines which return last character pressed, like giza_band git-svn-id: https://svn.code.sf.net/p/giza/code@334 952f94de-64c9-43ce-8081-c12abd9885bf 2012-06-15 Daniel Price * src/giza-band.c: circle cursor uses filled, partially transparent circle similar to rectangle selection git-svn-id: https://svn.code.sf.net/p/giza/code@333 952f94de-64c9-43ce-8081-c12abd9885bf 2012-06-13 Daniel Price * include/giza-shared.h, interface/giza-fortran.F90, src/giza-driver-xw.c: xw driver returns key bindings for right/middle clicks and scroll events git-svn-id: https://svn.code.sf.net/p/giza/code@332 952f94de-64c9-43ce-8081-c12abd9885bf 2012-05-16 Daniel Price * Makefile, build/Makefile: version number bumped git-svn-id: https://svn.code.sf.net/p/giza/code@331 952f94de-64c9-43ce-8081-c12abd9885bf 2012-05-16 Daniel Price * docs/get-source-files.pl: minor change to script git-svn-id: https://svn.code.sf.net/p/giza/code@330 952f94de-64c9-43ce-8081-c12abd9885bf 2012-05-16 Daniel Price * build/Makefile: uses X11DIR to specify libX11 location in Makefile git-svn-id: https://svn.code.sf.net/p/giza/code@329 952f94de-64c9-43ce-8081-c12abd9885bf 2012-05-16 Daniel Price * interface/giza-cpgplot.c: fixed comment so does not get deleted by header script git-svn-id: https://svn.code.sf.net/p/giza/code@328 952f94de-64c9-43ce-8081-c12abd9885bf 2012-05-16 Daniel Price * include/cpgplot.h: updated comments in cpgplot.h git-svn-id: https://svn.code.sf.net/p/giza/code@327 952f94de-64c9-43ce-8081-c12abd9885bf 2012-05-16 Daniel Price * include/giza.h, interface/giza-cpgplot.c, interface/giza-fortran.F90, interface/giza-pgplot.f90, src/giza-annotate.c, src/giza-arrow-style-private.h, src/giza-arrow-style.c, src/giza-arrow.c, src/giza-band-private.h, src/giza-band-style.c, src/giza-band.c, src/giza-box-time.c, src/giza-box.c, src/giza-buffering.c, src/giza-character-size-private.h, src/giza-character-size.c, src/giza-circle.c, src/giza-clipping.c, src/giza-colour-bar.c, src/giza-colour-index.c, src/giza-colour-palette.c, src/giza-colour-private.h, src/giza-colour-table.c, src/giza-contour.c, src/giza-cursor-private.h, src/giza-cursor-routines.c, src/giza-device-has-cursor.c, src/giza-draw-background.c, src/giza-draw.c, src/giza-driver-eps-private.h, src/giza-driver-eps.c, src/giza-driver-null-private.h, src/giza-driver-null.c, src/giza-driver-pdf-private.h, src/giza-driver-pdf.c, src/giza-driver-png-private.h, src/giza-driver-png.c, src/giza-driver-ps-private.h, src/giza-driver-ps.c, src/giza-driver-svg-private.h, src/giza-driver-svg.c, src/giza-driver-xw-private.h, src/giza-driver-xw.c, src/giza-drivers-private.h, src/giza-drivers.c, src/giza-environment.c, src/giza-error-bars.c, src/giza-fill-private.h, src/giza-fill.c, src/giza-format-number.c, src/giza-function-t.c, src/giza-function-x.c, src/giza-function-y.c, src/giza-get-key-press.c, src/giza-get-surface-size.c, src/giza-io-private.h, src/giza-io.c, src/giza-label.c, src/giza-line-cap.c, src/giza-line-style-private.h, src/giza-line-style.c, src/giza-line-width.c, src/giza-line.c, src/giza-move.c, src/giza-paper.c, src/giza-points.c, src/giza-polygon.c, src/giza-print-id.c, src/giza-private.h, src/giza-prompting-private.h, src/giza-prompting.c, src/giza-ptext.c, src/giza-qtext.c, src/giza-rectangle.c, src/giza-render-private.h, src/giza-render.c, src/giza-save.c, src/giza-set-font-private.h, src/giza-set-font.c, src/giza-stroke-private.h, src/giza-stroke.c, src/giza-text-background-private.h, src/giza-text-background.c, src/giza-text-private.h, src/giza-text.c, src/giza-transforms-private.h, src/giza-transforms.c, src/giza-vector.c, src/giza-viewport-private.h, src/giza-viewport.c, src/giza-warnings-private.h, src/giza-warnings.c, src/giza-window-private.h, src/giza-window.c, src/giza.c, test/test-XOpenDisplay.c, test/test-arrow.c, test/test-band.c, test/test-box.c, test/test-cairo-xw.c, test/test-change-page.c, test/test-circle.c, test/test-colour-index.c, test/test-contour.c, test/test-environment.c, test/test-error-bars.c, test/test-format-number.c, test/test-line-cap.c, test/test-line-style.c, test/test-openclose.c, test/test-pdf.c, test/test-png.c, test/test-points.c, test/test-qtext.c, test/test-rectangle.c, test/test-render.c, test/test-set-line-width.c, test/test-vector.c, test/test-window.c, test/test-xw.c: file headers updated and unified across all files git-svn-id: https://svn.code.sf.net/p/giza/code@326 952f94de-64c9-43ce-8081-c12abd9885bf 2012-05-16 Daniel Price * src/giza-driver-xw.c: typo fixed git-svn-id: https://svn.code.sf.net/p/giza/code@325 952f94de-64c9-43ce-8081-c12abd9885bf 2012-05-16 Daniel Price * src/giza-io-private.h, src/giza-io.c: giza-io routines declare const char* not just char; avoids compiler warnings git-svn-id: https://svn.code.sf.net/p/giza/code@324 952f94de-64c9-43ce-8081-c12abd9885bf 2012-05-16 Daniel Price * src/giza-driver-xw.c: use surface_finish and checks for errors when closing xlib surface git-svn-id: https://svn.code.sf.net/p/giza/code@323 952f94de-64c9-43ce-8081-c12abd9885bf 2012-05-16 Daniel Price * test/Makefile: makefile compiles several tests git-svn-id: https://svn.code.sf.net/p/giza/code@322 952f94de-64c9-43ce-8081-c12abd9885bf 2012-05-16 Daniel Price * src/giza-driver-eps.c, src/giza-driver-pdf.c, src/giza-driver-ps.c, src/giza-driver-svg.c: better error handling on closing vector surfaces (picks up cairo bug in Lion) git-svn-id: https://svn.code.sf.net/p/giza/code@321 952f94de-64c9-43ce-8081-c12abd9885bf 2012-05-14 Daniel Price * test/Makefile, test/test-png.c: added png test git-svn-id: https://svn.code.sf.net/p/giza/code@320 952f94de-64c9-43ce-8081-c12abd9885bf 2012-05-08 Daniel Price * test/Makefile, test/test-xw.c: updated xw test git-svn-id: https://svn.code.sf.net/p/giza/code@319 952f94de-64c9-43ce-8081-c12abd9885bf 2012-05-08 Daniel Price * test/test-cairo-xw.c: test reports cairo version git-svn-id: https://svn.code.sf.net/p/giza/code@318 952f94de-64c9-43ce-8081-c12abd9885bf 2012-05-08 Daniel Price * test/Makefile, test/test-cairo-xw.c: added Makefile for tests git-svn-id: https://svn.code.sf.net/p/giza/code@317 952f94de-64c9-43ce-8081-c12abd9885bf 2012-05-08 Daniel Price * test/test-cairo-xw.c, test/test-xw.c: added tests for the xw bug git-svn-id: https://svn.code.sf.net/p/giza/code@316 952f94de-64c9-43ce-8081-c12abd9885bf 2012-03-22 Daniel Price * include/giza-shared.h: defined GIZA_FOREGROUND and GIZA_BACKGROUND git-svn-id: https://svn.code.sf.net/p/giza/code@315 952f94de-64c9-43ce-8081-c12abd9885bf 2012-03-22 Daniel Price * include/giza.h, interface/giza-fortran.F90, src/giza-render-private.h, src/giza-render.c: added giza_render_alpha routines for brightness-corrected rendering git-svn-id: https://svn.code.sf.net/p/giza/code@314 952f94de-64c9-43ce-8081-c12abd9885bf 2012-03-22 Daniel Price * interface/giza-fortran.F90: optional viewport arguments to giza_plot handled correctly git-svn-id: https://svn.code.sf.net/p/giza/code@313 952f94de-64c9-43ce-8081-c12abd9885bf 2012-03-22 Daniel Price * include/giza-shared.h: giza_units_normalised added git-svn-id: https://svn.code.sf.net/p/giza/code@312 952f94de-64c9-43ce-8081-c12abd9885bf 2012-03-22 Daniel Price * interface/giza-fortran.F90, test/test-fortran.f90: work on giza_plot continues; handles and renders 2D array git-svn-id: https://svn.code.sf.net/p/giza/code@311 952f94de-64c9-43ce-8081-c12abd9885bf 2012-03-09 Daniel Price * interface/giza-fortran.F90: bug fix with gfortran4.6 and giza_open interface git-svn-id: https://svn.code.sf.net/p/giza/code@310 952f94de-64c9-43ce-8081-c12abd9885bf 2012-03-07 Daniel Price * src/giza-driver-xw.c: X11 driver no longer uses XDefaultGCOfScreen so should work on older systems git-svn-id: https://svn.code.sf.net/p/giza/code@309 952f94de-64c9-43ce-8081-c12abd9885bf 2012-03-07 Daniel Price * build/Makefile, include/giza.h, interface/giza-fortran.F90, interface/giza-pgplot.f90, src/giza-box-time.c: routines/interfaces added for pgtbox/giza_box_time (currently just calls giza_box with options unchanged) git-svn-id: https://svn.code.sf.net/p/giza/code@308 952f94de-64c9-43ce-8081-c12abd9885bf 2012-03-07 Daniel Price * interface/giza-fortran.F90: high level giza_open/giza_close interfaces added to Fortran interface git-svn-id: https://svn.code.sf.net/p/giza/code@307 952f94de-64c9-43ce-8081-c12abd9885bf 2012-03-07 Daniel Price * build/Makefile, include/giza.h, src/giza-set-font.c: freetype font loading added (experimental, not compiled by default) git-svn-id: https://svn.code.sf.net/p/giza/code@306 952f94de-64c9-43ce-8081-c12abd9885bf 2012-03-07 Daniel Price * src/giza-box.c: minor fix to warning git-svn-id: https://svn.code.sf.net/p/giza/code@305 952f94de-64c9-43ce-8081-c12abd9885bf 2012-03-07 Daniel Price * src/giza-box.c: minor fix to documentation git-svn-id: https://svn.code.sf.net/p/giza/code@304 952f94de-64c9-43ce-8081-c12abd9885bf 2012-03-07 Daniel Price * src/giza-driver-eps.c: fixed icc warnings for eps driver git-svn-id: https://svn.code.sf.net/p/giza/code@303 952f94de-64c9-43ce-8081-c12abd9885bf 2012-03-07 Daniel Price * interface/giza-pgplot.f90, src/giza-drivers.c, src/giza-private.h, src/giza.c: PGQINF fully implemented; additional queries added to giza_query_device git-svn-id: https://svn.code.sf.net/p/giza/code@302 952f94de-64c9-43ce-8081-c12abd9885bf 2012-03-07 Daniel Price * src/giza-driver-png.c: bug fix with .png.png naming in png device; change page now calls close_device_png to avoid repeated code git-svn-id: https://svn.code.sf.net/p/giza/code@301 952f94de-64c9-43ce-8081-c12abd9885bf 2012-03-07 Daniel Price * src/giza-box.c: obsolete comment removed git-svn-id: https://svn.code.sf.net/p/giza/code@300 952f94de-64c9-43ce-8081-c12abd9885bf 2012-03-07 Daniel Price * src/giza-box.c: improved readability of giza_box; variables better named; docs added for M and L options git-svn-id: https://svn.code.sf.net/p/giza/code@299 952f94de-64c9-43ce-8081-c12abd9885bf 2012-03-07 Daniel Price * src/giza-box.c: minor cleanup, commented-out stuff removed git-svn-id: https://svn.code.sf.net/p/giza/code@298 952f94de-64c9-43ce-8081-c12abd9885bf 2012-03-07 Daniel Price * src/giza-box.c, src/giza-environment.c: full range of box/env options implemented (grid lines, log axes) git-svn-id: https://svn.code.sf.net/p/giza/code@297 952f94de-64c9-43ce-8081-c12abd9885bf 2012-03-07 Daniel Price * src/giza-line-style.c: minor cleanups git-svn-id: https://svn.code.sf.net/p/giza/code@296 952f94de-64c9-43ce-8081-c12abd9885bf 2012-03-07 Daniel Price * src/giza-drivers.c: BUG FIX with default viewport on first page (character height not initialised correctly), affects giza_environment git-svn-id: https://svn.code.sf.net/p/giza/code@295 952f94de-64c9-43ce-8081-c12abd9885bf 2011-12-14 Daniel Price * build/Makefile: make clean does not destroy cairo libraries if installed to giza/lib git-svn-id: https://svn.code.sf.net/p/giza/code@294 952f94de-64c9-43ce-8081-c12abd9885bf 2011-12-09 Daniel Price * interface/giza-fortran.F90: giza_set_colour_representation_alpha now folded into generic giza_set_colour_representation interface in Fortran git-svn-id: https://svn.code.sf.net/p/giza/code@293 952f94de-64c9-43ce-8081-c12abd9885bf 2011-12-07 Daniel Price * src/giza-colour-bar.c: bug fix with viewport/window not being reset properly in giza_colour_bar/pgwedg git-svn-id: https://svn.code.sf.net/p/giza/code@292 952f94de-64c9-43ce-8081-c12abd9885bf 2011-12-07 terrencetricco * src/giza-colour-bar.c: Colour bar affine fix git-svn-id: https://svn.code.sf.net/p/giza/code@291 952f94de-64c9-43ce-8081-c12abd9885bf 2011-12-07 Daniel Price * include/giza.h, interface/giza-fortran.F90, src/giza-colour-table.c: bug fix with giza_rgb_from_table_float git-svn-id: https://svn.code.sf.net/p/giza/code@290 952f94de-64c9-43ce-8081-c12abd9885bf 2011-12-07 Daniel Price * src/giza-line-width.c: silenced warning if line width too small (now just silently sets the lw to the smallest possible) git-svn-id: https://svn.code.sf.net/p/giza/code@289 952f94de-64c9-43ce-8081-c12abd9885bf 2011-11-16 Daniel Price * build/Makefile, include/giza.h, interface/giza-cpgplot.c, interface/giza-fortran.F90, interface/giza-pgplot.f90, src/giza-colour-bar.c: implemented giza_colour_bar/PGWEDG git-svn-id: https://svn.code.sf.net/p/giza/code@288 952f94de-64c9-43ce-8081-c12abd9885bf 2011-11-16 Daniel Price * docs/api.pl: added comments to api web page git-svn-id: https://svn.code.sf.net/p/giza/code@287 952f94de-64c9-43ce-8081-c12abd9885bf 2011-11-16 Daniel Price * src/giza-driver-xw.c: x errors are errors, not warnings git-svn-id: https://svn.code.sf.net/p/giza/code@286 952f94de-64c9-43ce-8081-c12abd9885bf 2011-11-16 Daniel Price * src/giza-driver-xw.c: added routine to handle X11 protocol errors nicely (issues a giza warning) git-svn-id: https://svn.code.sf.net/p/giza/code@285 952f94de-64c9-43ce-8081-c12abd9885bf 2011-11-16 Daniel Price * src/giza-driver-xw.c: added code (commented out) for better GC create/free in xw driver git-svn-id: https://svn.code.sf.net/p/giza/code@284 952f94de-64c9-43ce-8081-c12abd9885bf 2011-11-14 Daniel Price * src/giza-driver-svg.c: icc warnings silenced in svg driver git-svn-id: https://svn.code.sf.net/p/giza/code@283 952f94de-64c9-43ce-8081-c12abd9885bf 2011-11-14 Daniel Price * docs/get-fortran-params.pl: fixed script with new location for giza-shared.h git-svn-id: https://svn.code.sf.net/p/giza/code@282 952f94de-64c9-43ce-8081-c12abd9885bf 2011-11-14 Daniel Price * include/giza-shared.h, include/giza.h, interface/giza-cpgplot.c, interface/giza-fortran.F90, interface/giza-pgplot.f90, src/giza-render-private.h, src/giza-render.c: added extend parameter to image rendering routines to set the padding type around the image git-svn-id: https://svn.code.sf.net/p/giza/code@281 952f94de-64c9-43ce-8081-c12abd9885bf 2011-11-13 Daniel Price * src/giza-render.c: image padding set back to default instead of repeat in giza_render (fixes pgdemo4) git-svn-id: https://svn.code.sf.net/p/giza/code@280 952f94de-64c9-43ce-8081-c12abd9885bf 2011-11-13 Daniel Price * interface/giza-pgplot.f90: debugging statements removed git-svn-id: https://svn.code.sf.net/p/giza/code@279 952f94de-64c9-43ce-8081-c12abd9885bf 2011-11-13 Daniel Price * interface/giza-cpgplot.c, interface/giza-pgplot.f90: bug fix with translation of tr->affine in pgplot interfaces if shear present (fixes pgdemo4) git-svn-id: https://svn.code.sf.net/p/giza/code@278 952f94de-64c9-43ce-8081-c12abd9885bf 2011-11-11 Daniel Price * interface/giza-cpgplot.c, interface/giza-pgplot.f90: updated PGCTAB calls to giza_set_colour_table to handle contrast/brightness git-svn-id: https://svn.code.sf.net/p/giza/code@277 952f94de-64c9-43ce-8081-c12abd9885bf 2011-11-11 Daniel Price * include/giza.h, interface/giza-fortran.F90, src/giza-colour-table.c: added contrast and brightness arguments to giza_set_colour_table; implemented ability to invert colour table (not yet full support for brightness and contrast) git-svn-id: https://svn.code.sf.net/p/giza/code@276 952f94de-64c9-43ce-8081-c12abd9885bf 2011-11-10 Daniel Price * src/giza-contour.c: BUG FIX with indexing in contour_float git-svn-id: https://svn.code.sf.net/p/giza/code@275 952f94de-64c9-43ce-8081-c12abd9885bf 2011-11-10 Daniel Price * build/Makefile: clean removes .mod files from Fortran build git-svn-id: https://svn.code.sf.net/p/giza/code@274 952f94de-64c9-43ce-8081-c12abd9885bf 2011-11-10 Daniel Price * test/test-box.c, test/test-circle.c, test/test-environment.c, test/test-error-bars.c, test/test-line-cap.c, test/test-line-style.c, test/test-points.c, test/test-set-line-width.c: permissions fixed git-svn-id: https://svn.code.sf.net/p/giza/code@273 952f94de-64c9-43ce-8081-c12abd9885bf 2011-11-10 Daniel Price * build/Makefile: 0.7.2 git-svn-id: https://svn.code.sf.net/p/giza/code@272 952f94de-64c9-43ce-8081-c12abd9885bf 2011-11-10 Daniel Price * build/Makefile, {interface => include}/cpgplot.h, {src => include}/giza-shared.h, {src => include}/giza.h: public header files now live in the include directory rather than being copied around git-svn-id: https://svn.code.sf.net/p/giza/code@271 952f94de-64c9-43ce-8081-c12abd9885bf 2011-11-10 Daniel Price * src/giza-set-font.c: minor fix in api documentation git-svn-id: https://svn.code.sf.net/p/giza/code@270 952f94de-64c9-43ce-8081-c12abd9885bf 2011-11-10 Daniel Price * src/giza-viewport.c, src/giza-window.c: compiler warnings fixed/uses fabs instead of abs git-svn-id: https://svn.code.sf.net/p/giza/code@269 952f94de-64c9-43ce-8081-c12abd9885bf 2011-11-10 Daniel Price * src/giza-vector.c: bug fix with giza-vector in previous commit git-svn-id: https://svn.code.sf.net/p/giza/code@268 952f94de-64c9-43ce-8081-c12abd9885bf 2011-11-10 Daniel Price * src/lex.yy.c: added const to all array input variables; consistent with cpgplot interface git-svn-id: https://svn.code.sf.net/p/giza/code@267 952f94de-64c9-43ce-8081-c12abd9885bf 2011-11-10 Daniel Price * src/giza-drivers-private.h, src/giza-render-private.h, src/giza-text-private.h: added const to all array input variables; consistent with cpgplot interface git-svn-id: https://svn.code.sf.net/p/giza/code@266 952f94de-64c9-43ce-8081-c12abd9885bf 2011-11-10 Daniel Price * interface/giza-cpgplot.c, src/giza-annotate.c, src/giza-contour.c, src/giza-drivers.c, src/giza-error-bars.c, src/giza-label.c, src/giza-line.c, src/giza-points.c, src/giza-polygon.c, src/giza-ptext.c, src/giza-qtext.c, src/giza-render.c, src/giza-scanner.l, src/giza-vector.c, src/giza.h: added const to all array input variables; consistent with cpgplot interface git-svn-id: https://svn.code.sf.net/p/giza/code@265 952f94de-64c9-43ce-8081-c12abd9885bf 2011-11-10 Daniel Price * src/giza-viewport.c, src/giza-window.c: [PATCH contributed by Daniel Kelson] viewport and window now handle xmin>xmax and ymin>ymax correctly git-svn-id: https://svn.code.sf.net/p/giza/code@264 952f94de-64c9-43ce-8081-c12abd9885bf 2011-11-10 Daniel Price * interface/giza-cpgplot.c: added cpgimag interface git-svn-id: https://svn.code.sf.net/p/giza/code@263 952f94de-64c9-43ce-8081-c12abd9885bf 2011-11-10 Daniel Price * interface/giza-cpgplot.c: updated cpgplot interface to include imaging routines; now similar to libpgplot in implementation level git-svn-id: https://svn.code.sf.net/p/giza/code@262 952f94de-64c9-43ce-8081-c12abd9885bf 2011-11-10 Daniel Price * src/giza-contour.c, src/giza-cursor-routines.c, src/giza-points.c, src/giza-render-private.h, src/giza-render.c, src/giza-vector.c, src/giza.h: [PATCH contributed by Daniel Kelson] Arrays now passed as C pointers, not fixed size; fixes cpgplot interface issues; tested against splash and works fine git-svn-id: https://svn.code.sf.net/p/giza/code@261 952f94de-64c9-43ce-8081-c12abd9885bf 2011-11-04 Daniel Price * src/giza-contour.c, src/giza-cursor-routines.c, src/giza-points.c, src/giza-render-private.h, src/giza-render.c, src/giza-vector.c, src/giza.h: reverted to v258 to avoid seg faults git-svn-id: https://svn.code.sf.net/p/giza/code@260 952f94de-64c9-43ce-8081-c12abd9885bf 2011-10-27 terrencetricco * src/giza-contour.c, src/giza-cursor-routines.c, src/giza-points.c, src/giza-render-private.h, src/giza-render.c, src/giza-vector.c, src/giza.h: Function calls now pass pointers to arrays git-svn-id: https://svn.code.sf.net/p/giza/code@259 952f94de-64c9-43ce-8081-c12abd9885bf 2011-10-18 Daniel Price * src/giza-colour-index.c, src/giza-error-bars.c, src/giza-private.h: implemented semi-transparent error bar plotting git-svn-id: https://svn.code.sf.net/p/giza/code@258 952f94de-64c9-43ce-8081-c12abd9885bf 2011-09-26 Daniel Price * src/giza-line-style.c: typo in warning message fixed git-svn-id: https://svn.code.sf.net/p/giza/code@257 952f94de-64c9-43ce-8081-c12abd9885bf 2011-09-21 Daniel Price * src/giza-box.c, src/giza-character-size.c, src/giza-points.c, src/giza-ptext.c, src/giza-qtext.c: bug fix (regression) with character height queries (font extents call now back in set character height where it belongs) git-svn-id: https://svn.code.sf.net/p/giza/code@256 952f94de-64c9-43ce-8081-c12abd9885bf 2011-09-21 Daniel Price * src/giza-colour-table.c: mistaken const declarations removed; replaced with static git-svn-id: https://svn.code.sf.net/p/giza/code@255 952f94de-64c9-43ce-8081-c12abd9885bf 2011-09-21 Daniel Price * src/giza-colour-table.c: mistaken const declarations removed git-svn-id: https://svn.code.sf.net/p/giza/code@254 952f94de-64c9-43ce-8081-c12abd9885bf 2011-09-21 Daniel Price * docs/api.pl, src/giza-colour-palette.c, src/giza-colour-table.c, src/giza-render.c: bug fixes with generation of api documentation git-svn-id: https://svn.code.sf.net/p/giza/code@253 952f94de-64c9-43ce-8081-c12abd9885bf 2011-09-21 Daniel Price * src/giza-set-font.c: uses explicit font face creation/destruction to avoid memory leaks (cairo >=1.8 only) git-svn-id: https://svn.code.sf.net/p/giza/code@252 952f94de-64c9-43ce-8081-c12abd9885bf 2011-09-21 Daniel Price * src/giza-drivers.c: character height initialises after font (does not really matter, but better this way) git-svn-id: https://svn.code.sf.net/p/giza/code@251 952f94de-64c9-43ce-8081-c12abd9885bf 2011-09-21 Daniel Price * src/giza-colour-index.c: colour index variables declared static git-svn-id: https://svn.code.sf.net/p/giza/code@250 952f94de-64c9-43ce-8081-c12abd9885bf 2011-09-21 Daniel Price * docs/get-fortran-params.pl: minor edit to fortran-params script git-svn-id: https://svn.code.sf.net/p/giza/code@249 952f94de-64c9-43ce-8081-c12abd9885bf 2011-09-21 Daniel Price * src/giza-contour.c: bug fix with array overflow in giza_contour git-svn-id: https://svn.code.sf.net/p/giza/code@248 952f94de-64c9-43ce-8081-c12abd9885bf 2011-09-15 Daniel Price * src/giza-points.c: markerHeight declared static git-svn-id: https://svn.code.sf.net/p/giza/code@247 952f94de-64c9-43ce-8081-c12abd9885bf 2011-09-15 Daniel Price * test/test-openclose.c: basic test of multiple open/close calls added git-svn-id: https://svn.code.sf.net/p/giza/code@246 952f94de-64c9-43ce-8081-c12abd9885bf 2011-09-15 Daniel Price * src/giza-drivers.c: valgrind bug fix with init_device_list using uninitialised string git-svn-id: https://svn.code.sf.net/p/giza/code@245 952f94de-64c9-43ce-8081-c12abd9885bf 2011-09-15 Daniel Price * src/giza-box.c: bug fix with log labelling of 1 and 10 git-svn-id: https://svn.code.sf.net/p/giza/code@244 952f94de-64c9-43ce-8081-c12abd9885bf 2011-09-14 Daniel Price * test/test-XOpenDisplay.c: test added for memory leaks in X11 git-svn-id: https://svn.code.sf.net/p/giza/code@243 952f94de-64c9-43ce-8081-c12abd9885bf 2011-09-12 Daniel Price * interface/giza-pgplot.f90, src/giza-shared.h: changed order of long/short dashes; line styles in libpgplot now always match pgplot git-svn-id: https://svn.code.sf.net/p/giza/code@242 952f94de-64c9-43ce-8081-c12abd9885bf 2011-09-12 Daniel Price * docs/get-fortran-params.pl, interface/giza-fortran.F90: updated list of fortran params automatically git-svn-id: https://svn.code.sf.net/p/giza/code@241 952f94de-64c9-43ce-8081-c12abd9885bf 2011-09-12 Daniel Price * src/giza-label.c: bug fix with chopped labels in giza_label git-svn-id: https://svn.code.sf.net/p/giza/code@240 952f94de-64c9-43ce-8081-c12abd9885bf 2011-09-12 Daniel Price * src/giza-annotate.c: giza-annotate code shortened (unnecessary extra lines removed) git-svn-id: https://svn.code.sf.net/p/giza/code@239 952f94de-64c9-43ce-8081-c12abd9885bf 2011-09-12 Daniel Price * src/giza-viewport.c: bug fix in default viewport causing labels with giza_label to be clipped git-svn-id: https://svn.code.sf.net/p/giza/code@238 952f94de-64c9-43ce-8081-c12abd9885bf 2011-09-12 Daniel Price * src/giza-box.c, src/giza-character-size.c, src/giza-points.c, src/giza-ptext.c, src/giza-qtext.c: [optimisation] do not query the font extents every time the character size is set; instead do this only in the routines that need to use Sets.font information git-svn-id: https://svn.code.sf.net/p/giza/code@237 952f94de-64c9-43ce-8081-c12abd9885bf 2011-09-12 Daniel Price * build/Makefile: bumped version number git-svn-id: https://svn.code.sf.net/p/giza/code@236 952f94de-64c9-43ce-8081-c12abd9885bf 2011-09-09 Daniel Price * src/giza-paper.c: header included for internal routine git-svn-id: https://svn.code.sf.net/p/giza/code@235 952f94de-64c9-43ce-8081-c12abd9885bf 2011-09-09 Daniel Price * interface/giza-fortran.F90, interface/giza-pgplot.f90, src/giza-driver-eps.c, src/giza-driver-null.c, src/giza-driver-pdf.c, src/giza-driver-png.c, src/giza-driver-ps.c, src/giza-driver-svg.c, src/giza-driver-xw.c, src/giza-drivers-private.h, src/giza-drivers.c, src/giza-paper.c, src/giza-private.h, src/giza.h: rejigged the way the paper size is set; can now be set in different units; set_paper_size calls redone; Dev.widthCM and Dev.heightCM removed; less confusing all round git-svn-id: https://svn.code.sf.net/p/giza/code@234 952f94de-64c9-43ce-8081-c12abd9885bf 2011-09-09 Daniel Price * src/giza-paper.c: paper size queries use Dev.width not Dev.widthCM (safer) git-svn-id: https://svn.code.sf.net/p/giza/code@233 952f94de-64c9-43ce-8081-c12abd9885bf 2011-09-09 Daniel Price * src/giza-viewport.c: set_viewport_inches uses Dev.width not Dev.widthCM (safer) git-svn-id: https://svn.code.sf.net/p/giza/code@232 952f94de-64c9-43ce-8081-c12abd9885bf 2011-09-06 Daniel Price * src/giza-driver-ps.c: added comments to postscript header git-svn-id: https://svn.code.sf.net/p/giza/code@231 952f94de-64c9-43ce-8081-c12abd9885bf 2011-09-06 Daniel Price * src/giza-drivers.c, src/giza-viewport-private.h, src/giza-viewport.c: standard viewport (as used by giza_environment) now leaves boundary of 4 character heights on each size rather than a fixed fraction git-svn-id: https://svn.code.sf.net/p/giza/code@230 952f94de-64c9-43ce-8081-c12abd9885bf 2011-09-06 Daniel Price * build/Makefile: gfortran version checks work with old gfortran (v4.1.2) and give error git-svn-id: https://svn.code.sf.net/p/giza/code@229 952f94de-64c9-43ce-8081-c12abd9885bf 2011-09-06 Daniel Price * build/Makefile: checks gfortran version number and gives error if gfortran is too old to compile fortran interface git-svn-id: https://svn.code.sf.net/p/giza/code@228 952f94de-64c9-43ce-8081-c12abd9885bf 2011-09-05 Daniel Price * build/Makefile: added $PREFIX/include to include line git-svn-id: https://svn.code.sf.net/p/giza/code@227 952f94de-64c9-43ce-8081-c12abd9885bf 2011-09-05 Daniel Price * src/giza-driver-pdf.c, src/giza-driver-ps.c: all drivers call get_filename_for_device; avoids trim/case issues git-svn-id: https://svn.code.sf.net/p/giza/code@226 952f94de-64c9-43ce-8081-c12abd9885bf 2011-09-05 Daniel Price * src/giza-drivers.c: id decreased again when device close (fixes spurious warnings) git-svn-id: https://svn.code.sf.net/p/giza/code@225 952f94de-64c9-43ce-8081-c12abd9885bf 2011-09-05 Daniel Price * build/Makefile: minor changes to Makefile structure git-svn-id: https://svn.code.sf.net/p/giza/code@224 952f94de-64c9-43ce-8081-c12abd9885bf 2011-09-05 Daniel Price * build/Makefile: still working on dylib vs .so; works on both now git-svn-id: https://svn.code.sf.net/p/giza/code@223 952f94de-64c9-43ce-8081-c12abd9885bf 2011-09-05 Daniel Price * build/Makefile: build more portable on os/x vs linux git-svn-id: https://svn.code.sf.net/p/giza/code@222 952f94de-64c9-43ce-8081-c12abd9885bf 2011-09-05 Daniel Price * build/Makefile: shared lib extension determined automatically git-svn-id: https://svn.code.sf.net/p/giza/code@221 952f94de-64c9-43ce-8081-c12abd9885bf 2011-08-31 Daniel Price * build/Makefile, interface/giza-fortran.F90, interface/giza-pgplot.f90, src/giza-colour-index.c, src/giza-colour-palette.c, src/giza-colour-private.h, src/giza-drivers.c, src/giza-shared.h, src/giza.h: added giza_colour_palette routines; libpgplot uses PGPLOT colour palette by default git-svn-id: https://svn.code.sf.net/p/giza/code@220 952f94de-64c9-43ce-8081-c12abd9885bf 2011-08-31 Daniel Price * interface/giza-fortran.F90: bug fix with len_trim in f2c string conversion git-svn-id: https://svn.code.sf.net/p/giza/code@219 952f94de-64c9-43ce-8081-c12abd9885bf 2011-08-30 Daniel Price * src/giza-annotate.c, src/giza-arrow.c, src/giza-band.c, src/giza-box.c, src/giza-character-size.c, src/giza-circle.c, src/giza-clipping.c, src/giza-colour-index.c, src/giza-colour-private.h, src/giza-colour-table.c, src/giza-contour.c, src/giza-cursor-routines.c, src/giza-device-has-cursor.c, src/giza-driver-eps.c, src/giza-driver-null.c, src/giza-driver-pdf.c, src/giza-driver-png.c, src/giza-driver-svg.c, src/giza-driver-xw.c, src/giza-drivers.c, src/giza-environment.c, src/giza-error-bars.c, src/giza-fill.c, src/giza-format-number.c, src/giza-function-t.c, src/giza-function-x.c, src/giza-function-y.c, src/giza-get-key-press.c, src/giza-get-surface-size.c, src/giza-io.c, src/giza-label.c, src/giza-line-style.c, src/giza-line-width.c, src/giza-line.c, src/giza-points.c, src/giza-polygon.c, src/giza-print-id.c, src/giza-prompting.c, src/giza-qtext.c, src/giza-render.c, src/giza-set-font.c, src/giza-stroke.c, src/giza-text.c, src/giza-vector.c, src/giza-viewport.c, src/giza-warnings.c, src/giza-window.c, src/giza.c, src/giza.h, src/lex.yy.c: spurious whitespace at end of lines removed (script) git-svn-id: https://svn.code.sf.net/p/giza/code@218 952f94de-64c9-43ce-8081-c12abd9885bf 2011-08-30 Daniel Price * src/giza-annotate.c: better placement of text above viewport in giza-annotate git-svn-id: https://svn.code.sf.net/p/giza/code@217 952f94de-64c9-43ce-8081-c12abd9885bf 2011-08-30 Daniel Price * src/giza-colour-index.c, src/giza-colour-private.h, src/giza-drivers.c: implemented option to give exact pgplot colour table git-svn-id: https://svn.code.sf.net/p/giza/code@216 952f94de-64c9-43ce-8081-c12abd9885bf 2011-08-30 Daniel Price * interface/giza-pgplot.f90: better linewidth conversion between pgplot and giza in libpgplot git-svn-id: https://svn.code.sf.net/p/giza/code@215 952f94de-64c9-43ce-8081-c12abd9885bf 2011-08-30 Daniel Price * interface/giza-fortran.F90: whitespace removed from strings in when passed through giza-fortran interface git-svn-id: https://svn.code.sf.net/p/giza/code@214 952f94de-64c9-43ce-8081-c12abd9885bf 2011-08-30 Daniel Price * src/giza-drivers-private.h, src/giza-drivers.c: bug fix with whitespace in device names git-svn-id: https://svn.code.sf.net/p/giza/code@213 952f94de-64c9-43ce-8081-c12abd9885bf 2011-08-30 Daniel Price * src/giza-drivers.c: handles failure to call close_device; also bug fix with _giza_lowercase git-svn-id: https://svn.code.sf.net/p/giza/code@212 952f94de-64c9-43ce-8081-c12abd9885bf 2011-08-30 Daniel Price * src/giza-drivers.c: handles failure to call close_device; also bug fix with _giza_lowercase git-svn-id: https://svn.code.sf.net/p/giza/code@211 952f94de-64c9-43ce-8081-c12abd9885bf 2011-08-30 Daniel Price * src/giza-error-bars.c: more warnings silenced git-svn-id: https://svn.code.sf.net/p/giza/code@210 952f94de-64c9-43ce-8081-c12abd9885bf 2011-08-30 Daniel Price * build/Makefile: uses libtool instead of c compiler to build shared library git-svn-id: https://svn.code.sf.net/p/giza/code@209 952f94de-64c9-43ce-8081-c12abd9885bf 2011-08-30 Daniel Price * src/giza-points.c, src/giza-polygon.c: silenced spurious warnings in giza-points and giza-polygon git-svn-id: https://svn.code.sf.net/p/giza/code@208 952f94de-64c9-43ce-8081-c12abd9885bf 2011-08-30 Daniel Price * src/giza-driver-xw.c: better flush of xevents git-svn-id: https://svn.code.sf.net/p/giza/code@207 952f94de-64c9-43ce-8081-c12abd9885bf 2011-08-29 Daniel Price * build/Makefile: updated include paths git-svn-id: https://svn.code.sf.net/p/giza/code@206 952f94de-64c9-43ce-8081-c12abd9885bf 2011-08-26 Daniel Price * interface/giza-fortran.F90: debugging stuff removed git-svn-id: https://svn.code.sf.net/p/giza/code@205 952f94de-64c9-43ce-8081-c12abd9885bf 2011-08-26 Daniel Price * build/Makefile: minor fix in build git-svn-id: https://svn.code.sf.net/p/giza/code@204 952f94de-64c9-43ce-8081-c12abd9885bf 2011-08-26 Daniel Price * src/giza-paper.c: compiler warnings fixed git-svn-id: https://svn.code.sf.net/p/giza/code@203 952f94de-64c9-43ce-8081-c12abd9885bf 2011-08-26 Daniel Price * src/giza-colour-index.c: compiler warnings fixed git-svn-id: https://svn.code.sf.net/p/giza/code@202 952f94de-64c9-43ce-8081-c12abd9885bf 2011-08-26 Daniel Price * src/giza-arrow-style.c: compiler warnings fixed in arrow style git-svn-id: https://svn.code.sf.net/p/giza/code@201 952f94de-64c9-43ce-8081-c12abd9885bf 2011-08-26 Daniel Price * build/Makefile: .PHONY targets added git-svn-id: https://svn.code.sf.net/p/giza/code@200 952f94de-64c9-43ce-8081-c12abd9885bf 2011-08-26 Daniel Price * build/Makefile: minor tweaks to build git-svn-id: https://svn.code.sf.net/p/giza/code@199 952f94de-64c9-43ce-8081-c12abd9885bf 2011-08-26 Daniel Price * build/Makefile: makefile compatible with new splash build git-svn-id: https://svn.code.sf.net/p/giza/code@198 952f94de-64c9-43ce-8081-c12abd9885bf 2011-08-26 Daniel Price * build/Makefile: minor fixes to build git-svn-id: https://svn.code.sf.net/p/giza/code@197 952f94de-64c9-43ce-8081-c12abd9885bf 2011-08-26 Daniel Price * interface/pgplot-stubs.f90: removed obsolete pgplot-stubs file git-svn-id: https://svn.code.sf.net/p/giza/code@196 952f94de-64c9-43ce-8081-c12abd9885bf 2011-08-26 Daniel Price * .gitignore: updated .gitignore to ignore built libraries git-svn-id: https://svn.code.sf.net/p/giza/code@195 952f94de-64c9-43ce-8081-c12abd9885bf 2011-08-26 Daniel Price * docs/get-source-files.pl: script for getting list of source files for Makefile git-svn-id: https://svn.code.sf.net/p/giza/code@194 952f94de-64c9-43ce-8081-c12abd9885bf 2011-08-26 Daniel Price * interface/cpgplot.h: minor formatting changes git-svn-id: https://svn.code.sf.net/p/giza/code@193 952f94de-64c9-43ce-8081-c12abd9885bf 2011-08-26 Daniel Price * build/Makefile, interface/Makefile, interface/giza-fortran.F90, src/giza-format-number.c, src/{giza-shared-cpp.h => giza-shared.h}, src/giza-version.h, src/giza.h: giza-version.h now created automatically at compile time; removed separate interface/Makefile (subsumed into main Makefile) git-svn-id: https://svn.code.sf.net/p/giza/code@192 952f94de-64c9-43ce-8081-c12abd9885bf 2011-08-26 Daniel Price * src/giza-points.c: bug fix with polygon and stars in symbol plotting git-svn-id: https://svn.code.sf.net/p/giza/code@191 952f94de-64c9-43ce-8081-c12abd9885bf 2011-08-23 Daniel Price * src/giza-points.c, src/giza-private.h, src/giza-scanner.l, src/giza-text.c, src/lex.yy.c: implemented markers in character strings (e.g. \m8) git-svn-id: https://svn.code.sf.net/p/giza/code@190 952f94de-64c9-43ce-8081-c12abd9885bf 2011-08-22 Daniel Price * interface/giza-cpgplot.c: finished adding cpgplot functions -- imaging routines not yet implemented git-svn-id: https://svn.code.sf.net/p/giza/code@189 952f94de-64c9-43ce-8081-c12abd9885bf 2011-08-22 Daniel Price * interface/giza-pgplot.f90: bug fix in pgqvsz git-svn-id: https://svn.code.sf.net/p/giza/code@188 952f94de-64c9-43ce-8081-c12abd9885bf 2011-08-17 Daniel Price * interface/giza-cpgplot.c, interface/giza-fortran.F90, interface/giza-pgplot.f90: more cpgplot stuff; giza_version_string in fortran module git-svn-id: https://svn.code.sf.net/p/giza/code@187 952f94de-64c9-43ce-8081-c12abd9885bf 2011-08-17 Daniel Price * interface/giza-cpgplot.c: implemented more cpgplot stuff git-svn-id: https://svn.code.sf.net/p/giza/code@186 952f94de-64c9-43ce-8081-c12abd9885bf 2011-08-16 Daniel Price * src/giza-driver-svg-private.h, src/giza-driver-svg.c, src/giza-drivers-private.h, src/giza-drivers.c: svg driver added git-svn-id: https://svn.code.sf.net/p/giza/code@185 952f94de-64c9-43ce-8081-c12abd9885bf 2011-08-16 Daniel Price * src/giza-driver-xw-private.h, src/giza-driver-xw.c: allow change_size_xw to be called from other routines git-svn-id: https://svn.code.sf.net/p/giza/code@184 952f94de-64c9-43ce-8081-c12abd9885bf 2011-08-16 Daniel Price * src/giza-draw-background.c: background only painted explicitly if it is not transparent (to avoid bounding box issues on eps devices) git-svn-id: https://svn.code.sf.net/p/giza/code@183 952f94de-64c9-43ce-8081-c12abd9885bf 2011-08-15 Daniel Price * src/giza-drivers.c, src/giza-viewport.c, src/giza-window.c: BUG FIX with initialisation of viewport/window (window now called from set_viewport; fixes pgdemo2 issue) git-svn-id: https://svn.code.sf.net/p/giza/code@182 952f94de-64c9-43ce-8081-c12abd9885bf 2011-08-15 Daniel Price * src/giza-scanner.l, src/lex.yy.c: added \odot (but not in standard font) git-svn-id: https://svn.code.sf.net/p/giza/code@181 952f94de-64c9-43ce-8081-c12abd9885bf 2011-08-10 Daniel Price * interface/giza-cpgplot.c: whole bunch more cpgplot routines added git-svn-id: https://svn.code.sf.net/p/giza/code@180 952f94de-64c9-43ce-8081-c12abd9885bf 2011-08-09 Daniel Price * interface/Makefile, interface/giza-cpgplot.c: added build for libcpgplot; few more functions implemented git-svn-id: https://svn.code.sf.net/p/giza/code@179 952f94de-64c9-43ce-8081-c12abd9885bf 2011-08-09 Daniel Price * interface/giza-cpgplot.c, src/giza-colour-table.c, src/giza.h: pgctab; use const on input variables git-svn-id: https://svn.code.sf.net/p/giza/code@178 952f94de-64c9-43ce-8081-c12abd9885bf 2011-08-09 Daniel Price * interface/giza-cpgplot.c: implemented the first few cpgplot functions git-svn-id: https://svn.code.sf.net/p/giza/code@177 952f94de-64c9-43ce-8081-c12abd9885bf 2011-08-09 Daniel Price * docs/cpgplot_status.pl, interface/giza-cpgplot.c: documentation of cpgplot interface added git-svn-id: https://svn.code.sf.net/p/giza/code@176 952f94de-64c9-43ce-8081-c12abd9885bf 2011-08-09 Daniel Price * interface/giza-pgplot.f90: bug fix with pggray interface + compile problems git-svn-id: https://svn.code.sf.net/p/giza/code@175 952f94de-64c9-43ce-8081-c12abd9885bf 2011-08-09 Daniel Price * interface/cpgplot.h, interface/giza-cpgplot.c: added basic cpgplot interface (just empty functions at present) git-svn-id: https://svn.code.sf.net/p/giza/code@174 952f94de-64c9-43ce-8081-c12abd9885bf 2011-08-05 Daniel Price * src/giza-drivers.c: all icc warnings fixed git-svn-id: https://svn.code.sf.net/p/giza/code@173 952f94de-64c9-43ce-8081-c12abd9885bf 2011-08-05 Daniel Price * src/giza-drivers-private.h, src/giza-drivers.c: strcasestr replaced with standard c stuff git-svn-id: https://svn.code.sf.net/p/giza/code@172 952f94de-64c9-43ce-8081-c12abd9885bf 2011-08-05 Daniel Price * src/giza-scanner.l, src/lex.yy.c: unicode chars direct not using escape sequences; \odot and \Sun implemented git-svn-id: https://svn.code.sf.net/p/giza/code@171 952f94de-64c9-43ce-8081-c12abd9885bf 2011-08-05 Daniel Price * src/giza-drivers.c: fixed icc warning (int->char conversion now explicit) git-svn-id: https://svn.code.sf.net/p/giza/code@170 952f94de-64c9-43ce-8081-c12abd9885bf 2011-08-05 Daniel Price * src/giza-arrow.c, src/giza-box.c, src/giza-colour-index.c, src/giza-colour-private.h, src/giza-colour-table.c, src/giza-contour.c, src/giza-cursor-private.h, src/giza-cursor-routines.c, src/giza-device-has-cursor.c, src/giza-driver-pdf.c, src/giza-driver-png.c, src/giza-driver-ps.c, src/giza-driver-xw.c, src/giza-fill-private.h, src/giza-fill.c, src/giza-format-number.c, src/giza-function-t.c, src/giza-function-x.c, src/giza-function-y.c, src/giza-get-surface-size.c, src/giza-points.c, src/giza-private.h, src/giza-prompting.c, src/giza-render-private.h, src/giza-render.c, src/giza-shared-cpp.h, src/giza-vector.c, src/giza-warnings.c, src/giza-window.c, src/giza.c, src/giza.h: fixed (almost) all icc warnings git-svn-id: https://svn.code.sf.net/p/giza/code@169 952f94de-64c9-43ce-8081-c12abd9885bf 2011-08-05 Daniel Price * src/giza-driver-xw.c: xw driver catches the close window event git-svn-id: https://svn.code.sf.net/p/giza/code@168 952f94de-64c9-43ce-8081-c12abd9885bf 2011-08-02 Daniel Price * src/giza-band-style.c, src/giza-band.c, src/giza-driver-xw.c: band now draws transparent box (looks nicer) git-svn-id: https://svn.code.sf.net/p/giza/code@167 952f94de-64c9-43ce-8081-c12abd9885bf 2011-07-29 Daniel Price * src/giza-drivers.c, src/giza.h: icc compiler warnings fixed git-svn-id: https://svn.code.sf.net/p/giza/code@166 952f94de-64c9-43ce-8081-c12abd9885bf 2011-07-29 Daniel Price * src/giza-driver-null.c: bug fix with types in null surface size git-svn-id: https://svn.code.sf.net/p/giza/code@165 952f94de-64c9-43ce-8081-c12abd9885bf 2011-07-29 Daniel Price * src/giza-driver-xw.c, src/giza-drivers.c: SEG FAULT FIXED!!! finally got this show-stopping bug git-svn-id: https://svn.code.sf.net/p/giza/code@164 952f94de-64c9-43ce-8081-c12abd9885bf 2011-07-29 Daniel Price * src/giza-shared-cpp.h: bug fix in version numbering git-svn-id: https://svn.code.sf.net/p/giza/code@163 952f94de-64c9-43ce-8081-c12abd9885bf 2011-07-29 Daniel Price * src/giza-io.c, src/giza-shared-cpp.h, src/giza-version.h: added giza version number; prints this with device list along with cairo version git-svn-id: https://svn.code.sf.net/p/giza/code@162 952f94de-64c9-43ce-8081-c12abd9885bf 2011-07-29 Daniel Price * interface/giza-fortran.F90: much better string conversion between c and fortran (standards conforming) git-svn-id: https://svn.code.sf.net/p/giza/code@161 952f94de-64c9-43ce-8081-c12abd9885bf 2011-07-28 Daniel Price * src/giza-driver-xw.c: band drawn in grey rather than foreground colour (works on both black and white backgrounds git-svn-id: https://svn.code.sf.net/p/giza/code@160 952f94de-64c9-43ce-8081-c12abd9885bf 2011-07-28 Daniel Price * src/giza-driver-xw.c: bug fix with uninitialised variable in xw driver git-svn-id: https://svn.code.sf.net/p/giza/code@159 952f94de-64c9-43ce-8081-c12abd9885bf 2011-07-28 Daniel Price * src/giza-band.c: bug fix with uninitialised variables in giza-band git-svn-id: https://svn.code.sf.net/p/giza/code@158 952f94de-64c9-43ce-8081-c12abd9885bf 2011-07-28 Daniel Price * src/giza-text.c: string.h included for strlen git-svn-id: https://svn.code.sf.net/p/giza/code@157 952f94de-64c9-43ce-8081-c12abd9885bf 2011-07-28 Daniel Price * src/giza-viewport.c: window initialisation commented (should be unnecessary) git-svn-id: https://svn.code.sf.net/p/giza/code@156 952f94de-64c9-43ce-8081-c12abd9885bf 2011-07-28 Daniel Price * src/giza-private.h: revised GIZA_ZERO_FLOAT and GIZA_ZERO_DOUBLE upwards slightly git-svn-id: https://svn.code.sf.net/p/giza/code@155 952f94de-64c9-43ce-8081-c12abd9885bf 2011-07-28 Daniel Price * src/giza-window.c: unnecessary checking of dxWin, dyWin removed git-svn-id: https://svn.code.sf.net/p/giza/code@154 952f94de-64c9-43ce-8081-c12abd9885bf 2011-07-28 Daniel Price * src/giza-driver-xw.c: BUG FIX with uninitialised variable in xw driver git-svn-id: https://svn.code.sf.net/p/giza/code@153 952f94de-64c9-43ce-8081-c12abd9885bf 2011-07-28 Daniel Price * src/giza-drivers.c: header changed git-svn-id: https://svn.code.sf.net/p/giza/code@152 952f94de-64c9-43ce-8081-c12abd9885bf 2011-07-28 Daniel Price * src/giza-viewport.c: setting the default viewport does not reset the window (because Win not set) git-svn-id: https://svn.code.sf.net/p/giza/code@151 952f94de-64c9-43ce-8081-c12abd9885bf 2011-07-28 Daniel Price * src/giza-window.c: code cleanup; bug fix with viewport initialisation before window has been set; window setting now robust if x1=x2 or y1=y2 git-svn-id: https://svn.code.sf.net/p/giza/code@150 952f94de-64c9-43ce-8081-c12abd9885bf 2011-07-26 Daniel Price * src/giza-text.c: minor checks added to text print (checks strlen>0) git-svn-id: https://svn.code.sf.net/p/giza/code@149 952f94de-64c9-43ce-8081-c12abd9885bf 2011-06-30 Daniel Price * interface/giza-fortran.F90, interface/giza-pgplot.f90, src/giza-character-size.c, src/giza-driver-eps.c, src/giza-driver-null.c, src/giza-driver-pdf.c, src/giza-driver-png.c, src/giza-driver-ps.c, src/giza-driver-xw.c, src/giza-paper.c, src/giza-private.h, src/giza-qtext.c, src/giza-shared-cpp.h, src/giza-viewport.c: implemented device size query in pixels; this can be different to points (allows us to specify resolution of vector devices other than 1 pixel per point) git-svn-id: https://svn.code.sf.net/p/giza/code@148 952f94de-64c9-43ce-8081-c12abd9885bf 2011-06-30 Daniel Price * interface/giza-fortran.F90, src/giza-render.c, src/giza.h: added giza_render_transparent for rendering with a transparent minimum git-svn-id: https://svn.code.sf.net/p/giza/code@147 952f94de-64c9-43ce-8081-c12abd9885bf 2011-06-30 Daniel Price * src/giza-colour-table.c: cleanup of debugging stuff; allocate/deallocate routines now unnecessary in colour table stuff git-svn-id: https://svn.code.sf.net/p/giza/code@146 952f94de-64c9-43ce-8081-c12abd9885bf 2011-06-30 Daniel Price * src/giza-colour-index.c: save/restore colour tables implemented (could not get working with allocatable array components; so colour tables now have fixed memory allocation; also more efficient) git-svn-id: https://svn.code.sf.net/p/giza/code@145 952f94de-64c9-43ce-8081-c12abd9885bf 2011-06-30 Daniel Price * src/giza-colour-private.h, src/giza-colour-table.c, src/giza-render.c, src/giza.h: save/restore colour tables implemented (could not get working with allocatable array components; so colour tables now have fixed memory allocation; also more efficient) git-svn-id: https://svn.code.sf.net/p/giza/code@144 952f94de-64c9-43ce-8081-c12abd9885bf 2011-06-30 Daniel Price * src/giza-colour-index.c, src/giza-colour-private.h, src/giza-colour-table.c, src/giza-private.h: giza_set_colour_table routines use giza_set_in_range; now only one version of this, returns double git-svn-id: https://svn.code.sf.net/p/giza/code@143 952f94de-64c9-43ce-8081-c12abd9885bf 2011-06-30 Daniel Price * src/giza-colour-table.c: neatened up set_colour_table routines with reallocate routine git-svn-id: https://svn.code.sf.net/p/giza/code@142 952f94de-64c9-43ce-8081-c12abd9885bf 2011-06-30 Daniel Price * interface/giza-fortran.F90, interface/giza-pgplot.f90, src/giza-render.c, src/giza.h: added giza_render_gray routine; does work but currently resets colour table git-svn-id: https://svn.code.sf.net/p/giza/code@141 952f94de-64c9-43ce-8081-c12abd9885bf 2011-06-30 Daniel Price * src/giza-colour-index.c: removed commented bit about redrawing background (should never be done here) git-svn-id: https://svn.code.sf.net/p/giza/code@140 952f94de-64c9-43ce-8081-c12abd9885bf 2011-06-24 Daniel Price * src/giza-driver-xw.c: flushing of xevent queue restored git-svn-id: https://svn.code.sf.net/p/giza/code@139 952f94de-64c9-43ce-8081-c12abd9885bf 2011-06-24 Daniel Price * src/giza-driver-xw.c: debugging stuff removed from xw driver; also commented out queue flushing git-svn-id: https://svn.code.sf.net/p/giza/code@138 952f94de-64c9-43ce-8081-c12abd9885bf 2011-06-20 Daniel Price * src/giza-drivers.c: bug fix: background colour changes now take effect provided nothing has been plotted on the page git-svn-id: https://svn.code.sf.net/p/giza/code@137 952f94de-64c9-43ce-8081-c12abd9885bf 2011-06-20 Daniel Price * src/giza-drivers.c: documentation added for giza_query_device git-svn-id: https://svn.code.sf.net/p/giza/code@136 952f94de-64c9-43ce-8081-c12abd9885bf 2011-06-20 Daniel Price * src/giza-line.c: warnings about <2 points in giza_line removed git-svn-id: https://svn.code.sf.net/p/giza/code@135 952f94de-64c9-43ce-8081-c12abd9885bf 2011-06-20 Daniel Price * src/giza-driver-eps.c, src/giza-driver-png.c, src/giza-drivers-private.h: png and eps devices use new filename-setting routine git-svn-id: https://svn.code.sf.net/p/giza/code@134 952f94de-64c9-43ce-8081-c12abd9885bf 2011-06-20 Daniel Price * src/giza-drivers.c: added internal routine for setting filename on one-file-per-plot devices; also bug fix with page change on null device git-svn-id: https://svn.code.sf.net/p/giza/code@133 952f94de-64c9-43ce-8081-c12abd9885bf 2011-06-20 Daniel Price * src/giza-driver-xw.c: added function to purge Xevent queue git-svn-id: https://svn.code.sf.net/p/giza/code@132 952f94de-64c9-43ce-8081-c12abd9885bf 2011-06-20 Daniel Price * src/giza-set-font.c: initialisation of font matrix (commented out) git-svn-id: https://svn.code.sf.net/p/giza/code@131 952f94de-64c9-43ce-8081-c12abd9885bf 2011-06-20 Daniel Price * src/giza-character-size.c: minor comments added git-svn-id: https://svn.code.sf.net/p/giza/code@130 952f94de-64c9-43ce-8081-c12abd9885bf 2011-06-08 Daniel Price * src/giza-scanner.l, src/lex.yy.c: BUG FIX with super/subscripting at end of string git-svn-id: https://svn.code.sf.net/p/giza/code@129 952f94de-64c9-43ce-8081-c12abd9885bf 2011-06-01 Daniel Price * src/giza-scanner.l, src/giza-text-private.h, src/lex.yy.c: compiler warning about pointers fixed git-svn-id: https://svn.code.sf.net/p/giza/code@128 952f94de-64c9-43ce-8081-c12abd9885bf 2011-06-01 Daniel Price * src/giza-scanner.l, src/lex.yy.c: attempt to see if using longer string fixes the seg fault problem git-svn-id: https://svn.code.sf.net/p/giza/code@127 952f94de-64c9-43ce-8081-c12abd9885bf 2011-06-01 Daniel Price * src/giza-scanner.l, src/lex.yy.c: BUG FIX with memory leaks in get_chunk git-svn-id: https://svn.code.sf.net/p/giza/code@126 952f94de-64c9-43ce-8081-c12abd9885bf 2011-06-01 Daniel Price * interface/giza-fortran.F90: BUG FIX with cstring conversion routine with zero-length strings and ifort/icc git-svn-id: https://svn.code.sf.net/p/giza/code@125 952f94de-64c9-43ce-8081-c12abd9885bf 2011-06-01 Daniel Price * src/giza-viewport.c: set_default_viewport handled slightly differently; avoids possibility of recursive calls; less repeated code git-svn-id: https://svn.code.sf.net/p/giza/code@124 952f94de-64c9-43ce-8081-c12abd9885bf 2011-06-01 Daniel Price * src/giza-private.h: added declarations for some internal routines git-svn-id: https://svn.code.sf.net/p/giza/code@123 952f94de-64c9-43ce-8081-c12abd9885bf 2011-06-01 Daniel Price * src/giza-line-style.c: uses GIZA_UNITS_MM instead of 2 git-svn-id: https://svn.code.sf.net/p/giza/code@122 952f94de-64c9-43ce-8081-c12abd9885bf 2011-05-31 Daniel Price * src/giza-driver-xw.c: restored use of X pixmap so banding works again git-svn-id: https://svn.code.sf.net/p/giza/code@121 952f94de-64c9-43ce-8081-c12abd9885bf 2011-05-31 Daniel Price * src/giza-character-size.c: unnecessary set_trans call removed git-svn-id: https://svn.code.sf.net/p/giza/code@120 952f94de-64c9-43ce-8081-c12abd9885bf 2011-05-31 Daniel Price * src/giza-qtext.c: minor cleanups, sin/cos done more efficiently git-svn-id: https://svn.code.sf.net/p/giza/code@119 952f94de-64c9-43ce-8081-c12abd9885bf 2011-05-31 Daniel Price * src/giza-qtext.c: save/restore on character height in text query routines git-svn-id: https://svn.code.sf.net/p/giza/code@118 952f94de-64c9-43ce-8081-c12abd9885bf 2011-05-31 Daniel Price * src/giza-viewport.c: comments added to make things clearer git-svn-id: https://svn.code.sf.net/p/giza/code@117 952f94de-64c9-43ce-8081-c12abd9885bf 2011-05-31 Daniel Price * src/giza-fill.c: bug fix with fill in old cairo versions git-svn-id: https://svn.code.sf.net/p/giza/code@116 952f94de-64c9-43ce-8081-c12abd9885bf 2011-05-31 Daniel Price * src/giza-driver-xw.c: temporary amendments to xwin driver to see if seg fault problem is solved git-svn-id: https://svn.code.sf.net/p/giza/code@115 952f94de-64c9-43ce-8081-c12abd9885bf 2011-03-15 Daniel Price * src/giza-driver-xw.c: conversion of anchor point to integer is done explicitly rather than implicitly (do we have to use ints for this though?) git-svn-id: https://svn.code.sf.net/p/giza/code@114 952f94de-64c9-43ce-8081-c12abd9885bf 2011-03-15 Daniel Price * src/giza-driver-xw.c: spelling fixed git-svn-id: https://svn.code.sf.net/p/giza/code@113 952f94de-64c9-43ce-8081-c12abd9885bf 2011-03-15 Daniel Price * src/giza-scanner.l, src/lex.yy.c: -pedantic warnings fixed; c++ comments->c; moved some declarations git-svn-id: https://svn.code.sf.net/p/giza/code@112 952f94de-64c9-43ce-8081-c12abd9885bf 2011-03-15 Daniel Price * src/giza-viewport.c: better error handling in giza-viewport; on error reverts to default viewport settings git-svn-id: https://svn.code.sf.net/p/giza/code@111 952f94de-64c9-43ce-8081-c12abd9885bf 2011-03-15 Daniel Price * src/giza-annotate.c, src/giza-arrow-style-private.h, src/giza-arrow.c, src/giza-band.c, src/giza-box.c, src/giza-character-size.c, src/giza-colour-index.c, src/giza-colour-table.c, src/giza-contour.c, src/giza-cursor-routines.c, src/giza-driver-eps.c, src/giza-driver-null.c, src/giza-driver-pdf.c, src/giza-driver-png.c, src/giza-driver-ps.c, src/giza-driver-xw.c, src/giza-drivers.c, src/giza-error-bars.c, src/giza-fill.c, src/giza-format-number.c, src/giza-function-t.c, src/giza-function-x.c, src/giza-function-y.c, src/giza-io.c, src/giza-line-style.c, src/giza-line.c, src/giza-paper.c, src/giza-points.c, src/giza-polygon.c, src/giza-private.h, src/giza-ptext.c, src/giza-qtext.c, src/giza-render.c, src/giza-set-font.c, src/giza-vector.c, src/giza-window.c, src/lex.yy.c: converted C++ style comments to C style comments (so -pedantic works OK) git-svn-id: https://svn.code.sf.net/p/giza/code@110 952f94de-64c9-43ce-8081-c12abd9885bf 2011-03-15 Daniel Price * interface/Makefile: added -Wextra on interface compilation git-svn-id: https://svn.code.sf.net/p/giza/code@109 952f94de-64c9-43ce-8081-c12abd9885bf 2011-03-15 Daniel Price * src/giza-box.c: some more minor cleanups to fix icc compiler warnings git-svn-id: https://svn.code.sf.net/p/giza/code@108 952f94de-64c9-43ce-8081-c12abd9885bf 2011-03-15 Daniel Price * src/giza-box.c: minor cleanups; removed multiple declarations of variables git-svn-id: https://svn.code.sf.net/p/giza/code@107 952f94de-64c9-43ce-8081-c12abd9885bf 2011-03-14 Daniel Price * src/giza-driver-xw.c: MEMORY LEAK fixed; failure to call cairo_destroy when changing page (valgrind) git-svn-id: https://svn.code.sf.net/p/giza/code@106 952f94de-64c9-43ce-8081-c12abd9885bf 2011-03-14 Daniel Price * src/giza-colour-table.c: explicitly checks that colours have been set git-svn-id: https://svn.code.sf.net/p/giza/code@105 952f94de-64c9-43ce-8081-c12abd9885bf 2011-03-14 Daniel Price * src/giza.h: added const to declarations for arrays git-svn-id: https://svn.code.sf.net/p/giza/code@104 952f94de-64c9-43ce-8081-c12abd9885bf 2011-03-09 Daniel Price * src/giza-render.c: c style comments git-svn-id: https://svn.code.sf.net/p/giza/code@103 952f94de-64c9-43ce-8081-c12abd9885bf 2011-03-09 Daniel Price * src/giza-colour-table.c: BUG FIX causing uninitialised variable problem in valgrind git-svn-id: https://svn.code.sf.net/p/giza/code@102 952f94de-64c9-43ce-8081-c12abd9885bf 2011-03-09 Daniel Price * src/giza-stroke.c: header file included git-svn-id: https://svn.code.sf.net/p/giza/code@101 952f94de-64c9-43ce-8081-c12abd9885bf 2011-03-09 Daniel Price * src/giza-text-background.c: giza.h included in header git-svn-id: https://svn.code.sf.net/p/giza/code@100 952f94de-64c9-43ce-8081-c12abd9885bf 2011-03-09 Daniel Price * src/giza-warnings.c: giza.h included in header git-svn-id: https://svn.code.sf.net/p/giza/code@99 952f94de-64c9-43ce-8081-c12abd9885bf 2011-03-09 Daniel Price * src/giza.h: added declarations for set_viewport_inches git-svn-id: https://svn.code.sf.net/p/giza/code@98 952f94de-64c9-43ce-8081-c12abd9885bf 2011-03-09 Daniel Price * src/giza-set-font.c: includes relevant header file git-svn-id: https://svn.code.sf.net/p/giza/code@97 952f94de-64c9-43ce-8081-c12abd9885bf 2011-03-09 Daniel Price * src/giza-line-width.c: added giza.h in header git-svn-id: https://svn.code.sf.net/p/giza/code@96 952f94de-64c9-43ce-8081-c12abd9885bf 2011-03-09 Daniel Price * src/giza-line-cap.c: added giza.h in header git-svn-id: https://svn.code.sf.net/p/giza/code@95 952f94de-64c9-43ce-8081-c12abd9885bf 2011-03-06 Daniel Price * src/giza-drivers.c: BUG FIX with memory overflow in init_device_list causing seg fault git-svn-id: https://svn.code.sf.net/p/giza/code@94 952f94de-64c9-43ce-8081-c12abd9885bf 2011-03-06 Daniel Price * src/giza-drivers.c: BUG FIX with memory overflow in init_device_list causing seg fault git-svn-id: https://svn.code.sf.net/p/giza/code@93 952f94de-64c9-43ce-8081-c12abd9885bf 2011-03-06 Daniel Price * src/giza-driver-eps.c, src/giza-driver-pdf.c, src/giza-driver-ps.c: default background alpha 0 on eps, ps and pdf git-svn-id: https://svn.code.sf.net/p/giza/code@92 952f94de-64c9-43ce-8081-c12abd9885bf 2011-03-06 Daniel Price * src/giza-drivers.c: bug fix with pgNum not pgnum git-svn-id: https://svn.code.sf.net/p/giza/code@91 952f94de-64c9-43ce-8081-c12abd9885bf 2011-03-06 Daniel Price * src/giza-drivers.c: return Dev.pgnum instead of 0 from open_device git-svn-id: https://svn.code.sf.net/p/giza/code@90 952f94de-64c9-43ce-8081-c12abd9885bf 2011-03-06 Daniel Price * src/giza-drivers.c, src/giza-private.h: giza-prefix is now fixed length; avoids possible memory leaks from failure to deallocate git-svn-id: https://svn.code.sf.net/p/giza/code@89 952f94de-64c9-43ce-8081-c12abd9885bf 2011-03-06 Daniel Price * src/giza-drivers.c: default background alpha is 1 not 0 git-svn-id: https://svn.code.sf.net/p/giza/code@88 952f94de-64c9-43ce-8081-c12abd9885bf 2011-03-06 Daniel Price * src/giza-drivers.c: uses generic code for flush_device except for xwin device git-svn-id: https://svn.code.sf.net/p/giza/code@87 952f94de-64c9-43ce-8081-c12abd9885bf 2011-03-04 Daniel Price * src/giza-driver-eps.c: bug fix and uncommented cairo_surface_flush in eps driver (should use surface not context) git-svn-id: https://svn.code.sf.net/p/giza/code@86 952f94de-64c9-43ce-8081-c12abd9885bf 2011-03-04 Daniel Price * src/giza-save.c, src/giza-set-font.c: BUG FIX with font not being kept across a change of page: but currently ONLY works to one level of save/restore git-svn-id: https://svn.code.sf.net/p/giza/code@85 952f94de-64c9-43ce-8081-c12abd9885bf 2011-03-04 Daniel Price * src/giza-drivers.c: giza_change_page uses giza-save/giza-restore to save/restore settings git-svn-id: https://svn.code.sf.net/p/giza/code@84 952f94de-64c9-43ce-8081-c12abd9885bf 2011-03-02 Daniel Price * src/giza-drivers.c: giza_open_device prompts if first letter of device string is ? git-svn-id: https://svn.code.sf.net/p/giza/code@83 952f94de-64c9-43ce-8081-c12abd9885bf 2011-03-02 Daniel Price * interface/giza-fortran.F90, interface/giza-pgplot.f90, src/giza-colour-index.c, src/giza.h: implemented set_colour_representation_hls git-svn-id: https://svn.code.sf.net/p/giza/code@82 952f94de-64c9-43ce-8081-c12abd9885bf 2011-03-02 Daniel Price * src/giza-colour-index.c: checks bounds on scir; avoids stupid settings git-svn-id: https://svn.code.sf.net/p/giza/code@81 952f94de-64c9-43ce-8081-c12abd9885bf 2011-03-02 Daniel Price * src/giza-shared-cpp.h: allow 256 + 16 colours (mainly so splash does not complain) git-svn-id: https://svn.code.sf.net/p/giza/code@80 952f94de-64c9-43ce-8081-c12abd9885bf 2011-03-02 Daniel Price * src/giza-colour-index-private.h, src/{giza-colour-table-private.h => giza-colour-private.h}: now only giza-colour-private.h git-svn-id: https://svn.code.sf.net/p/giza/code@79 952f94de-64c9-43ce-8081-c12abd9885bf 2011-03-02 Daniel Price * interface/giza-fortran.F90, interface/giza-pgplot.f90, src/giza-colour-index.c, src/giza-colour-table.c, src/giza-drivers.c, src/giza.h: set_colour_table now sets the colour indices in the range set by set_colour_index_range; also get routine for this; colour-index and colour-table have shared header file git-svn-id: https://svn.code.sf.net/p/giza/code@78 952f94de-64c9-43ce-8081-c12abd9885bf 2011-03-02 Daniel Price * src/giza-io-private.h, src/giza-prompting.c: private interfaces declared properly git-svn-id: https://svn.code.sf.net/p/giza/code@77 952f94de-64c9-43ce-8081-c12abd9885bf 2011-03-02 Daniel Price * src/giza-io.c: unused variable warning fixed (do not care about return value of fgets) git-svn-id: https://svn.code.sf.net/p/giza/code@76 952f94de-64c9-43ce-8081-c12abd9885bf 2011-03-02 Daniel Price * interface/giza-fortran.F90, interface/giza-pgplot.f90, src/giza-colour-index.c, src/giza-render.c, src/giza-shared-cpp.h, src/giza.h: PGPIXEL/giza_draw_pixels implemented git-svn-id: https://svn.code.sf.net/p/giza/code@75 952f94de-64c9-43ce-8081-c12abd9885bf 2011-03-01 Daniel Price * interface/giza-pgplot.f90, src/giza-print-id.c: giza-print-id/PGIDEN implemented fully git-svn-id: https://svn.code.sf.net/p/giza/code@74 952f94de-64c9-43ce-8081-c12abd9885bf 2011-03-01 Daniel Price * src/giza-print-id.c: giza-print-id now working properly git-svn-id: https://svn.code.sf.net/p/giza/code@73 952f94de-64c9-43ce-8081-c12abd9885bf 2011-03-01 Daniel Price * src/giza-character-size.c: docs fixed for giza-character-size git-svn-id: https://svn.code.sf.net/p/giza/code@72 952f94de-64c9-43ce-8081-c12abd9885bf 2011-03-01 Daniel Price * src/giza.h: added paper_size function declarations to giza.h git-svn-id: https://svn.code.sf.net/p/giza/code@71 952f94de-64c9-43ce-8081-c12abd9885bf 2011-03-01 Daniel Price * src/giza-ptext.c: docs for ptext fixed git-svn-id: https://svn.code.sf.net/p/giza/code@70 952f94de-64c9-43ce-8081-c12abd9885bf 2011-03-01 Daniel Price * src/giza-paper.c: better docs on giza-get-paper-size git-svn-id: https://svn.code.sf.net/p/giza/code@69 952f94de-64c9-43ce-8081-c12abd9885bf 2011-03-01 Daniel Price * interface/giza-fortran.F90, interface/giza-pgplot.f90, src/giza-print-id.c: added giza-print-id; replicates PGIDEN git-svn-id: https://svn.code.sf.net/p/giza/code@68 952f94de-64c9-43ce-8081-c12abd9885bf 2011-03-01 Daniel Price * src/giza.h: giza-qtextlen routines added to giza.h git-svn-id: https://svn.code.sf.net/p/giza/code@67 952f94de-64c9-43ce-8081-c12abd9885bf 2011-03-01 Daniel Price * interface/giza-pgplot.f90: FINISHED hatch fill implementation; seems to work perfectly now; no known issues remaining git-svn-id: https://svn.code.sf.net/p/giza/code@66 952f94de-64c9-43ce-8081-c12abd9885bf 2011-03-01 Daniel Price * src/giza-fill.c: FINISHED hatch fill implementation; seems to work perfectly now; no known issues remaining git-svn-id: https://svn.code.sf.net/p/giza/code@65 952f94de-64c9-43ce-8081-c12abd9885bf 2011-03-01 Daniel Price * src/giza-fill.c: hatch fill now explicitly draws lines on transparent background; rotation partially working git-svn-id: https://svn.code.sf.net/p/giza/code@64 952f94de-64c9-43ce-8081-c12abd9885bf 2011-02-27 Daniel Price * src/giza-text.c, src/giza.h: added declarations for giza_set_font_italic, giza_set_font_bold etc git-svn-id: https://svn.code.sf.net/p/giza/code@63 952f94de-64c9-43ce-8081-c12abd9885bf 2011-02-25 Daniel Price * src/giza-fill.c: hatch fill completely re-done; now explicitly draws lines instead of using pre-drawn pattern; no funny effects; some minor issues with robust handling of all angles remaining git-svn-id: https://svn.code.sf.net/p/giza/code@62 952f94de-64c9-43ce-8081-c12abd9885bf 2011-02-25 Daniel Price * src/giza-fill.c: implemented hatch fill using larger tiles, with alpha, still not perfect git-svn-id: https://svn.code.sf.net/p/giza/code@61 952f94de-64c9-43ce-8081-c12abd9885bf 2011-02-23 Daniel Price * interface/giza-pgplot.f90, src/giza-text.c: changed definition of -normal- font to arial; handles greek letters git-svn-id: https://svn.code.sf.net/p/giza/code@60 952f94de-64c9-43ce-8081-c12abd9885bf 2011-02-23 Daniel Price * src/giza-colour-index.c: initialised colour indices up to 16 git-svn-id: https://svn.code.sf.net/p/giza/code@59 952f94de-64c9-43ce-8081-c12abd9885bf 2011-02-23 Daniel Price * interface/giza-pgplot.f90: PGERAS implemented -> giza_draw_background git-svn-id: https://svn.code.sf.net/p/giza/code@58 952f94de-64c9-43ce-8081-c12abd9885bf 2011-02-23 Daniel Price * interface/giza-fortran.F90, src/giza-colour-index.c, src/giza-draw-background.c, src/giza-driver-eps-private.h, src/giza-driver-eps.c, src/giza-driver-null-private.h, src/giza-driver-null.c, src/giza-driver-pdf-private.h, src/giza-driver-pdf.c, src/giza-driver-png-private.h, src/giza-driver-png.c, src/giza-driver-ps-private.h, src/giza-driver-ps.c, src/giza-driver-xw-private.h, src/giza-driver-xw.c, src/giza-drivers-private.h, src/giza-drivers.c, src/giza.h: giza_draw_background no longer device specific; also public git-svn-id: https://svn.code.sf.net/p/giza/code@57 952f94de-64c9-43ce-8081-c12abd9885bf 2011-02-23 Daniel Price * src/giza-band-style.c, src/giza-save.c, src/giza.h: added get_band_style function; band style added to save/restore functions git-svn-id: https://svn.code.sf.net/p/giza/code@56 952f94de-64c9-43ce-8081-c12abd9885bf 2011-02-23 Daniel Price * src/giza-save.c: hatching style and text background colour added to save/restore routines git-svn-id: https://svn.code.sf.net/p/giza/code@55 952f94de-64c9-43ce-8081-c12abd9885bf 2011-02-23 Daniel Price * interface/giza-fortran.F90: bug fix with set/get hatching interface git-svn-id: https://svn.code.sf.net/p/giza/code@54 952f94de-64c9-43ce-8081-c12abd9885bf 2011-02-23 Daniel Price * interface/giza-fortran.F90: hatching style interface routines added git-svn-id: https://svn.code.sf.net/p/giza/code@53 952f94de-64c9-43ce-8081-c12abd9885bf 2011-02-23 Daniel Price * interface/giza-pgplot.f90, src/giza-fill.c, src/giza.h: added set_hatching_style and get_hatching_style routines and interfaces; not yet applied to hatch git-svn-id: https://svn.code.sf.net/p/giza/code@52 952f94de-64c9-43ce-8081-c12abd9885bf 2011-02-23 Daniel Price * interface/giza-fortran.F90, interface/giza-pgplot.f90, src/giza-buffering.c, src/giza.h: added giza_flush_buffer, replicates PGUPDT git-svn-id: https://svn.code.sf.net/p/giza/code@51 952f94de-64c9-43ce-8081-c12abd9885bf 2011-02-22 Daniel Price * interface/giza-pgplot.f90: PGQCF implemented, behaves as expected git-svn-id: https://svn.code.sf.net/p/giza/code@50 952f94de-64c9-43ce-8081-c12abd9885bf 2011-02-22 Daniel Price * src/giza-scanner.l, src/giza-text-private.h, src/giza-text.c, src/lex.yy.c: added support for inline font switching; \rm, \it, \fn, \fi, \fr, \fs; also \x for times git-svn-id: https://svn.code.sf.net/p/giza/code@49 952f94de-64c9-43ce-8081-c12abd9885bf 2011-02-22 Daniel Price * interface/giza-pgplot.f90: PGSCF now does roughly what it says on the tin git-svn-id: https://svn.code.sf.net/p/giza/code@48 952f94de-64c9-43ce-8081-c12abd9885bf 2011-02-22 Daniel Price * src/giza-drivers.c: prompt happens for close_device routine; fixes bug with windows closing before plot can be viewed git-svn-id: https://svn.code.sf.net/p/giza/code@47 952f94de-64c9-43ce-8081-c12abd9885bf 2011-02-22 Daniel Price * interface/giza-fortran.F90, src/giza-private.h, src/giza-set-font.c: added set_font_bold, set_font_italic and set_font_bold_italic routines git-svn-id: https://svn.code.sf.net/p/giza/code@46 952f94de-64c9-43ce-8081-c12abd9885bf 2011-02-22 Daniel Price * interface/giza-pgplot.f90, src/giza-fill.c: implemented hatched fill styles git-svn-id: https://svn.code.sf.net/p/giza/code@45 952f94de-64c9-43ce-8081-c12abd9885bf 2011-02-22 Daniel Price * src/giza-viewport.c: clipping of viewport turned off if giza_set_clipping set to false git-svn-id: https://svn.code.sf.net/p/giza/code@44 952f94de-64c9-43ce-8081-c12abd9885bf 2011-02-22 Daniel Price * src/giza-clipping.c: set/get clipping state routines added (PGQCLP/PGSCLP) git-svn-id: https://svn.code.sf.net/p/giza/code@43 952f94de-64c9-43ce-8081-c12abd9885bf 2011-02-22 Daniel Price * interface/giza-fortran.F90, interface/giza-pgplot.f90, src/giza-drivers.c, src/giza.h: set/get clipping state routines added (PGQCLP/PGSCLP) git-svn-id: https://svn.code.sf.net/p/giza/code@42 952f94de-64c9-43ce-8081-c12abd9885bf 2011-02-22 Daniel Price * interface/giza-fortran.F90, interface/giza-pgplot.f90, src/giza-move.c, src/giza.h: added PGQPOS/giza_get_current_point git-svn-id: https://svn.code.sf.net/p/giza/code@41 952f94de-64c9-43ce-8081-c12abd9885bf 2011-02-22 Daniel Price * src/giza-cursor-routines.c, src/giza.h: function definitions for giza_mark_points etc added to giza.h; also spurious printf removed git-svn-id: https://svn.code.sf.net/p/giza/code@40 952f94de-64c9-43ce-8081-c12abd9885bf 2011-02-22 Daniel Price * interface/giza-fortran.F90, interface/giza-pgplot.f90, src/giza-text-background.c, src/giza.h: added PGQTBG; giza_get_text_background git-svn-id: https://svn.code.sf.net/p/giza/code@39 952f94de-64c9-43ce-8081-c12abd9885bf 2011-02-22 Daniel Price * interface/giza-fortran.F90, interface/giza-pgplot.f90, src/giza-cursor-routines.c: added interface routines for mark_points_ordered and mark_line_ordered git-svn-id: https://svn.code.sf.net/p/giza/code@38 952f94de-64c9-43ce-8081-c12abd9885bf 2011-02-22 Daniel Price * src/giza-shared-cpp.h: bug fix (regression) with definition of GIZA_LEFT_CLICK: mark_points now works again with new structure git-svn-id: https://svn.code.sf.net/p/giza/code@37 952f94de-64c9-43ce-8081-c12abd9885bf 2011-02-21 Daniel Price * src/giza-colour-index.c: stuff for setting alpha added git-svn-id: https://svn.code.sf.net/p/giza/code@36 952f94de-64c9-43ce-8081-c12abd9885bf 2011-02-21 Daniel Price * interface/giza-fortran.F90, interface/giza-pgplot.f90, src/giza-cursor-routines.c: added basic functionality for PGLCUR, PGOLIN; mostly working but a few issues remaining git-svn-id: https://svn.code.sf.net/p/giza/code@35 952f94de-64c9-43ce-8081-c12abd9885bf 2011-02-21 Daniel Price * interface/Makefile: added -Wall in libpgplot build git-svn-id: https://svn.code.sf.net/p/giza/code@34 952f94de-64c9-43ce-8081-c12abd9885bf 2011-02-21 Daniel Price * src/giza-shared-cpp.h: defined foreground and background colour indices using GIZA_BACKGROUND_COLOUR etc git-svn-id: https://svn.code.sf.net/p/giza/code@33 952f94de-64c9-43ce-8081-c12abd9885bf 2011-02-21 Daniel Price * src/giza-points.c: made -ve symbol points slightly bigger git-svn-id: https://svn.code.sf.net/p/giza/code@32 952f94de-64c9-43ce-8081-c12abd9885bf 2011-02-19 Daniel Price * src/giza-band.c, src/giza-shared-cpp.h: giza band types defined in preprocessing git-svn-id: https://svn.code.sf.net/p/giza/code@31 952f94de-64c9-43ce-8081-c12abd9885bf 2011-02-19 Daniel Price * interface/giza-fortran.F90, interface/giza-pgplot.f90, src/giza-box.c, src/giza.h: PGRND implemented; interface to giza_round; added giza_round_float git-svn-id: https://svn.code.sf.net/p/giza/code@30 952f94de-64c9-43ce-8081-c12abd9885bf 2011-02-16 Daniel Price * interface/giza-pgplot.f90: PGNUMB interface added git-svn-id: https://svn.code.sf.net/p/giza/code@29 952f94de-64c9-43ce-8081-c12abd9885bf 2011-02-16 Daniel Price * .gitignore: added .gitignore file git-svn-id: https://svn.code.sf.net/p/giza/code@28 952f94de-64c9-43ce-8081-c12abd9885bf 2011-02-16 Daniel Price * interface/giza-fortran.F90, interface/giza-pgplot.f90, src/giza-error-bars.c: PGERRX implemented; added giza_error_bars_hori, giza_error_bars_hori_float to match PGERRX specifications git-svn-id: https://svn.code.sf.net/p/giza/code@27 952f94de-64c9-43ce-8081-c12abd9885bf 2011-02-16 Daniel Price * src/giza-band.c, src/giza-drivers.c: giza_band stuff moved to giza_band routine where possible; implemented all 7 pgplot band styles plus additional circle band style; better docs for giza_band git-svn-id: https://svn.code.sf.net/p/giza/code@26 952f94de-64c9-43ce-8081-c12abd9885bf 2011-02-16 Daniel Price * src/giza-drivers.c: minor amendments to device list (eps vs. ps differences); neatened code slightly git-svn-id: https://svn.code.sf.net/p/giza/code@25 952f94de-64c9-43ce-8081-c12abd9885bf 2011-02-16 Daniel Price * src/giza-prompting.c: bug fix with giza-prompting initialisation git-svn-id: https://svn.code.sf.net/p/giza/code@24 952f94de-64c9-43ce-8081-c12abd9885bf 2011-02-16 Daniel Price * src/giza-driver-xw.c, src/giza-drivers.c, src/giza-io.c, src/giza-prompting.c: giza_prompting now behaves like PGASK: uses terminal prompts instead of key press in window git-svn-id: https://svn.code.sf.net/p/giza/code@23 952f94de-64c9-43ce-8081-c12abd9885bf 2011-02-16 Daniel Price * interface/giza-pgplot.f90: use line missing in PGASK git-svn-id: https://svn.code.sf.net/p/giza/code@22 952f94de-64c9-43ce-8081-c12abd9885bf 2011-01-10 wetterj * branches/opengl/src/giza-features.h, branches/opengl/src/giza-gl-interactive.c, branches/opengl/src/giza-gl-private.h, branches/opengl/src/giza-gl.h, branches/opengl/test/test-gl.c: Began to impliment opengl acceleration git-svn-id: https://svn.code.sf.net/p/giza/code@21 952f94de-64c9-43ce-8081-c12abd9885bf 2011-01-10 wetterj * branches/{ => opengl}/INSTALL, branches/{ => opengl}/LICENSE, branches/{ => opengl}/Makefile, branches/{ => opengl}/build/Makefile, branches/{ => opengl}/docs/api.pl, branches/{ => opengl}/docs/pgplot_status.pl, branches/{ => opengl}/include/.gitignore, branches/{ => opengl}/interface/Makefile, branches/{ => opengl}/interface/giza-fortran.F90, branches/{ => opengl}/interface/giza-pgplot.f90, branches/{ => opengl}/interface/pgplot-stubs.f90, branches/{ => opengl}/lib/.gitignore, branches/{ => opengl}/src/giza-annotate.c, branches/{ => opengl}/src/giza-arrow-style-private.h, branches/{ => opengl}/src/giza-arrow-style.c, branches/{ => opengl}/src/giza-arrow.c, branches/{ => opengl}/src/giza-band-private.h, branches/{ => opengl}/src/giza-band-style.c, branches/{ => opengl}/src/giza-band.c, branches/{ => opengl}/src/giza-box.c, branches/{ => opengl}/src/giza-buffering.c, branches/{ => opengl}/src/giza-character-size-private.h, branches/{ => opengl}/src/giza-character-size.c, branches/{ => opengl}/src/giza-circle.c, branches/{ => opengl}/src/giza-colour-index-private.h, branches/{ => opengl}/src/giza-colour-index.c, branches/{ => opengl}/src/giza-colour-table-private.h, branches/{ => opengl}/src/giza-colour-table.c, branches/{ => opengl}/src/giza-contour.c, branches/{ => opengl}/src/giza-device-has-cursor.c, branches/{ => opengl}/src/giza-draw.c, branches/{ => opengl}/src/giza-driver-eps-private.h, branches/{ => opengl}/src/giza-driver-eps.c, branches/{ => opengl}/src/giza-driver-null-private.h, branches/{ => opengl}/src/giza-driver-null.c, branches/{ => opengl}/src/giza-driver-pdf-private.h, branches/{ => opengl}/src/giza-driver-pdf.c, branches/{ => opengl}/src/giza-driver-png-private.h, branches/{ => opengl}/src/giza-driver-png.c, branches/{ => opengl}/src/giza-driver-ps-private.h, branches/{ => opengl}/src/giza-driver-ps.c, branches/{ => opengl}/src/giza-driver-xw-private.h, branches/{ => opengl}/src/giza-driver-xw.c, branches/{ => opengl}/src/giza-drivers-private.h, branches/{ => opengl}/src/giza-drivers.c, branches/{ => opengl}/src/giza-environment.c, branches/{ => opengl}/src/giza-error-bars.c, branches/{ => opengl}/src/giza-fill-private.h, branches/{ => opengl}/src/giza-fill.c, branches/{ => opengl}/src/giza-format-number.c, branches/{ => opengl}/src/giza-function-t.c, branches/{ => opengl}/src/giza-function-x.c, branches/{ => opengl}/src/giza-function-y.c, branches/{ => opengl}/src/giza-get-key-press.c, branches/{ => opengl}/src/giza-get-surface-size.c, branches/{ => opengl}/src/giza-io-private.h, branches/{ => opengl}/src/giza-io.c, branches/{ => opengl}/src/giza-label.c, branches/{ => opengl}/src/giza-line-cap.c, branches/{ => opengl}/src/giza-line-style-private.h, branches/{ => opengl}/src/giza-line-style.c, branches/{ => opengl}/src/giza-line-width.c, branches/{ => opengl}/src/giza-line.c, branches/{ => opengl}/src/giza-move.c, branches/{ => opengl}/src/giza-paper.c, branches/{ => opengl}/src/giza-points.c, branches/{ => opengl}/src/giza-polygon.c, branches/{ => opengl}/src/giza-private.h, branches/{ => opengl}/src/giza-prompting-private.h, branches/{ => opengl}/src/giza-prompting.c, branches/{ => opengl}/src/giza-ptext.c, branches/{ => opengl}/src/giza-qtext.c, branches/{ => opengl}/src/giza-rectangle.c, branches/{ => opengl}/src/giza-render.c, branches/{ => opengl}/src/giza-save.c, branches/{ => opengl}/src/giza-scanner.l, branches/{ => opengl}/src/giza-set-font-private.h, branches/{ => opengl}/src/giza-set-font.c, branches/{ => opengl}/src/giza-shared-cpp.h, branches/{ => opengl}/src/giza-stroke-private.h, branches/{ => opengl}/src/giza-stroke.c, branches/{ => opengl}/src/giza-text-background-private.h, branches/{ => opengl}/src/giza-text-background.c, branches/{ => opengl}/src/giza-text-private.h, branches/{ => opengl}/src/giza-text.c, branches/{ => opengl}/src/giza-transforms-private.h, branches/{ => opengl}/src/giza-transforms.c, branches/{ => opengl}/src/giza-vector.c, branches/{ => opengl}/src/giza-viewport-private.h, branches/{ => opengl}/src/giza-viewport.c, branches/{ => opengl}/src/giza-warnings-private.h, branches/{ => opengl}/src/giza-warnings.c, branches/{ => opengl}/src/giza-window-private.h, branches/{ => opengl}/src/giza-window.c, branches/{ => opengl}/src/giza.c, branches/{ => opengl}/src/giza.h, branches/{ => opengl}/src/lex.yy.c, branches/{ => opengl}/test/test-arrow.c, branches/{ => opengl}/test/test-band.c, branches/{ => opengl}/test/test-box.c, branches/{ => opengl}/test/test-change-page.c, branches/{ => opengl}/test/test-circle.c, branches/{ => opengl}/test/test-colour-index.c, branches/{ => opengl}/test/test-contour.c, branches/{ => opengl}/test/test-environment.c, branches/{ => opengl}/test/test-error-bars.c, branches/{ => opengl}/test/test-format-number.c, branches/{ => opengl}/test/test-line-cap.c, branches/{ => opengl}/test/test-line-style.c, branches/{ => opengl}/test/test-points.c, branches/{ => opengl}/test/test-qtext.c, branches/{ => opengl}/test/test-rectangle.c, branches/{ => opengl}/test/test-render.c, branches/{ => opengl}/test/test-set-line-width.c, branches/{ => opengl}/test/test-vector.c, branches/{ => opengl}/test/test-window.c: Created a branch to work on opengl acceleration git-svn-id: https://svn.code.sf.net/p/giza/code@20 952f94de-64c9-43ce-8081-c12abd9885bf 2011-01-10 wetterj * branches/INSTALL, branches/LICENSE, branches/Makefile, branches/build/Makefile, branches/docs/api.pl, branches/docs/pgplot_status.pl, branches/include/.gitignore, branches/interface/Makefile, branches/interface/giza-fortran.F90, branches/interface/giza-pgplot.f90, branches/interface/pgplot-stubs.f90, branches/lib/.gitignore, branches/src/giza-annotate.c, branches/src/giza-arrow-style-private.h, branches/src/giza-arrow-style.c, branches/src/giza-arrow.c, branches/src/giza-band-private.h, branches/src/giza-band-style.c, branches/src/giza-band.c, branches/src/giza-box.c, branches/src/giza-buffering.c, branches/src/giza-character-size-private.h, branches/src/giza-character-size.c, branches/src/giza-circle.c, branches/src/giza-colour-index-private.h, branches/src/giza-colour-index.c, branches/src/giza-colour-table-private.h, branches/src/giza-colour-table.c, branches/src/giza-contour.c, branches/src/giza-device-has-cursor.c, branches/src/giza-draw.c, branches/src/giza-driver-eps-private.h, branches/src/giza-driver-eps.c, branches/src/giza-driver-null-private.h, branches/src/giza-driver-null.c, branches/src/giza-driver-pdf-private.h, branches/src/giza-driver-pdf.c, branches/src/giza-driver-png-private.h, branches/src/giza-driver-png.c, branches/src/giza-driver-ps-private.h, branches/src/giza-driver-ps.c, branches/src/giza-driver-xw-private.h, branches/src/giza-driver-xw.c, branches/src/giza-drivers-private.h, branches/src/giza-drivers.c, branches/src/giza-environment.c, branches/src/giza-error-bars.c, branches/src/giza-fill-private.h, branches/src/giza-fill.c, branches/src/giza-format-number.c, branches/src/giza-function-t.c, branches/src/giza-function-x.c, branches/src/giza-function-y.c, branches/src/giza-get-key-press.c, branches/src/giza-get-surface-size.c, branches/src/giza-io-private.h, branches/src/giza-io.c, branches/src/giza-label.c, branches/src/giza-line-cap.c, branches/src/giza-line-style-private.h, branches/src/giza-line-style.c, branches/src/giza-line-width.c, branches/src/giza-line.c, branches/src/giza-move.c, branches/src/giza-paper.c, branches/src/giza-points.c, branches/src/giza-polygon.c, branches/src/giza-private.h, branches/src/giza-prompting-private.h, branches/src/giza-prompting.c, branches/src/giza-ptext.c, branches/src/giza-qtext.c, branches/src/giza-rectangle.c, branches/src/giza-render.c, branches/src/giza-save.c, branches/src/giza-scanner.l, branches/src/giza-set-font-private.h, branches/src/giza-set-font.c, branches/src/giza-shared-cpp.h, branches/src/giza-stroke-private.h, branches/src/giza-stroke.c, branches/src/giza-text-background-private.h, branches/src/giza-text-background.c, branches/src/giza-text-private.h, branches/src/giza-text.c, branches/src/giza-transforms-private.h, branches/src/giza-transforms.c, branches/src/giza-vector.c, branches/src/giza-viewport-private.h, branches/src/giza-viewport.c, branches/src/giza-warnings-private.h, branches/src/giza-warnings.c, branches/src/giza-window-private.h, branches/src/giza-window.c, branches/src/giza.c, branches/src/giza.h, branches/src/lex.yy.c, branches/test/test-arrow.c, branches/test/test-band.c, branches/test/test-box.c, branches/test/test-change-page.c, branches/test/test-circle.c, branches/test/test-colour-index.c, branches/test/test-contour.c, branches/test/test-environment.c, branches/test/test-error-bars.c, branches/test/test-format-number.c, branches/test/test-line-cap.c, branches/test/test-line-style.c, branches/test/test-points.c, branches/test/test-qtext.c, branches/test/test-rectangle.c, branches/test/test-render.c, branches/test/test-set-line-width.c, branches/test/test-vector.c, branches/test/test-window.c: Creating an open gl branch of giza. git-svn-id: https://svn.code.sf.net/p/giza/code@19 952f94de-64c9-43ce-8081-c12abd9885bf 2010-12-21 wetterj * src/giza-driver-eps.c, src/giza-driver-pdf.c, src/giza-driver-png.c, src/giza-driver-ps.c, src/giza-driver-xw.c, src/giza-drivers-private.h, src/giza-drivers.c, src/giza-io.c: Fixed bug when drawing transparent backgrounds, and a bug in displaying avalible devices git-svn-id: https://svn.code.sf.net/p/giza/code@18 952f94de-64c9-43ce-8081-c12abd9885bf 2010-12-12 wetterj * src/giza-arrow-style-private.h, src/giza-arrow-style.c, src/giza-band-private.h, src/giza-band-style.c, src/giza-buffering.c, src/giza-character-size-private.h, src/giza-character-size.c, src/giza-colour-index-private.h, src/giza-colour-index.c, src/giza-colour-table-private.h, src/giza-colour-table.c, src/giza-device-has-cursor.c, src/giza-driver-eps-private.h, src/giza-driver-eps.c, src/giza-driver-null-private.h, src/giza-driver-null.c, src/giza-driver-pdf-private.h, src/giza-driver-pdf.c, src/giza-driver-png-private.h, src/giza-driver-png.c, src/giza-driver-ps-private.h, src/giza-driver-ps.c, src/giza-driver-xw-private.h, src/giza-driver-xw.c, src/giza-drivers-private.h, src/giza-drivers.c, src/giza-environment.c, src/giza-error-bars.c, src/giza-fill-private.h, src/giza-fill.c, src/giza-io-private.h, src/giza-io.c, src/giza-line-style-private.h, src/giza-line-style.c, src/giza-private.h, src/giza-prompting-private.h, src/giza-prompting.c, src/giza-save.c, src/giza-set-font-private.h, src/giza-set-font.c, src/giza-stroke-private.h, src/giza-stroke.c, src/giza-text-private.h, src/giza-text.c, src/giza-transforms-private.h, src/giza-transforms.c, src/giza-viewport.c, src/giza-warnings-private.h, src/giza-warnings.c, src/giza-window-private.h, src/giza-window.c, src/giza.c, src/giza.h: Added void to empty parameter lists in function decliractions and definitions git-svn-id: https://svn.code.sf.net/p/giza/code@17 952f94de-64c9-43ce-8081-c12abd9885bf 2010-12-09 wetterj * src/giza-drivers-private.h, src/giza-drivers.c, src/giza-io.c: Fixed a memory leak caused when printing avalible devices git-svn-id: https://svn.code.sf.net/p/giza/code@16 952f94de-64c9-43ce-8081-c12abd9885bf 2010-12-09 wetterj * src/giza-colour-index.c, src/giza-driver-xw.c, src/giza-drivers.c, src/giza-private.h: All devices but Xlib have default background alpha 0 git-svn-id: https://svn.code.sf.net/p/giza/code@15 952f94de-64c9-43ce-8081-c12abd9885bf 2010-12-08 wetterj * interface/giza-pgplot.f90: Added an interface to mimic pgask git-svn-id: https://svn.code.sf.net/p/giza/code@14 952f94de-64c9-43ce-8081-c12abd9885bf 2010-12-08 wetterj * interface/giza-fortran.F90, src/giza-colour-index.c: Fixed some typos that broke the build on the last commit git-svn-id: https://svn.code.sf.net/p/giza/code@13 952f94de-64c9-43ce-8081-c12abd9885bf 2010-12-08 wetterj * interface/giza-fortran.F90, src/giza-colour-index.c, src/giza.h: Added alpha to colour index functions git-svn-id: https://svn.code.sf.net/p/giza/code@12 952f94de-64c9-43ce-8081-c12abd9885bf 2010-12-07 wetterj * src/giza-format-number.c, src/giza-ptext.c: Added missing null character to string returned from giza_format_number git-svn-id: https://svn.code.sf.net/p/giza/code@11 952f94de-64c9-43ce-8081-c12abd9885bf 2010-12-06 wetterj * src/giza-arrow-style-private.h, src/giza-arrow.c, src/giza-band.c, src/giza-box.c, src/giza-buffering.c, src/giza-circle.c, src/giza-driver-xw-private.h, src/giza-driver-xw.c, src/giza-drivers.c, src/giza-error-bars.c, src/giza-format-number.c, src/giza-get-key-press.c, src/giza-polygon.c, src/giza-rectangle.c, src/giza-save.c, src/giza-stroke.c: Fixed many compiler warnings git-svn-id: https://svn.code.sf.net/p/giza/code@10 952f94de-64c9-43ce-8081-c12abd9885bf 2010-12-06 wetterj * src/giza-driver-eps.c: Fixed bug in change_page for the eps driver git-svn-id: https://svn.code.sf.net/p/giza/code@9 952f94de-64c9-43ce-8081-c12abd9885bf 2010-12-06 wetterj * src/giza-drivers.c: Device type is now case insensitive git-svn-id: https://svn.code.sf.net/p/giza/code@8 952f94de-64c9-43ce-8081-c12abd9885bf 2010-12-06 Daniel Price * interface/giza-fortran.F90: added set_text_background to Fortran interface git-svn-id: https://svn.code.sf.net/p/giza/code@7 952f94de-64c9-43ce-8081-c12abd9885bf 2010-12-06 Daniel Price * build/Makefile: added warnings to default compilation git-svn-id: https://svn.code.sf.net/p/giza/code@6 952f94de-64c9-43ce-8081-c12abd9885bf 2010-12-02 Daniel Price * src/giza-driver-eps.c, src/giza-render.c: updated svn repo with git stuff git-svn-id: https://svn.code.sf.net/p/giza/code@5 952f94de-64c9-43ce-8081-c12abd9885bf 2010-11-29 wetterj * build/Makefile, src/giza-driver-eps-private.h, src/giza-driver-eps.c, src/giza-driver-xw-private.h, src/giza-driver-xw.c, src/giza-drivers-private.h, src/giza-drivers.c: Added optional EPS driver.XLib driver is now optional. git-svn-id: https://svn.code.sf.net/p/giza/code@4 952f94de-64c9-43ce-8081-c12abd9885bf 2010-11-24 wetterj * interface/giza-fortran.F90, src/giza-box.c, src/giza-format-number.c, src/giza-shared-cpp.h, src/giza.c, src/giza.h, test/test-format-number.c: Changed giza_format_number to imitate pgplot's pgnumb. git-svn-id: https://svn.code.sf.net/p/giza/code@3 952f94de-64c9-43ce-8081-c12abd9885bf 2010-11-22 wetterj * build/Makefile, src/giza-drivers.c, src/giza-ptext.c, src/giza-text-background-private.h, src/giza-text-background.c, src/giza.h: Added a function to set text background. git-svn-id: https://svn.code.sf.net/p/giza/code@2 952f94de-64c9-43ce-8081-c12abd9885bf 2010-11-22 wetterj * Initial import. git-svn-id: https://svn.code.sf.net/p/giza/code@1 952f94de-64c9-43ce-8081-c12abd9885bf giza-1.5.0/INSTALL000066400000000000000000000000501477367113400135100ustar00rootroot00000000000000For install instructions, see README.md giza-1.5.0/LATEST.md000066400000000000000000000007621477367113400140070ustar00rootroot00000000000000Changes in v1.5.0 ----------------- - fixed issues needed for PGPLOT compatibility in heasoft (#48, #66) - additional arguments to giza_render to specify the type of pixel interpolation desired - better compatibility with PGPLOT in settings for pixel interpolation, fixes issue with blurred images in heasoft - fix seg fault in PGCONT calls if argument NC is negative, fixes issue in running pgdemo programs - removed tabs from source code - test_contour and test_render now included in test suite giza-1.5.0/Makefile.am000066400000000000000000000001771477367113400145250ustar00rootroot00000000000000ACLOCAL_AMFLAGS = -I m4 SUBDIRS = src test dist_doc_DATA = AUTHORS ChangeLog COPYING NEWS INSTALL README.md README: README.md giza-1.5.0/Makefile.in000066400000000000000000000710661477367113400145430ustar00rootroot00000000000000# Makefile.in generated by automake 1.17 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2024 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) am__rm_f = rm -f $(am__rm_f_notfound) am__rm_rf = rm -rf $(am__rm_f_notfound) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = . ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(top_srcdir)/configure \ $(am__configure_deps) $(dist_doc_DATA) $(am__DIST_COMMON) am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ configure.lineno config.status.lineno mkinstalldirs = $(install_sh) -d CONFIG_HEADER = config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = SOURCES = DIST_SOURCES = RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \ ctags-recursive dvi-recursive html-recursive info-recursive \ install-data-recursive install-dvi-recursive \ install-exec-recursive install-html-recursive \ install-info-recursive install-pdf-recursive \ install-ps-recursive install-recursive installcheck-recursive \ installdirs-recursive pdf-recursive ps-recursive \ tags-recursive uninstall-recursive am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && echo $$files | $(am__xargs_n) 40 $(am__rm_f); }; \ } am__installdirs = "$(DESTDIR)$(docdir)" DATA = $(dist_doc_DATA) RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ distclean-recursive maintainer-clean-recursive am__recursive_targets = \ $(RECURSIVE_TARGETS) \ $(RECURSIVE_CLEAN_TARGETS) \ $(am__extra_recursive_targets) AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \ cscope distdir distdir-am dist dist-all distcheck am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) \ config.h.in # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` DIST_SUBDIRS = $(SUBDIRS) am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/config.h.in \ $(top_srcdir)/build/compile $(top_srcdir)/build/config.guess \ $(top_srcdir)/build/config.sub $(top_srcdir)/build/install-sh \ $(top_srcdir)/build/ltmain.sh $(top_srcdir)/build/missing \ AUTHORS COPYING ChangeLog INSTALL NEWS README README.md \ build/compile build/config.guess build/config.sub \ build/depcomp build/install-sh build/ltmain.sh build/missing DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) distdir = $(PACKAGE)-$(VERSION) top_distdir = $(distdir) am__remove_distdir = \ if test -d "$(distdir)"; then \ find "$(distdir)" -type d ! -perm -700 -exec chmod u+rwx {} ';' \ ; rm -rf "$(distdir)" \ || { sleep 5 && rm -rf "$(distdir)"; }; \ else :; fi am__post_remove_distdir = $(am__remove_distdir) am__relativize = \ dir0=`pwd`; \ sed_first='s,^\([^/]*\)/.*$$,\1,'; \ sed_rest='s,^[^/]*/*,,'; \ sed_last='s,^.*/\([^/]*\)$$,\1,'; \ sed_butlast='s,/*[^/]*$$,,'; \ while test -n "$$dir1"; do \ first=`echo "$$dir1" | sed -e "$$sed_first"`; \ if test "$$first" != "."; then \ if test "$$first" = ".."; then \ dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ else \ first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ if test "$$first2" = "$$first"; then \ dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ else \ dir2="../$$dir2"; \ fi; \ dir0="$$dir0"/"$$first"; \ fi; \ fi; \ dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ done; \ reldir="$$dir2" DIST_ARCHIVES = $(distdir).tar.gz GZIP_ENV = -9 DIST_TARGETS = dist-gzip # Exists only to be overridden by the user if desired. AM_DISTCHECK_DVI_TARGET = dvi distuninstallcheck_listfiles = find . -type f -print am__distuninstallcheck_listfiles = $(distuninstallcheck_listfiles) \ | sed 's|^\./|$(prefix)/|' | grep -v '$(infodir)/dir$$' distcleancheck_listfiles = \ find . \( -type f -a \! \ \( -name .nfs* -o -name .smb* -o -name .__afs* \) \) -print ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CAIRO_CFLAGS = @CAIRO_CFLAGS@ CAIRO_LIBS = @CAIRO_LIBS@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPPFLAGS = @CPPFLAGS@ CSCOPE = @CSCOPE@ CTAGS = @CTAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ ETAGS = @ETAGS@ EXEEXT = @EXEEXT@ FC = @FC@ FCFLAGS = @FCFLAGS@ FC_CFLAGS = @FC_CFLAGS@ FC_LIBS = @FC_LIBS@ FGREP = @FGREP@ FT_CFLAGS = @FT_CFLAGS@ FT_LIBS = @FT_LIBS@ GIZA_VERSION_MAJOR = @GIZA_VERSION_MAJOR@ GIZA_VERSION_MICRO = @GIZA_VERSION_MICRO@ GIZA_VERSION_MINOR = @GIZA_VERSION_MINOR@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ LT_AGE = @LT_AGE@ LT_CURRENT = @LT_CURRENT@ LT_REVISION = @LT_REVISION@ LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ X11_CFLAGS = @X11_CFLAGS@ X11_LIBS = @X11_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ ac_ct_FC = @ac_ct_FC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__rm_f_notfound = @am__rm_f_notfound@ am__tar = @am__tar@ am__untar = @am__untar@ am__xargs_n = @am__xargs_n@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ ACLOCAL_AMFLAGS = -I m4 SUBDIRS = src test dist_doc_DATA = AUTHORS ChangeLog COPYING NEWS INSTALL README.md all: config.h $(MAKE) $(AM_MAKEFLAGS) all-recursive .SUFFIXES: am--refresh: Makefile @: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ echo ' cd $(srcdir) && $(AUTOMAKE) --gnu'; \ $(am__cd) $(srcdir) && $(AUTOMAKE) --gnu \ && exit 0; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ echo ' $(SHELL) ./config.status'; \ $(SHELL) ./config.status;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__maybe_remake_depfiles)'; \ cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__maybe_remake_depfiles);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) $(SHELL) ./config.status --recheck $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) $(am__cd) $(srcdir) && $(AUTOCONF) $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) $(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS) $(am__aclocal_m4_deps): config.h: stamp-h1 @test -f $@ || rm -f stamp-h1 @test -f $@ || $(MAKE) $(AM_MAKEFLAGS) stamp-h1 stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status $(AM_V_at)rm -f stamp-h1 $(AM_V_GEN)cd $(top_builddir) && $(SHELL) ./config.status config.h $(srcdir)/config.h.in: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) $(AM_V_GEN)($(am__cd) $(top_srcdir) && $(AUTOHEADER)) $(AM_V_at)rm -f stamp-h1 $(AM_V_at)touch $@ distclean-hdr: -rm -f config.h stamp-h1 mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs distclean-libtool: -rm -f libtool config.lt install-dist_docDATA: $(dist_doc_DATA) @$(NORMAL_INSTALL) @list='$(dist_doc_DATA)'; test -n "$(docdir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(docdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(docdir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(docdir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(docdir)" || exit $$?; \ done uninstall-dist_docDATA: @$(NORMAL_UNINSTALL) @list='$(dist_doc_DATA)'; test -n "$(docdir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(docdir)'; $(am__uninstall_files_from_dir) # This directory's subdirectories are mostly independent; you can cd # into them and run 'make' without going through this Makefile. # To change the values of 'make' variables: instead of editing Makefiles, # (1) if the variable is set in 'config.status', edit 'config.status' # (which will cause the Makefiles to be regenerated when you run 'make'); # (2) otherwise, pass the desired values on the 'make' command line. $(am__recursive_targets): @fail=; \ if $(am__make_keepgoing); then \ failcom='fail=yes'; \ else \ failcom='exit 1'; \ fi; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ case "$@" in \ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ *) list='$(SUBDIRS)' ;; \ esac; \ for subdir in $$list; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ dot_seen=yes; \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-recursive TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ empty_fix=.; \ else \ include_option=--include; \ empty_fix=; \ fi; \ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-recursive CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscope: cscope.files test ! -s cscope.files \ || $(CSCOPE) -b -q $(AM_CSCOPEFLAGS) $(CSCOPEFLAGS) -i cscope.files $(CSCOPE_ARGS) clean-cscope: -rm -f cscope.files cscope.files: clean-cscope cscopelist cscopelist: cscopelist-recursive cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags -rm -f cscope.out cscope.in.out cscope.po.out cscope.files distdir: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am distdir-am: $(DISTFILES) $(am__remove_distdir) $(AM_V_at)$(MKDIR_P) "$(distdir)" @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ $(am__make_dryrun) \ || test -d "$(distdir)/$$subdir" \ || $(MKDIR_P) "$(distdir)/$$subdir" \ || exit 1; \ dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ $(am__relativize); \ new_distdir=$$reldir; \ dir1=$$subdir; dir2="$(top_distdir)"; \ $(am__relativize); \ new_top_distdir=$$reldir; \ echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ ($(am__cd) $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$$new_top_distdir" \ distdir="$$new_distdir" \ am__remove_distdir=: \ am__skip_length_check=: \ am__skip_mode_fix=: \ distdir) \ || exit 1; \ fi; \ done -test -n "$(am__skip_mode_fix)" \ || find "$(distdir)" -type d ! -perm -755 \ -exec chmod u+rwx,go+rx {} \; -o \ ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \ ! -type d ! -perm -400 -exec chmod a+r {} \; -o \ ! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \ || chmod -R a+r "$(distdir)" dist-gzip: distdir tardir=$(distdir) && $(am__tar) | eval GZIP= gzip $(GZIP_ENV) -c >$(distdir).tar.gz $(am__post_remove_distdir) dist-bzip2: distdir tardir=$(distdir) && $(am__tar) | BZIP2=$${BZIP2--9} bzip2 -c >$(distdir).tar.bz2 $(am__post_remove_distdir) dist-lzip: distdir tardir=$(distdir) && $(am__tar) | lzip -c $${LZIP_OPT--9} >$(distdir).tar.lz $(am__post_remove_distdir) dist-xz: distdir tardir=$(distdir) && $(am__tar) | XZ_OPT=$${XZ_OPT--e} xz -c >$(distdir).tar.xz $(am__post_remove_distdir) dist-zstd: distdir tardir=$(distdir) && $(am__tar) | zstd -c $${ZSTD_CLEVEL-$${ZSTD_OPT--19}} >$(distdir).tar.zst $(am__post_remove_distdir) dist-tarZ: distdir @echo WARNING: "Support for distribution archives compressed with" \ "legacy program 'compress' is deprecated." >&2 @echo WARNING: "It will be removed altogether in Automake 2.0" >&2 tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z $(am__post_remove_distdir) dist-shar: distdir @echo WARNING: "Support for shar distribution archives is" \ "deprecated." >&2 @echo WARNING: "It will be removed altogether in Automake 2.0" >&2 shar $(distdir) | eval GZIP= gzip $(GZIP_ENV) -c >$(distdir).shar.gz $(am__post_remove_distdir) dist-zip: distdir -rm -f $(distdir).zip zip -rq $(distdir).zip $(distdir) $(am__post_remove_distdir) dist dist-all: $(MAKE) $(AM_MAKEFLAGS) $(DIST_TARGETS) am__post_remove_distdir='@:' $(am__post_remove_distdir) # This target untars the dist file and tries a VPATH configuration. Then # it guarantees that the distribution is self-contained by making another # tarfile. distcheck: dist case '$(DIST_ARCHIVES)' in \ *.tar.gz*) \ eval GZIP= gzip -dc $(distdir).tar.gz | $(am__untar) ;;\ *.tar.bz2*) \ bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\ *.tar.lz*) \ lzip -dc $(distdir).tar.lz | $(am__untar) ;;\ *.tar.xz*) \ xz -dc $(distdir).tar.xz | $(am__untar) ;;\ *.tar.Z*) \ uncompress -c $(distdir).tar.Z | $(am__untar) ;;\ *.shar.gz*) \ eval GZIP= gzip -dc $(distdir).shar.gz | unshar ;;\ *.zip*) \ unzip $(distdir).zip ;;\ *.tar.zst*) \ zstd -dc $(distdir).tar.zst | $(am__untar) ;;\ esac chmod -R a-w $(distdir) chmod u+w $(distdir) mkdir $(distdir)/_build $(distdir)/_build/sub $(distdir)/_inst chmod a-w $(distdir) test -d $(distdir)/_build || exit 0; \ dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \ && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \ && am__cwd=`pwd` \ && $(am__cd) $(distdir)/_build/sub \ && ../../configure \ $(AM_DISTCHECK_CONFIGURE_FLAGS) \ $(DISTCHECK_CONFIGURE_FLAGS) \ --srcdir=../.. --prefix="$$dc_install_base" \ && $(MAKE) $(AM_MAKEFLAGS) \ && $(MAKE) $(AM_MAKEFLAGS) $(AM_DISTCHECK_DVI_TARGET) \ && $(MAKE) $(AM_MAKEFLAGS) check \ && $(MAKE) $(AM_MAKEFLAGS) install \ && $(MAKE) $(AM_MAKEFLAGS) installcheck \ && $(MAKE) $(AM_MAKEFLAGS) uninstall \ && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \ distuninstallcheck \ && chmod -R a-w "$$dc_install_base" \ && ({ \ (cd ../.. && umask 077 && mkdir "$$dc_destdir") \ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \ distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \ } || { rm -rf "$$dc_destdir"; exit 1; }) \ && rm -rf "$$dc_destdir" \ && $(MAKE) $(AM_MAKEFLAGS) dist \ && rm -rf $(DIST_ARCHIVES) \ && $(MAKE) $(AM_MAKEFLAGS) distcleancheck \ && cd "$$am__cwd" \ || exit 1 $(am__post_remove_distdir) @(echo "$(distdir) archives ready for distribution: "; \ list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \ sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x' distuninstallcheck: @test -n '$(distuninstallcheck_dir)' || { \ echo 'ERROR: trying to run $@ with an empty' \ '$$(distuninstallcheck_dir)' >&2; \ exit 1; \ }; \ $(am__cd) '$(distuninstallcheck_dir)' || { \ echo 'ERROR: cannot chdir into $(distuninstallcheck_dir)' >&2; \ exit 1; \ }; \ test `$(am__distuninstallcheck_listfiles) | wc -l` -eq 0 \ || { echo "ERROR: files left after uninstall:" ; \ if test -n "$(DESTDIR)"; then \ echo " (check DESTDIR support)"; \ fi ; \ $(distuninstallcheck_listfiles) ; \ exit 1; } >&2 distcleancheck: distclean @if test '$(srcdir)' = . ; then \ echo "ERROR: distcleancheck can only run from a VPATH build" ; \ exit 1 ; \ fi @test `$(distcleancheck_listfiles) | wc -l` -eq 0 \ || { echo "ERROR: files left in build directory after distclean:" ; \ $(distcleancheck_listfiles) ; \ exit 1; } >&2 check-am: all-am check: check-recursive all-am: Makefile $(DATA) config.h installdirs: installdirs-recursive installdirs-am: for dir in "$(DESTDIR)$(docdir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-recursive install-exec: install-exec-recursive install-data: install-data-recursive uninstall: uninstall-recursive install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-recursive install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -$(am__rm_f) $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || $(am__rm_f) $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-recursive clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-recursive -rm -f $(am__CONFIG_DISTCLEAN_FILES) -rm -f Makefile distclean-am: clean-am distclean-generic distclean-hdr \ distclean-libtool distclean-tags dvi: dvi-recursive dvi-am: html: html-recursive html-am: info: info-recursive info-am: install-data-am: install-dist_docDATA install-dvi: install-dvi-recursive install-dvi-am: install-exec-am: install-html: install-html-recursive install-html-am: install-info: install-info-recursive install-info-am: install-man: install-pdf: install-pdf-recursive install-pdf-am: install-ps: install-ps-recursive install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-recursive -rm -f $(am__CONFIG_DISTCLEAN_FILES) -rm -rf $(top_srcdir)/autom4te.cache -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-recursive mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-recursive pdf-am: ps: ps-recursive ps-am: uninstall-am: uninstall-dist_docDATA .MAKE: $(am__recursive_targets) all install-am install-strip .PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am \ am--refresh check check-am clean clean-cscope clean-generic \ clean-libtool cscope cscopelist-am ctags ctags-am dist \ dist-all dist-bzip2 dist-gzip dist-lzip dist-shar dist-tarZ \ dist-xz dist-zip dist-zstd distcheck distclean \ distclean-generic distclean-hdr distclean-libtool \ distclean-tags distcleancheck distdir distuninstallcheck dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dist_docDATA install-dvi \ install-dvi-am install-exec install-exec-am install-html \ install-html-am install-info install-info-am install-man \ install-pdf install-pdf-am install-ps install-ps-am \ install-strip installcheck installcheck-am installdirs \ installdirs-am maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \ ps ps-am tags tags-am uninstall uninstall-am \ uninstall-dist_docDATA .PRECIOUS: Makefile README: README.md # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: # Tell GNU make to disable its built-in pattern rules. %:: %,v %:: RCS/%,v %:: RCS/% %:: s.% %:: SCCS/s.% giza-1.5.0/NEWS000066400000000000000000000562551477367113400132000ustar00rootroot00000000000000Changes in v1.4.4 ----------------- - bug fix with missing dynamic libraries in v1.4.3 and v1.4.2 (#61; thanks to Ole Streicher) - bug fix with test suite using make -j (#62; thanks to Ole Streicher) Changes in v1.4.3 ----------------- - bug fix with parsing longer escape sequences that contain shorter ones, like \beta (containing \b) and \gamma (containing \ga) - added \odot symbol - revert marker 1 to point plotting, not resized with character height Changes in v1.4.2 ------------------ - bug fix with build on Mac OS: explicitly request static libs for libgiza.a and libpglot.a - bug fix with pkg-config failing to find cairo.h - bug fix with weird black screen on Mac OS after clicking in a plot window (#55) - issues in test suite fixed (#50) - bug fix with giza_circle (#52) - added automated build and test suite to github actions workflow v1.4.1 ------ - quieter output from mp4 device - bug fix in release workflow v1.4.0 ------ - added mp4 driver, can simply give "file.mp4" as the device to generate mp4 file - can amend flags to ffmpeg using GIZA_FFMPEG_FLAGS environment variable - automated cleanup of temporary .png files used to make the movie - add registered and copyright sign as symbols (thanks To Hiroyuki Ito) - Add support for '1' and '2' options to giza_box (thanks to Hiroyuki Ito) - Add support for PG[SQ]ITF. PGPLOT has three image transfer functions defined for PGIMAG: linear, log, sqrt. These are now implemented (thanks to Harro Verkouter) - Fix giza_set_colour_table to set colour indices. The function would warn about inconsistent entries in the controlPoints and return with an error, not setting the colour-index table (thanks to Harro Verkouter) - Follow PGPLOT auto-linestyle in PGCONT (thanks to Harro Verkouter) - Address char height/line width scaling issues: According to PGPLOT documentation, symbols are drawn using current attributes character height and line width (thanks to Harro Verkouter) v1.3.2 ------ - bug fix with spaces at end of string causing failure on open_device in Fortran interface (#35) v1.3.1 ------ - giza_axis and giza_tick added to libcpgplot interface (#12) - fixed various documentation issues - API documentation automatically updates via github workflow v1.3.0 ------ - new library functions giza_set_motion_callback and giza_end_motion_callback - can now specify a callback function func(x,y,mode) that will be called every time the cursor moves - implemented giza_axis and giza_tick with replacement functionality for PGAXIS and PGTICK (#12) - Fortran API no longer trims text strings before passing them to giza routines. This enables one to send a string of blank characters with an opaque background colour in order to erase previously drawn text v1.2.1 ------ - bug fix specifying device at prompt with directory path, e.g. dir/file.png v1.2.0 ------ Features: - new giza_set_number_format() sets format to use by giza_box() (thanks to chafar) - giza_open() now detects and handles errors occurring during setup of the new device - PGEND()/cpgend() now closes all open devices, as per documentation (thanks to H. Verkouter) - giza build includes freetype and fontconfig libraries - improved font memory management (thanks to H. Verkouter) Bug fixes: - build failure caused by giza_box_time fixed (#21) - bug fix with internal logic in naming png files if blank page exists (thanks to Aard Keimpema, #28) - seg fault fixed when multiple devices are opened and closed in random order (thanks to H. Verkouter) - fixed possible buffer overflow in giza_format_number (thanks to H. Verkouter) - avoid the 'initial declarations are only allowed in C99 mode' error (thanks to M. Hutchison) Other: - deleted unused _giza_change_size() function - updated documentation for github - automated build checking, api documentation and release-on-tag via github actions v1.1.0 ------ Features: - various PGPLOT compatibility improvements - better compatibility with PGPLOT marker symbols (#5, #16) - reworked PGPAP implementation Bug fixes: - segmentation fault in _giza_parse_string fixed (#13) - pgqinf issue fixed (#11) - splash movie mode/ resize X-window bug fixed (#18) - Macports build failure fixed (#19) - cpggray issue fixed - fix backspace handling (\b) in text strings v1.0.0 ------ A swag of new/missing features, mainly thanks to excellent contributions from Harro Verkouter: - implementation (port) of PGTBOX / giza_tbox, giving option for axis labelling in days, minutes and seconds - ability to resize X-windows - wider character set supported - support for PGBOX 'I' and 'P' options - support for backspace (\b) in printing strings ----------------------------------- Changes in 0.9.5 compared to 0.9.4 ----------------------------------- (web) moved to github hosting bug fix with shaded error bars (giza_box) bug fix with spacing between box and numbers when numbers written on top of box fix compiler warning in giza-viewport/giza-window updated .gitignore to ignore .lo and .la files (giza_box) bug fix with drawing major axis only; also with drawing grid (iaxis=1) fix string allocation (thanks to Ole Streicher) ----------------------------------- Changes in 0.9.4 compared to 0.9.3 ----------------------------------- updated readme (os/x) fixed X11 library path for OS/X El Capitan docs->doc (thanks to Joachim Frieben) test->test/C test/F90 (thanks to Joachim Frieben) test->test/C test/F90 (thanks to Joachim Frieben) interface/*->src (thanks to Joachim Frieben) include/*.h->src (thanks to Joachim Frieben) perl scripts updated to point to ../src instead of ../interface (thanks to Joachim Frieben) removed include and lib dirs (thanks to Joachim Frieben) CHANGES->NEWS and added ChangeLog (thanks to Joachim Frieben) added pkg-config metadata files (thanks to Joachim Frieben) bug fixes with variables defined in headers; now uses extern and declared in .c files replaced Makefiles with automake and autoconf scripts (thanks to Joachim Frieben) replaced Makefiles with automake and autoconf scripts (thanks to Joachim Frieben) added autotools-generated files for distribution (thanks to Joachim Frieben) added autoconf scripts to build dir added versioning of giza-version.h to configure stuff updated build to use pkg-config to find X11 and cairo libs removed obsolete include dir (thanks to Joachim Frieben) removed obsolete dirs in svn (thanks to Joachim Frieben) updated INSTALL instructions for autotools build (thanks to Joachim Frieben) test-error-bars-2.c -> test/C (thanks to Joachim Frieben) update libtool version info + added comments build libgiza before libcpgplot; also copy giza-fortran.F90 to include directory libpgplot and libcpgplot link to libgiza instead of including .o files; faster build (thanks to Joachim Frieben) added fallback options for cairo and x11 on OS/X if pkg-config not available updated INSTALL instructions patch for negative marker indices; now matches expected PGPLOT behaviour; contributed by Joachim Frieben 0.9.4 ----------------------------------- Changes in 0.9.3 compared to 0.9.2 ----------------------------------- added FFLAGS setting and -fPIC to Makefile fixed build of test-fortran renamed test-xw.c->test-giza-xw.c (thanks to Joachim Frieben) added test-2D to default tests test-arrow now works as expected (thanks to Joachim Frieben) test-png spits out sensible number of files added separate test-svg; test-pdf now outputs pdf added testpg target to compile pgplot tests (thanks to Joachim Frieben) better error handling in png device (thanks to Hugh Williams) BUG FIX with long device names; string length increased to 256 chars; added error checks for strings too long (thanks to Hugh Williams) flush stdin after giza prompt to avoid repeated device tries flushing achieved with fflush instead of getchar to avoid unnecessary hangs add -I$(PREFIX)/include/cairo to include flags version bumped to 0.9.3 ----------------------------------- Changes in 0.9.2 compared to 0.9.1 ----------------------------------- workaround for macports issue with all target reverted build targets; also install giza.mod into include dir by default bug fix with giza.mod in install target bug fix with typedef of line width in giza fill (thanks to W. Dehnen) fine-tuning of line styles; added offset to patterns to give better legend use $(FC) instead of $(LIBTOOL) to compile shared Fortran library (thanks to Sean Farley) 0.9.2 ----------------------------------- Changes in 0.9.1 compared to 0.9.0 ----------------------------------- danielprice (6): updated docs for fortran interface bug fix with shaded error bar plotting (causing shading of outside not inside) implemented sorting in mark_cursor/PGNCUR minor changes to build: default target is default, not all to avoid macports issue added test for pgaxis routines version 0.9.1 ----------------------------------- Changes in 0.9.0 compared to 0.8.1 ----------------------------------- danielprice (27): sub-panelling routines implemented can use /xs, /xserve and /xwindow to specify X-windows device added interfaces for histogram routines giza_histogram implemented; compatible with PGHIST implemented giza_histogram_binned; implements PGBIN clipping of plot for sub-panels now works as expected; advance_subpanel returns flag when page changes docs fixed for viewport routines bug fix with uninitialised variables if bad args to giza_viewport sub-panelling now works; various bugs fixed with this deleted obsolete branch comment removed BUG FIX with missing last page on interactive devices if prompting is on BUG FIX with flushing if multiple XW devices used BUG FIX with panel changing if more than one row BUG FIX with clipping and positioning of panels if more than one row character size scaled according to panel height not page height better margins in PGENV/giza_environment version 0.9.0 ----------------------------------- Changes in 0.8.1 compared to 0.8.0 ----------------------------------- danielprice (16): updated changelog added cpgtbox interface to giza_box_time; also bug fix with cpgswin interface added for giza_get_device_id in giza.h added test-2D thanks to Jean-Francois Gonzalez affine array does not need to be passed for most rendered images in simple f90 interface updated links in docs bug fix in docs referring to giza_colour_ramp, should be to giza_set_colour_table added link to giza_set_colour_table in docs updated text scanner (uses unicode Sun symbol) minor change to 2D test can use \bf or \fb to get bold face in strings BUG FIX with font changing in rotated strings; also original font now preserved after string is printed version bumped to 0.8.1 giza-save uses GIZA_FONT_LEN to be consistent text routines handle escape sequences for backslash (\\), underscore (\_), hat (\^) and curly brackets support for limited scope of font changing commands in strings, i.e. {\bf text} and {\it text} ----------------------------------- Changes in 0.8.0 compared to 0.7.6 ----------------------------------- danielprice (42): gfortran version checking removed (obsolete/no longer necessary) floating exception fixed in giza_set_window_equal_scale if width=height=0 newline removed BUG FIX with vector arrows in double precision link for -lgfortran fixed added autolog feature: controlled via begin_autolog/end_autolog routines and GIZA_LOG environment variable silenced warning regarding colour not set if NaNs input to giza-render routines better cleanup on failure to open device; does not require giza_close_device call multiple device support implemented (LOTS of code changed): added giza_select/pgslct routines to switch between de deviceOpen and drawn now specific to each device: removed sizeSpecified and reworked the way devices are opened to implemented resizing of X-window/bitmap devices via giza_paper_size (not perfect yet) numbering of devices now from 1->N externally, from 0->N-1 internally; implemented PGQID/giza_get_device_id start/stop prompting setting now specific to each device, not global typo fixed window settings now specific to each device viewport settings now specific to each device commented out temporary stuff buffering setting is specific to each device fill style and settings specific to each device arrow style settings specific to each device (giza_arrow_t) line width setting specific to each device line style setting specific to each device fontExtents stored specific to each device; not globally fontAngle setting specific to each device character height setting specific to each device get_line_style always returns something even if giza not started text background colour setting specific to each device clip setting specific to each device bug fix with default text background (should be -1 not 0) debugging info removed device help shows filename option (file.png instead of /png) updated docs on return value for giza_open_device debugging/commented out cruft removed added integer parameters giving version number info in Fortran interface added docs for giza_vector added giza version routine to query version info added giza_version routine to Fortran interface bug fix with documentation of giza_version updated status of PGPAP/cpgpap typo fixed in api script updated changelog for 0.8.0 extra files included in release tarball ----------------------------------- Changes in 0.7.6 compared to 0.7.5 ----------------------------------- danielprice (4): better clean targets for Makefiles bug fix with box being drawn randomly due to giza_stroke call fortran interface compiles with ifort+debugging; thanks to Andy McLeod minor fixes to install target; should now work with Macports ----------------------------------- Changes in 0.7.5 compared to 0.7.4 ----------------------------------- danielprice (18): README included in distribution README added to repository routines added to set colour representation in rgb various line palettes added; can be selected with GIZA_PALETTE environment variable build respects DESTDIR conventions BUG FIX with log axis labelling if interval < 10 new colour palette options added giza_stroke called after device opened; avoids black page bug if no box/window/viewport called prior to drawing BUG FIX with arrow heads becoming small in certain directions giza arrow uses semi-angle instead of full angle, as in PGPLOT (pgdemo1) added box/more arrow tests XW driver no longer uses XNextEvent to prevent compile problems on Ubuntu; also initial window call uses WhitePixel as defined by Xlib LICENSE file renamed to COPYING CHANGES file added; README now contains small blurb updated INSTALL instructions added AUTHORS file compiler warning fixed compiler warnings with strncpy fixed (clang) ----------------------------------- Changes in 0.7.4 compared to 0.7.3 ----------------------------------- danielprice(36) bug fix with gfortran4.6 and giza_open interface work on giza_plot continues; handles and renders 2D array giza_units_normalised added optional viewport arguments to giza_plot handled correctly added giza_render_alpha routines for brightness-corrected rendering defined GIZA_FOREGROUND and GIZA_BACKGROUND added tests for the xw bug added Makefile for tests test reports cairo version updated xw test added png test better error handling on closing vector surfaces (picks up cairo bug in Lion) makefile compiles several tests use surface_finish and checks for errors when closing xlib surface giza-io routines declare const char* not just char; avoids compiler warnings typo fixed file headers updated and unified across all files updated comments in cpgplot.h fixed comment so does not get deleted by header script uses X11DIR to specify libX11 location in Makefile minor change to script version number bumped xw driver returns key bindings for right/middle clicks and scroll events circle cursor uses filled, partially transparent circle similar to rectangle selection improvements to cursor routines: mark_with_cursor handled by get_key_press routine, allows polygon selection to be redrawn on the fly added giza_rectangle_rounded routine for plotting rectangles with rounded corners BUG FIX with giza_function_x/y/t interfaces with gfortran v4.7; also giza_plot_line now giza_line in Fortran interface minor change to comment better handling of valMin=valMax in giza_render_float can specify hardcopy devices just using the filename e.g. crap.png instead of having to type crap.png/png test Makefile compiles a fortran example png device names first file differently depending on whether or not it is part of a sequence uses _0000 numbering if part of sequence for eps and svg devices (by renaming file when changing page) commented out X-windows error-handling routine to avoid compilation problems in Ubuntu ----------------------------------- Changes in 0.7.3 compared to 0.7.2 ----------------------------------- danielprice (35): BUG FIX with default viewport on first page (character height not initialised correctly), affects giza_environment minor cleanups full range of box/env options implemented (grid lines, log axes) minor cleanup, commented-out stuff removed improved readability of giza_box; variables better named; docs added for M and L options obsolete comment removed bug fix with .png.png naming in png device; change page now calls close_device_png to avoid repeated code PGQINF fully implemented; additional queries added to giza_query_device fixed icc warnings for eps driver minor fix to documentation freetype font loading added (experimental, not compiled by default) high level giza_open/giza_close interfaces added to Fortran interface routines/interfaces added for pgtbox/giza_box_time (currently just calls giza_box with options unchanged) X11 driver no longer uses XDefaultGCOfScreen so should work on older systems bug fix with gfortran4.6 and giza_open interface work on giza_plot continues; handles and renders 2D array giza_units_normalised added optional viewport arguments to giza_plot handled correctly added giza_render_alpha routines for brightness-corrected rendering defined GIZA_FOREGROUND and GIZA_BACKGROUND added tests for the xw bug added Makefile for tests test reports cairo version updated xw test added png test better error handling on closing vector surfaces (picks up cairo bug in Lion) makefile compiles several tests use surface_finish and checks for errors when closing xlib surface giza-io routines declare const char* not just char; avoids compiler warnings typo fixed file headers updated and unified across all files updated comments in cpgplot.h fixed comment so does not get deleted by header script uses X11DIR to specify libX11 location in Makefile ----------------------------------- Changes in 0.7.2 compared to 0.7.1 ----------------------------------- danielprice (34): bug fix in default viewport causing labels with giza_label to be clipped giza-annotate code shortened (unnecessary extra lines removed) bug fix with chopped labels in giza_label updated list of fortran params automatically changed order of long/short dashes; line styles in libpgplot now always match pgplot test added for memory leaks in X11 bug fix with log labelling of 1 and 10 valgrind bug fix with init_device_list using uninitialised string basic test of multiple open/close calls added markerHeight declared static bug fix with array overflow in giza_contour colour index variables declared static uses explicit font face creation/destruction to avoid memory leaks (cairo >=1.8 only) bug fixes with generation of api documentation mistaken const declarations removed; replaced with static implemented semi-transparent error bar plotting [PATCH contributed by Daniel Kelson] Arrays now passed as C pointers, not fixed size; fixes cpgplot interface issues; tested against splash and works fine updated cpgplot interface to include imaging routines; now similar to libpgplot in implementation level [PATCH contributed by Daniel Kelson] viewport and window now handle xmin>xmax and ymin>ymax correctly added const to all array input variables; consistent with cpgplot interface public header files now live in the include directory rather than being copied around ----------------------------------- Changes in 0.7.1 compared to 0.7.0 ----------------------------------- danielprice (31): updated include paths better flush of xevents silenced spurious warnings in giza-points and giza-polygon uses libtool instead of c compiler to build shared library more warnings silenced handles failure to call close_device; also bug fix with _giza_lowercase handles failure to call close_device; also bug fix with _giza_lowercase bug fix with whitespace in device names whitespace removed from strings in when passed through giza-fortran interface better linewidth conversion between pgplot and giza in libpgplot implemented option to give exact pgplot colour table better placement of text above viewport in giza-annotate spurious whitespace at end of lines removed (script) bug fix with len_trim in f2c string conversion added giza_colour_palette routines; libpgplot uses PGPLOT colour palette by default shared lib extension determined automatically build more portable on os/x vs linux still working on dylib vs .so; works on both now minor changes to Makefile structure id decreased again when device close (fixes spurious warnings) all drivers call get_filename_for_device; avoids trim/case issues added $PREFIX/include to include line checks gfortran version number and gives error if gfortran is too old to compile fortran interface gfortran version checks work with old gfortran (v4.1.2) and give error standard viewport (as used by giza_environment) now leaves boundary of 4 character heights on each size rather than a fixed fraction added comments to postscript header set_viewport_inches uses Dev.width not Dev.widthCM (safer) paper size queries use Dev.width not Dev.widthCM (safer) rejigged the way the paper size is set; can now be set in different units; set_paper_size calls redone; Dev.widthCM and Dev.heightCM removed; less confusing all round header included for internal routine bumped version number giza-1.5.0/README.md000066400000000000000000000065771477367113400137620ustar00rootroot00000000000000giza - a scientific plotting library for C/Fortran ================================================== About ----- A 2D scientific plotting library built on cairo. Provides uniform output to pdf, ps, png and X-Windows. Written in C with no dependencies (other than cairo) as a direct replacement for PGPLOT. Features -------- - 2D plotting library - Output to png, ps, eps, pdf, svg and X-window - Interactivity via cursor calls (similar to PGCURS, PGBAND) - Includes PGPLOT interface that compiles replacement versions of libpgplot and libcpgplot with many backwards compatible features - most of PGPLOT API implemented - Minimal dependencies: depends only on very standard system libraries (cairo, png, X11) - Written in standard C with a Fortran 90/95/2003 interface - Compiles as a standalone library or can be incorporated into other codes - Interface routines handle both float and double precision input - Easily called from Fortran/C/C++ code - Originally written as a backend for SPLASH, in stable use now for more than 10 years Status ------ ![build](https://github.com/danieljprice/giza/workflows/build/badge.svg) Install ------- Type: ``` ./configure make install ``` You will need a C compiler, cairo and X11 development packages. If they are ready to go the above should build giza using gcc, and "make install" should install under a Linux or Mac operating system. To install in a special location (e.g. your userspace), use: ``` ./configure --prefix=${HOME} make install ``` If you have X11 or cairo installed in a custom location, or you don't have pkg-config installed, specify the location with the following flags: ``` ./configure X11_CFLAGS='-I/usr/X11/include' X11_LIBS='-L/usr/X11/lib -lX11' CAIRO_CFLAGS='-I/usr/X11/include/cairo' CAIRO_LIBS='-L/usr/X11/lib/cairo -lcairo' make install ``` You can find out more configuration options using ./configure --help Basic usage (using giza directly, not via pgplot interface) ----------- For simple examples, you can try compiling some of the examples in the tests/ directory, e.g. ``` cd giza/tests/C/ make test-png ./test-png %giza: test_0000.png created %giza: test_0001.png created %giza: test_0002.png created %giza: test_0003.png created %giza: test_0004.png created %giza: test_0005.png created %giza: test_0006.png created %giza: test_0007.png created %giza: test_0008.png created %giza: test_0009.png created ``` Or for a Fortran equivalent: ``` cd giza/tests/F90/ make test-2D ./test-2D ``` PGPLOT replacement usage ------------------------ giza compiles a version of libpgplot that can be used as a drop-in replacement for the original PGPLOT libraries If you want to test a program that previously used PGPLOT, then first compile and install giza as above (which by default will install libraries to /usr/local/lib). Then on a Mac you would type: (assuming a Mac with giza libraries installed to /usr/local/lib), just type: ``` export DYLD_LIBRARY_PATH=/usr/local/lib:${DYLD_LIBRARY_PATH} ``` or in Linux ``` export LD_LIBRARY_PATH=/usr/local/lib:${LD_LIBRARY_PATH} ``` then run your PGPLOT-based program (you don't even need to recompile it). That is, as long as giza's version of pgplot libraries are first in the shared library path, they are the ones that will be used. There are some basic examples of PGPLOT usage (mainly written for my own testing) in the F90 dir: ``` cd giza/test/F90 make test-pgaxis test-pgncur ./test-pgaxis ./test-pgncur ``` giza-1.5.0/aclocal.m4000066400000000000000000001743011477367113400143320ustar00rootroot00000000000000# generated automatically by aclocal 1.17 -*- Autoconf -*- # Copyright (C) 1996-2024 Free Software Foundation, Inc. # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. m4_ifndef([AC_CONFIG_MACRO_DIRS], [m4_defun([_AM_CONFIG_MACRO_DIRS], [])m4_defun([AC_CONFIG_MACRO_DIRS], [_AM_CONFIG_MACRO_DIRS($@)])]) m4_ifndef([AC_AUTOCONF_VERSION], [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.72],, [m4_warning([this file was generated for autoconf 2.72. You have another version of autoconf. It may work, but is not guaranteed to. If you have problems, you may need to regenerate the build system entirely. To do so, use the procedure documented by the package, typically 'autoreconf'.])]) # pkg.m4 - Macros to locate and use pkg-config. -*- Autoconf -*- # serial 12 (pkg-config-0.29.2) dnl Copyright © 2004 Scott James Remnant . dnl Copyright © 2012-2015 Dan Nicholson dnl dnl This program is free software; you can redistribute it and/or modify dnl it under the terms of the GNU General Public License as published by dnl the Free Software Foundation; either version 2 of the License, or dnl (at your option) any later version. dnl dnl This program is distributed in the hope that it will be useful, but dnl WITHOUT ANY WARRANTY; without even the implied warranty of dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU dnl General Public License for more details. dnl dnl You should have received a copy of the GNU General Public License dnl along with this program; if not, write to the Free Software dnl Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA dnl 02111-1307, USA. dnl dnl As a special exception to the GNU General Public License, if you dnl distribute this file as part of a program that contains a dnl configuration script generated by Autoconf, you may include it under dnl the same distribution terms that you use for the rest of that dnl program. dnl PKG_PREREQ(MIN-VERSION) dnl ----------------------- dnl Since: 0.29 dnl dnl Verify that the version of the pkg-config macros are at least dnl MIN-VERSION. Unlike PKG_PROG_PKG_CONFIG, which checks the user's dnl installed version of pkg-config, this checks the developer's version dnl of pkg.m4 when generating configure. dnl dnl To ensure that this macro is defined, also add: dnl m4_ifndef([PKG_PREREQ], dnl [m4_fatal([must install pkg-config 0.29 or later before running autoconf/autogen])]) dnl dnl See the "Since" comment for each macro you use to see what version dnl of the macros you require. m4_defun([PKG_PREREQ], [m4_define([PKG_MACROS_VERSION], [0.29.2]) m4_if(m4_version_compare(PKG_MACROS_VERSION, [$1]), -1, [m4_fatal([pkg.m4 version $1 or higher is required but ]PKG_MACROS_VERSION[ found])]) ])dnl PKG_PREREQ dnl PKG_PROG_PKG_CONFIG([MIN-VERSION], [ACTION-IF-NOT-FOUND]) dnl --------------------------------------------------------- dnl Since: 0.16 dnl dnl Search for the pkg-config tool and set the PKG_CONFIG variable to dnl first found in the path. Checks that the version of pkg-config found dnl is at least MIN-VERSION. If MIN-VERSION is not specified, 0.9.0 is dnl used since that's the first version where most current features of dnl pkg-config existed. dnl dnl If pkg-config is not found or older than specified, it will result dnl in an empty PKG_CONFIG variable. To avoid widespread issues with dnl scripts not checking it, ACTION-IF-NOT-FOUND defaults to aborting. dnl You can specify [PKG_CONFIG=false] as an action instead, which would dnl result in pkg-config tests failing, but no bogus error messages. AC_DEFUN([PKG_PROG_PKG_CONFIG], [m4_pattern_forbid([^_?PKG_[A-Z_]+$]) m4_pattern_allow([^PKG_CONFIG(_(PATH|LIBDIR|SYSROOT_DIR|ALLOW_SYSTEM_(CFLAGS|LIBS)))?$]) m4_pattern_allow([^PKG_CONFIG_(DISABLE_UNINSTALLED|TOP_BUILD_DIR|DEBUG_SPEW)$]) AC_ARG_VAR([PKG_CONFIG], [path to pkg-config utility]) AC_ARG_VAR([PKG_CONFIG_PATH], [directories to add to pkg-config's search path]) AC_ARG_VAR([PKG_CONFIG_LIBDIR], [path overriding pkg-config's built-in search path]) if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then AC_PATH_TOOL([PKG_CONFIG], [pkg-config]) fi if test -n "$PKG_CONFIG"; then _pkg_min_version=m4_default([$1], [0.9.0]) AC_MSG_CHECKING([pkg-config is at least version $_pkg_min_version]) if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then AC_MSG_RESULT([yes]) else AC_MSG_RESULT([no]) PKG_CONFIG="" fi fi if test -z "$PKG_CONFIG"; then m4_default([$2], [AC_MSG_ERROR([pkg-config not found])]) fi[]dnl ])dnl PKG_PROG_PKG_CONFIG dnl PKG_CHECK_EXISTS(MODULES, [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND]) dnl ------------------------------------------------------------------- dnl Since: 0.18 dnl dnl Check to see whether a particular set of modules exists. Similar to dnl PKG_CHECK_MODULES(), but does not set variables or print errors. dnl dnl Please remember that m4 expands AC_REQUIRE([PKG_PROG_PKG_CONFIG]) dnl only at the first occurrence in configure.ac, so if the first place dnl it's called might be skipped (such as if it is within an "if", you dnl have to call PKG_CHECK_EXISTS manually AC_DEFUN([PKG_CHECK_EXISTS], [AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl if test -n "$PKG_CONFIG" && \ AC_RUN_LOG([$PKG_CONFIG --exists --print-errors "$1"]); then m4_default([$2], [:]) m4_ifvaln([$3], [else $3])dnl fi]) dnl _PKG_CONFIG([VARIABLE], [COMMAND], [MODULES]) dnl --------------------------------------------- dnl Internal wrapper calling pkg-config via PKG_CONFIG and setting dnl pkg_failed based on the result. m4_define([_PKG_CONFIG], [if test -n "$$1"; then pkg_cv_[]$1="$$1" elif test -n "$PKG_CONFIG"; then PKG_CHECK_EXISTS([$3], [pkg_cv_[]$1=`$PKG_CONFIG --[]$2 "$3" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes ], [pkg_failed=yes]) else pkg_failed=untried fi[]dnl ])dnl _PKG_CONFIG dnl _PKG_SHORT_ERRORS_SUPPORTED dnl --------------------------- dnl Internal check to see if pkg-config supports short errors. AC_DEFUN([_PKG_SHORT_ERRORS_SUPPORTED], [AC_REQUIRE([PKG_PROG_PKG_CONFIG]) if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi[]dnl ])dnl _PKG_SHORT_ERRORS_SUPPORTED dnl PKG_CHECK_MODULES(VARIABLE-PREFIX, MODULES, [ACTION-IF-FOUND], dnl [ACTION-IF-NOT-FOUND]) dnl -------------------------------------------------------------- dnl Since: 0.4.0 dnl dnl Note that if there is a possibility the first call to dnl PKG_CHECK_MODULES might not happen, you should be sure to include an dnl explicit call to PKG_PROG_PKG_CONFIG in your configure.ac AC_DEFUN([PKG_CHECK_MODULES], [AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl AC_ARG_VAR([$1][_CFLAGS], [C compiler flags for $1, overriding pkg-config])dnl AC_ARG_VAR([$1][_LIBS], [linker flags for $1, overriding pkg-config])dnl pkg_failed=no AC_MSG_CHECKING([for $2]) _PKG_CONFIG([$1][_CFLAGS], [cflags], [$2]) _PKG_CONFIG([$1][_LIBS], [libs], [$2]) m4_define([_PKG_TEXT], [Alternatively, you may set the environment variables $1[]_CFLAGS and $1[]_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details.]) if test $pkg_failed = yes; then AC_MSG_RESULT([no]) _PKG_SHORT_ERRORS_SUPPORTED if test $_pkg_short_errors_supported = yes; then $1[]_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "$2" 2>&1` else $1[]_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "$2" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$$1[]_PKG_ERRORS" >&AS_MESSAGE_LOG_FD m4_default([$4], [AC_MSG_ERROR( [Package requirements ($2) were not met: $$1_PKG_ERRORS Consider adjusting the PKG_CONFIG_PATH environment variable if you installed software in a non-standard prefix. _PKG_TEXT])[]dnl ]) elif test $pkg_failed = untried; then AC_MSG_RESULT([no]) m4_default([$4], [AC_MSG_FAILURE( [The pkg-config script could not be found or is too old. Make sure it is in your PATH or set the PKG_CONFIG environment variable to the full path to pkg-config. _PKG_TEXT To get pkg-config, see .])[]dnl ]) else $1[]_CFLAGS=$pkg_cv_[]$1[]_CFLAGS $1[]_LIBS=$pkg_cv_[]$1[]_LIBS AC_MSG_RESULT([yes]) $3 fi[]dnl ])dnl PKG_CHECK_MODULES dnl PKG_CHECK_MODULES_STATIC(VARIABLE-PREFIX, MODULES, [ACTION-IF-FOUND], dnl [ACTION-IF-NOT-FOUND]) dnl --------------------------------------------------------------------- dnl Since: 0.29 dnl dnl Checks for existence of MODULES and gathers its build flags with dnl static libraries enabled. Sets VARIABLE-PREFIX_CFLAGS from --cflags dnl and VARIABLE-PREFIX_LIBS from --libs. dnl dnl Note that if there is a possibility the first call to dnl PKG_CHECK_MODULES_STATIC might not happen, you should be sure to dnl include an explicit call to PKG_PROG_PKG_CONFIG in your dnl configure.ac. AC_DEFUN([PKG_CHECK_MODULES_STATIC], [AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl _save_PKG_CONFIG=$PKG_CONFIG PKG_CONFIG="$PKG_CONFIG --static" PKG_CHECK_MODULES($@) PKG_CONFIG=$_save_PKG_CONFIG[]dnl ])dnl PKG_CHECK_MODULES_STATIC dnl PKG_INSTALLDIR([DIRECTORY]) dnl ------------------------- dnl Since: 0.27 dnl dnl Substitutes the variable pkgconfigdir as the location where a module dnl should install pkg-config .pc files. By default the directory is dnl $libdir/pkgconfig, but the default can be changed by passing dnl DIRECTORY. The user can override through the --with-pkgconfigdir dnl parameter. AC_DEFUN([PKG_INSTALLDIR], [m4_pushdef([pkg_default], [m4_default([$1], ['${libdir}/pkgconfig'])]) m4_pushdef([pkg_description], [pkg-config installation directory @<:@]pkg_default[@:>@]) AC_ARG_WITH([pkgconfigdir], [AS_HELP_STRING([--with-pkgconfigdir], pkg_description)],, [with_pkgconfigdir=]pkg_default) AC_SUBST([pkgconfigdir], [$with_pkgconfigdir]) m4_popdef([pkg_default]) m4_popdef([pkg_description]) ])dnl PKG_INSTALLDIR dnl PKG_NOARCH_INSTALLDIR([DIRECTORY]) dnl -------------------------------- dnl Since: 0.27 dnl dnl Substitutes the variable noarch_pkgconfigdir as the location where a dnl module should install arch-independent pkg-config .pc files. By dnl default the directory is $datadir/pkgconfig, but the default can be dnl changed by passing DIRECTORY. The user can override through the dnl --with-noarch-pkgconfigdir parameter. AC_DEFUN([PKG_NOARCH_INSTALLDIR], [m4_pushdef([pkg_default], [m4_default([$1], ['${datadir}/pkgconfig'])]) m4_pushdef([pkg_description], [pkg-config arch-independent installation directory @<:@]pkg_default[@:>@]) AC_ARG_WITH([noarch-pkgconfigdir], [AS_HELP_STRING([--with-noarch-pkgconfigdir], pkg_description)],, [with_noarch_pkgconfigdir=]pkg_default) AC_SUBST([noarch_pkgconfigdir], [$with_noarch_pkgconfigdir]) m4_popdef([pkg_default]) m4_popdef([pkg_description]) ])dnl PKG_NOARCH_INSTALLDIR dnl PKG_CHECK_VAR(VARIABLE, MODULE, CONFIG-VARIABLE, dnl [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND]) dnl ------------------------------------------- dnl Since: 0.28 dnl dnl Retrieves the value of the pkg-config variable for the given module. AC_DEFUN([PKG_CHECK_VAR], [AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl AC_ARG_VAR([$1], [value of $3 for $2, overriding pkg-config])dnl _PKG_CONFIG([$1], [variable="][$3]["], [$2]) AS_VAR_COPY([$1], [pkg_cv_][$1]) AS_VAR_IF([$1], [""], [$5], [$4])dnl ])dnl PKG_CHECK_VAR dnl PKG_WITH_MODULES(VARIABLE-PREFIX, MODULES, dnl [ACTION-IF-FOUND],[ACTION-IF-NOT-FOUND], dnl [DESCRIPTION], [DEFAULT]) dnl ------------------------------------------ dnl dnl Prepare a "--with-" configure option using the lowercase dnl [VARIABLE-PREFIX] name, merging the behaviour of AC_ARG_WITH and dnl PKG_CHECK_MODULES in a single macro. AC_DEFUN([PKG_WITH_MODULES], [ m4_pushdef([with_arg], m4_tolower([$1])) m4_pushdef([description], [m4_default([$5], [build with ]with_arg[ support])]) m4_pushdef([def_arg], [m4_default([$6], [auto])]) m4_pushdef([def_action_if_found], [AS_TR_SH([with_]with_arg)=yes]) m4_pushdef([def_action_if_not_found], [AS_TR_SH([with_]with_arg)=no]) m4_case(def_arg, [yes],[m4_pushdef([with_without], [--without-]with_arg)], [m4_pushdef([with_without],[--with-]with_arg)]) AC_ARG_WITH(with_arg, AS_HELP_STRING(with_without, description[ @<:@default=]def_arg[@:>@]),, [AS_TR_SH([with_]with_arg)=def_arg]) AS_CASE([$AS_TR_SH([with_]with_arg)], [yes],[PKG_CHECK_MODULES([$1],[$2],$3,$4)], [auto],[PKG_CHECK_MODULES([$1],[$2], [m4_n([def_action_if_found]) $3], [m4_n([def_action_if_not_found]) $4])]) m4_popdef([with_arg]) m4_popdef([description]) m4_popdef([def_arg]) ])dnl PKG_WITH_MODULES dnl PKG_HAVE_WITH_MODULES(VARIABLE-PREFIX, MODULES, dnl [DESCRIPTION], [DEFAULT]) dnl ----------------------------------------------- dnl dnl Convenience macro to trigger AM_CONDITIONAL after PKG_WITH_MODULES dnl check._[VARIABLE-PREFIX] is exported as make variable. AC_DEFUN([PKG_HAVE_WITH_MODULES], [ PKG_WITH_MODULES([$1],[$2],,,[$3],[$4]) AM_CONDITIONAL([HAVE_][$1], [test "$AS_TR_SH([with_]m4_tolower([$1]))" = "yes"]) ])dnl PKG_HAVE_WITH_MODULES dnl PKG_HAVE_DEFINE_WITH_MODULES(VARIABLE-PREFIX, MODULES, dnl [DESCRIPTION], [DEFAULT]) dnl ------------------------------------------------------ dnl dnl Convenience macro to run AM_CONDITIONAL and AC_DEFINE after dnl PKG_WITH_MODULES check. HAVE_[VARIABLE-PREFIX] is exported as make dnl and preprocessor variable. AC_DEFUN([PKG_HAVE_DEFINE_WITH_MODULES], [ PKG_HAVE_WITH_MODULES([$1],[$2],[$3],[$4]) AS_IF([test "$AS_TR_SH([with_]m4_tolower([$1]))" = "yes"], [AC_DEFINE([HAVE_][$1], 1, [Enable ]m4_tolower([$1])[ support])]) ])dnl PKG_HAVE_DEFINE_WITH_MODULES # Copyright (C) 2002-2024 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_AUTOMAKE_VERSION(VERSION) # ---------------------------- # Automake X.Y traces this macro to ensure aclocal.m4 has been # generated from the m4 files accompanying Automake X.Y. # (This private macro should not be called outside this file.) AC_DEFUN([AM_AUTOMAKE_VERSION], [am__api_version='1.17' dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to dnl require some minimum version. Point them to the right macro. m4_if([$1], [1.17], [], [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl ]) # _AM_AUTOCONF_VERSION(VERSION) # ----------------------------- # aclocal traces this macro to find the Autoconf version. # This is a private macro too. Using m4_define simplifies # the logic in aclocal, which can simply ignore this definition. m4_define([_AM_AUTOCONF_VERSION], []) # AM_SET_CURRENT_AUTOMAKE_VERSION # ------------------------------- # Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced. # This function is AC_REQUIREd by AM_INIT_AUTOMAKE. AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], [AM_AUTOMAKE_VERSION([1.17])dnl m4_ifndef([AC_AUTOCONF_VERSION], [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl _AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))]) # AM_AUX_DIR_EXPAND -*- Autoconf -*- # Copyright (C) 2001-2024 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets # $ac_aux_dir to '$srcdir/foo'. In other projects, it is set to # '$srcdir', '$srcdir/..', or '$srcdir/../..'. # # Of course, Automake must honor this variable whenever it calls a # tool from the auxiliary directory. The problem is that $srcdir (and # therefore $ac_aux_dir as well) can be either absolute or relative, # depending on how configure is run. This is pretty annoying, since # it makes $ac_aux_dir quite unusable in subdirectories: in the top # source directory, any form will work fine, but in subdirectories a # relative path needs to be adjusted first. # # $ac_aux_dir/missing # fails when called from a subdirectory if $ac_aux_dir is relative # $top_srcdir/$ac_aux_dir/missing # fails if $ac_aux_dir is absolute, # fails when called from a subdirectory in a VPATH build with # a relative $ac_aux_dir # # The reason of the latter failure is that $top_srcdir and $ac_aux_dir # are both prefixed by $srcdir. In an in-source build this is usually # harmless because $srcdir is '.', but things will broke when you # start a VPATH build or use an absolute $srcdir. # # So we could use something similar to $top_srcdir/$ac_aux_dir/missing, # iff we strip the leading $srcdir from $ac_aux_dir. That would be: # am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"` # and then we would define $MISSING as # MISSING="\${SHELL} $am_aux_dir/missing" # This will work as long as MISSING is not called from configure, because # unfortunately $(top_srcdir) has no meaning in configure. # However there are other variables, like CC, which are often used in # configure, and could therefore not use this "fixed" $ac_aux_dir. # # Another solution, used here, is to always expand $ac_aux_dir to an # absolute PATH. The drawback is that using absolute paths prevent a # configured tree to be moved without reconfiguration. AC_DEFUN([AM_AUX_DIR_EXPAND], [AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl # Expand $ac_aux_dir to an absolute path. am_aux_dir=`cd "$ac_aux_dir" && pwd` ]) # AM_CONDITIONAL -*- Autoconf -*- # Copyright (C) 1997-2024 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_CONDITIONAL(NAME, SHELL-CONDITION) # ------------------------------------- # Define a conditional. AC_DEFUN([AM_CONDITIONAL], [AC_PREREQ([2.52])dnl m4_if([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])], [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl AC_SUBST([$1_TRUE])dnl AC_SUBST([$1_FALSE])dnl _AM_SUBST_NOTMAKE([$1_TRUE])dnl _AM_SUBST_NOTMAKE([$1_FALSE])dnl m4_define([_AM_COND_VALUE_$1], [$2])dnl if $2; then $1_TRUE= $1_FALSE='#' else $1_TRUE='#' $1_FALSE= fi AC_CONFIG_COMMANDS_PRE( [if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then AC_MSG_ERROR([[conditional "$1" was never defined. Usually this means the macro was only invoked conditionally.]]) fi])]) # Copyright (C) 1999-2024 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # There are a few dirty hacks below to avoid letting 'AC_PROG_CC' be # written in clear, in which case automake, when reading aclocal.m4, # will think it sees a *use*, and therefore will trigger all it's # C support machinery. Also note that it means that autoscan, seeing # CC etc. in the Makefile, will ask for an AC_PROG_CC use... # _AM_DEPENDENCIES(NAME) # ---------------------- # See how the compiler implements dependency checking. # NAME is "CC", "CXX", "OBJC", "OBJCXX", "UPC", or "GJC". # We try a few techniques and use that to set a single cache variable. # # We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was # modified to invoke _AM_DEPENDENCIES(CC); we would have a circular # dependency, and given that the user is not expected to run this macro, # just rely on AC_PROG_CC. AC_DEFUN([_AM_DEPENDENCIES], [AC_REQUIRE([AM_SET_DEPDIR])dnl AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl AC_REQUIRE([AM_MAKE_INCLUDE])dnl AC_REQUIRE([AM_DEP_TRACK])dnl m4_if([$1], [CC], [depcc="$CC" am_compiler_list=], [$1], [CXX], [depcc="$CXX" am_compiler_list=], [$1], [OBJC], [depcc="$OBJC" am_compiler_list='gcc3 gcc'], [$1], [OBJCXX], [depcc="$OBJCXX" am_compiler_list='gcc3 gcc'], [$1], [UPC], [depcc="$UPC" am_compiler_list=], [$1], [GCJ], [depcc="$GCJ" am_compiler_list='gcc3 gcc'], [depcc="$$1" am_compiler_list=]) AC_CACHE_CHECK([dependency style of $depcc], [am_cv_$1_dependencies_compiler_type], [if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For # instance it was reported that on HP-UX the gcc test will end up # making a dummy file named 'D' -- because '-MD' means "put the output # in D". rm -rf conftest.dir mkdir conftest.dir # Copy depcomp to subdir because otherwise we won't find it if we're # using a relative directory. cp "$am_depcomp" conftest.dir cd conftest.dir # We will build objects and dependencies in a subdirectory because # it helps to detect inapplicable dependency modes. For instance # both Tru64's cc and ICC support -MD to output dependencies as a # side effect of compilation, but ICC will put the dependencies in # the current directory while Tru64 will put them in the object # directory. mkdir sub am_cv_$1_dependencies_compiler_type=none if test "$am_compiler_list" = ""; then am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp` fi am__universal=false m4_case([$1], [CC], [case " $depcc " in #( *\ -arch\ *\ -arch\ *) am__universal=true ;; esac], [CXX], [case " $depcc " in #( *\ -arch\ *\ -arch\ *) am__universal=true ;; esac]) for depmode in $am_compiler_list; do # Setup a source with many dependencies, because some compilers # like to wrap large dependency lists on column 80 (with \), and # we should not choose a depcomp mode which is confused by this. # # We need to recreate these files for each test, as the compiler may # overwrite some of them when testing with obscure command lines. # This happens at least with the AIX C compiler. : > sub/conftest.c for i in 1 2 3 4 5 6; do echo '#include "conftst'$i'.h"' >> sub/conftest.c # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with # Solaris 10 /bin/sh. echo '/* dummy */' > sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf # We check with '-c' and '-o' for the sake of the "dashmstdout" # mode. It turns out that the SunPro C++ compiler does not properly # handle '-M -o', and we need to detect this. Also, some Intel # versions had trouble with output in subdirs. am__obj=sub/conftest.${OBJEXT-o} am__minus_obj="-o $am__obj" case $depmode in gcc) # This depmode causes a compiler race in universal mode. test "$am__universal" = false || continue ;; nosideeffect) # After this tag, mechanisms are not by side-effect, so they'll # only be used when explicitly requested. if test "x$enable_dependency_tracking" = xyes; then continue else break fi ;; msvc7 | msvc7msys | msvisualcpp | msvcmsys) # This compiler won't grok '-c -o', but also, the minuso test has # not run yet. These depmodes are late enough in the game, and # so weak that their functioning should not be impacted. am__obj=conftest.${OBJEXT-o} am__minus_obj= ;; none) break ;; esac if depmode=$depmode \ source=sub/conftest.c object=$am__obj \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ >/dev/null 2>conftest.err && grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && grep $am__obj sub/conftest.Po > /dev/null 2>&1 && ${MAKE-make} -s -f confmf > /dev/null 2>&1; then # icc doesn't choke on unknown options, it will just issue warnings # or remarks (even with -Werror). So we grep stderr for any message # that says an option was ignored or not supported. # When given -MP, icc 7.0 and 7.1 complain thus: # icc: Command line warning: ignoring option '-M'; no argument required # The diagnosis changed in icc 8.0: # icc: Command line remark: option '-MP' not supported if (grep 'ignoring option' conftest.err || grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else am_cv_$1_dependencies_compiler_type=$depmode break fi fi done cd .. rm -rf conftest.dir else am_cv_$1_dependencies_compiler_type=none fi ]) AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type]) AM_CONDITIONAL([am__fastdep$1], [ test "x$enable_dependency_tracking" != xno \ && test "$am_cv_$1_dependencies_compiler_type" = gcc3]) ]) # AM_SET_DEPDIR # ------------- # Choose a directory name for dependency files. # This macro is AC_REQUIREd in _AM_DEPENDENCIES. AC_DEFUN([AM_SET_DEPDIR], [AC_REQUIRE([AM_SET_LEADING_DOT])dnl AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl ]) # AM_DEP_TRACK # ------------ AC_DEFUN([AM_DEP_TRACK], [AC_ARG_ENABLE([dependency-tracking], [dnl AS_HELP_STRING( [--enable-dependency-tracking], [do not reject slow dependency extractors]) AS_HELP_STRING( [--disable-dependency-tracking], [speeds up one-time build])]) if test "x$enable_dependency_tracking" != xno; then am_depcomp="$ac_aux_dir/depcomp" AMDEPBACKSLASH='\' am__nodep='_no' fi AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno]) AC_SUBST([AMDEPBACKSLASH])dnl _AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl AC_SUBST([am__nodep])dnl _AM_SUBST_NOTMAKE([am__nodep])dnl ]) # Generate code to set up dependency tracking. -*- Autoconf -*- # Copyright (C) 1999-2024 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # _AM_OUTPUT_DEPENDENCY_COMMANDS # ------------------------------ AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS], [{ # Older Autoconf quotes --file arguments for eval, but not when files # are listed without --file. Let's play safe and only enable the eval # if we detect the quoting. # TODO: see whether this extra hack can be removed once we start # requiring Autoconf 2.70 or later. AS_CASE([$CONFIG_FILES], [*\'*], [eval set x "$CONFIG_FILES"], [*], [set x $CONFIG_FILES]) shift # Used to flag and report bootstrapping failures. am_rc=0 for am_mf do # Strip MF so we end up with the name of the file. am_mf=`AS_ECHO(["$am_mf"]) | sed -e 's/:.*$//'` # Check whether this is an Automake generated Makefile which includes # dependency-tracking related rules and includes. # Grep'ing the whole file directly is not great: AIX grep has a line # limit of 2048, but all sed's we know have understand at least 4000. sed -n 's,^am--depfiles:.*,X,p' "$am_mf" | grep X >/dev/null 2>&1 \ || continue am_dirpart=`AS_DIRNAME(["$am_mf"])` am_filepart=`AS_BASENAME(["$am_mf"])` AM_RUN_LOG([cd "$am_dirpart" \ && sed -e '/# am--include-marker/d' "$am_filepart" \ | $MAKE -f - am--depfiles]) || am_rc=$? done if test $am_rc -ne 0; then AC_MSG_FAILURE([Something went wrong bootstrapping makefile fragments for automatic dependency tracking. If GNU make was not used, consider re-running the configure script with MAKE="gmake" (or whatever is necessary). You can also try re-running configure with the '--disable-dependency-tracking' option to at least be able to build the package (albeit without support for automatic dependency tracking).]) fi AS_UNSET([am_dirpart]) AS_UNSET([am_filepart]) AS_UNSET([am_mf]) AS_UNSET([am_rc]) rm -f conftest-deps.mk } ])# _AM_OUTPUT_DEPENDENCY_COMMANDS # AM_OUTPUT_DEPENDENCY_COMMANDS # ----------------------------- # This macro should only be invoked once -- use via AC_REQUIRE. # # This code is only required when automatic dependency tracking is enabled. # This creates each '.Po' and '.Plo' makefile fragment that we'll need in # order to bootstrap the dependency handling code. AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS], [AC_CONFIG_COMMANDS([depfiles], [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS], [AMDEP_TRUE="$AMDEP_TRUE" MAKE="${MAKE-make}"])]) # Do all the work for Automake. -*- Autoconf -*- # Copyright (C) 1996-2024 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This macro actually does too much. Some checks are only needed if # your package does certain things. But this isn't really a big deal. dnl Redefine AC_PROG_CC to automatically invoke _AM_PROG_CC_C_O. m4_define([AC_PROG_CC], m4_defn([AC_PROG_CC]) [_AM_PROG_CC_C_O ]) # AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE]) # AM_INIT_AUTOMAKE([OPTIONS]) # ----------------------------------------------- # The call with PACKAGE and VERSION arguments is the old style # call (pre autoconf-2.50), which is being phased out. PACKAGE # and VERSION should now be passed to AC_INIT and removed from # the call to AM_INIT_AUTOMAKE. # We support both call styles for the transition. After # the next Automake release, Autoconf can make the AC_INIT # arguments mandatory, and then we can depend on a new Autoconf # release and drop the old call support. AC_DEFUN([AM_INIT_AUTOMAKE], [AC_PREREQ([2.65])dnl m4_ifdef([_$0_ALREADY_INIT], [m4_fatal([$0 expanded multiple times ]m4_defn([_$0_ALREADY_INIT]))], [m4_define([_$0_ALREADY_INIT], m4_expansion_stack)])dnl dnl Autoconf wants to disallow AM_ names. We explicitly allow dnl the ones we care about. m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl AC_REQUIRE([AC_PROG_INSTALL])dnl if test "`cd $srcdir && pwd`" != "`pwd`"; then # Use -I$(srcdir) only when $(srcdir) != ., so that make's output # is not polluted with repeated "-I." AC_SUBST([am__isrc], [' -I$(srcdir)'])_AM_SUBST_NOTMAKE([am__isrc])dnl # test to see if srcdir already configured if test -f $srcdir/config.status; then AC_MSG_ERROR([source directory already configured; run "make distclean" there first]) fi fi # test whether we have cygpath if test -z "$CYGPATH_W"; then if (cygpath --version) >/dev/null 2>/dev/null; then CYGPATH_W='cygpath -w' else CYGPATH_W=echo fi fi AC_SUBST([CYGPATH_W]) # Define the identity of the package. dnl Distinguish between old-style and new-style calls. m4_ifval([$2], [AC_DIAGNOSE([obsolete], [$0: two- and three-arguments forms are deprecated.]) m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl AC_SUBST([PACKAGE], [$1])dnl AC_SUBST([VERSION], [$2])], [_AM_SET_OPTIONS([$1])dnl dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT. m4_if( m4_ifset([AC_PACKAGE_NAME], [ok]):m4_ifset([AC_PACKAGE_VERSION], [ok]), [ok:ok],, [m4_fatal([AC_INIT should be called with package and version arguments])])dnl AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl _AM_IF_OPTION([no-define],, [AC_DEFINE_UNQUOTED([PACKAGE], ["$PACKAGE"], [Name of package]) AC_DEFINE_UNQUOTED([VERSION], ["$VERSION"], [Version number of package])])dnl # Some tools Automake needs. AC_REQUIRE([AM_SANITY_CHECK])dnl AC_REQUIRE([AC_ARG_PROGRAM])dnl AM_MISSING_PROG([ACLOCAL], [aclocal-${am__api_version}]) AM_MISSING_PROG([AUTOCONF], [autoconf]) AM_MISSING_PROG([AUTOMAKE], [automake-${am__api_version}]) AM_MISSING_PROG([AUTOHEADER], [autoheader]) AM_MISSING_PROG([MAKEINFO], [makeinfo]) AC_REQUIRE([AM_PROG_INSTALL_SH])dnl AC_REQUIRE([AM_PROG_INSTALL_STRIP])dnl AC_REQUIRE([AC_PROG_MKDIR_P])dnl # For better backward compatibility. To be removed once Automake 1.9.x # dies out for good. For more background, see: # # AC_SUBST([mkdir_p], ['$(MKDIR_P)']) # We need awk for the "check" target (and possibly the TAP driver). The # system "awk" is bad on some platforms. AC_REQUIRE([AC_PROG_AWK])dnl AC_REQUIRE([AC_PROG_MAKE_SET])dnl AC_REQUIRE([AM_SET_LEADING_DOT])dnl _AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])], [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])], [_AM_PROG_TAR([v7])])]) _AM_IF_OPTION([no-dependencies],, [AC_PROVIDE_IFELSE([AC_PROG_CC], [_AM_DEPENDENCIES([CC])], [m4_define([AC_PROG_CC], m4_defn([AC_PROG_CC])[_AM_DEPENDENCIES([CC])])])dnl AC_PROVIDE_IFELSE([AC_PROG_CXX], [_AM_DEPENDENCIES([CXX])], [m4_define([AC_PROG_CXX], m4_defn([AC_PROG_CXX])[_AM_DEPENDENCIES([CXX])])])dnl AC_PROVIDE_IFELSE([AC_PROG_OBJC], [_AM_DEPENDENCIES([OBJC])], [m4_define([AC_PROG_OBJC], m4_defn([AC_PROG_OBJC])[_AM_DEPENDENCIES([OBJC])])])dnl AC_PROVIDE_IFELSE([AC_PROG_OBJCXX], [_AM_DEPENDENCIES([OBJCXX])], [m4_define([AC_PROG_OBJCXX], m4_defn([AC_PROG_OBJCXX])[_AM_DEPENDENCIES([OBJCXX])])])dnl ]) # Variables for tags utilities; see am/tags.am if test -z "$CTAGS"; then CTAGS=ctags fi AC_SUBST([CTAGS]) if test -z "$ETAGS"; then ETAGS=etags fi AC_SUBST([ETAGS]) if test -z "$CSCOPE"; then CSCOPE=cscope fi AC_SUBST([CSCOPE]) AC_REQUIRE([_AM_SILENT_RULES])dnl dnl The testsuite driver may need to know about EXEEXT, so add the dnl 'am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen. This dnl macro is hooked onto _AC_COMPILER_EXEEXT early, see below. AC_CONFIG_COMMANDS_PRE(dnl [m4_provide_if([_AM_COMPILER_EXEEXT], [AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl AC_REQUIRE([_AM_PROG_RM_F]) AC_REQUIRE([_AM_PROG_XARGS_N]) dnl The trailing newline in this macro's definition is deliberate, for dnl backward compatibility and to allow trailing 'dnl'-style comments dnl after the AM_INIT_AUTOMAKE invocation. See automake bug#16841. ]) dnl Hook into '_AC_COMPILER_EXEEXT' early to learn its expansion. Do not dnl add the conditional right here, as _AC_COMPILER_EXEEXT may be further dnl mangled by Autoconf and run in a shell conditional statement. m4_define([_AC_COMPILER_EXEEXT], m4_defn([_AC_COMPILER_EXEEXT])[m4_provide([_AM_COMPILER_EXEEXT])]) # When config.status generates a header, we must update the stamp-h file. # This file resides in the same directory as the config header # that is generated. The stamp files are numbered to have different names. # Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the # loop where config.status creates the headers, so we can generate # our stamp files there. AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK], [# Compute $1's index in $config_headers. _am_arg=$1 _am_stamp_count=1 for _am_header in $config_headers :; do case $_am_header in $_am_arg | $_am_arg:* ) break ;; * ) _am_stamp_count=`expr $_am_stamp_count + 1` ;; esac done echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count]) # Copyright (C) 2001-2024 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_PROG_INSTALL_SH # ------------------ # Define $install_sh. AC_DEFUN([AM_PROG_INSTALL_SH], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl if test x"${install_sh+set}" != xset; then case $am_aux_dir in *\ * | *\ *) install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; *) install_sh="\${SHELL} $am_aux_dir/install-sh" esac fi AC_SUBST([install_sh])]) # Copyright (C) 2003-2024 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # Check whether the underlying file-system supports filenames # with a leading dot. For instance MS-DOS doesn't. AC_DEFUN([AM_SET_LEADING_DOT], [rm -rf .tst 2>/dev/null mkdir .tst 2>/dev/null if test -d .tst; then am__leading_dot=. else am__leading_dot=_ fi rmdir .tst 2>/dev/null AC_SUBST([am__leading_dot])]) # Add --enable-maintainer-mode option to configure. -*- Autoconf -*- # From Jim Meyering # Copyright (C) 1996-2024 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_MAINTAINER_MODE([DEFAULT-MODE]) # ---------------------------------- # Control maintainer-specific portions of Makefiles. # Default is to disable them, unless 'enable' is passed literally. # For symmetry, 'disable' may be passed as well. Anyway, the user # can override the default with the --enable/--disable switch. AC_DEFUN([AM_MAINTAINER_MODE], [m4_case(m4_default([$1], [disable]), [enable], [m4_define([am_maintainer_other], [disable])], [disable], [m4_define([am_maintainer_other], [enable])], [m4_define([am_maintainer_other], [enable]) m4_warn([syntax], [unexpected argument to AM@&t@_MAINTAINER_MODE: $1])]) AC_MSG_CHECKING([whether to enable maintainer-specific portions of Makefiles]) dnl maintainer-mode's default is 'disable' unless 'enable' is passed AC_ARG_ENABLE([maintainer-mode], [AS_HELP_STRING([--]am_maintainer_other[-maintainer-mode], am_maintainer_other[ make rules and dependencies not useful (and sometimes confusing) to the casual installer])], [USE_MAINTAINER_MODE=$enableval], [USE_MAINTAINER_MODE=]m4_if(am_maintainer_other, [enable], [no], [yes])) AC_MSG_RESULT([$USE_MAINTAINER_MODE]) AM_CONDITIONAL([MAINTAINER_MODE], [test $USE_MAINTAINER_MODE = yes]) MAINT=$MAINTAINER_MODE_TRUE AC_SUBST([MAINT])dnl ] ) # Check to see how 'make' treats includes. -*- Autoconf -*- # Copyright (C) 2001-2024 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_MAKE_INCLUDE() # ----------------- # Check whether make has an 'include' directive that can support all # the idioms we need for our automatic dependency tracking code. AC_DEFUN([AM_MAKE_INCLUDE], [AC_MSG_CHECKING([whether ${MAKE-make} supports the include directive]) cat > confinc.mk << 'END' am__doit: @echo this is the am__doit target >confinc.out .PHONY: am__doit END am__include="#" am__quote= # BSD make does it like this. echo '.include "confinc.mk" # ignored' > confmf.BSD # Other make implementations (GNU, Solaris 10, AIX) do it like this. echo 'include confinc.mk # ignored' > confmf.GNU _am_result=no for s in GNU BSD; do AM_RUN_LOG([${MAKE-make} -f confmf.$s && cat confinc.out]) AS_CASE([$?:`cat confinc.out 2>/dev/null`], ['0:this is the am__doit target'], [AS_CASE([$s], [BSD], [am__include='.include' am__quote='"'], [am__include='include' am__quote=''])]) if test "$am__include" != "#"; then _am_result="yes ($s style)" break fi done rm -f confinc.* confmf.* AC_MSG_RESULT([${_am_result}]) AC_SUBST([am__include])]) AC_SUBST([am__quote])]) # Fake the existence of programs that GNU maintainers use. -*- Autoconf -*- # Copyright (C) 1997-2024 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_MISSING_PROG(NAME, PROGRAM) # ------------------------------ AC_DEFUN([AM_MISSING_PROG], [AC_REQUIRE([AM_MISSING_HAS_RUN]) $1=${$1-"${am_missing_run}$2"} AC_SUBST($1)]) # AM_MISSING_HAS_RUN # ------------------ # Define MISSING if not defined so far and test if it is modern enough. # If it is, set am_missing_run to use it, otherwise, to nothing. AC_DEFUN([AM_MISSING_HAS_RUN], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl AC_REQUIRE_AUX_FILE([missing])dnl if test x"${MISSING+set}" != xset; then MISSING="\${SHELL} '$am_aux_dir/missing'" fi # Use eval to expand $SHELL if eval "$MISSING --is-lightweight"; then am_missing_run="$MISSING " else am_missing_run= AC_MSG_WARN(['missing' script is too old or missing]) fi ]) # Helper functions for option handling. -*- Autoconf -*- # Copyright (C) 2001-2024 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # _AM_MANGLE_OPTION(NAME) # ----------------------- AC_DEFUN([_AM_MANGLE_OPTION], [[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])]) # _AM_SET_OPTION(NAME) # -------------------- # Set option NAME. Presently that only means defining a flag for this option. AC_DEFUN([_AM_SET_OPTION], [m4_define(_AM_MANGLE_OPTION([$1]), [1])]) # _AM_SET_OPTIONS(OPTIONS) # ------------------------ # OPTIONS is a space-separated list of Automake options. AC_DEFUN([_AM_SET_OPTIONS], [m4_foreach_w([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])]) # _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET]) # ------------------------------------------- # Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. AC_DEFUN([_AM_IF_OPTION], [m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])]) # Copyright (C) 1999-2024 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # _AM_PROG_CC_C_O # --------------- # Like AC_PROG_CC_C_O, but changed for automake. We rewrite AC_PROG_CC # to automatically call this. AC_DEFUN([_AM_PROG_CC_C_O], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl AC_REQUIRE_AUX_FILE([compile])dnl AC_LANG_PUSH([C])dnl AC_CACHE_CHECK( [whether $CC understands -c and -o together], [am_cv_prog_cc_c_o], [AC_LANG_CONFTEST([AC_LANG_PROGRAM([])]) # Make sure it works both with $CC and with simple cc. # Following AC_PROG_CC_C_O, we do the test twice because some # compilers refuse to overwrite an existing .o file with -o, # though they will create one. am_cv_prog_cc_c_o=yes for am_i in 1 2; do if AM_RUN_LOG([$CC -c conftest.$ac_ext -o conftest2.$ac_objext]) \ && test -f conftest2.$ac_objext; then : OK else am_cv_prog_cc_c_o=no break fi done rm -f core conftest* unset am_i]) if test "$am_cv_prog_cc_c_o" != yes; then # Losing compiler, so override with the script. # FIXME: It is wrong to rewrite CC. # But if we don't then we get into trouble of one sort or another. # A longer-term fix would be to have automake use am__CC in this case, # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" CC="$am_aux_dir/compile $CC" fi AC_LANG_POP([C])]) # For backward compatibility. AC_DEFUN_ONCE([AM_PROG_CC_C_O], [AC_REQUIRE([AC_PROG_CC])]) # Copyright (C) 2022-2024 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # _AM_PROG_RM_F # --------------- # Check whether 'rm -f' without any arguments works. # https://bugs.gnu.org/10828 AC_DEFUN([_AM_PROG_RM_F], [am__rm_f_notfound= AS_IF([(rm -f && rm -fr && rm -rf) 2>/dev/null], [], [am__rm_f_notfound='""']) AC_SUBST(am__rm_f_notfound) ]) # Copyright (C) 2001-2024 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_RUN_LOG(COMMAND) # ------------------- # Run COMMAND, save the exit status in ac_status, and log it. # (This has been adapted from Autoconf's _AC_RUN_LOG macro.) AC_DEFUN([AM_RUN_LOG], [{ echo "$as_me:$LINENO: $1" >&AS_MESSAGE_LOG_FD ($1) >&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD (exit $ac_status); }]) # Check to make sure that the build environment is sane. -*- Autoconf -*- # Copyright (C) 1996-2024 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # _AM_SLEEP_FRACTIONAL_SECONDS # ---------------------------- AC_DEFUN([_AM_SLEEP_FRACTIONAL_SECONDS], [dnl AC_CACHE_CHECK([whether sleep supports fractional seconds], am_cv_sleep_fractional_seconds, [dnl AS_IF([sleep 0.001 2>/dev/null], [am_cv_sleep_fractional_seconds=yes], [am_cv_sleep_fractional_seconds=no]) ])]) # _AM_FILESYSTEM_TIMESTAMP_RESOLUTION # ----------------------------------- # Determine the filesystem's resolution for file modification # timestamps. The coarsest we know of is FAT, with a resolution # of only two seconds, even with the most recent "exFAT" extensions. # The finest (e.g. ext4 with large inodes, XFS, ZFS) is one # nanosecond, matching clock_gettime. However, it is probably not # possible to delay execution of a shell script for less than one # millisecond, due to process creation overhead and scheduling # granularity, so we don't check for anything finer than that. (See below.) AC_DEFUN([_AM_FILESYSTEM_TIMESTAMP_RESOLUTION], [dnl AC_REQUIRE([_AM_SLEEP_FRACTIONAL_SECONDS]) AC_CACHE_CHECK([filesystem timestamp resolution], am_cv_filesystem_timestamp_resolution, [dnl # Default to the worst case. am_cv_filesystem_timestamp_resolution=2 # Only try to go finer than 1 sec if sleep can do it. # Don't try 1 sec, because if 0.01 sec and 0.1 sec don't work, # - 1 sec is not much of a win compared to 2 sec, and # - it takes 2 seconds to perform the test whether 1 sec works. # # Instead, just use the default 2s on platforms that have 1s resolution, # accept the extra 1s delay when using $sleep in the Automake tests, in # exchange for not incurring the 2s delay for running the test for all # packages. # am_try_resolutions= if test "$am_cv_sleep_fractional_seconds" = yes; then # Even a millisecond often causes a bunch of false positives, # so just try a hundredth of a second. The time saved between .001 and # .01 is not terribly consequential. am_try_resolutions="0.01 0.1 $am_try_resolutions" fi # In order to catch current-generation FAT out, we must *modify* files # that already exist; the *creation* timestamp is finer. Use names # that make ls -t sort them differently when they have equal # timestamps than when they have distinct timestamps, keeping # in mind that ls -t prints the *newest* file first. rm -f conftest.ts? : > conftest.ts1 : > conftest.ts2 : > conftest.ts3 # Make sure ls -t actually works. Do 'set' in a subshell so we don't # clobber the current shell's arguments. (Outer-level square brackets # are removed by m4; they're present so that m4 does not expand # ; be careful, easy to get confused.) if ( set X `[ls -t conftest.ts[12]]` && { test "$[]*" != "X conftest.ts1 conftest.ts2" || test "$[]*" != "X conftest.ts2 conftest.ts1"; } ); then :; else # If neither matched, then we have a broken ls. This can happen # if, for instance, CONFIG_SHELL is bash and it inherits a # broken ls alias from the environment. This has actually # happened. Such a system could not be considered "sane". _AS_ECHO_UNQUOTED( ["Bad output from ls -t: \"`[ls -t conftest.ts[12]]`\""], [AS_MESSAGE_LOG_FD]) AC_MSG_FAILURE([ls -t produces unexpected output. Make sure there is not a broken ls alias in your environment.]) fi for am_try_res in $am_try_resolutions; do # Any one fine-grained sleep might happen to cross the boundary # between two values of a coarser actual resolution, but if we do # two fine-grained sleeps in a row, at least one of them will fall # entirely within a coarse interval. echo alpha > conftest.ts1 sleep $am_try_res echo beta > conftest.ts2 sleep $am_try_res echo gamma > conftest.ts3 # We assume that 'ls -t' will make use of high-resolution # timestamps if the operating system supports them at all. if (set X `ls -t conftest.ts?` && test "$[]2" = conftest.ts3 && test "$[]3" = conftest.ts2 && test "$[]4" = conftest.ts1); then # # Ok, ls -t worked. If we're at a resolution of 1 second, we're done, # because we don't need to test make. make_ok=true if test $am_try_res != 1; then # But if we've succeeded so far with a subsecond resolution, we # have one more thing to check: make. It can happen that # everything else supports the subsecond mtimes, but make doesn't; # notably on macOS, which ships make 3.81 from 2006 (the last one # released under GPLv2). https://bugs.gnu.org/68808 # # We test $MAKE if it is defined in the environment, else "make". # It might get overridden later, but our hope is that in practice # it does not matter: it is the system "make" which is (by far) # the most likely to be broken, whereas if the user overrides it, # probably they did so with a better, or at least not worse, make. # https://lists.gnu.org/archive/html/automake/2024-06/msg00051.html # # Create a Makefile (real tab character here): rm -f conftest.mk echo 'conftest.ts1: conftest.ts2' >conftest.mk echo ' touch conftest.ts2' >>conftest.mk # # Now, running # touch conftest.ts1; touch conftest.ts2; make # should touch ts1 because ts2 is newer. This could happen by luck, # but most often, it will fail if make's support is insufficient. So # test for several consecutive successes. # # (We reuse conftest.ts[12] because we still want to modify existing # files, not create new ones, per above.) n=0 make=${MAKE-make} until test $n -eq 3; do echo one > conftest.ts1 sleep $am_try_res echo two > conftest.ts2 # ts2 should now be newer than ts1 if $make -f conftest.mk | grep 'up to date' >/dev/null; then make_ok=false break # out of $n loop fi n=`expr $n + 1` done fi # if $make_ok; then # Everything we know to check worked out, so call this resolution good. am_cv_filesystem_timestamp_resolution=$am_try_res break # out of $am_try_res loop fi # Otherwise, we'll go on to check the next resolution. fi done rm -f conftest.ts? # (end _am_filesystem_timestamp_resolution) ])]) # AM_SANITY_CHECK # --------------- AC_DEFUN([AM_SANITY_CHECK], [AC_REQUIRE([_AM_FILESYSTEM_TIMESTAMP_RESOLUTION]) # This check should not be cached, as it may vary across builds of # different projects. AC_MSG_CHECKING([whether build environment is sane]) # Reject unsafe characters in $srcdir or the absolute working directory # name. Accept space and tab only in the latter. am_lf=' ' case `pwd` in *[[\\\"\#\$\&\'\`$am_lf]]*) AC_MSG_ERROR([unsafe absolute working directory name]);; esac case $srcdir in *[[\\\"\#\$\&\'\`$am_lf\ \ ]]*) AC_MSG_ERROR([unsafe srcdir value: '$srcdir']);; esac # Do 'set' in a subshell so we don't clobber the current shell's # arguments. Must try -L first in case configure is actually a # symlink; some systems play weird games with the mod time of symlinks # (eg FreeBSD returns the mod time of the symlink's containing # directory). am_build_env_is_sane=no am_has_slept=no rm -f conftest.file for am_try in 1 2; do echo "timestamp, slept: $am_has_slept" > conftest.file if ( set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` if test "$[]*" = "X"; then # -L didn't work. set X `ls -t "$srcdir/configure" conftest.file` fi test "$[]2" = conftest.file ); then am_build_env_is_sane=yes break fi # Just in case. sleep "$am_cv_filesystem_timestamp_resolution" am_has_slept=yes done AC_MSG_RESULT([$am_build_env_is_sane]) if test "$am_build_env_is_sane" = no; then AC_MSG_ERROR([newly created file is older than distributed files! Check your system clock]) fi # If we didn't sleep, we still need to ensure time stamps of config.status and # generated files are strictly newer. am_sleep_pid= AS_IF([test -e conftest.file || grep 'slept: no' conftest.file >/dev/null 2>&1],, [dnl ( sleep "$am_cv_filesystem_timestamp_resolution" ) & am_sleep_pid=$! ]) AC_CONFIG_COMMANDS_PRE( [AC_MSG_CHECKING([that generated files are newer than configure]) if test -n "$am_sleep_pid"; then # Hide warnings about reused PIDs. wait $am_sleep_pid 2>/dev/null fi AC_MSG_RESULT([done])]) rm -f conftest.file ]) # Copyright (C) 2009-2024 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # _AM_SILENT_RULES # ---------------- # Enable less verbose build rules support. AC_DEFUN([_AM_SILENT_RULES], [AM_DEFAULT_VERBOSITY=1 AC_ARG_ENABLE([silent-rules], [dnl AS_HELP_STRING( [--enable-silent-rules], [less verbose build output (undo: "make V=1")]) AS_HELP_STRING( [--disable-silent-rules], [verbose build output (undo: "make V=0")])dnl ]) dnl dnl A few 'make' implementations (e.g., NonStop OS and NextStep) dnl do not support nested variable expansions. dnl See automake bug#9928 and bug#10237. am_make=${MAKE-make} AC_CACHE_CHECK([whether $am_make supports nested variables], [am_cv_make_support_nested_variables], [if AS_ECHO([['TRUE=$(BAR$(V)) BAR0=false BAR1=true V=1 am__doit: @$(TRUE) .PHONY: am__doit']]) | $am_make -f - >/dev/null 2>&1; then am_cv_make_support_nested_variables=yes else am_cv_make_support_nested_variables=no fi]) AC_SUBST([AM_V])dnl AM_SUBST_NOTMAKE([AM_V])dnl AC_SUBST([AM_DEFAULT_V])dnl AM_SUBST_NOTMAKE([AM_DEFAULT_V])dnl AC_SUBST([AM_DEFAULT_VERBOSITY])dnl AM_BACKSLASH='\' AC_SUBST([AM_BACKSLASH])dnl _AM_SUBST_NOTMAKE([AM_BACKSLASH])dnl dnl Delay evaluation of AM_DEFAULT_VERBOSITY to the end to allow multiple calls dnl to AM_SILENT_RULES to change the default value. AC_CONFIG_COMMANDS_PRE([dnl case $enable_silent_rules in @%:@ ((( yes) AM_DEFAULT_VERBOSITY=0;; no) AM_DEFAULT_VERBOSITY=1;; esac if test $am_cv_make_support_nested_variables = yes; then dnl Using '$V' instead of '$(V)' breaks IRIX make. AM_V='$(V)' AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' else AM_V=$AM_DEFAULT_VERBOSITY AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY fi ])dnl ]) # AM_SILENT_RULES([DEFAULT]) # -------------------------- # Set the default verbosity level to DEFAULT ("yes" being less verbose, "no" or # empty being verbose). AC_DEFUN([AM_SILENT_RULES], [AC_REQUIRE([_AM_SILENT_RULES]) AM_DEFAULT_VERBOSITY=m4_if([$1], [yes], [0], [1])]) # Copyright (C) 2001-2024 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_PROG_INSTALL_STRIP # --------------------- # One issue with vendor 'install' (even GNU) is that you can't # specify the program used to strip binaries. This is especially # annoying in cross-compiling environments, where the build's strip # is unlikely to handle the host's binaries. # Fortunately install-sh will honor a STRIPPROG variable, so we # always use install-sh in "make install-strip", and initialize # STRIPPROG with the value of the STRIP variable (set by the user). AC_DEFUN([AM_PROG_INSTALL_STRIP], [AC_REQUIRE([AM_PROG_INSTALL_SH])dnl # Installed binaries are usually stripped using 'strip' when the user # run "make install-strip". However 'strip' might not be the right # tool to use in cross-compilation environments, therefore Automake # will honor the 'STRIP' environment variable to overrule this program. dnl Don't test for $cross_compiling = yes, because it might be 'maybe'. if test "$cross_compiling" != no; then AC_CHECK_TOOL([STRIP], [strip], :) fi INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" AC_SUBST([INSTALL_STRIP_PROGRAM])]) # Copyright (C) 2006-2024 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # _AM_SUBST_NOTMAKE(VARIABLE) # --------------------------- # Prevent Automake from outputting VARIABLE = @VARIABLE@ in Makefile.in. # This macro is traced by Automake. AC_DEFUN([_AM_SUBST_NOTMAKE]) # AM_SUBST_NOTMAKE(VARIABLE) # -------------------------- # Public sister of _AM_SUBST_NOTMAKE. AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)]) # Check how to create a tarball. -*- Autoconf -*- # Copyright (C) 2004-2024 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # _AM_PROG_TAR(FORMAT) # -------------------- # Check how to create a tarball in format FORMAT. # FORMAT should be one of 'v7', 'ustar', or 'pax'. # # Substitute a variable $(am__tar) that is a command # writing to stdout a FORMAT-tarball containing the directory # $tardir. # tardir=directory && $(am__tar) > result.tar # # Substitute a variable $(am__untar) that extract such # a tarball read from stdin. # $(am__untar) < result.tar # AC_DEFUN([_AM_PROG_TAR], [# Always define AMTAR for backward compatibility. Yes, it's still used # in the wild :-( We should find a proper way to deprecate it ... AC_SUBST([AMTAR], ['$${TAR-tar}']) # We'll loop over all known methods to create a tar archive until one works. _am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none' m4_if([$1], [v7], [am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'], [m4_case([$1], [ustar], [# The POSIX 1988 'ustar' format is defined with fixed-size fields. # There is notably a 21 bits limit for the UID and the GID. In fact, # the 'pax' utility can hang on bigger UID/GID (see automake bug#8343 # and bug#13588). am_max_uid=2097151 # 2^21 - 1 am_max_gid=$am_max_uid # The $UID and $GID variables are not portable, so we need to resort # to the POSIX-mandated id(1) utility. Errors in the 'id' calls # below are definitely unexpected, so allow the users to see them # (that is, avoid stderr redirection). am_uid=`id -u || echo unknown` am_gid=`id -g || echo unknown` AC_MSG_CHECKING([whether UID '$am_uid' is supported by ustar format]) if test x$am_uid = xunknown; then AC_MSG_WARN([ancient id detected; assuming current UID is ok, but dist-ustar might not work]) elif test $am_uid -le $am_max_uid; then AC_MSG_RESULT([yes]) else AC_MSG_RESULT([no]) _am_tools=none fi AC_MSG_CHECKING([whether GID '$am_gid' is supported by ustar format]) if test x$gm_gid = xunknown; then AC_MSG_WARN([ancient id detected; assuming current GID is ok, but dist-ustar might not work]) elif test $am_gid -le $am_max_gid; then AC_MSG_RESULT([yes]) else AC_MSG_RESULT([no]) _am_tools=none fi], [pax], [], [m4_fatal([Unknown tar format])]) AC_MSG_CHECKING([how to create a $1 tar archive]) # Go ahead even if we have the value already cached. We do so because we # need to set the values for the 'am__tar' and 'am__untar' variables. _am_tools=${am_cv_prog_tar_$1-$_am_tools} for _am_tool in $_am_tools; do case $_am_tool in gnutar) for _am_tar in tar gnutar gtar; do AM_RUN_LOG([$_am_tar --version]) && break done am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"' am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"' am__untar="$_am_tar -xf -" ;; plaintar) # Must skip GNU tar: if it does not support --format= it doesn't create # ustar tarball either. (tar --version) >/dev/null 2>&1 && continue am__tar='tar chf - "$$tardir"' am__tar_='tar chf - "$tardir"' am__untar='tar xf -' ;; pax) am__tar='pax -L -x $1 -w "$$tardir"' am__tar_='pax -L -x $1 -w "$tardir"' am__untar='pax -r' ;; cpio) am__tar='find "$$tardir" -print | cpio -o -H $1 -L' am__tar_='find "$tardir" -print | cpio -o -H $1 -L' am__untar='cpio -i -H $1 -d' ;; none) am__tar=false am__tar_=false am__untar=false ;; esac # If the value was cached, stop now. We just wanted to have am__tar # and am__untar set. test -n "${am_cv_prog_tar_$1}" && break # tar/untar a dummy directory, and stop if the command works. rm -rf conftest.dir mkdir conftest.dir echo GrepMe > conftest.dir/file AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar]) rm -rf conftest.dir if test -s conftest.tar; then AM_RUN_LOG([$am__untar /dev/null 2>&1 && break fi done rm -rf conftest.dir AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool]) AC_MSG_RESULT([$am_cv_prog_tar_$1])]) AC_SUBST([am__tar]) AC_SUBST([am__untar]) ]) # _AM_PROG_TAR # Copyright (C) 2022-2024 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # _AM_PROG_XARGS_N # ---------------- # Check whether 'xargs -n' works. It should work everywhere, so the fallback # is not optimized at all as we never expect to use it. AC_DEFUN([_AM_PROG_XARGS_N], [AC_CACHE_CHECK([xargs -n works], am_cv_xargs_n_works, [dnl AS_IF([test "`echo 1 2 3 | xargs -n2 echo`" = "1 2 3"], [am_cv_xargs_n_works=yes], [am_cv_xargs_n_works=no])]) AS_IF([test "$am_cv_xargs_n_works" = yes], [am__xargs_n='xargs -n'], [dnl am__xargs_n='am__xargs_n () { shift; sed "s/ /\\n/g" | while read am__xargs_n_arg; do "$@" "$am__xargs_n_arg"; done; }' ])dnl AC_SUBST(am__xargs_n) ]) m4_include([m4/libtool.m4]) m4_include([m4/ltoptions.m4]) m4_include([m4/ltsugar.m4]) m4_include([m4/ltversion.m4]) m4_include([m4/lt~obsolete.m4]) giza-1.5.0/build/000077500000000000000000000000001477367113400135635ustar00rootroot00000000000000giza-1.5.0/build/compile000077500000000000000000000162451477367113400151510ustar00rootroot00000000000000#! /bin/sh # Wrapper for compilers which do not understand '-c -o'. scriptversion=2012-10-14.11; # UTC # Copyright (C) 1999-2014 Free Software Foundation, Inc. # Written by Tom Tromey . # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # This file is maintained in Automake, please report # bugs to or send patches to # . nl=' ' # We need space, tab and new line, in precisely that order. Quoting is # there to prevent tools from complaining about whitespace usage. IFS=" "" $nl" file_conv= # func_file_conv build_file lazy # Convert a $build file to $host form and store it in $file # Currently only supports Windows hosts. If the determined conversion # type is listed in (the comma separated) LAZY, no conversion will # take place. func_file_conv () { file=$1 case $file in / | /[!/]*) # absolute file, and not a UNC file if test -z "$file_conv"; then # lazily determine how to convert abs files case `uname -s` in MINGW*) file_conv=mingw ;; CYGWIN*) file_conv=cygwin ;; *) file_conv=wine ;; esac fi case $file_conv/,$2, in *,$file_conv,*) ;; mingw/*) file=`cmd //C echo "$file " | sed -e 's/"\(.*\) " *$/\1/'` ;; cygwin/*) file=`cygpath -m "$file" || echo "$file"` ;; wine/*) file=`winepath -w "$file" || echo "$file"` ;; esac ;; esac } # func_cl_dashL linkdir # Make cl look for libraries in LINKDIR func_cl_dashL () { func_file_conv "$1" if test -z "$lib_path"; then lib_path=$file else lib_path="$lib_path;$file" fi linker_opts="$linker_opts -LIBPATH:$file" } # func_cl_dashl library # Do a library search-path lookup for cl func_cl_dashl () { lib=$1 found=no save_IFS=$IFS IFS=';' for dir in $lib_path $LIB do IFS=$save_IFS if $shared && test -f "$dir/$lib.dll.lib"; then found=yes lib=$dir/$lib.dll.lib break fi if test -f "$dir/$lib.lib"; then found=yes lib=$dir/$lib.lib break fi if test -f "$dir/lib$lib.a"; then found=yes lib=$dir/lib$lib.a break fi done IFS=$save_IFS if test "$found" != yes; then lib=$lib.lib fi } # func_cl_wrapper cl arg... # Adjust compile command to suit cl func_cl_wrapper () { # Assume a capable shell lib_path= shared=: linker_opts= for arg do if test -n "$eat"; then eat= else case $1 in -o) # configure might choose to run compile as 'compile cc -o foo foo.c'. eat=1 case $2 in *.o | *.[oO][bB][jJ]) func_file_conv "$2" set x "$@" -Fo"$file" shift ;; *) func_file_conv "$2" set x "$@" -Fe"$file" shift ;; esac ;; -I) eat=1 func_file_conv "$2" mingw set x "$@" -I"$file" shift ;; -I*) func_file_conv "${1#-I}" mingw set x "$@" -I"$file" shift ;; -l) eat=1 func_cl_dashl "$2" set x "$@" "$lib" shift ;; -l*) func_cl_dashl "${1#-l}" set x "$@" "$lib" shift ;; -L) eat=1 func_cl_dashL "$2" ;; -L*) func_cl_dashL "${1#-L}" ;; -static) shared=false ;; -Wl,*) arg=${1#-Wl,} save_ifs="$IFS"; IFS=',' for flag in $arg; do IFS="$save_ifs" linker_opts="$linker_opts $flag" done IFS="$save_ifs" ;; -Xlinker) eat=1 linker_opts="$linker_opts $2" ;; -*) set x "$@" "$1" shift ;; *.cc | *.CC | *.cxx | *.CXX | *.[cC]++) func_file_conv "$1" set x "$@" -Tp"$file" shift ;; *.c | *.cpp | *.CPP | *.lib | *.LIB | *.Lib | *.OBJ | *.obj | *.[oO]) func_file_conv "$1" mingw set x "$@" "$file" shift ;; *) set x "$@" "$1" shift ;; esac fi shift done if test -n "$linker_opts"; then linker_opts="-link$linker_opts" fi exec "$@" $linker_opts exit 1 } eat= case $1 in '') echo "$0: No command. Try '$0 --help' for more information." 1>&2 exit 1; ;; -h | --h*) cat <<\EOF Usage: compile [--help] [--version] PROGRAM [ARGS] Wrapper for compilers which do not understand '-c -o'. Remove '-o dest.o' from ARGS, run PROGRAM with the remaining arguments, and rename the output as expected. If you are trying to build a whole package this is not the right script to run: please start by reading the file 'INSTALL'. Report bugs to . EOF exit $? ;; -v | --v*) echo "compile $scriptversion" exit $? ;; cl | *[/\\]cl | cl.exe | *[/\\]cl.exe ) func_cl_wrapper "$@" # Doesn't return... ;; esac ofile= cfile= for arg do if test -n "$eat"; then eat= else case $1 in -o) # configure might choose to run compile as 'compile cc -o foo foo.c'. # So we strip '-o arg' only if arg is an object. eat=1 case $2 in *.o | *.obj) ofile=$2 ;; *) set x "$@" -o "$2" shift ;; esac ;; *.c) cfile=$1 set x "$@" "$1" shift ;; *) set x "$@" "$1" shift ;; esac fi shift done if test -z "$ofile" || test -z "$cfile"; then # If no '-o' option was seen then we might have been invoked from a # pattern rule where we don't need one. That is ok -- this is a # normal compilation that the losing compiler can handle. If no # '.c' file was seen then we are probably linking. That is also # ok. exec "$@" fi # Name of file we expect compiler to create. cofile=`echo "$cfile" | sed 's|^.*[\\/]||; s|^[a-zA-Z]:||; s/\.c$/.o/'` # Create the lock directory. # Note: use '[/\\:.-]' here to ensure that we don't use the same name # that we are using for the .o file. Also, base the name on the expected # object file name, since that is what matters with a parallel build. lockdir=`echo "$cofile" | sed -e 's|[/\\:.-]|_|g'`.d while true; do if mkdir "$lockdir" >/dev/null 2>&1; then break fi sleep 1 done # FIXME: race condition here if user kills between mkdir and trap. trap "rmdir '$lockdir'; exit 1" 1 2 15 # Run the compile. "$@" ret=$? if test -f "$cofile"; then test "$cofile" = "$ofile" || mv "$cofile" "$ofile" elif test -f "${cofile}bj"; then test "${cofile}bj" = "$ofile" || mv "${cofile}bj" "$ofile" fi rmdir "$lockdir" exit $ret # Local Variables: # mode: shell-script # sh-indentation: 2 # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC" # time-stamp-end: "; # UTC" # End: giza-1.5.0/build/config.guess000077500000000000000000001236721477367113400161160ustar00rootroot00000000000000#! /bin/sh # Attempt to guess a canonical system name. # Copyright 1992-2015 Free Software Foundation, Inc. timestamp='2015-01-01' # This file is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, see . # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that # program. This Exception is an additional permission under section 7 # of the GNU General Public License, version 3 ("GPLv3"). # # Originally written by Per Bothner; maintained since 2000 by Ben Elliston. # # You can get the latest version of this script from: # http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD # # Please send patches to . me=`echo "$0" | sed -e 's,.*/,,'` usage="\ Usage: $0 [OPTION] Output the configuration name of the system \`$me' is run on. Operation modes: -h, --help print this help, then exit -t, --time-stamp print date of last modification, then exit -v, --version print version number, then exit Report bugs and patches to ." version="\ GNU config.guess ($timestamp) Originally written by Per Bothner. Copyright 1992-2015 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." help=" Try \`$me --help' for more information." # Parse command line while test $# -gt 0 ; do case $1 in --time-stamp | --time* | -t ) echo "$timestamp" ; exit ;; --version | -v ) echo "$version" ; exit ;; --help | --h* | -h ) echo "$usage"; exit ;; -- ) # Stop option processing shift; break ;; - ) # Use stdin as input. break ;; -* ) echo "$me: invalid option $1$help" >&2 exit 1 ;; * ) break ;; esac done if test $# != 0; then echo "$me: too many arguments$help" >&2 exit 1 fi trap 'exit 1' 1 2 15 # CC_FOR_BUILD -- compiler used by this script. Note that the use of a # compiler to aid in system detection is discouraged as it requires # temporary files to be created and, as you can see below, it is a # headache to deal with in a portable fashion. # Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still # use `HOST_CC' if defined, but it is deprecated. # Portable tmp directory creation inspired by the Autoconf team. set_cc_for_build=' trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ; trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ; : ${TMPDIR=/tmp} ; { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } || { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } || { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } || { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ; dummy=$tmp/dummy ; tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ; case $CC_FOR_BUILD,$HOST_CC,$CC in ,,) echo "int x;" > $dummy.c ; for c in cc gcc c89 c99 ; do if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then CC_FOR_BUILD="$c"; break ; fi ; done ; if test x"$CC_FOR_BUILD" = x ; then CC_FOR_BUILD=no_compiler_found ; fi ;; ,,*) CC_FOR_BUILD=$CC ;; ,*,*) CC_FOR_BUILD=$HOST_CC ;; esac ; set_cc_for_build= ;' # This is needed to find uname on a Pyramid OSx when run in the BSD universe. # (ghazi@noc.rutgers.edu 1994-08-24) if (test -f /.attbin/uname) >/dev/null 2>&1 ; then PATH=$PATH:/.attbin ; export PATH fi UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown case "${UNAME_SYSTEM}" in Linux|GNU|GNU/*) # If the system lacks a compiler, then just pick glibc. # We could probably try harder. LIBC=gnu eval $set_cc_for_build cat <<-EOF > $dummy.c #include #if defined(__UCLIBC__) LIBC=uclibc #elif defined(__dietlibc__) LIBC=dietlibc #else LIBC=gnu #endif EOF eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC' | sed 's, ,,g'` ;; esac # Note: order is significant - the case branches are not exclusive. case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in *:NetBSD:*:*) # NetBSD (nbsd) targets should (where applicable) match one or # more of the tuples: *-*-netbsdelf*, *-*-netbsdaout*, # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently # switched to ELF, *-*-netbsd* would select the old # object file format. This provides both forward # compatibility and a consistent mechanism for selecting the # object file format. # # Note: NetBSD doesn't particularly care about the vendor # portion of the name. We always set it to "unknown". sysctl="sysctl -n hw.machine_arch" UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \ /usr/sbin/$sysctl 2>/dev/null || echo unknown)` case "${UNAME_MACHINE_ARCH}" in armeb) machine=armeb-unknown ;; arm*) machine=arm-unknown ;; sh3el) machine=shl-unknown ;; sh3eb) machine=sh-unknown ;; sh5el) machine=sh5le-unknown ;; *) machine=${UNAME_MACHINE_ARCH}-unknown ;; esac # The Operating System including object format, if it has switched # to ELF recently, or will in the future. case "${UNAME_MACHINE_ARCH}" in arm*|i386|m68k|ns32k|sh3*|sparc|vax) eval $set_cc_for_build if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ELF__ then # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout). # Return netbsd for either. FIX? os=netbsd else os=netbsdelf fi ;; *) os=netbsd ;; esac # The OS release # Debian GNU/NetBSD machines have a different userland, and # thus, need a distinct triplet. However, they do not need # kernel version information, so it can be replaced with a # suitable tag, in the style of linux-gnu. case "${UNAME_VERSION}" in Debian*) release='-gnu' ;; *) release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'` ;; esac # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM: # contains redundant information, the shorter form: # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. echo "${machine}-${os}${release}" exit ;; *:Bitrig:*:*) UNAME_MACHINE_ARCH=`arch | sed 's/Bitrig.//'` echo ${UNAME_MACHINE_ARCH}-unknown-bitrig${UNAME_RELEASE} exit ;; *:OpenBSD:*:*) UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'` echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE} exit ;; *:ekkoBSD:*:*) echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE} exit ;; *:SolidBSD:*:*) echo ${UNAME_MACHINE}-unknown-solidbsd${UNAME_RELEASE} exit ;; macppc:MirBSD:*:*) echo powerpc-unknown-mirbsd${UNAME_RELEASE} exit ;; *:MirBSD:*:*) echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE} exit ;; alpha:OSF1:*:*) case $UNAME_RELEASE in *4.0) UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` ;; *5.*) UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'` ;; esac # According to Compaq, /usr/sbin/psrinfo has been available on # OSF/1 and Tru64 systems produced since 1995. I hope that # covers most systems running today. This code pipes the CPU # types through head -n 1, so we only detect the type of CPU 0. ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1` case "$ALPHA_CPU_TYPE" in "EV4 (21064)") UNAME_MACHINE="alpha" ;; "EV4.5 (21064)") UNAME_MACHINE="alpha" ;; "LCA4 (21066/21068)") UNAME_MACHINE="alpha" ;; "EV5 (21164)") UNAME_MACHINE="alphaev5" ;; "EV5.6 (21164A)") UNAME_MACHINE="alphaev56" ;; "EV5.6 (21164PC)") UNAME_MACHINE="alphapca56" ;; "EV5.7 (21164PC)") UNAME_MACHINE="alphapca57" ;; "EV6 (21264)") UNAME_MACHINE="alphaev6" ;; "EV6.7 (21264A)") UNAME_MACHINE="alphaev67" ;; "EV6.8CB (21264C)") UNAME_MACHINE="alphaev68" ;; "EV6.8AL (21264B)") UNAME_MACHINE="alphaev68" ;; "EV6.8CX (21264D)") UNAME_MACHINE="alphaev68" ;; "EV6.9A (21264/EV69A)") UNAME_MACHINE="alphaev69" ;; "EV7 (21364)") UNAME_MACHINE="alphaev7" ;; "EV7.9 (21364A)") UNAME_MACHINE="alphaev79" ;; esac # A Pn.n version is a patched version. # A Vn.n version is a released version. # A Tn.n version is a released field test version. # A Xn.n version is an unreleased experimental baselevel. # 1.2 uses "1.2" for uname -r. echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` # Reset EXIT trap before exiting to avoid spurious non-zero exit code. exitcode=$? trap '' 0 exit $exitcode ;; Alpha\ *:Windows_NT*:*) # How do we know it's Interix rather than the generic POSIX subsystem? # Should we change UNAME_MACHINE based on the output of uname instead # of the specific Alpha model? echo alpha-pc-interix exit ;; 21064:Windows_NT:50:3) echo alpha-dec-winnt3.5 exit ;; Amiga*:UNIX_System_V:4.0:*) echo m68k-unknown-sysv4 exit ;; *:[Aa]miga[Oo][Ss]:*:*) echo ${UNAME_MACHINE}-unknown-amigaos exit ;; *:[Mm]orph[Oo][Ss]:*:*) echo ${UNAME_MACHINE}-unknown-morphos exit ;; *:OS/390:*:*) echo i370-ibm-openedition exit ;; *:z/VM:*:*) echo s390-ibm-zvmoe exit ;; *:OS400:*:*) echo powerpc-ibm-os400 exit ;; arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) echo arm-acorn-riscix${UNAME_RELEASE} exit ;; arm*:riscos:*:*|arm*:RISCOS:*:*) echo arm-unknown-riscos exit ;; SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*) echo hppa1.1-hitachi-hiuxmpp exit ;; Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*) # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE. if test "`(/bin/universe) 2>/dev/null`" = att ; then echo pyramid-pyramid-sysv3 else echo pyramid-pyramid-bsd fi exit ;; NILE*:*:*:dcosx) echo pyramid-pyramid-svr4 exit ;; DRS?6000:unix:4.0:6*) echo sparc-icl-nx6 exit ;; DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*) case `/usr/bin/uname -p` in sparc) echo sparc-icl-nx7; exit ;; esac ;; s390x:SunOS:*:*) echo ${UNAME_MACHINE}-ibm-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; sun4H:SunOS:5.*:*) echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*) echo i386-pc-auroraux${UNAME_RELEASE} exit ;; i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*) eval $set_cc_for_build SUN_ARCH="i386" # If there is a compiler, see if it is configured for 64-bit objects. # Note that the Sun cc does not turn __LP64__ into 1 like gcc does. # This test works for both compilers. if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \ (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \ grep IS_64BIT_ARCH >/dev/null then SUN_ARCH="x86_64" fi fi echo ${SUN_ARCH}-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; sun4*:SunOS:6*:*) # According to config.sub, this is the proper way to canonicalize # SunOS6. Hard to guess exactly what SunOS6 will be like, but # it's likely to be more like Solaris than SunOS4. echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; sun4*:SunOS:*:*) case "`/usr/bin/arch -k`" in Series*|S4*) UNAME_RELEASE=`uname -v` ;; esac # Japanese Language versions have a version number like `4.1.3-JL'. echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'` exit ;; sun3*:SunOS:*:*) echo m68k-sun-sunos${UNAME_RELEASE} exit ;; sun*:*:4.2BSD:*) UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null` test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3 case "`/bin/arch`" in sun3) echo m68k-sun-sunos${UNAME_RELEASE} ;; sun4) echo sparc-sun-sunos${UNAME_RELEASE} ;; esac exit ;; aushp:SunOS:*:*) echo sparc-auspex-sunos${UNAME_RELEASE} exit ;; # The situation for MiNT is a little confusing. The machine name # can be virtually everything (everything which is not # "atarist" or "atariste" at least should have a processor # > m68000). The system name ranges from "MiNT" over "FreeMiNT" # to the lowercase version "mint" (or "freemint"). Finally # the system name "TOS" denotes a system which is actually not # MiNT. But MiNT is downward compatible to TOS, so this should # be no problem. atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*) echo m68k-atari-mint${UNAME_RELEASE} exit ;; atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) echo m68k-atari-mint${UNAME_RELEASE} exit ;; *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) echo m68k-atari-mint${UNAME_RELEASE} exit ;; milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) echo m68k-milan-mint${UNAME_RELEASE} exit ;; hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) echo m68k-hades-mint${UNAME_RELEASE} exit ;; *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) echo m68k-unknown-mint${UNAME_RELEASE} exit ;; m68k:machten:*:*) echo m68k-apple-machten${UNAME_RELEASE} exit ;; powerpc:machten:*:*) echo powerpc-apple-machten${UNAME_RELEASE} exit ;; RISC*:Mach:*:*) echo mips-dec-mach_bsd4.3 exit ;; RISC*:ULTRIX:*:*) echo mips-dec-ultrix${UNAME_RELEASE} exit ;; VAX*:ULTRIX*:*:*) echo vax-dec-ultrix${UNAME_RELEASE} exit ;; 2020:CLIX:*:* | 2430:CLIX:*:*) echo clipper-intergraph-clix${UNAME_RELEASE} exit ;; mips:*:*:UMIPS | mips:*:*:RISCos) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #ifdef __cplusplus #include /* for printf() prototype */ int main (int argc, char *argv[]) { #else int main (argc, argv) int argc; char *argv[]; { #endif #if defined (host_mips) && defined (MIPSEB) #if defined (SYSTYPE_SYSV) printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0); #endif #if defined (SYSTYPE_SVR4) printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0); #endif #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD) printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0); #endif #endif exit (-1); } EOF $CC_FOR_BUILD -o $dummy $dummy.c && dummyarg=`echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` && SYSTEM_NAME=`$dummy $dummyarg` && { echo "$SYSTEM_NAME"; exit; } echo mips-mips-riscos${UNAME_RELEASE} exit ;; Motorola:PowerMAX_OS:*:*) echo powerpc-motorola-powermax exit ;; Motorola:*:4.3:PL8-*) echo powerpc-harris-powermax exit ;; Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*) echo powerpc-harris-powermax exit ;; Night_Hawk:Power_UNIX:*:*) echo powerpc-harris-powerunix exit ;; m88k:CX/UX:7*:*) echo m88k-harris-cxux7 exit ;; m88k:*:4*:R4*) echo m88k-motorola-sysv4 exit ;; m88k:*:3*:R3*) echo m88k-motorola-sysv3 exit ;; AViiON:dgux:*:*) # DG/UX returns AViiON for all architectures UNAME_PROCESSOR=`/usr/bin/uname -p` if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ] then if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \ [ ${TARGET_BINARY_INTERFACE}x = x ] then echo m88k-dg-dgux${UNAME_RELEASE} else echo m88k-dg-dguxbcs${UNAME_RELEASE} fi else echo i586-dg-dgux${UNAME_RELEASE} fi exit ;; M88*:DolphinOS:*:*) # DolphinOS (SVR3) echo m88k-dolphin-sysv3 exit ;; M88*:*:R3*:*) # Delta 88k system running SVR3 echo m88k-motorola-sysv3 exit ;; XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) echo m88k-tektronix-sysv3 exit ;; Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) echo m68k-tektronix-bsd exit ;; *:IRIX*:*:*) echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'` exit ;; ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX. echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id exit ;; # Note that: echo "'`uname -s`'" gives 'AIX ' i*86:AIX:*:*) echo i386-ibm-aix exit ;; ia64:AIX:*:*) if [ -x /usr/bin/oslevel ] ; then IBM_REV=`/usr/bin/oslevel` else IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} fi echo ${UNAME_MACHINE}-ibm-aix${IBM_REV} exit ;; *:AIX:2:3) if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #include main() { if (!__power_pc()) exit(1); puts("powerpc-ibm-aix3.2.5"); exit(0); } EOF if $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` then echo "$SYSTEM_NAME" else echo rs6000-ibm-aix3.2.5 fi elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then echo rs6000-ibm-aix3.2.4 else echo rs6000-ibm-aix3.2 fi exit ;; *:AIX:*:[4567]) IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'` if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then IBM_ARCH=rs6000 else IBM_ARCH=powerpc fi if [ -x /usr/bin/lslpp ] ; then IBM_REV=`/usr/bin/lslpp -Lqc bos.rte.libc | awk -F: '{ print $3 }' | sed s/[0-9]*$/0/` else IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} fi echo ${IBM_ARCH}-ibm-aix${IBM_REV} exit ;; *:AIX:*:*) echo rs6000-ibm-aix exit ;; ibmrt:4.4BSD:*|romp-ibm:BSD:*) echo romp-ibm-bsd4.4 exit ;; ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to exit ;; # report: romp-ibm BSD 4.3 *:BOSX:*:*) echo rs6000-bull-bosx exit ;; DPX/2?00:B.O.S.:*:*) echo m68k-bull-sysv3 exit ;; 9000/[34]??:4.3bsd:1.*:*) echo m68k-hp-bsd exit ;; hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) echo m68k-hp-bsd4.4 exit ;; 9000/[34678]??:HP-UX:*:*) HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` case "${UNAME_MACHINE}" in 9000/31? ) HP_ARCH=m68000 ;; 9000/[34]?? ) HP_ARCH=m68k ;; 9000/[678][0-9][0-9]) if [ -x /usr/bin/getconf ]; then sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` case "${sc_cpu_version}" in 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1 532) # CPU_PA_RISC2_0 case "${sc_kernel_bits}" in 32) HP_ARCH="hppa2.0n" ;; 64) HP_ARCH="hppa2.0w" ;; '') HP_ARCH="hppa2.0" ;; # HP-UX 10.20 esac ;; esac fi if [ "${HP_ARCH}" = "" ]; then eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #define _HPUX_SOURCE #include #include int main () { #if defined(_SC_KERNEL_BITS) long bits = sysconf(_SC_KERNEL_BITS); #endif long cpu = sysconf (_SC_CPU_VERSION); switch (cpu) { case CPU_PA_RISC1_0: puts ("hppa1.0"); break; case CPU_PA_RISC1_1: puts ("hppa1.1"); break; case CPU_PA_RISC2_0: #if defined(_SC_KERNEL_BITS) switch (bits) { case 64: puts ("hppa2.0w"); break; case 32: puts ("hppa2.0n"); break; default: puts ("hppa2.0"); break; } break; #else /* !defined(_SC_KERNEL_BITS) */ puts ("hppa2.0"); break; #endif default: puts ("hppa1.0"); break; } exit (0); } EOF (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy` test -z "$HP_ARCH" && HP_ARCH=hppa fi ;; esac if [ ${HP_ARCH} = "hppa2.0w" ] then eval $set_cc_for_build # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating # 32-bit code. hppa64-hp-hpux* has the same kernel and a compiler # generating 64-bit code. GNU and HP use different nomenclature: # # $ CC_FOR_BUILD=cc ./config.guess # => hppa2.0w-hp-hpux11.23 # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess # => hppa64-hp-hpux11.23 if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | grep -q __LP64__ then HP_ARCH="hppa2.0w" else HP_ARCH="hppa64" fi fi echo ${HP_ARCH}-hp-hpux${HPUX_REV} exit ;; ia64:HP-UX:*:*) HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` echo ia64-hp-hpux${HPUX_REV} exit ;; 3050*:HI-UX:*:*) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #include int main () { long cpu = sysconf (_SC_CPU_VERSION); /* The order matters, because CPU_IS_HP_MC68K erroneously returns true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct results, however. */ if (CPU_IS_PA_RISC (cpu)) { switch (cpu) { case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break; case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break; case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break; default: puts ("hppa-hitachi-hiuxwe2"); break; } } else if (CPU_IS_HP_MC68K (cpu)) puts ("m68k-hitachi-hiuxwe2"); else puts ("unknown-hitachi-hiuxwe2"); exit (0); } EOF $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` && { echo "$SYSTEM_NAME"; exit; } echo unknown-hitachi-hiuxwe2 exit ;; 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* ) echo hppa1.1-hp-bsd exit ;; 9000/8??:4.3bsd:*:*) echo hppa1.0-hp-bsd exit ;; *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*) echo hppa1.0-hp-mpeix exit ;; hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* ) echo hppa1.1-hp-osf exit ;; hp8??:OSF1:*:*) echo hppa1.0-hp-osf exit ;; i*86:OSF1:*:*) if [ -x /usr/sbin/sysversion ] ; then echo ${UNAME_MACHINE}-unknown-osf1mk else echo ${UNAME_MACHINE}-unknown-osf1 fi exit ;; parisc*:Lites*:*:*) echo hppa1.1-hp-lites exit ;; C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) echo c1-convex-bsd exit ;; C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) if getsysinfo -f scalar_acc then echo c32-convex-bsd else echo c2-convex-bsd fi exit ;; C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) echo c34-convex-bsd exit ;; C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) echo c38-convex-bsd exit ;; C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) echo c4-convex-bsd exit ;; CRAY*Y-MP:*:*:*) echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; CRAY*[A-Z]90:*:*:*) echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \ | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \ -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \ -e 's/\.[^.]*$/.X/' exit ;; CRAY*TS:*:*:*) echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; CRAY*T3E:*:*:*) echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; CRAY*SV1:*:*:*) echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; *:UNICOS/mp:*:*) echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*) FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'` echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" exit ;; 5000:UNIX_System_V:4.*:*) FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'` echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" exit ;; i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE} exit ;; sparc*:BSD/OS:*:*) echo sparc-unknown-bsdi${UNAME_RELEASE} exit ;; *:BSD/OS:*:*) echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE} exit ;; *:FreeBSD:*:*) UNAME_PROCESSOR=`/usr/bin/uname -p` case ${UNAME_PROCESSOR} in amd64) echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; *) echo ${UNAME_PROCESSOR}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; esac exit ;; i*:CYGWIN*:*) echo ${UNAME_MACHINE}-pc-cygwin exit ;; *:MINGW64*:*) echo ${UNAME_MACHINE}-pc-mingw64 exit ;; *:MINGW*:*) echo ${UNAME_MACHINE}-pc-mingw32 exit ;; *:MSYS*:*) echo ${UNAME_MACHINE}-pc-msys exit ;; i*:windows32*:*) # uname -m includes "-pc" on this system. echo ${UNAME_MACHINE}-mingw32 exit ;; i*:PW*:*) echo ${UNAME_MACHINE}-pc-pw32 exit ;; *:Interix*:*) case ${UNAME_MACHINE} in x86) echo i586-pc-interix${UNAME_RELEASE} exit ;; authenticamd | genuineintel | EM64T) echo x86_64-unknown-interix${UNAME_RELEASE} exit ;; IA64) echo ia64-unknown-interix${UNAME_RELEASE} exit ;; esac ;; [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*) echo i${UNAME_MACHINE}-pc-mks exit ;; 8664:Windows_NT:*) echo x86_64-pc-mks exit ;; i*:Windows_NT*:* | Pentium*:Windows_NT*:*) # How do we know it's Interix rather than the generic POSIX subsystem? # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we # UNAME_MACHINE based on the output of uname instead of i386? echo i586-pc-interix exit ;; i*:UWIN*:*) echo ${UNAME_MACHINE}-pc-uwin exit ;; amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*) echo x86_64-unknown-cygwin exit ;; p*:CYGWIN*:*) echo powerpcle-unknown-cygwin exit ;; prep*:SunOS:5.*:*) echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; *:GNU:*:*) # the GNU system echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-${LIBC}`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'` exit ;; *:GNU/*:*:*) # other systems with GNU libc and userland echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-${LIBC} exit ;; i*86:Minix:*:*) echo ${UNAME_MACHINE}-pc-minix exit ;; aarch64:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; aarch64_be:Linux:*:*) UNAME_MACHINE=aarch64_be echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; alpha:Linux:*:*) case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in EV5) UNAME_MACHINE=alphaev5 ;; EV56) UNAME_MACHINE=alphaev56 ;; PCA56) UNAME_MACHINE=alphapca56 ;; PCA57) UNAME_MACHINE=alphapca56 ;; EV6) UNAME_MACHINE=alphaev6 ;; EV67) UNAME_MACHINE=alphaev67 ;; EV68*) UNAME_MACHINE=alphaev68 ;; esac objdump --private-headers /bin/sh | grep -q ld.so.1 if test "$?" = 0 ; then LIBC="gnulibc1" ; fi echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; arc:Linux:*:* | arceb:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; arm*:Linux:*:*) eval $set_cc_for_build if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ARM_EABI__ then echo ${UNAME_MACHINE}-unknown-linux-${LIBC} else if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ARM_PCS_VFP then echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabi else echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabihf fi fi exit ;; avr32*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; cris:Linux:*:*) echo ${UNAME_MACHINE}-axis-linux-${LIBC} exit ;; crisv32:Linux:*:*) echo ${UNAME_MACHINE}-axis-linux-${LIBC} exit ;; frv:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; hexagon:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; i*86:Linux:*:*) echo ${UNAME_MACHINE}-pc-linux-${LIBC} exit ;; ia64:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; m32r*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; m68*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; mips:Linux:*:* | mips64:Linux:*:*) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #undef CPU #undef ${UNAME_MACHINE} #undef ${UNAME_MACHINE}el #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) CPU=${UNAME_MACHINE}el #else #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) CPU=${UNAME_MACHINE} #else CPU= #endif #endif EOF eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'` test x"${CPU}" != x && { echo "${CPU}-unknown-linux-${LIBC}"; exit; } ;; openrisc*:Linux:*:*) echo or1k-unknown-linux-${LIBC} exit ;; or32:Linux:*:* | or1k*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; padre:Linux:*:*) echo sparc-unknown-linux-${LIBC} exit ;; parisc64:Linux:*:* | hppa64:Linux:*:*) echo hppa64-unknown-linux-${LIBC} exit ;; parisc:Linux:*:* | hppa:Linux:*:*) # Look for CPU level case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in PA7*) echo hppa1.1-unknown-linux-${LIBC} ;; PA8*) echo hppa2.0-unknown-linux-${LIBC} ;; *) echo hppa-unknown-linux-${LIBC} ;; esac exit ;; ppc64:Linux:*:*) echo powerpc64-unknown-linux-${LIBC} exit ;; ppc:Linux:*:*) echo powerpc-unknown-linux-${LIBC} exit ;; ppc64le:Linux:*:*) echo powerpc64le-unknown-linux-${LIBC} exit ;; ppcle:Linux:*:*) echo powerpcle-unknown-linux-${LIBC} exit ;; s390:Linux:*:* | s390x:Linux:*:*) echo ${UNAME_MACHINE}-ibm-linux-${LIBC} exit ;; sh64*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; sh*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; sparc:Linux:*:* | sparc64:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; tile*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; vax:Linux:*:*) echo ${UNAME_MACHINE}-dec-linux-${LIBC} exit ;; x86_64:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; xtensa*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; i*86:DYNIX/ptx:4*:*) # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. # earlier versions are messed up and put the nodename in both # sysname and nodename. echo i386-sequent-sysv4 exit ;; i*86:UNIX_SV:4.2MP:2.*) # Unixware is an offshoot of SVR4, but it has its own version # number series starting with 2... # I am not positive that other SVR4 systems won't match this, # I just have to hope. -- rms. # Use sysv4.2uw... so that sysv4* matches it. echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION} exit ;; i*86:OS/2:*:*) # If we were able to find `uname', then EMX Unix compatibility # is probably installed. echo ${UNAME_MACHINE}-pc-os2-emx exit ;; i*86:XTS-300:*:STOP) echo ${UNAME_MACHINE}-unknown-stop exit ;; i*86:atheos:*:*) echo ${UNAME_MACHINE}-unknown-atheos exit ;; i*86:syllable:*:*) echo ${UNAME_MACHINE}-pc-syllable exit ;; i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*) echo i386-unknown-lynxos${UNAME_RELEASE} exit ;; i*86:*DOS:*:*) echo ${UNAME_MACHINE}-pc-msdosdjgpp exit ;; i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*) UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'` if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL} else echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL} fi exit ;; i*86:*:5:[678]*) # UnixWare 7.x, OpenUNIX and OpenServer 6. case `/bin/uname -X | grep "^Machine"` in *486*) UNAME_MACHINE=i486 ;; *Pentium) UNAME_MACHINE=i586 ;; *Pent*|*Celeron) UNAME_MACHINE=i686 ;; esac echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION} exit ;; i*86:*:3.2:*) if test -f /usr/options/cb.name; then UNAME_REL=`sed -n 's/.*Version //p' /dev/null >/dev/null ; then UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')` (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486 (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \ && UNAME_MACHINE=i586 (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \ && UNAME_MACHINE=i686 (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \ && UNAME_MACHINE=i686 echo ${UNAME_MACHINE}-pc-sco$UNAME_REL else echo ${UNAME_MACHINE}-pc-sysv32 fi exit ;; pc:*:*:*) # Left here for compatibility: # uname -m prints for DJGPP always 'pc', but it prints nothing about # the processor, so we play safe by assuming i586. # Note: whatever this is, it MUST be the same as what config.sub # prints for the "djgpp" host, or else GDB configury will decide that # this is a cross-build. echo i586-pc-msdosdjgpp exit ;; Intel:Mach:3*:*) echo i386-pc-mach3 exit ;; paragon:*:*:*) echo i860-intel-osf1 exit ;; i860:*:4.*:*) # i860-SVR4 if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4 else # Add other i860-SVR4 vendors below as they are discovered. echo i860-unknown-sysv${UNAME_RELEASE} # Unknown i860-SVR4 fi exit ;; mini*:CTIX:SYS*5:*) # "miniframe" echo m68010-convergent-sysv exit ;; mc68k:UNIX:SYSTEM5:3.51m) echo m68k-convergent-sysv exit ;; M680?0:D-NIX:5.3:*) echo m68k-diab-dnix exit ;; M68*:*:R3V[5678]*:*) test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;; 3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0) OS_REL='' test -r /etc/.relid \ && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && { echo i486-ncr-sysv4.3${OS_REL}; exit; } /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*) /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && { echo i486-ncr-sysv4; exit; } ;; NCR*:*:4.2:* | MPRAS*:*:4.2:*) OS_REL='.3' test -r /etc/.relid \ && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && { echo i486-ncr-sysv4.3${OS_REL}; exit; } /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ && { echo i586-ncr-sysv4.3${OS_REL}; exit; } /bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \ && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*) echo m68k-unknown-lynxos${UNAME_RELEASE} exit ;; mc68030:UNIX_System_V:4.*:*) echo m68k-atari-sysv4 exit ;; TSUNAMI:LynxOS:2.*:*) echo sparc-unknown-lynxos${UNAME_RELEASE} exit ;; rs6000:LynxOS:2.*:*) echo rs6000-unknown-lynxos${UNAME_RELEASE} exit ;; PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*) echo powerpc-unknown-lynxos${UNAME_RELEASE} exit ;; SM[BE]S:UNIX_SV:*:*) echo mips-dde-sysv${UNAME_RELEASE} exit ;; RM*:ReliantUNIX-*:*:*) echo mips-sni-sysv4 exit ;; RM*:SINIX-*:*:*) echo mips-sni-sysv4 exit ;; *:SINIX-*:*:*) if uname -p 2>/dev/null >/dev/null ; then UNAME_MACHINE=`(uname -p) 2>/dev/null` echo ${UNAME_MACHINE}-sni-sysv4 else echo ns32k-sni-sysv fi exit ;; PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort # says echo i586-unisys-sysv4 exit ;; *:UNIX_System_V:4*:FTX*) # From Gerald Hewes . # How about differentiating between stratus architectures? -djm echo hppa1.1-stratus-sysv4 exit ;; *:*:*:FTX*) # From seanf@swdc.stratus.com. echo i860-stratus-sysv4 exit ;; i*86:VOS:*:*) # From Paul.Green@stratus.com. echo ${UNAME_MACHINE}-stratus-vos exit ;; *:VOS:*:*) # From Paul.Green@stratus.com. echo hppa1.1-stratus-vos exit ;; mc68*:A/UX:*:*) echo m68k-apple-aux${UNAME_RELEASE} exit ;; news*:NEWS-OS:6*:*) echo mips-sony-newsos6 exit ;; R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*) if [ -d /usr/nec ]; then echo mips-nec-sysv${UNAME_RELEASE} else echo mips-unknown-sysv${UNAME_RELEASE} fi exit ;; BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. echo powerpc-be-beos exit ;; BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only. echo powerpc-apple-beos exit ;; BePC:BeOS:*:*) # BeOS running on Intel PC compatible. echo i586-pc-beos exit ;; BePC:Haiku:*:*) # Haiku running on Intel PC compatible. echo i586-pc-haiku exit ;; x86_64:Haiku:*:*) echo x86_64-unknown-haiku exit ;; SX-4:SUPER-UX:*:*) echo sx4-nec-superux${UNAME_RELEASE} exit ;; SX-5:SUPER-UX:*:*) echo sx5-nec-superux${UNAME_RELEASE} exit ;; SX-6:SUPER-UX:*:*) echo sx6-nec-superux${UNAME_RELEASE} exit ;; SX-7:SUPER-UX:*:*) echo sx7-nec-superux${UNAME_RELEASE} exit ;; SX-8:SUPER-UX:*:*) echo sx8-nec-superux${UNAME_RELEASE} exit ;; SX-8R:SUPER-UX:*:*) echo sx8r-nec-superux${UNAME_RELEASE} exit ;; Power*:Rhapsody:*:*) echo powerpc-apple-rhapsody${UNAME_RELEASE} exit ;; *:Rhapsody:*:*) echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE} exit ;; *:Darwin:*:*) UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown eval $set_cc_for_build if test "$UNAME_PROCESSOR" = unknown ; then UNAME_PROCESSOR=powerpc fi if test `echo "$UNAME_RELEASE" | sed -e 's/\..*//'` -le 10 ; then if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \ (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \ grep IS_64BIT_ARCH >/dev/null then case $UNAME_PROCESSOR in i386) UNAME_PROCESSOR=x86_64 ;; powerpc) UNAME_PROCESSOR=powerpc64 ;; esac fi fi elif test "$UNAME_PROCESSOR" = i386 ; then # Avoid executing cc on OS X 10.9, as it ships with a stub # that puts up a graphical alert prompting to install # developer tools. Any system running Mac OS X 10.7 or # later (Darwin 11 and later) is required to have a 64-bit # processor. This is not true of the ARM version of Darwin # that Apple uses in portable devices. UNAME_PROCESSOR=x86_64 fi echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE} exit ;; *:procnto*:*:* | *:QNX:[0123456789]*:*) UNAME_PROCESSOR=`uname -p` if test "$UNAME_PROCESSOR" = "x86"; then UNAME_PROCESSOR=i386 UNAME_MACHINE=pc fi echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE} exit ;; *:QNX:*:4*) echo i386-pc-qnx exit ;; NEO-?:NONSTOP_KERNEL:*:*) echo neo-tandem-nsk${UNAME_RELEASE} exit ;; NSE-*:NONSTOP_KERNEL:*:*) echo nse-tandem-nsk${UNAME_RELEASE} exit ;; NSR-?:NONSTOP_KERNEL:*:*) echo nsr-tandem-nsk${UNAME_RELEASE} exit ;; *:NonStop-UX:*:*) echo mips-compaq-nonstopux exit ;; BS2000:POSIX*:*:*) echo bs2000-siemens-sysv exit ;; DS/*:UNIX_System_V:*:*) echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE} exit ;; *:Plan9:*:*) # "uname -m" is not consistent, so use $cputype instead. 386 # is converted to i386 for consistency with other x86 # operating systems. if test "$cputype" = "386"; then UNAME_MACHINE=i386 else UNAME_MACHINE="$cputype" fi echo ${UNAME_MACHINE}-unknown-plan9 exit ;; *:TOPS-10:*:*) echo pdp10-unknown-tops10 exit ;; *:TENEX:*:*) echo pdp10-unknown-tenex exit ;; KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*) echo pdp10-dec-tops20 exit ;; XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*) echo pdp10-xkl-tops20 exit ;; *:TOPS-20:*:*) echo pdp10-unknown-tops20 exit ;; *:ITS:*:*) echo pdp10-unknown-its exit ;; SEI:*:*:SEIUX) echo mips-sei-seiux${UNAME_RELEASE} exit ;; *:DragonFly:*:*) echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` exit ;; *:*VMS:*:*) UNAME_MACHINE=`(uname -p) 2>/dev/null` case "${UNAME_MACHINE}" in A*) echo alpha-dec-vms ; exit ;; I*) echo ia64-dec-vms ; exit ;; V*) echo vax-dec-vms ; exit ;; esac ;; *:XENIX:*:SysV) echo i386-pc-xenix exit ;; i*86:skyos:*:*) echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE}` | sed -e 's/ .*$//' exit ;; i*86:rdos:*:*) echo ${UNAME_MACHINE}-pc-rdos exit ;; i*86:AROS:*:*) echo ${UNAME_MACHINE}-pc-aros exit ;; x86_64:VMkernel:*:*) echo ${UNAME_MACHINE}-unknown-esx exit ;; esac cat >&2 < in order to provide the needed information to handle your system. config.guess timestamp = $timestamp uname -m = `(uname -m) 2>/dev/null || echo unknown` uname -r = `(uname -r) 2>/dev/null || echo unknown` uname -s = `(uname -s) 2>/dev/null || echo unknown` uname -v = `(uname -v) 2>/dev/null || echo unknown` /usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null` /bin/uname -X = `(/bin/uname -X) 2>/dev/null` hostinfo = `(hostinfo) 2>/dev/null` /bin/universe = `(/bin/universe) 2>/dev/null` /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null` /bin/arch = `(/bin/arch) 2>/dev/null` /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null` /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null` UNAME_MACHINE = ${UNAME_MACHINE} UNAME_RELEASE = ${UNAME_RELEASE} UNAME_SYSTEM = ${UNAME_SYSTEM} UNAME_VERSION = ${UNAME_VERSION} EOF exit 1 # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "timestamp='" # time-stamp-format: "%:y-%02m-%02d" # time-stamp-end: "'" # End: giza-1.5.0/build/config.sub000077500000000000000000001062461477367113400155570ustar00rootroot00000000000000#! /bin/sh # Configuration validation subroutine script. # Copyright 1992-2015 Free Software Foundation, Inc. timestamp='2015-01-01' # This file is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, see . # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that # program. This Exception is an additional permission under section 7 # of the GNU General Public License, version 3 ("GPLv3"). # Please send patches to . # # Configuration subroutine to validate and canonicalize a configuration type. # Supply the specified configuration type as an argument. # If it is invalid, we print an error message on stderr and exit with code 1. # Otherwise, we print the canonical config type on stdout and succeed. # You can get the latest version of this script from: # http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD # This file is supposed to be the same for all GNU packages # and recognize all the CPU types, system types and aliases # that are meaningful with *any* GNU software. # Each package is responsible for reporting which valid configurations # it does not support. The user should be able to distinguish # a failure to support a valid configuration from a meaningless # configuration. # The goal of this file is to map all the various variations of a given # machine specification into a single specification in the form: # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM # or in some cases, the newer four-part form: # CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM # It is wrong to echo any other type of specification. me=`echo "$0" | sed -e 's,.*/,,'` usage="\ Usage: $0 [OPTION] CPU-MFR-OPSYS $0 [OPTION] ALIAS Canonicalize a configuration name. Operation modes: -h, --help print this help, then exit -t, --time-stamp print date of last modification, then exit -v, --version print version number, then exit Report bugs and patches to ." version="\ GNU config.sub ($timestamp) Copyright 1992-2015 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." help=" Try \`$me --help' for more information." # Parse command line while test $# -gt 0 ; do case $1 in --time-stamp | --time* | -t ) echo "$timestamp" ; exit ;; --version | -v ) echo "$version" ; exit ;; --help | --h* | -h ) echo "$usage"; exit ;; -- ) # Stop option processing shift; break ;; - ) # Use stdin as input. break ;; -* ) echo "$me: invalid option $1$help" exit 1 ;; *local*) # First pass through any local machine types. echo $1 exit ;; * ) break ;; esac done case $# in 0) echo "$me: missing argument$help" >&2 exit 1;; 1) ;; *) echo "$me: too many arguments$help" >&2 exit 1;; esac # Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any). # Here we must recognize all the valid KERNEL-OS combinations. maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` case $maybe_os in nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc | linux-newlib* | \ linux-musl* | linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \ knetbsd*-gnu* | netbsd*-gnu* | \ kopensolaris*-gnu* | \ storm-chaos* | os2-emx* | rtmk-nova*) os=-$maybe_os basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` ;; android-linux) os=-linux-android basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`-unknown ;; *) basic_machine=`echo $1 | sed 's/-[^-]*$//'` if [ $basic_machine != $1 ] then os=`echo $1 | sed 's/.*-/-/'` else os=; fi ;; esac ### Let's recognize common machines as not being operating systems so ### that things like config.sub decstation-3100 work. We also ### recognize some manufacturers as not being operating systems, so we ### can provide default operating systems below. case $os in -sun*os*) # Prevent following clause from handling this invalid input. ;; -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \ -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \ -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \ -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\ -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \ -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \ -apple | -axis | -knuth | -cray | -microblaze*) os= basic_machine=$1 ;; -bluegene*) os=-cnk ;; -sim | -cisco | -oki | -wec | -winbond) os= basic_machine=$1 ;; -scout) ;; -wrs) os=-vxworks basic_machine=$1 ;; -chorusos*) os=-chorusos basic_machine=$1 ;; -chorusrdb) os=-chorusrdb basic_machine=$1 ;; -hiux*) os=-hiuxwe2 ;; -sco6) os=-sco5v6 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco5) os=-sco3.2v5 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco4) os=-sco3.2v4 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco3.2.[4-9]*) os=`echo $os | sed -e 's/sco3.2./sco3.2v/'` basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco3.2v[4-9]*) # Don't forget version if it is 3.2v4 or newer. basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco5v6*) # Don't forget version if it is 3.2v4 or newer. basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco*) os=-sco3.2v2 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -udk*) basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -isc) os=-isc2.2 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -clix*) basic_machine=clipper-intergraph ;; -isc*) basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -lynx*178) os=-lynxos178 ;; -lynx*5) os=-lynxos5 ;; -lynx*) os=-lynxos ;; -ptx*) basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'` ;; -windowsnt*) os=`echo $os | sed -e 's/windowsnt/winnt/'` ;; -psos*) os=-psos ;; -mint | -mint[0-9]*) basic_machine=m68k-atari os=-mint ;; esac # Decode aliases for certain CPU-COMPANY combinations. case $basic_machine in # Recognize the basic CPU types without company name. # Some are omitted here because they have special meanings below. 1750a | 580 \ | a29k \ | aarch64 | aarch64_be \ | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \ | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \ | am33_2.0 \ | arc | arceb \ | arm | arm[bl]e | arme[lb] | armv[2-8] | armv[3-8][lb] | armv7[arm] \ | avr | avr32 \ | be32 | be64 \ | bfin \ | c4x | c8051 | clipper \ | d10v | d30v | dlx | dsp16xx \ | epiphany \ | fido | fr30 | frv | ft32 \ | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ | hexagon \ | i370 | i860 | i960 | ia64 \ | ip2k | iq2000 \ | k1om \ | le32 | le64 \ | lm32 \ | m32c | m32r | m32rle | m68000 | m68k | m88k \ | maxq | mb | microblaze | microblazeel | mcore | mep | metag \ | mips | mipsbe | mipseb | mipsel | mipsle \ | mips16 \ | mips64 | mips64el \ | mips64octeon | mips64octeonel \ | mips64orion | mips64orionel \ | mips64r5900 | mips64r5900el \ | mips64vr | mips64vrel \ | mips64vr4100 | mips64vr4100el \ | mips64vr4300 | mips64vr4300el \ | mips64vr5000 | mips64vr5000el \ | mips64vr5900 | mips64vr5900el \ | mipsisa32 | mipsisa32el \ | mipsisa32r2 | mipsisa32r2el \ | mipsisa32r6 | mipsisa32r6el \ | mipsisa64 | mipsisa64el \ | mipsisa64r2 | mipsisa64r2el \ | mipsisa64r6 | mipsisa64r6el \ | mipsisa64sb1 | mipsisa64sb1el \ | mipsisa64sr71k | mipsisa64sr71kel \ | mipsr5900 | mipsr5900el \ | mipstx39 | mipstx39el \ | mn10200 | mn10300 \ | moxie \ | mt \ | msp430 \ | nds32 | nds32le | nds32be \ | nios | nios2 | nios2eb | nios2el \ | ns16k | ns32k \ | open8 | or1k | or1knd | or32 \ | pdp10 | pdp11 | pj | pjl \ | powerpc | powerpc64 | powerpc64le | powerpcle \ | pyramid \ | riscv32 | riscv64 \ | rl78 | rx \ | score \ | sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \ | sh64 | sh64le \ | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \ | sparcv8 | sparcv9 | sparcv9b | sparcv9v \ | spu \ | tahoe | tic4x | tic54x | tic55x | tic6x | tic80 | tron \ | ubicom32 \ | v850 | v850e | v850e1 | v850e2 | v850es | v850e2v3 \ | visium \ | we32k \ | x86 | xc16x | xstormy16 | xtensa \ | z8k | z80) basic_machine=$basic_machine-unknown ;; c54x) basic_machine=tic54x-unknown ;; c55x) basic_machine=tic55x-unknown ;; c6x) basic_machine=tic6x-unknown ;; leon|leon[3-9]) basic_machine=sparc-$basic_machine ;; m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | nvptx | picochip) basic_machine=$basic_machine-unknown os=-none ;; m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k) ;; ms1) basic_machine=mt-unknown ;; strongarm | thumb | xscale) basic_machine=arm-unknown ;; xgate) basic_machine=$basic_machine-unknown os=-none ;; xscaleeb) basic_machine=armeb-unknown ;; xscaleel) basic_machine=armel-unknown ;; # We use `pc' rather than `unknown' # because (1) that's what they normally are, and # (2) the word "unknown" tends to confuse beginning users. i*86 | x86_64) basic_machine=$basic_machine-pc ;; # Object if more than one company name word. *-*-*) echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 exit 1 ;; # Recognize the basic CPU types with company name. 580-* \ | a29k-* \ | aarch64-* | aarch64_be-* \ | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \ | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \ | alphapca5[67]-* | alpha64pca5[67]-* | arc-* | arceb-* \ | arm-* | armbe-* | armle-* | armeb-* | armv*-* \ | avr-* | avr32-* \ | be32-* | be64-* \ | bfin-* | bs2000-* \ | c[123]* | c30-* | [cjt]90-* | c4x-* \ | c8051-* | clipper-* | craynv-* | cydra-* \ | d10v-* | d30v-* | dlx-* \ | elxsi-* \ | f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \ | h8300-* | h8500-* \ | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ | hexagon-* \ | i*86-* | i860-* | i960-* | ia64-* \ | ip2k-* | iq2000-* \ | k1om-* \ | le32-* | le64-* \ | lm32-* \ | m32c-* | m32r-* | m32rle-* \ | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \ | m88110-* | m88k-* | maxq-* | mcore-* | metag-* \ | microblaze-* | microblazeel-* \ | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \ | mips16-* \ | mips64-* | mips64el-* \ | mips64octeon-* | mips64octeonel-* \ | mips64orion-* | mips64orionel-* \ | mips64r5900-* | mips64r5900el-* \ | mips64vr-* | mips64vrel-* \ | mips64vr4100-* | mips64vr4100el-* \ | mips64vr4300-* | mips64vr4300el-* \ | mips64vr5000-* | mips64vr5000el-* \ | mips64vr5900-* | mips64vr5900el-* \ | mipsisa32-* | mipsisa32el-* \ | mipsisa32r2-* | mipsisa32r2el-* \ | mipsisa32r6-* | mipsisa32r6el-* \ | mipsisa64-* | mipsisa64el-* \ | mipsisa64r2-* | mipsisa64r2el-* \ | mipsisa64r6-* | mipsisa64r6el-* \ | mipsisa64sb1-* | mipsisa64sb1el-* \ | mipsisa64sr71k-* | mipsisa64sr71kel-* \ | mipsr5900-* | mipsr5900el-* \ | mipstx39-* | mipstx39el-* \ | mmix-* \ | mt-* \ | msp430-* \ | nds32-* | nds32le-* | nds32be-* \ | nios-* | nios2-* | nios2eb-* | nios2el-* \ | none-* | np1-* | ns16k-* | ns32k-* \ | open8-* \ | or1k*-* \ | orion-* \ | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* \ | pyramid-* \ | rl78-* | romp-* | rs6000-* | rx-* \ | sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \ | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \ | sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \ | sparclite-* \ | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | sv1-* | sx?-* \ | tahoe-* \ | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \ | tile*-* \ | tron-* \ | ubicom32-* \ | v850-* | v850e-* | v850e1-* | v850es-* | v850e2-* | v850e2v3-* \ | vax-* \ | visium-* \ | we32k-* \ | x86-* | x86_64-* | xc16x-* | xps100-* \ | xstormy16-* | xtensa*-* \ | ymp-* \ | z8k-* | z80-*) ;; # Recognize the basic CPU types without company name, with glob match. xtensa*) basic_machine=$basic_machine-unknown ;; # Recognize the various machine names and aliases which stand # for a CPU type and a company and sometimes even an OS. 386bsd) basic_machine=i386-unknown os=-bsd ;; 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) basic_machine=m68000-att ;; 3b*) basic_machine=we32k-att ;; a29khif) basic_machine=a29k-amd os=-udi ;; abacus) basic_machine=abacus-unknown ;; adobe68k) basic_machine=m68010-adobe os=-scout ;; alliant | fx80) basic_machine=fx80-alliant ;; altos | altos3068) basic_machine=m68k-altos ;; am29k) basic_machine=a29k-none os=-bsd ;; amd64) basic_machine=x86_64-pc ;; amd64-*) basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'` ;; amdahl) basic_machine=580-amdahl os=-sysv ;; amiga | amiga-*) basic_machine=m68k-unknown ;; amigaos | amigados) basic_machine=m68k-unknown os=-amigaos ;; amigaunix | amix) basic_machine=m68k-unknown os=-sysv4 ;; apollo68) basic_machine=m68k-apollo os=-sysv ;; apollo68bsd) basic_machine=m68k-apollo os=-bsd ;; aros) basic_machine=i386-pc os=-aros ;; aux) basic_machine=m68k-apple os=-aux ;; balance) basic_machine=ns32k-sequent os=-dynix ;; blackfin) basic_machine=bfin-unknown os=-linux ;; blackfin-*) basic_machine=bfin-`echo $basic_machine | sed 's/^[^-]*-//'` os=-linux ;; bluegene*) basic_machine=powerpc-ibm os=-cnk ;; c54x-*) basic_machine=tic54x-`echo $basic_machine | sed 's/^[^-]*-//'` ;; c55x-*) basic_machine=tic55x-`echo $basic_machine | sed 's/^[^-]*-//'` ;; c6x-*) basic_machine=tic6x-`echo $basic_machine | sed 's/^[^-]*-//'` ;; c90) basic_machine=c90-cray os=-unicos ;; cegcc) basic_machine=arm-unknown os=-cegcc ;; convex-c1) basic_machine=c1-convex os=-bsd ;; convex-c2) basic_machine=c2-convex os=-bsd ;; convex-c32) basic_machine=c32-convex os=-bsd ;; convex-c34) basic_machine=c34-convex os=-bsd ;; convex-c38) basic_machine=c38-convex os=-bsd ;; cray | j90) basic_machine=j90-cray os=-unicos ;; craynv) basic_machine=craynv-cray os=-unicosmp ;; cr16 | cr16-*) basic_machine=cr16-unknown os=-elf ;; crds | unos) basic_machine=m68k-crds ;; crisv32 | crisv32-* | etraxfs*) basic_machine=crisv32-axis ;; cris | cris-* | etrax*) basic_machine=cris-axis ;; crx) basic_machine=crx-unknown os=-elf ;; da30 | da30-*) basic_machine=m68k-da30 ;; decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn) basic_machine=mips-dec ;; decsystem10* | dec10*) basic_machine=pdp10-dec os=-tops10 ;; decsystem20* | dec20*) basic_machine=pdp10-dec os=-tops20 ;; delta | 3300 | motorola-3300 | motorola-delta \ | 3300-motorola | delta-motorola) basic_machine=m68k-motorola ;; delta88) basic_machine=m88k-motorola os=-sysv3 ;; dicos) basic_machine=i686-pc os=-dicos ;; djgpp) basic_machine=i586-pc os=-msdosdjgpp ;; dpx20 | dpx20-*) basic_machine=rs6000-bull os=-bosx ;; dpx2* | dpx2*-bull) basic_machine=m68k-bull os=-sysv3 ;; ebmon29k) basic_machine=a29k-amd os=-ebmon ;; elxsi) basic_machine=elxsi-elxsi os=-bsd ;; encore | umax | mmax) basic_machine=ns32k-encore ;; es1800 | OSE68k | ose68k | ose | OSE) basic_machine=m68k-ericsson os=-ose ;; fx2800) basic_machine=i860-alliant ;; genix) basic_machine=ns32k-ns ;; gmicro) basic_machine=tron-gmicro os=-sysv ;; go32) basic_machine=i386-pc os=-go32 ;; h3050r* | hiux*) basic_machine=hppa1.1-hitachi os=-hiuxwe2 ;; h8300hms) basic_machine=h8300-hitachi os=-hms ;; h8300xray) basic_machine=h8300-hitachi os=-xray ;; h8500hms) basic_machine=h8500-hitachi os=-hms ;; harris) basic_machine=m88k-harris os=-sysv3 ;; hp300-*) basic_machine=m68k-hp ;; hp300bsd) basic_machine=m68k-hp os=-bsd ;; hp300hpux) basic_machine=m68k-hp os=-hpux ;; hp3k9[0-9][0-9] | hp9[0-9][0-9]) basic_machine=hppa1.0-hp ;; hp9k2[0-9][0-9] | hp9k31[0-9]) basic_machine=m68000-hp ;; hp9k3[2-9][0-9]) basic_machine=m68k-hp ;; hp9k6[0-9][0-9] | hp6[0-9][0-9]) basic_machine=hppa1.0-hp ;; hp9k7[0-79][0-9] | hp7[0-79][0-9]) basic_machine=hppa1.1-hp ;; hp9k78[0-9] | hp78[0-9]) # FIXME: really hppa2.0-hp basic_machine=hppa1.1-hp ;; hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) # FIXME: really hppa2.0-hp basic_machine=hppa1.1-hp ;; hp9k8[0-9][13679] | hp8[0-9][13679]) basic_machine=hppa1.1-hp ;; hp9k8[0-9][0-9] | hp8[0-9][0-9]) basic_machine=hppa1.0-hp ;; hppa-next) os=-nextstep3 ;; hppaosf) basic_machine=hppa1.1-hp os=-osf ;; hppro) basic_machine=hppa1.1-hp os=-proelf ;; i370-ibm* | ibm*) basic_machine=i370-ibm ;; i*86v32) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-sysv32 ;; i*86v4*) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-sysv4 ;; i*86v) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-sysv ;; i*86sol2) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-solaris2 ;; i386mach) basic_machine=i386-mach os=-mach ;; i386-vsta | vsta) basic_machine=i386-unknown os=-vsta ;; iris | iris4d) basic_machine=mips-sgi case $os in -irix*) ;; *) os=-irix4 ;; esac ;; isi68 | isi) basic_machine=m68k-isi os=-sysv ;; leon-*|leon[3-9]-*) basic_machine=sparc-`echo $basic_machine | sed 's/-.*//'` ;; m68knommu) basic_machine=m68k-unknown os=-linux ;; m68knommu-*) basic_machine=m68k-`echo $basic_machine | sed 's/^[^-]*-//'` os=-linux ;; m88k-omron*) basic_machine=m88k-omron ;; magnum | m3230) basic_machine=mips-mips os=-sysv ;; merlin) basic_machine=ns32k-utek os=-sysv ;; microblaze*) basic_machine=microblaze-xilinx ;; mingw64) basic_machine=x86_64-pc os=-mingw64 ;; mingw32) basic_machine=i686-pc os=-mingw32 ;; mingw32ce) basic_machine=arm-unknown os=-mingw32ce ;; miniframe) basic_machine=m68000-convergent ;; *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*) basic_machine=m68k-atari os=-mint ;; mips3*-*) basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'` ;; mips3*) basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown ;; monitor) basic_machine=m68k-rom68k os=-coff ;; morphos) basic_machine=powerpc-unknown os=-morphos ;; moxiebox) basic_machine=moxie-unknown os=-moxiebox ;; msdos) basic_machine=i386-pc os=-msdos ;; ms1-*) basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'` ;; msys) basic_machine=i686-pc os=-msys ;; mvs) basic_machine=i370-ibm os=-mvs ;; nacl) basic_machine=le32-unknown os=-nacl ;; ncr3000) basic_machine=i486-ncr os=-sysv4 ;; netbsd386) basic_machine=i386-unknown os=-netbsd ;; netwinder) basic_machine=armv4l-rebel os=-linux ;; news | news700 | news800 | news900) basic_machine=m68k-sony os=-newsos ;; news1000) basic_machine=m68030-sony os=-newsos ;; news-3600 | risc-news) basic_machine=mips-sony os=-newsos ;; necv70) basic_machine=v70-nec os=-sysv ;; next | m*-next ) basic_machine=m68k-next case $os in -nextstep* ) ;; -ns2*) os=-nextstep2 ;; *) os=-nextstep3 ;; esac ;; nh3000) basic_machine=m68k-harris os=-cxux ;; nh[45]000) basic_machine=m88k-harris os=-cxux ;; nindy960) basic_machine=i960-intel os=-nindy ;; mon960) basic_machine=i960-intel os=-mon960 ;; nonstopux) basic_machine=mips-compaq os=-nonstopux ;; np1) basic_machine=np1-gould ;; neo-tandem) basic_machine=neo-tandem ;; nse-tandem) basic_machine=nse-tandem ;; nsr-tandem) basic_machine=nsr-tandem ;; op50n-* | op60c-*) basic_machine=hppa1.1-oki os=-proelf ;; openrisc | openrisc-*) basic_machine=or32-unknown ;; os400) basic_machine=powerpc-ibm os=-os400 ;; OSE68000 | ose68000) basic_machine=m68000-ericsson os=-ose ;; os68k) basic_machine=m68k-none os=-os68k ;; pa-hitachi) basic_machine=hppa1.1-hitachi os=-hiuxwe2 ;; paragon) basic_machine=i860-intel os=-osf ;; parisc) basic_machine=hppa-unknown os=-linux ;; parisc-*) basic_machine=hppa-`echo $basic_machine | sed 's/^[^-]*-//'` os=-linux ;; pbd) basic_machine=sparc-tti ;; pbb) basic_machine=m68k-tti ;; pc532 | pc532-*) basic_machine=ns32k-pc532 ;; pc98) basic_machine=i386-pc ;; pc98-*) basic_machine=i386-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentium | p5 | k5 | k6 | nexgen | viac3) basic_machine=i586-pc ;; pentiumpro | p6 | 6x86 | athlon | athlon_*) basic_machine=i686-pc ;; pentiumii | pentium2 | pentiumiii | pentium3) basic_machine=i686-pc ;; pentium4) basic_machine=i786-pc ;; pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentiumpro-* | p6-* | 6x86-* | athlon-*) basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*) basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentium4-*) basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pn) basic_machine=pn-gould ;; power) basic_machine=power-ibm ;; ppc | ppcbe) basic_machine=powerpc-unknown ;; ppc-* | ppcbe-*) basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ppcle | powerpclittle | ppc-le | powerpc-little) basic_machine=powerpcle-unknown ;; ppcle-* | powerpclittle-*) basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ppc64) basic_machine=powerpc64-unknown ;; ppc64-* | ppc64p7-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ppc64le | powerpc64little | ppc64-le | powerpc64-little) basic_machine=powerpc64le-unknown ;; ppc64le-* | powerpc64little-*) basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ps2) basic_machine=i386-ibm ;; pw32) basic_machine=i586-unknown os=-pw32 ;; rdos | rdos64) basic_machine=x86_64-pc os=-rdos ;; rdos32) basic_machine=i386-pc os=-rdos ;; rom68k) basic_machine=m68k-rom68k os=-coff ;; rm[46]00) basic_machine=mips-siemens ;; rtpc | rtpc-*) basic_machine=romp-ibm ;; s390 | s390-*) basic_machine=s390-ibm ;; s390x | s390x-*) basic_machine=s390x-ibm ;; sa29200) basic_machine=a29k-amd os=-udi ;; sb1) basic_machine=mipsisa64sb1-unknown ;; sb1el) basic_machine=mipsisa64sb1el-unknown ;; sde) basic_machine=mipsisa32-sde os=-elf ;; sei) basic_machine=mips-sei os=-seiux ;; sequent) basic_machine=i386-sequent ;; sh) basic_machine=sh-hitachi os=-hms ;; sh5el) basic_machine=sh5le-unknown ;; sh64) basic_machine=sh64-unknown ;; sparclite-wrs | simso-wrs) basic_machine=sparclite-wrs os=-vxworks ;; sps7) basic_machine=m68k-bull os=-sysv2 ;; spur) basic_machine=spur-unknown ;; st2000) basic_machine=m68k-tandem ;; stratus) basic_machine=i860-stratus os=-sysv4 ;; strongarm-* | thumb-*) basic_machine=arm-`echo $basic_machine | sed 's/^[^-]*-//'` ;; sun2) basic_machine=m68000-sun ;; sun2os3) basic_machine=m68000-sun os=-sunos3 ;; sun2os4) basic_machine=m68000-sun os=-sunos4 ;; sun3os3) basic_machine=m68k-sun os=-sunos3 ;; sun3os4) basic_machine=m68k-sun os=-sunos4 ;; sun4os3) basic_machine=sparc-sun os=-sunos3 ;; sun4os4) basic_machine=sparc-sun os=-sunos4 ;; sun4sol2) basic_machine=sparc-sun os=-solaris2 ;; sun3 | sun3-*) basic_machine=m68k-sun ;; sun4) basic_machine=sparc-sun ;; sun386 | sun386i | roadrunner) basic_machine=i386-sun ;; sv1) basic_machine=sv1-cray os=-unicos ;; symmetry) basic_machine=i386-sequent os=-dynix ;; t3e) basic_machine=alphaev5-cray os=-unicos ;; t90) basic_machine=t90-cray os=-unicos ;; tile*) basic_machine=$basic_machine-unknown os=-linux-gnu ;; tx39) basic_machine=mipstx39-unknown ;; tx39el) basic_machine=mipstx39el-unknown ;; toad1) basic_machine=pdp10-xkl os=-tops20 ;; tower | tower-32) basic_machine=m68k-ncr ;; tpf) basic_machine=s390x-ibm os=-tpf ;; udi29k) basic_machine=a29k-amd os=-udi ;; ultra3) basic_machine=a29k-nyu os=-sym1 ;; v810 | necv810) basic_machine=v810-nec os=-none ;; vaxv) basic_machine=vax-dec os=-sysv ;; vms) basic_machine=vax-dec os=-vms ;; vpp*|vx|vx-*) basic_machine=f301-fujitsu ;; vxworks960) basic_machine=i960-wrs os=-vxworks ;; vxworks68) basic_machine=m68k-wrs os=-vxworks ;; vxworks29k) basic_machine=a29k-wrs os=-vxworks ;; w65*) basic_machine=w65-wdc os=-none ;; w89k-*) basic_machine=hppa1.1-winbond os=-proelf ;; xbox) basic_machine=i686-pc os=-mingw32 ;; xps | xps100) basic_machine=xps100-honeywell ;; xscale-* | xscalee[bl]-*) basic_machine=`echo $basic_machine | sed 's/^xscale/arm/'` ;; ymp) basic_machine=ymp-cray os=-unicos ;; z8k-*-coff) basic_machine=z8k-unknown os=-sim ;; z80-*-coff) basic_machine=z80-unknown os=-sim ;; none) basic_machine=none-none os=-none ;; # Here we handle the default manufacturer of certain CPU types. It is in # some cases the only manufacturer, in others, it is the most popular. w89k) basic_machine=hppa1.1-winbond ;; op50n) basic_machine=hppa1.1-oki ;; op60c) basic_machine=hppa1.1-oki ;; romp) basic_machine=romp-ibm ;; mmix) basic_machine=mmix-knuth ;; rs6000) basic_machine=rs6000-ibm ;; vax) basic_machine=vax-dec ;; pdp10) # there are many clones, so DEC is not a safe bet basic_machine=pdp10-unknown ;; pdp11) basic_machine=pdp11-dec ;; we32k) basic_machine=we32k-att ;; sh[1234] | sh[24]a | sh[24]aeb | sh[34]eb | sh[1234]le | sh[23]ele) basic_machine=sh-unknown ;; sparc | sparcv8 | sparcv9 | sparcv9b | sparcv9v) basic_machine=sparc-sun ;; cydra) basic_machine=cydra-cydrome ;; orion) basic_machine=orion-highlevel ;; orion105) basic_machine=clipper-highlevel ;; mac | mpw | mac-mpw) basic_machine=m68k-apple ;; pmac | pmac-mpw) basic_machine=powerpc-apple ;; *-unknown) # Make sure to match an already-canonicalized machine name. ;; *) echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 exit 1 ;; esac # Here we canonicalize certain aliases for manufacturers. case $basic_machine in *-digital*) basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'` ;; *-commodore*) basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'` ;; *) ;; esac # Decode manufacturer-specific aliases for certain operating systems. if [ x"$os" != x"" ] then case $os in # First match some system type aliases # that might get confused with valid system types. # -solaris* is a basic system type, with this one exception. -auroraux) os=-auroraux ;; -solaris1 | -solaris1.*) os=`echo $os | sed -e 's|solaris1|sunos4|'` ;; -solaris) os=-solaris2 ;; -svr4*) os=-sysv4 ;; -unixware*) os=-sysv4.2uw ;; -gnu/linux*) os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'` ;; # First accept the basic system types. # The portable systems comes first. # Each alternative MUST END IN A *, to match a version number. # -sysv* is not here because it comes later, after sysvr4. -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ | -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\ | -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \ | -sym* | -kopensolaris* | -plan9* \ | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ | -aos* | -aros* \ | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \ | -bitrig* | -openbsd* | -solidbsd* \ | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \ | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \ | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ | -chorusos* | -chorusrdb* | -cegcc* \ | -cygwin* | -msys* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ | -mingw32* | -mingw64* | -linux-gnu* | -linux-android* \ | -linux-newlib* | -linux-musl* | -linux-uclibc* \ | -uxpv* | -beos* | -mpeix* | -udk* | -moxiebox* \ | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \ | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \ | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \ | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \ | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \ | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \ | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es* | -tirtos*) # Remember, each alternative MUST END IN *, to match a version number. ;; -qnx*) case $basic_machine in x86-* | i*86-*) ;; *) os=-nto$os ;; esac ;; -nto-qnx*) ;; -nto*) os=`echo $os | sed -e 's|nto|nto-qnx|'` ;; -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \ | -windows* | -osx | -abug | -netware* | -os9* | -beos* | -haiku* \ | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*) ;; -mac*) os=`echo $os | sed -e 's|mac|macos|'` ;; -linux-dietlibc) os=-linux-dietlibc ;; -linux*) os=`echo $os | sed -e 's|linux|linux-gnu|'` ;; -sunos5*) os=`echo $os | sed -e 's|sunos5|solaris2|'` ;; -sunos6*) os=`echo $os | sed -e 's|sunos6|solaris3|'` ;; -opened*) os=-openedition ;; -os400*) os=-os400 ;; -wince*) os=-wince ;; -osfrose*) os=-osfrose ;; -osf*) os=-osf ;; -utek*) os=-bsd ;; -dynix*) os=-bsd ;; -acis*) os=-aos ;; -atheos*) os=-atheos ;; -syllable*) os=-syllable ;; -386bsd) os=-bsd ;; -ctix* | -uts*) os=-sysv ;; -nova*) os=-rtmk-nova ;; -ns2 ) os=-nextstep2 ;; -nsk*) os=-nsk ;; # Preserve the version number of sinix5. -sinix5.*) os=`echo $os | sed -e 's|sinix|sysv|'` ;; -sinix*) os=-sysv4 ;; -tpf*) os=-tpf ;; -triton*) os=-sysv3 ;; -oss*) os=-sysv3 ;; -svr4) os=-sysv4 ;; -svr3) os=-sysv3 ;; -sysvr4) os=-sysv4 ;; # This must come after -sysvr4. -sysv*) ;; -ose*) os=-ose ;; -es1800*) os=-ose ;; -xenix) os=-xenix ;; -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) os=-mint ;; -aros*) os=-aros ;; -zvmoe) os=-zvmoe ;; -dicos*) os=-dicos ;; -nacl*) ;; -none) ;; *) # Get rid of the `-' at the beginning of $os. os=`echo $os | sed 's/[^-]*-//'` echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2 exit 1 ;; esac else # Here we handle the default operating systems that come with various machines. # The value should be what the vendor currently ships out the door with their # machine or put another way, the most popular os provided with the machine. # Note that if you're going to try to match "-MANUFACTURER" here (say, # "-sun"), then you have to tell the case statement up towards the top # that MANUFACTURER isn't an operating system. Otherwise, code above # will signal an error saying that MANUFACTURER isn't an operating # system, and we'll never get to this point. case $basic_machine in score-*) os=-elf ;; spu-*) os=-elf ;; *-acorn) os=-riscix1.2 ;; arm*-rebel) os=-linux ;; arm*-semi) os=-aout ;; c4x-* | tic4x-*) os=-coff ;; c8051-*) os=-elf ;; hexagon-*) os=-elf ;; tic54x-*) os=-coff ;; tic55x-*) os=-coff ;; tic6x-*) os=-coff ;; # This must come before the *-dec entry. pdp10-*) os=-tops20 ;; pdp11-*) os=-none ;; *-dec | vax-*) os=-ultrix4.2 ;; m68*-apollo) os=-domain ;; i386-sun) os=-sunos4.0.2 ;; m68000-sun) os=-sunos3 ;; m68*-cisco) os=-aout ;; mep-*) os=-elf ;; mips*-cisco) os=-elf ;; mips*-*) os=-elf ;; or32-*) os=-coff ;; *-tti) # must be before sparc entry or we get the wrong os. os=-sysv3 ;; sparc-* | *-sun) os=-sunos4.1.1 ;; *-be) os=-beos ;; *-haiku) os=-haiku ;; *-ibm) os=-aix ;; *-knuth) os=-mmixware ;; *-wec) os=-proelf ;; *-winbond) os=-proelf ;; *-oki) os=-proelf ;; *-hp) os=-hpux ;; *-hitachi) os=-hiux ;; i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) os=-sysv ;; *-cbm) os=-amigaos ;; *-dg) os=-dgux ;; *-dolphin) os=-sysv3 ;; m68k-ccur) os=-rtu ;; m88k-omron*) os=-luna ;; *-next ) os=-nextstep ;; *-sequent) os=-ptx ;; *-crds) os=-unos ;; *-ns) os=-genix ;; i370-*) os=-mvs ;; *-next) os=-nextstep3 ;; *-gould) os=-sysv ;; *-highlevel) os=-bsd ;; *-encore) os=-bsd ;; *-sgi) os=-irix ;; *-siemens) os=-sysv4 ;; *-masscomp) os=-rtu ;; f30[01]-fujitsu | f700-fujitsu) os=-uxpv ;; *-rom68k) os=-coff ;; *-*bug) os=-coff ;; *-apple) os=-macos ;; *-atari*) os=-mint ;; *) os=-none ;; esac fi # Here we handle the case where we know the os, and the CPU type, but not the # manufacturer. We pick the logical manufacturer. vendor=unknown case $basic_machine in *-unknown) case $os in -riscix*) vendor=acorn ;; -sunos*) vendor=sun ;; -cnk*|-aix*) vendor=ibm ;; -beos*) vendor=be ;; -hpux*) vendor=hp ;; -mpeix*) vendor=hp ;; -hiux*) vendor=hitachi ;; -unos*) vendor=crds ;; -dgux*) vendor=dg ;; -luna*) vendor=omron ;; -genix*) vendor=ns ;; -mvs* | -opened*) vendor=ibm ;; -os400*) vendor=ibm ;; -ptx*) vendor=sequent ;; -tpf*) vendor=ibm ;; -vxsim* | -vxworks* | -windiss*) vendor=wrs ;; -aux*) vendor=apple ;; -hms*) vendor=hitachi ;; -mpw* | -macos*) vendor=apple ;; -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) vendor=atari ;; -vos*) vendor=stratus ;; esac basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"` ;; esac echo $basic_machine$os exit # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "timestamp='" # time-stamp-format: "%:y-%02m-%02d" # time-stamp-end: "'" # End: giza-1.5.0/build/depcomp000077500000000000000000000560161477367113400151500ustar00rootroot00000000000000#! /bin/sh # depcomp - compile a program generating dependencies as side-effects scriptversion=2013-05-30.07; # UTC # Copyright (C) 1999-2014 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # Originally written by Alexandre Oliva . case $1 in '') echo "$0: No command. Try '$0 --help' for more information." 1>&2 exit 1; ;; -h | --h*) cat <<\EOF Usage: depcomp [--help] [--version] PROGRAM [ARGS] Run PROGRAMS ARGS to compile a file, generating dependencies as side-effects. Environment variables: depmode Dependency tracking mode. source Source file read by 'PROGRAMS ARGS'. object Object file output by 'PROGRAMS ARGS'. DEPDIR directory where to store dependencies. depfile Dependency file to output. tmpdepfile Temporary file to use when outputting dependencies. libtool Whether libtool is used (yes/no). Report bugs to . EOF exit $? ;; -v | --v*) echo "depcomp $scriptversion" exit $? ;; esac # Get the directory component of the given path, and save it in the # global variables '$dir'. Note that this directory component will # be either empty or ending with a '/' character. This is deliberate. set_dir_from () { case $1 in */*) dir=`echo "$1" | sed -e 's|/[^/]*$|/|'`;; *) dir=;; esac } # Get the suffix-stripped basename of the given path, and save it the # global variable '$base'. set_base_from () { base=`echo "$1" | sed -e 's|^.*/||' -e 's/\.[^.]*$//'` } # If no dependency file was actually created by the compiler invocation, # we still have to create a dummy depfile, to avoid errors with the # Makefile "include basename.Plo" scheme. make_dummy_depfile () { echo "#dummy" > "$depfile" } # Factor out some common post-processing of the generated depfile. # Requires the auxiliary global variable '$tmpdepfile' to be set. aix_post_process_depfile () { # If the compiler actually managed to produce a dependency file, # post-process it. if test -f "$tmpdepfile"; then # Each line is of the form 'foo.o: dependency.h'. # Do two passes, one to just change these to # $object: dependency.h # and one to simply output # dependency.h: # which is needed to avoid the deleted-header problem. { sed -e "s,^.*\.[$lower]*:,$object:," < "$tmpdepfile" sed -e "s,^.*\.[$lower]*:[$tab ]*,," -e 's,$,:,' < "$tmpdepfile" } > "$depfile" rm -f "$tmpdepfile" else make_dummy_depfile fi } # A tabulation character. tab=' ' # A newline character. nl=' ' # Character ranges might be problematic outside the C locale. # These definitions help. upper=ABCDEFGHIJKLMNOPQRSTUVWXYZ lower=abcdefghijklmnopqrstuvwxyz digits=0123456789 alpha=${upper}${lower} if test -z "$depmode" || test -z "$source" || test -z "$object"; then echo "depcomp: Variables source, object and depmode must be set" 1>&2 exit 1 fi # Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po. depfile=${depfile-`echo "$object" | sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`} tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`} rm -f "$tmpdepfile" # Avoid interferences from the environment. gccflag= dashmflag= # Some modes work just like other modes, but use different flags. We # parameterize here, but still list the modes in the big case below, # to make depend.m4 easier to write. Note that we *cannot* use a case # here, because this file can only contain one case statement. if test "$depmode" = hp; then # HP compiler uses -M and no extra arg. gccflag=-M depmode=gcc fi if test "$depmode" = dashXmstdout; then # This is just like dashmstdout with a different argument. dashmflag=-xM depmode=dashmstdout fi cygpath_u="cygpath -u -f -" if test "$depmode" = msvcmsys; then # This is just like msvisualcpp but w/o cygpath translation. # Just convert the backslash-escaped backslashes to single forward # slashes to satisfy depend.m4 cygpath_u='sed s,\\\\,/,g' depmode=msvisualcpp fi if test "$depmode" = msvc7msys; then # This is just like msvc7 but w/o cygpath translation. # Just convert the backslash-escaped backslashes to single forward # slashes to satisfy depend.m4 cygpath_u='sed s,\\\\,/,g' depmode=msvc7 fi if test "$depmode" = xlc; then # IBM C/C++ Compilers xlc/xlC can output gcc-like dependency information. gccflag=-qmakedep=gcc,-MF depmode=gcc fi case "$depmode" in gcc3) ## gcc 3 implements dependency tracking that does exactly what ## we want. Yay! Note: for some reason libtool 1.4 doesn't like ## it if -MD -MP comes after the -MF stuff. Hmm. ## Unfortunately, FreeBSD c89 acceptance of flags depends upon ## the command line argument order; so add the flags where they ## appear in depend2.am. Note that the slowdown incurred here ## affects only configure: in makefiles, %FASTDEP% shortcuts this. for arg do case $arg in -c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;; *) set fnord "$@" "$arg" ;; esac shift # fnord shift # $arg done "$@" stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi mv "$tmpdepfile" "$depfile" ;; gcc) ## Note that this doesn't just cater to obsosete pre-3.x GCC compilers. ## but also to in-use compilers like IMB xlc/xlC and the HP C compiler. ## (see the conditional assignment to $gccflag above). ## There are various ways to get dependency output from gcc. Here's ## why we pick this rather obscure method: ## - Don't want to use -MD because we'd like the dependencies to end ## up in a subdir. Having to rename by hand is ugly. ## (We might end up doing this anyway to support other compilers.) ## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like ## -MM, not -M (despite what the docs say). Also, it might not be ## supported by the other compilers which use the 'gcc' depmode. ## - Using -M directly means running the compiler twice (even worse ## than renaming). if test -z "$gccflag"; then gccflag=-MD, fi "$@" -Wp,"$gccflag$tmpdepfile" stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" echo "$object : \\" > "$depfile" # The second -e expression handles DOS-style file names with drive # letters. sed -e 's/^[^:]*: / /' \ -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile" ## This next piece of magic avoids the "deleted header file" problem. ## The problem is that when a header file which appears in a .P file ## is deleted, the dependency causes make to die (because there is ## typically no way to rebuild the header). We avoid this by adding ## dummy dependencies for each header file. Too bad gcc doesn't do ## this for us directly. ## Some versions of gcc put a space before the ':'. On the theory ## that the space means something, we add a space to the output as ## well. hp depmode also adds that space, but also prefixes the VPATH ## to the object. Take care to not repeat it in the output. ## Some versions of the HPUX 10.20 sed can't process this invocation ## correctly. Breaking it into two sed invocations is a workaround. tr ' ' "$nl" < "$tmpdepfile" \ | sed -e 's/^\\$//' -e '/^$/d' -e "s|.*$object$||" -e '/:$/d' \ | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; hp) # This case exists only to let depend.m4 do its work. It works by # looking at the text of this script. This case will never be run, # since it is checked for above. exit 1 ;; sgi) if test "$libtool" = yes; then "$@" "-Wp,-MDupdate,$tmpdepfile" else "$@" -MDupdate "$tmpdepfile" fi stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files echo "$object : \\" > "$depfile" # Clip off the initial element (the dependent). Don't try to be # clever and replace this with sed code, as IRIX sed won't handle # lines with more than a fixed number of characters (4096 in # IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines; # the IRIX cc adds comments like '#:fec' to the end of the # dependency line. tr ' ' "$nl" < "$tmpdepfile" \ | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' \ | tr "$nl" ' ' >> "$depfile" echo >> "$depfile" # The second pass generates a dummy entry for each header file. tr ' ' "$nl" < "$tmpdepfile" \ | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \ >> "$depfile" else make_dummy_depfile fi rm -f "$tmpdepfile" ;; xlc) # This case exists only to let depend.m4 do its work. It works by # looking at the text of this script. This case will never be run, # since it is checked for above. exit 1 ;; aix) # The C for AIX Compiler uses -M and outputs the dependencies # in a .u file. In older versions, this file always lives in the # current directory. Also, the AIX compiler puts '$object:' at the # start of each line; $object doesn't have directory information. # Version 6 uses the directory in both cases. set_dir_from "$object" set_base_from "$object" if test "$libtool" = yes; then tmpdepfile1=$dir$base.u tmpdepfile2=$base.u tmpdepfile3=$dir.libs/$base.u "$@" -Wc,-M else tmpdepfile1=$dir$base.u tmpdepfile2=$dir$base.u tmpdepfile3=$dir$base.u "$@" -M fi stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" exit $stat fi for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" do test -f "$tmpdepfile" && break done aix_post_process_depfile ;; tcc) # tcc (Tiny C Compiler) understand '-MD -MF file' since version 0.9.26 # FIXME: That version still under development at the moment of writing. # Make that this statement remains true also for stable, released # versions. # It will wrap lines (doesn't matter whether long or short) with a # trailing '\', as in: # # foo.o : \ # foo.c \ # foo.h \ # # It will put a trailing '\' even on the last line, and will use leading # spaces rather than leading tabs (at least since its commit 0394caf7 # "Emit spaces for -MD"). "$@" -MD -MF "$tmpdepfile" stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" # Each non-empty line is of the form 'foo.o : \' or ' dep.h \'. # We have to change lines of the first kind to '$object: \'. sed -e "s|.*:|$object :|" < "$tmpdepfile" > "$depfile" # And for each line of the second kind, we have to emit a 'dep.h:' # dummy dependency, to avoid the deleted-header problem. sed -n -e 's|^ *\(.*\) *\\$|\1:|p' < "$tmpdepfile" >> "$depfile" rm -f "$tmpdepfile" ;; ## The order of this option in the case statement is important, since the ## shell code in configure will try each of these formats in the order ## listed in this file. A plain '-MD' option would be understood by many ## compilers, so we must ensure this comes after the gcc and icc options. pgcc) # Portland's C compiler understands '-MD'. # Will always output deps to 'file.d' where file is the root name of the # source file under compilation, even if file resides in a subdirectory. # The object file name does not affect the name of the '.d' file. # pgcc 10.2 will output # foo.o: sub/foo.c sub/foo.h # and will wrap long lines using '\' : # foo.o: sub/foo.c ... \ # sub/foo.h ... \ # ... set_dir_from "$object" # Use the source, not the object, to determine the base name, since # that's sadly what pgcc will do too. set_base_from "$source" tmpdepfile=$base.d # For projects that build the same source file twice into different object # files, the pgcc approach of using the *source* file root name can cause # problems in parallel builds. Use a locking strategy to avoid stomping on # the same $tmpdepfile. lockdir=$base.d-lock trap " echo '$0: caught signal, cleaning up...' >&2 rmdir '$lockdir' exit 1 " 1 2 13 15 numtries=100 i=$numtries while test $i -gt 0; do # mkdir is a portable test-and-set. if mkdir "$lockdir" 2>/dev/null; then # This process acquired the lock. "$@" -MD stat=$? # Release the lock. rmdir "$lockdir" break else # If the lock is being held by a different process, wait # until the winning process is done or we timeout. while test -d "$lockdir" && test $i -gt 0; do sleep 1 i=`expr $i - 1` done fi i=`expr $i - 1` done trap - 1 2 13 15 if test $i -le 0; then echo "$0: failed to acquire lock after $numtries attempts" >&2 echo "$0: check lockdir '$lockdir'" >&2 exit 1 fi if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" # Each line is of the form `foo.o: dependent.h', # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'. # Do two passes, one to just change these to # `$object: dependent.h' and one to simply `dependent.h:'. sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile" # Some versions of the HPUX 10.20 sed can't process this invocation # correctly. Breaking it into two sed invocations is a workaround. sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" \ | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; hp2) # The "hp" stanza above does not work with aCC (C++) and HP's ia64 # compilers, which have integrated preprocessors. The correct option # to use with these is +Maked; it writes dependencies to a file named # 'foo.d', which lands next to the object file, wherever that # happens to be. # Much of this is similar to the tru64 case; see comments there. set_dir_from "$object" set_base_from "$object" if test "$libtool" = yes; then tmpdepfile1=$dir$base.d tmpdepfile2=$dir.libs/$base.d "$@" -Wc,+Maked else tmpdepfile1=$dir$base.d tmpdepfile2=$dir$base.d "$@" +Maked fi stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile1" "$tmpdepfile2" exit $stat fi for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" do test -f "$tmpdepfile" && break done if test -f "$tmpdepfile"; then sed -e "s,^.*\.[$lower]*:,$object:," "$tmpdepfile" > "$depfile" # Add 'dependent.h:' lines. sed -ne '2,${ s/^ *// s/ \\*$// s/$/:/ p }' "$tmpdepfile" >> "$depfile" else make_dummy_depfile fi rm -f "$tmpdepfile" "$tmpdepfile2" ;; tru64) # The Tru64 compiler uses -MD to generate dependencies as a side # effect. 'cc -MD -o foo.o ...' puts the dependencies into 'foo.o.d'. # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put # dependencies in 'foo.d' instead, so we check for that too. # Subdirectories are respected. set_dir_from "$object" set_base_from "$object" if test "$libtool" = yes; then # Libtool generates 2 separate objects for the 2 libraries. These # two compilations output dependencies in $dir.libs/$base.o.d and # in $dir$base.o.d. We have to check for both files, because # one of the two compilations can be disabled. We should prefer # $dir$base.o.d over $dir.libs/$base.o.d because the latter is # automatically cleaned when .libs/ is deleted, while ignoring # the former would cause a distcleancheck panic. tmpdepfile1=$dir$base.o.d # libtool 1.5 tmpdepfile2=$dir.libs/$base.o.d # Likewise. tmpdepfile3=$dir.libs/$base.d # Compaq CCC V6.2-504 "$@" -Wc,-MD else tmpdepfile1=$dir$base.d tmpdepfile2=$dir$base.d tmpdepfile3=$dir$base.d "$@" -MD fi stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" exit $stat fi for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" do test -f "$tmpdepfile" && break done # Same post-processing that is required for AIX mode. aix_post_process_depfile ;; msvc7) if test "$libtool" = yes; then showIncludes=-Wc,-showIncludes else showIncludes=-showIncludes fi "$@" $showIncludes > "$tmpdepfile" stat=$? grep -v '^Note: including file: ' "$tmpdepfile" if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" echo "$object : \\" > "$depfile" # The first sed program below extracts the file names and escapes # backslashes for cygpath. The second sed program outputs the file # name when reading, but also accumulates all include files in the # hold buffer in order to output them again at the end. This only # works with sed implementations that can handle large buffers. sed < "$tmpdepfile" -n ' /^Note: including file: *\(.*\)/ { s//\1/ s/\\/\\\\/g p }' | $cygpath_u | sort -u | sed -n ' s/ /\\ /g s/\(.*\)/'"$tab"'\1 \\/p s/.\(.*\) \\/\1:/ H $ { s/.*/'"$tab"'/ G p }' >> "$depfile" echo >> "$depfile" # make sure the fragment doesn't end with a backslash rm -f "$tmpdepfile" ;; msvc7msys) # This case exists only to let depend.m4 do its work. It works by # looking at the text of this script. This case will never be run, # since it is checked for above. exit 1 ;; #nosideeffect) # This comment above is used by automake to tell side-effect # dependency tracking mechanisms from slower ones. dashmstdout) # Important note: in order to support this mode, a compiler *must* # always write the preprocessed file to stdout, regardless of -o. "$@" || exit $? # Remove the call to Libtool. if test "$libtool" = yes; then while test "X$1" != 'X--mode=compile'; do shift done shift fi # Remove '-o $object'. IFS=" " for arg do case $arg in -o) shift ;; $object) shift ;; *) set fnord "$@" "$arg" shift # fnord shift # $arg ;; esac done test -z "$dashmflag" && dashmflag=-M # Require at least two characters before searching for ':' # in the target name. This is to cope with DOS-style filenames: # a dependency such as 'c:/foo/bar' could be seen as target 'c' otherwise. "$@" $dashmflag | sed "s|^[$tab ]*[^:$tab ][^:][^:]*:[$tab ]*|$object: |" > "$tmpdepfile" rm -f "$depfile" cat < "$tmpdepfile" > "$depfile" # Some versions of the HPUX 10.20 sed can't process this sed invocation # correctly. Breaking it into two sed invocations is a workaround. tr ' ' "$nl" < "$tmpdepfile" \ | sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' \ | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; dashXmstdout) # This case only exists to satisfy depend.m4. It is never actually # run, as this mode is specially recognized in the preamble. exit 1 ;; makedepend) "$@" || exit $? # Remove any Libtool call if test "$libtool" = yes; then while test "X$1" != 'X--mode=compile'; do shift done shift fi # X makedepend shift cleared=no eat=no for arg do case $cleared in no) set ""; shift cleared=yes ;; esac if test $eat = yes; then eat=no continue fi case "$arg" in -D*|-I*) set fnord "$@" "$arg"; shift ;; # Strip any option that makedepend may not understand. Remove # the object too, otherwise makedepend will parse it as a source file. -arch) eat=yes ;; -*|$object) ;; *) set fnord "$@" "$arg"; shift ;; esac done obj_suffix=`echo "$object" | sed 's/^.*\././'` touch "$tmpdepfile" ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@" rm -f "$depfile" # makedepend may prepend the VPATH from the source file name to the object. # No need to regex-escape $object, excess matching of '.' is harmless. sed "s|^.*\($object *:\)|\1|" "$tmpdepfile" > "$depfile" # Some versions of the HPUX 10.20 sed can't process the last invocation # correctly. Breaking it into two sed invocations is a workaround. sed '1,2d' "$tmpdepfile" \ | tr ' ' "$nl" \ | sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' \ | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" "$tmpdepfile".bak ;; cpp) # Important note: in order to support this mode, a compiler *must* # always write the preprocessed file to stdout. "$@" || exit $? # Remove the call to Libtool. if test "$libtool" = yes; then while test "X$1" != 'X--mode=compile'; do shift done shift fi # Remove '-o $object'. IFS=" " for arg do case $arg in -o) shift ;; $object) shift ;; *) set fnord "$@" "$arg" shift # fnord shift # $arg ;; esac done "$@" -E \ | sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ | sed '$ s: \\$::' > "$tmpdepfile" rm -f "$depfile" echo "$object : \\" > "$depfile" cat < "$tmpdepfile" >> "$depfile" sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; msvisualcpp) # Important note: in order to support this mode, a compiler *must* # always write the preprocessed file to stdout. "$@" || exit $? # Remove the call to Libtool. if test "$libtool" = yes; then while test "X$1" != 'X--mode=compile'; do shift done shift fi IFS=" " for arg do case "$arg" in -o) shift ;; $object) shift ;; "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI") set fnord "$@" shift shift ;; *) set fnord "$@" "$arg" shift shift ;; esac done "$@" -E 2>/dev/null | sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile" rm -f "$depfile" echo "$object : \\" > "$depfile" sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::'"$tab"'\1 \\:p' >> "$depfile" echo "$tab" >> "$depfile" sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile" rm -f "$tmpdepfile" ;; msvcmsys) # This case exists only to let depend.m4 do its work. It works by # looking at the text of this script. This case will never be run, # since it is checked for above. exit 1 ;; none) exec "$@" ;; *) echo "Unknown depmode $depmode" 1>&2 exit 1 ;; esac exit 0 # Local Variables: # mode: shell-script # sh-indentation: 2 # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC" # time-stamp-end: "; # UTC" # End: giza-1.5.0/build/install-sh000077500000000000000000000345231477367113400155760ustar00rootroot00000000000000#!/bin/sh # install - install a program, script, or datafile scriptversion=2013-12-25.23; # UTC # This originates from X11R5 (mit/util/scripts/install.sh), which was # later released in X11R6 (xc/config/util/install.sh) with the # following copyright and license. # # Copyright (C) 1994 X Consortium # # Permission is hereby granted, free of charge, to any person obtaining a copy # of this software and associated documentation files (the "Software"), to # deal in the Software without restriction, including without limitation the # rights to use, copy, modify, merge, publish, distribute, sublicense, and/or # sell copies of the Software, and to permit persons to whom the Software is # furnished to do so, subject to the following conditions: # # The above copyright notice and this permission notice shall be included in # all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE # X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN # AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC- # TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. # # Except as contained in this notice, the name of the X Consortium shall not # be used in advertising or otherwise to promote the sale, use or other deal- # ings in this Software without prior written authorization from the X Consor- # tium. # # # FSF changes to this file are in the public domain. # # Calling this script install-sh is preferred over install.sh, to prevent # 'make' implicit rules from creating a file called install from it # when there is no Makefile. # # This script is compatible with the BSD install script, but was written # from scratch. tab=' ' nl=' ' IFS=" $tab$nl" # Set DOITPROG to "echo" to test this script. doit=${DOITPROG-} doit_exec=${doit:-exec} # Put in absolute file names if you don't have them in your path; # or use environment vars. chgrpprog=${CHGRPPROG-chgrp} chmodprog=${CHMODPROG-chmod} chownprog=${CHOWNPROG-chown} cmpprog=${CMPPROG-cmp} cpprog=${CPPROG-cp} mkdirprog=${MKDIRPROG-mkdir} mvprog=${MVPROG-mv} rmprog=${RMPROG-rm} stripprog=${STRIPPROG-strip} posix_mkdir= # Desired mode of installed file. mode=0755 chgrpcmd= chmodcmd=$chmodprog chowncmd= mvcmd=$mvprog rmcmd="$rmprog -f" stripcmd= src= dst= dir_arg= dst_arg= copy_on_change=false is_target_a_directory=possibly usage="\ Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE or: $0 [OPTION]... SRCFILES... DIRECTORY or: $0 [OPTION]... -t DIRECTORY SRCFILES... or: $0 [OPTION]... -d DIRECTORIES... In the 1st form, copy SRCFILE to DSTFILE. In the 2nd and 3rd, copy all SRCFILES to DIRECTORY. In the 4th, create DIRECTORIES. Options: --help display this help and exit. --version display version info and exit. -c (ignored) -C install only if different (preserve the last data modification time) -d create directories instead of installing files. -g GROUP $chgrpprog installed files to GROUP. -m MODE $chmodprog installed files to MODE. -o USER $chownprog installed files to USER. -s $stripprog installed files. -t DIRECTORY install into DIRECTORY. -T report an error if DSTFILE is a directory. Environment variables override the default commands: CHGRPPROG CHMODPROG CHOWNPROG CMPPROG CPPROG MKDIRPROG MVPROG RMPROG STRIPPROG " while test $# -ne 0; do case $1 in -c) ;; -C) copy_on_change=true;; -d) dir_arg=true;; -g) chgrpcmd="$chgrpprog $2" shift;; --help) echo "$usage"; exit $?;; -m) mode=$2 case $mode in *' '* | *"$tab"* | *"$nl"* | *'*'* | *'?'* | *'['*) echo "$0: invalid mode: $mode" >&2 exit 1;; esac shift;; -o) chowncmd="$chownprog $2" shift;; -s) stripcmd=$stripprog;; -t) is_target_a_directory=always dst_arg=$2 # Protect names problematic for 'test' and other utilities. case $dst_arg in -* | [=\(\)!]) dst_arg=./$dst_arg;; esac shift;; -T) is_target_a_directory=never;; --version) echo "$0 $scriptversion"; exit $?;; --) shift break;; -*) echo "$0: invalid option: $1" >&2 exit 1;; *) break;; esac shift done # We allow the use of options -d and -T together, by making -d # take the precedence; this is for compatibility with GNU install. if test -n "$dir_arg"; then if test -n "$dst_arg"; then echo "$0: target directory not allowed when installing a directory." >&2 exit 1 fi fi if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then # When -d is used, all remaining arguments are directories to create. # When -t is used, the destination is already specified. # Otherwise, the last argument is the destination. Remove it from $@. for arg do if test -n "$dst_arg"; then # $@ is not empty: it contains at least $arg. set fnord "$@" "$dst_arg" shift # fnord fi shift # arg dst_arg=$arg # Protect names problematic for 'test' and other utilities. case $dst_arg in -* | [=\(\)!]) dst_arg=./$dst_arg;; esac done fi if test $# -eq 0; then if test -z "$dir_arg"; then echo "$0: no input file specified." >&2 exit 1 fi # It's OK to call 'install-sh -d' without argument. # This can happen when creating conditional directories. exit 0 fi if test -z "$dir_arg"; then if test $# -gt 1 || test "$is_target_a_directory" = always; then if test ! -d "$dst_arg"; then echo "$0: $dst_arg: Is not a directory." >&2 exit 1 fi fi fi if test -z "$dir_arg"; then do_exit='(exit $ret); exit $ret' trap "ret=129; $do_exit" 1 trap "ret=130; $do_exit" 2 trap "ret=141; $do_exit" 13 trap "ret=143; $do_exit" 15 # Set umask so as not to create temps with too-generous modes. # However, 'strip' requires both read and write access to temps. case $mode in # Optimize common cases. *644) cp_umask=133;; *755) cp_umask=22;; *[0-7]) if test -z "$stripcmd"; then u_plus_rw= else u_plus_rw='% 200' fi cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;; *) if test -z "$stripcmd"; then u_plus_rw= else u_plus_rw=,u+rw fi cp_umask=$mode$u_plus_rw;; esac fi for src do # Protect names problematic for 'test' and other utilities. case $src in -* | [=\(\)!]) src=./$src;; esac if test -n "$dir_arg"; then dst=$src dstdir=$dst test -d "$dstdir" dstdir_status=$? else # Waiting for this to be detected by the "$cpprog $src $dsttmp" command # might cause directories to be created, which would be especially bad # if $src (and thus $dsttmp) contains '*'. if test ! -f "$src" && test ! -d "$src"; then echo "$0: $src does not exist." >&2 exit 1 fi if test -z "$dst_arg"; then echo "$0: no destination specified." >&2 exit 1 fi dst=$dst_arg # If destination is a directory, append the input filename; won't work # if double slashes aren't ignored. if test -d "$dst"; then if test "$is_target_a_directory" = never; then echo "$0: $dst_arg: Is a directory" >&2 exit 1 fi dstdir=$dst dst=$dstdir/`basename "$src"` dstdir_status=0 else dstdir=`dirname "$dst"` test -d "$dstdir" dstdir_status=$? fi fi obsolete_mkdir_used=false if test $dstdir_status != 0; then case $posix_mkdir in '') # Create intermediate dirs using mode 755 as modified by the umask. # This is like FreeBSD 'install' as of 1997-10-28. umask=`umask` case $stripcmd.$umask in # Optimize common cases. *[2367][2367]) mkdir_umask=$umask;; .*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;; *[0-7]) mkdir_umask=`expr $umask + 22 \ - $umask % 100 % 40 + $umask % 20 \ - $umask % 10 % 4 + $umask % 2 `;; *) mkdir_umask=$umask,go-w;; esac # With -d, create the new directory with the user-specified mode. # Otherwise, rely on $mkdir_umask. if test -n "$dir_arg"; then mkdir_mode=-m$mode else mkdir_mode= fi posix_mkdir=false case $umask in *[123567][0-7][0-7]) # POSIX mkdir -p sets u+wx bits regardless of umask, which # is incompatible with FreeBSD 'install' when (umask & 300) != 0. ;; *) tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$ trap 'ret=$?; rmdir "$tmpdir/d" "$tmpdir" 2>/dev/null; exit $ret' 0 if (umask $mkdir_umask && exec $mkdirprog $mkdir_mode -p -- "$tmpdir/d") >/dev/null 2>&1 then if test -z "$dir_arg" || { # Check for POSIX incompatibilities with -m. # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or # other-writable bit of parent directory when it shouldn't. # FreeBSD 6.1 mkdir -m -p sets mode of existing directory. ls_ld_tmpdir=`ls -ld "$tmpdir"` case $ls_ld_tmpdir in d????-?r-*) different_mode=700;; d????-?--*) different_mode=755;; *) false;; esac && $mkdirprog -m$different_mode -p -- "$tmpdir" && { ls_ld_tmpdir_1=`ls -ld "$tmpdir"` test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1" } } then posix_mkdir=: fi rmdir "$tmpdir/d" "$tmpdir" else # Remove any dirs left behind by ancient mkdir implementations. rmdir ./$mkdir_mode ./-p ./-- 2>/dev/null fi trap '' 0;; esac;; esac if $posix_mkdir && ( umask $mkdir_umask && $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir" ) then : else # The umask is ridiculous, or mkdir does not conform to POSIX, # or it failed possibly due to a race condition. Create the # directory the slow way, step by step, checking for races as we go. case $dstdir in /*) prefix='/';; [-=\(\)!]*) prefix='./';; *) prefix='';; esac oIFS=$IFS IFS=/ set -f set fnord $dstdir shift set +f IFS=$oIFS prefixes= for d do test X"$d" = X && continue prefix=$prefix$d if test -d "$prefix"; then prefixes= else if $posix_mkdir; then (umask=$mkdir_umask && $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break # Don't fail if two instances are running concurrently. test -d "$prefix" || exit 1 else case $prefix in *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;; *) qprefix=$prefix;; esac prefixes="$prefixes '$qprefix'" fi fi prefix=$prefix/ done if test -n "$prefixes"; then # Don't fail if two instances are running concurrently. (umask $mkdir_umask && eval "\$doit_exec \$mkdirprog $prefixes") || test -d "$dstdir" || exit 1 obsolete_mkdir_used=true fi fi fi if test -n "$dir_arg"; then { test -z "$chowncmd" || $doit $chowncmd "$dst"; } && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } && { test "$obsolete_mkdir_used$chowncmd$chgrpcmd" = false || test -z "$chmodcmd" || $doit $chmodcmd $mode "$dst"; } || exit 1 else # Make a couple of temp file names in the proper directory. dsttmp=$dstdir/_inst.$$_ rmtmp=$dstdir/_rm.$$_ # Trap to clean up those temp files at exit. trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0 # Copy the file name to the temp name. (umask $cp_umask && $doit_exec $cpprog "$src" "$dsttmp") && # and set any options; do chmod last to preserve setuid bits. # # If any of these fail, we abort the whole thing. If we want to # ignore errors from any of these, just make sure not to ignore # errors from the above "$doit $cpprog $src $dsttmp" command. # { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } && { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } && { test -z "$chmodcmd" || $doit $chmodcmd $mode "$dsttmp"; } && # If -C, don't bother to copy if it wouldn't change the file. if $copy_on_change && old=`LC_ALL=C ls -dlL "$dst" 2>/dev/null` && new=`LC_ALL=C ls -dlL "$dsttmp" 2>/dev/null` && set -f && set X $old && old=:$2:$4:$5:$6 && set X $new && new=:$2:$4:$5:$6 && set +f && test "$old" = "$new" && $cmpprog "$dst" "$dsttmp" >/dev/null 2>&1 then rm -f "$dsttmp" else # Rename the file to the real destination. $doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null || # The rename failed, perhaps because mv can't rename something else # to itself, or perhaps because mv is so ancient that it does not # support -f. { # Now remove or move aside any old file at destination location. # We try this two ways since rm can't unlink itself on some # systems and the destination file might be busy for other # reasons. In this case, the final cleanup might fail but the new # file should still install successfully. { test ! -f "$dst" || $doit $rmcmd -f "$dst" 2>/dev/null || { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null && { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; } } || { echo "$0: cannot unlink or rename $dst" >&2 (exit 1); exit 1 } } && # Now rename the file to the real destination. $doit $mvcmd "$dsttmp" "$dst" } fi || exit 1 trap '' 0 fi done # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC" # time-stamp-end: "; # UTC" # End: giza-1.5.0/build/ltmain.sh000066400000000000000000011707711477367113400154210ustar00rootroot00000000000000#! /bin/sh ## DO NOT EDIT - This file generated from ./build-aux/ltmain.in ## by inline-source v2014-01-03.01 # libtool (GNU libtool) 2.4.6 # Provide generalized library-building support services. # Written by Gordon Matzigkeit , 1996 # Copyright (C) 1996-2015 Free Software Foundation, Inc. # This is free software; see the source for copying conditions. There is NO # warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. # GNU Libtool is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # As a special exception to the GNU General Public License, # if you distribute this file as part of a program or library that # is built using GNU Libtool, you may include this file under the # same distribution terms that you use for the rest of that program. # # GNU Libtool is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . PROGRAM=libtool PACKAGE=libtool VERSION=2.4.6 package_revision=2.4.6 ## ------ ## ## Usage. ## ## ------ ## # Run './libtool --help' for help with using this script from the # command line. ## ------------------------------- ## ## User overridable command paths. ## ## ------------------------------- ## # After configure completes, it has a better idea of some of the # shell tools we need than the defaults used by the functions shared # with bootstrap, so set those here where they can still be over- # ridden by the user, but otherwise take precedence. : ${AUTOCONF="autoconf"} : ${AUTOMAKE="automake"} ## -------------------------- ## ## Source external libraries. ## ## -------------------------- ## # Much of our low-level functionality needs to be sourced from external # libraries, which are installed to $pkgauxdir. # Set a version string for this script. scriptversion=2015-01-20.17; # UTC # General shell script boiler plate, and helper functions. # Written by Gary V. Vaughan, 2004 # Copyright (C) 2004-2015 Free Software Foundation, Inc. # This is free software; see the source for copying conditions. There is NO # warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # As a special exception to the GNU General Public License, if you distribute # this file as part of a program or library that is built using GNU Libtool, # you may include this file under the same distribution terms that you use # for the rest of that program. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNES FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . # Please report bugs or propose patches to gary@gnu.org. ## ------ ## ## Usage. ## ## ------ ## # Evaluate this file near the top of your script to gain access to # the functions and variables defined here: # # . `echo "$0" | ${SED-sed} 's|[^/]*$||'`/build-aux/funclib.sh # # If you need to override any of the default environment variable # settings, do that before evaluating this file. ## -------------------- ## ## Shell normalisation. ## ## -------------------- ## # Some shells need a little help to be as Bourne compatible as possible. # Before doing anything else, make sure all that help has been provided! DUALCASE=1; export DUALCASE # for MKS sh if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case `(set -o) 2>/dev/null` in *posix*) set -o posix ;; esac fi # NLS nuisances: We save the old values in case they are required later. _G_user_locale= _G_safe_locale= for _G_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES do eval "if test set = \"\${$_G_var+set}\"; then save_$_G_var=\$$_G_var $_G_var=C export $_G_var _G_user_locale=\"$_G_var=\\\$save_\$_G_var; \$_G_user_locale\" _G_safe_locale=\"$_G_var=C; \$_G_safe_locale\" fi" done # CDPATH. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH # Make sure IFS has a sensible default sp=' ' nl=' ' IFS="$sp $nl" # There are apparently some retarded systems that use ';' as a PATH separator! if test "${PATH_SEPARATOR+set}" != set; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || PATH_SEPARATOR=';' } fi ## ------------------------- ## ## Locate command utilities. ## ## ------------------------- ## # func_executable_p FILE # ---------------------- # Check that FILE is an executable regular file. func_executable_p () { test -f "$1" && test -x "$1" } # func_path_progs PROGS_LIST CHECK_FUNC [PATH] # -------------------------------------------- # Search for either a program that responds to --version with output # containing "GNU", or else returned by CHECK_FUNC otherwise, by # trying all the directories in PATH with each of the elements of # PROGS_LIST. # # CHECK_FUNC should accept the path to a candidate program, and # set $func_check_prog_result if it truncates its output less than # $_G_path_prog_max characters. func_path_progs () { _G_progs_list=$1 _G_check_func=$2 _G_PATH=${3-"$PATH"} _G_path_prog_max=0 _G_path_prog_found=false _G_save_IFS=$IFS; IFS=${PATH_SEPARATOR-:} for _G_dir in $_G_PATH; do IFS=$_G_save_IFS test -z "$_G_dir" && _G_dir=. for _G_prog_name in $_G_progs_list; do for _exeext in '' .EXE; do _G_path_prog=$_G_dir/$_G_prog_name$_exeext func_executable_p "$_G_path_prog" || continue case `"$_G_path_prog" --version 2>&1` in *GNU*) func_path_progs_result=$_G_path_prog _G_path_prog_found=: ;; *) $_G_check_func $_G_path_prog func_path_progs_result=$func_check_prog_result ;; esac $_G_path_prog_found && break 3 done done done IFS=$_G_save_IFS test -z "$func_path_progs_result" && { echo "no acceptable sed could be found in \$PATH" >&2 exit 1 } } # We want to be able to use the functions in this file before configure # has figured out where the best binaries are kept, which means we have # to search for them ourselves - except when the results are already set # where we skip the searches. # Unless the user overrides by setting SED, search the path for either GNU # sed, or the sed that truncates its output the least. test -z "$SED" && { _G_sed_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/ for _G_i in 1 2 3 4 5 6 7; do _G_sed_script=$_G_sed_script$nl$_G_sed_script done echo "$_G_sed_script" 2>/dev/null | sed 99q >conftest.sed _G_sed_script= func_check_prog_sed () { _G_path_prog=$1 _G_count=0 printf 0123456789 >conftest.in while : do cat conftest.in conftest.in >conftest.tmp mv conftest.tmp conftest.in cp conftest.in conftest.nl echo '' >> conftest.nl "$_G_path_prog" -f conftest.sed conftest.out 2>/dev/null || break diff conftest.out conftest.nl >/dev/null 2>&1 || break _G_count=`expr $_G_count + 1` if test "$_G_count" -gt "$_G_path_prog_max"; then # Best one so far, save it but keep looking for a better one func_check_prog_result=$_G_path_prog _G_path_prog_max=$_G_count fi # 10*(2^10) chars as input seems more than enough test 10 -lt "$_G_count" && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out } func_path_progs "sed gsed" func_check_prog_sed $PATH:/usr/xpg4/bin rm -f conftest.sed SED=$func_path_progs_result } # Unless the user overrides by setting GREP, search the path for either GNU # grep, or the grep that truncates its output the least. test -z "$GREP" && { func_check_prog_grep () { _G_path_prog=$1 _G_count=0 _G_path_prog_max=0 printf 0123456789 >conftest.in while : do cat conftest.in conftest.in >conftest.tmp mv conftest.tmp conftest.in cp conftest.in conftest.nl echo 'GREP' >> conftest.nl "$_G_path_prog" -e 'GREP$' -e '-(cannot match)-' conftest.out 2>/dev/null || break diff conftest.out conftest.nl >/dev/null 2>&1 || break _G_count=`expr $_G_count + 1` if test "$_G_count" -gt "$_G_path_prog_max"; then # Best one so far, save it but keep looking for a better one func_check_prog_result=$_G_path_prog _G_path_prog_max=$_G_count fi # 10*(2^10) chars as input seems more than enough test 10 -lt "$_G_count" && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out } func_path_progs "grep ggrep" func_check_prog_grep $PATH:/usr/xpg4/bin GREP=$func_path_progs_result } ## ------------------------------- ## ## User overridable command paths. ## ## ------------------------------- ## # All uppercase variable names are used for environment variables. These # variables can be overridden by the user before calling a script that # uses them if a suitable command of that name is not already available # in the command search PATH. : ${CP="cp -f"} : ${ECHO="printf %s\n"} : ${EGREP="$GREP -E"} : ${FGREP="$GREP -F"} : ${LN_S="ln -s"} : ${MAKE="make"} : ${MKDIR="mkdir"} : ${MV="mv -f"} : ${RM="rm -f"} : ${SHELL="${CONFIG_SHELL-/bin/sh}"} ## -------------------- ## ## Useful sed snippets. ## ## -------------------- ## sed_dirname='s|/[^/]*$||' sed_basename='s|^.*/||' # Sed substitution that helps us do robust quoting. It backslashifies # metacharacters that are still active within double-quoted strings. sed_quote_subst='s|\([`"$\\]\)|\\\1|g' # Same as above, but do not quote variable references. sed_double_quote_subst='s/\(["`\\]\)/\\\1/g' # Sed substitution that turns a string into a regex matching for the # string literally. sed_make_literal_regex='s|[].[^$\\*\/]|\\&|g' # Sed substitution that converts a w32 file name or path # that contains forward slashes, into one that contains # (escaped) backslashes. A very naive implementation. sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g' # Re-'\' parameter expansions in output of sed_double_quote_subst that # were '\'-ed in input to the same. If an odd number of '\' preceded a # '$' in input to sed_double_quote_subst, that '$' was protected from # expansion. Since each input '\' is now two '\'s, look for any number # of runs of four '\'s followed by two '\'s and then a '$'. '\' that '$'. _G_bs='\\' _G_bs2='\\\\' _G_bs4='\\\\\\\\' _G_dollar='\$' sed_double_backslash="\ s/$_G_bs4/&\\ /g s/^$_G_bs2$_G_dollar/$_G_bs&/ s/\\([^$_G_bs]\\)$_G_bs2$_G_dollar/\\1$_G_bs2$_G_bs$_G_dollar/g s/\n//g" ## ----------------- ## ## Global variables. ## ## ----------------- ## # Except for the global variables explicitly listed below, the following # functions in the '^func_' namespace, and the '^require_' namespace # variables initialised in the 'Resource management' section, sourcing # this file will not pollute your global namespace with anything # else. There's no portable way to scope variables in Bourne shell # though, so actually running these functions will sometimes place # results into a variable named after the function, and often use # temporary variables in the '^_G_' namespace. If you are careful to # avoid using those namespaces casually in your sourcing script, things # should continue to work as you expect. And, of course, you can freely # overwrite any of the functions or variables defined here before # calling anything to customize them. EXIT_SUCCESS=0 EXIT_FAILURE=1 EXIT_MISMATCH=63 # $? = 63 is used to indicate version mismatch to missing. EXIT_SKIP=77 # $? = 77 is used to indicate a skipped test to automake. # Allow overriding, eg assuming that you follow the convention of # putting '$debug_cmd' at the start of all your functions, you can get # bash to show function call trace with: # # debug_cmd='eval echo "${FUNCNAME[0]} $*" >&2' bash your-script-name debug_cmd=${debug_cmd-":"} exit_cmd=: # By convention, finish your script with: # # exit $exit_status # # so that you can set exit_status to non-zero if you want to indicate # something went wrong during execution without actually bailing out at # the point of failure. exit_status=$EXIT_SUCCESS # Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh # is ksh but when the shell is invoked as "sh" and the current value of # the _XPG environment variable is not equal to 1 (one), the special # positional parameter $0, within a function call, is the name of the # function. progpath=$0 # The name of this program. progname=`$ECHO "$progpath" |$SED "$sed_basename"` # Make sure we have an absolute progpath for reexecution: case $progpath in [\\/]*|[A-Za-z]:\\*) ;; *[\\/]*) progdir=`$ECHO "$progpath" |$SED "$sed_dirname"` progdir=`cd "$progdir" && pwd` progpath=$progdir/$progname ;; *) _G_IFS=$IFS IFS=${PATH_SEPARATOR-:} for progdir in $PATH; do IFS=$_G_IFS test -x "$progdir/$progname" && break done IFS=$_G_IFS test -n "$progdir" || progdir=`pwd` progpath=$progdir/$progname ;; esac ## ----------------- ## ## Standard options. ## ## ----------------- ## # The following options affect the operation of the functions defined # below, and should be set appropriately depending on run-time para- # meters passed on the command line. opt_dry_run=false opt_quiet=false opt_verbose=false # Categories 'all' and 'none' are always available. Append any others # you will pass as the first argument to func_warning from your own # code. warning_categories= # By default, display warnings according to 'opt_warning_types'. Set # 'warning_func' to ':' to elide all warnings, or func_fatal_error to # treat the next displayed warning as a fatal error. warning_func=func_warn_and_continue # Set to 'all' to display all warnings, 'none' to suppress all # warnings, or a space delimited list of some subset of # 'warning_categories' to display only the listed warnings. opt_warning_types=all ## -------------------- ## ## Resource management. ## ## -------------------- ## # This section contains definitions for functions that each ensure a # particular resource (a file, or a non-empty configuration variable for # example) is available, and if appropriate to extract default values # from pertinent package files. Call them using their associated # 'require_*' variable to ensure that they are executed, at most, once. # # It's entirely deliberate that calling these functions can set # variables that don't obey the namespace limitations obeyed by the rest # of this file, in order that that they be as useful as possible to # callers. # require_term_colors # ------------------- # Allow display of bold text on terminals that support it. require_term_colors=func_require_term_colors func_require_term_colors () { $debug_cmd test -t 1 && { # COLORTERM and USE_ANSI_COLORS environment variables take # precedence, because most terminfo databases neglect to describe # whether color sequences are supported. test -n "${COLORTERM+set}" && : ${USE_ANSI_COLORS="1"} if test 1 = "$USE_ANSI_COLORS"; then # Standard ANSI escape sequences tc_reset='' tc_bold=''; tc_standout='' tc_red=''; tc_green='' tc_blue=''; tc_cyan='' else # Otherwise trust the terminfo database after all. test -n "`tput sgr0 2>/dev/null`" && { tc_reset=`tput sgr0` test -n "`tput bold 2>/dev/null`" && tc_bold=`tput bold` tc_standout=$tc_bold test -n "`tput smso 2>/dev/null`" && tc_standout=`tput smso` test -n "`tput setaf 1 2>/dev/null`" && tc_red=`tput setaf 1` test -n "`tput setaf 2 2>/dev/null`" && tc_green=`tput setaf 2` test -n "`tput setaf 4 2>/dev/null`" && tc_blue=`tput setaf 4` test -n "`tput setaf 5 2>/dev/null`" && tc_cyan=`tput setaf 5` } fi } require_term_colors=: } ## ----------------- ## ## Function library. ## ## ----------------- ## # This section contains a variety of useful functions to call in your # scripts. Take note of the portable wrappers for features provided by # some modern shells, which will fall back to slower equivalents on # less featureful shells. # func_append VAR VALUE # --------------------- # Append VALUE onto the existing contents of VAR. # We should try to minimise forks, especially on Windows where they are # unreasonably slow, so skip the feature probes when bash or zsh are # being used: if test set = "${BASH_VERSION+set}${ZSH_VERSION+set}"; then : ${_G_HAVE_ARITH_OP="yes"} : ${_G_HAVE_XSI_OPS="yes"} # The += operator was introduced in bash 3.1 case $BASH_VERSION in [12].* | 3.0 | 3.0*) ;; *) : ${_G_HAVE_PLUSEQ_OP="yes"} ;; esac fi # _G_HAVE_PLUSEQ_OP # Can be empty, in which case the shell is probed, "yes" if += is # useable or anything else if it does not work. test -z "$_G_HAVE_PLUSEQ_OP" \ && (eval 'x=a; x+=" b"; test "a b" = "$x"') 2>/dev/null \ && _G_HAVE_PLUSEQ_OP=yes if test yes = "$_G_HAVE_PLUSEQ_OP" then # This is an XSI compatible shell, allowing a faster implementation... eval 'func_append () { $debug_cmd eval "$1+=\$2" }' else # ...otherwise fall back to using expr, which is often a shell builtin. func_append () { $debug_cmd eval "$1=\$$1\$2" } fi # func_append_quoted VAR VALUE # ---------------------------- # Quote VALUE and append to the end of shell variable VAR, separated # by a space. if test yes = "$_G_HAVE_PLUSEQ_OP"; then eval 'func_append_quoted () { $debug_cmd func_quote_for_eval "$2" eval "$1+=\\ \$func_quote_for_eval_result" }' else func_append_quoted () { $debug_cmd func_quote_for_eval "$2" eval "$1=\$$1\\ \$func_quote_for_eval_result" } fi # func_append_uniq VAR VALUE # -------------------------- # Append unique VALUE onto the existing contents of VAR, assuming # entries are delimited by the first character of VALUE. For example: # # func_append_uniq options " --another-option option-argument" # # will only append to $options if " --another-option option-argument " # is not already present somewhere in $options already (note spaces at # each end implied by leading space in second argument). func_append_uniq () { $debug_cmd eval _G_current_value='`$ECHO $'$1'`' _G_delim=`expr "$2" : '\(.\)'` case $_G_delim$_G_current_value$_G_delim in *"$2$_G_delim"*) ;; *) func_append "$@" ;; esac } # func_arith TERM... # ------------------ # Set func_arith_result to the result of evaluating TERMs. test -z "$_G_HAVE_ARITH_OP" \ && (eval 'test 2 = $(( 1 + 1 ))') 2>/dev/null \ && _G_HAVE_ARITH_OP=yes if test yes = "$_G_HAVE_ARITH_OP"; then eval 'func_arith () { $debug_cmd func_arith_result=$(( $* )) }' else func_arith () { $debug_cmd func_arith_result=`expr "$@"` } fi # func_basename FILE # ------------------ # Set func_basename_result to FILE with everything up to and including # the last / stripped. if test yes = "$_G_HAVE_XSI_OPS"; then # If this shell supports suffix pattern removal, then use it to avoid # forking. Hide the definitions single quotes in case the shell chokes # on unsupported syntax... _b='func_basename_result=${1##*/}' _d='case $1 in */*) func_dirname_result=${1%/*}$2 ;; * ) func_dirname_result=$3 ;; esac' else # ...otherwise fall back to using sed. _b='func_basename_result=`$ECHO "$1" |$SED "$sed_basename"`' _d='func_dirname_result=`$ECHO "$1" |$SED "$sed_dirname"` if test "X$func_dirname_result" = "X$1"; then func_dirname_result=$3 else func_append func_dirname_result "$2" fi' fi eval 'func_basename () { $debug_cmd '"$_b"' }' # func_dirname FILE APPEND NONDIR_REPLACEMENT # ------------------------------------------- # Compute the dirname of FILE. If nonempty, add APPEND to the result, # otherwise set result to NONDIR_REPLACEMENT. eval 'func_dirname () { $debug_cmd '"$_d"' }' # func_dirname_and_basename FILE APPEND NONDIR_REPLACEMENT # -------------------------------------------------------- # Perform func_basename and func_dirname in a single function # call: # dirname: Compute the dirname of FILE. If nonempty, # add APPEND to the result, otherwise set result # to NONDIR_REPLACEMENT. # value returned in "$func_dirname_result" # basename: Compute filename of FILE. # value retuned in "$func_basename_result" # For efficiency, we do not delegate to the functions above but instead # duplicate the functionality here. eval 'func_dirname_and_basename () { $debug_cmd '"$_b"' '"$_d"' }' # func_echo ARG... # ---------------- # Echo program name prefixed message. func_echo () { $debug_cmd _G_message=$* func_echo_IFS=$IFS IFS=$nl for _G_line in $_G_message; do IFS=$func_echo_IFS $ECHO "$progname: $_G_line" done IFS=$func_echo_IFS } # func_echo_all ARG... # -------------------- # Invoke $ECHO with all args, space-separated. func_echo_all () { $ECHO "$*" } # func_echo_infix_1 INFIX ARG... # ------------------------------ # Echo program name, followed by INFIX on the first line, with any # additional lines not showing INFIX. func_echo_infix_1 () { $debug_cmd $require_term_colors _G_infix=$1; shift _G_indent=$_G_infix _G_prefix="$progname: $_G_infix: " _G_message=$* # Strip color escape sequences before counting printable length for _G_tc in "$tc_reset" "$tc_bold" "$tc_standout" "$tc_red" "$tc_green" "$tc_blue" "$tc_cyan" do test -n "$_G_tc" && { _G_esc_tc=`$ECHO "$_G_tc" | $SED "$sed_make_literal_regex"` _G_indent=`$ECHO "$_G_indent" | $SED "s|$_G_esc_tc||g"` } done _G_indent="$progname: "`echo "$_G_indent" | $SED 's|.| |g'`" " ## exclude from sc_prohibit_nested_quotes func_echo_infix_1_IFS=$IFS IFS=$nl for _G_line in $_G_message; do IFS=$func_echo_infix_1_IFS $ECHO "$_G_prefix$tc_bold$_G_line$tc_reset" >&2 _G_prefix=$_G_indent done IFS=$func_echo_infix_1_IFS } # func_error ARG... # ----------------- # Echo program name prefixed message to standard error. func_error () { $debug_cmd $require_term_colors func_echo_infix_1 " $tc_standout${tc_red}error$tc_reset" "$*" >&2 } # func_fatal_error ARG... # ----------------------- # Echo program name prefixed message to standard error, and exit. func_fatal_error () { $debug_cmd func_error "$*" exit $EXIT_FAILURE } # func_grep EXPRESSION FILENAME # ----------------------------- # Check whether EXPRESSION matches any line of FILENAME, without output. func_grep () { $debug_cmd $GREP "$1" "$2" >/dev/null 2>&1 } # func_len STRING # --------------- # Set func_len_result to the length of STRING. STRING may not # start with a hyphen. test -z "$_G_HAVE_XSI_OPS" \ && (eval 'x=a/b/c; test 5aa/bb/cc = "${#x}${x%%/*}${x%/*}${x#*/}${x##*/}"') 2>/dev/null \ && _G_HAVE_XSI_OPS=yes if test yes = "$_G_HAVE_XSI_OPS"; then eval 'func_len () { $debug_cmd func_len_result=${#1} }' else func_len () { $debug_cmd func_len_result=`expr "$1" : ".*" 2>/dev/null || echo $max_cmd_len` } fi # func_mkdir_p DIRECTORY-PATH # --------------------------- # Make sure the entire path to DIRECTORY-PATH is available. func_mkdir_p () { $debug_cmd _G_directory_path=$1 _G_dir_list= if test -n "$_G_directory_path" && test : != "$opt_dry_run"; then # Protect directory names starting with '-' case $_G_directory_path in -*) _G_directory_path=./$_G_directory_path ;; esac # While some portion of DIR does not yet exist... while test ! -d "$_G_directory_path"; do # ...make a list in topmost first order. Use a colon delimited # list incase some portion of path contains whitespace. _G_dir_list=$_G_directory_path:$_G_dir_list # If the last portion added has no slash in it, the list is done case $_G_directory_path in */*) ;; *) break ;; esac # ...otherwise throw away the child directory and loop _G_directory_path=`$ECHO "$_G_directory_path" | $SED -e "$sed_dirname"` done _G_dir_list=`$ECHO "$_G_dir_list" | $SED 's|:*$||'` func_mkdir_p_IFS=$IFS; IFS=: for _G_dir in $_G_dir_list; do IFS=$func_mkdir_p_IFS # mkdir can fail with a 'File exist' error if two processes # try to create one of the directories concurrently. Don't # stop in that case! $MKDIR "$_G_dir" 2>/dev/null || : done IFS=$func_mkdir_p_IFS # Bail out if we (or some other process) failed to create a directory. test -d "$_G_directory_path" || \ func_fatal_error "Failed to create '$1'" fi } # func_mktempdir [BASENAME] # ------------------------- # Make a temporary directory that won't clash with other running # libtool processes, and avoids race conditions if possible. If # given, BASENAME is the basename for that directory. func_mktempdir () { $debug_cmd _G_template=${TMPDIR-/tmp}/${1-$progname} if test : = "$opt_dry_run"; then # Return a directory name, but don't create it in dry-run mode _G_tmpdir=$_G_template-$$ else # If mktemp works, use that first and foremost _G_tmpdir=`mktemp -d "$_G_template-XXXXXXXX" 2>/dev/null` if test ! -d "$_G_tmpdir"; then # Failing that, at least try and use $RANDOM to avoid a race _G_tmpdir=$_G_template-${RANDOM-0}$$ func_mktempdir_umask=`umask` umask 0077 $MKDIR "$_G_tmpdir" umask $func_mktempdir_umask fi # If we're not in dry-run mode, bomb out on failure test -d "$_G_tmpdir" || \ func_fatal_error "cannot create temporary directory '$_G_tmpdir'" fi $ECHO "$_G_tmpdir" } # func_normal_abspath PATH # ------------------------ # Remove doubled-up and trailing slashes, "." path components, # and cancel out any ".." path components in PATH after making # it an absolute path. func_normal_abspath () { $debug_cmd # These SED scripts presuppose an absolute path with a trailing slash. _G_pathcar='s|^/\([^/]*\).*$|\1|' _G_pathcdr='s|^/[^/]*||' _G_removedotparts=':dotsl s|/\./|/|g t dotsl s|/\.$|/|' _G_collapseslashes='s|/\{1,\}|/|g' _G_finalslash='s|/*$|/|' # Start from root dir and reassemble the path. func_normal_abspath_result= func_normal_abspath_tpath=$1 func_normal_abspath_altnamespace= case $func_normal_abspath_tpath in "") # Empty path, that just means $cwd. func_stripname '' '/' "`pwd`" func_normal_abspath_result=$func_stripname_result return ;; # The next three entries are used to spot a run of precisely # two leading slashes without using negated character classes; # we take advantage of case's first-match behaviour. ///*) # Unusual form of absolute path, do nothing. ;; //*) # Not necessarily an ordinary path; POSIX reserves leading '//' # and for example Cygwin uses it to access remote file shares # over CIFS/SMB, so we conserve a leading double slash if found. func_normal_abspath_altnamespace=/ ;; /*) # Absolute path, do nothing. ;; *) # Relative path, prepend $cwd. func_normal_abspath_tpath=`pwd`/$func_normal_abspath_tpath ;; esac # Cancel out all the simple stuff to save iterations. We also want # the path to end with a slash for ease of parsing, so make sure # there is one (and only one) here. func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \ -e "$_G_removedotparts" -e "$_G_collapseslashes" -e "$_G_finalslash"` while :; do # Processed it all yet? if test / = "$func_normal_abspath_tpath"; then # If we ascended to the root using ".." the result may be empty now. if test -z "$func_normal_abspath_result"; then func_normal_abspath_result=/ fi break fi func_normal_abspath_tcomponent=`$ECHO "$func_normal_abspath_tpath" | $SED \ -e "$_G_pathcar"` func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \ -e "$_G_pathcdr"` # Figure out what to do with it case $func_normal_abspath_tcomponent in "") # Trailing empty path component, ignore it. ;; ..) # Parent dir; strip last assembled component from result. func_dirname "$func_normal_abspath_result" func_normal_abspath_result=$func_dirname_result ;; *) # Actual path component, append it. func_append func_normal_abspath_result "/$func_normal_abspath_tcomponent" ;; esac done # Restore leading double-slash if one was found on entry. func_normal_abspath_result=$func_normal_abspath_altnamespace$func_normal_abspath_result } # func_notquiet ARG... # -------------------- # Echo program name prefixed message only when not in quiet mode. func_notquiet () { $debug_cmd $opt_quiet || func_echo ${1+"$@"} # A bug in bash halts the script if the last line of a function # fails when set -e is in force, so we need another command to # work around that: : } # func_relative_path SRCDIR DSTDIR # -------------------------------- # Set func_relative_path_result to the relative path from SRCDIR to DSTDIR. func_relative_path () { $debug_cmd func_relative_path_result= func_normal_abspath "$1" func_relative_path_tlibdir=$func_normal_abspath_result func_normal_abspath "$2" func_relative_path_tbindir=$func_normal_abspath_result # Ascend the tree starting from libdir while :; do # check if we have found a prefix of bindir case $func_relative_path_tbindir in $func_relative_path_tlibdir) # found an exact match func_relative_path_tcancelled= break ;; $func_relative_path_tlibdir*) # found a matching prefix func_stripname "$func_relative_path_tlibdir" '' "$func_relative_path_tbindir" func_relative_path_tcancelled=$func_stripname_result if test -z "$func_relative_path_result"; then func_relative_path_result=. fi break ;; *) func_dirname $func_relative_path_tlibdir func_relative_path_tlibdir=$func_dirname_result if test -z "$func_relative_path_tlibdir"; then # Have to descend all the way to the root! func_relative_path_result=../$func_relative_path_result func_relative_path_tcancelled=$func_relative_path_tbindir break fi func_relative_path_result=../$func_relative_path_result ;; esac done # Now calculate path; take care to avoid doubling-up slashes. func_stripname '' '/' "$func_relative_path_result" func_relative_path_result=$func_stripname_result func_stripname '/' '/' "$func_relative_path_tcancelled" if test -n "$func_stripname_result"; then func_append func_relative_path_result "/$func_stripname_result" fi # Normalisation. If bindir is libdir, return '.' else relative path. if test -n "$func_relative_path_result"; then func_stripname './' '' "$func_relative_path_result" func_relative_path_result=$func_stripname_result fi test -n "$func_relative_path_result" || func_relative_path_result=. : } # func_quote_for_eval ARG... # -------------------------- # Aesthetically quote ARGs to be evaled later. # This function returns two values: # i) func_quote_for_eval_result # double-quoted, suitable for a subsequent eval # ii) func_quote_for_eval_unquoted_result # has all characters that are still active within double # quotes backslashified. func_quote_for_eval () { $debug_cmd func_quote_for_eval_unquoted_result= func_quote_for_eval_result= while test 0 -lt $#; do case $1 in *[\\\`\"\$]*) _G_unquoted_arg=`printf '%s\n' "$1" |$SED "$sed_quote_subst"` ;; *) _G_unquoted_arg=$1 ;; esac if test -n "$func_quote_for_eval_unquoted_result"; then func_append func_quote_for_eval_unquoted_result " $_G_unquoted_arg" else func_append func_quote_for_eval_unquoted_result "$_G_unquoted_arg" fi case $_G_unquoted_arg in # Double-quote args containing shell metacharacters to delay # word splitting, command substitution and variable expansion # for a subsequent eval. # Many Bourne shells cannot handle close brackets correctly # in scan sets, so we specify it separately. *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") _G_quoted_arg=\"$_G_unquoted_arg\" ;; *) _G_quoted_arg=$_G_unquoted_arg ;; esac if test -n "$func_quote_for_eval_result"; then func_append func_quote_for_eval_result " $_G_quoted_arg" else func_append func_quote_for_eval_result "$_G_quoted_arg" fi shift done } # func_quote_for_expand ARG # ------------------------- # Aesthetically quote ARG to be evaled later; same as above, # but do not quote variable references. func_quote_for_expand () { $debug_cmd case $1 in *[\\\`\"]*) _G_arg=`$ECHO "$1" | $SED \ -e "$sed_double_quote_subst" -e "$sed_double_backslash"` ;; *) _G_arg=$1 ;; esac case $_G_arg in # Double-quote args containing shell metacharacters to delay # word splitting and command substitution for a subsequent eval. # Many Bourne shells cannot handle close brackets correctly # in scan sets, so we specify it separately. *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") _G_arg=\"$_G_arg\" ;; esac func_quote_for_expand_result=$_G_arg } # func_stripname PREFIX SUFFIX NAME # --------------------------------- # strip PREFIX and SUFFIX from NAME, and store in func_stripname_result. # PREFIX and SUFFIX must not contain globbing or regex special # characters, hashes, percent signs, but SUFFIX may contain a leading # dot (in which case that matches only a dot). if test yes = "$_G_HAVE_XSI_OPS"; then eval 'func_stripname () { $debug_cmd # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are # positional parameters, so assign one to ordinary variable first. func_stripname_result=$3 func_stripname_result=${func_stripname_result#"$1"} func_stripname_result=${func_stripname_result%"$2"} }' else func_stripname () { $debug_cmd case $2 in .*) func_stripname_result=`$ECHO "$3" | $SED -e "s%^$1%%" -e "s%\\\\$2\$%%"`;; *) func_stripname_result=`$ECHO "$3" | $SED -e "s%^$1%%" -e "s%$2\$%%"`;; esac } fi # func_show_eval CMD [FAIL_EXP] # ----------------------------- # Unless opt_quiet is true, then output CMD. Then, if opt_dryrun is # not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP # is given, then evaluate it. func_show_eval () { $debug_cmd _G_cmd=$1 _G_fail_exp=${2-':'} func_quote_for_expand "$_G_cmd" eval "func_notquiet $func_quote_for_expand_result" $opt_dry_run || { eval "$_G_cmd" _G_status=$? if test 0 -ne "$_G_status"; then eval "(exit $_G_status); $_G_fail_exp" fi } } # func_show_eval_locale CMD [FAIL_EXP] # ------------------------------------ # Unless opt_quiet is true, then output CMD. Then, if opt_dryrun is # not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP # is given, then evaluate it. Use the saved locale for evaluation. func_show_eval_locale () { $debug_cmd _G_cmd=$1 _G_fail_exp=${2-':'} $opt_quiet || { func_quote_for_expand "$_G_cmd" eval "func_echo $func_quote_for_expand_result" } $opt_dry_run || { eval "$_G_user_locale $_G_cmd" _G_status=$? eval "$_G_safe_locale" if test 0 -ne "$_G_status"; then eval "(exit $_G_status); $_G_fail_exp" fi } } # func_tr_sh # ---------- # Turn $1 into a string suitable for a shell variable name. # Result is stored in $func_tr_sh_result. All characters # not in the set a-zA-Z0-9_ are replaced with '_'. Further, # if $1 begins with a digit, a '_' is prepended as well. func_tr_sh () { $debug_cmd case $1 in [0-9]* | *[!a-zA-Z0-9_]*) func_tr_sh_result=`$ECHO "$1" | $SED -e 's/^\([0-9]\)/_\1/' -e 's/[^a-zA-Z0-9_]/_/g'` ;; * ) func_tr_sh_result=$1 ;; esac } # func_verbose ARG... # ------------------- # Echo program name prefixed message in verbose mode only. func_verbose () { $debug_cmd $opt_verbose && func_echo "$*" : } # func_warn_and_continue ARG... # ----------------------------- # Echo program name prefixed warning message to standard error. func_warn_and_continue () { $debug_cmd $require_term_colors func_echo_infix_1 "${tc_red}warning$tc_reset" "$*" >&2 } # func_warning CATEGORY ARG... # ---------------------------- # Echo program name prefixed warning message to standard error. Warning # messages can be filtered according to CATEGORY, where this function # elides messages where CATEGORY is not listed in the global variable # 'opt_warning_types'. func_warning () { $debug_cmd # CATEGORY must be in the warning_categories list! case " $warning_categories " in *" $1 "*) ;; *) func_internal_error "invalid warning category '$1'" ;; esac _G_category=$1 shift case " $opt_warning_types " in *" $_G_category "*) $warning_func ${1+"$@"} ;; esac } # func_sort_ver VER1 VER2 # ----------------------- # 'sort -V' is not generally available. # Note this deviates from the version comparison in automake # in that it treats 1.5 < 1.5.0, and treats 1.4.4a < 1.4-p3a # but this should suffice as we won't be specifying old # version formats or redundant trailing .0 in bootstrap.conf. # If we did want full compatibility then we should probably # use m4_version_compare from autoconf. func_sort_ver () { $debug_cmd printf '%s\n%s\n' "$1" "$2" \ | sort -t. -k 1,1n -k 2,2n -k 3,3n -k 4,4n -k 5,5n -k 6,6n -k 7,7n -k 8,8n -k 9,9n } # func_lt_ver PREV CURR # --------------------- # Return true if PREV and CURR are in the correct order according to # func_sort_ver, otherwise false. Use it like this: # # func_lt_ver "$prev_ver" "$proposed_ver" || func_fatal_error "..." func_lt_ver () { $debug_cmd test "x$1" = x`func_sort_ver "$1" "$2" | $SED 1q` } # Local variables: # mode: shell-script # sh-indentation: 2 # eval: (add-hook 'before-save-hook 'time-stamp) # time-stamp-pattern: "10/scriptversion=%:y-%02m-%02d.%02H; # UTC" # time-stamp-time-zone: "UTC" # End: #! /bin/sh # Set a version string for this script. scriptversion=2014-01-07.03; # UTC # A portable, pluggable option parser for Bourne shell. # Written by Gary V. Vaughan, 2010 # Copyright (C) 2010-2015 Free Software Foundation, Inc. # This is free software; see the source for copying conditions. There is NO # warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . # Please report bugs or propose patches to gary@gnu.org. ## ------ ## ## Usage. ## ## ------ ## # This file is a library for parsing options in your shell scripts along # with assorted other useful supporting features that you can make use # of too. # # For the simplest scripts you might need only: # # #!/bin/sh # . relative/path/to/funclib.sh # . relative/path/to/options-parser # scriptversion=1.0 # func_options ${1+"$@"} # eval set dummy "$func_options_result"; shift # ...rest of your script... # # In order for the '--version' option to work, you will need to have a # suitably formatted comment like the one at the top of this file # starting with '# Written by ' and ending with '# warranty; '. # # For '-h' and '--help' to work, you will also need a one line # description of your script's purpose in a comment directly above the # '# Written by ' line, like the one at the top of this file. # # The default options also support '--debug', which will turn on shell # execution tracing (see the comment above debug_cmd below for another # use), and '--verbose' and the func_verbose function to allow your script # to display verbose messages only when your user has specified # '--verbose'. # # After sourcing this file, you can plug processing for additional # options by amending the variables from the 'Configuration' section # below, and following the instructions in the 'Option parsing' # section further down. ## -------------- ## ## Configuration. ## ## -------------- ## # You should override these variables in your script after sourcing this # file so that they reflect the customisations you have added to the # option parser. # The usage line for option parsing errors and the start of '-h' and # '--help' output messages. You can embed shell variables for delayed # expansion at the time the message is displayed, but you will need to # quote other shell meta-characters carefully to prevent them being # expanded when the contents are evaled. usage='$progpath [OPTION]...' # Short help message in response to '-h' and '--help'. Add to this or # override it after sourcing this library to reflect the full set of # options your script accepts. usage_message="\ --debug enable verbose shell tracing -W, --warnings=CATEGORY report the warnings falling in CATEGORY [all] -v, --verbose verbosely report processing --version print version information and exit -h, --help print short or long help message and exit " # Additional text appended to 'usage_message' in response to '--help'. long_help_message=" Warning categories include: 'all' show all warnings 'none' turn off all the warnings 'error' warnings are treated as fatal errors" # Help message printed before fatal option parsing errors. fatal_help="Try '\$progname --help' for more information." ## ------------------------- ## ## Hook function management. ## ## ------------------------- ## # This section contains functions for adding, removing, and running hooks # to the main code. A hook is just a named list of of function, that can # be run in order later on. # func_hookable FUNC_NAME # ----------------------- # Declare that FUNC_NAME will run hooks added with # 'func_add_hook FUNC_NAME ...'. func_hookable () { $debug_cmd func_append hookable_fns " $1" } # func_add_hook FUNC_NAME HOOK_FUNC # --------------------------------- # Request that FUNC_NAME call HOOK_FUNC before it returns. FUNC_NAME must # first have been declared "hookable" by a call to 'func_hookable'. func_add_hook () { $debug_cmd case " $hookable_fns " in *" $1 "*) ;; *) func_fatal_error "'$1' does not accept hook functions." ;; esac eval func_append ${1}_hooks '" $2"' } # func_remove_hook FUNC_NAME HOOK_FUNC # ------------------------------------ # Remove HOOK_FUNC from the list of functions called by FUNC_NAME. func_remove_hook () { $debug_cmd eval ${1}_hooks='`$ECHO "\$'$1'_hooks" |$SED "s| '$2'||"`' } # func_run_hooks FUNC_NAME [ARG]... # --------------------------------- # Run all hook functions registered to FUNC_NAME. # It is assumed that the list of hook functions contains nothing more # than a whitespace-delimited list of legal shell function names, and # no effort is wasted trying to catch shell meta-characters or preserve # whitespace. func_run_hooks () { $debug_cmd case " $hookable_fns " in *" $1 "*) ;; *) func_fatal_error "'$1' does not support hook funcions.n" ;; esac eval _G_hook_fns=\$$1_hooks; shift for _G_hook in $_G_hook_fns; do eval $_G_hook '"$@"' # store returned options list back into positional # parameters for next 'cmd' execution. eval _G_hook_result=\$${_G_hook}_result eval set dummy "$_G_hook_result"; shift done func_quote_for_eval ${1+"$@"} func_run_hooks_result=$func_quote_for_eval_result } ## --------------- ## ## Option parsing. ## ## --------------- ## # In order to add your own option parsing hooks, you must accept the # full positional parameter list in your hook function, remove any # options that you action, and then pass back the remaining unprocessed # options in '_result', escaped suitably for # 'eval'. Like this: # # my_options_prep () # { # $debug_cmd # # # Extend the existing usage message. # usage_message=$usage_message' # -s, --silent don'\''t print informational messages # ' # # func_quote_for_eval ${1+"$@"} # my_options_prep_result=$func_quote_for_eval_result # } # func_add_hook func_options_prep my_options_prep # # # my_silent_option () # { # $debug_cmd # # # Note that for efficiency, we parse as many options as we can # # recognise in a loop before passing the remainder back to the # # caller on the first unrecognised argument we encounter. # while test $# -gt 0; do # opt=$1; shift # case $opt in # --silent|-s) opt_silent=: ;; # # Separate non-argument short options: # -s*) func_split_short_opt "$_G_opt" # set dummy "$func_split_short_opt_name" \ # "-$func_split_short_opt_arg" ${1+"$@"} # shift # ;; # *) set dummy "$_G_opt" "$*"; shift; break ;; # esac # done # # func_quote_for_eval ${1+"$@"} # my_silent_option_result=$func_quote_for_eval_result # } # func_add_hook func_parse_options my_silent_option # # # my_option_validation () # { # $debug_cmd # # $opt_silent && $opt_verbose && func_fatal_help "\ # '--silent' and '--verbose' options are mutually exclusive." # # func_quote_for_eval ${1+"$@"} # my_option_validation_result=$func_quote_for_eval_result # } # func_add_hook func_validate_options my_option_validation # # You'll alse need to manually amend $usage_message to reflect the extra # options you parse. It's preferable to append if you can, so that # multiple option parsing hooks can be added safely. # func_options [ARG]... # --------------------- # All the functions called inside func_options are hookable. See the # individual implementations for details. func_hookable func_options func_options () { $debug_cmd func_options_prep ${1+"$@"} eval func_parse_options \ ${func_options_prep_result+"$func_options_prep_result"} eval func_validate_options \ ${func_parse_options_result+"$func_parse_options_result"} eval func_run_hooks func_options \ ${func_validate_options_result+"$func_validate_options_result"} # save modified positional parameters for caller func_options_result=$func_run_hooks_result } # func_options_prep [ARG]... # -------------------------- # All initialisations required before starting the option parse loop. # Note that when calling hook functions, we pass through the list of # positional parameters. If a hook function modifies that list, and # needs to propogate that back to rest of this script, then the complete # modified list must be put in 'func_run_hooks_result' before # returning. func_hookable func_options_prep func_options_prep () { $debug_cmd # Option defaults: opt_verbose=false opt_warning_types= func_run_hooks func_options_prep ${1+"$@"} # save modified positional parameters for caller func_options_prep_result=$func_run_hooks_result } # func_parse_options [ARG]... # --------------------------- # The main option parsing loop. func_hookable func_parse_options func_parse_options () { $debug_cmd func_parse_options_result= # this just eases exit handling while test $# -gt 0; do # Defer to hook functions for initial option parsing, so they # get priority in the event of reusing an option name. func_run_hooks func_parse_options ${1+"$@"} # Adjust func_parse_options positional parameters to match eval set dummy "$func_run_hooks_result"; shift # Break out of the loop if we already parsed every option. test $# -gt 0 || break _G_opt=$1 shift case $_G_opt in --debug|-x) debug_cmd='set -x' func_echo "enabling shell trace mode" $debug_cmd ;; --no-warnings|--no-warning|--no-warn) set dummy --warnings none ${1+"$@"} shift ;; --warnings|--warning|-W) test $# = 0 && func_missing_arg $_G_opt && break case " $warning_categories $1" in *" $1 "*) # trailing space prevents matching last $1 above func_append_uniq opt_warning_types " $1" ;; *all) opt_warning_types=$warning_categories ;; *none) opt_warning_types=none warning_func=: ;; *error) opt_warning_types=$warning_categories warning_func=func_fatal_error ;; *) func_fatal_error \ "unsupported warning category: '$1'" ;; esac shift ;; --verbose|-v) opt_verbose=: ;; --version) func_version ;; -\?|-h) func_usage ;; --help) func_help ;; # Separate optargs to long options (plugins may need this): --*=*) func_split_equals "$_G_opt" set dummy "$func_split_equals_lhs" \ "$func_split_equals_rhs" ${1+"$@"} shift ;; # Separate optargs to short options: -W*) func_split_short_opt "$_G_opt" set dummy "$func_split_short_opt_name" \ "$func_split_short_opt_arg" ${1+"$@"} shift ;; # Separate non-argument short options: -\?*|-h*|-v*|-x*) func_split_short_opt "$_G_opt" set dummy "$func_split_short_opt_name" \ "-$func_split_short_opt_arg" ${1+"$@"} shift ;; --) break ;; -*) func_fatal_help "unrecognised option: '$_G_opt'" ;; *) set dummy "$_G_opt" ${1+"$@"}; shift; break ;; esac done # save modified positional parameters for caller func_quote_for_eval ${1+"$@"} func_parse_options_result=$func_quote_for_eval_result } # func_validate_options [ARG]... # ------------------------------ # Perform any sanity checks on option settings and/or unconsumed # arguments. func_hookable func_validate_options func_validate_options () { $debug_cmd # Display all warnings if -W was not given. test -n "$opt_warning_types" || opt_warning_types=" $warning_categories" func_run_hooks func_validate_options ${1+"$@"} # Bail if the options were screwed! $exit_cmd $EXIT_FAILURE # save modified positional parameters for caller func_validate_options_result=$func_run_hooks_result } ## ----------------- ## ## Helper functions. ## ## ----------------- ## # This section contains the helper functions used by the rest of the # hookable option parser framework in ascii-betical order. # func_fatal_help ARG... # ---------------------- # Echo program name prefixed message to standard error, followed by # a help hint, and exit. func_fatal_help () { $debug_cmd eval \$ECHO \""Usage: $usage"\" eval \$ECHO \""$fatal_help"\" func_error ${1+"$@"} exit $EXIT_FAILURE } # func_help # --------- # Echo long help message to standard output and exit. func_help () { $debug_cmd func_usage_message $ECHO "$long_help_message" exit 0 } # func_missing_arg ARGNAME # ------------------------ # Echo program name prefixed message to standard error and set global # exit_cmd. func_missing_arg () { $debug_cmd func_error "Missing argument for '$1'." exit_cmd=exit } # func_split_equals STRING # ------------------------ # Set func_split_equals_lhs and func_split_equals_rhs shell variables after # splitting STRING at the '=' sign. test -z "$_G_HAVE_XSI_OPS" \ && (eval 'x=a/b/c; test 5aa/bb/cc = "${#x}${x%%/*}${x%/*}${x#*/}${x##*/}"') 2>/dev/null \ && _G_HAVE_XSI_OPS=yes if test yes = "$_G_HAVE_XSI_OPS" then # This is an XSI compatible shell, allowing a faster implementation... eval 'func_split_equals () { $debug_cmd func_split_equals_lhs=${1%%=*} func_split_equals_rhs=${1#*=} test "x$func_split_equals_lhs" = "x$1" \ && func_split_equals_rhs= }' else # ...otherwise fall back to using expr, which is often a shell builtin. func_split_equals () { $debug_cmd func_split_equals_lhs=`expr "x$1" : 'x\([^=]*\)'` func_split_equals_rhs= test "x$func_split_equals_lhs" = "x$1" \ || func_split_equals_rhs=`expr "x$1" : 'x[^=]*=\(.*\)$'` } fi #func_split_equals # func_split_short_opt SHORTOPT # ----------------------------- # Set func_split_short_opt_name and func_split_short_opt_arg shell # variables after splitting SHORTOPT after the 2nd character. if test yes = "$_G_HAVE_XSI_OPS" then # This is an XSI compatible shell, allowing a faster implementation... eval 'func_split_short_opt () { $debug_cmd func_split_short_opt_arg=${1#??} func_split_short_opt_name=${1%"$func_split_short_opt_arg"} }' else # ...otherwise fall back to using expr, which is often a shell builtin. func_split_short_opt () { $debug_cmd func_split_short_opt_name=`expr "x$1" : 'x-\(.\)'` func_split_short_opt_arg=`expr "x$1" : 'x-.\(.*\)$'` } fi #func_split_short_opt # func_usage # ---------- # Echo short help message to standard output and exit. func_usage () { $debug_cmd func_usage_message $ECHO "Run '$progname --help |${PAGER-more}' for full usage" exit 0 } # func_usage_message # ------------------ # Echo short help message to standard output. func_usage_message () { $debug_cmd eval \$ECHO \""Usage: $usage"\" echo $SED -n 's|^# || /^Written by/{ x;p;x } h /^Written by/q' < "$progpath" echo eval \$ECHO \""$usage_message"\" } # func_version # ------------ # Echo version message to standard output and exit. func_version () { $debug_cmd printf '%s\n' "$progname $scriptversion" $SED -n ' /(C)/!b go :more /\./!{ N s|\n# | | b more } :go /^# Written by /,/# warranty; / { s|^# || s|^# *$|| s|\((C)\)[ 0-9,-]*[ ,-]\([1-9][0-9]* \)|\1 \2| p } /^# Written by / { s|^# || p } /^warranty; /q' < "$progpath" exit $? } # Local variables: # mode: shell-script # sh-indentation: 2 # eval: (add-hook 'before-save-hook 'time-stamp) # time-stamp-pattern: "10/scriptversion=%:y-%02m-%02d.%02H; # UTC" # time-stamp-time-zone: "UTC" # End: # Set a version string. scriptversion='(GNU libtool) 2.4.6' # func_echo ARG... # ---------------- # Libtool also displays the current mode in messages, so override # funclib.sh func_echo with this custom definition. func_echo () { $debug_cmd _G_message=$* func_echo_IFS=$IFS IFS=$nl for _G_line in $_G_message; do IFS=$func_echo_IFS $ECHO "$progname${opt_mode+: $opt_mode}: $_G_line" done IFS=$func_echo_IFS } # func_warning ARG... # ------------------- # Libtool warnings are not categorized, so override funclib.sh # func_warning with this simpler definition. func_warning () { $debug_cmd $warning_func ${1+"$@"} } ## ---------------- ## ## Options parsing. ## ## ---------------- ## # Hook in the functions to make sure our own options are parsed during # the option parsing loop. usage='$progpath [OPTION]... [MODE-ARG]...' # Short help message in response to '-h'. usage_message="Options: --config show all configuration variables --debug enable verbose shell tracing -n, --dry-run display commands without modifying any files --features display basic configuration information and exit --mode=MODE use operation mode MODE --no-warnings equivalent to '-Wnone' --preserve-dup-deps don't remove duplicate dependency libraries --quiet, --silent don't print informational messages --tag=TAG use configuration variables from tag TAG -v, --verbose print more informational messages than default --version print version information -W, --warnings=CATEGORY report the warnings falling in CATEGORY [all] -h, --help, --help-all print short, long, or detailed help message " # Additional text appended to 'usage_message' in response to '--help'. func_help () { $debug_cmd func_usage_message $ECHO "$long_help_message MODE must be one of the following: clean remove files from the build directory compile compile a source file into a libtool object execute automatically set library path, then run a program finish complete the installation of libtool libraries install install libraries or executables link create a library or an executable uninstall remove libraries from an installed directory MODE-ARGS vary depending on the MODE. When passed as first option, '--mode=MODE' may be abbreviated as 'MODE' or a unique abbreviation of that. Try '$progname --help --mode=MODE' for a more detailed description of MODE. When reporting a bug, please describe a test case to reproduce it and include the following information: host-triplet: $host shell: $SHELL compiler: $LTCC compiler flags: $LTCFLAGS linker: $LD (gnu? $with_gnu_ld) version: $progname (GNU libtool) 2.4.6 automake: `($AUTOMAKE --version) 2>/dev/null |$SED 1q` autoconf: `($AUTOCONF --version) 2>/dev/null |$SED 1q` Report bugs to . GNU libtool home page: . General help using GNU software: ." exit 0 } # func_lo2o OBJECT-NAME # --------------------- # Transform OBJECT-NAME from a '.lo' suffix to the platform specific # object suffix. lo2o=s/\\.lo\$/.$objext/ o2lo=s/\\.$objext\$/.lo/ if test yes = "$_G_HAVE_XSI_OPS"; then eval 'func_lo2o () { case $1 in *.lo) func_lo2o_result=${1%.lo}.$objext ;; * ) func_lo2o_result=$1 ;; esac }' # func_xform LIBOBJ-OR-SOURCE # --------------------------- # Transform LIBOBJ-OR-SOURCE from a '.o' or '.c' (or otherwise) # suffix to a '.lo' libtool-object suffix. eval 'func_xform () { func_xform_result=${1%.*}.lo }' else # ...otherwise fall back to using sed. func_lo2o () { func_lo2o_result=`$ECHO "$1" | $SED "$lo2o"` } func_xform () { func_xform_result=`$ECHO "$1" | $SED 's|\.[^.]*$|.lo|'` } fi # func_fatal_configuration ARG... # ------------------------------- # Echo program name prefixed message to standard error, followed by # a configuration failure hint, and exit. func_fatal_configuration () { func__fatal_error ${1+"$@"} \ "See the $PACKAGE documentation for more information." \ "Fatal configuration error." } # func_config # ----------- # Display the configuration for all the tags in this script. func_config () { re_begincf='^# ### BEGIN LIBTOOL' re_endcf='^# ### END LIBTOOL' # Default configuration. $SED "1,/$re_begincf CONFIG/d;/$re_endcf CONFIG/,\$d" < "$progpath" # Now print the configurations for the tags. for tagname in $taglist; do $SED -n "/$re_begincf TAG CONFIG: $tagname\$/,/$re_endcf TAG CONFIG: $tagname\$/p" < "$progpath" done exit $? } # func_features # ------------- # Display the features supported by this script. func_features () { echo "host: $host" if test yes = "$build_libtool_libs"; then echo "enable shared libraries" else echo "disable shared libraries" fi if test yes = "$build_old_libs"; then echo "enable static libraries" else echo "disable static libraries" fi exit $? } # func_enable_tag TAGNAME # ----------------------- # Verify that TAGNAME is valid, and either flag an error and exit, or # enable the TAGNAME tag. We also add TAGNAME to the global $taglist # variable here. func_enable_tag () { # Global variable: tagname=$1 re_begincf="^# ### BEGIN LIBTOOL TAG CONFIG: $tagname\$" re_endcf="^# ### END LIBTOOL TAG CONFIG: $tagname\$" sed_extractcf=/$re_begincf/,/$re_endcf/p # Validate tagname. case $tagname in *[!-_A-Za-z0-9,/]*) func_fatal_error "invalid tag name: $tagname" ;; esac # Don't test for the "default" C tag, as we know it's # there but not specially marked. case $tagname in CC) ;; *) if $GREP "$re_begincf" "$progpath" >/dev/null 2>&1; then taglist="$taglist $tagname" # Evaluate the configuration. Be careful to quote the path # and the sed script, to avoid splitting on whitespace, but # also don't use non-portable quotes within backquotes within # quotes we have to do it in 2 steps: extractedcf=`$SED -n -e "$sed_extractcf" < "$progpath"` eval "$extractedcf" else func_error "ignoring unknown tag $tagname" fi ;; esac } # func_check_version_match # ------------------------ # Ensure that we are using m4 macros, and libtool script from the same # release of libtool. func_check_version_match () { if test "$package_revision" != "$macro_revision"; then if test "$VERSION" != "$macro_version"; then if test -z "$macro_version"; then cat >&2 <<_LT_EOF $progname: Version mismatch error. This is $PACKAGE $VERSION, but the $progname: definition of this LT_INIT comes from an older release. $progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION $progname: and run autoconf again. _LT_EOF else cat >&2 <<_LT_EOF $progname: Version mismatch error. This is $PACKAGE $VERSION, but the $progname: definition of this LT_INIT comes from $PACKAGE $macro_version. $progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION $progname: and run autoconf again. _LT_EOF fi else cat >&2 <<_LT_EOF $progname: Version mismatch error. This is $PACKAGE $VERSION, revision $package_revision, $progname: but the definition of this LT_INIT comes from revision $macro_revision. $progname: You should recreate aclocal.m4 with macros from revision $package_revision $progname: of $PACKAGE $VERSION and run autoconf again. _LT_EOF fi exit $EXIT_MISMATCH fi } # libtool_options_prep [ARG]... # ----------------------------- # Preparation for options parsed by libtool. libtool_options_prep () { $debug_mode # Option defaults: opt_config=false opt_dlopen= opt_dry_run=false opt_help=false opt_mode= opt_preserve_dup_deps=false opt_quiet=false nonopt= preserve_args= # Shorthand for --mode=foo, only valid as the first argument case $1 in clean|clea|cle|cl) shift; set dummy --mode clean ${1+"$@"}; shift ;; compile|compil|compi|comp|com|co|c) shift; set dummy --mode compile ${1+"$@"}; shift ;; execute|execut|execu|exec|exe|ex|e) shift; set dummy --mode execute ${1+"$@"}; shift ;; finish|finis|fini|fin|fi|f) shift; set dummy --mode finish ${1+"$@"}; shift ;; install|instal|insta|inst|ins|in|i) shift; set dummy --mode install ${1+"$@"}; shift ;; link|lin|li|l) shift; set dummy --mode link ${1+"$@"}; shift ;; uninstall|uninstal|uninsta|uninst|unins|unin|uni|un|u) shift; set dummy --mode uninstall ${1+"$@"}; shift ;; esac # Pass back the list of options. func_quote_for_eval ${1+"$@"} libtool_options_prep_result=$func_quote_for_eval_result } func_add_hook func_options_prep libtool_options_prep # libtool_parse_options [ARG]... # --------------------------------- # Provide handling for libtool specific options. libtool_parse_options () { $debug_cmd # Perform our own loop to consume as many options as possible in # each iteration. while test $# -gt 0; do _G_opt=$1 shift case $_G_opt in --dry-run|--dryrun|-n) opt_dry_run=: ;; --config) func_config ;; --dlopen|-dlopen) opt_dlopen="${opt_dlopen+$opt_dlopen }$1" shift ;; --preserve-dup-deps) opt_preserve_dup_deps=: ;; --features) func_features ;; --finish) set dummy --mode finish ${1+"$@"}; shift ;; --help) opt_help=: ;; --help-all) opt_help=': help-all' ;; --mode) test $# = 0 && func_missing_arg $_G_opt && break opt_mode=$1 case $1 in # Valid mode arguments: clean|compile|execute|finish|install|link|relink|uninstall) ;; # Catch anything else as an error *) func_error "invalid argument for $_G_opt" exit_cmd=exit break ;; esac shift ;; --no-silent|--no-quiet) opt_quiet=false func_append preserve_args " $_G_opt" ;; --no-warnings|--no-warning|--no-warn) opt_warning=false func_append preserve_args " $_G_opt" ;; --no-verbose) opt_verbose=false func_append preserve_args " $_G_opt" ;; --silent|--quiet) opt_quiet=: opt_verbose=false func_append preserve_args " $_G_opt" ;; --tag) test $# = 0 && func_missing_arg $_G_opt && break opt_tag=$1 func_append preserve_args " $_G_opt $1" func_enable_tag "$1" shift ;; --verbose|-v) opt_quiet=false opt_verbose=: func_append preserve_args " $_G_opt" ;; # An option not handled by this hook function: *) set dummy "$_G_opt" ${1+"$@"}; shift; break ;; esac done # save modified positional parameters for caller func_quote_for_eval ${1+"$@"} libtool_parse_options_result=$func_quote_for_eval_result } func_add_hook func_parse_options libtool_parse_options # libtool_validate_options [ARG]... # --------------------------------- # Perform any sanity checks on option settings and/or unconsumed # arguments. libtool_validate_options () { # save first non-option argument if test 0 -lt $#; then nonopt=$1 shift fi # preserve --debug test : = "$debug_cmd" || func_append preserve_args " --debug" case $host in # Solaris2 added to fix http://debbugs.gnu.org/cgi/bugreport.cgi?bug=16452 # see also: http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59788 *cygwin* | *mingw* | *pw32* | *cegcc* | *solaris2* | *os2*) # don't eliminate duplications in $postdeps and $predeps opt_duplicate_compiler_generated_deps=: ;; *) opt_duplicate_compiler_generated_deps=$opt_preserve_dup_deps ;; esac $opt_help || { # Sanity checks first: func_check_version_match test yes != "$build_libtool_libs" \ && test yes != "$build_old_libs" \ && func_fatal_configuration "not configured to build any kind of library" # Darwin sucks eval std_shrext=\"$shrext_cmds\" # Only execute mode is allowed to have -dlopen flags. if test -n "$opt_dlopen" && test execute != "$opt_mode"; then func_error "unrecognized option '-dlopen'" $ECHO "$help" 1>&2 exit $EXIT_FAILURE fi # Change the help message to a mode-specific one. generic_help=$help help="Try '$progname --help --mode=$opt_mode' for more information." } # Pass back the unparsed argument list func_quote_for_eval ${1+"$@"} libtool_validate_options_result=$func_quote_for_eval_result } func_add_hook func_validate_options libtool_validate_options # Process options as early as possible so that --help and --version # can return quickly. func_options ${1+"$@"} eval set dummy "$func_options_result"; shift ## ----------- ## ## Main. ## ## ----------- ## magic='%%%MAGIC variable%%%' magic_exe='%%%MAGIC EXE variable%%%' # Global variables. extracted_archives= extracted_serial=0 # If this variable is set in any of the actions, the command in it # will be execed at the end. This prevents here-documents from being # left over by shells. exec_cmd= # A function that is used when there is no print builtin or printf. func_fallback_echo () { eval 'cat <<_LTECHO_EOF $1 _LTECHO_EOF' } # func_generated_by_libtool # True iff stdin has been generated by Libtool. This function is only # a basic sanity check; it will hardly flush out determined imposters. func_generated_by_libtool_p () { $GREP "^# Generated by .*$PACKAGE" > /dev/null 2>&1 } # func_lalib_p file # True iff FILE is a libtool '.la' library or '.lo' object file. # This function is only a basic sanity check; it will hardly flush out # determined imposters. func_lalib_p () { test -f "$1" && $SED -e 4q "$1" 2>/dev/null | func_generated_by_libtool_p } # func_lalib_unsafe_p file # True iff FILE is a libtool '.la' library or '.lo' object file. # This function implements the same check as func_lalib_p without # resorting to external programs. To this end, it redirects stdin and # closes it afterwards, without saving the original file descriptor. # As a safety measure, use it only where a negative result would be # fatal anyway. Works if 'file' does not exist. func_lalib_unsafe_p () { lalib_p=no if test -f "$1" && test -r "$1" && exec 5<&0 <"$1"; then for lalib_p_l in 1 2 3 4 do read lalib_p_line case $lalib_p_line in \#\ Generated\ by\ *$PACKAGE* ) lalib_p=yes; break;; esac done exec 0<&5 5<&- fi test yes = "$lalib_p" } # func_ltwrapper_script_p file # True iff FILE is a libtool wrapper script # This function is only a basic sanity check; it will hardly flush out # determined imposters. func_ltwrapper_script_p () { test -f "$1" && $lt_truncate_bin < "$1" 2>/dev/null | func_generated_by_libtool_p } # func_ltwrapper_executable_p file # True iff FILE is a libtool wrapper executable # This function is only a basic sanity check; it will hardly flush out # determined imposters. func_ltwrapper_executable_p () { func_ltwrapper_exec_suffix= case $1 in *.exe) ;; *) func_ltwrapper_exec_suffix=.exe ;; esac $GREP "$magic_exe" "$1$func_ltwrapper_exec_suffix" >/dev/null 2>&1 } # func_ltwrapper_scriptname file # Assumes file is an ltwrapper_executable # uses $file to determine the appropriate filename for a # temporary ltwrapper_script. func_ltwrapper_scriptname () { func_dirname_and_basename "$1" "" "." func_stripname '' '.exe' "$func_basename_result" func_ltwrapper_scriptname_result=$func_dirname_result/$objdir/${func_stripname_result}_ltshwrapper } # func_ltwrapper_p file # True iff FILE is a libtool wrapper script or wrapper executable # This function is only a basic sanity check; it will hardly flush out # determined imposters. func_ltwrapper_p () { func_ltwrapper_script_p "$1" || func_ltwrapper_executable_p "$1" } # func_execute_cmds commands fail_cmd # Execute tilde-delimited COMMANDS. # If FAIL_CMD is given, eval that upon failure. # FAIL_CMD may read-access the current command in variable CMD! func_execute_cmds () { $debug_cmd save_ifs=$IFS; IFS='~' for cmd in $1; do IFS=$sp$nl eval cmd=\"$cmd\" IFS=$save_ifs func_show_eval "$cmd" "${2-:}" done IFS=$save_ifs } # func_source file # Source FILE, adding directory component if necessary. # Note that it is not necessary on cygwin/mingw to append a dot to # FILE even if both FILE and FILE.exe exist: automatic-append-.exe # behavior happens only for exec(3), not for open(2)! Also, sourcing # 'FILE.' does not work on cygwin managed mounts. func_source () { $debug_cmd case $1 in */* | *\\*) . "$1" ;; *) . "./$1" ;; esac } # func_resolve_sysroot PATH # Replace a leading = in PATH with a sysroot. Store the result into # func_resolve_sysroot_result func_resolve_sysroot () { func_resolve_sysroot_result=$1 case $func_resolve_sysroot_result in =*) func_stripname '=' '' "$func_resolve_sysroot_result" func_resolve_sysroot_result=$lt_sysroot$func_stripname_result ;; esac } # func_replace_sysroot PATH # If PATH begins with the sysroot, replace it with = and # store the result into func_replace_sysroot_result. func_replace_sysroot () { case $lt_sysroot:$1 in ?*:"$lt_sysroot"*) func_stripname "$lt_sysroot" '' "$1" func_replace_sysroot_result='='$func_stripname_result ;; *) # Including no sysroot. func_replace_sysroot_result=$1 ;; esac } # func_infer_tag arg # Infer tagged configuration to use if any are available and # if one wasn't chosen via the "--tag" command line option. # Only attempt this if the compiler in the base compile # command doesn't match the default compiler. # arg is usually of the form 'gcc ...' func_infer_tag () { $debug_cmd if test -n "$available_tags" && test -z "$tagname"; then CC_quoted= for arg in $CC; do func_append_quoted CC_quoted "$arg" done CC_expanded=`func_echo_all $CC` CC_quoted_expanded=`func_echo_all $CC_quoted` case $@ in # Blanks in the command may have been stripped by the calling shell, # but not from the CC environment variable when configure was run. " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \ " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*) ;; # Blanks at the start of $base_compile will cause this to fail # if we don't check for them as well. *) for z in $available_tags; do if $GREP "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then # Evaluate the configuration. eval "`$SED -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`" CC_quoted= for arg in $CC; do # Double-quote args containing other shell metacharacters. func_append_quoted CC_quoted "$arg" done CC_expanded=`func_echo_all $CC` CC_quoted_expanded=`func_echo_all $CC_quoted` case "$@ " in " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \ " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*) # The compiler in the base compile command matches # the one in the tagged configuration. # Assume this is the tagged configuration we want. tagname=$z break ;; esac fi done # If $tagname still isn't set, then no tagged configuration # was found and let the user know that the "--tag" command # line option must be used. if test -z "$tagname"; then func_echo "unable to infer tagged configuration" func_fatal_error "specify a tag with '--tag'" # else # func_verbose "using $tagname tagged configuration" fi ;; esac fi } # func_write_libtool_object output_name pic_name nonpic_name # Create a libtool object file (analogous to a ".la" file), # but don't create it if we're doing a dry run. func_write_libtool_object () { write_libobj=$1 if test yes = "$build_libtool_libs"; then write_lobj=\'$2\' else write_lobj=none fi if test yes = "$build_old_libs"; then write_oldobj=\'$3\' else write_oldobj=none fi $opt_dry_run || { cat >${write_libobj}T </dev/null` if test "$?" -eq 0 && test -n "$func_convert_core_file_wine_to_w32_tmp"; then func_convert_core_file_wine_to_w32_result=`$ECHO "$func_convert_core_file_wine_to_w32_tmp" | $SED -e "$sed_naive_backslashify"` else func_convert_core_file_wine_to_w32_result= fi fi } # end: func_convert_core_file_wine_to_w32 # func_convert_core_path_wine_to_w32 ARG # Helper function used by path conversion functions when $build is *nix, and # $host is mingw, cygwin, or some other w32 environment. Relies on a correctly # configured wine environment available, with the winepath program in $build's # $PATH. Assumes ARG has no leading or trailing path separator characters. # # ARG is path to be converted from $build format to win32. # Result is available in $func_convert_core_path_wine_to_w32_result. # Unconvertible file (directory) names in ARG are skipped; if no directory names # are convertible, then the result may be empty. func_convert_core_path_wine_to_w32 () { $debug_cmd # unfortunately, winepath doesn't convert paths, only file names func_convert_core_path_wine_to_w32_result= if test -n "$1"; then oldIFS=$IFS IFS=: for func_convert_core_path_wine_to_w32_f in $1; do IFS=$oldIFS func_convert_core_file_wine_to_w32 "$func_convert_core_path_wine_to_w32_f" if test -n "$func_convert_core_file_wine_to_w32_result"; then if test -z "$func_convert_core_path_wine_to_w32_result"; then func_convert_core_path_wine_to_w32_result=$func_convert_core_file_wine_to_w32_result else func_append func_convert_core_path_wine_to_w32_result ";$func_convert_core_file_wine_to_w32_result" fi fi done IFS=$oldIFS fi } # end: func_convert_core_path_wine_to_w32 # func_cygpath ARGS... # Wrapper around calling the cygpath program via LT_CYGPATH. This is used when # when (1) $build is *nix and Cygwin is hosted via a wine environment; or (2) # $build is MSYS and $host is Cygwin, or (3) $build is Cygwin. In case (1) or # (2), returns the Cygwin file name or path in func_cygpath_result (input # file name or path is assumed to be in w32 format, as previously converted # from $build's *nix or MSYS format). In case (3), returns the w32 file name # or path in func_cygpath_result (input file name or path is assumed to be in # Cygwin format). Returns an empty string on error. # # ARGS are passed to cygpath, with the last one being the file name or path to # be converted. # # Specify the absolute *nix (or w32) name to cygpath in the LT_CYGPATH # environment variable; do not put it in $PATH. func_cygpath () { $debug_cmd if test -n "$LT_CYGPATH" && test -f "$LT_CYGPATH"; then func_cygpath_result=`$LT_CYGPATH "$@" 2>/dev/null` if test "$?" -ne 0; then # on failure, ensure result is empty func_cygpath_result= fi else func_cygpath_result= func_error "LT_CYGPATH is empty or specifies non-existent file: '$LT_CYGPATH'" fi } #end: func_cygpath # func_convert_core_msys_to_w32 ARG # Convert file name or path ARG from MSYS format to w32 format. Return # result in func_convert_core_msys_to_w32_result. func_convert_core_msys_to_w32 () { $debug_cmd # awkward: cmd appends spaces to result func_convert_core_msys_to_w32_result=`( cmd //c echo "$1" ) 2>/dev/null | $SED -e 's/[ ]*$//' -e "$sed_naive_backslashify"` } #end: func_convert_core_msys_to_w32 # func_convert_file_check ARG1 ARG2 # Verify that ARG1 (a file name in $build format) was converted to $host # format in ARG2. Otherwise, emit an error message, but continue (resetting # func_to_host_file_result to ARG1). func_convert_file_check () { $debug_cmd if test -z "$2" && test -n "$1"; then func_error "Could not determine host file name corresponding to" func_error " '$1'" func_error "Continuing, but uninstalled executables may not work." # Fallback: func_to_host_file_result=$1 fi } # end func_convert_file_check # func_convert_path_check FROM_PATHSEP TO_PATHSEP FROM_PATH TO_PATH # Verify that FROM_PATH (a path in $build format) was converted to $host # format in TO_PATH. Otherwise, emit an error message, but continue, resetting # func_to_host_file_result to a simplistic fallback value (see below). func_convert_path_check () { $debug_cmd if test -z "$4" && test -n "$3"; then func_error "Could not determine the host path corresponding to" func_error " '$3'" func_error "Continuing, but uninstalled executables may not work." # Fallback. This is a deliberately simplistic "conversion" and # should not be "improved". See libtool.info. if test "x$1" != "x$2"; then lt_replace_pathsep_chars="s|$1|$2|g" func_to_host_path_result=`echo "$3" | $SED -e "$lt_replace_pathsep_chars"` else func_to_host_path_result=$3 fi fi } # end func_convert_path_check # func_convert_path_front_back_pathsep FRONTPAT BACKPAT REPL ORIG # Modifies func_to_host_path_result by prepending REPL if ORIG matches FRONTPAT # and appending REPL if ORIG matches BACKPAT. func_convert_path_front_back_pathsep () { $debug_cmd case $4 in $1 ) func_to_host_path_result=$3$func_to_host_path_result ;; esac case $4 in $2 ) func_append func_to_host_path_result "$3" ;; esac } # end func_convert_path_front_back_pathsep ################################################## # $build to $host FILE NAME CONVERSION FUNCTIONS # ################################################## # invoked via '$to_host_file_cmd ARG' # # In each case, ARG is the path to be converted from $build to $host format. # Result will be available in $func_to_host_file_result. # func_to_host_file ARG # Converts the file name ARG from $build format to $host format. Return result # in func_to_host_file_result. func_to_host_file () { $debug_cmd $to_host_file_cmd "$1" } # end func_to_host_file # func_to_tool_file ARG LAZY # converts the file name ARG from $build format to toolchain format. Return # result in func_to_tool_file_result. If the conversion in use is listed # in (the comma separated) LAZY, no conversion takes place. func_to_tool_file () { $debug_cmd case ,$2, in *,"$to_tool_file_cmd",*) func_to_tool_file_result=$1 ;; *) $to_tool_file_cmd "$1" func_to_tool_file_result=$func_to_host_file_result ;; esac } # end func_to_tool_file # func_convert_file_noop ARG # Copy ARG to func_to_host_file_result. func_convert_file_noop () { func_to_host_file_result=$1 } # end func_convert_file_noop # func_convert_file_msys_to_w32 ARG # Convert file name ARG from (mingw) MSYS to (mingw) w32 format; automatic # conversion to w32 is not available inside the cwrapper. Returns result in # func_to_host_file_result. func_convert_file_msys_to_w32 () { $debug_cmd func_to_host_file_result=$1 if test -n "$1"; then func_convert_core_msys_to_w32 "$1" func_to_host_file_result=$func_convert_core_msys_to_w32_result fi func_convert_file_check "$1" "$func_to_host_file_result" } # end func_convert_file_msys_to_w32 # func_convert_file_cygwin_to_w32 ARG # Convert file name ARG from Cygwin to w32 format. Returns result in # func_to_host_file_result. func_convert_file_cygwin_to_w32 () { $debug_cmd func_to_host_file_result=$1 if test -n "$1"; then # because $build is cygwin, we call "the" cygpath in $PATH; no need to use # LT_CYGPATH in this case. func_to_host_file_result=`cygpath -m "$1"` fi func_convert_file_check "$1" "$func_to_host_file_result" } # end func_convert_file_cygwin_to_w32 # func_convert_file_nix_to_w32 ARG # Convert file name ARG from *nix to w32 format. Requires a wine environment # and a working winepath. Returns result in func_to_host_file_result. func_convert_file_nix_to_w32 () { $debug_cmd func_to_host_file_result=$1 if test -n "$1"; then func_convert_core_file_wine_to_w32 "$1" func_to_host_file_result=$func_convert_core_file_wine_to_w32_result fi func_convert_file_check "$1" "$func_to_host_file_result" } # end func_convert_file_nix_to_w32 # func_convert_file_msys_to_cygwin ARG # Convert file name ARG from MSYS to Cygwin format. Requires LT_CYGPATH set. # Returns result in func_to_host_file_result. func_convert_file_msys_to_cygwin () { $debug_cmd func_to_host_file_result=$1 if test -n "$1"; then func_convert_core_msys_to_w32 "$1" func_cygpath -u "$func_convert_core_msys_to_w32_result" func_to_host_file_result=$func_cygpath_result fi func_convert_file_check "$1" "$func_to_host_file_result" } # end func_convert_file_msys_to_cygwin # func_convert_file_nix_to_cygwin ARG # Convert file name ARG from *nix to Cygwin format. Requires Cygwin installed # in a wine environment, working winepath, and LT_CYGPATH set. Returns result # in func_to_host_file_result. func_convert_file_nix_to_cygwin () { $debug_cmd func_to_host_file_result=$1 if test -n "$1"; then # convert from *nix to w32, then use cygpath to convert from w32 to cygwin. func_convert_core_file_wine_to_w32 "$1" func_cygpath -u "$func_convert_core_file_wine_to_w32_result" func_to_host_file_result=$func_cygpath_result fi func_convert_file_check "$1" "$func_to_host_file_result" } # end func_convert_file_nix_to_cygwin ############################################# # $build to $host PATH CONVERSION FUNCTIONS # ############################################# # invoked via '$to_host_path_cmd ARG' # # In each case, ARG is the path to be converted from $build to $host format. # The result will be available in $func_to_host_path_result. # # Path separators are also converted from $build format to $host format. If # ARG begins or ends with a path separator character, it is preserved (but # converted to $host format) on output. # # All path conversion functions are named using the following convention: # file name conversion function : func_convert_file_X_to_Y () # path conversion function : func_convert_path_X_to_Y () # where, for any given $build/$host combination the 'X_to_Y' value is the # same. If conversion functions are added for new $build/$host combinations, # the two new functions must follow this pattern, or func_init_to_host_path_cmd # will break. # func_init_to_host_path_cmd # Ensures that function "pointer" variable $to_host_path_cmd is set to the # appropriate value, based on the value of $to_host_file_cmd. to_host_path_cmd= func_init_to_host_path_cmd () { $debug_cmd if test -z "$to_host_path_cmd"; then func_stripname 'func_convert_file_' '' "$to_host_file_cmd" to_host_path_cmd=func_convert_path_$func_stripname_result fi } # func_to_host_path ARG # Converts the path ARG from $build format to $host format. Return result # in func_to_host_path_result. func_to_host_path () { $debug_cmd func_init_to_host_path_cmd $to_host_path_cmd "$1" } # end func_to_host_path # func_convert_path_noop ARG # Copy ARG to func_to_host_path_result. func_convert_path_noop () { func_to_host_path_result=$1 } # end func_convert_path_noop # func_convert_path_msys_to_w32 ARG # Convert path ARG from (mingw) MSYS to (mingw) w32 format; automatic # conversion to w32 is not available inside the cwrapper. Returns result in # func_to_host_path_result. func_convert_path_msys_to_w32 () { $debug_cmd func_to_host_path_result=$1 if test -n "$1"; then # Remove leading and trailing path separator characters from ARG. MSYS # behavior is inconsistent here; cygpath turns them into '.;' and ';.'; # and winepath ignores them completely. func_stripname : : "$1" func_to_host_path_tmp1=$func_stripname_result func_convert_core_msys_to_w32 "$func_to_host_path_tmp1" func_to_host_path_result=$func_convert_core_msys_to_w32_result func_convert_path_check : ";" \ "$func_to_host_path_tmp1" "$func_to_host_path_result" func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" fi } # end func_convert_path_msys_to_w32 # func_convert_path_cygwin_to_w32 ARG # Convert path ARG from Cygwin to w32 format. Returns result in # func_to_host_file_result. func_convert_path_cygwin_to_w32 () { $debug_cmd func_to_host_path_result=$1 if test -n "$1"; then # See func_convert_path_msys_to_w32: func_stripname : : "$1" func_to_host_path_tmp1=$func_stripname_result func_to_host_path_result=`cygpath -m -p "$func_to_host_path_tmp1"` func_convert_path_check : ";" \ "$func_to_host_path_tmp1" "$func_to_host_path_result" func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" fi } # end func_convert_path_cygwin_to_w32 # func_convert_path_nix_to_w32 ARG # Convert path ARG from *nix to w32 format. Requires a wine environment and # a working winepath. Returns result in func_to_host_file_result. func_convert_path_nix_to_w32 () { $debug_cmd func_to_host_path_result=$1 if test -n "$1"; then # See func_convert_path_msys_to_w32: func_stripname : : "$1" func_to_host_path_tmp1=$func_stripname_result func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1" func_to_host_path_result=$func_convert_core_path_wine_to_w32_result func_convert_path_check : ";" \ "$func_to_host_path_tmp1" "$func_to_host_path_result" func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" fi } # end func_convert_path_nix_to_w32 # func_convert_path_msys_to_cygwin ARG # Convert path ARG from MSYS to Cygwin format. Requires LT_CYGPATH set. # Returns result in func_to_host_file_result. func_convert_path_msys_to_cygwin () { $debug_cmd func_to_host_path_result=$1 if test -n "$1"; then # See func_convert_path_msys_to_w32: func_stripname : : "$1" func_to_host_path_tmp1=$func_stripname_result func_convert_core_msys_to_w32 "$func_to_host_path_tmp1" func_cygpath -u -p "$func_convert_core_msys_to_w32_result" func_to_host_path_result=$func_cygpath_result func_convert_path_check : : \ "$func_to_host_path_tmp1" "$func_to_host_path_result" func_convert_path_front_back_pathsep ":*" "*:" : "$1" fi } # end func_convert_path_msys_to_cygwin # func_convert_path_nix_to_cygwin ARG # Convert path ARG from *nix to Cygwin format. Requires Cygwin installed in a # a wine environment, working winepath, and LT_CYGPATH set. Returns result in # func_to_host_file_result. func_convert_path_nix_to_cygwin () { $debug_cmd func_to_host_path_result=$1 if test -n "$1"; then # Remove leading and trailing path separator characters from # ARG. msys behavior is inconsistent here, cygpath turns them # into '.;' and ';.', and winepath ignores them completely. func_stripname : : "$1" func_to_host_path_tmp1=$func_stripname_result func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1" func_cygpath -u -p "$func_convert_core_path_wine_to_w32_result" func_to_host_path_result=$func_cygpath_result func_convert_path_check : : \ "$func_to_host_path_tmp1" "$func_to_host_path_result" func_convert_path_front_back_pathsep ":*" "*:" : "$1" fi } # end func_convert_path_nix_to_cygwin # func_dll_def_p FILE # True iff FILE is a Windows DLL '.def' file. # Keep in sync with _LT_DLL_DEF_P in libtool.m4 func_dll_def_p () { $debug_cmd func_dll_def_p_tmp=`$SED -n \ -e 's/^[ ]*//' \ -e '/^\(;.*\)*$/d' \ -e 's/^\(EXPORTS\|LIBRARY\)\([ ].*\)*$/DEF/p' \ -e q \ "$1"` test DEF = "$func_dll_def_p_tmp" } # func_mode_compile arg... func_mode_compile () { $debug_cmd # Get the compilation command and the source file. base_compile= srcfile=$nonopt # always keep a non-empty value in "srcfile" suppress_opt=yes suppress_output= arg_mode=normal libobj= later= pie_flag= for arg do case $arg_mode in arg ) # do not "continue". Instead, add this to base_compile lastarg=$arg arg_mode=normal ;; target ) libobj=$arg arg_mode=normal continue ;; normal ) # Accept any command-line options. case $arg in -o) test -n "$libobj" && \ func_fatal_error "you cannot specify '-o' more than once" arg_mode=target continue ;; -pie | -fpie | -fPIE) func_append pie_flag " $arg" continue ;; -shared | -static | -prefer-pic | -prefer-non-pic) func_append later " $arg" continue ;; -no-suppress) suppress_opt=no continue ;; -Xcompiler) arg_mode=arg # the next one goes into the "base_compile" arg list continue # The current "srcfile" will either be retained or ;; # replaced later. I would guess that would be a bug. -Wc,*) func_stripname '-Wc,' '' "$arg" args=$func_stripname_result lastarg= save_ifs=$IFS; IFS=, for arg in $args; do IFS=$save_ifs func_append_quoted lastarg "$arg" done IFS=$save_ifs func_stripname ' ' '' "$lastarg" lastarg=$func_stripname_result # Add the arguments to base_compile. func_append base_compile " $lastarg" continue ;; *) # Accept the current argument as the source file. # The previous "srcfile" becomes the current argument. # lastarg=$srcfile srcfile=$arg ;; esac # case $arg ;; esac # case $arg_mode # Aesthetically quote the previous argument. func_append_quoted base_compile "$lastarg" done # for arg case $arg_mode in arg) func_fatal_error "you must specify an argument for -Xcompile" ;; target) func_fatal_error "you must specify a target with '-o'" ;; *) # Get the name of the library object. test -z "$libobj" && { func_basename "$srcfile" libobj=$func_basename_result } ;; esac # Recognize several different file suffixes. # If the user specifies -o file.o, it is replaced with file.lo case $libobj in *.[cCFSifmso] | \ *.ada | *.adb | *.ads | *.asm | \ *.c++ | *.cc | *.ii | *.class | *.cpp | *.cxx | \ *.[fF][09]? | *.for | *.java | *.go | *.obj | *.sx | *.cu | *.cup) func_xform "$libobj" libobj=$func_xform_result ;; esac case $libobj in *.lo) func_lo2o "$libobj"; obj=$func_lo2o_result ;; *) func_fatal_error "cannot determine name of library object from '$libobj'" ;; esac func_infer_tag $base_compile for arg in $later; do case $arg in -shared) test yes = "$build_libtool_libs" \ || func_fatal_configuration "cannot build a shared library" build_old_libs=no continue ;; -static) build_libtool_libs=no build_old_libs=yes continue ;; -prefer-pic) pic_mode=yes continue ;; -prefer-non-pic) pic_mode=no continue ;; esac done func_quote_for_eval "$libobj" test "X$libobj" != "X$func_quote_for_eval_result" \ && $ECHO "X$libobj" | $GREP '[]~#^*{};<>?"'"'"' &()|`$[]' \ && func_warning "libobj name '$libobj' may not contain shell special characters." func_dirname_and_basename "$obj" "/" "" objname=$func_basename_result xdir=$func_dirname_result lobj=$xdir$objdir/$objname test -z "$base_compile" && \ func_fatal_help "you must specify a compilation command" # Delete any leftover library objects. if test yes = "$build_old_libs"; then removelist="$obj $lobj $libobj ${libobj}T" else removelist="$lobj $libobj ${libobj}T" fi # On Cygwin there's no "real" PIC flag so we must build both object types case $host_os in cygwin* | mingw* | pw32* | os2* | cegcc*) pic_mode=default ;; esac if test no = "$pic_mode" && test pass_all != "$deplibs_check_method"; then # non-PIC code in shared libraries is not supported pic_mode=default fi # Calculate the filename of the output object if compiler does # not support -o with -c if test no = "$compiler_c_o"; then output_obj=`$ECHO "$srcfile" | $SED 's%^.*/%%; s%\.[^.]*$%%'`.$objext lockfile=$output_obj.lock else output_obj= need_locks=no lockfile= fi # Lock this critical section if it is needed # We use this script file to make the link, it avoids creating a new file if test yes = "$need_locks"; then until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do func_echo "Waiting for $lockfile to be removed" sleep 2 done elif test warn = "$need_locks"; then if test -f "$lockfile"; then $ECHO "\ *** ERROR, $lockfile exists and contains: `cat $lockfile 2>/dev/null` This indicates that another process is trying to use the same temporary object file, and libtool could not work around it because your compiler does not support '-c' and '-o' together. If you repeat this compilation, it may succeed, by chance, but you had better avoid parallel builds (make -j) in this platform, or get a better compiler." $opt_dry_run || $RM $removelist exit $EXIT_FAILURE fi func_append removelist " $output_obj" $ECHO "$srcfile" > "$lockfile" fi $opt_dry_run || $RM $removelist func_append removelist " $lockfile" trap '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' 1 2 15 func_to_tool_file "$srcfile" func_convert_file_msys_to_w32 srcfile=$func_to_tool_file_result func_quote_for_eval "$srcfile" qsrcfile=$func_quote_for_eval_result # Only build a PIC object if we are building libtool libraries. if test yes = "$build_libtool_libs"; then # Without this assignment, base_compile gets emptied. fbsd_hideous_sh_bug=$base_compile if test no != "$pic_mode"; then command="$base_compile $qsrcfile $pic_flag" else # Don't build PIC code command="$base_compile $qsrcfile" fi func_mkdir_p "$xdir$objdir" if test -z "$output_obj"; then # Place PIC objects in $objdir func_append command " -o $lobj" fi func_show_eval_locale "$command" \ 'test -n "$output_obj" && $RM $removelist; exit $EXIT_FAILURE' if test warn = "$need_locks" && test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then $ECHO "\ *** ERROR, $lockfile contains: `cat $lockfile 2>/dev/null` but it should contain: $srcfile This indicates that another process is trying to use the same temporary object file, and libtool could not work around it because your compiler does not support '-c' and '-o' together. If you repeat this compilation, it may succeed, by chance, but you had better avoid parallel builds (make -j) in this platform, or get a better compiler." $opt_dry_run || $RM $removelist exit $EXIT_FAILURE fi # Just move the object if needed, then go on to compile the next one if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then func_show_eval '$MV "$output_obj" "$lobj"' \ 'error=$?; $opt_dry_run || $RM $removelist; exit $error' fi # Allow error messages only from the first compilation. if test yes = "$suppress_opt"; then suppress_output=' >/dev/null 2>&1' fi fi # Only build a position-dependent object if we build old libraries. if test yes = "$build_old_libs"; then if test yes != "$pic_mode"; then # Don't build PIC code command="$base_compile $qsrcfile$pie_flag" else command="$base_compile $qsrcfile $pic_flag" fi if test yes = "$compiler_c_o"; then func_append command " -o $obj" fi # Suppress compiler output if we already did a PIC compilation. func_append command "$suppress_output" func_show_eval_locale "$command" \ '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' if test warn = "$need_locks" && test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then $ECHO "\ *** ERROR, $lockfile contains: `cat $lockfile 2>/dev/null` but it should contain: $srcfile This indicates that another process is trying to use the same temporary object file, and libtool could not work around it because your compiler does not support '-c' and '-o' together. If you repeat this compilation, it may succeed, by chance, but you had better avoid parallel builds (make -j) in this platform, or get a better compiler." $opt_dry_run || $RM $removelist exit $EXIT_FAILURE fi # Just move the object if needed if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then func_show_eval '$MV "$output_obj" "$obj"' \ 'error=$?; $opt_dry_run || $RM $removelist; exit $error' fi fi $opt_dry_run || { func_write_libtool_object "$libobj" "$objdir/$objname" "$objname" # Unlock the critical section if it was locked if test no != "$need_locks"; then removelist=$lockfile $RM "$lockfile" fi } exit $EXIT_SUCCESS } $opt_help || { test compile = "$opt_mode" && func_mode_compile ${1+"$@"} } func_mode_help () { # We need to display help for each of the modes. case $opt_mode in "") # Generic help is extracted from the usage comments # at the start of this file. func_help ;; clean) $ECHO \ "Usage: $progname [OPTION]... --mode=clean RM [RM-OPTION]... FILE... Remove files from the build directory. RM is the name of the program to use to delete files associated with each FILE (typically '/bin/rm'). RM-OPTIONS are options (such as '-f') to be passed to RM. If FILE is a libtool library, object or program, all the files associated with it are deleted. Otherwise, only FILE itself is deleted using RM." ;; compile) $ECHO \ "Usage: $progname [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE Compile a source file into a libtool library object. This mode accepts the following additional options: -o OUTPUT-FILE set the output file name to OUTPUT-FILE -no-suppress do not suppress compiler output for multiple passes -prefer-pic try to build PIC objects only -prefer-non-pic try to build non-PIC objects only -shared do not build a '.o' file suitable for static linking -static only build a '.o' file suitable for static linking -Wc,FLAG pass FLAG directly to the compiler COMPILE-COMMAND is a command to be used in creating a 'standard' object file from the given SOURCEFILE. The output file name is determined by removing the directory component from SOURCEFILE, then substituting the C source code suffix '.c' with the library object suffix, '.lo'." ;; execute) $ECHO \ "Usage: $progname [OPTION]... --mode=execute COMMAND [ARGS]... Automatically set library path, then run a program. This mode accepts the following additional options: -dlopen FILE add the directory containing FILE to the library path This mode sets the library path environment variable according to '-dlopen' flags. If any of the ARGS are libtool executable wrappers, then they are translated into their corresponding uninstalled binary, and any of their required library directories are added to the library path. Then, COMMAND is executed, with ARGS as arguments." ;; finish) $ECHO \ "Usage: $progname [OPTION]... --mode=finish [LIBDIR]... Complete the installation of libtool libraries. Each LIBDIR is a directory that contains libtool libraries. The commands that this mode executes may require superuser privileges. Use the '--dry-run' option if you just want to see what would be executed." ;; install) $ECHO \ "Usage: $progname [OPTION]... --mode=install INSTALL-COMMAND... Install executables or libraries. INSTALL-COMMAND is the installation command. The first component should be either the 'install' or 'cp' program. The following components of INSTALL-COMMAND are treated specially: -inst-prefix-dir PREFIX-DIR Use PREFIX-DIR as a staging area for installation The rest of the components are interpreted as arguments to that command (only BSD-compatible install options are recognized)." ;; link) $ECHO \ "Usage: $progname [OPTION]... --mode=link LINK-COMMAND... Link object files or libraries together to form another library, or to create an executable program. LINK-COMMAND is a command using the C compiler that you would use to create a program from several object files. The following components of LINK-COMMAND are treated specially: -all-static do not do any dynamic linking at all -avoid-version do not add a version suffix if possible -bindir BINDIR specify path to binaries directory (for systems where libraries must be found in the PATH setting at runtime) -dlopen FILE '-dlpreopen' FILE if it cannot be dlopened at runtime -dlpreopen FILE link in FILE and add its symbols to lt_preloaded_symbols -export-dynamic allow symbols from OUTPUT-FILE to be resolved with dlsym(3) -export-symbols SYMFILE try to export only the symbols listed in SYMFILE -export-symbols-regex REGEX try to export only the symbols matching REGEX -LLIBDIR search LIBDIR for required installed libraries -lNAME OUTPUT-FILE requires the installed library libNAME -module build a library that can dlopened -no-fast-install disable the fast-install mode -no-install link a not-installable executable -no-undefined declare that a library does not refer to external symbols -o OUTPUT-FILE create OUTPUT-FILE from the specified objects -objectlist FILE use a list of object files found in FILE to specify objects -os2dllname NAME force a short DLL name on OS/2 (no effect on other OSes) -precious-files-regex REGEX don't remove output files matching REGEX -release RELEASE specify package release information -rpath LIBDIR the created library will eventually be installed in LIBDIR -R[ ]LIBDIR add LIBDIR to the runtime path of programs and libraries -shared only do dynamic linking of libtool libraries -shrext SUFFIX override the standard shared library file extension -static do not do any dynamic linking of uninstalled libtool libraries -static-libtool-libs do not do any dynamic linking of libtool libraries -version-info CURRENT[:REVISION[:AGE]] specify library version info [each variable defaults to 0] -weak LIBNAME declare that the target provides the LIBNAME interface -Wc,FLAG -Xcompiler FLAG pass linker-specific FLAG directly to the compiler -Wl,FLAG -Xlinker FLAG pass linker-specific FLAG directly to the linker -XCClinker FLAG pass link-specific FLAG to the compiler driver (CC) All other options (arguments beginning with '-') are ignored. Every other argument is treated as a filename. Files ending in '.la' are treated as uninstalled libtool libraries, other files are standard or library object files. If the OUTPUT-FILE ends in '.la', then a libtool library is created, only library objects ('.lo' files) may be specified, and '-rpath' is required, except when creating a convenience library. If OUTPUT-FILE ends in '.a' or '.lib', then a standard library is created using 'ar' and 'ranlib', or on Windows using 'lib'. If OUTPUT-FILE ends in '.lo' or '.$objext', then a reloadable object file is created, otherwise an executable program is created." ;; uninstall) $ECHO \ "Usage: $progname [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE... Remove libraries from an installation directory. RM is the name of the program to use to delete files associated with each FILE (typically '/bin/rm'). RM-OPTIONS are options (such as '-f') to be passed to RM. If FILE is a libtool library, all the files associated with it are deleted. Otherwise, only FILE itself is deleted using RM." ;; *) func_fatal_help "invalid operation mode '$opt_mode'" ;; esac echo $ECHO "Try '$progname --help' for more information about other modes." } # Now that we've collected a possible --mode arg, show help if necessary if $opt_help; then if test : = "$opt_help"; then func_mode_help else { func_help noexit for opt_mode in compile link execute install finish uninstall clean; do func_mode_help done } | $SED -n '1p; 2,$s/^Usage:/ or: /p' { func_help noexit for opt_mode in compile link execute install finish uninstall clean; do echo func_mode_help done } | $SED '1d /^When reporting/,/^Report/{ H d } $x /information about other modes/d /more detailed .*MODE/d s/^Usage:.*--mode=\([^ ]*\) .*/Description of \1 mode:/' fi exit $? fi # func_mode_execute arg... func_mode_execute () { $debug_cmd # The first argument is the command name. cmd=$nonopt test -z "$cmd" && \ func_fatal_help "you must specify a COMMAND" # Handle -dlopen flags immediately. for file in $opt_dlopen; do test -f "$file" \ || func_fatal_help "'$file' is not a file" dir= case $file in *.la) func_resolve_sysroot "$file" file=$func_resolve_sysroot_result # Check to see that this really is a libtool archive. func_lalib_unsafe_p "$file" \ || func_fatal_help "'$lib' is not a valid libtool archive" # Read the libtool library. dlname= library_names= func_source "$file" # Skip this library if it cannot be dlopened. if test -z "$dlname"; then # Warn if it was a shared library. test -n "$library_names" && \ func_warning "'$file' was not linked with '-export-dynamic'" continue fi func_dirname "$file" "" "." dir=$func_dirname_result if test -f "$dir/$objdir/$dlname"; then func_append dir "/$objdir" else if test ! -f "$dir/$dlname"; then func_fatal_error "cannot find '$dlname' in '$dir' or '$dir/$objdir'" fi fi ;; *.lo) # Just add the directory containing the .lo file. func_dirname "$file" "" "." dir=$func_dirname_result ;; *) func_warning "'-dlopen' is ignored for non-libtool libraries and objects" continue ;; esac # Get the absolute pathname. absdir=`cd "$dir" && pwd` test -n "$absdir" && dir=$absdir # Now add the directory to shlibpath_var. if eval "test -z \"\$$shlibpath_var\""; then eval "$shlibpath_var=\"\$dir\"" else eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\"" fi done # This variable tells wrapper scripts just to set shlibpath_var # rather than running their programs. libtool_execute_magic=$magic # Check if any of the arguments is a wrapper script. args= for file do case $file in -* | *.la | *.lo ) ;; *) # Do a test to see if this is really a libtool program. if func_ltwrapper_script_p "$file"; then func_source "$file" # Transform arg to wrapped name. file=$progdir/$program elif func_ltwrapper_executable_p "$file"; then func_ltwrapper_scriptname "$file" func_source "$func_ltwrapper_scriptname_result" # Transform arg to wrapped name. file=$progdir/$program fi ;; esac # Quote arguments (to preserve shell metacharacters). func_append_quoted args "$file" done if $opt_dry_run; then # Display what would be done. if test -n "$shlibpath_var"; then eval "\$ECHO \"\$shlibpath_var=\$$shlibpath_var\"" echo "export $shlibpath_var" fi $ECHO "$cmd$args" exit $EXIT_SUCCESS else if test -n "$shlibpath_var"; then # Export the shlibpath_var. eval "export $shlibpath_var" fi # Restore saved environment variables for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES do eval "if test \"\${save_$lt_var+set}\" = set; then $lt_var=\$save_$lt_var; export $lt_var else $lt_unset $lt_var fi" done # Now prepare to actually exec the command. exec_cmd=\$cmd$args fi } test execute = "$opt_mode" && func_mode_execute ${1+"$@"} # func_mode_finish arg... func_mode_finish () { $debug_cmd libs= libdirs= admincmds= for opt in "$nonopt" ${1+"$@"} do if test -d "$opt"; then func_append libdirs " $opt" elif test -f "$opt"; then if func_lalib_unsafe_p "$opt"; then func_append libs " $opt" else func_warning "'$opt' is not a valid libtool archive" fi else func_fatal_error "invalid argument '$opt'" fi done if test -n "$libs"; then if test -n "$lt_sysroot"; then sysroot_regex=`$ECHO "$lt_sysroot" | $SED "$sed_make_literal_regex"` sysroot_cmd="s/\([ ']\)$sysroot_regex/\1/g;" else sysroot_cmd= fi # Remove sysroot references if $opt_dry_run; then for lib in $libs; do echo "removing references to $lt_sysroot and '=' prefixes from $lib" done else tmpdir=`func_mktempdir` for lib in $libs; do $SED -e "$sysroot_cmd s/\([ ']-[LR]\)=/\1/g; s/\([ ']\)=/\1/g" $lib \ > $tmpdir/tmp-la mv -f $tmpdir/tmp-la $lib done ${RM}r "$tmpdir" fi fi if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then for libdir in $libdirs; do if test -n "$finish_cmds"; then # Do each command in the finish commands. func_execute_cmds "$finish_cmds" 'admincmds="$admincmds '"$cmd"'"' fi if test -n "$finish_eval"; then # Do the single finish_eval. eval cmds=\"$finish_eval\" $opt_dry_run || eval "$cmds" || func_append admincmds " $cmds" fi done fi # Exit here if they wanted silent mode. $opt_quiet && exit $EXIT_SUCCESS if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then echo "----------------------------------------------------------------------" echo "Libraries have been installed in:" for libdir in $libdirs; do $ECHO " $libdir" done echo echo "If you ever happen to want to link against installed libraries" echo "in a given directory, LIBDIR, you must either use libtool, and" echo "specify the full pathname of the library, or use the '-LLIBDIR'" echo "flag during linking and do at least one of the following:" if test -n "$shlibpath_var"; then echo " - add LIBDIR to the '$shlibpath_var' environment variable" echo " during execution" fi if test -n "$runpath_var"; then echo " - add LIBDIR to the '$runpath_var' environment variable" echo " during linking" fi if test -n "$hardcode_libdir_flag_spec"; then libdir=LIBDIR eval flag=\"$hardcode_libdir_flag_spec\" $ECHO " - use the '$flag' linker flag" fi if test -n "$admincmds"; then $ECHO " - have your system administrator run these commands:$admincmds" fi if test -f /etc/ld.so.conf; then echo " - have your system administrator add LIBDIR to '/etc/ld.so.conf'" fi echo echo "See any operating system documentation about shared libraries for" case $host in solaris2.[6789]|solaris2.1[0-9]) echo "more information, such as the ld(1), crle(1) and ld.so(8) manual" echo "pages." ;; *) echo "more information, such as the ld(1) and ld.so(8) manual pages." ;; esac echo "----------------------------------------------------------------------" fi exit $EXIT_SUCCESS } test finish = "$opt_mode" && func_mode_finish ${1+"$@"} # func_mode_install arg... func_mode_install () { $debug_cmd # There may be an optional sh(1) argument at the beginning of # install_prog (especially on Windows NT). if test "$SHELL" = "$nonopt" || test /bin/sh = "$nonopt" || # Allow the use of GNU shtool's install command. case $nonopt in *shtool*) :;; *) false;; esac then # Aesthetically quote it. func_quote_for_eval "$nonopt" install_prog="$func_quote_for_eval_result " arg=$1 shift else install_prog= arg=$nonopt fi # The real first argument should be the name of the installation program. # Aesthetically quote it. func_quote_for_eval "$arg" func_append install_prog "$func_quote_for_eval_result" install_shared_prog=$install_prog case " $install_prog " in *[\\\ /]cp\ *) install_cp=: ;; *) install_cp=false ;; esac # We need to accept at least all the BSD install flags. dest= files= opts= prev= install_type= isdir=false stripme= no_mode=: for arg do arg2= if test -n "$dest"; then func_append files " $dest" dest=$arg continue fi case $arg in -d) isdir=: ;; -f) if $install_cp; then :; else prev=$arg fi ;; -g | -m | -o) prev=$arg ;; -s) stripme=" -s" continue ;; -*) ;; *) # If the previous option needed an argument, then skip it. if test -n "$prev"; then if test X-m = "X$prev" && test -n "$install_override_mode"; then arg2=$install_override_mode no_mode=false fi prev= else dest=$arg continue fi ;; esac # Aesthetically quote the argument. func_quote_for_eval "$arg" func_append install_prog " $func_quote_for_eval_result" if test -n "$arg2"; then func_quote_for_eval "$arg2" fi func_append install_shared_prog " $func_quote_for_eval_result" done test -z "$install_prog" && \ func_fatal_help "you must specify an install program" test -n "$prev" && \ func_fatal_help "the '$prev' option requires an argument" if test -n "$install_override_mode" && $no_mode; then if $install_cp; then :; else func_quote_for_eval "$install_override_mode" func_append install_shared_prog " -m $func_quote_for_eval_result" fi fi if test -z "$files"; then if test -z "$dest"; then func_fatal_help "no file or destination specified" else func_fatal_help "you must specify a destination" fi fi # Strip any trailing slash from the destination. func_stripname '' '/' "$dest" dest=$func_stripname_result # Check to see that the destination is a directory. test -d "$dest" && isdir=: if $isdir; then destdir=$dest destname= else func_dirname_and_basename "$dest" "" "." destdir=$func_dirname_result destname=$func_basename_result # Not a directory, so check to see that there is only one file specified. set dummy $files; shift test "$#" -gt 1 && \ func_fatal_help "'$dest' is not a directory" fi case $destdir in [\\/]* | [A-Za-z]:[\\/]*) ;; *) for file in $files; do case $file in *.lo) ;; *) func_fatal_help "'$destdir' must be an absolute directory name" ;; esac done ;; esac # This variable tells wrapper scripts just to set variables rather # than running their programs. libtool_install_magic=$magic staticlibs= future_libdirs= current_libdirs= for file in $files; do # Do each installation. case $file in *.$libext) # Do the static libraries later. func_append staticlibs " $file" ;; *.la) func_resolve_sysroot "$file" file=$func_resolve_sysroot_result # Check to see that this really is a libtool archive. func_lalib_unsafe_p "$file" \ || func_fatal_help "'$file' is not a valid libtool archive" library_names= old_library= relink_command= func_source "$file" # Add the libdir to current_libdirs if it is the destination. if test "X$destdir" = "X$libdir"; then case "$current_libdirs " in *" $libdir "*) ;; *) func_append current_libdirs " $libdir" ;; esac else # Note the libdir as a future libdir. case "$future_libdirs " in *" $libdir "*) ;; *) func_append future_libdirs " $libdir" ;; esac fi func_dirname "$file" "/" "" dir=$func_dirname_result func_append dir "$objdir" if test -n "$relink_command"; then # Determine the prefix the user has applied to our future dir. inst_prefix_dir=`$ECHO "$destdir" | $SED -e "s%$libdir\$%%"` # Don't allow the user to place us outside of our expected # location b/c this prevents finding dependent libraries that # are installed to the same prefix. # At present, this check doesn't affect windows .dll's that # are installed into $libdir/../bin (currently, that works fine) # but it's something to keep an eye on. test "$inst_prefix_dir" = "$destdir" && \ func_fatal_error "error: cannot install '$file' to a directory not ending in $libdir" if test -n "$inst_prefix_dir"; then # Stick the inst_prefix_dir data into the link command. relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"` else relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%%"` fi func_warning "relinking '$file'" func_show_eval "$relink_command" \ 'func_fatal_error "error: relink '\''$file'\'' with the above command before installing it"' fi # See the names of the shared library. set dummy $library_names; shift if test -n "$1"; then realname=$1 shift srcname=$realname test -n "$relink_command" && srcname=${realname}T # Install the shared library and build the symlinks. func_show_eval "$install_shared_prog $dir/$srcname $destdir/$realname" \ 'exit $?' tstripme=$stripme case $host_os in cygwin* | mingw* | pw32* | cegcc*) case $realname in *.dll.a) tstripme= ;; esac ;; os2*) case $realname in *_dll.a) tstripme= ;; esac ;; esac if test -n "$tstripme" && test -n "$striplib"; then func_show_eval "$striplib $destdir/$realname" 'exit $?' fi if test "$#" -gt 0; then # Delete the old symlinks, and create new ones. # Try 'ln -sf' first, because the 'ln' binary might depend on # the symlink we replace! Solaris /bin/ln does not understand -f, # so we also need to try rm && ln -s. for linkname do test "$linkname" != "$realname" \ && func_show_eval "(cd $destdir && { $LN_S -f $realname $linkname || { $RM $linkname && $LN_S $realname $linkname; }; })" done fi # Do each command in the postinstall commands. lib=$destdir/$realname func_execute_cmds "$postinstall_cmds" 'exit $?' fi # Install the pseudo-library for information purposes. func_basename "$file" name=$func_basename_result instname=$dir/${name}i func_show_eval "$install_prog $instname $destdir/$name" 'exit $?' # Maybe install the static library, too. test -n "$old_library" && func_append staticlibs " $dir/$old_library" ;; *.lo) # Install (i.e. copy) a libtool object. # Figure out destination file name, if it wasn't already specified. if test -n "$destname"; then destfile=$destdir/$destname else func_basename "$file" destfile=$func_basename_result destfile=$destdir/$destfile fi # Deduce the name of the destination old-style object file. case $destfile in *.lo) func_lo2o "$destfile" staticdest=$func_lo2o_result ;; *.$objext) staticdest=$destfile destfile= ;; *) func_fatal_help "cannot copy a libtool object to '$destfile'" ;; esac # Install the libtool object if requested. test -n "$destfile" && \ func_show_eval "$install_prog $file $destfile" 'exit $?' # Install the old object if enabled. if test yes = "$build_old_libs"; then # Deduce the name of the old-style object file. func_lo2o "$file" staticobj=$func_lo2o_result func_show_eval "$install_prog \$staticobj \$staticdest" 'exit $?' fi exit $EXIT_SUCCESS ;; *) # Figure out destination file name, if it wasn't already specified. if test -n "$destname"; then destfile=$destdir/$destname else func_basename "$file" destfile=$func_basename_result destfile=$destdir/$destfile fi # If the file is missing, and there is a .exe on the end, strip it # because it is most likely a libtool script we actually want to # install stripped_ext= case $file in *.exe) if test ! -f "$file"; then func_stripname '' '.exe' "$file" file=$func_stripname_result stripped_ext=.exe fi ;; esac # Do a test to see if this is really a libtool program. case $host in *cygwin* | *mingw*) if func_ltwrapper_executable_p "$file"; then func_ltwrapper_scriptname "$file" wrapper=$func_ltwrapper_scriptname_result else func_stripname '' '.exe' "$file" wrapper=$func_stripname_result fi ;; *) wrapper=$file ;; esac if func_ltwrapper_script_p "$wrapper"; then notinst_deplibs= relink_command= func_source "$wrapper" # Check the variables that should have been set. test -z "$generated_by_libtool_version" && \ func_fatal_error "invalid libtool wrapper script '$wrapper'" finalize=: for lib in $notinst_deplibs; do # Check to see that each library is installed. libdir= if test -f "$lib"; then func_source "$lib" fi libfile=$libdir/`$ECHO "$lib" | $SED 's%^.*/%%g'` if test -n "$libdir" && test ! -f "$libfile"; then func_warning "'$lib' has not been installed in '$libdir'" finalize=false fi done relink_command= func_source "$wrapper" outputname= if test no = "$fast_install" && test -n "$relink_command"; then $opt_dry_run || { if $finalize; then tmpdir=`func_mktempdir` func_basename "$file$stripped_ext" file=$func_basename_result outputname=$tmpdir/$file # Replace the output file specification. relink_command=`$ECHO "$relink_command" | $SED 's%@OUTPUT@%'"$outputname"'%g'` $opt_quiet || { func_quote_for_expand "$relink_command" eval "func_echo $func_quote_for_expand_result" } if eval "$relink_command"; then : else func_error "error: relink '$file' with the above command before installing it" $opt_dry_run || ${RM}r "$tmpdir" continue fi file=$outputname else func_warning "cannot relink '$file'" fi } else # Install the binary that we compiled earlier. file=`$ECHO "$file$stripped_ext" | $SED "s%\([^/]*\)$%$objdir/\1%"` fi fi # remove .exe since cygwin /usr/bin/install will append another # one anyway case $install_prog,$host in */usr/bin/install*,*cygwin*) case $file:$destfile in *.exe:*.exe) # this is ok ;; *.exe:*) destfile=$destfile.exe ;; *:*.exe) func_stripname '' '.exe' "$destfile" destfile=$func_stripname_result ;; esac ;; esac func_show_eval "$install_prog\$stripme \$file \$destfile" 'exit $?' $opt_dry_run || if test -n "$outputname"; then ${RM}r "$tmpdir" fi ;; esac done for file in $staticlibs; do func_basename "$file" name=$func_basename_result # Set up the ranlib parameters. oldlib=$destdir/$name func_to_tool_file "$oldlib" func_convert_file_msys_to_w32 tool_oldlib=$func_to_tool_file_result func_show_eval "$install_prog \$file \$oldlib" 'exit $?' if test -n "$stripme" && test -n "$old_striplib"; then func_show_eval "$old_striplib $tool_oldlib" 'exit $?' fi # Do each command in the postinstall commands. func_execute_cmds "$old_postinstall_cmds" 'exit $?' done test -n "$future_libdirs" && \ func_warning "remember to run '$progname --finish$future_libdirs'" if test -n "$current_libdirs"; then # Maybe just do a dry run. $opt_dry_run && current_libdirs=" -n$current_libdirs" exec_cmd='$SHELL "$progpath" $preserve_args --finish$current_libdirs' else exit $EXIT_SUCCESS fi } test install = "$opt_mode" && func_mode_install ${1+"$@"} # func_generate_dlsyms outputname originator pic_p # Extract symbols from dlprefiles and create ${outputname}S.o with # a dlpreopen symbol table. func_generate_dlsyms () { $debug_cmd my_outputname=$1 my_originator=$2 my_pic_p=${3-false} my_prefix=`$ECHO "$my_originator" | $SED 's%[^a-zA-Z0-9]%_%g'` my_dlsyms= if test -n "$dlfiles$dlprefiles" || test no != "$dlself"; then if test -n "$NM" && test -n "$global_symbol_pipe"; then my_dlsyms=${my_outputname}S.c else func_error "not configured to extract global symbols from dlpreopened files" fi fi if test -n "$my_dlsyms"; then case $my_dlsyms in "") ;; *.c) # Discover the nlist of each of the dlfiles. nlist=$output_objdir/$my_outputname.nm func_show_eval "$RM $nlist ${nlist}S ${nlist}T" # Parse the name list into a source file. func_verbose "creating $output_objdir/$my_dlsyms" $opt_dry_run || $ECHO > "$output_objdir/$my_dlsyms" "\ /* $my_dlsyms - symbol resolution table for '$my_outputname' dlsym emulation. */ /* Generated by $PROGRAM (GNU $PACKAGE) $VERSION */ #ifdef __cplusplus extern \"C\" { #endif #if defined __GNUC__ && (((__GNUC__ == 4) && (__GNUC_MINOR__ >= 4)) || (__GNUC__ > 4)) #pragma GCC diagnostic ignored \"-Wstrict-prototypes\" #endif /* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ #if defined _WIN32 || defined __CYGWIN__ || defined _WIN32_WCE /* DATA imports from DLLs on WIN32 can't be const, because runtime relocations are performed -- see ld's documentation on pseudo-relocs. */ # define LT_DLSYM_CONST #elif defined __osf__ /* This system does not cope well with relocations in const data. */ # define LT_DLSYM_CONST #else # define LT_DLSYM_CONST const #endif #define STREQ(s1, s2) (strcmp ((s1), (s2)) == 0) /* External symbol declarations for the compiler. */\ " if test yes = "$dlself"; then func_verbose "generating symbol list for '$output'" $opt_dry_run || echo ': @PROGRAM@ ' > "$nlist" # Add our own program objects to the symbol list. progfiles=`$ECHO "$objs$old_deplibs" | $SP2NL | $SED "$lo2o" | $NL2SP` for progfile in $progfiles; do func_to_tool_file "$progfile" func_convert_file_msys_to_w32 func_verbose "extracting global C symbols from '$func_to_tool_file_result'" $opt_dry_run || eval "$NM $func_to_tool_file_result | $global_symbol_pipe >> '$nlist'" done if test -n "$exclude_expsyms"; then $opt_dry_run || { eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T' eval '$MV "$nlist"T "$nlist"' } fi if test -n "$export_symbols_regex"; then $opt_dry_run || { eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T' eval '$MV "$nlist"T "$nlist"' } fi # Prepare the list of exported symbols if test -z "$export_symbols"; then export_symbols=$output_objdir/$outputname.exp $opt_dry_run || { $RM $export_symbols eval "$SED -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"' case $host in *cygwin* | *mingw* | *cegcc* ) eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"' ;; esac } else $opt_dry_run || { eval "$SED -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"' eval '$GREP -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T' eval '$MV "$nlist"T "$nlist"' case $host in *cygwin* | *mingw* | *cegcc* ) eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' eval 'cat "$nlist" >> "$output_objdir/$outputname.def"' ;; esac } fi fi for dlprefile in $dlprefiles; do func_verbose "extracting global C symbols from '$dlprefile'" func_basename "$dlprefile" name=$func_basename_result case $host in *cygwin* | *mingw* | *cegcc* ) # if an import library, we need to obtain dlname if func_win32_import_lib_p "$dlprefile"; then func_tr_sh "$dlprefile" eval "curr_lafile=\$libfile_$func_tr_sh_result" dlprefile_dlbasename= if test -n "$curr_lafile" && func_lalib_p "$curr_lafile"; then # Use subshell, to avoid clobbering current variable values dlprefile_dlname=`source "$curr_lafile" && echo "$dlname"` if test -n "$dlprefile_dlname"; then func_basename "$dlprefile_dlname" dlprefile_dlbasename=$func_basename_result else # no lafile. user explicitly requested -dlpreopen . $sharedlib_from_linklib_cmd "$dlprefile" dlprefile_dlbasename=$sharedlib_from_linklib_result fi fi $opt_dry_run || { if test -n "$dlprefile_dlbasename"; then eval '$ECHO ": $dlprefile_dlbasename" >> "$nlist"' else func_warning "Could not compute DLL name from $name" eval '$ECHO ": $name " >> "$nlist"' fi func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe | $SED -e '/I __imp/d' -e 's/I __nm_/D /;s/_nm__//' >> '$nlist'" } else # not an import lib $opt_dry_run || { eval '$ECHO ": $name " >> "$nlist"' func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'" } fi ;; *) $opt_dry_run || { eval '$ECHO ": $name " >> "$nlist"' func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'" } ;; esac done $opt_dry_run || { # Make sure we have at least an empty file. test -f "$nlist" || : > "$nlist" if test -n "$exclude_expsyms"; then $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T $MV "$nlist"T "$nlist" fi # Try sorting and uniquifying the output. if $GREP -v "^: " < "$nlist" | if sort -k 3 /dev/null 2>&1; then sort -k 3 else sort +2 fi | uniq > "$nlist"S; then : else $GREP -v "^: " < "$nlist" > "$nlist"S fi if test -f "$nlist"S; then eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$my_dlsyms"' else echo '/* NONE */' >> "$output_objdir/$my_dlsyms" fi func_show_eval '$RM "${nlist}I"' if test -n "$global_symbol_to_import"; then eval "$global_symbol_to_import"' < "$nlist"S > "$nlist"I' fi echo >> "$output_objdir/$my_dlsyms" "\ /* The mapping between symbol names and symbols. */ typedef struct { const char *name; void *address; } lt_dlsymlist; extern LT_DLSYM_CONST lt_dlsymlist lt_${my_prefix}_LTX_preloaded_symbols[];\ " if test -s "$nlist"I; then echo >> "$output_objdir/$my_dlsyms" "\ static void lt_syminit(void) { LT_DLSYM_CONST lt_dlsymlist *symbol = lt_${my_prefix}_LTX_preloaded_symbols; for (; symbol->name; ++symbol) {" $SED 's/.*/ if (STREQ (symbol->name, \"&\")) symbol->address = (void *) \&&;/' < "$nlist"I >> "$output_objdir/$my_dlsyms" echo >> "$output_objdir/$my_dlsyms" "\ } }" fi echo >> "$output_objdir/$my_dlsyms" "\ LT_DLSYM_CONST lt_dlsymlist lt_${my_prefix}_LTX_preloaded_symbols[] = { {\"$my_originator\", (void *) 0}," if test -s "$nlist"I; then echo >> "$output_objdir/$my_dlsyms" "\ {\"@INIT@\", (void *) <_syminit}," fi case $need_lib_prefix in no) eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$my_dlsyms" ;; *) eval "$global_symbol_to_c_name_address_lib_prefix" < "$nlist" >> "$output_objdir/$my_dlsyms" ;; esac echo >> "$output_objdir/$my_dlsyms" "\ {0, (void *) 0} }; /* This works around a problem in FreeBSD linker */ #ifdef FREEBSD_WORKAROUND static const void *lt_preloaded_setup() { return lt_${my_prefix}_LTX_preloaded_symbols; } #endif #ifdef __cplusplus } #endif\ " } # !$opt_dry_run pic_flag_for_symtable= case "$compile_command " in *" -static "*) ;; *) case $host in # compiling the symbol table file with pic_flag works around # a FreeBSD bug that causes programs to crash when -lm is # linked before any other PIC object. But we must not use # pic_flag when linking with -static. The problem exists in # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1. *-*-freebsd2.*|*-*-freebsd3.0*|*-*-freebsdelf3.0*) pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND" ;; *-*-hpux*) pic_flag_for_symtable=" $pic_flag" ;; *) $my_pic_p && pic_flag_for_symtable=" $pic_flag" ;; esac ;; esac symtab_cflags= for arg in $LTCFLAGS; do case $arg in -pie | -fpie | -fPIE) ;; *) func_append symtab_cflags " $arg" ;; esac done # Now compile the dynamic symbol file. func_show_eval '(cd $output_objdir && $LTCC$symtab_cflags -c$no_builtin_flag$pic_flag_for_symtable "$my_dlsyms")' 'exit $?' # Clean up the generated files. func_show_eval '$RM "$output_objdir/$my_dlsyms" "$nlist" "${nlist}S" "${nlist}T" "${nlist}I"' # Transform the symbol file into the correct name. symfileobj=$output_objdir/${my_outputname}S.$objext case $host in *cygwin* | *mingw* | *cegcc* ) if test -f "$output_objdir/$my_outputname.def"; then compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` else compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"` finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"` fi ;; *) compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"` finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"` ;; esac ;; *) func_fatal_error "unknown suffix for '$my_dlsyms'" ;; esac else # We keep going just in case the user didn't refer to # lt_preloaded_symbols. The linker will fail if global_symbol_pipe # really was required. # Nullify the symbol file. compile_command=`$ECHO "$compile_command" | $SED "s% @SYMFILE@%%"` finalize_command=`$ECHO "$finalize_command" | $SED "s% @SYMFILE@%%"` fi } # func_cygming_gnu_implib_p ARG # This predicate returns with zero status (TRUE) if # ARG is a GNU/binutils-style import library. Returns # with nonzero status (FALSE) otherwise. func_cygming_gnu_implib_p () { $debug_cmd func_to_tool_file "$1" func_convert_file_msys_to_w32 func_cygming_gnu_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $EGREP ' (_head_[A-Za-z0-9_]+_[ad]l*|[A-Za-z0-9_]+_[ad]l*_iname)$'` test -n "$func_cygming_gnu_implib_tmp" } # func_cygming_ms_implib_p ARG # This predicate returns with zero status (TRUE) if # ARG is an MS-style import library. Returns # with nonzero status (FALSE) otherwise. func_cygming_ms_implib_p () { $debug_cmd func_to_tool_file "$1" func_convert_file_msys_to_w32 func_cygming_ms_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $GREP '_NULL_IMPORT_DESCRIPTOR'` test -n "$func_cygming_ms_implib_tmp" } # func_win32_libid arg # return the library type of file 'arg' # # Need a lot of goo to handle *both* DLLs and import libs # Has to be a shell function in order to 'eat' the argument # that is supplied when $file_magic_command is called. # Despite the name, also deal with 64 bit binaries. func_win32_libid () { $debug_cmd win32_libid_type=unknown win32_fileres=`file -L $1 2>/dev/null` case $win32_fileres in *ar\ archive\ import\ library*) # definitely import win32_libid_type="x86 archive import" ;; *ar\ archive*) # could be an import, or static # Keep the egrep pattern in sync with the one in _LT_CHECK_MAGIC_METHOD. if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null | $EGREP 'file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' >/dev/null; then case $nm_interface in "MS dumpbin") if func_cygming_ms_implib_p "$1" || func_cygming_gnu_implib_p "$1" then win32_nmres=import else win32_nmres= fi ;; *) func_to_tool_file "$1" func_convert_file_msys_to_w32 win32_nmres=`eval $NM -f posix -A \"$func_to_tool_file_result\" | $SED -n -e ' 1,100{ / I /{ s|.*|import| p q } }'` ;; esac case $win32_nmres in import*) win32_libid_type="x86 archive import";; *) win32_libid_type="x86 archive static";; esac fi ;; *DLL*) win32_libid_type="x86 DLL" ;; *executable*) # but shell scripts are "executable" too... case $win32_fileres in *MS\ Windows\ PE\ Intel*) win32_libid_type="x86 DLL" ;; esac ;; esac $ECHO "$win32_libid_type" } # func_cygming_dll_for_implib ARG # # Platform-specific function to extract the # name of the DLL associated with the specified # import library ARG. # Invoked by eval'ing the libtool variable # $sharedlib_from_linklib_cmd # Result is available in the variable # $sharedlib_from_linklib_result func_cygming_dll_for_implib () { $debug_cmd sharedlib_from_linklib_result=`$DLLTOOL --identify-strict --identify "$1"` } # func_cygming_dll_for_implib_fallback_core SECTION_NAME LIBNAMEs # # The is the core of a fallback implementation of a # platform-specific function to extract the name of the # DLL associated with the specified import library LIBNAME. # # SECTION_NAME is either .idata$6 or .idata$7, depending # on the platform and compiler that created the implib. # # Echos the name of the DLL associated with the # specified import library. func_cygming_dll_for_implib_fallback_core () { $debug_cmd match_literal=`$ECHO "$1" | $SED "$sed_make_literal_regex"` $OBJDUMP -s --section "$1" "$2" 2>/dev/null | $SED '/^Contents of section '"$match_literal"':/{ # Place marker at beginning of archive member dllname section s/.*/====MARK====/ p d } # These lines can sometimes be longer than 43 characters, but # are always uninteresting /:[ ]*file format pe[i]\{,1\}-/d /^In archive [^:]*:/d # Ensure marker is printed /^====MARK====/p # Remove all lines with less than 43 characters /^.\{43\}/!d # From remaining lines, remove first 43 characters s/^.\{43\}//' | $SED -n ' # Join marker and all lines until next marker into a single line /^====MARK====/ b para H $ b para b :para x s/\n//g # Remove the marker s/^====MARK====// # Remove trailing dots and whitespace s/[\. \t]*$// # Print /./p' | # we now have a list, one entry per line, of the stringified # contents of the appropriate section of all members of the # archive that possess that section. Heuristic: eliminate # all those that have a first or second character that is # a '.' (that is, objdump's representation of an unprintable # character.) This should work for all archives with less than # 0x302f exports -- but will fail for DLLs whose name actually # begins with a literal '.' or a single character followed by # a '.'. # # Of those that remain, print the first one. $SED -e '/^\./d;/^.\./d;q' } # func_cygming_dll_for_implib_fallback ARG # Platform-specific function to extract the # name of the DLL associated with the specified # import library ARG. # # This fallback implementation is for use when $DLLTOOL # does not support the --identify-strict option. # Invoked by eval'ing the libtool variable # $sharedlib_from_linklib_cmd # Result is available in the variable # $sharedlib_from_linklib_result func_cygming_dll_for_implib_fallback () { $debug_cmd if func_cygming_gnu_implib_p "$1"; then # binutils import library sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$7' "$1"` elif func_cygming_ms_implib_p "$1"; then # ms-generated import library sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$6' "$1"` else # unknown sharedlib_from_linklib_result= fi } # func_extract_an_archive dir oldlib func_extract_an_archive () { $debug_cmd f_ex_an_ar_dir=$1; shift f_ex_an_ar_oldlib=$1 if test yes = "$lock_old_archive_extraction"; then lockfile=$f_ex_an_ar_oldlib.lock until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do func_echo "Waiting for $lockfile to be removed" sleep 2 done fi func_show_eval "(cd \$f_ex_an_ar_dir && $AR x \"\$f_ex_an_ar_oldlib\")" \ 'stat=$?; rm -f "$lockfile"; exit $stat' if test yes = "$lock_old_archive_extraction"; then $opt_dry_run || rm -f "$lockfile" fi if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then : else func_fatal_error "object name conflicts in archive: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib" fi } # func_extract_archives gentop oldlib ... func_extract_archives () { $debug_cmd my_gentop=$1; shift my_oldlibs=${1+"$@"} my_oldobjs= my_xlib= my_xabs= my_xdir= for my_xlib in $my_oldlibs; do # Extract the objects. case $my_xlib in [\\/]* | [A-Za-z]:[\\/]*) my_xabs=$my_xlib ;; *) my_xabs=`pwd`"/$my_xlib" ;; esac func_basename "$my_xlib" my_xlib=$func_basename_result my_xlib_u=$my_xlib while :; do case " $extracted_archives " in *" $my_xlib_u "*) func_arith $extracted_serial + 1 extracted_serial=$func_arith_result my_xlib_u=lt$extracted_serial-$my_xlib ;; *) break ;; esac done extracted_archives="$extracted_archives $my_xlib_u" my_xdir=$my_gentop/$my_xlib_u func_mkdir_p "$my_xdir" case $host in *-darwin*) func_verbose "Extracting $my_xabs" # Do not bother doing anything if just a dry run $opt_dry_run || { darwin_orig_dir=`pwd` cd $my_xdir || exit $? darwin_archive=$my_xabs darwin_curdir=`pwd` func_basename "$darwin_archive" darwin_base_archive=$func_basename_result darwin_arches=`$LIPO -info "$darwin_archive" 2>/dev/null | $GREP Architectures 2>/dev/null || true` if test -n "$darwin_arches"; then darwin_arches=`$ECHO "$darwin_arches" | $SED -e 's/.*are://'` darwin_arch= func_verbose "$darwin_base_archive has multiple architectures $darwin_arches" for darwin_arch in $darwin_arches; do func_mkdir_p "unfat-$$/$darwin_base_archive-$darwin_arch" $LIPO -thin $darwin_arch -output "unfat-$$/$darwin_base_archive-$darwin_arch/$darwin_base_archive" "$darwin_archive" cd "unfat-$$/$darwin_base_archive-$darwin_arch" func_extract_an_archive "`pwd`" "$darwin_base_archive" cd "$darwin_curdir" $RM "unfat-$$/$darwin_base_archive-$darwin_arch/$darwin_base_archive" done # $darwin_arches ## Okay now we've a bunch of thin objects, gotta fatten them up :) darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print | $SED -e "$sed_basename" | sort -u` darwin_file= darwin_files= for darwin_file in $darwin_filelist; do darwin_files=`find unfat-$$ -name $darwin_file -print | sort | $NL2SP` $LIPO -create -output "$darwin_file" $darwin_files done # $darwin_filelist $RM -rf unfat-$$ cd "$darwin_orig_dir" else cd $darwin_orig_dir func_extract_an_archive "$my_xdir" "$my_xabs" fi # $darwin_arches } # !$opt_dry_run ;; *) func_extract_an_archive "$my_xdir" "$my_xabs" ;; esac my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | sort | $NL2SP` done func_extract_archives_result=$my_oldobjs } # func_emit_wrapper [arg=no] # # Emit a libtool wrapper script on stdout. # Don't directly open a file because we may want to # incorporate the script contents within a cygwin/mingw # wrapper executable. Must ONLY be called from within # func_mode_link because it depends on a number of variables # set therein. # # ARG is the value that the WRAPPER_SCRIPT_BELONGS_IN_OBJDIR # variable will take. If 'yes', then the emitted script # will assume that the directory where it is stored is # the $objdir directory. This is a cygwin/mingw-specific # behavior. func_emit_wrapper () { func_emit_wrapper_arg1=${1-no} $ECHO "\ #! $SHELL # $output - temporary wrapper script for $objdir/$outputname # Generated by $PROGRAM (GNU $PACKAGE) $VERSION # # The $output program cannot be directly executed until all the libtool # libraries that it depends on are installed. # # This wrapper script should never be moved out of the build directory. # If it is, it will not operate correctly. # Sed substitution that helps us do robust quoting. It backslashifies # metacharacters that are still active within double-quoted strings. sed_quote_subst='$sed_quote_subst' # Be Bourne compatible if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then emulate sh NULLCMD=: # Zsh 3.x and 4.x performs word splitting on \${1+\"\$@\"}, which # is contrary to our usage. Disable this feature. alias -g '\${1+\"\$@\"}'='\"\$@\"' setopt NO_GLOB_SUBST else case \`(set -o) 2>/dev/null\` in *posix*) set -o posix;; esac fi BIN_SH=xpg4; export BIN_SH # for Tru64 DUALCASE=1; export DUALCASE # for MKS sh # The HP-UX ksh and POSIX shell print the target directory to stdout # if CDPATH is set. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH relink_command=\"$relink_command\" # This environment variable determines our operation mode. if test \"\$libtool_install_magic\" = \"$magic\"; then # install mode needs the following variables: generated_by_libtool_version='$macro_version' notinst_deplibs='$notinst_deplibs' else # When we are sourced in execute mode, \$file and \$ECHO are already set. if test \"\$libtool_execute_magic\" != \"$magic\"; then file=\"\$0\"" qECHO=`$ECHO "$ECHO" | $SED "$sed_quote_subst"` $ECHO "\ # A function that is used when there is no print builtin or printf. func_fallback_echo () { eval 'cat <<_LTECHO_EOF \$1 _LTECHO_EOF' } ECHO=\"$qECHO\" fi # Very basic option parsing. These options are (a) specific to # the libtool wrapper, (b) are identical between the wrapper # /script/ and the wrapper /executable/ that is used only on # windows platforms, and (c) all begin with the string "--lt-" # (application programs are unlikely to have options that match # this pattern). # # There are only two supported options: --lt-debug and # --lt-dump-script. There is, deliberately, no --lt-help. # # The first argument to this parsing function should be the # script's $0 value, followed by "$@". lt_option_debug= func_parse_lt_options () { lt_script_arg0=\$0 shift for lt_opt do case \"\$lt_opt\" in --lt-debug) lt_option_debug=1 ;; --lt-dump-script) lt_dump_D=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%/[^/]*$%%'\` test \"X\$lt_dump_D\" = \"X\$lt_script_arg0\" && lt_dump_D=. lt_dump_F=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%^.*/%%'\` cat \"\$lt_dump_D/\$lt_dump_F\" exit 0 ;; --lt-*) \$ECHO \"Unrecognized --lt- option: '\$lt_opt'\" 1>&2 exit 1 ;; esac done # Print the debug banner immediately: if test -n \"\$lt_option_debug\"; then echo \"$outputname:$output:\$LINENO: libtool wrapper (GNU $PACKAGE) $VERSION\" 1>&2 fi } # Used when --lt-debug. Prints its arguments to stdout # (redirection is the responsibility of the caller) func_lt_dump_args () { lt_dump_args_N=1; for lt_arg do \$ECHO \"$outputname:$output:\$LINENO: newargv[\$lt_dump_args_N]: \$lt_arg\" lt_dump_args_N=\`expr \$lt_dump_args_N + 1\` done } # Core function for launching the target application func_exec_program_core () { " case $host in # Backslashes separate directories on plain windows *-*-mingw | *-*-os2* | *-cegcc*) $ECHO "\ if test -n \"\$lt_option_debug\"; then \$ECHO \"$outputname:$output:\$LINENO: newargv[0]: \$progdir\\\\\$program\" 1>&2 func_lt_dump_args \${1+\"\$@\"} 1>&2 fi exec \"\$progdir\\\\\$program\" \${1+\"\$@\"} " ;; *) $ECHO "\ if test -n \"\$lt_option_debug\"; then \$ECHO \"$outputname:$output:\$LINENO: newargv[0]: \$progdir/\$program\" 1>&2 func_lt_dump_args \${1+\"\$@\"} 1>&2 fi exec \"\$progdir/\$program\" \${1+\"\$@\"} " ;; esac $ECHO "\ \$ECHO \"\$0: cannot exec \$program \$*\" 1>&2 exit 1 } # A function to encapsulate launching the target application # Strips options in the --lt-* namespace from \$@ and # launches target application with the remaining arguments. func_exec_program () { case \" \$* \" in *\\ --lt-*) for lt_wr_arg do case \$lt_wr_arg in --lt-*) ;; *) set x \"\$@\" \"\$lt_wr_arg\"; shift;; esac shift done ;; esac func_exec_program_core \${1+\"\$@\"} } # Parse options func_parse_lt_options \"\$0\" \${1+\"\$@\"} # Find the directory that this script lives in. thisdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*$%%'\` test \"x\$thisdir\" = \"x\$file\" && thisdir=. # Follow symbolic links until we get to the real thisdir. file=\`ls -ld \"\$file\" | $SED -n 's/.*-> //p'\` while test -n \"\$file\"; do destdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*\$%%'\` # If there was a directory component, then change thisdir. if test \"x\$destdir\" != \"x\$file\"; then case \"\$destdir\" in [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;; *) thisdir=\"\$thisdir/\$destdir\" ;; esac fi file=\`\$ECHO \"\$file\" | $SED 's%^.*/%%'\` file=\`ls -ld \"\$thisdir/\$file\" | $SED -n 's/.*-> //p'\` done # Usually 'no', except on cygwin/mingw when embedded into # the cwrapper. WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=$func_emit_wrapper_arg1 if test \"\$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR\" = \"yes\"; then # special case for '.' if test \"\$thisdir\" = \".\"; then thisdir=\`pwd\` fi # remove .libs from thisdir case \"\$thisdir\" in *[\\\\/]$objdir ) thisdir=\`\$ECHO \"\$thisdir\" | $SED 's%[\\\\/][^\\\\/]*$%%'\` ;; $objdir ) thisdir=. ;; esac fi # Try to get the absolute directory name. absdir=\`cd \"\$thisdir\" && pwd\` test -n \"\$absdir\" && thisdir=\"\$absdir\" " if test yes = "$fast_install"; then $ECHO "\ program=lt-'$outputname'$exeext progdir=\"\$thisdir/$objdir\" if test ! -f \"\$progdir/\$program\" || { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | $SED 1q\`; \\ test \"X\$file\" != \"X\$progdir/\$program\"; }; then file=\"\$\$-\$program\" if test ! -d \"\$progdir\"; then $MKDIR \"\$progdir\" else $RM \"\$progdir/\$file\" fi" $ECHO "\ # relink executable if necessary if test -n \"\$relink_command\"; then if relink_command_output=\`eval \$relink_command 2>&1\`; then : else \$ECHO \"\$relink_command_output\" >&2 $RM \"\$progdir/\$file\" exit 1 fi fi $MV \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null || { $RM \"\$progdir/\$program\"; $MV \"\$progdir/\$file\" \"\$progdir/\$program\"; } $RM \"\$progdir/\$file\" fi" else $ECHO "\ program='$outputname' progdir=\"\$thisdir/$objdir\" " fi $ECHO "\ if test -f \"\$progdir/\$program\"; then" # fixup the dll searchpath if we need to. # # Fix the DLL searchpath if we need to. Do this before prepending # to shlibpath, because on Windows, both are PATH and uninstalled # libraries must come first. if test -n "$dllsearchpath"; then $ECHO "\ # Add the dll search path components to the executable PATH PATH=$dllsearchpath:\$PATH " fi # Export our shlibpath_var if we have one. if test yes = "$shlibpath_overrides_runpath" && test -n "$shlibpath_var" && test -n "$temp_rpath"; then $ECHO "\ # Add our own library path to $shlibpath_var $shlibpath_var=\"$temp_rpath\$$shlibpath_var\" # Some systems cannot cope with colon-terminated $shlibpath_var # The second colon is a workaround for a bug in BeOS R4 sed $shlibpath_var=\`\$ECHO \"\$$shlibpath_var\" | $SED 's/::*\$//'\` export $shlibpath_var " fi $ECHO "\ if test \"\$libtool_execute_magic\" != \"$magic\"; then # Run the actual program with our arguments. func_exec_program \${1+\"\$@\"} fi else # The program doesn't exist. \$ECHO \"\$0: error: '\$progdir/\$program' does not exist\" 1>&2 \$ECHO \"This script is just a wrapper for \$program.\" 1>&2 \$ECHO \"See the $PACKAGE documentation for more information.\" 1>&2 exit 1 fi fi\ " } # func_emit_cwrapperexe_src # emit the source code for a wrapper executable on stdout # Must ONLY be called from within func_mode_link because # it depends on a number of variable set therein. func_emit_cwrapperexe_src () { cat < #include #ifdef _MSC_VER # include # include # include #else # include # include # ifdef __CYGWIN__ # include # endif #endif #include #include #include #include #include #include #include #include #define STREQ(s1, s2) (strcmp ((s1), (s2)) == 0) /* declarations of non-ANSI functions */ #if defined __MINGW32__ # ifdef __STRICT_ANSI__ int _putenv (const char *); # endif #elif defined __CYGWIN__ # ifdef __STRICT_ANSI__ char *realpath (const char *, char *); int putenv (char *); int setenv (const char *, const char *, int); # endif /* #elif defined other_platform || defined ... */ #endif /* portability defines, excluding path handling macros */ #if defined _MSC_VER # define setmode _setmode # define stat _stat # define chmod _chmod # define getcwd _getcwd # define putenv _putenv # define S_IXUSR _S_IEXEC #elif defined __MINGW32__ # define setmode _setmode # define stat _stat # define chmod _chmod # define getcwd _getcwd # define putenv _putenv #elif defined __CYGWIN__ # define HAVE_SETENV # define FOPEN_WB "wb" /* #elif defined other platforms ... */ #endif #if defined PATH_MAX # define LT_PATHMAX PATH_MAX #elif defined MAXPATHLEN # define LT_PATHMAX MAXPATHLEN #else # define LT_PATHMAX 1024 #endif #ifndef S_IXOTH # define S_IXOTH 0 #endif #ifndef S_IXGRP # define S_IXGRP 0 #endif /* path handling portability macros */ #ifndef DIR_SEPARATOR # define DIR_SEPARATOR '/' # define PATH_SEPARATOR ':' #endif #if defined _WIN32 || defined __MSDOS__ || defined __DJGPP__ || \ defined __OS2__ # define HAVE_DOS_BASED_FILE_SYSTEM # define FOPEN_WB "wb" # ifndef DIR_SEPARATOR_2 # define DIR_SEPARATOR_2 '\\' # endif # ifndef PATH_SEPARATOR_2 # define PATH_SEPARATOR_2 ';' # endif #endif #ifndef DIR_SEPARATOR_2 # define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR) #else /* DIR_SEPARATOR_2 */ # define IS_DIR_SEPARATOR(ch) \ (((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2)) #endif /* DIR_SEPARATOR_2 */ #ifndef PATH_SEPARATOR_2 # define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR) #else /* PATH_SEPARATOR_2 */ # define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2) #endif /* PATH_SEPARATOR_2 */ #ifndef FOPEN_WB # define FOPEN_WB "w" #endif #ifndef _O_BINARY # define _O_BINARY 0 #endif #define XMALLOC(type, num) ((type *) xmalloc ((num) * sizeof(type))) #define XFREE(stale) do { \ if (stale) { free (stale); stale = 0; } \ } while (0) #if defined LT_DEBUGWRAPPER static int lt_debug = 1; #else static int lt_debug = 0; #endif const char *program_name = "libtool-wrapper"; /* in case xstrdup fails */ void *xmalloc (size_t num); char *xstrdup (const char *string); const char *base_name (const char *name); char *find_executable (const char *wrapper); char *chase_symlinks (const char *pathspec); int make_executable (const char *path); int check_executable (const char *path); char *strendzap (char *str, const char *pat); void lt_debugprintf (const char *file, int line, const char *fmt, ...); void lt_fatal (const char *file, int line, const char *message, ...); static const char *nonnull (const char *s); static const char *nonempty (const char *s); void lt_setenv (const char *name, const char *value); char *lt_extend_str (const char *orig_value, const char *add, int to_end); void lt_update_exe_path (const char *name, const char *value); void lt_update_lib_path (const char *name, const char *value); char **prepare_spawn (char **argv); void lt_dump_script (FILE *f); EOF cat <= 0) && (st.st_mode & (S_IXUSR | S_IXGRP | S_IXOTH))) return 1; else return 0; } int make_executable (const char *path) { int rval = 0; struct stat st; lt_debugprintf (__FILE__, __LINE__, "(make_executable): %s\n", nonempty (path)); if ((!path) || (!*path)) return 0; if (stat (path, &st) >= 0) { rval = chmod (path, st.st_mode | S_IXOTH | S_IXGRP | S_IXUSR); } return rval; } /* Searches for the full path of the wrapper. Returns newly allocated full path name if found, NULL otherwise Does not chase symlinks, even on platforms that support them. */ char * find_executable (const char *wrapper) { int has_slash = 0; const char *p; const char *p_next; /* static buffer for getcwd */ char tmp[LT_PATHMAX + 1]; size_t tmp_len; char *concat_name; lt_debugprintf (__FILE__, __LINE__, "(find_executable): %s\n", nonempty (wrapper)); if ((wrapper == NULL) || (*wrapper == '\0')) return NULL; /* Absolute path? */ #if defined HAVE_DOS_BASED_FILE_SYSTEM if (isalpha ((unsigned char) wrapper[0]) && wrapper[1] == ':') { concat_name = xstrdup (wrapper); if (check_executable (concat_name)) return concat_name; XFREE (concat_name); } else { #endif if (IS_DIR_SEPARATOR (wrapper[0])) { concat_name = xstrdup (wrapper); if (check_executable (concat_name)) return concat_name; XFREE (concat_name); } #if defined HAVE_DOS_BASED_FILE_SYSTEM } #endif for (p = wrapper; *p; p++) if (*p == '/') { has_slash = 1; break; } if (!has_slash) { /* no slashes; search PATH */ const char *path = getenv ("PATH"); if (path != NULL) { for (p = path; *p; p = p_next) { const char *q; size_t p_len; for (q = p; *q; q++) if (IS_PATH_SEPARATOR (*q)) break; p_len = (size_t) (q - p); p_next = (*q == '\0' ? q : q + 1); if (p_len == 0) { /* empty path: current directory */ if (getcwd (tmp, LT_PATHMAX) == NULL) lt_fatal (__FILE__, __LINE__, "getcwd failed: %s", nonnull (strerror (errno))); tmp_len = strlen (tmp); concat_name = XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1); memcpy (concat_name, tmp, tmp_len); concat_name[tmp_len] = '/'; strcpy (concat_name + tmp_len + 1, wrapper); } else { concat_name = XMALLOC (char, p_len + 1 + strlen (wrapper) + 1); memcpy (concat_name, p, p_len); concat_name[p_len] = '/'; strcpy (concat_name + p_len + 1, wrapper); } if (check_executable (concat_name)) return concat_name; XFREE (concat_name); } } /* not found in PATH; assume curdir */ } /* Relative path | not found in path: prepend cwd */ if (getcwd (tmp, LT_PATHMAX) == NULL) lt_fatal (__FILE__, __LINE__, "getcwd failed: %s", nonnull (strerror (errno))); tmp_len = strlen (tmp); concat_name = XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1); memcpy (concat_name, tmp, tmp_len); concat_name[tmp_len] = '/'; strcpy (concat_name + tmp_len + 1, wrapper); if (check_executable (concat_name)) return concat_name; XFREE (concat_name); return NULL; } char * chase_symlinks (const char *pathspec) { #ifndef S_ISLNK return xstrdup (pathspec); #else char buf[LT_PATHMAX]; struct stat s; char *tmp_pathspec = xstrdup (pathspec); char *p; int has_symlinks = 0; while (strlen (tmp_pathspec) && !has_symlinks) { lt_debugprintf (__FILE__, __LINE__, "checking path component for symlinks: %s\n", tmp_pathspec); if (lstat (tmp_pathspec, &s) == 0) { if (S_ISLNK (s.st_mode) != 0) { has_symlinks = 1; break; } /* search backwards for last DIR_SEPARATOR */ p = tmp_pathspec + strlen (tmp_pathspec) - 1; while ((p > tmp_pathspec) && (!IS_DIR_SEPARATOR (*p))) p--; if ((p == tmp_pathspec) && (!IS_DIR_SEPARATOR (*p))) { /* no more DIR_SEPARATORS left */ break; } *p = '\0'; } else { lt_fatal (__FILE__, __LINE__, "error accessing file \"%s\": %s", tmp_pathspec, nonnull (strerror (errno))); } } XFREE (tmp_pathspec); if (!has_symlinks) { return xstrdup (pathspec); } tmp_pathspec = realpath (pathspec, buf); if (tmp_pathspec == 0) { lt_fatal (__FILE__, __LINE__, "could not follow symlinks for %s", pathspec); } return xstrdup (tmp_pathspec); #endif } char * strendzap (char *str, const char *pat) { size_t len, patlen; assert (str != NULL); assert (pat != NULL); len = strlen (str); patlen = strlen (pat); if (patlen <= len) { str += len - patlen; if (STREQ (str, pat)) *str = '\0'; } return str; } void lt_debugprintf (const char *file, int line, const char *fmt, ...) { va_list args; if (lt_debug) { (void) fprintf (stderr, "%s:%s:%d: ", program_name, file, line); va_start (args, fmt); (void) vfprintf (stderr, fmt, args); va_end (args); } } static void lt_error_core (int exit_status, const char *file, int line, const char *mode, const char *message, va_list ap) { fprintf (stderr, "%s:%s:%d: %s: ", program_name, file, line, mode); vfprintf (stderr, message, ap); fprintf (stderr, ".\n"); if (exit_status >= 0) exit (exit_status); } void lt_fatal (const char *file, int line, const char *message, ...) { va_list ap; va_start (ap, message); lt_error_core (EXIT_FAILURE, file, line, "FATAL", message, ap); va_end (ap); } static const char * nonnull (const char *s) { return s ? s : "(null)"; } static const char * nonempty (const char *s) { return (s && !*s) ? "(empty)" : nonnull (s); } void lt_setenv (const char *name, const char *value) { lt_debugprintf (__FILE__, __LINE__, "(lt_setenv) setting '%s' to '%s'\n", nonnull (name), nonnull (value)); { #ifdef HAVE_SETENV /* always make a copy, for consistency with !HAVE_SETENV */ char *str = xstrdup (value); setenv (name, str, 1); #else size_t len = strlen (name) + 1 + strlen (value) + 1; char *str = XMALLOC (char, len); sprintf (str, "%s=%s", name, value); if (putenv (str) != EXIT_SUCCESS) { XFREE (str); } #endif } } char * lt_extend_str (const char *orig_value, const char *add, int to_end) { char *new_value; if (orig_value && *orig_value) { size_t orig_value_len = strlen (orig_value); size_t add_len = strlen (add); new_value = XMALLOC (char, add_len + orig_value_len + 1); if (to_end) { strcpy (new_value, orig_value); strcpy (new_value + orig_value_len, add); } else { strcpy (new_value, add); strcpy (new_value + add_len, orig_value); } } else { new_value = xstrdup (add); } return new_value; } void lt_update_exe_path (const char *name, const char *value) { lt_debugprintf (__FILE__, __LINE__, "(lt_update_exe_path) modifying '%s' by prepending '%s'\n", nonnull (name), nonnull (value)); if (name && *name && value && *value) { char *new_value = lt_extend_str (getenv (name), value, 0); /* some systems can't cope with a ':'-terminated path #' */ size_t len = strlen (new_value); while ((len > 0) && IS_PATH_SEPARATOR (new_value[len-1])) { new_value[--len] = '\0'; } lt_setenv (name, new_value); XFREE (new_value); } } void lt_update_lib_path (const char *name, const char *value) { lt_debugprintf (__FILE__, __LINE__, "(lt_update_lib_path) modifying '%s' by prepending '%s'\n", nonnull (name), nonnull (value)); if (name && *name && value && *value) { char *new_value = lt_extend_str (getenv (name), value, 0); lt_setenv (name, new_value); XFREE (new_value); } } EOF case $host_os in mingw*) cat <<"EOF" /* Prepares an argument vector before calling spawn(). Note that spawn() does not by itself call the command interpreter (getenv ("COMSPEC") != NULL ? getenv ("COMSPEC") : ({ OSVERSIONINFO v; v.dwOSVersionInfoSize = sizeof(OSVERSIONINFO); GetVersionEx(&v); v.dwPlatformId == VER_PLATFORM_WIN32_NT; }) ? "cmd.exe" : "command.com"). Instead it simply concatenates the arguments, separated by ' ', and calls CreateProcess(). We must quote the arguments since Win32 CreateProcess() interprets characters like ' ', '\t', '\\', '"' (but not '<' and '>') in a special way: - Space and tab are interpreted as delimiters. They are not treated as delimiters if they are surrounded by double quotes: "...". - Unescaped double quotes are removed from the input. Their only effect is that within double quotes, space and tab are treated like normal characters. - Backslashes not followed by double quotes are not special. - But 2*n+1 backslashes followed by a double quote become n backslashes followed by a double quote (n >= 0): \" -> " \\\" -> \" \\\\\" -> \\" */ #define SHELL_SPECIAL_CHARS "\"\\ \001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037" #define SHELL_SPACE_CHARS " \001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037" char ** prepare_spawn (char **argv) { size_t argc; char **new_argv; size_t i; /* Count number of arguments. */ for (argc = 0; argv[argc] != NULL; argc++) ; /* Allocate new argument vector. */ new_argv = XMALLOC (char *, argc + 1); /* Put quoted arguments into the new argument vector. */ for (i = 0; i < argc; i++) { const char *string = argv[i]; if (string[0] == '\0') new_argv[i] = xstrdup ("\"\""); else if (strpbrk (string, SHELL_SPECIAL_CHARS) != NULL) { int quote_around = (strpbrk (string, SHELL_SPACE_CHARS) != NULL); size_t length; unsigned int backslashes; const char *s; char *quoted_string; char *p; length = 0; backslashes = 0; if (quote_around) length++; for (s = string; *s != '\0'; s++) { char c = *s; if (c == '"') length += backslashes + 1; length++; if (c == '\\') backslashes++; else backslashes = 0; } if (quote_around) length += backslashes + 1; quoted_string = XMALLOC (char, length + 1); p = quoted_string; backslashes = 0; if (quote_around) *p++ = '"'; for (s = string; *s != '\0'; s++) { char c = *s; if (c == '"') { unsigned int j; for (j = backslashes + 1; j > 0; j--) *p++ = '\\'; } *p++ = c; if (c == '\\') backslashes++; else backslashes = 0; } if (quote_around) { unsigned int j; for (j = backslashes; j > 0; j--) *p++ = '\\'; *p++ = '"'; } *p = '\0'; new_argv[i] = quoted_string; } else new_argv[i] = (char *) string; } new_argv[argc] = NULL; return new_argv; } EOF ;; esac cat <<"EOF" void lt_dump_script (FILE* f) { EOF func_emit_wrapper yes | $SED -n -e ' s/^\(.\{79\}\)\(..*\)/\1\ \2/ h s/\([\\"]\)/\\\1/g s/$/\\n/ s/\([^\n]*\).*/ fputs ("\1", f);/p g D' cat <<"EOF" } EOF } # end: func_emit_cwrapperexe_src # func_win32_import_lib_p ARG # True if ARG is an import lib, as indicated by $file_magic_cmd func_win32_import_lib_p () { $debug_cmd case `eval $file_magic_cmd \"\$1\" 2>/dev/null | $SED -e 10q` in *import*) : ;; *) false ;; esac } # func_suncc_cstd_abi # !!ONLY CALL THIS FOR SUN CC AFTER $compile_command IS FULLY EXPANDED!! # Several compiler flags select an ABI that is incompatible with the # Cstd library. Avoid specifying it if any are in CXXFLAGS. func_suncc_cstd_abi () { $debug_cmd case " $compile_command " in *" -compat=g "*|*\ -std=c++[0-9][0-9]\ *|*" -library=stdcxx4 "*|*" -library=stlport4 "*) suncc_use_cstd_abi=no ;; *) suncc_use_cstd_abi=yes ;; esac } # func_mode_link arg... func_mode_link () { $debug_cmd case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) # It is impossible to link a dll without this setting, and # we shouldn't force the makefile maintainer to figure out # what system we are compiling for in order to pass an extra # flag for every libtool invocation. # allow_undefined=no # FIXME: Unfortunately, there are problems with the above when trying # to make a dll that has undefined symbols, in which case not # even a static library is built. For now, we need to specify # -no-undefined on the libtool link line when we can be certain # that all symbols are satisfied, otherwise we get a static library. allow_undefined=yes ;; *) allow_undefined=yes ;; esac libtool_args=$nonopt base_compile="$nonopt $@" compile_command=$nonopt finalize_command=$nonopt compile_rpath= finalize_rpath= compile_shlibpath= finalize_shlibpath= convenience= old_convenience= deplibs= old_deplibs= compiler_flags= linker_flags= dllsearchpath= lib_search_path=`pwd` inst_prefix_dir= new_inherited_linker_flags= avoid_version=no bindir= dlfiles= dlprefiles= dlself=no export_dynamic=no export_symbols= export_symbols_regex= generated= libobjs= ltlibs= module=no no_install=no objs= os2dllname= non_pic_objects= precious_files_regex= prefer_static_libs=no preload=false prev= prevarg= release= rpath= xrpath= perm_rpath= temp_rpath= thread_safe=no vinfo= vinfo_number=no weak_libs= single_module=$wl-single_module func_infer_tag $base_compile # We need to know -static, to get the right output filenames. for arg do case $arg in -shared) test yes != "$build_libtool_libs" \ && func_fatal_configuration "cannot build a shared library" build_old_libs=no break ;; -all-static | -static | -static-libtool-libs) case $arg in -all-static) if test yes = "$build_libtool_libs" && test -z "$link_static_flag"; then func_warning "complete static linking is impossible in this configuration" fi if test -n "$link_static_flag"; then dlopen_self=$dlopen_self_static fi prefer_static_libs=yes ;; -static) if test -z "$pic_flag" && test -n "$link_static_flag"; then dlopen_self=$dlopen_self_static fi prefer_static_libs=built ;; -static-libtool-libs) if test -z "$pic_flag" && test -n "$link_static_flag"; then dlopen_self=$dlopen_self_static fi prefer_static_libs=yes ;; esac build_libtool_libs=no build_old_libs=yes break ;; esac done # See if our shared archives depend on static archives. test -n "$old_archive_from_new_cmds" && build_old_libs=yes # Go through the arguments, transforming them on the way. while test "$#" -gt 0; do arg=$1 shift func_quote_for_eval "$arg" qarg=$func_quote_for_eval_unquoted_result func_append libtool_args " $func_quote_for_eval_result" # If the previous option needs an argument, assign it. if test -n "$prev"; then case $prev in output) func_append compile_command " @OUTPUT@" func_append finalize_command " @OUTPUT@" ;; esac case $prev in bindir) bindir=$arg prev= continue ;; dlfiles|dlprefiles) $preload || { # Add the symbol object into the linking commands. func_append compile_command " @SYMFILE@" func_append finalize_command " @SYMFILE@" preload=: } case $arg in *.la | *.lo) ;; # We handle these cases below. force) if test no = "$dlself"; then dlself=needless export_dynamic=yes fi prev= continue ;; self) if test dlprefiles = "$prev"; then dlself=yes elif test dlfiles = "$prev" && test yes != "$dlopen_self"; then dlself=yes else dlself=needless export_dynamic=yes fi prev= continue ;; *) if test dlfiles = "$prev"; then func_append dlfiles " $arg" else func_append dlprefiles " $arg" fi prev= continue ;; esac ;; expsyms) export_symbols=$arg test -f "$arg" \ || func_fatal_error "symbol file '$arg' does not exist" prev= continue ;; expsyms_regex) export_symbols_regex=$arg prev= continue ;; framework) case $host in *-*-darwin*) case "$deplibs " in *" $qarg.ltframework "*) ;; *) func_append deplibs " $qarg.ltframework" # this is fixed later ;; esac ;; esac prev= continue ;; inst_prefix) inst_prefix_dir=$arg prev= continue ;; mllvm) # Clang does not use LLVM to link, so we can simply discard any # '-mllvm $arg' options when doing the link step. prev= continue ;; objectlist) if test -f "$arg"; then save_arg=$arg moreargs= for fil in `cat "$save_arg"` do # func_append moreargs " $fil" arg=$fil # A libtool-controlled object. # Check to see that this really is a libtool object. if func_lalib_unsafe_p "$arg"; then pic_object= non_pic_object= # Read the .lo file func_source "$arg" if test -z "$pic_object" || test -z "$non_pic_object" || test none = "$pic_object" && test none = "$non_pic_object"; then func_fatal_error "cannot find name of object for '$arg'" fi # Extract subdirectory from the argument. func_dirname "$arg" "/" "" xdir=$func_dirname_result if test none != "$pic_object"; then # Prepend the subdirectory the object is found in. pic_object=$xdir$pic_object if test dlfiles = "$prev"; then if test yes = "$build_libtool_libs" && test yes = "$dlopen_support"; then func_append dlfiles " $pic_object" prev= continue else # If libtool objects are unsupported, then we need to preload. prev=dlprefiles fi fi # CHECK ME: I think I busted this. -Ossama if test dlprefiles = "$prev"; then # Preload the old-style object. func_append dlprefiles " $pic_object" prev= fi # A PIC object. func_append libobjs " $pic_object" arg=$pic_object fi # Non-PIC object. if test none != "$non_pic_object"; then # Prepend the subdirectory the object is found in. non_pic_object=$xdir$non_pic_object # A standard non-PIC object func_append non_pic_objects " $non_pic_object" if test -z "$pic_object" || test none = "$pic_object"; then arg=$non_pic_object fi else # If the PIC object exists, use it instead. # $xdir was prepended to $pic_object above. non_pic_object=$pic_object func_append non_pic_objects " $non_pic_object" fi else # Only an error if not doing a dry-run. if $opt_dry_run; then # Extract subdirectory from the argument. func_dirname "$arg" "/" "" xdir=$func_dirname_result func_lo2o "$arg" pic_object=$xdir$objdir/$func_lo2o_result non_pic_object=$xdir$func_lo2o_result func_append libobjs " $pic_object" func_append non_pic_objects " $non_pic_object" else func_fatal_error "'$arg' is not a valid libtool object" fi fi done else func_fatal_error "link input file '$arg' does not exist" fi arg=$save_arg prev= continue ;; os2dllname) os2dllname=$arg prev= continue ;; precious_regex) precious_files_regex=$arg prev= continue ;; release) release=-$arg prev= continue ;; rpath | xrpath) # We need an absolute path. case $arg in [\\/]* | [A-Za-z]:[\\/]*) ;; *) func_fatal_error "only absolute run-paths are allowed" ;; esac if test rpath = "$prev"; then case "$rpath " in *" $arg "*) ;; *) func_append rpath " $arg" ;; esac else case "$xrpath " in *" $arg "*) ;; *) func_append xrpath " $arg" ;; esac fi prev= continue ;; shrext) shrext_cmds=$arg prev= continue ;; weak) func_append weak_libs " $arg" prev= continue ;; xcclinker) func_append linker_flags " $qarg" func_append compiler_flags " $qarg" prev= func_append compile_command " $qarg" func_append finalize_command " $qarg" continue ;; xcompiler) func_append compiler_flags " $qarg" prev= func_append compile_command " $qarg" func_append finalize_command " $qarg" continue ;; xlinker) func_append linker_flags " $qarg" func_append compiler_flags " $wl$qarg" prev= func_append compile_command " $wl$qarg" func_append finalize_command " $wl$qarg" continue ;; *) eval "$prev=\"\$arg\"" prev= continue ;; esac fi # test -n "$prev" prevarg=$arg case $arg in -all-static) if test -n "$link_static_flag"; then # See comment for -static flag below, for more details. func_append compile_command " $link_static_flag" func_append finalize_command " $link_static_flag" fi continue ;; -allow-undefined) # FIXME: remove this flag sometime in the future. func_fatal_error "'-allow-undefined' must not be used because it is the default" ;; -avoid-version) avoid_version=yes continue ;; -bindir) prev=bindir continue ;; -dlopen) prev=dlfiles continue ;; -dlpreopen) prev=dlprefiles continue ;; -export-dynamic) export_dynamic=yes continue ;; -export-symbols | -export-symbols-regex) if test -n "$export_symbols" || test -n "$export_symbols_regex"; then func_fatal_error "more than one -exported-symbols argument is not allowed" fi if test X-export-symbols = "X$arg"; then prev=expsyms else prev=expsyms_regex fi continue ;; -framework) prev=framework continue ;; -inst-prefix-dir) prev=inst_prefix continue ;; # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:* # so, if we see these flags be careful not to treat them like -L -L[A-Z][A-Z]*:*) case $with_gcc/$host in no/*-*-irix* | /*-*-irix*) func_append compile_command " $arg" func_append finalize_command " $arg" ;; esac continue ;; -L*) func_stripname "-L" '' "$arg" if test -z "$func_stripname_result"; then if test "$#" -gt 0; then func_fatal_error "require no space between '-L' and '$1'" else func_fatal_error "need path for '-L' option" fi fi func_resolve_sysroot "$func_stripname_result" dir=$func_resolve_sysroot_result # We need an absolute path. case $dir in [\\/]* | [A-Za-z]:[\\/]*) ;; *) absdir=`cd "$dir" && pwd` test -z "$absdir" && \ func_fatal_error "cannot determine absolute directory name of '$dir'" dir=$absdir ;; esac case "$deplibs " in *" -L$dir "* | *" $arg "*) # Will only happen for absolute or sysroot arguments ;; *) # Preserve sysroot, but never include relative directories case $dir in [\\/]* | [A-Za-z]:[\\/]* | =*) func_append deplibs " $arg" ;; *) func_append deplibs " -L$dir" ;; esac func_append lib_search_path " $dir" ;; esac case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) testbindir=`$ECHO "$dir" | $SED 's*/lib$*/bin*'` case :$dllsearchpath: in *":$dir:"*) ;; ::) dllsearchpath=$dir;; *) func_append dllsearchpath ":$dir";; esac case :$dllsearchpath: in *":$testbindir:"*) ;; ::) dllsearchpath=$testbindir;; *) func_append dllsearchpath ":$testbindir";; esac ;; esac continue ;; -l*) if test X-lc = "X$arg" || test X-lm = "X$arg"; then case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos* | *-cegcc* | *-*-haiku*) # These systems don't actually have a C or math library (as such) continue ;; *-*-os2*) # These systems don't actually have a C library (as such) test X-lc = "X$arg" && continue ;; *-*-openbsd* | *-*-freebsd* | *-*-dragonfly* | *-*-bitrig*) # Do not include libc due to us having libc/libc_r. test X-lc = "X$arg" && continue ;; *-*-rhapsody* | *-*-darwin1.[012]) # Rhapsody C and math libraries are in the System framework func_append deplibs " System.ltframework" continue ;; *-*-sco3.2v5* | *-*-sco5v6*) # Causes problems with __ctype test X-lc = "X$arg" && continue ;; *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) # Compiler inserts libc in the correct place for threads to work test X-lc = "X$arg" && continue ;; esac elif test X-lc_r = "X$arg"; then case $host in *-*-openbsd* | *-*-freebsd* | *-*-dragonfly* | *-*-bitrig*) # Do not include libc_r directly, use -pthread flag. continue ;; esac fi func_append deplibs " $arg" continue ;; -mllvm) prev=mllvm continue ;; -module) module=yes continue ;; # Tru64 UNIX uses -model [arg] to determine the layout of C++ # classes, name mangling, and exception handling. # Darwin uses the -arch flag to determine output architecture. -model|-arch|-isysroot|--sysroot) func_append compiler_flags " $arg" func_append compile_command " $arg" func_append finalize_command " $arg" prev=xcompiler continue ;; -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \ |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*) func_append compiler_flags " $arg" func_append compile_command " $arg" func_append finalize_command " $arg" case "$new_inherited_linker_flags " in *" $arg "*) ;; * ) func_append new_inherited_linker_flags " $arg" ;; esac continue ;; -multi_module) single_module=$wl-multi_module continue ;; -no-fast-install) fast_install=no continue ;; -no-install) case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-darwin* | *-cegcc*) # The PATH hackery in wrapper scripts is required on Windows # and Darwin in order for the loader to find any dlls it needs. func_warning "'-no-install' is ignored for $host" func_warning "assuming '-no-fast-install' instead" fast_install=no ;; *) no_install=yes ;; esac continue ;; -no-undefined) allow_undefined=no continue ;; -objectlist) prev=objectlist continue ;; -os2dllname) prev=os2dllname continue ;; -o) prev=output ;; -precious-files-regex) prev=precious_regex continue ;; -release) prev=release continue ;; -rpath) prev=rpath continue ;; -R) prev=xrpath continue ;; -R*) func_stripname '-R' '' "$arg" dir=$func_stripname_result # We need an absolute path. case $dir in [\\/]* | [A-Za-z]:[\\/]*) ;; =*) func_stripname '=' '' "$dir" dir=$lt_sysroot$func_stripname_result ;; *) func_fatal_error "only absolute run-paths are allowed" ;; esac case "$xrpath " in *" $dir "*) ;; *) func_append xrpath " $dir" ;; esac continue ;; -shared) # The effects of -shared are defined in a previous loop. continue ;; -shrext) prev=shrext continue ;; -static | -static-libtool-libs) # The effects of -static are defined in a previous loop. # We used to do the same as -all-static on platforms that # didn't have a PIC flag, but the assumption that the effects # would be equivalent was wrong. It would break on at least # Digital Unix and AIX. continue ;; -thread-safe) thread_safe=yes continue ;; -version-info) prev=vinfo continue ;; -version-number) prev=vinfo vinfo_number=yes continue ;; -weak) prev=weak continue ;; -Wc,*) func_stripname '-Wc,' '' "$arg" args=$func_stripname_result arg= save_ifs=$IFS; IFS=, for flag in $args; do IFS=$save_ifs func_quote_for_eval "$flag" func_append arg " $func_quote_for_eval_result" func_append compiler_flags " $func_quote_for_eval_result" done IFS=$save_ifs func_stripname ' ' '' "$arg" arg=$func_stripname_result ;; -Wl,*) func_stripname '-Wl,' '' "$arg" args=$func_stripname_result arg= save_ifs=$IFS; IFS=, for flag in $args; do IFS=$save_ifs func_quote_for_eval "$flag" func_append arg " $wl$func_quote_for_eval_result" func_append compiler_flags " $wl$func_quote_for_eval_result" func_append linker_flags " $func_quote_for_eval_result" done IFS=$save_ifs func_stripname ' ' '' "$arg" arg=$func_stripname_result ;; -Xcompiler) prev=xcompiler continue ;; -Xlinker) prev=xlinker continue ;; -XCClinker) prev=xcclinker continue ;; # -msg_* for osf cc -msg_*) func_quote_for_eval "$arg" arg=$func_quote_for_eval_result ;; # Flags to be passed through unchanged, with rationale: # -64, -mips[0-9] enable 64-bit mode for the SGI compiler # -r[0-9][0-9]* specify processor for the SGI compiler # -xarch=*, -xtarget=* enable 64-bit mode for the Sun compiler # +DA*, +DD* enable 64-bit mode for the HP compiler # -q* compiler args for the IBM compiler # -m*, -t[45]*, -txscale* architecture-specific flags for GCC # -F/path path to uninstalled frameworks, gcc on darwin # -p, -pg, --coverage, -fprofile-* profiling flags for GCC # -fstack-protector* stack protector flags for GCC # @file GCC response files # -tp=* Portland pgcc target processor selection # --sysroot=* for sysroot support # -O*, -g*, -flto*, -fwhopr*, -fuse-linker-plugin GCC link-time optimization # -stdlib=* select c++ std lib with clang -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \ -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*|-tp=*|--sysroot=*| \ -O*|-g*|-flto*|-fwhopr*|-fuse-linker-plugin|-fstack-protector*|-stdlib=*) func_quote_for_eval "$arg" arg=$func_quote_for_eval_result func_append compile_command " $arg" func_append finalize_command " $arg" func_append compiler_flags " $arg" continue ;; -Z*) if test os2 = "`expr $host : '.*\(os2\)'`"; then # OS/2 uses -Zxxx to specify OS/2-specific options compiler_flags="$compiler_flags $arg" func_append compile_command " $arg" func_append finalize_command " $arg" case $arg in -Zlinker | -Zstack) prev=xcompiler ;; esac continue else # Otherwise treat like 'Some other compiler flag' below func_quote_for_eval "$arg" arg=$func_quote_for_eval_result fi ;; # Some other compiler flag. -* | +*) func_quote_for_eval "$arg" arg=$func_quote_for_eval_result ;; *.$objext) # A standard object. func_append objs " $arg" ;; *.lo) # A libtool-controlled object. # Check to see that this really is a libtool object. if func_lalib_unsafe_p "$arg"; then pic_object= non_pic_object= # Read the .lo file func_source "$arg" if test -z "$pic_object" || test -z "$non_pic_object" || test none = "$pic_object" && test none = "$non_pic_object"; then func_fatal_error "cannot find name of object for '$arg'" fi # Extract subdirectory from the argument. func_dirname "$arg" "/" "" xdir=$func_dirname_result test none = "$pic_object" || { # Prepend the subdirectory the object is found in. pic_object=$xdir$pic_object if test dlfiles = "$prev"; then if test yes = "$build_libtool_libs" && test yes = "$dlopen_support"; then func_append dlfiles " $pic_object" prev= continue else # If libtool objects are unsupported, then we need to preload. prev=dlprefiles fi fi # CHECK ME: I think I busted this. -Ossama if test dlprefiles = "$prev"; then # Preload the old-style object. func_append dlprefiles " $pic_object" prev= fi # A PIC object. func_append libobjs " $pic_object" arg=$pic_object } # Non-PIC object. if test none != "$non_pic_object"; then # Prepend the subdirectory the object is found in. non_pic_object=$xdir$non_pic_object # A standard non-PIC object func_append non_pic_objects " $non_pic_object" if test -z "$pic_object" || test none = "$pic_object"; then arg=$non_pic_object fi else # If the PIC object exists, use it instead. # $xdir was prepended to $pic_object above. non_pic_object=$pic_object func_append non_pic_objects " $non_pic_object" fi else # Only an error if not doing a dry-run. if $opt_dry_run; then # Extract subdirectory from the argument. func_dirname "$arg" "/" "" xdir=$func_dirname_result func_lo2o "$arg" pic_object=$xdir$objdir/$func_lo2o_result non_pic_object=$xdir$func_lo2o_result func_append libobjs " $pic_object" func_append non_pic_objects " $non_pic_object" else func_fatal_error "'$arg' is not a valid libtool object" fi fi ;; *.$libext) # An archive. func_append deplibs " $arg" func_append old_deplibs " $arg" continue ;; *.la) # A libtool-controlled library. func_resolve_sysroot "$arg" if test dlfiles = "$prev"; then # This library was specified with -dlopen. func_append dlfiles " $func_resolve_sysroot_result" prev= elif test dlprefiles = "$prev"; then # The library was specified with -dlpreopen. func_append dlprefiles " $func_resolve_sysroot_result" prev= else func_append deplibs " $func_resolve_sysroot_result" fi continue ;; # Some other compiler argument. *) # Unknown arguments in both finalize_command and compile_command need # to be aesthetically quoted because they are evaled later. func_quote_for_eval "$arg" arg=$func_quote_for_eval_result ;; esac # arg # Now actually substitute the argument into the commands. if test -n "$arg"; then func_append compile_command " $arg" func_append finalize_command " $arg" fi done # argument parsing loop test -n "$prev" && \ func_fatal_help "the '$prevarg' option requires an argument" if test yes = "$export_dynamic" && test -n "$export_dynamic_flag_spec"; then eval arg=\"$export_dynamic_flag_spec\" func_append compile_command " $arg" func_append finalize_command " $arg" fi oldlibs= # calculate the name of the file, without its directory func_basename "$output" outputname=$func_basename_result libobjs_save=$libobjs if test -n "$shlibpath_var"; then # get the directories listed in $shlibpath_var eval shlib_search_path=\`\$ECHO \"\$$shlibpath_var\" \| \$SED \'s/:/ /g\'\` else shlib_search_path= fi eval sys_lib_search_path=\"$sys_lib_search_path_spec\" eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\" # Definition is injected by LT_CONFIG during libtool generation. func_munge_path_list sys_lib_dlsearch_path "$LT_SYS_LIBRARY_PATH" func_dirname "$output" "/" "" output_objdir=$func_dirname_result$objdir func_to_tool_file "$output_objdir/" tool_output_objdir=$func_to_tool_file_result # Create the object directory. func_mkdir_p "$output_objdir" # Determine the type of output case $output in "") func_fatal_help "you must specify an output file" ;; *.$libext) linkmode=oldlib ;; *.lo | *.$objext) linkmode=obj ;; *.la) linkmode=lib ;; *) linkmode=prog ;; # Anything else should be a program. esac specialdeplibs= libs= # Find all interdependent deplibs by searching for libraries # that are linked more than once (e.g. -la -lb -la) for deplib in $deplibs; do if $opt_preserve_dup_deps; then case "$libs " in *" $deplib "*) func_append specialdeplibs " $deplib" ;; esac fi func_append libs " $deplib" done if test lib = "$linkmode"; then libs="$predeps $libs $compiler_lib_search_path $postdeps" # Compute libraries that are listed more than once in $predeps # $postdeps and mark them as special (i.e., whose duplicates are # not to be eliminated). pre_post_deps= if $opt_duplicate_compiler_generated_deps; then for pre_post_dep in $predeps $postdeps; do case "$pre_post_deps " in *" $pre_post_dep "*) func_append specialdeplibs " $pre_post_deps" ;; esac func_append pre_post_deps " $pre_post_dep" done fi pre_post_deps= fi deplibs= newdependency_libs= newlib_search_path= need_relink=no # whether we're linking any uninstalled libtool libraries notinst_deplibs= # not-installed libtool libraries notinst_path= # paths that contain not-installed libtool libraries case $linkmode in lib) passes="conv dlpreopen link" for file in $dlfiles $dlprefiles; do case $file in *.la) ;; *) func_fatal_help "libraries can '-dlopen' only libtool libraries: $file" ;; esac done ;; prog) compile_deplibs= finalize_deplibs= alldeplibs=false newdlfiles= newdlprefiles= passes="conv scan dlopen dlpreopen link" ;; *) passes="conv" ;; esac for pass in $passes; do # The preopen pass in lib mode reverses $deplibs; put it back here # so that -L comes before libs that need it for instance... if test lib,link = "$linkmode,$pass"; then ## FIXME: Find the place where the list is rebuilt in the wrong ## order, and fix it there properly tmp_deplibs= for deplib in $deplibs; do tmp_deplibs="$deplib $tmp_deplibs" done deplibs=$tmp_deplibs fi if test lib,link = "$linkmode,$pass" || test prog,scan = "$linkmode,$pass"; then libs=$deplibs deplibs= fi if test prog = "$linkmode"; then case $pass in dlopen) libs=$dlfiles ;; dlpreopen) libs=$dlprefiles ;; link) libs="$deplibs %DEPLIBS% $dependency_libs" ;; esac fi if test lib,dlpreopen = "$linkmode,$pass"; then # Collect and forward deplibs of preopened libtool libs for lib in $dlprefiles; do # Ignore non-libtool-libs dependency_libs= func_resolve_sysroot "$lib" case $lib in *.la) func_source "$func_resolve_sysroot_result" ;; esac # Collect preopened libtool deplibs, except any this library # has declared as weak libs for deplib in $dependency_libs; do func_basename "$deplib" deplib_base=$func_basename_result case " $weak_libs " in *" $deplib_base "*) ;; *) func_append deplibs " $deplib" ;; esac done done libs=$dlprefiles fi if test dlopen = "$pass"; then # Collect dlpreopened libraries save_deplibs=$deplibs deplibs= fi for deplib in $libs; do lib= found=false case $deplib in -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \ |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*) if test prog,link = "$linkmode,$pass"; then compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" else func_append compiler_flags " $deplib" if test lib = "$linkmode"; then case "$new_inherited_linker_flags " in *" $deplib "*) ;; * ) func_append new_inherited_linker_flags " $deplib" ;; esac fi fi continue ;; -l*) if test lib != "$linkmode" && test prog != "$linkmode"; then func_warning "'-l' is ignored for archives/objects" continue fi func_stripname '-l' '' "$deplib" name=$func_stripname_result if test lib = "$linkmode"; then searchdirs="$newlib_search_path $lib_search_path $compiler_lib_search_dirs $sys_lib_search_path $shlib_search_path" else searchdirs="$newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path" fi for searchdir in $searchdirs; do for search_ext in .la $std_shrext .so .a; do # Search the libtool library lib=$searchdir/lib$name$search_ext if test -f "$lib"; then if test .la = "$search_ext"; then found=: else found=false fi break 2 fi done done if $found; then # deplib is a libtool library # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib, # We need to do some special things here, and not later. if test yes = "$allow_libtool_libs_with_static_runtimes"; then case " $predeps $postdeps " in *" $deplib "*) if func_lalib_p "$lib"; then library_names= old_library= func_source "$lib" for l in $old_library $library_names; do ll=$l done if test "X$ll" = "X$old_library"; then # only static version available found=false func_dirname "$lib" "" "." ladir=$func_dirname_result lib=$ladir/$old_library if test prog,link = "$linkmode,$pass"; then compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" else deplibs="$deplib $deplibs" test lib = "$linkmode" && newdependency_libs="$deplib $newdependency_libs" fi continue fi fi ;; *) ;; esac fi else # deplib doesn't seem to be a libtool library if test prog,link = "$linkmode,$pass"; then compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" else deplibs="$deplib $deplibs" test lib = "$linkmode" && newdependency_libs="$deplib $newdependency_libs" fi continue fi ;; # -l *.ltframework) if test prog,link = "$linkmode,$pass"; then compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" else deplibs="$deplib $deplibs" if test lib = "$linkmode"; then case "$new_inherited_linker_flags " in *" $deplib "*) ;; * ) func_append new_inherited_linker_flags " $deplib" ;; esac fi fi continue ;; -L*) case $linkmode in lib) deplibs="$deplib $deplibs" test conv = "$pass" && continue newdependency_libs="$deplib $newdependency_libs" func_stripname '-L' '' "$deplib" func_resolve_sysroot "$func_stripname_result" func_append newlib_search_path " $func_resolve_sysroot_result" ;; prog) if test conv = "$pass"; then deplibs="$deplib $deplibs" continue fi if test scan = "$pass"; then deplibs="$deplib $deplibs" else compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" fi func_stripname '-L' '' "$deplib" func_resolve_sysroot "$func_stripname_result" func_append newlib_search_path " $func_resolve_sysroot_result" ;; *) func_warning "'-L' is ignored for archives/objects" ;; esac # linkmode continue ;; # -L -R*) if test link = "$pass"; then func_stripname '-R' '' "$deplib" func_resolve_sysroot "$func_stripname_result" dir=$func_resolve_sysroot_result # Make sure the xrpath contains only unique directories. case "$xrpath " in *" $dir "*) ;; *) func_append xrpath " $dir" ;; esac fi deplibs="$deplib $deplibs" continue ;; *.la) func_resolve_sysroot "$deplib" lib=$func_resolve_sysroot_result ;; *.$libext) if test conv = "$pass"; then deplibs="$deplib $deplibs" continue fi case $linkmode in lib) # Linking convenience modules into shared libraries is allowed, # but linking other static libraries is non-portable. case " $dlpreconveniencelibs " in *" $deplib "*) ;; *) valid_a_lib=false case $deplibs_check_method in match_pattern*) set dummy $deplibs_check_method; shift match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` if eval "\$ECHO \"$deplib\"" 2>/dev/null | $SED 10q \ | $EGREP "$match_pattern_regex" > /dev/null; then valid_a_lib=: fi ;; pass_all) valid_a_lib=: ;; esac if $valid_a_lib; then echo $ECHO "*** Warning: Linking the shared library $output against the" $ECHO "*** static library $deplib is not portable!" deplibs="$deplib $deplibs" else echo $ECHO "*** Warning: Trying to link with static lib archive $deplib." echo "*** I have the capability to make that library automatically link in when" echo "*** you link to this library. But I can only do this if you have a" echo "*** shared version of the library, which you do not appear to have" echo "*** because the file extensions .$libext of this argument makes me believe" echo "*** that it is just a static archive that I should not use here." fi ;; esac continue ;; prog) if test link != "$pass"; then deplibs="$deplib $deplibs" else compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" fi continue ;; esac # linkmode ;; # *.$libext *.lo | *.$objext) if test conv = "$pass"; then deplibs="$deplib $deplibs" elif test prog = "$linkmode"; then if test dlpreopen = "$pass" || test yes != "$dlopen_support" || test no = "$build_libtool_libs"; then # If there is no dlopen support or we're linking statically, # we need to preload. func_append newdlprefiles " $deplib" compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" else func_append newdlfiles " $deplib" fi fi continue ;; %DEPLIBS%) alldeplibs=: continue ;; esac # case $deplib $found || test -f "$lib" \ || func_fatal_error "cannot find the library '$lib' or unhandled argument '$deplib'" # Check to see that this really is a libtool archive. func_lalib_unsafe_p "$lib" \ || func_fatal_error "'$lib' is not a valid libtool archive" func_dirname "$lib" "" "." ladir=$func_dirname_result dlname= dlopen= dlpreopen= libdir= library_names= old_library= inherited_linker_flags= # If the library was installed with an old release of libtool, # it will not redefine variables installed, or shouldnotlink installed=yes shouldnotlink=no avoidtemprpath= # Read the .la file func_source "$lib" # Convert "-framework foo" to "foo.ltframework" if test -n "$inherited_linker_flags"; then tmp_inherited_linker_flags=`$ECHO "$inherited_linker_flags" | $SED 's/-framework \([^ $]*\)/\1.ltframework/g'` for tmp_inherited_linker_flag in $tmp_inherited_linker_flags; do case " $new_inherited_linker_flags " in *" $tmp_inherited_linker_flag "*) ;; *) func_append new_inherited_linker_flags " $tmp_inherited_linker_flag";; esac done fi dependency_libs=`$ECHO " $dependency_libs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` if test lib,link = "$linkmode,$pass" || test prog,scan = "$linkmode,$pass" || { test prog != "$linkmode" && test lib != "$linkmode"; }; then test -n "$dlopen" && func_append dlfiles " $dlopen" test -n "$dlpreopen" && func_append dlprefiles " $dlpreopen" fi if test conv = "$pass"; then # Only check for convenience libraries deplibs="$lib $deplibs" if test -z "$libdir"; then if test -z "$old_library"; then func_fatal_error "cannot find name of link library for '$lib'" fi # It is a libtool convenience library, so add in its objects. func_append convenience " $ladir/$objdir/$old_library" func_append old_convenience " $ladir/$objdir/$old_library" elif test prog != "$linkmode" && test lib != "$linkmode"; then func_fatal_error "'$lib' is not a convenience library" fi tmp_libs= for deplib in $dependency_libs; do deplibs="$deplib $deplibs" if $opt_preserve_dup_deps; then case "$tmp_libs " in *" $deplib "*) func_append specialdeplibs " $deplib" ;; esac fi func_append tmp_libs " $deplib" done continue fi # $pass = conv # Get the name of the library we link against. linklib= if test -n "$old_library" && { test yes = "$prefer_static_libs" || test built,no = "$prefer_static_libs,$installed"; }; then linklib=$old_library else for l in $old_library $library_names; do linklib=$l done fi if test -z "$linklib"; then func_fatal_error "cannot find name of link library for '$lib'" fi # This library was specified with -dlopen. if test dlopen = "$pass"; then test -z "$libdir" \ && func_fatal_error "cannot -dlopen a convenience library: '$lib'" if test -z "$dlname" || test yes != "$dlopen_support" || test no = "$build_libtool_libs" then # If there is no dlname, no dlopen support or we're linking # statically, we need to preload. We also need to preload any # dependent libraries so libltdl's deplib preloader doesn't # bomb out in the load deplibs phase. func_append dlprefiles " $lib $dependency_libs" else func_append newdlfiles " $lib" fi continue fi # $pass = dlopen # We need an absolute path. case $ladir in [\\/]* | [A-Za-z]:[\\/]*) abs_ladir=$ladir ;; *) abs_ladir=`cd "$ladir" && pwd` if test -z "$abs_ladir"; then func_warning "cannot determine absolute directory name of '$ladir'" func_warning "passing it literally to the linker, although it might fail" abs_ladir=$ladir fi ;; esac func_basename "$lib" laname=$func_basename_result # Find the relevant object directory and library name. if test yes = "$installed"; then if test ! -f "$lt_sysroot$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then func_warning "library '$lib' was moved." dir=$ladir absdir=$abs_ladir libdir=$abs_ladir else dir=$lt_sysroot$libdir absdir=$lt_sysroot$libdir fi test yes = "$hardcode_automatic" && avoidtemprpath=yes else if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then dir=$ladir absdir=$abs_ladir # Remove this search path later func_append notinst_path " $abs_ladir" else dir=$ladir/$objdir absdir=$abs_ladir/$objdir # Remove this search path later func_append notinst_path " $abs_ladir" fi fi # $installed = yes func_stripname 'lib' '.la' "$laname" name=$func_stripname_result # This library was specified with -dlpreopen. if test dlpreopen = "$pass"; then if test -z "$libdir" && test prog = "$linkmode"; then func_fatal_error "only libraries may -dlpreopen a convenience library: '$lib'" fi case $host in # special handling for platforms with PE-DLLs. *cygwin* | *mingw* | *cegcc* ) # Linker will automatically link against shared library if both # static and shared are present. Therefore, ensure we extract # symbols from the import library if a shared library is present # (otherwise, the dlopen module name will be incorrect). We do # this by putting the import library name into $newdlprefiles. # We recover the dlopen module name by 'saving' the la file # name in a special purpose variable, and (later) extracting the # dlname from the la file. if test -n "$dlname"; then func_tr_sh "$dir/$linklib" eval "libfile_$func_tr_sh_result=\$abs_ladir/\$laname" func_append newdlprefiles " $dir/$linklib" else func_append newdlprefiles " $dir/$old_library" # Keep a list of preopened convenience libraries to check # that they are being used correctly in the link pass. test -z "$libdir" && \ func_append dlpreconveniencelibs " $dir/$old_library" fi ;; * ) # Prefer using a static library (so that no silly _DYNAMIC symbols # are required to link). if test -n "$old_library"; then func_append newdlprefiles " $dir/$old_library" # Keep a list of preopened convenience libraries to check # that they are being used correctly in the link pass. test -z "$libdir" && \ func_append dlpreconveniencelibs " $dir/$old_library" # Otherwise, use the dlname, so that lt_dlopen finds it. elif test -n "$dlname"; then func_append newdlprefiles " $dir/$dlname" else func_append newdlprefiles " $dir/$linklib" fi ;; esac fi # $pass = dlpreopen if test -z "$libdir"; then # Link the convenience library if test lib = "$linkmode"; then deplibs="$dir/$old_library $deplibs" elif test prog,link = "$linkmode,$pass"; then compile_deplibs="$dir/$old_library $compile_deplibs" finalize_deplibs="$dir/$old_library $finalize_deplibs" else deplibs="$lib $deplibs" # used for prog,scan pass fi continue fi if test prog = "$linkmode" && test link != "$pass"; then func_append newlib_search_path " $ladir" deplibs="$lib $deplibs" linkalldeplibs=false if test no != "$link_all_deplibs" || test -z "$library_names" || test no = "$build_libtool_libs"; then linkalldeplibs=: fi tmp_libs= for deplib in $dependency_libs; do case $deplib in -L*) func_stripname '-L' '' "$deplib" func_resolve_sysroot "$func_stripname_result" func_append newlib_search_path " $func_resolve_sysroot_result" ;; esac # Need to link against all dependency_libs? if $linkalldeplibs; then deplibs="$deplib $deplibs" else # Need to hardcode shared library paths # or/and link against static libraries newdependency_libs="$deplib $newdependency_libs" fi if $opt_preserve_dup_deps; then case "$tmp_libs " in *" $deplib "*) func_append specialdeplibs " $deplib" ;; esac fi func_append tmp_libs " $deplib" done # for deplib continue fi # $linkmode = prog... if test prog,link = "$linkmode,$pass"; then if test -n "$library_names" && { { test no = "$prefer_static_libs" || test built,yes = "$prefer_static_libs,$installed"; } || test -z "$old_library"; }; then # We need to hardcode the library path if test -n "$shlibpath_var" && test -z "$avoidtemprpath"; then # Make sure the rpath contains only unique directories. case $temp_rpath: in *"$absdir:"*) ;; *) func_append temp_rpath "$absdir:" ;; esac fi # Hardcode the library path. # Skip directories that are in the system default run-time # search path. case " $sys_lib_dlsearch_path " in *" $absdir "*) ;; *) case "$compile_rpath " in *" $absdir "*) ;; *) func_append compile_rpath " $absdir" ;; esac ;; esac case " $sys_lib_dlsearch_path " in *" $libdir "*) ;; *) case "$finalize_rpath " in *" $libdir "*) ;; *) func_append finalize_rpath " $libdir" ;; esac ;; esac fi # $linkmode,$pass = prog,link... if $alldeplibs && { test pass_all = "$deplibs_check_method" || { test yes = "$build_libtool_libs" && test -n "$library_names"; }; }; then # We only need to search for static libraries continue fi fi link_static=no # Whether the deplib will be linked statically use_static_libs=$prefer_static_libs if test built = "$use_static_libs" && test yes = "$installed"; then use_static_libs=no fi if test -n "$library_names" && { test no = "$use_static_libs" || test -z "$old_library"; }; then case $host in *cygwin* | *mingw* | *cegcc* | *os2*) # No point in relinking DLLs because paths are not encoded func_append notinst_deplibs " $lib" need_relink=no ;; *) if test no = "$installed"; then func_append notinst_deplibs " $lib" need_relink=yes fi ;; esac # This is a shared library # Warn about portability, can't link against -module's on some # systems (darwin). Don't bleat about dlopened modules though! dlopenmodule= for dlpremoduletest in $dlprefiles; do if test "X$dlpremoduletest" = "X$lib"; then dlopenmodule=$dlpremoduletest break fi done if test -z "$dlopenmodule" && test yes = "$shouldnotlink" && test link = "$pass"; then echo if test prog = "$linkmode"; then $ECHO "*** Warning: Linking the executable $output against the loadable module" else $ECHO "*** Warning: Linking the shared library $output against the loadable module" fi $ECHO "*** $linklib is not portable!" fi if test lib = "$linkmode" && test yes = "$hardcode_into_libs"; then # Hardcode the library path. # Skip directories that are in the system default run-time # search path. case " $sys_lib_dlsearch_path " in *" $absdir "*) ;; *) case "$compile_rpath " in *" $absdir "*) ;; *) func_append compile_rpath " $absdir" ;; esac ;; esac case " $sys_lib_dlsearch_path " in *" $libdir "*) ;; *) case "$finalize_rpath " in *" $libdir "*) ;; *) func_append finalize_rpath " $libdir" ;; esac ;; esac fi if test -n "$old_archive_from_expsyms_cmds"; then # figure out the soname set dummy $library_names shift realname=$1 shift libname=`eval "\\$ECHO \"$libname_spec\""` # use dlname if we got it. it's perfectly good, no? if test -n "$dlname"; then soname=$dlname elif test -n "$soname_spec"; then # bleh windows case $host in *cygwin* | mingw* | *cegcc* | *os2*) func_arith $current - $age major=$func_arith_result versuffix=-$major ;; esac eval soname=\"$soname_spec\" else soname=$realname fi # Make a new name for the extract_expsyms_cmds to use soroot=$soname func_basename "$soroot" soname=$func_basename_result func_stripname 'lib' '.dll' "$soname" newlib=libimp-$func_stripname_result.a # If the library has no export list, then create one now if test -f "$output_objdir/$soname-def"; then : else func_verbose "extracting exported symbol list from '$soname'" func_execute_cmds "$extract_expsyms_cmds" 'exit $?' fi # Create $newlib if test -f "$output_objdir/$newlib"; then :; else func_verbose "generating import library for '$soname'" func_execute_cmds "$old_archive_from_expsyms_cmds" 'exit $?' fi # make sure the library variables are pointing to the new library dir=$output_objdir linklib=$newlib fi # test -n "$old_archive_from_expsyms_cmds" if test prog = "$linkmode" || test relink != "$opt_mode"; then add_shlibpath= add_dir= add= lib_linked=yes case $hardcode_action in immediate | unsupported) if test no = "$hardcode_direct"; then add=$dir/$linklib case $host in *-*-sco3.2v5.0.[024]*) add_dir=-L$dir ;; *-*-sysv4*uw2*) add_dir=-L$dir ;; *-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \ *-*-unixware7*) add_dir=-L$dir ;; *-*-darwin* ) # if the lib is a (non-dlopened) module then we cannot # link against it, someone is ignoring the earlier warnings if /usr/bin/file -L $add 2> /dev/null | $GREP ": [^:]* bundle" >/dev/null; then if test "X$dlopenmodule" != "X$lib"; then $ECHO "*** Warning: lib $linklib is a module, not a shared library" if test -z "$old_library"; then echo echo "*** And there doesn't seem to be a static archive available" echo "*** The link will probably fail, sorry" else add=$dir/$old_library fi elif test -n "$old_library"; then add=$dir/$old_library fi fi esac elif test no = "$hardcode_minus_L"; then case $host in *-*-sunos*) add_shlibpath=$dir ;; esac add_dir=-L$dir add=-l$name elif test no = "$hardcode_shlibpath_var"; then add_shlibpath=$dir add=-l$name else lib_linked=no fi ;; relink) if test yes = "$hardcode_direct" && test no = "$hardcode_direct_absolute"; then add=$dir/$linklib elif test yes = "$hardcode_minus_L"; then add_dir=-L$absdir # Try looking first in the location we're being installed to. if test -n "$inst_prefix_dir"; then case $libdir in [\\/]*) func_append add_dir " -L$inst_prefix_dir$libdir" ;; esac fi add=-l$name elif test yes = "$hardcode_shlibpath_var"; then add_shlibpath=$dir add=-l$name else lib_linked=no fi ;; *) lib_linked=no ;; esac if test yes != "$lib_linked"; then func_fatal_configuration "unsupported hardcode properties" fi if test -n "$add_shlibpath"; then case :$compile_shlibpath: in *":$add_shlibpath:"*) ;; *) func_append compile_shlibpath "$add_shlibpath:" ;; esac fi if test prog = "$linkmode"; then test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs" test -n "$add" && compile_deplibs="$add $compile_deplibs" else test -n "$add_dir" && deplibs="$add_dir $deplibs" test -n "$add" && deplibs="$add $deplibs" if test yes != "$hardcode_direct" && test yes != "$hardcode_minus_L" && test yes = "$hardcode_shlibpath_var"; then case :$finalize_shlibpath: in *":$libdir:"*) ;; *) func_append finalize_shlibpath "$libdir:" ;; esac fi fi fi if test prog = "$linkmode" || test relink = "$opt_mode"; then add_shlibpath= add_dir= add= # Finalize command for both is simple: just hardcode it. if test yes = "$hardcode_direct" && test no = "$hardcode_direct_absolute"; then add=$libdir/$linklib elif test yes = "$hardcode_minus_L"; then add_dir=-L$libdir add=-l$name elif test yes = "$hardcode_shlibpath_var"; then case :$finalize_shlibpath: in *":$libdir:"*) ;; *) func_append finalize_shlibpath "$libdir:" ;; esac add=-l$name elif test yes = "$hardcode_automatic"; then if test -n "$inst_prefix_dir" && test -f "$inst_prefix_dir$libdir/$linklib"; then add=$inst_prefix_dir$libdir/$linklib else add=$libdir/$linklib fi else # We cannot seem to hardcode it, guess we'll fake it. add_dir=-L$libdir # Try looking first in the location we're being installed to. if test -n "$inst_prefix_dir"; then case $libdir in [\\/]*) func_append add_dir " -L$inst_prefix_dir$libdir" ;; esac fi add=-l$name fi if test prog = "$linkmode"; then test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs" test -n "$add" && finalize_deplibs="$add $finalize_deplibs" else test -n "$add_dir" && deplibs="$add_dir $deplibs" test -n "$add" && deplibs="$add $deplibs" fi fi elif test prog = "$linkmode"; then # Here we assume that one of hardcode_direct or hardcode_minus_L # is not unsupported. This is valid on all known static and # shared platforms. if test unsupported != "$hardcode_direct"; then test -n "$old_library" && linklib=$old_library compile_deplibs="$dir/$linklib $compile_deplibs" finalize_deplibs="$dir/$linklib $finalize_deplibs" else compile_deplibs="-l$name -L$dir $compile_deplibs" finalize_deplibs="-l$name -L$dir $finalize_deplibs" fi elif test yes = "$build_libtool_libs"; then # Not a shared library if test pass_all != "$deplibs_check_method"; then # We're trying link a shared library against a static one # but the system doesn't support it. # Just print a warning and add the library to dependency_libs so # that the program can be linked against the static library. echo $ECHO "*** Warning: This system cannot link to static lib archive $lib." echo "*** I have the capability to make that library automatically link in when" echo "*** you link to this library. But I can only do this if you have a" echo "*** shared version of the library, which you do not appear to have." if test yes = "$module"; then echo "*** But as you try to build a module library, libtool will still create " echo "*** a static module, that should work as long as the dlopening application" echo "*** is linked with the -dlopen flag to resolve symbols at runtime." if test -z "$global_symbol_pipe"; then echo echo "*** However, this would only work if libtool was able to extract symbol" echo "*** lists from a program, using 'nm' or equivalent, but libtool could" echo "*** not find such a program. So, this module is probably useless." echo "*** 'nm' from GNU binutils and a full rebuild may help." fi if test no = "$build_old_libs"; then build_libtool_libs=module build_old_libs=yes else build_libtool_libs=no fi fi else deplibs="$dir/$old_library $deplibs" link_static=yes fi fi # link shared/static library? if test lib = "$linkmode"; then if test -n "$dependency_libs" && { test yes != "$hardcode_into_libs" || test yes = "$build_old_libs" || test yes = "$link_static"; }; then # Extract -R from dependency_libs temp_deplibs= for libdir in $dependency_libs; do case $libdir in -R*) func_stripname '-R' '' "$libdir" temp_xrpath=$func_stripname_result case " $xrpath " in *" $temp_xrpath "*) ;; *) func_append xrpath " $temp_xrpath";; esac;; *) func_append temp_deplibs " $libdir";; esac done dependency_libs=$temp_deplibs fi func_append newlib_search_path " $absdir" # Link against this library test no = "$link_static" && newdependency_libs="$abs_ladir/$laname $newdependency_libs" # ... and its dependency_libs tmp_libs= for deplib in $dependency_libs; do newdependency_libs="$deplib $newdependency_libs" case $deplib in -L*) func_stripname '-L' '' "$deplib" func_resolve_sysroot "$func_stripname_result";; *) func_resolve_sysroot "$deplib" ;; esac if $opt_preserve_dup_deps; then case "$tmp_libs " in *" $func_resolve_sysroot_result "*) func_append specialdeplibs " $func_resolve_sysroot_result" ;; esac fi func_append tmp_libs " $func_resolve_sysroot_result" done if test no != "$link_all_deplibs"; then # Add the search paths of all dependency libraries for deplib in $dependency_libs; do path= case $deplib in -L*) path=$deplib ;; *.la) func_resolve_sysroot "$deplib" deplib=$func_resolve_sysroot_result func_dirname "$deplib" "" "." dir=$func_dirname_result # We need an absolute path. case $dir in [\\/]* | [A-Za-z]:[\\/]*) absdir=$dir ;; *) absdir=`cd "$dir" && pwd` if test -z "$absdir"; then func_warning "cannot determine absolute directory name of '$dir'" absdir=$dir fi ;; esac if $GREP "^installed=no" $deplib > /dev/null; then case $host in *-*-darwin*) depdepl= eval deplibrary_names=`$SED -n -e 's/^library_names=\(.*\)$/\1/p' $deplib` if test -n "$deplibrary_names"; then for tmp in $deplibrary_names; do depdepl=$tmp done if test -f "$absdir/$objdir/$depdepl"; then depdepl=$absdir/$objdir/$depdepl darwin_install_name=`$OTOOL -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'` if test -z "$darwin_install_name"; then darwin_install_name=`$OTOOL64 -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'` fi func_append compiler_flags " $wl-dylib_file $wl$darwin_install_name:$depdepl" func_append linker_flags " -dylib_file $darwin_install_name:$depdepl" path= fi fi ;; *) path=-L$absdir/$objdir ;; esac else eval libdir=`$SED -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` test -z "$libdir" && \ func_fatal_error "'$deplib' is not a valid libtool archive" test "$absdir" != "$libdir" && \ func_warning "'$deplib' seems to be moved" path=-L$absdir fi ;; esac case " $deplibs " in *" $path "*) ;; *) deplibs="$path $deplibs" ;; esac done fi # link_all_deplibs != no fi # linkmode = lib done # for deplib in $libs if test link = "$pass"; then if test prog = "$linkmode"; then compile_deplibs="$new_inherited_linker_flags $compile_deplibs" finalize_deplibs="$new_inherited_linker_flags $finalize_deplibs" else compiler_flags="$compiler_flags "`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` fi fi dependency_libs=$newdependency_libs if test dlpreopen = "$pass"; then # Link the dlpreopened libraries before other libraries for deplib in $save_deplibs; do deplibs="$deplib $deplibs" done fi if test dlopen != "$pass"; then test conv = "$pass" || { # Make sure lib_search_path contains only unique directories. lib_search_path= for dir in $newlib_search_path; do case "$lib_search_path " in *" $dir "*) ;; *) func_append lib_search_path " $dir" ;; esac done newlib_search_path= } if test prog,link = "$linkmode,$pass"; then vars="compile_deplibs finalize_deplibs" else vars=deplibs fi for var in $vars dependency_libs; do # Add libraries to $var in reverse order eval tmp_libs=\"\$$var\" new_libs= for deplib in $tmp_libs; do # FIXME: Pedantically, this is the right thing to do, so # that some nasty dependency loop isn't accidentally # broken: #new_libs="$deplib $new_libs" # Pragmatically, this seems to cause very few problems in # practice: case $deplib in -L*) new_libs="$deplib $new_libs" ;; -R*) ;; *) # And here is the reason: when a library appears more # than once as an explicit dependence of a library, or # is implicitly linked in more than once by the # compiler, it is considered special, and multiple # occurrences thereof are not removed. Compare this # with having the same library being listed as a # dependency of multiple other libraries: in this case, # we know (pedantically, we assume) the library does not # need to be listed more than once, so we keep only the # last copy. This is not always right, but it is rare # enough that we require users that really mean to play # such unportable linking tricks to link the library # using -Wl,-lname, so that libtool does not consider it # for duplicate removal. case " $specialdeplibs " in *" $deplib "*) new_libs="$deplib $new_libs" ;; *) case " $new_libs " in *" $deplib "*) ;; *) new_libs="$deplib $new_libs" ;; esac ;; esac ;; esac done tmp_libs= for deplib in $new_libs; do case $deplib in -L*) case " $tmp_libs " in *" $deplib "*) ;; *) func_append tmp_libs " $deplib" ;; esac ;; *) func_append tmp_libs " $deplib" ;; esac done eval $var=\"$tmp_libs\" done # for var fi # Add Sun CC postdeps if required: test CXX = "$tagname" && { case $host_os in linux*) case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C++ 5.9 func_suncc_cstd_abi if test no != "$suncc_use_cstd_abi"; then func_append postdeps ' -library=Cstd -library=Crun' fi ;; esac ;; solaris*) func_cc_basename "$CC" case $func_cc_basename_result in CC* | sunCC*) func_suncc_cstd_abi if test no != "$suncc_use_cstd_abi"; then func_append postdeps ' -library=Cstd -library=Crun' fi ;; esac ;; esac } # Last step: remove runtime libs from dependency_libs # (they stay in deplibs) tmp_libs= for i in $dependency_libs; do case " $predeps $postdeps $compiler_lib_search_path " in *" $i "*) i= ;; esac if test -n "$i"; then func_append tmp_libs " $i" fi done dependency_libs=$tmp_libs done # for pass if test prog = "$linkmode"; then dlfiles=$newdlfiles fi if test prog = "$linkmode" || test lib = "$linkmode"; then dlprefiles=$newdlprefiles fi case $linkmode in oldlib) if test -n "$dlfiles$dlprefiles" || test no != "$dlself"; then func_warning "'-dlopen' is ignored for archives" fi case " $deplibs" in *\ -l* | *\ -L*) func_warning "'-l' and '-L' are ignored for archives" ;; esac test -n "$rpath" && \ func_warning "'-rpath' is ignored for archives" test -n "$xrpath" && \ func_warning "'-R' is ignored for archives" test -n "$vinfo" && \ func_warning "'-version-info/-version-number' is ignored for archives" test -n "$release" && \ func_warning "'-release' is ignored for archives" test -n "$export_symbols$export_symbols_regex" && \ func_warning "'-export-symbols' is ignored for archives" # Now set the variables for building old libraries. build_libtool_libs=no oldlibs=$output func_append objs "$old_deplibs" ;; lib) # Make sure we only generate libraries of the form 'libNAME.la'. case $outputname in lib*) func_stripname 'lib' '.la' "$outputname" name=$func_stripname_result eval shared_ext=\"$shrext_cmds\" eval libname=\"$libname_spec\" ;; *) test no = "$module" \ && func_fatal_help "libtool library '$output' must begin with 'lib'" if test no != "$need_lib_prefix"; then # Add the "lib" prefix for modules if required func_stripname '' '.la' "$outputname" name=$func_stripname_result eval shared_ext=\"$shrext_cmds\" eval libname=\"$libname_spec\" else func_stripname '' '.la' "$outputname" libname=$func_stripname_result fi ;; esac if test -n "$objs"; then if test pass_all != "$deplibs_check_method"; then func_fatal_error "cannot build libtool library '$output' from non-libtool objects on this host:$objs" else echo $ECHO "*** Warning: Linking the shared library $output against the non-libtool" $ECHO "*** objects $objs is not portable!" func_append libobjs " $objs" fi fi test no = "$dlself" \ || func_warning "'-dlopen self' is ignored for libtool libraries" set dummy $rpath shift test 1 -lt "$#" \ && func_warning "ignoring multiple '-rpath's for a libtool library" install_libdir=$1 oldlibs= if test -z "$rpath"; then if test yes = "$build_libtool_libs"; then # Building a libtool convenience library. # Some compilers have problems with a '.al' extension so # convenience libraries should have the same extension an # archive normally would. oldlibs="$output_objdir/$libname.$libext $oldlibs" build_libtool_libs=convenience build_old_libs=yes fi test -n "$vinfo" && \ func_warning "'-version-info/-version-number' is ignored for convenience libraries" test -n "$release" && \ func_warning "'-release' is ignored for convenience libraries" else # Parse the version information argument. save_ifs=$IFS; IFS=: set dummy $vinfo 0 0 0 shift IFS=$save_ifs test -n "$7" && \ func_fatal_help "too many parameters to '-version-info'" # convert absolute version numbers to libtool ages # this retains compatibility with .la files and attempts # to make the code below a bit more comprehensible case $vinfo_number in yes) number_major=$1 number_minor=$2 number_revision=$3 # # There are really only two kinds -- those that # use the current revision as the major version # and those that subtract age and use age as # a minor version. But, then there is irix # that has an extra 1 added just for fun # case $version_type in # correct linux to gnu/linux during the next big refactor darwin|freebsd-elf|linux|osf|windows|none) func_arith $number_major + $number_minor current=$func_arith_result age=$number_minor revision=$number_revision ;; freebsd-aout|qnx|sunos) current=$number_major revision=$number_minor age=0 ;; irix|nonstopux) func_arith $number_major + $number_minor current=$func_arith_result age=$number_minor revision=$number_minor lt_irix_increment=no ;; esac ;; no) current=$1 revision=$2 age=$3 ;; esac # Check that each of the things are valid numbers. case $current in 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; *) func_error "CURRENT '$current' must be a nonnegative integer" func_fatal_error "'$vinfo' is not valid version information" ;; esac case $revision in 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; *) func_error "REVISION '$revision' must be a nonnegative integer" func_fatal_error "'$vinfo' is not valid version information" ;; esac case $age in 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; *) func_error "AGE '$age' must be a nonnegative integer" func_fatal_error "'$vinfo' is not valid version information" ;; esac if test "$age" -gt "$current"; then func_error "AGE '$age' is greater than the current interface number '$current'" func_fatal_error "'$vinfo' is not valid version information" fi # Calculate the version variables. major= versuffix= verstring= case $version_type in none) ;; darwin) # Like Linux, but with the current version available in # verstring for coding it into the library header func_arith $current - $age major=.$func_arith_result versuffix=$major.$age.$revision # Darwin ld doesn't like 0 for these options... func_arith $current + 1 minor_current=$func_arith_result xlcverstring="$wl-compatibility_version $wl$minor_current $wl-current_version $wl$minor_current.$revision" verstring="-compatibility_version $minor_current -current_version $minor_current.$revision" # On Darwin other compilers case $CC in nagfor*) verstring="$wl-compatibility_version $wl$minor_current $wl-current_version $wl$minor_current.$revision" ;; *) verstring="-compatibility_version $minor_current -current_version $minor_current.$revision" ;; esac ;; freebsd-aout) major=.$current versuffix=.$current.$revision ;; freebsd-elf) func_arith $current - $age major=.$func_arith_result versuffix=$major.$age.$revision ;; irix | nonstopux) if test no = "$lt_irix_increment"; then func_arith $current - $age else func_arith $current - $age + 1 fi major=$func_arith_result case $version_type in nonstopux) verstring_prefix=nonstopux ;; *) verstring_prefix=sgi ;; esac verstring=$verstring_prefix$major.$revision # Add in all the interfaces that we are compatible with. loop=$revision while test 0 -ne "$loop"; do func_arith $revision - $loop iface=$func_arith_result func_arith $loop - 1 loop=$func_arith_result verstring=$verstring_prefix$major.$iface:$verstring done # Before this point, $major must not contain '.'. major=.$major versuffix=$major.$revision ;; linux) # correct to gnu/linux during the next big refactor func_arith $current - $age major=.$func_arith_result versuffix=$major.$age.$revision ;; osf) func_arith $current - $age major=.$func_arith_result versuffix=.$current.$age.$revision verstring=$current.$age.$revision # Add in all the interfaces that we are compatible with. loop=$age while test 0 -ne "$loop"; do func_arith $current - $loop iface=$func_arith_result func_arith $loop - 1 loop=$func_arith_result verstring=$verstring:$iface.0 done # Make executables depend on our current version. func_append verstring ":$current.0" ;; qnx) major=.$current versuffix=.$current ;; sco) major=.$current versuffix=.$current ;; sunos) major=.$current versuffix=.$current.$revision ;; windows) # Use '-' rather than '.', since we only want one # extension on DOS 8.3 file systems. func_arith $current - $age major=$func_arith_result versuffix=-$major ;; *) func_fatal_configuration "unknown library version type '$version_type'" ;; esac # Clear the version info if we defaulted, and they specified a release. if test -z "$vinfo" && test -n "$release"; then major= case $version_type in darwin) # we can't check for "0.0" in archive_cmds due to quoting # problems, so we reset it completely verstring= ;; *) verstring=0.0 ;; esac if test no = "$need_version"; then versuffix= else versuffix=.0.0 fi fi # Remove version info from name if versioning should be avoided if test yes,no = "$avoid_version,$need_version"; then major= versuffix= verstring= fi # Check to see if the archive will have undefined symbols. if test yes = "$allow_undefined"; then if test unsupported = "$allow_undefined_flag"; then if test yes = "$build_old_libs"; then func_warning "undefined symbols not allowed in $host shared libraries; building static only" build_libtool_libs=no else func_fatal_error "can't build $host shared library unless -no-undefined is specified" fi fi else # Don't allow undefined symbols. allow_undefined_flag=$no_undefined_flag fi fi func_generate_dlsyms "$libname" "$libname" : func_append libobjs " $symfileobj" test " " = "$libobjs" && libobjs= if test relink != "$opt_mode"; then # Remove our outputs, but don't remove object files since they # may have been created when compiling PIC objects. removelist= tempremovelist=`$ECHO "$output_objdir/*"` for p in $tempremovelist; do case $p in *.$objext | *.gcno) ;; $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/$libname$release.*) if test -n "$precious_files_regex"; then if $ECHO "$p" | $EGREP -e "$precious_files_regex" >/dev/null 2>&1 then continue fi fi func_append removelist " $p" ;; *) ;; esac done test -n "$removelist" && \ func_show_eval "${RM}r \$removelist" fi # Now set the variables for building old libraries. if test yes = "$build_old_libs" && test convenience != "$build_libtool_libs"; then func_append oldlibs " $output_objdir/$libname.$libext" # Transform .lo files to .o files. oldobjs="$objs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.$libext$/d; $lo2o" | $NL2SP` fi # Eliminate all temporary directories. #for path in $notinst_path; do # lib_search_path=`$ECHO "$lib_search_path " | $SED "s% $path % %g"` # deplibs=`$ECHO "$deplibs " | $SED "s% -L$path % %g"` # dependency_libs=`$ECHO "$dependency_libs " | $SED "s% -L$path % %g"` #done if test -n "$xrpath"; then # If the user specified any rpath flags, then add them. temp_xrpath= for libdir in $xrpath; do func_replace_sysroot "$libdir" func_append temp_xrpath " -R$func_replace_sysroot_result" case "$finalize_rpath " in *" $libdir "*) ;; *) func_append finalize_rpath " $libdir" ;; esac done if test yes != "$hardcode_into_libs" || test yes = "$build_old_libs"; then dependency_libs="$temp_xrpath $dependency_libs" fi fi # Make sure dlfiles contains only unique files that won't be dlpreopened old_dlfiles=$dlfiles dlfiles= for lib in $old_dlfiles; do case " $dlprefiles $dlfiles " in *" $lib "*) ;; *) func_append dlfiles " $lib" ;; esac done # Make sure dlprefiles contains only unique files old_dlprefiles=$dlprefiles dlprefiles= for lib in $old_dlprefiles; do case "$dlprefiles " in *" $lib "*) ;; *) func_append dlprefiles " $lib" ;; esac done if test yes = "$build_libtool_libs"; then if test -n "$rpath"; then case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos* | *-cegcc* | *-*-haiku*) # these systems don't actually have a c library (as such)! ;; *-*-rhapsody* | *-*-darwin1.[012]) # Rhapsody C library is in the System framework func_append deplibs " System.ltframework" ;; *-*-netbsd*) # Don't link with libc until the a.out ld.so is fixed. ;; *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) # Do not include libc due to us having libc/libc_r. ;; *-*-sco3.2v5* | *-*-sco5v6*) # Causes problems with __ctype ;; *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) # Compiler inserts libc in the correct place for threads to work ;; *) # Add libc to deplibs on all other systems if necessary. if test yes = "$build_libtool_need_lc"; then func_append deplibs " -lc" fi ;; esac fi # Transform deplibs into only deplibs that can be linked in shared. name_save=$name libname_save=$libname release_save=$release versuffix_save=$versuffix major_save=$major # I'm not sure if I'm treating the release correctly. I think # release should show up in the -l (ie -lgmp5) so we don't want to # add it in twice. Is that correct? release= versuffix= major= newdeplibs= droppeddeps=no case $deplibs_check_method in pass_all) # Don't check for shared/static. Everything works. # This might be a little naive. We might want to check # whether the library exists or not. But this is on # osf3 & osf4 and I'm not really sure... Just # implementing what was already the behavior. newdeplibs=$deplibs ;; test_compile) # This code stresses the "libraries are programs" paradigm to its # limits. Maybe even breaks it. We compile a program, linking it # against the deplibs as a proxy for the library. Then we can check # whether they linked in statically or dynamically with ldd. $opt_dry_run || $RM conftest.c cat > conftest.c </dev/null` $nocaseglob else potential_libs=`ls $i/$libnameglob[.-]* 2>/dev/null` fi for potent_lib in $potential_libs; do # Follow soft links. if ls -lLd "$potent_lib" 2>/dev/null | $GREP " -> " >/dev/null; then continue fi # The statement above tries to avoid entering an # endless loop below, in case of cyclic links. # We might still enter an endless loop, since a link # loop can be closed while we follow links, # but so what? potlib=$potent_lib while test -h "$potlib" 2>/dev/null; do potliblink=`ls -ld $potlib | $SED 's/.* -> //'` case $potliblink in [\\/]* | [A-Za-z]:[\\/]*) potlib=$potliblink;; *) potlib=`$ECHO "$potlib" | $SED 's|[^/]*$||'`"$potliblink";; esac done if eval $file_magic_cmd \"\$potlib\" 2>/dev/null | $SED -e 10q | $EGREP "$file_magic_regex" > /dev/null; then func_append newdeplibs " $a_deplib" a_deplib= break 2 fi done done fi if test -n "$a_deplib"; then droppeddeps=yes echo $ECHO "*** Warning: linker path does not have real file for library $a_deplib." echo "*** I have the capability to make that library automatically link in when" echo "*** you link to this library. But I can only do this if you have a" echo "*** shared version of the library, which you do not appear to have" echo "*** because I did check the linker path looking for a file starting" if test -z "$potlib"; then $ECHO "*** with $libname but no candidates were found. (...for file magic test)" else $ECHO "*** with $libname and none of the candidates passed a file format test" $ECHO "*** using a file magic. Last file checked: $potlib" fi fi ;; *) # Add a -L argument. func_append newdeplibs " $a_deplib" ;; esac done # Gone through all deplibs. ;; match_pattern*) set dummy $deplibs_check_method; shift match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` for a_deplib in $deplibs; do case $a_deplib in -l*) func_stripname -l '' "$a_deplib" name=$func_stripname_result if test yes = "$allow_libtool_libs_with_static_runtimes"; then case " $predeps $postdeps " in *" $a_deplib "*) func_append newdeplibs " $a_deplib" a_deplib= ;; esac fi if test -n "$a_deplib"; then libname=`eval "\\$ECHO \"$libname_spec\""` for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do potential_libs=`ls $i/$libname[.-]* 2>/dev/null` for potent_lib in $potential_libs; do potlib=$potent_lib # see symlink-check above in file_magic test if eval "\$ECHO \"$potent_lib\"" 2>/dev/null | $SED 10q | \ $EGREP "$match_pattern_regex" > /dev/null; then func_append newdeplibs " $a_deplib" a_deplib= break 2 fi done done fi if test -n "$a_deplib"; then droppeddeps=yes echo $ECHO "*** Warning: linker path does not have real file for library $a_deplib." echo "*** I have the capability to make that library automatically link in when" echo "*** you link to this library. But I can only do this if you have a" echo "*** shared version of the library, which you do not appear to have" echo "*** because I did check the linker path looking for a file starting" if test -z "$potlib"; then $ECHO "*** with $libname but no candidates were found. (...for regex pattern test)" else $ECHO "*** with $libname and none of the candidates passed a file format test" $ECHO "*** using a regex pattern. Last file checked: $potlib" fi fi ;; *) # Add a -L argument. func_append newdeplibs " $a_deplib" ;; esac done # Gone through all deplibs. ;; none | unknown | *) newdeplibs= tmp_deplibs=`$ECHO " $deplibs" | $SED 's/ -lc$//; s/ -[LR][^ ]*//g'` if test yes = "$allow_libtool_libs_with_static_runtimes"; then for i in $predeps $postdeps; do # can't use Xsed below, because $i might contain '/' tmp_deplibs=`$ECHO " $tmp_deplibs" | $SED "s|$i||"` done fi case $tmp_deplibs in *[!\ \ ]*) echo if test none = "$deplibs_check_method"; then echo "*** Warning: inter-library dependencies are not supported in this platform." else echo "*** Warning: inter-library dependencies are not known to be supported." fi echo "*** All declared inter-library dependencies are being dropped." droppeddeps=yes ;; esac ;; esac versuffix=$versuffix_save major=$major_save release=$release_save libname=$libname_save name=$name_save case $host in *-*-rhapsody* | *-*-darwin1.[012]) # On Rhapsody replace the C library with the System framework newdeplibs=`$ECHO " $newdeplibs" | $SED 's/ -lc / System.ltframework /'` ;; esac if test yes = "$droppeddeps"; then if test yes = "$module"; then echo echo "*** Warning: libtool could not satisfy all declared inter-library" $ECHO "*** dependencies of module $libname. Therefore, libtool will create" echo "*** a static module, that should work as long as the dlopening" echo "*** application is linked with the -dlopen flag." if test -z "$global_symbol_pipe"; then echo echo "*** However, this would only work if libtool was able to extract symbol" echo "*** lists from a program, using 'nm' or equivalent, but libtool could" echo "*** not find such a program. So, this module is probably useless." echo "*** 'nm' from GNU binutils and a full rebuild may help." fi if test no = "$build_old_libs"; then oldlibs=$output_objdir/$libname.$libext build_libtool_libs=module build_old_libs=yes else build_libtool_libs=no fi else echo "*** The inter-library dependencies that have been dropped here will be" echo "*** automatically added whenever a program is linked with this library" echo "*** or is declared to -dlopen it." if test no = "$allow_undefined"; then echo echo "*** Since this library must not contain undefined symbols," echo "*** because either the platform does not support them or" echo "*** it was explicitly requested with -no-undefined," echo "*** libtool will only create a static version of it." if test no = "$build_old_libs"; then oldlibs=$output_objdir/$libname.$libext build_libtool_libs=module build_old_libs=yes else build_libtool_libs=no fi fi fi fi # Done checking deplibs! deplibs=$newdeplibs fi # Time to change all our "foo.ltframework" stuff back to "-framework foo" case $host in *-*-darwin*) newdeplibs=`$ECHO " $newdeplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` new_inherited_linker_flags=`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` deplibs=`$ECHO " $deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` ;; esac # move library search paths that coincide with paths to not yet # installed libraries to the beginning of the library search list new_libs= for path in $notinst_path; do case " $new_libs " in *" -L$path/$objdir "*) ;; *) case " $deplibs " in *" -L$path/$objdir "*) func_append new_libs " -L$path/$objdir" ;; esac ;; esac done for deplib in $deplibs; do case $deplib in -L*) case " $new_libs " in *" $deplib "*) ;; *) func_append new_libs " $deplib" ;; esac ;; *) func_append new_libs " $deplib" ;; esac done deplibs=$new_libs # All the library-specific variables (install_libdir is set above). library_names= old_library= dlname= # Test again, we may have decided not to build it any more if test yes = "$build_libtool_libs"; then # Remove $wl instances when linking with ld. # FIXME: should test the right _cmds variable. case $archive_cmds in *\$LD\ *) wl= ;; esac if test yes = "$hardcode_into_libs"; then # Hardcode the library paths hardcode_libdirs= dep_rpath= rpath=$finalize_rpath test relink = "$opt_mode" || rpath=$compile_rpath$rpath for libdir in $rpath; do if test -n "$hardcode_libdir_flag_spec"; then if test -n "$hardcode_libdir_separator"; then func_replace_sysroot "$libdir" libdir=$func_replace_sysroot_result if test -z "$hardcode_libdirs"; then hardcode_libdirs=$libdir else # Just accumulate the unique libdirs. case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) ;; *) func_append hardcode_libdirs "$hardcode_libdir_separator$libdir" ;; esac fi else eval flag=\"$hardcode_libdir_flag_spec\" func_append dep_rpath " $flag" fi elif test -n "$runpath_var"; then case "$perm_rpath " in *" $libdir "*) ;; *) func_append perm_rpath " $libdir" ;; esac fi done # Substitute the hardcoded libdirs into the rpath. if test -n "$hardcode_libdir_separator" && test -n "$hardcode_libdirs"; then libdir=$hardcode_libdirs eval "dep_rpath=\"$hardcode_libdir_flag_spec\"" fi if test -n "$runpath_var" && test -n "$perm_rpath"; then # We should set the runpath_var. rpath= for dir in $perm_rpath; do func_append rpath "$dir:" done eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var" fi test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs" fi shlibpath=$finalize_shlibpath test relink = "$opt_mode" || shlibpath=$compile_shlibpath$shlibpath if test -n "$shlibpath"; then eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var" fi # Get the real and link names of the library. eval shared_ext=\"$shrext_cmds\" eval library_names=\"$library_names_spec\" set dummy $library_names shift realname=$1 shift if test -n "$soname_spec"; then eval soname=\"$soname_spec\" else soname=$realname fi if test -z "$dlname"; then dlname=$soname fi lib=$output_objdir/$realname linknames= for link do func_append linknames " $link" done # Use standard objects if they are pic test -z "$pic_flag" && libobjs=`$ECHO "$libobjs" | $SP2NL | $SED "$lo2o" | $NL2SP` test "X$libobjs" = "X " && libobjs= delfiles= if test -n "$export_symbols" && test -n "$include_expsyms"; then $opt_dry_run || cp "$export_symbols" "$output_objdir/$libname.uexp" export_symbols=$output_objdir/$libname.uexp func_append delfiles " $export_symbols" fi orig_export_symbols= case $host_os in cygwin* | mingw* | cegcc*) if test -n "$export_symbols" && test -z "$export_symbols_regex"; then # exporting using user supplied symfile func_dll_def_p "$export_symbols" || { # and it's NOT already a .def file. Must figure out # which of the given symbols are data symbols and tag # them as such. So, trigger use of export_symbols_cmds. # export_symbols gets reassigned inside the "prepare # the list of exported symbols" if statement, so the # include_expsyms logic still works. orig_export_symbols=$export_symbols export_symbols= always_export_symbols=yes } fi ;; esac # Prepare the list of exported symbols if test -z "$export_symbols"; then if test yes = "$always_export_symbols" || test -n "$export_symbols_regex"; then func_verbose "generating symbol list for '$libname.la'" export_symbols=$output_objdir/$libname.exp $opt_dry_run || $RM $export_symbols cmds=$export_symbols_cmds save_ifs=$IFS; IFS='~' for cmd1 in $cmds; do IFS=$save_ifs # Take the normal branch if the nm_file_list_spec branch # doesn't work or if tool conversion is not needed. case $nm_file_list_spec~$to_tool_file_cmd in *~func_convert_file_noop | *~func_convert_file_msys_to_w32 | ~*) try_normal_branch=yes eval cmd=\"$cmd1\" func_len " $cmd" len=$func_len_result ;; *) try_normal_branch=no ;; esac if test yes = "$try_normal_branch" \ && { test "$len" -lt "$max_cmd_len" \ || test "$max_cmd_len" -le -1; } then func_show_eval "$cmd" 'exit $?' skipped_export=false elif test -n "$nm_file_list_spec"; then func_basename "$output" output_la=$func_basename_result save_libobjs=$libobjs save_output=$output output=$output_objdir/$output_la.nm func_to_tool_file "$output" libobjs=$nm_file_list_spec$func_to_tool_file_result func_append delfiles " $output" func_verbose "creating $NM input file list: $output" for obj in $save_libobjs; do func_to_tool_file "$obj" $ECHO "$func_to_tool_file_result" done > "$output" eval cmd=\"$cmd1\" func_show_eval "$cmd" 'exit $?' output=$save_output libobjs=$save_libobjs skipped_export=false else # The command line is too long to execute in one step. func_verbose "using reloadable object file for export list..." skipped_export=: # Break out early, otherwise skipped_export may be # set to false by a later but shorter cmd. break fi done IFS=$save_ifs if test -n "$export_symbols_regex" && test : != "$skipped_export"; then func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' func_show_eval '$MV "${export_symbols}T" "$export_symbols"' fi fi fi if test -n "$export_symbols" && test -n "$include_expsyms"; then tmp_export_symbols=$export_symbols test -n "$orig_export_symbols" && tmp_export_symbols=$orig_export_symbols $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"' fi if test : != "$skipped_export" && test -n "$orig_export_symbols"; then # The given exports_symbols file has to be filtered, so filter it. func_verbose "filter symbol list for '$libname.la' to tag DATA exports" # FIXME: $output_objdir/$libname.filter potentially contains lots of # 's' commands, which not all seds can handle. GNU sed should be fine # though. Also, the filter scales superlinearly with the number of # global variables. join(1) would be nice here, but unfortunately # isn't a blessed tool. $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter func_append delfiles " $export_symbols $output_objdir/$libname.filter" export_symbols=$output_objdir/$libname.def $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols fi tmp_deplibs= for test_deplib in $deplibs; do case " $convenience " in *" $test_deplib "*) ;; *) func_append tmp_deplibs " $test_deplib" ;; esac done deplibs=$tmp_deplibs if test -n "$convenience"; then if test -n "$whole_archive_flag_spec" && test yes = "$compiler_needs_object" && test -z "$libobjs"; then # extract the archives, so we have objects to list. # TODO: could optimize this to just extract one archive. whole_archive_flag_spec= fi if test -n "$whole_archive_flag_spec"; then save_libobjs=$libobjs eval libobjs=\"\$libobjs $whole_archive_flag_spec\" test "X$libobjs" = "X " && libobjs= else gentop=$output_objdir/${outputname}x func_append generated " $gentop" func_extract_archives $gentop $convenience func_append libobjs " $func_extract_archives_result" test "X$libobjs" = "X " && libobjs= fi fi if test yes = "$thread_safe" && test -n "$thread_safe_flag_spec"; then eval flag=\"$thread_safe_flag_spec\" func_append linker_flags " $flag" fi # Make a backup of the uninstalled library when relinking if test relink = "$opt_mode"; then $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}U && $MV $realname ${realname}U)' || exit $? fi # Do each of the archive commands. if test yes = "$module" && test -n "$module_cmds"; then if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then eval test_cmds=\"$module_expsym_cmds\" cmds=$module_expsym_cmds else eval test_cmds=\"$module_cmds\" cmds=$module_cmds fi else if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then eval test_cmds=\"$archive_expsym_cmds\" cmds=$archive_expsym_cmds else eval test_cmds=\"$archive_cmds\" cmds=$archive_cmds fi fi if test : != "$skipped_export" && func_len " $test_cmds" && len=$func_len_result && test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then : else # The command line is too long to link in one step, link piecewise # or, if using GNU ld and skipped_export is not :, use a linker # script. # Save the value of $output and $libobjs because we want to # use them later. If we have whole_archive_flag_spec, we # want to use save_libobjs as it was before # whole_archive_flag_spec was expanded, because we can't # assume the linker understands whole_archive_flag_spec. # This may have to be revisited, in case too many # convenience libraries get linked in and end up exceeding # the spec. if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then save_libobjs=$libobjs fi save_output=$output func_basename "$output" output_la=$func_basename_result # Clear the reloadable object creation command queue and # initialize k to one. test_cmds= concat_cmds= objlist= last_robj= k=1 if test -n "$save_libobjs" && test : != "$skipped_export" && test yes = "$with_gnu_ld"; then output=$output_objdir/$output_la.lnkscript func_verbose "creating GNU ld script: $output" echo 'INPUT (' > $output for obj in $save_libobjs do func_to_tool_file "$obj" $ECHO "$func_to_tool_file_result" >> $output done echo ')' >> $output func_append delfiles " $output" func_to_tool_file "$output" output=$func_to_tool_file_result elif test -n "$save_libobjs" && test : != "$skipped_export" && test -n "$file_list_spec"; then output=$output_objdir/$output_la.lnk func_verbose "creating linker input file list: $output" : > $output set x $save_libobjs shift firstobj= if test yes = "$compiler_needs_object"; then firstobj="$1 " shift fi for obj do func_to_tool_file "$obj" $ECHO "$func_to_tool_file_result" >> $output done func_append delfiles " $output" func_to_tool_file "$output" output=$firstobj\"$file_list_spec$func_to_tool_file_result\" else if test -n "$save_libobjs"; then func_verbose "creating reloadable object files..." output=$output_objdir/$output_la-$k.$objext eval test_cmds=\"$reload_cmds\" func_len " $test_cmds" len0=$func_len_result len=$len0 # Loop over the list of objects to be linked. for obj in $save_libobjs do func_len " $obj" func_arith $len + $func_len_result len=$func_arith_result if test -z "$objlist" || test "$len" -lt "$max_cmd_len"; then func_append objlist " $obj" else # The command $test_cmds is almost too long, add a # command to the queue. if test 1 -eq "$k"; then # The first file doesn't have a previous command to add. reload_objs=$objlist eval concat_cmds=\"$reload_cmds\" else # All subsequent reloadable object files will link in # the last one created. reload_objs="$objlist $last_robj" eval concat_cmds=\"\$concat_cmds~$reload_cmds~\$RM $last_robj\" fi last_robj=$output_objdir/$output_la-$k.$objext func_arith $k + 1 k=$func_arith_result output=$output_objdir/$output_la-$k.$objext objlist=" $obj" func_len " $last_robj" func_arith $len0 + $func_len_result len=$func_arith_result fi done # Handle the remaining objects by creating one last # reloadable object file. All subsequent reloadable object # files will link in the last one created. test -z "$concat_cmds" || concat_cmds=$concat_cmds~ reload_objs="$objlist $last_robj" eval concat_cmds=\"\$concat_cmds$reload_cmds\" if test -n "$last_robj"; then eval concat_cmds=\"\$concat_cmds~\$RM $last_robj\" fi func_append delfiles " $output" else output= fi ${skipped_export-false} && { func_verbose "generating symbol list for '$libname.la'" export_symbols=$output_objdir/$libname.exp $opt_dry_run || $RM $export_symbols libobjs=$output # Append the command to create the export file. test -z "$concat_cmds" || concat_cmds=$concat_cmds~ eval concat_cmds=\"\$concat_cmds$export_symbols_cmds\" if test -n "$last_robj"; then eval concat_cmds=\"\$concat_cmds~\$RM $last_robj\" fi } test -n "$save_libobjs" && func_verbose "creating a temporary reloadable object file: $output" # Loop through the commands generated above and execute them. save_ifs=$IFS; IFS='~' for cmd in $concat_cmds; do IFS=$save_ifs $opt_quiet || { func_quote_for_expand "$cmd" eval "func_echo $func_quote_for_expand_result" } $opt_dry_run || eval "$cmd" || { lt_exit=$? # Restore the uninstalled library and exit if test relink = "$opt_mode"; then ( cd "$output_objdir" && \ $RM "${realname}T" && \ $MV "${realname}U" "$realname" ) fi exit $lt_exit } done IFS=$save_ifs if test -n "$export_symbols_regex" && ${skipped_export-false}; then func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' func_show_eval '$MV "${export_symbols}T" "$export_symbols"' fi fi ${skipped_export-false} && { if test -n "$export_symbols" && test -n "$include_expsyms"; then tmp_export_symbols=$export_symbols test -n "$orig_export_symbols" && tmp_export_symbols=$orig_export_symbols $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"' fi if test -n "$orig_export_symbols"; then # The given exports_symbols file has to be filtered, so filter it. func_verbose "filter symbol list for '$libname.la' to tag DATA exports" # FIXME: $output_objdir/$libname.filter potentially contains lots of # 's' commands, which not all seds can handle. GNU sed should be fine # though. Also, the filter scales superlinearly with the number of # global variables. join(1) would be nice here, but unfortunately # isn't a blessed tool. $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter func_append delfiles " $export_symbols $output_objdir/$libname.filter" export_symbols=$output_objdir/$libname.def $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols fi } libobjs=$output # Restore the value of output. output=$save_output if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then eval libobjs=\"\$libobjs $whole_archive_flag_spec\" test "X$libobjs" = "X " && libobjs= fi # Expand the library linking commands again to reset the # value of $libobjs for piecewise linking. # Do each of the archive commands. if test yes = "$module" && test -n "$module_cmds"; then if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then cmds=$module_expsym_cmds else cmds=$module_cmds fi else if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then cmds=$archive_expsym_cmds else cmds=$archive_cmds fi fi fi if test -n "$delfiles"; then # Append the command to remove temporary files to $cmds. eval cmds=\"\$cmds~\$RM $delfiles\" fi # Add any objects from preloaded convenience libraries if test -n "$dlprefiles"; then gentop=$output_objdir/${outputname}x func_append generated " $gentop" func_extract_archives $gentop $dlprefiles func_append libobjs " $func_extract_archives_result" test "X$libobjs" = "X " && libobjs= fi save_ifs=$IFS; IFS='~' for cmd in $cmds; do IFS=$sp$nl eval cmd=\"$cmd\" IFS=$save_ifs $opt_quiet || { func_quote_for_expand "$cmd" eval "func_echo $func_quote_for_expand_result" } $opt_dry_run || eval "$cmd" || { lt_exit=$? # Restore the uninstalled library and exit if test relink = "$opt_mode"; then ( cd "$output_objdir" && \ $RM "${realname}T" && \ $MV "${realname}U" "$realname" ) fi exit $lt_exit } done IFS=$save_ifs # Restore the uninstalled library and exit if test relink = "$opt_mode"; then $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}T && $MV $realname ${realname}T && $MV ${realname}U $realname)' || exit $? if test -n "$convenience"; then if test -z "$whole_archive_flag_spec"; then func_show_eval '${RM}r "$gentop"' fi fi exit $EXIT_SUCCESS fi # Create links to the real library. for linkname in $linknames; do if test "$realname" != "$linkname"; then func_show_eval '(cd "$output_objdir" && $RM "$linkname" && $LN_S "$realname" "$linkname")' 'exit $?' fi done # If -module or -export-dynamic was specified, set the dlname. if test yes = "$module" || test yes = "$export_dynamic"; then # On all known operating systems, these are identical. dlname=$soname fi fi ;; obj) if test -n "$dlfiles$dlprefiles" || test no != "$dlself"; then func_warning "'-dlopen' is ignored for objects" fi case " $deplibs" in *\ -l* | *\ -L*) func_warning "'-l' and '-L' are ignored for objects" ;; esac test -n "$rpath" && \ func_warning "'-rpath' is ignored for objects" test -n "$xrpath" && \ func_warning "'-R' is ignored for objects" test -n "$vinfo" && \ func_warning "'-version-info' is ignored for objects" test -n "$release" && \ func_warning "'-release' is ignored for objects" case $output in *.lo) test -n "$objs$old_deplibs" && \ func_fatal_error "cannot build library object '$output' from non-libtool objects" libobj=$output func_lo2o "$libobj" obj=$func_lo2o_result ;; *) libobj= obj=$output ;; esac # Delete the old objects. $opt_dry_run || $RM $obj $libobj # Objects from convenience libraries. This assumes # single-version convenience libraries. Whenever we create # different ones for PIC/non-PIC, this we'll have to duplicate # the extraction. reload_conv_objs= gentop= # if reload_cmds runs $LD directly, get rid of -Wl from # whole_archive_flag_spec and hope we can get by with turning comma # into space. case $reload_cmds in *\$LD[\ \$]*) wl= ;; esac if test -n "$convenience"; then if test -n "$whole_archive_flag_spec"; then eval tmp_whole_archive_flags=\"$whole_archive_flag_spec\" test -n "$wl" || tmp_whole_archive_flags=`$ECHO "$tmp_whole_archive_flags" | $SED 's|,| |g'` reload_conv_objs=$reload_objs\ $tmp_whole_archive_flags else gentop=$output_objdir/${obj}x func_append generated " $gentop" func_extract_archives $gentop $convenience reload_conv_objs="$reload_objs $func_extract_archives_result" fi fi # If we're not building shared, we need to use non_pic_objs test yes = "$build_libtool_libs" || libobjs=$non_pic_objects # Create the old-style object. reload_objs=$objs$old_deplibs' '`$ECHO "$libobjs" | $SP2NL | $SED "/\.$libext$/d; /\.lib$/d; $lo2o" | $NL2SP`' '$reload_conv_objs output=$obj func_execute_cmds "$reload_cmds" 'exit $?' # Exit if we aren't doing a library object file. if test -z "$libobj"; then if test -n "$gentop"; then func_show_eval '${RM}r "$gentop"' fi exit $EXIT_SUCCESS fi test yes = "$build_libtool_libs" || { if test -n "$gentop"; then func_show_eval '${RM}r "$gentop"' fi # Create an invalid libtool object if no PIC, so that we don't # accidentally link it into a program. # $show "echo timestamp > $libobj" # $opt_dry_run || eval "echo timestamp > $libobj" || exit $? exit $EXIT_SUCCESS } if test -n "$pic_flag" || test default != "$pic_mode"; then # Only do commands if we really have different PIC objects. reload_objs="$libobjs $reload_conv_objs" output=$libobj func_execute_cmds "$reload_cmds" 'exit $?' fi if test -n "$gentop"; then func_show_eval '${RM}r "$gentop"' fi exit $EXIT_SUCCESS ;; prog) case $host in *cygwin*) func_stripname '' '.exe' "$output" output=$func_stripname_result.exe;; esac test -n "$vinfo" && \ func_warning "'-version-info' is ignored for programs" test -n "$release" && \ func_warning "'-release' is ignored for programs" $preload \ && test unknown,unknown,unknown = "$dlopen_support,$dlopen_self,$dlopen_self_static" \ && func_warning "'LT_INIT([dlopen])' not used. Assuming no dlopen support." case $host in *-*-rhapsody* | *-*-darwin1.[012]) # On Rhapsody replace the C library is the System framework compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's/ -lc / System.ltframework /'` finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's/ -lc / System.ltframework /'` ;; esac case $host in *-*-darwin*) # Don't allow lazy linking, it breaks C++ global constructors # But is supposedly fixed on 10.4 or later (yay!). if test CXX = "$tagname"; then case ${MACOSX_DEPLOYMENT_TARGET-10.0} in 10.[0123]) func_append compile_command " $wl-bind_at_load" func_append finalize_command " $wl-bind_at_load" ;; esac fi # Time to change all our "foo.ltframework" stuff back to "-framework foo" compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` ;; esac # move library search paths that coincide with paths to not yet # installed libraries to the beginning of the library search list new_libs= for path in $notinst_path; do case " $new_libs " in *" -L$path/$objdir "*) ;; *) case " $compile_deplibs " in *" -L$path/$objdir "*) func_append new_libs " -L$path/$objdir" ;; esac ;; esac done for deplib in $compile_deplibs; do case $deplib in -L*) case " $new_libs " in *" $deplib "*) ;; *) func_append new_libs " $deplib" ;; esac ;; *) func_append new_libs " $deplib" ;; esac done compile_deplibs=$new_libs func_append compile_command " $compile_deplibs" func_append finalize_command " $finalize_deplibs" if test -n "$rpath$xrpath"; then # If the user specified any rpath flags, then add them. for libdir in $rpath $xrpath; do # This is the magic to use -rpath. case "$finalize_rpath " in *" $libdir "*) ;; *) func_append finalize_rpath " $libdir" ;; esac done fi # Now hardcode the library paths rpath= hardcode_libdirs= for libdir in $compile_rpath $finalize_rpath; do if test -n "$hardcode_libdir_flag_spec"; then if test -n "$hardcode_libdir_separator"; then if test -z "$hardcode_libdirs"; then hardcode_libdirs=$libdir else # Just accumulate the unique libdirs. case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) ;; *) func_append hardcode_libdirs "$hardcode_libdir_separator$libdir" ;; esac fi else eval flag=\"$hardcode_libdir_flag_spec\" func_append rpath " $flag" fi elif test -n "$runpath_var"; then case "$perm_rpath " in *" $libdir "*) ;; *) func_append perm_rpath " $libdir" ;; esac fi case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) testbindir=`$ECHO "$libdir" | $SED -e 's*/lib$*/bin*'` case :$dllsearchpath: in *":$libdir:"*) ;; ::) dllsearchpath=$libdir;; *) func_append dllsearchpath ":$libdir";; esac case :$dllsearchpath: in *":$testbindir:"*) ;; ::) dllsearchpath=$testbindir;; *) func_append dllsearchpath ":$testbindir";; esac ;; esac done # Substitute the hardcoded libdirs into the rpath. if test -n "$hardcode_libdir_separator" && test -n "$hardcode_libdirs"; then libdir=$hardcode_libdirs eval rpath=\" $hardcode_libdir_flag_spec\" fi compile_rpath=$rpath rpath= hardcode_libdirs= for libdir in $finalize_rpath; do if test -n "$hardcode_libdir_flag_spec"; then if test -n "$hardcode_libdir_separator"; then if test -z "$hardcode_libdirs"; then hardcode_libdirs=$libdir else # Just accumulate the unique libdirs. case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) ;; *) func_append hardcode_libdirs "$hardcode_libdir_separator$libdir" ;; esac fi else eval flag=\"$hardcode_libdir_flag_spec\" func_append rpath " $flag" fi elif test -n "$runpath_var"; then case "$finalize_perm_rpath " in *" $libdir "*) ;; *) func_append finalize_perm_rpath " $libdir" ;; esac fi done # Substitute the hardcoded libdirs into the rpath. if test -n "$hardcode_libdir_separator" && test -n "$hardcode_libdirs"; then libdir=$hardcode_libdirs eval rpath=\" $hardcode_libdir_flag_spec\" fi finalize_rpath=$rpath if test -n "$libobjs" && test yes = "$build_old_libs"; then # Transform all the library objects into standard objects. compile_command=`$ECHO "$compile_command" | $SP2NL | $SED "$lo2o" | $NL2SP` finalize_command=`$ECHO "$finalize_command" | $SP2NL | $SED "$lo2o" | $NL2SP` fi func_generate_dlsyms "$outputname" "@PROGRAM@" false # template prelinking step if test -n "$prelink_cmds"; then func_execute_cmds "$prelink_cmds" 'exit $?' fi wrappers_required=: case $host in *cegcc* | *mingw32ce*) # Disable wrappers for cegcc and mingw32ce hosts, we are cross compiling anyway. wrappers_required=false ;; *cygwin* | *mingw* ) test yes = "$build_libtool_libs" || wrappers_required=false ;; *) if test no = "$need_relink" || test yes != "$build_libtool_libs"; then wrappers_required=false fi ;; esac $wrappers_required || { # Replace the output file specification. compile_command=`$ECHO "$compile_command" | $SED 's%@OUTPUT@%'"$output"'%g'` link_command=$compile_command$compile_rpath # We have no uninstalled library dependencies, so finalize right now. exit_status=0 func_show_eval "$link_command" 'exit_status=$?' if test -n "$postlink_cmds"; then func_to_tool_file "$output" postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'` func_execute_cmds "$postlink_cmds" 'exit $?' fi # Delete the generated files. if test -f "$output_objdir/${outputname}S.$objext"; then func_show_eval '$RM "$output_objdir/${outputname}S.$objext"' fi exit $exit_status } if test -n "$compile_shlibpath$finalize_shlibpath"; then compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command" fi if test -n "$finalize_shlibpath"; then finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command" fi compile_var= finalize_var= if test -n "$runpath_var"; then if test -n "$perm_rpath"; then # We should set the runpath_var. rpath= for dir in $perm_rpath; do func_append rpath "$dir:" done compile_var="$runpath_var=\"$rpath\$$runpath_var\" " fi if test -n "$finalize_perm_rpath"; then # We should set the runpath_var. rpath= for dir in $finalize_perm_rpath; do func_append rpath "$dir:" done finalize_var="$runpath_var=\"$rpath\$$runpath_var\" " fi fi if test yes = "$no_install"; then # We don't need to create a wrapper script. link_command=$compile_var$compile_command$compile_rpath # Replace the output file specification. link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output"'%g'` # Delete the old output file. $opt_dry_run || $RM $output # Link the executable and exit func_show_eval "$link_command" 'exit $?' if test -n "$postlink_cmds"; then func_to_tool_file "$output" postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'` func_execute_cmds "$postlink_cmds" 'exit $?' fi exit $EXIT_SUCCESS fi case $hardcode_action,$fast_install in relink,*) # Fast installation is not supported link_command=$compile_var$compile_command$compile_rpath relink_command=$finalize_var$finalize_command$finalize_rpath func_warning "this platform does not like uninstalled shared libraries" func_warning "'$output' will be relinked during installation" ;; *,yes) link_command=$finalize_var$compile_command$finalize_rpath relink_command=`$ECHO "$compile_var$compile_command$compile_rpath" | $SED 's%@OUTPUT@%\$progdir/\$file%g'` ;; *,no) link_command=$compile_var$compile_command$compile_rpath relink_command=$finalize_var$finalize_command$finalize_rpath ;; *,needless) link_command=$finalize_var$compile_command$finalize_rpath relink_command= ;; esac # Replace the output file specification. link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'` # Delete the old output files. $opt_dry_run || $RM $output $output_objdir/$outputname $output_objdir/lt-$outputname func_show_eval "$link_command" 'exit $?' if test -n "$postlink_cmds"; then func_to_tool_file "$output_objdir/$outputname" postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'` func_execute_cmds "$postlink_cmds" 'exit $?' fi # Now create the wrapper script. func_verbose "creating $output" # Quote the relink command for shipping. if test -n "$relink_command"; then # Preserve any variables that may affect compiler behavior for var in $variables_saved_for_relink; do if eval test -z \"\${$var+set}\"; then relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command" elif eval var_value=\$$var; test -z "$var_value"; then relink_command="$var=; export $var; $relink_command" else func_quote_for_eval "$var_value" relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command" fi done relink_command="(cd `pwd`; $relink_command)" relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"` fi # Only actually do things if not in dry run mode. $opt_dry_run || { # win32 will think the script is a binary if it has # a .exe suffix, so we strip it off here. case $output in *.exe) func_stripname '' '.exe' "$output" output=$func_stripname_result ;; esac # test for cygwin because mv fails w/o .exe extensions case $host in *cygwin*) exeext=.exe func_stripname '' '.exe' "$outputname" outputname=$func_stripname_result ;; *) exeext= ;; esac case $host in *cygwin* | *mingw* ) func_dirname_and_basename "$output" "" "." output_name=$func_basename_result output_path=$func_dirname_result cwrappersource=$output_path/$objdir/lt-$output_name.c cwrapper=$output_path/$output_name.exe $RM $cwrappersource $cwrapper trap "$RM $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15 func_emit_cwrapperexe_src > $cwrappersource # The wrapper executable is built using the $host compiler, # because it contains $host paths and files. If cross- # compiling, it, like the target executable, must be # executed on the $host or under an emulation environment. $opt_dry_run || { $LTCC $LTCFLAGS -o $cwrapper $cwrappersource $STRIP $cwrapper } # Now, create the wrapper script for func_source use: func_ltwrapper_scriptname $cwrapper $RM $func_ltwrapper_scriptname_result trap "$RM $func_ltwrapper_scriptname_result; exit $EXIT_FAILURE" 1 2 15 $opt_dry_run || { # note: this script will not be executed, so do not chmod. if test "x$build" = "x$host"; then $cwrapper --lt-dump-script > $func_ltwrapper_scriptname_result else func_emit_wrapper no > $func_ltwrapper_scriptname_result fi } ;; * ) $RM $output trap "$RM $output; exit $EXIT_FAILURE" 1 2 15 func_emit_wrapper no > $output chmod +x $output ;; esac } exit $EXIT_SUCCESS ;; esac # See if we need to build an old-fashioned archive. for oldlib in $oldlibs; do case $build_libtool_libs in convenience) oldobjs="$libobjs_save $symfileobj" addlibs=$convenience build_libtool_libs=no ;; module) oldobjs=$libobjs_save addlibs=$old_convenience build_libtool_libs=no ;; *) oldobjs="$old_deplibs $non_pic_objects" $preload && test -f "$symfileobj" \ && func_append oldobjs " $symfileobj" addlibs=$old_convenience ;; esac if test -n "$addlibs"; then gentop=$output_objdir/${outputname}x func_append generated " $gentop" func_extract_archives $gentop $addlibs func_append oldobjs " $func_extract_archives_result" fi # Do each command in the archive commands. if test -n "$old_archive_from_new_cmds" && test yes = "$build_libtool_libs"; then cmds=$old_archive_from_new_cmds else # Add any objects from preloaded convenience libraries if test -n "$dlprefiles"; then gentop=$output_objdir/${outputname}x func_append generated " $gentop" func_extract_archives $gentop $dlprefiles func_append oldobjs " $func_extract_archives_result" fi # POSIX demands no paths to be encoded in archives. We have # to avoid creating archives with duplicate basenames if we # might have to extract them afterwards, e.g., when creating a # static archive out of a convenience library, or when linking # the entirety of a libtool archive into another (currently # not supported by libtool). if (for obj in $oldobjs do func_basename "$obj" $ECHO "$func_basename_result" done | sort | sort -uc >/dev/null 2>&1); then : else echo "copying selected object files to avoid basename conflicts..." gentop=$output_objdir/${outputname}x func_append generated " $gentop" func_mkdir_p "$gentop" save_oldobjs=$oldobjs oldobjs= counter=1 for obj in $save_oldobjs do func_basename "$obj" objbase=$func_basename_result case " $oldobjs " in " ") oldobjs=$obj ;; *[\ /]"$objbase "*) while :; do # Make sure we don't pick an alternate name that also # overlaps. newobj=lt$counter-$objbase func_arith $counter + 1 counter=$func_arith_result case " $oldobjs " in *[\ /]"$newobj "*) ;; *) if test ! -f "$gentop/$newobj"; then break; fi ;; esac done func_show_eval "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj" func_append oldobjs " $gentop/$newobj" ;; *) func_append oldobjs " $obj" ;; esac done fi func_to_tool_file "$oldlib" func_convert_file_msys_to_w32 tool_oldlib=$func_to_tool_file_result eval cmds=\"$old_archive_cmds\" func_len " $cmds" len=$func_len_result if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then cmds=$old_archive_cmds elif test -n "$archiver_list_spec"; then func_verbose "using command file archive linking..." for obj in $oldobjs do func_to_tool_file "$obj" $ECHO "$func_to_tool_file_result" done > $output_objdir/$libname.libcmd func_to_tool_file "$output_objdir/$libname.libcmd" oldobjs=" $archiver_list_spec$func_to_tool_file_result" cmds=$old_archive_cmds else # the command line is too long to link in one step, link in parts func_verbose "using piecewise archive linking..." save_RANLIB=$RANLIB RANLIB=: objlist= concat_cmds= save_oldobjs=$oldobjs oldobjs= # Is there a better way of finding the last object in the list? for obj in $save_oldobjs do last_oldobj=$obj done eval test_cmds=\"$old_archive_cmds\" func_len " $test_cmds" len0=$func_len_result len=$len0 for obj in $save_oldobjs do func_len " $obj" func_arith $len + $func_len_result len=$func_arith_result func_append objlist " $obj" if test "$len" -lt "$max_cmd_len"; then : else # the above command should be used before it gets too long oldobjs=$objlist if test "$obj" = "$last_oldobj"; then RANLIB=$save_RANLIB fi test -z "$concat_cmds" || concat_cmds=$concat_cmds~ eval concat_cmds=\"\$concat_cmds$old_archive_cmds\" objlist= len=$len0 fi done RANLIB=$save_RANLIB oldobjs=$objlist if test -z "$oldobjs"; then eval cmds=\"\$concat_cmds\" else eval cmds=\"\$concat_cmds~\$old_archive_cmds\" fi fi fi func_execute_cmds "$cmds" 'exit $?' done test -n "$generated" && \ func_show_eval "${RM}r$generated" # Now create the libtool archive. case $output in *.la) old_library= test yes = "$build_old_libs" && old_library=$libname.$libext func_verbose "creating $output" # Preserve any variables that may affect compiler behavior for var in $variables_saved_for_relink; do if eval test -z \"\${$var+set}\"; then relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command" elif eval var_value=\$$var; test -z "$var_value"; then relink_command="$var=; export $var; $relink_command" else func_quote_for_eval "$var_value" relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command" fi done # Quote the link command for shipping. relink_command="(cd `pwd`; $SHELL \"$progpath\" $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)" relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"` if test yes = "$hardcode_automatic"; then relink_command= fi # Only create the output if not a dry run. $opt_dry_run || { for installed in no yes; do if test yes = "$installed"; then if test -z "$install_libdir"; then break fi output=$output_objdir/${outputname}i # Replace all uninstalled libtool libraries with the installed ones newdependency_libs= for deplib in $dependency_libs; do case $deplib in *.la) func_basename "$deplib" name=$func_basename_result func_resolve_sysroot "$deplib" eval libdir=`$SED -n -e 's/^libdir=\(.*\)$/\1/p' $func_resolve_sysroot_result` test -z "$libdir" && \ func_fatal_error "'$deplib' is not a valid libtool archive" func_append newdependency_libs " ${lt_sysroot:+=}$libdir/$name" ;; -L*) func_stripname -L '' "$deplib" func_replace_sysroot "$func_stripname_result" func_append newdependency_libs " -L$func_replace_sysroot_result" ;; -R*) func_stripname -R '' "$deplib" func_replace_sysroot "$func_stripname_result" func_append newdependency_libs " -R$func_replace_sysroot_result" ;; *) func_append newdependency_libs " $deplib" ;; esac done dependency_libs=$newdependency_libs newdlfiles= for lib in $dlfiles; do case $lib in *.la) func_basename "$lib" name=$func_basename_result eval libdir=`$SED -n -e 's/^libdir=\(.*\)$/\1/p' $lib` test -z "$libdir" && \ func_fatal_error "'$lib' is not a valid libtool archive" func_append newdlfiles " ${lt_sysroot:+=}$libdir/$name" ;; *) func_append newdlfiles " $lib" ;; esac done dlfiles=$newdlfiles newdlprefiles= for lib in $dlprefiles; do case $lib in *.la) # Only pass preopened files to the pseudo-archive (for # eventual linking with the app. that links it) if we # didn't already link the preopened objects directly into # the library: func_basename "$lib" name=$func_basename_result eval libdir=`$SED -n -e 's/^libdir=\(.*\)$/\1/p' $lib` test -z "$libdir" && \ func_fatal_error "'$lib' is not a valid libtool archive" func_append newdlprefiles " ${lt_sysroot:+=}$libdir/$name" ;; esac done dlprefiles=$newdlprefiles else newdlfiles= for lib in $dlfiles; do case $lib in [\\/]* | [A-Za-z]:[\\/]*) abs=$lib ;; *) abs=`pwd`"/$lib" ;; esac func_append newdlfiles " $abs" done dlfiles=$newdlfiles newdlprefiles= for lib in $dlprefiles; do case $lib in [\\/]* | [A-Za-z]:[\\/]*) abs=$lib ;; *) abs=`pwd`"/$lib" ;; esac func_append newdlprefiles " $abs" done dlprefiles=$newdlprefiles fi $RM $output # place dlname in correct position for cygwin # In fact, it would be nice if we could use this code for all target # systems that can't hard-code library paths into their executables # and that have no shared library path variable independent of PATH, # but it turns out we can't easily determine that from inspecting # libtool variables, so we have to hard-code the OSs to which it # applies here; at the moment, that means platforms that use the PE # object format with DLL files. See the long comment at the top of # tests/bindir.at for full details. tdlname=$dlname case $host,$output,$installed,$module,$dlname in *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll | *cegcc*,*lai,yes,no,*.dll) # If a -bindir argument was supplied, place the dll there. if test -n "$bindir"; then func_relative_path "$install_libdir" "$bindir" tdlname=$func_relative_path_result/$dlname else # Otherwise fall back on heuristic. tdlname=../bin/$dlname fi ;; esac $ECHO > $output "\ # $outputname - a libtool library file # Generated by $PROGRAM (GNU $PACKAGE) $VERSION # # Please DO NOT delete this file! # It is necessary for linking the library. # The name that we can dlopen(3). dlname='$tdlname' # Names of this library. library_names='$library_names' # The name of the static archive. old_library='$old_library' # Linker flags that cannot go in dependency_libs. inherited_linker_flags='$new_inherited_linker_flags' # Libraries that this one depends upon. dependency_libs='$dependency_libs' # Names of additional weak libraries provided by this library weak_library_names='$weak_libs' # Version information for $libname. current=$current age=$age revision=$revision # Is this an already installed library? installed=$installed # Should we warn about portability when linking against -modules? shouldnotlink=$module # Files to dlopen/dlpreopen dlopen='$dlfiles' dlpreopen='$dlprefiles' # Directory that this library needs to be installed in: libdir='$install_libdir'" if test no,yes = "$installed,$need_relink"; then $ECHO >> $output "\ relink_command=\"$relink_command\"" fi done } # Do a symbolic link so that the libtool archive can be found in # LD_LIBRARY_PATH before the program is installed. func_show_eval '( cd "$output_objdir" && $RM "$outputname" && $LN_S "../$outputname" "$outputname" )' 'exit $?' ;; esac exit $EXIT_SUCCESS } if test link = "$opt_mode" || test relink = "$opt_mode"; then func_mode_link ${1+"$@"} fi # func_mode_uninstall arg... func_mode_uninstall () { $debug_cmd RM=$nonopt files= rmforce=false exit_status=0 # This variable tells wrapper scripts just to set variables rather # than running their programs. libtool_install_magic=$magic for arg do case $arg in -f) func_append RM " $arg"; rmforce=: ;; -*) func_append RM " $arg" ;; *) func_append files " $arg" ;; esac done test -z "$RM" && \ func_fatal_help "you must specify an RM program" rmdirs= for file in $files; do func_dirname "$file" "" "." dir=$func_dirname_result if test . = "$dir"; then odir=$objdir else odir=$dir/$objdir fi func_basename "$file" name=$func_basename_result test uninstall = "$opt_mode" && odir=$dir # Remember odir for removal later, being careful to avoid duplicates if test clean = "$opt_mode"; then case " $rmdirs " in *" $odir "*) ;; *) func_append rmdirs " $odir" ;; esac fi # Don't error if the file doesn't exist and rm -f was used. if { test -L "$file"; } >/dev/null 2>&1 || { test -h "$file"; } >/dev/null 2>&1 || test -f "$file"; then : elif test -d "$file"; then exit_status=1 continue elif $rmforce; then continue fi rmfiles=$file case $name in *.la) # Possibly a libtool archive, so verify it. if func_lalib_p "$file"; then func_source $dir/$name # Delete the libtool libraries and symlinks. for n in $library_names; do func_append rmfiles " $odir/$n" done test -n "$old_library" && func_append rmfiles " $odir/$old_library" case $opt_mode in clean) case " $library_names " in *" $dlname "*) ;; *) test -n "$dlname" && func_append rmfiles " $odir/$dlname" ;; esac test -n "$libdir" && func_append rmfiles " $odir/$name $odir/${name}i" ;; uninstall) if test -n "$library_names"; then # Do each command in the postuninstall commands. func_execute_cmds "$postuninstall_cmds" '$rmforce || exit_status=1' fi if test -n "$old_library"; then # Do each command in the old_postuninstall commands. func_execute_cmds "$old_postuninstall_cmds" '$rmforce || exit_status=1' fi # FIXME: should reinstall the best remaining shared library. ;; esac fi ;; *.lo) # Possibly a libtool object, so verify it. if func_lalib_p "$file"; then # Read the .lo file func_source $dir/$name # Add PIC object to the list of files to remove. if test -n "$pic_object" && test none != "$pic_object"; then func_append rmfiles " $dir/$pic_object" fi # Add non-PIC object to the list of files to remove. if test -n "$non_pic_object" && test none != "$non_pic_object"; then func_append rmfiles " $dir/$non_pic_object" fi fi ;; *) if test clean = "$opt_mode"; then noexename=$name case $file in *.exe) func_stripname '' '.exe' "$file" file=$func_stripname_result func_stripname '' '.exe' "$name" noexename=$func_stripname_result # $file with .exe has already been added to rmfiles, # add $file without .exe func_append rmfiles " $file" ;; esac # Do a test to see if this is a libtool program. if func_ltwrapper_p "$file"; then if func_ltwrapper_executable_p "$file"; then func_ltwrapper_scriptname "$file" relink_command= func_source $func_ltwrapper_scriptname_result func_append rmfiles " $func_ltwrapper_scriptname_result" else relink_command= func_source $dir/$noexename fi # note $name still contains .exe if it was in $file originally # as does the version of $file that was added into $rmfiles func_append rmfiles " $odir/$name $odir/${name}S.$objext" if test yes = "$fast_install" && test -n "$relink_command"; then func_append rmfiles " $odir/lt-$name" fi if test "X$noexename" != "X$name"; then func_append rmfiles " $odir/lt-$noexename.c" fi fi fi ;; esac func_show_eval "$RM $rmfiles" 'exit_status=1' done # Try to remove the $objdir's in the directories where we deleted files for dir in $rmdirs; do if test -d "$dir"; then func_show_eval "rmdir $dir >/dev/null 2>&1" fi done exit $exit_status } if test uninstall = "$opt_mode" || test clean = "$opt_mode"; then func_mode_uninstall ${1+"$@"} fi test -z "$opt_mode" && { help=$generic_help func_fatal_help "you must specify a MODE" } test -z "$exec_cmd" && \ func_fatal_help "invalid operation mode '$opt_mode'" if test -n "$exec_cmd"; then eval exec "$exec_cmd" exit $EXIT_FAILURE fi exit $exit_status # The TAGs below are defined such that we never get into a situation # where we disable both kinds of libraries. Given conflicting # choices, we go for a static library, that is the most portable, # since we can't tell whether shared libraries were disabled because # the user asked for that or because the platform doesn't support # them. This is particularly important on AIX, because we don't # support having both static and shared libraries enabled at the same # time on that platform, so we default to a shared-only configuration. # If a disable-shared tag is given, we'll fallback to a static-only # configuration. But we'll never go from static-only to shared-only. # ### BEGIN LIBTOOL TAG CONFIG: disable-shared build_libtool_libs=no build_old_libs=yes # ### END LIBTOOL TAG CONFIG: disable-shared # ### BEGIN LIBTOOL TAG CONFIG: disable-static build_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac` # ### END LIBTOOL TAG CONFIG: disable-static # Local Variables: # mode:shell-script # sh-indentation:2 # End: giza-1.5.0/build/missing000077500000000000000000000153301477367113400151640ustar00rootroot00000000000000#! /bin/sh # Common wrapper for a few potentially missing GNU programs. scriptversion=2013-10-28.13; # UTC # Copyright (C) 1996-2014 Free Software Foundation, Inc. # Originally written by Fran,cois Pinard , 1996. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. if test $# -eq 0; then echo 1>&2 "Try '$0 --help' for more information" exit 1 fi case $1 in --is-lightweight) # Used by our autoconf macros to check whether the available missing # script is modern enough. exit 0 ;; --run) # Back-compat with the calling convention used by older automake. shift ;; -h|--h|--he|--hel|--help) echo "\ $0 [OPTION]... PROGRAM [ARGUMENT]... Run 'PROGRAM [ARGUMENT]...', returning a proper advice when this fails due to PROGRAM being missing or too old. Options: -h, --help display this help and exit -v, --version output version information and exit Supported PROGRAM values: aclocal autoconf autoheader autom4te automake makeinfo bison yacc flex lex help2man Version suffixes to PROGRAM as well as the prefixes 'gnu-', 'gnu', and 'g' are ignored when checking the name. Send bug reports to ." exit $? ;; -v|--v|--ve|--ver|--vers|--versi|--versio|--version) echo "missing $scriptversion (GNU Automake)" exit $? ;; -*) echo 1>&2 "$0: unknown '$1' option" echo 1>&2 "Try '$0 --help' for more information" exit 1 ;; esac # Run the given program, remember its exit status. "$@"; st=$? # If it succeeded, we are done. test $st -eq 0 && exit 0 # Also exit now if we it failed (or wasn't found), and '--version' was # passed; such an option is passed most likely to detect whether the # program is present and works. case $2 in --version|--help) exit $st;; esac # Exit code 63 means version mismatch. This often happens when the user # tries to use an ancient version of a tool on a file that requires a # minimum version. if test $st -eq 63; then msg="probably too old" elif test $st -eq 127; then # Program was missing. msg="missing on your system" else # Program was found and executed, but failed. Give up. exit $st fi perl_URL=http://www.perl.org/ flex_URL=http://flex.sourceforge.net/ gnu_software_URL=http://www.gnu.org/software program_details () { case $1 in aclocal|automake) echo "The '$1' program is part of the GNU Automake package:" echo "<$gnu_software_URL/automake>" echo "It also requires GNU Autoconf, GNU m4 and Perl in order to run:" echo "<$gnu_software_URL/autoconf>" echo "<$gnu_software_URL/m4/>" echo "<$perl_URL>" ;; autoconf|autom4te|autoheader) echo "The '$1' program is part of the GNU Autoconf package:" echo "<$gnu_software_URL/autoconf/>" echo "It also requires GNU m4 and Perl in order to run:" echo "<$gnu_software_URL/m4/>" echo "<$perl_URL>" ;; esac } give_advice () { # Normalize program name to check for. normalized_program=`echo "$1" | sed ' s/^gnu-//; t s/^gnu//; t s/^g//; t'` printf '%s\n' "'$1' is $msg." configure_deps="'configure.ac' or m4 files included by 'configure.ac'" case $normalized_program in autoconf*) echo "You should only need it if you modified 'configure.ac'," echo "or m4 files included by it." program_details 'autoconf' ;; autoheader*) echo "You should only need it if you modified 'acconfig.h' or" echo "$configure_deps." program_details 'autoheader' ;; automake*) echo "You should only need it if you modified 'Makefile.am' or" echo "$configure_deps." program_details 'automake' ;; aclocal*) echo "You should only need it if you modified 'acinclude.m4' or" echo "$configure_deps." program_details 'aclocal' ;; autom4te*) echo "You might have modified some maintainer files that require" echo "the 'autom4te' program to be rebuilt." program_details 'autom4te' ;; bison*|yacc*) echo "You should only need it if you modified a '.y' file." echo "You may want to install the GNU Bison package:" echo "<$gnu_software_URL/bison/>" ;; lex*|flex*) echo "You should only need it if you modified a '.l' file." echo "You may want to install the Fast Lexical Analyzer package:" echo "<$flex_URL>" ;; help2man*) echo "You should only need it if you modified a dependency" \ "of a man page." echo "You may want to install the GNU Help2man package:" echo "<$gnu_software_URL/help2man/>" ;; makeinfo*) echo "You should only need it if you modified a '.texi' file, or" echo "any other file indirectly affecting the aspect of the manual." echo "You might want to install the Texinfo package:" echo "<$gnu_software_URL/texinfo/>" echo "The spurious makeinfo call might also be the consequence of" echo "using a buggy 'make' (AIX, DU, IRIX), in which case you might" echo "want to install GNU make:" echo "<$gnu_software_URL/make/>" ;; *) echo "You might have modified some files without having the proper" echo "tools for further handling them. Check the 'README' file, it" echo "often tells you about the needed prerequisites for installing" echo "this package. You may also peek at any GNU archive site, in" echo "case some other package contains this missing '$1' program." ;; esac } give_advice "$1" | sed -e '1s/^/WARNING: /' \ -e '2,$s/^/ /' >&2 # Propagate the correct exit status (expected to be 127 for a program # not found, 63 for a program that failed due to version mismatch). exit $st # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC" # time-stamp-end: "; # UTC" # End: giza-1.5.0/build/test-driver000077500000000000000000000110401477367113400157550ustar00rootroot00000000000000#! /bin/sh # test-driver - basic testsuite driver script. scriptversion=2013-07-13.22; # UTC # Copyright (C) 2011-2014 Free Software Foundation, Inc. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # This file is maintained in Automake, please report # bugs to or send patches to # . # Make unconditional expansion of undefined variables an error. This # helps a lot in preventing typo-related bugs. set -u usage_error () { echo "$0: $*" >&2 print_usage >&2 exit 2 } print_usage () { cat <$log_file 2>&1 estatus=$? if test $enable_hard_errors = no && test $estatus -eq 99; then tweaked_estatus=1 else tweaked_estatus=$estatus fi case $tweaked_estatus:$expect_failure in 0:yes) col=$red res=XPASS recheck=yes gcopy=yes;; 0:*) col=$grn res=PASS recheck=no gcopy=no;; 77:*) col=$blu res=SKIP recheck=no gcopy=yes;; 99:*) col=$mgn res=ERROR recheck=yes gcopy=yes;; *:yes) col=$lgn res=XFAIL recheck=no gcopy=yes;; *:*) col=$red res=FAIL recheck=yes gcopy=yes;; esac # Report the test outcome and exit status in the logs, so that one can # know whether the test passed or failed simply by looking at the '.log' # file, without the need of also peaking into the corresponding '.trs' # file (automake bug#11814). echo "$res $test_name (exit status: $estatus)" >>$log_file # Report outcome to console. echo "${col}${res}${std}: $test_name" # Register the test result, and other relevant metadata. echo ":test-result: $res" > $trs_file echo ":global-test-result: $res" >> $trs_file echo ":recheck: $recheck" >> $trs_file echo ":copy-in-global-log: $gcopy" >> $trs_file # Local Variables: # mode: shell-script # sh-indentation: 2 # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC" # time-stamp-end: "; # UTC" # End: giza-1.5.0/config.h.in000066400000000000000000000033341477367113400145120ustar00rootroot00000000000000/* config.h.in. Generated from configure.ac by autoheader. */ /* Define to 1 if you have the header file. */ #undef HAVE_DLFCN_H /* Define to 1 if you have the header file. */ #undef HAVE_INTTYPES_H /* Define to 1 if you have the header file. */ #undef HAVE_STDINT_H /* Define to 1 if you have the header file. */ #undef HAVE_STDIO_H /* Define to 1 if you have the header file. */ #undef HAVE_STDLIB_H /* Define to 1 if you have the header file. */ #undef HAVE_STRINGS_H /* Define to 1 if you have the header file. */ #undef HAVE_STRING_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_STAT_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_TYPES_H /* Define to 1 if you have the header file. */ #undef HAVE_UNISTD_H /* Define to the sub-directory where libtool stores uninstalled libraries. */ #undef LT_OBJDIR /* Name of package */ #undef PACKAGE /* Define to the address where bug reports for this package should be sent. */ #undef PACKAGE_BUGREPORT /* Define to the full name of this package. */ #undef PACKAGE_NAME /* Define to the full name and version of this package. */ #undef PACKAGE_STRING /* Define to the one symbol short name of this package. */ #undef PACKAGE_TARNAME /* Define to the home page for this package. */ #undef PACKAGE_URL /* Define to the version of this package. */ #undef PACKAGE_VERSION /* Define to 1 if all of the C89 standard headers exist (not just the ones required in a freestanding environment). This macro is provided for backward compatibility; new code need not use it. */ #undef STDC_HEADERS /* Version number of package */ #undef VERSION giza-1.5.0/configure000077500000000000000000022251601477367113400144030ustar00rootroot00000000000000#! /bin/sh # Guess values for system-dependent variables and create Makefiles. # Generated by GNU Autoconf 2.72 for giza 1.5.0. # # Report bugs to . # # # Copyright (C) 1992-1996, 1998-2017, 2020-2023 Free Software Foundation, # Inc. # # # This configure script is free software; the Free Software Foundation # gives unlimited permission to copy, distribute and modify it. ## -------------------- ## ## M4sh Initialization. ## ## -------------------- ## # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh if test ${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1 then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case e in #( e) case `(set -o) 2>/dev/null` in #( *posix*) : set -o posix ;; #( *) : ;; esac ;; esac fi # Reset variables that may have inherited troublesome values from # the environment. # IFS needs to be set, to space, tab, and newline, in precisely that order. # (If _AS_PATH_WALK were called with IFS unset, it would have the # side effect of setting IFS to empty, thus disabling word splitting.) # Quoting is to prevent editors from complaining about space-tab. as_nl=' ' export as_nl IFS=" "" $as_nl" PS1='$ ' PS2='> ' PS4='+ ' # Ensure predictable behavior from utilities with locale-dependent output. LC_ALL=C export LC_ALL LANGUAGE=C export LANGUAGE # We cannot yet rely on "unset" to work, but we need these variables # to be unset--not just set to an empty or harmless value--now, to # avoid bugs in old shells (e.g. pre-3.0 UWIN ksh). This construct # also avoids known problems related to "unset" and subshell syntax # in other old shells (e.g. bash 2.01 and pdksh 5.2.14). for as_var in BASH_ENV ENV MAIL MAILPATH CDPATH do eval test \${$as_var+y} \ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : done # Ensure that fds 0, 1, and 2 are open. if (exec 3>&0) 2>/dev/null; then :; else exec 0&1) 2>/dev/null; then :; else exec 1>/dev/null; fi if (exec 3>&2) ; then :; else exec 2>/dev/null; fi # The user is always right. if ${PATH_SEPARATOR+false} :; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || PATH_SEPARATOR=';' } fi # Find who we are. Look in the path if we contain no directory separator. as_myself= case $0 in #(( *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac test -r "$as_dir$0" && as_myself=$as_dir$0 && break done IFS=$as_save_IFS ;; esac # We did not find ourselves, most probably we were run as 'sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then printf "%s\n" "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 exit 1 fi # Use a proper internal environment variable to ensure we don't fall # into an infinite loop, continuously re-executing ourselves. if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then _as_can_reexec=no; export _as_can_reexec; # We cannot yet assume a decent shell, so we have to provide a # neutralization value for shells without unset; and this also # works around shells that cannot unset nonexistent variables. # Preserve -v and -x to the replacement shell. BASH_ENV=/dev/null ENV=/dev/null (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV case $- in # (((( *v*x* | *x*v* ) as_opts=-vx ;; *v* ) as_opts=-v ;; *x* ) as_opts=-x ;; * ) as_opts= ;; esac exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} # Admittedly, this is quite paranoid, since all the known shells bail # out after a failed 'exec'. printf "%s\n" "$0: could not re-execute with $CONFIG_SHELL" >&2 exit 255 fi # We don't want this to propagate to other subprocesses. { _as_can_reexec=; unset _as_can_reexec;} if test "x$CONFIG_SHELL" = x; then as_bourne_compatible="if test \${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1 then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which # is contrary to our usage. Disable this feature. alias -g '\${1+\"\$@\"}'='\"\$@\"' setopt NO_GLOB_SUBST else case e in #( e) case \`(set -o) 2>/dev/null\` in #( *posix*) : set -o posix ;; #( *) : ;; esac ;; esac fi " as_required="as_fn_return () { (exit \$1); } as_fn_success () { as_fn_return 0; } as_fn_failure () { as_fn_return 1; } as_fn_ret_success () { return 0; } as_fn_ret_failure () { return 1; } exitcode=0 as_fn_success || { exitcode=1; echo as_fn_success failed.; } as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; } as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; } as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } if ( set x; as_fn_ret_success y && test x = \"\$1\" ) then : else case e in #( e) exitcode=1; echo positional parameters were not saved. ;; esac fi test x\$exitcode = x0 || exit 1 blah=\$(echo \$(echo blah)) test x\"\$blah\" = xblah || exit 1 test -x / || exit 1" as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" && test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1 test -n \"\${ZSH_VERSION+set}\${BASH_VERSION+set}\" || ( ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO PATH=/empty FPATH=/empty; export PATH FPATH test \"X\`printf %s \$ECHO\`\" = \"X\$ECHO\" \\ || test \"X\`print -r -- \$ECHO\`\" = \"X\$ECHO\" ) || exit 1 test \$(( 1 + 1 )) = 2 || exit 1" if (eval "$as_required") 2>/dev/null then : as_have_required=yes else case e in #( e) as_have_required=no ;; esac fi if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null then : else case e in #( e) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR as_found=false for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac as_found=: case $as_dir in #( /*) for as_base in sh bash ksh sh5; do # Try only shells that exist, to save several forks. as_shell=$as_dir$as_base if { test -f "$as_shell" || test -f "$as_shell.exe"; } && as_run=a "$as_shell" -c "$as_bourne_compatible""$as_required" 2>/dev/null then : CONFIG_SHELL=$as_shell as_have_required=yes if as_run=a "$as_shell" -c "$as_bourne_compatible""$as_suggested" 2>/dev/null then : break 2 fi fi done;; esac as_found=false done IFS=$as_save_IFS if $as_found then : else case e in #( e) if { test -f "$SHELL" || test -f "$SHELL.exe"; } && as_run=a "$SHELL" -c "$as_bourne_compatible""$as_required" 2>/dev/null then : CONFIG_SHELL=$SHELL as_have_required=yes fi ;; esac fi if test "x$CONFIG_SHELL" != x then : export CONFIG_SHELL # We cannot yet assume a decent shell, so we have to provide a # neutralization value for shells without unset; and this also # works around shells that cannot unset nonexistent variables. # Preserve -v and -x to the replacement shell. BASH_ENV=/dev/null ENV=/dev/null (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV case $- in # (((( *v*x* | *x*v* ) as_opts=-vx ;; *v* ) as_opts=-v ;; *x* ) as_opts=-x ;; * ) as_opts= ;; esac exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} # Admittedly, this is quite paranoid, since all the known shells bail # out after a failed 'exec'. printf "%s\n" "$0: could not re-execute with $CONFIG_SHELL" >&2 exit 255 fi if test x$as_have_required = xno then : printf "%s\n" "$0: This script requires a shell more modern than all" printf "%s\n" "$0: the shells that I found on your system." if test ${ZSH_VERSION+y} ; then printf "%s\n" "$0: In particular, zsh $ZSH_VERSION has bugs and should" printf "%s\n" "$0: be upgraded to zsh 4.3.4 or later." else printf "%s\n" "$0: Please tell bug-autoconf@gnu.org and $0: daniel.price@monash.edu about your system, including $0: any error possibly output before this message. Then $0: install a modern shell, or manually run the script $0: under such a shell if you do have one." fi exit 1 fi ;; esac fi fi SHELL=${CONFIG_SHELL-/bin/sh} export SHELL # Unset more variables known to interfere with behavior of common tools. CLICOLOR_FORCE= GREP_OPTIONS= unset CLICOLOR_FORCE GREP_OPTIONS ## --------------------- ## ## M4sh Shell Functions. ## ## --------------------- ## # as_fn_unset VAR # --------------- # Portably unset VAR. as_fn_unset () { { eval $1=; unset $1;} } as_unset=as_fn_unset # as_fn_set_status STATUS # ----------------------- # Set $? to STATUS, without forking. as_fn_set_status () { return $1 } # as_fn_set_status # as_fn_exit STATUS # ----------------- # Exit the shell with STATUS, even in a "trap 0" or "set -e" context. as_fn_exit () { set +e as_fn_set_status $1 exit $1 } # as_fn_exit # as_fn_mkdir_p # ------------- # Create "$as_dir" as a directory, including parents if necessary. as_fn_mkdir_p () { case $as_dir in #( -*) as_dir=./$as_dir;; esac test -d "$as_dir" || eval $as_mkdir_p || { as_dirs= while :; do case $as_dir in #( *\'*) as_qdir=`printf "%s\n" "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" as_dir=`$as_dirname -- "$as_dir" || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || printf "%s\n" X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` test -d "$as_dir" && break done test -z "$as_dirs" || eval "mkdir $as_dirs" } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" } # as_fn_mkdir_p # as_fn_executable_p FILE # ----------------------- # Test if FILE is an executable regular file. as_fn_executable_p () { test -f "$1" && test -x "$1" } # as_fn_executable_p # as_fn_append VAR VALUE # ---------------------- # Append the text in VALUE to the end of the definition contained in VAR. Take # advantage of any shell optimizations that allow amortized linear growth over # repeated appends, instead of the typical quadratic growth present in naive # implementations. if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null then : eval 'as_fn_append () { eval $1+=\$2 }' else case e in #( e) as_fn_append () { eval $1=\$$1\$2 } ;; esac fi # as_fn_append # as_fn_arith ARG... # ------------------ # Perform arithmetic evaluation on the ARGs, and store the result in the # global $as_val. Take advantage of shells that can avoid forks. The arguments # must be portable across $(()) and expr. if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null then : eval 'as_fn_arith () { as_val=$(( $* )) }' else case e in #( e) as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` } ;; esac fi # as_fn_arith # as_fn_error STATUS ERROR [LINENO LOG_FD] # ---------------------------------------- # Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are # provided, also output the error to LOG_FD, referencing LINENO. Then exit the # script with STATUS, using 1 if that was 0. as_fn_error () { as_status=$1; test $as_status -eq 0 && as_status=1 if test "$4"; then as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 fi printf "%s\n" "$as_me: error: $2" >&2 as_fn_exit $as_status } # as_fn_error if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then as_dirname=dirname else as_dirname=false fi as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || printf "%s\n" X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits as_lineno_1=$LINENO as_lineno_1a=$LINENO as_lineno_2=$LINENO as_lineno_2a=$LINENO eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" && test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || { # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-) sed -n ' p /[$]LINENO/= ' <$as_myself | sed ' t clear :clear s/[$]LINENO.*/&-/ t lineno b :lineno N :loop s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ t loop s/-\n.*// ' >$as_me.lineno && chmod +x "$as_me.lineno" || { printf "%s\n" "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } # If we had to re-execute with $CONFIG_SHELL, we're ensured to have # already done that, so ensure we don't try to do so again and fall # in an infinite loop. This has already happened in practice. _as_can_reexec=no; export _as_can_reexec # Don't try to exec as it changes $[0], causing all sort of problems # (the dirname of $[0] is not the place where we might find the # original and so on. Autoconf is especially sensitive to this). . "./$as_me.lineno" # Exit status is that of the last command. exit } # Determine whether it's possible to make 'echo' print without a newline. # These variables are no longer used directly by Autoconf, but are AC_SUBSTed # for compatibility with existing Makefiles. ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in #((((( -n*) case `echo 'xy\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. xy) ECHO_C='\c';; *) echo `echo ksh88 bug on AIX 6.1` > /dev/null ECHO_T=' ';; esac;; *) ECHO_N='-n';; esac # For backward compatibility with old third-party macros, we provide # the shell variables $as_echo and $as_echo_n. New code should use # AS_ECHO(["message"]) and AS_ECHO_N(["message"]), respectively. as_echo='printf %s\n' as_echo_n='printf %s' rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file else rm -f conf$$.dir mkdir conf$$.dir 2>/dev/null fi if (echo >conf$$.file) 2>/dev/null; then if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: # 1) On MSYS, both 'ln -s file dir' and 'ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; 'ln -s' creates a wrapper executable. # In both cases, we have to default to 'cp -pR'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -pR' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -pR' fi else as_ln_s='cp -pR' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null if mkdir -p . 2>/dev/null; then as_mkdir_p='mkdir -p "$as_dir"' else test -d ./-p && rmdir ./-p as_mkdir_p=false fi as_test_x='test -x' as_executable_p=as_fn_executable_p # Sed expression to map a string onto a valid CPP name. as_sed_cpp="y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g" as_tr_cpp="eval sed '$as_sed_cpp'" # deprecated # Sed expression to map a string onto a valid variable name. as_sed_sh="y%*+%pp%;s%[^_$as_cr_alnum]%_%g" as_tr_sh="eval sed '$as_sed_sh'" # deprecated SHELL=${CONFIG_SHELL-/bin/sh} test -n "$DJDIR" || exec 7<&0 &1 # Name of the host. # hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status, # so uname gets run too. ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` # # Initializations. # ac_default_prefix=/usr/local ac_clean_files= ac_config_libobj_dir=. LIBOBJS= cross_compiling=no subdirs= MFLAGS= MAKEFLAGS= # Identity of this package. PACKAGE_NAME='giza' PACKAGE_TARNAME='giza' PACKAGE_VERSION='1.5.0' PACKAGE_STRING='giza 1.5.0' PACKAGE_BUGREPORT='daniel.price@monash.edu' PACKAGE_URL='http://danieljprice.github.io/giza' # Factoring default headers for most tests. ac_includes_default="\ #include #ifdef HAVE_STDIO_H # include #endif #ifdef HAVE_STDLIB_H # include #endif #ifdef HAVE_STRING_H # include #endif #ifdef HAVE_INTTYPES_H # include #endif #ifdef HAVE_STDINT_H # include #endif #ifdef HAVE_STRINGS_H # include #endif #ifdef HAVE_SYS_TYPES_H # include #endif #ifdef HAVE_SYS_STAT_H # include #endif #ifdef HAVE_UNISTD_H # include #endif" ac_header_c_list= ac_subst_vars='am__EXEEXT_FALSE am__EXEEXT_TRUE LTLIBOBJS LIBOBJS FC_LIBS FC_CFLAGS FT_LIBS FT_CFLAGS X11_LIBS X11_CFLAGS CAIRO_LIBS CAIRO_CFLAGS PKG_CONFIG_LIBDIR PKG_CONFIG_PATH PKG_CONFIG LT_SYS_LIBRARY_PATH OTOOL64 OTOOL LIPO NMEDIT DSYMUTIL MANIFEST_TOOL RANLIB ac_ct_AR AR DLLTOOL OBJDUMP LN_S NM ac_ct_DUMPBIN DUMPBIN LD FGREP EGREP GREP SED host_os host_vendor host_cpu host build_os build_vendor build_cpu build LIBTOOL LT_AGE LT_REVISION LT_CURRENT GIZA_VERSION_MICRO GIZA_VERSION_MINOR GIZA_VERSION_MAJOR HAVE_FC_FALSE HAVE_FC_TRUE ac_ct_FC FCFLAGS FC am__fastdepCC_FALSE am__fastdepCC_TRUE CCDEPMODE am__nodep AMDEPBACKSLASH AMDEP_FALSE AMDEP_TRUE am__include DEPDIR OBJEXT EXEEXT ac_ct_CC CPPFLAGS LDFLAGS CFLAGS CC MAINT MAINTAINER_MODE_FALSE MAINTAINER_MODE_TRUE am__xargs_n am__rm_f_notfound AM_BACKSLASH AM_DEFAULT_VERBOSITY AM_DEFAULT_V AM_V CSCOPE ETAGS CTAGS am__untar am__tar AMTAR am__leading_dot SET_MAKE AWK mkdir_p MKDIR_P INSTALL_STRIP_PROGRAM STRIP install_sh MAKEINFO AUTOHEADER AUTOMAKE AUTOCONF ACLOCAL VERSION PACKAGE CYGPATH_W am__isrc INSTALL_DATA INSTALL_SCRIPT INSTALL_PROGRAM target_alias host_alias build_alias LIBS ECHO_T ECHO_N ECHO_C DEFS mandir localedir libdir psdir pdfdir dvidir htmldir infodir docdir oldincludedir includedir runstatedir localstatedir sharedstatedir sysconfdir datadir datarootdir libexecdir sbindir bindir program_transform_name prefix exec_prefix PACKAGE_URL PACKAGE_BUGREPORT PACKAGE_STRING PACKAGE_VERSION PACKAGE_TARNAME PACKAGE_NAME PATH_SEPARATOR SHELL am__quote' ac_subst_files='' ac_user_opts=' enable_option_checking enable_silent_rules enable_maintainer_mode enable_dependency_tracking enable_shared enable_static with_pic enable_fast_install with_aix_soname with_gnu_ld with_sysroot enable_libtool_lock ' ac_precious_vars='build_alias host_alias target_alias CC CFLAGS LDFLAGS LIBS CPPFLAGS FC FCFLAGS LT_SYS_LIBRARY_PATH PKG_CONFIG PKG_CONFIG_PATH PKG_CONFIG_LIBDIR CAIRO_CFLAGS CAIRO_LIBS X11_CFLAGS X11_LIBS FT_CFLAGS FT_LIBS FC_CFLAGS FC_LIBS' # Initialize some variables set by options. ac_init_help= ac_init_version=false ac_unrecognized_opts= ac_unrecognized_sep= # The variables have the same names as the options, with # dashes changed to underlines. cache_file=/dev/null exec_prefix=NONE no_create= no_recursion= prefix=NONE program_prefix=NONE program_suffix=NONE program_transform_name=s,x,x, silent= site= srcdir= verbose= x_includes=NONE x_libraries=NONE # Installation directory options. # These are left unexpanded so users can "make install exec_prefix=/foo" # and all the variables that are supposed to be based on exec_prefix # by default will actually change. # Use braces instead of parens because sh, perl, etc. also accept them. # (The list follows the same order as the GNU Coding Standards.) bindir='${exec_prefix}/bin' sbindir='${exec_prefix}/sbin' libexecdir='${exec_prefix}/libexec' datarootdir='${prefix}/share' datadir='${datarootdir}' sysconfdir='${prefix}/etc' sharedstatedir='${prefix}/com' localstatedir='${prefix}/var' runstatedir='${localstatedir}/run' includedir='${prefix}/include' oldincludedir='/usr/include' docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' infodir='${datarootdir}/info' htmldir='${docdir}' dvidir='${docdir}' pdfdir='${docdir}' psdir='${docdir}' libdir='${exec_prefix}/lib' localedir='${datarootdir}/locale' mandir='${datarootdir}/man' ac_prev= ac_dashdash= for ac_option do # If the previous option needs an argument, assign it. if test -n "$ac_prev"; then eval $ac_prev=\$ac_option ac_prev= continue fi case $ac_option in *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; *=) ac_optarg= ;; *) ac_optarg=yes ;; esac case $ac_dashdash$ac_option in --) ac_dashdash=yes ;; -bindir | --bindir | --bindi | --bind | --bin | --bi) ac_prev=bindir ;; -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) bindir=$ac_optarg ;; -build | --build | --buil | --bui | --bu) ac_prev=build_alias ;; -build=* | --build=* | --buil=* | --bui=* | --bu=*) build_alias=$ac_optarg ;; -cache-file | --cache-file | --cache-fil | --cache-fi \ | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) ac_prev=cache_file ;; -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) cache_file=$ac_optarg ;; --config-cache | -C) cache_file=config.cache ;; -datadir | --datadir | --datadi | --datad) ac_prev=datadir ;; -datadir=* | --datadir=* | --datadi=* | --datad=*) datadir=$ac_optarg ;; -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ | --dataroo | --dataro | --datar) ac_prev=datarootdir ;; -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) datarootdir=$ac_optarg ;; -disable-* | --disable-*) ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid feature name: '$ac_useropt'" ac_useropt_orig=$ac_useropt ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval enable_$ac_useropt=no ;; -docdir | --docdir | --docdi | --doc | --do) ac_prev=docdir ;; -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) docdir=$ac_optarg ;; -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) ac_prev=dvidir ;; -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) dvidir=$ac_optarg ;; -enable-* | --enable-*) ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid feature name: '$ac_useropt'" ac_useropt_orig=$ac_useropt ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval enable_$ac_useropt=\$ac_optarg ;; -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ | --exec | --exe | --ex) ac_prev=exec_prefix ;; -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ | --exec=* | --exe=* | --ex=*) exec_prefix=$ac_optarg ;; -gas | --gas | --ga | --g) # Obsolete; use --with-gas. with_gas=yes ;; -help | --help | --hel | --he | -h) ac_init_help=long ;; -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) ac_init_help=recursive ;; -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) ac_init_help=short ;; -host | --host | --hos | --ho) ac_prev=host_alias ;; -host=* | --host=* | --hos=* | --ho=*) host_alias=$ac_optarg ;; -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) ac_prev=htmldir ;; -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ | --ht=*) htmldir=$ac_optarg ;; -includedir | --includedir | --includedi | --included | --include \ | --includ | --inclu | --incl | --inc) ac_prev=includedir ;; -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ | --includ=* | --inclu=* | --incl=* | --inc=*) includedir=$ac_optarg ;; -infodir | --infodir | --infodi | --infod | --info | --inf) ac_prev=infodir ;; -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) infodir=$ac_optarg ;; -libdir | --libdir | --libdi | --libd) ac_prev=libdir ;; -libdir=* | --libdir=* | --libdi=* | --libd=*) libdir=$ac_optarg ;; -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ | --libexe | --libex | --libe) ac_prev=libexecdir ;; -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ | --libexe=* | --libex=* | --libe=*) libexecdir=$ac_optarg ;; -localedir | --localedir | --localedi | --localed | --locale) ac_prev=localedir ;; -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) localedir=$ac_optarg ;; -localstatedir | --localstatedir | --localstatedi | --localstated \ | --localstate | --localstat | --localsta | --localst | --locals) ac_prev=localstatedir ;; -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) localstatedir=$ac_optarg ;; -mandir | --mandir | --mandi | --mand | --man | --ma | --m) ac_prev=mandir ;; -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) mandir=$ac_optarg ;; -nfp | --nfp | --nf) # Obsolete; use --without-fp. with_fp=no ;; -no-create | --no-create | --no-creat | --no-crea | --no-cre \ | --no-cr | --no-c | -n) no_create=yes ;; -no-recursion | --no-recursion | --no-recursio | --no-recursi \ | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) no_recursion=yes ;; -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ | --oldin | --oldi | --old | --ol | --o) ac_prev=oldincludedir ;; -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) oldincludedir=$ac_optarg ;; -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) ac_prev=prefix ;; -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) prefix=$ac_optarg ;; -program-prefix | --program-prefix | --program-prefi | --program-pref \ | --program-pre | --program-pr | --program-p) ac_prev=program_prefix ;; -program-prefix=* | --program-prefix=* | --program-prefi=* \ | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) program_prefix=$ac_optarg ;; -program-suffix | --program-suffix | --program-suffi | --program-suff \ | --program-suf | --program-su | --program-s) ac_prev=program_suffix ;; -program-suffix=* | --program-suffix=* | --program-suffi=* \ | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) program_suffix=$ac_optarg ;; -program-transform-name | --program-transform-name \ | --program-transform-nam | --program-transform-na \ | --program-transform-n | --program-transform- \ | --program-transform | --program-transfor \ | --program-transfo | --program-transf \ | --program-trans | --program-tran \ | --progr-tra | --program-tr | --program-t) ac_prev=program_transform_name ;; -program-transform-name=* | --program-transform-name=* \ | --program-transform-nam=* | --program-transform-na=* \ | --program-transform-n=* | --program-transform-=* \ | --program-transform=* | --program-transfor=* \ | --program-transfo=* | --program-transf=* \ | --program-trans=* | --program-tran=* \ | --progr-tra=* | --program-tr=* | --program-t=*) program_transform_name=$ac_optarg ;; -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) ac_prev=pdfdir ;; -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) pdfdir=$ac_optarg ;; -psdir | --psdir | --psdi | --psd | --ps) ac_prev=psdir ;; -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) psdir=$ac_optarg ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) silent=yes ;; -runstatedir | --runstatedir | --runstatedi | --runstated \ | --runstate | --runstat | --runsta | --runst | --runs \ | --run | --ru | --r) ac_prev=runstatedir ;; -runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \ | --runstate=* | --runstat=* | --runsta=* | --runst=* | --runs=* \ | --run=* | --ru=* | --r=*) runstatedir=$ac_optarg ;; -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) ac_prev=sbindir ;; -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ | --sbi=* | --sb=*) sbindir=$ac_optarg ;; -sharedstatedir | --sharedstatedir | --sharedstatedi \ | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ | --sharedst | --shareds | --shared | --share | --shar \ | --sha | --sh) ac_prev=sharedstatedir ;; -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ | --sha=* | --sh=*) sharedstatedir=$ac_optarg ;; -site | --site | --sit) ac_prev=site ;; -site=* | --site=* | --sit=*) site=$ac_optarg ;; -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) ac_prev=srcdir ;; -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) srcdir=$ac_optarg ;; -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ | --syscon | --sysco | --sysc | --sys | --sy) ac_prev=sysconfdir ;; -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) sysconfdir=$ac_optarg ;; -target | --target | --targe | --targ | --tar | --ta | --t) ac_prev=target_alias ;; -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) target_alias=$ac_optarg ;; -v | -verbose | --verbose | --verbos | --verbo | --verb) verbose=yes ;; -version | --version | --versio | --versi | --vers | -V) ac_init_version=: ;; -with-* | --with-*) ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid package name: '$ac_useropt'" ac_useropt_orig=$ac_useropt ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval with_$ac_useropt=\$ac_optarg ;; -without-* | --without-*) ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid package name: '$ac_useropt'" ac_useropt_orig=$ac_useropt ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval with_$ac_useropt=no ;; --x) # Obsolete; use --with-x. with_x=yes ;; -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ | --x-incl | --x-inc | --x-in | --x-i) ac_prev=x_includes ;; -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) x_includes=$ac_optarg ;; -x-libraries | --x-libraries | --x-librarie | --x-librari \ | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) ac_prev=x_libraries ;; -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) x_libraries=$ac_optarg ;; -*) as_fn_error $? "unrecognized option: '$ac_option' Try '$0 --help' for more information" ;; *=*) ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` # Reject names that are not valid shell variable names. case $ac_envvar in #( '' | [0-9]* | *[!_$as_cr_alnum]* ) as_fn_error $? "invalid variable name: '$ac_envvar'" ;; esac eval $ac_envvar=\$ac_optarg export $ac_envvar ;; *) # FIXME: should be removed in autoconf 3.0. printf "%s\n" "$as_me: WARNING: you should use --build, --host, --target" >&2 expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && printf "%s\n" "$as_me: WARNING: invalid host type: $ac_option" >&2 : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}" ;; esac done if test -n "$ac_prev"; then ac_option=--`echo $ac_prev | sed 's/_/-/g'` as_fn_error $? "missing argument to $ac_option" fi if test -n "$ac_unrecognized_opts"; then case $enable_option_checking in no) ;; fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;; *) printf "%s\n" "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; esac fi # Check all directory arguments for consistency. for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ datadir sysconfdir sharedstatedir localstatedir includedir \ oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ libdir localedir mandir runstatedir do eval ac_val=\$$ac_var # Remove trailing slashes. case $ac_val in */ ) ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'` eval $ac_var=\$ac_val;; esac # Be sure to have absolute directory names. case $ac_val in [\\/$]* | ?:[\\/]* ) continue;; NONE | '' ) case $ac_var in *prefix ) continue;; esac;; esac as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val" done # There might be people who depend on the old broken behavior: '$host' # used to hold the argument of --host etc. # FIXME: To remove some day. build=$build_alias host=$host_alias target=$target_alias # FIXME: To remove some day. if test "x$host_alias" != x; then if test "x$build_alias" = x; then cross_compiling=maybe elif test "x$build_alias" != "x$host_alias"; then cross_compiling=yes fi fi ac_tool_prefix= test -n "$host_alias" && ac_tool_prefix=$host_alias- test "$silent" = yes && exec 6>/dev/null ac_pwd=`pwd` && test -n "$ac_pwd" && ac_ls_di=`ls -di .` && ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || as_fn_error $? "working directory cannot be determined" test "X$ac_ls_di" = "X$ac_pwd_ls_di" || as_fn_error $? "pwd does not report name of working directory" # Find the source files, if location was not specified. if test -z "$srcdir"; then ac_srcdir_defaulted=yes # Try the directory containing this script, then the parent directory. ac_confdir=`$as_dirname -- "$as_myself" || $as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_myself" : 'X\(//\)[^/]' \| \ X"$as_myself" : 'X\(//\)$' \| \ X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || printf "%s\n" X"$as_myself" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` srcdir=$ac_confdir if test ! -r "$srcdir/$ac_unique_file"; then srcdir=.. fi else ac_srcdir_defaulted=no fi if test ! -r "$srcdir/$ac_unique_file"; then test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir" fi ac_msg="sources are in $srcdir, but 'cd $srcdir' does not work" ac_abs_confdir=`( cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg" pwd)` # When building in place, set srcdir=. if test "$ac_abs_confdir" = "$ac_pwd"; then srcdir=. fi # Remove unnecessary trailing slashes from srcdir. # Double slashes in file names in object file debugging info # mess up M-x gdb in Emacs. case $srcdir in */) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; esac for ac_var in $ac_precious_vars; do eval ac_env_${ac_var}_set=\${${ac_var}+set} eval ac_env_${ac_var}_value=\$${ac_var} eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} eval ac_cv_env_${ac_var}_value=\$${ac_var} done # # Report the --help message. # if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF 'configure' configures giza 1.5.0 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... To assign environment variables (e.g., CC, CFLAGS...), specify them as VAR=VALUE. See below for descriptions of some of the useful variables. Defaults for the options are specified in brackets. Configuration: -h, --help display this help and exit --help=short display options specific to this package --help=recursive display the short help of all the included packages -V, --version display version information and exit -q, --quiet, --silent do not print 'checking ...' messages --cache-file=FILE cache test results in FILE [disabled] -C, --config-cache alias for '--cache-file=config.cache' -n, --no-create do not create output files --srcdir=DIR find the sources in DIR [configure dir or '..'] Installation directories: --prefix=PREFIX install architecture-independent files in PREFIX [$ac_default_prefix] --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX [PREFIX] By default, 'make install' will install all the files in '$ac_default_prefix/bin', '$ac_default_prefix/lib' etc. You can specify an installation prefix other than '$ac_default_prefix' using '--prefix', for instance '--prefix=\$HOME'. For better control, use the options below. Fine tuning of the installation directories: --bindir=DIR user executables [EPREFIX/bin] --sbindir=DIR system admin executables [EPREFIX/sbin] --libexecdir=DIR program executables [EPREFIX/libexec] --sysconfdir=DIR read-only single-machine data [PREFIX/etc] --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] --localstatedir=DIR modifiable single-machine data [PREFIX/var] --runstatedir=DIR modifiable per-process data [LOCALSTATEDIR/run] --libdir=DIR object code libraries [EPREFIX/lib] --includedir=DIR C header files [PREFIX/include] --oldincludedir=DIR C header files for non-gcc [/usr/include] --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] --datadir=DIR read-only architecture-independent data [DATAROOTDIR] --infodir=DIR info documentation [DATAROOTDIR/info] --localedir=DIR locale-dependent data [DATAROOTDIR/locale] --mandir=DIR man documentation [DATAROOTDIR/man] --docdir=DIR documentation root [DATAROOTDIR/doc/giza] --htmldir=DIR html documentation [DOCDIR] --dvidir=DIR dvi documentation [DOCDIR] --pdfdir=DIR pdf documentation [DOCDIR] --psdir=DIR ps documentation [DOCDIR] _ACEOF cat <<\_ACEOF Program names: --program-prefix=PREFIX prepend PREFIX to installed program names --program-suffix=SUFFIX append SUFFIX to installed program names --program-transform-name=PROGRAM run sed PROGRAM on installed program names System types: --build=BUILD configure for building on BUILD [guessed] --host=HOST cross-compile to build programs to run on HOST [BUILD] _ACEOF fi if test -n "$ac_init_help"; then case $ac_init_help in short | recursive ) echo "Configuration of giza 1.5.0:";; esac cat <<\_ACEOF Optional Features: --disable-option-checking ignore unrecognized --enable/--with options --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) --enable-FEATURE[=ARG] include FEATURE [ARG=yes] --enable-silent-rules less verbose build output (undo: "make V=1") --disable-silent-rules verbose build output (undo: "make V=0") --enable-maintainer-mode enable make rules and dependencies not useful (and sometimes confusing) to the casual installer --enable-dependency-tracking do not reject slow dependency extractors --disable-dependency-tracking speeds up one-time build --enable-shared[=PKGS] build shared libraries [default=yes] --enable-static[=PKGS] build static libraries [default=yes] --enable-fast-install[=PKGS] optimize for fast installation [default=yes] --disable-libtool-lock avoid locking (might break parallel builds) Optional Packages: --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) --with-pic[=PKGS] try to use only PIC/non-PIC objects [default=use both] --with-aix-soname=aix|svr4|both shared library versioning (aka "SONAME") variant to provide on AIX, [default=aix]. --with-gnu-ld assume the C compiler uses GNU ld [default=no] --with-sysroot[=DIR] Search for dependent libraries within DIR (or the compiler's sysroot if not specified). Some influential environment variables: CC C compiler command CFLAGS C compiler flags LDFLAGS linker flags, e.g. -L if you have libraries in a nonstandard directory LIBS libraries to pass to the linker, e.g. -l CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I if you have headers in a nonstandard directory FC Fortran compiler command FCFLAGS Fortran compiler flags LT_SYS_LIBRARY_PATH User-defined run-time library search path. PKG_CONFIG path to pkg-config utility PKG_CONFIG_PATH directories to add to pkg-config's search path PKG_CONFIG_LIBDIR path overriding pkg-config's built-in search path CAIRO_CFLAGS C compiler flags for CAIRO, overriding pkg-config CAIRO_LIBS linker flags for CAIRO, overriding pkg-config X11_CFLAGS C compiler flags for X11, overriding pkg-config X11_LIBS linker flags for X11, overriding pkg-config FT_CFLAGS C compiler flags for FT, overriding pkg-config FT_LIBS linker flags for FT, overriding pkg-config FC_CFLAGS C compiler flags for FC, overriding pkg-config FC_LIBS linker flags for FC, overriding pkg-config Use these variables to override the choices made by 'configure' or to help it to find libraries and programs with nonstandard names/locations. Report bugs to . giza home page: . _ACEOF ac_status=$? fi if test "$ac_init_help" = "recursive"; then # If there are subdirs, report their specific --help. for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue test -d "$ac_dir" || { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } || continue ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_dir_suffix=/`printf "%s\n" "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`printf "%s\n" "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; esac ;; esac ac_abs_top_builddir=$ac_pwd ac_abs_builddir=$ac_pwd$ac_dir_suffix # for backward compatibility: ac_top_builddir=$ac_top_build_prefix case $srcdir in .) # We are building in place. ac_srcdir=. ac_top_srcdir=$ac_top_builddir_sub ac_abs_top_srcdir=$ac_pwd ;; [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ac_abs_top_srcdir=$srcdir ;; *) # Relative name. ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_build_prefix$srcdir ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix cd "$ac_dir" || { ac_status=$?; continue; } # Check for configure.gnu first; this name is used for a wrapper for # Metaconfig's "Configure" on case-insensitive file systems. if test -f "$ac_srcdir/configure.gnu"; then echo && $SHELL "$ac_srcdir/configure.gnu" --help=recursive elif test -f "$ac_srcdir/configure"; then echo && $SHELL "$ac_srcdir/configure" --help=recursive else printf "%s\n" "$as_me: WARNING: no configuration information is in $ac_dir" >&2 fi || ac_status=$? cd "$ac_pwd" || { ac_status=$?; break; } done fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF giza configure 1.5.0 generated by GNU Autoconf 2.72 Copyright (C) 2023 Free Software Foundation, Inc. This configure script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it. _ACEOF exit fi ## ------------------------ ## ## Autoconf initialization. ## ## ------------------------ ## # ac_fn_c_try_compile LINENO # -------------------------- # Try to compile conftest.$ac_ext, and return whether this succeeded. ac_fn_c_try_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext conftest.beam if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext then : ac_retval=0 else case e in #( e) printf "%s\n" "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 ;; esac fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_compile # ac_fn_fc_try_compile LINENO # --------------------------- # Try to compile conftest.$ac_ext, and return whether this succeeded. ac_fn_fc_try_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext conftest.beam if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_fc_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext then : ac_retval=0 else case e in #( e) printf "%s\n" "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 ;; esac fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_fc_try_compile # ac_fn_c_try_link LINENO # ----------------------- # Try to link conftest.$ac_ext, and return whether this succeeded. ac_fn_c_try_link () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext conftest.beam conftest$ac_exeext if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_link") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || test -x conftest$ac_exeext } then : ac_retval=0 else case e in #( e) printf "%s\n" "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 ;; esac fi # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would # interfere with the next link command; also delete a directory that is # left behind by Apple's compiler. We do this before executing the actions. rm -rf conftest.dSYM conftest_ipa8_conftest.oo eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_link # ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES # ------------------------------------------------------- # Tests whether HEADER exists and can be compiled using the include files in # INCLUDES, setting the cache variable VAR accordingly. ac_fn_c_check_header_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 printf %s "checking for $2... " >&6; } if eval test \${$3+y} then : printf %s "(cached) " >&6 else case e in #( e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 #include <$2> _ACEOF if ac_fn_c_try_compile "$LINENO" then : eval "$3=yes" else case e in #( e) eval "$3=no" ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; esac fi eval ac_res=\$$3 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 printf "%s\n" "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_header_compile # ac_fn_c_check_func LINENO FUNC VAR # ---------------------------------- # Tests whether FUNC exists, setting the cache variable VAR accordingly ac_fn_c_check_func () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 printf %s "checking for $2... " >&6; } if eval test \${$3+y} then : printf %s "(cached) " >&6 else case e in #( e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Define $2 to an innocuous variant, in case declares $2. For example, HP-UX 11i declares gettimeofday. */ #define $2 innocuous_$2 /* System header to define __stub macros and hopefully few prototypes, which can conflict with char $2 (void); below. */ #include #undef $2 /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char $2 (void); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined __stub_$2 || defined __stub___$2 choke me #endif int main (void) { return $2 (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : eval "$3=yes" else case e in #( e) eval "$3=no" ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext ;; esac fi eval ac_res=\$$3 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 printf "%s\n" "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_func # ac_fn_fc_try_link LINENO # ------------------------ # Try to link conftest.$ac_ext, and return whether this succeeded. ac_fn_fc_try_link () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext conftest.beam conftest$ac_exeext if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_link") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_fc_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || test -x conftest$ac_exeext } then : ac_retval=0 else case e in #( e) printf "%s\n" "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 ;; esac fi # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would # interfere with the next link command; also delete a directory that is # left behind by Apple's compiler. We do this before executing the actions. rm -rf conftest.dSYM conftest_ipa8_conftest.oo eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_fc_try_link ac_configure_args_raw= for ac_arg do case $ac_arg in *\'*) ac_arg=`printf "%s\n" "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; esac as_fn_append ac_configure_args_raw " '$ac_arg'" done case $ac_configure_args_raw in *$as_nl*) ac_safe_unquote= ;; *) ac_unsafe_z='|&;<>()$`\\"*?[ '' ' # This string ends in space, tab. ac_unsafe_a="$ac_unsafe_z#~" ac_safe_unquote="s/ '\\([^$ac_unsafe_a][^$ac_unsafe_z]*\\)'/ \\1/g" ac_configure_args_raw=` printf "%s\n" "$ac_configure_args_raw" | sed "$ac_safe_unquote"`;; esac cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. It was created by giza $as_me 1.5.0, which was generated by GNU Autoconf 2.72. Invocation command line was $ $0$ac_configure_args_raw _ACEOF exec 5>>config.log { cat <<_ASUNAME ## --------- ## ## Platform. ## ## --------- ## hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` uname -m = `(uname -m) 2>/dev/null || echo unknown` uname -r = `(uname -r) 2>/dev/null || echo unknown` uname -s = `(uname -s) 2>/dev/null || echo unknown` uname -v = `(uname -v) 2>/dev/null || echo unknown` /usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` /bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` /bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` /usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` /bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` /bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` _ASUNAME as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac printf "%s\n" "PATH: $as_dir" done IFS=$as_save_IFS } >&5 cat >&5 <<_ACEOF ## ----------- ## ## Core tests. ## ## ----------- ## _ACEOF # Keep a trace of the command line. # Strip out --no-create and --no-recursion so they do not pile up. # Strip out --silent because we don't want to record it for future runs. # Also quote any args containing shell meta-characters. # Make two passes to allow for proper duplicate-argument suppression. ac_configure_args= ac_configure_args0= ac_configure_args1= ac_must_keep_next=false for ac_pass in 1 2 do for ac_arg do case $ac_arg in -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) continue ;; *\'*) ac_arg=`printf "%s\n" "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; esac case $ac_pass in 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;; 2) as_fn_append ac_configure_args1 " '$ac_arg'" if test $ac_must_keep_next = true; then ac_must_keep_next=false # Got value, back to normal. else case $ac_arg in *=* | --config-cache | -C | -disable-* | --disable-* \ | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ | -with-* | --with-* | -without-* | --without-* | --x) case "$ac_configure_args0 " in "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; esac ;; -* ) ac_must_keep_next=true ;; esac fi as_fn_append ac_configure_args " '$ac_arg'" ;; esac done done { ac_configure_args0=; unset ac_configure_args0;} { ac_configure_args1=; unset ac_configure_args1;} # When interrupted or exit'd, cleanup temporary files, and complete # config.log. We remove comments because anyway the quotes in there # would cause problems or look ugly. # WARNING: Use '\'' to represent an apostrophe within the trap. # WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. trap 'exit_status=$? # Sanitize IFS. IFS=" "" $as_nl" # Save into config.log some information that might help in debugging. { echo printf "%s\n" "## ---------------- ## ## Cache variables. ## ## ---------------- ##" echo # The following way of writing the cache mishandles newlines in values, ( for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do eval ac_val=\$$ac_var case $ac_val in #( *${as_nl}*) case $ac_var in #( *_cv_*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 printf "%s\n" "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( *) { eval $ac_var=; unset $ac_var;} ;; esac ;; esac done (set) 2>&1 | case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( *${as_nl}ac_space=\ *) sed -n \ "s/'\''/'\''\\\\'\'''\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" ;; #( *) sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; esac | sort ) echo printf "%s\n" "## ----------------- ## ## Output variables. ## ## ----------------- ##" echo for ac_var in $ac_subst_vars do eval ac_val=\$$ac_var case $ac_val in *\'\''*) ac_val=`printf "%s\n" "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac printf "%s\n" "$ac_var='\''$ac_val'\''" done | sort echo if test -n "$ac_subst_files"; then printf "%s\n" "## ------------------- ## ## File substitutions. ## ## ------------------- ##" echo for ac_var in $ac_subst_files do eval ac_val=\$$ac_var case $ac_val in *\'\''*) ac_val=`printf "%s\n" "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac printf "%s\n" "$ac_var='\''$ac_val'\''" done | sort echo fi if test -s confdefs.h; then printf "%s\n" "## ----------- ## ## confdefs.h. ## ## ----------- ##" echo cat confdefs.h echo fi test "$ac_signal" != 0 && printf "%s\n" "$as_me: caught signal $ac_signal" printf "%s\n" "$as_me: exit $exit_status" } >&5 rm -f core *.core core.conftest.* && rm -f -r conftest* confdefs* conf$$* $ac_clean_files && exit $exit_status ' 0 for ac_signal in 1 2 13 15; do trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal done ac_signal=0 # confdefs.h avoids OS command line length limits that DEFS can exceed. rm -f -r conftest* confdefs.h printf "%s\n" "/* confdefs.h */" > confdefs.h # Predefined preprocessor variables. printf "%s\n" "#define PACKAGE_NAME \"$PACKAGE_NAME\"" >>confdefs.h printf "%s\n" "#define PACKAGE_TARNAME \"$PACKAGE_TARNAME\"" >>confdefs.h printf "%s\n" "#define PACKAGE_VERSION \"$PACKAGE_VERSION\"" >>confdefs.h printf "%s\n" "#define PACKAGE_STRING \"$PACKAGE_STRING\"" >>confdefs.h printf "%s\n" "#define PACKAGE_BUGREPORT \"$PACKAGE_BUGREPORT\"" >>confdefs.h printf "%s\n" "#define PACKAGE_URL \"$PACKAGE_URL\"" >>confdefs.h # Let the site file select an alternate cache file if it wants to. # Prefer an explicitly selected file to automatically selected ones. if test -n "$CONFIG_SITE"; then ac_site_files="$CONFIG_SITE" elif test "x$prefix" != xNONE; then ac_site_files="$prefix/share/config.site $prefix/etc/config.site" else ac_site_files="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site" fi for ac_site_file in $ac_site_files do case $ac_site_file in #( */*) : ;; #( *) : ac_site_file=./$ac_site_file ;; esac if test -f "$ac_site_file" && test -r "$ac_site_file"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 printf "%s\n" "$as_me: loading site script $ac_site_file" >&6;} sed 's/^/| /' "$ac_site_file" >&5 . "$ac_site_file" \ || { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} as_fn_error $? "failed to load site script $ac_site_file See 'config.log' for more details" "$LINENO" 5; } fi done if test -r "$cache_file"; then # Some versions of bash will fail to source /dev/null (special files # actually), so we avoid doing that. DJGPP emulates it as a regular file. if test /dev/null != "$cache_file" && test -f "$cache_file"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 printf "%s\n" "$as_me: loading cache $cache_file" >&6;} case $cache_file in [\\/]* | ?:[\\/]* ) . "$cache_file";; *) . "./$cache_file";; esac fi else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 printf "%s\n" "$as_me: creating cache $cache_file" >&6;} >$cache_file fi # Test code for whether the C compiler supports C89 (global declarations) ac_c_conftest_c89_globals=' /* Does the compiler advertise C89 conformance? Do not test the value of __STDC__, because some compilers set it to 0 while being otherwise adequately conformant. */ #if !defined __STDC__ # error "Compiler does not advertise C89 conformance" #endif #include #include struct stat; /* Most of the following tests are stolen from RCS 5.7 src/conf.sh. */ struct buf { int x; }; struct buf * (*rcsopen) (struct buf *, struct stat *, int); static char *e (char **p, int i) { return p[i]; } static char *f (char * (*g) (char **, int), char **p, ...) { char *s; va_list v; va_start (v,p); s = g (p, va_arg (v,int)); va_end (v); return s; } /* C89 style stringification. */ #define noexpand_stringify(a) #a const char *stringified = noexpand_stringify(arbitrary+token=sequence); /* C89 style token pasting. Exercises some of the corner cases that e.g. old MSVC gets wrong, but not very hard. */ #define noexpand_concat(a,b) a##b #define expand_concat(a,b) noexpand_concat(a,b) extern int vA; extern int vbee; #define aye A #define bee B int *pvA = &expand_concat(v,aye); int *pvbee = &noexpand_concat(v,bee); /* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has function prototypes and stuff, but not \xHH hex character constants. These do not provoke an error unfortunately, instead are silently treated as an "x". The following induces an error, until -std is added to get proper ANSI mode. Curiously \x00 != x always comes out true, for an array size at least. It is necessary to write \x00 == 0 to get something that is true only with -std. */ int osf4_cc_array ['\''\x00'\'' == 0 ? 1 : -1]; /* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters inside strings and character constants. */ #define FOO(x) '\''x'\'' int xlc6_cc_array[FOO(a) == '\''x'\'' ? 1 : -1]; int test (int i, double x); struct s1 {int (*f) (int a);}; struct s2 {int (*f) (double a);}; int pairnames (int, char **, int *(*)(struct buf *, struct stat *, int), int, int);' # Test code for whether the C compiler supports C89 (body of main). ac_c_conftest_c89_main=' ok |= (argc == 0 || f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]); ' # Test code for whether the C compiler supports C99 (global declarations) ac_c_conftest_c99_globals=' /* Does the compiler advertise C99 conformance? */ #if !defined __STDC_VERSION__ || __STDC_VERSION__ < 199901L # error "Compiler does not advertise C99 conformance" #endif // See if C++-style comments work. #include extern int puts (const char *); extern int printf (const char *, ...); extern int dprintf (int, const char *, ...); extern void *malloc (size_t); extern void free (void *); // Check varargs macros. These examples are taken from C99 6.10.3.5. // dprintf is used instead of fprintf to avoid needing to declare // FILE and stderr. #define debug(...) dprintf (2, __VA_ARGS__) #define showlist(...) puts (#__VA_ARGS__) #define report(test,...) ((test) ? puts (#test) : printf (__VA_ARGS__)) static void test_varargs_macros (void) { int x = 1234; int y = 5678; debug ("Flag"); debug ("X = %d\n", x); showlist (The first, second, and third items.); report (x>y, "x is %d but y is %d", x, y); } // Check long long types. #define BIG64 18446744073709551615ull #define BIG32 4294967295ul #define BIG_OK (BIG64 / BIG32 == 4294967297ull && BIG64 % BIG32 == 0) #if !BIG_OK #error "your preprocessor is broken" #endif #if BIG_OK #else #error "your preprocessor is broken" #endif static long long int bignum = -9223372036854775807LL; static unsigned long long int ubignum = BIG64; struct incomplete_array { int datasize; double data[]; }; struct named_init { int number; const wchar_t *name; double average; }; typedef const char *ccp; static inline int test_restrict (ccp restrict text) { // Iterate through items via the restricted pointer. // Also check for declarations in for loops. for (unsigned int i = 0; *(text+i) != '\''\0'\''; ++i) continue; return 0; } // Check varargs and va_copy. static bool test_varargs (const char *format, ...) { va_list args; va_start (args, format); va_list args_copy; va_copy (args_copy, args); const char *str = ""; int number = 0; float fnumber = 0; while (*format) { switch (*format++) { case '\''s'\'': // string str = va_arg (args_copy, const char *); break; case '\''d'\'': // int number = va_arg (args_copy, int); break; case '\''f'\'': // float fnumber = va_arg (args_copy, double); break; default: break; } } va_end (args_copy); va_end (args); return *str && number && fnumber; } ' # Test code for whether the C compiler supports C99 (body of main). ac_c_conftest_c99_main=' // Check bool. _Bool success = false; success |= (argc != 0); // Check restrict. if (test_restrict ("String literal") == 0) success = true; char *restrict newvar = "Another string"; // Check varargs. success &= test_varargs ("s, d'\'' f .", "string", 65, 34.234); test_varargs_macros (); // Check flexible array members. struct incomplete_array *ia = malloc (sizeof (struct incomplete_array) + (sizeof (double) * 10)); ia->datasize = 10; for (int i = 0; i < ia->datasize; ++i) ia->data[i] = i * 1.234; // Work around memory leak warnings. free (ia); // Check named initializers. struct named_init ni = { .number = 34, .name = L"Test wide string", .average = 543.34343, }; ni.number = 58; int dynamic_array[ni.number]; dynamic_array[0] = argv[0][0]; dynamic_array[ni.number - 1] = 543; // work around unused variable warnings ok |= (!success || bignum == 0LL || ubignum == 0uLL || newvar[0] == '\''x'\'' || dynamic_array[ni.number - 1] != 543); ' # Test code for whether the C compiler supports C11 (global declarations) ac_c_conftest_c11_globals=' /* Does the compiler advertise C11 conformance? */ #if !defined __STDC_VERSION__ || __STDC_VERSION__ < 201112L # error "Compiler does not advertise C11 conformance" #endif // Check _Alignas. char _Alignas (double) aligned_as_double; char _Alignas (0) no_special_alignment; extern char aligned_as_int; char _Alignas (0) _Alignas (int) aligned_as_int; // Check _Alignof. enum { int_alignment = _Alignof (int), int_array_alignment = _Alignof (int[100]), char_alignment = _Alignof (char) }; _Static_assert (0 < -_Alignof (int), "_Alignof is signed"); // Check _Noreturn. int _Noreturn does_not_return (void) { for (;;) continue; } // Check _Static_assert. struct test_static_assert { int x; _Static_assert (sizeof (int) <= sizeof (long int), "_Static_assert does not work in struct"); long int y; }; // Check UTF-8 literals. #define u8 syntax error! char const utf8_literal[] = u8"happens to be ASCII" "another string"; // Check duplicate typedefs. typedef long *long_ptr; typedef long int *long_ptr; typedef long_ptr long_ptr; // Anonymous structures and unions -- taken from C11 6.7.2.1 Example 1. struct anonymous { union { struct { int i; int j; }; struct { int k; long int l; } w; }; int m; } v1; ' # Test code for whether the C compiler supports C11 (body of main). ac_c_conftest_c11_main=' _Static_assert ((offsetof (struct anonymous, i) == offsetof (struct anonymous, w.k)), "Anonymous union alignment botch"); v1.i = 2; v1.w.k = 5; ok |= v1.i != 5; ' # Test code for whether the C compiler supports C11 (complete). ac_c_conftest_c11_program="${ac_c_conftest_c89_globals} ${ac_c_conftest_c99_globals} ${ac_c_conftest_c11_globals} int main (int argc, char **argv) { int ok = 0; ${ac_c_conftest_c89_main} ${ac_c_conftest_c99_main} ${ac_c_conftest_c11_main} return ok; } " # Test code for whether the C compiler supports C99 (complete). ac_c_conftest_c99_program="${ac_c_conftest_c89_globals} ${ac_c_conftest_c99_globals} int main (int argc, char **argv) { int ok = 0; ${ac_c_conftest_c89_main} ${ac_c_conftest_c99_main} return ok; } " # Test code for whether the C compiler supports C89 (complete). ac_c_conftest_c89_program="${ac_c_conftest_c89_globals} int main (int argc, char **argv) { int ok = 0; ${ac_c_conftest_c89_main} return ok; } " as_fn_append ac_header_c_list " stdio.h stdio_h HAVE_STDIO_H" as_fn_append ac_header_c_list " stdlib.h stdlib_h HAVE_STDLIB_H" as_fn_append ac_header_c_list " string.h string_h HAVE_STRING_H" as_fn_append ac_header_c_list " inttypes.h inttypes_h HAVE_INTTYPES_H" as_fn_append ac_header_c_list " stdint.h stdint_h HAVE_STDINT_H" as_fn_append ac_header_c_list " strings.h strings_h HAVE_STRINGS_H" as_fn_append ac_header_c_list " sys/stat.h sys_stat_h HAVE_SYS_STAT_H" as_fn_append ac_header_c_list " sys/types.h sys_types_h HAVE_SYS_TYPES_H" as_fn_append ac_header_c_list " unistd.h unistd_h HAVE_UNISTD_H" # Auxiliary files required by this configure script. ac_aux_files="config.guess config.sub ltmain.sh compile missing install-sh" # Locations in which to look for auxiliary files. ac_aux_dir_candidates="${srcdir}/build" # Search for a directory containing all of the required auxiliary files, # $ac_aux_files, from the $PATH-style list $ac_aux_dir_candidates. # If we don't find one directory that contains all the files we need, # we report the set of missing files from the *first* directory in # $ac_aux_dir_candidates and give up. ac_missing_aux_files="" ac_first_candidate=: printf "%s\n" "$as_me:${as_lineno-$LINENO}: looking for aux files: $ac_aux_files" >&5 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR as_found=false for as_dir in $ac_aux_dir_candidates do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac as_found=: printf "%s\n" "$as_me:${as_lineno-$LINENO}: trying $as_dir" >&5 ac_aux_dir_found=yes ac_install_sh= for ac_aux in $ac_aux_files do # As a special case, if "install-sh" is required, that requirement # can be satisfied by any of "install-sh", "install.sh", or "shtool", # and $ac_install_sh is set appropriately for whichever one is found. if test x"$ac_aux" = x"install-sh" then if test -f "${as_dir}install-sh"; then printf "%s\n" "$as_me:${as_lineno-$LINENO}: ${as_dir}install-sh found" >&5 ac_install_sh="${as_dir}install-sh -c" elif test -f "${as_dir}install.sh"; then printf "%s\n" "$as_me:${as_lineno-$LINENO}: ${as_dir}install.sh found" >&5 ac_install_sh="${as_dir}install.sh -c" elif test -f "${as_dir}shtool"; then printf "%s\n" "$as_me:${as_lineno-$LINENO}: ${as_dir}shtool found" >&5 ac_install_sh="${as_dir}shtool install -c" else ac_aux_dir_found=no if $ac_first_candidate; then ac_missing_aux_files="${ac_missing_aux_files} install-sh" else break fi fi else if test -f "${as_dir}${ac_aux}"; then printf "%s\n" "$as_me:${as_lineno-$LINENO}: ${as_dir}${ac_aux} found" >&5 else ac_aux_dir_found=no if $ac_first_candidate; then ac_missing_aux_files="${ac_missing_aux_files} ${ac_aux}" else break fi fi fi done if test "$ac_aux_dir_found" = yes; then ac_aux_dir="$as_dir" break fi ac_first_candidate=false as_found=false done IFS=$as_save_IFS if $as_found then : else case e in #( e) as_fn_error $? "cannot find required auxiliary files:$ac_missing_aux_files" "$LINENO" 5 ;; esac fi # These three variables are undocumented and unsupported, # and are intended to be withdrawn in a future Autoconf release. # They can cause serious problems if a builder's source tree is in a directory # whose full name contains unusual characters. if test -f "${ac_aux_dir}config.guess"; then ac_config_guess="$SHELL ${ac_aux_dir}config.guess" fi if test -f "${ac_aux_dir}config.sub"; then ac_config_sub="$SHELL ${ac_aux_dir}config.sub" fi if test -f "$ac_aux_dir/configure"; then ac_configure="$SHELL ${ac_aux_dir}configure" fi # Check that the precious variables saved in the cache have kept the same # value. ac_cache_corrupted=false for ac_var in $ac_precious_vars; do eval ac_old_set=\$ac_cv_env_${ac_var}_set eval ac_new_set=\$ac_env_${ac_var}_set eval ac_old_val=\$ac_cv_env_${ac_var}_value eval ac_new_val=\$ac_env_${ac_var}_value case $ac_old_set,$ac_new_set in set,) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: '$ac_var' was set to '$ac_old_val' in the previous run" >&5 printf "%s\n" "$as_me: error: '$ac_var' was set to '$ac_old_val' in the previous run" >&2;} ac_cache_corrupted=: ;; ,set) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: '$ac_var' was not set in the previous run" >&5 printf "%s\n" "$as_me: error: '$ac_var' was not set in the previous run" >&2;} ac_cache_corrupted=: ;; ,);; *) if test "x$ac_old_val" != "x$ac_new_val"; then # differences in whitespace do not lead to failure. ac_old_val_w=`echo x $ac_old_val` ac_new_val_w=`echo x $ac_new_val` if test "$ac_old_val_w" != "$ac_new_val_w"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: '$ac_var' has changed since the previous run:" >&5 printf "%s\n" "$as_me: error: '$ac_var' has changed since the previous run:" >&2;} ac_cache_corrupted=: else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in '$ac_var' since the previous run:" >&5 printf "%s\n" "$as_me: warning: ignoring whitespace changes in '$ac_var' since the previous run:" >&2;} eval $ac_var=\$ac_old_val fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: former value: '$ac_old_val'" >&5 printf "%s\n" "$as_me: former value: '$ac_old_val'" >&2;} { printf "%s\n" "$as_me:${as_lineno-$LINENO}: current value: '$ac_new_val'" >&5 printf "%s\n" "$as_me: current value: '$ac_new_val'" >&2;} fi;; esac # Pass precious variables to config.status. if test "$ac_new_set" = set; then case $ac_new_val in *\'*) ac_arg=$ac_var=`printf "%s\n" "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; *) ac_arg=$ac_var=$ac_new_val ;; esac case " $ac_configure_args " in *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. *) as_fn_append ac_configure_args " '$ac_arg'" ;; esac fi done if $ac_cache_corrupted; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 printf "%s\n" "$as_me: error: changes in the environment can compromise the build" >&2;} as_fn_error $? "run '${MAKE-make} distclean' and/or 'rm $cache_file' and start over" "$LINENO" 5 fi ## -------------------- ## ## Main body of script. ## ## -------------------- ## ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu am__api_version='1.17' # Find a good install program. We prefer a C program (faster), # so one script is as good as another. But avoid the broken or # incompatible versions: # SysV /etc/install, /usr/sbin/install # SunOS /usr/etc/install # IRIX /sbin/install # AIX /bin/install # AmigaOS /C/install, which installs bootblocks on floppy discs # AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag # AFS /usr/afsws/bin/install, which mishandles nonexistent args # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" # OS/2's system install, which has a completely different semantic # ./install, which can be erroneously created by make from ./install.sh. # Reject install programs that cannot install multiple files. { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5 printf %s "checking for a BSD-compatible install... " >&6; } if test -z "$INSTALL"; then if test ${ac_cv_path_install+y} then : printf %s "(cached) " >&6 else case e in #( e) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac # Account for fact that we put trailing slashes in our PATH walk. case $as_dir in #(( ./ | /[cC]/* | \ /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \ /usr/ucb/* ) ;; *) # OSF1 and SCO ODT 3.0 have their own names for install. # Don't use installbsd from OSF since it installs stuff as root # by default. for ac_prog in ginstall scoinst install; do for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_prog$ac_exec_ext"; then if test $ac_prog = install && grep dspmsg "$as_dir$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # AIX install. It has an incompatible calling convention. : elif test $ac_prog = install && grep pwplus "$as_dir$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # program-specific install script used by HP pwplus--don't use. : else rm -rf conftest.one conftest.two conftest.dir echo one > conftest.one echo two > conftest.two mkdir conftest.dir if "$as_dir$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir/" && test -s conftest.one && test -s conftest.two && test -s conftest.dir/conftest.one && test -s conftest.dir/conftest.two then ac_cv_path_install="$as_dir$ac_prog$ac_exec_ext -c" break 3 fi fi fi done done ;; esac done IFS=$as_save_IFS rm -rf conftest.one conftest.two conftest.dir ;; esac fi if test ${ac_cv_path_install+y}; then INSTALL=$ac_cv_path_install else # As a last resort, use the slow shell script. Don't cache a # value for INSTALL within a source directory, because that will # break other packages using the cache if that directory is # removed, or if the value is a relative name. INSTALL=$ac_install_sh fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5 printf "%s\n" "$INSTALL" >&6; } # Use test -z because SunOS4 sh mishandles braces in ${var-val}. # It thinks the first close brace ends the variable substitution. test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether sleep supports fractional seconds" >&5 printf %s "checking whether sleep supports fractional seconds... " >&6; } if test ${am_cv_sleep_fractional_seconds+y} then : printf %s "(cached) " >&6 else case e in #( e) if sleep 0.001 2>/dev/null then : am_cv_sleep_fractional_seconds=yes else case e in #( e) am_cv_sleep_fractional_seconds=no ;; esac fi ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_sleep_fractional_seconds" >&5 printf "%s\n" "$am_cv_sleep_fractional_seconds" >&6; } { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking filesystem timestamp resolution" >&5 printf %s "checking filesystem timestamp resolution... " >&6; } if test ${am_cv_filesystem_timestamp_resolution+y} then : printf %s "(cached) " >&6 else case e in #( e) # Default to the worst case. am_cv_filesystem_timestamp_resolution=2 # Only try to go finer than 1 sec if sleep can do it. # Don't try 1 sec, because if 0.01 sec and 0.1 sec don't work, # - 1 sec is not much of a win compared to 2 sec, and # - it takes 2 seconds to perform the test whether 1 sec works. # # Instead, just use the default 2s on platforms that have 1s resolution, # accept the extra 1s delay when using $sleep in the Automake tests, in # exchange for not incurring the 2s delay for running the test for all # packages. # am_try_resolutions= if test "$am_cv_sleep_fractional_seconds" = yes; then # Even a millisecond often causes a bunch of false positives, # so just try a hundredth of a second. The time saved between .001 and # .01 is not terribly consequential. am_try_resolutions="0.01 0.1 $am_try_resolutions" fi # In order to catch current-generation FAT out, we must *modify* files # that already exist; the *creation* timestamp is finer. Use names # that make ls -t sort them differently when they have equal # timestamps than when they have distinct timestamps, keeping # in mind that ls -t prints the *newest* file first. rm -f conftest.ts? : > conftest.ts1 : > conftest.ts2 : > conftest.ts3 # Make sure ls -t actually works. Do 'set' in a subshell so we don't # clobber the current shell's arguments. (Outer-level square brackets # are removed by m4; they're present so that m4 does not expand # ; be careful, easy to get confused.) if ( set X `ls -t conftest.ts[12]` && { test "$*" != "X conftest.ts1 conftest.ts2" || test "$*" != "X conftest.ts2 conftest.ts1"; } ); then :; else # If neither matched, then we have a broken ls. This can happen # if, for instance, CONFIG_SHELL is bash and it inherits a # broken ls alias from the environment. This has actually # happened. Such a system could not be considered "sane". printf "%s\n" ""Bad output from ls -t: \"`ls -t conftest.ts[12]`\""" >&5 { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} as_fn_error $? "ls -t produces unexpected output. Make sure there is not a broken ls alias in your environment. See 'config.log' for more details" "$LINENO" 5; } fi for am_try_res in $am_try_resolutions; do # Any one fine-grained sleep might happen to cross the boundary # between two values of a coarser actual resolution, but if we do # two fine-grained sleeps in a row, at least one of them will fall # entirely within a coarse interval. echo alpha > conftest.ts1 sleep $am_try_res echo beta > conftest.ts2 sleep $am_try_res echo gamma > conftest.ts3 # We assume that 'ls -t' will make use of high-resolution # timestamps if the operating system supports them at all. if (set X `ls -t conftest.ts?` && test "$2" = conftest.ts3 && test "$3" = conftest.ts2 && test "$4" = conftest.ts1); then # # Ok, ls -t worked. If we're at a resolution of 1 second, we're done, # because we don't need to test make. make_ok=true if test $am_try_res != 1; then # But if we've succeeded so far with a subsecond resolution, we # have one more thing to check: make. It can happen that # everything else supports the subsecond mtimes, but make doesn't; # notably on macOS, which ships make 3.81 from 2006 (the last one # released under GPLv2). https://bugs.gnu.org/68808 # # We test $MAKE if it is defined in the environment, else "make". # It might get overridden later, but our hope is that in practice # it does not matter: it is the system "make" which is (by far) # the most likely to be broken, whereas if the user overrides it, # probably they did so with a better, or at least not worse, make. # https://lists.gnu.org/archive/html/automake/2024-06/msg00051.html # # Create a Makefile (real tab character here): rm -f conftest.mk echo 'conftest.ts1: conftest.ts2' >conftest.mk echo ' touch conftest.ts2' >>conftest.mk # # Now, running # touch conftest.ts1; touch conftest.ts2; make # should touch ts1 because ts2 is newer. This could happen by luck, # but most often, it will fail if make's support is insufficient. So # test for several consecutive successes. # # (We reuse conftest.ts[12] because we still want to modify existing # files, not create new ones, per above.) n=0 make=${MAKE-make} until test $n -eq 3; do echo one > conftest.ts1 sleep $am_try_res echo two > conftest.ts2 # ts2 should now be newer than ts1 if $make -f conftest.mk | grep 'up to date' >/dev/null; then make_ok=false break # out of $n loop fi n=`expr $n + 1` done fi # if $make_ok; then # Everything we know to check worked out, so call this resolution good. am_cv_filesystem_timestamp_resolution=$am_try_res break # out of $am_try_res loop fi # Otherwise, we'll go on to check the next resolution. fi done rm -f conftest.ts? # (end _am_filesystem_timestamp_resolution) ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_filesystem_timestamp_resolution" >&5 printf "%s\n" "$am_cv_filesystem_timestamp_resolution" >&6; } # This check should not be cached, as it may vary across builds of # different projects. { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5 printf %s "checking whether build environment is sane... " >&6; } # Reject unsafe characters in $srcdir or the absolute working directory # name. Accept space and tab only in the latter. am_lf=' ' case `pwd` in *[\\\"\#\$\&\'\`$am_lf]*) as_fn_error $? "unsafe absolute working directory name" "$LINENO" 5;; esac case $srcdir in *[\\\"\#\$\&\'\`$am_lf\ \ ]*) as_fn_error $? "unsafe srcdir value: '$srcdir'" "$LINENO" 5;; esac # Do 'set' in a subshell so we don't clobber the current shell's # arguments. Must try -L first in case configure is actually a # symlink; some systems play weird games with the mod time of symlinks # (eg FreeBSD returns the mod time of the symlink's containing # directory). am_build_env_is_sane=no am_has_slept=no rm -f conftest.file for am_try in 1 2; do echo "timestamp, slept: $am_has_slept" > conftest.file if ( set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` if test "$*" = "X"; then # -L didn't work. set X `ls -t "$srcdir/configure" conftest.file` fi test "$2" = conftest.file ); then am_build_env_is_sane=yes break fi # Just in case. sleep "$am_cv_filesystem_timestamp_resolution" am_has_slept=yes done { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_build_env_is_sane" >&5 printf "%s\n" "$am_build_env_is_sane" >&6; } if test "$am_build_env_is_sane" = no; then as_fn_error $? "newly created file is older than distributed files! Check your system clock" "$LINENO" 5 fi # If we didn't sleep, we still need to ensure time stamps of config.status and # generated files are strictly newer. am_sleep_pid= if test -e conftest.file || grep 'slept: no' conftest.file >/dev/null 2>&1 then : else case e in #( e) ( sleep "$am_cv_filesystem_timestamp_resolution" ) & am_sleep_pid=$! ;; esac fi rm -f conftest.file test "$program_prefix" != NONE && program_transform_name="s&^&$program_prefix&;$program_transform_name" # Use a double $ so make ignores it. test "$program_suffix" != NONE && program_transform_name="s&\$&$program_suffix&;$program_transform_name" # Double any \ or $. # By default was 's,x,x', remove it if useless. ac_script='s/[\\$]/&&/g;s/;s,x,x,$//' program_transform_name=`printf "%s\n" "$program_transform_name" | sed "$ac_script"` # Expand $ac_aux_dir to an absolute path. am_aux_dir=`cd "$ac_aux_dir" && pwd` if test x"${MISSING+set}" != xset; then MISSING="\${SHELL} '$am_aux_dir/missing'" fi # Use eval to expand $SHELL if eval "$MISSING --is-lightweight"; then am_missing_run="$MISSING " else am_missing_run= { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: 'missing' script is too old or missing" >&5 printf "%s\n" "$as_me: WARNING: 'missing' script is too old or missing" >&2;} fi if test x"${install_sh+set}" != xset; then case $am_aux_dir in *\ * | *\ *) install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; *) install_sh="\${SHELL} $am_aux_dir/install-sh" esac fi # Installed binaries are usually stripped using 'strip' when the user # run "make install-strip". However 'strip' might not be the right # tool to use in cross-compilation environments, therefore Automake # will honor the 'STRIP' environment variable to overrule this program. if test "$cross_compiling" != no; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. set dummy ${ac_tool_prefix}strip; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_STRIP+y} then : printf %s "(cached) " >&6 else case e in #( e) if test -n "$STRIP"; then ac_cv_prog_STRIP="$STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_STRIP="${ac_tool_prefix}strip" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi ;; esac fi STRIP=$ac_cv_prog_STRIP if test -n "$STRIP"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 printf "%s\n" "$STRIP" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$ac_cv_prog_STRIP"; then ac_ct_STRIP=$STRIP # Extract the first word of "strip", so it can be a program name with args. set dummy strip; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_STRIP+y} then : printf %s "(cached) " >&6 else case e in #( e) if test -n "$ac_ct_STRIP"; then ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_STRIP="strip" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi ;; esac fi ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP if test -n "$ac_ct_STRIP"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 printf "%s\n" "$ac_ct_STRIP" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$ac_ct_STRIP" = x; then STRIP=":" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac STRIP=$ac_ct_STRIP fi else STRIP="$ac_cv_prog_STRIP" fi fi INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for a race-free mkdir -p" >&5 printf %s "checking for a race-free mkdir -p... " >&6; } if test -z "$MKDIR_P"; then if test ${ac_cv_path_mkdir+y} then : printf %s "(cached) " >&6 else case e in #( e) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_prog in mkdir gmkdir; do for ac_exec_ext in '' $ac_executable_extensions; do as_fn_executable_p "$as_dir$ac_prog$ac_exec_ext" || continue case `"$as_dir$ac_prog$ac_exec_ext" --version 2>&1` in #( 'mkdir ('*'coreutils) '* | \ *'BusyBox '* | \ 'mkdir (fileutils) '4.1*) ac_cv_path_mkdir=$as_dir$ac_prog$ac_exec_ext break 3;; esac done done done IFS=$as_save_IFS ;; esac fi test -d ./--version && rmdir ./--version if test ${ac_cv_path_mkdir+y}; then MKDIR_P="$ac_cv_path_mkdir -p" else # As a last resort, use plain mkdir -p, # in the hope it doesn't have the bugs of ancient mkdir. MKDIR_P='mkdir -p' fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5 printf "%s\n" "$MKDIR_P" >&6; } for ac_prog in gawk mawk nawk awk do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_AWK+y} then : printf %s "(cached) " >&6 else case e in #( e) if test -n "$AWK"; then ac_cv_prog_AWK="$AWK" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_AWK="$ac_prog" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi ;; esac fi AWK=$ac_cv_prog_AWK if test -n "$AWK"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5 printf "%s\n" "$AWK" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi test -n "$AWK" && break done { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5 printf %s "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; } set x ${MAKE-make} ac_make=`printf "%s\n" "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` if eval test \${ac_cv_prog_make_${ac_make}_set+y} then : printf %s "(cached) " >&6 else case e in #( e) cat >conftest.make <<\_ACEOF SHELL = /bin/sh all: @echo '@@@%%%=$(MAKE)=@@@%%%' _ACEOF # GNU make sometimes prints "make[1]: Entering ...", which would confuse us. case `${MAKE-make} -f conftest.make 2>/dev/null` in *@@@%%%=?*=@@@%%%*) eval ac_cv_prog_make_${ac_make}_set=yes;; *) eval ac_cv_prog_make_${ac_make}_set=no;; esac rm -f conftest.make ;; esac fi if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } SET_MAKE= else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } SET_MAKE="MAKE=${MAKE-make}" fi rm -rf .tst 2>/dev/null mkdir .tst 2>/dev/null if test -d .tst; then am__leading_dot=. else am__leading_dot=_ fi rmdir .tst 2>/dev/null AM_DEFAULT_VERBOSITY=1 # Check whether --enable-silent-rules was given. if test ${enable_silent_rules+y} then : enableval=$enable_silent_rules; fi am_make=${MAKE-make} { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $am_make supports nested variables" >&5 printf %s "checking whether $am_make supports nested variables... " >&6; } if test ${am_cv_make_support_nested_variables+y} then : printf %s "(cached) " >&6 else case e in #( e) if printf "%s\n" 'TRUE=$(BAR$(V)) BAR0=false BAR1=true V=1 am__doit: @$(TRUE) .PHONY: am__doit' | $am_make -f - >/dev/null 2>&1; then am_cv_make_support_nested_variables=yes else am_cv_make_support_nested_variables=no fi ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_make_support_nested_variables" >&5 printf "%s\n" "$am_cv_make_support_nested_variables" >&6; } AM_BACKSLASH='\' am__rm_f_notfound= if (rm -f && rm -fr && rm -rf) 2>/dev/null then : else case e in #( e) am__rm_f_notfound='""' ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking xargs -n works" >&5 printf %s "checking xargs -n works... " >&6; } if test ${am_cv_xargs_n_works+y} then : printf %s "(cached) " >&6 else case e in #( e) if test "`echo 1 2 3 | xargs -n2 echo`" = "1 2 3" then : am_cv_xargs_n_works=yes else case e in #( e) am_cv_xargs_n_works=no ;; esac fi ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_xargs_n_works" >&5 printf "%s\n" "$am_cv_xargs_n_works" >&6; } if test "$am_cv_xargs_n_works" = yes then : am__xargs_n='xargs -n' else case e in #( e) am__xargs_n='am__xargs_n () { shift; sed "s/ /\\n/g" | while read am__xargs_n_arg; do "" "$am__xargs_n_arg"; done; }' ;; esac fi if test "`cd $srcdir && pwd`" != "`pwd`"; then # Use -I$(srcdir) only when $(srcdir) != ., so that make's output # is not polluted with repeated "-I." am__isrc=' -I$(srcdir)' # test to see if srcdir already configured if test -f $srcdir/config.status; then as_fn_error $? "source directory already configured; run \"make distclean\" there first" "$LINENO" 5 fi fi # test whether we have cygpath if test -z "$CYGPATH_W"; then if (cygpath --version) >/dev/null 2>/dev/null; then CYGPATH_W='cygpath -w' else CYGPATH_W=echo fi fi # Define the identity of the package. PACKAGE='giza' VERSION='1.5.0' printf "%s\n" "#define PACKAGE \"$PACKAGE\"" >>confdefs.h printf "%s\n" "#define VERSION \"$VERSION\"" >>confdefs.h # Some tools Automake needs. ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"} AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"} AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"} AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"} MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"} # For better backward compatibility. To be removed once Automake 1.9.x # dies out for good. For more background, see: # # mkdir_p='$(MKDIR_P)' # We need awk for the "check" target (and possibly the TAP driver). The # system "awk" is bad on some platforms. # Always define AMTAR for backward compatibility. Yes, it's still used # in the wild :-( We should find a proper way to deprecate it ... AMTAR='$${TAR-tar}' # We'll loop over all known methods to create a tar archive until one works. _am_tools='gnutar pax cpio none' am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -' # Variables for tags utilities; see am/tags.am if test -z "$CTAGS"; then CTAGS=ctags fi if test -z "$ETAGS"; then ETAGS=etags fi if test -z "$CSCOPE"; then CSCOPE=cscope fi AM_DEFAULT_VERBOSITY=0 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to enable maintainer-specific portions of Makefiles" >&5 printf %s "checking whether to enable maintainer-specific portions of Makefiles... " >&6; } # Check whether --enable-maintainer-mode was given. if test ${enable_maintainer_mode+y} then : enableval=$enable_maintainer_mode; USE_MAINTAINER_MODE=$enableval else case e in #( e) USE_MAINTAINER_MODE=no ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $USE_MAINTAINER_MODE" >&5 printf "%s\n" "$USE_MAINTAINER_MODE" >&6; } if test $USE_MAINTAINER_MODE = yes; then MAINTAINER_MODE_TRUE= MAINTAINER_MODE_FALSE='#' else MAINTAINER_MODE_TRUE='#' MAINTAINER_MODE_FALSE= fi MAINT=$MAINTAINER_MODE_TRUE ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. set dummy ${ac_tool_prefix}gcc; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_CC+y} then : printf %s "(cached) " >&6 else case e in #( e) if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}gcc" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi ;; esac fi CC=$ac_cv_prog_CC if test -n "$CC"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 printf "%s\n" "$CC" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$ac_cv_prog_CC"; then ac_ct_CC=$CC # Extract the first word of "gcc", so it can be a program name with args. set dummy gcc; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_CC+y} then : printf %s "(cached) " >&6 else case e in #( e) if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="gcc" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi ;; esac fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 printf "%s\n" "$ac_ct_CC" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi else CC="$ac_cv_prog_CC" fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. set dummy ${ac_tool_prefix}cc; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_CC+y} then : printf %s "(cached) " >&6 else case e in #( e) if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}cc" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi ;; esac fi CC=$ac_cv_prog_CC if test -n "$CC"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 printf "%s\n" "$CC" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi fi if test -z "$CC"; then # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_CC+y} then : printf %s "(cached) " >&6 else case e in #( e) if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else ac_prog_rejected=no as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then if test "$as_dir$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then ac_prog_rejected=yes continue fi ac_cv_prog_CC="cc" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS if test $ac_prog_rejected = yes; then # We found a bogon in the path, so make sure we never use it. set dummy $ac_cv_prog_CC shift if test $# != 0; then # We chose a different compiler from the bogus one. # However, it has the same basename, so the bogon will be chosen # first if we set CC to just the basename; use the full file name. shift ac_cv_prog_CC="$as_dir$ac_word${1+' '}$@" fi fi fi ;; esac fi CC=$ac_cv_prog_CC if test -n "$CC"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 printf "%s\n" "$CC" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then for ac_prog in cl.exe do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_CC+y} then : printf %s "(cached) " >&6 else case e in #( e) if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_CC="$ac_tool_prefix$ac_prog" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi ;; esac fi CC=$ac_cv_prog_CC if test -n "$CC"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 printf "%s\n" "$CC" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi test -n "$CC" && break done fi if test -z "$CC"; then ac_ct_CC=$CC for ac_prog in cl.exe do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_CC+y} then : printf %s "(cached) " >&6 else case e in #( e) if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="$ac_prog" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi ;; esac fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 printf "%s\n" "$ac_ct_CC" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi test -n "$ac_ct_CC" && break done if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi fi fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}clang", so it can be a program name with args. set dummy ${ac_tool_prefix}clang; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_CC+y} then : printf %s "(cached) " >&6 else case e in #( e) if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}clang" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi ;; esac fi CC=$ac_cv_prog_CC if test -n "$CC"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 printf "%s\n" "$CC" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$ac_cv_prog_CC"; then ac_ct_CC=$CC # Extract the first word of "clang", so it can be a program name with args. set dummy clang; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_CC+y} then : printf %s "(cached) " >&6 else case e in #( e) if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="clang" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi ;; esac fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 printf "%s\n" "$ac_ct_CC" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi else CC="$ac_cv_prog_CC" fi fi test -z "$CC" && { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} as_fn_error $? "no acceptable C compiler found in \$PATH See 'config.log' for more details" "$LINENO" 5; } # Provide some information about the compiler. printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 set X $ac_compile ac_compiler=$2 for ac_option in --version -v -V -qversion -version; do { { ac_try="$ac_compiler $ac_option >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_compiler $ac_option >&5") 2>conftest.err ac_status=$? if test -s conftest.err; then sed '10a\ ... rest of stderr output deleted ... 10q' conftest.err >conftest.er1 cat conftest.er1 >&5 fi rm -f conftest.er1 conftest.err printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } done cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out" # Try to create an executable without -o first, disregard a.out. # It will help us diagnose broken compilers, and finding out an intuition # of exeext. { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5 printf %s "checking whether the C compiler works... " >&6; } ac_link_default=`printf "%s\n" "$ac_link" | sed 's/ -o *conftest[^ ]*//'` # The possible output files: ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*" ac_rmfiles= for ac_file in $ac_files do case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; * ) ac_rmfiles="$ac_rmfiles $ac_file";; esac done rm -f $ac_rmfiles if { { ac_try="$ac_link_default" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_link_default") 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } then : # Autoconf-2.13 could set the ac_cv_exeext variable to 'no'. # So ignore a value of 'no', otherwise this would lead to 'EXEEXT = no' # in a Makefile. We should not override ac_cv_exeext if it was cached, # so that the user can short-circuit this test for compilers unknown to # Autoconf. for ac_file in $ac_files '' do test -f "$ac_file" || continue case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; [ab].out ) # We found the default executable, but exeext='' is most # certainly right. break;; *.* ) if test ${ac_cv_exeext+y} && test "$ac_cv_exeext" != no; then :; else ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` fi # We set ac_cv_exeext here because the later test for it is not # safe: cross compilers may not add the suffix if given an '-o' # argument, so we may need to know it at that point already. # Even if this section looks crufty: it has the advantage of # actually working. break;; * ) break;; esac done test "$ac_cv_exeext" = no && ac_cv_exeext= else case e in #( e) ac_file='' ;; esac fi if test -z "$ac_file" then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } printf "%s\n" "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} as_fn_error 77 "C compiler cannot create executables See 'config.log' for more details" "$LINENO" 5; } else case e in #( e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5 printf %s "checking for C compiler default output file name... " >&6; } { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5 printf "%s\n" "$ac_file" >&6; } ac_exeext=$ac_cv_exeext rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out ac_clean_files=$ac_clean_files_save { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5 printf %s "checking for suffix of executables... " >&6; } if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } then : # If both 'conftest.exe' and 'conftest' are 'present' (well, observable) # catch 'conftest.exe'. For instance with Cygwin, 'ls conftest' will # work properly (i.e., refer to 'conftest.exe'), while it won't with # 'rm'. for ac_file in conftest.exe conftest conftest.*; do test -f "$ac_file" || continue case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` break;; * ) break;; esac done else case e in #( e) { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} as_fn_error $? "cannot compute suffix of executables: cannot compile and link See 'config.log' for more details" "$LINENO" 5; } ;; esac fi rm -f conftest conftest$ac_cv_exeext { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 printf "%s\n" "$ac_cv_exeext" >&6; } rm -f conftest.$ac_ext EXEEXT=$ac_cv_exeext ac_exeext=$EXEEXT cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main (void) { FILE *f = fopen ("conftest.out", "w"); if (!f) return 1; return ferror (f) || fclose (f) != 0; ; return 0; } _ACEOF ac_clean_files="$ac_clean_files conftest.out" # Check that the compiler produces executables we can run. If not, either # the compiler is broken, or we cross compile. { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 printf %s "checking whether we are cross compiling... " >&6; } if test "$cross_compiling" != yes; then { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } if { ac_try='./conftest$ac_cv_exeext' { { case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_try") 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; }; then cross_compiling=no else if test "$cross_compiling" = maybe; then cross_compiling=yes else { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} as_fn_error 77 "cannot run C compiled programs. If you meant to cross compile, use '--host'. See 'config.log' for more details" "$LINENO" 5; } fi fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5 printf "%s\n" "$cross_compiling" >&6; } rm -f conftest.$ac_ext conftest$ac_cv_exeext \ conftest.o conftest.obj conftest.out ac_clean_files=$ac_clean_files_save { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 printf %s "checking for suffix of object files... " >&6; } if test ${ac_cv_objext+y} then : printf %s "(cached) " >&6 else case e in #( e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF rm -f conftest.o conftest.obj if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } then : for ac_file in conftest.o conftest.obj conftest.*; do test -f "$ac_file" || continue; case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;; *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` break;; esac done else case e in #( e) printf "%s\n" "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} as_fn_error $? "cannot compute suffix of object files: cannot compile See 'config.log' for more details" "$LINENO" 5; } ;; esac fi rm -f conftest.$ac_cv_objext conftest.$ac_ext ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 printf "%s\n" "$ac_cv_objext" >&6; } OBJEXT=$ac_cv_objext ac_objext=$OBJEXT { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the compiler supports GNU C" >&5 printf %s "checking whether the compiler supports GNU C... " >&6; } if test ${ac_cv_c_compiler_gnu+y} then : printf %s "(cached) " >&6 else case e in #( e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { #ifndef __GNUC__ choke me #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : ac_compiler_gnu=yes else case e in #( e) ac_compiler_gnu=no ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ac_cv_c_compiler_gnu=$ac_compiler_gnu ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 printf "%s\n" "$ac_cv_c_compiler_gnu" >&6; } ac_compiler_gnu=$ac_cv_c_compiler_gnu if test $ac_compiler_gnu = yes; then GCC=yes else GCC= fi ac_test_CFLAGS=${CFLAGS+y} ac_save_CFLAGS=$CFLAGS { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 printf %s "checking whether $CC accepts -g... " >&6; } if test ${ac_cv_prog_cc_g+y} then : printf %s "(cached) " >&6 else case e in #( e) ac_save_c_werror_flag=$ac_c_werror_flag ac_c_werror_flag=yes ac_cv_prog_cc_g=no CFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : ac_cv_prog_cc_g=yes else case e in #( e) CFLAGS="" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : else case e in #( e) ac_c_werror_flag=$ac_save_c_werror_flag CFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : ac_cv_prog_cc_g=yes fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ac_c_werror_flag=$ac_save_c_werror_flag ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 printf "%s\n" "$ac_cv_prog_cc_g" >&6; } if test $ac_test_CFLAGS; then CFLAGS=$ac_save_CFLAGS elif test $ac_cv_prog_cc_g = yes; then if test "$GCC" = yes; then CFLAGS="-g -O2" else CFLAGS="-g" fi else if test "$GCC" = yes; then CFLAGS="-O2" else CFLAGS= fi fi ac_prog_cc_stdc=no if test x$ac_prog_cc_stdc = xno then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C11 features" >&5 printf %s "checking for $CC option to enable C11 features... " >&6; } if test ${ac_cv_prog_cc_c11+y} then : printf %s "(cached) " >&6 else case e in #( e) ac_cv_prog_cc_c11=no ac_save_CC=$CC cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $ac_c_conftest_c11_program _ACEOF for ac_arg in '' -std=gnu11 do CC="$ac_save_CC $ac_arg" if ac_fn_c_try_compile "$LINENO" then : ac_cv_prog_cc_c11=$ac_arg fi rm -f core conftest.err conftest.$ac_objext conftest.beam test "x$ac_cv_prog_cc_c11" != "xno" && break done rm -f conftest.$ac_ext CC=$ac_save_CC ;; esac fi if test "x$ac_cv_prog_cc_c11" = xno then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 printf "%s\n" "unsupported" >&6; } else case e in #( e) if test "x$ac_cv_prog_cc_c11" = x then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 printf "%s\n" "none needed" >&6; } else case e in #( e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c11" >&5 printf "%s\n" "$ac_cv_prog_cc_c11" >&6; } CC="$CC $ac_cv_prog_cc_c11" ;; esac fi ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c11 ac_prog_cc_stdc=c11 ;; esac fi fi if test x$ac_prog_cc_stdc = xno then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C99 features" >&5 printf %s "checking for $CC option to enable C99 features... " >&6; } if test ${ac_cv_prog_cc_c99+y} then : printf %s "(cached) " >&6 else case e in #( e) ac_cv_prog_cc_c99=no ac_save_CC=$CC cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $ac_c_conftest_c99_program _ACEOF for ac_arg in '' -std=gnu99 -std=c99 -c99 -qlanglvl=extc1x -qlanglvl=extc99 -AC99 -D_STDC_C99= do CC="$ac_save_CC $ac_arg" if ac_fn_c_try_compile "$LINENO" then : ac_cv_prog_cc_c99=$ac_arg fi rm -f core conftest.err conftest.$ac_objext conftest.beam test "x$ac_cv_prog_cc_c99" != "xno" && break done rm -f conftest.$ac_ext CC=$ac_save_CC ;; esac fi if test "x$ac_cv_prog_cc_c99" = xno then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 printf "%s\n" "unsupported" >&6; } else case e in #( e) if test "x$ac_cv_prog_cc_c99" = x then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 printf "%s\n" "none needed" >&6; } else case e in #( e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c99" >&5 printf "%s\n" "$ac_cv_prog_cc_c99" >&6; } CC="$CC $ac_cv_prog_cc_c99" ;; esac fi ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c99 ac_prog_cc_stdc=c99 ;; esac fi fi if test x$ac_prog_cc_stdc = xno then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C89 features" >&5 printf %s "checking for $CC option to enable C89 features... " >&6; } if test ${ac_cv_prog_cc_c89+y} then : printf %s "(cached) " >&6 else case e in #( e) ac_cv_prog_cc_c89=no ac_save_CC=$CC cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $ac_c_conftest_c89_program _ACEOF for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" do CC="$ac_save_CC $ac_arg" if ac_fn_c_try_compile "$LINENO" then : ac_cv_prog_cc_c89=$ac_arg fi rm -f core conftest.err conftest.$ac_objext conftest.beam test "x$ac_cv_prog_cc_c89" != "xno" && break done rm -f conftest.$ac_ext CC=$ac_save_CC ;; esac fi if test "x$ac_cv_prog_cc_c89" = xno then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 printf "%s\n" "unsupported" >&6; } else case e in #( e) if test "x$ac_cv_prog_cc_c89" = x then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 printf "%s\n" "none needed" >&6; } else case e in #( e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 printf "%s\n" "$ac_cv_prog_cc_c89" >&6; } CC="$CC $ac_cv_prog_cc_c89" ;; esac fi ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c89 ac_prog_cc_stdc=c89 ;; esac fi fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CC understands -c and -o together" >&5 printf %s "checking whether $CC understands -c and -o together... " >&6; } if test ${am_cv_prog_cc_c_o+y} then : printf %s "(cached) " >&6 else case e in #( e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF # Make sure it works both with $CC and with simple cc. # Following AC_PROG_CC_C_O, we do the test twice because some # compilers refuse to overwrite an existing .o file with -o, # though they will create one. am_cv_prog_cc_c_o=yes for am_i in 1 2; do if { echo "$as_me:$LINENO: $CC -c conftest.$ac_ext -o conftest2.$ac_objext" >&5 ($CC -c conftest.$ac_ext -o conftest2.$ac_objext) >&5 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } \ && test -f conftest2.$ac_objext; then : OK else am_cv_prog_cc_c_o=no break fi done rm -f core conftest* unset am_i ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_cc_c_o" >&5 printf "%s\n" "$am_cv_prog_cc_c_o" >&6; } if test "$am_cv_prog_cc_c_o" != yes; then # Losing compiler, so override with the script. # FIXME: It is wrong to rewrite CC. # But if we don't then we get into trouble of one sort or another. # A longer-term fix would be to have automake use am__CC in this case, # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" CC="$am_aux_dir/compile $CC" fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu DEPDIR="${am__leading_dot}deps" ac_config_commands="$ac_config_commands depfiles" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} supports the include directive" >&5 printf %s "checking whether ${MAKE-make} supports the include directive... " >&6; } cat > confinc.mk << 'END' am__doit: @echo this is the am__doit target >confinc.out .PHONY: am__doit END am__include="#" am__quote= # BSD make does it like this. echo '.include "confinc.mk" # ignored' > confmf.BSD # Other make implementations (GNU, Solaris 10, AIX) do it like this. echo 'include confinc.mk # ignored' > confmf.GNU _am_result=no for s in GNU BSD; do { echo "$as_me:$LINENO: ${MAKE-make} -f confmf.$s && cat confinc.out" >&5 (${MAKE-make} -f confmf.$s && cat confinc.out) >&5 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } case $?:`cat confinc.out 2>/dev/null` in #( '0:this is the am__doit target') : case $s in #( BSD) : am__include='.include' am__quote='"' ;; #( *) : am__include='include' am__quote='' ;; esac ;; #( *) : ;; esac if test "$am__include" != "#"; then _am_result="yes ($s style)" break fi done rm -f confinc.* confmf.* { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: ${_am_result}" >&5 printf "%s\n" "${_am_result}" >&6; } # Check whether --enable-dependency-tracking was given. if test ${enable_dependency_tracking+y} then : enableval=$enable_dependency_tracking; fi if test "x$enable_dependency_tracking" != xno; then am_depcomp="$ac_aux_dir/depcomp" AMDEPBACKSLASH='\' am__nodep='_no' fi if test "x$enable_dependency_tracking" != xno; then AMDEP_TRUE= AMDEP_FALSE='#' else AMDEP_TRUE='#' AMDEP_FALSE= fi depcc="$CC" am_compiler_list= { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 printf %s "checking dependency style of $depcc... " >&6; } if test ${am_cv_CC_dependencies_compiler_type+y} then : printf %s "(cached) " >&6 else case e in #( e) if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For # instance it was reported that on HP-UX the gcc test will end up # making a dummy file named 'D' -- because '-MD' means "put the output # in D". rm -rf conftest.dir mkdir conftest.dir # Copy depcomp to subdir because otherwise we won't find it if we're # using a relative directory. cp "$am_depcomp" conftest.dir cd conftest.dir # We will build objects and dependencies in a subdirectory because # it helps to detect inapplicable dependency modes. For instance # both Tru64's cc and ICC support -MD to output dependencies as a # side effect of compilation, but ICC will put the dependencies in # the current directory while Tru64 will put them in the object # directory. mkdir sub am_cv_CC_dependencies_compiler_type=none if test "$am_compiler_list" = ""; then am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` fi am__universal=false case " $depcc " in #( *\ -arch\ *\ -arch\ *) am__universal=true ;; esac for depmode in $am_compiler_list; do # Setup a source with many dependencies, because some compilers # like to wrap large dependency lists on column 80 (with \), and # we should not choose a depcomp mode which is confused by this. # # We need to recreate these files for each test, as the compiler may # overwrite some of them when testing with obscure command lines. # This happens at least with the AIX C compiler. : > sub/conftest.c for i in 1 2 3 4 5 6; do echo '#include "conftst'$i'.h"' >> sub/conftest.c # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with # Solaris 10 /bin/sh. echo '/* dummy */' > sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf # We check with '-c' and '-o' for the sake of the "dashmstdout" # mode. It turns out that the SunPro C++ compiler does not properly # handle '-M -o', and we need to detect this. Also, some Intel # versions had trouble with output in subdirs. am__obj=sub/conftest.${OBJEXT-o} am__minus_obj="-o $am__obj" case $depmode in gcc) # This depmode causes a compiler race in universal mode. test "$am__universal" = false || continue ;; nosideeffect) # After this tag, mechanisms are not by side-effect, so they'll # only be used when explicitly requested. if test "x$enable_dependency_tracking" = xyes; then continue else break fi ;; msvc7 | msvc7msys | msvisualcpp | msvcmsys) # This compiler won't grok '-c -o', but also, the minuso test has # not run yet. These depmodes are late enough in the game, and # so weak that their functioning should not be impacted. am__obj=conftest.${OBJEXT-o} am__minus_obj= ;; none) break ;; esac if depmode=$depmode \ source=sub/conftest.c object=$am__obj \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ >/dev/null 2>conftest.err && grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && grep $am__obj sub/conftest.Po > /dev/null 2>&1 && ${MAKE-make} -s -f confmf > /dev/null 2>&1; then # icc doesn't choke on unknown options, it will just issue warnings # or remarks (even with -Werror). So we grep stderr for any message # that says an option was ignored or not supported. # When given -MP, icc 7.0 and 7.1 complain thus: # icc: Command line warning: ignoring option '-M'; no argument required # The diagnosis changed in icc 8.0: # icc: Command line remark: option '-MP' not supported if (grep 'ignoring option' conftest.err || grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else am_cv_CC_dependencies_compiler_type=$depmode break fi fi done cd .. rm -rf conftest.dir else am_cv_CC_dependencies_compiler_type=none fi ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5 printf "%s\n" "$am_cv_CC_dependencies_compiler_type" >&6; } CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type if test "x$enable_dependency_tracking" != xno \ && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then am__fastdepCC_TRUE= am__fastdepCC_FALSE='#' else am__fastdepCC_TRUE='#' am__fastdepCC_FALSE= fi ac_ext=${ac_fc_srcext-f} ac_compile='$FC -c $FCFLAGS $ac_fcflags_srcext conftest.$ac_ext >&5' ac_link='$FC -o conftest$ac_exeext $FCFLAGS $LDFLAGS $ac_fcflags_srcext conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_fc_compiler_gnu if test -n "$ac_tool_prefix"; then for ac_prog in gfortran g95 xlf95 f95 fort ifort ifc efc pgfortran pgf95 lf95 ftn nagfor xlf90 f90 pgf90 pghpf epcf90 g77 xlf f77 frt pgf77 cf77 fort77 fl32 af77 do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_FC+y} then : printf %s "(cached) " >&6 else case e in #( e) if test -n "$FC"; then ac_cv_prog_FC="$FC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_FC="$ac_tool_prefix$ac_prog" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi ;; esac fi FC=$ac_cv_prog_FC if test -n "$FC"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $FC" >&5 printf "%s\n" "$FC" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi test -n "$FC" && break done fi if test -z "$FC"; then ac_ct_FC=$FC for ac_prog in gfortran g95 xlf95 f95 fort ifort ifc efc pgfortran pgf95 lf95 ftn nagfor xlf90 f90 pgf90 pghpf epcf90 g77 xlf f77 frt pgf77 cf77 fort77 fl32 af77 do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_FC+y} then : printf %s "(cached) " >&6 else case e in #( e) if test -n "$ac_ct_FC"; then ac_cv_prog_ac_ct_FC="$ac_ct_FC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_FC="$ac_prog" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi ;; esac fi ac_ct_FC=$ac_cv_prog_ac_ct_FC if test -n "$ac_ct_FC"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_FC" >&5 printf "%s\n" "$ac_ct_FC" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi test -n "$ac_ct_FC" && break done if test "x$ac_ct_FC" = x; then FC="" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac FC=$ac_ct_FC fi fi # Provide some information about the compiler. printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for Fortran compiler version" >&5 set X $ac_compile ac_compiler=$2 for ac_option in --version -v -V -qversion; do { { ac_try="$ac_compiler $ac_option >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_compiler $ac_option >&5") 2>conftest.err ac_status=$? if test -s conftest.err; then sed '10a\ ... rest of stderr output deleted ... 10q' conftest.err >conftest.er1 cat conftest.er1 >&5 fi rm -f conftest.er1 conftest.err printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } done rm -f a.out # If we don't use '.F' as extension, the preprocessor is not run on the # input file. (Note that this only needs to work for GNU compilers.) ac_save_ext=$ac_ext ac_ext=F { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the compiler supports GNU Fortran" >&5 printf %s "checking whether the compiler supports GNU Fortran... " >&6; } if test ${ac_cv_fc_compiler_gnu+y} then : printf %s "(cached) " >&6 else case e in #( e) cat > conftest.$ac_ext <<_ACEOF program main #ifndef __GNUC__ choke me #endif end _ACEOF if ac_fn_fc_try_compile "$LINENO" then : ac_compiler_gnu=yes else case e in #( e) ac_compiler_gnu=no ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ac_cv_fc_compiler_gnu=$ac_compiler_gnu ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_fc_compiler_gnu" >&5 printf "%s\n" "$ac_cv_fc_compiler_gnu" >&6; } ac_compiler_gnu=$ac_cv_fc_compiler_gnu ac_ext=$ac_save_ext ac_test_FCFLAGS=${FCFLAGS+y} ac_save_FCFLAGS=$FCFLAGS FCFLAGS= { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $FC accepts -g" >&5 printf %s "checking whether $FC accepts -g... " >&6; } if test ${ac_cv_prog_fc_g+y} then : printf %s "(cached) " >&6 else case e in #( e) FCFLAGS=-g cat > conftest.$ac_ext <<_ACEOF program main end _ACEOF if ac_fn_fc_try_compile "$LINENO" then : ac_cv_prog_fc_g=yes else case e in #( e) ac_cv_prog_fc_g=no ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_fc_g" >&5 printf "%s\n" "$ac_cv_prog_fc_g" >&6; } if test $ac_test_FCFLAGS; then FCFLAGS=$ac_save_FCFLAGS elif test $ac_cv_prog_fc_g = yes; then if test "x$ac_cv_fc_compiler_gnu" = xyes; then FCFLAGS="-g -O2" else FCFLAGS="-g" fi else if test "x$ac_cv_fc_compiler_gnu" = xyes; then FCFLAGS="-O2" else FCFLAGS= fi fi if test $ac_compiler_gnu = yes; then GFC=yes else GFC= fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu ac_config_headers="$ac_config_headers config.h" # # conditional on whether Fortran compiler found, # skip compilation of libpgplot.a otherwise # if test "x$FC" != "x"; then HAVE_FC_TRUE= HAVE_FC_FALSE='#' else HAVE_FC_TRUE='#' HAVE_FC_FALSE= fi # # set giza version # GIZA_VERSION_MAJOR=1 GIZA_VERSION_MINOR=5 GIZA_VERSION_MICRO=0 # # The following specify the interface version numbers for giza. # LT_CURRENT is the current interface number # LT_REVISION is the implementation number of the current interface # LT_AGE is the difference between the newest and oldest interface implemented # # Rules are: # 1) update LT_REVISION for every public giza release # 2) update LT_CURRENT if giza interface updated and set LT_REVISION to 0 # 3) increment LT_AGE if interface is backwards compatible # 4) set LT_AGE to 0 if interface is not backwards compatible # LT_CURRENT=2 LT_REVISION=0 LT_AGE=0 case `pwd` in *\ * | *\ *) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&5 printf "%s\n" "$as_me: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&2;} ;; esac macro_version='2.4.6' macro_revision='2.4.6' ltmain=$ac_aux_dir/ltmain.sh # Make sure we can run config.sub. $SHELL "${ac_aux_dir}config.sub" sun4 >/dev/null 2>&1 || as_fn_error $? "cannot run $SHELL ${ac_aux_dir}config.sub" "$LINENO" 5 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking build system type" >&5 printf %s "checking build system type... " >&6; } if test ${ac_cv_build+y} then : printf %s "(cached) " >&6 else case e in #( e) ac_build_alias=$build_alias test "x$ac_build_alias" = x && ac_build_alias=`$SHELL "${ac_aux_dir}config.guess"` test "x$ac_build_alias" = x && as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5 ac_cv_build=`$SHELL "${ac_aux_dir}config.sub" $ac_build_alias` || as_fn_error $? "$SHELL ${ac_aux_dir}config.sub $ac_build_alias failed" "$LINENO" 5 ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5 printf "%s\n" "$ac_cv_build" >&6; } case $ac_cv_build in *-*-*) ;; *) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;; esac build=$ac_cv_build ac_save_IFS=$IFS; IFS='-' set x $ac_cv_build shift build_cpu=$1 build_vendor=$2 shift; shift # Remember, the first character of IFS is used to create $*, # except with old shells: build_os=$* IFS=$ac_save_IFS case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking host system type" >&5 printf %s "checking host system type... " >&6; } if test ${ac_cv_host+y} then : printf %s "(cached) " >&6 else case e in #( e) if test "x$host_alias" = x; then ac_cv_host=$ac_cv_build else ac_cv_host=`$SHELL "${ac_aux_dir}config.sub" $host_alias` || as_fn_error $? "$SHELL ${ac_aux_dir}config.sub $host_alias failed" "$LINENO" 5 fi ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5 printf "%s\n" "$ac_cv_host" >&6; } case $ac_cv_host in *-*-*) ;; *) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;; esac host=$ac_cv_host ac_save_IFS=$IFS; IFS='-' set x $ac_cv_host shift host_cpu=$1 host_vendor=$2 shift; shift # Remember, the first character of IFS is used to create $*, # except with old shells: host_os=$* IFS=$ac_save_IFS case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac # Backslashify metacharacters that are still active within # double-quoted strings. sed_quote_subst='s/\(["`$\\]\)/\\\1/g' # Same as above, but do not quote variable references. double_quote_subst='s/\(["`\\]\)/\\\1/g' # Sed substitution to delay expansion of an escaped shell variable in a # double_quote_subst'ed string. delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' # Sed substitution to delay expansion of an escaped single quote. delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g' # Sed substitution to avoid accidental globbing in evaled expressions no_glob_subst='s/\*/\\\*/g' ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to print strings" >&5 printf %s "checking how to print strings... " >&6; } # Test print first, because it will be a builtin if present. if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \ test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then ECHO='print -r --' elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then ECHO='printf %s\n' else # Use this function as a fallback that always works. func_fallback_echo () { eval 'cat <<_LTECHO_EOF $1 _LTECHO_EOF' } ECHO='func_fallback_echo' fi # func_echo_all arg... # Invoke $ECHO with all args, space-separated. func_echo_all () { $ECHO "" } case $ECHO in printf*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: printf" >&5 printf "%s\n" "printf" >&6; } ;; print*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: print -r" >&5 printf "%s\n" "print -r" >&6; } ;; *) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: cat" >&5 printf "%s\n" "cat" >&6; } ;; esac { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5 printf %s "checking for a sed that does not truncate output... " >&6; } if test ${ac_cv_path_SED+y} then : printf %s "(cached) " >&6 else case e in #( e) ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/ for ac_i in 1 2 3 4 5 6 7; do ac_script="$ac_script$as_nl$ac_script" done echo "$ac_script" 2>/dev/null | sed 99q >conftest.sed { ac_script=; unset ac_script;} if test -z "$SED"; then ac_path_SED_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_prog in sed gsed do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_SED="$as_dir$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_SED" || continue # Check for GNU ac_path_SED and select it if it is found. # Check for GNU $ac_path_SED case `"$ac_path_SED" --version 2>&1` in #( *GNU*) ac_cv_path_SED="$ac_path_SED" ac_path_SED_found=:;; #( *) ac_count=0 printf %s 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" printf "%s\n" '' >> "conftest.nl" "$ac_path_SED" -f conftest.sed < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_SED_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_SED="$ac_path_SED" ac_path_SED_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_SED_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_SED"; then as_fn_error $? "no acceptable sed could be found in \$PATH" "$LINENO" 5 fi else ac_cv_path_SED=$SED fi ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5 printf "%s\n" "$ac_cv_path_SED" >&6; } SED="$ac_cv_path_SED" rm -f conftest.sed test -z "$SED" && SED=sed Xsed="$SED -e 1s/^X//" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5 printf %s "checking for grep that handles long lines and -e... " >&6; } if test ${ac_cv_path_GREP+y} then : printf %s "(cached) " >&6 else case e in #( e) if test -z "$GREP"; then ac_path_GREP_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_prog in grep ggrep do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_GREP="$as_dir$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_GREP" || continue # Check for GNU ac_path_GREP and select it if it is found. # Check for GNU $ac_path_GREP case `"$ac_path_GREP" --version 2>&1` in #( *GNU*) ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; #( *) ac_count=0 printf %s 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" printf "%s\n" 'GREP' >> "conftest.nl" "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_GREP_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_GREP_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_GREP"; then as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 fi else ac_cv_path_GREP=$GREP fi ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5 printf "%s\n" "$ac_cv_path_GREP" >&6; } GREP="$ac_cv_path_GREP" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5 printf %s "checking for egrep... " >&6; } if test ${ac_cv_path_EGREP+y} then : printf %s "(cached) " >&6 else case e in #( e) if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 then ac_cv_path_EGREP="$GREP -E" else if test -z "$EGREP"; then ac_path_EGREP_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_prog in egrep do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_EGREP="$as_dir$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_EGREP" || continue # Check for GNU ac_path_EGREP and select it if it is found. # Check for GNU $ac_path_EGREP case `"$ac_path_EGREP" --version 2>&1` in #( *GNU*) ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; #( *) ac_count=0 printf %s 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" printf "%s\n" 'EGREP' >> "conftest.nl" "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_EGREP_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_EGREP_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_EGREP"; then as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 fi else ac_cv_path_EGREP=$EGREP fi fi ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5 printf "%s\n" "$ac_cv_path_EGREP" >&6; } EGREP="$ac_cv_path_EGREP" EGREP_TRADITIONAL=$EGREP ac_cv_path_EGREP_TRADITIONAL=$EGREP { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for fgrep" >&5 printf %s "checking for fgrep... " >&6; } if test ${ac_cv_path_FGREP+y} then : printf %s "(cached) " >&6 else case e in #( e) if echo 'ab*c' | $GREP -F 'ab*c' >/dev/null 2>&1 then ac_cv_path_FGREP="$GREP -F" else if test -z "$FGREP"; then ac_path_FGREP_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_prog in fgrep do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_FGREP="$as_dir$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_FGREP" || continue # Check for GNU ac_path_FGREP and select it if it is found. # Check for GNU $ac_path_FGREP case `"$ac_path_FGREP" --version 2>&1` in #( *GNU*) ac_cv_path_FGREP="$ac_path_FGREP" ac_path_FGREP_found=:;; #( *) ac_count=0 printf %s 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" printf "%s\n" 'FGREP' >> "conftest.nl" "$ac_path_FGREP" FGREP < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_FGREP_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_FGREP="$ac_path_FGREP" ac_path_FGREP_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_FGREP_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_FGREP"; then as_fn_error $? "no acceptable fgrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 fi else ac_cv_path_FGREP=$FGREP fi fi ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_FGREP" >&5 printf "%s\n" "$ac_cv_path_FGREP" >&6; } FGREP="$ac_cv_path_FGREP" test -z "$GREP" && GREP=grep # Check whether --with-gnu-ld was given. if test ${with_gnu_ld+y} then : withval=$with_gnu_ld; test no = "$withval" || with_gnu_ld=yes else case e in #( e) with_gnu_ld=no ;; esac fi ac_prog=ld if test yes = "$GCC"; then # Check if gcc -print-prog-name=ld gives a path. { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5 printf %s "checking for ld used by $CC... " >&6; } case $host in *-*-mingw*) # gcc leaves a trailing carriage return, which upsets mingw ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; *) ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; esac case $ac_prog in # Accept absolute paths. [\\/]* | ?:[\\/]*) re_direlt='/[^/][^/]*/\.\./' # Canonicalize the pathname of ld ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'` while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` done test -z "$LD" && LD=$ac_prog ;; "") # If it fails, then pretend we aren't using GCC. ac_prog=ld ;; *) # If it is relative, then search for the first ld in PATH. with_gnu_ld=unknown ;; esac elif test yes = "$with_gnu_ld"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5 printf %s "checking for GNU ld... " >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5 printf %s "checking for non-GNU ld... " >&6; } fi if test ${lt_cv_path_LD+y} then : printf %s "(cached) " >&6 else case e in #( e) if test -z "$LD"; then lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR for ac_dir in $PATH; do IFS=$lt_save_ifs test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then lt_cv_path_LD=$ac_dir/$ac_prog # Check to see if the program is GNU ld. I'd rather use --version, # but apparently some variants of GNU ld only accept -v. # Break only if it was the GNU/non-GNU ld that we prefer. case `"$lt_cv_path_LD" -v 2>&1 &5 printf "%s\n" "$LD" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5 printf %s "checking if the linker ($LD) is GNU ld... " >&6; } if test ${lt_cv_prog_gnu_ld+y} then : printf %s "(cached) " >&6 else case e in #( e) # I'd rather use --version here, but apparently some GNU lds only accept -v. case `$LD -v 2>&1 &5 printf "%s\n" "$lt_cv_prog_gnu_ld" >&6; } with_gnu_ld=$lt_cv_prog_gnu_ld { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for BSD- or MS-compatible name lister (nm)" >&5 printf %s "checking for BSD- or MS-compatible name lister (nm)... " >&6; } if test ${lt_cv_path_NM+y} then : printf %s "(cached) " >&6 else case e in #( e) if test -n "$NM"; then # Let the user override the test. lt_cv_path_NM=$NM else lt_nm_to_check=${ac_tool_prefix}nm if test -n "$ac_tool_prefix" && test "$build" = "$host"; then lt_nm_to_check="$lt_nm_to_check nm" fi for lt_tmp_nm in $lt_nm_to_check; do lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do IFS=$lt_save_ifs test -z "$ac_dir" && ac_dir=. tmp_nm=$ac_dir/$lt_tmp_nm if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext"; then # Check to see if the nm accepts a BSD-compat flag. # Adding the 'sed 1q' prevents false positives on HP-UX, which says: # nm: unknown option "B" ignored # Tru64's nm complains that /dev/null is an invalid object file # MSYS converts /dev/null to NUL, MinGW nm treats NUL as empty case $build_os in mingw*) lt_bad_file=conftest.nm/nofile ;; *) lt_bad_file=/dev/null ;; esac case `"$tmp_nm" -B $lt_bad_file 2>&1 | sed '1q'` in *$lt_bad_file* | *'Invalid file or object type'*) lt_cv_path_NM="$tmp_nm -B" break 2 ;; *) case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in */dev/null*) lt_cv_path_NM="$tmp_nm -p" break 2 ;; *) lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but continue # so that we can try to find one that supports BSD flags ;; esac ;; esac fi done IFS=$lt_save_ifs done : ${lt_cv_path_NM=no} fi ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_NM" >&5 printf "%s\n" "$lt_cv_path_NM" >&6; } if test no != "$lt_cv_path_NM"; then NM=$lt_cv_path_NM else # Didn't find any BSD compatible name lister, look for dumpbin. if test -n "$DUMPBIN"; then : # Let the user override the test. else if test -n "$ac_tool_prefix"; then for ac_prog in dumpbin "link -dump" do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_DUMPBIN+y} then : printf %s "(cached) " >&6 else case e in #( e) if test -n "$DUMPBIN"; then ac_cv_prog_DUMPBIN="$DUMPBIN" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_DUMPBIN="$ac_tool_prefix$ac_prog" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi ;; esac fi DUMPBIN=$ac_cv_prog_DUMPBIN if test -n "$DUMPBIN"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $DUMPBIN" >&5 printf "%s\n" "$DUMPBIN" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi test -n "$DUMPBIN" && break done fi if test -z "$DUMPBIN"; then ac_ct_DUMPBIN=$DUMPBIN for ac_prog in dumpbin "link -dump" do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_DUMPBIN+y} then : printf %s "(cached) " >&6 else case e in #( e) if test -n "$ac_ct_DUMPBIN"; then ac_cv_prog_ac_ct_DUMPBIN="$ac_ct_DUMPBIN" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_DUMPBIN="$ac_prog" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi ;; esac fi ac_ct_DUMPBIN=$ac_cv_prog_ac_ct_DUMPBIN if test -n "$ac_ct_DUMPBIN"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DUMPBIN" >&5 printf "%s\n" "$ac_ct_DUMPBIN" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi test -n "$ac_ct_DUMPBIN" && break done if test "x$ac_ct_DUMPBIN" = x; then DUMPBIN=":" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac DUMPBIN=$ac_ct_DUMPBIN fi fi case `$DUMPBIN -symbols -headers /dev/null 2>&1 | sed '1q'` in *COFF*) DUMPBIN="$DUMPBIN -symbols -headers" ;; *) DUMPBIN=: ;; esac fi if test : != "$DUMPBIN"; then NM=$DUMPBIN fi fi test -z "$NM" && NM=nm { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking the name lister ($NM) interface" >&5 printf %s "checking the name lister ($NM) interface... " >&6; } if test ${lt_cv_nm_interface+y} then : printf %s "(cached) " >&6 else case e in #( e) lt_cv_nm_interface="BSD nm" echo "int some_variable = 0;" > conftest.$ac_ext (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&5) (eval "$ac_compile" 2>conftest.err) cat conftest.err >&5 (eval echo "\"\$as_me:$LINENO: $NM \\\"conftest.$ac_objext\\\"\"" >&5) (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out) cat conftest.err >&5 (eval echo "\"\$as_me:$LINENO: output\"" >&5) cat conftest.out >&5 if $GREP 'External.*some_variable' conftest.out > /dev/null; then lt_cv_nm_interface="MS dumpbin" fi rm -f conftest* ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_nm_interface" >&5 printf "%s\n" "$lt_cv_nm_interface" >&6; } { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether ln -s works" >&5 printf %s "checking whether ln -s works... " >&6; } LN_S=$as_ln_s if test "$LN_S" = "ln -s"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no, using $LN_S" >&5 printf "%s\n" "no, using $LN_S" >&6; } fi # find the maximum length of command line arguments { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking the maximum length of command line arguments" >&5 printf %s "checking the maximum length of command line arguments... " >&6; } if test ${lt_cv_sys_max_cmd_len+y} then : printf %s "(cached) " >&6 else case e in #( e) i=0 teststring=ABCD case $build_os in msdosdjgpp*) # On DJGPP, this test can blow up pretty badly due to problems in libc # (any single argument exceeding 2000 bytes causes a buffer overrun # during glob expansion). Even if it were fixed, the result of this # check would be larger than it should be. lt_cv_sys_max_cmd_len=12288; # 12K is about right ;; gnu*) # Under GNU Hurd, this test is not required because there is # no limit to the length of command line arguments. # Libtool will interpret -1 as no limit whatsoever lt_cv_sys_max_cmd_len=-1; ;; cygwin* | mingw* | cegcc*) # On Win9x/ME, this test blows up -- it succeeds, but takes # about 5 minutes as the teststring grows exponentially. # Worse, since 9x/ME are not pre-emptively multitasking, # you end up with a "frozen" computer, even though with patience # the test eventually succeeds (with a max line length of 256k). # Instead, let's just punt: use the minimum linelength reported by # all of the supported platforms: 8192 (on NT/2K/XP). lt_cv_sys_max_cmd_len=8192; ;; mint*) # On MiNT this can take a long time and run out of memory. lt_cv_sys_max_cmd_len=8192; ;; amigaos*) # On AmigaOS with pdksh, this test takes hours, literally. # So we just punt and use a minimum line length of 8192. lt_cv_sys_max_cmd_len=8192; ;; bitrig* | darwin* | dragonfly* | freebsd* | netbsd* | openbsd*) # This has been around since 386BSD, at least. Likely further. if test -x /sbin/sysctl; then lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` elif test -x /usr/sbin/sysctl; then lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` else lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs fi # And add a safety zone lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` ;; interix*) # We know the value 262144 and hardcode it with a safety zone (like BSD) lt_cv_sys_max_cmd_len=196608 ;; os2*) # The test takes a long time on OS/2. lt_cv_sys_max_cmd_len=8192 ;; osf*) # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not # nice to cause kernel panics so lets avoid the loop below. # First set a reasonable default. lt_cv_sys_max_cmd_len=16384 # if test -x /sbin/sysconfig; then case `/sbin/sysconfig -q proc exec_disable_arg_limit` in *1*) lt_cv_sys_max_cmd_len=-1 ;; esac fi ;; sco3.2v5*) lt_cv_sys_max_cmd_len=102400 ;; sysv5* | sco5v6* | sysv4.2uw2*) kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null` if test -n "$kargmax"; then lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[ ]//'` else lt_cv_sys_max_cmd_len=32768 fi ;; *) lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null` if test -n "$lt_cv_sys_max_cmd_len" && \ test undefined != "$lt_cv_sys_max_cmd_len"; then lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` else # Make teststring a little bigger before we do anything with it. # a 1K string should be a reasonable start. for i in 1 2 3 4 5 6 7 8; do teststring=$teststring$teststring done SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} # If test is not a shell built-in, we'll probably end up computing a # maximum length that is only half of the actual maximum length, but # we can't tell. while { test X`env echo "$teststring$teststring" 2>/dev/null` \ = "X$teststring$teststring"; } >/dev/null 2>&1 && test 17 != "$i" # 1/2 MB should be enough do i=`expr $i + 1` teststring=$teststring$teststring done # Only check the string length outside the loop. lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1` teststring= # Add a significant safety factor because C++ compilers can tack on # massive amounts of additional arguments before passing them to the # linker. It appears as though 1/2 is a usable value. lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` fi ;; esac ;; esac fi if test -n "$lt_cv_sys_max_cmd_len"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sys_max_cmd_len" >&5 printf "%s\n" "$lt_cv_sys_max_cmd_len" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none" >&5 printf "%s\n" "none" >&6; } fi max_cmd_len=$lt_cv_sys_max_cmd_len : ${CP="cp -f"} : ${MV="mv -f"} : ${RM="rm -f"} if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then lt_unset=unset else lt_unset=false fi # test EBCDIC or ASCII case `echo X|tr X '\101'` in A) # ASCII based system # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr lt_SP2NL='tr \040 \012' lt_NL2SP='tr \015\012 \040\040' ;; *) # EBCDIC based system lt_SP2NL='tr \100 \n' lt_NL2SP='tr \r\n \100\100' ;; esac { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to $host format" >&5 printf %s "checking how to convert $build file names to $host format... " >&6; } if test ${lt_cv_to_host_file_cmd+y} then : printf %s "(cached) " >&6 else case e in #( e) case $host in *-*-mingw* ) case $build in *-*-mingw* ) # actually msys lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32 ;; *-*-cygwin* ) lt_cv_to_host_file_cmd=func_convert_file_cygwin_to_w32 ;; * ) # otherwise, assume *nix lt_cv_to_host_file_cmd=func_convert_file_nix_to_w32 ;; esac ;; *-*-cygwin* ) case $build in *-*-mingw* ) # actually msys lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin ;; *-*-cygwin* ) lt_cv_to_host_file_cmd=func_convert_file_noop ;; * ) # otherwise, assume *nix lt_cv_to_host_file_cmd=func_convert_file_nix_to_cygwin ;; esac ;; * ) # unhandled hosts (and "normal" native builds) lt_cv_to_host_file_cmd=func_convert_file_noop ;; esac ;; esac fi to_host_file_cmd=$lt_cv_to_host_file_cmd { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_host_file_cmd" >&5 printf "%s\n" "$lt_cv_to_host_file_cmd" >&6; } { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to toolchain format" >&5 printf %s "checking how to convert $build file names to toolchain format... " >&6; } if test ${lt_cv_to_tool_file_cmd+y} then : printf %s "(cached) " >&6 else case e in #( e) #assume ordinary cross tools, or native build. lt_cv_to_tool_file_cmd=func_convert_file_noop case $host in *-*-mingw* ) case $build in *-*-mingw* ) # actually msys lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32 ;; esac ;; esac ;; esac fi to_tool_file_cmd=$lt_cv_to_tool_file_cmd { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_tool_file_cmd" >&5 printf "%s\n" "$lt_cv_to_tool_file_cmd" >&6; } { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $LD option to reload object files" >&5 printf %s "checking for $LD option to reload object files... " >&6; } if test ${lt_cv_ld_reload_flag+y} then : printf %s "(cached) " >&6 else case e in #( e) lt_cv_ld_reload_flag='-r' ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_reload_flag" >&5 printf "%s\n" "$lt_cv_ld_reload_flag" >&6; } reload_flag=$lt_cv_ld_reload_flag case $reload_flag in "" | " "*) ;; *) reload_flag=" $reload_flag" ;; esac reload_cmds='$LD$reload_flag -o $output$reload_objs' case $host_os in cygwin* | mingw* | pw32* | cegcc*) if test yes != "$GCC"; then reload_cmds=false fi ;; darwin*) if test yes = "$GCC"; then reload_cmds='$LTCC $LTCFLAGS -nostdlib $wl-r -o $output$reload_objs' else reload_cmds='$LD$reload_flag -o $output$reload_objs' fi ;; esac if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}objdump", so it can be a program name with args. set dummy ${ac_tool_prefix}objdump; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_OBJDUMP+y} then : printf %s "(cached) " >&6 else case e in #( e) if test -n "$OBJDUMP"; then ac_cv_prog_OBJDUMP="$OBJDUMP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_OBJDUMP="${ac_tool_prefix}objdump" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi ;; esac fi OBJDUMP=$ac_cv_prog_OBJDUMP if test -n "$OBJDUMP"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $OBJDUMP" >&5 printf "%s\n" "$OBJDUMP" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$ac_cv_prog_OBJDUMP"; then ac_ct_OBJDUMP=$OBJDUMP # Extract the first word of "objdump", so it can be a program name with args. set dummy objdump; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_OBJDUMP+y} then : printf %s "(cached) " >&6 else case e in #( e) if test -n "$ac_ct_OBJDUMP"; then ac_cv_prog_ac_ct_OBJDUMP="$ac_ct_OBJDUMP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_OBJDUMP="objdump" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi ;; esac fi ac_ct_OBJDUMP=$ac_cv_prog_ac_ct_OBJDUMP if test -n "$ac_ct_OBJDUMP"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OBJDUMP" >&5 printf "%s\n" "$ac_ct_OBJDUMP" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$ac_ct_OBJDUMP" = x; then OBJDUMP="false" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac OBJDUMP=$ac_ct_OBJDUMP fi else OBJDUMP="$ac_cv_prog_OBJDUMP" fi test -z "$OBJDUMP" && OBJDUMP=objdump { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to recognize dependent libraries" >&5 printf %s "checking how to recognize dependent libraries... " >&6; } if test ${lt_cv_deplibs_check_method+y} then : printf %s "(cached) " >&6 else case e in #( e) lt_cv_file_magic_cmd='$MAGIC_CMD' lt_cv_file_magic_test_file= lt_cv_deplibs_check_method='unknown' # Need to set the preceding variable on all platforms that support # interlibrary dependencies. # 'none' -- dependencies not supported. # 'unknown' -- same as none, but documents that we really don't know. # 'pass_all' -- all dependencies passed with no checks. # 'test_compile' -- check by making test program. # 'file_magic [[regex]]' -- check by looking for files in library path # that responds to the $file_magic_cmd with a given extended regex. # If you have 'file' or equivalent on your system and you're not sure # whether 'pass_all' will *always* work, you probably want this one. case $host_os in aix[4-9]*) lt_cv_deplibs_check_method=pass_all ;; beos*) lt_cv_deplibs_check_method=pass_all ;; bsdi[45]*) lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)' lt_cv_file_magic_cmd='/usr/bin/file -L' lt_cv_file_magic_test_file=/shlib/libc.so ;; cygwin*) # func_win32_libid is a shell function defined in ltmain.sh lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' lt_cv_file_magic_cmd='func_win32_libid' ;; mingw* | pw32*) # Base MSYS/MinGW do not provide the 'file' command needed by # func_win32_libid shell function, so use a weaker test based on 'objdump', # unless we find 'file', for example because we are cross-compiling. if ( file / ) >/dev/null 2>&1; then lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' lt_cv_file_magic_cmd='func_win32_libid' else # Keep this pattern in sync with the one in func_win32_libid. lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' lt_cv_file_magic_cmd='$OBJDUMP -f' fi ;; cegcc*) # use the weaker test based on 'objdump'. See mingw*. lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?' lt_cv_file_magic_cmd='$OBJDUMP -f' ;; darwin* | rhapsody*) lt_cv_deplibs_check_method=pass_all ;; freebsd* | dragonfly*) if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then case $host_cpu in i*86 ) # Not sure whether the presence of OpenBSD here was a mistake. # Let's accept both of them until this is cleared up. lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[3-9]86 (compact )?demand paged shared library' lt_cv_file_magic_cmd=/usr/bin/file lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` ;; esac else lt_cv_deplibs_check_method=pass_all fi ;; haiku*) lt_cv_deplibs_check_method=pass_all ;; hpux10.20* | hpux11*) lt_cv_file_magic_cmd=/usr/bin/file case $host_cpu in ia64*) lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - IA64' lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so ;; hppa*64*) lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF[ -][0-9][0-9])(-bit)?( [LM]SB)? shared object( file)?[, -]* PA-RISC [0-9]\.[0-9]' lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl ;; *) lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9]\.[0-9]) shared library' lt_cv_file_magic_test_file=/usr/lib/libc.sl ;; esac ;; interix[3-9]*) # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|\.a)$' ;; irix5* | irix6* | nonstopux*) case $LD in *-32|*"-32 ") libmagic=32-bit;; *-n32|*"-n32 ") libmagic=N32;; *-64|*"-64 ") libmagic=64-bit;; *) libmagic=never-match;; esac lt_cv_deplibs_check_method=pass_all ;; # This must be glibc/ELF. linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) lt_cv_deplibs_check_method=pass_all ;; netbsd*) if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' else lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|_pic\.a)$' fi ;; newos6*) lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (executable|dynamic lib)' lt_cv_file_magic_cmd=/usr/bin/file lt_cv_file_magic_test_file=/usr/lib/libnls.so ;; *nto* | *qnx*) lt_cv_deplibs_check_method=pass_all ;; openbsd* | bitrig*) if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|\.so|_pic\.a)$' else lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' fi ;; osf3* | osf4* | osf5*) lt_cv_deplibs_check_method=pass_all ;; rdos*) lt_cv_deplibs_check_method=pass_all ;; solaris*) lt_cv_deplibs_check_method=pass_all ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) lt_cv_deplibs_check_method=pass_all ;; sysv4 | sysv4.3*) case $host_vendor in motorola) lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib) M[0-9][0-9]* Version [0-9]' lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` ;; ncr) lt_cv_deplibs_check_method=pass_all ;; sequent) lt_cv_file_magic_cmd='/bin/file' lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )' ;; sni) lt_cv_file_magic_cmd='/bin/file' lt_cv_deplibs_check_method="file_magic ELF [0-9][0-9]*-bit [LM]SB dynamic lib" lt_cv_file_magic_test_file=/lib/libc.so ;; siemens) lt_cv_deplibs_check_method=pass_all ;; pc) lt_cv_deplibs_check_method=pass_all ;; esac ;; tpf*) lt_cv_deplibs_check_method=pass_all ;; os2*) lt_cv_deplibs_check_method=pass_all ;; esac ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_deplibs_check_method" >&5 printf "%s\n" "$lt_cv_deplibs_check_method" >&6; } file_magic_glob= want_nocaseglob=no if test "$build" = "$host"; then case $host_os in mingw* | pw32*) if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then want_nocaseglob=yes else file_magic_glob=`echo aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ | $SED -e "s/\(..\)/s\/[\1]\/[\1]\/g;/g"` fi ;; esac fi file_magic_cmd=$lt_cv_file_magic_cmd deplibs_check_method=$lt_cv_deplibs_check_method test -z "$deplibs_check_method" && deplibs_check_method=unknown if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}dlltool", so it can be a program name with args. set dummy ${ac_tool_prefix}dlltool; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_DLLTOOL+y} then : printf %s "(cached) " >&6 else case e in #( e) if test -n "$DLLTOOL"; then ac_cv_prog_DLLTOOL="$DLLTOOL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_DLLTOOL="${ac_tool_prefix}dlltool" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi ;; esac fi DLLTOOL=$ac_cv_prog_DLLTOOL if test -n "$DLLTOOL"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $DLLTOOL" >&5 printf "%s\n" "$DLLTOOL" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$ac_cv_prog_DLLTOOL"; then ac_ct_DLLTOOL=$DLLTOOL # Extract the first word of "dlltool", so it can be a program name with args. set dummy dlltool; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_DLLTOOL+y} then : printf %s "(cached) " >&6 else case e in #( e) if test -n "$ac_ct_DLLTOOL"; then ac_cv_prog_ac_ct_DLLTOOL="$ac_ct_DLLTOOL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_DLLTOOL="dlltool" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi ;; esac fi ac_ct_DLLTOOL=$ac_cv_prog_ac_ct_DLLTOOL if test -n "$ac_ct_DLLTOOL"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DLLTOOL" >&5 printf "%s\n" "$ac_ct_DLLTOOL" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$ac_ct_DLLTOOL" = x; then DLLTOOL="false" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac DLLTOOL=$ac_ct_DLLTOOL fi else DLLTOOL="$ac_cv_prog_DLLTOOL" fi test -z "$DLLTOOL" && DLLTOOL=dlltool { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to associate runtime and link libraries" >&5 printf %s "checking how to associate runtime and link libraries... " >&6; } if test ${lt_cv_sharedlib_from_linklib_cmd+y} then : printf %s "(cached) " >&6 else case e in #( e) lt_cv_sharedlib_from_linklib_cmd='unknown' case $host_os in cygwin* | mingw* | pw32* | cegcc*) # two different shell functions defined in ltmain.sh; # decide which one to use based on capabilities of $DLLTOOL case `$DLLTOOL --help 2>&1` in *--identify-strict*) lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib ;; *) lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib_fallback ;; esac ;; *) # fallback: assume linklib IS sharedlib lt_cv_sharedlib_from_linklib_cmd=$ECHO ;; esac ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sharedlib_from_linklib_cmd" >&5 printf "%s\n" "$lt_cv_sharedlib_from_linklib_cmd" >&6; } sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO if test -n "$ac_tool_prefix"; then for ac_prog in ar do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_AR+y} then : printf %s "(cached) " >&6 else case e in #( e) if test -n "$AR"; then ac_cv_prog_AR="$AR" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_AR="$ac_tool_prefix$ac_prog" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi ;; esac fi AR=$ac_cv_prog_AR if test -n "$AR"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $AR" >&5 printf "%s\n" "$AR" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi test -n "$AR" && break done fi if test -z "$AR"; then ac_ct_AR=$AR for ac_prog in ar do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_AR+y} then : printf %s "(cached) " >&6 else case e in #( e) if test -n "$ac_ct_AR"; then ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_AR="$ac_prog" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi ;; esac fi ac_ct_AR=$ac_cv_prog_ac_ct_AR if test -n "$ac_ct_AR"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5 printf "%s\n" "$ac_ct_AR" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi test -n "$ac_ct_AR" && break done if test "x$ac_ct_AR" = x; then AR="false" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac AR=$ac_ct_AR fi fi : ${AR=ar} : ${AR_FLAGS=cru} { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for archiver @FILE support" >&5 printf %s "checking for archiver @FILE support... " >&6; } if test ${lt_cv_ar_at_file+y} then : printf %s "(cached) " >&6 else case e in #( e) lt_cv_ar_at_file=no cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : echo conftest.$ac_objext > conftest.lst lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&5' { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5 (eval $lt_ar_try) 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } if test 0 -eq "$ac_status"; then # Ensure the archiver fails upon bogus file names. rm -f conftest.$ac_objext libconftest.a { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5 (eval $lt_ar_try) 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } if test 0 -ne "$ac_status"; then lt_cv_ar_at_file=@ fi fi rm -f conftest.* libconftest.a fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ar_at_file" >&5 printf "%s\n" "$lt_cv_ar_at_file" >&6; } if test no = "$lt_cv_ar_at_file"; then archiver_list_spec= else archiver_list_spec=$lt_cv_ar_at_file fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. set dummy ${ac_tool_prefix}strip; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_STRIP+y} then : printf %s "(cached) " >&6 else case e in #( e) if test -n "$STRIP"; then ac_cv_prog_STRIP="$STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_STRIP="${ac_tool_prefix}strip" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi ;; esac fi STRIP=$ac_cv_prog_STRIP if test -n "$STRIP"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 printf "%s\n" "$STRIP" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$ac_cv_prog_STRIP"; then ac_ct_STRIP=$STRIP # Extract the first word of "strip", so it can be a program name with args. set dummy strip; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_STRIP+y} then : printf %s "(cached) " >&6 else case e in #( e) if test -n "$ac_ct_STRIP"; then ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_STRIP="strip" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi ;; esac fi ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP if test -n "$ac_ct_STRIP"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 printf "%s\n" "$ac_ct_STRIP" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$ac_ct_STRIP" = x; then STRIP=":" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac STRIP=$ac_ct_STRIP fi else STRIP="$ac_cv_prog_STRIP" fi test -z "$STRIP" && STRIP=: if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. set dummy ${ac_tool_prefix}ranlib; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_RANLIB+y} then : printf %s "(cached) " >&6 else case e in #( e) if test -n "$RANLIB"; then ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi ;; esac fi RANLIB=$ac_cv_prog_RANLIB if test -n "$RANLIB"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5 printf "%s\n" "$RANLIB" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$ac_cv_prog_RANLIB"; then ac_ct_RANLIB=$RANLIB # Extract the first word of "ranlib", so it can be a program name with args. set dummy ranlib; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_RANLIB+y} then : printf %s "(cached) " >&6 else case e in #( e) if test -n "$ac_ct_RANLIB"; then ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_RANLIB="ranlib" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi ;; esac fi ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB if test -n "$ac_ct_RANLIB"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5 printf "%s\n" "$ac_ct_RANLIB" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$ac_ct_RANLIB" = x; then RANLIB=":" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac RANLIB=$ac_ct_RANLIB fi else RANLIB="$ac_cv_prog_RANLIB" fi test -z "$RANLIB" && RANLIB=: # Determine commands to create old-style static archives. old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs' old_postinstall_cmds='chmod 644 $oldlib' old_postuninstall_cmds= if test -n "$RANLIB"; then case $host_os in bitrig* | openbsd*) old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$tool_oldlib" ;; *) old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$tool_oldlib" ;; esac old_archive_cmds="$old_archive_cmds~\$RANLIB \$tool_oldlib" fi case $host_os in darwin*) lock_old_archive_extraction=yes ;; *) lock_old_archive_extraction=no ;; esac # If no C compiler was specified, use CC. LTCC=${LTCC-"$CC"} # If no C compiler flags were specified, use CFLAGS. LTCFLAGS=${LTCFLAGS-"$CFLAGS"} # Allow CC to be a program name with arguments. compiler=$CC # Check for command to grab the raw symbol name followed by C symbol from nm. { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking command to parse $NM output from $compiler object" >&5 printf %s "checking command to parse $NM output from $compiler object... " >&6; } if test ${lt_cv_sys_global_symbol_pipe+y} then : printf %s "(cached) " >&6 else case e in #( e) # These are sane defaults that work on at least a few old systems. # [They come from Ultrix. What could be older than Ultrix?!! ;)] # Character class describing NM global symbol codes. symcode='[BCDEGRST]' # Regexp to match symbols that can be accessed directly from C. sympat='\([_A-Za-z][_A-Za-z0-9]*\)' # Define system-specific variables. case $host_os in aix*) symcode='[BCDT]' ;; cygwin* | mingw* | pw32* | cegcc*) symcode='[ABCDGISTW]' ;; hpux*) if test ia64 = "$host_cpu"; then symcode='[ABCDEGRST]' fi ;; irix* | nonstopux*) symcode='[BCDEGRST]' ;; osf*) symcode='[BCDEGQRST]' ;; solaris*) symcode='[BDRT]' ;; sco3.2v5*) symcode='[DT]' ;; sysv4.2uw2*) symcode='[DT]' ;; sysv5* | sco5v6* | unixware* | OpenUNIX*) symcode='[ABDT]' ;; sysv4) symcode='[DFNSTU]' ;; esac # If we're using GNU nm, then use its standard symbol codes. case `$NM -V 2>&1` in *GNU* | *'with BFD'*) symcode='[ABCDGIRSTW]' ;; esac if test "$lt_cv_nm_interface" = "MS dumpbin"; then # Gets list of data symbols to import. lt_cv_sys_global_symbol_to_import="sed -n -e 's/^I .* \(.*\)$/\1/p'" # Adjust the below global symbol transforms to fixup imported variables. lt_cdecl_hook=" -e 's/^I .* \(.*\)$/extern __declspec(dllimport) char \1;/p'" lt_c_name_hook=" -e 's/^I .* \(.*\)$/ {\"\1\", (void *) 0},/p'" lt_c_name_lib_hook="\ -e 's/^I .* \(lib.*\)$/ {\"\1\", (void *) 0},/p'\ -e 's/^I .* \(.*\)$/ {\"lib\1\", (void *) 0},/p'" else # Disable hooks by default. lt_cv_sys_global_symbol_to_import= lt_cdecl_hook= lt_c_name_hook= lt_c_name_lib_hook= fi # Transform an extracted symbol line into a proper C declaration. # Some systems (esp. on ia64) link data and code symbols differently, # so use this general approach. lt_cv_sys_global_symbol_to_cdecl="sed -n"\ $lt_cdecl_hook\ " -e 's/^T .* \(.*\)$/extern int \1();/p'"\ " -e 's/^$symcode$symcode* .* \(.*\)$/extern char \1;/p'" # Transform an extracted symbol line into symbol name and symbol address lt_cv_sys_global_symbol_to_c_name_address="sed -n"\ $lt_c_name_hook\ " -e 's/^: \(.*\) .*$/ {\"\1\", (void *) 0},/p'"\ " -e 's/^$symcode$symcode* .* \(.*\)$/ {\"\1\", (void *) \&\1},/p'" # Transform an extracted symbol line into symbol name with lib prefix and # symbol address. lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n"\ $lt_c_name_lib_hook\ " -e 's/^: \(.*\) .*$/ {\"\1\", (void *) 0},/p'"\ " -e 's/^$symcode$symcode* .* \(lib.*\)$/ {\"\1\", (void *) \&\1},/p'"\ " -e 's/^$symcode$symcode* .* \(.*\)$/ {\"lib\1\", (void *) \&\1},/p'" # Handle CRLF in mingw tool chain opt_cr= case $build_os in mingw*) opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp ;; esac # Try without a prefix underscore, then with it. for ac_symprfx in "" "_"; do # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol. symxfrm="\\1 $ac_symprfx\\2 \\2" # Write the raw and C identifiers. if test "$lt_cv_nm_interface" = "MS dumpbin"; then # Fake it for dumpbin and say T for any non-static function, # D for any global variable and I for any imported variable. # Also find C++ and __fastcall symbols from MSVC++, # which start with @ or ?. lt_cv_sys_global_symbol_pipe="$AWK '"\ " {last_section=section; section=\$ 3};"\ " /^COFF SYMBOL TABLE/{for(i in hide) delete hide[i]};"\ " /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\ " /^ *Symbol name *: /{split(\$ 0,sn,\":\"); si=substr(sn[2],2)};"\ " /^ *Type *: code/{print \"T\",si,substr(si,length(prfx))};"\ " /^ *Type *: data/{print \"I\",si,substr(si,length(prfx))};"\ " \$ 0!~/External *\|/{next};"\ " / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\ " {if(hide[section]) next};"\ " {f=\"D\"}; \$ 0~/\(\).*\|/{f=\"T\"};"\ " {split(\$ 0,a,/\||\r/); split(a[2],s)};"\ " s[1]~/^[@?]/{print f,s[1],s[1]; next};"\ " s[1]~prfx {split(s[1],t,\"@\"); print f,t[1],substr(t[1],length(prfx))}"\ " ' prfx=^$ac_symprfx" else lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[ ]\($symcode$symcode*\)[ ][ ]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" fi lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | sed '/ __gnu_lto/d'" # Check to see that the pipe works correctly. pipe_works=no rm -f conftest* cat > conftest.$ac_ext <<_LT_EOF #ifdef __cplusplus extern "C" { #endif char nm_test_var; void nm_test_func(void); void nm_test_func(void){} #ifdef __cplusplus } #endif int main(){nm_test_var='a';nm_test_func();return(0);} _LT_EOF if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then # Now try to grab the symbols. nlist=conftest.nm if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist\""; } >&5 (eval $NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist) 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && test -s "$nlist"; then # Try sorting and uniquifying the output. if sort "$nlist" | uniq > "$nlist"T; then mv -f "$nlist"T "$nlist" else rm -f "$nlist"T fi # Make sure that we snagged all the symbols we need. if $GREP ' nm_test_var$' "$nlist" >/dev/null; then if $GREP ' nm_test_func$' "$nlist" >/dev/null; then cat <<_LT_EOF > conftest.$ac_ext /* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ #if defined _WIN32 || defined __CYGWIN__ || defined _WIN32_WCE /* DATA imports from DLLs on WIN32 can't be const, because runtime relocations are performed -- see ld's documentation on pseudo-relocs. */ # define LT_DLSYM_CONST #elif defined __osf__ /* This system does not cope well with relocations in const data. */ # define LT_DLSYM_CONST #else # define LT_DLSYM_CONST const #endif #ifdef __cplusplus extern "C" { #endif _LT_EOF # Now generate the symbol file. eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext' cat <<_LT_EOF >> conftest.$ac_ext /* The mapping between symbol names and symbols. */ LT_DLSYM_CONST struct { const char *name; void *address; } lt__PROGRAM__LTX_preloaded_symbols[] = { { "@PROGRAM@", (void *) 0 }, _LT_EOF $SED "s/^$symcode$symcode* .* \(.*\)$/ {\"\1\", (void *) \&\1},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext cat <<\_LT_EOF >> conftest.$ac_ext {0, (void *) 0} }; /* This works around a problem in FreeBSD linker */ #ifdef FREEBSD_WORKAROUND static const void *lt_preloaded_setup() { return lt__PROGRAM__LTX_preloaded_symbols; } #endif #ifdef __cplusplus } #endif _LT_EOF # Now try linking the two files. mv conftest.$ac_objext conftstm.$ac_objext lt_globsym_save_LIBS=$LIBS lt_globsym_save_CFLAGS=$CFLAGS LIBS=conftstm.$ac_objext CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag" if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 (eval $ac_link) 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && test -s conftest$ac_exeext; then pipe_works=yes fi LIBS=$lt_globsym_save_LIBS CFLAGS=$lt_globsym_save_CFLAGS else echo "cannot find nm_test_func in $nlist" >&5 fi else echo "cannot find nm_test_var in $nlist" >&5 fi else echo "cannot run $lt_cv_sys_global_symbol_pipe" >&5 fi else echo "$progname: failed program was:" >&5 cat conftest.$ac_ext >&5 fi rm -rf conftest* conftst* # Do not use the global_symbol_pipe unless it works. if test yes = "$pipe_works"; then break else lt_cv_sys_global_symbol_pipe= fi done ;; esac fi if test -z "$lt_cv_sys_global_symbol_pipe"; then lt_cv_sys_global_symbol_to_cdecl= fi if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: failed" >&5 printf "%s\n" "failed" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: ok" >&5 printf "%s\n" "ok" >&6; } fi # Response file support. if test "$lt_cv_nm_interface" = "MS dumpbin"; then nm_file_list_spec='@' elif $NM --help 2>/dev/null | grep '[@]FILE' >/dev/null; then nm_file_list_spec='@' fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for sysroot" >&5 printf %s "checking for sysroot... " >&6; } # Check whether --with-sysroot was given. if test ${with_sysroot+y} then : withval=$with_sysroot; else case e in #( e) with_sysroot=no ;; esac fi lt_sysroot= case $with_sysroot in #( yes) if test yes = "$GCC"; then lt_sysroot=`$CC --print-sysroot 2>/dev/null` fi ;; #( /*) lt_sysroot=`echo "$with_sysroot" | sed -e "$sed_quote_subst"` ;; #( no|'') ;; #( *) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $with_sysroot" >&5 printf "%s\n" "$with_sysroot" >&6; } as_fn_error $? "The sysroot must be an absolute path." "$LINENO" 5 ;; esac { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: ${lt_sysroot:-no}" >&5 printf "%s\n" "${lt_sysroot:-no}" >&6; } { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for a working dd" >&5 printf %s "checking for a working dd... " >&6; } if test ${ac_cv_path_lt_DD+y} then : printf %s "(cached) " >&6 else case e in #( e) printf 0123456789abcdef0123456789abcdef >conftest.i cat conftest.i conftest.i >conftest2.i : ${lt_DD:=$DD} if test -z "$lt_DD"; then ac_path_lt_DD_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_prog in dd do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_lt_DD="$as_dir$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_lt_DD" || continue if "$ac_path_lt_DD" bs=32 count=1 conftest.out 2>/dev/null; then cmp -s conftest.i conftest.out \ && ac_cv_path_lt_DD="$ac_path_lt_DD" ac_path_lt_DD_found=: fi $ac_path_lt_DD_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_lt_DD"; then : fi else ac_cv_path_lt_DD=$lt_DD fi rm -f conftest.i conftest2.i conftest.out ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_lt_DD" >&5 printf "%s\n" "$ac_cv_path_lt_DD" >&6; } { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to truncate binary pipes" >&5 printf %s "checking how to truncate binary pipes... " >&6; } if test ${lt_cv_truncate_bin+y} then : printf %s "(cached) " >&6 else case e in #( e) printf 0123456789abcdef0123456789abcdef >conftest.i cat conftest.i conftest.i >conftest2.i lt_cv_truncate_bin= if "$ac_cv_path_lt_DD" bs=32 count=1 conftest.out 2>/dev/null; then cmp -s conftest.i conftest.out \ && lt_cv_truncate_bin="$ac_cv_path_lt_DD bs=4096 count=1" fi rm -f conftest.i conftest2.i conftest.out test -z "$lt_cv_truncate_bin" && lt_cv_truncate_bin="$SED -e 4q" ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_truncate_bin" >&5 printf "%s\n" "$lt_cv_truncate_bin" >&6; } # Calculate cc_basename. Skip known compiler wrappers and cross-prefix. func_cc_basename () { for cc_temp in $*""; do case $cc_temp in compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; \-*) ;; *) break;; esac done func_cc_basename_result=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` } # Check whether --enable-libtool-lock was given. if test ${enable_libtool_lock+y} then : enableval=$enable_libtool_lock; fi test no = "$enable_libtool_lock" || enable_libtool_lock=yes # Some flags need to be propagated to the compiler or linker for good # libtool support. case $host in ia64-*-hpux*) # Find out what ABI is being produced by ac_compile, and set mode # options accordingly. echo 'int i;' > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then case `/usr/bin/file conftest.$ac_objext` in *ELF-32*) HPUX_IA64_MODE=32 ;; *ELF-64*) HPUX_IA64_MODE=64 ;; esac fi rm -rf conftest* ;; *-*-irix6*) # Find out what ABI is being produced by ac_compile, and set linker # options accordingly. echo '#line '$LINENO' "configure"' > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then if test yes = "$lt_cv_prog_gnu_ld"; then case `/usr/bin/file conftest.$ac_objext` in *32-bit*) LD="${LD-ld} -melf32bsmip" ;; *N32*) LD="${LD-ld} -melf32bmipn32" ;; *64-bit*) LD="${LD-ld} -melf64bmip" ;; esac else case `/usr/bin/file conftest.$ac_objext` in *32-bit*) LD="${LD-ld} -32" ;; *N32*) LD="${LD-ld} -n32" ;; *64-bit*) LD="${LD-ld} -64" ;; esac fi fi rm -rf conftest* ;; mips64*-*linux*) # Find out what ABI is being produced by ac_compile, and set linker # options accordingly. echo '#line '$LINENO' "configure"' > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then emul=elf case `/usr/bin/file conftest.$ac_objext` in *32-bit*) emul="${emul}32" ;; *64-bit*) emul="${emul}64" ;; esac case `/usr/bin/file conftest.$ac_objext` in *MSB*) emul="${emul}btsmip" ;; *LSB*) emul="${emul}ltsmip" ;; esac case `/usr/bin/file conftest.$ac_objext` in *N32*) emul="${emul}n32" ;; esac LD="${LD-ld} -m $emul" fi rm -rf conftest* ;; x86_64-*kfreebsd*-gnu|x86_64-*linux*|powerpc*-*linux*| \ s390*-*linux*|s390*-*tpf*|sparc*-*linux*) # Find out what ABI is being produced by ac_compile, and set linker # options accordingly. Note that the listed cases only cover the # situations where additional linker options are needed (such as when # doing 32-bit compilation for a host where ld defaults to 64-bit, or # vice versa); the common cases where no linker options are needed do # not appear in the list. echo 'int i;' > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then case `/usr/bin/file conftest.o` in *32-bit*) case $host in x86_64-*kfreebsd*-gnu) LD="${LD-ld} -m elf_i386_fbsd" ;; x86_64-*linux*) case `/usr/bin/file conftest.o` in *x86-64*) LD="${LD-ld} -m elf32_x86_64" ;; *) LD="${LD-ld} -m elf_i386" ;; esac ;; powerpc64le-*linux*) LD="${LD-ld} -m elf32lppclinux" ;; powerpc64-*linux*) LD="${LD-ld} -m elf32ppclinux" ;; s390x-*linux*) LD="${LD-ld} -m elf_s390" ;; sparc64-*linux*) LD="${LD-ld} -m elf32_sparc" ;; esac ;; *64-bit*) case $host in x86_64-*kfreebsd*-gnu) LD="${LD-ld} -m elf_x86_64_fbsd" ;; x86_64-*linux*) LD="${LD-ld} -m elf_x86_64" ;; powerpcle-*linux*) LD="${LD-ld} -m elf64lppc" ;; powerpc-*linux*) LD="${LD-ld} -m elf64ppc" ;; s390*-*linux*|s390*-*tpf*) LD="${LD-ld} -m elf64_s390" ;; sparc*-*linux*) LD="${LD-ld} -m elf64_sparc" ;; esac ;; esac fi rm -rf conftest* ;; *-*-sco3.2v5*) # On SCO OpenServer 5, we need -belf to get full-featured binaries. SAVE_CFLAGS=$CFLAGS CFLAGS="$CFLAGS -belf" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the C compiler needs -belf" >&5 printf %s "checking whether the C compiler needs -belf... " >&6; } if test ${lt_cv_cc_needs_belf+y} then : printf %s "(cached) " >&6 else case e in #( e) ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : lt_cv_cc_needs_belf=yes else case e in #( e) lt_cv_cc_needs_belf=no ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_cc_needs_belf" >&5 printf "%s\n" "$lt_cv_cc_needs_belf" >&6; } if test yes != "$lt_cv_cc_needs_belf"; then # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf CFLAGS=$SAVE_CFLAGS fi ;; *-*solaris*) # Find out what ABI is being produced by ac_compile, and set linker # options accordingly. echo 'int i;' > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then case `/usr/bin/file conftest.o` in *64-bit*) case $lt_cv_prog_gnu_ld in yes*) case $host in i?86-*-solaris*|x86_64-*-solaris*) LD="${LD-ld} -m elf_x86_64" ;; sparc*-*-solaris*) LD="${LD-ld} -m elf64_sparc" ;; esac # GNU ld 2.21 introduced _sol2 emulations. Use them if available. if ${LD-ld} -V | grep _sol2 >/dev/null 2>&1; then LD=${LD-ld}_sol2 fi ;; *) if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then LD="${LD-ld} -64" fi ;; esac ;; esac fi rm -rf conftest* ;; esac need_locks=$enable_libtool_lock if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}mt", so it can be a program name with args. set dummy ${ac_tool_prefix}mt; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_MANIFEST_TOOL+y} then : printf %s "(cached) " >&6 else case e in #( e) if test -n "$MANIFEST_TOOL"; then ac_cv_prog_MANIFEST_TOOL="$MANIFEST_TOOL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_MANIFEST_TOOL="${ac_tool_prefix}mt" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi ;; esac fi MANIFEST_TOOL=$ac_cv_prog_MANIFEST_TOOL if test -n "$MANIFEST_TOOL"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $MANIFEST_TOOL" >&5 printf "%s\n" "$MANIFEST_TOOL" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$ac_cv_prog_MANIFEST_TOOL"; then ac_ct_MANIFEST_TOOL=$MANIFEST_TOOL # Extract the first word of "mt", so it can be a program name with args. set dummy mt; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_MANIFEST_TOOL+y} then : printf %s "(cached) " >&6 else case e in #( e) if test -n "$ac_ct_MANIFEST_TOOL"; then ac_cv_prog_ac_ct_MANIFEST_TOOL="$ac_ct_MANIFEST_TOOL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_MANIFEST_TOOL="mt" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi ;; esac fi ac_ct_MANIFEST_TOOL=$ac_cv_prog_ac_ct_MANIFEST_TOOL if test -n "$ac_ct_MANIFEST_TOOL"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_MANIFEST_TOOL" >&5 printf "%s\n" "$ac_ct_MANIFEST_TOOL" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$ac_ct_MANIFEST_TOOL" = x; then MANIFEST_TOOL=":" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac MANIFEST_TOOL=$ac_ct_MANIFEST_TOOL fi else MANIFEST_TOOL="$ac_cv_prog_MANIFEST_TOOL" fi test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $MANIFEST_TOOL is a manifest tool" >&5 printf %s "checking if $MANIFEST_TOOL is a manifest tool... " >&6; } if test ${lt_cv_path_mainfest_tool+y} then : printf %s "(cached) " >&6 else case e in #( e) lt_cv_path_mainfest_tool=no echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&5 $MANIFEST_TOOL '-?' 2>conftest.err > conftest.out cat conftest.err >&5 if $GREP 'Manifest Tool' conftest.out > /dev/null; then lt_cv_path_mainfest_tool=yes fi rm -f conftest* ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_mainfest_tool" >&5 printf "%s\n" "$lt_cv_path_mainfest_tool" >&6; } if test yes != "$lt_cv_path_mainfest_tool"; then MANIFEST_TOOL=: fi case $host_os in rhapsody* | darwin*) if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}dsymutil", so it can be a program name with args. set dummy ${ac_tool_prefix}dsymutil; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_DSYMUTIL+y} then : printf %s "(cached) " >&6 else case e in #( e) if test -n "$DSYMUTIL"; then ac_cv_prog_DSYMUTIL="$DSYMUTIL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_DSYMUTIL="${ac_tool_prefix}dsymutil" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi ;; esac fi DSYMUTIL=$ac_cv_prog_DSYMUTIL if test -n "$DSYMUTIL"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $DSYMUTIL" >&5 printf "%s\n" "$DSYMUTIL" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$ac_cv_prog_DSYMUTIL"; then ac_ct_DSYMUTIL=$DSYMUTIL # Extract the first word of "dsymutil", so it can be a program name with args. set dummy dsymutil; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_DSYMUTIL+y} then : printf %s "(cached) " >&6 else case e in #( e) if test -n "$ac_ct_DSYMUTIL"; then ac_cv_prog_ac_ct_DSYMUTIL="$ac_ct_DSYMUTIL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_DSYMUTIL="dsymutil" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi ;; esac fi ac_ct_DSYMUTIL=$ac_cv_prog_ac_ct_DSYMUTIL if test -n "$ac_ct_DSYMUTIL"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DSYMUTIL" >&5 printf "%s\n" "$ac_ct_DSYMUTIL" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$ac_ct_DSYMUTIL" = x; then DSYMUTIL=":" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac DSYMUTIL=$ac_ct_DSYMUTIL fi else DSYMUTIL="$ac_cv_prog_DSYMUTIL" fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}nmedit", so it can be a program name with args. set dummy ${ac_tool_prefix}nmedit; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_NMEDIT+y} then : printf %s "(cached) " >&6 else case e in #( e) if test -n "$NMEDIT"; then ac_cv_prog_NMEDIT="$NMEDIT" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_NMEDIT="${ac_tool_prefix}nmedit" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi ;; esac fi NMEDIT=$ac_cv_prog_NMEDIT if test -n "$NMEDIT"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $NMEDIT" >&5 printf "%s\n" "$NMEDIT" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$ac_cv_prog_NMEDIT"; then ac_ct_NMEDIT=$NMEDIT # Extract the first word of "nmedit", so it can be a program name with args. set dummy nmedit; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_NMEDIT+y} then : printf %s "(cached) " >&6 else case e in #( e) if test -n "$ac_ct_NMEDIT"; then ac_cv_prog_ac_ct_NMEDIT="$ac_ct_NMEDIT" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_NMEDIT="nmedit" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi ;; esac fi ac_ct_NMEDIT=$ac_cv_prog_ac_ct_NMEDIT if test -n "$ac_ct_NMEDIT"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_NMEDIT" >&5 printf "%s\n" "$ac_ct_NMEDIT" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$ac_ct_NMEDIT" = x; then NMEDIT=":" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac NMEDIT=$ac_ct_NMEDIT fi else NMEDIT="$ac_cv_prog_NMEDIT" fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}lipo", so it can be a program name with args. set dummy ${ac_tool_prefix}lipo; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_LIPO+y} then : printf %s "(cached) " >&6 else case e in #( e) if test -n "$LIPO"; then ac_cv_prog_LIPO="$LIPO" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_LIPO="${ac_tool_prefix}lipo" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi ;; esac fi LIPO=$ac_cv_prog_LIPO if test -n "$LIPO"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $LIPO" >&5 printf "%s\n" "$LIPO" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$ac_cv_prog_LIPO"; then ac_ct_LIPO=$LIPO # Extract the first word of "lipo", so it can be a program name with args. set dummy lipo; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_LIPO+y} then : printf %s "(cached) " >&6 else case e in #( e) if test -n "$ac_ct_LIPO"; then ac_cv_prog_ac_ct_LIPO="$ac_ct_LIPO" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_LIPO="lipo" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi ;; esac fi ac_ct_LIPO=$ac_cv_prog_ac_ct_LIPO if test -n "$ac_ct_LIPO"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_LIPO" >&5 printf "%s\n" "$ac_ct_LIPO" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$ac_ct_LIPO" = x; then LIPO=":" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac LIPO=$ac_ct_LIPO fi else LIPO="$ac_cv_prog_LIPO" fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}otool", so it can be a program name with args. set dummy ${ac_tool_prefix}otool; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_OTOOL+y} then : printf %s "(cached) " >&6 else case e in #( e) if test -n "$OTOOL"; then ac_cv_prog_OTOOL="$OTOOL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_OTOOL="${ac_tool_prefix}otool" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi ;; esac fi OTOOL=$ac_cv_prog_OTOOL if test -n "$OTOOL"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $OTOOL" >&5 printf "%s\n" "$OTOOL" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$ac_cv_prog_OTOOL"; then ac_ct_OTOOL=$OTOOL # Extract the first word of "otool", so it can be a program name with args. set dummy otool; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_OTOOL+y} then : printf %s "(cached) " >&6 else case e in #( e) if test -n "$ac_ct_OTOOL"; then ac_cv_prog_ac_ct_OTOOL="$ac_ct_OTOOL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_OTOOL="otool" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi ;; esac fi ac_ct_OTOOL=$ac_cv_prog_ac_ct_OTOOL if test -n "$ac_ct_OTOOL"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL" >&5 printf "%s\n" "$ac_ct_OTOOL" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$ac_ct_OTOOL" = x; then OTOOL=":" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac OTOOL=$ac_ct_OTOOL fi else OTOOL="$ac_cv_prog_OTOOL" fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}otool64", so it can be a program name with args. set dummy ${ac_tool_prefix}otool64; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_OTOOL64+y} then : printf %s "(cached) " >&6 else case e in #( e) if test -n "$OTOOL64"; then ac_cv_prog_OTOOL64="$OTOOL64" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_OTOOL64="${ac_tool_prefix}otool64" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi ;; esac fi OTOOL64=$ac_cv_prog_OTOOL64 if test -n "$OTOOL64"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $OTOOL64" >&5 printf "%s\n" "$OTOOL64" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$ac_cv_prog_OTOOL64"; then ac_ct_OTOOL64=$OTOOL64 # Extract the first word of "otool64", so it can be a program name with args. set dummy otool64; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_OTOOL64+y} then : printf %s "(cached) " >&6 else case e in #( e) if test -n "$ac_ct_OTOOL64"; then ac_cv_prog_ac_ct_OTOOL64="$ac_ct_OTOOL64" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_OTOOL64="otool64" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi ;; esac fi ac_ct_OTOOL64=$ac_cv_prog_ac_ct_OTOOL64 if test -n "$ac_ct_OTOOL64"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL64" >&5 printf "%s\n" "$ac_ct_OTOOL64" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$ac_ct_OTOOL64" = x; then OTOOL64=":" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac OTOOL64=$ac_ct_OTOOL64 fi else OTOOL64="$ac_cv_prog_OTOOL64" fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for -single_module linker flag" >&5 printf %s "checking for -single_module linker flag... " >&6; } if test ${lt_cv_apple_cc_single_mod+y} then : printf %s "(cached) " >&6 else case e in #( e) lt_cv_apple_cc_single_mod=no if test -z "$LT_MULTI_MODULE"; then # By default we will add the -single_module flag. You can override # by either setting the environment variable LT_MULTI_MODULE # non-empty at configure time, or by adding -multi_module to the # link flags. rm -rf libconftest.dylib* echo "int foo(void){return 1;}" > conftest.c echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ -dynamiclib -Wl,-single_module conftest.c" >&5 $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ -dynamiclib -Wl,-single_module conftest.c 2>conftest.err _lt_result=$? # If there is a non-empty error log, and "single_module" # appears in it, assume the flag caused a linker warning if test -s conftest.err && $GREP single_module conftest.err; then cat conftest.err >&5 # Otherwise, if the output was created with a 0 exit code from # the compiler, it worked. elif test -f libconftest.dylib && test 0 = "$_lt_result"; then lt_cv_apple_cc_single_mod=yes else cat conftest.err >&5 fi rm -rf libconftest.dylib* rm -f conftest.* fi ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_apple_cc_single_mod" >&5 printf "%s\n" "$lt_cv_apple_cc_single_mod" >&6; } { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for -exported_symbols_list linker flag" >&5 printf %s "checking for -exported_symbols_list linker flag... " >&6; } if test ${lt_cv_ld_exported_symbols_list+y} then : printf %s "(cached) " >&6 else case e in #( e) lt_cv_ld_exported_symbols_list=no save_LDFLAGS=$LDFLAGS echo "_main" > conftest.sym LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : lt_cv_ld_exported_symbols_list=yes else case e in #( e) lt_cv_ld_exported_symbols_list=no ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LDFLAGS=$save_LDFLAGS ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_exported_symbols_list" >&5 printf "%s\n" "$lt_cv_ld_exported_symbols_list" >&6; } { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for -force_load linker flag" >&5 printf %s "checking for -force_load linker flag... " >&6; } if test ${lt_cv_ld_force_load+y} then : printf %s "(cached) " >&6 else case e in #( e) lt_cv_ld_force_load=no cat > conftest.c << _LT_EOF int forced_loaded() { return 2;} _LT_EOF echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&5 $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&5 echo "$AR cru libconftest.a conftest.o" >&5 $AR cru libconftest.a conftest.o 2>&5 echo "$RANLIB libconftest.a" >&5 $RANLIB libconftest.a 2>&5 cat > conftest.c << _LT_EOF int main() { return 0;} _LT_EOF echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&5 $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err _lt_result=$? if test -s conftest.err && $GREP force_load conftest.err; then cat conftest.err >&5 elif test -f conftest && test 0 = "$_lt_result" && $GREP forced_load conftest >/dev/null 2>&1; then lt_cv_ld_force_load=yes else cat conftest.err >&5 fi rm -f conftest.err libconftest.a conftest conftest.c rm -rf conftest.dSYM ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_force_load" >&5 printf "%s\n" "$lt_cv_ld_force_load" >&6; } case $host_os in rhapsody* | darwin1.[012]) _lt_dar_allow_undefined='$wl-undefined ${wl}suppress' ;; darwin1.*) _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;; darwin*) # darwin 5.x on # if running on 10.5 or later, the deployment target defaults # to the OS version, if on x86, and 10.4, the deployment # target defaults to 10.4. Don't you love it? case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in 10.0,*86*-darwin8*|10.0,*-darwin[91]*) _lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup' ;; 10.[012][,.]*) _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;; 10.*) _lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup' ;; esac ;; esac if test yes = "$lt_cv_apple_cc_single_mod"; then _lt_dar_single_mod='$single_module' fi if test yes = "$lt_cv_ld_exported_symbols_list"; then _lt_dar_export_syms=' $wl-exported_symbols_list,$output_objdir/$libname-symbols.expsym' else _lt_dar_export_syms='~$NMEDIT -s $output_objdir/$libname-symbols.expsym $lib' fi if test : != "$DSYMUTIL" && test no = "$lt_cv_ld_force_load"; then _lt_dsymutil='~$DSYMUTIL $lib || :' else _lt_dsymutil= fi ;; esac # func_munge_path_list VARIABLE PATH # ----------------------------------- # VARIABLE is name of variable containing _space_ separated list of # directories to be munged by the contents of PATH, which is string # having a format: # "DIR[:DIR]:" # string "DIR[ DIR]" will be prepended to VARIABLE # ":DIR[:DIR]" # string "DIR[ DIR]" will be appended to VARIABLE # "DIRP[:DIRP]::[DIRA:]DIRA" # string "DIRP[ DIRP]" will be prepended to VARIABLE and string # "DIRA[ DIRA]" will be appended to VARIABLE # "DIR[:DIR]" # VARIABLE will be replaced by "DIR[ DIR]" func_munge_path_list () { case x$2 in x) ;; *:) eval $1=\"`$ECHO $2 | $SED 's/:/ /g'` \$$1\" ;; x:*) eval $1=\"\$$1 `$ECHO $2 | $SED 's/:/ /g'`\" ;; *::*) eval $1=\"\$$1\ `$ECHO $2 | $SED -e 's/.*:://' -e 's/:/ /g'`\" eval $1=\"`$ECHO $2 | $SED -e 's/::.*//' -e 's/:/ /g'`\ \$$1\" ;; *) eval $1=\"`$ECHO $2 | $SED 's/:/ /g'`\" ;; esac } ac_header= ac_cache= for ac_item in $ac_header_c_list do if test $ac_cache; then ac_fn_c_check_header_compile "$LINENO" $ac_header ac_cv_header_$ac_cache "$ac_includes_default" if eval test \"x\$ac_cv_header_$ac_cache\" = xyes; then printf "%s\n" "#define $ac_item 1" >> confdefs.h fi ac_header= ac_cache= elif test $ac_header; then ac_cache=$ac_item else ac_header=$ac_item fi done if test $ac_cv_header_stdlib_h = yes && test $ac_cv_header_string_h = yes then : printf "%s\n" "#define STDC_HEADERS 1" >>confdefs.h fi ac_fn_c_check_header_compile "$LINENO" "dlfcn.h" "ac_cv_header_dlfcn_h" "$ac_includes_default " if test "x$ac_cv_header_dlfcn_h" = xyes then : printf "%s\n" "#define HAVE_DLFCN_H 1" >>confdefs.h fi func_stripname_cnf () { case $2 in .*) func_stripname_result=`$ECHO "$3" | $SED "s%^$1%%; s%\\\\$2\$%%"`;; *) func_stripname_result=`$ECHO "$3" | $SED "s%^$1%%; s%$2\$%%"`;; esac } # func_stripname_cnf # Set options # Check whether --enable-shared was given. if test ${enable_shared+y} then : enableval=$enable_shared; p=${PACKAGE-default} case $enableval in yes) enable_shared=yes ;; no) enable_shared=no ;; *) enable_shared=no # Look at the argument we got. We use all the common list separators. lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, for pkg in $enableval; do IFS=$lt_save_ifs if test "X$pkg" = "X$p"; then enable_shared=yes fi done IFS=$lt_save_ifs ;; esac else case e in #( e) enable_shared=yes ;; esac fi enable_dlopen=no enable_win32_dll=no # Check whether --enable-static was given. if test ${enable_static+y} then : enableval=$enable_static; p=${PACKAGE-default} case $enableval in yes) enable_static=yes ;; no) enable_static=no ;; *) enable_static=no # Look at the argument we got. We use all the common list separators. lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, for pkg in $enableval; do IFS=$lt_save_ifs if test "X$pkg" = "X$p"; then enable_static=yes fi done IFS=$lt_save_ifs ;; esac else case e in #( e) enable_static=yes ;; esac fi # Check whether --with-pic was given. if test ${with_pic+y} then : withval=$with_pic; lt_p=${PACKAGE-default} case $withval in yes|no) pic_mode=$withval ;; *) pic_mode=default # Look at the argument we got. We use all the common list separators. lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, for lt_pkg in $withval; do IFS=$lt_save_ifs if test "X$lt_pkg" = "X$lt_p"; then pic_mode=yes fi done IFS=$lt_save_ifs ;; esac else case e in #( e) pic_mode=default ;; esac fi # Check whether --enable-fast-install was given. if test ${enable_fast_install+y} then : enableval=$enable_fast_install; p=${PACKAGE-default} case $enableval in yes) enable_fast_install=yes ;; no) enable_fast_install=no ;; *) enable_fast_install=no # Look at the argument we got. We use all the common list separators. lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, for pkg in $enableval; do IFS=$lt_save_ifs if test "X$pkg" = "X$p"; then enable_fast_install=yes fi done IFS=$lt_save_ifs ;; esac else case e in #( e) enable_fast_install=yes ;; esac fi shared_archive_member_spec= case $host,$enable_shared in power*-*-aix[5-9]*,yes) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking which variant of shared library versioning to provide" >&5 printf %s "checking which variant of shared library versioning to provide... " >&6; } # Check whether --with-aix-soname was given. if test ${with_aix_soname+y} then : withval=$with_aix_soname; case $withval in aix|svr4|both) ;; *) as_fn_error $? "Unknown argument to --with-aix-soname" "$LINENO" 5 ;; esac lt_cv_with_aix_soname=$with_aix_soname else case e in #( e) if test ${lt_cv_with_aix_soname+y} then : printf %s "(cached) " >&6 else case e in #( e) lt_cv_with_aix_soname=aix ;; esac fi with_aix_soname=$lt_cv_with_aix_soname ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $with_aix_soname" >&5 printf "%s\n" "$with_aix_soname" >&6; } if test aix != "$with_aix_soname"; then # For the AIX way of multilib, we name the shared archive member # based on the bitwidth used, traditionally 'shr.o' or 'shr_64.o', # and 'shr.imp' or 'shr_64.imp', respectively, for the Import File. # Even when GNU compilers ignore OBJECT_MODE but need '-maix64' flag, # the AIX toolchain works better with OBJECT_MODE set (default 32). if test 64 = "${OBJECT_MODE-32}"; then shared_archive_member_spec=shr_64 else shared_archive_member_spec=shr fi fi ;; *) with_aix_soname=aix ;; esac # This can be used to rebuild libtool when needed LIBTOOL_DEPS=$ltmain # Always use our own libtool. LIBTOOL='$(SHELL) $(top_builddir)/libtool' test -z "$LN_S" && LN_S="ln -s" if test -n "${ZSH_VERSION+set}"; then setopt NO_GLOB_SUBST fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for objdir" >&5 printf %s "checking for objdir... " >&6; } if test ${lt_cv_objdir+y} then : printf %s "(cached) " >&6 else case e in #( e) rm -f .libs 2>/dev/null mkdir .libs 2>/dev/null if test -d .libs; then lt_cv_objdir=.libs else # MS-DOS does not allow filenames that begin with a dot. lt_cv_objdir=_libs fi rmdir .libs 2>/dev/null ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_objdir" >&5 printf "%s\n" "$lt_cv_objdir" >&6; } objdir=$lt_cv_objdir printf "%s\n" "#define LT_OBJDIR \"$lt_cv_objdir/\"" >>confdefs.h case $host_os in aix3*) # AIX sometimes has problems with the GCC collect2 program. For some # reason, if we set the COLLECT_NAMES environment variable, the problems # vanish in a puff of smoke. if test set != "${COLLECT_NAMES+set}"; then COLLECT_NAMES= export COLLECT_NAMES fi ;; esac # Global variables: ofile=libtool can_build_shared=yes # All known linkers require a '.a' archive for static linking (except MSVC, # which needs '.lib'). libext=a with_gnu_ld=$lt_cv_prog_gnu_ld old_CC=$CC old_CFLAGS=$CFLAGS # Set sane defaults for various variables test -z "$CC" && CC=cc test -z "$LTCC" && LTCC=$CC test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS test -z "$LD" && LD=ld test -z "$ac_objext" && ac_objext=o func_cc_basename $compiler cc_basename=$func_cc_basename_result # Only perform the check for file, if the check method requires it test -z "$MAGIC_CMD" && MAGIC_CMD=file case $deplibs_check_method in file_magic*) if test "$file_magic_cmd" = '$MAGIC_CMD'; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for ${ac_tool_prefix}file" >&5 printf %s "checking for ${ac_tool_prefix}file... " >&6; } if test ${lt_cv_path_MAGIC_CMD+y} then : printf %s "(cached) " >&6 else case e in #( e) case $MAGIC_CMD in [\\/*] | ?:[\\/]*) lt_cv_path_MAGIC_CMD=$MAGIC_CMD # Let the user override the test with a path. ;; *) lt_save_MAGIC_CMD=$MAGIC_CMD lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" for ac_dir in $ac_dummy; do IFS=$lt_save_ifs test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/${ac_tool_prefix}file"; then lt_cv_path_MAGIC_CMD=$ac_dir/"${ac_tool_prefix}file" if test -n "$file_magic_test_file"; then case $deplibs_check_method in "file_magic "*) file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` MAGIC_CMD=$lt_cv_path_MAGIC_CMD if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | $EGREP "$file_magic_regex" > /dev/null; then : else cat <<_LT_EOF 1>&2 *** Warning: the command libtool uses to detect shared libraries, *** $file_magic_cmd, produces output that libtool cannot recognize. *** The result is that libtool may fail to recognize shared libraries *** as such. This will affect the creation of libtool libraries that *** depend on shared libraries, but programs linked with such libtool *** libraries will work regardless of this problem. Nevertheless, you *** may want to report the problem to your system manager and/or to *** bug-libtool@gnu.org _LT_EOF fi ;; esac fi break fi done IFS=$lt_save_ifs MAGIC_CMD=$lt_save_MAGIC_CMD ;; esac ;; esac fi MAGIC_CMD=$lt_cv_path_MAGIC_CMD if test -n "$MAGIC_CMD"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5 printf "%s\n" "$MAGIC_CMD" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test -z "$lt_cv_path_MAGIC_CMD"; then if test -n "$ac_tool_prefix"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for file" >&5 printf %s "checking for file... " >&6; } if test ${lt_cv_path_MAGIC_CMD+y} then : printf %s "(cached) " >&6 else case e in #( e) case $MAGIC_CMD in [\\/*] | ?:[\\/]*) lt_cv_path_MAGIC_CMD=$MAGIC_CMD # Let the user override the test with a path. ;; *) lt_save_MAGIC_CMD=$MAGIC_CMD lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" for ac_dir in $ac_dummy; do IFS=$lt_save_ifs test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/file"; then lt_cv_path_MAGIC_CMD=$ac_dir/"file" if test -n "$file_magic_test_file"; then case $deplibs_check_method in "file_magic "*) file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` MAGIC_CMD=$lt_cv_path_MAGIC_CMD if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | $EGREP "$file_magic_regex" > /dev/null; then : else cat <<_LT_EOF 1>&2 *** Warning: the command libtool uses to detect shared libraries, *** $file_magic_cmd, produces output that libtool cannot recognize. *** The result is that libtool may fail to recognize shared libraries *** as such. This will affect the creation of libtool libraries that *** depend on shared libraries, but programs linked with such libtool *** libraries will work regardless of this problem. Nevertheless, you *** may want to report the problem to your system manager and/or to *** bug-libtool@gnu.org _LT_EOF fi ;; esac fi break fi done IFS=$lt_save_ifs MAGIC_CMD=$lt_save_MAGIC_CMD ;; esac ;; esac fi MAGIC_CMD=$lt_cv_path_MAGIC_CMD if test -n "$MAGIC_CMD"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5 printf "%s\n" "$MAGIC_CMD" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi else MAGIC_CMD=: fi fi fi ;; esac # Use C for the default configuration in the libtool script lt_save_CC=$CC ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu # Source file extension for C test sources. ac_ext=c # Object file extension for compiled C test sources. objext=o objext=$objext # Code to be used in simple compile tests lt_simple_compile_test_code="int some_variable = 0;" # Code to be used in simple link tests lt_simple_link_test_code='int main(){return(0);}' # If no C compiler was specified, use CC. LTCC=${LTCC-"$CC"} # If no C compiler flags were specified, use CFLAGS. LTCFLAGS=${LTCFLAGS-"$CFLAGS"} # Allow CC to be a program name with arguments. compiler=$CC # Save the default compiler, since it gets overwritten when the other # tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP. compiler_DEFAULT=$CC # save warnings/boilerplate of simple test code ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" >conftest.$ac_ext eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_compiler_boilerplate=`cat conftest.err` $RM conftest* ac_outfile=conftest.$ac_objext echo "$lt_simple_link_test_code" >conftest.$ac_ext eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_linker_boilerplate=`cat conftest.err` $RM -r conftest* ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change ## the running order or otherwise move them around unless you know exactly ## what you are doing... if test -n "$compiler"; then lt_prog_compiler_no_builtin_flag= if test yes = "$GCC"; then case $cc_basename in nvcc*) lt_prog_compiler_no_builtin_flag=' -Xcompiler -fno-builtin' ;; *) lt_prog_compiler_no_builtin_flag=' -fno-builtin' ;; esac { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 printf %s "checking if $compiler supports -fno-rtti -fno-exceptions... " >&6; } if test ${lt_cv_prog_compiler_rtti_exceptions+y} then : printf %s "(cached) " >&6 else case e in #( e) lt_cv_prog_compiler_rtti_exceptions=no ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-fno-rtti -fno-exceptions" ## exclude from sc_useless_quotes_in_assignment # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. # The option is referenced via a variable to avoid confusing sed. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler_rtti_exceptions=yes fi fi $RM conftest* ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_rtti_exceptions" >&5 printf "%s\n" "$lt_cv_prog_compiler_rtti_exceptions" >&6; } if test yes = "$lt_cv_prog_compiler_rtti_exceptions"; then lt_prog_compiler_no_builtin_flag="$lt_prog_compiler_no_builtin_flag -fno-rtti -fno-exceptions" else : fi fi lt_prog_compiler_wl= lt_prog_compiler_pic= lt_prog_compiler_static= if test yes = "$GCC"; then lt_prog_compiler_wl='-Wl,' lt_prog_compiler_static='-static' case $host_os in aix*) # All AIX code is PIC. if test ia64 = "$host_cpu"; then # AIX 5 now supports IA64 processor lt_prog_compiler_static='-Bstatic' fi lt_prog_compiler_pic='-fPIC' ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support lt_prog_compiler_pic='-fPIC' ;; m68k) # FIXME: we need at least 68020 code to build shared libraries, but # adding the '-m68020' flag to GCC prevents building anything better, # like '-m68040'. lt_prog_compiler_pic='-m68020 -resident32 -malways-restore-a4' ;; esac ;; beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) # PIC is the default for these OSes. ;; mingw* | cygwin* | pw32* | os2* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). # Although the cygwin gcc ignores -fPIC, still need this for old-style # (--disable-auto-import) libraries lt_prog_compiler_pic='-DDLL_EXPORT' case $host_os in os2*) lt_prog_compiler_static='$wl-static' ;; esac ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files lt_prog_compiler_pic='-fno-common' ;; haiku*) # PIC is the default for Haiku. # The "-static" flag exists, but is broken. lt_prog_compiler_static= ;; hpux*) # PIC is the default for 64-bit PA HP-UX, but not for 32-bit # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag # sets the default TLS model and affects inlining. case $host_cpu in hppa*64*) # +Z the default ;; *) lt_prog_compiler_pic='-fPIC' ;; esac ;; interix[3-9]*) # Interix 3.x gcc -fpic/-fPIC options generate broken code. # Instead, we relocate shared libraries at runtime. ;; msdosdjgpp*) # Just because we use GCC doesn't mean we suddenly get shared libraries # on systems that don't support them. lt_prog_compiler_can_build_shared=no enable_shared=no ;; *nto* | *qnx*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. lt_prog_compiler_pic='-fPIC -shared' ;; sysv4*MP*) if test -d /usr/nec; then lt_prog_compiler_pic=-Kconform_pic fi ;; *) lt_prog_compiler_pic='-fPIC' ;; esac case $cc_basename in nvcc*) # Cuda Compiler Driver 2.2 lt_prog_compiler_wl='-Xlinker ' if test -n "$lt_prog_compiler_pic"; then lt_prog_compiler_pic="-Xcompiler $lt_prog_compiler_pic" fi ;; esac else # PORTME Check for flag to pass linker flags through the system compiler. case $host_os in aix*) lt_prog_compiler_wl='-Wl,' if test ia64 = "$host_cpu"; then # AIX 5 now supports IA64 processor lt_prog_compiler_static='-Bstatic' else lt_prog_compiler_static='-bnso -bI:/lib/syscalls.exp' fi ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files lt_prog_compiler_pic='-fno-common' case $cc_basename in nagfor*) # NAG Fortran compiler lt_prog_compiler_wl='-Wl,-Wl,,' lt_prog_compiler_pic='-PIC' lt_prog_compiler_static='-Bstatic' ;; esac ;; mingw* | cygwin* | pw32* | os2* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). lt_prog_compiler_pic='-DDLL_EXPORT' case $host_os in os2*) lt_prog_compiler_static='$wl-static' ;; esac ;; hpux9* | hpux10* | hpux11*) lt_prog_compiler_wl='-Wl,' # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but # not for PA HP-UX. case $host_cpu in hppa*64*|ia64*) # +Z the default ;; *) lt_prog_compiler_pic='+Z' ;; esac # Is there a better lt_prog_compiler_static that works with the bundled CC? lt_prog_compiler_static='$wl-a ${wl}archive' ;; irix5* | irix6* | nonstopux*) lt_prog_compiler_wl='-Wl,' # PIC (with -KPIC) is the default. lt_prog_compiler_static='-non_shared' ;; linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) case $cc_basename in # old Intel for x86_64, which still supported -KPIC. ecc*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-static' ;; # icc used to be incompatible with GCC. # ICC 10 doesn't accept -KPIC any more. icc* | ifort*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-fPIC' lt_prog_compiler_static='-static' ;; # Lahey Fortran 8.1. lf95*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='--shared' lt_prog_compiler_static='--static' ;; nagfor*) # NAG Fortran compiler lt_prog_compiler_wl='-Wl,-Wl,,' lt_prog_compiler_pic='-PIC' lt_prog_compiler_static='-Bstatic' ;; tcc*) # Fabrice Bellard et al's Tiny C Compiler lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-fPIC' lt_prog_compiler_static='-static' ;; pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*) # Portland Group compilers (*not* the Pentium gcc compiler, # which looks to be a dead project) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-fpic' lt_prog_compiler_static='-Bstatic' ;; ccc*) lt_prog_compiler_wl='-Wl,' # All Alpha code is PIC. lt_prog_compiler_static='-non_shared' ;; xl* | bgxl* | bgf* | mpixl*) # IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-qpic' lt_prog_compiler_static='-qstaticlink' ;; *) case `$CC -V 2>&1 | sed 5q` in *Sun\ Ceres\ Fortran* | *Sun*Fortran*\ [1-7].* | *Sun*Fortran*\ 8.[0-3]*) # Sun Fortran 8.3 passes all unrecognized flags to the linker lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' lt_prog_compiler_wl='' ;; *Sun\ F* | *Sun*Fortran*) lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' lt_prog_compiler_wl='-Qoption ld ' ;; *Sun\ C*) # Sun C 5.9 lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' lt_prog_compiler_wl='-Wl,' ;; *Intel*\ [CF]*Compiler*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-fPIC' lt_prog_compiler_static='-static' ;; *Portland\ Group*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-fpic' lt_prog_compiler_static='-Bstatic' ;; esac ;; esac ;; newsos6) lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' ;; *nto* | *qnx*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. lt_prog_compiler_pic='-fPIC -shared' ;; osf3* | osf4* | osf5*) lt_prog_compiler_wl='-Wl,' # All OSF/1 code is PIC. lt_prog_compiler_static='-non_shared' ;; rdos*) lt_prog_compiler_static='-non_shared' ;; solaris*) lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' case $cc_basename in f77* | f90* | f95* | sunf77* | sunf90* | sunf95*) lt_prog_compiler_wl='-Qoption ld ';; *) lt_prog_compiler_wl='-Wl,';; esac ;; sunos4*) lt_prog_compiler_wl='-Qoption ld ' lt_prog_compiler_pic='-PIC' lt_prog_compiler_static='-Bstatic' ;; sysv4 | sysv4.2uw2* | sysv4.3*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' ;; sysv4*MP*) if test -d /usr/nec; then lt_prog_compiler_pic='-Kconform_pic' lt_prog_compiler_static='-Bstatic' fi ;; sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' ;; unicos*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_can_build_shared=no ;; uts4*) lt_prog_compiler_pic='-pic' lt_prog_compiler_static='-Bstatic' ;; *) lt_prog_compiler_can_build_shared=no ;; esac fi case $host_os in # For platforms that do not support PIC, -DPIC is meaningless: *djgpp*) lt_prog_compiler_pic= ;; *) lt_prog_compiler_pic="$lt_prog_compiler_pic -DPIC" ;; esac { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5 printf %s "checking for $compiler option to produce PIC... " >&6; } if test ${lt_cv_prog_compiler_pic+y} then : printf %s "(cached) " >&6 else case e in #( e) lt_cv_prog_compiler_pic=$lt_prog_compiler_pic ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic" >&5 printf "%s\n" "$lt_cv_prog_compiler_pic" >&6; } lt_prog_compiler_pic=$lt_cv_prog_compiler_pic # # Check to make sure the PIC flag actually works. # if test -n "$lt_prog_compiler_pic"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5 printf %s "checking if $compiler PIC flag $lt_prog_compiler_pic works... " >&6; } if test ${lt_cv_prog_compiler_pic_works+y} then : printf %s "(cached) " >&6 else case e in #( e) lt_cv_prog_compiler_pic_works=no ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="$lt_prog_compiler_pic -DPIC" ## exclude from sc_useless_quotes_in_assignment # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. # The option is referenced via a variable to avoid confusing sed. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler_pic_works=yes fi fi $RM conftest* ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works" >&5 printf "%s\n" "$lt_cv_prog_compiler_pic_works" >&6; } if test yes = "$lt_cv_prog_compiler_pic_works"; then case $lt_prog_compiler_pic in "" | " "*) ;; *) lt_prog_compiler_pic=" $lt_prog_compiler_pic" ;; esac else lt_prog_compiler_pic= lt_prog_compiler_can_build_shared=no fi fi # # Check to make sure the static flag actually works. # wl=$lt_prog_compiler_wl eval lt_tmp_static_flag=\"$lt_prog_compiler_static\" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5 printf %s "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; } if test ${lt_cv_prog_compiler_static_works+y} then : printf %s "(cached) " >&6 else case e in #( e) lt_cv_prog_compiler_static_works=no save_LDFLAGS=$LDFLAGS LDFLAGS="$LDFLAGS $lt_tmp_static_flag" echo "$lt_simple_link_test_code" > conftest.$ac_ext if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then # The linker can only warn and ignore the option if not recognized # So say no if there are warnings if test -s conftest.err; then # Append any errors to the config.log. cat conftest.err 1>&5 $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler_static_works=yes fi else lt_cv_prog_compiler_static_works=yes fi fi $RM -r conftest* LDFLAGS=$save_LDFLAGS ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works" >&5 printf "%s\n" "$lt_cv_prog_compiler_static_works" >&6; } if test yes = "$lt_cv_prog_compiler_static_works"; then : else lt_prog_compiler_static= fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 printf %s "checking if $compiler supports -c -o file.$ac_objext... " >&6; } if test ${lt_cv_prog_compiler_c_o+y} then : printf %s "(cached) " >&6 else case e in #( e) lt_cv_prog_compiler_c_o=no $RM -r conftest 2>/dev/null mkdir conftest cd conftest mkdir out echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-o out/conftest2.$ac_objext" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then lt_cv_prog_compiler_c_o=yes fi fi chmod u+w . 2>&5 $RM conftest* # SGI C++ compiler will create directory out/ii_files/ for # template instantiation test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files $RM out/* && rmdir out cd .. $RM -r conftest $RM conftest* ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5 printf "%s\n" "$lt_cv_prog_compiler_c_o" >&6; } { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 printf %s "checking if $compiler supports -c -o file.$ac_objext... " >&6; } if test ${lt_cv_prog_compiler_c_o+y} then : printf %s "(cached) " >&6 else case e in #( e) lt_cv_prog_compiler_c_o=no $RM -r conftest 2>/dev/null mkdir conftest cd conftest mkdir out echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-o out/conftest2.$ac_objext" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then lt_cv_prog_compiler_c_o=yes fi fi chmod u+w . 2>&5 $RM conftest* # SGI C++ compiler will create directory out/ii_files/ for # template instantiation test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files $RM out/* && rmdir out cd .. $RM -r conftest $RM conftest* ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5 printf "%s\n" "$lt_cv_prog_compiler_c_o" >&6; } hard_links=nottested if test no = "$lt_cv_prog_compiler_c_o" && test no != "$need_locks"; then # do not overwrite the value of need_locks provided by the user { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5 printf %s "checking if we can lock with hard links... " >&6; } hard_links=yes $RM conftest* ln conftest.a conftest.b 2>/dev/null && hard_links=no touch conftest.a ln conftest.a conftest.b 2>&5 || hard_links=no ln conftest.a conftest.b 2>/dev/null && hard_links=no { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5 printf "%s\n" "$hard_links" >&6; } if test no = "$hard_links"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: '$CC' does not support '-c -o', so 'make -j' may be unsafe" >&5 printf "%s\n" "$as_me: WARNING: '$CC' does not support '-c -o', so 'make -j' may be unsafe" >&2;} need_locks=warn fi else need_locks=no fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5 printf %s "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } runpath_var= allow_undefined_flag= always_export_symbols=no archive_cmds= archive_expsym_cmds= compiler_needs_object=no enable_shared_with_static_runtimes=no export_dynamic_flag_spec= export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' hardcode_automatic=no hardcode_direct=no hardcode_direct_absolute=no hardcode_libdir_flag_spec= hardcode_libdir_separator= hardcode_minus_L=no hardcode_shlibpath_var=unsupported inherit_rpath=no link_all_deplibs=unknown module_cmds= module_expsym_cmds= old_archive_from_new_cmds= old_archive_from_expsyms_cmds= thread_safe_flag_spec= whole_archive_flag_spec= # include_expsyms should be a list of space-separated symbols to be *always* # included in the symbol list include_expsyms= # exclude_expsyms can be an extended regexp of symbols to exclude # it will be wrapped by ' (' and ')$', so one must not match beginning or # end of line. Example: 'a|bc|.*d.*' will exclude the symbols 'a' and 'bc', # as well as any symbol that contains 'd'. exclude_expsyms='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*' # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out # platforms (ab)use it in PIC code, but their linkers get confused if # the symbol is explicitly referenced. Since portable code cannot # rely on this symbol name, it's probably fine to never include it in # preloaded symbol tables. # Exclude shared library initialization/finalization symbols. extract_expsyms_cmds= case $host_os in cygwin* | mingw* | pw32* | cegcc*) # FIXME: the MSVC++ port hasn't been tested in a loooong time # When not using gcc, we currently assume that we are using # Microsoft Visual C++. if test yes != "$GCC"; then with_gnu_ld=no fi ;; interix*) # we just hope/assume this is gcc and not c89 (= MSVC++) with_gnu_ld=yes ;; openbsd* | bitrig*) with_gnu_ld=no ;; esac ld_shlibs=yes # On some targets, GNU ld is compatible enough with the native linker # that we're better off using the native interface for both. lt_use_gnu_ld_interface=no if test yes = "$with_gnu_ld"; then case $host_os in aix*) # The AIX port of GNU ld has always aspired to compatibility # with the native linker. However, as the warning in the GNU ld # block says, versions before 2.19.5* couldn't really create working # shared libraries, regardless of the interface used. case `$LD -v 2>&1` in *\ \(GNU\ Binutils\)\ 2.19.5*) ;; *\ \(GNU\ Binutils\)\ 2.[2-9]*) ;; *\ \(GNU\ Binutils\)\ [3-9]*) ;; *) lt_use_gnu_ld_interface=yes ;; esac ;; *) lt_use_gnu_ld_interface=yes ;; esac fi if test yes = "$lt_use_gnu_ld_interface"; then # If archive_cmds runs LD, not CC, wlarc should be empty wlarc='$wl' # Set some defaults for GNU ld with shared library support. These # are reset later if shared libraries are not supported. Putting them # here allows them to be overridden if necessary. runpath_var=LD_RUN_PATH hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' export_dynamic_flag_spec='$wl--export-dynamic' # ancient GNU ld didn't support --whole-archive et. al. if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then whole_archive_flag_spec=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive' else whole_archive_flag_spec= fi supports_anon_versioning=no case `$LD -v | $SED -e 's/(^)\+)\s\+//' 2>&1` in *GNU\ gold*) supports_anon_versioning=yes ;; *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11 *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... *\ 2.11.*) ;; # other 2.11 versions *) supports_anon_versioning=yes ;; esac # See if GNU ld supports shared libraries. case $host_os in aix[3-9]*) # On AIX/PPC, the GNU linker is very broken if test ia64 != "$host_cpu"; then ld_shlibs=no cat <<_LT_EOF 1>&2 *** Warning: the GNU linker, at least up to release 2.19, is reported *** to be unable to reliably create shared libraries on AIX. *** Therefore, libtool is disabling shared libraries support. If you *** really care for shared libraries, you may want to install binutils *** 2.20 or above, or modify your PATH so that a non-GNU linker is found. *** You will then need to restart the configuration process. _LT_EOF fi ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' archive_expsym_cmds='' ;; m68k) archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes ;; esac ;; beos*) if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then allow_undefined_flag=unsupported # Joseph Beckenbach says some releases of gcc # support --undefined. This deserves some investigation. FIXME archive_cmds='$CC -nostart $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' else ld_shlibs=no fi ;; cygwin* | mingw* | pw32* | cegcc*) # _LT_TAGVAR(hardcode_libdir_flag_spec, ) is actually meaningless, # as there is no search path for DLLs. hardcode_libdir_flag_spec='-L$libdir' export_dynamic_flag_spec='$wl--export-all-symbols' allow_undefined_flag=unsupported always_export_symbols=no enable_shared_with_static_runtimes=yes export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.* //'\'' | sort | uniq > $export_symbols' exclude_expsyms='[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname' if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' # If the export-symbols file already is a .def file, use it as # is; otherwise, prepend EXPORTS... archive_expsym_cmds='if test DEF = "`$SED -n -e '\''s/^[ ]*//'\'' -e '\''/^\(;.*\)*$/d'\'' -e '\''s/^\(EXPORTS\|LIBRARY\)\([ ].*\)*$/DEF/p'\'' -e q $export_symbols`" ; then cp $export_symbols $output_objdir/$soname.def; else echo EXPORTS > $output_objdir/$soname.def; cat $export_symbols >> $output_objdir/$soname.def; fi~ $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' else ld_shlibs=no fi ;; haiku*) archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' link_all_deplibs=yes ;; os2*) hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes allow_undefined_flag=unsupported shrext_cmds=.dll archive_cmds='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ $ECHO EXPORTS >> $output_objdir/$libname.def~ emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~ $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ emximp -o $lib $output_objdir/$libname.def' archive_expsym_cmds='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ $ECHO EXPORTS >> $output_objdir/$libname.def~ prefix_cmds="$SED"~ if test EXPORTS = "`$SED 1q $export_symbols`"; then prefix_cmds="$prefix_cmds -e 1d"; fi~ prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~ cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~ $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ emximp -o $lib $output_objdir/$libname.def' old_archive_From_new_cmds='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' enable_shared_with_static_runtimes=yes ;; interix[3-9]*) hardcode_direct=no hardcode_shlibpath_var=no hardcode_libdir_flag_spec='$wl-rpath,$libdir' export_dynamic_flag_spec='$wl-E' # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. # Instead, shared libraries are loaded at an image base (0x10000000 by # default) and relocated if they conflict, which is a slow very memory # consuming and fragmenting process. To avoid this, we pick a random, # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link # time. Moving up from 0x10000000 also allows more sbrk(2) space. archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' archive_expsym_cmds='sed "s|^|_|" $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--retain-symbols-file,$output_objdir/$soname.expsym $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' ;; gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu) tmp_diet=no if test linux-dietlibc = "$host_os"; then case $cc_basename in diet\ *) tmp_diet=yes;; # linux-dietlibc with static linking (!diet-dyn) esac fi if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \ && test no = "$tmp_diet" then tmp_addflag=' $pic_flag' tmp_sharedflag='-shared' case $cc_basename,$host_cpu in pgcc*) # Portland Group C compiler whole_archive_flag_spec='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' tmp_addflag=' $pic_flag' ;; pgf77* | pgf90* | pgf95* | pgfortran*) # Portland Group f77 and f90 compilers whole_archive_flag_spec='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' tmp_addflag=' $pic_flag -Mnomain' ;; ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 tmp_addflag=' -i_dynamic' ;; efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 tmp_addflag=' -i_dynamic -nofor_main' ;; ifc* | ifort*) # Intel Fortran compiler tmp_addflag=' -nofor_main' ;; lf95*) # Lahey Fortran 8.1 whole_archive_flag_spec= tmp_sharedflag='--shared' ;; nagfor*) # NAGFOR 5.3 tmp_sharedflag='-Wl,-shared' ;; xl[cC]* | bgxl[cC]* | mpixl[cC]*) # IBM XL C 8.0 on PPC (deal with xlf below) tmp_sharedflag='-qmkshrobj' tmp_addflag= ;; nvcc*) # Cuda Compiler Driver 2.2 whole_archive_flag_spec='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' compiler_needs_object=yes ;; esac case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C 5.9 whole_archive_flag_spec='$wl--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' compiler_needs_object=yes tmp_sharedflag='-G' ;; *Sun\ F*) # Sun Fortran 8.3 tmp_sharedflag='-G' ;; esac archive_cmds='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' if test yes = "$supports_anon_versioning"; then archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ echo "local: *; };" >> $output_objdir/$libname.ver~ $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-version-script $wl$output_objdir/$libname.ver -o $lib' fi case $cc_basename in tcc*) export_dynamic_flag_spec='-rdynamic' ;; xlf* | bgf* | bgxlf* | mpixlf*) # IBM XL Fortran 10.1 on PPC cannot create shared libs itself whole_archive_flag_spec='--whole-archive$convenience --no-whole-archive' hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib' if test yes = "$supports_anon_versioning"; then archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ echo "local: *; };" >> $output_objdir/$libname.ver~ $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib' fi ;; esac else ld_shlibs=no fi ;; netbsd*) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' wlarc= else archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' fi ;; solaris*) if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then ld_shlibs=no cat <<_LT_EOF 1>&2 *** Warning: The releases 2.8.* of the GNU linker cannot reliably *** create shared libraries on Solaris systems. Therefore, libtool *** is disabling shared libraries support. We urge you to upgrade GNU *** binutils to release 2.9.1 or newer. Another option is to modify *** your PATH or compiler configuration so that the native linker is *** used, and then restart. _LT_EOF elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' else ld_shlibs=no fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) case `$LD -v 2>&1` in *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*) ld_shlibs=no cat <<_LT_EOF 1>&2 *** Warning: Releases of the GNU linker prior to 2.16.91.0.3 cannot *** reliably create shared libraries on SCO systems. Therefore, libtool *** is disabling shared libraries support. We urge you to upgrade GNU *** binutils to release 2.16.91.0.3 or newer. Another option is to modify *** your PATH or compiler configuration so that the native linker is *** used, and then restart. _LT_EOF ;; *) # For security reasons, it is highly recommended that you always # use absolute paths for naming shared libraries, and exclude the # DT_RUNPATH tag from executables and libraries. But doing so # requires that you compile everything twice, which is a pain. if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' else ld_shlibs=no fi ;; esac ;; sunos4*) archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' wlarc= hardcode_direct=yes hardcode_shlibpath_var=no ;; *) if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' else ld_shlibs=no fi ;; esac if test no = "$ld_shlibs"; then runpath_var= hardcode_libdir_flag_spec= export_dynamic_flag_spec= whole_archive_flag_spec= fi else # PORTME fill in a description of your system's linker (not GNU ld) case $host_os in aix3*) allow_undefined_flag=unsupported always_export_symbols=yes archive_expsym_cmds='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' # Note: this linker hardcodes the directories in LIBPATH if there # are no directories specified by -L. hardcode_minus_L=yes if test yes = "$GCC" && test -z "$lt_prog_compiler_static"; then # Neither direct hardcoding nor static linking is supported with a # broken collect2. hardcode_direct=unsupported fi ;; aix[4-9]*) if test ia64 = "$host_cpu"; then # On IA64, the linker does run time linking by default, so we don't # have to do anything special. aix_use_runtimelinking=no exp_sym_flag='-Bexport' no_entry_flag= else # If we're using GNU nm, then we don't want the "-C" option. # -C means demangle to GNU nm, but means don't demangle to AIX nm. # Without the "-l" option, or with the "-B" option, AIX nm treats # weak defined symbols like other global defined symbols, whereas # GNU nm marks them as "W". # While the 'weak' keyword is ignored in the Export File, we need # it in the Import File for the 'aix-soname' feature, so we have # to replace the "-B" option with "-P" for AIX nm. if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then export_symbols_cmds='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && (substr(\$ 3,1,1) != ".")) { if (\$ 2 == "W") { print \$ 3 " weak" } else { print \$ 3 } } }'\'' | sort -u > $export_symbols' else export_symbols_cmds='`func_echo_all $NM | $SED -e '\''s/B\([^B]*\)$/P\1/'\''` -PCpgl $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) && (substr(\$ 1,1,1) != ".")) { if ((\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) { print \$ 1 " weak" } else { print \$ 1 } } }'\'' | sort -u > $export_symbols' fi aix_use_runtimelinking=no # Test if we are trying to use run time linking or normal # AIX style linking. If -brtl is somewhere in LDFLAGS, we # have runtime linking enabled, and use it for executables. # For shared libraries, we enable/disable runtime linking # depending on the kind of the shared library created - # when "with_aix_soname,aix_use_runtimelinking" is: # "aix,no" lib.a(lib.so.V) shared, rtl:no, for executables # "aix,yes" lib.so shared, rtl:yes, for executables # lib.a static archive # "both,no" lib.so.V(shr.o) shared, rtl:yes # lib.a(lib.so.V) shared, rtl:no, for executables # "both,yes" lib.so.V(shr.o) shared, rtl:yes, for executables # lib.a(lib.so.V) shared, rtl:no # "svr4,*" lib.so.V(shr.o) shared, rtl:yes, for executables # lib.a static archive case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*) for ld_flag in $LDFLAGS; do if (test x-brtl = "x$ld_flag" || test x-Wl,-brtl = "x$ld_flag"); then aix_use_runtimelinking=yes break fi done if test svr4,no = "$with_aix_soname,$aix_use_runtimelinking"; then # With aix-soname=svr4, we create the lib.so.V shared archives only, # so we don't have lib.a shared libs to link our executables. # We have to force runtime linking in this case. aix_use_runtimelinking=yes LDFLAGS="$LDFLAGS -Wl,-brtl" fi ;; esac exp_sym_flag='-bexport' no_entry_flag='-bnoentry' fi # When large executables or shared objects are built, AIX ld can # have problems creating the table of contents. If linking a library # or program results in "error TOC overflow" add -mminimal-toc to # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. archive_cmds='' hardcode_direct=yes hardcode_direct_absolute=yes hardcode_libdir_separator=':' link_all_deplibs=yes file_list_spec='$wl-f,' case $with_aix_soname,$aix_use_runtimelinking in aix,*) ;; # traditional, no import file svr4,* | *,yes) # use import file # The Import File defines what to hardcode. hardcode_direct=no hardcode_direct_absolute=no ;; esac if test yes = "$GCC"; then case $host_os in aix4.[012]|aix4.[012].*) # We only want to do this on AIX 4.2 and lower, the check # below for broken collect2 doesn't work under 4.3+ collect2name=`$CC -print-prog-name=collect2` if test -f "$collect2name" && strings "$collect2name" | $GREP resolve_lib_name >/dev/null then # We have reworked collect2 : else # We have old collect2 hardcode_direct=unsupported # It fails to find uninstalled libraries when the uninstalled # path is not listed in the libpath. Setting hardcode_minus_L # to unsupported forces relinking hardcode_minus_L=yes hardcode_libdir_flag_spec='-L$libdir' hardcode_libdir_separator= fi ;; esac shared_flag='-shared' if test yes = "$aix_use_runtimelinking"; then shared_flag="$shared_flag "'$wl-G' fi # Need to ensure runtime linking is disabled for the traditional # shared library, or the linker may eventually find shared libraries # /with/ Import File - we do not want to mix them. shared_flag_aix='-shared' shared_flag_svr4='-shared $wl-G' else # not using gcc if test ia64 = "$host_cpu"; then # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release # chokes on -Wl,-G. The following line is correct: shared_flag='-G' else if test yes = "$aix_use_runtimelinking"; then shared_flag='$wl-G' else shared_flag='$wl-bM:SRE' fi shared_flag_aix='$wl-bM:SRE' shared_flag_svr4='$wl-G' fi fi export_dynamic_flag_spec='$wl-bexpall' # It seems that -bexpall does not export symbols beginning with # underscore (_), so it is better to generate a list of symbols to export. always_export_symbols=yes if test aix,yes = "$with_aix_soname,$aix_use_runtimelinking"; then # Warning - without using the other runtime loading flags (-brtl), # -berok will link without error, but may produce a broken library. allow_undefined_flag='-berok' # Determine the default libpath from the value encoded in an # empty executable. if test set = "${lt_cv_aix_libpath+set}"; then aix_libpath=$lt_cv_aix_libpath else if test ${lt_cv_aix_libpath_+y} then : printf %s "(cached) " >&6 else case e in #( e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : lt_aix_libpath_sed=' /Import File Strings/,/^$/ { /^0/ { s/^0 *\([^ ]*\) *$/\1/ p } }' lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` # Check for a 64-bit object if we didn't find anything. if test -z "$lt_cv_aix_libpath_"; then lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext if test -z "$lt_cv_aix_libpath_"; then lt_cv_aix_libpath_=/usr/lib:/lib fi ;; esac fi aix_libpath=$lt_cv_aix_libpath_ fi hardcode_libdir_flag_spec='$wl-blibpath:$libdir:'"$aix_libpath" archive_expsym_cmds='$CC -o $output_objdir/$soname $libobjs $deplibs $wl'$no_entry_flag' $compiler_flags `if test -n "$allow_undefined_flag"; then func_echo_all "$wl$allow_undefined_flag"; else :; fi` $wl'$exp_sym_flag:\$export_symbols' '$shared_flag else if test ia64 = "$host_cpu"; then hardcode_libdir_flag_spec='$wl-R $libdir:/usr/lib:/lib' allow_undefined_flag="-z nodefs" archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\$wl$no_entry_flag"' $compiler_flags $wl$allow_undefined_flag '"\$wl$exp_sym_flag:\$export_symbols" else # Determine the default libpath from the value encoded in an # empty executable. if test set = "${lt_cv_aix_libpath+set}"; then aix_libpath=$lt_cv_aix_libpath else if test ${lt_cv_aix_libpath_+y} then : printf %s "(cached) " >&6 else case e in #( e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : lt_aix_libpath_sed=' /Import File Strings/,/^$/ { /^0/ { s/^0 *\([^ ]*\) *$/\1/ p } }' lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` # Check for a 64-bit object if we didn't find anything. if test -z "$lt_cv_aix_libpath_"; then lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext if test -z "$lt_cv_aix_libpath_"; then lt_cv_aix_libpath_=/usr/lib:/lib fi ;; esac fi aix_libpath=$lt_cv_aix_libpath_ fi hardcode_libdir_flag_spec='$wl-blibpath:$libdir:'"$aix_libpath" # Warning - without using the other run time loading flags, # -berok will link without error, but may produce a broken library. no_undefined_flag=' $wl-bernotok' allow_undefined_flag=' $wl-berok' if test yes = "$with_gnu_ld"; then # We only use this code for GNU lds that support --whole-archive. whole_archive_flag_spec='$wl--whole-archive$convenience $wl--no-whole-archive' else # Exported symbols can be pulled into shared objects from archives whole_archive_flag_spec='$convenience' fi archive_cmds_need_lc=yes archive_expsym_cmds='$RM -r $output_objdir/$realname.d~$MKDIR $output_objdir/$realname.d' # -brtl affects multiple linker settings, -berok does not and is overridden later compiler_flags_filtered='`func_echo_all "$compiler_flags " | $SED -e "s%-brtl\\([, ]\\)%-berok\\1%g"`' if test svr4 != "$with_aix_soname"; then # This is similar to how AIX traditionally builds its shared libraries. archive_expsym_cmds="$archive_expsym_cmds"'~$CC '$shared_flag_aix' -o $output_objdir/$realname.d/$soname $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$realname.d/$soname' fi if test aix != "$with_aix_soname"; then archive_expsym_cmds="$archive_expsym_cmds"'~$CC '$shared_flag_svr4' -o $output_objdir/$realname.d/$shared_archive_member_spec.o $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$STRIP -e $output_objdir/$realname.d/$shared_archive_member_spec.o~( func_echo_all "#! $soname($shared_archive_member_spec.o)"; if test shr_64 = "$shared_archive_member_spec"; then func_echo_all "# 64"; else func_echo_all "# 32"; fi; cat $export_symbols ) > $output_objdir/$realname.d/$shared_archive_member_spec.imp~$AR $AR_FLAGS $output_objdir/$soname $output_objdir/$realname.d/$shared_archive_member_spec.o $output_objdir/$realname.d/$shared_archive_member_spec.imp' else # used by -dlpreopen to get the symbols archive_expsym_cmds="$archive_expsym_cmds"'~$MV $output_objdir/$realname.d/$soname $output_objdir' fi archive_expsym_cmds="$archive_expsym_cmds"'~$RM -r $output_objdir/$realname.d' fi fi ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' archive_expsym_cmds='' ;; m68k) archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes ;; esac ;; bsdi[45]*) export_dynamic_flag_spec=-rdynamic ;; cygwin* | mingw* | pw32* | cegcc*) # When not using gcc, we currently assume that we are using # Microsoft Visual C++. # hardcode_libdir_flag_spec is actually meaningless, as there is # no search path for DLLs. case $cc_basename in cl*) # Native MSVC hardcode_libdir_flag_spec=' ' allow_undefined_flag=unsupported always_export_symbols=yes file_list_spec='@' # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. shrext_cmds=.dll # FIXME: Setting linknames here is a bad hack. archive_cmds='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~linknames=' archive_expsym_cmds='if test DEF = "`$SED -n -e '\''s/^[ ]*//'\'' -e '\''/^\(;.*\)*$/d'\'' -e '\''s/^\(EXPORTS\|LIBRARY\)\([ ].*\)*$/DEF/p'\'' -e q $export_symbols`" ; then cp "$export_symbols" "$output_objdir/$soname.def"; echo "$tool_output_objdir$soname.def" > "$output_objdir/$soname.exp"; else $SED -e '\''s/^/-link -EXPORT:/'\'' < $export_symbols > $output_objdir/$soname.exp; fi~ $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ linknames=' # The linker will not automatically build a static lib if we build a DLL. # _LT_TAGVAR(old_archive_from_new_cmds, )='true' enable_shared_with_static_runtimes=yes exclude_expsyms='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1,DATA/'\'' | $SED -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols' # Don't use ranlib old_postinstall_cmds='chmod 644 $oldlib' postlink_cmds='lt_outputfile="@OUTPUT@"~ lt_tool_outputfile="@TOOL_OUTPUT@"~ case $lt_outputfile in *.exe|*.EXE) ;; *) lt_outputfile=$lt_outputfile.exe lt_tool_outputfile=$lt_tool_outputfile.exe ;; esac~ if test : != "$MANIFEST_TOOL" && test -f "$lt_outputfile.manifest"; then $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; $RM "$lt_outputfile.manifest"; fi' ;; *) # Assume MSVC wrapper hardcode_libdir_flag_spec=' ' allow_undefined_flag=unsupported # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. shrext_cmds=.dll # FIXME: Setting linknames here is a bad hack. archive_cmds='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames=' # The linker will automatically build a .lib file if we build a DLL. old_archive_from_new_cmds='true' # FIXME: Should let the user specify the lib program. old_archive_cmds='lib -OUT:$oldlib$oldobjs$old_deplibs' enable_shared_with_static_runtimes=yes ;; esac ;; darwin* | rhapsody*) archive_cmds_need_lc=no hardcode_direct=no hardcode_automatic=yes hardcode_shlibpath_var=unsupported if test yes = "$lt_cv_ld_force_load"; then whole_archive_flag_spec='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience $wl-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`' else whole_archive_flag_spec='' fi link_all_deplibs=yes allow_undefined_flag=$_lt_dar_allow_undefined case $cc_basename in ifort*|nagfor*) _lt_dar_can_shared=yes ;; *) _lt_dar_can_shared=$GCC ;; esac if test yes = "$_lt_dar_can_shared"; then output_verbose_link_cmd=func_echo_all archive_cmds="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dsymutil" module_cmds="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dsymutil" archive_expsym_cmds="sed 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dar_export_syms$_lt_dsymutil" module_expsym_cmds="sed -e 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dar_export_syms$_lt_dsymutil" else ld_shlibs=no fi ;; dgux*) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_libdir_flag_spec='-L$libdir' hardcode_shlibpath_var=no ;; # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor # support. Future versions do this automatically, but an explicit c++rt0.o # does not break anything, and helps significantly (at the cost of a little # extra space). freebsd2.2*) archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes hardcode_shlibpath_var=no ;; # Unfortunately, older versions of FreeBSD 2 do not have this feature. freebsd2.*) archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=yes hardcode_minus_L=yes hardcode_shlibpath_var=no ;; # FreeBSD 3 and greater uses gcc -shared to do shared libraries. freebsd* | dragonfly*) archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes hardcode_shlibpath_var=no ;; hpux9*) if test yes = "$GCC"; then archive_cmds='$RM $output_objdir/$soname~$CC -shared $pic_flag $wl+b $wl$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' else archive_cmds='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' fi hardcode_libdir_flag_spec='$wl+b $wl$libdir' hardcode_libdir_separator=: hardcode_direct=yes # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L=yes export_dynamic_flag_spec='$wl-E' ;; hpux10*) if test yes,no = "$GCC,$with_gnu_ld"; then archive_cmds='$CC -shared $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' fi if test no = "$with_gnu_ld"; then hardcode_libdir_flag_spec='$wl+b $wl$libdir' hardcode_libdir_separator=: hardcode_direct=yes hardcode_direct_absolute=yes export_dynamic_flag_spec='$wl-E' # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L=yes fi ;; hpux11*) if test yes,no = "$GCC,$with_gnu_ld"; then case $host_cpu in hppa*64*) archive_cmds='$CC -shared $wl+h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' ;; ia64*) archive_cmds='$CC -shared $pic_flag $wl+h $wl$soname $wl+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ;; *) archive_cmds='$CC -shared $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags' ;; esac else case $host_cpu in hppa*64*) archive_cmds='$CC -b $wl+h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' ;; ia64*) archive_cmds='$CC -b $wl+h $wl$soname $wl+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ;; *) # Older versions of the 11.00 compiler do not understand -b yet # (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $CC understands -b" >&5 printf %s "checking if $CC understands -b... " >&6; } if test ${lt_cv_prog_compiler__b+y} then : printf %s "(cached) " >&6 else case e in #( e) lt_cv_prog_compiler__b=no save_LDFLAGS=$LDFLAGS LDFLAGS="$LDFLAGS -b" echo "$lt_simple_link_test_code" > conftest.$ac_ext if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then # The linker can only warn and ignore the option if not recognized # So say no if there are warnings if test -s conftest.err; then # Append any errors to the config.log. cat conftest.err 1>&5 $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler__b=yes fi else lt_cv_prog_compiler__b=yes fi fi $RM -r conftest* LDFLAGS=$save_LDFLAGS ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler__b" >&5 printf "%s\n" "$lt_cv_prog_compiler__b" >&6; } if test yes = "$lt_cv_prog_compiler__b"; then archive_cmds='$CC -b $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' fi ;; esac fi if test no = "$with_gnu_ld"; then hardcode_libdir_flag_spec='$wl+b $wl$libdir' hardcode_libdir_separator=: case $host_cpu in hppa*64*|ia64*) hardcode_direct=no hardcode_shlibpath_var=no ;; *) hardcode_direct=yes hardcode_direct_absolute=yes export_dynamic_flag_spec='$wl-E' # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L=yes ;; esac fi ;; irix5* | irix6* | nonstopux*) if test yes = "$GCC"; then archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' # Try to use the -exported_symbol ld option, if it does not # work, assume that -exports_file does not work either and # implicitly export all symbols. # This should be the same for all languages, so no per-tag cache variable. { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the $host_os linker accepts -exported_symbol" >&5 printf %s "checking whether the $host_os linker accepts -exported_symbol... " >&6; } if test ${lt_cv_irix_exported_symbol+y} then : printf %s "(cached) " >&6 else case e in #( e) save_LDFLAGS=$LDFLAGS LDFLAGS="$LDFLAGS -shared $wl-exported_symbol ${wl}foo $wl-update_registry $wl/dev/null" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int foo (void) { return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : lt_cv_irix_exported_symbol=yes else case e in #( e) lt_cv_irix_exported_symbol=no ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LDFLAGS=$save_LDFLAGS ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_irix_exported_symbol" >&5 printf "%s\n" "$lt_cv_irix_exported_symbol" >&6; } if test yes = "$lt_cv_irix_exported_symbol"; then archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations $wl-exports_file $wl$export_symbols -o $lib' fi else archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -exports_file $export_symbols -o $lib' fi archive_cmds_need_lc='no' hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' hardcode_libdir_separator=: inherit_rpath=yes link_all_deplibs=yes ;; linux*) case $cc_basename in tcc*) # Fabrice Bellard et al's Tiny C Compiler ld_shlibs=yes archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' ;; esac ;; netbsd*) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out else archive_cmds='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF fi hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes hardcode_shlibpath_var=no ;; newsos6) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=yes hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' hardcode_libdir_separator=: hardcode_shlibpath_var=no ;; *nto* | *qnx*) ;; openbsd* | bitrig*) if test -f /usr/libexec/ld.so; then hardcode_direct=yes hardcode_shlibpath_var=no hardcode_direct_absolute=yes if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags $wl-retain-symbols-file,$export_symbols' hardcode_libdir_flag_spec='$wl-rpath,$libdir' export_dynamic_flag_spec='$wl-E' else archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' hardcode_libdir_flag_spec='$wl-rpath,$libdir' fi else ld_shlibs=no fi ;; os2*) hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes allow_undefined_flag=unsupported shrext_cmds=.dll archive_cmds='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ $ECHO EXPORTS >> $output_objdir/$libname.def~ emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~ $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ emximp -o $lib $output_objdir/$libname.def' archive_expsym_cmds='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ $ECHO EXPORTS >> $output_objdir/$libname.def~ prefix_cmds="$SED"~ if test EXPORTS = "`$SED 1q $export_symbols`"; then prefix_cmds="$prefix_cmds -e 1d"; fi~ prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~ cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~ $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ emximp -o $lib $output_objdir/$libname.def' old_archive_From_new_cmds='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' enable_shared_with_static_runtimes=yes ;; osf3*) if test yes = "$GCC"; then allow_undefined_flag=' $wl-expect_unresolved $wl\*' archive_cmds='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' else allow_undefined_flag=' -expect_unresolved \*' archive_cmds='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' fi archive_cmds_need_lc='no' hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' hardcode_libdir_separator=: ;; osf4* | osf5*) # as osf3* with the addition of -msym flag if test yes = "$GCC"; then allow_undefined_flag=' $wl-expect_unresolved $wl\*' archive_cmds='$CC -shared$allow_undefined_flag $pic_flag $libobjs $deplibs $compiler_flags $wl-msym $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' else allow_undefined_flag=' -expect_unresolved \*' archive_cmds='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' archive_expsym_cmds='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~ $CC -shared$allow_undefined_flag $wl-input $wl$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib~$RM $lib.exp' # Both c and cxx compiler support -rpath directly hardcode_libdir_flag_spec='-rpath $libdir' fi archive_cmds_need_lc='no' hardcode_libdir_separator=: ;; solaris*) no_undefined_flag=' -z defs' if test yes = "$GCC"; then wlarc='$wl' archive_cmds='$CC -shared $pic_flag $wl-z ${wl}text $wl-h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -shared $pic_flag $wl-z ${wl}text $wl-M $wl$lib.exp $wl-h $wl$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' else case `$CC -V 2>&1` in *"Compilers 5.0"*) wlarc='' archive_cmds='$LD -G$allow_undefined_flag -h $soname -o $lib $libobjs $deplibs $linker_flags' archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $LD -G$allow_undefined_flag -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp' ;; *) wlarc='$wl' archive_cmds='$CC -G$allow_undefined_flag -h $soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -G$allow_undefined_flag -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' ;; esac fi hardcode_libdir_flag_spec='-R$libdir' hardcode_shlibpath_var=no case $host_os in solaris2.[0-5] | solaris2.[0-5].*) ;; *) # The compiler driver will combine and reorder linker options, # but understands '-z linker_flag'. GCC discards it without '$wl', # but is careful enough not to reorder. # Supported since Solaris 2.6 (maybe 2.5.1?) if test yes = "$GCC"; then whole_archive_flag_spec='$wl-z ${wl}allextract$convenience $wl-z ${wl}defaultextract' else whole_archive_flag_spec='-z allextract$convenience -z defaultextract' fi ;; esac link_all_deplibs=yes ;; sunos4*) if test sequent = "$host_vendor"; then # Use $CC to link under sequent, because it throws in some extra .o # files that make .init and .fini sections work. archive_cmds='$CC -G $wl-h $soname -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' fi hardcode_libdir_flag_spec='-L$libdir' hardcode_direct=yes hardcode_minus_L=yes hardcode_shlibpath_var=no ;; sysv4) case $host_vendor in sni) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=yes # is this really true??? ;; siemens) ## LD is ld it makes a PLAMLIB ## CC just makes a GrossModule. archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags' reload_cmds='$CC -r -o $output$reload_objs' hardcode_direct=no ;; motorola) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=no #Motorola manual says yes, but my tests say they lie ;; esac runpath_var='LD_RUN_PATH' hardcode_shlibpath_var=no ;; sysv4.3*) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_shlibpath_var=no export_dynamic_flag_spec='-Bexport' ;; sysv4*MP*) if test -d /usr/nec; then archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_shlibpath_var=no runpath_var=LD_RUN_PATH hardcode_runpath_var=yes ld_shlibs=yes fi ;; sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) no_undefined_flag='$wl-z,text' archive_cmds_need_lc=no hardcode_shlibpath_var=no runpath_var='LD_RUN_PATH' if test yes = "$GCC"; then archive_cmds='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' fi ;; sysv5* | sco3.2v5* | sco5v6*) # Note: We CANNOT use -z defs as we might desire, because we do not # link with -lc, and that would cause any symbols used from libc to # always be unresolved, which means just about no library would # ever link correctly. If we're not using GNU ld we use -z text # though, which does catch some bad symbols but isn't as heavy-handed # as -z defs. no_undefined_flag='$wl-z,text' allow_undefined_flag='$wl-z,nodefs' archive_cmds_need_lc=no hardcode_shlibpath_var=no hardcode_libdir_flag_spec='$wl-R,$libdir' hardcode_libdir_separator=':' link_all_deplibs=yes export_dynamic_flag_spec='$wl-Bexport' runpath_var='LD_RUN_PATH' if test yes = "$GCC"; then archive_cmds='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' fi ;; uts4*) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_libdir_flag_spec='-L$libdir' hardcode_shlibpath_var=no ;; *) ld_shlibs=no ;; esac if test sni = "$host_vendor"; then case $host in sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) export_dynamic_flag_spec='$wl-Blargedynsym' ;; esac fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs" >&5 printf "%s\n" "$ld_shlibs" >&6; } test no = "$ld_shlibs" && can_build_shared=no with_gnu_ld=$with_gnu_ld # # Do we need to explicitly link libc? # case "x$archive_cmds_need_lc" in x|xyes) # Assume -lc should be added archive_cmds_need_lc=yes if test yes,yes = "$GCC,$enable_shared"; then case $archive_cmds in *'~'*) # FIXME: we may have to deal with multi-command sequences. ;; '$CC '*) # Test whether the compiler implicitly links with -lc since on some # systems, -lgcc has to come before -lc. If gcc already passes -lc # to ld, don't add -lc before -lgcc. { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5 printf %s "checking whether -lc should be explicitly linked in... " >&6; } if test ${lt_cv_archive_cmds_need_lc+y} then : printf %s "(cached) " >&6 else case e in #( e) $RM conftest* echo "$lt_simple_compile_test_code" > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } 2>conftest.err; then soname=conftest lib=conftest libobjs=conftest.$ac_objext deplibs= wl=$lt_prog_compiler_wl pic_flag=$lt_prog_compiler_pic compiler_flags=-v linker_flags=-v verstring= output_objdir=. libname=conftest lt_save_allow_undefined_flag=$allow_undefined_flag allow_undefined_flag= if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\""; } >&5 (eval $archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } then lt_cv_archive_cmds_need_lc=no else lt_cv_archive_cmds_need_lc=yes fi allow_undefined_flag=$lt_save_allow_undefined_flag else cat conftest.err 1>&5 fi $RM conftest* ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc" >&5 printf "%s\n" "$lt_cv_archive_cmds_need_lc" >&6; } archive_cmds_need_lc=$lt_cv_archive_cmds_need_lc ;; esac fi ;; esac { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5 printf %s "checking dynamic linker characteristics... " >&6; } if test yes = "$GCC"; then case $host_os in darwin*) lt_awk_arg='/^libraries:/,/LR/' ;; *) lt_awk_arg='/^libraries:/' ;; esac case $host_os in mingw* | cegcc*) lt_sed_strip_eq='s|=\([A-Za-z]:\)|\1|g' ;; *) lt_sed_strip_eq='s|=/|/|g' ;; esac lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq` case $lt_search_path_spec in *\;*) # if the path contains ";" then we assume it to be the separator # otherwise default to the standard path separator (i.e. ":") - it is # assumed that no part of a normal pathname contains ";" but that should # okay in the real world where ";" in dirpaths is itself problematic. lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED 's/;/ /g'` ;; *) lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED "s/$PATH_SEPARATOR/ /g"` ;; esac # Ok, now we have the path, separated by spaces, we can step through it # and add multilib dir if necessary... lt_tmp_lt_search_path_spec= lt_multi_os_dir=/`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null` # ...but if some path component already ends with the multilib dir we assume # that all is fine and trust -print-search-dirs as is (GCC 4.2? or newer). case "$lt_multi_os_dir; $lt_search_path_spec " in "/; "* | "/.; "* | "/./; "* | *"$lt_multi_os_dir "* | *"$lt_multi_os_dir/ "*) lt_multi_os_dir= ;; esac for lt_sys_path in $lt_search_path_spec; do if test -d "$lt_sys_path$lt_multi_os_dir"; then lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path$lt_multi_os_dir" elif test -n "$lt_multi_os_dir"; then test -d "$lt_sys_path" && \ lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path" fi done lt_search_path_spec=`$ECHO "$lt_tmp_lt_search_path_spec" | awk ' BEGIN {RS = " "; FS = "/|\n";} { lt_foo = ""; lt_count = 0; for (lt_i = NF; lt_i > 0; lt_i--) { if ($lt_i != "" && $lt_i != ".") { if ($lt_i == "..") { lt_count++; } else { if (lt_count == 0) { lt_foo = "/" $lt_i lt_foo; } else { lt_count--; } } } } if (lt_foo != "") { lt_freq[lt_foo]++; } if (lt_freq[lt_foo] == 1) { print lt_foo; } }'` # AWK program above erroneously prepends '/' to C:/dos/paths # for these hosts. case $host_os in mingw* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\ $SED 's|/\([A-Za-z]:\)|\1|g'` ;; esac sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP` else sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" fi library_names_spec= libname_spec='lib$name' soname_spec= shrext_cmds=.so postinstall_cmds= postuninstall_cmds= finish_cmds= finish_eval= shlibpath_var= shlibpath_overrides_runpath=unknown version_type=none dynamic_linker="$host_os ld.so" sys_lib_dlsearch_path_spec="/lib /usr/lib" need_lib_prefix=unknown hardcode_into_libs=no # when you set need_version to no, make sure it does not cause -set_version # flags to be left without arguments need_version=unknown case $host_os in aix3*) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='$libname$release$shared_ext$versuffix $libname.a' shlibpath_var=LIBPATH # AIX 3 has no versioning support, so we append a major version to the name. soname_spec='$libname$release$shared_ext$major' ;; aix[4-9]*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no hardcode_into_libs=yes if test ia64 = "$host_cpu"; then # AIX 5 supports IA64 library_names_spec='$libname$release$shared_ext$major $libname$release$shared_ext$versuffix $libname$shared_ext' shlibpath_var=LD_LIBRARY_PATH else # With GCC up to 2.95.x, collect2 would create an import file # for dependence libraries. The import file would start with # the line '#! .'. This would cause the generated library to # depend on '.', always an invalid library. This was fixed in # development snapshots of GCC prior to 3.0. case $host_os in aix4 | aix4.[01] | aix4.[01].*) if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' echo ' yes ' echo '#endif'; } | $CC -E - | $GREP yes > /dev/null; then : else can_build_shared=no fi ;; esac # Using Import Files as archive members, it is possible to support # filename-based versioning of shared library archives on AIX. While # this would work for both with and without runtime linking, it will # prevent static linking of such archives. So we do filename-based # shared library versioning with .so extension only, which is used # when both runtime linking and shared linking is enabled. # Unfortunately, runtime linking may impact performance, so we do # not want this to be the default eventually. Also, we use the # versioned .so libs for executables only if there is the -brtl # linker flag in LDFLAGS as well, or --with-aix-soname=svr4 only. # To allow for filename-based versioning support, we need to create # libNAME.so.V as an archive file, containing: # *) an Import File, referring to the versioned filename of the # archive as well as the shared archive member, telling the # bitwidth (32 or 64) of that shared object, and providing the # list of exported symbols of that shared object, eventually # decorated with the 'weak' keyword # *) the shared object with the F_LOADONLY flag set, to really avoid # it being seen by the linker. # At run time we better use the real file rather than another symlink, # but for link time we create the symlink libNAME.so -> libNAME.so.V case $with_aix_soname,$aix_use_runtimelinking in # AIX (on Power*) has no versioning support, so currently we cannot hardcode correct # soname into executable. Probably we can add versioning support to # collect2, so additional links can be useful in future. aix,yes) # traditional libtool dynamic_linker='AIX unversionable lib.so' # If using run time linking (on AIX 4.2 or later) use lib.so # instead of lib.a to let people know that these are not # typical AIX shared libraries. library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' ;; aix,no) # traditional AIX only dynamic_linker='AIX lib.a(lib.so.V)' # We preserve .a as extension for shared libraries through AIX4.2 # and later when we are not doing run time linking. library_names_spec='$libname$release.a $libname.a' soname_spec='$libname$release$shared_ext$major' ;; svr4,*) # full svr4 only dynamic_linker="AIX lib.so.V($shared_archive_member_spec.o)" library_names_spec='$libname$release$shared_ext$major $libname$shared_ext' # We do not specify a path in Import Files, so LIBPATH fires. shlibpath_overrides_runpath=yes ;; *,yes) # both, prefer svr4 dynamic_linker="AIX lib.so.V($shared_archive_member_spec.o), lib.a(lib.so.V)" library_names_spec='$libname$release$shared_ext$major $libname$shared_ext' # unpreferred sharedlib libNAME.a needs extra handling postinstall_cmds='test -n "$linkname" || linkname="$realname"~func_stripname "" ".so" "$linkname"~$install_shared_prog "$dir/$func_stripname_result.$libext" "$destdir/$func_stripname_result.$libext"~test -z "$tstripme" || test -z "$striplib" || $striplib "$destdir/$func_stripname_result.$libext"' postuninstall_cmds='for n in $library_names $old_library; do :; done~func_stripname "" ".so" "$n"~test "$func_stripname_result" = "$n" || func_append rmfiles " $odir/$func_stripname_result.$libext"' # We do not specify a path in Import Files, so LIBPATH fires. shlibpath_overrides_runpath=yes ;; *,no) # both, prefer aix dynamic_linker="AIX lib.a(lib.so.V), lib.so.V($shared_archive_member_spec.o)" library_names_spec='$libname$release.a $libname.a' soname_spec='$libname$release$shared_ext$major' # unpreferred sharedlib libNAME.so.V and symlink libNAME.so need extra handling postinstall_cmds='test -z "$dlname" || $install_shared_prog $dir/$dlname $destdir/$dlname~test -z "$tstripme" || test -z "$striplib" || $striplib $destdir/$dlname~test -n "$linkname" || linkname=$realname~func_stripname "" ".a" "$linkname"~(cd "$destdir" && $LN_S -f $dlname $func_stripname_result.so)' postuninstall_cmds='test -z "$dlname" || func_append rmfiles " $odir/$dlname"~for n in $old_library $library_names; do :; done~func_stripname "" ".a" "$n"~func_append rmfiles " $odir/$func_stripname_result.so"' ;; esac shlibpath_var=LIBPATH fi ;; amigaos*) case $host_cpu in powerpc) # Since July 2007 AmigaOS4 officially supports .so libraries. # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' ;; m68k) library_names_spec='$libname.ixlibrary $libname.a' # Create ${libname}_ixlibrary.a entries in /sys/libs. finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' ;; esac ;; beos*) library_names_spec='$libname$shared_ext' dynamic_linker="$host_os ld.so" shlibpath_var=LIBRARY_PATH ;; bsdi[45]*) version_type=linux # correct to gnu/linux during the next big refactor need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" # the default ld.so.conf also contains /usr/contrib/lib and # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow # libtool to hard-code these into programs ;; cygwin* | mingw* | pw32* | cegcc*) version_type=windows shrext_cmds=.dll need_version=no need_lib_prefix=no case $GCC,$cc_basename in yes,*) # gcc library_names_spec='$libname.dll.a' # DLL is installed to $(libdir)/../bin by postinstall_cmds postinstall_cmds='base_file=`basename \$file`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname~ chmod a+x \$dldir/$dlname~ if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; fi' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $RM \$dlpath' shlibpath_overrides_runpath=yes case $host_os in cygwin*) # Cygwin DLLs use 'cyg' prefix rather than 'lib' soname_spec='`echo $libname | sed -e 's/^lib/cyg/'``echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api" ;; mingw* | cegcc*) # MinGW DLLs use traditional 'lib' prefix soname_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' ;; pw32*) # pw32 DLLs use 'pw' prefix rather than 'lib' library_names_spec='`echo $libname | sed -e 's/^lib/pw/'``echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' ;; esac dynamic_linker='Win32 ld.exe' ;; *,cl*) # Native MSVC libname_spec='$name' soname_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' library_names_spec='$libname.dll.lib' case $build_os in mingw*) sys_lib_search_path_spec= lt_save_ifs=$IFS IFS=';' for lt_path in $LIB do IFS=$lt_save_ifs # Let DOS variable expansion print the short 8.3 style file name. lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"` sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path" done IFS=$lt_save_ifs # Convert to MSYS style. sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([a-zA-Z]\\):| /\\1|g' -e 's|^ ||'` ;; cygwin*) # Convert to unix form, then to dos form, then back to unix form # but this time dos style (no spaces!) so that the unix form looks # like /cygdrive/c/PROGRA~1:/cygdr... sys_lib_search_path_spec=`cygpath --path --unix "$LIB"` sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null` sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` ;; *) sys_lib_search_path_spec=$LIB if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then # It is most probably a Windows format PATH. sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` else sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` fi # FIXME: find the short name or the path components, as spaces are # common. (e.g. "Program Files" -> "PROGRA~1") ;; esac # DLL is installed to $(libdir)/../bin by postinstall_cmds postinstall_cmds='base_file=`basename \$file`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $RM \$dlpath' shlibpath_overrides_runpath=yes dynamic_linker='Win32 link.exe' ;; *) # Assume MSVC wrapper library_names_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext $libname.lib' dynamic_linker='Win32 ld.exe' ;; esac # FIXME: first we should search . and the directory the executable is in shlibpath_var=PATH ;; darwin* | rhapsody*) dynamic_linker="$host_os dyld" version_type=darwin need_lib_prefix=no need_version=no library_names_spec='$libname$release$major$shared_ext $libname$shared_ext' soname_spec='$libname$release$major$shared_ext' shlibpath_overrides_runpath=yes shlibpath_var=DYLD_LIBRARY_PATH shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib" sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' ;; dgux*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH ;; freebsd* | dragonfly*) # DragonFly does not have aout. When/if they implement a new # versioning mechanism, adjust this. if test -x /usr/bin/objformat; then objformat=`/usr/bin/objformat` else case $host_os in freebsd[23].*) objformat=aout ;; *) objformat=elf ;; esac fi version_type=freebsd-$objformat case $version_type in freebsd-elf*) library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' need_version=no need_lib_prefix=no ;; freebsd-*) library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' need_version=yes ;; esac shlibpath_var=LD_LIBRARY_PATH case $host_os in freebsd2.*) shlibpath_overrides_runpath=yes ;; freebsd3.[01]* | freebsdelf3.[01]*) shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; freebsd3.[2-9]* | freebsdelf3.[2-9]* | \ freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1) shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; *) # from 4.6 on, and DragonFly shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; esac ;; haiku*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no dynamic_linker="$host_os runtime_loader" library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LIBRARY_PATH shlibpath_overrides_runpath=no sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib' hardcode_into_libs=yes ;; hpux9* | hpux10* | hpux11*) # Give a soname corresponding to the major version so that dld.sl refuses to # link against other versions. version_type=sunos need_lib_prefix=no need_version=no case $host_cpu in ia64*) shrext_cmds='.so' hardcode_into_libs=yes dynamic_linker="$host_os dld.so" shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' if test 32 = "$HPUX_IA64_MODE"; then sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" sys_lib_dlsearch_path_spec=/usr/lib/hpux32 else sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" sys_lib_dlsearch_path_spec=/usr/lib/hpux64 fi ;; hppa*64*) shrext_cmds='.sl' hardcode_into_libs=yes dynamic_linker="$host_os dld.sl" shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; *) shrext_cmds='.sl' dynamic_linker="$host_os dld.sl" shlibpath_var=SHLIB_PATH shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' ;; esac # HP-UX runs *really* slowly unless shared libraries are mode 555, ... postinstall_cmds='chmod 555 $lib' # or fails outright, so override atomically: install_override_mode=555 ;; interix[3-9]*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; irix5* | irix6* | nonstopux*) case $host_os in nonstopux*) version_type=nonstopux ;; *) if test yes = "$lt_cv_prog_gnu_ld"; then version_type=linux # correct to gnu/linux during the next big refactor else version_type=irix fi ;; esac need_lib_prefix=no need_version=no soname_spec='$libname$release$shared_ext$major' library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$release$shared_ext $libname$shared_ext' case $host_os in irix5* | nonstopux*) libsuff= shlibsuff= ;; *) case $LD in # libtool.m4 will add one of these switches to LD *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") libsuff= shlibsuff= libmagic=32-bit;; *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") libsuff=32 shlibsuff=N32 libmagic=N32;; *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") libsuff=64 shlibsuff=64 libmagic=64-bit;; *) libsuff= shlibsuff= libmagic=never-match;; esac ;; esac shlibpath_var=LD_LIBRARY${shlibsuff}_PATH shlibpath_overrides_runpath=no sys_lib_search_path_spec="/usr/lib$libsuff /lib$libsuff /usr/local/lib$libsuff" sys_lib_dlsearch_path_spec="/usr/lib$libsuff /lib$libsuff" hardcode_into_libs=yes ;; # No shared lib support for Linux oldld, aout, or coff. linux*oldld* | linux*aout* | linux*coff*) dynamic_linker=no ;; linux*android*) version_type=none # Android doesn't support versioned libraries. need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext' soname_spec='$libname$release$shared_ext' finish_cmds= shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes # This implies no fast_install, which is unacceptable. # Some rework will be needed to allow for fast_install # before this can be enabled. hardcode_into_libs=yes dynamic_linker='Android linker' # Don't embed -rpath directories since the linker doesn't support them. hardcode_libdir_flag_spec='-L$libdir' ;; # This must be glibc/ELF. linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no # Some binutils ld are patched to set DT_RUNPATH if test ${lt_cv_shlibpath_overrides_runpath+y} then : printf %s "(cached) " >&6 else case e in #( e) lt_cv_shlibpath_overrides_runpath=no save_LDFLAGS=$LDFLAGS save_libdir=$libdir eval "libdir=/foo; wl=\"$lt_prog_compiler_wl\"; \ LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec\"" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : if ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null then : lt_cv_shlibpath_overrides_runpath=yes fi fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LDFLAGS=$save_LDFLAGS libdir=$save_libdir ;; esac fi shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath # This implies no fast_install, which is unacceptable. # Some rework will be needed to allow for fast_install # before this can be enabled. hardcode_into_libs=yes # Add ABI-specific directories to the system library path. sys_lib_dlsearch_path_spec="/lib64 /usr/lib64 /lib /usr/lib" # Ideally, we could use ldconfig to report *all* directores which are # searched for libraries, however this is still not possible. Aside from not # being certain /sbin/ldconfig is available, command # 'ldconfig -N -X -v | grep ^/' on 64bit Fedora does not report /usr/lib64, # even though it is searched at run-time. Try to do the best guess by # appending ld.so.conf contents (and includes) to the search path. if test -f /etc/ld.so.conf; then lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '` sys_lib_dlsearch_path_spec="$sys_lib_dlsearch_path_spec $lt_ld_extra" fi # We used to test for /lib/ld.so.1 and disable shared libraries on # powerpc, because MkLinux only supported shared libraries with the # GNU dynamic linker. Since this was broken with cross compilers, # most powerpc-linux boxes support dynamic linking these days and # people can always --disable-shared, the test was removed, and we # assume the GNU/Linux dynamic linker is in use. dynamic_linker='GNU/Linux ld.so' ;; netbsd*) version_type=sunos need_lib_prefix=no need_version=no if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' dynamic_linker='NetBSD (a.out) ld.so' else library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' dynamic_linker='NetBSD ld.elf_so' fi shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; newsos6) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; *nto* | *qnx*) version_type=qnx need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes dynamic_linker='ldqnx.so' ;; openbsd* | bitrig*) version_type=sunos sys_lib_dlsearch_path_spec=/usr/lib need_lib_prefix=no if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then need_version=no else need_version=yes fi library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; os2*) libname_spec='$name' version_type=windows shrext_cmds=.dll need_version=no need_lib_prefix=no # OS/2 can only load a DLL with a base name of 8 characters or less. soname_spec='`test -n "$os2dllname" && libname="$os2dllname"; v=$($ECHO $release$versuffix | tr -d .-); n=$($ECHO $libname | cut -b -$((8 - ${#v})) | tr . _); $ECHO $n$v`$shared_ext' library_names_spec='${libname}_dll.$libext' dynamic_linker='OS/2 ld.exe' shlibpath_var=BEGINLIBPATH sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec postinstall_cmds='base_file=`basename \$file`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; $ECHO \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname~ chmod a+x \$dldir/$dlname~ if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; fi' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; $ECHO \$dlname'\''`~ dlpath=$dir/\$dldll~ $RM \$dlpath' ;; osf3* | osf4* | osf5*) version_type=osf need_lib_prefix=no need_version=no soname_spec='$libname$release$shared_ext$major' library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; rdos*) dynamic_linker=no ;; solaris*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes # ldd complains unless libraries are executable postinstall_cmds='chmod +x $lib' ;; sunos4*) version_type=sunos library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes if test yes = "$with_gnu_ld"; then need_lib_prefix=no fi need_version=yes ;; sysv4 | sysv4.3*) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH case $host_vendor in sni) shlibpath_overrides_runpath=no need_lib_prefix=no runpath_var=LD_RUN_PATH ;; siemens) need_lib_prefix=no ;; motorola) need_lib_prefix=no need_version=no shlibpath_overrides_runpath=no sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' ;; esac ;; sysv4*MP*) if test -d /usr/nec; then version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='$libname$shared_ext.$versuffix $libname$shared_ext.$major $libname$shared_ext' soname_spec='$libname$shared_ext.$major' shlibpath_var=LD_LIBRARY_PATH fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) version_type=sco need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes if test yes = "$with_gnu_ld"; then sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' else sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' case $host_os in sco3.2v5*) sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" ;; esac fi sys_lib_dlsearch_path_spec='/usr/lib' ;; tpf*) # TPF is a cross-target only. Preferred cross-host = GNU/Linux. version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; uts4*) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH ;; *) dynamic_linker=no ;; esac { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5 printf "%s\n" "$dynamic_linker" >&6; } test no = "$dynamic_linker" && can_build_shared=no variables_saved_for_relink="PATH $shlibpath_var $runpath_var" if test yes = "$GCC"; then variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" fi if test set = "${lt_cv_sys_lib_search_path_spec+set}"; then sys_lib_search_path_spec=$lt_cv_sys_lib_search_path_spec fi if test set = "${lt_cv_sys_lib_dlsearch_path_spec+set}"; then sys_lib_dlsearch_path_spec=$lt_cv_sys_lib_dlsearch_path_spec fi # remember unaugmented sys_lib_dlsearch_path content for libtool script decls... configure_time_dlsearch_path=$sys_lib_dlsearch_path_spec # ... but it needs LT_SYS_LIBRARY_PATH munging for other configure-time code func_munge_path_list sys_lib_dlsearch_path_spec "$LT_SYS_LIBRARY_PATH" # to be used as default LT_SYS_LIBRARY_PATH value in generated libtool configure_time_lt_sys_library_path=$LT_SYS_LIBRARY_PATH { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5 printf %s "checking how to hardcode library paths into programs... " >&6; } hardcode_action= if test -n "$hardcode_libdir_flag_spec" || test -n "$runpath_var" || test yes = "$hardcode_automatic"; then # We can hardcode non-existent directories. if test no != "$hardcode_direct" && # If the only mechanism to avoid hardcoding is shlibpath_var, we # have to relink, otherwise we might link with an installed library # when we should be linking with a yet-to-be-installed one ## test no != "$_LT_TAGVAR(hardcode_shlibpath_var, )" && test no != "$hardcode_minus_L"; then # Linking always hardcodes the temporary library directory. hardcode_action=relink else # We can link without hardcoding, and we can hardcode nonexisting dirs. hardcode_action=immediate fi else # We cannot hardcode anything, or else we can only hardcode existing # directories. hardcode_action=unsupported fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $hardcode_action" >&5 printf "%s\n" "$hardcode_action" >&6; } if test relink = "$hardcode_action" || test yes = "$inherit_rpath"; then # Fast installation is not supported enable_fast_install=no elif test yes = "$shlibpath_overrides_runpath" || test no = "$enable_shared"; then # Fast installation is not necessary enable_fast_install=needless fi if test yes != "$enable_dlopen"; then enable_dlopen=unknown enable_dlopen_self=unknown enable_dlopen_self_static=unknown else lt_cv_dlopen=no lt_cv_dlopen_libs= case $host_os in beos*) lt_cv_dlopen=load_add_on lt_cv_dlopen_libs= lt_cv_dlopen_self=yes ;; mingw* | pw32* | cegcc*) lt_cv_dlopen=LoadLibrary lt_cv_dlopen_libs= ;; cygwin*) lt_cv_dlopen=dlopen lt_cv_dlopen_libs= ;; darwin*) # if libdl is installed we need to link against it { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 printf %s "checking for dlopen in -ldl... " >&6; } if test ${ac_cv_lib_dl_dlopen+y} then : printf %s "(cached) " >&6 else case e in #( e) ac_check_lib_save_LIBS=$LIBS LIBS="-ldl $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. The 'extern "C"' is for builds by C++ compilers; although this is not generally supported in C code supporting it here has little cost and some practical benefit (sr 110532). */ #ifdef __cplusplus extern "C" #endif char dlopen (void); int main (void) { return dlopen (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : ac_cv_lib_dl_dlopen=yes else case e in #( e) ac_cv_lib_dl_dlopen=no ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 printf "%s\n" "$ac_cv_lib_dl_dlopen" >&6; } if test "x$ac_cv_lib_dl_dlopen" = xyes then : lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-ldl else case e in #( e) lt_cv_dlopen=dyld lt_cv_dlopen_libs= lt_cv_dlopen_self=yes ;; esac fi ;; tpf*) # Don't try to run any link tests for TPF. We know it's impossible # because TPF is a cross-compiler, and we know how we open DSOs. lt_cv_dlopen=dlopen lt_cv_dlopen_libs= lt_cv_dlopen_self=no ;; *) ac_fn_c_check_func "$LINENO" "shl_load" "ac_cv_func_shl_load" if test "x$ac_cv_func_shl_load" = xyes then : lt_cv_dlopen=shl_load else case e in #( e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for shl_load in -ldld" >&5 printf %s "checking for shl_load in -ldld... " >&6; } if test ${ac_cv_lib_dld_shl_load+y} then : printf %s "(cached) " >&6 else case e in #( e) ac_check_lib_save_LIBS=$LIBS LIBS="-ldld $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. The 'extern "C"' is for builds by C++ compilers; although this is not generally supported in C code supporting it here has little cost and some practical benefit (sr 110532). */ #ifdef __cplusplus extern "C" #endif char shl_load (void); int main (void) { return shl_load (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : ac_cv_lib_dld_shl_load=yes else case e in #( e) ac_cv_lib_dld_shl_load=no ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_shl_load" >&5 printf "%s\n" "$ac_cv_lib_dld_shl_load" >&6; } if test "x$ac_cv_lib_dld_shl_load" = xyes then : lt_cv_dlopen=shl_load lt_cv_dlopen_libs=-ldld else case e in #( e) ac_fn_c_check_func "$LINENO" "dlopen" "ac_cv_func_dlopen" if test "x$ac_cv_func_dlopen" = xyes then : lt_cv_dlopen=dlopen else case e in #( e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 printf %s "checking for dlopen in -ldl... " >&6; } if test ${ac_cv_lib_dl_dlopen+y} then : printf %s "(cached) " >&6 else case e in #( e) ac_check_lib_save_LIBS=$LIBS LIBS="-ldl $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. The 'extern "C"' is for builds by C++ compilers; although this is not generally supported in C code supporting it here has little cost and some practical benefit (sr 110532). */ #ifdef __cplusplus extern "C" #endif char dlopen (void); int main (void) { return dlopen (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : ac_cv_lib_dl_dlopen=yes else case e in #( e) ac_cv_lib_dl_dlopen=no ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 printf "%s\n" "$ac_cv_lib_dl_dlopen" >&6; } if test "x$ac_cv_lib_dl_dlopen" = xyes then : lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-ldl else case e in #( e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for dlopen in -lsvld" >&5 printf %s "checking for dlopen in -lsvld... " >&6; } if test ${ac_cv_lib_svld_dlopen+y} then : printf %s "(cached) " >&6 else case e in #( e) ac_check_lib_save_LIBS=$LIBS LIBS="-lsvld $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. The 'extern "C"' is for builds by C++ compilers; although this is not generally supported in C code supporting it here has little cost and some practical benefit (sr 110532). */ #ifdef __cplusplus extern "C" #endif char dlopen (void); int main (void) { return dlopen (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : ac_cv_lib_svld_dlopen=yes else case e in #( e) ac_cv_lib_svld_dlopen=no ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_svld_dlopen" >&5 printf "%s\n" "$ac_cv_lib_svld_dlopen" >&6; } if test "x$ac_cv_lib_svld_dlopen" = xyes then : lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-lsvld else case e in #( e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for dld_link in -ldld" >&5 printf %s "checking for dld_link in -ldld... " >&6; } if test ${ac_cv_lib_dld_dld_link+y} then : printf %s "(cached) " >&6 else case e in #( e) ac_check_lib_save_LIBS=$LIBS LIBS="-ldld $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. The 'extern "C"' is for builds by C++ compilers; although this is not generally supported in C code supporting it here has little cost and some practical benefit (sr 110532). */ #ifdef __cplusplus extern "C" #endif char dld_link (void); int main (void) { return dld_link (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : ac_cv_lib_dld_dld_link=yes else case e in #( e) ac_cv_lib_dld_dld_link=no ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_dld_link" >&5 printf "%s\n" "$ac_cv_lib_dld_dld_link" >&6; } if test "x$ac_cv_lib_dld_dld_link" = xyes then : lt_cv_dlopen=dld_link lt_cv_dlopen_libs=-ldld fi ;; esac fi ;; esac fi ;; esac fi ;; esac fi ;; esac fi ;; esac if test no = "$lt_cv_dlopen"; then enable_dlopen=no else enable_dlopen=yes fi case $lt_cv_dlopen in dlopen) save_CPPFLAGS=$CPPFLAGS test yes = "$ac_cv_header_dlfcn_h" && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" save_LDFLAGS=$LDFLAGS wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" save_LIBS=$LIBS LIBS="$lt_cv_dlopen_libs $LIBS" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether a program can dlopen itself" >&5 printf %s "checking whether a program can dlopen itself... " >&6; } if test ${lt_cv_dlopen_self+y} then : printf %s "(cached) " >&6 else case e in #( e) if test yes = "$cross_compiling"; then : lt_cv_dlopen_self=cross else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF #line $LINENO "configure" #include "confdefs.h" #if HAVE_DLFCN_H #include #endif #include #ifdef RTLD_GLOBAL # define LT_DLGLOBAL RTLD_GLOBAL #else # ifdef DL_GLOBAL # define LT_DLGLOBAL DL_GLOBAL # else # define LT_DLGLOBAL 0 # endif #endif /* We may have to define LT_DLLAZY_OR_NOW in the command line if we find out it does not work in some platform. */ #ifndef LT_DLLAZY_OR_NOW # ifdef RTLD_LAZY # define LT_DLLAZY_OR_NOW RTLD_LAZY # else # ifdef DL_LAZY # define LT_DLLAZY_OR_NOW DL_LAZY # else # ifdef RTLD_NOW # define LT_DLLAZY_OR_NOW RTLD_NOW # else # ifdef DL_NOW # define LT_DLLAZY_OR_NOW DL_NOW # else # define LT_DLLAZY_OR_NOW 0 # endif # endif # endif # endif #endif /* When -fvisibility=hidden is used, assume the code has been annotated correspondingly for the symbols needed. */ #if defined __GNUC__ && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) int fnord () __attribute__((visibility("default"))); #endif int fnord () { return 42; } int main () { void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); int status = $lt_dlunknown; if (self) { if (dlsym (self,"fnord")) status = $lt_dlno_uscore; else { if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; else puts (dlerror ()); } /* dlclose (self); */ } else puts (dlerror ()); return status; } _LT_EOF if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 (eval $ac_link) 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && test -s "conftest$ac_exeext" 2>/dev/null; then (./conftest; exit; ) >&5 2>/dev/null lt_status=$? case x$lt_status in x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;; x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;; x$lt_dlunknown|x*) lt_cv_dlopen_self=no ;; esac else : # compilation failed lt_cv_dlopen_self=no fi fi rm -fr conftest* ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self" >&5 printf "%s\n" "$lt_cv_dlopen_self" >&6; } if test yes = "$lt_cv_dlopen_self"; then wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether a statically linked program can dlopen itself" >&5 printf %s "checking whether a statically linked program can dlopen itself... " >&6; } if test ${lt_cv_dlopen_self_static+y} then : printf %s "(cached) " >&6 else case e in #( e) if test yes = "$cross_compiling"; then : lt_cv_dlopen_self_static=cross else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF #line $LINENO "configure" #include "confdefs.h" #if HAVE_DLFCN_H #include #endif #include #ifdef RTLD_GLOBAL # define LT_DLGLOBAL RTLD_GLOBAL #else # ifdef DL_GLOBAL # define LT_DLGLOBAL DL_GLOBAL # else # define LT_DLGLOBAL 0 # endif #endif /* We may have to define LT_DLLAZY_OR_NOW in the command line if we find out it does not work in some platform. */ #ifndef LT_DLLAZY_OR_NOW # ifdef RTLD_LAZY # define LT_DLLAZY_OR_NOW RTLD_LAZY # else # ifdef DL_LAZY # define LT_DLLAZY_OR_NOW DL_LAZY # else # ifdef RTLD_NOW # define LT_DLLAZY_OR_NOW RTLD_NOW # else # ifdef DL_NOW # define LT_DLLAZY_OR_NOW DL_NOW # else # define LT_DLLAZY_OR_NOW 0 # endif # endif # endif # endif #endif /* When -fvisibility=hidden is used, assume the code has been annotated correspondingly for the symbols needed. */ #if defined __GNUC__ && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) int fnord () __attribute__((visibility("default"))); #endif int fnord () { return 42; } int main () { void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); int status = $lt_dlunknown; if (self) { if (dlsym (self,"fnord")) status = $lt_dlno_uscore; else { if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; else puts (dlerror ()); } /* dlclose (self); */ } else puts (dlerror ()); return status; } _LT_EOF if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 (eval $ac_link) 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && test -s "conftest$ac_exeext" 2>/dev/null; then (./conftest; exit; ) >&5 2>/dev/null lt_status=$? case x$lt_status in x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;; x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;; x$lt_dlunknown|x*) lt_cv_dlopen_self_static=no ;; esac else : # compilation failed lt_cv_dlopen_self_static=no fi fi rm -fr conftest* ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self_static" >&5 printf "%s\n" "$lt_cv_dlopen_self_static" >&6; } fi CPPFLAGS=$save_CPPFLAGS LDFLAGS=$save_LDFLAGS LIBS=$save_LIBS ;; esac case $lt_cv_dlopen_self in yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; *) enable_dlopen_self=unknown ;; esac case $lt_cv_dlopen_self_static in yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; *) enable_dlopen_self_static=unknown ;; esac fi striplib= old_striplib= { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether stripping libraries is possible" >&5 printf %s "checking whether stripping libraries is possible... " >&6; } if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" test -z "$striplib" && striplib="$STRIP --strip-unneeded" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } else # FIXME - insert some real tests, host_os isn't really good enough case $host_os in darwin*) if test -n "$STRIP"; then striplib="$STRIP -x" old_striplib="$STRIP -S" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi ;; *) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } ;; esac fi # Report what library types will actually be built { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if libtool supports shared libraries" >&5 printf %s "checking if libtool supports shared libraries... " >&6; } { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $can_build_shared" >&5 printf "%s\n" "$can_build_shared" >&6; } { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to build shared libraries" >&5 printf %s "checking whether to build shared libraries... " >&6; } test no = "$can_build_shared" && enable_shared=no # On AIX, shared libraries and static libraries use the same namespace, and # are all built from PIC. case $host_os in aix3*) test yes = "$enable_shared" && enable_static=no if test -n "$RANLIB"; then archive_cmds="$archive_cmds~\$RANLIB \$lib" postinstall_cmds='$RANLIB $lib' fi ;; aix[4-9]*) if test ia64 != "$host_cpu"; then case $enable_shared,$with_aix_soname,$aix_use_runtimelinking in yes,aix,yes) ;; # shared object as lib.so file only yes,svr4,*) ;; # shared object as lib.so archive member only yes,*) enable_static=no ;; # shared object in lib.a archive as well esac fi ;; esac { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $enable_shared" >&5 printf "%s\n" "$enable_shared" >&6; } { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to build static libraries" >&5 printf %s "checking whether to build static libraries... " >&6; } # Make sure either enable_shared or enable_static is yes. test yes = "$enable_shared" || enable_static=yes { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $enable_static" >&5 printf "%s\n" "$enable_static" >&6; } fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu CC=$lt_save_CC ac_ext=${ac_fc_srcext-f} ac_compile='$FC -c $FCFLAGS $ac_fcflags_srcext conftest.$ac_ext >&5' ac_link='$FC -o conftest$ac_exeext $FCFLAGS $LDFLAGS $ac_fcflags_srcext conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_fc_compiler_gnu if test -z "$FC" || test no = "$FC"; then _lt_disable_FC=yes fi archive_cmds_need_lc_FC=no allow_undefined_flag_FC= always_export_symbols_FC=no archive_expsym_cmds_FC= export_dynamic_flag_spec_FC= hardcode_direct_FC=no hardcode_direct_absolute_FC=no hardcode_libdir_flag_spec_FC= hardcode_libdir_separator_FC= hardcode_minus_L_FC=no hardcode_automatic_FC=no inherit_rpath_FC=no module_cmds_FC= module_expsym_cmds_FC= link_all_deplibs_FC=unknown old_archive_cmds_FC=$old_archive_cmds reload_flag_FC=$reload_flag reload_cmds_FC=$reload_cmds no_undefined_flag_FC= whole_archive_flag_spec_FC= enable_shared_with_static_runtimes_FC=no # Source file extension for fc test sources. ac_ext=${ac_fc_srcext-f} # Object file extension for compiled fc test sources. objext=o objext_FC=$objext # No sense in running all these tests if we already determined that # the FC compiler isn't working. Some variables (like enable_shared) # are currently assumed to apply to all compilers on this platform, # and will be corrupted by setting them based on a non-working compiler. if test yes != "$_lt_disable_FC"; then # Code to be used in simple compile tests lt_simple_compile_test_code="\ subroutine t return end " # Code to be used in simple link tests lt_simple_link_test_code="\ program t end " # ltmain only uses $CC for tagged configurations so make sure $CC is set. # If no C compiler was specified, use CC. LTCC=${LTCC-"$CC"} # If no C compiler flags were specified, use CFLAGS. LTCFLAGS=${LTCFLAGS-"$CFLAGS"} # Allow CC to be a program name with arguments. compiler=$CC # save warnings/boilerplate of simple test code ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" >conftest.$ac_ext eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_compiler_boilerplate=`cat conftest.err` $RM conftest* ac_outfile=conftest.$ac_objext echo "$lt_simple_link_test_code" >conftest.$ac_ext eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_linker_boilerplate=`cat conftest.err` $RM -r conftest* # Allow CC to be a program name with arguments. lt_save_CC=$CC lt_save_GCC=$GCC lt_save_CFLAGS=$CFLAGS CC=${FC-"f95"} CFLAGS=$FCFLAGS compiler=$CC GCC=$ac_cv_fc_compiler_gnu compiler_FC=$CC func_cc_basename $compiler cc_basename=$func_cc_basename_result if test -n "$compiler"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if libtool supports shared libraries" >&5 printf %s "checking if libtool supports shared libraries... " >&6; } { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $can_build_shared" >&5 printf "%s\n" "$can_build_shared" >&6; } { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to build shared libraries" >&5 printf %s "checking whether to build shared libraries... " >&6; } test no = "$can_build_shared" && enable_shared=no # On AIX, shared libraries and static libraries use the same namespace, and # are all built from PIC. case $host_os in aix3*) test yes = "$enable_shared" && enable_static=no if test -n "$RANLIB"; then archive_cmds="$archive_cmds~\$RANLIB \$lib" postinstall_cmds='$RANLIB $lib' fi ;; aix[4-9]*) if test ia64 != "$host_cpu"; then case $enable_shared,$with_aix_soname,$aix_use_runtimelinking in yes,aix,yes) ;; # shared object as lib.so file only yes,svr4,*) ;; # shared object as lib.so archive member only yes,*) enable_static=no ;; # shared object in lib.a archive as well esac fi ;; esac { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $enable_shared" >&5 printf "%s\n" "$enable_shared" >&6; } { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to build static libraries" >&5 printf %s "checking whether to build static libraries... " >&6; } # Make sure either enable_shared or enable_static is yes. test yes = "$enable_shared" || enable_static=yes { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $enable_static" >&5 printf "%s\n" "$enable_static" >&6; } GCC_FC=$ac_cv_fc_compiler_gnu LD_FC=$LD ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change ## the running order or otherwise move them around unless you know exactly ## what you are doing... # Dependencies to place before and after the object being linked: predep_objects_FC= postdep_objects_FC= predeps_FC= postdeps_FC= compiler_lib_search_path_FC= cat > conftest.$ac_ext <<_LT_EOF subroutine foo implicit none integer a a=0 return end _LT_EOF _lt_libdeps_save_CFLAGS=$CFLAGS case "$CC $CFLAGS " in #( *\ -flto*\ *) CFLAGS="$CFLAGS -fno-lto" ;; *\ -fwhopr*\ *) CFLAGS="$CFLAGS -fno-whopr" ;; *\ -fuse-linker-plugin*\ *) CFLAGS="$CFLAGS -fno-use-linker-plugin" ;; esac if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then # Parse the compiler output and extract the necessary # objects, libraries and library flags. # Sentinel used to keep track of whether or not we are before # the conftest object file. pre_test_object_deps_done=no for p in `eval "$output_verbose_link_cmd"`; do case $prev$p in -L* | -R* | -l*) # Some compilers place space between "-{L,R}" and the path. # Remove the space. if test x-L = "$p" || test x-R = "$p"; then prev=$p continue fi # Expand the sysroot to ease extracting the directories later. if test -z "$prev"; then case $p in -L*) func_stripname_cnf '-L' '' "$p"; prev=-L; p=$func_stripname_result ;; -R*) func_stripname_cnf '-R' '' "$p"; prev=-R; p=$func_stripname_result ;; -l*) func_stripname_cnf '-l' '' "$p"; prev=-l; p=$func_stripname_result ;; esac fi case $p in =*) func_stripname_cnf '=' '' "$p"; p=$lt_sysroot$func_stripname_result ;; esac if test no = "$pre_test_object_deps_done"; then case $prev in -L | -R) # Internal compiler library paths should come after those # provided the user. The postdeps already come after the # user supplied libs so there is no need to process them. if test -z "$compiler_lib_search_path_FC"; then compiler_lib_search_path_FC=$prev$p else compiler_lib_search_path_FC="${compiler_lib_search_path_FC} $prev$p" fi ;; # The "-l" case would never come before the object being # linked, so don't bother handling this case. esac else if test -z "$postdeps_FC"; then postdeps_FC=$prev$p else postdeps_FC="${postdeps_FC} $prev$p" fi fi prev= ;; *.lto.$objext) ;; # Ignore GCC LTO objects *.$objext) # This assumes that the test object file only shows up # once in the compiler output. if test "$p" = "conftest.$objext"; then pre_test_object_deps_done=yes continue fi if test no = "$pre_test_object_deps_done"; then if test -z "$predep_objects_FC"; then predep_objects_FC=$p else predep_objects_FC="$predep_objects_FC $p" fi else if test -z "$postdep_objects_FC"; then postdep_objects_FC=$p else postdep_objects_FC="$postdep_objects_FC $p" fi fi ;; *) ;; # Ignore the rest. esac done # Clean up. rm -f a.out a.exe else echo "libtool.m4: error: problem compiling FC test program" fi $RM -f confest.$objext CFLAGS=$_lt_libdeps_save_CFLAGS # PORTME: override above test on systems where it is broken case " $postdeps_FC " in *" -lc "*) archive_cmds_need_lc_FC=no ;; esac compiler_lib_search_dirs_FC= if test -n "${compiler_lib_search_path_FC}"; then compiler_lib_search_dirs_FC=`echo " ${compiler_lib_search_path_FC}" | $SED -e 's! -L! !g' -e 's!^ !!'` fi lt_prog_compiler_wl_FC= lt_prog_compiler_pic_FC= lt_prog_compiler_static_FC= if test yes = "$GCC"; then lt_prog_compiler_wl_FC='-Wl,' lt_prog_compiler_static_FC='-static' case $host_os in aix*) # All AIX code is PIC. if test ia64 = "$host_cpu"; then # AIX 5 now supports IA64 processor lt_prog_compiler_static_FC='-Bstatic' fi lt_prog_compiler_pic_FC='-fPIC' ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support lt_prog_compiler_pic_FC='-fPIC' ;; m68k) # FIXME: we need at least 68020 code to build shared libraries, but # adding the '-m68020' flag to GCC prevents building anything better, # like '-m68040'. lt_prog_compiler_pic_FC='-m68020 -resident32 -malways-restore-a4' ;; esac ;; beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) # PIC is the default for these OSes. ;; mingw* | cygwin* | pw32* | os2* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). # Although the cygwin gcc ignores -fPIC, still need this for old-style # (--disable-auto-import) libraries lt_prog_compiler_pic_FC='-DDLL_EXPORT' case $host_os in os2*) lt_prog_compiler_static_FC='$wl-static' ;; esac ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files lt_prog_compiler_pic_FC='-fno-common' ;; haiku*) # PIC is the default for Haiku. # The "-static" flag exists, but is broken. lt_prog_compiler_static_FC= ;; hpux*) # PIC is the default for 64-bit PA HP-UX, but not for 32-bit # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag # sets the default TLS model and affects inlining. case $host_cpu in hppa*64*) # +Z the default ;; *) lt_prog_compiler_pic_FC='-fPIC' ;; esac ;; interix[3-9]*) # Interix 3.x gcc -fpic/-fPIC options generate broken code. # Instead, we relocate shared libraries at runtime. ;; msdosdjgpp*) # Just because we use GCC doesn't mean we suddenly get shared libraries # on systems that don't support them. lt_prog_compiler_can_build_shared_FC=no enable_shared=no ;; *nto* | *qnx*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. lt_prog_compiler_pic_FC='-fPIC -shared' ;; sysv4*MP*) if test -d /usr/nec; then lt_prog_compiler_pic_FC=-Kconform_pic fi ;; *) lt_prog_compiler_pic_FC='-fPIC' ;; esac case $cc_basename in nvcc*) # Cuda Compiler Driver 2.2 lt_prog_compiler_wl_FC='-Xlinker ' if test -n "$lt_prog_compiler_pic_FC"; then lt_prog_compiler_pic_FC="-Xcompiler $lt_prog_compiler_pic_FC" fi ;; esac else # PORTME Check for flag to pass linker flags through the system compiler. case $host_os in aix*) lt_prog_compiler_wl_FC='-Wl,' if test ia64 = "$host_cpu"; then # AIX 5 now supports IA64 processor lt_prog_compiler_static_FC='-Bstatic' else lt_prog_compiler_static_FC='-bnso -bI:/lib/syscalls.exp' fi ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files lt_prog_compiler_pic_FC='-fno-common' case $cc_basename in nagfor*) # NAG Fortran compiler lt_prog_compiler_wl_FC='-Wl,-Wl,,' lt_prog_compiler_pic_FC='-PIC' lt_prog_compiler_static_FC='-Bstatic' ;; esac ;; mingw* | cygwin* | pw32* | os2* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). lt_prog_compiler_pic_FC='-DDLL_EXPORT' case $host_os in os2*) lt_prog_compiler_static_FC='$wl-static' ;; esac ;; hpux9* | hpux10* | hpux11*) lt_prog_compiler_wl_FC='-Wl,' # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but # not for PA HP-UX. case $host_cpu in hppa*64*|ia64*) # +Z the default ;; *) lt_prog_compiler_pic_FC='+Z' ;; esac # Is there a better lt_prog_compiler_static that works with the bundled CC? lt_prog_compiler_static_FC='$wl-a ${wl}archive' ;; irix5* | irix6* | nonstopux*) lt_prog_compiler_wl_FC='-Wl,' # PIC (with -KPIC) is the default. lt_prog_compiler_static_FC='-non_shared' ;; linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) case $cc_basename in # old Intel for x86_64, which still supported -KPIC. ecc*) lt_prog_compiler_wl_FC='-Wl,' lt_prog_compiler_pic_FC='-KPIC' lt_prog_compiler_static_FC='-static' ;; # icc used to be incompatible with GCC. # ICC 10 doesn't accept -KPIC any more. icc* | ifort*) lt_prog_compiler_wl_FC='-Wl,' lt_prog_compiler_pic_FC='-fPIC' lt_prog_compiler_static_FC='-static' ;; # Lahey Fortran 8.1. lf95*) lt_prog_compiler_wl_FC='-Wl,' lt_prog_compiler_pic_FC='--shared' lt_prog_compiler_static_FC='--static' ;; nagfor*) # NAG Fortran compiler lt_prog_compiler_wl_FC='-Wl,-Wl,,' lt_prog_compiler_pic_FC='-PIC' lt_prog_compiler_static_FC='-Bstatic' ;; tcc*) # Fabrice Bellard et al's Tiny C Compiler lt_prog_compiler_wl_FC='-Wl,' lt_prog_compiler_pic_FC='-fPIC' lt_prog_compiler_static_FC='-static' ;; pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*) # Portland Group compilers (*not* the Pentium gcc compiler, # which looks to be a dead project) lt_prog_compiler_wl_FC='-Wl,' lt_prog_compiler_pic_FC='-fpic' lt_prog_compiler_static_FC='-Bstatic' ;; ccc*) lt_prog_compiler_wl_FC='-Wl,' # All Alpha code is PIC. lt_prog_compiler_static_FC='-non_shared' ;; xl* | bgxl* | bgf* | mpixl*) # IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene lt_prog_compiler_wl_FC='-Wl,' lt_prog_compiler_pic_FC='-qpic' lt_prog_compiler_static_FC='-qstaticlink' ;; *) case `$CC -V 2>&1 | sed 5q` in *Sun\ Ceres\ Fortran* | *Sun*Fortran*\ [1-7].* | *Sun*Fortran*\ 8.[0-3]*) # Sun Fortran 8.3 passes all unrecognized flags to the linker lt_prog_compiler_pic_FC='-KPIC' lt_prog_compiler_static_FC='-Bstatic' lt_prog_compiler_wl_FC='' ;; *Sun\ F* | *Sun*Fortran*) lt_prog_compiler_pic_FC='-KPIC' lt_prog_compiler_static_FC='-Bstatic' lt_prog_compiler_wl_FC='-Qoption ld ' ;; *Sun\ C*) # Sun C 5.9 lt_prog_compiler_pic_FC='-KPIC' lt_prog_compiler_static_FC='-Bstatic' lt_prog_compiler_wl_FC='-Wl,' ;; *Intel*\ [CF]*Compiler*) lt_prog_compiler_wl_FC='-Wl,' lt_prog_compiler_pic_FC='-fPIC' lt_prog_compiler_static_FC='-static' ;; *Portland\ Group*) lt_prog_compiler_wl_FC='-Wl,' lt_prog_compiler_pic_FC='-fpic' lt_prog_compiler_static_FC='-Bstatic' ;; esac ;; esac ;; newsos6) lt_prog_compiler_pic_FC='-KPIC' lt_prog_compiler_static_FC='-Bstatic' ;; *nto* | *qnx*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. lt_prog_compiler_pic_FC='-fPIC -shared' ;; osf3* | osf4* | osf5*) lt_prog_compiler_wl_FC='-Wl,' # All OSF/1 code is PIC. lt_prog_compiler_static_FC='-non_shared' ;; rdos*) lt_prog_compiler_static_FC='-non_shared' ;; solaris*) lt_prog_compiler_pic_FC='-KPIC' lt_prog_compiler_static_FC='-Bstatic' case $cc_basename in f77* | f90* | f95* | sunf77* | sunf90* | sunf95*) lt_prog_compiler_wl_FC='-Qoption ld ';; *) lt_prog_compiler_wl_FC='-Wl,';; esac ;; sunos4*) lt_prog_compiler_wl_FC='-Qoption ld ' lt_prog_compiler_pic_FC='-PIC' lt_prog_compiler_static_FC='-Bstatic' ;; sysv4 | sysv4.2uw2* | sysv4.3*) lt_prog_compiler_wl_FC='-Wl,' lt_prog_compiler_pic_FC='-KPIC' lt_prog_compiler_static_FC='-Bstatic' ;; sysv4*MP*) if test -d /usr/nec; then lt_prog_compiler_pic_FC='-Kconform_pic' lt_prog_compiler_static_FC='-Bstatic' fi ;; sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) lt_prog_compiler_wl_FC='-Wl,' lt_prog_compiler_pic_FC='-KPIC' lt_prog_compiler_static_FC='-Bstatic' ;; unicos*) lt_prog_compiler_wl_FC='-Wl,' lt_prog_compiler_can_build_shared_FC=no ;; uts4*) lt_prog_compiler_pic_FC='-pic' lt_prog_compiler_static_FC='-Bstatic' ;; *) lt_prog_compiler_can_build_shared_FC=no ;; esac fi case $host_os in # For platforms that do not support PIC, -DPIC is meaningless: *djgpp*) lt_prog_compiler_pic_FC= ;; *) lt_prog_compiler_pic_FC="$lt_prog_compiler_pic_FC" ;; esac { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5 printf %s "checking for $compiler option to produce PIC... " >&6; } if test ${lt_cv_prog_compiler_pic_FC+y} then : printf %s "(cached) " >&6 else case e in #( e) lt_cv_prog_compiler_pic_FC=$lt_prog_compiler_pic_FC ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_FC" >&5 printf "%s\n" "$lt_cv_prog_compiler_pic_FC" >&6; } lt_prog_compiler_pic_FC=$lt_cv_prog_compiler_pic_FC # # Check to make sure the PIC flag actually works. # if test -n "$lt_prog_compiler_pic_FC"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic_FC works" >&5 printf %s "checking if $compiler PIC flag $lt_prog_compiler_pic_FC works... " >&6; } if test ${lt_cv_prog_compiler_pic_works_FC+y} then : printf %s "(cached) " >&6 else case e in #( e) lt_cv_prog_compiler_pic_works_FC=no ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="$lt_prog_compiler_pic_FC" ## exclude from sc_useless_quotes_in_assignment # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. # The option is referenced via a variable to avoid confusing sed. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler_pic_works_FC=yes fi fi $RM conftest* ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works_FC" >&5 printf "%s\n" "$lt_cv_prog_compiler_pic_works_FC" >&6; } if test yes = "$lt_cv_prog_compiler_pic_works_FC"; then case $lt_prog_compiler_pic_FC in "" | " "*) ;; *) lt_prog_compiler_pic_FC=" $lt_prog_compiler_pic_FC" ;; esac else lt_prog_compiler_pic_FC= lt_prog_compiler_can_build_shared_FC=no fi fi # # Check to make sure the static flag actually works. # wl=$lt_prog_compiler_wl_FC eval lt_tmp_static_flag=\"$lt_prog_compiler_static_FC\" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5 printf %s "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; } if test ${lt_cv_prog_compiler_static_works_FC+y} then : printf %s "(cached) " >&6 else case e in #( e) lt_cv_prog_compiler_static_works_FC=no save_LDFLAGS=$LDFLAGS LDFLAGS="$LDFLAGS $lt_tmp_static_flag" echo "$lt_simple_link_test_code" > conftest.$ac_ext if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then # The linker can only warn and ignore the option if not recognized # So say no if there are warnings if test -s conftest.err; then # Append any errors to the config.log. cat conftest.err 1>&5 $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler_static_works_FC=yes fi else lt_cv_prog_compiler_static_works_FC=yes fi fi $RM -r conftest* LDFLAGS=$save_LDFLAGS ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works_FC" >&5 printf "%s\n" "$lt_cv_prog_compiler_static_works_FC" >&6; } if test yes = "$lt_cv_prog_compiler_static_works_FC"; then : else lt_prog_compiler_static_FC= fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 printf %s "checking if $compiler supports -c -o file.$ac_objext... " >&6; } if test ${lt_cv_prog_compiler_c_o_FC+y} then : printf %s "(cached) " >&6 else case e in #( e) lt_cv_prog_compiler_c_o_FC=no $RM -r conftest 2>/dev/null mkdir conftest cd conftest mkdir out echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-o out/conftest2.$ac_objext" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then lt_cv_prog_compiler_c_o_FC=yes fi fi chmod u+w . 2>&5 $RM conftest* # SGI C++ compiler will create directory out/ii_files/ for # template instantiation test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files $RM out/* && rmdir out cd .. $RM -r conftest $RM conftest* ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o_FC" >&5 printf "%s\n" "$lt_cv_prog_compiler_c_o_FC" >&6; } { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 printf %s "checking if $compiler supports -c -o file.$ac_objext... " >&6; } if test ${lt_cv_prog_compiler_c_o_FC+y} then : printf %s "(cached) " >&6 else case e in #( e) lt_cv_prog_compiler_c_o_FC=no $RM -r conftest 2>/dev/null mkdir conftest cd conftest mkdir out echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-o out/conftest2.$ac_objext" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then lt_cv_prog_compiler_c_o_FC=yes fi fi chmod u+w . 2>&5 $RM conftest* # SGI C++ compiler will create directory out/ii_files/ for # template instantiation test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files $RM out/* && rmdir out cd .. $RM -r conftest $RM conftest* ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o_FC" >&5 printf "%s\n" "$lt_cv_prog_compiler_c_o_FC" >&6; } hard_links=nottested if test no = "$lt_cv_prog_compiler_c_o_FC" && test no != "$need_locks"; then # do not overwrite the value of need_locks provided by the user { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5 printf %s "checking if we can lock with hard links... " >&6; } hard_links=yes $RM conftest* ln conftest.a conftest.b 2>/dev/null && hard_links=no touch conftest.a ln conftest.a conftest.b 2>&5 || hard_links=no ln conftest.a conftest.b 2>/dev/null && hard_links=no { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5 printf "%s\n" "$hard_links" >&6; } if test no = "$hard_links"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: '$CC' does not support '-c -o', so 'make -j' may be unsafe" >&5 printf "%s\n" "$as_me: WARNING: '$CC' does not support '-c -o', so 'make -j' may be unsafe" >&2;} need_locks=warn fi else need_locks=no fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5 printf %s "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } runpath_var= allow_undefined_flag_FC= always_export_symbols_FC=no archive_cmds_FC= archive_expsym_cmds_FC= compiler_needs_object_FC=no enable_shared_with_static_runtimes_FC=no export_dynamic_flag_spec_FC= export_symbols_cmds_FC='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' hardcode_automatic_FC=no hardcode_direct_FC=no hardcode_direct_absolute_FC=no hardcode_libdir_flag_spec_FC= hardcode_libdir_separator_FC= hardcode_minus_L_FC=no hardcode_shlibpath_var_FC=unsupported inherit_rpath_FC=no link_all_deplibs_FC=unknown module_cmds_FC= module_expsym_cmds_FC= old_archive_from_new_cmds_FC= old_archive_from_expsyms_cmds_FC= thread_safe_flag_spec_FC= whole_archive_flag_spec_FC= # include_expsyms should be a list of space-separated symbols to be *always* # included in the symbol list include_expsyms_FC= # exclude_expsyms can be an extended regexp of symbols to exclude # it will be wrapped by ' (' and ')$', so one must not match beginning or # end of line. Example: 'a|bc|.*d.*' will exclude the symbols 'a' and 'bc', # as well as any symbol that contains 'd'. exclude_expsyms_FC='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*' # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out # platforms (ab)use it in PIC code, but their linkers get confused if # the symbol is explicitly referenced. Since portable code cannot # rely on this symbol name, it's probably fine to never include it in # preloaded symbol tables. # Exclude shared library initialization/finalization symbols. extract_expsyms_cmds= case $host_os in cygwin* | mingw* | pw32* | cegcc*) # FIXME: the MSVC++ port hasn't been tested in a loooong time # When not using gcc, we currently assume that we are using # Microsoft Visual C++. if test yes != "$GCC"; then with_gnu_ld=no fi ;; interix*) # we just hope/assume this is gcc and not c89 (= MSVC++) with_gnu_ld=yes ;; openbsd* | bitrig*) with_gnu_ld=no ;; esac ld_shlibs_FC=yes # On some targets, GNU ld is compatible enough with the native linker # that we're better off using the native interface for both. lt_use_gnu_ld_interface=no if test yes = "$with_gnu_ld"; then case $host_os in aix*) # The AIX port of GNU ld has always aspired to compatibility # with the native linker. However, as the warning in the GNU ld # block says, versions before 2.19.5* couldn't really create working # shared libraries, regardless of the interface used. case `$LD -v 2>&1` in *\ \(GNU\ Binutils\)\ 2.19.5*) ;; *\ \(GNU\ Binutils\)\ 2.[2-9]*) ;; *\ \(GNU\ Binutils\)\ [3-9]*) ;; *) lt_use_gnu_ld_interface=yes ;; esac ;; *) lt_use_gnu_ld_interface=yes ;; esac fi if test yes = "$lt_use_gnu_ld_interface"; then # If archive_cmds runs LD, not CC, wlarc should be empty wlarc='$wl' # Set some defaults for GNU ld with shared library support. These # are reset later if shared libraries are not supported. Putting them # here allows them to be overridden if necessary. runpath_var=LD_RUN_PATH hardcode_libdir_flag_spec_FC='$wl-rpath $wl$libdir' export_dynamic_flag_spec_FC='$wl--export-dynamic' # ancient GNU ld didn't support --whole-archive et. al. if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then whole_archive_flag_spec_FC=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive' else whole_archive_flag_spec_FC= fi supports_anon_versioning=no case `$LD -v | $SED -e 's/(^)\+)\s\+//' 2>&1` in *GNU\ gold*) supports_anon_versioning=yes ;; *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11 *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... *\ 2.11.*) ;; # other 2.11 versions *) supports_anon_versioning=yes ;; esac # See if GNU ld supports shared libraries. case $host_os in aix[3-9]*) # On AIX/PPC, the GNU linker is very broken if test ia64 != "$host_cpu"; then ld_shlibs_FC=no cat <<_LT_EOF 1>&2 *** Warning: the GNU linker, at least up to release 2.19, is reported *** to be unable to reliably create shared libraries on AIX. *** Therefore, libtool is disabling shared libraries support. If you *** really care for shared libraries, you may want to install binutils *** 2.20 or above, or modify your PATH so that a non-GNU linker is found. *** You will then need to restart the configuration process. _LT_EOF fi ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support archive_cmds_FC='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' archive_expsym_cmds_FC='' ;; m68k) archive_cmds_FC='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' hardcode_libdir_flag_spec_FC='-L$libdir' hardcode_minus_L_FC=yes ;; esac ;; beos*) if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then allow_undefined_flag_FC=unsupported # Joseph Beckenbach says some releases of gcc # support --undefined. This deserves some investigation. FIXME archive_cmds_FC='$CC -nostart $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' else ld_shlibs_FC=no fi ;; cygwin* | mingw* | pw32* | cegcc*) # _LT_TAGVAR(hardcode_libdir_flag_spec, FC) is actually meaningless, # as there is no search path for DLLs. hardcode_libdir_flag_spec_FC='-L$libdir' export_dynamic_flag_spec_FC='$wl--export-all-symbols' allow_undefined_flag_FC=unsupported always_export_symbols_FC=no enable_shared_with_static_runtimes_FC=yes export_symbols_cmds_FC='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.* //'\'' | sort | uniq > $export_symbols' exclude_expsyms_FC='[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname' if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then archive_cmds_FC='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' # If the export-symbols file already is a .def file, use it as # is; otherwise, prepend EXPORTS... archive_expsym_cmds_FC='if test DEF = "`$SED -n -e '\''s/^[ ]*//'\'' -e '\''/^\(;.*\)*$/d'\'' -e '\''s/^\(EXPORTS\|LIBRARY\)\([ ].*\)*$/DEF/p'\'' -e q $export_symbols`" ; then cp $export_symbols $output_objdir/$soname.def; else echo EXPORTS > $output_objdir/$soname.def; cat $export_symbols >> $output_objdir/$soname.def; fi~ $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' else ld_shlibs_FC=no fi ;; haiku*) archive_cmds_FC='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' link_all_deplibs_FC=yes ;; os2*) hardcode_libdir_flag_spec_FC='-L$libdir' hardcode_minus_L_FC=yes allow_undefined_flag_FC=unsupported shrext_cmds=.dll archive_cmds_FC='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ $ECHO EXPORTS >> $output_objdir/$libname.def~ emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~ $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ emximp -o $lib $output_objdir/$libname.def' archive_expsym_cmds_FC='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ $ECHO EXPORTS >> $output_objdir/$libname.def~ prefix_cmds="$SED"~ if test EXPORTS = "`$SED 1q $export_symbols`"; then prefix_cmds="$prefix_cmds -e 1d"; fi~ prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~ cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~ $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ emximp -o $lib $output_objdir/$libname.def' old_archive_From_new_cmds_FC='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' enable_shared_with_static_runtimes_FC=yes ;; interix[3-9]*) hardcode_direct_FC=no hardcode_shlibpath_var_FC=no hardcode_libdir_flag_spec_FC='$wl-rpath,$libdir' export_dynamic_flag_spec_FC='$wl-E' # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. # Instead, shared libraries are loaded at an image base (0x10000000 by # default) and relocated if they conflict, which is a slow very memory # consuming and fragmenting process. To avoid this, we pick a random, # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link # time. Moving up from 0x10000000 also allows more sbrk(2) space. archive_cmds_FC='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' archive_expsym_cmds_FC='sed "s|^|_|" $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--retain-symbols-file,$output_objdir/$soname.expsym $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' ;; gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu) tmp_diet=no if test linux-dietlibc = "$host_os"; then case $cc_basename in diet\ *) tmp_diet=yes;; # linux-dietlibc with static linking (!diet-dyn) esac fi if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \ && test no = "$tmp_diet" then tmp_addflag=' $pic_flag' tmp_sharedflag='-shared' case $cc_basename,$host_cpu in pgcc*) # Portland Group C compiler whole_archive_flag_spec_FC='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' tmp_addflag=' $pic_flag' ;; pgf77* | pgf90* | pgf95* | pgfortran*) # Portland Group f77 and f90 compilers whole_archive_flag_spec_FC='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' tmp_addflag=' $pic_flag -Mnomain' ;; ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 tmp_addflag=' -i_dynamic' ;; efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 tmp_addflag=' -i_dynamic -nofor_main' ;; ifc* | ifort*) # Intel Fortran compiler tmp_addflag=' -nofor_main' ;; lf95*) # Lahey Fortran 8.1 whole_archive_flag_spec_FC= tmp_sharedflag='--shared' ;; nagfor*) # NAGFOR 5.3 tmp_sharedflag='-Wl,-shared' ;; xl[cC]* | bgxl[cC]* | mpixl[cC]*) # IBM XL C 8.0 on PPC (deal with xlf below) tmp_sharedflag='-qmkshrobj' tmp_addflag= ;; nvcc*) # Cuda Compiler Driver 2.2 whole_archive_flag_spec_FC='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' compiler_needs_object_FC=yes ;; esac case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C 5.9 whole_archive_flag_spec_FC='$wl--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' compiler_needs_object_FC=yes tmp_sharedflag='-G' ;; *Sun\ F*) # Sun Fortran 8.3 tmp_sharedflag='-G' ;; esac archive_cmds_FC='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' if test yes = "$supports_anon_versioning"; then archive_expsym_cmds_FC='echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ echo "local: *; };" >> $output_objdir/$libname.ver~ $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-version-script $wl$output_objdir/$libname.ver -o $lib' fi case $cc_basename in tcc*) export_dynamic_flag_spec_FC='-rdynamic' ;; xlf* | bgf* | bgxlf* | mpixlf*) # IBM XL Fortran 10.1 on PPC cannot create shared libs itself whole_archive_flag_spec_FC='--whole-archive$convenience --no-whole-archive' hardcode_libdir_flag_spec_FC='$wl-rpath $wl$libdir' archive_cmds_FC='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib' if test yes = "$supports_anon_versioning"; then archive_expsym_cmds_FC='echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ echo "local: *; };" >> $output_objdir/$libname.ver~ $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib' fi ;; esac else ld_shlibs_FC=no fi ;; netbsd*) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then archive_cmds_FC='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' wlarc= else archive_cmds_FC='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' archive_expsym_cmds_FC='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' fi ;; solaris*) if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then ld_shlibs_FC=no cat <<_LT_EOF 1>&2 *** Warning: The releases 2.8.* of the GNU linker cannot reliably *** create shared libraries on Solaris systems. Therefore, libtool *** is disabling shared libraries support. We urge you to upgrade GNU *** binutils to release 2.9.1 or newer. Another option is to modify *** your PATH or compiler configuration so that the native linker is *** used, and then restart. _LT_EOF elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then archive_cmds_FC='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' archive_expsym_cmds_FC='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' else ld_shlibs_FC=no fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) case `$LD -v 2>&1` in *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*) ld_shlibs_FC=no cat <<_LT_EOF 1>&2 *** Warning: Releases of the GNU linker prior to 2.16.91.0.3 cannot *** reliably create shared libraries on SCO systems. Therefore, libtool *** is disabling shared libraries support. We urge you to upgrade GNU *** binutils to release 2.16.91.0.3 or newer. Another option is to modify *** your PATH or compiler configuration so that the native linker is *** used, and then restart. _LT_EOF ;; *) # For security reasons, it is highly recommended that you always # use absolute paths for naming shared libraries, and exclude the # DT_RUNPATH tag from executables and libraries. But doing so # requires that you compile everything twice, which is a pain. if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then hardcode_libdir_flag_spec_FC='$wl-rpath $wl$libdir' archive_cmds_FC='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' archive_expsym_cmds_FC='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' else ld_shlibs_FC=no fi ;; esac ;; sunos4*) archive_cmds_FC='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' wlarc= hardcode_direct_FC=yes hardcode_shlibpath_var_FC=no ;; *) if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then archive_cmds_FC='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' archive_expsym_cmds_FC='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' else ld_shlibs_FC=no fi ;; esac if test no = "$ld_shlibs_FC"; then runpath_var= hardcode_libdir_flag_spec_FC= export_dynamic_flag_spec_FC= whole_archive_flag_spec_FC= fi else # PORTME fill in a description of your system's linker (not GNU ld) case $host_os in aix3*) allow_undefined_flag_FC=unsupported always_export_symbols_FC=yes archive_expsym_cmds_FC='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' # Note: this linker hardcodes the directories in LIBPATH if there # are no directories specified by -L. hardcode_minus_L_FC=yes if test yes = "$GCC" && test -z "$lt_prog_compiler_static"; then # Neither direct hardcoding nor static linking is supported with a # broken collect2. hardcode_direct_FC=unsupported fi ;; aix[4-9]*) if test ia64 = "$host_cpu"; then # On IA64, the linker does run time linking by default, so we don't # have to do anything special. aix_use_runtimelinking=no exp_sym_flag='-Bexport' no_entry_flag= else # If we're using GNU nm, then we don't want the "-C" option. # -C means demangle to GNU nm, but means don't demangle to AIX nm. # Without the "-l" option, or with the "-B" option, AIX nm treats # weak defined symbols like other global defined symbols, whereas # GNU nm marks them as "W". # While the 'weak' keyword is ignored in the Export File, we need # it in the Import File for the 'aix-soname' feature, so we have # to replace the "-B" option with "-P" for AIX nm. if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then export_symbols_cmds_FC='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && (substr(\$ 3,1,1) != ".")) { if (\$ 2 == "W") { print \$ 3 " weak" } else { print \$ 3 } } }'\'' | sort -u > $export_symbols' else export_symbols_cmds_FC='`func_echo_all $NM | $SED -e '\''s/B\([^B]*\)$/P\1/'\''` -PCpgl $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) && (substr(\$ 1,1,1) != ".")) { if ((\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) { print \$ 1 " weak" } else { print \$ 1 } } }'\'' | sort -u > $export_symbols' fi aix_use_runtimelinking=no # Test if we are trying to use run time linking or normal # AIX style linking. If -brtl is somewhere in LDFLAGS, we # have runtime linking enabled, and use it for executables. # For shared libraries, we enable/disable runtime linking # depending on the kind of the shared library created - # when "with_aix_soname,aix_use_runtimelinking" is: # "aix,no" lib.a(lib.so.V) shared, rtl:no, for executables # "aix,yes" lib.so shared, rtl:yes, for executables # lib.a static archive # "both,no" lib.so.V(shr.o) shared, rtl:yes # lib.a(lib.so.V) shared, rtl:no, for executables # "both,yes" lib.so.V(shr.o) shared, rtl:yes, for executables # lib.a(lib.so.V) shared, rtl:no # "svr4,*" lib.so.V(shr.o) shared, rtl:yes, for executables # lib.a static archive case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*) for ld_flag in $LDFLAGS; do if (test x-brtl = "x$ld_flag" || test x-Wl,-brtl = "x$ld_flag"); then aix_use_runtimelinking=yes break fi done if test svr4,no = "$with_aix_soname,$aix_use_runtimelinking"; then # With aix-soname=svr4, we create the lib.so.V shared archives only, # so we don't have lib.a shared libs to link our executables. # We have to force runtime linking in this case. aix_use_runtimelinking=yes LDFLAGS="$LDFLAGS -Wl,-brtl" fi ;; esac exp_sym_flag='-bexport' no_entry_flag='-bnoentry' fi # When large executables or shared objects are built, AIX ld can # have problems creating the table of contents. If linking a library # or program results in "error TOC overflow" add -mminimal-toc to # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. archive_cmds_FC='' hardcode_direct_FC=yes hardcode_direct_absolute_FC=yes hardcode_libdir_separator_FC=':' link_all_deplibs_FC=yes file_list_spec_FC='$wl-f,' case $with_aix_soname,$aix_use_runtimelinking in aix,*) ;; # traditional, no import file svr4,* | *,yes) # use import file # The Import File defines what to hardcode. hardcode_direct_FC=no hardcode_direct_absolute_FC=no ;; esac if test yes = "$GCC"; then case $host_os in aix4.[012]|aix4.[012].*) # We only want to do this on AIX 4.2 and lower, the check # below for broken collect2 doesn't work under 4.3+ collect2name=`$CC -print-prog-name=collect2` if test -f "$collect2name" && strings "$collect2name" | $GREP resolve_lib_name >/dev/null then # We have reworked collect2 : else # We have old collect2 hardcode_direct_FC=unsupported # It fails to find uninstalled libraries when the uninstalled # path is not listed in the libpath. Setting hardcode_minus_L # to unsupported forces relinking hardcode_minus_L_FC=yes hardcode_libdir_flag_spec_FC='-L$libdir' hardcode_libdir_separator_FC= fi ;; esac shared_flag='-shared' if test yes = "$aix_use_runtimelinking"; then shared_flag="$shared_flag "'$wl-G' fi # Need to ensure runtime linking is disabled for the traditional # shared library, or the linker may eventually find shared libraries # /with/ Import File - we do not want to mix them. shared_flag_aix='-shared' shared_flag_svr4='-shared $wl-G' else # not using gcc if test ia64 = "$host_cpu"; then # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release # chokes on -Wl,-G. The following line is correct: shared_flag='-G' else if test yes = "$aix_use_runtimelinking"; then shared_flag='$wl-G' else shared_flag='$wl-bM:SRE' fi shared_flag_aix='$wl-bM:SRE' shared_flag_svr4='$wl-G' fi fi export_dynamic_flag_spec_FC='$wl-bexpall' # It seems that -bexpall does not export symbols beginning with # underscore (_), so it is better to generate a list of symbols to export. always_export_symbols_FC=yes if test aix,yes = "$with_aix_soname,$aix_use_runtimelinking"; then # Warning - without using the other runtime loading flags (-brtl), # -berok will link without error, but may produce a broken library. allow_undefined_flag_FC='-berok' # Determine the default libpath from the value encoded in an # empty executable. if test set = "${lt_cv_aix_libpath+set}"; then aix_libpath=$lt_cv_aix_libpath else if test ${lt_cv_aix_libpath__FC+y} then : printf %s "(cached) " >&6 else case e in #( e) cat > conftest.$ac_ext <<_ACEOF program main end _ACEOF if ac_fn_fc_try_link "$LINENO" then : lt_aix_libpath_sed=' /Import File Strings/,/^$/ { /^0/ { s/^0 *\([^ ]*\) *$/\1/ p } }' lt_cv_aix_libpath__FC=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` # Check for a 64-bit object if we didn't find anything. if test -z "$lt_cv_aix_libpath__FC"; then lt_cv_aix_libpath__FC=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext if test -z "$lt_cv_aix_libpath__FC"; then lt_cv_aix_libpath__FC=/usr/lib:/lib fi ;; esac fi aix_libpath=$lt_cv_aix_libpath__FC fi hardcode_libdir_flag_spec_FC='$wl-blibpath:$libdir:'"$aix_libpath" archive_expsym_cmds_FC='$CC -o $output_objdir/$soname $libobjs $deplibs $wl'$no_entry_flag' $compiler_flags `if test -n "$allow_undefined_flag"; then func_echo_all "$wl$allow_undefined_flag"; else :; fi` $wl'$exp_sym_flag:\$export_symbols' '$shared_flag else if test ia64 = "$host_cpu"; then hardcode_libdir_flag_spec_FC='$wl-R $libdir:/usr/lib:/lib' allow_undefined_flag_FC="-z nodefs" archive_expsym_cmds_FC="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\$wl$no_entry_flag"' $compiler_flags $wl$allow_undefined_flag '"\$wl$exp_sym_flag:\$export_symbols" else # Determine the default libpath from the value encoded in an # empty executable. if test set = "${lt_cv_aix_libpath+set}"; then aix_libpath=$lt_cv_aix_libpath else if test ${lt_cv_aix_libpath__FC+y} then : printf %s "(cached) " >&6 else case e in #( e) cat > conftest.$ac_ext <<_ACEOF program main end _ACEOF if ac_fn_fc_try_link "$LINENO" then : lt_aix_libpath_sed=' /Import File Strings/,/^$/ { /^0/ { s/^0 *\([^ ]*\) *$/\1/ p } }' lt_cv_aix_libpath__FC=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` # Check for a 64-bit object if we didn't find anything. if test -z "$lt_cv_aix_libpath__FC"; then lt_cv_aix_libpath__FC=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext if test -z "$lt_cv_aix_libpath__FC"; then lt_cv_aix_libpath__FC=/usr/lib:/lib fi ;; esac fi aix_libpath=$lt_cv_aix_libpath__FC fi hardcode_libdir_flag_spec_FC='$wl-blibpath:$libdir:'"$aix_libpath" # Warning - without using the other run time loading flags, # -berok will link without error, but may produce a broken library. no_undefined_flag_FC=' $wl-bernotok' allow_undefined_flag_FC=' $wl-berok' if test yes = "$with_gnu_ld"; then # We only use this code for GNU lds that support --whole-archive. whole_archive_flag_spec_FC='$wl--whole-archive$convenience $wl--no-whole-archive' else # Exported symbols can be pulled into shared objects from archives whole_archive_flag_spec_FC='$convenience' fi archive_cmds_need_lc_FC=yes archive_expsym_cmds_FC='$RM -r $output_objdir/$realname.d~$MKDIR $output_objdir/$realname.d' # -brtl affects multiple linker settings, -berok does not and is overridden later compiler_flags_filtered='`func_echo_all "$compiler_flags " | $SED -e "s%-brtl\\([, ]\\)%-berok\\1%g"`' if test svr4 != "$with_aix_soname"; then # This is similar to how AIX traditionally builds its shared libraries. archive_expsym_cmds_FC="$archive_expsym_cmds_FC"'~$CC '$shared_flag_aix' -o $output_objdir/$realname.d/$soname $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$realname.d/$soname' fi if test aix != "$with_aix_soname"; then archive_expsym_cmds_FC="$archive_expsym_cmds_FC"'~$CC '$shared_flag_svr4' -o $output_objdir/$realname.d/$shared_archive_member_spec.o $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$STRIP -e $output_objdir/$realname.d/$shared_archive_member_spec.o~( func_echo_all "#! $soname($shared_archive_member_spec.o)"; if test shr_64 = "$shared_archive_member_spec"; then func_echo_all "# 64"; else func_echo_all "# 32"; fi; cat $export_symbols ) > $output_objdir/$realname.d/$shared_archive_member_spec.imp~$AR $AR_FLAGS $output_objdir/$soname $output_objdir/$realname.d/$shared_archive_member_spec.o $output_objdir/$realname.d/$shared_archive_member_spec.imp' else # used by -dlpreopen to get the symbols archive_expsym_cmds_FC="$archive_expsym_cmds_FC"'~$MV $output_objdir/$realname.d/$soname $output_objdir' fi archive_expsym_cmds_FC="$archive_expsym_cmds_FC"'~$RM -r $output_objdir/$realname.d' fi fi ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support archive_cmds_FC='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' archive_expsym_cmds_FC='' ;; m68k) archive_cmds_FC='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' hardcode_libdir_flag_spec_FC='-L$libdir' hardcode_minus_L_FC=yes ;; esac ;; bsdi[45]*) export_dynamic_flag_spec_FC=-rdynamic ;; cygwin* | mingw* | pw32* | cegcc*) # When not using gcc, we currently assume that we are using # Microsoft Visual C++. # hardcode_libdir_flag_spec is actually meaningless, as there is # no search path for DLLs. case $cc_basename in cl*) # Native MSVC hardcode_libdir_flag_spec_FC=' ' allow_undefined_flag_FC=unsupported always_export_symbols_FC=yes file_list_spec_FC='@' # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. shrext_cmds=.dll # FIXME: Setting linknames here is a bad hack. archive_cmds_FC='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~linknames=' archive_expsym_cmds_FC='if test DEF = "`$SED -n -e '\''s/^[ ]*//'\'' -e '\''/^\(;.*\)*$/d'\'' -e '\''s/^\(EXPORTS\|LIBRARY\)\([ ].*\)*$/DEF/p'\'' -e q $export_symbols`" ; then cp "$export_symbols" "$output_objdir/$soname.def"; echo "$tool_output_objdir$soname.def" > "$output_objdir/$soname.exp"; else $SED -e '\''s/^/-link -EXPORT:/'\'' < $export_symbols > $output_objdir/$soname.exp; fi~ $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ linknames=' # The linker will not automatically build a static lib if we build a DLL. # _LT_TAGVAR(old_archive_from_new_cmds, FC)='true' enable_shared_with_static_runtimes_FC=yes exclude_expsyms_FC='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' export_symbols_cmds_FC='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1,DATA/'\'' | $SED -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols' # Don't use ranlib old_postinstall_cmds_FC='chmod 644 $oldlib' postlink_cmds_FC='lt_outputfile="@OUTPUT@"~ lt_tool_outputfile="@TOOL_OUTPUT@"~ case $lt_outputfile in *.exe|*.EXE) ;; *) lt_outputfile=$lt_outputfile.exe lt_tool_outputfile=$lt_tool_outputfile.exe ;; esac~ if test : != "$MANIFEST_TOOL" && test -f "$lt_outputfile.manifest"; then $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; $RM "$lt_outputfile.manifest"; fi' ;; *) # Assume MSVC wrapper hardcode_libdir_flag_spec_FC=' ' allow_undefined_flag_FC=unsupported # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. shrext_cmds=.dll # FIXME: Setting linknames here is a bad hack. archive_cmds_FC='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames=' # The linker will automatically build a .lib file if we build a DLL. old_archive_from_new_cmds_FC='true' # FIXME: Should let the user specify the lib program. old_archive_cmds_FC='lib -OUT:$oldlib$oldobjs$old_deplibs' enable_shared_with_static_runtimes_FC=yes ;; esac ;; darwin* | rhapsody*) archive_cmds_need_lc_FC=no hardcode_direct_FC=no hardcode_automatic_FC=yes hardcode_shlibpath_var_FC=unsupported if test yes = "$lt_cv_ld_force_load"; then whole_archive_flag_spec_FC='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience $wl-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`' compiler_needs_object_FC=yes else whole_archive_flag_spec_FC='' fi link_all_deplibs_FC=yes allow_undefined_flag_FC=$_lt_dar_allow_undefined case $cc_basename in ifort*|nagfor*) _lt_dar_can_shared=yes ;; *) _lt_dar_can_shared=$GCC ;; esac if test yes = "$_lt_dar_can_shared"; then output_verbose_link_cmd=func_echo_all archive_cmds_FC="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dsymutil" module_cmds_FC="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dsymutil" archive_expsym_cmds_FC="sed 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dar_export_syms$_lt_dsymutil" module_expsym_cmds_FC="sed -e 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dar_export_syms$_lt_dsymutil" else ld_shlibs_FC=no fi ;; dgux*) archive_cmds_FC='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_libdir_flag_spec_FC='-L$libdir' hardcode_shlibpath_var_FC=no ;; # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor # support. Future versions do this automatically, but an explicit c++rt0.o # does not break anything, and helps significantly (at the cost of a little # extra space). freebsd2.2*) archive_cmds_FC='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' hardcode_libdir_flag_spec_FC='-R$libdir' hardcode_direct_FC=yes hardcode_shlibpath_var_FC=no ;; # Unfortunately, older versions of FreeBSD 2 do not have this feature. freebsd2.*) archive_cmds_FC='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' hardcode_direct_FC=yes hardcode_minus_L_FC=yes hardcode_shlibpath_var_FC=no ;; # FreeBSD 3 and greater uses gcc -shared to do shared libraries. freebsd* | dragonfly*) archive_cmds_FC='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' hardcode_libdir_flag_spec_FC='-R$libdir' hardcode_direct_FC=yes hardcode_shlibpath_var_FC=no ;; hpux9*) if test yes = "$GCC"; then archive_cmds_FC='$RM $output_objdir/$soname~$CC -shared $pic_flag $wl+b $wl$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' else archive_cmds_FC='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' fi hardcode_libdir_flag_spec_FC='$wl+b $wl$libdir' hardcode_libdir_separator_FC=: hardcode_direct_FC=yes # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L_FC=yes export_dynamic_flag_spec_FC='$wl-E' ;; hpux10*) if test yes,no = "$GCC,$with_gnu_ld"; then archive_cmds_FC='$CC -shared $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds_FC='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' fi if test no = "$with_gnu_ld"; then hardcode_libdir_flag_spec_FC='$wl+b $wl$libdir' hardcode_libdir_separator_FC=: hardcode_direct_FC=yes hardcode_direct_absolute_FC=yes export_dynamic_flag_spec_FC='$wl-E' # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L_FC=yes fi ;; hpux11*) if test yes,no = "$GCC,$with_gnu_ld"; then case $host_cpu in hppa*64*) archive_cmds_FC='$CC -shared $wl+h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' ;; ia64*) archive_cmds_FC='$CC -shared $pic_flag $wl+h $wl$soname $wl+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ;; *) archive_cmds_FC='$CC -shared $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags' ;; esac else case $host_cpu in hppa*64*) archive_cmds_FC='$CC -b $wl+h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' ;; ia64*) archive_cmds_FC='$CC -b $wl+h $wl$soname $wl+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ;; *) archive_cmds_FC='$CC -b $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags' ;; esac fi if test no = "$with_gnu_ld"; then hardcode_libdir_flag_spec_FC='$wl+b $wl$libdir' hardcode_libdir_separator_FC=: case $host_cpu in hppa*64*|ia64*) hardcode_direct_FC=no hardcode_shlibpath_var_FC=no ;; *) hardcode_direct_FC=yes hardcode_direct_absolute_FC=yes export_dynamic_flag_spec_FC='$wl-E' # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L_FC=yes ;; esac fi ;; irix5* | irix6* | nonstopux*) if test yes = "$GCC"; then archive_cmds_FC='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' # Try to use the -exported_symbol ld option, if it does not # work, assume that -exports_file does not work either and # implicitly export all symbols. # This should be the same for all languages, so no per-tag cache variable. { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the $host_os linker accepts -exported_symbol" >&5 printf %s "checking whether the $host_os linker accepts -exported_symbol... " >&6; } if test ${lt_cv_irix_exported_symbol+y} then : printf %s "(cached) " >&6 else case e in #( e) save_LDFLAGS=$LDFLAGS LDFLAGS="$LDFLAGS -shared $wl-exported_symbol ${wl}foo $wl-update_registry $wl/dev/null" cat > conftest.$ac_ext <<_ACEOF subroutine foo end _ACEOF if ac_fn_fc_try_link "$LINENO" then : lt_cv_irix_exported_symbol=yes else case e in #( e) lt_cv_irix_exported_symbol=no ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LDFLAGS=$save_LDFLAGS ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_irix_exported_symbol" >&5 printf "%s\n" "$lt_cv_irix_exported_symbol" >&6; } if test yes = "$lt_cv_irix_exported_symbol"; then archive_expsym_cmds_FC='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations $wl-exports_file $wl$export_symbols -o $lib' fi else archive_cmds_FC='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' archive_expsym_cmds_FC='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -exports_file $export_symbols -o $lib' fi archive_cmds_need_lc_FC='no' hardcode_libdir_flag_spec_FC='$wl-rpath $wl$libdir' hardcode_libdir_separator_FC=: inherit_rpath_FC=yes link_all_deplibs_FC=yes ;; linux*) case $cc_basename in tcc*) # Fabrice Bellard et al's Tiny C Compiler ld_shlibs_FC=yes archive_cmds_FC='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' ;; esac ;; netbsd*) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then archive_cmds_FC='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out else archive_cmds_FC='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF fi hardcode_libdir_flag_spec_FC='-R$libdir' hardcode_direct_FC=yes hardcode_shlibpath_var_FC=no ;; newsos6) archive_cmds_FC='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct_FC=yes hardcode_libdir_flag_spec_FC='$wl-rpath $wl$libdir' hardcode_libdir_separator_FC=: hardcode_shlibpath_var_FC=no ;; *nto* | *qnx*) ;; openbsd* | bitrig*) if test -f /usr/libexec/ld.so; then hardcode_direct_FC=yes hardcode_shlibpath_var_FC=no hardcode_direct_absolute_FC=yes if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then archive_cmds_FC='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds_FC='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags $wl-retain-symbols-file,$export_symbols' hardcode_libdir_flag_spec_FC='$wl-rpath,$libdir' export_dynamic_flag_spec_FC='$wl-E' else archive_cmds_FC='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' hardcode_libdir_flag_spec_FC='$wl-rpath,$libdir' fi else ld_shlibs_FC=no fi ;; os2*) hardcode_libdir_flag_spec_FC='-L$libdir' hardcode_minus_L_FC=yes allow_undefined_flag_FC=unsupported shrext_cmds=.dll archive_cmds_FC='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ $ECHO EXPORTS >> $output_objdir/$libname.def~ emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~ $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ emximp -o $lib $output_objdir/$libname.def' archive_expsym_cmds_FC='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ $ECHO EXPORTS >> $output_objdir/$libname.def~ prefix_cmds="$SED"~ if test EXPORTS = "`$SED 1q $export_symbols`"; then prefix_cmds="$prefix_cmds -e 1d"; fi~ prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~ cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~ $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ emximp -o $lib $output_objdir/$libname.def' old_archive_From_new_cmds_FC='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' enable_shared_with_static_runtimes_FC=yes ;; osf3*) if test yes = "$GCC"; then allow_undefined_flag_FC=' $wl-expect_unresolved $wl\*' archive_cmds_FC='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' else allow_undefined_flag_FC=' -expect_unresolved \*' archive_cmds_FC='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' fi archive_cmds_need_lc_FC='no' hardcode_libdir_flag_spec_FC='$wl-rpath $wl$libdir' hardcode_libdir_separator_FC=: ;; osf4* | osf5*) # as osf3* with the addition of -msym flag if test yes = "$GCC"; then allow_undefined_flag_FC=' $wl-expect_unresolved $wl\*' archive_cmds_FC='$CC -shared$allow_undefined_flag $pic_flag $libobjs $deplibs $compiler_flags $wl-msym $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' hardcode_libdir_flag_spec_FC='$wl-rpath $wl$libdir' else allow_undefined_flag_FC=' -expect_unresolved \*' archive_cmds_FC='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' archive_expsym_cmds_FC='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~ $CC -shared$allow_undefined_flag $wl-input $wl$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib~$RM $lib.exp' # Both c and cxx compiler support -rpath directly hardcode_libdir_flag_spec_FC='-rpath $libdir' fi archive_cmds_need_lc_FC='no' hardcode_libdir_separator_FC=: ;; solaris*) no_undefined_flag_FC=' -z defs' if test yes = "$GCC"; then wlarc='$wl' archive_cmds_FC='$CC -shared $pic_flag $wl-z ${wl}text $wl-h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds_FC='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -shared $pic_flag $wl-z ${wl}text $wl-M $wl$lib.exp $wl-h $wl$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' else case `$CC -V 2>&1` in *"Compilers 5.0"*) wlarc='' archive_cmds_FC='$LD -G$allow_undefined_flag -h $soname -o $lib $libobjs $deplibs $linker_flags' archive_expsym_cmds_FC='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $LD -G$allow_undefined_flag -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp' ;; *) wlarc='$wl' archive_cmds_FC='$CC -G$allow_undefined_flag -h $soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds_FC='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -G$allow_undefined_flag -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' ;; esac fi hardcode_libdir_flag_spec_FC='-R$libdir' hardcode_shlibpath_var_FC=no case $host_os in solaris2.[0-5] | solaris2.[0-5].*) ;; *) # The compiler driver will combine and reorder linker options, # but understands '-z linker_flag'. GCC discards it without '$wl', # but is careful enough not to reorder. # Supported since Solaris 2.6 (maybe 2.5.1?) if test yes = "$GCC"; then whole_archive_flag_spec_FC='$wl-z ${wl}allextract$convenience $wl-z ${wl}defaultextract' else whole_archive_flag_spec_FC='-z allextract$convenience -z defaultextract' fi ;; esac link_all_deplibs_FC=yes ;; sunos4*) if test sequent = "$host_vendor"; then # Use $CC to link under sequent, because it throws in some extra .o # files that make .init and .fini sections work. archive_cmds_FC='$CC -G $wl-h $soname -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds_FC='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' fi hardcode_libdir_flag_spec_FC='-L$libdir' hardcode_direct_FC=yes hardcode_minus_L_FC=yes hardcode_shlibpath_var_FC=no ;; sysv4) case $host_vendor in sni) archive_cmds_FC='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct_FC=yes # is this really true??? ;; siemens) ## LD is ld it makes a PLAMLIB ## CC just makes a GrossModule. archive_cmds_FC='$LD -G -o $lib $libobjs $deplibs $linker_flags' reload_cmds_FC='$CC -r -o $output$reload_objs' hardcode_direct_FC=no ;; motorola) archive_cmds_FC='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct_FC=no #Motorola manual says yes, but my tests say they lie ;; esac runpath_var='LD_RUN_PATH' hardcode_shlibpath_var_FC=no ;; sysv4.3*) archive_cmds_FC='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_shlibpath_var_FC=no export_dynamic_flag_spec_FC='-Bexport' ;; sysv4*MP*) if test -d /usr/nec; then archive_cmds_FC='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_shlibpath_var_FC=no runpath_var=LD_RUN_PATH hardcode_runpath_var=yes ld_shlibs_FC=yes fi ;; sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) no_undefined_flag_FC='$wl-z,text' archive_cmds_need_lc_FC=no hardcode_shlibpath_var_FC=no runpath_var='LD_RUN_PATH' if test yes = "$GCC"; then archive_cmds_FC='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds_FC='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds_FC='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds_FC='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' fi ;; sysv5* | sco3.2v5* | sco5v6*) # Note: We CANNOT use -z defs as we might desire, because we do not # link with -lc, and that would cause any symbols used from libc to # always be unresolved, which means just about no library would # ever link correctly. If we're not using GNU ld we use -z text # though, which does catch some bad symbols but isn't as heavy-handed # as -z defs. no_undefined_flag_FC='$wl-z,text' allow_undefined_flag_FC='$wl-z,nodefs' archive_cmds_need_lc_FC=no hardcode_shlibpath_var_FC=no hardcode_libdir_flag_spec_FC='$wl-R,$libdir' hardcode_libdir_separator_FC=':' link_all_deplibs_FC=yes export_dynamic_flag_spec_FC='$wl-Bexport' runpath_var='LD_RUN_PATH' if test yes = "$GCC"; then archive_cmds_FC='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds_FC='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds_FC='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds_FC='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' fi ;; uts4*) archive_cmds_FC='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_libdir_flag_spec_FC='-L$libdir' hardcode_shlibpath_var_FC=no ;; *) ld_shlibs_FC=no ;; esac if test sni = "$host_vendor"; then case $host in sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) export_dynamic_flag_spec_FC='$wl-Blargedynsym' ;; esac fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs_FC" >&5 printf "%s\n" "$ld_shlibs_FC" >&6; } test no = "$ld_shlibs_FC" && can_build_shared=no with_gnu_ld_FC=$with_gnu_ld # # Do we need to explicitly link libc? # case "x$archive_cmds_need_lc_FC" in x|xyes) # Assume -lc should be added archive_cmds_need_lc_FC=yes if test yes,yes = "$GCC,$enable_shared"; then case $archive_cmds_FC in *'~'*) # FIXME: we may have to deal with multi-command sequences. ;; '$CC '*) # Test whether the compiler implicitly links with -lc since on some # systems, -lgcc has to come before -lc. If gcc already passes -lc # to ld, don't add -lc before -lgcc. { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5 printf %s "checking whether -lc should be explicitly linked in... " >&6; } if test ${lt_cv_archive_cmds_need_lc_FC+y} then : printf %s "(cached) " >&6 else case e in #( e) $RM conftest* echo "$lt_simple_compile_test_code" > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } 2>conftest.err; then soname=conftest lib=conftest libobjs=conftest.$ac_objext deplibs= wl=$lt_prog_compiler_wl_FC pic_flag=$lt_prog_compiler_pic_FC compiler_flags=-v linker_flags=-v verstring= output_objdir=. libname=conftest lt_save_allow_undefined_flag=$allow_undefined_flag_FC allow_undefined_flag_FC= if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds_FC 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\""; } >&5 (eval $archive_cmds_FC 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } then lt_cv_archive_cmds_need_lc_FC=no else lt_cv_archive_cmds_need_lc_FC=yes fi allow_undefined_flag_FC=$lt_save_allow_undefined_flag else cat conftest.err 1>&5 fi $RM conftest* ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc_FC" >&5 printf "%s\n" "$lt_cv_archive_cmds_need_lc_FC" >&6; } archive_cmds_need_lc_FC=$lt_cv_archive_cmds_need_lc_FC ;; esac fi ;; esac { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5 printf %s "checking dynamic linker characteristics... " >&6; } library_names_spec= libname_spec='lib$name' soname_spec= shrext_cmds=.so postinstall_cmds= postuninstall_cmds= finish_cmds= finish_eval= shlibpath_var= shlibpath_overrides_runpath=unknown version_type=none dynamic_linker="$host_os ld.so" sys_lib_dlsearch_path_spec="/lib /usr/lib" need_lib_prefix=unknown hardcode_into_libs=no # when you set need_version to no, make sure it does not cause -set_version # flags to be left without arguments need_version=unknown case $host_os in aix3*) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='$libname$release$shared_ext$versuffix $libname.a' shlibpath_var=LIBPATH # AIX 3 has no versioning support, so we append a major version to the name. soname_spec='$libname$release$shared_ext$major' ;; aix[4-9]*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no hardcode_into_libs=yes if test ia64 = "$host_cpu"; then # AIX 5 supports IA64 library_names_spec='$libname$release$shared_ext$major $libname$release$shared_ext$versuffix $libname$shared_ext' shlibpath_var=LD_LIBRARY_PATH else # With GCC up to 2.95.x, collect2 would create an import file # for dependence libraries. The import file would start with # the line '#! .'. This would cause the generated library to # depend on '.', always an invalid library. This was fixed in # development snapshots of GCC prior to 3.0. case $host_os in aix4 | aix4.[01] | aix4.[01].*) if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' echo ' yes ' echo '#endif'; } | $CC -E - | $GREP yes > /dev/null; then : else can_build_shared=no fi ;; esac # Using Import Files as archive members, it is possible to support # filename-based versioning of shared library archives on AIX. While # this would work for both with and without runtime linking, it will # prevent static linking of such archives. So we do filename-based # shared library versioning with .so extension only, which is used # when both runtime linking and shared linking is enabled. # Unfortunately, runtime linking may impact performance, so we do # not want this to be the default eventually. Also, we use the # versioned .so libs for executables only if there is the -brtl # linker flag in LDFLAGS as well, or --with-aix-soname=svr4 only. # To allow for filename-based versioning support, we need to create # libNAME.so.V as an archive file, containing: # *) an Import File, referring to the versioned filename of the # archive as well as the shared archive member, telling the # bitwidth (32 or 64) of that shared object, and providing the # list of exported symbols of that shared object, eventually # decorated with the 'weak' keyword # *) the shared object with the F_LOADONLY flag set, to really avoid # it being seen by the linker. # At run time we better use the real file rather than another symlink, # but for link time we create the symlink libNAME.so -> libNAME.so.V case $with_aix_soname,$aix_use_runtimelinking in # AIX (on Power*) has no versioning support, so currently we cannot hardcode correct # soname into executable. Probably we can add versioning support to # collect2, so additional links can be useful in future. aix,yes) # traditional libtool dynamic_linker='AIX unversionable lib.so' # If using run time linking (on AIX 4.2 or later) use lib.so # instead of lib.a to let people know that these are not # typical AIX shared libraries. library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' ;; aix,no) # traditional AIX only dynamic_linker='AIX lib.a(lib.so.V)' # We preserve .a as extension for shared libraries through AIX4.2 # and later when we are not doing run time linking. library_names_spec='$libname$release.a $libname.a' soname_spec='$libname$release$shared_ext$major' ;; svr4,*) # full svr4 only dynamic_linker="AIX lib.so.V($shared_archive_member_spec.o)" library_names_spec='$libname$release$shared_ext$major $libname$shared_ext' # We do not specify a path in Import Files, so LIBPATH fires. shlibpath_overrides_runpath=yes ;; *,yes) # both, prefer svr4 dynamic_linker="AIX lib.so.V($shared_archive_member_spec.o), lib.a(lib.so.V)" library_names_spec='$libname$release$shared_ext$major $libname$shared_ext' # unpreferred sharedlib libNAME.a needs extra handling postinstall_cmds='test -n "$linkname" || linkname="$realname"~func_stripname "" ".so" "$linkname"~$install_shared_prog "$dir/$func_stripname_result.$libext" "$destdir/$func_stripname_result.$libext"~test -z "$tstripme" || test -z "$striplib" || $striplib "$destdir/$func_stripname_result.$libext"' postuninstall_cmds='for n in $library_names $old_library; do :; done~func_stripname "" ".so" "$n"~test "$func_stripname_result" = "$n" || func_append rmfiles " $odir/$func_stripname_result.$libext"' # We do not specify a path in Import Files, so LIBPATH fires. shlibpath_overrides_runpath=yes ;; *,no) # both, prefer aix dynamic_linker="AIX lib.a(lib.so.V), lib.so.V($shared_archive_member_spec.o)" library_names_spec='$libname$release.a $libname.a' soname_spec='$libname$release$shared_ext$major' # unpreferred sharedlib libNAME.so.V and symlink libNAME.so need extra handling postinstall_cmds='test -z "$dlname" || $install_shared_prog $dir/$dlname $destdir/$dlname~test -z "$tstripme" || test -z "$striplib" || $striplib $destdir/$dlname~test -n "$linkname" || linkname=$realname~func_stripname "" ".a" "$linkname"~(cd "$destdir" && $LN_S -f $dlname $func_stripname_result.so)' postuninstall_cmds='test -z "$dlname" || func_append rmfiles " $odir/$dlname"~for n in $old_library $library_names; do :; done~func_stripname "" ".a" "$n"~func_append rmfiles " $odir/$func_stripname_result.so"' ;; esac shlibpath_var=LIBPATH fi ;; amigaos*) case $host_cpu in powerpc) # Since July 2007 AmigaOS4 officially supports .so libraries. # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' ;; m68k) library_names_spec='$libname.ixlibrary $libname.a' # Create ${libname}_ixlibrary.a entries in /sys/libs. finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' ;; esac ;; beos*) library_names_spec='$libname$shared_ext' dynamic_linker="$host_os ld.so" shlibpath_var=LIBRARY_PATH ;; bsdi[45]*) version_type=linux # correct to gnu/linux during the next big refactor need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" # the default ld.so.conf also contains /usr/contrib/lib and # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow # libtool to hard-code these into programs ;; cygwin* | mingw* | pw32* | cegcc*) version_type=windows shrext_cmds=.dll need_version=no need_lib_prefix=no case $GCC,$cc_basename in yes,*) # gcc library_names_spec='$libname.dll.a' # DLL is installed to $(libdir)/../bin by postinstall_cmds postinstall_cmds='base_file=`basename \$file`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname~ chmod a+x \$dldir/$dlname~ if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; fi' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $RM \$dlpath' shlibpath_overrides_runpath=yes case $host_os in cygwin*) # Cygwin DLLs use 'cyg' prefix rather than 'lib' soname_spec='`echo $libname | sed -e 's/^lib/cyg/'``echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' ;; mingw* | cegcc*) # MinGW DLLs use traditional 'lib' prefix soname_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' ;; pw32*) # pw32 DLLs use 'pw' prefix rather than 'lib' library_names_spec='`echo $libname | sed -e 's/^lib/pw/'``echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' ;; esac dynamic_linker='Win32 ld.exe' ;; *,cl*) # Native MSVC libname_spec='$name' soname_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' library_names_spec='$libname.dll.lib' case $build_os in mingw*) sys_lib_search_path_spec= lt_save_ifs=$IFS IFS=';' for lt_path in $LIB do IFS=$lt_save_ifs # Let DOS variable expansion print the short 8.3 style file name. lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"` sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path" done IFS=$lt_save_ifs # Convert to MSYS style. sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([a-zA-Z]\\):| /\\1|g' -e 's|^ ||'` ;; cygwin*) # Convert to unix form, then to dos form, then back to unix form # but this time dos style (no spaces!) so that the unix form looks # like /cygdrive/c/PROGRA~1:/cygdr... sys_lib_search_path_spec=`cygpath --path --unix "$LIB"` sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null` sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` ;; *) sys_lib_search_path_spec=$LIB if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then # It is most probably a Windows format PATH. sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` else sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` fi # FIXME: find the short name or the path components, as spaces are # common. (e.g. "Program Files" -> "PROGRA~1") ;; esac # DLL is installed to $(libdir)/../bin by postinstall_cmds postinstall_cmds='base_file=`basename \$file`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $RM \$dlpath' shlibpath_overrides_runpath=yes dynamic_linker='Win32 link.exe' ;; *) # Assume MSVC wrapper library_names_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext $libname.lib' dynamic_linker='Win32 ld.exe' ;; esac # FIXME: first we should search . and the directory the executable is in shlibpath_var=PATH ;; darwin* | rhapsody*) dynamic_linker="$host_os dyld" version_type=darwin need_lib_prefix=no need_version=no library_names_spec='$libname$release$major$shared_ext $libname$shared_ext' soname_spec='$libname$release$major$shared_ext' shlibpath_overrides_runpath=yes shlibpath_var=DYLD_LIBRARY_PATH shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' ;; dgux*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH ;; freebsd* | dragonfly*) # DragonFly does not have aout. When/if they implement a new # versioning mechanism, adjust this. if test -x /usr/bin/objformat; then objformat=`/usr/bin/objformat` else case $host_os in freebsd[23].*) objformat=aout ;; *) objformat=elf ;; esac fi version_type=freebsd-$objformat case $version_type in freebsd-elf*) library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' need_version=no need_lib_prefix=no ;; freebsd-*) library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' need_version=yes ;; esac shlibpath_var=LD_LIBRARY_PATH case $host_os in freebsd2.*) shlibpath_overrides_runpath=yes ;; freebsd3.[01]* | freebsdelf3.[01]*) shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; freebsd3.[2-9]* | freebsdelf3.[2-9]* | \ freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1) shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; *) # from 4.6 on, and DragonFly shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; esac ;; haiku*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no dynamic_linker="$host_os runtime_loader" library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LIBRARY_PATH shlibpath_overrides_runpath=no sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib' hardcode_into_libs=yes ;; hpux9* | hpux10* | hpux11*) # Give a soname corresponding to the major version so that dld.sl refuses to # link against other versions. version_type=sunos need_lib_prefix=no need_version=no case $host_cpu in ia64*) shrext_cmds='.so' hardcode_into_libs=yes dynamic_linker="$host_os dld.so" shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' if test 32 = "$HPUX_IA64_MODE"; then sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" sys_lib_dlsearch_path_spec=/usr/lib/hpux32 else sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" sys_lib_dlsearch_path_spec=/usr/lib/hpux64 fi ;; hppa*64*) shrext_cmds='.sl' hardcode_into_libs=yes dynamic_linker="$host_os dld.sl" shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; *) shrext_cmds='.sl' dynamic_linker="$host_os dld.sl" shlibpath_var=SHLIB_PATH shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' ;; esac # HP-UX runs *really* slowly unless shared libraries are mode 555, ... postinstall_cmds='chmod 555 $lib' # or fails outright, so override atomically: install_override_mode=555 ;; interix[3-9]*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; irix5* | irix6* | nonstopux*) case $host_os in nonstopux*) version_type=nonstopux ;; *) if test yes = "$lt_cv_prog_gnu_ld"; then version_type=linux # correct to gnu/linux during the next big refactor else version_type=irix fi ;; esac need_lib_prefix=no need_version=no soname_spec='$libname$release$shared_ext$major' library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$release$shared_ext $libname$shared_ext' case $host_os in irix5* | nonstopux*) libsuff= shlibsuff= ;; *) case $LD in # libtool.m4 will add one of these switches to LD *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") libsuff= shlibsuff= libmagic=32-bit;; *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") libsuff=32 shlibsuff=N32 libmagic=N32;; *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") libsuff=64 shlibsuff=64 libmagic=64-bit;; *) libsuff= shlibsuff= libmagic=never-match;; esac ;; esac shlibpath_var=LD_LIBRARY${shlibsuff}_PATH shlibpath_overrides_runpath=no sys_lib_search_path_spec="/usr/lib$libsuff /lib$libsuff /usr/local/lib$libsuff" sys_lib_dlsearch_path_spec="/usr/lib$libsuff /lib$libsuff" hardcode_into_libs=yes ;; # No shared lib support for Linux oldld, aout, or coff. linux*oldld* | linux*aout* | linux*coff*) dynamic_linker=no ;; linux*android*) version_type=none # Android doesn't support versioned libraries. need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext' soname_spec='$libname$release$shared_ext' finish_cmds= shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes # This implies no fast_install, which is unacceptable. # Some rework will be needed to allow for fast_install # before this can be enabled. hardcode_into_libs=yes dynamic_linker='Android linker' # Don't embed -rpath directories since the linker doesn't support them. hardcode_libdir_flag_spec_FC='-L$libdir' ;; # This must be glibc/ELF. linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no # Some binutils ld are patched to set DT_RUNPATH if test ${lt_cv_shlibpath_overrides_runpath+y} then : printf %s "(cached) " >&6 else case e in #( e) lt_cv_shlibpath_overrides_runpath=no save_LDFLAGS=$LDFLAGS save_libdir=$libdir eval "libdir=/foo; wl=\"$lt_prog_compiler_wl_FC\"; \ LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec_FC\"" cat > conftest.$ac_ext <<_ACEOF program main end _ACEOF if ac_fn_fc_try_link "$LINENO" then : if ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null then : lt_cv_shlibpath_overrides_runpath=yes fi fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LDFLAGS=$save_LDFLAGS libdir=$save_libdir ;; esac fi shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath # This implies no fast_install, which is unacceptable. # Some rework will be needed to allow for fast_install # before this can be enabled. hardcode_into_libs=yes # Add ABI-specific directories to the system library path. sys_lib_dlsearch_path_spec="/lib64 /usr/lib64 /lib /usr/lib" # Ideally, we could use ldconfig to report *all* directores which are # searched for libraries, however this is still not possible. Aside from not # being certain /sbin/ldconfig is available, command # 'ldconfig -N -X -v | grep ^/' on 64bit Fedora does not report /usr/lib64, # even though it is searched at run-time. Try to do the best guess by # appending ld.so.conf contents (and includes) to the search path. if test -f /etc/ld.so.conf; then lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '` sys_lib_dlsearch_path_spec="$sys_lib_dlsearch_path_spec $lt_ld_extra" fi # We used to test for /lib/ld.so.1 and disable shared libraries on # powerpc, because MkLinux only supported shared libraries with the # GNU dynamic linker. Since this was broken with cross compilers, # most powerpc-linux boxes support dynamic linking these days and # people can always --disable-shared, the test was removed, and we # assume the GNU/Linux dynamic linker is in use. dynamic_linker='GNU/Linux ld.so' ;; netbsd*) version_type=sunos need_lib_prefix=no need_version=no if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' dynamic_linker='NetBSD (a.out) ld.so' else library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' dynamic_linker='NetBSD ld.elf_so' fi shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; newsos6) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; *nto* | *qnx*) version_type=qnx need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes dynamic_linker='ldqnx.so' ;; openbsd* | bitrig*) version_type=sunos sys_lib_dlsearch_path_spec=/usr/lib need_lib_prefix=no if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then need_version=no else need_version=yes fi library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; os2*) libname_spec='$name' version_type=windows shrext_cmds=.dll need_version=no need_lib_prefix=no # OS/2 can only load a DLL with a base name of 8 characters or less. soname_spec='`test -n "$os2dllname" && libname="$os2dllname"; v=$($ECHO $release$versuffix | tr -d .-); n=$($ECHO $libname | cut -b -$((8 - ${#v})) | tr . _); $ECHO $n$v`$shared_ext' library_names_spec='${libname}_dll.$libext' dynamic_linker='OS/2 ld.exe' shlibpath_var=BEGINLIBPATH sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec postinstall_cmds='base_file=`basename \$file`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; $ECHO \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname~ chmod a+x \$dldir/$dlname~ if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; fi' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; $ECHO \$dlname'\''`~ dlpath=$dir/\$dldll~ $RM \$dlpath' ;; osf3* | osf4* | osf5*) version_type=osf need_lib_prefix=no need_version=no soname_spec='$libname$release$shared_ext$major' library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; rdos*) dynamic_linker=no ;; solaris*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes # ldd complains unless libraries are executable postinstall_cmds='chmod +x $lib' ;; sunos4*) version_type=sunos library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes if test yes = "$with_gnu_ld"; then need_lib_prefix=no fi need_version=yes ;; sysv4 | sysv4.3*) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH case $host_vendor in sni) shlibpath_overrides_runpath=no need_lib_prefix=no runpath_var=LD_RUN_PATH ;; siemens) need_lib_prefix=no ;; motorola) need_lib_prefix=no need_version=no shlibpath_overrides_runpath=no sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' ;; esac ;; sysv4*MP*) if test -d /usr/nec; then version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='$libname$shared_ext.$versuffix $libname$shared_ext.$major $libname$shared_ext' soname_spec='$libname$shared_ext.$major' shlibpath_var=LD_LIBRARY_PATH fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) version_type=sco need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes if test yes = "$with_gnu_ld"; then sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' else sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' case $host_os in sco3.2v5*) sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" ;; esac fi sys_lib_dlsearch_path_spec='/usr/lib' ;; tpf*) # TPF is a cross-target only. Preferred cross-host = GNU/Linux. version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; uts4*) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH ;; *) dynamic_linker=no ;; esac { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5 printf "%s\n" "$dynamic_linker" >&6; } test no = "$dynamic_linker" && can_build_shared=no variables_saved_for_relink="PATH $shlibpath_var $runpath_var" if test yes = "$GCC"; then variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" fi if test set = "${lt_cv_sys_lib_search_path_spec+set}"; then sys_lib_search_path_spec=$lt_cv_sys_lib_search_path_spec fi if test set = "${lt_cv_sys_lib_dlsearch_path_spec+set}"; then sys_lib_dlsearch_path_spec=$lt_cv_sys_lib_dlsearch_path_spec fi # remember unaugmented sys_lib_dlsearch_path content for libtool script decls... configure_time_dlsearch_path=$sys_lib_dlsearch_path_spec # ... but it needs LT_SYS_LIBRARY_PATH munging for other configure-time code func_munge_path_list sys_lib_dlsearch_path_spec "$LT_SYS_LIBRARY_PATH" # to be used as default LT_SYS_LIBRARY_PATH value in generated libtool configure_time_lt_sys_library_path=$LT_SYS_LIBRARY_PATH { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5 printf %s "checking how to hardcode library paths into programs... " >&6; } hardcode_action_FC= if test -n "$hardcode_libdir_flag_spec_FC" || test -n "$runpath_var_FC" || test yes = "$hardcode_automatic_FC"; then # We can hardcode non-existent directories. if test no != "$hardcode_direct_FC" && # If the only mechanism to avoid hardcoding is shlibpath_var, we # have to relink, otherwise we might link with an installed library # when we should be linking with a yet-to-be-installed one ## test no != "$_LT_TAGVAR(hardcode_shlibpath_var, FC)" && test no != "$hardcode_minus_L_FC"; then # Linking always hardcodes the temporary library directory. hardcode_action_FC=relink else # We can link without hardcoding, and we can hardcode nonexisting dirs. hardcode_action_FC=immediate fi else # We cannot hardcode anything, or else we can only hardcode existing # directories. hardcode_action_FC=unsupported fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $hardcode_action_FC" >&5 printf "%s\n" "$hardcode_action_FC" >&6; } if test relink = "$hardcode_action_FC" || test yes = "$inherit_rpath_FC"; then # Fast installation is not supported enable_fast_install=no elif test yes = "$shlibpath_overrides_runpath" || test no = "$enable_shared"; then # Fast installation is not necessary enable_fast_install=needless fi fi # test -n "$compiler" GCC=$lt_save_GCC CC=$lt_save_CC CFLAGS=$lt_save_CFLAGS fi # test yes != "$_lt_disable_FC" ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu ac_config_commands="$ac_config_commands libtool" # Only expand once: # # cairo and X11 libraries. Use pkg-config if available but provide fallback options if not (OS/X) # x11_libs="-L/usr/X11/lib -lX11" cairo_libs_osx="-L/usr/X11/lib -lcairo" cairo_cflags_osx="-I/usr/X11/include" ft_libs_osx="-L/usr/X11/lib -lfreetype" ft_cflags_osx="-I/usr/X11/include/freetype2/" fc_libs_osx="-L/usr/X11/lib -lfontconfig" fc_cflags_osx="-I/usr/X11/include/fontconfig/" # # for cairo have to be careful to return the /usr/X11/include not /usr/X11/include/cairo # because in the code we always write "include " not "include " # if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args. set dummy ${ac_tool_prefix}pkg-config; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_path_PKG_CONFIG+y} then : printf %s "(cached) " >&6 else case e in #( e) case $PKG_CONFIG in [\\/]* | ?:[\\/]*) ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_path_PKG_CONFIG="$as_dir$ac_word$ac_exec_ext" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac ;; esac fi PKG_CONFIG=$ac_cv_path_PKG_CONFIG if test -n "$PKG_CONFIG"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PKG_CONFIG" >&5 printf "%s\n" "$PKG_CONFIG" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$ac_cv_path_PKG_CONFIG"; then ac_pt_PKG_CONFIG=$PKG_CONFIG # Extract the first word of "pkg-config", so it can be a program name with args. set dummy pkg-config; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_path_ac_pt_PKG_CONFIG+y} then : printf %s "(cached) " >&6 else case e in #( e) case $ac_pt_PKG_CONFIG in [\\/]* | ?:[\\/]*) ac_cv_path_ac_pt_PKG_CONFIG="$ac_pt_PKG_CONFIG" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_path_ac_pt_PKG_CONFIG="$as_dir$ac_word$ac_exec_ext" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac ;; esac fi ac_pt_PKG_CONFIG=$ac_cv_path_ac_pt_PKG_CONFIG if test -n "$ac_pt_PKG_CONFIG"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKG_CONFIG" >&5 printf "%s\n" "$ac_pt_PKG_CONFIG" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$ac_pt_PKG_CONFIG" = x; then PKG_CONFIG="" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac PKG_CONFIG=$ac_pt_PKG_CONFIG fi else PKG_CONFIG="$ac_cv_path_PKG_CONFIG" fi fi if test -n "$PKG_CONFIG"; then _pkg_min_version=0.9.0 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking pkg-config is at least version $_pkg_min_version" >&5 printf %s "checking pkg-config is at least version $_pkg_min_version... " >&6; } if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } PKG_CONFIG="" fi fi if test -z "$PKG_CONFIG"; then as_fn_error $? "pkg-config not found" "$LINENO" 5 fi pkg_failed=no { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for cairo" >&5 printf %s "checking for cairo... " >&6; } if test -n "$CAIRO_CFLAGS"; then pkg_cv_CAIRO_CFLAGS="$CAIRO_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"cairo\""; } >&5 ($PKG_CONFIG --exists --print-errors "cairo") 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_CAIRO_CFLAGS=`$PKG_CONFIG --cflags "cairo" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test -n "$CAIRO_LIBS"; then pkg_cv_CAIRO_LIBS="$CAIRO_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"cairo\""; } >&5 ($PKG_CONFIG --exists --print-errors "cairo") 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_CAIRO_LIBS=`$PKG_CONFIG --libs "cairo" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test $pkg_failed = yes; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then CAIRO_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "cairo" 2>&1` else CAIRO_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "cairo" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$CAIRO_PKG_ERRORS" >&5 CAIRO_LIBS=$cairo_libs_osx CAIRO_CFLAGS=$cairo_cflags_osx elif test $pkg_failed = untried; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } CAIRO_LIBS=$cairo_libs_osx CAIRO_CFLAGS=$cairo_cflags_osx else CAIRO_CFLAGS=$pkg_cv_CAIRO_CFLAGS CAIRO_LIBS=$pkg_cv_CAIRO_LIBS { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } CAIRO_INCLUDEDIR=`$PKG_CONFIG --variable=includedir cairo` CAIRO_LIBS=`$PKG_CONFIG --libs cairo` CAIRO_CFLAGS="-I$CAIRO_INCLUDEDIR" fi pkg_failed=no { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for x11" >&5 printf %s "checking for x11... " >&6; } if test -n "$X11_CFLAGS"; then pkg_cv_X11_CFLAGS="$X11_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"x11\""; } >&5 ($PKG_CONFIG --exists --print-errors "x11") 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_X11_CFLAGS=`$PKG_CONFIG --cflags "x11" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test -n "$X11_LIBS"; then pkg_cv_X11_LIBS="$X11_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"x11\""; } >&5 ($PKG_CONFIG --exists --print-errors "x11") 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_X11_LIBS=`$PKG_CONFIG --libs "x11" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test $pkg_failed = yes; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then X11_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "x11" 2>&1` else X11_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "x11" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$X11_PKG_ERRORS" >&5 X11_LIBS=$x11_libs elif test $pkg_failed = untried; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } X11_LIBS=$x11_libs else X11_CFLAGS=$pkg_cv_X11_CFLAGS X11_LIBS=$pkg_cv_X11_LIBS { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } fi pkg_failed=no { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for freetype2" >&5 printf %s "checking for freetype2... " >&6; } if test -n "$FT_CFLAGS"; then pkg_cv_FT_CFLAGS="$FT_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"freetype2\""; } >&5 ($PKG_CONFIG --exists --print-errors "freetype2") 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_FT_CFLAGS=`$PKG_CONFIG --cflags "freetype2" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test -n "$FT_LIBS"; then pkg_cv_FT_LIBS="$FT_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"freetype2\""; } >&5 ($PKG_CONFIG --exists --print-errors "freetype2") 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_FT_LIBS=`$PKG_CONFIG --libs "freetype2" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test $pkg_failed = yes; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then FT_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "freetype2" 2>&1` else FT_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "freetype2" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$FT_PKG_ERRORS" >&5 FT_LIBS=$ft_libs_osx FT_CFLAGS=$ft_cflags_osx elif test $pkg_failed = untried; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } FT_LIBS=$ft_libs_osx FT_CFLAGS=$ft_cflags_osx else FT_CFLAGS=$pkg_cv_FT_CFLAGS FT_LIBS=$pkg_cv_FT_LIBS { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } fi pkg_failed=no { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for fontconfig" >&5 printf %s "checking for fontconfig... " >&6; } if test -n "$FC_CFLAGS"; then pkg_cv_FC_CFLAGS="$FC_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"fontconfig\""; } >&5 ($PKG_CONFIG --exists --print-errors "fontconfig") 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_FC_CFLAGS=`$PKG_CONFIG --cflags "fontconfig" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test -n "$FC_LIBS"; then pkg_cv_FC_LIBS="$FC_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"fontconfig\""; } >&5 ($PKG_CONFIG --exists --print-errors "fontconfig") 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_FC_LIBS=`$PKG_CONFIG --libs "fontconfig" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test $pkg_failed = yes; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then FC_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "fontconfig" 2>&1` else FC_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "fontconfig" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$FC_PKG_ERRORS" >&5 FC_LIBS=$fc_libs_osx FC_CFLAGS=$fc_cflags_osx elif test $pkg_failed = untried; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } FC_LIBS=$fc_libs_osx FC_CFLAGS=$fc_cflags_osx else FC_CFLAGS=$pkg_cv_FC_CFLAGS FC_LIBS=$pkg_cv_FC_LIBS { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } fi ac_config_files="$ac_config_files Makefile src/Makefile src/cpgplot.pc src/giza.pc src/pgplot.pc src/giza-version.h test/Makefile test/C/Makefile test/F90/Makefile" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: ====== Compilation flags being used ======" >&5 printf "%s\n" "$as_me: ====== Compilation flags being used ======" >&6;} { printf "%s\n" "$as_me:${as_lineno-$LINENO}: CFLAGS = $CFLAGS" >&5 printf "%s\n" "$as_me: CFLAGS = $CFLAGS" >&6;} { printf "%s\n" "$as_me:${as_lineno-$LINENO}: CPPFLAGS = $CPPFLAGS" >&5 printf "%s\n" "$as_me: CPPFLAGS = $CPPFLAGS" >&6;} { printf "%s\n" "$as_me:${as_lineno-$LINENO}: CAIRO_CFLAGS = $CAIRO_CFLAGS" >&5 printf "%s\n" "$as_me: CAIRO_CFLAGS = $CAIRO_CFLAGS" >&6;} { printf "%s\n" "$as_me:${as_lineno-$LINENO}: CAIRO_LIBS = $CAIRO_LIBS" >&5 printf "%s\n" "$as_me: CAIRO_LIBS = $CAIRO_LIBS" >&6;} { printf "%s\n" "$as_me:${as_lineno-$LINENO}: X11_CFLAGS = $X11_CFLAGS" >&5 printf "%s\n" "$as_me: X11_CFLAGS = $X11_CFLAGS" >&6;} { printf "%s\n" "$as_me:${as_lineno-$LINENO}: X11_LIBS = $X11_LIBS" >&5 printf "%s\n" "$as_me: X11_LIBS = $X11_LIBS" >&6;} { printf "%s\n" "$as_me:${as_lineno-$LINENO}: FT_CFLAGS = $FT_CFLAGS" >&5 printf "%s\n" "$as_me: FT_CFLAGS = $FT_CFLAGS" >&6;} { printf "%s\n" "$as_me:${as_lineno-$LINENO}: FT_LIBS = $FT_LIBS" >&5 printf "%s\n" "$as_me: FT_LIBS = $FT_LIBS" >&6;} { printf "%s\n" "$as_me:${as_lineno-$LINENO}: FC_CFLAGS = $FC_CFLAGS" >&5 printf "%s\n" "$as_me: FC_CFLAGS = $FC_CFLAGS" >&6;} { printf "%s\n" "$as_me:${as_lineno-$LINENO}: FC_LIBS = $FC_LIBS" >&5 printf "%s\n" "$as_me: FC_LIBS = $FC_LIBS" >&6;} { printf "%s\n" "$as_me:${as_lineno-$LINENO}: PKG_CONFIG_PATH = $PKG_CONFIG_PATH" >&5 printf "%s\n" "$as_me: PKG_CONFIG_PATH = $PKG_CONFIG_PATH" >&6;} { printf "%s\n" "$as_me:${as_lineno-$LINENO}: ================================" >&5 printf "%s\n" "$as_me: ================================" >&6;} if test "x$FC" = "x" then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: *** NO FORTRAN COMPILER FOUND: skipping compilation of libpglot and giza Fortran module *** " >&5 printf "%s\n" "$as_me: WARNING: *** NO FORTRAN COMPILER FOUND: skipping compilation of libpglot and giza Fortran module *** " >&2;} fi cat >confcache <<\_ACEOF # This file is a shell script that caches the results of configure # tests run on this system so they can be shared between configure # scripts and configure runs, see configure's option --config-cache. # It is not useful on other systems. If it contains results you don't # want to keep, you may remove or edit it. # # config.status only pays attention to the cache file if you give it # the --recheck option to rerun configure. # # 'ac_cv_env_foo' variables (set or unset) will be overridden when # loading this file, other *unset* 'ac_cv_foo' will be assigned the # following values. _ACEOF # The following way of writing the cache mishandles newlines in values, # but we know of no workaround that is simple, portable, and efficient. # So, we kill variables containing newlines. # Ultrix sh set writes to stderr and can't be redirected directly, # and sets the high bit in the cache file unless we assign to the vars. ( for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do eval ac_val=\$$ac_var case $ac_val in #( *${as_nl}*) case $ac_var in #( *_cv_*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 printf "%s\n" "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( *) { eval $ac_var=; unset $ac_var;} ;; esac ;; esac done (set) 2>&1 | case $as_nl`(ac_space=' '; set) 2>&1` in #( *${as_nl}ac_space=\ *) # 'set' does not quote correctly, so add quotes: double-quote # substitution turns \\\\ into \\, and sed turns \\ into \. sed -n \ "s/'/'\\\\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" ;; #( *) # 'set' quotes correctly as required by POSIX, so do not add quotes. sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; esac | sort ) | sed ' /^ac_cv_env_/b end t clear :clear s/^\([^=]*\)=\(.*[{}].*\)$/test ${\1+y} || &/ t end s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ :end' >>confcache if diff "$cache_file" confcache >/dev/null 2>&1; then :; else if test -w "$cache_file"; then if test "x$cache_file" != "x/dev/null"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 printf "%s\n" "$as_me: updating cache $cache_file" >&6;} if test ! -f "$cache_file" || test -h "$cache_file"; then cat confcache >"$cache_file" else case $cache_file in #( */* | ?:*) mv -f confcache "$cache_file"$$ && mv -f "$cache_file"$$ "$cache_file" ;; #( *) mv -f confcache "$cache_file" ;; esac fi fi else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 printf "%s\n" "$as_me: not updating unwritable cache $cache_file" >&6;} fi fi rm -f confcache test "x$prefix" = xNONE && prefix=$ac_default_prefix # Let make expand exec_prefix. test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' DEFS=-DHAVE_CONFIG_H ac_libobjs= ac_ltlibobjs= U= for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue # 1. Remove the extension, and $U if already installed. ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' ac_i=`printf "%s\n" "$ac_i" | sed "$ac_script"` # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR # will be set to the directory where LIBOBJS objects are built. as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext" as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo' done LIBOBJS=$ac_libobjs LTLIBOBJS=$ac_ltlibobjs { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking that generated files are newer than configure" >&5 printf %s "checking that generated files are newer than configure... " >&6; } if test -n "$am_sleep_pid"; then # Hide warnings about reused PIDs. wait $am_sleep_pid 2>/dev/null fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: done" >&5 printf "%s\n" "done" >&6; } case $enable_silent_rules in # ((( yes) AM_DEFAULT_VERBOSITY=0;; no) AM_DEFAULT_VERBOSITY=1;; esac if test $am_cv_make_support_nested_variables = yes; then AM_V='$(V)' AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' else AM_V=$AM_DEFAULT_VERBOSITY AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY fi if test -n "$EXEEXT"; then am__EXEEXT_TRUE= am__EXEEXT_FALSE='#' else am__EXEEXT_TRUE='#' am__EXEEXT_FALSE= fi if test -z "${MAINTAINER_MODE_TRUE}" && test -z "${MAINTAINER_MODE_FALSE}"; then as_fn_error $? "conditional \"MAINTAINER_MODE\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then as_fn_error $? "conditional \"AMDEP\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then as_fn_error $? "conditional \"am__fastdepCC\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${HAVE_FC_TRUE}" && test -z "${HAVE_FC_FALSE}"; then as_fn_error $? "conditional \"HAVE_FC\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi : "${CONFIG_STATUS=./config.status}" ac_write_fail=0 ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files $CONFIG_STATUS" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 printf "%s\n" "$as_me: creating $CONFIG_STATUS" >&6;} as_write_fail=0 cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1 #! $SHELL # Generated by $as_me. # Run this file to recreate the current configuration. # Compiler output produced by configure, useful for debugging # configure, is in config.log if it exists. debug=false ac_cs_recheck=false ac_cs_silent=false SHELL=\${CONFIG_SHELL-$SHELL} export SHELL _ASEOF cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1 ## -------------------- ## ## M4sh Initialization. ## ## -------------------- ## # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh if test ${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1 then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case e in #( e) case `(set -o) 2>/dev/null` in #( *posix*) : set -o posix ;; #( *) : ;; esac ;; esac fi # Reset variables that may have inherited troublesome values from # the environment. # IFS needs to be set, to space, tab, and newline, in precisely that order. # (If _AS_PATH_WALK were called with IFS unset, it would have the # side effect of setting IFS to empty, thus disabling word splitting.) # Quoting is to prevent editors from complaining about space-tab. as_nl=' ' export as_nl IFS=" "" $as_nl" PS1='$ ' PS2='> ' PS4='+ ' # Ensure predictable behavior from utilities with locale-dependent output. LC_ALL=C export LC_ALL LANGUAGE=C export LANGUAGE # We cannot yet rely on "unset" to work, but we need these variables # to be unset--not just set to an empty or harmless value--now, to # avoid bugs in old shells (e.g. pre-3.0 UWIN ksh). This construct # also avoids known problems related to "unset" and subshell syntax # in other old shells (e.g. bash 2.01 and pdksh 5.2.14). for as_var in BASH_ENV ENV MAIL MAILPATH CDPATH do eval test \${$as_var+y} \ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : done # Ensure that fds 0, 1, and 2 are open. if (exec 3>&0) 2>/dev/null; then :; else exec 0&1) 2>/dev/null; then :; else exec 1>/dev/null; fi if (exec 3>&2) ; then :; else exec 2>/dev/null; fi # The user is always right. if ${PATH_SEPARATOR+false} :; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || PATH_SEPARATOR=';' } fi # Find who we are. Look in the path if we contain no directory separator. as_myself= case $0 in #(( *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac test -r "$as_dir$0" && as_myself=$as_dir$0 && break done IFS=$as_save_IFS ;; esac # We did not find ourselves, most probably we were run as 'sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then printf "%s\n" "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 exit 1 fi # as_fn_error STATUS ERROR [LINENO LOG_FD] # ---------------------------------------- # Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are # provided, also output the error to LOG_FD, referencing LINENO. Then exit the # script with STATUS, using 1 if that was 0. as_fn_error () { as_status=$1; test $as_status -eq 0 && as_status=1 if test "$4"; then as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 fi printf "%s\n" "$as_me: error: $2" >&2 as_fn_exit $as_status } # as_fn_error # as_fn_set_status STATUS # ----------------------- # Set $? to STATUS, without forking. as_fn_set_status () { return $1 } # as_fn_set_status # as_fn_exit STATUS # ----------------- # Exit the shell with STATUS, even in a "trap 0" or "set -e" context. as_fn_exit () { set +e as_fn_set_status $1 exit $1 } # as_fn_exit # as_fn_unset VAR # --------------- # Portably unset VAR. as_fn_unset () { { eval $1=; unset $1;} } as_unset=as_fn_unset # as_fn_append VAR VALUE # ---------------------- # Append the text in VALUE to the end of the definition contained in VAR. Take # advantage of any shell optimizations that allow amortized linear growth over # repeated appends, instead of the typical quadratic growth present in naive # implementations. if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null then : eval 'as_fn_append () { eval $1+=\$2 }' else case e in #( e) as_fn_append () { eval $1=\$$1\$2 } ;; esac fi # as_fn_append # as_fn_arith ARG... # ------------------ # Perform arithmetic evaluation on the ARGs, and store the result in the # global $as_val. Take advantage of shells that can avoid forks. The arguments # must be portable across $(()) and expr. if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null then : eval 'as_fn_arith () { as_val=$(( $* )) }' else case e in #( e) as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` } ;; esac fi # as_fn_arith if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then as_dirname=dirname else as_dirname=false fi as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || printf "%s\n" X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits # Determine whether it's possible to make 'echo' print without a newline. # These variables are no longer used directly by Autoconf, but are AC_SUBSTed # for compatibility with existing Makefiles. ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in #((((( -n*) case `echo 'xy\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. xy) ECHO_C='\c';; *) echo `echo ksh88 bug on AIX 6.1` > /dev/null ECHO_T=' ';; esac;; *) ECHO_N='-n';; esac # For backward compatibility with old third-party macros, we provide # the shell variables $as_echo and $as_echo_n. New code should use # AS_ECHO(["message"]) and AS_ECHO_N(["message"]), respectively. as_echo='printf %s\n' as_echo_n='printf %s' rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file else rm -f conf$$.dir mkdir conf$$.dir 2>/dev/null fi if (echo >conf$$.file) 2>/dev/null; then if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: # 1) On MSYS, both 'ln -s file dir' and 'ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; 'ln -s' creates a wrapper executable. # In both cases, we have to default to 'cp -pR'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -pR' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -pR' fi else as_ln_s='cp -pR' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null # as_fn_mkdir_p # ------------- # Create "$as_dir" as a directory, including parents if necessary. as_fn_mkdir_p () { case $as_dir in #( -*) as_dir=./$as_dir;; esac test -d "$as_dir" || eval $as_mkdir_p || { as_dirs= while :; do case $as_dir in #( *\'*) as_qdir=`printf "%s\n" "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" as_dir=`$as_dirname -- "$as_dir" || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || printf "%s\n" X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` test -d "$as_dir" && break done test -z "$as_dirs" || eval "mkdir $as_dirs" } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" } # as_fn_mkdir_p if mkdir -p . 2>/dev/null; then as_mkdir_p='mkdir -p "$as_dir"' else test -d ./-p && rmdir ./-p as_mkdir_p=false fi # as_fn_executable_p FILE # ----------------------- # Test if FILE is an executable regular file. as_fn_executable_p () { test -f "$1" && test -x "$1" } # as_fn_executable_p as_test_x='test -x' as_executable_p=as_fn_executable_p # Sed expression to map a string onto a valid CPP name. as_sed_cpp="y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g" as_tr_cpp="eval sed '$as_sed_cpp'" # deprecated # Sed expression to map a string onto a valid variable name. as_sed_sh="y%*+%pp%;s%[^_$as_cr_alnum]%_%g" as_tr_sh="eval sed '$as_sed_sh'" # deprecated exec 6>&1 ## ----------------------------------- ## ## Main body of $CONFIG_STATUS script. ## ## ----------------------------------- ## _ASEOF test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1 cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # Save the log message, to keep $0 and so on meaningful, and to # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" This file was extended by giza $as_me 1.5.0, which was generated by GNU Autoconf 2.72. Invocation command line was CONFIG_FILES = $CONFIG_FILES CONFIG_HEADERS = $CONFIG_HEADERS CONFIG_LINKS = $CONFIG_LINKS CONFIG_COMMANDS = $CONFIG_COMMANDS $ $0 $@ on `(hostname || uname -n) 2>/dev/null | sed 1q` " _ACEOF case $ac_config_files in *" "*) set x $ac_config_files; shift; ac_config_files=$*;; esac case $ac_config_headers in *" "*) set x $ac_config_headers; shift; ac_config_headers=$*;; esac cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 # Files that config.status was made for. config_files="$ac_config_files" config_headers="$ac_config_headers" config_commands="$ac_config_commands" _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 ac_cs_usage="\ '$as_me' instantiates files and other configuration actions from templates according to the current configuration. Unless the files and actions are specified as TAGs, all are instantiated by default. Usage: $0 [OPTION]... [TAG]... -h, --help print this help, then exit -V, --version print version number and configuration settings, then exit --config print configuration, then exit -q, --quiet, --silent do not print progress messages -d, --debug don't remove temporary files --recheck update $as_me by reconfiguring in the same conditions --file=FILE[:TEMPLATE] instantiate the configuration file FILE --header=FILE[:TEMPLATE] instantiate the configuration header FILE Configuration files: $config_files Configuration headers: $config_headers Configuration commands: $config_commands Report bugs to . giza home page: ." _ACEOF ac_cs_config=`printf "%s\n" "$ac_configure_args" | sed "$ac_safe_unquote"` ac_cs_config_escaped=`printf "%s\n" "$ac_cs_config" | sed "s/^ //; s/'/'\\\\\\\\''/g"` cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config='$ac_cs_config_escaped' ac_cs_version="\\ giza config.status 1.5.0 configured by $0, generated by GNU Autoconf 2.72, with options \\"\$ac_cs_config\\" Copyright (C) 2023 Free Software Foundation, Inc. This config.status script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it." ac_pwd='$ac_pwd' srcdir='$srcdir' INSTALL='$INSTALL' MKDIR_P='$MKDIR_P' AWK='$AWK' test -n "\$AWK" || AWK=awk _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # The default lists apply if the user does not specify any file. ac_need_defaults=: while test $# != 0 do case $1 in --*=?*) ac_option=`expr "X$1" : 'X\([^=]*\)='` ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` ac_shift=: ;; --*=) ac_option=`expr "X$1" : 'X\([^=]*\)='` ac_optarg= ac_shift=: ;; *) ac_option=$1 ac_optarg=$2 ac_shift=shift ;; esac case $ac_option in # Handling of the options. -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) ac_cs_recheck=: ;; --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) printf "%s\n" "$ac_cs_version"; exit ;; --config | --confi | --conf | --con | --co | --c ) printf "%s\n" "$ac_cs_config"; exit ;; --debug | --debu | --deb | --de | --d | -d ) debug=: ;; --file | --fil | --fi | --f ) $ac_shift case $ac_optarg in *\'*) ac_optarg=`printf "%s\n" "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; '') as_fn_error $? "missing file argument" ;; esac as_fn_append CONFIG_FILES " '$ac_optarg'" ac_need_defaults=false;; --header | --heade | --head | --hea ) $ac_shift case $ac_optarg in *\'*) ac_optarg=`printf "%s\n" "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; esac as_fn_append CONFIG_HEADERS " '$ac_optarg'" ac_need_defaults=false;; --he | --h) # Conflict between --help and --header as_fn_error $? "ambiguous option: '$1' Try '$0 --help' for more information.";; --help | --hel | -h ) printf "%s\n" "$ac_cs_usage"; exit ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil | --si | --s) ac_cs_silent=: ;; # This is an error. -*) as_fn_error $? "unrecognized option: '$1' Try '$0 --help' for more information." ;; *) as_fn_append ac_config_targets " $1" ac_need_defaults=false ;; esac shift done ac_configure_extra_args= if $ac_cs_silent; then exec 6>/dev/null ac_configure_extra_args="$ac_configure_extra_args --silent" fi _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 if \$ac_cs_recheck; then set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion shift \printf "%s\n" "running CONFIG_SHELL=$SHELL \$*" >&6 CONFIG_SHELL='$SHELL' export CONFIG_SHELL exec "\$@" fi _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 exec 5>>config.log { echo sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX ## Running $as_me. ## _ASBOX printf "%s\n" "$ac_log" } >&5 _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 # # INIT-COMMANDS # AMDEP_TRUE="$AMDEP_TRUE" MAKE="${MAKE-make}" # The HP-UX ksh and POSIX shell print the target directory to stdout # if CDPATH is set. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH sed_quote_subst='$sed_quote_subst' double_quote_subst='$double_quote_subst' delay_variable_subst='$delay_variable_subst' macro_version='`$ECHO "$macro_version" | $SED "$delay_single_quote_subst"`' macro_revision='`$ECHO "$macro_revision" | $SED "$delay_single_quote_subst"`' enable_shared='`$ECHO "$enable_shared" | $SED "$delay_single_quote_subst"`' enable_static='`$ECHO "$enable_static" | $SED "$delay_single_quote_subst"`' pic_mode='`$ECHO "$pic_mode" | $SED "$delay_single_quote_subst"`' enable_fast_install='`$ECHO "$enable_fast_install" | $SED "$delay_single_quote_subst"`' shared_archive_member_spec='`$ECHO "$shared_archive_member_spec" | $SED "$delay_single_quote_subst"`' SHELL='`$ECHO "$SHELL" | $SED "$delay_single_quote_subst"`' ECHO='`$ECHO "$ECHO" | $SED "$delay_single_quote_subst"`' PATH_SEPARATOR='`$ECHO "$PATH_SEPARATOR" | $SED "$delay_single_quote_subst"`' host_alias='`$ECHO "$host_alias" | $SED "$delay_single_quote_subst"`' host='`$ECHO "$host" | $SED "$delay_single_quote_subst"`' host_os='`$ECHO "$host_os" | $SED "$delay_single_quote_subst"`' build_alias='`$ECHO "$build_alias" | $SED "$delay_single_quote_subst"`' build='`$ECHO "$build" | $SED "$delay_single_quote_subst"`' build_os='`$ECHO "$build_os" | $SED "$delay_single_quote_subst"`' SED='`$ECHO "$SED" | $SED "$delay_single_quote_subst"`' Xsed='`$ECHO "$Xsed" | $SED "$delay_single_quote_subst"`' GREP='`$ECHO "$GREP" | $SED "$delay_single_quote_subst"`' EGREP='`$ECHO "$EGREP" | $SED "$delay_single_quote_subst"`' FGREP='`$ECHO "$FGREP" | $SED "$delay_single_quote_subst"`' LD='`$ECHO "$LD" | $SED "$delay_single_quote_subst"`' NM='`$ECHO "$NM" | $SED "$delay_single_quote_subst"`' LN_S='`$ECHO "$LN_S" | $SED "$delay_single_quote_subst"`' max_cmd_len='`$ECHO "$max_cmd_len" | $SED "$delay_single_quote_subst"`' ac_objext='`$ECHO "$ac_objext" | $SED "$delay_single_quote_subst"`' exeext='`$ECHO "$exeext" | $SED "$delay_single_quote_subst"`' lt_unset='`$ECHO "$lt_unset" | $SED "$delay_single_quote_subst"`' lt_SP2NL='`$ECHO "$lt_SP2NL" | $SED "$delay_single_quote_subst"`' lt_NL2SP='`$ECHO "$lt_NL2SP" | $SED "$delay_single_quote_subst"`' lt_cv_to_host_file_cmd='`$ECHO "$lt_cv_to_host_file_cmd" | $SED "$delay_single_quote_subst"`' lt_cv_to_tool_file_cmd='`$ECHO "$lt_cv_to_tool_file_cmd" | $SED "$delay_single_quote_subst"`' reload_flag='`$ECHO "$reload_flag" | $SED "$delay_single_quote_subst"`' reload_cmds='`$ECHO "$reload_cmds" | $SED "$delay_single_quote_subst"`' OBJDUMP='`$ECHO "$OBJDUMP" | $SED "$delay_single_quote_subst"`' deplibs_check_method='`$ECHO "$deplibs_check_method" | $SED "$delay_single_quote_subst"`' file_magic_cmd='`$ECHO "$file_magic_cmd" | $SED "$delay_single_quote_subst"`' file_magic_glob='`$ECHO "$file_magic_glob" | $SED "$delay_single_quote_subst"`' want_nocaseglob='`$ECHO "$want_nocaseglob" | $SED "$delay_single_quote_subst"`' DLLTOOL='`$ECHO "$DLLTOOL" | $SED "$delay_single_quote_subst"`' sharedlib_from_linklib_cmd='`$ECHO "$sharedlib_from_linklib_cmd" | $SED "$delay_single_quote_subst"`' AR='`$ECHO "$AR" | $SED "$delay_single_quote_subst"`' AR_FLAGS='`$ECHO "$AR_FLAGS" | $SED "$delay_single_quote_subst"`' archiver_list_spec='`$ECHO "$archiver_list_spec" | $SED "$delay_single_quote_subst"`' STRIP='`$ECHO "$STRIP" | $SED "$delay_single_quote_subst"`' RANLIB='`$ECHO "$RANLIB" | $SED "$delay_single_quote_subst"`' old_postinstall_cmds='`$ECHO "$old_postinstall_cmds" | $SED "$delay_single_quote_subst"`' old_postuninstall_cmds='`$ECHO "$old_postuninstall_cmds" | $SED "$delay_single_quote_subst"`' old_archive_cmds='`$ECHO "$old_archive_cmds" | $SED "$delay_single_quote_subst"`' lock_old_archive_extraction='`$ECHO "$lock_old_archive_extraction" | $SED "$delay_single_quote_subst"`' CC='`$ECHO "$CC" | $SED "$delay_single_quote_subst"`' CFLAGS='`$ECHO "$CFLAGS" | $SED "$delay_single_quote_subst"`' compiler='`$ECHO "$compiler" | $SED "$delay_single_quote_subst"`' GCC='`$ECHO "$GCC" | $SED "$delay_single_quote_subst"`' lt_cv_sys_global_symbol_pipe='`$ECHO "$lt_cv_sys_global_symbol_pipe" | $SED "$delay_single_quote_subst"`' lt_cv_sys_global_symbol_to_cdecl='`$ECHO "$lt_cv_sys_global_symbol_to_cdecl" | $SED "$delay_single_quote_subst"`' lt_cv_sys_global_symbol_to_import='`$ECHO "$lt_cv_sys_global_symbol_to_import" | $SED "$delay_single_quote_subst"`' lt_cv_sys_global_symbol_to_c_name_address='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address" | $SED "$delay_single_quote_subst"`' lt_cv_sys_global_symbol_to_c_name_address_lib_prefix='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address_lib_prefix" | $SED "$delay_single_quote_subst"`' lt_cv_nm_interface='`$ECHO "$lt_cv_nm_interface" | $SED "$delay_single_quote_subst"`' nm_file_list_spec='`$ECHO "$nm_file_list_spec" | $SED "$delay_single_quote_subst"`' lt_sysroot='`$ECHO "$lt_sysroot" | $SED "$delay_single_quote_subst"`' lt_cv_truncate_bin='`$ECHO "$lt_cv_truncate_bin" | $SED "$delay_single_quote_subst"`' objdir='`$ECHO "$objdir" | $SED "$delay_single_quote_subst"`' MAGIC_CMD='`$ECHO "$MAGIC_CMD" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_no_builtin_flag='`$ECHO "$lt_prog_compiler_no_builtin_flag" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_pic='`$ECHO "$lt_prog_compiler_pic" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_wl='`$ECHO "$lt_prog_compiler_wl" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_static='`$ECHO "$lt_prog_compiler_static" | $SED "$delay_single_quote_subst"`' lt_cv_prog_compiler_c_o='`$ECHO "$lt_cv_prog_compiler_c_o" | $SED "$delay_single_quote_subst"`' need_locks='`$ECHO "$need_locks" | $SED "$delay_single_quote_subst"`' MANIFEST_TOOL='`$ECHO "$MANIFEST_TOOL" | $SED "$delay_single_quote_subst"`' DSYMUTIL='`$ECHO "$DSYMUTIL" | $SED "$delay_single_quote_subst"`' NMEDIT='`$ECHO "$NMEDIT" | $SED "$delay_single_quote_subst"`' LIPO='`$ECHO "$LIPO" | $SED "$delay_single_quote_subst"`' OTOOL='`$ECHO "$OTOOL" | $SED "$delay_single_quote_subst"`' OTOOL64='`$ECHO "$OTOOL64" | $SED "$delay_single_quote_subst"`' libext='`$ECHO "$libext" | $SED "$delay_single_quote_subst"`' shrext_cmds='`$ECHO "$shrext_cmds" | $SED "$delay_single_quote_subst"`' extract_expsyms_cmds='`$ECHO "$extract_expsyms_cmds" | $SED "$delay_single_quote_subst"`' archive_cmds_need_lc='`$ECHO "$archive_cmds_need_lc" | $SED "$delay_single_quote_subst"`' enable_shared_with_static_runtimes='`$ECHO "$enable_shared_with_static_runtimes" | $SED "$delay_single_quote_subst"`' export_dynamic_flag_spec='`$ECHO "$export_dynamic_flag_spec" | $SED "$delay_single_quote_subst"`' whole_archive_flag_spec='`$ECHO "$whole_archive_flag_spec" | $SED "$delay_single_quote_subst"`' compiler_needs_object='`$ECHO "$compiler_needs_object" | $SED "$delay_single_quote_subst"`' old_archive_from_new_cmds='`$ECHO "$old_archive_from_new_cmds" | $SED "$delay_single_quote_subst"`' old_archive_from_expsyms_cmds='`$ECHO "$old_archive_from_expsyms_cmds" | $SED "$delay_single_quote_subst"`' archive_cmds='`$ECHO "$archive_cmds" | $SED "$delay_single_quote_subst"`' archive_expsym_cmds='`$ECHO "$archive_expsym_cmds" | $SED "$delay_single_quote_subst"`' module_cmds='`$ECHO "$module_cmds" | $SED "$delay_single_quote_subst"`' module_expsym_cmds='`$ECHO "$module_expsym_cmds" | $SED "$delay_single_quote_subst"`' with_gnu_ld='`$ECHO "$with_gnu_ld" | $SED "$delay_single_quote_subst"`' allow_undefined_flag='`$ECHO "$allow_undefined_flag" | $SED "$delay_single_quote_subst"`' no_undefined_flag='`$ECHO "$no_undefined_flag" | $SED "$delay_single_quote_subst"`' hardcode_libdir_flag_spec='`$ECHO "$hardcode_libdir_flag_spec" | $SED "$delay_single_quote_subst"`' hardcode_libdir_separator='`$ECHO "$hardcode_libdir_separator" | $SED "$delay_single_quote_subst"`' hardcode_direct='`$ECHO "$hardcode_direct" | $SED "$delay_single_quote_subst"`' hardcode_direct_absolute='`$ECHO "$hardcode_direct_absolute" | $SED "$delay_single_quote_subst"`' hardcode_minus_L='`$ECHO "$hardcode_minus_L" | $SED "$delay_single_quote_subst"`' hardcode_shlibpath_var='`$ECHO "$hardcode_shlibpath_var" | $SED "$delay_single_quote_subst"`' hardcode_automatic='`$ECHO "$hardcode_automatic" | $SED "$delay_single_quote_subst"`' inherit_rpath='`$ECHO "$inherit_rpath" | $SED "$delay_single_quote_subst"`' link_all_deplibs='`$ECHO "$link_all_deplibs" | $SED "$delay_single_quote_subst"`' always_export_symbols='`$ECHO "$always_export_symbols" | $SED "$delay_single_quote_subst"`' export_symbols_cmds='`$ECHO "$export_symbols_cmds" | $SED "$delay_single_quote_subst"`' exclude_expsyms='`$ECHO "$exclude_expsyms" | $SED "$delay_single_quote_subst"`' include_expsyms='`$ECHO "$include_expsyms" | $SED "$delay_single_quote_subst"`' prelink_cmds='`$ECHO "$prelink_cmds" | $SED "$delay_single_quote_subst"`' postlink_cmds='`$ECHO "$postlink_cmds" | $SED "$delay_single_quote_subst"`' file_list_spec='`$ECHO "$file_list_spec" | $SED "$delay_single_quote_subst"`' variables_saved_for_relink='`$ECHO "$variables_saved_for_relink" | $SED "$delay_single_quote_subst"`' need_lib_prefix='`$ECHO "$need_lib_prefix" | $SED "$delay_single_quote_subst"`' need_version='`$ECHO "$need_version" | $SED "$delay_single_quote_subst"`' version_type='`$ECHO "$version_type" | $SED "$delay_single_quote_subst"`' runpath_var='`$ECHO "$runpath_var" | $SED "$delay_single_quote_subst"`' shlibpath_var='`$ECHO "$shlibpath_var" | $SED "$delay_single_quote_subst"`' shlibpath_overrides_runpath='`$ECHO "$shlibpath_overrides_runpath" | $SED "$delay_single_quote_subst"`' libname_spec='`$ECHO "$libname_spec" | $SED "$delay_single_quote_subst"`' library_names_spec='`$ECHO "$library_names_spec" | $SED "$delay_single_quote_subst"`' soname_spec='`$ECHO "$soname_spec" | $SED "$delay_single_quote_subst"`' install_override_mode='`$ECHO "$install_override_mode" | $SED "$delay_single_quote_subst"`' postinstall_cmds='`$ECHO "$postinstall_cmds" | $SED "$delay_single_quote_subst"`' postuninstall_cmds='`$ECHO "$postuninstall_cmds" | $SED "$delay_single_quote_subst"`' finish_cmds='`$ECHO "$finish_cmds" | $SED "$delay_single_quote_subst"`' finish_eval='`$ECHO "$finish_eval" | $SED "$delay_single_quote_subst"`' hardcode_into_libs='`$ECHO "$hardcode_into_libs" | $SED "$delay_single_quote_subst"`' sys_lib_search_path_spec='`$ECHO "$sys_lib_search_path_spec" | $SED "$delay_single_quote_subst"`' configure_time_dlsearch_path='`$ECHO "$configure_time_dlsearch_path" | $SED "$delay_single_quote_subst"`' configure_time_lt_sys_library_path='`$ECHO "$configure_time_lt_sys_library_path" | $SED "$delay_single_quote_subst"`' hardcode_action='`$ECHO "$hardcode_action" | $SED "$delay_single_quote_subst"`' enable_dlopen='`$ECHO "$enable_dlopen" | $SED "$delay_single_quote_subst"`' enable_dlopen_self='`$ECHO "$enable_dlopen_self" | $SED "$delay_single_quote_subst"`' enable_dlopen_self_static='`$ECHO "$enable_dlopen_self_static" | $SED "$delay_single_quote_subst"`' old_striplib='`$ECHO "$old_striplib" | $SED "$delay_single_quote_subst"`' striplib='`$ECHO "$striplib" | $SED "$delay_single_quote_subst"`' compiler_lib_search_dirs='`$ECHO "$compiler_lib_search_dirs" | $SED "$delay_single_quote_subst"`' predep_objects='`$ECHO "$predep_objects" | $SED "$delay_single_quote_subst"`' postdep_objects='`$ECHO "$postdep_objects" | $SED "$delay_single_quote_subst"`' predeps='`$ECHO "$predeps" | $SED "$delay_single_quote_subst"`' postdeps='`$ECHO "$postdeps" | $SED "$delay_single_quote_subst"`' compiler_lib_search_path='`$ECHO "$compiler_lib_search_path" | $SED "$delay_single_quote_subst"`' LD_FC='`$ECHO "$LD_FC" | $SED "$delay_single_quote_subst"`' reload_flag_FC='`$ECHO "$reload_flag_FC" | $SED "$delay_single_quote_subst"`' reload_cmds_FC='`$ECHO "$reload_cmds_FC" | $SED "$delay_single_quote_subst"`' old_archive_cmds_FC='`$ECHO "$old_archive_cmds_FC" | $SED "$delay_single_quote_subst"`' compiler_FC='`$ECHO "$compiler_FC" | $SED "$delay_single_quote_subst"`' GCC_FC='`$ECHO "$GCC_FC" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_no_builtin_flag_FC='`$ECHO "$lt_prog_compiler_no_builtin_flag_FC" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_pic_FC='`$ECHO "$lt_prog_compiler_pic_FC" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_wl_FC='`$ECHO "$lt_prog_compiler_wl_FC" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_static_FC='`$ECHO "$lt_prog_compiler_static_FC" | $SED "$delay_single_quote_subst"`' lt_cv_prog_compiler_c_o_FC='`$ECHO "$lt_cv_prog_compiler_c_o_FC" | $SED "$delay_single_quote_subst"`' archive_cmds_need_lc_FC='`$ECHO "$archive_cmds_need_lc_FC" | $SED "$delay_single_quote_subst"`' enable_shared_with_static_runtimes_FC='`$ECHO "$enable_shared_with_static_runtimes_FC" | $SED "$delay_single_quote_subst"`' export_dynamic_flag_spec_FC='`$ECHO "$export_dynamic_flag_spec_FC" | $SED "$delay_single_quote_subst"`' whole_archive_flag_spec_FC='`$ECHO "$whole_archive_flag_spec_FC" | $SED "$delay_single_quote_subst"`' compiler_needs_object_FC='`$ECHO "$compiler_needs_object_FC" | $SED "$delay_single_quote_subst"`' old_archive_from_new_cmds_FC='`$ECHO "$old_archive_from_new_cmds_FC" | $SED "$delay_single_quote_subst"`' old_archive_from_expsyms_cmds_FC='`$ECHO "$old_archive_from_expsyms_cmds_FC" | $SED "$delay_single_quote_subst"`' archive_cmds_FC='`$ECHO "$archive_cmds_FC" | $SED "$delay_single_quote_subst"`' archive_expsym_cmds_FC='`$ECHO "$archive_expsym_cmds_FC" | $SED "$delay_single_quote_subst"`' module_cmds_FC='`$ECHO "$module_cmds_FC" | $SED "$delay_single_quote_subst"`' module_expsym_cmds_FC='`$ECHO "$module_expsym_cmds_FC" | $SED "$delay_single_quote_subst"`' with_gnu_ld_FC='`$ECHO "$with_gnu_ld_FC" | $SED "$delay_single_quote_subst"`' allow_undefined_flag_FC='`$ECHO "$allow_undefined_flag_FC" | $SED "$delay_single_quote_subst"`' no_undefined_flag_FC='`$ECHO "$no_undefined_flag_FC" | $SED "$delay_single_quote_subst"`' hardcode_libdir_flag_spec_FC='`$ECHO "$hardcode_libdir_flag_spec_FC" | $SED "$delay_single_quote_subst"`' hardcode_libdir_separator_FC='`$ECHO "$hardcode_libdir_separator_FC" | $SED "$delay_single_quote_subst"`' hardcode_direct_FC='`$ECHO "$hardcode_direct_FC" | $SED "$delay_single_quote_subst"`' hardcode_direct_absolute_FC='`$ECHO "$hardcode_direct_absolute_FC" | $SED "$delay_single_quote_subst"`' hardcode_minus_L_FC='`$ECHO "$hardcode_minus_L_FC" | $SED "$delay_single_quote_subst"`' hardcode_shlibpath_var_FC='`$ECHO "$hardcode_shlibpath_var_FC" | $SED "$delay_single_quote_subst"`' hardcode_automatic_FC='`$ECHO "$hardcode_automatic_FC" | $SED "$delay_single_quote_subst"`' inherit_rpath_FC='`$ECHO "$inherit_rpath_FC" | $SED "$delay_single_quote_subst"`' link_all_deplibs_FC='`$ECHO "$link_all_deplibs_FC" | $SED "$delay_single_quote_subst"`' always_export_symbols_FC='`$ECHO "$always_export_symbols_FC" | $SED "$delay_single_quote_subst"`' export_symbols_cmds_FC='`$ECHO "$export_symbols_cmds_FC" | $SED "$delay_single_quote_subst"`' exclude_expsyms_FC='`$ECHO "$exclude_expsyms_FC" | $SED "$delay_single_quote_subst"`' include_expsyms_FC='`$ECHO "$include_expsyms_FC" | $SED "$delay_single_quote_subst"`' prelink_cmds_FC='`$ECHO "$prelink_cmds_FC" | $SED "$delay_single_quote_subst"`' postlink_cmds_FC='`$ECHO "$postlink_cmds_FC" | $SED "$delay_single_quote_subst"`' file_list_spec_FC='`$ECHO "$file_list_spec_FC" | $SED "$delay_single_quote_subst"`' hardcode_action_FC='`$ECHO "$hardcode_action_FC" | $SED "$delay_single_quote_subst"`' compiler_lib_search_dirs_FC='`$ECHO "$compiler_lib_search_dirs_FC" | $SED "$delay_single_quote_subst"`' predep_objects_FC='`$ECHO "$predep_objects_FC" | $SED "$delay_single_quote_subst"`' postdep_objects_FC='`$ECHO "$postdep_objects_FC" | $SED "$delay_single_quote_subst"`' predeps_FC='`$ECHO "$predeps_FC" | $SED "$delay_single_quote_subst"`' postdeps_FC='`$ECHO "$postdeps_FC" | $SED "$delay_single_quote_subst"`' compiler_lib_search_path_FC='`$ECHO "$compiler_lib_search_path_FC" | $SED "$delay_single_quote_subst"`' LTCC='$LTCC' LTCFLAGS='$LTCFLAGS' compiler='$compiler_DEFAULT' # A function that is used when there is no print builtin or printf. func_fallback_echo () { eval 'cat <<_LTECHO_EOF \$1 _LTECHO_EOF' } # Quote evaled strings. for var in SHELL \ ECHO \ PATH_SEPARATOR \ SED \ GREP \ EGREP \ FGREP \ LD \ NM \ LN_S \ lt_SP2NL \ lt_NL2SP \ reload_flag \ OBJDUMP \ deplibs_check_method \ file_magic_cmd \ file_magic_glob \ want_nocaseglob \ DLLTOOL \ sharedlib_from_linklib_cmd \ AR \ AR_FLAGS \ archiver_list_spec \ STRIP \ RANLIB \ CC \ CFLAGS \ compiler \ lt_cv_sys_global_symbol_pipe \ lt_cv_sys_global_symbol_to_cdecl \ lt_cv_sys_global_symbol_to_import \ lt_cv_sys_global_symbol_to_c_name_address \ lt_cv_sys_global_symbol_to_c_name_address_lib_prefix \ lt_cv_nm_interface \ nm_file_list_spec \ lt_cv_truncate_bin \ lt_prog_compiler_no_builtin_flag \ lt_prog_compiler_pic \ lt_prog_compiler_wl \ lt_prog_compiler_static \ lt_cv_prog_compiler_c_o \ need_locks \ MANIFEST_TOOL \ DSYMUTIL \ NMEDIT \ LIPO \ OTOOL \ OTOOL64 \ shrext_cmds \ export_dynamic_flag_spec \ whole_archive_flag_spec \ compiler_needs_object \ with_gnu_ld \ allow_undefined_flag \ no_undefined_flag \ hardcode_libdir_flag_spec \ hardcode_libdir_separator \ exclude_expsyms \ include_expsyms \ file_list_spec \ variables_saved_for_relink \ libname_spec \ library_names_spec \ soname_spec \ install_override_mode \ finish_eval \ old_striplib \ striplib \ compiler_lib_search_dirs \ predep_objects \ postdep_objects \ predeps \ postdeps \ compiler_lib_search_path \ LD_FC \ reload_flag_FC \ compiler_FC \ lt_prog_compiler_no_builtin_flag_FC \ lt_prog_compiler_pic_FC \ lt_prog_compiler_wl_FC \ lt_prog_compiler_static_FC \ lt_cv_prog_compiler_c_o_FC \ export_dynamic_flag_spec_FC \ whole_archive_flag_spec_FC \ compiler_needs_object_FC \ with_gnu_ld_FC \ allow_undefined_flag_FC \ no_undefined_flag_FC \ hardcode_libdir_flag_spec_FC \ hardcode_libdir_separator_FC \ exclude_expsyms_FC \ include_expsyms_FC \ file_list_spec_FC \ compiler_lib_search_dirs_FC \ predep_objects_FC \ postdep_objects_FC \ predeps_FC \ postdeps_FC \ compiler_lib_search_path_FC; do case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in *[\\\\\\\`\\"\\\$]*) eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" ## exclude from sc_prohibit_nested_quotes ;; *) eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" ;; esac done # Double-quote double-evaled strings. for var in reload_cmds \ old_postinstall_cmds \ old_postuninstall_cmds \ old_archive_cmds \ extract_expsyms_cmds \ old_archive_from_new_cmds \ old_archive_from_expsyms_cmds \ archive_cmds \ archive_expsym_cmds \ module_cmds \ module_expsym_cmds \ export_symbols_cmds \ prelink_cmds \ postlink_cmds \ postinstall_cmds \ postuninstall_cmds \ finish_cmds \ sys_lib_search_path_spec \ configure_time_dlsearch_path \ configure_time_lt_sys_library_path \ reload_cmds_FC \ old_archive_cmds_FC \ old_archive_from_new_cmds_FC \ old_archive_from_expsyms_cmds_FC \ archive_cmds_FC \ archive_expsym_cmds_FC \ module_cmds_FC \ module_expsym_cmds_FC \ export_symbols_cmds_FC \ prelink_cmds_FC \ postlink_cmds_FC; do case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in *[\\\\\\\`\\"\\\$]*) eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" ## exclude from sc_prohibit_nested_quotes ;; *) eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" ;; esac done ac_aux_dir='$ac_aux_dir' # See if we are running on zsh, and set the options that allow our # commands through without removal of \ escapes INIT. if test -n "\${ZSH_VERSION+set}"; then setopt NO_GLOB_SUBST fi PACKAGE='$PACKAGE' VERSION='$VERSION' RM='$RM' ofile='$ofile' _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # Handling of arguments. for ac_config_target in $ac_config_targets do case $ac_config_target in "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; "config.h") CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;; "libtool") CONFIG_COMMANDS="$CONFIG_COMMANDS libtool" ;; "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; "src/Makefile") CONFIG_FILES="$CONFIG_FILES src/Makefile" ;; "src/cpgplot.pc") CONFIG_FILES="$CONFIG_FILES src/cpgplot.pc" ;; "src/giza.pc") CONFIG_FILES="$CONFIG_FILES src/giza.pc" ;; "src/pgplot.pc") CONFIG_FILES="$CONFIG_FILES src/pgplot.pc" ;; "src/giza-version.h") CONFIG_FILES="$CONFIG_FILES src/giza-version.h" ;; "test/Makefile") CONFIG_FILES="$CONFIG_FILES test/Makefile" ;; "test/C/Makefile") CONFIG_FILES="$CONFIG_FILES test/C/Makefile" ;; "test/F90/Makefile") CONFIG_FILES="$CONFIG_FILES test/F90/Makefile" ;; *) as_fn_error $? "invalid argument: '$ac_config_target'" "$LINENO" 5;; esac done # If the user did not use the arguments to specify the items to instantiate, # then the envvar interface is used. Set only those that are not. # We use the long form for the default assignment because of an extremely # bizarre bug on SunOS 4.1.3. if $ac_need_defaults; then test ${CONFIG_FILES+y} || CONFIG_FILES=$config_files test ${CONFIG_HEADERS+y} || CONFIG_HEADERS=$config_headers test ${CONFIG_COMMANDS+y} || CONFIG_COMMANDS=$config_commands fi # Have a temporary directory for convenience. Make it in the build tree # simply because there is no reason against having it here, and in addition, # creating and moving files from /tmp can sometimes cause problems. # Hook for its removal unless debugging. # Note that there is a small window in which the directory will not be cleaned: # after its creation but before its name has been assigned to '$tmp'. $debug || { tmp= ac_tmp= trap 'exit_status=$? : "${ac_tmp:=$tmp}" { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status ' 0 trap 'as_fn_exit 1' 1 2 13 15 } # Create a (secure) tmp directory for tmp files. { tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && test -d "$tmp" } || { tmp=./conf$$-$RANDOM (umask 077 && mkdir "$tmp") } || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5 ac_tmp=$tmp # Set up the scripts for CONFIG_FILES section. # No need to generate them if there are no CONFIG_FILES. # This happens for instance with './config.status config.h'. if test -n "$CONFIG_FILES"; then ac_cr=`echo X | tr X '\015'` # On cygwin, bash can eat \r inside `` if the user requested igncr. # But we know of no other shell where ac_cr would be empty at this # point, so we can use a bashism as a fallback. if test "x$ac_cr" = x; then eval ac_cr=\$\'\\r\' fi ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' /dev/null` if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then ac_cs_awk_cr='\\r' else ac_cs_awk_cr=$ac_cr fi echo 'BEGIN {' >"$ac_tmp/subs1.awk" && _ACEOF { echo "cat >conf$$subs.awk <<_ACEOF" && echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' && echo "_ACEOF" } >conf$$subs.sh || as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'` ac_delim='%!_!# ' for ac_last_try in false false false false false :; do . ./conf$$subs.sh || as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X` if test $ac_delim_n = $ac_delim_num; then break elif $ac_last_try; then as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 else ac_delim="$ac_delim!$ac_delim _$ac_delim!! " fi done rm -f conf$$subs.sh cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK && _ACEOF sed -n ' h s/^/S["/; s/!.*/"]=/ p g s/^[^!]*!// :repl t repl s/'"$ac_delim"'$// t delim :nl h s/\(.\{148\}\)..*/\1/ t more1 s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/ p n b repl :more1 s/["\\]/\\&/g; s/^/"/; s/$/"\\/ p g s/.\{148\}// t nl :delim h s/\(.\{148\}\)..*/\1/ t more2 s/["\\]/\\&/g; s/^/"/; s/$/"/ p b :more2 s/["\\]/\\&/g; s/^/"/; s/$/"\\/ p g s/.\{148\}// t delim ' >$CONFIG_STATUS || ac_write_fail=1 rm -f conf$$subs.awk cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 _ACAWK cat >>"\$ac_tmp/subs1.awk" <<_ACAWK && for (key in S) S_is_set[key] = 1 FS = "" } { line = $ 0 nfields = split(line, field, "@") substed = 0 len = length(field[1]) for (i = 2; i < nfields; i++) { key = field[i] keylen = length(key) if (S_is_set[key]) { value = S[key] line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) len += length(value) + length(field[++i]) substed = 1 } else len += 1 + keylen } print line } _ACAWK _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" else cat fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \ || as_fn_error $? "could not setup config files machinery" "$LINENO" 5 _ACEOF # VPATH may cause trouble with some makes, so we remove sole $(srcdir), # ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and # trailing colons and then remove the whole line if VPATH becomes empty # (actually we leave an empty line to preserve line numbers). if test "x$srcdir" = x.; then ac_vpsub='/^[ ]*VPATH[ ]*=[ ]*/{ h s/// s/^/:/ s/[ ]*$/:/ s/:\$(srcdir):/:/g s/:\${srcdir}:/:/g s/:@srcdir@:/:/g s/^:*// s/:*$// x s/\(=[ ]*\).*/\1/ G s/\n// s/^[^=]*=[ ]*$// }' fi cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 fi # test -n "$CONFIG_FILES" # Set up the scripts for CONFIG_HEADERS section. # No need to generate them if there are no CONFIG_HEADERS. # This happens for instance with './config.status Makefile'. if test -n "$CONFIG_HEADERS"; then cat >"$ac_tmp/defines.awk" <<\_ACAWK || BEGIN { _ACEOF # Transform confdefs.h into an awk script 'defines.awk', embedded as # here-document in config.status, that substitutes the proper values into # config.h.in to produce config.h. # Create a delimiter string that does not exist in confdefs.h, to ease # handling of long lines. ac_delim='%!_!# ' for ac_last_try in false false :; do ac_tt=`sed -n "/$ac_delim/p" confdefs.h` if test -z "$ac_tt"; then break elif $ac_last_try; then as_fn_error $? "could not make $CONFIG_HEADERS" "$LINENO" 5 else ac_delim="$ac_delim!$ac_delim _$ac_delim!! " fi done # For the awk script, D is an array of macro values keyed by name, # likewise P contains macro parameters if any. Preserve backslash # newline sequences. ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]* sed -n ' s/.\{148\}/&'"$ac_delim"'/g t rset :rset s/^[ ]*#[ ]*define[ ][ ]*/ / t def d :def s/\\$// t bsnl s/["\\]/\\&/g s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ D["\1"]=" \3"/p s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2"/p d :bsnl s/["\\]/\\&/g s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ D["\1"]=" \3\\\\\\n"\\/p t cont s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2\\\\\\n"\\/p t cont d :cont n s/.\{148\}/&'"$ac_delim"'/g t clear :clear s/\\$// t bsnlc s/["\\]/\\&/g; s/^/"/; s/$/"/p d :bsnlc s/["\\]/\\&/g; s/^/"/; s/$/\\\\\\n"\\/p b cont ' >$CONFIG_STATUS || ac_write_fail=1 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 for (key in D) D_is_set[key] = 1 FS = "" } /^[\t ]*#[\t ]*(define|undef)[\t ]+$ac_word_re([\t (]|\$)/ { line = \$ 0 split(line, arg, " ") if (arg[1] == "#") { defundef = arg[2] mac1 = arg[3] } else { defundef = substr(arg[1], 2) mac1 = arg[2] } split(mac1, mac2, "(") #) macro = mac2[1] prefix = substr(line, 1, index(line, defundef) - 1) if (D_is_set[macro]) { # Preserve the white space surrounding the "#". print prefix "define", macro P[macro] D[macro] next } else { # Replace #undef with comments. This is necessary, for example, # in the case of _POSIX_SOURCE, which is predefined and required # on some systems where configure will not decide to define it. if (defundef == "undef") { print "/*", prefix defundef, macro, "*/" next } } } { print } _ACAWK _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 as_fn_error $? "could not setup config headers machinery" "$LINENO" 5 fi # test -n "$CONFIG_HEADERS" eval set X " :F $CONFIG_FILES :H $CONFIG_HEADERS :C $CONFIG_COMMANDS" shift for ac_tag do case $ac_tag in :[FHLC]) ac_mode=$ac_tag; continue;; esac case $ac_mode$ac_tag in :[FHL]*:*);; :L* | :C*:*) as_fn_error $? "invalid tag '$ac_tag'" "$LINENO" 5;; :[FH]-) ac_tag=-:-;; :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; esac ac_save_IFS=$IFS IFS=: set x $ac_tag IFS=$ac_save_IFS shift ac_file=$1 shift case $ac_mode in :L) ac_source=$1;; :[FH]) ac_file_inputs= for ac_f do case $ac_f in -) ac_f="$ac_tmp/stdin";; *) # Look for the file first in the build tree, then in the source tree # (if the path is not absolute). The absolute path cannot be DOS-style, # because $ac_f cannot contain ':'. test -f "$ac_f" || case $ac_f in [\\/$]*) false;; *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; esac || as_fn_error 1 "cannot find input file: '$ac_f'" "$LINENO" 5;; esac case $ac_f in *\'*) ac_f=`printf "%s\n" "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac as_fn_append ac_file_inputs " '$ac_f'" done # Let's still pretend it is 'configure' which instantiates (i.e., don't # use $as_me), people would be surprised to read: # /* config.h. Generated by config.status. */ configure_input='Generated from '` printf "%s\n" "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' `' by configure.' if test x"$ac_file" != x-; then configure_input="$ac_file. $configure_input" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 printf "%s\n" "$as_me: creating $ac_file" >&6;} fi # Neutralize special characters interpreted by sed in replacement strings. case $configure_input in #( *\&* | *\|* | *\\* ) ac_sed_conf_input=`printf "%s\n" "$configure_input" | sed 's/[\\\\&|]/\\\\&/g'`;; #( *) ac_sed_conf_input=$configure_input;; esac case $ac_tag in *:-:* | *:-) cat >"$ac_tmp/stdin" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; esac ;; esac ac_dir=`$as_dirname -- "$ac_file" || $as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$ac_file" : 'X\(//\)[^/]' \| \ X"$ac_file" : 'X\(//\)$' \| \ X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || printf "%s\n" X"$ac_file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` as_dir="$ac_dir"; as_fn_mkdir_p ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_dir_suffix=/`printf "%s\n" "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`printf "%s\n" "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; esac ;; esac ac_abs_top_builddir=$ac_pwd ac_abs_builddir=$ac_pwd$ac_dir_suffix # for backward compatibility: ac_top_builddir=$ac_top_build_prefix case $srcdir in .) # We are building in place. ac_srcdir=. ac_top_srcdir=$ac_top_builddir_sub ac_abs_top_srcdir=$ac_pwd ;; [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ac_abs_top_srcdir=$srcdir ;; *) # Relative name. ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_build_prefix$srcdir ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix case $ac_mode in :F) # # CONFIG_FILE # case $INSTALL in [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; esac ac_MKDIR_P=$MKDIR_P case $MKDIR_P in [\\/$]* | ?:[\\/]* ) ;; */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;; esac _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # If the template does not know about datarootdir, expand it. # FIXME: This hack should be removed a few years after 2.60. ac_datarootdir_hack=; ac_datarootdir_seen= ac_sed_dataroot=' /datarootdir/ { p q } /@datadir@/p /@docdir@/p /@infodir@/p /@localedir@/p /@mandir@/p' case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in *datarootdir*) ac_datarootdir_seen=yes;; *@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 printf "%s\n" "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_datarootdir_hack=' s&@datadir@&$datadir&g s&@docdir@&$docdir&g s&@infodir@&$infodir&g s&@localedir@&$localedir&g s&@mandir@&$mandir&g s&\\\${datarootdir}&$datarootdir&g' ;; esac _ACEOF # Neutralize VPATH when '$srcdir' = '.'. # Shell code in configure.ac might set extrasub. # FIXME: do we really want to maintain this feature? cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_sed_extra="$ac_vpsub $extrasub _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 :t /@[a-zA-Z_][a-zA-Z_0-9]*@/!b s|@configure_input@|$ac_sed_conf_input|;t t s&@top_builddir@&$ac_top_builddir_sub&;t t s&@top_build_prefix@&$ac_top_build_prefix&;t t s&@srcdir@&$ac_srcdir&;t t s&@abs_srcdir@&$ac_abs_srcdir&;t t s&@top_srcdir@&$ac_top_srcdir&;t t s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t s&@builddir@&$ac_builddir&;t t s&@abs_builddir@&$ac_abs_builddir&;t t s&@abs_top_builddir@&$ac_abs_top_builddir&;t t s&@INSTALL@&$ac_INSTALL&;t t s&@MKDIR_P@&$ac_MKDIR_P&;t t $ac_datarootdir_hack " eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \ >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5 test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } && { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \ "$ac_tmp/out"`; test -z "$ac_out"; } && { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable 'datarootdir' which seems to be undefined. Please make sure it is defined" >&5 printf "%s\n" "$as_me: WARNING: $ac_file contains a reference to the variable 'datarootdir' which seems to be undefined. Please make sure it is defined" >&2;} rm -f "$ac_tmp/stdin" case $ac_file in -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";; *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";; esac \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; :H) # # CONFIG_HEADER # if test x"$ac_file" != x-; then { printf "%s\n" "/* $configure_input */" >&1 \ && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" } >"$ac_tmp/config.h" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 if diff "$ac_file" "$ac_tmp/config.h" >/dev/null 2>&1; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5 printf "%s\n" "$as_me: $ac_file is unchanged" >&6;} else rm -f "$ac_file" mv "$ac_tmp/config.h" "$ac_file" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 fi else printf "%s\n" "/* $configure_input */" >&1 \ && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" \ || as_fn_error $? "could not create -" "$LINENO" 5 fi # Compute "$ac_file"'s index in $config_headers. _am_arg="$ac_file" _am_stamp_count=1 for _am_header in $config_headers :; do case $_am_header in $_am_arg | $_am_arg:* ) break ;; * ) _am_stamp_count=`expr $_am_stamp_count + 1` ;; esac done echo "timestamp for $_am_arg" >`$as_dirname -- "$_am_arg" || $as_expr X"$_am_arg" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$_am_arg" : 'X\(//\)[^/]' \| \ X"$_am_arg" : 'X\(//\)$' \| \ X"$_am_arg" : 'X\(/\)' \| . 2>/dev/null || printf "%s\n" X"$_am_arg" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'`/stamp-h$_am_stamp_count ;; :C) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5 printf "%s\n" "$as_me: executing $ac_file commands" >&6;} ;; esac case $ac_file$ac_mode in "depfiles":C) test x"$AMDEP_TRUE" != x"" || { # Older Autoconf quotes --file arguments for eval, but not when files # are listed without --file. Let's play safe and only enable the eval # if we detect the quoting. # TODO: see whether this extra hack can be removed once we start # requiring Autoconf 2.70 or later. case $CONFIG_FILES in #( *\'*) : eval set x "$CONFIG_FILES" ;; #( *) : set x $CONFIG_FILES ;; #( *) : ;; esac shift # Used to flag and report bootstrapping failures. am_rc=0 for am_mf do # Strip MF so we end up with the name of the file. am_mf=`printf "%s\n" "$am_mf" | sed -e 's/:.*$//'` # Check whether this is an Automake generated Makefile which includes # dependency-tracking related rules and includes. # Grep'ing the whole file directly is not great: AIX grep has a line # limit of 2048, but all sed's we know have understand at least 4000. sed -n 's,^am--depfiles:.*,X,p' "$am_mf" | grep X >/dev/null 2>&1 \ || continue am_dirpart=`$as_dirname -- "$am_mf" || $as_expr X"$am_mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$am_mf" : 'X\(//\)[^/]' \| \ X"$am_mf" : 'X\(//\)$' \| \ X"$am_mf" : 'X\(/\)' \| . 2>/dev/null || printf "%s\n" X"$am_mf" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` am_filepart=`$as_basename -- "$am_mf" || $as_expr X/"$am_mf" : '.*/\([^/][^/]*\)/*$' \| \ X"$am_mf" : 'X\(//\)$' \| \ X"$am_mf" : 'X\(/\)' \| . 2>/dev/null || printf "%s\n" X/"$am_mf" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` { echo "$as_me:$LINENO: cd "$am_dirpart" \ && sed -e '/# am--include-marker/d' "$am_filepart" \ | $MAKE -f - am--depfiles" >&5 (cd "$am_dirpart" \ && sed -e '/# am--include-marker/d' "$am_filepart" \ | $MAKE -f - am--depfiles) >&5 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } || am_rc=$? done if test $am_rc -ne 0; then { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} as_fn_error $? "Something went wrong bootstrapping makefile fragments for automatic dependency tracking. If GNU make was not used, consider re-running the configure script with MAKE=\"gmake\" (or whatever is necessary). You can also try re-running configure with the '--disable-dependency-tracking' option to at least be able to build the package (albeit without support for automatic dependency tracking). See 'config.log' for more details" "$LINENO" 5; } fi { am_dirpart=; unset am_dirpart;} { am_filepart=; unset am_filepart;} { am_mf=; unset am_mf;} { am_rc=; unset am_rc;} rm -f conftest-deps.mk } ;; "libtool":C) # See if we are running on zsh, and set the options that allow our # commands through without removal of \ escapes. if test -n "${ZSH_VERSION+set}"; then setopt NO_GLOB_SUBST fi cfgfile=${ofile}T trap "$RM \"$cfgfile\"; exit 1" 1 2 15 $RM "$cfgfile" cat <<_LT_EOF >> "$cfgfile" #! $SHELL # Generated automatically by $as_me ($PACKAGE) $VERSION # Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: # NOTE: Changes made to this file will be lost: look at ltmain.sh. # Provide generalized library-building support services. # Written by Gordon Matzigkeit, 1996 # Copyright (C) 2014 Free Software Foundation, Inc. # This is free software; see the source for copying conditions. There is NO # warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. # GNU Libtool is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of of the License, or # (at your option) any later version. # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program or library that is built # using GNU Libtool, you may include this file under the same # distribution terms that you use for the rest of that program. # # GNU Libtool is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . # The names of the tagged configurations supported by this script. available_tags='FC ' # Configured defaults for sys_lib_dlsearch_path munging. : \${LT_SYS_LIBRARY_PATH="$configure_time_lt_sys_library_path"} # ### BEGIN LIBTOOL CONFIG # Which release of libtool.m4 was used? macro_version=$macro_version macro_revision=$macro_revision # Whether or not to build shared libraries. build_libtool_libs=$enable_shared # Whether or not to build static libraries. build_old_libs=$enable_static # What type of objects to build. pic_mode=$pic_mode # Whether or not to optimize for fast installation. fast_install=$enable_fast_install # Shared archive member basename,for filename based shared library versioning on AIX. shared_archive_member_spec=$shared_archive_member_spec # Shell to use when invoking shell scripts. SHELL=$lt_SHELL # An echo program that protects backslashes. ECHO=$lt_ECHO # The PATH separator for the build system. PATH_SEPARATOR=$lt_PATH_SEPARATOR # The host system. host_alias=$host_alias host=$host host_os=$host_os # The build system. build_alias=$build_alias build=$build build_os=$build_os # A sed program that does not truncate output. SED=$lt_SED # Sed that helps us avoid accidentally triggering echo(1) options like -n. Xsed="\$SED -e 1s/^X//" # A grep program that handles long lines. GREP=$lt_GREP # An ERE matcher. EGREP=$lt_EGREP # A literal string matcher. FGREP=$lt_FGREP # A BSD- or MS-compatible name lister. NM=$lt_NM # Whether we need soft or hard links. LN_S=$lt_LN_S # What is the maximum length of a command? max_cmd_len=$max_cmd_len # Object file suffix (normally "o"). objext=$ac_objext # Executable file suffix (normally ""). exeext=$exeext # whether the shell understands "unset". lt_unset=$lt_unset # turn spaces into newlines. SP2NL=$lt_lt_SP2NL # turn newlines into spaces. NL2SP=$lt_lt_NL2SP # convert \$build file names to \$host format. to_host_file_cmd=$lt_cv_to_host_file_cmd # convert \$build files to toolchain format. to_tool_file_cmd=$lt_cv_to_tool_file_cmd # An object symbol dumper. OBJDUMP=$lt_OBJDUMP # Method to check whether dependent libraries are shared objects. deplibs_check_method=$lt_deplibs_check_method # Command to use when deplibs_check_method = "file_magic". file_magic_cmd=$lt_file_magic_cmd # How to find potential files when deplibs_check_method = "file_magic". file_magic_glob=$lt_file_magic_glob # Find potential files using nocaseglob when deplibs_check_method = "file_magic". want_nocaseglob=$lt_want_nocaseglob # DLL creation program. DLLTOOL=$lt_DLLTOOL # Command to associate shared and link libraries. sharedlib_from_linklib_cmd=$lt_sharedlib_from_linklib_cmd # The archiver. AR=$lt_AR # Flags to create an archive. AR_FLAGS=$lt_AR_FLAGS # How to feed a file listing to the archiver. archiver_list_spec=$lt_archiver_list_spec # A symbol stripping program. STRIP=$lt_STRIP # Commands used to install an old-style archive. RANLIB=$lt_RANLIB old_postinstall_cmds=$lt_old_postinstall_cmds old_postuninstall_cmds=$lt_old_postuninstall_cmds # Whether to use a lock for old archive extraction. lock_old_archive_extraction=$lock_old_archive_extraction # A C compiler. LTCC=$lt_CC # LTCC compiler flags. LTCFLAGS=$lt_CFLAGS # Take the output of nm and produce a listing of raw symbols and C names. global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe # Transform the output of nm in a proper C declaration. global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl # Transform the output of nm into a list of symbols to manually relocate. global_symbol_to_import=$lt_lt_cv_sys_global_symbol_to_import # Transform the output of nm in a C name address pair. global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address # Transform the output of nm in a C name address pair when lib prefix is needed. global_symbol_to_c_name_address_lib_prefix=$lt_lt_cv_sys_global_symbol_to_c_name_address_lib_prefix # The name lister interface. nm_interface=$lt_lt_cv_nm_interface # Specify filename containing input files for \$NM. nm_file_list_spec=$lt_nm_file_list_spec # The root where to search for dependent libraries,and where our libraries should be installed. lt_sysroot=$lt_sysroot # Command to truncate a binary pipe. lt_truncate_bin=$lt_lt_cv_truncate_bin # The name of the directory that contains temporary libtool files. objdir=$objdir # Used to examine libraries when file_magic_cmd begins with "file". MAGIC_CMD=$MAGIC_CMD # Must we lock files when doing compilation? need_locks=$lt_need_locks # Manifest tool. MANIFEST_TOOL=$lt_MANIFEST_TOOL # Tool to manipulate archived DWARF debug symbol files on Mac OS X. DSYMUTIL=$lt_DSYMUTIL # Tool to change global to local symbols on Mac OS X. NMEDIT=$lt_NMEDIT # Tool to manipulate fat objects and archives on Mac OS X. LIPO=$lt_LIPO # ldd/readelf like tool for Mach-O binaries on Mac OS X. OTOOL=$lt_OTOOL # ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4. OTOOL64=$lt_OTOOL64 # Old archive suffix (normally "a"). libext=$libext # Shared library suffix (normally ".so"). shrext_cmds=$lt_shrext_cmds # The commands to extract the exported symbol list from a shared archive. extract_expsyms_cmds=$lt_extract_expsyms_cmds # Variables whose values should be saved in libtool wrapper scripts and # restored at link time. variables_saved_for_relink=$lt_variables_saved_for_relink # Do we need the "lib" prefix for modules? need_lib_prefix=$need_lib_prefix # Do we need a version for libraries? need_version=$need_version # Library versioning type. version_type=$version_type # Shared library runtime path variable. runpath_var=$runpath_var # Shared library path variable. shlibpath_var=$shlibpath_var # Is shlibpath searched before the hard-coded library search path? shlibpath_overrides_runpath=$shlibpath_overrides_runpath # Format of library name prefix. libname_spec=$lt_libname_spec # List of archive names. First name is the real one, the rest are links. # The last name is the one that the linker finds with -lNAME library_names_spec=$lt_library_names_spec # The coded name of the library, if different from the real name. soname_spec=$lt_soname_spec # Permission mode override for installation of shared libraries. install_override_mode=$lt_install_override_mode # Command to use after installation of a shared archive. postinstall_cmds=$lt_postinstall_cmds # Command to use after uninstallation of a shared archive. postuninstall_cmds=$lt_postuninstall_cmds # Commands used to finish a libtool library installation in a directory. finish_cmds=$lt_finish_cmds # As "finish_cmds", except a single script fragment to be evaled but # not shown. finish_eval=$lt_finish_eval # Whether we should hardcode library paths into libraries. hardcode_into_libs=$hardcode_into_libs # Compile-time system search path for libraries. sys_lib_search_path_spec=$lt_sys_lib_search_path_spec # Detected run-time system search path for libraries. sys_lib_dlsearch_path_spec=$lt_configure_time_dlsearch_path # Explicit LT_SYS_LIBRARY_PATH set during ./configure time. configure_time_lt_sys_library_path=$lt_configure_time_lt_sys_library_path # Whether dlopen is supported. dlopen_support=$enable_dlopen # Whether dlopen of programs is supported. dlopen_self=$enable_dlopen_self # Whether dlopen of statically linked programs is supported. dlopen_self_static=$enable_dlopen_self_static # Commands to strip libraries. old_striplib=$lt_old_striplib striplib=$lt_striplib # The linker used to build libraries. LD=$lt_LD # How to create reloadable object files. reload_flag=$lt_reload_flag reload_cmds=$lt_reload_cmds # Commands used to build an old-style archive. old_archive_cmds=$lt_old_archive_cmds # A language specific compiler. CC=$lt_compiler # Is the compiler the GNU compiler? with_gcc=$GCC # Compiler flag to turn off builtin functions. no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag # Additional compiler flags for building library objects. pic_flag=$lt_lt_prog_compiler_pic # How to pass a linker flag through the compiler. wl=$lt_lt_prog_compiler_wl # Compiler flag to prevent dynamic linking. link_static_flag=$lt_lt_prog_compiler_static # Does compiler simultaneously support -c and -o options? compiler_c_o=$lt_lt_cv_prog_compiler_c_o # Whether or not to add -lc for building shared libraries. build_libtool_need_lc=$archive_cmds_need_lc # Whether or not to disallow shared libs when runtime libs are static. allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes # Compiler flag to allow reflexive dlopens. export_dynamic_flag_spec=$lt_export_dynamic_flag_spec # Compiler flag to generate shared objects directly from archives. whole_archive_flag_spec=$lt_whole_archive_flag_spec # Whether the compiler copes with passing no objects directly. compiler_needs_object=$lt_compiler_needs_object # Create an old-style archive from a shared archive. old_archive_from_new_cmds=$lt_old_archive_from_new_cmds # Create a temporary old-style archive to link instead of a shared archive. old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds # Commands used to build a shared archive. archive_cmds=$lt_archive_cmds archive_expsym_cmds=$lt_archive_expsym_cmds # Commands used to build a loadable module if different from building # a shared archive. module_cmds=$lt_module_cmds module_expsym_cmds=$lt_module_expsym_cmds # Whether we are building with GNU ld or not. with_gnu_ld=$lt_with_gnu_ld # Flag that allows shared libraries with undefined symbols to be built. allow_undefined_flag=$lt_allow_undefined_flag # Flag that enforces no undefined symbols. no_undefined_flag=$lt_no_undefined_flag # Flag to hardcode \$libdir into a binary during linking. # This must work even if \$libdir does not exist hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec # Whether we need a single "-rpath" flag with a separated argument. hardcode_libdir_separator=$lt_hardcode_libdir_separator # Set to "yes" if using DIR/libNAME\$shared_ext during linking hardcodes # DIR into the resulting binary. hardcode_direct=$hardcode_direct # Set to "yes" if using DIR/libNAME\$shared_ext during linking hardcodes # DIR into the resulting binary and the resulting library dependency is # "absolute",i.e impossible to change by setting \$shlibpath_var if the # library is relocated. hardcode_direct_absolute=$hardcode_direct_absolute # Set to "yes" if using the -LDIR flag during linking hardcodes DIR # into the resulting binary. hardcode_minus_L=$hardcode_minus_L # Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR # into the resulting binary. hardcode_shlibpath_var=$hardcode_shlibpath_var # Set to "yes" if building a shared library automatically hardcodes DIR # into the library and all subsequent libraries and executables linked # against it. hardcode_automatic=$hardcode_automatic # Set to yes if linker adds runtime paths of dependent libraries # to runtime path list. inherit_rpath=$inherit_rpath # Whether libtool must link a program against all its dependency libraries. link_all_deplibs=$link_all_deplibs # Set to "yes" if exported symbols are required. always_export_symbols=$always_export_symbols # The commands to list exported symbols. export_symbols_cmds=$lt_export_symbols_cmds # Symbols that should not be listed in the preloaded symbols. exclude_expsyms=$lt_exclude_expsyms # Symbols that must always be exported. include_expsyms=$lt_include_expsyms # Commands necessary for linking programs (against libraries) with templates. prelink_cmds=$lt_prelink_cmds # Commands necessary for finishing linking programs. postlink_cmds=$lt_postlink_cmds # Specify filename containing input files. file_list_spec=$lt_file_list_spec # How to hardcode a shared library path into an executable. hardcode_action=$hardcode_action # The directories searched by this compiler when creating a shared library. compiler_lib_search_dirs=$lt_compiler_lib_search_dirs # Dependencies to place before and after the objects being linked to # create a shared library. predep_objects=$lt_predep_objects postdep_objects=$lt_postdep_objects predeps=$lt_predeps postdeps=$lt_postdeps # The library search path used internally by the compiler when linking # a shared library. compiler_lib_search_path=$lt_compiler_lib_search_path # ### END LIBTOOL CONFIG _LT_EOF cat <<'_LT_EOF' >> "$cfgfile" # ### BEGIN FUNCTIONS SHARED WITH CONFIGURE # func_munge_path_list VARIABLE PATH # ----------------------------------- # VARIABLE is name of variable containing _space_ separated list of # directories to be munged by the contents of PATH, which is string # having a format: # "DIR[:DIR]:" # string "DIR[ DIR]" will be prepended to VARIABLE # ":DIR[:DIR]" # string "DIR[ DIR]" will be appended to VARIABLE # "DIRP[:DIRP]::[DIRA:]DIRA" # string "DIRP[ DIRP]" will be prepended to VARIABLE and string # "DIRA[ DIRA]" will be appended to VARIABLE # "DIR[:DIR]" # VARIABLE will be replaced by "DIR[ DIR]" func_munge_path_list () { case x$2 in x) ;; *:) eval $1=\"`$ECHO $2 | $SED 's/:/ /g'` \$$1\" ;; x:*) eval $1=\"\$$1 `$ECHO $2 | $SED 's/:/ /g'`\" ;; *::*) eval $1=\"\$$1\ `$ECHO $2 | $SED -e 's/.*:://' -e 's/:/ /g'`\" eval $1=\"`$ECHO $2 | $SED -e 's/::.*//' -e 's/:/ /g'`\ \$$1\" ;; *) eval $1=\"`$ECHO $2 | $SED 's/:/ /g'`\" ;; esac } # Calculate cc_basename. Skip known compiler wrappers and cross-prefix. func_cc_basename () { for cc_temp in $*""; do case $cc_temp in compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; \-*) ;; *) break;; esac done func_cc_basename_result=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` } # ### END FUNCTIONS SHARED WITH CONFIGURE _LT_EOF case $host_os in aix3*) cat <<\_LT_EOF >> "$cfgfile" # AIX sometimes has problems with the GCC collect2 program. For some # reason, if we set the COLLECT_NAMES environment variable, the problems # vanish in a puff of smoke. if test set != "${COLLECT_NAMES+set}"; then COLLECT_NAMES= export COLLECT_NAMES fi _LT_EOF ;; esac ltmain=$ac_aux_dir/ltmain.sh # We use sed instead of cat because bash on DJGPP gets confused if # if finds mixed CR/LF and LF-only lines. Since sed operates in # text mode, it properly converts lines to CR/LF. This bash problem # is reportedly fixed, but why not run on old versions too? sed '$q' "$ltmain" >> "$cfgfile" \ || (rm -f "$cfgfile"; exit 1) mv -f "$cfgfile" "$ofile" || (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") chmod +x "$ofile" cat <<_LT_EOF >> "$ofile" # ### BEGIN LIBTOOL TAG CONFIG: FC # The linker used to build libraries. LD=$lt_LD_FC # How to create reloadable object files. reload_flag=$lt_reload_flag_FC reload_cmds=$lt_reload_cmds_FC # Commands used to build an old-style archive. old_archive_cmds=$lt_old_archive_cmds_FC # A language specific compiler. CC=$lt_compiler_FC # Is the compiler the GNU compiler? with_gcc=$GCC_FC # Compiler flag to turn off builtin functions. no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_FC # Additional compiler flags for building library objects. pic_flag=$lt_lt_prog_compiler_pic_FC # How to pass a linker flag through the compiler. wl=$lt_lt_prog_compiler_wl_FC # Compiler flag to prevent dynamic linking. link_static_flag=$lt_lt_prog_compiler_static_FC # Does compiler simultaneously support -c and -o options? compiler_c_o=$lt_lt_cv_prog_compiler_c_o_FC # Whether or not to add -lc for building shared libraries. build_libtool_need_lc=$archive_cmds_need_lc_FC # Whether or not to disallow shared libs when runtime libs are static. allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_FC # Compiler flag to allow reflexive dlopens. export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_FC # Compiler flag to generate shared objects directly from archives. whole_archive_flag_spec=$lt_whole_archive_flag_spec_FC # Whether the compiler copes with passing no objects directly. compiler_needs_object=$lt_compiler_needs_object_FC # Create an old-style archive from a shared archive. old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_FC # Create a temporary old-style archive to link instead of a shared archive. old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_FC # Commands used to build a shared archive. archive_cmds=$lt_archive_cmds_FC archive_expsym_cmds=$lt_archive_expsym_cmds_FC # Commands used to build a loadable module if different from building # a shared archive. module_cmds=$lt_module_cmds_FC module_expsym_cmds=$lt_module_expsym_cmds_FC # Whether we are building with GNU ld or not. with_gnu_ld=$lt_with_gnu_ld_FC # Flag that allows shared libraries with undefined symbols to be built. allow_undefined_flag=$lt_allow_undefined_flag_FC # Flag that enforces no undefined symbols. no_undefined_flag=$lt_no_undefined_flag_FC # Flag to hardcode \$libdir into a binary during linking. # This must work even if \$libdir does not exist hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_FC # Whether we need a single "-rpath" flag with a separated argument. hardcode_libdir_separator=$lt_hardcode_libdir_separator_FC # Set to "yes" if using DIR/libNAME\$shared_ext during linking hardcodes # DIR into the resulting binary. hardcode_direct=$hardcode_direct_FC # Set to "yes" if using DIR/libNAME\$shared_ext during linking hardcodes # DIR into the resulting binary and the resulting library dependency is # "absolute",i.e impossible to change by setting \$shlibpath_var if the # library is relocated. hardcode_direct_absolute=$hardcode_direct_absolute_FC # Set to "yes" if using the -LDIR flag during linking hardcodes DIR # into the resulting binary. hardcode_minus_L=$hardcode_minus_L_FC # Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR # into the resulting binary. hardcode_shlibpath_var=$hardcode_shlibpath_var_FC # Set to "yes" if building a shared library automatically hardcodes DIR # into the library and all subsequent libraries and executables linked # against it. hardcode_automatic=$hardcode_automatic_FC # Set to yes if linker adds runtime paths of dependent libraries # to runtime path list. inherit_rpath=$inherit_rpath_FC # Whether libtool must link a program against all its dependency libraries. link_all_deplibs=$link_all_deplibs_FC # Set to "yes" if exported symbols are required. always_export_symbols=$always_export_symbols_FC # The commands to list exported symbols. export_symbols_cmds=$lt_export_symbols_cmds_FC # Symbols that should not be listed in the preloaded symbols. exclude_expsyms=$lt_exclude_expsyms_FC # Symbols that must always be exported. include_expsyms=$lt_include_expsyms_FC # Commands necessary for linking programs (against libraries) with templates. prelink_cmds=$lt_prelink_cmds_FC # Commands necessary for finishing linking programs. postlink_cmds=$lt_postlink_cmds_FC # Specify filename containing input files. file_list_spec=$lt_file_list_spec_FC # How to hardcode a shared library path into an executable. hardcode_action=$hardcode_action_FC # The directories searched by this compiler when creating a shared library. compiler_lib_search_dirs=$lt_compiler_lib_search_dirs_FC # Dependencies to place before and after the objects being linked to # create a shared library. predep_objects=$lt_predep_objects_FC postdep_objects=$lt_postdep_objects_FC predeps=$lt_predeps_FC postdeps=$lt_postdeps_FC # The library search path used internally by the compiler when linking # a shared library. compiler_lib_search_path=$lt_compiler_lib_search_path_FC # ### END LIBTOOL TAG CONFIG: FC _LT_EOF ;; esac done # for ac_tag as_fn_exit 0 _ACEOF ac_clean_files=$ac_clean_files_save test $ac_write_fail = 0 || as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5 # configure is writing to config.log, and then calls config.status. # config.status does its own redirection, appending to config.log. # Unfortunately, on DOS this fails, as config.log is still kept open # by configure, so config.status won't be able to write to it; its # output is simply discarded. So we exec the FD to /dev/null, # effectively closing config.log, so it can be properly (re)opened and # appended to by config.status. When coming back to configure, we # need to make the FD available again. if test "$no_create" != yes; then ac_cs_success=: ac_config_status_args= test "$silent" = yes && ac_config_status_args="$ac_config_status_args --quiet" exec 5>/dev/null $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false exec 5>>config.log # Use ||, not &&, to avoid exiting from the if with $? = 1, which # would make configure fail if this is the last instruction. $ac_cs_success || as_fn_exit 1 fi if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 printf "%s\n" "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} fi giza-1.5.0/configure.ac000066400000000000000000000066441477367113400147640ustar00rootroot00000000000000AC_PREREQ(2.61) m4_define(giza_version_major,1) m4_define(giza_version_minor,5) m4_define(giza_version_micro,0) AC_INIT([giza], [giza_version_major.giza_version_minor.giza_version_micro], [daniel.price@monash.edu],[], [http://danieljprice.github.io/giza]) AC_CONFIG_AUX_DIR([build]) AM_INIT_AUTOMAKE([1.11 -Wall -Werror -Wno-extra-portability]) m4_ifdef([AM_SILENT_RULES],[AM_SILENT_RULES([yes])]) AC_CONFIG_MACRO_DIRS([m4]) AM_MAINTAINER_MODE([disable]) AC_PROG_CC AC_PROG_FC AC_CONFIG_HEADERS([config.h]) # # conditional on whether Fortran compiler found, # skip compilation of libpgplot.a otherwise # AM_CONDITIONAL([HAVE_FC], [test "x$FC" != "x"]) # # set giza version # AC_SUBST(GIZA_VERSION_MAJOR,giza_version_major) AC_SUBST(GIZA_VERSION_MINOR,giza_version_minor) AC_SUBST(GIZA_VERSION_MICRO,giza_version_micro) # # The following specify the interface version numbers for giza. # LT_CURRENT is the current interface number # LT_REVISION is the implementation number of the current interface # LT_AGE is the difference between the newest and oldest interface implemented # # Rules are: # 1) update LT_REVISION for every public giza release # 2) update LT_CURRENT if giza interface updated and set LT_REVISION to 0 # 3) increment LT_AGE if interface is backwards compatible # 4) set LT_AGE to 0 if interface is not backwards compatible # AC_SUBST(LT_CURRENT, 2) AC_SUBST(LT_REVISION, 0) AC_SUBST(LT_AGE, 0) LT_INIT([shared]) # # cairo and X11 libraries. Use pkg-config if available but provide fallback options if not (OS/X) # x11_libs="-L/usr/X11/lib -lX11" cairo_libs_osx="-L/usr/X11/lib -lcairo" cairo_cflags_osx="-I/usr/X11/include" ft_libs_osx="-L/usr/X11/lib -lfreetype" ft_cflags_osx="-I/usr/X11/include/freetype2/" fc_libs_osx="-L/usr/X11/lib -lfontconfig" fc_cflags_osx="-I/usr/X11/include/fontconfig/" # # for cairo have to be careful to return the /usr/X11/include not /usr/X11/include/cairo # because in the code we always write "include " not "include " # PKG_CHECK_MODULES([CAIRO], [cairo], [ CAIRO_INCLUDEDIR=`$PKG_CONFIG --variable=includedir cairo` CAIRO_LIBS=`$PKG_CONFIG --libs cairo` CAIRO_CFLAGS="-I$CAIRO_INCLUDEDIR" ], [ AC_SUBST(CAIRO_LIBS,$cairo_libs_osx) AC_SUBST(CAIRO_CFLAGS,$cairo_cflags_osx) ]) PKG_CHECK_MODULES([X11], [x11], [], [AC_SUBST(X11_LIBS,$x11_libs)]) PKG_CHECK_MODULES([FT], [freetype2], [], [AC_SUBST(FT_LIBS,$ft_libs_osx) AC_SUBST(FT_CFLAGS,$ft_cflags_osx)]) PKG_CHECK_MODULES([FC], [fontconfig], [], [AC_SUBST(FC_LIBS,$fc_libs_osx) AC_SUBST(FC_CFLAGS,$fc_cflags_osx)]) AC_CONFIG_FILES([ Makefile src/Makefile src/cpgplot.pc src/giza.pc src/pgplot.pc src/giza-version.h test/Makefile test/C/Makefile test/F90/Makefile ]) AC_MSG_NOTICE([====== Compilation flags being used ======]) AC_MSG_NOTICE([CFLAGS = $CFLAGS]) AC_MSG_NOTICE([CPPFLAGS = $CPPFLAGS]) AC_MSG_NOTICE([CAIRO_CFLAGS = $CAIRO_CFLAGS]) AC_MSG_NOTICE([CAIRO_LIBS = $CAIRO_LIBS]) AC_MSG_NOTICE([X11_CFLAGS = $X11_CFLAGS]) AC_MSG_NOTICE([X11_LIBS = $X11_LIBS]) AC_MSG_NOTICE([FT_CFLAGS = $FT_CFLAGS]) AC_MSG_NOTICE([FT_LIBS = $FT_LIBS]) AC_MSG_NOTICE([FC_CFLAGS = $FC_CFLAGS]) AC_MSG_NOTICE([FC_LIBS = $FC_LIBS]) AC_MSG_NOTICE([PKG_CONFIG_PATH = $PKG_CONFIG_PATH]) AC_MSG_NOTICE([================================]) AS_IF([test "x$FC" = "x"], [AC_MSG_WARN([*** NO FORTRAN COMPILER FOUND: skipping compilation of libpglot and giza Fortran module *** ])]) AC_OUTPUT giza-1.5.0/docs/000077500000000000000000000000001477367113400134145ustar00rootroot00000000000000giza-1.5.0/docs/contact/000077500000000000000000000000001477367113400150475ustar00rootroot00000000000000giza-1.5.0/docs/contact/index.html000066400000000000000000000013661477367113400170520ustar00rootroot00000000000000 giza - contact
giza

Contact

Daniel Price:

daniel.price [@] monash.edu
giza-1.5.0/docs/documentation/000077500000000000000000000000001477367113400162655ustar00rootroot00000000000000giza-1.5.0/docs/documentation/api.html000066400000000000000000003642551477367113400177430ustar00rootroot00000000000000 giza - API Reference Manual
giza

API Reference Manual

Here we provided a function by function reference for the low-level C API to giza.
The giza API is stable. From version 1.0 we aim to keep backwards compatibility, although new functionality may be added

Index

Device Management
giza_device_has_cursor
giza_open_device
giza_open_device_size
giza_open_device_size_float
giza_get_device_id
giza_select_device
giza_flush_device
giza_change_page
giza_close_devices
giza_close_device
giza_query_device
giza_set_motion_callback
giza_end_motion_callback
giza_get_surface_size
giza_get_surface_size_float
giza_histogram
giza_histogram_float
giza_histogram_binned
giza_histogram_binned_float
giza_subpanel
giza_set_panel
giza_get_panel
giza_init_subpanel
giza_advance_panel
Drawing
giza_arrow
giza_arrow_float
giza_axis
giza_axis_float
giza_box_time
giza_box_time_float
giza_box
giza_box_float
giza_circle
giza_circle_float
giza_clip
giza_get_clipping
giza_colour_bar
giza_colour_bar_float
giza_draw_background
giza_draw
giza_draw_float
giza_error_bars
giza_error_bars_float
giza_error_bars_vert
giza_error_bars_vert_float
giza_function_t
giza_function_t_float
giza_function_x
giza_function_x_float
giza_line
giza_line_float
giza_move
giza_move_float
giza_get_current_point
giza_get_current_point_float
giza_points
giza_points_float
giza_single_point
giza_single_point_float
giza_polygon
giza_polygon_float
giza_rectangle
giza_rectangle_float
giza_rectangle_rounded
giza_rectangle_rounded_float
giza_render
giza_render_transparent
giza_render_alpha
giza_render_float
giza_render_transparent_float
giza_render_alpha_float
giza_render_gray
giza_render_gray_float
giza_draw_pixels
giza_draw_pixels_float
giza_tick
giza_tick_float
giza_vector
giza_vector_float
Text
giza_annotate
giza_annotate_float
giza_label
giza_print_id
giza_ptext
giza_ptext_float
giza_text
giza_text_float
giza_qtext
giza_qtext_float
giza_qtextlen
giza_qtextlen_float
Settings
giza_set_arrow_style
giza_set_arrow_style_float
giza_get_arrow_style
giza_get_arrow_style_float
giza_set_band_style
giza_get_band_style
giza_begin_buffer
giza_end_buffer
giza_get_buffering
giza_flush_buffer
giza_set_character_height
giza_set_character_height_float
giza_get_character_height
giza_get_character_height_float
giza_get_character_size
giza_get_character_size_float
giza_set_colour_index
giza_get_colour_index
giza_set_colour_representation
giza_set_colour_representation_float
giza_set_colour_representation_alpha
giza_set_colour_representation_alpha_float
giza_set_colour_representation_hls
giza_set_colour_representation_hls_float
giza_set_colour_representation_rgb
giza_set_colour_representation_rgba
giza_set_colour_representation_rgba_float
giza_get_colour_representation
giza_get_colour_representation_alpha
giza_set_colour_index_range
giza_get_colour_index_range
giza_set_range_as_colour_table
giza_set_colour_palette
giza_set_colour_table
giza_set_colour_table_float
giza_rgb_from_table
giza_rgb_from_table_float
giza_save_colour_table
giza_restore_colour_table
giza_set_environment
giza_set_environment_float
giza_set_fill
giza_get_fill
giza_set_hatching_style
giza_set_hatching_style_float
giza_get_hatching_style
giza_get_hatching_style_float
giza_begin_autolog
giza_end_autolog
giza_set_line_cap
giza_get_line_cap
giza_set_line_style
giza_get_line_style
giza_set_line_width
giza_set_line_width_float
giza_get_line_width
giza_start_prompting
giza_stop_prompting
giza_save
giza_restore
giza_set_font
giza_set_font_bold
giza_set_font_italic
giza_set_font_bold_italic
giza_get_font
giza_set_text_background
giza_get_text_background
giza_version
giza_set_viewport
giza_set_viewport_float
giza_get_viewport
giza_get_viewport_float
giza_set_viewport_default
giza_set_viewport_inches
giza_set_viewport_inches_float
giza_start_warnings
giza_stop_warnings
giza_set_window
giza_set_window_float
giza_set_window_equal_scale
giza_set_window_equal_scale_float
giza_get_window
giza_get_window_float
Interactive
giza_band
giza_band_float
giza_mark_points
giza_mark_points_float
giza_mark_points_ordered
giza_mark_points_ordered_float
giza_mark_line
giza_mark_points_float
giza_mark_line_ordered
giza_mark_line_ordered_float
giza_mark_line_char
giza_mark_points_float
giza_get_key_press

Device Managment

giza_device_has_cursor

intgiza_device_has_cursor (void) ;

Query the interactivity of the device.

Return:

0 :If the device is not interactive.
1 :If the device is interactive.

giza_open_device

intgiza_open_device (const char *newDeviceName, const char *newPrefix) ;

Opens a new device to be drawn to. Must be called before any drawing can take place.

Input:

newDeviceName :Specifies the name and type of device to be opened. See below for details.
newPrefix :Specifies the default prefix to be used for file names.

Return value:

<=0 :an error has occurred
1 :id of current device Note: this is the EXTERNAL device number, running from 1..Ndev The internal device numbers are array indices into the Dev[...] array and run from 0..Ndev-1

Available devices:

? :User selects device
/xw :X-window
/eps :Encapsulated Postscript
/png :Portable Network Graphics file
/mp4 :Mpeg4 movie [requires ffmpeg support]
/svg :Scalable Vector Graphics file
/pdf :Portable Document Format
/vpdf :Landscape Portable Document Format
/ps :PostScript
/vps :Landscape Postscript

e.g:

See Also:

giza_select_device giza_get_device_id giza_close_device giza_query_device

giza_open_device_size

intgiza_open_device_size (const char *newDeviceName, const char *newPrefix, double width, double height, int units) ;

Similar to giza_open_device, but allows one to specify the size of the device

Input:

newDeviceName :Specifies the type of device to be opened. See below for details.
newPrefix :Specifies the default prefix to be used for file names.
width :Width for the newly opened device
height :Height for the newly opened device
units :Units in which the width/height of the device are specified

Units:

GIZA_UNITS_DEVICE :device coords (i.e. pixels on bitmap devices, points on vector devices)
GIZA_UNITS_PIXELS :pixels
GIZA_UNITS_MM :mm
GIZA_UNITS_INCHES :inches Other values cause an error message and are treated as GIZA_UNITS_DEVICE

See Also:

giza_open_device

giza_open_device_size_float

intgiza_open_device_size_float (const char *newDeviceName, const char *newPrefix, float width, float height, int units) ;

Same functionality as giza_open_device_size but takes floats

giza_get_device_id

voidgiza_get_device_id (int *devid) ;

Returns the (external) id of the currently selected device

Output:

See Also:

giza_open_device giza_get_device_id

giza_select_device

voidgiza_select_device (int devid) ;

Select between the currently open devices

Input:

devid :device id, as returned by giza_open_device

See Also:

giza_get_device_id giza_open_device

giza_flush_device

voidgiza_flush_device (void) ;

Flushes the currently open device.

giza_change_page

voidgiza_change_page (void) ;

Advances the currently open device to the next page, and redraws the background. If no other actions have been performed since the device was opened or the last call to giza_change_page the call is ignored.

See Also:

giza_subpanel giza_set_panel

giza_close_devices

voidgiza_close_devices (void) ;

Close all open devices (to be called from PGEND())

giza_close_device

voidgiza_close_device (void) ;

Closes the currently open device. Should always be called before exiting your program as it frees associated memory.

giza_query_device

intgiza_query_device (const char *querytype, char *returnval, int* rlen) ;

Queries various things about the current device.

Input:

querytype :a string containing the query type
rlen :integer containing the length of the return buffer

Output:

returnval :string with result of query

The following query types are possible:

"state" :

"device" :

"type" :

"dev/type" :

"file" :

"user" :

"cursor" :

"hardcopy" :

giza_set_motion_callback

intgiza_set_motion_callback (void (*func)(double *x, double *y, int *mode)) ;

set a callback function to be called during cursor movement (e.g. to print things). Function should be of the form void func(double *x, double *y)

Input:

func :The subroutine to be called

See Also:

giza_end_motion_callback

giza_end_motion_callback

intgiza_end_motion_callback (void) ;

Free the motion callback pointer

See Also:

giza_set_motion_callback

giza_get_surface_size

voidgiza_get_surface_size (double *x1, double *x2, double *y1, double *y2) ;

Gets the size of the current surface that can be drawn to in device units (pixels or points).

Input:

x1 :Always gets set to 0.0
x2 :Gets set to the width of the current surface
y1 :Always gets set to 0.0
y2 :Gets set to the width of the surface

giza_get_surface_size_float

voidgiza_get_surface_size_float (float *x1, float *x2, float *y1, float *y2) ;

Same functionality as giza_get_surface_size, but uses floats.

See Also:

giza_get_surface_size

giza_histogram

voidgiza_histogram (int n, const double *dat, double min, double max, int nbin, int flag) ;

Plot a histogram (unbinned)

Input:

n :number of data values
dat :data (n values)
min :minimum data value to use in histogram
max :maximum data value to use in histogram
nbin :number of bins
flag :flag to indicate page changes, see below

Flag:

0 :giza_histogram calls giza_environment to set up new plotting page
1 :plot in current window and viewport
2 :with filled area style, calls giza_environment
3 :with filled area style, in current window and viewport
4 :bins drawn as simple outlines, as in giza_histogram_binned, calls giza_environment
5 :bins drawn as simple outlines, but in current window and viewport Other values treated as 1

See Also:

giza_histogram_binned giza_histogram_float

giza_histogram_float

voidgiza_histogram_float (int n, const float *dat, float min, float max, int nbin, int flag) ;

Same as giza_histogram but takes floats

See Also:

giza_histogram giza_histogram_binned_float

giza_histogram_binned

voidgiza_histogram_binned (int n, const double *x, const double *dat, int centre) ;

Plot a histogram of already binned data

Input:

n :number of bins
x :x values of bins
dat :data values for each bin
center :if true (1) x values correspond to centre of each bin

See Also:

giza_histogram giza_histogram_binned_float

giza_histogram_binned_float

voidgiza_histogram_binned_float (int n, const float *x, const float *dat, int centre) ;

Same as giza_histogram_binned but takes floats

See Also:

giza_histogram giza_histogram_binned_float

giza_subpanel

voidgiza_subpanel (int nx, int ny) ;

Set the number of sub panels

Input:

nx :number of sub-panels in x direction
ny :number of sub panels in y direction

See Also:

giza_select_panel giza_get_panel

giza_set_panel

voidgiza_set_panel (int ix, int iy) ;

Select the panel we are currently plotting in

Input:

ix :panel index in x direction
iy :panel index in y direction

See Also:

giza_subpanel giza_get_panel

giza_get_panel

voidgiza_get_panel (int *ix, int *iy) ;

Select the panel we are currently plotting in

Input:

ix :panel index in x direction
iy :panel index in y direction

See Also:

giza_subpanel giza_set_panel

giza_init_subpanel

void_giza_init_subpanel () ;

initialises subpanel settings for device

giza_advance_panel

void_giza_advance_panel (int *newpage) ;

Moves to next panel

Drawing

giza_arrow

voidgiza_arrow (double x1, double y1, double x2, double y2) ;

Draws an arrow. The style of the head of the arrow is set by giza_set_arrow_style.

Input:

x1 :The world x-coord of the tail of the arrow
y1 :The world y-coord of the tail of the arrow
x2 :The world x-coord of the head of the arrow
y2 :The world y-coord of the head of the arrow

See Also:

giza_set_arrow_style giza_arrow_float

giza_arrow_float

voidgiza_arrow_float (float x1, float y1, float x2, float y2) ;

Same functionality as giza_arrow.

See Also:

giza_arrow giza_set_arrow_style

giza_axis

voidgiza_axis (const char *opt, double x1, double y1, double x2, double y2, double v1, double v2, double tick, int nsub, double dmajl, double dmajr, double fmin, double disp, double angle) ;

Draw a labelled axis from (x1,y1) to (x2,y2)

Input:

opt :String of options for the axis. The options may be in any order. See below for details
x1 :starting x position in world coordinates
y1 :starting y position in world coordinates
x2 :finishing x position in world coordinates
y2 :finishing y position in world coordinates
v1 :axis value at starting position
v2 :axis value at finishing position
tick :The distance, in world coordinates, between major ticks on the axis. If 0.0 the interval is chosen automatically.
nsub :The number of minor ticks to be placed between each major tick. If 0 the number is chosen automatically. Ignored if log axis.
dmajl :Length of major tick marks drawn to "left/bottom" of axis in units of character height
dmajr :Length of major tick marks drawn to "right/top" of axis in units of character height
fmin :Length of minor tick marks as fraction of major
disp :Displacement of labels from axis in units of character height
angle :Label orientation; angle between text and direction of axis; in degrees

Options:

T :Draw major ticks.
S :Draw minor ticks.
N :Label the axis
L :Label axis logarithmically
H :Hide the axis (draw ticks only)
I :'Invert' tick marks, draw them on opposite side
1 :Force decimal labelling instead of automatic choice (see giza_format_number)
2 :Force exponential labelling instead of automatic choice (see giza_format_number)

See Also:

giza_axis_float giza_box giza_tick giza_box_time

giza_axis_float

voidgiza_axis_float (const char *opt, float x1, float y1, float x2, float y2, float v1, float v2, float step, int nsub, float dmajl, float dmajr, float fmin, float disp, float angle) ;

Same functionality as giza_axis but takes floats instead of doubles.

See Also:

giza_axis

giza_box_time

void giza_box_time (const char *xopt, double xtick, int nxsub, const char *yopt, double ytick, int nysub) ;

Same as giza_box, but labels axes with time-style labels i.e. DD HH MM SS as used in RA - DEC plots for Astronomy. If this option is used then giza_set_window should have been called with min/max given in seconds of time.

Input:

xopt :As for giza_box, plus additional options below
xtick :The distance, in world coordinates, between major ticks on the x-axis. If 0.0 the interval is chosen by giza_box_time.
nxsub :The number of minor ticks to be placed between each major tick. If 0 the number is chosen by giza_box.
yopt :Similar to xdraw_minticks but for the y-axis.
ytick :Similar to xtick but for the y-axis.
nysub :Similar to nxsub but for the y-axis.

Options for xopt and yopt (same as for giza_box, plus those below):

Z :for time-style labelling: (DD) HH MM SS.S
Y :exclude the day field so labels are just HH MM SS.S (hours can be >24)
X :keep HH field in range (0..24)
H :use d,h,m,s superscripts to label numbers
D :use degree o, minute ' and second '' superscripts to label numbers
F :do not draw the first label (left- or bottom-most)
O :omit leading zeros in numbers < 10, i.e. 3 instead of 03

See Also:

giza_box giza_box_float giza_box_time_float

giza_box_time_float

voidgiza_box_time_float (const char *xopt, float xtick, int nxsub, const char *yopt, float ytick, int nysub) ;

Same functionality as giza_box_time but takes floats instead of doubles.

See Also:

giza_box_time giza_box

giza_box

voidgiza_box (const char *xopt, double xtick, int nxsub, const char *yopt, double ytick, int nysub) ;

Annotates the viewport with labelled axis/frame

Input:

xopt :String of options for the x-axis. The options may be in any order. See below for details
xtick :The distance, in world coordinates, between major ticks on the x-axis. If 0.0 the interval is chosen by giza_box.
nxsub :The number of minor ticks to be placed between each major tick. If 0 the number is chosen by giza_box.
yopt :Similar to xopt but for the y-axis.
ytick :Similar to xtick but for the y-axis.
nysub :Similar to nxsub but for the y-axis.

Options:

A :Draw the axis.
B :Draw the bottom or left edge of the frame.
C :Draw the top or right edge of the frame.
T :Draw major ticks.
S :Draw minor ticks.
N :Label the axis (conventional, below/left viewport)
M :Put labels in the unconvential location (above/right viewport)
V :Orient numeric y labels vertically (only applies to left and right axis).
G :Draw grid lines at major intervals
M :Write numeric labels above x-axis or to right of y-axis instead of usual position
L :Label axis logarithmically
I :'Invert' tick marks, draw them outside the viewport
P :extend ("Project") major tick marks outside the box (ignored if option I is specified).

giza_box_float

voidgiza_box_float (const char *xopt, float xtick, int nxsub, const char *yopt, float ytick, int nysub) ;

Same functionality as giza_box but takes floats instead of doubles.

See Also:

giza_box

giza_circle

voidgiza_circle (double x, double y, double r) ;

Draws a circle at x, y with radius r (in world coords), using the current fill set by giza_set_fill.

Input:

x :the world x-coord of the centre of the circle
y :the world y-coord of the centre of the circle
r :the radius of the circle in world coords

giza_circle_float

voidgiza_circle_float (float x, float y, float r) ;

Same functionality as giza_circle, but takes floats

See Also:

giza_circle

giza_clip

voidgiza_set_clipping (int clip) ;

Set whether or not to clip at the edge of the viewport

Input:

clip :Use 0 to disable clipping, 1 to enable clipping

giza_get_clipping

voidgiza_get_clipping (int *clip) ;

Query whether or not clipping at edge of viewport is enabled or disabled

See Also:

giza_move

giza_colour_bar

voidgiza_colour_bar (const char *side, double disp, double width, double valMin, double valMax, const char *label) ;

Draws a colour bar (wedge) using the current colour ramp

Input:

side :edge of viewport to draw colour bar relative to, either 'B' (bottom), 'T' (top), 'L' (left) or 'R' (right)
disp :displacement of the bar in character heights from the specified edge
width :width of the colour bar in character heights
valMin :The value in data that gets assigned the colour corresponding to zero on the colour ramp (The ramp is set by giza_set_colour_table)
valMax :The value in data that gets assigned the colour corresponding to one on the colour ramp
label :Text label to annotate colour bar with

See Also:

giza_render giza_colour_bar_float giza_set_colour_table

giza_colour_bar_float

voidgiza_colour_bar_float (const char *side, float disp, float width, float valMin, float valMax, const char *label) ;

Same functionality as giza_colour_bar, but takes floats

See Also:

giza_colour_bar

giza_draw_background

voidgiza_draw_background (void) ;

Redraws the background of the currently open device (erase)

giza_draw

voidgiza_draw (double xpt, double ypt) ;

Plots a line from current pen position to a point

Input:

xpt :The world x-coordinates of the point
ypt :The world y-coordinates of the point

giza_draw_float

voidgiza_draw_float (float xpt, float ypt) ;

The same functionality as giza_draw, except it uses floats

giza_error_bars

voidgiza_error_bars (int dir, int n, const double *xpts, const double *ypts, const double *error, double term) ;

Draws error bars.

Input:

dir :the direction of the error bar, see below
n :the number of points
xpts :the x world coords of the points
ypts :the y world coords of the points
error:the length of the bar to be drawn in world coords
term :the length of the terminals as a multiple of the default length

Directions:

1 :+x
2 :+y
3 :-x
4 :-y
5 :+x and -x
6 :+y and -y
7 :-y but instead of drawing bars use a semi-transparent shaded region
8 :+y using a semi-transparent shaded region
9 :+y and -y using a semi-transparent shaded region

giza_error_bars_float

voidgiza_error_bars_float (int dir, int n, const float *xpts, const float *ypts, const float *error, float term) ;

Same as giza_error_bars but takes floats.

giza_error_bars_vert

voidgiza_error_bars_vert (int n, const double *xpts, const double *ypts1, const double *ypts2, double term) ;

Draws n vertical error bars. A call to giza_points must be made to draw the actual points.

Input:

n :the number of bars to draw
xpts :the x world coords of the points
ypts1 :the y world coords of the lower part of the error bar
ypts2 :the y world coords of the upper part of the error bar
term :length of the terminals, as a multiple of default length (T <= 0.0 means no terminals drawn)

giza_error_bars_vert_float

voidgiza_error_bars_vert_float (int n, const float *xpts, const float *ypts1, const float *ypts2, float term) ;

Same functionality as giza_error_bars_vert but takes floats.

giza_function_t

voidgiza_function_t (double (*funcx)(double *t), double (*funcy)(double *t), int n, double tmin, double tmax, int flag) ;

Draw a curve defined by x = func(t), y = func(t), where funcx(t) and funcy(t) are user-supplied routines with a single double argument passed by reference, e.g. double myfuncx(double* t) double myfuncy(double* t)

Input:

funcx :The parametrisation of the x value.
funcy :The parametrisation of the y value.
n :The number of segments to use to approximate the curve.
tmin :The lower bound on the domain of t.
tmax :The upper bound on the domain of t.

giza_function_t_float

voidgiza_function_t_float (float (*funcx)(float *t), float (*funcy)(float *t), int n, float tmin, float tmax, int flag) ;

The same functionality as giza_function_t but uses floats. Draw a curve defined by x = func(y), where func(y) is a user-supplied routine with a single float argument passed by reference, e.g. float myfuncx(float* t) float myfuncy(float* t)

See Also:

giza_function_t

giza_function_x

voidgiza_function_x (double (*func)(double *x), int n, double xmin, double xmax, int flag) ;

Draw a curve defined by y = func(x), where func(x) is a user-supplied routine with a single double argument, e.g. double myfunc(double* x)

Input:

func :The function describing y's dependence on x.
n :The number of segments with whichh to approximate the curve
xmin :The lower bound on the domain of x.
xmax :The upper bound on the domain of x.

giza_function_x_float

voidgiza_function_x_float (float (*func)(float *x), int n, float xmin, float xmax, int flag) ;

Same functionality as giza_function_x but takes floats. Draw a curve defined by y = func(x), where func(x) is a user-supplied routine with a single double argument, e.g. float myfunc(float* x)

See Also:

giza_function_x

giza_line

voidgiza_line (int n, const double *xpts, const double *ypts) ;

Plots a line made up of n-1 straight segments.

Input:

n :The number of points that define the line. The line will be made up of n - 1 straight segments. If n is less than 2 nothing is done.
xpts :The world x-coordinates of the points to be joined.
ypts :The world y-coordinates of the points to be joined.

giza_line_float

voidgiza_line_float (int n, const float *xpts, const float *ypts) ;

The same functionality as giza_line, except it uses arrays of floats

See Also:

giza_line

giza_move

voidgiza_move (double xpt, double ypt) ;

Move current pen position to a point

Input:

xpt :The world x-coordinates of the point
ypt :The world y-coordinates of the point

giza_move_float

voidgiza_move_float (float xpt, float ypt) ;

The same functionality as giza_move, except it uses floats

See Also:

giza_move

giza_get_current_point

voidgiza_get_current_point (double *xpt, double *ypt) ;

Query current pen position

Output:

xpt :The world x-coordinates of the point
ypt :The world y-coordinates of the point

See Also:

giza_get_current_point_float

giza_get_current_point_float

voidgiza_get_current_point_float (float *xpt, float *ypt) ;

The same functionality as giza_get_current_point, but uses floats

See Also:

giza_get_current_point

giza_points

voidgiza_points (int n, const double* x, const double* y, int symbol) ;

Plot n points at x[n], y[n] in world coords.

Input:

n :the number of points
x :the x-coordinates of the points in world coords
y :the y-coordinates of the points in world coords
symbol :the type of marker to use

Symbols:

default :small point (same as 1)
0 :square
1 :.
2 :+
3 :*
4 :o
5 :x
>31 :from the Unicode table

giza_points_float

voidgiza_points_float (int n, const float* x, const float* y, int symbol) ;

Same functionality as giza_points but takes floats.

See Also:

giza_points

giza_single_point

voidgiza_single_point (double x, double y, int symbol) ;

Plots a single point at x, y in world coords.

Input:

x :the x-coordinate of the point in world coords
y :the y-coordinate of the point in world coords
symbol :the type of marker to use

giza_single_point_float

voidgiza_single_point_float (float x, float y, int symbol) ;

Same functionality as giza_single_point, but uses floats.

See Also:

giza_single_point

giza_polygon

voidgiza_polygon (int n, const double *xpts, const double *ypts) ;

Draws a polygon, using the current fill set by giza_set_fill.

Input:

n :number of vertices
xpts :x positions of vertices
ypts :y positions of vertices

See Also:

giza_set_fill

giza_polygon_float

voidgiza_polygon_float (int n, const float *xpts, const float *ypts) ;

Same functionality as giza_polygon, but takes floats

See Also:

giza_polygon

giza_rectangle

voidgiza_rectangle (double x1, double x2, double y1, double y2) ;

Draws a rectangle with corners ((x1, y1) (x2, y1) (x2, y2) (x1, y2)), using the current fill set by giza_set_fill.

Inputs:

x1 :the x-coordinate of two of the points
x2 :the x-coordinate of the other two points
y1 :the y-coordinate of two of the points
y2 :the y-coordinate of the other two points

See Also:

giza_set_fill giza_polygon

giza_rectangle_float

voidgiza_rectangle_float (float x1, float x2, float y1, float y2) ;

Same functionality as giza_rectangle but takes floats

See Also:

giza_rectangle

giza_rectangle_rounded

voidgiza_rectangle_rounded (double x1, double x2, double y1, double y2, double radius) ;

Draws a rectangle with rounded corners ((x1, y1) (x2, y1) (x2, y2) (x1, y2)), using the current fill set by giza_set_fill.

Inputs:

x1 :the x-coordinate of two of the points
x2 :the x-coordinate of the other two points
y1 :the y-coordinate of two of the points
y2 :the y-coordinate of the other two points
radius :radius of curvature for the corners

See Also:

giza_rectangle giza_set_fill giza_polygon

giza_rectangle_rounded_float

voidgiza_rectangle_rounded_float (float x1, float x2, float y1, float y2, float radius) ;

Same functionality as giza_rectangle_rounded but takes floats

See Also:

giza_rectangle_rounded

giza_render

voidgiza_render (int sizex, int sizey, const double* data, int i1, int i2, int j1, int j2, double valMin, double valMax, int extend, int filter, const double *affine) ;

Renders data to the device.

Input:

sizex :The dimensions of data in the x-direction
sizey :The dimensions of data in the y-direction
data :The data to be rendered
i1 :The inclusive range of data to render in the x dimension.
i2 :The inclusive range of data to render in the x dimension.
j1 :The inclusive range of data to render in the y direction
j2 :The inclusive range of data to render in the y direction
valMin :The value in data that gets assign the colour corresponding to zero on the colour ramp (The ramp is set by giza_set_colour_table)
valMax :The value in data that gets assigned the colour corresponding to one on the colour ramp
extend :Option for how to deal with image at edges
filter :Option for how to interpolate between pixels (since v1.5)
affine :The affine transformation matrix that will be applied to the data.

Allowed extend settings:

0 or GIZA_EXTEND_NONE :no padding
1 or GIZA_EXTEND_REPEAT :periodic tiling
2 or GIZA_EXTEND_REFLECT :reflective boundary
3 or GIZA_EXTEND_PAD :pad by extending last few pixels

Allowed filter settings (from cairo_filter_t):

0 or GIZA_FILTER_DEFAULT :default, usually bilinear interpolation
1 or GIZA_FILTER_FAST :a high performance filter with quality similar to GIZA_FILTER_NEAREST
2 or GIZA_FILTER_GOOD :a reasonable-performance filter, with quality similar to GIZA_FILTER_BILINEAR
3 or GIZA_FILTER_BEST :highest quality available, performance may not be suited for interactive use
4 or GIZA_FILTER_NEAREST :Nearest-neighbour filtering
5 or GIZA_FILTER_BILINEAR :Linear interpolation in two dimensions

See Also:

giza_set_colour_table

giza_render_transparent

voidgiza_render_transparent (int sizex, int sizey, const double* data, int i1, int i2, int j1, int j2, double valMin, double valMax, int extend, int filter, const double *affine) ;

Same as giza_render, but data < valMin rendered as transparent

giza_render_alpha

voidgiza_render_alpha (int sizex, int sizey, const double* data, const double* alpha, int i1, int i2, int j1, int j2, double valMin, double valMax, int extend, int filter, const double *affine) ;

Same as giza_render, but uses additional array specifying transparency of each pixel

giza_render_float

voidgiza_render_float (int sizex, int sizey, const float* data, int i1, int i2, int j1, int j2, float valMin, float valMax, int extend, int filter, const float *affine) ;

Same functionality as giza_render but takes floats.

See Also:

giza_render

giza_render_transparent_float

voidgiza_render_transparent_float (int sizex, int sizey, const float* data, int i1, int i2, int j1, int j2, float valMin, float valMax, int extend, int filter, const float *affine) ;

Same functionality as giza_render_transparent but takes floats.

See Also:

giza_render_transparent

giza_render_alpha_float

voidgiza_render_alpha_float (int sizex, int sizey, const float* data, const float* alpha, int i1, int i2, int j1, int j2, float valMin, float valMax, int extend, int filter, const float *affine) ;

Same as giza_render_alpha but takes floats

See Also:

giza_render_alpha

giza_render_gray

voidgiza_render_gray (int sizex, int sizey, const double* data, int i1, int i2, int j1, int j2, double valMin, double valMax, int extend, int filter, const double *affine) ;

Same functionality as giza_render but renders in grayscale

See Also:

giza_render

giza_render_gray_float

voidgiza_render_gray_float (int sizex, int sizey, const float* data, int i1, int i2, int j1, int j2, float valMin, float valMax, int extend, int filter, const float *affine) ;

Same functionality as giza_render_gray but renders in grayscale

See Also:

giza_render_gray giza_render

giza_draw_pixels

voidgiza_draw_pixels (int sizex, int sizey, const int* idata, int i1, int i2, int j1, int j2, double xmin, double xmax, double ymin, double ymax, int extend, int filter) ;

Renders an array of pixels according to a colour index defined for each pixel

Input:

sizex :The dimensions of data in the x-direction
sizey :The dimensions of data in the y-direction
idata :The data to be rendered (colour index on each pixel)
i1 :The inclusive range of data to render in the x dimension.
i2 :The inclusive range of data to render in the x dimension.
j1 :The inclusive range of data to render in the y direction
j2 :The inclusive range of data to render in the y direction
xmin :world coordinate corresponding to left of pixel array
xmax :world coordinate corresponding to right of pixel array
ymin :world coordinate corresponding to bottom of pixel array
ymax :world coordinate corresponding to top of pixel array
extend :Option for how to deal with image at edges (see giza_render)
filter :Option for how to interpolate between pixels (see giza_render, since v1.5)

See Also:

giza_render giza_draw_pixels_float

giza_draw_pixels_float

voidgiza_draw_pixels_float (int sizex, int sizey, const int* idata, int i1, int i2, int j1, int j2, float xmin, float xmax, float ymin, float ymax, int extend, int filter) ;

Same as giza_draw_pixels, but takes floats

See Also:

giza_draw_pixels

giza_tick

voidgiza_tick (double x1, double y1, double x2, double y2, double v, double tickl, double tickr, double disp, double angle, const char *label) ;

Draw a single tick along an axis. The axis extends from (x1,y1) to (x2,y2) and the tick is drawn perpendicular to the axis which is not drawn by this routine. Optional text label drawn parallel to the axis if the orientation angle is zero

Input:

x1 :starting x position in world coordinates
y1 :starting y position in world coordinates
x2 :finishing x position in world coordinates
y2 :finishing y position in world coordinates
v :axis value at tick location
tickl :Length of tick mark drawn to "left/bottom" of axis in units of character height
tickr :Length of tick mark drawn to "right/top" of axis in units of character height
disp :Displacement of labels from axis in units of character height
angle :Label orientation; angle between text and direction of axis; in degrees
label :Text string used for label (can be blank)

giza_tick_float

voidgiza_tick_float (float x1, float y1, float x2, float y2, float v, float tickl, float tickr, float disp, float angle, const char *label) ;

Same functionality as giza_tick but takes floats instead of doubles.

See Also:

giza_tick

giza_vector

voidgiza_vector (int n, int m, const double* horizontal, const double* vertical, int i1, int i2, int j1, int j2, double scale, int position, const double* affine, double blank) ;

Plot of vector data.

Input:

n :The dimensions of data in the x-direction
m :The dimensions of data in the y-direction
horizontal :The x-component of the data to be plotted
vertical :The y-component of the data to be plotted
i1 :The inclusive range of data to render in the x dimension.
i2 :The inclusive range of data to render in the x dimension.
j1 :The inclusive range of data to render in the y direction
j2 :The inclusive range of data to render in the y direction
scale :scaling factor for arrow lengths (0 = automatic)
position :justification of vector arrow with respect to pixel (0=left, 0.5=centred)
affine :The affine transformation matrix that will be applied to the data.

See Also:

giza_vector_float giza_arrow giza_set_arrow_style

giza_vector_float

voidgiza_vector_float (int n, int m, const float* horizontal, const float* vertical, int i1, int i2, int j1, int j2, float scale, int position, const float* affine, float blank) ;

Same as giza_vector but takes floats

See Also:

giza_vector giza_arrow giza_set_arrow_style

Text

giza_annotate

voidgiza_annotate (const char *side, double displacment, double coord, double justification, const char *string) ;

Writes text with a position relative to the viewport.

Input:

side :Must contain a character 'B','L','T' or 'R' specifying the bottom, left, top or right margin respectively. The position of the text will be relative to the specified side.
displacement :The displacement of the text from the edge of the view-port specified in side, measured out of the view-port in units of character height.
coord :The location of the text along the edge of the view port specified in side, measured as a fraction of that size
justification :Specifies the justification of the text. 0.0 means the left most edge of the string will be aligned with coord, 1.0 means the right most edge of the string will be aligned with coord etc.
string :The text that will be displayed.

giza_annotate_float

voidgiza_annotate_float (const char *side, float displacment, float coord, float justification, const char *string) ;

The same functionality as giza_annotate but takes floats instead of doubles.

See Also:

giza_annotate

giza_label

voidgiza_label (const char *labelx, const char *labely, const char *title) ;

Labels the plot

Input:

labelx :x-axis label
labely :y-axis label
title :The title of the plot

giza_print_id

voidgiza_print_id (void) ;

Prints user ID, date and time on the plot

giza_ptext

voidgiza_ptext (double x, double y, double angle, double just, const char *text) ;

Draws text at a given position in world coords at a given angle with a given justification.

Input:

x :The x world coord.
y :The y world coord.
angle :The angle to be drawn at.
just :The justification.
text :The text to be drawn.

giza_ptext_float

voidgiza_ptext_float (float x, float y, float angle, float just, const char *text) ;

Same functionality as giza_ptext but uses floats.

See Also:

giza_ptext

giza_text

voidgiza_text (double x, double y, const char *text) ;

Draws text at the position (x, y).

Input:

x :The x-coordinate of the bottom left corner of the text.
y :The y-coordinate of the bottom left corner of the text.
text :The text to be drawn.

giza_text_float

voidgiza_text_float (float x, float y, const char *text) ;

Same functionality as giza_text but takes floats.

See Also:

giza_text

giza_qtext

voidgiza_qtext (double x, double y, double angle, double just, const char *text, double xbox[4], double ybox[4]) ;

Returns the co-ordinates of a box bounding the given string if printed by giza_ptext.

Input:

x :The x-coord of the text in world-coords
y :The y-coord of the text in world-coords
angle :The angle to draw the text at, in degrees
just :The horizontal justification of the string. 0. for left-justified, 1. for right-justified
text :The text to be drawn -xbox :-
ybox :Set to the world co-ords of the bounding box

giza_qtext_float

voidgiza_qtext_float (float x, float y, float angle, float just, const char *text, float xbox[4], float ybox[4]) ;

Same as giza_qtext but takes floats

See Also:

giza_qtext

giza_qtextlen

voidgiza_qtextlen (int units, const char *text, double *xlen, double *ylen) ;

Returns the length of a string as would be printed by giza_ptext in a variety of units (added by DJP)

Input:

units :The units in which to return the values
text :The text to be drawn
xlen :The length of the text in the x-direction
ylen :The length of the text in the y-direction

giza_qtextlen_float

voidgiza_qtextlen_float (int units, const char *text, float *xlen, float *ylen) ;

Same functionality as giza_qtextlen but uses floats

See Also:

giza_qtextlen

Settings

giza_set_arrow_style

voidgiza_set_arrow_style (int fillStyle, double angle, double cutback) ;

Sets the style of arrow head to be used for arrows drawn with giza_arrow.

Input:

fillStyle :Sets the fill style. See giza_set_fill
angle :Sets the acute angle of the arrow head. Can range from 0.0 to 90.
cutback :The fraction of the back of the arrow head that is cut back. 0.0 gives a triangular arrow head, 1.0 gives >.

giza_set_arrow_style_float

voidgiza_set_arrow_style_float (int fillStyle, float angle, float cutback) ;

Same functionality as giza_set_arrow_style but takes floats instead of doubles.

See Also:

giza_set_arrow_style

giza_get_arrow_style

voidgiza_get_arrow_style (int *fillStyle, double *angle, double *cutback) ;

Queries the current arrow style settings, as set by giza_set_arrow_style.

Input:

fillStyle :Gets set to the current fillstyle.
angle :Gets set to the current angle.
cutback :Gets set to the current cutback.

See Also:

giza_set_arrow_style

giza_get_arrow_style_float

voidgiza_get_arrow_style_float (int *fillStyle, float *angle, float *cutback) ;

Same functionality as giza_get_arrow_style, but takes floats instead of doubles.

See Also:

giza_get_arrow_style

giza_set_band_style

voidgiza_set_band_style (int ls, double lw) ;

Sets the line style to be used by giza_band

Input:

ls :the line style for the band
lw :the width for the line

See Also:

giza_band giza_get_band_style

giza_get_band_style

voidgiza_get_band_style (int *ls, double *lw) ;

Queries the current band style settings to be used by giza_band

Output:

ls :the line style for the band
lw :the width for the line

See Also:

giza_band giza_set_band_style

giza_begin_buffer

voidgiza_begin_buffer (void) ;

Begins buffering

See Also:

giza_end_buffer giza_flush_buffer

giza_end_buffer

voidgiza_end_buffer (void) ;

Ends buffering

See Also:

giza_begin_buffer giza_flush_buffer

giza_get_buffering

voidgiza_get_buffering (int *buf) ;

returns whether output is currently buffered on current device

See Also:

giza_begin_buffer giza_flush_buffer giza_end_buffer

giza_flush_buffer

voidgiza_flush_buffer (void) ;

Updates graphics display Can be used to flush the graphics buffer manually between calls to giza_begin_buffer and giza_end_buffer

See Also:

giza_begin_buffer giza_end_buffer

giza_set_character_height

voidgiza_set_character_height (double ch) ;

Sets the font size in units of character height. A character height of 1.0 corresponds to 1/37th of the plotting surface height by default

Input:

ch :the new character height

giza_set_character_height_float

voidgiza_set_character_height_float (float ch) ;

Same functionality as giza_set_character_height but takes a float

giza_get_character_height

voidgiza_get_character_height (double *ch) ;

Query the character height

Input:

ch :gets set to the character height.

giza_get_character_height_float

voidgiza_get_character_height_float (float *ch) ;

Same functionality as giza_get_character_height but takes a float.

See Also:

giza_get_character_height

giza_get_character_size

voidgiza_get_character_size (int units, double *heightx, double *heighty) ;

Returns the character size in a variety of units.

Input:

units :select the units the result will be returned in.

Output:

width :will be set to the width of a character.
height :will be set to the height of a character.

Units:

GIZA_UNITS_NORMALIZED :normalised device coords.
GIZA_UNITS_WORLD :world coords.
GIZA_UNITS_PIXELS :pixels
GIZA_UNITS_DEVICE :device coords.
GIZA_UNITS_MM :mm
GIZA_UNITS_INCHES :inches Other values cause an error message and are treated as GIZA_UNITS_NORMALIZED

giza_get_character_size_float

voidgiza_get_character_size_float (int units, float *xch, float *ych) ;

Same functionality as giza_get_character_size, but returns the values as floats

giza_set_colour_index

voidgiza_set_colour_index (int ci) ;

Sets the colour to that represented by the colour index ci. Represented colours can be changed via giza_set_colour_representation.

Input:

ci :The new colour index.

giza_get_colour_index

voidgiza_get_colour_index (int *ci) ;

Queries the current colour index.

Input:

ci :gets set to the current colour index.

giza_set_colour_representation

voidgiza_set_colour_representation (int ci, double red, double green, double blue) ;

Allows the user to set the colour represented by the given colour index.

Input:

ci :Which colour index to set.
red :The red component of the colour (between 0 and 1).
green :The green component of the colour (between 0 and 1).
blue :The blue component of the colour (between 0 and 1).

giza_set_colour_representation_float

voidgiza_set_colour_representation_float (int ci, float red, float green, float blue) ;

Same functionality as giza_set_colour_representation but takes floats/

giza_set_colour_representation_alpha

voidgiza_set_colour_representation_alpha (int ci, double red, double green, double blue, double alpha) ;

Allows the user to set the colour represented by the given colour index, aswell as the alpha.

Input:

ci :Which colour index to set.
red :The red component of the colour (between 0 and 1).
green :The green component of the colour (between 0 and 1).
blue :The blue component of the colour (between 0 and 1).
alpha :The alpha used when drawing with this colour index (between 0 and 1).

giza_set_colour_representation_alpha_float

voidgiza_set_colour_representation_alpha_float (int ci, float red, float green, float blue, float alpha) ;

Same functionality as giza_set_colour_representation_alpha but takes floats.

See Also:

giza_set_colour_representation_alpha giza_set_colour_representation

giza_set_colour_representation_hls

voidgiza_set_colour_representation_hls (int ci, double hue, double lightness, double saturation) ;

Allows the user to set the colour represented by the given colour index This routine accepts colours in the Hue, Lightness and Saturation system.

Input:

ci :Which colour index to set.
hue :The Hue component of the colour (between 0 and 360 degrees).
lightness :The Lightness component of the colour (between 0 and 1).
saturation :The Saturation component of the colour (between 0 and 1).

giza_set_colour_representation_hls_float

voidgiza_set_colour_representation_hls_float (int ci, float hue, float lightness, float saturation) ;

Same functionality as giza_set_colour_representation_hls but takes floats

giza_set_colour_representation_rgb

voidgiza_set_colour_representation_rgb (int ci, int red, int green, int blue) ;

Same as giza_set_colour_representation but accepts integer 0->255 instead of double 0->1

Input:

ci :Which colour index to set.
red :The red component of the colour (between 0 and 255).
green :The green component of the colour (between 0 and 255).
blue :The blue component of the colour (between 0 and 255).

See Also:

giza_set_colour_representation giza_set_colour_representation_rgba

giza_set_colour_representation_rgba

voidgiza_set_colour_representation_rgba (int ci, int red, int green, int blue, double alpha) ;

Same as giza_set_colour_representation_alpha but accepts 0->255 instead of 0->1

Input:

ci :Which colour index to set.
red :The red component of the colour (between 0 and 255).
green :The green component of the colour (between 0 and 255).
blue :The blue component of the colour (between 0 and 255).
alpha :The alpha component of the colour (between 0 and 1)

See Also:

giza_set_colour_representation_alpha giza_set_colour_representation_rgb

giza_set_colour_representation_rgba_float

voidgiza_set_colour_representation_rgba_float (int ci, int red, int green, int blue, float alpha) ;

Same functionality as giza_set_colour_representation_rgba but takes floats

See Also:

giza_set_colour_representation_rgba giza_set_colour_representation_alpha

giza_get_colour_representation

voidgiza_get_colour_representation (int ci, double *red, double *green, double *blue) ;

Query the RGB at a given colour index.

Input:

ci :The index to enquire about
red :Gets set to the red value at ci (range 0->1)
green :Gets set to the green value at ci (range 0->1)
blue :Gets set to the blue value at ci (range 0->1)

giza_get_colour_representation_alpha

voidgiza_get_colour_representation_alpha (int ci, double *red, double *green, double *blue, double *alpha) ;

Query the RGB and alpha at a given colour index.

Input:

ci :The index to enquire about
red :Gets set to the red value at ci
green :Gets set to the green value at ci
blue :Gets set to the blue value at ci
alpha :Gets set to the alpha at ci

giza_set_colour_index_range

voidgiza_set_colour_index_range (int cimin, int cimax) ;

Set the range of colour indices that are affected by giza_set_colour_table

Note:

Input:

cimin :lowest colour index in range
cimax :highest colour index in range

giza_get_colour_index_range

voidgiza_get_colour_index_range (int *cimin, int *cimax) ;

Queries the current range of colour indices affected by giza_set_colour_table, as set by giza_set_colour_index_range

Output:

cimin :lowest colour index in range
cimax :highest colour index in range

giza_set_range_as_colour_table

/*voidgiza_set_range_as_colour_table (int *cimin, int *cimax) ;

Can be used in place of giza_set_colour_table to install the colour table from a predefined set of colour indices

See Also:

giza_set_colour_table

giza_set_colour_palette

voidgiza_set_colour_palette (int palette) ;

Choose between various preset colour "palettes" for the first 16 colour indices commonly used for point and line drawing. This is equivalent to using giza_set_colour_representation for each index in turn.

Note:

Input:

palette :choice of colour palette

Available palette options:

0 or GIZA_COLOUR_PALETTE_DEFAULT :default giza palette
1 or GIZA_COLOUR_PALETTE_PGPLOT :default PGPLOT palette
2 to 4 :various experimental line palettes
5 :colourblind safe palette from http://jfly.iam.u-tokyo.ac.jp/color/
6 :optimum palette from http://web.media.mit.edu/~wad/color/palette.html
7 :graph-a-licious See Also: giza_set_colour_index, giza_set_colour_table

giza_set_colour_table

intgiza_set_colour_table (const double *controlPoints, const double *red, const double *green, const double *blue, int n, double contrast, double brightness) ;

Sets the colour table.

Input:

controlPoints :Specifies at which fraction of the ramp the control points are placed
red :the normalised value of the red component at each control point
green :the normalised value of the green component at each control point
blue :the normalised value of the blue component at each control point
n :the number of control points
contrast :contrast of colour ramp (normally 1.0). Use -contrast to reverse direction of ramp
brightness :brightness of colour ramp (normally 0.5)

Return:

0 :No error.
1 :An error occurred.

giza_set_colour_table_float

intgiza_set_colour_table_float (const float *controlPoints, const float *red, const float *green, const float *blue, int n, float contrast, float brightness) ;

Same functionality as giza_set_colour_table but takes floats

See Also:

giza_set_colour_table

giza_rgb_from_table

voidgiza_rgb_from_table (double pos, double *red, double *green, double *blue) ;

Gets the rgb values from the colour table corresponding to the fraction of the table.

Input:

pos :The fraction along the table to retrieve the colour from. A value less then 0 is assigned the colour at zero, and above one assigned the colour at one.
red :Gets set to the red component of the colour at pos.
green :Gets set to the green component of the colour at pos.
blue :Gets set to the blue component of the colour at pos.

See Also:

giza_set_colour_table

giza_rgb_from_table_float

voidgiza_rgb_from_table_float (float pos, float *red, float *green, float *blue) ;

Same functionality giza_rgb_from_table but takes floats

See Also:

giza_rgb_from_table giza_set_colour_table

giza_save_colour_table

void giza_save_colour_table (void) ;

Saves the current colour table

See Also:

giza_restore_colour_table

giza_restore_colour_table

void giza_restore_colour_table (void) ;

Restores the colour table from a previously saved one

See Also:

giza_save_colour_table

giza_set_environment

voidgiza_set_environment (double xmin, double xmax, double ymin, double ymax, int just, int axis) ;

Sets the plotting environment.

Input:

xmin :The min x value in world coords
xmax :The max x value in world coords
ymin :The min y value in world coords
ymax :The max y value in world coords
just :Give the x and y axis equal scales
axis :Options for drawing axis, ticks etc.

Axis:

-4 :draw box and major tick marks only
-3 :draw box and tick marks (major and minor) only
-2 :no axis, no box, no labels
-1 :draw the box only
0 :draw a box and label it with world coords
1 :same as 0 but also draw the axis
2 :same as 1 but also draw grid lines at major intervals
10 :draw box and label X-axis logarithmically
20 :draw box and label Y-axis logarithmically
30 :draw box and label X- and Y-axis logarithmically

giza_set_environment_float

voidgiza_set_environment_float (float xmin, float xmax, float ymin, float ymax, int just, int axis) ;

Same functionality as giza_set_environment but takes floats

giza_set_fill

voidgiza_set_fill (int fs) ;

Sets the current fill style.

Input:

fs :the new fill style

Fill Styles:

1 or GIZA_FILL_SOLID :solid
2 or GIZA_FILL_HOLLOW :hollow
3 or GIZA_FILL_HATCH :hatch
4 or GIZA_FILL_CROSSHATCH :crosshatch

giza_get_fill

voidgiza_get_fill (int *fs) ;

Query the current fill style.

Input:

fs :gets set to the current fill style.

giza_set_hatching_style

voidgiza_set_hatching_style (double angle, double spacing, double phase) ;

Sets the hatching style when using GIZA_FILL_HATCH

Input:

angle :the angle of the hatching pattern with respect to the horizontal
spacing :the line spacing, in units of the default (1.0)
phase :a number between 0.0 and 1.0 specifying the offset along the horizontal axis to start the hatching lines

See Also:

giza_fill giza_get_hatching_style

giza_set_hatching_style_float

voidgiza_set_hatching_style_float (float angle, float spacing, float phase) ;

Same as giza_set_hatching_style, but takes floats

giza_get_hatching_style

voidgiza_get_hatching_style (double *angle, double *spacing, double *phase) ;

Queries the current hatching style wgen using GIZA_FILL_HATCH

Output:

angle :the angle of the hatching pattern with respect to the horizontal
spacing :the line spacing, in units of the default (1.0)
phase :a number between 0.0 and 1.0 specifying the offset along the horizontal axis to start the hatching lines

See Also:

giza_fill giza_set_hatching_style

giza_get_hatching_style_float

voidgiza_get_hatching_style_float (float *angle, float *spacing, float *phase) ;

Same as giza_get_hatching_style, but takes floats

giza_begin_autolog

void giza_begin_autolog (void);

Turns on automatic logging of interactive devices This writes a png file every time the page is changed in an interactive device, with a name based on the current date/time (giza-%Y-%M-%D-%H:%M:%S.png). Logging can also be turned on by setting the GIZA_LOG environment variable.

See Also:

giza_end_autolog

giza_end_autolog

void giza_end_autolog (void);

Turns off automatic logging feature.

See Also:

giza_begin_autolog

giza_set_line_cap

voidgiza_set_line_cap (int lc) ;

Sets the line cap.

Input:

lc :An integer representing the line cap.

Options:

0 :butt
1 :round
2 :square

giza_get_line_cap

voidgiza_get_line_cap (int *lc) ;

Gets the current line cap, as set by giza_set_line_cap.

Input:

lc :gets set to the current line cap.

giza_set_line_style

voidgiza_set_line_style (int ls) ;

Sets the current line style.

Input:

ls :the new line style

Line Styles:

GIZA_LS_SOLID :solid
GIZA_LS_LONG_DASH :long dash
GIZA_LS_SHORT_DASH :short dash
GIZA_LS_DOT :dot
GIZA_LS_DASH_DOT :dash dot
GIZA_LS_DASH_DOT_DOT_DOT :dash dot dot dot

giza_get_line_style

voidgiza_get_line_style (int *ls) ;

Query the current line style.

Input:

ls :gets set to the current line style

giza_set_line_width

voidgiza_set_line_width (double lw) ;

Sets the line width for all subsequent drawing.

Input:

lw :The new line width. 1 is 1/4 of a millimetre.

giza_set_line_width_float

voidgiza_set_line_width_float (float lw) ;

Same functionality as giza_set_line_width but uses floats

See Also:

giza_set_line_width

giza_get_line_width

voidgiza_get_line_width (double *lw) ;

Queries the current line width.

Input:

lw :gets set to the current line width.

giza_start_prompting

voidgiza_start_prompting (void) ;

Turns on prompting for current device, i.e. the user will be prompted before a page change or a device being closed.

See Also:

giza_stop_prompting

giza_stop_prompting

voidgiza_stop_prompting (void) ;

Turns off prompting, i.e. the user will not be prompted before a page change or a device being closed.

See Also:

giza_start_prompting

giza_save

voidgiza_save (void) ;

Saves current plot settings

See Also:

giza_restore

giza_restore

voidgiza_restore (void) ;

Restores plot settings stored via giza_save

See Also:

giza_save

giza_set_font

voidgiza_set_font (const char *font) ;

Sets the current font to the family specified in font, otherwise it is unchanged.

Input:

font :the font family to be used.

giza_set_font_bold

voidgiza_set_font_bold (const char *font) ;

Sets the current font to the family specified in font, otherwise it is unchanged.

Input:

font :the font family to be used.

giza_set_font_italic

voidgiza_set_font_italic (const char *font) ;

Sets the current font to the family specified in font, otherwise it is unchanged.

Input:

font :the font family to be used.

giza_set_font_bold_italic

voidgiza_set_font_bold_italic (const char *font) ;

Sets the current font to the family specified in font, otherwise it is unchanged.

Input:

font :the font family to be used.

giza_get_font

voidgiza_get_font (char *font, int n) ;

Sets the current font to the family specified in font, otherwise it is unchanged.

Input:

font :Gets set to the current font family
n :The length of memory allocated to font

See Also:

giza_set_font

giza_set_text_background

voidgiza_set_text_background (int colourIndex) ;

Set the colour index for the background of any text to be drawn. Use a negative value for a transparent background.

Input:

colourIndex :The colour index the background will be.

giza_get_text_background

voidgiza_get_text_background (int *colourIndex) ;

Queries the current text background colour

Output:

colourIndex :Current setting for the background text colour.

giza_version

voidgiza_version (int *major, int *minor, int *micro) ;

Returns the giza version. Note that version information can also be obtained using the header variables GIZA_VERSION_STRING, GIZA_VERSION_MAJOR, GIZA_VERSION_MINOR and GIZA_VERSION_MICRO. These are available in the Fortran interface also.

Output:

major :major version number
minor :minor version number
micro :micro version number

giza_set_viewport

voidgiza_set_viewport (double xleft, double xright, double ybottom, double ytop) ;

Changes the size and position of the viewport, all arguments are in normalised device coordinates. The viewport is the region of the device that can be drawn to.

Input:

xleft :The x coordinate of the left edge of the viewport
xright :The x coordinate of the right edge of the viewport
ybottom :The y coordinate of the bottom edge of the viewport
ytop :The y coordinate of the top edge of the viewport

giza_set_viewport_float

voidgiza_set_viewport_float (float xleft, float xright, float ybottom, float ytop) ;

Same functionality as giza_set_viewport but takes floats

See Also:

giza_set_viewport

giza_get_viewport

voidgiza_get_viewport (int units, double *x1, double *x2, double *y1, double *y2) ;

Returns the viewport size and position.

Input:

units :specify the units to return values in.
x1 :set to x-coord of upper-left corner
x2 :set to x-coord of lower-right corner
y1 :set to y-coord of upper-left corner
y2 :set to y-coord of lower-right corner

Units:

0 or GIZA_UNITS_NORMALIZED :normalised device units
1 or GIZA_UNITS_INCHES :inches
2 or GIZA_UNITS_MM :mm
3 or GIZA_UNITS_PIXELS :pixels
5 or GIZA_UNITS_DEVICE :device units (pixels or points)
default :normalised device units

giza_get_viewport_float

voidgiza_get_viewport_float (int units, float *x1, float *x2, float *y1, float *y2) ;

Same functionality as giza_get_viewport but uses floats

See Also:

giza_get_viewport

giza_set_viewport_default

voidgiza_set_viewport_default (void) ;

Sets the viewport to the default settings

See Also:

giza_set_viewport

giza_set_viewport_inches

voidgiza_set_viewport_inches (double xleftin, double xrightin, double ybottomin, double ytopin) ;

Sets the viewport size in inches

See Also:

giza_set_viewport

giza_set_viewport_inches_float

voidgiza_set_viewport_inches_float (float xleftin, float xrightin, float ybottomin, float ytopin) ;

Same as giza_set_viewport_inches but takes floats

See Also:

giza_set_viewport_inches

giza_start_warnings

voidgiza_start_warnings (void) ;

Warnings will be printed to stderr.

See Also:

giza_stop_warnings

giza_stop_warnings

voidgiza_stop_warnings (void) ;

Warnings will not be printed to stderr.

See Also:

giza_start_warnings

giza_set_window

voidgiza_set_window (double x1, double x2, double y1, double y2) ;

Sets the limits of the axis.

Input:

x1 :the lowest value of the x axis
x2 :the highest value of the x axis
y1 :the lowest value of the y axis
y2 :the highest value of the y axis

giza_set_window_float

voidgiza_set_window_float (float x1, float x2, float y1, float y2) ;

Same functionality as giza_set_window but uses floats.

See Also:

giza_set_window

giza_set_window_equal_scale

voidgiza_set_window_equal_scale (double x1, double x2, double y1, double y2) ;

Sets the window so the x axis ranges from x1 to x2 and y from y1 to y2, then adjusts the view port to the largest possible size that that allows the axis have equal scales.

Input:

x1 :the lowest value of the x axis
x2 :the highest value of the x axis
y1 :the lowest value of the y axis
y2 :the highest value of the y axis

giza_set_window_equal_scale_float

voidgiza_set_window_equal_scale_float (float x1, float x2, float y1, float y2) ;

Same functionality as giza_set_window_equal_scale but uses floats

See Also:

giza_set_window_equal_scale

giza_get_window

voidgiza_get_window (double *x1, double *x2, double *y1, double *y2) ;

Query the boundaries of the window in world coords

Input:

x1 :Gets set to the lowest value of the x axis
x2 :Gets set to the highest value of the x axis
y1 :Gets set to the lowest value of the y axis
y2 :Gets set to the highest value of the y axis

giza_get_window_float

voidgiza_get_window_float (float *x1, float *x2, float *y1, float *y2) ;

Same functionality as giza_get_window but uses floats

Interactive

giza_band

intgiza_band (int mode, int moveCurs, double xanc, double yanc, double *x, double *y, char *ch) ;

Returns the cursor position and character typed by the user relative to an anchor point

Input:

mode :selects the type of shape to draw during input
moveCurs :if 1 the cursor is moved to (x, y), if 0 the cursor is not moved.
xanc :the x-coord of the anchor point.
yanc :the y-coord of the anchor point.
x :Gets set to the x position of the cursor.
y :Gets set to the y position of the cursor.
ch :Gets set to the character pressed by the user.

Return:

1 :The device has no cursor
0 :The call was successful

Modes:

0 or GIZA_BAND_NONE :None, behaves like giza_get_key_press
1 or GIZA_BAND_LINE :Straight line drawn from anchor point
2 or GIZA_BAND_RECTANGLE :Hollow rectangle
3 or GIZA_BAND_HORZLINES :Two horizontal lines
4 or GIZA_BAND_VERTLINES :Two vertical lines
5 or GIZA_BAND_HORZLINE :Single horizontal line, ignores anchor point
6 or GIZA_BAND_VERTLINE :Single vertical lines, ignores anchor point
7 or GIZA_BAND_CROSSHAIR :Cross hair, ignores anchor point
8 or GIZA_BAND_CIRCLE :Circle centred on anchor point

See Also:

giza_get_key_press

giza_band_float

intgiza_band_float (int mode, int moveCurs, float xanc, float yanc, float *x, float *y, char *ch) ;

Same functionality as giza_band, but uses floats.

See Also:

giza_band

giza_mark_points

voidgiza_mark_points (int maxpts, int *npts, double* xpts, double* ypts, int symbol) ;

Mark a set of points using the cursor

Input:

maxpts :maximum number of points that may be accepted
symbol :symbol code for drawing points

Input/Output:

xpts :the x-coord of the points
ypts :the y-coord of the anchor point.
npts :number of points entered, should be zero on first call

See Also:

giza_points

giza_mark_points_float

voidgiza_mark_points_float (int maxpts, int *npts, float* xpts, float* ypts, int symbol) ;

Same functionality as giza_mark_points, but takes floats

See Also:

giza_mark_points

giza_mark_points_ordered

voidgiza_mark_points_ordered (int maxpts, int *npts, double* xpts, double* ypts, int symbol) ;

Mark a set of points using the cursor

Input:

maxpts :maximum number of points that may be accepted
symbol :symbol code for drawing points

Input/Output:

xpts :the x-coord of the points
ypts :the y-coord of the anchor point.
npts :number of points entered, should be zero on first call

Note:

See Also:

giza_points

giza_mark_points_ordered_float

voidgiza_mark_points_ordered_float (int maxpts, int *npts, float* xpts, float* ypts, int symbol) ;

Same functionality as giza_mark_points_ordered, but takes floats

See Also:

giza_mark_points

giza_mark_line

voidgiza_mark_line (int maxpts, int *npts, double* xpts, double* ypts) ;

Mark a set of points using the cursor

Input:

maxpts :maximum number of points that may be accepted

Input/Output:

xpts :the x-coord of the points
ypts :the y-coord of the anchor point.
npts :number of points entered, should be zero on first call

See Also:

giza_mark_points

giza_mark_points_float

voidgiza_mark_line_float (int maxpts, int *npts, float* xpts, float* ypts) ;

Same functionality as giza_mark_line, but takes floats

See Also:

giza_mark_line giza_mark_points giza_mark_line_ordered

giza_mark_line_ordered

voidgiza_mark_line_ordered (int maxpts, int *npts, double* xpts, double* ypts) ;

Mark a set of points using the cursor

Input:

maxpts :maximum number of points that may be accepted

Input/Output:

xpts :the x-coord of the points
ypts :the y-coord of the anchor point.
npts :number of points entered, should be zero on first call

Note:

See Also:

giza_mark_line giza_mark_points

giza_mark_line_ordered_float

voidgiza_mark_line_ordered_float (int maxpts, int *npts, float* xpts, float* ypts) ;

Same functionality as giza_mark_line_ordered, but takes floats

See Also:

giza_mark_points

giza_mark_line_char

voidgiza_mark_line_char (int maxpts, int *npts, double* xpts, double* ypts, char *ch) ;

Same functionality as giza_mark_line, but also returns last character pressed

See Also:

giza_mark_line

giza_mark_points_float

voidgiza_mark_line_char_float (int maxpts, int *npts, float* xpts, float* ypts, char *ch) ;

Same functionality as giza_mark_line, but takes floats

See Also:

giza_mark_line giza_mark_points giza_mark_line_ordered

giza_get_key_press

intgiza_get_key_press (double *x, double *y, char *ch) ;

Returns the cursor position and key press after a key press.

Input:

x :Gets set to the x world coord of the cursor.
y :Gets set to the y world coord of the cursor.
ch :Gets set to the character pressed.

Return value:

0 :If the call was successful
1 :If the device has no cursor
giza-1.5.0/docs/documentation/api.shtml000066400000000000000000000036531477367113400201160ustar00rootroot00000000000000 giza - API Reference Manual
giza

API Reference Manual

Here we provided a function by function reference for cairo.

Index

Device Managment
Drawing
giza_arrow
Text
giza_annotate

Functions for drawing

giza_arrow

Draws an arrow.

e tail of the arrow.
  • x2: The world x-coord of the tail of the arrow.
  • y2: The world y-coord of the head of the arrow.
  • x1: The world x-coord of the tail of the arrow.
  • e position of the text will be relativeto the specified side.
  • justification: Specifies the justification of the text.0.0 means the left most edge of the stringwill be aligned with coord, 1.0 means theright most edge of the string will be aligned with coord etc.
  • coord: The location of the text along the edgeof the view port specified in side,measured as a fraction of that size
  • string: The text that will be displayed.
  • displacement: The displacement of the text from the edge of the view-port specified inside, measured out of the view-port in units of character height.
  • giza-1.5.0/docs/documentation/cpgplot-status.html000066400000000000000000000725571477367113400221640ustar00rootroot00000000000000
    cpgarroIMPLEMENTEDdraw an arrow
    cpgaskIMPLEMENTEDcontrol new page prompting
    cpgaxisIMPLEMENTEDdraw an axis
    cpgbandIMPLEMENTEDread cursor position, with anchor
    cpgbbufIMPLEMENTEDbegin batch of output (buffer)
    cpgbegIMPLEMENTEDopen a graphics device
    cpgbinIMPLEMENTEDhistogram of binned data
    cpgboxIMPLEMENTEDdraw labeled frame around viewport
    cpgcircIMPLEMENTEDdraw a circle, using fill-area attributes
    cpgclosIMPLEMENTEDclose the selected graphics device
    cpgconbPARTIALLY IMPLEMENTEDcontour map of a 2D data array, with blanking
    cpgconfNOT IMPLEMENTEDfill between two contours
    cpgconlPARTIALLY IMPLEMENTEDlabel contour map of a 2D data array
    cpgconsIMPLEMENTEDcontour map of a 2D data array (fast algorithm)
    cpgcontIMPLEMENTEDcontour map of a 2D data array (contour-following)
    cpgctabIMPLEMENTEDinstall the color table to be used by pgimag
    cpgcursIMPLEMENTEDread cursor position
    cpgdrawIMPLEMENTEDdraw a line from the current pen position to a point
    cpgebufIMPLEMENTEDend batch of output (buffer)
    cpgendIMPLEMENTEDclose all open graphics devices
    cpgenvIMPLEMENTEDset window and viewport and draw labeled frame
    cpgerasIMPLEMENTEDerase all graphics from current page
    cpgerr1IMPLEMENTEDhorizontal or vertical error bar
    cpgerrbIMPLEMENTEDhorizontal or vertical error bar
    cpgerrxIMPLEMENTEDhorizontal error bar
    cpgerryIMPLEMENTEDvertical error bar
    cpgetxtNOT IMPLEMENTEDerase text from graphics display
    cpggrayIMPLEMENTEDgray-scale map of a 2D data array
    cpghi2dNOT IMPLEMENTEDcross-sections through a 2D data array
    cpghistIMPLEMENTEDhistogram of unbinned data
    cpgidenIMPLEMENTEDwrite username, date, and time at bottom of plot
    cpgimagIMPLEMENTEDcolor image from a 2D data array
    cpglabIMPLEMENTEDwrite labels for x-axis, y-axis, and top of plot
    cpglcurIMPLEMENTEDdraw a line using the cursor
    cpgldevIMPLEMENTEDlist available device types on standard output
    cpglenIMPLEMENTEDfind length of a string in a variety of units
    cpglineIMPLEMENTEDdraw a polyline (curve defined by line-segments)
    cpgmoveIMPLEMENTEDmove pen (change current pen position)
    cpgmtxtIMPLEMENTEDwrite text at position relative to viewport
    cpgncurIMPLEMENTEDmark a set of points using the cursor
    cpgnumbIMPLEMENTEDconvert a number into a plottable character string
    cpgolinIMPLEMENTEDmark a set of points using the cursor
    cpgopenIMPLEMENTEDopen a graphics device
    cpgpageIMPLEMENTEDadvance to new page
    cpgpanlIMPLEMENTEDswitch to a different panel on the view surface
    cpgpapIMPLEMENTEDchange the size of the view surface
    cpgpixlIMPLEMENTEDdraw pixels
    cpgpntsNOT IMPLEMENTEDdraw several graph markers, not all the same
    cpgpolyIMPLEMENTEDdraw a polygon, using fill-area attributes
    cpgptIMPLEMENTEDdraw several graph markers
    cpgpt1IMPLEMENTEDdraw one graph marker
    cpgptxtIMPLEMENTEDwrite text at arbitrary position and angle
    cpgqahIMPLEMENTEDinquire arrow-head style
    cpgqcfIMPLEMENTEDinquire character font
    cpgqchIMPLEMENTEDinquire character height
    cpgqciIMPLEMENTEDinquire color index
    cpgqcirIMPLEMENTEDinquire color index range
    cpgqclpIMPLEMENTEDinquire clipping Status
    cpgqcolIMPLEMENTEDinquire color capability
    cpgqcrIMPLEMENTEDinquire color representation
    cpgqcsIMPLEMENTEDinquire character height in a variety of units
    cpgqdtNOT IMPLEMENTEDinquire name of nth available device type
    cpgqfsIMPLEMENTEDinquire fill-area style
    cpgqhsIMPLEMENTEDinquire hatching style
    cpgqidIMPLEMENTEDinquire current device identifier
    cpgqinfNOT IMPLEMENTEDinquire pgplot general information
    cpgqitfIMPLEMENTEDinquire image transfer function
    cpgqlsIMPLEMENTEDinquire line style
    cpgqlwIMPLEMENTEDinquire line width (as integer)
    cpgqndtNOT IMPLEMENTEDinquire number of available device types
    cpgqposIMPLEMENTEDinquire current pen position
    cpgqtbgIMPLEMENTEDinquire text background color index
    cpgqtxtIMPLEMENTEDfind bounding box of text string
    cpgqvpIMPLEMENTEDinquire viewport size and position
    cpgqvszIMPLEMENTEDinquire size of view surface
    cpgqwinIMPLEMENTEDinquire window boundary coordinates
    cpgrectIMPLEMENTEDdraw a rectangle, using fill-area attributes
    cpgrndIMPLEMENTEDfind the smallest `round' number greater than x
    cpgrngeIMPLEMENTEDchoose axis limits
    cpgsahIMPLEMENTEDset arrow-head style
    cpgsaveIMPLEMENTEDsave pgplot attributes
    cpgunsaIMPLEMENTEDrestore pgplot attributes
    cpgscfIMPLEMENTEDset character font
    cpgschIMPLEMENTEDset character height
    cpgsciIMPLEMENTEDset color index
    cpgscirIMPLEMENTEDset color index range
    cpgsclpIMPLEMENTEDenable or disable clipping at edge of viewport
    cpgscrIMPLEMENTEDset color representation
    cpgscrlNOT IMPLEMENTEDscroll window
    cpgscrnNOT IMPLEMENTEDset color representation by name
    cpgsfsIMPLEMENTEDset fill-area style
    cpgshlsIMPLEMENTEDset color representation using hls system
    cpgshsIMPLEMENTEDset hatching style
    cpgsitfIMPLEMENTEDset image transfer function
    cpgslctIMPLEMENTEDselect an open graphics device
    cpgslsIMPLEMENTEDset line style
    cpgslwIMPLEMENTEDset line width
    cpgstbgIMPLEMENTEDset text background color index
    cpgsubpIMPLEMENTEDsubdivide view surface into panels
    cpgsvpIMPLEMENTEDset viewport (normalized device coordinates)
    cpgswinIMPLEMENTEDset window
    cpgtboxIMPLEMENTEDdraw frame and write (dd) hh mm ss.s labelling
    cpgtextIMPLEMENTEDwrite text (horizontal, left-justified)
    cpgtickIMPLEMENTEDdraw a single tick mark on an axis
    cpgupdtIMPLEMENTEDupdate display
    cpgvectIMPLEMENTEDvector map of a 2D data array, with blanking
    cpgvsizIMPLEMENTEDset viewport (inches)
    cpgvstdIMPLEMENTEDset standard (default) viewport
    cpgwedgIMPLEMENTEDannotate an image plot with a wedge
    cpgwnadIMPLEMENTEDset window and adjust viewport to same aspect ratio

    101 of 110 routines implemented, 99 of 110 fully implemented.

    giza-1.5.0/docs/documentation/gettingstarted.c000066400000000000000000000013201477367113400214550ustar00rootroot00000000000000#include int main (int argc, char **argv) { int error; // Open the giza device error = giza_open_device ("?", "Getting_Started"); if (error) { // Something went wrong so exit return 1; } // Set up the drawing environment giza_set_environment (-10., 10., 0., 100., 0, 0); // Draw a line int i, n = 100; double xpts[n], ypts[n]; for (i = 0; i < n; ++i) { xpts[i] = -10. + (double) i * 20. / (double) (n - 1); ypts[i] = xpts[i] * xpts[i]; } giza_line (n, xpts, ypts); // Label the axes giza_annotate ("B", 2.5, 0.5, 0.5, "Furlongs"); giza_annotate ("L", 2.5, 0.5, 0.5, "Parsecs"); // Close the giza device giza_close_device (); return 0; } giza-1.5.0/docs/documentation/gettingstarted.html000066400000000000000000000116701477367113400222100ustar00rootroot00000000000000 giza - getting started
    giza

    Getting started

    This tutorial will show you the basics of using giza to create scientific plots with a simple example. We will generate the following graph;

    sample1

    Click here to get the source file, or read on for a detailed description of the file.

    Include the header

    First things first include the giza header:

    #include <giza.h>

    Opening a device

    Next, before attempting any drawing you must open a giza device:

    error = giza_open_device ("?", "Getting_Started");

    The first argument to this function specifies which device to open. "?" tells giza to prompt the user for a device. Other available devices should be specified by "/png", "/pdf", "/xw" or "/null". The second argument specifies a name for the open device. This name will be the name given to the xwindow or file that will be drawn to. The function returns 0 if no error has occurred.

    Prepare the environment

    To get the device ready for drawing you should make a call to giza_set_environment:

    giza_set_environment (-10., 10., 0., 100., 0, 0);

    The first two arguments sets the range of the x-axis that will be displayed on the plot. The next two arguments set the range of the y-axis that will be displayed. The second last arguments will determine if the axes will be sized to give them equal scale. If set to 0 both axes will be made as large as possible, if set to 1 the axes will have equal scales. The last argument specifies the way in which the box around the plot area is drawn. Some of the options are -2 for no axis or box, -1 for only the box, 0 for a labeled box or 1 for a box and axis with labels.
    Now your ready to do your drawing.

    Drawing a line

    We will start by drawing a line:

    int i, n = 100;
    double xpts[n], ypts[n];
    
    for (i = 0; i < n; ++i)
      {
        xpts[i] = -10. + (double) i * 20. / (double) (n - 1);
        ytps[i] = xpts[i] * xpts[i];
      }
    
    giza_line (n, xpts, ypts);
        

    The line is a series of points that are joined by straight segments. So first of all we set up an array of the x coordinates for these points and a matching array of y coordinates. Then we call giza_line which takes as arguments the number of points to be joined, then an array on the x coordinates followed by an array of y coordinates.

    Labeling the axes

    Next we will label the axes.

    giza_annotate ("B", 2.5, 0.5, 0.5, "Furlongs");
    giza_annotate ("L", 2.5, 0.5, 0.5, "Parsecs");
        

    The first argument for annotate specifies which side of the box the text is positioned relative to. Some of the options are "B" for bottom, "L" for left, "T" for top and "R" for right. The next argument specifies how far outside of the box the text is drawn. It is specified in units of character height. The third argument specifies the position of the text along the specified edge of the box, as a fraction of the edge. The fourth argument specifies the justification of the text, 0.0 for left justified, 0.5 for centre justified and 1 for right justified etc. The final argument specifies the string of text to be drawn.

    Closing the device

    Now last of all we close the gize device:

    giza_close_device ();

    Compiling the code

    Open a terminal and change into the directory containing the gettingstarted.c file, then run the following commands to compile then run your code:

    gcc -o gettingstarted gettingstarted.c -lgiza
    ./gettingstarted
        

    If you installed giza to a non-standard directory you may need to also give gcc the path to this location. for example:

    gcc -o -gettingstarted gettingstarted.c -L/path/to/giza/installation -lgiza
        
    giza-1.5.0/docs/documentation/images/000077500000000000000000000000001477367113400175325ustar00rootroot00000000000000giza-1.5.0/docs/documentation/images/Getting_Started.png000066400000000000000000000553521477367113400233410ustar00rootroot00000000000000‰PNG  IHDR X'bKGDÿÿÿ ½§“ IDATxœìÝw@•uÿÿñë°Eq¤†+M‰¹+÷ž ’YŠ(œ¸Í-îŽ\ˆŠ å6Í2GÎJËÔÜÞæTTàœßÞ¿êök ‡sÎû\ç<ÿIÆyvŸ»Û×ý¹.®£Ñét ÇF:ÀÒ0° Œ`` ,c` ÀÀXÆÀ00€1° Œ`` ,c` ÀÀXÆÀ00€1° Œ`` ,c` ÀÀXÆÀ00€1° Œ`` ,c` ÀÀXÆÀ00€1° Œ``vÒŠ¢(ׯ_OJJ:}úôÝ»w5««ëG}Ô¶mÛ¢E‹J§d›F§Ó ¾ü‹/† ¶téRNW¨P¡½sçÎ¥K—.^¼xûöí´´´£Gj4šáÇËd—ðÀÊ;÷âÅ‹kÖ¬éèèøÏ¯ÛÛÛרQcÁ‚...RmúXiiioþ ééé¦)0áekkëããóÕW_ݾ}[«Õ¾ü¢V«½sçή]»:wîüÊÉ€ù¾É=##cÆŒ³gÏNMMµ±±qvvV%---33ÓÅÅeĈcÆŒ±µµ,È.áõÒãÇ¿ù曓'OþùçŸ666E‹­^½zãÆsåÊ%mfñ¬‡^»víÆ/ŸÎžž^¸páG1°€ñ,ã9X&|‰0wîÜS¦Lù¿_ù¬5jŒ=ú ûÑ£G8`¬8 ¤qãÆµjÕ’®ÐŸºŸƒuàÀ… ´è5fÍšõÖκxñbLLŒQ_BQ”˜˜˜‹/õ%ÒÒÒfÍšeÔ—PåàÁƒ4ö«ð¾gï{¶ð¾g ï{¶XÌû¾páBÕ èD…‡‡wêÔiûöí·nÝÊÌÌ|ùÅÌÌÌÿüç?;wî 3fÌþöˆˆˆ%Oø¬·Ú»wï[O||¼ b`&<<<<<<¤+`j¼ïÖ‰÷ÝÚÄÇÇûøøHW€ð V@@À©S§þí¯jµÚk×®õèÑãÍߤeË–}úôINNΗ/Ÿû€©$''?~<>>þ§Ÿ~’nÉ)áÕ½{÷Ó§O{zzÚØ¼æ,-==ý«¯¾zë7±··÷ððضm[`` €)$%%yzzÚÛÛK‡€ðÀjÕªÕØ±cß0Œš4i’•ïããã³téRêß¿é þK£Ñ|úé§oø žžžYù>Íš5ûñÇ“““ ÔLêáÇ'OžlÖ¬™tˆaÈßäþæÇ+8::f囨ÛÛ·iÓ&11Ñ@QÀ¤’’’Ú´icì'¾šŒüÀ2~–õ²˜Ÿ|ÉrVÓ¦MOŸ>ýàÁé=<8sæLo¼VËX¶¶¶mÛ¶5öçƒKLLôòò²€ç‹þÅr–ÂUBÔÉ®*6°7nüË/¿p•¹ÿþ¹sç5j$bH5°lllÚ¶m› ²*!!ÁËËëµW/‹ú‡Q¸J€ÚXÞõAÅòVƒ Ο?ÿþ}éðvwïÞ=þ|ýúõ¥C ÌÒÖË«„¨XöÀrsssqq9{ö¬tøÛ™3gòåËWºtié#²ä¥ð@,Ì?þê/>°üýý7mÚ¤Óé¤C€¢(ŠN§‹·ì냊ŬbÅŠ+VìøñãÒ!@Q娱cÅ‹/Z´¨tˆqYøÀR¸J€9±†ëƒŠ5 ,ŸÍ›7kµZé¬]ffæ–-[,øî±üU¸pá *|÷ÝwÒ!X»ï¾ûÎÝݽP¡BÒ!FgùKá*!æÁJ®*V2°Ú·o¿mÛ¶ÌÌLé¬WffæöíÛÛ·o/b V1°ÞyçªU«~óÍ7Ò!X¯ýû÷W«V­@Ò!¦`KQ”ÀÀÀõë×KW`½Ö¯_(]a"Ö2°¼¼¼öìÙ“––&€5zúôéþýû?ýôSé±–åììܬY³íÛ·K‡`¶oßÞ´iS'''é±–¥(J@@@ll¬tÖ(666 @ºÂt¬h`µhÑâĉ=’Àº°EñóóÛ°aƒt– ..Îßß_ºBKéÚµktt´t– :::00PºBK)[¶lîܹϞ=+€º9sÆÅÅ¥lÙ²Ò!òXŠÂ­î··ÿ…¥(аqãÆÌÌLéÔ*33sÓ¦MÜ€õKQ¥páÂ+VøO ¬ÿêСÃÎ;ÓÒÒ¤CPŸ´´´]»vµoß^:Ä\0°þËÙÙ¹Y³fÛ·o—@}¶mÛÖ¼ysgggésÁÀúW Ð×_ÁÀú[óæÍO:uïÞ=éÔäÞ½{§OŸnÖ¬™tˆa`ýÍÖÖ¶cÇŽñññÒ!¨I||¼···­­­tˆa`ý€€€¸¸8é Ô$666 @ºÂ¼0°þGÍš5>|xáÂéÔá·ß~KNNþä“O¤CÌ ëU]ºtÙ°aƒtê°aÃnoÿ¿X¯êÚµëúõëu:tæN§Ó­_¿>00P:Äì0°^U¬X±Ò¥K÷ÝwÒ!˜»C‡•)S¦X±bÒ!f‡õ]»vŽŽ–®ÀÜEGGwíÚUºÂ1°^ÃÛÛû믿æcsxƒ§OŸîر£cÇŽÒ!æˆõ¹sçnÚ´iRR’tæ+))©Y³f¹sç–1G ¬×ã*!oÆõÁ7``½^³fÍ~ùå—ÿüç?Ò!˜£ÿüç?çÏŸoÚ´©tˆ™b`½ž¯¯oll¬tæhÆ ¾¾¾66 ‰×ã?—Õ½{w®ðZÑÑÑݺu“®0_ ¬U±bEFsöìYéÌËÙ³gmmm+V¬(b¾Xoòò©îÒ˜no+Ö›tîÜyãÆ™™™Ò!˜‹ÌÌÌM›6uîÜY:Ĭ1°ÞäÝwß­\¹òÞ½{¥C0{öì©R¥JáÂ…¥CÌë-ºvíºnÝ:é Ìźuë¸>øV ¬·h×®Ý7ß|“œœ,€¼G8pàÓO?•1w ¬·prròððHLL”@^bb¢§§§“““tˆ¹c`½]ppðªU«¤+·jÕªàà`é ``½]ýúõÿüóÏK—.I‡ éÒ¥KwïÞ­W¯žtˆ 0°²¤sçÎ<Õ`åÖ­[×¥Ké uPýÀЉ‰ñõõ5j”Q_¥[·nëÖ­ÓjµF}Ì–V«]¿~}=Œú*£Fòõõ‰‰1꫘€t@NÕªUËÏÏ/oÞ¼F}•R¥J¹¹¹hIXÙРAƒ7nð@,€U¹téÒ­[·êׯ/¢& ¬lÐh4]»våX«ݵkWF#¢& ¬ìéÞ½{tt4ÄX ­V»nݺnݺI‡¨ +{J•*õþûïûí·Ò!˜ÂÁƒÝÜÜJ•*%¢2 ¬lãVw€õàövý0°²ÍÛÛ{çÎ?–À¸RSSwíÚÅã¯ôÀÀʶܹs{zzò@,€ÅÛ²eKëÖ­¥CÔ‡¥®¬×õÆÀÒGƒ ®^½zíÚ5éŒååŸt<þJ? ,}ØØØtïÞ}õêÕÒ!ËêÕ«{ôèacÃTÐÿ©é)88xíÚµ™™™Ò!^fffTTTPPtˆZ1°ôT¢D‰ *ìÛ·O:ÃÛ»w¯»»{‰%¤CÔŠ¥¿ààà5kÖHW`xkÖ¬ –®P1–þÚ·oèС{÷îI‡`H÷îÝûî»ïÚµk'¢b ,ý988x{{ÇÆÆJ‡`H6lèÔ©“ƒƒƒtˆŠ1°r¤W¯^\%X˜•+WöìÙSºBÝX9R¹re›S§NI‡`'Ožttt¬\¹²tˆº1°r*((ˆb,ÆêÕ«y:CÎ1°r*00pË–-iiiÒ!äÔÓ§O·nÝÚ¥KéÕc`åT¾|ùš4i’ @N%$$4mÚ4_¾|Ò!ªÇÀ2ˆ° <þÊPXдiÓ+W®\½zU:ý]ºtéÊ•+Mš4‘± ,Ðh4]ºtá  jÑÑÑ]»vÕh4Ò!–€e={öŒŠŠâ³Ÿ*•™™¹víZ® Ë0J”(Q¾|ùýû÷K‡ }ûöU¨POw6–Áq• RkÖ¬áñWÄÀ2˜víÚ•àõž>}ºuëÖÎ;K‡X&–QäË—¯yóæ[·n•àõ¶lÙÒ¢E‹|ùòI‡X&–±ôîÝ›[ÝfkåÊ•½{÷–®°X ,c©_¿þÝ»wÏŸ?/À«ÎŸ?ÿþýzõêI‡X,–¯Y³Fº€W­^½:88XºÂ’1°Œ¨GqqqéééÒ!üíùóç±±±Ý»w—±d ,#*X°`:u’’’¤CøÛ¶mÛêׯ_°`AéKÆÀ2®   ®ÌÊš5kzôè!]aáT?°.^¼¸wïÞcÇŽI‡¼^«V­~ÿý÷‹/J‡ (ŠrñâÅ‹/¶jÕJ:äõŽ;¶wï^ øsÓN: §Ž=šœœìææV³fMé–×Ðh4AAA«W¯ž>}ºt ʪU«‚ƒƒ5tÈëmݺõòåË¿þúkÙ²e¥[rD£Óé¤ô7sæLEQFŽ)ò&wîÜùä“O.]ºdoo/ݰj/^¼(W®Ü‰' *$Ýò&ªøóýÍT‰Ðü¹ººÖ®];11Q:`ík×®mæëÊ20°L!$$dÅŠÒk·bÅŠé «ÀÀ2…¦M›^»ví÷ß—X¯ßÿýúõëMš4‘± ,SÐh4={ö\µj•tÀz­\¹²W¯^f{{»…a`™HPPPLLÌóçÏ¥CÖèùóç6l ’± ,)T¨Pýúõ¹Õ "!!¡Aƒ<½ÝdX¦²|ùré €5Z¾|9··›Ët7n|çÎ .H‡¬Ë… þüóÏFI‡X–IñÅÒë²bÅŠž={JWX–IuïÞ=66öÙ³gÒ!kñìÙ³¸¸¸nݺI‡X–I,X°qãÆ_~ù¥tÀZlݺµI“&ÜÞnb ,SãVw€)q{»–©5hÐàþýûçΓX¾_~ùåÁƒõë×—±: ,AAAkÖ¬‘®X¾5kÖKWX#–€àààØØØ§OŸJ‡,Ù“'OâââX"XòçÏïáá'°dqqqžžžùò哱F , Xºt©tÀ’-Y²¤ÿþÒVŠ%£Zµj666Ç—X¦cÇŽ9::V«VM:ÄJ1°Äôë×C,€‘,]º´_¿~ÒÖ‹%ÆÏÏo÷îÝ<Xšû÷ïïÙ³Ç××W:Äz1°ÄäÊ•ËÏÏoíÚµÒ!K³víZÿ\¹rI‡X/–¤ÐÐÐeË–iµZé€åÐjµË—/çú ,–¤2eÊ”.]zß¾}Ò!˱wï^77·2eÊH‡X5–0nu··›–0//¯³gÏÞ¸qC:` ®^½zöìÙ¶mÛJ‡X;–0[[ÛîÝ»ñÅÒ!K°jÕª   [[[ékÇÀ’×»wïµkצ§§K‡Ô-===**ªW¯^Ò!``™"EŠÔªU+11Q: n µk×.R¤ˆtXæ[Ý9Çííæƒe7n|óæÍßÿ]: V.\¸}ûv£F¤C ( ,3¡Ñh8ÄäÄËã+F#Ea`™àààM›6¥¤¤H‡Ô'%%%>>>88X:ÿÅÀ2...:tˆŽŽ–¨Ïºuë:vì˜'OéüËŒ 4(22R§ÓI‡ÔD§Ó-Y²dàÀÒ!øËŒ”+W®xñâ|4! [öîÝ[ªT©råÊI‡ào ,óÒ¿ÿÅ‹KWÔdñâÅýû÷—®Àÿ``™//¯_~ùå?þ¨ÃåË—ÏŸ?χš–y±±±éÝ»7ÏkdÑÒ¥K{÷îmcÃèæ…÷ÃìôêÕkýúõOž<‘˜»'OžÄÆÆöîÝ[:¯b`™‚ zxxÄÆÆJ‡Ì݆ ZµjU @鼊eŽ ôùçŸKWÌšN§[´hOg0O ,sT­Z5ggçC‡I‡ÌסC‡òåËW­Z5é¼ËLõïßÉ’%ÒóµdÉžÎ`¶XfªS§N‡¾qã†tÀݸqãØ±c:u’Áë1°Ì”ƒƒCppðŠ+¤Cæhùòå=zô°··—Áë1°ÌW¯^½Ö®]›žž.0//^¼ˆŠŠêÕ«—tþË|½÷Þ{µjÕŠ—˜—øøøÚµk—(QB:ÿŠeÖ†:wî\é €y™;wîСC¥+ð&ªX³fÍ*S¦L»ví¤CŒ¢N:ööößÿ½tÀ\|÷Ýwµk×–1ŠvíÚ•)SfÖ¬YÒ!9e'S ³³Sý?È¿4hÐÂ… ëÕ«'0 . “®0–õë×gdd,\¸P:$§T‚•+W® ¸¸¸H‡‹Ïñãǯ]»&÷Ç?~Ü‚ŸÎàââR @\¹rI‡ä”ê–ų··ïÕ«Wdd¤t@Þ²eËúôéÃÓÌKBBB¢££Ÿ}úH‡àíX*P¨P!OOÏ 6H‡$ÅÄÄ´iÓ¦P¡BÒ!x;–:  6LKK;vì˜tÀ¸Ž;öìÙ³ H‡ ÛXª4hРE‹IWŒ‹‡‹ªK•|}}øá‡k×®I‡ŒåÚµkGŽñõõ•>Xªdooß§OŸÏ?ÿ\:`,K–, ±³³“>Xj²aÆÇK‡ /%%%&&¦OŸ>Ò!ÐK­òçÏß¾}ûÕ«WK‡ oÍš5ÞÞÞùóç—žX*6tèÐE‹effJ‡ )##cñâÅUåçŸ ˆˆHKK3\²ÄÎήwïÞK—.•äÔÒ¥KûôéÃÃE-€þ«D‰ëׯöìÙõë×6lxàÀ»w‡0YÔ·oß 6¤¤¤H‡ô—œœ"Ð`3fèС 0`€N§Û¿ÿܹs+V¬hÀ8dÑ;ï¼ãïïÏ'瀪}þùçï¼óŽt §‡±±±IIIK—.-R¤ˆ¢(ׯ_7D²mÈ!uêÔ2dˆ“““t Ûž={¶téR~*Übè‚åêêZ®\¹.]ºôîÝ;$$äÒ¥KS§N;w®ãu’¡Ä IDAT%J”hÒ¤Éúõë¥CúˆŽŽnÚ´iñâÅ¥C`ú¬àààãÇ_»vmÅŠÆÁÁ¡S§NgΜ1`²eĈsçÎÕjµÒ!€ìÑjµsçÎ1b„t FÿõâÅ‹/¿üò¯Ÿt8sæL*T¨` 0d[åÊ•K•*µ}ûvé@ölÛ¶­téÒ•*U’Áè?°|àÀ—¿lÙ²eXXØÙ³g Ó½Œ1böìÙÒ€ì™={6ÇWFÿuóæÍ .¼ü¥ƒƒCçÎûöík 0è£Y³fiii‡–dÕáÇ322š6m*CÒ`U¯^½\¹rÿüÊÝ»wOœ8‘ã$äÈðáÃçÌ™#]ȪٳgóÑΖGÿ•––vêÔ©¿~yöìÙ &T®\ÙUПÏÏ?ÿ|þüyéÀÛ?þ—_~éÔ©“t Lÿç`=º]»vE‹½qãÆ±cÇ (À¶ˆ³µµ8pà‚ –/_.Ýx‹ùóç4ÈÖÖV:¦ÿÀÊŸ?ÿ7ß|³cÇŽC‡-Z´k×®~~~… 2`ôÓ³gÏòåËß¾}»hÑ¢Ò-€uûöí¯¿þzÁ‚Ò!0<ý/*Šòý÷ßß¾};""bΜ9ééé=2TrÂÙÙ988˜OÎ3·dÉ’ž={:;;K‡ÀðôX‹/nذáÊ•+Eqttìß¿ÿرc;f¸6èoÀ€kÖ¬yüø±tàõRSS×®];`Àé…þ—###·lÙ²gÏž—¿´··ïÓ§ÏÀ=šÝouýúõ¤¤¤Ó§Oß½{W£Ñ¸ºº~ôÑGmÛ¶å —ÞÞ}÷ÝÖ­[GEEõïß_ºðQQQmÚ´)\¸°tŒBÿ¬š5kvìØÑÑÑñ¯¯Ü¿ÿŸ?W˜/^¼8p`éÒ¥ ”””ôÓO?ýôÓO‰‰‰ýúõ+Y²dXXسgÏô.´rcÆŒ™3g΋/¤C¯zñâÅܹsG-cÑ`/^üŸxŸ:u*<<ü•'c½Õ¨Q£E9|øðÓ§OïܹséÒ¥‹/Þ¾};--íèÑ£føðázZ¹Ò¥KשS'66V:ðª 6Ô­[·téÒÒ!0ý/†††úùù]¸p¡GçÎ;~ü¸³³óªU«²õMrçÎ=eÊ”ÿûu{{û5jÔ¨QƒuŸ£Fò÷÷ïÚµ«MŽ~š`@Z­væÌ™›6m’éÿçn‰%6nÜøÙgŸ½ûjÕš7oÞ… š5k–­o’––öæßžž®w!ªT©RºtéÄÄDéÀßÊ”)ã¹-›þ+99ùÑ£GmÛ¶5kVHHÈï¿ÿýÖÁô [[[Ÿ¯¾úêöíÛZ­öåµZí;wvíÚÕ¹sçÞã=Œ=zƌҀ¿EDDŒ7NºÆ•£¬õë×?{öìúõë 6''§ÚµkK‡À¸ô¿k̘1C‡ÕétAAA:nÿþýEŠÉîGåØÙÙ?~È!ß|óÍÉ“'ÿüóO›¢E‹V¯^½qãÆ¹råzëw8xðà?YµjUìý“XºQ£FEDDð9í`"""^þ€þiçÎgΜùë—lÔ¨‘`OÎé?°^ŠMJJZºti‘"EE¹~ýzÖÿÞŒŒ ;;;EQòäÉãååååå•üV›6m&L˜ðã?~üñÇÒ-`ÕŽ9òàÁƒÖ­[K‡ÀèôX®®®åÊ•»xñbïÞ½CBB.]º;wîÜéÓ§gñ;ܺu«sçΑ‘‘UªTQ%--mÆŒ[·n½wïž««k›6mF•7oÞ7“F9Rï +1lذ™3gÆÇÇK‡€U›3gz- »•£ç`-]ºôÚµk+V¬Ðh4:uúçùÞ[•,Yòûï¿?yò¤¢(Ïž=kÞ¼ù”)S>øàƒeË–-^¼¸xñâ>Ô»ñóó;{öì¹sç¤CÀz;wî§Ÿ~òõõ•)è?°:v옔”ôÞ{ï½üå{ï½W¡B… *è÷Ý>ÿüóLJ……mÞ¼¹}ûö 6ìß¿ÿêÕ«—/_®w!þbkk;xðà¹sçJ‡€õš3gÎ!Clmm¥C` ú¬ðððæÍ›¿òE½/BEGGçË—oêÔ©æ¯/*TèÆz⟂ƒƒ÷îÝ{íÚ5é°F×®]Û·o_PPtLDÿ{°ž}úôîÝûСC¾¾¾µjÕzå¯Nš4éå' BBB*Uª4~üø H·€yøða||üÏ?ÿ,ÓÑ`4èŸ7]=yòdýúõÙý>¦aÆ 6|íK¼óÎ;zâùóçïҥ˒%KÆ/ÝVdñâÅùóç—éè?°þïC•ž>}𒳤¿µlÙÒPß /…‡‡W­ZuàÀü{¦ñèÑ£+Vdë§ìaô¿É}ïÞ½îîîÎÎÎNÿŸ««ë‘#G ƒ+X° ŸŸ_dd¤tX‹Ï?ÿÜßß¿`Á‚Ò!0)ýO°f̘1xð`''§£G6lØP«ÕîØ±cذaŒƒ1Œ1â“O>4hÐ+?R0¸Ç/[¶ìÇ”©é?°Ú´ióòj`jjªŸŸŸF£iÚ´éØ±cW­Ze¸<^‘"EÚµk·bÅŠ¡C‡J·€…[¾|yûöí]]]¥C`jú_"¼xñâ×_}óæÍ:uê|öÙg=úþûïãââ #9räÂ… ÓÒÒ¤CÀ’¥¥¥-Z´(<<\:ôXíÚµëÔ©Óüùó?úè£ÔÔÔ têÔ©fÍšŒƒ‘¼÷Þ{-Z´X½zµtX²U«VµlÙò¯ØN½ÜÝÝ«V­ºqãFé°4qqqÕªUsww—˜ì]\¾|ùرcöööŠ¢¸»»ÇÅÅùúú' ¦0nܸÎ;ØØèÿã€Òjµ3fÌØ°aƒt$eïÕÒ¥K¿\W/¹ººº¸¸üó7lÛ¶Í0]0‰ªU«º¹¹}ùå—Ò!`9¶nÝZ¦L™ªU«J‡@RöN°nÞ¼¹gÏFó×Wîß¿ÿ×H¤¥¥Íž=ÛËËË0²‘#G:ÔÛÛ[:,ÄÌ™3,X ]aÙ¾Éýÿ~s‹- ×S«_¿~žØôP¨P!ޝðþÆ!èáåñÕ¤I“¤C`FXø[ݺu *Ä!dKBBw_á ,ü± [´Zí„ 8¾Â+Xø/±¤C@Š-Êñ^ÁÀ«&Mš4a­V+æN«Õ~öÙg_áÿb`áUuëÖuuuå ÞêË/¿,R¤ÇWø¿Xx±cÇN›6;±à t:Ý´iÓÆŽ+sÄÀÂk4iÒ¤P¡B›7o–óÿî»ï6nÜX:戅כ>}úøñã322¤CÀeddL˜0aÚ´iÒ!0S ,¼ÞG}T¡B…ØØXé0G6lpwwÿ裤C`¦XøWS§N:ujzzºt˜—/^Lš4iÊ”)Ò!0_ ,ü«J•*Õ¨Q#**J:ÌKTTT­Zµ*Uª$óe'³6yòd®]»:::J·€YxþüyDDÄÎ;¥C`Ö8Á›”+W®aÆ+W®”sñÅ_4jÔ¨\¹rÒ!0kœ`á-&NœØ¨Q£   gggéöôéÓ9sæ|¸|ùò“'OJ‡@8ÁB–*T( `É’%Ò! cñâÅ;w.T¨tÔ,dUxxx5BCC ,(Ý&uïÞ½U«V:uJ:ª¡ú¬´´´‡¦¦¦J‡X¾‚ öë×oòäÉÒ!`j“'O }çw¤C,_jjêÇÓÒÒ¤CrJõkñâÅüq`` tˆU Û¶mÛåË—¥CÀt.]ºôÕW_………I‡X…ÀÀÀ?þØ~¬Jõ+<<üÒ¥K‰‰‰Ò!V!W®\ááá'N”Ó™8qbxx¸“““tˆUHLL¼téRxx¸tHN©~`ÁÄzöìyôèÑÓ§OK‡€)œ>}úĉ={ö”Ê0°=ööö'Nœ0a‚t˜Âøñã'L˜`gÇÏ„!{XÈ6ÿ7n8p@:ŒëÀ·nÝòóó“ú0°mfêÔ©ãÆ“ã7nÜÔ©S5tÔ‡}´nÝÚÁÁaûöíÒ!`,Û¶msppðôô”*1° §)S¦Œ3F«ÕJ‡€áeffŽ3&""B:jÅÀ‚žêÕ«÷þûïÇÄÄH‡€áÅÄĸ¹¹Õ¬YS:jÅE@Ó§Oo×®¯¯¯£££t ÌóçÏ'Nœ˜””$ã ú«T©RÍš5W¯^-†´jÕªÚµkWªTI:*Æ r$""¢~ýú;wΗ/Ÿt Àƒ¦OŸ~äÈé¨'XÈ‘R¥Jp(‹1kÖ¬.]º”(QB:êÆ rj̘1•+Wîׯ_É’%¥[ G®^½óÓO?I‡@õ8ÁBNåÏŸذaãÇ—€œ?~üðáÃóçÏ/Õc`ÁBCC9râÄ éÐ߉'Ž=*KÀÀ‚888L™2eĈÒ! ¿áÇO:ÕÞÞ^:–€ÃðññyþüùÎ;¥C@;vìHOO÷ññ‘…``Á04Íœ9sFŽ™™™)ÝÙ“™™9jÔ¨9sæH‡Àr0°`0uêÔqss[·ntdOTTT™2ej×®-ËÁc`H3gÎlÙ²¥¯¯oîܹ¥[ Kž}úLš4I:Þnâĉ!!!E‹•¥á †^©R¥³gÏV©REºþÕÙ³g÷îÝ{öìYéX N°`xNNNÓ§O2dˆt¼ÉàÁƒ§L™âàà  ÄÀ‚Qøúú¦§§oÛ¶M:^/)))33“'‹ÂHX0–… 6ìùóçÒ!ðªçÏŸ>œy†ñ0°`,Õ«W¯S§ÎÒ¥K¥CàU‘‘‘uëÖ­^½ºt,7¹Ãˆ¦OŸ^»víÀÀ@ÙÀ|Ü»woÞ¼yG•%ã FT¼xñÞ½{óÈfeâĉ}úô)V¬˜t, Æ5bĈ¯¿þú矖EQ”ŸþyÇŽÇ—…c`Á¸råÊ5yòäððpéP”ÿÿh†\¹rI‡ÀÂ1°`t;wNIIÙ¹s§tk·cÇŽgÏžH‡Àò1°`tfÆŒ#GŽÌÌÌ”n`½233GŽ¡Ñh¤[`ùX0… T¬XqùòåÒ!¬×²eË>üðÃúõëK‡À*ð˜˜È‚ >ù䓎;)RDº€Õ¹}ûöÌ™3?.kÁ LÄÕÕuÀ€ãÆ“`Æ7pà@WWWéX LgðàÁ‡>vì˜tërôèÑ~ø!,,L:V„ÓqppX¸paÿþýµZ­t k¡Õjû÷ï¿hÑ"éXLªE‹E‹]·ntkU¼xñæÍ›K‡Àºp“;LmÁ‚M›6íСC¾|ù¤[X¸GMœ8ñ›o¾‘Õá ¦æææ8yòdé–oòäÉݺusss“Õá ÆŒS¥J•   J•*I·°X?ýôSRRÒO?ý$kÄ 8;;O:uðàÁÒ!,Ù!C¦M›ÆÇB 2üýý333¿üòKé–iëÖ­Z­ÖÏÏO:VŠ1sçÎ=zô³gϤCXšgÏž3fîܹÒ!°^ ,ˆ©Q£F›6m¦L™"ÀÒLž<¹mÛ¶Õ«W—õâ&wHš8qbµjÕÝÝÝ¥[XˆsçÎmÞ¼ùôéÓÒ!°jœ`A’‹‹Ë¬Y³úöí«Óé¤[XN×·o߈ˆgggéX5Õ¬˜˜__ßQ£FI‡@OÞÞÞy󿉉‘` Ö¯_Ÿ/_¾Ž;J‡@O£Fòõõµ€?T‰°V­Z~~~yóæ•þ–,YÒ¤I“6mÚ(P@º€Š=|øð³Ï>ã¹íªÖ±cÇ”””7J‡ä”êVÙ²eù„)µ+UªTppðرc###¥[¨Ø˜1czöìYªT)éè¯fÍšŠ¢œ8qB:$§T?°`ÂÃëW¯~äȑڵkK·P¥~øáСC'Ož”ÅîÁ‚epppˆŒŒìÛ·oFF†t õÉÈÈèׯ_dd¤ƒƒƒt  ( ,˜F}øá‡\% ‡Ï?ÿ¼R¥J 6”þ‹K„0#óæÍ«Y³¦··wñâÅ¥[¨ÆÍ›7çÍ›wìØ1éàoœ`ÁŒ¸ºº†……ñÐ Ù2räÈÁƒ»ººJ‡c`Á¼ 4èܹsIIIÒ!Ô!11ñ×_8p tð?X0/vvv«W¯2dHjjªt s—šš:tèÐU«VÙÙqÇ Ì  f§jÕªíÛ·7nœts7vìØ:T­ZU:x“æhÊ”)U«Võóó«[·®t 3uøðá;vœ9sF:x N°`Žœ—,YÒ·oßôôtéæèÅ‹}ûö]¾|9ê óÄÀ‚™jÕªU•*UfÏž-ÀÍž=»jÕªM›6•^K„0_ .¬V­Z‡ÜÝÝ¥[˜‘óçÏ/[¶ìôéÓÒ!À¿â æ«`Á‚Ó¦MëׯŸN§“n`.t:]ß¾}§OŸ^°`Aéà_1°`Öºuëæèè¸fÍéæbõêÕNNN]»v•Þ„K„0w‹/nÖ¬Ù§Ÿ~Z¨P!éÂîÞ½;qâÄ}ûöI‡oÁ Ì]ùòåûõë&@^XXXhhhùòå¥C€·``AFuõêÕ-[¶H‡´yóæëׯ9R:x;.BlllV®\Ù²eˆ .\X:€€»wï:tÏž=66 @ø¯)Ô¡B… ýúõ6l˜tC‡ ýàƒ¤C€,a`A5FŒñ믿&&&J‡0µ„„„ß~ûmøðáÒ!@V1° vvvQQQC† yøð¡t ÓyøðáСC£¢¢ì츭ªÁÀ‚š¸»»q‹+`UÂÃÃùD¨  *3zôèS§NíÞ½[:€)ìÚµëôéÓ£F’²‡•±³³[¹rå€RSS¥[WjjêÀW­ZÅÅA¨ êSµjUÿ1cÆH‡0®Ñ£GT©RE:È6þ?Ti̘1Ÿ|òÉáÇëÖ­+ÝÀ(¾ÿþûƒþøãÒ!€>8Á‚*999­_¿>(((%%Eº€á¥¤¤¯_¿ÞÑÑQºÐ jUµjÕnݺ :T:€á 2¤{÷îU«V•ôÄÀ‚Š9òçŸÞºu«tCÚ²e˹sçx T{° b/=ÚªU«zõ깺ºJç0€;wîŒ1bÏž=¶¶¶Ò-€þ8Á‚º}ðÁC‡ ‘`!!!C† )S¦Œt# ,¨ÞÀŸ={- §Ö­[÷ìÙ³H‡9Å%B¨žF£Y¹reýúõ5jT²dIézºzõê„ ¾ÿþ{F#Ýä'X°%J”øì³Ï‚‚‚t:t }hµÚààà‰'/^\º0,DPPPþüù/^,@‹/.P @=¤CÃà!,Ç¢E‹êÖ­ëééY®\9éÙpáÂ…yóæýðÃÒ!€Áp‚ËQ¼xñåË—{{{§¥¥I·Èª´´´N:-_¾¼X±bÒ-€Á0°`Q<<<5j4jÔ(éY5räÈÆ{xxH‡†ÄÀ‚¥™3gÎÁƒ·mÛ&àí’’’¾ýöÛÙ³gK‡ÆÀ‚¥qttŒ‰‰0`ÀíÛ·¥[¼É­[·Ã':Ãò0°`>üðÃáÇwïÞ]«ÕJ·x=­VÛ¥K—#F|øá‡Ò-€á1°`™ àää4oÞ<é¯7wîܼyóöïß_:0 ÓˤÑhV­ZõñÇ7hРV­ZÒ9þÇÑ£G—,Yòã?òÐvX*N°`± .üÅ_tíÚ555UºÀßRRRW®\Y¸paéÀXX°d-[¶lÙ²åðáÃ¥Cümøðá-Z´Œˆ 7{öì£GnܸQ:€¢(J\\ÜñãÇy.,÷`ÁÂåÊ•+))©~ýú•+W®X±¢t`ÕÎ;þÝwß999I·Æ¥ú¬‹/îÝ»÷رcÒ!0_%K–ŒŒŒô÷÷úô©t `½ž>}êççY²dI阯cÇŽíÝ»÷âÅ‹Ò!9¥ú¬£G&''»¹¹Õ¬YSºæ«mÛ¶ûöí4hÐÊ•+¥[+5pàÀ-Z´mÛV:fmëÖ­—/_þõ×_Ë–-+Ý’#N'Ý ¿™3g*Š2räHé¨@zzzãÆCBBºuë&ÝXuëÖ­X±â›o¾±··—n XÀŸïª?Á²ÈÞÞ>..®AƒŸ|ò‰»»»t`EÎ;7a„C‡±®`=Tuï½÷ÞçŸîççÇÍX€É<}úÔßß?22ò½÷Þ“nL‡ëÒ¦M°°0éÀZ 4ÈÓÓ³uëÖÒ!€I1°`u¦NzöìÙøøxéÀòmÚ´é矞2eŠt`j܃«ãààÓ¤I“Ê•+W¨PA:°X¿þúë°aÃ8ààà ݘ'X°FeË–]½zu‡=z$ÝX¦GuèÐaÍš5eÊ”‘n0°`¥Z´hѹsçnݺ©úI%€yÒjµ]»víÒ¥KóæÍ¥[ ,X¯qãÆ988̘1C:°43fÌptt;v¬t †{°`½4Íš5kêÔ©S£F éÀBìØ±#..îðáÃFºà ¬š‹‹Ë–-[úõë÷ÇH·–à?þ ݼy³‹‹‹t ‰k÷ÁÌŸ?ßÛÛ;--MºP·´´4ooïùóçðÁÒ-€0 ´oß¾yóæƒ ’Ô-$$¤E‹íÛ·—ä1°EQ”iÓ¦ýöÛoK—.•Ô*22òêÕ«S§N•Ì7¹Š¢(ööö uëÖ-Y²d›6m¤s•Ù¾}û¢E‹~øá>Îx‰,à¿Þyç„„„~ýúýòË/Ò-€šüòË/¡¡¡  nÌ ø[… V¬XáããÃÞ,zøð¡Ï_|ÁOÿÄÀþ‡‡‡G·nÝ|}}3]é!‡IDAT22¤[s—‘‘áçç×½{÷V­ZI·æ…¼jÔ¨Qï¾ûîÈ‘#¥Csο,Àk1°€×X¹råwß}·råJéÀ|}ñŇæ_àµø)Bà5œœœêÕ«W¾|ù† JçfçÛo¿1cÆ÷ßïää$ݘ#N°€×+Z´hTTT=nݺ%ݘ—[·nõèÑcݺuE‹•nÌ øW 4øì³Ï¼¼¼?~,ݘ‹ÔÔÔ¶mÛNœ8±~ýúÒ-€ùb`oÒ½{w//¯çÏŸK·òž?îåååçç×­[7éÀ¬1°€·5jÔ‡~¤Óé¤[I:.((¨R¥JüØ ðV ,àí.\øäɓɓ'K‡’&MšôôéÓ… J‡*ÀOogkkÓ¨Q£÷ß¿{÷îÒ9€€µk×îܹsÿþý¶¶¶Ò-€ 0°€,É“'ÏöíÛ6lX¬X±-ZHç&µgÏžiÓ¦}ûí·ÎÎÎÒ-€:p‰Ȫ¢E‹&&&öêÕëìÙ³Ò-€éœ={¶W¯^‰‰‰<”È: +V\ºt©¯¯ï;w¤[S¸s环¯ï²eË*V¬(ݨ —ìiݺõóçÏ[¶lùÍ7ß¼óÎ;Ò9€=xð eË–žžžÒ-€Ê0°€lëСÃ;wZ·n½o߾ܹsKçFñøñãÖ­[÷ëׯ}ûöÒ-€úp‰ÐGß¾}=<<Ú·oÿâÅ éÀðž?Þ¡COOϾ}ûJ·ªÄÀô4qâÄJ•*iµZéÀ´ZíËŠ~öÙgÒ-€Z1°ýÍ;733sàÀÒ!€! 8ÐÞÞ~Þ¼yÒ!€Š1°ýÙØØDGG_¾|yúôéÒ-€aL›6í?þX¹r¥F£‘nTŒ›Ü±··ß¸qc“&MJ”(ÁÇßBí¢¢¢¾üòËýû÷ÛÛÛK·êÆÀr*oÞ¼;vìhÖ¬™³³s§N¤s=ÅÇÇÏ;wïÞ½yóæ•nTÀ»ï¾»ÿþæÍ›§§§HçÙ±o߾… K·–€FáÂ…wïÞÝ¢E ggçvíÚIçÙ°iÓ¦éÓ§³®b`ãêêúõ×_·hÑÂÖÖ¶mÛ¶Ò9@–lß¾ý³Ï>Û³gÏ»ï¾+ÝX`H%J”صk×Ëŧ‹ÀüíØ±cøðá»wï.Q¢„t `QxL``%K–üꫯ tàÀéàM80hРíÛ·—,YRº°4 ,ÀðÊ–-»eË–ž={ž8qBºx½'NôìÙsË–-eË–•n, 0Š*UªÄÇÇûûû9rDºxÕ‘#Güýý7oÞ\¥JéÀ21°c©Q£ÆöíÛ»uë¶{÷néào»wïîÖ­ÛöíÛ«W¯.ÝX,`D|ðÁîÝ» ” Ý(Š¢$$$„……íÞ½ûƒ>n,?E×ûï¿¿k×.OOÏŒŒ žóY›7ož0a®]»¸«06`t¥J•ÚµkWË–-Ÿ|X]]îD@ >Ÿ¿iÓ¦úúú¼¼¼™3gÒÞö`ÈžY³f•——ëééÙØØp¹\ºã€ôq¹\›©S§–——£»Eh°dÒèÑ£ÃÂÂÂÃ×.]zúôiºã€4%%%-]º4<<<,,lôèÑtÇ€ @†-_¾¼¤¤äìÙ³îîîÏŸ?§;ü[ÏŸ?g³Ù©©©¥¥¥Ë—/§;|84X²ÍÀÀàÊ•+ÞÞÞöööñññb±˜îDð!Äbq||¼½½ýš5krrrôõõéNÿ ,yàééyëÖ­üü|—ææfºãÀûinnvqqÉÏÏ¿uë–§§'Ýq@ Ð`È ]]Ý´´4///GGÇ””ìÊ’ b±899ÙÑÑqÅŠiiiºººt'é@ƒ W¾úê«âââ³gÏΟ?¿¶¶–î8ð.µµµöööçÎãp8¾¾¾tÇiÂ8XòÆÐÐ0;;»°°påÊ•VVV111¸+ðHÓÑѱcÇŽªªªcÇŽ999Ѥ{°äÓ§Ÿ~z÷î]SSS‹…“ßGŽþþþØØX‹ejjZSSƒî @^¡Á[***AAAçòåË’”v\.×ÁÁ!??ÿæÍ›AAAã @Ž¡ÁsÓ¦MËÎÎÞ°a›ÍÞ¹sç‹/èN¤ˆ^¼x±cÇ6›½qãÆììì©S§Ò¨… @þ1 ooï{÷î±X¬àààW¯^ÑJQ¼zõ*88˜ÅbMž<ùÞ½{ÞÞÞ ƒîP@94XŠBEE% @riáœ9söïßßÓÓCw(yÖÓÓ³ÿ~SSSBHmmm@@€ŠŠ Ý¡`˜ ÁP,ÚÚÚÑÑÑ¥¥¥8ÿ]êÄbqzzº……EYYÙµk×¢££µµµéà €"211ÉÌÌsæÌøøx‘HDw(Y%‰âããgÍš•‘‘‘˜˜X\\ìàà@w(  ,EÇb±’’’ÒÓÓKJJfÏž‹s³ÞKOOOllììÙ³KJJ222’’’X,Ý¡€fh°€BÌÌÌ’’’222*++ÍÍÍcbbºººè5ÒuvvÆÄĘ››ß¾}[ÒZINi@ƒÿgff–’’Âáp„B¡µµµ——WAAÝ¡F¢‚‚//¯>úH(r8œääd333ºCÀ‚ Þ6qâÄ   ºº:—ÀÀ@‡ .…BºsÑO(ž?ÞÁÁ!00ÐÅÅ¥®®.((hâĉtç€ ü5UUU__ßšššðððÔÔÔ©S§ܹs‡î\ô¸}ûv@@ÀÔ©SÏŸ?^SSãë뫪ªJw.¡FÑF:GGGGGG—‘‘^WW·bÅŠuëÖÍš5‹îh”»wï^BBBjjª™™™Ott´ššÝ¡@ Á€!ÑÒÒòñññññyðàAJJŠ›››¾¾þ_|áêê*wÖkjjÊÉɹxñâÓ§OW¯^}íÚµéÓ§Ó d ,=¹¹¹„ºƒ(¨3f„……}÷Ýw—/_f³ÙýýýnnnK–,±··5Šªÿ*Tow‘HTRRråÊ•ììl%%%6›½ÿþ?þ·¤êd,=¿þú+Á?\º1 [[[[[Û¨¨¨GeffFDDp¹\ggg''§ H}sж{CC‡Ã),,,,,œ;w.›ÍÎÊÊš6mšt× õ2jD4X---™™™555ííí ƒÉdZYY¹¹¹éééÑ þÙ´iÓ¶oß¾}ûöÎÎ΂‚‚›7ož~üxOOÏ£GÞ½{·¡¡Á××·µµÕßߟÉd:88lÞ¼9..®¬¬ŒÇãQšç-<¯¬¬,..nóæÍL&Óßß¿µµÕ××·¡¡¡ººúèÑ£žžž’î Û}èPïïÛ]ÑмKò×VVVÆb±ÆŒ30_(r¹Ü¤¤¤ÀÀÀcÇŽÑBêê꨾AÇkjj¢t„¦¦&ª¿ØD"Q]]¥«6ØîC÷—Û]KKËÅÅErdG Ô×××ÖÖÖÕÕ¥¥¥q¹\555ccã)S¦ üœ0a¿LòâÅ‹Çÿþûï?ÁܹsçÎkmm½nÝ:SSÓw\ ˆí>t¨÷÷‚í®hhn°444"##ÿ<ôèÑ––––––!!!ï~…ââbj¢ý_WWWll,¥×f?|ø°±±qÿþýÔ­‚ÒØØ˜ššZUUEÝ*AWWÕod6:ÁvCßîL&“Éd.\¸ðõë×ííí<èììììì|ùòå›7oÔÔÔÔÔÔT8k¾¥¥…rõêUɤH$z3ˆ@ jjjãÿG[[{òäÉÖÖÖ’§´µµ]¿~ýúõëïHˆí>t¨÷÷‚íþ^äàvé ±XLãêøá‡^ ¢¢¢¨¨Hú±€VŽŽŽ666t§øp4ïÁRVVöôô\»v­¥¥%“ÉTRR"„ô÷÷···×ÔÔüòË/ÆÆÆïxºLú —hÞƒ%‰¢¢¢<ØÝÝ­¤¤¤®®N}}}cǎݵkWhh¨²²2 ÞÍ –ÄüqãÆêêê¶¶6%%%=== GGGÜ’dшh°ä Íã`HEss3Õ—X½Pæ [FÄHî@,ççç'&&ž={v`¦H$Ú³gH$RSSãóùQQQ***4†JÅÇÇoܸQòØÎή¤¤„Þ<@”¶ÂB™+ùûZ—ÉC„</++K2€VccãÀüÈÈÈÚÚÚ .Büýý•””Ž=J[J ’X,þüóÏ—-[&™´´´œ7o½‘€:(mÅ„2Wòùµ.–YÛ·oŸ5kÖÀdww÷رc³²²$“ÊÊÊÍÍÍ4¥j8p€î0PÚ e®häìk]†ÏÁ’ š5àÆÝÝÝ–––’I‹%‹333鈔;~üxPP……ELLÌH¸a%P¥­°PæŠFξÖe¸ÁzKuuµ’’Ò¤I“$“cÆŒÑÑÑ©©©¡7PÄÞÞ~õêÕ?Þ¹s§³³³@  ;P¥­°Pæ NÖk_~¬¶¶6uuõÁý¯¦¦f{{;‘€:[¶l9}úô“'O¶nÝZVVEw"  J[a¡Ìœ¬×¾ü4XoíZ$„0 ƒAKšššGŽY¾|ù¥K—èÎTAi+8”¹Â’õÚ—+99Yó®×ý³I“& ‚þþþ9¯_¿ÖÕÕ–Œ@­wü 0Œ5kÖtttЕ ¨†Ò”¹b’õÚ—q°Øl¶­­­äñرcÿn1 ‹¾¾¾ööv&“I …íííÖÖÖÔ¨ôî¿mmmÉF¹„Ò‚2WH²^û2Ð`iiiiiiýãbNNNššš555‹-"„ÔÕÕ1 777êåÞý7Àår—,Y2œy`8¡´ Ì’¬×¾ "ü;B¡pðžC55µ]»v%%%I&“’’üüüôôôhJÊÏÏ_¹reCC!¤££#///$$„îP@”¶bB™+ 9ûZ—É‘Ü{zz®^½øäÉ“¸¸8gggBH__ßÞ½{…Bá¨Q£x<Þ¡C‡TUUé ÒwçÎU«Vµ¶¶®Y³ÆÐÐpÆ ãǧ;P¥­€Pæ E.¿Öe²ÁÉdø!ÀÈ„ @ÊÐ`H,)Cƒ eh°¤ Œhƒ2p«Eiiiß|óÍýû÷mll¦L™"‹{{{«««'L˜P]]=”W(,,LII)**zôèÕi¤ PÂÃÃãéÓ§Û¶m‹ŠŠrrr’ÌäóùC|''§‚‚‚ÖÖVÊ2P‡€*„ƒ10G]]}Ù²eC|:ƒÁ044¤$ÅÐ`À°Z¿~ýÐÜœÈ4X0L„Ba@@!$99yôèÑ{öì!„äääLŸ>ÝÑÑ‘RUUåïï¿{÷MMͼ¼¼·^¡££cË–-‘‘‘k×®õôô|òä !¤¨¨ÈÇÇgÛ¶m?ÿü³®®®¡¡aee¥dùÞÞÞ;vìÝ»×ÔÔ”Á`|òÉ''Nœ „$$$DEEíÛ·OSSóÕ«WÃø€¢@ƒÔÚ½{·‹‹ËgŸ}6yò䪪*Bˆ··÷”)S$¿uuu]°`䱆†FffæÕ«WÍÍÍ}}}'L˜0øuúúú/^¼pá½{÷&&&Nœ8ÑÉɉÏçÛÚÚÖ××çææ2™Ìß~ûMOOïÛo¿•<%**ŠÏçGFFfffB–.]êçç×ÕÕµoß¾ÐÐÐðððžžžaû(@q Áj8p 777??ŸËåôLÊÊÊ ()ý÷ÑìÙ³ ÍÍÍÙlöÑ£G­­­¿Nnnnmm­«««dr×®]>Û¶mûàç*))ñx¼îîî9ãÆSUU}ÇS|||222ºººD"Çóöö–Ì‹‹ûé§Ÿ8‹Åª¯¯ÿàH PE,¿5g`ÿ!¤¯¯Oò@(åÕlmm !¥¥¥’Éþþþ¶¶¶ó·þÒÎ;ÝÜÜ"""âââuuu !---?öóókhh`2™Çò*4X@Éùã½½½þ•¾¾~NNNsssnn.—Ë}öìÙË—/ !ýýý"‘h`1‘H4p¼ÏÙÙÙÞÞþÇ”ômyyyfff’S²D"Ñ@3' žª££3þ|}}ýÆÆÆöövBÈëׯÏ;G™4iÒâÅ‹ŒŒ(û@qa$w DFFÆ©S§!‹Å‹-üÛï¿ÿÞËËkÞ¼y!!!^^^µµµ---\.÷éÓ§iii·oß>sæŒ@ 8v옖–VVVÖöíÛW¯^=gΜ—/_æää(++s8œªª* âââ‰'fdd<{öìÂ… žžžúúú‡NHHèêê …ãÆ»{÷.!$""‚Ïçôôôlݺ•žäãÏûðä€P(ôóó‹•œ5ßÓÓsóæÍÆÆFº£€üÃ,O‰‰‰B¡pàšÄ1cƘ˜˜ >G€:8 äSwwwVVVNNŽ@ àóùEEE§Nb³Ùtç…€C„ ŸzzzBCC“’’x<ž‰‰Éúõë7mÚ4x€Sê Á2"24XR† @ÊÐ`H,)û¸NëE]IEND®B`‚giza-1.5.0/docs/documentation/index.html000066400000000000000000000023661477367113400202710ustar00rootroot00000000000000 giza - documentation
    giza

    Documentation

    API reference manual

    Click here for a function-by-function reference manual.

    Installation

    Click here for an installation guide.

    Tutorials

    Click here for a tutorial to get you started using giza.

    PGPLOT interface

    Included with giza is a PGPLOT interface that allows code written using PGPLOT to be instantly linked against giza. Here is the status of the PGPLOT interface.

    giza-1.5.0/docs/documentation/installation.html000066400000000000000000000112221477367113400216520ustar00rootroot00000000000000 giza - installation
    giza

    Installation

    Getting ready

    You will need some basic build tools such as make and a c compiler. Most linux distributions provide packages containing these tools. In Ubuntu the required packages are make and gcc. You will also need the development packages for cairo and x11. In Ubuntu these packages are libcairo2-dev and libx11-dev.

    Get the source

    The first step is to get a copy of the code. There are two ways to do this; either get the current source from the subversion repository, or grab the latest tar ball from our download page.

    To check out a copy of the code from subversion change to a directory to build the code in, for exampe /path/to/my/home/src/. Then use the following command:

    git clone https://github.com/danieljprice/giza.git

    It is always best to get the newest code from the subversion repository if possible, but if you don't have subversion installed then grab the newest tarball from here. Move the tar file to a directory in your home directory to build it in. For example /path/to/my/home/src. Then change to this directory and untar the code with the following command:

    tar xzvf giza-1.2.0.tar.gz

    But replace giza-1.2.0.tar.gz with the version of giza you have.

    Configuration

    Once you have the code you may need to configure it for you system. If you are using a linux system and cairo and x11 are installed in the standard places you may skip this section.

    Specify the location of dependancies

    If cairo and/or xlib are not installed in /usr/local and /usr/X11R6 respectivly you will need to specify their location in the make file. To do this open build/Makefile. Near the top of the file the variables X11LIBS, CAIROLIBS are set. Modify these lines so that the specify the location of the cairo and x11 libraries, i.e.

    X11LIBS=-L/path/to/X11/lib -lX11
    CAIROLIBS=-L/path/to/cairo/lib -lcairo

    You also need to set the include flags so the compiler can find the header. In build/Makefile find where the variable INCFLAGS is set. Add to this the the location of cairo.h and xlib.h, i.e.

    INCFLAGS= -I/path/to/xlib/header -I/path/to/cairo/header -I$(INCDIR) -I$(SRCDIR)

    Now giza should be able to find it's dependancies.

    Non linux system

    If you are not using gcc on a linux system you will have to specify some system dependant things in the make file. Open build/Makefile and scroll down to the following code:

    ifeq ($(SYSTEM),linux)
      # using gcc
      CC= gcc
      CFLAGS += -fPIC
      SHAREDLIBFLAGS= -shared
      SHAREDEXT=.so
      DEBUGFLAG= -Wall -Wextra -g -O0
      RANLIB= ranlib
      KNOWN_SYSTEM=yes
    endif
        

    You will need to set all these variables according to your system. If you can't get this working, send an email to the address on the contact page and I'll try to give you a hand.

    Install to a non-standard directory

    giza's installation path is determined by the variable PREFIX in build/Makefile, so open this file and find the line where this variable is specified and set it to the path you would like to install to, i.e.

    PREFIX=/path/to/giza/installation

    Compiling the code

    Once the configuration is complete you must build the code. Simply run the following command:

    make

    Install giza

    Now the final step is to install the libraries. If you are installing outside your home directory you may need root privileges, sudo should do it:

    sudo make install

    Now you should be able to link your code to the giza library.

    giza-1.5.0/docs/documentation/pgplot-header.html000066400000000000000000000031241477367113400217060ustar00rootroot00000000000000 giza - documentation
    giza

    PGPLOT interface

    Included with giza are PGPLOT interfaces that aim to replicate the full public interface to PGPLOT. This means that giza can be compiled as a drop-in replacement for libpgplot and libcpgplot. So older programs written using PGPLOT can be linked against giza with the source code unchanged, giving a modern plotting library with antialiased lines, real fonts and PDF output. For the c library (libcpgplot) it also avoids the unnecessary linking against FORTRAN necessary with the original libcpgplot so increases portability of code written in c. The giza-PGPLOT API also aims to provide maximum backwards compatibility with PGPLOT (e.g., line styles, greek letter escape sequences, etc.) so that codes can be transitioned with ease.

    The status of the standard Fortran (libpgplot) and C (libcpgplot) interfaces are given below. Contributions most welcome!

    giza-1.5.0/docs/documentation/pgplot-status.html000066400000000000000000000546761477367113400220230ustar00rootroot00000000000000
    PGARROIMPLEMENTEDdraw an arrow
    PGASKIMPLEMENTEDcontrol new page prompting
    PGAXISIMPLEMENTEDdraw an axis
    PGBANDIMPLEMENTEDread cursor position, with anchor
    PGBBUFIMPLEMENTEDbegin batch of output (buffer)
    PGBEGIMPLEMENTEDopen a graphics device
    PGBINIMPLEMENTEDhistogram of binned data
    PGBOXIMPLEMENTEDdraw labeled frame around viewport
    PGCIRCIMPLEMENTEDdraw a circle, using fill-area attributes
    PGCLOSIMPLEMENTEDclose the selected graphics device
    PGCONBPARTIALLY IMPLEMENTEDcontour map of a 2D data array, with blanking
    PGCONFNOT IMPLEMENTEDfill between two contours
    PGCONLPARTIALLY IMPLEMENTEDlabel contour map of a 2D data array
    PGCONSIMPLEMENTEDcontour map of a 2D data array (fast algorithm)
    PGCONTIMPLEMENTEDcontour map of a 2D data array (contour-following)
    PGCONXNOT IMPLEMENTEDcontour map of a 2D data array (non rectangular)
    PGCTABPARTIALLY IMPLEMENTEDinstall the color table to be used by PGIMAG
    PGCURSIMPLEMENTEDread cursor position
    PGDRAWIMPLEMENTEDdraw a line from the current pen position to a point
    PGEBUFIMPLEMENTEDend batch of output (buffer)
    PGENDIMPLEMENTEDclose all open graphics devices
    PGENVIMPLEMENTEDset window and viewport and draw labeled frame
    PGERASIMPLEMENTEDerase all graphics from current page
    PGERR1IMPLEMENTEDhorizontal or vertical error bar
    PGERRBIMPLEMENTEDhorizontal or vertical error bar
    PGERRXIMPLEMENTEDhorizontal error bar
    PGERRYIMPLEMENTEDvertical error bar
    PGETXTNOT IMPLEMENTEDerase text from graphics display
    PGFUNTIMPLEMENTEDfunction defined by X = F(T), Y = G(T)
    PGFUNXIMPLEMENTEDfunction defined by Y = F(X)
    PGFUNYIMPLEMENTEDfunction defined by X = F(Y)
    PGGRAYIMPLEMENTEDgray-scale map of a 2D data array
    PGHI2DNOT IMPLEMENTEDcross-sections through a 2D data array
    PGHISTIMPLEMENTEDhistogram of unbinned data
    PGIDENIMPLEMENTEDwrite username, date, and time at bottom of plot
    PGIMAGIMPLEMENTEDcolor image from a 2D data array
    PGLABIMPLEMENTEDwrite labels for x-axis, y-axis, and top of plot
    PGLCURIMPLEMENTEDdraw a line using the cursor
    PGLDEVIMPLEMENTEDlist available device types on standard output
    PGLENIMPLEMENTEDfind length of a string in a variety of units
    PGLINEIMPLEMENTEDdraw a polyline (curve defined by line-segments)
    PGMOVEIMPLEMENTEDmove pen (change current pen position)
    PGMTXTIMPLEMENTEDwrite text at position relative to viewport
    PGNCURIMPLEMENTEDmark a set of points using the cursor
    PGNUMBIMPLEMENTEDconvert a number into a plotable character string
    PGOLINIMPLEMENTEDmark a set of points using the cursor
    PGOPENIMPLEMENTEDopen a graphics device
    PGPAGEIMPLEMENTEDadvance to new page
    PGPANLIMPLEMENTEDswitch to a different panel on the view surface
    PGPAPIMPLEMENTEDchange the size of the view surface
    PGPIXLIMPLEMENTEDdraw pixels
    PGPNTSNOT IMPLEMENTEDdraw several graph markers, not all the same
    PGPOLYIMPLEMENTEDdraw a polygon, using fill-area attributes
    PGPTIMPLEMENTEDdraw several graph markers
    PGPT1IMPLEMENTEDdraw one graph marker
    PGPTXTIMPLEMENTEDwrite text at arbitrary position and angle
    PGQAHIMPLEMENTEDinquire arrow-head style
    PGQCFIMPLEMENTEDinquire character font
    PGQCHIMPLEMENTEDinquire character height
    PGQCIIMPLEMENTEDinquire color index
    PGQCIRIMPLEMENTEDinquire color index range
    PGQCLPIMPLEMENTEDinquire clipping status
    PGQCOLIMPLEMENTEDinquire color capability
    PGQCR IMPLEMENTEDinquire color representation
    PGQCS IMPLEMENTEDinquire character height in a variety of units
    PGQDTNOT IMPLEMENTEDinquire name of nth available device type
    PGQFSIMPLEMENTEDinquire fill-area style
    PGQHSIMPLEMENTEDinquire hatching style
    PGQIDIMPLEMENTEDinquire current device identifier
    PGQINFIMPLEMENTEDinquire PGPLOT general information
    PGQITFIMPLEMENTEDinquire image transfer function
    PGQLSIMPLEMENTEDinquire line style
    PGQLWIMPLEMENTEDinquire line width
    PGQNDTNOT IMPLEMENTEDinquire number of available device types
    PGQPOSIMPLEMENTEDinquire current pen position
    PGQTBGIMPLEMENTEDinquire text background color index
    PGQTXTIMPLEMENTEDfind bounding box of text string
    PGQVPIMPLEMENTEDinquire viewport size and position
    PGQVSZIMPLEMENTEDinquire size of view surface
    PGQWINIMPLEMENTEDinquire window boundary coordinates
    PGRECTIMPLEMENTEDdraw a rectangle, using fill-area attributes
    PGRNDIMPLEMENTEDfind the smallest `round' number greater than x
    PGRNGEIMPLEMENTEDchoose axis limits
    PGSAHIMPLEMENTEDset arrow-head style
    PGSAVEIMPLEMENTEDsave PGPLOT attributes
    PGUNSAIMPLEMENTEDrestore PGPLOT attributes
    PGSCFIMPLEMENTEDset character font
    PGSCHIMPLEMENTEDset character height
    PGSCIIMPLEMENTEDset color index
    PGSCIRIMPLEMENTEDset color index range
    PGSCLPIMPLEMENTEDenable or disable clipping at edge of viewport
    PGSCRIMPLEMENTEDset color representation
    PGSCRLNOT IMPLEMENTEDscroll window
    PGSCRNNOT IMPLEMENTEDset color representation by name
    PGSFSIMPLEMENTEDset fill-area style
    PGSHLSIMPLEMENTEDset color representation using HLS system
    PGSHSIMPLEMENTEDset hatching style
    PGSITFIMPLEMENTEDset image transfer function
    PGSLCTIMPLEMENTEDselect an open graphics device
    PGSLSIMPLEMENTEDset line style
    PGSLWIMPLEMENTEDset line width
    PGSTBGIMPLEMENTEDset text background color index
    PGSUBPIMPLEMENTEDsubdivide view surface into panels
    PGSVPIMPLEMENTEDset viewport (normalized device coordinates)
    PGSWINIMPLEMENTEDset window
    PGTBOXIMPLEMENTEDdraw frame and write (DD) HH MM SS.S labelling
    PGTEXTIMPLEMENTEDwrite text (horizontal, left-justified)
    PGTICKIMPLEMENTEDdraw a single tick mark on an axis
    PGUPDTIMPLEMENTEDupdate display
    PGVECTIMPLEMENTEDvector map of a 2D data array, with blanking
    PGVSIZIMPLEMENTEDset viewport (inches)
    PGVSTDIMPLEMENTEDset standard (default) viewport
    PGWEDGIMPLEMENTEDannotate an image plot with a wedge
    PGWNADIMPLEMENTEDset window and adjust viewport to same aspect ratio
    PGADVANCEIMPLEMENTEDnon-standard alias for PGPAGE
    PGBEGINIMPLEMENTEDnon-standard alias for PGBEG
    PGCURSEIMPLEMENTEDnon-standard alias for PGCURS
    PGLABELIMPLEMENTEDnon-standard alias for PGLAB
    PGMTEXTIMPLEMENTEDnon-standard alias for PGMTXT
    PGNCURSEIMPLEMENTEDnon-standard alias for PGNCUR
    PGPAPERIMPLEMENTEDnon-standard alias for PGPAP
    PGPOINTIMPLEMENTEDnon-standard alias for PGPT
    PGPTEXTIMPLEMENTEDnon-standard alias for PGPTXT
    PGVPORTIMPLEMENTEDnon-standard alias for PGSVP
    PGVSIZEIMPLEMENTEDnon-standard alias for PGVSIZ
    PGVSTANDIMPLEMENTEDnon-standard alias for PGVSTD
    PGWINDOWIMPLEMENTEDnon-standard alias for PGSWIN

    118 of 127 routines implemented, 115 of 127 fully implemented.

    giza-1.5.0/docs/documentation/pgplot.html000066400000000000000000001531031477367113400204630ustar00rootroot00000000000000 giza - documentation
    giza

    PGPLOT interface

    Included with giza are PGPLOT interfaces that aim to replicate the full public interface to PGPLOT. This means that giza can be compiled as a drop-in replacement for libpgplot and libcpgplot. So older programs written using PGPLOT can be linked against giza with the source code unchanged, giving a modern plotting library with antialiased lines, real fonts and PDF output. For the c library (libcpgplot) it also avoids the unnecessary linking against FORTRAN necessary with the original libcpgplot so increases portability of code written in c. The giza-PGPLOT API also aims to provide maximum backwards compatibility with PGPLOT (e.g., line styles, greek letter escape sequences, etc.) so that codes can be transitioned with ease.

    The status of the standard Fortran (libpgplot) and C (libcpgplot) interfaces are given below. Contributions most welcome!

    Current status (libpgplot):

    PGARROIMPLEMENTEDdraw an arrow
    PGASKIMPLEMENTEDcontrol new page prompting
    PGAXISIMPLEMENTEDdraw an axis
    PGBANDIMPLEMENTEDread cursor position, with anchor
    PGBBUFIMPLEMENTEDbegin batch of output (buffer)
    PGBEGIMPLEMENTEDopen a graphics device
    PGBINIMPLEMENTEDhistogram of binned data
    PGBOXIMPLEMENTEDdraw labeled frame around viewport
    PGCIRCIMPLEMENTEDdraw a circle, using fill-area attributes
    PGCLOSIMPLEMENTEDclose the selected graphics device
    PGCONBPARTIALLY IMPLEMENTEDcontour map of a 2D data array, with blanking
    PGCONFNOT IMPLEMENTEDfill between two contours
    PGCONLPARTIALLY IMPLEMENTEDlabel contour map of a 2D data array
    PGCONSIMPLEMENTEDcontour map of a 2D data array (fast algorithm)
    PGCONTIMPLEMENTEDcontour map of a 2D data array (contour-following)
    PGCONXNOT IMPLEMENTEDcontour map of a 2D data array (non rectangular)
    PGCTABPARTIALLY IMPLEMENTEDinstall the color table to be used by PGIMAG
    PGCURSIMPLEMENTEDread cursor position
    PGDRAWIMPLEMENTEDdraw a line from the current pen position to a point
    PGEBUFIMPLEMENTEDend batch of output (buffer)
    PGENDIMPLEMENTEDclose all open graphics devices
    PGENVIMPLEMENTEDset window and viewport and draw labeled frame
    PGERASIMPLEMENTEDerase all graphics from current page
    PGERR1IMPLEMENTEDhorizontal or vertical error bar
    PGERRBIMPLEMENTEDhorizontal or vertical error bar
    PGERRXIMPLEMENTEDhorizontal error bar
    PGERRYIMPLEMENTEDvertical error bar
    PGETXTNOT IMPLEMENTEDerase text from graphics display
    PGFUNTIMPLEMENTEDfunction defined by X = F(T), Y = G(T)
    PGFUNXIMPLEMENTEDfunction defined by Y = F(X)
    PGFUNYIMPLEMENTEDfunction defined by X = F(Y)
    PGGRAYIMPLEMENTEDgray-scale map of a 2D data array
    PGHI2DNOT IMPLEMENTEDcross-sections through a 2D data array
    PGHISTIMPLEMENTEDhistogram of unbinned data
    PGIDENIMPLEMENTEDwrite username, date, and time at bottom of plot
    PGIMAGIMPLEMENTEDcolor image from a 2D data array
    PGLABIMPLEMENTEDwrite labels for x-axis, y-axis, and top of plot
    PGLCURIMPLEMENTEDdraw a line using the cursor
    PGLDEVIMPLEMENTEDlist available device types on standard output
    PGLENIMPLEMENTEDfind length of a string in a variety of units
    PGLINEIMPLEMENTEDdraw a polyline (curve defined by line-segments)
    PGMOVEIMPLEMENTEDmove pen (change current pen position)
    PGMTXTIMPLEMENTEDwrite text at position relative to viewport
    PGNCURIMPLEMENTEDmark a set of points using the cursor
    PGNUMBIMPLEMENTEDconvert a number into a plotable character string
    PGOLINIMPLEMENTEDmark a set of points using the cursor
    PGOPENIMPLEMENTEDopen a graphics device
    PGPAGEIMPLEMENTEDadvance to new page
    PGPANLIMPLEMENTEDswitch to a different panel on the view surface
    PGPAPIMPLEMENTEDchange the size of the view surface
    PGPIXLIMPLEMENTEDdraw pixels
    PGPNTSNOT IMPLEMENTEDdraw several graph markers, not all the same
    PGPOLYIMPLEMENTEDdraw a polygon, using fill-area attributes
    PGPTIMPLEMENTEDdraw several graph markers
    PGPT1IMPLEMENTEDdraw one graph marker
    PGPTXTIMPLEMENTEDwrite text at arbitrary position and angle
    PGQAHIMPLEMENTEDinquire arrow-head style
    PGQCFIMPLEMENTEDinquire character font
    PGQCHIMPLEMENTEDinquire character height
    PGQCIIMPLEMENTEDinquire color index
    PGQCIRIMPLEMENTEDinquire color index range
    PGQCLPIMPLEMENTEDinquire clipping status
    PGQCOLIMPLEMENTEDinquire color capability
    PGQCR IMPLEMENTEDinquire color representation
    PGQCS IMPLEMENTEDinquire character height in a variety of units
    PGQDTNOT IMPLEMENTEDinquire name of nth available device type
    PGQFSIMPLEMENTEDinquire fill-area style
    PGQHSIMPLEMENTEDinquire hatching style
    PGQIDIMPLEMENTEDinquire current device identifier
    PGQINFIMPLEMENTEDinquire PGPLOT general information
    PGQITFIMPLEMENTEDinquire image transfer function
    PGQLSIMPLEMENTEDinquire line style
    PGQLWIMPLEMENTEDinquire line width
    PGQNDTNOT IMPLEMENTEDinquire number of available device types
    PGQPOSIMPLEMENTEDinquire current pen position
    PGQTBGIMPLEMENTEDinquire text background color index
    PGQTXTIMPLEMENTEDfind bounding box of text string
    PGQVPIMPLEMENTEDinquire viewport size and position
    PGQVSZIMPLEMENTEDinquire size of view surface
    PGQWINIMPLEMENTEDinquire window boundary coordinates
    PGRECTIMPLEMENTEDdraw a rectangle, using fill-area attributes
    PGRNDIMPLEMENTEDfind the smallest `round' number greater than x
    PGRNGEIMPLEMENTEDchoose axis limits
    PGSAHIMPLEMENTEDset arrow-head style
    PGSAVEIMPLEMENTEDsave PGPLOT attributes
    PGUNSAIMPLEMENTEDrestore PGPLOT attributes
    PGSCFIMPLEMENTEDset character font
    PGSCHIMPLEMENTEDset character height
    PGSCIIMPLEMENTEDset color index
    PGSCIRIMPLEMENTEDset color index range
    PGSCLPIMPLEMENTEDenable or disable clipping at edge of viewport
    PGSCRIMPLEMENTEDset color representation
    PGSCRLNOT IMPLEMENTEDscroll window
    PGSCRNNOT IMPLEMENTEDset color representation by name
    PGSFSIMPLEMENTEDset fill-area style
    PGSHLSIMPLEMENTEDset color representation using HLS system
    PGSHSIMPLEMENTEDset hatching style
    PGSITFIMPLEMENTEDset image transfer function
    PGSLCTIMPLEMENTEDselect an open graphics device
    PGSLSIMPLEMENTEDset line style
    PGSLWIMPLEMENTEDset line width
    PGSTBGIMPLEMENTEDset text background color index
    PGSUBPIMPLEMENTEDsubdivide view surface into panels
    PGSVPIMPLEMENTEDset viewport (normalized device coordinates)
    PGSWINIMPLEMENTEDset window
    PGTBOXIMPLEMENTEDdraw frame and write (DD) HH MM SS.S labelling
    PGTEXTIMPLEMENTEDwrite text (horizontal, left-justified)
    PGTICKIMPLEMENTEDdraw a single tick mark on an axis
    PGUPDTIMPLEMENTEDupdate display
    PGVECTIMPLEMENTEDvector map of a 2D data array, with blanking
    PGVSIZIMPLEMENTEDset viewport (inches)
    PGVSTDIMPLEMENTEDset standard (default) viewport
    PGWEDGIMPLEMENTEDannotate an image plot with a wedge
    PGWNADIMPLEMENTEDset window and adjust viewport to same aspect ratio
    PGADVANCEIMPLEMENTEDnon-standard alias for PGPAGE
    PGBEGINIMPLEMENTEDnon-standard alias for PGBEG
    PGCURSEIMPLEMENTEDnon-standard alias for PGCURS
    PGLABELIMPLEMENTEDnon-standard alias for PGLAB
    PGMTEXTIMPLEMENTEDnon-standard alias for PGMTXT
    PGNCURSEIMPLEMENTEDnon-standard alias for PGNCUR
    PGPAPERIMPLEMENTEDnon-standard alias for PGPAP
    PGPOINTIMPLEMENTEDnon-standard alias for PGPT
    PGPTEXTIMPLEMENTEDnon-standard alias for PGPTXT
    PGVPORTIMPLEMENTEDnon-standard alias for PGSVP
    PGVSIZEIMPLEMENTEDnon-standard alias for PGVSIZ
    PGVSTANDIMPLEMENTEDnon-standard alias for PGVSTD
    PGWINDOWIMPLEMENTEDnon-standard alias for PGSWIN

    118 of 127 routines implemented, 115 of 127 fully implemented.

    Current status (libcpgplot):

    cpgarroIMPLEMENTEDdraw an arrow
    cpgaskIMPLEMENTEDcontrol new page prompting
    cpgaxisIMPLEMENTEDdraw an axis
    cpgbandIMPLEMENTEDread cursor position, with anchor
    cpgbbufIMPLEMENTEDbegin batch of output (buffer)
    cpgbegIMPLEMENTEDopen a graphics device
    cpgbinIMPLEMENTEDhistogram of binned data
    cpgboxIMPLEMENTEDdraw labeled frame around viewport
    cpgcircIMPLEMENTEDdraw a circle, using fill-area attributes
    cpgclosIMPLEMENTEDclose the selected graphics device
    cpgconbPARTIALLY IMPLEMENTEDcontour map of a 2D data array, with blanking
    cpgconfNOT IMPLEMENTEDfill between two contours
    cpgconlPARTIALLY IMPLEMENTEDlabel contour map of a 2D data array
    cpgconsIMPLEMENTEDcontour map of a 2D data array (fast algorithm)
    cpgcontIMPLEMENTEDcontour map of a 2D data array (contour-following)
    cpgctabIMPLEMENTEDinstall the color table to be used by pgimag
    cpgcursIMPLEMENTEDread cursor position
    cpgdrawIMPLEMENTEDdraw a line from the current pen position to a point
    cpgebufIMPLEMENTEDend batch of output (buffer)
    cpgendIMPLEMENTEDclose all open graphics devices
    cpgenvIMPLEMENTEDset window and viewport and draw labeled frame
    cpgerasIMPLEMENTEDerase all graphics from current page
    cpgerr1IMPLEMENTEDhorizontal or vertical error bar
    cpgerrbIMPLEMENTEDhorizontal or vertical error bar
    cpgerrxIMPLEMENTEDhorizontal error bar
    cpgerryIMPLEMENTEDvertical error bar
    cpgetxtNOT IMPLEMENTEDerase text from graphics display
    cpggrayIMPLEMENTEDgray-scale map of a 2D data array
    cpghi2dNOT IMPLEMENTEDcross-sections through a 2D data array
    cpghistIMPLEMENTEDhistogram of unbinned data
    cpgidenIMPLEMENTEDwrite username, date, and time at bottom of plot
    cpgimagIMPLEMENTEDcolor image from a 2D data array
    cpglabIMPLEMENTEDwrite labels for x-axis, y-axis, and top of plot
    cpglcurIMPLEMENTEDdraw a line using the cursor
    cpgldevIMPLEMENTEDlist available device types on standard output
    cpglenIMPLEMENTEDfind length of a string in a variety of units
    cpglineIMPLEMENTEDdraw a polyline (curve defined by line-segments)
    cpgmoveIMPLEMENTEDmove pen (change current pen position)
    cpgmtxtIMPLEMENTEDwrite text at position relative to viewport
    cpgncurIMPLEMENTEDmark a set of points using the cursor
    cpgnumbIMPLEMENTEDconvert a number into a plottable character string
    cpgolinIMPLEMENTEDmark a set of points using the cursor
    cpgopenIMPLEMENTEDopen a graphics device
    cpgpageIMPLEMENTEDadvance to new page
    cpgpanlIMPLEMENTEDswitch to a different panel on the view surface
    cpgpapIMPLEMENTEDchange the size of the view surface
    cpgpixlIMPLEMENTEDdraw pixels
    cpgpntsNOT IMPLEMENTEDdraw several graph markers, not all the same
    cpgpolyIMPLEMENTEDdraw a polygon, using fill-area attributes
    cpgptIMPLEMENTEDdraw several graph markers
    cpgpt1IMPLEMENTEDdraw one graph marker
    cpgptxtIMPLEMENTEDwrite text at arbitrary position and angle
    cpgqahIMPLEMENTEDinquire arrow-head style
    cpgqcfIMPLEMENTEDinquire character font
    cpgqchIMPLEMENTEDinquire character height
    cpgqciIMPLEMENTEDinquire color index
    cpgqcirIMPLEMENTEDinquire color index range
    cpgqclpIMPLEMENTEDinquire clipping Status
    cpgqcolIMPLEMENTEDinquire color capability
    cpgqcrIMPLEMENTEDinquire color representation
    cpgqcsIMPLEMENTEDinquire character height in a variety of units
    cpgqdtNOT IMPLEMENTEDinquire name of nth available device type
    cpgqfsIMPLEMENTEDinquire fill-area style
    cpgqhsIMPLEMENTEDinquire hatching style
    cpgqidIMPLEMENTEDinquire current device identifier
    cpgqinfNOT IMPLEMENTEDinquire pgplot general information
    cpgqitfIMPLEMENTEDinquire image transfer function
    cpgqlsIMPLEMENTEDinquire line style
    cpgqlwIMPLEMENTEDinquire line width (as integer)
    cpgqndtNOT IMPLEMENTEDinquire number of available device types
    cpgqposIMPLEMENTEDinquire current pen position
    cpgqtbgIMPLEMENTEDinquire text background color index
    cpgqtxtIMPLEMENTEDfind bounding box of text string
    cpgqvpIMPLEMENTEDinquire viewport size and position
    cpgqvszIMPLEMENTEDinquire size of view surface
    cpgqwinIMPLEMENTEDinquire window boundary coordinates
    cpgrectIMPLEMENTEDdraw a rectangle, using fill-area attributes
    cpgrndIMPLEMENTEDfind the smallest `round' number greater than x
    cpgrngeIMPLEMENTEDchoose axis limits
    cpgsahIMPLEMENTEDset arrow-head style
    cpgsaveIMPLEMENTEDsave pgplot attributes
    cpgunsaIMPLEMENTEDrestore pgplot attributes
    cpgscfIMPLEMENTEDset character font
    cpgschIMPLEMENTEDset character height
    cpgsciIMPLEMENTEDset color index
    cpgscirIMPLEMENTEDset color index range
    cpgsclpIMPLEMENTEDenable or disable clipping at edge of viewport
    cpgscrIMPLEMENTEDset color representation
    cpgscrlNOT IMPLEMENTEDscroll window
    cpgscrnNOT IMPLEMENTEDset color representation by name
    cpgsfsIMPLEMENTEDset fill-area style
    cpgshlsIMPLEMENTEDset color representation using hls system
    cpgshsIMPLEMENTEDset hatching style
    cpgsitfIMPLEMENTEDset image transfer function
    cpgslctIMPLEMENTEDselect an open graphics device
    cpgslsIMPLEMENTEDset line style
    cpgslwIMPLEMENTEDset line width
    cpgstbgIMPLEMENTEDset text background color index
    cpgsubpIMPLEMENTEDsubdivide view surface into panels
    cpgsvpIMPLEMENTEDset viewport (normalized device coordinates)
    cpgswinIMPLEMENTEDset window
    cpgtboxIMPLEMENTEDdraw frame and write (dd) hh mm ss.s labelling
    cpgtextIMPLEMENTEDwrite text (horizontal, left-justified)
    cpgtickIMPLEMENTEDdraw a single tick mark on an axis
    cpgupdtIMPLEMENTEDupdate display
    cpgvectIMPLEMENTEDvector map of a 2D data array, with blanking
    cpgvsizIMPLEMENTEDset viewport (inches)
    cpgvstdIMPLEMENTEDset standard (default) viewport
    cpgwedgIMPLEMENTEDannotate an image plot with a wedge
    cpgwnadIMPLEMENTEDset window and adjust viewport to same aspect ratio

    101 of 110 routines implemented, 99 of 110 fully implemented.

    giza-1.5.0/docs/documentation/thumbs/000077500000000000000000000000001477367113400175675ustar00rootroot00000000000000giza-1.5.0/docs/documentation/thumbs/Getting_Started.png000066400000000000000000000056111477367113400233670ustar00rootroot00000000000000‰PNG  IHDR‚b%œ(sRGB®Îé pHYs  šœtIMEÚ  '$Ø;Ò IDATxÚí]ËSÚÞÏMxÊC¢( Ìôë£P­¶gl™ÎÈÂé¢.û÷õoèª]tá´8Úéh;>ŠŽc«À ”—îoqûË0hIá%9»@rss>çqçœ „˜J½&\e ƒJ* * *É€AõÞ½„!—˽ÿþË—/•AÝ!ÍÝŸZ­V£Ñ`–N§†QÙÔ& »ÝÞD¬ïÇñ‰‰ ½^!ÜÜÜ\__gYýŲ¬V«­oŽaƒÁ \r B@”¦é‘‘¡åd29>>Ž0F7‹E³Ù,ÜÉdÆÇÇ{ˆãx.—³Z­Âe:¶Ûíè@6›Å0Œ$Iá—L&311Q«ÕÐ#…BÁf³ —€ëëk»Ý.ür{{k±X„7rw}}ír¹„J¥’ÉdnàyB(|Â]&@«ÕªN§C—:îÓ§OïÞ½“Àçó!VFNg4ÿõüèèhsA8ˆúçõz›Ü€a˜Åbi¸¡á—úK!zB(|dCƒw{(z’¡AÑol~Ïó&“©y  ‰æy>™L&‰W¯^©†¥eúþý»Çãq¹\‚‘=`…ŽŒŒê©’\ªÕj###¢cN8Žóz½…BA¼¶@ÂB¡àõz9ŽkwúFMÓêàµB#”&¶H Z­–¢(u6ׂ*`FQ”V«m†jµŠaØÔÔÔÕÕ•ªrUáêêÊív ll©Çã‰Åb*gåR,C0´ë¢…9ˆÓé&q*I!–eNg[÷ Â, ÍUþJäÏóV«U"Ç$Á°Z­''' )NNN¬V«D‡*u¿ÇquO1 ƒã’Ù+½Ý`0xxx¨Ž—¤ÃÃÃ`0(ý\º¢!P’^!=Î+\Ô C'''UG-Å9ONN֯ъZ'‘¿‰D½®™L&Š¢T»ÔÜ"Qe2™ê¹TÏÆV`ðx<õ—&“éÏŸ?êÂFsÓ}vvÖ°ÁÐÀFÙ0Ü]âƒÑhTUˆ©B4½»=#ºS€ËE{dd¤\.«Úð/þ”Ëe) mÁ€5Ú¹U‘¸‹À¹Ö¢•p1³Ù|yy©Ú¥»2zyy)„7tI’'''*ßïÒÉÉ I’-¨ÔyCùýþd2©ò½ž’ɤßï—ÅF©0ÜËk!I’4M«¬¯'š¦…p))l”ƒ°bÞ`—Fʪs¾—9ÍÙ(†&\¶X,™LFuÔØÿCïºIÖÖëǯ_¿T :Ž–o+¿áÅ‹WWWCn— „WWW@ Fðv^oµZËåòÛ%@¹\–¾ß©0 Ç …Â0;jôá…BÇñvıݤ+¯×»¿¿?´ ØÛÛ»¦®0 H؛Ȃ^¯¯V«<Ï' <Ïs‡rAZf£8 ©weBè÷û3™ÌpÂÉdü~¿èZ^s6*`”PnJ¹*>6—ËѾMÆåN4î]0©V«-¬îºW€²,+= F†jµº»»›J¥ZcåÒÒÒÖÖÖ°Y¤­­­¥¥%Ešú C­V+ Éd²eÃ277GÓôØ%!MÓsssJ5ø­V›J¥‰Dk|„Že³Ù!±K(ullL)±û C¹\®Õj?Æqœçù|>_*•ˆ­¢/èõz”2$DQ”^¯;!MXª‹~ùò%º›¦é>ìîîr¹˲e|yyy0Øßß_^^–¨7,Ëær9©0ìïÚ|>ïp8ìv»ÜÎi4ƒÁÀqÜöB4_«OOoŸþ¶Åq\±X¼¼¼œššššš²Ùlhfh³Ùt:ÄÁ(„Ðét–J%ÑÙÊ@{…R©är¹¤óD§ÓÙl6qm€F¡¢A‹q_¢iºh³ÙöööêT}ÔÞÞžÍf“ÎLâ¶Š5s¹\í]s ƒGGGrÈ8::’1/o¤DÓôÅÅÅññqûò¢Ó邨ÕjL! „µZ d'”mü¯o@Y¡vMñI’dY¶¾¨ÊÃP…J¥‚b/×u¼áMí¿àp8¶··žQÚÞÞv8°·ªµ·¶¶vttô08::Z[[ëPãmmû4Q dàà!ÚÿœÎnû4¥‘$ù0"ŽQŒ0I’ÒÇîrÙØÁ v»=?€Ú,ËÆãñ–zïþ®¬¬œŸŸ®iBÝ>??_YYéè'àÕå‡ä:j];^•x~~>¨‡|ýúu~~¾Ó/êFqègÏž¥R©S a*•zþüyÞ…K1,m’ÍfCs„š*g³YÑÅQéö¹uR©”"p»ÝÇÇÇdšÇÇÇn·[‘>‹²Q—Ë¥ˆd¡rL à „B@†‘U©M6ÊNOoM² „ ±X¬ÿM2G±XlaaA©U<…ÓÓÛA-÷éDTª-×w­«x7¥lffæææ¦R©ô­B@+•ÊÍÍÍÌÌL7;‰wSÊ „³³³ñx¼?M2Añx|vv¶Ë± x—õ]«ÕZ,„Dš£xŒ-rƒÁƒƒƒ.3ppp 5MÏÇl½?é„ÏçÛÜÜìŽN Wlnnú|¾>Éœ¡;q(Yhuu5‰t)€H$²ºº*%]Gec7vߤ“Ïç ‡ÃÓ Ôl8öù|]Öø¶`r<‚Õh4¡P(‰tè†a"‘H(B¹:]2Q6ö×yш/ ÑhÕòSD-P#4MG£Ñ………îkù¸è{Á@[u‰D¢Í`'!Ä(‘H úsÓ©OaÀ0ìéÓ§v»=£Ôà@£ R©‡ívûââbê" ÖÇd0B¡Ðéé)A$IŽÉz<›Íf³YžçC¡ÖßÔUmhM¢½^ïôôt¥RÙØØh(þ*4ØÐ2MÓ•JezzM’»ÐU…µa˜ÓÓS›Íæñxhš.‹Âaí6›ÍÁ`0‹Q511*j™ÍfŒÉdº½½­T*€t:ív»ƒÁ ÏóÅb±çÇvã8.Z:ø››Ïç?~üøßÿ½~ý:N+^Ô°ÿKþ(ÞCÑC웹>Žã(ŠŠF£@@©ŒóÛÛÛH$¢à9à?~ü¨Õj+++J5˜Ïç¿}ûööí[¥L&“———ëëë²]t±Xüýû·Ñh¤iºR©(õ…ÉdRôœRY”Ë唵㣣£¢gGÊ"Žãòùüõõµ<£T¯• ÃT*‹ÅÒ~ljÕGl'W·Áb°,Ëó¼ÑhTpýGÙËå2Çq8Ž7ÙÝÈÃ%þüIÄÜÜAEÍÌÌT«U”㸲EEÔyÃ?)N{½ÞÏŸ? \”N§F#I’ üyófà²Z†éééG¥Ói4)‹.—‹¢(Ç»™Ó‘…ƒAL¹WØQù­®- +Kÿ×k,,(Ø IEND®B`‚giza-1.5.0/docs/download/000077500000000000000000000000001477367113400152235ustar00rootroot00000000000000giza-1.5.0/docs/download/index.html000066400000000000000000000037211477367113400172230ustar00rootroot00000000000000 giza - Download
    giza

    Packages

    Ubuntu

    Stable releases are available via your usual package manager:

    sudo apt get install giza

    Homebrew

    Stable versions are available on Mac OS via Homebrew as follows:

    brew install giza

    MacPorts

    or on Mac OS via Macports:

    sudo port install giza

    Installation from source

    For installation instructions head to the documentation page.

    Development version

    You can browse the source code online through the github site.
    Check out a development copy using the following command:

    git clone https://github.com/danieljprice/giza.git

    If you would like to contribute code, please send an email to the address on the contact page.

    Stable versions

    Stable releases are available via github and also from the sourceforge page.

    giza-1.5.0/docs/favicon.ico000066400000000000000000000015761477367113400155460ustar00rootroot00000000000000h( @#.#.¿¿¿ßßßÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ```ÿÿÿÿÿÿÿÿÿÿÿÿ```@@@ßßßÿÿÿÿÿÿÿÿÿÿÿÿ¿¿¿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŸŸŸÏÏÏÿÿÿÿÿÿÿÿÿÿÿÿ@@@ŸŸŸÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ@@@ ÿÿÿÿÿÿÿÿÿÿÿÿ¿¿¿000ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¯¯¯ÿÿÿÿÿÿÿÿÿÿÿÿ```ïïïÿÿÿÿÿÿÿÿÿÿÿÿ¿¿¿ÏÏÏŸŸŸÿÿÿÿÿÿÏÏÏ¿¿¿ÿÿÿÿÿÿÿÿÿÿÿÿ¿¿¿ŸŸŸïïï000ßßßÿÿÿÿÿÿ¿¿¿ÿÿÿÿÿÿÿÿÿÿÿÿ000ïïïÿÿÿ¯¯¯000ßßßïïïÿÿÿÿÿÿÿÿÿppp@@@000ŸŸŸÿÿÿÿÿÿÿÿÿŸŸŸ(((ŸŸŸÿÿÿÿÿÿÿÿÿ¿¿¿ÏÏÏÿÿÿïïï@@@ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿëëëõõõÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ000ŸŸŸÿÿÿÿÿÿÿÿÿÿÿÿßßß000000¯¯¯ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïï000pppïïïÿÿÿÿÿÿ¿¿¿ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïppp ppp¿¿¿[[[ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿßßßppp zzzÁÁÁÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþÿÿÿÿÿÿÿÿÿS)giza-1.5.0/docs/index.html000066400000000000000000000030021477367113400154040ustar00rootroot00000000000000 giza
    giza

    Overview

    Giza is an open, lightweight scientific plotting library built on top of cairo that provides uniform output to multiple devices.
    Giza is currently distributed under the LGPL license. It is written in standard ANSI C and has bindings for Fortran 90/95/2003.
    Devices currently supported by giza are: the X Window system, PDF, PostScript, eps, png and svg.

    Giza also provides a drop-in, modern replacement for the PGPLOT graphics library (libpgplot and libcpgplot). Current status of the PGPLOT interface here.

    Written by James Wetter and Daniel Price, initially as a backend for the splash visualisation tool.

    giza-1.5.0/docs/news/000077500000000000000000000000001477367113400143705ustar00rootroot00000000000000giza-1.5.0/docs/news/index.html000066400000000000000000000073541477367113400163760ustar00rootroot00000000000000 giza - news
    giza

    News

    2024.12.05: 1.4.4 released.

    2024.12.03: 1.4.3 released.

    2024.12.02: 1.4.2 released.

    2023.11.30: 1.4.1 released.

    2023.11.28: 1.4.0 released.

    2022.03.28: 1.3.2 released.

    2022.01.28: 1.3.1 released.

    2022.01.27: 1.3.0 released.

    2021.06.18: 1.2.1 released.

    2020.01.22: 1.2.0 released.

    2018.11.20: 1.1.0 released.

    2018.09.06: 1.0.0 released.

    2018.03.07: 0.9.5 released.

    2015.12.23: 0.9.4 released.

    2015.04.28: 0.9.3 released.

    2015.01.05: 0.9.2 released.

    2014.08.28: giza now available via MacPorts.

    2014.08.28: 0.9.1 released.

    2014.08.22: 0.9.0 released.

    2014.04.01: 0.8.1 released.

    2013.11.15: 0.8.0 released.

    2013.02.20: 0.7.6 released.

    2012.11.16: 0.7.5 released.

    2012.08.28: 0.7.4 released.

    2012.05.15: 0.7.3 released.

    2011.11.10: 0.7.2 released.

    2011.09.12: 0.7.2 released.

    2011.08.30: 0.7.0 released.

    2010.08.10: Added a basic tutorial.

    2010.08.10: Added an installation guide.

    2010.08.07: Redesign of the web site!

    2010.03.01: A proof of concept added for download

    2010.03.01: Website created

    giza-1.5.0/docs/samples/000077500000000000000000000000001477367113400150605ustar00rootroot00000000000000giza-1.5.0/docs/samples/images/000077500000000000000000000000001477367113400163255ustar00rootroot00000000000000giza-1.5.0/docs/samples/images/sample1.jpg000066400000000000000000001240341477367113400203750ustar00rootroot00000000000000ÿØÿàJFIFHHÿÛCÿÛCÿÀXX"ÿÄ  ÿÄ>X !4x—µÖ"#˜×&1$%2ABa3QCUq‘ÿÄÿÄ4!"1A#2Q$Baq%R&3CTr‘ÿÚ ?ÿ"ÝëÊMƒQÛ±LÉòF£TØ{.yG\Åm[ÿ¸½|­Ä].’°ô¨«%R©°#Ùga±š%âó ý@l4€ ýMËŸ1´EϤ⮼íw¶·µÛAÇ@¨¿¿¬}5>wÿõÁCbYé­nºººÚklɱZÚªó²¾ñÛVÎU¾’Êô‘ì:Øz*ÉäDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDå<žQ4¦Þ ò«Ëu¸ËÉ[m}AJOCÚ9zÛ‘Zæ¡?#sc ûŠº¹Xýëx_WX®3Ò±6Ý=e©ÈÖ‰|™Ž³¿’ŽžŽhÞwÕû9Wo=¯yUÍõܹ¬ìZ®ÚÕÜfGÑ·Ê?F§dê)&Û’éúÜÛ¶lm¸›ëË  …/PÙ«I©%Wa-jm1\ˆ^ÊÞ4ž@jn^%Ëí9£òz»jã­gw½e_½Ñuîè¤â²o{ߪ_m‰Zž¯´E\ϰ^ÃlZÍ“dk‡I­L KÆÉÎ᫨öYþÈS”ÜÒžÒtI>Ýø±­5Ï"´? .›C’[?Ö©QÐ{*»µ#êÚ†‡Æ=ÇÈ–Ïgïru¦Ô‰Ë Êñ@aHžµ9A­‘â­ Þg—âÎ3ï7øòU5‹p4¯ƒ›wm”6óuW7W^¢ dZÅÚÛéñ y®™hèÙ´‡4ƒŠ »+ m¼.T4Û^#NšÊÚÓ½_cÛô˜ëÐXñíU+ÕÀÆ^<ñæó¿¯з[¹£Í¸RBóouÓ*u:f鋦ҩ°´“BÕ*§£¾xzA¹:jweO½«Î› ¶Iœ"e[›[¤«„§TÊ#‡H*©:Ä+”rb¨HŸX–VöåªÝ,²¢3ûKäõü8GÓnzl àÖÏ]Œ‚ÕzË®À¶üvü»sâç7`ôÝš1äÞËBã^]ÁlÊúrð¸9~C—ftÛ]±Ó}˜l£Uu=:²µýŪ÷vM ý«ùÌÞk´5ÚPñÚ“rÑ·Ž!µÕòTäYÂT %~r«d’Ö›3»$¡á"ßÙìUÛûvë«XŸF|Ž©ì}' xY»+ié|éÞ`ú@gO;È-c[Ùø.ꇖõF–u$KÜé°j ^­,st˜›2Øí Ë´ëa#õý™e×Vµrë²§öï¢åð¿= 5Ú VWGFzn­–ê,¶—KW;éýÜùÓKåדvq·Šå¸ëŽž/—ÂÖ=K¯‚•9U¶»3ê˦œÜ²«øþO.C6Œµvà!Ïîþà"CÀCŸ;ÜÿýÀDÿ‰3‡/ð€‡>w¹ÿû€‰þ=|ïsÿ÷üz/ðÃÚ¼»Äjý‘-¯ù¡é“¾EЮ4˜ÜoX‡Ù·2¯H¹­±Ã,ëòaæ]Ì¤É 5ÉɇS±É‹×éÇçÔ¾Íj]]3²9éŠØ’Úê“'}‹6ôˆ4mÑýj1Õ¥†Xc_©†9g8«æùg…†ÙO±ÁÍ‚t娀 |ïsÿ÷üzùÞçÿî'øô"_à |ïsÿ÷üzùÞçÿî'øô"_à8ý xY»,jo mþ`ú@`ÉÈ-…[ÕY6ꇊõÎk^=6t¹-_Y•û‡3%Ķ{3;ì2\¤NÇÛAxsç{Ÿÿ¸ŸãЉ€€<9ó½ÏÿÜOñèxsç{Ÿÿ¸ŸãЉ€€<9ó½ÏÿÜOñè”OÆ{ÙyÈßAãœ|îþŸ)Å›|È\aýmøÉ ¼Æ˜š¸“ü×Äw©(L°ìº¹sÐã´éÇT"v´à!Ïîþà"CÀCŸ;ÜÿýÀDÿ„Küà!Ïîþà"CÀCŸ;ÜÿýÀDÿ„Kü¹ÂÍÙ[OKçNóÒ:yÞAkÞÏÁwT<·ª4쳩"^çMƒPRõic›¤ÄÙ–Çhf]§[ ¯ì ¼9ó½ÏÿÜOñèD¿À@ùÞçÿî'øô<9ó½ÏÿÜOñèD¿À@ùÞçÿî'øôx-«Á›¼F¯ÙÚÿš ;ä] á#IÆõˆ}™ s*ô‹šÛ2ο&eÜÊLÃ\œ˜q•;˜½~œ"tð.õï³Z—WLìŽgz@"¶$¶º¤Éßbͽ"#ÍtZŒuia–×êaŽYÎ*ù¾YáCá¶Sìps`9Ñ|9ó½ÏÿÜOñèD¿À@ùÞçÿî'øôKóÜ`ÚÝ)­¸ýÌ®m‘¥Yí­¹¯û³2ôJ̪dníÖ¼¤Ö᪵™-°ŠÉÂYŸY ,K_÷„S™•›²&½0±µj¯*¡qe–ZþÝR¾wßo‰on¥%WáT³Ùc×MHˬ®¥g¾ÙÏ_¡(·&¾GÕm8¸Ü[6ßNk;>Éú?%ÊÙ2)ÏOH:ŽŠ™0£‚ïjÒi(¶ ޹ÊÛújs&‰ÏŒç÷ƒ(DóÔï>;Q j­ ±#vß_ò—^‘šQ­<Ú4î=[íØ(šU²‘^g]wK¯):•1Á¿Y/d”®YœræÒ¡]<•‹^;aSÏM6ã_*P6—Íâl½Åi_•/Uoq’¿¼ª³Ø‹[9'­¶z}íÐ2ð¼ŽRÞ)ä´½\6~hY^N/9×§Q«–â8«m«èëѬ.tºê³dÓnª³ª)~è€<9ó½ÏÿÜOñèxsç{Ÿÿ¸ŸãÑ.WåþðçÎ÷?ÿp?Ç¡à!Ïîþà"B%þÆáfìÇ*Q¨˜>ñüÜ}sdVÍýj‡êcqc4ŒB ׿€zØ1©Gq!êžÃªl¾v½%ê ÀCŸ;ÜÿýÀDÿ„Küà!Ïîþà"CÀCŸ;ÜÿýÀDÿ„Küà!Ïîþà"D1Èu³t?#8‰¯ùMÍ«4üÐ(íW{ ršZ‘)|½»‹‚× F´©C0³¥pˆ«_qt»ÂBC3†W-šIØ`åXbÌ®û>Lªù$±ëñþí›ü('õ#èÒ™–¢ëcµÚ(Í]u(ggºÀ¥‚–_㦿=°$מ›¬ Åãâ{©·ø•¹¹Œ–؆زUë•FͯùqÆŠµ%§Nk« &e¤üÝÄÄØ®Ø»+*ªè7ù?¨}$S54ïzñssR"y£À{UƇ£¸ ¾5æÅqV§óWCZgìQ÷yŸH÷ˆ«ÁÒ"¢Ý.s2šºÅÆ›<³Õ ›K_dbÊ1Ž—Ü˪Oa_?¨|ܳr4®Âõ§…Œ=ִκ@»´ßUæ­gHh4èSí¥B¬yóXÊÂÚN‹ª·mŒîî/Ój#- UU„ÀxæçÇÿ ~—¯…þ {Ç7>?ùô½|2š%þ&½ýu´¬â­¢õdªÛSoS´µIkje –ißv²×MfÆ”ŒNN:±@lù%Z?Ø–Jò;‚‹°a %ûöQl^ÉÉ;nÂ:9£—ïß;XÚ2d͸tíÊ꘩¢Ýº ¨²Ë(b‘4ÈcœØ)s‘àµÄÕOc@V÷<Yxwwúd †RV&1WUé«äín:`éÓöÌKë§sL¡<Îc–˜tuÙ²‘pùÃØ¦õú4¿Ù²õòr¥…ßHZé4²ÕØëbÒ–†V¥­÷«%ëÙ=;bñW䚸“ÉãâîåKëªÎ4ó÷å×w ¼w­•kÉžì¶r:x÷¦êy ±?Z¦m`úÚúTÕ´Êõ‘œ5^±Hø¶EUg+›s®íü‹çGUì¬Ä«åœÊMÌÈ®æNf]ãÙI'N_;pºžÈI®´ª´ª¤Zê­ºëE ˆˆ¡Q@UTUt'^½[õiÝ»Eû6íÑv½zôÚ÷éÕ«Euú4]c5—]u®ö[mŒÏc³31bLù•ø+<~bl±6£;Ž~h٨撌 úE¬¼KÃ3|ŠíÌê2U‹)(õòžUfý£gmÌšè&¡|UchDضÅÖKGIAZõïáÉ,³•Ãb–ÑNµÆåx[ÅqFë-‡P N°³Ôœö½“æÕi$^´A1‹½Ó¯ÉX÷t¯Â|˜®5p¼æ4Š·†,:Ž­zÂv8ÛGnL´‹ªÃ8ØÝ©Yf™NéÍŠ„Ú™’FÅ"Uân²ÌÕu…+C£ì_^ÌH,•` ùf6¤E Ö{OB/•Ý‹¥qåç6ŸNë{Eü¥2úráÓ>?Sh|€[K2ç5soŽ®E÷=5cúüü¥öµ\g³ePó2zÎI›I÷Mß0~Ù¬^´Y7 ^3t‘lé²éÉ,ÝÂ*TVLÆMDÎSÙ)±œþ‘4@ ‚ìò?‚ìWedfGVGV*ÊÀ«+)é•”ôC €A˜ìÆ""""".m%nD%ÈüËKþ(KK¯¤±þ‹Ô€qxm{4¶qÝ}cërȶ#2ô<î]ÈÆék•úÆÐ? ¤¤t$dŒÔ»Öѱ1 ÊJH¼Tˆ4aÁºŽÞ½tº™ÁlÕ²J®º§ÎšIœæÎ0\äxH’@I=É$Ÿ€ù$þ&Hc¥u£YeŒ©]h¥ÝÝÈUDU™™ˆ  ILɯûIôÁÖ:®¡ÖÇt½¿u98“§K7aJÕ…Zbãx—;d–W¶]ãøŠ…>;8K36©öʘþ§ƒ°¸g³cÇøÆ1íÎ}˜èöç=9ÏÿÜçÛœÿÞD»Æx™;;O#-Lœ³µïµ£%àcd2oiúR ¯I§©¦ALV.—…“°í !\2¼l 4r¦Q¼s"¥Qˆ8,·EM®ÆooSû¹j k'ˆðÜЃê¬õ5Ã9ÃÛZ=Yâ7QéüUVÚø:>‹äÇ·ú‡¨=dz•J¹e{DÇfVj7§üº?\—·Px¯*›Z•`×÷XóIW,lðÙÚh¸Y“öN]'±“0²mŒ›Øk £fsUéÈõP’„š`ÆV9ÂZ ±=° –W]Õ½V¢ÙU¨ÕÙ[¨dtpUÑÔöYI  ‚A•ì{5qúòïæü{qh§^=y­zte՚Ż>Š.¬­•]M¨–Ub2º:«)'-z´¹Í¯Mm'äÛšyXÆR³¹A&xÙt ²¼Î½Û­¢DÛ·5±œd”E±“2•œFŬÜc¦X„bVsFŒÊç®ë2ªï›asÿZÐnmÚ’Z\¥cCu˜»-hØ“ÌY¬ÒUšI+º/ˆI}³–Ï[7xÍÂ.Ú;A'-]6T‹·rÙtʪ®‘ŒšÈ¬‘Ê¢J¦cDÌSÙ.qœÆÆ¶P‡-×-ÏI>Ó› Þù #;è <½Õ©{ q{Ro,Ç®¾×¨ïÉÉê^sŽã®ã³òj§} ‘3ñYùô®¶åóñIö^Êy<ø–¬Ç‰§‘¯‹J,Ï>ÝÜÉ\€€™îÖØðÚ“^Z¶êß3­ÆåvÐñ¤Â²öI·‹£[©Á!Ÿc«¶Âö.·ÓÙÞæ%6éÇkÓŽzònû¬¸$ÛhÎâÁ°ßó÷޶ ƒ”NE##',¶‹…åZ¼dÓO­W¦æHµ:ª—.Ü@Âǹ|u_,áSÙqw)‘»m•Øø9 ]§ãbÙ[d¤£S’^SxI¹‚·@C×Ý*c7`¦°ª¢ÂryÑQYsÍßkMÙ8dúµ(Là<ý÷~üñ—ê–1­~÷.ø¨5¨üÁ¿‘¿?wÊ„^À*Uúì7s™™†Í–í®ë6t»¢ +{ÓAôåÕÁmÏVZ‘M-FÃS=ZƒüÉÓ€€€€€€€€€€p#Þ9¹ñÿÈ¥ëáˆñÍÏþ@ý/_Kü $¯ÉéxO_qÁ‚‡íwÌóÆ—®ÄÙÂŒôM%&s›yUz¹ë¥­«ªî¡:Å)ŒÙÖÒfè¸ÇwÉÉR¦šh¦š(¦D’H„M$“!Hši¸)L…Æ B¸ÁHBã)qŒcÆ1™GkD›n6ß—<£ùJ%g^ÖâĭШAÄÌNX,Gfï–;×wI‰8•æU3v…+j•m©®Yuu 56 öj¹|l¾Åª¥ò SPËJ’¤©÷n³N¡þõM)U5^+hç9,oÄús‚ãm7dâñÝÈï¸Wei§Ô|á¢îNÄ[ÑnQ‡ÉÂðúktpº7dò«w»hÙWüÖE' *ÝÂI®‚é‘X…U%’T¹"‰*™ðb(š„1ˆr¹)Ëœ”ØÎ3œèùüÏA ‚ A¢ùò?ƒ3m_S©êú´&Ÿ«Î¯ ×_@G7ˆ—–c#a‚§¼{.Ú ÉÒMÒjå8 b^ÖjÎÞ5íÇVÙWÒrÒ/¤‰gocëvi-Ζ{k#ãñÛe)ʪöô_êY·¹ÏF´&Ùd•Œ˜¸H›~eSLäJ˜BÇbƒ~5©i^º+E'Äæ4Öùì@z`ž h'ä{ÙîU$,²ú‹%ì8ÏQ[¶îHú§>®S^»Õ}êù¤ä5gæ²izËVÚ~¥+äÕA[?§rÜm×VDl¬À@@@@@@@@@@@ÌïŽu½©Êz6õ†ó mJ}Ée)‹!(¢vT  b®g‘qB¤Ê3[ ¢žæAã$d4Œr9rwC:`–t®3°¶ÞðÞ ô­ÞoY©ŸÌ‰jz’FEƒ0Ó£ò&½ƒsH\ ¤K*B+]Ô×ʹÂ)¤Œ-vÙ²ªWklµ’ĵ}Ä\•£>§zÁJÊ2“Ú-úh.®¤£Y½=…ZŽgž»VÌUúw ZñhÃwÒê³ÔµU—‚Í—YGö¯¦ö¿›µ+ ¦î3„ä×-¹ï ¦š”¥) R¥! \¥.0R”¥ÇAJRã£.1ŒcÆ1Œcöú&ÊÏçó?‹–ÍÞ7]£´tÑÒ*¶tÙÂDY»†ëÉ,‚è¨S&ª+&c&ªJÄP†1\—9Æf/¸qRŒ¼qæUu•‘ãå‰ Í]WJWRzZÆÐÓÚbSµTÆUÊq£;ÖNß*nÑý‹ZØd¥Â…é©)7®§K¾hûr²¼b,”£Ùµ®Ò`ñÖî¦+½éV½–Ž" $úVjJz5«WŽ7NbÚ^u¶hÕxêq£ºT»ÓiÏr¨íŸ&²‰g@üfôÍ©Ûò´Ñr¯ÿ0ƒlà6峉õ'§ù ë£?!…9~6ëOYýCéäÓ§›(61äxçž…î»y.WŽºá㕽¬ùS€‘îÍž¦©¤šb.!;=ÒÃ5HÖÔã¾õvnÐç¸×¡T}„(Â-aÌåžY6ŽóQ†Ÿ°(Ùd"•&uÁ>ÔV¤nÛÂY›[#”tÅ—ekjCç˰-2ziBÁÀÞ/u¦Mλ·Ï!$ãlúº>}ú2ßÅ3^*t’µØO^À;ü)ýØàtGh§±ßÚ[ÅO÷N!m¾ØË–ä§v¾ëÎÌ5U†¬jÖˆQÕÛ%6k¯³fƒž‹X ×½n¥O®ÒbÜEV¢Cµœ°Ú$‘n³§Yyc·M¾²Ye\¼z¢Ïº“›“|ñEœ)œª‘ºAª Û£ó÷ÝøgñÿÆ_ªXÅþ ~û¿ þ?øËõKÌè:€Àmu¥H•T‰]u¨D­QTtª¨ *¨ ªà%þÙœDDDDDDDDDD>ð·‹&ẹ¿,T§/öÅkÒºU…³’ãzbƒ3ÀFP½RcVã¬Í*Žû¯j~¶Á¸+ž·ú¼/Ð^ŽÁñÍÏþ@ý/_Kü dÛ×b8Õ†ÿ}hI)Ø8өßüOÞfUF‰\/´¿©c¸ÊAÁ¥ù±ú²öàk"fܬ^Þvçu™ºZ¹eÞ·wXASGŽ¡oÚéÖIÝ“~ëj]iWÆæ9œ®–¾“Q»6Ë®„.FÛ*Çw²Jßo·š†¿nýV¦jm#£ÚSe«mŸªÑ_ÍèìX¶úŽiw‡ê¹®[;¹¯êø®Žk‘Á[‚¾:9 x.Á“î_-ZiO XMSQPͬ5}_+(æqåJ© )<õUWy`šjÉ,NX*¶r¡ÝNÌ쳞œ¸YáÊši§‚¦]Iª¤¢ªé¬x×MiUkÙ>)Z„AÙ$ž”Ù$ŸÙîq7îÓÉîÛÉm³ÞÙÈkÓ»]Þ*žîw=÷ÙàQ|í±ÛÅU{é@²D€™†é×Ií­Q}×Yy˜·–ŠãöP“DÇJÕÛBÃú¯äS{X³4‰Ÿbl¦¦ò5å3à¹&~³X5ý"vë^V¥r˜©×¤­•u•nº•Û+Ȧ‹ÎÂåv‹ºl¹c%é™AÂÉ,DJ¡1MŒd1j–œyº¶æª²%‰k°úöÿ¯Ü3n»u¤hWé:ô‚*,íÊr» ‘n;ÕÙ¦Å6°sõ&Ë²ÂÆÃùV iÙMìζkˆÖæµÑ®“a#µ5*éZʯ*ÊÄ¡[.7äy?Nò\]Uf·§ìT›,g]ySmüG§ùƼ/]Ö]ÁÛ®»+wª®)o¦ÊkMk£i6V           '·âÐj£T~4ÍvoÄ ¹mø£1®që· ÙÈ»B#Ö½ÓÖK5|å&}±ÐfåR•ù½C®Øê]_BÖ±îT~.­¼ªý9w9$Í¢x˜°?9³“+%`–3Ù©%Ïœwïܬ|äÇÈðW»M…öúÒZ³*æ9›xÛîÝÙ9gÙô>¨×"‘¢Ö*²P‡Ê(Ù.÷æVF¸G]Ñ5´š8XˆÁ Ä*7ê¾à¯îã-„;áÕ•æÕw´ä1jÖ?>æò²ïNGŠà8®:˳Œ^¡JýPÙêF|±ë渿ØÝË1o-u˜Ù ¨Sg¥Zõ™4»ª²çóyZ²6•z\(¦ î9báCã6tñ.èüb‘µy ¦úL[[c÷µ!¾) RÞ‡—}fn†?࢈֕vTz;«kAWL™pŠÎª!ŽºË±Òno+ëóÍ¥º6œ¶>m ~î©Ý>hÊzõ;Þ°ãòñ¾¢ä+ãë4ñ[>—™á©,Îôp¼ö<üמ×bÅ´fã·æÍ«îU\žoãä@ó=zÎ5›¹Mذ`Ùw¯ž¼Y6ͳj‘×réÓ…ŒDnÝβë*r¦’D1Îb”¹Î&ÊÁ II$ô$’~òfYµçš8hÓRÆ^Ðö6߆¹BЦâ¡X% Ï^YôåÁie&lQ¬·pË ¦&Ý4†BË+Y‹XîŸLGF?ö´ªuw^T+TZŒrQ5ŠŒ$mz 9,˜åkÕ6HuO“*ás&–rís(áÛ“ªåÊŠ.ªŠ)Ö´u¤v%ã}NÎÀZV»ÅAWu+šë•ŸÃÖô“fm'#Ñdñfè&âjùf{!oµIG”Ìß²J• G2-j1ïÖßF¤í‰±”ITüö+ìtOɹ}¥»+9Ø•ï²í÷Ò•Øíf|g¶g^9x3#Ôm¨Û T•3g|thfE`{æÏt=Gmñ;Wé.Xm›¤«ÌZ r½¾AÚ³ò6"Kµ© ;º›^ôRã+8&ämÑÒШg9Èì €9ûîü3øÿã/Õ,cléKü           @÷Žn|òézø_âàG¼ssãÿ?K×Áÿˆ†µÙÙvIÙÃå„-fÏëx‰|¿ÃÌZÕ©GB7´K&جÛâ,‘—šI™w™*½Mi#¹C/ý\ÇìlËÔV¯×7Ý“9ŒšƒN²Ü¤“&zª,ʵòaÃt}†É—p›3 Ü…)΢Ê&šd9ÌRçÆñÒ‹+®4Ž·ªØ³ƒÛ‘®¥9|\¸êáîÆ·¹soز8/I²\I^'gßôç>;ÇAÔPØÉÍ î°ï£5mÕiží:@ OË×NZذ%VÒtØ¥:bÙ<{ð,Í›Ç_¤ù^g]>zôrüw ÂyÙeiöQ§’ç¶Rµº‹ïãëN •Þ¶P”úƒÝ õ žÊ¶ef""»¹1ŠVëã¦Ù&{23ÖN?\–ÇåH°[m‹9šsÇ_øª³}¯@¤ÖbòÔo›Ô–›vá%ê!äîÔšÞÁ€=fÖÄòæ–­Oa¼`º2ôû,E· Ùìzížµub‚Š”j³uÓPާœ£§‰º‡Ñ’¢¢ä²$!¿-Õè©l* -nõ-v•½§~?Ãé~W7ÌÓ§r]g§7%Äò‹™RÍ#ŒæøÝ|?!vZ­²ª­Û—.Ûuá®ë+¨í£?¸è ºúÀ»a‚¶ÀBÚkÑóÕËS ȸ§I=Œ—ˆ”j“Øé&Ð1ÑrÍãE’pÝdÌb(’…1sÑ‘ö¥euWF ¬+) ¬¬; ¤v ‚${…mVç¶Ú/ªÊo¦ÇªêmF®Ú­­ŠYUµ¸W®ÊÝJ:8 ¬ °=šà         y x¯ë*5ÃbZ—]½n‘[™´Í¨Ñ¹½Ìlä]$Á™3…H.“s ÁŠYíž¼Q¨ã*¬Lg ,J‘í±•+­Ëˆ ˆ€³3ðTIø$e˧v¬Ø±Ñn­{4S—.j¬»F-4QMj =¶Úë]h ³;“0ÍÑtÚÜŒÜ'ýfnnqš*šã9ÁÈjž‹FI•ˆégÚT•þµ[6Ü[²¥ÓÛ¥eÎc¢D[TCåBÅÄÃÇ&Δ}%˜Èö #PMôÓç3ÎThÈ„nWÒ2ÏÞÈÊ.\G’NݼpªÎ*©þ¨ÑŠƒ›:ÖÌÆ{¯µÔ­v›¬Ñq@~B{–°¬È@ ’Gs«êNY9žZÝtÒùòÓ—âðQc­—UÇpœnNŽ,@+³SbÃCë²µZíÔ×Xˆªá@©Â€€™ÝÊÍL¢LÔ&çãSJZëd‡Õ‘¶FÑMVtÕÌﬤa"女ټg!2Ä‘ÍÁ×nk´R=Ûxg hƒ äÅ6bõ¢ö$Ea.ÖéÞﯱÕ1²]‘­ålvÓÆUÁKt¬Áö™KS²Ê˜!MœõM¤Ð®PûLØå{x ÍR½p„[&)²¬E–!¤Ìqòbg%ÉŒÍê96KžŽœç C®Ö]׿`¡ é …ñ.Yí«Jüy©–‡fø#êQOàd×ÇÓg¥ø®n›/³Jr¼ ÊVö›kÌ´åÁ»„¼μ…Wò¹©£¶F<&‹P‚Ö"zÁ=oºE£n5ªjf‘kj2ÛÖh’Mt¦¼ƒE #ëVÑøpIE϶dNÊ·:é{›M~Ñ´•’Ú×=šµ^ÇfÄ<Ý„Õè)i²ÀV£–—±Î-‚ï‹ß^FfHÈaœc$±×tñdQÆK×éÆKÇíya§U¥­º­¸6¼ÙöÓ]¢ýñœdÛæmXÃQ!^g+V5­a”E& Ra$äñòʺ”°I¨¶û>ò*!Џ%Ø€@GÚOG¿såJމO2;£ïQ±ÓŠj­z5TönµÛ­2# 9vnA‰ÌÔm›ÝbßU•T,Ý“M4S"I‰$‘ ši¦R‘4Ó!pR„.0R…Æ R—)KŒcÆ0?ö6Χãñçï»ðÏãÿŒ¿T±‹ü@ý÷~üñ—ê–0‰€DDDDDDDDDDDaðgjêø{·3èû"…|“ô€ïbÆÒd®æ6éHFP;XÖÝH¥2ìÏz¦î˜A’™sÕ7cƒôg£§ƒ—\ÓÚŽrùÌÝ‘5«uÌÆÄ‰ô€ïSÅße)™ ¤iãc(®4}¥ÜbÓŒÌî~äfï“Ë^±» §ÖÏJ'Q@"g[W\°ÚôÅèòÒ.ã¡ä'ér“8f’*žZ&«s€¶HÖ\•|d…Œµµ„Vµ2rã·,D«ì¶2n{% ¢‰…#žåË×]S™H£‘mÐSg»ç¾­™rà‡.3ÕäÓí­^úåZCç¶ëÀ&JÜDDD—ø¹ŸÃÛSO+ŽÌú[sÞ+QHç/R‘vQ–â×h6Æ}‡…¦ìˆªƒe’ÇgÛUݵ6{ËG%-@08ꎿɋ-Â>1Ehû/N×™X¤“Y®E_µm®QL,ÔË•éß\*{!âé˵ÃMrÝk´W ˆû|8Ôz³}3«/Ò[~jƒ)æªÖʱX>ŒÐ×±îSÓ«mõ¶Œü‡8y¬÷ÓyõÅó{ž«Øs{°ÐÞ¤[jV-•¿ò4å^¬öa•³ÛX4[K°ùR€€€€€€€€€/òg¢Í/§‰ŽÓú³ºéäœGÜ~Õ}óu[0ïþ®hšú6Žÿüö¿Œ[´ü½ë´%@1×ÚîbW}×6ŒƒÈÓÖ©z®ÑN¬ÅG&”%¢ýh­IÚæ] f…d›vðtJÌd3¤ž®÷¦NÊÜíš7W ?ƒÈ×eùŽtRãE´Spuô¯r}g‘ïí \€ŽÏ›('±iôvܼ_6¼Æ«Ò‡áðr¼ŸÌIsÏfã´ŸN5(=ûqº¬Fé>ž‹ÙÉU*Û Ò­ ÑšîSSëÔ5üƒæØWì÷ÌTÃ.2V:þVï`›¡@:+„öojÕI(šÂøo…©ˆr.‚¹"½RkâßÛofk=á¯h뺖²rKV±¤"ä«!X¦mwis›ÍâaËŒ# ¯¶TeÞÂÍe“õëWˆX³VD˜^·§=™õØ–3)lÓä"ìzº ýÞîŠ3T½ÂÇ_–3³N“Áú‹颼•ç£Ô–ât «’×éúöÓNn9ºíN?™å®«1t]‚¶¥šŽT:›y+ÕäèÆ¿š†ÕœxQV²§dåìZtÚk˜éˆ\èLSu}ÀW 2ñ3Ë‹(BÉkeˆzp|ˆ×0Ð0ïf$,/"b#c]ÏË÷\JÎ9bÍ«ÌIá‹vl½a&ªGz÷¹´j×¼®¯wn‚=D‹õÄ´R¡‰$³±cßë¾€P; P«ñù ±ù$šÎ,ÏB\ö»Ù~½j¹œð.)¡Q^ÊÑ2殜ÃÛb-j›C–¶ë€3“`s ›[WKÙ¸¯âvMRùéã‚r˜ëuí¹ãäìY~G•¶Ò*̵;,gvUÙ-±œel=¹çVœÔP–Þ ì˜mW®"6,§¤ ŽJIߣ(õ–Y$¤¬E‘Qõ¥¬ZSŽÎü¸Æ™Ãõ ëÆʘÀDê0@@@@@@@@@@@€8ïÜøÿäÒõð¿ÄÀxæçÇÿ ~—¯‚%þ3}Á±šj-[}Ù#W›-*¯-:Ö«‚4yc”jØþ¦­±tªK&ÝýŠ\졬¢*¦›·èœéœ¸És®Ûk¢«.µ‚UMomŽA!k­K»$*‚z“×À&Kãðkå7âã0RtîäuæÁ‹:²#_¯eÉŸ5*ö2V¦Û¬D c¢)nÝ•A#0ã[7’M÷&Ï“jå«ý­½/òlÓz‚Ý¥®Öe¥)&"+Š Â^¹¬ÙÛY#Õ. ø™w‡!\½s“Rãÿ eC$™–!STÉ“*¦E2©S%ÆNB+’%• Ct”ªe4ò|cÉ ÓÕÇþƬ™ÆlõSäle ÖZWÄÛu¬Ößs/gÅ®¹ÞÖ^ωrèI¼ÿ,Üç/³’4.Z­j©Ç‰-÷“‡=Xx¾:»Š¡º¾?ŽÍ—v”SbP®T"Iœxˆˆ‰ŒoM9«êuû”Z1ËD¶ÙšÂ ïßÐ]cµ£Ý¯´yɆ'EËrµ^ºk;·K•Ò)ÃÄʺeQ-œfÛ’€ŽÖÔ»/Z,¶bùDµTÑyÖ1îrì{4T'ê"æ1êíßµp–p«w-’Y,áDËœ~-Wji[±]%ݤ®4:ÄäÓ”¤R2Âò%©¬Q $MÌ<æ$#&L䉸h© œ”¸Î`­Žœ•´»Uøê»:,¢Û*ØGíGø~?™˜t|»´Ý.Eâä³ÑXÛÆzwËÞ£Á›'-ÇãÙéÅqøµÍÜWª³ É]TÖį·Ö¬t«@@@@@@@@@@Ÿøáh°_iv}ƒ5(êB>çµvsêCuòL¡® m²ŠAcð™ ‚±Ÿ‚ª5º2§Êö‡2™Éº¥û¼…½¿Öz;jÞaÉ•¬0yõª0lò7ŒT¦E¦cgÂÒ¶—‘¨ç?þWDögügÓêÊ#]¬µæµŒ> R*ÔÆ‹cÆ\!Y„cG'ÉúNe\áŸxYE2eTUC¨©Œ¡ŒlÀfk9:ªVoo6;.¹; 5Z•dbûúLÛ°¤«äT‹uS“Ðû·[MG_7ê<|g{V–X˜¸,ïõJÌ ÎlÓÌúUÕÓÅíZî¨7¶.G÷€'ÊŒDDDþ5bÕË×®PfÍš :víÒÉ·jÕ«t̲î\¸XÄIH‡Ue•9SI2˜ç1J\ç쟸Øî‘Ú–rÌFS«|Ž«ãU ¤Ou°§Ç¼Å=úÇcz¾{Î#ïS—8Ò›¢ÏÔõ8jo­SÌŒd‰¥/6¦í”N8#Wˆ¹Vdhó{ýIe\š.½E²°•¯Ô*gI¡ˆWv]2”ŠéG9W ›ÒjÖ—oÓMi:ï}Ü$ `å‗…Š–‚Y[­ #ÍôJíÛ5·R5Ò*2QE ‘ÑÊi$ŒL)—8ƒ®†ÙUµW`¬§MSôJ®º].ÏcךQr#2C0enŠIšåëÇê|<€ëá¸Ëµàå°Uö7)NüÇ/•/±=+âömÇUŠmZ¹;™ÜU§ŒP~°¯¯5ý›G©ì*ªÎW®Ü clQzÕF/Óg&Õ7)¶‘`·BÌ$šdæk"ÁlafOQ]ª¸Â‰Ø uØ–¢[[+×b-•ºUÑÀee#à«)ðA5eÓ‡Vœ[(·.Ìz.Ë«5èÕߟN{›èº·«¶›Q«±GR¤ ÎGs÷ÝøgñÿÆ_ªXÅþ ~û¿ þ?øËõKD¿À"""""""""""ÀxæçÇÿ ~—¯…þ8ûÂÞTè*~êåþ²lÑ›vÍéÝ)AÓjr»õ'ã(^¨)e™Á8€C¾vJuræU#ÕÿQ”ºqÒ‰Ø!0òOˆÞèMP_Ô&ÇßÙ)¤qþ VÓHIï9%]cüš9ìÞº¬V§Ðb9Í™kÍ/œSÃ4•×ËíÊfÔw,¡ÿÑo´øzïs&[aíþf‰#%d;ì¸ë÷æl(ÈC2C 3„ÚLË›K‡'Hй lÑ™¨­|…Öç®àJ€r6ІÅ$‘ðÙ=äèvİv~,¾’ärqÝ\®«M-Çaæ6q¶-vXéÏSÃîoNX‹Z·MG=ý:òöªµ©žÆé|[K6V     gºî‹Jc1B¤>fdà¬V9ùˆ$æ“]“Øö9†é«ÆÝ²®áÙ;{czò1ÁE¬!Ù¶OÍÛ`º˜SþÑæ ‚ñ0Þ$dzÏ ®¹lèøÏýIÌV÷Œq2\þwQÔÜ2ä‘‹˜°õX´Y’ãZ7•ã#ÜGßMz¾Õ=]²¼u2÷ÑòV?(%‚Ço)ÔrmÑQ§Š~7[§ä¶ð-îÞoBB‡ã½9«Ô›©´bŠ­¥]6wO™+=ºMPÏ1J×·&L¦ߦuYƒ‡,Ë'Zù$od˜rš­Ü4aŠãØxÉ8éGXO ,„Ã5I$«,L-¿»¹ƒ(ãÿ•†Ð¬b7ùD¶÷tVN] §£Ö15½%XXʸ;vò‘õ»&iá%­{k°ªx.§ÏCªôïVeZ­É%6ˆ¿à²I±úƒ¯Š£Óø–í-ªî '3Éæ¶Ðù³íç,»~&ÈŠª¨º}0þœ¾þüì:ZÄk W]uL•ȈˆžÞÙÑºŠ‡-s}öyòJ°‡«T¢Œ–'.÷[Ôaê4¸­úy•²Î»e‚ëc #ÒYyYŒ`õÊ:`k¢oûewo²=¡ü&Ÿ´ljµ)Æ£F²ZS+*¬ÞÕ­·C$f „®zö¯`|å£#¶}r}ê:RÄ÷]Œ@ñB·Â÷ú€ÏÑüøå×áKØòî@ßuËXÍŽÊ“~ W7¸Aö«W©4ìöÈ"ÕÅ]Âßm‚¥×35•›Õ†›E¡ÁSËGÅå…ƒaØÖ¼^\­*îuÛë3ØèèÌ£™gÅMuã â¢ã+µö©7fÊ>)‹VlZ¦\§Ÿz3(ý×çäŸÙ?'üŸ™.ªk¢µª¤TEò!QUgbîåP*ùXìÎääìÌ~I“¿·šîPÉQ¾v ÄMìêUvj±ûÖ¨“lå´‹Vbrô‘?˱Ɍ»%ú)ñBkù¸-ñ°6+E£qPØç]CI0í×,¢WšÕ辸#l4ËUÌUmqoöLÕX¤’i”βØÙD.:·§*ÐêPg·EƒÿÚÕ¢ÔÇÑÿwúAOgòO}ô{Ûë-™y>zÞ[5õèn_Êr6!?<îî#Qù¡ù­¿¯¿&¿íP¡5”$t«@€9ûîü3øÿã/Õ,bÿ{æÏ+4 »mñ;@Wvi-½]ô‚ñõ šq`mm×d­~FÄyr]äzúÝ̦ÆM–ÒËnž†ùW=8„ˆˆˆˆˆˆˆˆˆˆˆ=㛟üú^¾ø€8ïÜøÿäÒõðD¿ÄÕÇ'¯-w¾Çrí˦W]ûyŠ­&²ê(ÕoP¡£J„bF9’I„…›[Zl¤Q"à¯V°.ô¦QÛçöÍ»°Özß`ly\1” Mªë#ƒ%)™U ŸÎ:.Mn:È19zqíöû=½ÈqÖÿ\hKK™Éa„¡W k\åÁ{r{Œ•ÊERcþ+IZK¿X¾Þª®OŽœôtçŸi6rY*ü¦|úu¸XkË”·ùSòWöÉåðTwpÀ«‹Ñ> ÜÊG3ËðÞŸÊî{üvD×Îs©O`øÙ—~oI5¶kÔ+­ÏÖÌ¡)ð'ÝÛ[žsjãíò±òZC_îFiηK+8=aÔí:ÞÊ¢äÆplFBHY«—I% œvÔŠåN”PT¦ ‡•½?²ER.2”æ ¥-ѵ[ ú¬d‘\:FÈÎ!ãˆ6ÊÑT™“É4Ú·tV«¢ã((¦U52Sâ6Ê’Üö+— wƒXòu|֦Й£äËeHBô|ˆñëævý9»GÌä·2æwÒº¸«+Ûa§%¹9¬z8}Õh¼2)·í¾€ÊhV6‚ =P®n‘Û#^Ñ6$?Gªo´ÚÅÎ3 Ø>1h„e6Ï|Ë¡»äñÓÿ}=Ìn®Ä¶´¶¶ ]ˆ¶#Ã#¨eaÿH#þç3^]5éî§£^=eÕEƒ§§F{›ªqúzìFF¢ ÎG€€€€€€€€Ÿm›ÛM[«6FË|R¨Ó_Ñ-·EÑ7N{Á+0/ærØ¥/ç:ŽrÏ$’}**¢„MjxœCï%wk‡tÌnDµ¨TkUl,™Æ€€æí–úÍK ¶eœ2oáâòùé‚)'a—c‚iEÜ¿—›’ŠŽfÝ%\;|ñ»t:йð$€ì“ð’Oè …–%HöZé]u«=–XÁAfwv!UUA,Ì@Hf;^J6ð¬—!¯²ô›ýæŽúÀâZ·êFb»¯[Ø¡ ,ÏÒ“D販NYÉKWè³’“rÞe;$|Ú´ùÕëU¸uv ¥VŠgZ¬CÇ@@BÇ¥„ÄÃD4E„ls4±œöm™³Aè—9ÎpDËÖ1³ÓœæV?£8½Ü-ò­,»?hY–¸XY"²ía£æ>ƒE®¢ë&rÒ«E¬&,PÅ4õ¢Øå$¥-8ÎÔ0@I62€ì:ö¨ *§ä#ßoãñßKÛV0qUeŒûõДë½MU×Û5™ð¥®ùè´ûPÐþfíf…E62ggЙ)¹€6NŒÀ÷µ¶ÇDq¥lñRj2­gyR©û –l£yzÞÏi9¬kÍÜ,²']žYmv¼–IÃU›œæa–kåFÎÕ&wÁ…rn£'xãþܯÀ¯hÍ&br™œ—'ì¯u4±k¢¹ê—89»­¾Î0L•N”¿LÅ?TØÓ(¶è»ý&|„?i vª×­Ñë`ýx»$CI–ë—ÁúÍ¥ž¶1Œ§§Æ3Ð T윎ªY˜×n|ÚªVb~ðÖçÒµwðµ¢Õ‘Ù ,½œ+ 6ÍÙèÑèÞ’ªŠW^_›à¹ (©+'+UÇó-ÛŠnÕ¦íÞ¡ÏMö±ññufW޵¤ùSs÷ÝøgñÿÆ_ªXÅþ ~û¿ þ?øËõKD¿À"""""""""""ÀxæçÇÿ ~—¯…þ {Ç7>?ùô½|+ëþ‹¡©Eg Á웽‰„×PŒXá¶U4ŒÃ)iwoÕ‘!˜CWàfç$°žT_¸F¸ìUN©3 ‰†ñÑjåFŠ«ã¥FZΉµ·<ý•¥ŠUMCFÎKÓì<„Óná5sŒu ²dëöÇÊtð‡šë.»pb=ª4¥€D.\öÚþ_–>õÖTÃ𦞾ÊXù¾7/ÆúU«WyNþ_‘.íå[ÝÎrø1P)'ƺÏÆäß[ôåä<Ïu L™+`âV}O¬çu¡ÿ*Ú_jí-XŠ.Vaî3zÕ >Òtj›ù&?&2¦{.”ržsOŒö³J¬Ôn{r*EÎ'6¬ÄMÖÅ åó#·Ä~£Xט˜ŠM²/QMÄf´ÆMÃ…Þ¦w,Úà‡oƒ•hB _>Js?‰ú`ÙЩïº)v¯37ø±³-M`ÿk³Ï]›«yüǨy.k0´jʹBÚÍ~<§'ž­¼ÕT©þì´so£%ƒâÌÕÔý/—ˆ™+&V½RèZÄ[rnÍUB]nrîµcOeìf8.?出»^ÝÚ›9é*DXËœ§"FLÔðϤ”׳ûO dv8ûš©=3ºó[ñ …`š’lÜY ÂÊÑÛžO£„𪸇¾¯¨Ëfo:ÐjñÎÞãxùUkЉ×ɵ³{ ?ßâOJ ?Iî`©ÇÓÍNmÌĘ؈׮·Ð@L•Ȉˆ‹ªzÛmT6éêŃMk®%õÔUv\³ˆX·!žÎÖgm¶“ –"ËcÕÜ:1³¹2£e°XæäûœÝr¼XÿA¼Xì;eq¶»Ö2E€“¹KGB]ï %X4šÖZÞE¼²öT %UË÷6ɖѪg Z®”=–aKÌ+X|Ù}:§U¯Q«úeJ%¤ ^«_†`L¦Î2")ªL˜2n\äÆìÐlŠiõÔ1ÕS8ÊŠœêÇ6¢<ßÄ©ðO$ö8=ªýÁ: Çñåâ ’®.ô;õ}5”?Ðä4h²Æ-ZiØ– sÑXëù¨ÊQti`EgGÓR­o·¶”ô6ΤD û[>×¥sOÖ¤dÊ¿«¤Ï¬ÔŽ{άö±‚W4zÙ¶JÖ>-ìa˜¨Ó G¬Ávª±p³cãAºÏánMò&œvLï“zÆcÛ„ÜË?…•ÓvôÐ/øÂ‘Ìõ Ûì.Mbj®ru–[8‡¢ÓNŒ=%d_}™ZÆ_¾µl×h¿µ^ܵÖÊAÍ_]2¨6>òOª¼´j­ø®+9FZ­6˨æøÎÁ£1Bm³6snºoFWÍU:» UÖ”§€L•È?}߆üeú¥Œ_âçï»ðÏãÿŒ¿T±„Kü           q÷…¼ƒJµº¹§³¥ù<¤ï¤t§YÕîåôìG®#(]¾E&Ñ©Ævï;%;‡]>¶Öövs÷Š&’œàUS‘$’çç ÔQE R&šdŠ×æ9Îsg!\dÆ1³‚”¸Îsœc=’’z|’Oàû&U•ýrê/p콫!(ƒãÜêZÖ‘ ›eR €æó0¢J¬uNšëÊØ6ÓÕ”A4:ÍŽA|*fiº°žx«3;kÑ4ËåŠNVUîÎqkÚÌU˜xíã†5}Ÿr°^é-»âŠ(Î.·J°Wëñ1ÄÂh°l؉)›¦†ð5OŽ‹éF®½Jvø3em¬u¿‘$üùÜßø¯ö¯J/V׿7¨¹N3’ÕVÝ\ É铦ŠÖšl§Ó4×Àe5"ªÿÍÇTÇíݯ-u–1™+bÚÝŽBñŽ÷ÓBÆçjhYe±Œa2¡y¨·Úp‹<Ïøê’FµˆTý9Iíº¥’æIL*âeêvH×òÖasÖÛv">%›™ gÄÖwêí¶ÁÁšk;zî~¡b®á£DUté)uPl™—Q< 8só^îJ¾­“j·D/óQômX?‚TñþãuóüÿȗmëÙéoEí¢Ü5óþ—¶ maÇrƒÔumaÙe®êý`1Uä/À=t%>"""""""ç?¹·Ÿ(ö¿Q]w£agÚUáµ}%+¬‘Ûçü&÷ÝËw‡\¸Î —°Î:øÉH–E<0¾9Òìt}^Ù­Ícn¶‹~ÉØöö8vÎ@Ìg¶^óޜEô{‡L]– ´óXê³rá©YÅ·E²Ê ’fÌ öíã×Á½º­`RPX”ý%t³uÐku¶¨'³ôíÐ=-|>œø}3ë ZúNÎR¾ Ó´âkolšyAê-œU,²¼WzWÙT×Yæ*ÖTt>U  yûdËÚå^Ç`¯ÊÛ$! åe˜Õ ²Ïv7‘ìWvÚ'2Y°Ä”ªÉ‹#´†9kuÌ$ *à³6÷Í’µÍmèzˆB/}ù?$“òY혒Ì%‰'äÍ™2Õ‹5Yiòöêîvó¶ÛšËo¹úËﵞëíoºÛ¬{–b`RLD :ÓG°«¿uÏlбQT«®o™3¤P¶µèöºÔ‰[ªb¨ýXË% ÈßUª™%Ì^ÀËœ›ˆÄyx°ë-;kØõÅÑn­ ÅZá`3†¨»IM]¸@JìöùM|dˆ¨ã\µ´¢ƒâd«F¸:R›µj\fÿerÛuþ絓Ãs{]{Ÿè¬]`/—Áò4ø²ö<‘™<—˱côŸõyü4ú^‘»ÜúOþ(ËwÏq«î_dr&úmñ°Q¢ªt­ö½¶Û€?Ïø2W qï›<„Jɶø§q¥y ¤/¤¨çgY5sÈ9+êy²¬%ðò*¶FO§«r²OÍŒà¸'@ì €9ûîü3øÿã/Õ,aÿˆˆˆˆˆˆˆˆˆˆˆ~Öv *ç½' Á­Ýì³¼Òä] ¿·9Jí²™ë]yJ> \”çÎ-vˆ~„Èb\ô&CæÆqØËþÚª íÜ X£ým+~ôŠrIåq’±¤Ù5w¯«úêç™÷ýë9#Â?a¤\’i*á¥Ì›v å7HEÜ¡òh«ÞÛEMš»eÚ¿ÓÒGDÆëP(ÄA=Îÿ¥­lÞ¢á÷ÿN³–«‰ÝO7³Ž¬Ú¸î ÿWäÑ‹+ªÔ¼~-6]c£¥t¥–:²©¤µªümN¹_ªÃ%Ýâ+0‘Uø¤=Ÿ£ Á¼s¿. _ÓjÙ"~Rã—ÙŒcØ>Ø’ª¨ªªª€ª t@è?@âq.ºÝ[¢ûÛ¯±îºÛ³Ùm¬^ËË;»f?$’Lök€€€€€—i}Ž}³¬ê÷Çå®ÉK%&Æz¼Wù”-~Ñ[›’«Ú ‹"f‘æ|X{4¤q]ƒ#¯†ØPíœÆDšˆ˜xñÓ^µrSYŸ¡4ª;ÚnÝO±Jîì¯W¶ë—é“£šKlKVÇaœcqå\g=§F!]m•lÄ¥º£Bê §@ùjðM41=y”fÚD).¾@¤Y¸Î?&ïMz¢áO—+ÃÛÁrÕÞlµE\jÕÂòµ-aÅ6Y+ÍziÔ½mjWžßeÑõ²ž6V`      &)È›äö·Ó—+5G,ËtX°U*&d÷Æ8¾ì+4.¿£eÛ.Ñ.úܶË<9•eÚ§ÞɃ7í Úu±µãüžŸý磧?ûÏF1ÿÌcúüþãØ\aÖÅýDf÷Û}ùtV´Å:Ápbë©ÿ—wÚJêÂuÐTòã `ݱQ!éá‹ÝÛþæöh\™Edü [ëºÅçN̨OìÕ×hêÕÊäÍ‹Òþ“Ї#ÊÙêuõ"eœM»2ðvKlü±ËÈúožÐˆOH»Ã ŒHéU€ní•1®ëíé8µìëÜãzF°¬«‡%}l‘hõîe¬ÏÊEÒê0Ñò–ÛŒŸINÛ(¼:žó`ŠY@û'ôä’z $’&:jÉEºn$WRù7г»B¥uV€½¶Úåkª¤ e¶²VŠÎÀ¹oÙ—MUÍŽ·Y}Êåºö,v$áNÏ_æEÛHÍoL±7î§üc³$â¤#¦¤!žeí6…bzeâl3ô·jSxÇF1o³Üç9ö÷œôç9ÿÞsœçþLJֵ9Z=»Xž¸Nßçãš*yû^¼¥ŽvEÛ‰I©<·)΄Tzòo]b¾Ç%‹­C>¿šQ±­S/¸¢‘äíß“ø’ Àðƒ®ÇJKG~LX÷×@GÅÕ®Ù¸5m5”ØÊFJ«Cíb¬VÏY5—5–«9¿E·XTiª  ’|DD1vªFÞé–ê<Ézð÷*ÄýRX™!TÁãlQNâ$7AOÖjñ\u œÝ=ödzpº-ˆõº†GVGSøe`U”ÿÁƒÿvmäÑF¼Ö½rÝVŒ÷Vz²›éu²«Pþž»]Oé€3 ã ®Néǽ?;<|ÏøáÐlŸ³»Õ[b­vC¬lùîÖÈi†ùí U1”ú)Oƒ°Ï¨qúú°kEˆ£ÊÂÚ'­˜ÒN߸ˆ±í)Ém.éÒO]:Z<¶9‹¬ûf(™öä|tc[5fšMÒÐD|JõãÍU¶%×SETÝb7š½ô ªâ…'ùQÁíU2†¿©ï˯Ô\æÜ8ïãøþC”ÛÉq¸´Ò3ÝŸŒä´>î6¶©^ÄQô:3µf»,©ë(õXõ²9Ÿ¾ïÃ?þ2ýRÆ/ñs÷ÝøgñÿÆ_ªXĩ—ø@@@@@@@@üî´d‘Wxå»DL»V¥YÒÉ·HÎ_:E“&åQS™]ã× Ú5Gí:]éêªBô »—¼vÑ<¯ãvÖÐ\˜g—š:õÉ[áËm’¢)Ö¡=y†²#o‰’‰w_^©d¬ÃY›ÈòlZ%2K"ò(ïY¸ÂÇ£ØÃµ­Øy"v#ÎÂ+NÀëÉÈEü± ™Ô‚Ëk­˜¨wD,¨me ÀZÔ«X@=„ ‘â'¹H€ÿš«ÒÍî$rñ§}|„Ù>ŸÞ7×pà·}}²*’s|v`ÔØõuq¤8¬¨¶T¥$vðV‰´guÄJ,Ó¬BÖ½qœ˜ßê{Ñãé*¢sù-ÕPΘݼhä7féu®DñÛ~UÓ€»k©]…+9Kdý“‡¶j²: iÝjq2E>cë01ì$"\HH­FuÕ•ÙéjP¯Eg&µÍ^š±6ŸbÆdћꯦ¥ÙÇÝ»ûÔ²é+ueµYîÑ{æÑZ‹kt©ß3ýVe¶ÊžôªËQÌ—kfú~FŒZ{WQKnµ=ëÊMƒQÛ±LÉòF£TØ{.yG\Åm[ÿ¸½|­Ä].’°ô¨«%R©°#Ùga±š%âó þæøÑ²vÞ@oñ×”õÞ>ò†¥¦+Õg¨Ö÷Mç¢\oszáîàÓ ]5ÍÝ”Lá®×6¸Ø •®UÚÛ& Ì¥‰£WŒ" ]]¸ëœºÝúR™È/H{jU¢ö…wfé:’à øgǾHm5$M…Js^änü¿oÊ—$ÙQ§ëMöl5O;¡‹)§•&s’ÉØêÐò WÇ:‡¿ =;ZÚk³«H Oy;öqõâîòO ¿è[Jyeo«?D¬ôO«±‹&ZóÖ¹ì£ÅoMG‹Ïc.ÖÙþ•Xò­{QxfÌËþ°Øg|ǸÕÅ™<Ýtº'îzo®à©ñžÁY]ùs¦&üÈôã¨£ÈØî<5MCÿò5m;Ù—%NA\²£‡Ü_ؼŒ my›Qðñæì†–çàMÕù=é¬5ÎR:2¦tëÄ€´™is£´‹×%P¨"áyg  –H‡l·?eV\øP/•Cj[ ||WE/¥ÿŽÚò°ë³Ø®È³zsv^;?ªtYp§³ÓpðÌA,ú¹NSˆã9:W @7zgg=[*=¶~‰o=ÁŒi+ÎݾWåd·_Cγ˜3(Êâû"£³ 1†MÄÞ%©å+3Å0õs¬eÞ2Ï.sžÅÂCgeb""""""s®™Åmk~Ôk$ä®®”Z%*^±K }7}–‰Ml¶Ä‹„/ïâÞã«ÕYœlV swDÊML܆YjåŽ;%UE¥[}Wj¶©„\Àîx žbÍÎ l³þ¡\µü‚g>3‚¹A?f6D=¯]U&›*÷>šê­ȧ²®~žíŽþ(Í}ö:‘Ó eøïÈXý1Ÿg#¿G “iÆÜç» '°š%njÇ1ÆqÛñ³“渾3.{•ƒQ¥é¼ f§¦@L•Ȉˆˆˆˆˆ‰Ÿzž…;³[Ú픆Å×UIš‘›!0eV«Û1ýZÀù9$œåŠØ—×°.È»hWJµ‰p‹%û²¯}L\mÿäÎ7ê`rï¶qŽ‚Àé–PšíÍÓž³gõ•šit䊯6íÒYÊ.ȧD<6-ô+ZWõ6Ûh(:÷ªjÍ{Ë5¹+¡»=ô¾*>ÕXýUŽÎ+•-›4ë<.,¯K–þ½²×·œâ¨NÊUGê œµ({ËÜm±˜d®O1t¹VõåJÅy¸J# WªD=œœ“\ª¨V±ì2ë4"®]¹SÂ,Ø´Ew¯¨‹6h.étQ>]¢K´&ãl;'j))#±¤KUµ;Ì4*:–ŒÉ±ÛÖ«òXn–Ts˜l²–-ŽåG±°Hb©¢±vOä<þ¼½ZwFÊœµÖ¤û‡èéÎR¡UI“EÝײã m|‚ðŸs°{dë°€€§³gÜ l¼œî9+êß]× 9ÍÉ’°=º¶ÚÀÔü‡šZͧ(¬ÙNzë¥û·j®šìãôT¶u    $ÂßûW˜’H{SgºxøÂIg؉§´õÄ|ªåötwù=ñ]EBäÝuÙVÑ2dÉ®lSÃÛ•K í‰Ç[Ýb1i%é.r:ÚVç@Š%®¯zæá0¹²º¨ô¡qO_κ"yUS·†P‰ ¢†!“ßD HÕY¾’¬µ®×¶ŽÔ€Õê¦V²±ø`v[¬jGD×vßSßFìž’äRê®Ûw¦3aåEv#=:¸.G’àøúm¤1zY}5ÇðP·÷–. ~û¿ þ?øËõK¦7mçnÐëñRZwF¯¾'^L”q ‘QÖf‡‰Ë'kæo2×™‹ò•â-Xz¹®0ï9y‡8ÏbÝQË~PnO\í|+ƒÚœéÇ.BÕ¼i݈­T×ZŠS³õ¬O¶§Üë·È¨÷5y8yæÌŸ«ÅfIù6gW1Ë«–®×!· ÿ‡þûGùOU™Y‘”†VV*ÊÀö¬¬¤2²`A3,ÓZ;MñÛ_Âê­ «¨z{[דÉ!é:æ­Q®39ð\8uˆÈV¯"ôÄÂÒ2nJ´Œ“œÓ÷N¨uMõ+º£VÓîû fÔµ­¯²6Þj¹ÚÛ»N®Â]övh±Ž¡i9ØV¸Èæ³×LÓ¡Ÿ=‰ªæÈþKðôcÇL";›W $~+í±®µÚËXÖØÅì`Ń;ÄZ ”B~Tuj´×íR¢ªº íÖWâ Òôî®ùüÎ>s‡‹üÚØû•Sa­ñªr¹Ê®ÓøŠî˸9µ´µÃTÛëVnUH«w†­Ðø¡¿£/PÆä,3†­\\¨r8‘­É1?dÝÛY2P{ßHí¾ƒâ&´‡ T1r×ü„áÚóš|óÀš¦@ìÊÉÙ2U;JtüÌ ð4Y­iUB"ª…–M½Î;Ö¨¨SO¯ÐYš‡~™èÝéýÊß*Ì}5È_Éq¹ØÖSªúo[<5šì>ÖªmTµr$›½ð|lyLÈ: ˆÜ·ÅñZ´{vG»éx^7»VÌlùÏ¿–êîÑ]¡p#Þ9¹ñÿÈ¥ëáˆñÍÏþ@ý/_ sÉ€DDDDDDD •¹;O¶û»{4m2JáNK1²k½)^©LdåÉm•Èc`éã*§’àéc*¸ø h]Y´frU4Qm Gä-ÕµlGü€ÄùN•»‚æø~o:%·ðܧÊÑ]„„²î?]:ëG Þ•V =>bÀÂÛZ¯Z¢ŒsEÙ âl¦SS™„Ëò,Ìrÿâ|·ržMúÎs÷w­6+•`’iî!Åk`ìMy+ùDUr„–¿¹LÕr÷®†rŸs°²eg‰ÆzÄ<Ü~‘7=ªeÑTX·SU©`µ^µab©@ýÛ$²v{íù!û[ä«•ÇoÉoÅ~[0Û—]ô¾;nMfð±‚ÒÚkU«O‚ôš”U uucÁÖm      |¹Çî"áeäÙǹ—w ý¬S"õžI¸fÑgG´.}†rõTÊÙÿÚª“ö> Èw>Ô×p5% °’±\ö®­×q d°ã- Þáv‡µÈ­Wn¹Ö¯PËk³5LŠ`Š9†I5ÊfæWN‹RŠ-¹Ø¢ÖŒÅ•|˜t><£æäô:>LBô{êt¸~?G+ÊñüvZkÑ~ÍtR•]o±Cqæthò_§Ì•†} *ÑBÙs2ªƒ´©my¡5%JÆ™“µÇQ œÝ0bõ¥êi¡'oN±òSº¶ÉL¹1ru ƒ+œE Òsm ž„ÍžŒÕ÷í禪ÈöÞ"Ö½ŸÙñQÙý™ç1Éèæù~S™ØkåùÜž¡RøÖ4oÓn«ÅjI*‚Û[ÁI=/C³n¹ì[]¯mBé]K ‹UWuë–ö¼å“9FÔš‰Ü'% ®cÐ|‹– ì-¬‹c%Ù.ŠÇ¨kÜË[#9ij¥>®òÚÓ4ÄkÔnÉ…ƒxm_Åëˆ ,¤<;fo›&Í»á©È宾×Í^µ4tÔnâz]Ý~“á)ÛLaË­Ö`}AÝ»— å'\7ŽZÓeN"2åºÂÒ":!åšYœCvÌ‹#"„cRœˆ§Ù4jƒXö¸#&mQOÖ>ãÕ™|J›Gë¯/l7`«0ñ,@$#|fV›ì;¯³kí¤e·;r7Ò Œ­pÁV•±ZW/±f‚ŠöÓ‚îճ߫&„ûMš¶d݌۠ѣdÈ‹v­‘Mè"ž0R$Š)‰¤™ Œ„!JRãÆ1Œî6ΠÐà?Ð=€€€€™¦ç³Zéz‡h\¨±Ñ³*Ž¿·Ùëòèº^6br¿þZ:%âL]°w”dÜ´MŽLÝÚ*'—P¦7S¨oi_œ³ÀÂYaר‹ DläSœtc#e™"ýŠøÆ2lc µp’˜èÎqù½™ÏùMdRpŠ­Ü$šè.™ÑYHUY%K’(’©Ÿ)ÓP†1Cc%1s’›Æs4ðýeZè*-Ò‡;íA%sÑŽ°©Ìwž”ºOë(‡+˜ù2‡Ì­~±4‚ÊÊ9g$ÙÑóœ¯Ò µŽœ•U&­®p§ûk·%ô‚Wãå®MŸpïûs©ጴÕ.ŸEíÜ´"ná½MÇg{Ðn¼>¡ã9' ÏKO§Ókì0{œÍÊìKV%4 ~û¿ þ?øËõK¿ÄÏßwáŸÇÿ~©c¥Z_ààG¼ssãÿ?K×Âÿ=㛟üú^¾—ø@@@@@@@I‡Rÿlr“ô3t&ÞzCVzz F—újºÊa&¥ÏF:Ÿ‰´l´ÃÒ­”ÞØLá^¦£ƒSÃ-w®TSuAmÆrɵM¦°´k› Y™E';ýª¥f©Jþ¦V˜«f6äÓ-hë¿bá•S]Ÿp9êB¬¢»éuè.ÍvTÝŽž­7¾µ*%EfóG‹=ÒHI³z§~NW_Èe¸=–úsÓÙ7RRų.þŠÍÀ^¶»¢­öl^*¾WÝ©¬RœŠWcýEw"M•˜ˆˆˆˆˆÍþçä—éeýFÔæ[s|I“Ù”Ós\­GiêÚN±þ2gŠîéÙäÏŒ”Ë×:'BÌ1iÑŸ0¥ÖO³l=¬ƒ‡öuêýfõž3q_—Ÿ¶å&ÌÑo‡l&¦•·µZs¾­mƒ¡Bf£•¿rںܵҿ}Ë4›m£_ÔÇ· ä_É+—la+UxDHîÍw¸M¸+Õ.©uÄ…‚Ã$¢LÙ¤uhÑ.ñ)(éŒ<|ƒö¾®Ói®Ò+s· tË õ^³ön~rQrµŠŠŽnwO^»\þÂ"‚ œùèÁŽ|ãL§PÅ.qíBòå³›¯³¶UR>¿úu)Ý%Iž®·%â…Y$4„"«CÇ¥Uä-úõ1&êB™Y­M­I5¨ÈiƒYŒâC·È­OV0$¼‚(øóaØøïáG}³~ˆr´Íš›Ípe°.ý4Øõ¹¯Þ¯J ýf„òAà,"º*,MçÁGµ^›hõZªèv*Í·[TVÛ’lŸzõÕb1¹Ö¢dæMÆë¸¹Ó¤YIÈzŠ.[EaÙ›âÉ&ÅÍ“1‘†#š¨ÉT*…ž€±íC®ØþÉü“þd¬ô.zk¥ZË=´U6ÜÞwZÊ¡M·YÐ6[g^V9³zàe7@@@@@@Ï©µ:.w`5¯¿ÿwºÚ ³ìkI6p´kÙèxº¿cB‘Ôl4ÚÔ—OJeð²O,ˆ×AÎQ«MLVïínXiÛ1Ù°ÚZ»gj©#ôteÅ–¢ú¹³¨häÝ=Ãzë]Æ®Î2|öÝ¢y)[‡²Å¤g¹ª[rÍô3ßa+›¼±ªšo£YÑl¾äó ³<„K!n‹„h±ŸíŠ#M£«vFµ|b‘žÀ¢[in?OB)Yà_™|d¸ÉŠd;ïlC“tÎBœ)r>ïnövŽÔ—ù™)‹^½ªKX)ÑÛ0³- жhÇÇ娹òIG9Ás’áÃe0\䏯sÏV5ò–¡'ÃN*­©{${™.²½MÑøRSV|0Sû›}õׯм~šëC£„õ7#ƒ}Þ*¶ œÿ‹gGÚ‹§‚õE¿wf¦´ülPºð„¨@@@@@@—ø˜¡%5L¶ÌpràÛ‹fm]´Gg6 EªÖ´Ã]ràê›8ÁŠ–ªˆ£·ÊùÎ9[v‰àˆe2Dß³¶jÖÛSt¨Ù)‹£ymÍ6.%«—’­Ë¼kYn‚ ÒYÆ yÅØv릑ðѾt¦0š'Î1\õüÜCJêVc@qò¼ÓXl{{ئ’¬64ýV«ø1=?KEáf¤]HɤûgZÒ"è2œg®"ŒæT—ŒÖ¹–·—)œtÄgÇsu×Á·eÕ%,½üw]Y5‹}¢ZÿPd}ùøCjFo=þ©õ_Çà£9VÒøý;Çí×Ë®„ò ^£Ÿàv5ÕnÜm…=Ëè®¶õzêå+Èk ‚ÎH˜7h`!¨¤žƒm(ïqÚâgãeµcË&Ҏו™TØkgˆ¢¢÷YÈÞÚ¬”JT„µ>?;F#Ú5`Á«vLY7E£&MM³F&T[µjÝ‘íÛ¢B$Š)‰¤™ še)KŒcô‚)Q÷7“–oÇgü(ÿj¯ÏCä–bÌiø³Yž¯õZ¬%ôh+à¬ìÌÞÝöÞÎZKÍG“²W÷[eÚëíÎL€€€€€€;r>iÔ>¬¸Ö¢dæçµ†÷ÕVÔ#ᘹ’“4ìáõfÃvÙ£4Õr©c5ŽÇºÊ;ÂiçdÉÎÉÉÎZ$~I½MƒÕ#QAĉ9<{wJ™˽*'3T\.B(tPU|&E•"g2i˜Ç) œ`¹®…ÓžÚX²ù¯jê<ž»‡ªÔ·ªÅKuýê'c€å-Ṟ?’ªª¯ú{Âß—CšómÇ¡[6ì¬Ë¿×ãÒÀ‚(¾Â=úÇù²~Wgmñ8¶ô8ô^?cÒ ÇßÊÖÝlƒî<¡‰áÿ]·”fJQVÉúÞ¹Ã&!KÑܲlôŽi­†žÚÔºÛg&ÇÕF¾R+6§PùPÊ© !3Õìœç99œÂHªê)×\„>3T¦)MŒãW?}߆üeú¥Œl¦Ú磌êo*®­-­º#Ê»:7G¢;RDóó!ò5ñ[÷q{ê4nãviÁ²‚ÊÆxî|ú*,…‘wVèY”õÚ’2ÿ²C€€€€€€€€€€p#Þ9¹ñÿÈ¥ëáˆñÍÏþ@ý/_Kü        gÔ‹Zv[aSk‘êÄ:ÕVÖ•øã°iÓÖTú¶Äk#“5”MÌCø»«/õÆI©Ô™o4ÑD;VJ¨¦‚&¿í>_Ú£óúlwN‰¯Z™%ŸbjY4…ÅíbÚð¹èÆáå{nëVj—9É°Þ ¹‹Œ dCÕkSf6Evj^ì;)]Ôܵ?•6m*ýƒçÑEã³òy=KK›[f>Î[Š¢» ‹õñÜ—fóbtVÔËé·ç¶|Ybêý+%”ð ’¹gÛ» é9iGBi5ðËcKD´™½lUؤúFP%WxÍ 2È;!ØNlk!ãäØëjÅpÙgÌžÚí(b«»9¬]ÂÏgäQòÌÇðª>gü’³ ‘fʱSîØ¶XÌëUéP÷é½ûöóÐ…•ZÇ ’ÎÉUU­—ßeYê¶Ô϶ç"§žï-[Ç6sânw`3a·vBL£ä¢uÌ%JgfÈÓ#Ó’MÌ{ûõ®·^Mƒ¢eŒšx‹DœËv’VБճ˜Ç°ŒlVq¬šG³"Ž#V-‘hØ«;p«·j•äM"¨åÚëºp|YÂÊ®¦Lª‡6eöÌI=˨æ˜Pï[é>?*úAêɵ"²6ÝñpiÆVC,›4j¬ó*Öƒ•IC ‚kiÉpݯ™µX…ŠËn}Ö;ùÖ»œÄ(UQU5\ vI+±uVìI,PuÒ…ÅËpµpõp~å¶YËr¯-[³ ±žO#³†ÍšrÊéK=/g¶ûkukÕu¶X)räŸ9aâ÷ûFßÕÇü‡ÔÛófÂ4G9üÈWvö{ΞÙ,Û(ڮ׈„dbã%Â1=ÜÆ2í×Î1î~û¿ þ?øËõK¯ uì]waì€ÅûÞù²#éHLÃ)–Þ­FF’Öj19Öx"%u™ X‰8˜©<®ºÈáµn»‘åÆUyûîü3øÿã/Õ,b _>ZóØöêjƒÖZî±1‚Gû¾Såûò￞åÕœŽ^cž×Ëåvvå)ã¹AÙ¿>wgG¨™þEGŸ³’öHí ^ „¡Roð%r""""""""""ÀxæçÇÿ ~—¯…þ8ûÂÝw¿d÷W/îU¾F6«ê&=ÒiÍ.}9Uœ^}6q”/[¦]”òe øŸ]u“ê´bÙìÿÓá^¾z;2 î»”±ìm#° Þ°dç[Y-屦ôάÅçB†“†Ž3vë—¿âèÛ^ØpWFA¢+ŽÓ2ÅpvÃ_ÿ-Ïú#µÜk™q—øêšb–é–z«Ñ æ^ ‘¿!ó–ÒrL›Æ½)Hc›·&2c`EÚ¨sZöWe«G†±]GùÌv&ª•; 6Ò)!Xý­ðLïzfÍKÎaÏ^\ò‡Gû7)ly²z%üûtô®ÉJaät-­M´¯vÔ=ÄY¯ó´ûD]Þ¥VºA«ÛÂÛë–ˆuºqžÚ.~1¬¬z½%ÎKžÑ£´OÒ\çééÆsè„„u±Uу#ªº0ù ¬Vö øœm]–û³h©éÑšÛ(¾›­•]KµvÔê~Uëuee?!e5@@@Å÷%³dC²ƒ©ê*©¦¯÷§/cbíQÏ×:Ùƒ$<­Þúñ²­ í(´£øv’ÁëiÛÜÑ’Šfâ&µŽÏ]Ř"– ž¿J $“ÐÉ$€?_äó4jЙ(³E‹c­az®šÚÛlwe®ºê­A-e–2¢äÀ³*öÃän‹æÀdö VéÈSºÙ×¶¯\#qš‡zï_jš«%Qk/~µ¹Çwi3$ÑG)4§kæo“—¸O¨‰\š.©d°Äk•úµZ½~¸â~vÖæ!„[›=¡Ò/¬v Û‘æ&ݶlͪÒR+GnòÑ›FdYc‘£FÍÊš$ùz春Vqi´]Ÿ±ÃÇ2¶Û”¢’¶ Ì«ç2³ŽÔÏQ¤z¤žºR>³ ýz?-a #c¡Ø2fèØW8ÍsA¼l)³`°ÔJ…–å,lŸ ౕˆg³oó“çÁ:±WógÁÎqž¬‘RÙ¢çðU¬»ù²šÑ|Ÿñðz!™Ÿ®È€yÅñ»·r•[ïäy&É‹Œ3Ù¡ªEÇJ£{wè»[uf£÷Z}ªÓªÑOÊ©ë¦U[žÓ»–EÜ”®Ðž®Jº+”‘M88ʽ.¥^Ž2V »Œ™²Gʾ³´I¦\¹.4AŠq¡/DÐÚš±c2ŠZ™Ñ žÜ–S¯ƒ¸»Î4$õÕÎJ¦rraÕªN]ÁS>LdŠ®ɳ’ôçkñôrÒ⃘ܧM”,j»S7«1É…ÖÙäzQåßJ£¥OR3Žs‘Ìüšó5ñ·/ “”JV„ÛÆðUWÃqw×J3Šªn7QR-qXQe¶¿•Œ*pà       $ýñšÖËãÌ'AŠÚ’:²Ä¾sÕêV7MNV‚?øéu¶!u2}™ÿ"˜Æz¹íÊŽ3s÷ÝøgñÿÆ_ªXÆýʊܵ››E ãc¼¶W«éì:KDðl¨æù«%#ö]òBœäQ[uN2(™¢f6!bà¹çG/j;ÕîÀá¶Ñ•äalšRÑÏ6ÍV´¢úV¯\Â}yÇp Ýl6ó+Xß/E±•ðò-)“$è©dƒ@5r;ëèøÞ™6†?»Yȧö+¯V?°nù°MÇ–eÛèïIm,¦þ/W¨=0õ¡ÛÁNœÞ¤ãïµ+f­¾¦çiBG•ñý)&· Ù€N€€€€€€€€€€p#Þ9¹ñÿÈ¥ëáˆñÍÏþ@ý/_Kü        3ŒgÆqÓŒû3ŒÿŒãÿ¬€I‡ˆÝ0ú‘mf®rW:ý°´ÂHgü·¬ÒmR kBõsž’aΨ{D~T³Ž„Šó §“¤R*zxg±ó”8}3DŒbÊ&ñj…þªMáœ1XæÎÝ™¡¨+X$%nšS31¬âjð”r²ò,áÛרb1$zdЄ<­)Ê,K~‘F_$?… ­\~­ŠÍƒày’GÚD±ú³eœ§?Ès–bÑ„ú†æç:¨k¹F:vÛ•ºÌ/È>±ÇgéÕÃL•Ȉ¶À¶Z,M-Me i¾®EZžXQ-QjlíêVyJÄi^rÀ”KCÈV©’/ëèL¬â9Üœ«E «¬Y‚ŽþIùéG÷1蟎ÉþÀH‘N„ÍYvcš* ×é±k{=œèÌ¡íd­ØʪªöXÉR;¯öÛ–M–„! t”,ýúbq¥iy¹é?…u[gÑ®%]îÑ(É5°L¶ŽŽD‡†ªÁ£‡öI§ð‘îß×àß>²F}}O¬˜jš™kÈNOÛf$$^X®[SÌ>²]-ò¥G×Is¤DX³;®îݬ|4;F5èfq°1Ì!ã4GùêmIVÓõÅá+ç’•”˜‘ZÁtºØÝNç°-¯E)eÂg¡™g„Aè"‚ "abÛ0€¯FÄÀFFÆ4Ô*„°±ÿ¿Ç ¾^KX?¿²zLGg® :‘se{.NGj²ì4{i˜^.Ï\÷bPVªCÝoIõ]ÉOn§Z‹ÏÊÖî,:Þ YµAeϸö޳ֲ$I3¨LÓŸÚ™XviÁJb•µmjìßW¡®²$W¬C䇦oŒÕ]¼}FÚ-wYktö4ÜÉ\&V± dìêÖjñj´ìŒª«Ø•ˆ·»nã &›têÎRÊKÎÞ>ô®ìÖe¶Ïiv¤ì)vax*èŠ>|š¯püV;µ¾Ô2ëéM8îo'9‹×[é¶ ðk“=47eweÕ¢×M4ïúBÙÇOµŠa¨‹´ÖFd®@@@@@@@@@@å¯+v:["‹îs¤•7Ò‘©µÌÄJ¯ýDœRïW(¸¹NðFí:¨Úë8¸´jd0£Vì”UÑÛåÒýJaåçö%u•3?¤Ãcós‚ÛÞÂn&Í‹~œ¾"zz hÖ:×Z?yÔ)Hu¬é¬n²ê®cBÓu”èÃÓ ÷ÙšÕ t ç¶êmóëȳ8¡W°®tü‚ÊYx^;'#Ãú¬½Gú‡Åâæ°\¶Yî=ts8¾CÎÚ²»2s”ºæ­íΜ7u½tY«Ï³À&ÊÔDDDDDDDDDDñÍÏþ@ý/_ ü@÷Žn|òézø"_à& ×ý©¸¸É³Éúmÿ[4u•Ïüpkr× #Úg£ ýçlkm[’f1z*e6N^Éj|c\‚×ó{7Q[jÕU£ÛÝIJ€æUe[F6ØzþÇ} 8‘vÝ»· ãÓ¸VárùÛvŽ—lÓ·Y&®NL ¦È^¶J\›)³Œu±ŒäØÁº=¸Á³‚䨯}˜ÎJ\çÞŒ=oVÝãÄû:>—RØGÁ½ª9.¨ÅuãÍaý÷yüþ­<¶Ì»½3é#ï×ýG‰þ»À[‘[·^2žB¿Pqûíä6½¾¥æq¯_o·Å§_w”ÿ 'J´ÿŠ&ŠgUS‘$’!”QE R&šd.LsœæÎ B¸ÉŒcg)qœç8ÆÃzå=zý\×Rû «¬Ê¬L,vü¦¼Š…o°TFU\^¢5L£ÖïeÜ@£Ó5³íX6lÙªþZAƺ±+%^ÄÊ8;…è~]ƒx ?-â;?ô`=(%A=°­•æ)HêÝ—¥í“°éj+6?DýµT§ÁE¾Ue´£¸{ªGûó÷¥vê;+ZèÍŠÚ½r¥Ê@Ö® ²Öˆzƒ¹G*šÏZ’s‚Tdvn¹×E^[ ZyÚ†²ñ|†LõM>ïþ©Ìއ«;WaGá†÷çyMKb¡©/ÏÉð^ž¡Ëì§n“R8®Ö¯M6V          s Ò@ŽØÜÚ9r¢Ndj*"mˆž2”„MòÝ<ìÎUÂ…Ïiû]Ç– ’½B¿‚Ù\-ÓÑs÷ÝøgñÿÆ_ªXÆ»j®å bù*ÙU vGVQj]Sv¤²ÚѺï£×‹¤ƒ3ý|uÖ_ŠãE¶ãß‚Æ [ùdäðèã·RVÄuêüz¯§Ì(²²âÚ^»’»ÿ²C€€€€€€€€€€ÇÞèl›«—û{Ëuäàý {¥LêªÎÂi§f}QBé$í8õ×N_§+Ú¼“-ûçQ>®Qêû{ {Ç7>?ùô½|/ð€€€€€€€€ñößc±Bl*ÝÒMI{–®Ü[5 ² ®î'׺kwN1A«Tœ;Ôw*§9EºIªåe–L½E1‘¾ z'¦Ë›\VJ#}j‹¼q3Ó„ÍzÒ“-é—Uòa2î^•ÕH·oŸÖ;ZsõÓíA~ï[µ:0\…M{ä¼>ØMIü.ËßFϬ«-1¨ÑbŽƒ´¶ú{>~KˆõgÔRûªâèõ`©ÖÑÁj_êYj¸4ÇÿŽrç-º…e[Ÿ†Çslµ‰P-v»ÔuÅZfí{±EU*uæ™{1=4í6l#•ŠE2Šg¬«—nUE›MÊ«ÙÎ0bÝÃÇ §ÍØ÷uuõMý¥Bá~“EV,biôX[ا%¥]¦Â1šyYf‘0¬Tv±3%d²IÃÖ X‘ĔԳ&mÔPgÚº¡µd‰7kßÓ5é)k3¨ }G]bÂS]jdko–•‚F.~R!½ŽçyMúä,7—Þ¨Œ^R6+ð¥RºÚ)'峟/±÷×hŸ¢çµï³ÐñSæGÏ@Â…£c‹ÆµXúž—´Üi/)`¢Ýnm 8²ä¹sÚÚœg…t+Þžj¾œç&ëW»[Y+UÑ‚A!O¦Z\X`ö]Þ26O2Ïç¶,éAcâ¿€ì’NÌ™ucýNƬW~Û+©/¹VËmJÉ©.z^ë~žÚÒ¬~YÙìp äȉ4òuó×ÕÍs¬¢:e-¹·.¾¤evVjõ:¬#çGfv+·1oÞõ†¼¸ÅÑž8’ln±”2H­K ÑMvåÜb)”‡ÐšeÔº¸ÉsÝÔ½ïkâbU"™ÇA¤«T­WfEDÓÎ2„~ÆLëàÝí¶S§Ç?6éä4’J›Ó'ý¦œiÓüî]×n­›ýÁ~qõ§ÂúG„P«zqš=GÉ¡Û_!êkÒÌ€Ùû¢ïJñÞ—ÛM@•©õÞß[b€„§@@@@@@@@@@ãß6xü­smñ;oçzr}9¯H/VÆ©²l6rZr#×6"á(Jq+œ²F+£­CM/–fÎrc-ÓÐ; ~û¿ þ?øËõKD¿À"""""""""""ÀxæçÇÿ ~—¯…þ {Ç7>?ùô½|/ð€€€€€€€€à6>Ñ¡êZölûÂÖ5GhFG#”]ÈÌØ&žg%a^«WbÐ{=i²IN6½^Ž’˜~|­Y+Õ7WÂB‚ÌB¨’HòIøþæ»®§=V_¢Ú覥/m×:×Uh?,ö9 ª?eˆüÏ~#íÁ¸êr•{5ËTMëI‹fœ·³¥LlËTUžÅSÓïnk_´Ê1Z³²79¸³gf©CÙàšÅl§z³Õ²tlúµ«öNIÐ’o°¡vNŒ«=µ™Ùé1—(Ø«®Â×hÆ`¡¶KÊã5åµûk“•\ËÔé—RX=MÆ2~ÈÓV:‹-&kPÐ¥5öc]‰­ë™º4Þ¼%n½Î*&&·9îv‘Q¬ÒE›2"Õâ§@ˆ¤B‘n…?眘EÐ.º‹E _—´ÍA½[¦Ð«çA+ö²*\‹ö,= Sã`÷†Ðºù~<ë·wé›ìªž_n»'?w·ý7)W]µ/ÐØÜ}º+ë®æ¸³R1 ]t·ÌÔÚjU¥9&i©ûÆÁ¹¨ÁÞÁÙ×I=µÜ^F•Þ#[ªVˆ´ˆ¯V`ñ! •^—Xމ«ÖÐ|÷1Ñ¥y!&ùþÀ0Î5ݦ¯ºN‹-jP§¼Ã²DØØÆsž¦ÊÖÓÿatøÂ…E[…neÃNÓe,ÙldäTŠsä¶»ò羕+Uô×rýÁnA`òüŸ3åÛ’I-Ù$’LÈpMéŽG‘ôë¥UÛÂr;øËÅ ^§Ñ]Ôéµmo¾ï~ô²æÑak45†ëžÆb"D€€rzÙ5SÒW*lþ7½]Ñ2ÙÆÛµX¤õ¡cc2mé(Zœ·aÚJeJDåí£ÞÍ„ÚÕ¤ŸÆëõ›#]Ô'Üe'hê6wä*ÖR‚¢“ß÷?Dºû‚‡qØû:3—g$,÷êã+NGU­6¢Ü)ËžÓæulðµ©ðþz3׫m^u3dð±^[ÖÎØÓ%®ÃñÖ£^¾)nŽ^I=Å=bŽ>’¦Ç"íf <|­vQŪû?ÞTÑ´Ú£V,ä;œ¼ÓÑ2OöÔp¬4u]æÁŸKlìZÏâZl« R«5¥­t–žaSm †*µÕ“nÊ1´[w¤ˆm=7`xÔÒ+hQ‘q‘ÌaᣘÄDE´nÂ2.1£vÑÌ$T²bŪi6hѲ$"-Û7I4QH…M2…Æ1û‡¡~NÅC¥ï¤^º?jŽ>C°ÏäÃðeXXÞukÑv›Y+UÎ_Çb†«ØÌ¡VÆúŠ–äѯê5Tßm7UY5À “¡1}o®æè[v¿#˜ÃÐöE®bWX"»œÉÂÛŸÕØÖ¶%™šmÃÉ»ªÁ[Y.Ýû¥ÞØ,ÖÓºjË 7UöÐ'žG[,ZÞ·MÚqR®Ö5ÞÆ­JmXÒv]ÎWUX0ö‘n#•1Òi@%¡–ÔYdn®¢¬†LºNh↲šj³F*ÕѨo¨!È`Õî¶û•ë žª4¥gÄÖ(è/·í³Y¹ääwdâ}M¶Ü×ÕÊÓý!lάV¿KaâøÛslWPlÜÜeœ7%§RkÔܘµ­:¾ªª@&ÊÌD Æó­’½[5=†B]T"õeºVðt¬ˆ³{‰z}†Ÿåó³8O(·®#h–—j׺º"ó$‰}ƒ6^)º†ÓLb”¹1³‚”¸ÉŒcg)KŒtç9Î}˜Æ1íÎsìÆ=¹œ:¹Á_7«ÕWQ-í}’¶SSUUN‹MI^hÒª`‘óÙ Î×T®£³LDËœâBþü§UB•<—©î͊ʽÓ{6‚<™uázm¿¿ÇSä¯Ú$–`Õ££Y¸LûrñÜç©rîúÅSOSŠ+Ðû6úžøŽO2~”ÛÀÑêƒx­Û;பM:ôæÑU>l¬À@@@@@@@@@@€9ûîü3øÿã/Õ,bÿ{æÏt=Gmñ;Wé.Xm›¤«ÌZ r½¾AÚ³ò6"Kµ© ;º›^ôRã+8&ämÑÒШg9ÈDì @@@@@@@@@@@€8ïÜøÿäÒõð¿ÄÀxæçÇÿ ~—¯‚%þ>\Üä%j)ôíŽb*¿ œÉLÍÈ4ŠŠlOù¸} ýd4@8ë*ºÉ¦^Ÿi°€ ' >I?€?Éž3*+;°UPY™ˆUUQÙf' ’IÙŸPø¶ø-Ò„{êÅßê+jÍI’¬,Œ(´žÙ8ïXº³¸½YZ)š+<(ÉŠ–m±œ;’~›X˜™"°Z#ùTèŽ×kC÷j¬„]ÆÐ_Ó=<ÆËQ€«5p¡òõBm¦Zl»<Ó–ÙÃ#ÍÇã]Æ÷CªDjMÜ.³«Ý @­ZÎÇaÀꮾz>áûH'àŠüØ~Jõ9£“®ë+¯ 7nÔm]T¯¨ÊƧnAú¢ä±À­—×h«ËÎÌáií3»5yöKm@ÆÚÒocª›…ä*õ¶’vgufÍØ:ÃËãªû(ý|ÍêMoêîò ©EÄì“¶ÍUÊciœÙs‘ó»Bñ¥éqrÌå#õ.˜ë»$ñ#Ý"íª;/pÏB³YHçg@¾±¨ëеe<ËG>¾Z"Ü,‚»Í^Ñu…u­K]T+´šÓ3D!k ¡Øw…º2áêÈ2E:xrö¯¤]egÏ—Éœ¸Ø à| ÔUTP¨ªŠ?  *ŽÏg ä“ñû€Ì 'ŲW¡­ÕÙꂵë<,¥zz-ÉrfÒPÓLW”`à¸Î2d1r»uKŒã9MCc§ âíŠeιq®n Él`}¦îoÞgþsð³V.)7Wxè']}‡­dé—§*&™NF}û±ÒÅLuþÿ]Õnê®Ø{½@•´°lÄŒ &,LžÆÓ¤mΪ.Í5do@Œt’oN„íž²åouÜ·…¡«éÞÖŠ–šì¢òÊJ=7µeKëÅ©½+eµü«ª«4öXlKG§Nî+ô¥8,ä/äuãå8•¦Ä]¹N6­UÞ”W`o~¾K‹Óª›°æöõïä2pžÓÜù+É£Q6Uà$óɳZ¥užuÅ%‚X÷=‚+R’z!£¥sK®Z“x¦À»:|Ý%‡Vµ®£m²÷Ï ƒgVáʱJ6ÆwHXhºìLÉòF£TØ{.yG\Åm[ÿ¸½|­Ä].’°ô¨«%R©°#Ùga±š%âó ý@l4€ ýMËŸ1´EϤ⮼íw¶·µÛAÇ@¨¿¿¬}5>wÿõÁCbYé­nºººÚklɱZÚªó²¾ñÛVÎU¾’Êô‘ì:Øz* {Ç7>?ùô½|/ñɾr3tIþqWïßMSgçï!¼%¯gÒ+²èŒè­Neceç¼L¤rÕËsè—]ºèç8Q \K*ŽØ…ŽÉwþ>f›n¦…ó¾ê©BB‡¶Ä­KH_'*; } ýN²WåÿÛ ‹§<¢ã«vÎ r·p¾ìÖ‰ ¹“ÎJ¡QYK1STÉçÁðC%Î3ƒtg,ü×â[Ë:G“š*AFf!˜¡OšP­‹ƒç=Õ‰g«É8Î6Î5'oÎ0TÐ1Œ\gv¾ú÷²;Í{ë¯.úᄎùïñ×ÏâF<§¶­ Èá²{«IלZÕšÂÅ¬ÙæPÒ Þ`ö³¿™OƒzM8Q-fˆ©ÅnR<’˜’m›õé[­g&ê•ì½ÚÇV†§ÆF¥ÿ'\Î4Iùìè{Ò!BÄä̳^°¥3)•¾ÓÉ.*Q)%Žs–ÉËè¦ç°ß—…’ÁL僷:í¢Êµê(f¤9û"ãïW×’·˜ï¯âV·ç ~EaÈüÏÄÐy®0×îÓ¤í¯Ü5ã(ÓÊáCeãiÔËÒI`ìv{Ê›_>O5È:¾Œ£oNk¦’[Ìwß]ø`üƒ66í î™øÝ–[5z.9òå{J›Ý»ë“Ì…ÆDo Ý"]ϱŽAgRZ1lݳ—ŽÙ㥕\äM&ÍQÆUr¹ÌTOuNBûDáÊʶZ2+SÖ6†éNBA›5¬Úê‰!ý:jéÂH«0¶Ôº-NÖ’±ìPï¡W¶Ø&ŒÍåŒC×+3lë0×2^]S<êÝLÙüzJìùšÑÏv —xWo»Üs•YÔs‡}»Yn«°vºI.í’“¦jét’Yt”U$Î]ËÅ/üÆh›ÚÿîçV°”¯çî ݇¯Ž¼]‚=÷[~~?Ì<9{Ò¯rÜ\sy·¿^u·’v¬5œúô'].@pâî;J€ÃÇå|À¸@ò®ãf™‹¯^õV•× /ØÄØ`«²Û_nÍ4ÁIÒô¥¶£UצS*õ<­mÖØM4Œeºëˆz÷zZX–£Êlˆ&»zÓA…g mÙ±ð³òFt×2¶e!ZDÅÒXÛ/×]Ôô RÑ2ª™w6F„ùþ)xÇæ3D|Þ×ÿp‰ï|ÿÒ™=,zžáЖ¼ìŽBjýKd›^¢¿áÚÙÔ’v²z¶Áœ¢¤)¢r.ÿ¢5>Û9wžŒ{í!$·oÙï§%”t{(~ÅèõÑUàvIù™/”½Ï¤ß¹®uvM×Ù§:³Ý«ÙÄçèsšX/…”f®Óà­eŽà¹¾±Œ)q‚”¸Æ \cÆ1ŒtcÆ=˜Æ1ìÆ1ìÆýGŠ^1ùŒÑ7µÿÜ!â—Œ~c4GÍí÷Ù:Sw„x¥ã˜Íó{_ýÂ)xÇæ3D|Þ×ÿp„MÜ•µ¹ŸÇŠ&®Ù7x-ñ¡§&é´ªûjŽ©&%kÕÙxø³&ÎÃÞÔ,ƒ¶h´1ÿ©>ÉPý\”~}=Í^=ì-I«oÖë¡«ó÷sH¸N@“mR$$Å–³5'DŸX{êezõveMçú¢aÇêàὄx¥ã˜Íó{_ýÂ)xÇæ3D|Þ×ÿp„MÜâ—Œ~c4GÍí÷x¥ã˜Íó{_ýÂ7qã¶ ¹³©{nj£ÊåÂü²M×;W‰·|‰“+Èç©t/+¶R&ØÄw$Ù«öŠ&åºG,kÇþé ®¦ò%¯pèJ®5—!6¥¬å=¯QCñ-N¢Ö¼¼E­OYX1…”–<»²xþ˜Õ;¦0Û=%TPž)xÇæ3D|Þ×ÿpŒ,Dµ«^»’Ä`]ee?YI‚ HÉ«NY·b¾Ü»1è§VMYìj¯Í§=‹uÓjõÛM¨–WbÈꬤ ù<{ØV)f6 I´¦¶ìÓjGÁ]v%fKåmñ≸áÚ—=Ÿ©ö4K×’E¯Y­~ùt§‘Es]ÂëÑ¢N–ÛÜ7™¾T¶[ý£ÐºÒã§á"fã÷e.=gUë2–Z·:“K:Mçà|Ò6q´\²NÛGÏÄÇL0+gˆE>]wŸ¼AŸž´Vï­kPšªÌ=Š]+ÅÒ­YŒnÝl•¤í:Êög5kŒ«nÍóUë³rX¢¯tŸa ,ƒÈæÐ*µxúRžCU*ÓF]ÝâÚ* ¦‘sÛâ¿VšÜs ÔÚT'¸ÔÓmä8û=_Éjä½#ÀrW=˜S•ç¸~/Ž7ÑÃî{l¯‘~6Œ&ëG§žå¯fV|ÙÓ‡Mõp×6ŽžG±D·È-¥"Yž;ê™Ôšïͱu#VjR9{«5’Ž—¸oTS ƒ:º :ަ¤÷BŲžV ‘د*á—ƒØ^Þ,T\EATöÖ»Ú÷I÷)5‰¯Qv%!ÔCLLÄ•Ë`ºB…CˆGxå[,ûIgÈ'–õ¸YùUšF¹œ3Èn7'éBJÌžóÒDqÀÇpÎg‹³è¸b¬‚<‚vÞ-Y,Nwc>M¡Õr›3-—m“-„û,u°²êù®Ï‡Z™*Ó¢†gö«rÞõt]_ue ÁfCmz{ö«µÙèÍüw1êŸOj­šø>#•¢¬ÿ]·:Òx휟·­éåÓrjf³cçÆ-\FkÂý~¬E£R«šâ›W Ô#ÉX§ÁÆ× ØæTÈGEµM£|®áLågnÕ*}»×® £§ÎÔ]Û¥p²ªÕ #Å/üÆh›ÚÿîñKÆ?1š#æö¿û„t´JëUJëUDEU@UUQÐUU@¨éÓ£n5ßn­zï·N­:,koÑ¢ûÛ¯º×,öÛmŽÖYc±gvfbI&nà0¼có¢>okÿ¸CÅ/üÆh›Úÿî”Ñ7p' ùÿ¤52zXõ=á-yÙ„Õú–É…6½Eõ;³©$&ídõmƒ9EHR3Dä]ÿDj}¶rï= ¡okÿ¸GÚÜÏãÅWl›¼øÐÓ“tÚ ÆÕ }µGT“µê쌼|Y“gaïjAÛ4ZÔŸ d¨~®J+Pžæ¯ö¤Õ·ëõÐÕùûƹ¤\' I¶© bËYŒš“ˆ"O¬=õ2ƽz»2¦óýQ0Ž ãõpq£x¥ã˜Íó{_ýÂ7pGŠ^1ùŒÑ7µÿÜ!â—Œ~c4GÍí÷DÝÀa)xÇæ3D|Þ×ÿp‰ïüÿÒ]MäK^áЕ\k.Bl=KYÊ{^¢‡âZE­yx‹Zž²°c ),ywd2ñý1ªwLa¶zJ¨D¾Àa)xÇæ3D|Þ×ÿp‡Š^1ùŒÑ7µÿÜ!w„x¥ã˜Íó{_ýÂ)xÇæ3D|Þ×ÿp„MÜnéò±á3ESnvѯÕzl[b;¥8•NóøƒÔý™á×R_°Î}e“'Úc×'Š^1ùŒÑ7µÿÜ!w„x¥ã˜Íó{_ýÂ)xÇæ3D|Þ×ÿp„MÜ@ý÷~üñ—ê–1Dx¥ã˜Íó{_ýÂ!npr@Zð’¿YÞZzÅ=-éãH¸H-™J——’ty+!ˆÚ>6>mÃ׎ ‚›%Eº*(l9ÁsŒd"u€         $W½øµ°íûz'‘Üs߇ãöôi¯ê[3›6´ÝZhkˆ›;¯±õš¶­se]ý"ËeµÉÔ,t=§¯æ˜’ÝgŽ–s7"ƒFYéx•Éý³p×r¼¾å¥dëÝ]±i;r OñËŒ²|n©[6³Ÿcn×2»Bs`r”W»$E.éu‹­Ôí:þ5ý– ['"¯ó¢À=Bk4K}5Ë£0´›×=é¤í®Ìëw¸´µ;IÙA¨/±¬ýM^ÿ$õÉv±‰*÷T´ÝeDÓmÕ®dÆ«mµxYgXꯓ³7ÒW^b}„ZÇóYd›¤«‡ ¦‚&u–Yc•$‘I"äê*ª‡ÉHši¦9Îs`¤.2cgÆr!_èÃå›dÌiv< ä=É‘i=Á)«ÚñómYšÜ$º8Ù/ª„°J¡dõn,îЩew "uî½Tþw¥9qÂËýuÃ¥Ù×öÉ㤾ªÝÂr®«Ü|§ÒÚ¯m²]Ê'MTÈë¶>IR(™‰éÉ»Btuñç·ý¯9èÆ²P«•úm…æËÝœ{sŠÄ\|]蕸{¾¶Š´%›Æ ØŠÓáv>ŸÕs±q&XÃÊÆ³U‚MŒå|/éCUi¦îŽk¬|Õ zB¢“eˆßi£Ýц  «5vëÑîÅ^]¹"µIôKtXm>4û¨´Ö„}Íu”×±ƒ[VZEvv:sÂ|¯ñß䦵ûdfñZÆ¿5 Òµbí›q_ÅS1XÌÞqÜ;þ{ԡăBó¯Ñ½¨9º$®ši«:&jŸ6Û,µ+ûEΚ)ÉBP.¥í:z¨½Pô¿Â|¯ñß䦵ûdQx·2uKµz"Õ[‘s,Æ~Ãè)Öoâݯ;5«†ª)-ÆI¡‘xѺÉñ¿TYl:ËÑCé¸k…„¶këï¦ZËDV2¶V"ÅTäw+¥k E¤ Fê0“`Äì“D˜*GI"¦\`¸ÀÁ™‚éîLVê¡,±sÒ^›óPRý î ë´ë¯ù}°3-Nïï Õ"š=û8ꕊ¼Ö>)Ü«Yà»qò:RÔ©wzŸ*È 6­  VNߨtžRñeìË^–×<ŒÑýÇDüÞ55'okûV̦Ⴢ4}›] ÂþÓ]Ã'J&Ùß­â™÷g"+u1KÜqû|ém;¦¸¹è÷w©+uÊËÊ_GÝ{LO@1dÊU”ÝÞz«Lm$XÊ7L¯%²5&ž%vÊ‹¬k9$žJK™Ûâ‘Ú}l­k}Ô‡w³æ6ð·Øj5&›1ââ÷}]uvÊ.NU+l6Û}ùÚƒcÜõé§Æ{œ˜9ULܧŸÏ[X¯~zËѳZSìе¥UX›jU{Ývt¡N6¶ð 3lDDDDDDDDDζ模ïMczÓÛ> –M±ëRuK\6]½UÜL«s ±™ÉÆ8i)&ÔùMäTÄ[¶’‘MÚIF»jùª §3ižÃë _Ûûü“åæƒTœ£êIDصt‹MCY´z¹;:UÍK¨õ«-‰Œ<\DÆÈÙhßöƒ¸f«ÅèVRó¨Ê[À=»äø±“Û-ùû}½vª{U°S¯U"ÕÑF­4‡_j9ÿ‘·ùDrê?z,qä:o³.[,¬ŸnË3gwVj*(ˆˆˆˆˆˆˆˆˆˆˆˆå™ôs°º§ŠŽØæ4·6„̳)'|jØ÷½:ïZÏ4~ÞM…bí}­èªÏ&v=8ŽÚ7Ä­[coû\E±‘UŠº6±ÄºvÅÇF€z¬RıIò­ƒ ?ubÄezí57u5´º+Ñk!²‡édbI7ÜŒ‡à8è•ûlè«#*Ú½ZŠèì¶*:­Š|l È€€€€€€€€€€€ž gÓì7ê,íJ©µoºF~\±åÚÂ;WË^ªÙe*ÆEÉà£÷>·ÛºÑÁ¥™´q!‹6»±‘8©GËE2q8ɘé+‹¼WŒìï§¼¯ä§!õžÁw·'l:—}@ñô•n›ËaÈìÝ—vMæ–⦗¾-)=c°[’ÅzJí!¯D[åã™Ò‘#*Ê YÖŲºìK¨³5©j-•Ùžî½Ú^»#WgŠ–R¤JØýÕ¡\ÅŽ¾ß‹4Þºªeû^½5£×]èëÓ-µ×m©[ƒåZÝr¡Quž\ìÕþí}­í¡Ü–úäÞ×Õ¼|—$÷¸ïµ®šúoOéIˆø§ðgÐnkú²¯·v´7±:ô»ßkí´©‰«øÙÌÅÄɰè˜Úl±—ÅÝßï{]¬f²Ë¯´"Û§E®ZÝ:­ZªKuh{4Z”Ò–ZËUaux¨ráUO¶•(P*¢·¶ÊóÑZ^|ÕÙ}öך•®„¶ûíZÅ—Ú΄Ê""""""""""""""""""""""3@ô”p›fj^Jo ®ñf]oÃëâ¥ÉyKMfëùÍAc×1Ù”·EYè×ê]føg Z•B04UfE ô\EW–”l»4îaþyíB‘æ¶ùôžs‹†‰‹G£ÿAZ¸ÃQô€jj|–XCzM,Ü\¿“`ouèÒmǨÓÓšç1QÒ¶8¼®M”r«0UÉ% éÜg´K®£-aÕuüž•±²piVÎ.ÎòËYV³ƒÇõg.Úê·>†Ù¿ŒuÓNjõ±•U*ô5Þ]m{pÓN <ËèMe¸N1™]kæµ%-··%¹—/È­ôŸ4¿?ûÑËYò[Oëíõ¦¦¥,š¯i×›[(V)ŠuÖ‚ö~´õE‰4J¦Ä®Õ.Ñò©#ߢ–€`Yx•ØÍF÷¨™\ëC ã.éÓ\Šãö Ý¼z˜ˆ›Ò›‰?­ÞA¶E„{jÙš›hOU RõiV‹×e«çIùh·°®n储§¹ŽžêF}»3­WдjÑJѨ£j¤Us «KV‰[_X_ Š"!±Xª*ô3Í£M ôÚ׿¢æ³8qEmHåèÿ ¥Ë¬Y÷„*îîE’`                                                                                                                                                                                                              'ÿÙgiza-1.5.0/docs/samples/images/sample2.jpg000066400000000000000000001233641477367113400204030ustar00rootroot00000000000000ÿØÿàJFIFHHÿÛCÿÛCÿÀX "ÿÄ   ÿÄL !7Ww—¶Õ1" 2A#$Q%3Baq'4GRVce 5CSbs‚¡DE²rÿÄ  ÿÄD!1"A 2Qa#$34BRbq‘%Cr’cs5DSt‚¡²ÿÚ ?þà̦·×VÁq©¤¥ž¢žÓFË…Îh£sã¡¢–áCjŽª¥Èœ¢÷+¾‰²;“V¦²ž$^”EúQQV\k)-öúJšúúú˜(¨hh –ª²¶²ªVAMIIM$𢦢g² …–i^ÈãcžäEеÈUj¢995UÍG9ªæªû§&¹»¦éÉ®OtT Žj«‘Š­^.DTUk•­r5ÈžËÅÍv˲ñsWÙQO©¸kâ.šiiê4ë‚¢ d†x&ÕyÔSC4OVK±>Ä×Ç,ok™$ok\ǵZäEECóêãÄ/€û›ÒüßàÈ# ³uqâÀ}Íé~oðc«¾îoK󃌂ÍÕLj_÷7¥ù¿ÁŽ®æô¿7ø0È,Ý\x…ðsz_›üêãÄ/€û›ÒüßàÀ# ³uqâÀ}Íé~oðc«¾îoK󃌂ÍÕLj_÷7¥ù¿ÁŽ®æô¿7ø0È,Ý\x…ðsz_›üêãÄ/€û›ÒüßàÀ# ³uqâÀ}Íé~oðc«¾îoK󃌂ÍÕLj_÷7¥ù¿ÁŽ®æô¿7ø0È,Ý\x…ðsz_›üêãÄ/€û›ÒüßàÀ# ³uqâÀ}Íé~oðc«¾îoK󃌂ÍÕLj_÷7¥ù¿ÁŽ®æô¿7ø0È,Ý\x…ðsz_›üêãÄ/€û›ÒüßàÀ# ³uqâÀ}Íé~oðc«¾îoK󃌂ÍÕLj_÷7¥ù¿ÁŽ®æô¿7ø0È,Ý\x…ðsz_›üêãÄ/€û›ÒüßàÀ# ³uqâÀ}Íé~oðc«¾îoK󃌂ÍÕLj_÷7¥ù¿ÁŽ®æô¿7ø0È,Ý\x…ðsz_›üêãÄ/€û›ÒüßàÀ# ³uqâÀ}Íé~oðc«¾îoK󃌂ÍÕLj_÷7¥ù¿ÁŽ®æô¿7ø0È,Ý\x…ðsz_›üêãÄ/€û›ÒüßàÀ# ³uqâÀ}Íé~oðc«¾îoK󃌂ÍÕLj_÷7¥ù¿ÁŽ®æô¿7ø0È,Ý\x…ðsz_›üêãÄ/€û›ÒüßàÀ# ³uqâÀ}Íé~oðc«¾îoK󃌂ÍÕLj_÷7¥ù¿ÁŽ®æô¿7ø0È,Ý\x…ðsz_›üêãÄ/€û›ÒüßàÀ# ³uqâÀ}Íé~oðc«¾îoK󃌂ÍÕLj_÷7¥ù¿ÁŽ®æô¿7ø0È,Ý\x…ðsz_›üêãÄ/€û›ÒüßàÀ# ³uqâÀ}Íé~oðgé |EÔÍ=>‚ÝsÔO,pÁ:¯:–i¦•èÈ¢Š&Xœù%‘îk#sž÷#ZŠªˆ“[EYn¬«·Ü)*h+è*g¢®¡­‚ZZÊ*ÊY_M%]4ìŽjzšy˜øg‚f2Xecã‘{UÆÜh^=¸Ðág]fº«†¾'÷†ƒÂöYŽæùUÙYv¶¸\2\bÙu³Ûîßp뵚÷FÊ«eÞJKå†;v>ëÝ5|˜Õ…öíGÈç#^Ôr£dk[#QUö¶FJÖ½=œ–8åj9$lzlæ5RUk\¬sšÕtnW1UUŽV:5sSv¹c{ت›*±îj¯*.æìâ1Çöæ×™~¥Ýlña¹µ†yEh¡ÊõöÞâmìÜ6ïƒ*°f–ZŠŒk6˯–oÇÚò\bÍs ¯mVRËJ© Ìl²£¢>M56ûÒòËDZÍðÈ覆h³;+â–)X­|rÆöµñÈÇ5Ì{QÍTTE$%kAwí¥|Ú×ñ³ÿ§ú"¯æ¿ªî»lžÈ„Q¨ŠåDDW/'/æ¨Ö·uýxµ©þH…›~ñÄ/öíº¿éãswµ±ÿíC7ÿÆ7Ÿýp’õŽâÇÍê†o󇇿{öÝ^mlxÞI("YºÇq ãÆæõC7ùÁÖ;ˆ_77ª¿ÎfëÄ/›Õ ßçXî!|xÜÞ¨fÿ8F@›¬w¾«ÔñúÿWåþüCÙ“>ÿÙï t3Tjî$ë!­wáí9ö T3?ý”›!Çoô¥jv#•˜ÅZ»ŸI¼º.õ³ºÿ„Új»•6¼¡Ûv D‘ï»ê «²š¯¦ÔW1S­£³fóÈæ"«ÛoÆë¢‰ís:ó‰ÒöŽø¨è¶š*¸~¤á+]™Íc)jÝÓ¾Wl‚'ê ¸êÖfzª5Œ©b½ËÅœàî}ñ­ð¿Ô[RÀuwNÓÈØscª[ÑÖ_3••á~¨§Š©nwª£cŽ«+#•7ü§¬y×;eÊËp¬´ÞmÕÖ›­¾¢JZûeÎ’¢‚áCU º2ÓVQÕGM5DNElÍ$c““šŠx'Ð {$cdÍ{Ö½c‘Ì{ˆæ¹®jª9®EEk‘Ue>£ŽFJÆKÙ$r1²G$nG²F=Ì{ÕV¹Žj£šæª£‘QQU ‰À3ÁîeŽáGjkžMª0 ÁE[ža6zl{bÜv•²Ïh¸Væ˜ë©²«tú“ejÛü·ëC`–;u=ÚùtÆ%emJݱˤŒ£’“YŠÖ‚ïÛJùµ®=ãfoÞý·W›[Þ7’JV·ï~Û«Í­ïÉ%ZÐ]ûi_6µÇ¼lÄ”­h.ý´¯›ZãÞ6`ýïÛuyµ±ýãy$¥k~÷íº¼ÚØþñ¼’Pòh¨«.U”–ëu%M}¾¦ *(%ª¬­¬ª•RÒRRÀÉ'©©©žFC±òÍ+Ùls܈½®?†¯ðޱjŠ<zñAa¢Èv¬Ì¥»âÊç5Ö l«ÑžŽå’S;êÒ_3˜¿d°ÒL“ZqYù>6Vß¡‚¶ÓÓ}j뎋èf˜\þª°ë®waÓúr“ãûÛ=v&µ]f=x×¥_¹ò)ÓÓÓìnÓÛž¥K=ññÓφݺ£ZÛ}¬•þý}/¤±òE÷æ§ÈBƹðÔŽEVÕÇÔîDü¦^Ë}&>)"nÖ/Y£Fß­ ƒ¶ãâ:žÑ°·EÇIê æÁ[B•t vÇÍ-ÒtddØõ†¹©=k¬‡šÓdY,.Y#’šº×_-ó¶¥;@pëÁÇ|,Z"·é½kd±]™)®Y¥|M½g·¶ª'Ö[¦[ql×WA<ˆ³:ÕC- ’žG¹(­t±ªF›: $u›âkª=i·f,Þb\.–tŽôš7<ÕpÑÂŽýÚdU®lùËHˆŽ}Œ“¥²«ßJ­ŸØoˆŒ^³üC^·¢ÏM§ôSå¡éþ›±b–Ÿ†º;xS,¬s,êK­j5Ò[˾hY:Èü},l2zf€ÏGÊ k\ðçÅE¢[~äÖ¶[íÕ)–žÛšÛâm“=²#Z© ÚòÛsbº¥<èÊÛU|µÖ:‰Ä­µÕFŸMz¿qµü·'×}ƒ§ª.;³Oвzêõ¤ kv>o¥$“d6 ¬Y®ŽN©Èñ¨SéGMm×±[éÖ¥ÝÇÁô7F~&ú£Ñku¢Âæ%ÍiVHßW£s“Ík $*äîýÚ®s§ÁÚswVYƺ8/Ý«z&võ_ÃïÆ/Z>oTƒOg¦Ô:)’·×tÿRY±wOË]\äÄ9î}7uÍäèíâ.#~B–Jý3¿šx;_ÿŸábÚ´™õázÃEíHYUwÌ5…²(hl;!S§QYsÆ©›ô©,™Ì¿¾Y¨âHm9TÜÞöQ_¥ž²ïÕ&¶Š²ÛYWn¸ÒTÐ\(*g¢®¡­‚ZZÊ*ÊY_M%]4ìŽzzšyã|3Á3,2±ñÈÆ½ª‰»nŠõÃEõËL& Ò¶^õ>Ô:ƒN]|{`.Ê×+b²Æ/¬p‘Øü” 鮯É´6à·R·¢ï‡ˆþž|IhÔÕ*Ûëd¨v+ê'’$ÎiŒŒÌs› ¸ãTm¬}¥ŽWâó›é2E+v¯zµê5<`܇€­h.ý´¯›ZãÞ6bJV´~ÚWÍ­qï0~÷íº¼ÚØþñ¼’Rµ¿{öÝ^mlxÞI( Ö‚ïÛJùµ®=ãf$¥kAwí¥|Ú×ñ³7ï~Û«Í­ïÉ%+[÷¿mÕæÖÇ÷ä’€Ùð»àñœ\ñn¤Ê-ïªÔZ¾*<×f«ÚïÂÝáeS™á/‘©ØüºéO++céE#ñ«^G%4ñUÃN«‹kma„éþ’Ïë=Eaka´æ6|•×·ŠË"DˆØ*VcœÖÉrõ—ÃJ”*æ÷­Ø†$r+÷0¾¢ëÝ;Òí ª:ƒ«--M?¤ñrùÅf™°¢2½Œ{˜Ù¯ä®I_^ÏQzÕxÍYSÛoðoþ´˜µ’ÅÅæé±2|¶ýLˆ’Åî”ý&ã ¨ÜìZúY›Éo÷ø¯ÄÚötm69}ÒÜ.ô/³v ?8a†ž©é⎠x#d0A mŠa‰¨È¢Š&#Yq±­c#cQ¬j#Zˆˆˆ~‡N®uSRõ\eµ®¥ÝÛ’,8¼c%{éà°ñ=ëGE®Ù v=]4¨Æ>åÉ,Ý™½û*ù=ë·[5_º›ê&¯°îõù]_ ‡ŽgÉÓX$‘q¸,k\k`©Õö'lq¿!~[y õ6åU³:twŒðí¥Ê,×Þ/tµeV*WWîìV×LfKb¥g÷Û‚–v_¬P5—5­V]¬q-ùë ÂÑq’õ؈ü憘e§¨Š)éçŠHg‚hÛ,3C+U’Å,OG2H¤cœÉ#{\×µÊ×"¢ª›Ò.ªê^ŽkŒVµÓS»»RFÁ•Æ>W2žw ,Œ[Ø‹Íj9+ b:U};‘×» {ÕãS¸ºÖÍ_Уá:‡¤,9f£+kfðï™ñÐÔº~y#\– $Ö£šèmG_ZuŽGп LvúŠ‘)üÔÁì‡ø¡pxÞ¸¹Qc÷Ój=Ÿfm¬\Æ»ðÖªy*šÌ dŽNJüBéQTqô呸ÝÏ–¦i*ç¨èúÞ=ha„×úO¬ôíS†ÔXØ2Tžî),i*+g©es’;”l²jWaG;³n¼Ñ*ª±Tõ…Ó½{§z¡¡ô¿Pt¯Y§õf"¶_#¸¤Ñ6f«lR¶Æ9í†þ:Û'Çä+£ÜµïV±¹V5P2“4kAwí¥|Ú×ñ³Rµ »öÒ¾mkxÙ€÷¿mÕæÖÇ÷ä’•­ûß¶êókcûÆòI@V´~ÚWÍ­qï1%+Z ¿m+æÖ¸÷˜?ã Í®l|Gmš]eäÉ>y›V\îù½¬·äSæ™\ìtöˆrüÑ· {#¥}=õnTN¸:¦V-¦ðÈéõ˜­oÞý·W›[Þ7’J»Ïð•áÂ8>Â+®T KœîVCµòùeW6AI á–w¹ÍIâŠ×ˆ6×Q- ¼¿{º_ÇÏ"/O~õS÷zkRt$}.{±±\~ìèº_RŸ©ºÓÉ’V7¡û¹ÐØ"¹VþÕjòs™?¡Å-5=5=RÒRA5-5^—Ô¨ÇénµÇ+]ÓUøû –ÚÔé+—•Bss¿™vÛöru {ØmÓ+ÓºO¸mVÕ8=Êç2†YËK5^4UýÝzÙ(ÛkÆZË×ewèý’ýU±’ÓDèîFˤý™»OZi˜är¹Ñã3v?PÔ…uVžV¾6ëXÔTu¬åÉQ_æ 6fn3Áí›\ß8ŽÔÔ»7;È5õ’ ó ¬¶]ñÌ-…YpÈ Í1Ô¶Xê-eø[môITú‹ê\«]ou4LKMgâUÐk1ZÐ]ûi_6µÇ¼lÀ ûß¶êókcûÆòIJÖýïÛuyµ±ýãy$ +Z ¿m+æÖ¸÷˜’•­ß¶•ók\{ÆÌß½ûn¯6¶?¼o$”­oÞý·W›[Þ7’J笘Åÿ"YÖÏk©«‚‘êêåFSZí±¿±³].Õo‚ÙkW±*.tÐóäŸSš¢rÍ ºY厛·)%{c»ª"r{Õ­MÕQuMÕQÊ•˜üvC-n*ª2W§äRÇ՞幕ŒtH«Vd“IÂ6¹îàÅâÆ¹Ë³QU8gâ6…çe_™Õ3ùí]/æ]üôÕ™Éh,ôüûQ•Ö8²ÊUìV£ÑW£õýWd·vc˜Uš™ìÿUrÉ¥“0º'?»e§­Š‹½‰Ñéâ)#{¼T^E¯t¿Õ)Ú²‹á&{¥tUü.WÚX¦–%O›½R½¦+U¼•Q%]':‡Q`°ÎoÌì}k.Ô9‡ÆÍ’hÙWÛØêwãvñ}ߨ2ø)Òf¹³vX×HÜ>ŽŠ²á;)h)*«ªd^QÓÑÓËS;×ü™ ,|Ž^ÔþV©—¦¶ÎˆêìzªÆÅDT“'š‹‰Z¿g¤¹%Mª5ùˆþ‡bþîÅåãÖgù¥l£~Is¤·?ù­6™ÒÉeNÅOÙe³6‚ÓbªwFÞÎÏ·aˆ*ªªªªªªªªªóUUíUU^ÕU_º‘Û+'žXú›xãÂÎC—ëÜîc8}SnMýù'±Z§ËÙÖƒ—žÿ©ÂéÏþŸ¥ôºãÔïå{Þ²¯ÃØwâ3ÐU±ײ,…>ê¿­,^I÷çˬ¼¹Ý¼šŽwôåÒæƒô…¿ëvF òæ©ôsºŽ]¼¹s£Â*QWU9'>|•9àÀzkÏó&Mì_Ê¥ZÑ7ù%¦Þwú½H}÷¥ëü´ôMkMú;Pg³Wçý7~m- ïç}«7}üq3ŸÒwªÙ4«Ëš'ÑÎéùöòåγ¦D_²þåDä¼ùòEäý[/ýG"Á«“ú/ëK«š}ùòÈk,ÎNÏèäGN\û MyžcÉ=ëù[«ZVÿ4ªÚ.ÿG§ò#÷æ–±òÜÑ5ª³ÆîÓùüÕÿ]Ÿž›TŸ¦õ·×‘œ®µÎŠêzªøÄErËŒMG•ÂO»Öln¦ëGÿ˜¯F}¿wj}ee¾wÒ×ÒUPÔÆ¼¤§¬§–šv/ù>˜É½‹üÍCÇETTTUEEEEEä¨©ÚŠŠ¨¨¿e2ú<ÿ4£”mÈîuvæv%¦ï2_,«öþ{-åµö™;—÷”nìæŸeTecóËoxYÇñýyóÉóü¸öãüù/°å mü½a§øùïúœ.¯ï};~—ÒhM·âïzË|¿a¿ŒÃÁ~«²\{2<*ÍR÷ÿ­¸ã2ɇÝW—Ù±SÑE[ˆÀÞÕét1‘ÝŸÞ""!ò– Jð¼ñü­-•Oþ[FiKùgJG%5Gmu}ž£’ö:ºù'Lªæ±Ð[î‹úÝ;UÑ<,Ìb[®ªŸ‰QõVY£‰ww­×ªÄjnî*ŠÔŠi8¯ùÓº‹™{¾fãìYvžÌ1ñ o«žmuÛÒ=RÇéü¾væTl]Ö9’;={Æ/øêÀ·‹]M$hçP×"2¦×r‹ÉÓZîÔžÙt³ñúº˜9¢§Ô抉À•±Mñ¶X%Žh¿"{dÛ*¢ñ{Z»**.Ê»**{˜ÖCÄÛ–†RÌmè8÷éd*ÏNÜ<ØÙÝ­a‘Í8Ü×·›“×&íTUBŒ=µü2,« Fï4_Y5î±36"§I‘Ë=•¸DR½ªŠ‹ôäÌÚèÕ’tŠFª=TîŒu"þ”±?ŠÝ­Xæ¢ÍOÃåòž5Tæ­e^ÆÖ²KÉyòEU¤³š§4EDæŽíºhïíÈÍw¯òU‘ʱâ4f›ÇÀÕUÙ‘ÊìŽUÈÔöMæÉJåÛÝTóö£e§ÈüQKNW9Ñ`z}¤quZª»2ߖͽžÈ‹c/;—ouU܈Ís€:[ì2,WÆí Iv ®ó7#[Ñcå†Çú&iX‰É9Ë.÷ÊäOß:Ë#¹½ÎUî’u"þ?t±GÅv©­j"KSÃÝŽžUDä®e&ÇÙO‰UyòUE«‘>Ȩˆˆª©ÉöçÙÿ‘š—_ÙV7*G—Ñz“a©¾ÎŠ'ãr­EOoã"roí·êlcì¹ËOŽø¡Š”OscÏtûWbìµv|PI‰Í±žËµŒD.Mý•<{ž‹ñH­h.ý´¯›ZãÞ6bJV´~ÚWÍ­qï0~÷íº¼ÚØþñ¼’Rµ¿{öÝ^mlxÞI( Ö‚ïÛJùµ®=ãf$¥kAwí¥|Ú×ñ³7ï~Û«Í­ïÉ%+[÷¿mÕæÖÇ÷ä’€å­sÜÖ1®{ÜäkZÔW9ÎròkZÔæªåUDDDUU^IÚ=½È¢*ª""ªª¢""nª«á<ªªû!ðd,bñ‘-Cíôìe 1÷;½tñPYmQȪŒ’åt«|Tt«/EÉM¥ZºÙ[øzzš—2diŽÚ1&¶£7Iªo<’JlŠÃWDªˆ¬~_pj=öUUÖ:v?$¨²ÇSúq²ÑÜfÇïÙMÛ!Jx*¤†’ÕB¯ü®Ãl‹ðV;S^kÿoËO+XÄ«¸Ôº¦éqs5ʺ²£¥3­ž®kž1ÍggÙr5]]vúT…®cîn›'y$†¢#‘ÑÏaÑÉfë§±šqMg-¤ÈìŽGã%ŠÃ7M‘uBhmVÓHŠªï»ŸS#ŸzÀø.bððZ©”w:µN5ûi LöðÎÅ®¸2¾×‡Ò½?Ú¡¶1ô7ûòµz2AUv–ÁH×#à¬Ç.9ì~÷”ß²$‚;­ÂIhé߀µÓEOo²ÛQÿÎÛe’ß-¦Ú×ýäm  #•_'Iîs—,8ø#‘³Ê²[´ÝøÚ´æÉ+QZî삪9»5í© ‘D{·rÛò:·)r¤¸ºL«€ÁÍÁ%Áàc–•)Û,_yÍ$ö2™çÁ2,µ¦Ô¬ôÜ÷²¤°CÆ&€q‹€AdÊoØêOªàø¨êÕ«_k©Šžáe¹#Q¹Ù.UZnMg>q¥mé¹>>ƒÚ×&@“á9/í«0+ÃÕyWP2¾é‡Õ=~έ¶9õ×ûªô¤žªÓ-þ•ÎVAGŽÛàE{g࡚„HéãY*ZvÜ­Usb•û"5½ö¹¯‚Ò5©Å· íV6±Û92Œv­ÊS©.ë*çðp£Ò,z9nѬ’=e“îÉ¢ž¶Sù¦VËfm?‘ÅOqXÈîI<¢vA}Æ/8êÓ¾áNÇQW#ßl»ÐÏ ÂÍuŽ5jI%¶ëFù¨ê–.›S%Jª)]øzêzj–¾ãæGaÊnØúTSÒ¾ »Ur³óK ή±Ý[9¬üm¾G#?^ô¥¸ÒºšënsÝ5¶ºŽ££3rc¶Œ±®¨ÁÒjkÇ%}N [?âkå^\ÞüFàæ±Ù(¨ªÛ%C#É)£tQS&HØ«nPñz¹©ü¹³³ì™æÖOþî:GÒ÷TUTb¾Ië¾Hà. §±š‰M-¥È®î~ÉËù—"&ʸ „0U­©Q\ˆï»ã©ŽÏ1flñyˆ*ÛÊ6x—5Ìs˜ö«\ÕV¹®Ekšæ¯%k‘y******"¢§%> Ÿ¿±„***¢¢¢¢ì¨¾=ÑSè¨{°þ7èm\ee¶©žÖþ¦Ð¹¶•‹Ë›ëhs{|j5~ê­¡µÜ­Oºsrÿ*rîtLþ{&-_Çowªº„‚ÝeuZò½ôŽ)“bÙ.xm±“9U#†ýy´V'5FýJXÕËÑE;ÙšOûC0ScºÝŒÌ+Ójˆ°ÉvÙ«k+³ /ÕñA)]ù6ÄgµWMXÄüFa³Ë½«éÆ Ìsí³w“Íb-×EÙ7’ ÕñÓ?möe¸¼îªˆšÍtþþ<·ø®¼eâv¨^×~˜Ð¸m²¥‰ÉU•µÙ†Â¾»¥ýQ]Cu·ª5~ÍääOܪ½ÀN‰_Å dC´8íâ÷IP“Û¬m6½ F=$Š$×6Kfrl.ETXæ¾ÙnÕŠ¨ªÕ’¦EjôU¼>Ï<Ù·e3é´ö‡ËØ|»|©k%­¯ÑòÁ=é[¿»k?ë².̾ʭ7>[â33žHÝèô¯N3¶dŸmØÛ¹lžRº®Þ=k™¾Û¶¤¾wDEÐ@»Ñ0+Z ¿m+æÖ¸÷˜’•­ß¶•ók\{ÆÌß½ûn¯6¶?¼o$”­oÞý·W›[Þ7’Jµ »öÒ¾mkxÙ‰)ZÐ]ûi_6µÇ¼lÀÿZ¯cj.#¶Î?³p̃½Ý³ÌÛ(¶Zò: mÕ•ØíÛ4È£¶^)á™ÒPW>Ž©”ó§í‘Ôò¢*šÌV·ï~Û«Í­ïÉ%žÏp¿\iíV¸>½]JÈ­GIC 1¾zªÊÊ™= 4rÕ×VÕI-$3TÔË1=í’I,¯lqÆ×>IäcÆ"¹Ï{œ¨Öµ­EW9UUv**Tµ~Õj4kOríÉá«R¥hŸ=›6lHØ ¯1µÒK4Ò½±Åç½îFµUúZ­7åž×i¤–¶¾©Îl4ñ#Qz1±ÒÍ4²=ÌŠžššIQWUQ$TÔ”ÑKSS,PE$Íßv¶`èêLZ¦žRXë³H¹ºšÓ"§)(𤑭s&y¶|ºF¶¶YGm¦‰×;LJv½ÛìÖúœ_f¥©kbÈòdŽJz¬ñHÙЉ’¶:‹~'Oà´h´÷%íÐþ^á—›ý=<îVGr¼ÅN´øí•Žo)¯¹E²ÍOûØ‹Q]+ØŠ®Oç‹x»Üo÷{­öñU-uÚõq®»Ý+¦^sV\nU2ÖVÕL¨ˆ‹-ELÒÍ"¢'7½W‘ÙCøññYi0î±+“_U4öý¶ÿ 2/áéâl‹â•ˆÅrtêe|ù}ÂŽdd°²—­¥YÖxÝwÀK§ÑÝ.ÈkŒ¥gA•êEÚ÷)²Fñ•š_ÛðïV¹93ï Vry*lËfÆÌœ“‚ž‰>ËÞŒYÐÊu5QÕ³}[ÈÕÈcÙ3³G£0L³W"µéÎ?½.ÜÌå#Ví¬mŒM„äœï#f€Ùžu^ÆÛ¼GjlYa™q{´ç˜NQsµã”Ük(qÛNiŽÇs¼TC +£ ¡}e+*'_Ûª"Eþd5˜­h.ý´¯›ZãÞ6`ýïÛuyµ±ýãy$¥k~÷íº¼ÚØþñ¼’P­ß¶•ók\{ÆÌIJÖ‚ïÛJùµ®=ãfoÞý·W›[Þ7’JV·ï~Û«Í­ïÉ%<ª**»•e-¾‚šjÊêêˆi(é)ãt³ÔÕTHØ ‚ÚŠçË,¯kÆ¢«œäD3KÕ}&7n¨Ä,50ÕTT¤mÌ/ô’6Hîµ0ÈÉ›ÚêcUkñ»ULlt³Bå‡ »@—'>¢ßGcü?ÝŽýdlý™vOnUËÙ67ŠÜ`褭OçŠñ•ÒJï¦åè:™&'ýG ¶ùñlj}ã2Jï4+È‹ðܳ‘}K“ûUëÈݪ£“Œ“±mµ®dt¦\æwþÇãŸF/“Uæ)«r³§ôº{ ~XÿC-™§/,óâUšž*Ã4ü’Ã=ÍI`\Ì>²×Òd–ê|FýS -E2=˜uþ®FŪ¢i]3ñû­SÕUýùv/nGJï¼¹&)n³9?ž[Æ)GRW'MÕ˜¼?YééÉå¸XîÒª‘[«r¼6°™hç«“¥b6ÍUóV û=£}%|WâVº4’U²ö$rÝ™2ëéukOeê×Èæ«â'Çà șb-]¦c¦úö´ÞB9QÑÜ¿ŽÆ$ŒÃ¶Ê+²8X¥Ó|ÓTÓ˜É{ép‡ÅÅæ‘Æ6î,4µuq6ךâ߉lõØ^iE +zÇ«WöÈøXùc®³ÖÉ+t±Ö[®?FT>ž:ð/ƾyÁ>Ú‡3°²¢ÿd_„µìÜÕK .Ob†g:*Ú‘Vž‹)°¬ÕXýÑÌþíÓUÛ*œ¶Ë¥|RwƒÒ»¯[q ®qý©ª2JLŸÈ©útõ0*G[n®¬üu’ù@ç-E¦ûk•éÆÛTÖÍ ú1e¦šž¢m|R|7庪æÈbëY¹Ó|ýÉdÓydG̘¹eç3´ÞVeä±]¦ÔzPžgm•¡XïµB¾U>4¾3Ÿ úÞ|¦¥»ý#Õæ—Ifö’Âag™_aúC7:ótY IföÍc"KQHû•²•éÕ@ʇĀÖ/x¤ÁøCÒ96Ṳ̈†®²–7Z°œ[ñ ‚»4Í+`™lØýþé•÷šØã•mv:+ÃéO%)ø¥bº9ö9Í_½Œ‘®cÚ×±ísǵ×±È¨æ¹ªŠŽk‘UÕEEETTØæ¯bz“Áj¬ÒÖ³ZhìW±†x'…í’¡–5l‘Kk㑎kØö£š¨äE2ìªßD«C’Y`m="üD‘QÆ®s,·ŠU…oXú+ÕïX¨$ª¦«¶9òM$–+¥õ3:¹k#‹c¸@ãWspc®U­nm¸cwyi™›ë›ÔÓ¿̨ r£ j¯µß)"t‰hÉ-ímÂÞ÷:›_jž¾Õ[¯|±\V· ­’8érgS¶Û<Ïk#·å4©3lŽ•ÊÖCOY-Lö+Œ²½)©è.ó\fd’ÛiV<:X¥‚Y š7Ã42>)¢•ŽŽH¥ÊÉ#‘ŽDsÇ¢µìr#šäTTEECËiì&©Ãet~ªÆTÏa®WJö¨d¢K0ÞÇLªµŸ'-ÞÛ5¥‰XË,‘¶â³V+ñÉ ÒBöòuCFi>£i›ê-=‰Íi-o¬~£Ó—)Äüd9º‰^L¥Xk"Gé¡™Ö(ê <Ôã¬ÜS¯2Ž2Uƒ’Ã;èpÇÞã*Á ˜ý˜þÃ¥¢JŒ“SäÕ4Ô¹…ñµ?Sm¤Èr›O^q߬i4QÃ-2^)lÕó-¾-Ü?›’ùzÆ®öëþ9wºX/¶Š¸«í7«-®Õv¶W@ä|–û °VQUBôGEQM4sFäé1è½§»>¿ŽNûÕð[ñùÑï|V•±Ó7$mL8ÎÍ¢§o&#ê.°ÒÏbÊ'E—[] âº^”•ù;Þõ‘5iÖŸ³ëPc,[Îtbó3ø§¹ó~ÇfmÃS9EUÝŒ^ZË¢Çåk³æHÙ‘›v(Ûk>NutË¡¿ˆ_²ÏTáíÞÔy(õ6GIcöPß‚Ž£Æ¢ª¿Óas·/7UŸ3a->/# MŠ'YÌYsçwnzãÒŸÅw‚ ×$4ûr‹YßêR4~5·àn SO$ˆˆØÖOSƒÔÈécdt9UT®r'8›õ#éû±ßì95º Æ7{´d𦣩®–;•ÚÝPÕDTt´TSLÕEEEŽW'%EçÉP×ö©ÐºÓD[ua¥uš²×«™¬MÜ{eTßæ¯5ˆY ¨Ü‰»%¯$±Hß™sUÕÆ´é§PºqyØÝ{¢uN¸Ù6Ǩpy['Tßæ«=ºñ×¹‘ÑÏRY¡•¿µJÅLçZ/3Šc™7ìvä6³w‘erÕ5 Uwøl±ã¦È^–7Ilc'keM¤|=}–Z§/nŽ£ø„ÉG¦p±¾;°:züµI¨ô¯šÎÓ|ø¼-Y<6hñ3å23Débmœ=–²tÚŽ/¸ÔÜÜfçi•ì»›(1ËLµ1áêË,ñâxmîä䥂Gtîwº¸ÛæùÁp¸½†$¡µÓÐZèµk:wN`´–§4Ö*–Š®ÚØün>ÁZ¼MUrñk~gË+ÜélO+Ÿ=™ß$ö$’i#·q¥4–šÐº{¤ô~§tæ«iâðøºí­N¤ Us¸±»ºI¦‘ÏžÕ™%›vd–Í©¦±,’8/FBµ »öÒ¾mkxÙ‰)ZÐ]ûi_6µÇ¼lÀ ûß¶êókcûÆòIJÖýïÛuyµ±ýãy$ +Z ¿m+æÖ¸÷˜’•­ß¶•ók\{ÆÌß½ûn¯6¶?¼o$”Ùž0¶VE´¸ŽÛ7݀̚[+myæmŽSA®µF­Óöymö¼Ó"’š¢ãjL7°]ïÒº®T¸åWkenOwc)£»^+c¢£lÌœáßèˆ/9£Ó¢üz(i,Nû*å·–TÅgŠœÞÉ,´”×\’žv££Žág·ÓÍɵŒé`Æs•ÿ¢m8¾(ÏÛ%½¹-á>ý+ÖYME] }.Ç+(±¨qÚgÓÈ*;ŸæìN‹¦‘-ô?|³Þ_>­èØò¥]^ʼU6G2ut×Xåj9s¶ªäcTÌ5_üµ¸­+„ÀUt¹Fû*ê|¼u¬ç[+è,âÙ;LY…$|N—O:Ó–¦hœæ?éx,ù¤}¯Èaš’ú¨‹Í2Û3)¢¼Îõ_Ý$·ªZ›^KQ7&ÆúûÕ}<)Ñ£z73œWý-iÊ1Gþé*íîɬè½Î'M[]<}.ÕFVc3dP6ž4éV\Ûgbót1ò·ßýÊÁy)¡†ÄO‚ÄQO ã$3FÙb‘¾ü_ÑÌ{wDðäT8lW¯j+Ú‚5åo`±&†F¯»dŠF¹jþNj§èlÕ¯>0,±6 oœAÓÓÇÑHé×pgÕÑ£~ÍŽž¦ý41·ìŠÖ1­r"#‘P]xÓãõà¹ñIÄM<$’7}4ˆï»d§¦¿C íTF½ŽkQUˆ‹ÈÖPc?°z»ßýŒÒýùw¿gqÞ_ŸsÑóßõ幇³>›÷ýWû>ѧ—/Qû)ïòþ÷{Ðw9~¼·ýLƒ"Ër¬¾±.fMeéÒå]‘^nWºÄé*+¹Tܪjfýʈ®ýýªˆ«Ï‘€dÐà x™ x¢‚ÚŽ(clQFÔök#b5j}¨ˆf5ëש uêÁ jñ5âd0ÄÄölqFÖ±O£ZÔOÐS˜V´~ÚWÍ­qï1%6gƒÝ•‘jÞ#µ5ó·`:Û¦y„ã•0l]Q«wž+}Ó4Çd©¨·cÛo Íì‹ôN¤‰-ÙU¦ÙE“Úú˜í7Š(ëk8ýïÛuyµ±ýãy$¥k~÷íº¼ÚØþñ¼’P­ß¶•ók\{ÆÌIJÖ‚ïÛJùµ®=ãfoÞý·W›[Þ7’JV·ï~Û«Í­ïÉ%d˜}¢žù“Y­µÎ|vÉkQyš%å%5Џ_*ؽœ–ŽÑK[TŠª‰ý×j§Ý1³:Å?ÀXó›úþÉ ±AŽÛ§þ¬¹åUÑRÔŸoúÖ'G–BîKÏ¢ç/%oK•FGÇNnÓ•“JŒ­ÓÇnŹYV |ìØæ™r¢*£Z»"®È¹>§Zæ¥ÆzèYgAÖ³™Z’"ª\ÄiÚVsÙjmDÙ-¼v6ÕhZç1ŽšV5ïcÏn5}»Ô_ïWkå[XÊ›½Æ²ã4q'(a}eD“¬·±4ŠÑ±ÄÆ1¨j"q@QÆÈcŽ(ÚŒŽ&68ØžÍccSôkQ?D,7.YÈ\·~ìϳrõ™î[±"¢É=›2¾iæ‘QòÊ÷½êˆˆ®rø@')€r¶+½E‚õi¾R±’TZ.4w¢•9Ã;¨ê#ŸèNÞÔ|£ãTVÉ ÞÇ"µÊ‹ÅI#dÑÉGÇ+Œ_g1íV½«ú9ª¨¿¢•4îYÇÜ«~”Ï­r˜.T±¢IšÒ¶h&bª*#╌{UQS“StS$Ëíö,šóm¢sä¶ÅXéìóȨ¯ª±×±•ö:Ç*sEZËEUW4Uÿ]÷_¹™ÎWþ>ǃßÓ÷ÉQb›¸Ïý_sÅk¥£§…Ëð¸^'s^}KÉ­0b—#ä¥uÊù¢GÖžEÿ©b¤«bDüÛ$нíUDUk‘UwD¿k*u©êLŸ¡…•±×ÝW9ŠªÄÙ*b5*ÙìM7&îFËS’«^fµÏcf‰ícÞÔG¸+L`ZÐ]ûi_6µÇ¼lÄ”­h.ý´¯›ZãÞ6`ýïÛuyµ±ýãy$¥k~÷íº¼ÚØþñ¼’P­ß¶•ók\{ÆÌIJÖ‚ïÛJùµ®=ãfoÞý·W›[Þ7’JV·ï~Û«Í­ïÉ%g3‚ÖÖö7±Ùisž¡«Ø«'e¶Ám•îæ>\¾õ]öGÁ+Sš£¹`Æs•sŽëŠFö#±kÎfT«®Íršezÿ÷-Öëb§ÿJ7·ú%¾÷Í625òÉ/îöýR¹f5Tü™b$Eú=¬ý ÃKþë®.7ä±SH£*Íì蟓Ôúg u¬_nV°ù¥G§»«Ï>ÉáU0`p0ð æñºÚ½®æ®Çs[lÔíNÕH²Û%ÊŒªŸv±’áöhÜï²¾hš¼•[Ï3œWûìsdR;µ‹[.³ú­]k‹R£ÓŸg÷vëÍËýz*îKËš;-ô~Y²q§†Gv7û©=*VdTOÉö&šE_«Üã/Õ½Çh{¯ùì[Ò\-N¾]+ñš›Rá©5ëíÊ®‹¦ÆøVׂ¾éå฀µ »öÒ¾mkxÙ‰)ZÐ]ûi_6µÇ¼lÀ ûß¶êókcûÆòIJÖýïÛuyµ±ýãy$ ÷%À_ð»Å8åÖús)³múÜ2ç?›ÇâžâÊvWgáã…Í;£°ýÏý»_±Ûgáò K²V®ÊÄqGä•ÔxÖa•c”V+MÆ–ºšì‡¦Ò¿¤u–üÛ³1.õößÙ{¶×t‚!³Ía´(3m{ìÌ3RZòZšMa¦õ[Ÿâ‹GˆÜï[vßt¦®¸R³5¢¸Z©¢¾j¶‚ïÛJùµ®=ãf6S!Ô›“„}I¿u—º¿Ž~sÝÇbÖ‘kL%ÀòM7ª¶‚â;Ó’ä1ï\kcÛ1»ö_cƬоý®P\–Õ°â´Ün)ODÇLš× »öÒ¾mkxÙŠxÒ4cQ“>wl‰4¯‘å:|²*66G;ìŠø#kbŽU“´ÈbVAêé],ë$L†>â-XÙŒFVtQ½­Y%’I,ñ‘Ò#,H÷HèÑŒ‘òHÇK#~÷íº¼ÚØþñ¼’Swøºê£ý n쿬7öý®f}?׿ٿè®ë+·ç]ÓßéÞ—/©ù_>Î}Åöt '9Îÿ»ªÆiùhðlG¢Ÿ™Z!½¿—/·9n²*ÿ^jª¿~kƒÎÃÿß¶Þ_ËúYôyòðçéý¿ó~§.}¼¿ÝÈ·Íç'E«ìÚ¹ “òæÇЉüѓȉú+ŒÃû½ªço‡ËžÑøç*{­kµ^BF¯øÆ&£—ülò0`p0ð çþò§&¤_å¬Á²î—Ûÿë­2ß÷ÿ)mLTþ¼Ñ;PÁŒç^ïÛ—?åý ³:_orž‡ßÿ7éý»åÌÁ‹|>2w؞Ϋ™ï{ïD¿Ï…xÿ’!˜d¿{¡ô¤îòø³ºÃÅ_t­^¶”ÈFÔÿXËÛrÒ~jÀÃÀ­ß¶•ók\{ÆÌIMßáªö¥ÿµ°ßÚ7ö¹†t?Afÿ¢º?¬­?’ô¿Pÿ§z\¾Ÿæœ»9ôÿ ÙÑ×­ûß¶êókcûÆòIJÖýïÛuyµ±ýãy$ Þ=ëì×LÜ´QÅ G uyåÓ3ºd9./µ2+´íÕö‹ùÍGPRÁ1¿Î-Q;¿/‘~»0¸€sÿwS“Õ¯òÑàÙwKíÉ?1µKcg>ç-Ö4OëÍQ·‘ƒÎ+ýÎ9²*ÝØŽÅ­–¸_ýR®»5Ū‘‰Ïÿ™n¶\Ú¿u裹'ÝS-õ~{¹9Ý’ÖªŸöÅR+H¿ù]z%3 ïðúgCÓoá³C9Ÿrÿë^Ô°Ooù¤Z^»—o2yßt@¸xµ »öÒ¾mkxÙ‰)ZÐ]ûi_6µÇ¼lÀ ûß¶êókcûÆòIJÖýïÛuyµ±ýãy$ +Z ¿m+æÖ¸÷˜’•­ß¶•ók\{ÆÌß½ûn¯6¶?¼o$”­oÞý·W›[Þ7’JÎfÿ­­ïok±ÜÒçC—µR²ËmžÛ/ݬd¸…æF·ì¯žW'%WsÁŒçÿcÎ,+û䨱AÛ þ¯¹âµñUÔL¿ÿ¬Ë&^H«ÑEíFô¹Ûò_$Uì§…«v¬¼—ð²)dJ–dÑK6®_ ãÍ|5LÃFw/†w˜óúk9C¶ßé¬]£Qu¥m¾gX·¨°˜ŠÑDÔWØYV³]2!ƒ ‡€g0ÿ‚ÖÕïwc²,ÖÛ;“±V,JÉršã¯ÝÌ|¹žG7ì‚7vª',Îr¿ðLÀŸ²J{ Ù ÆêËžU]-m4Ëöçø¬N—™9§>Š¢sV£L·ã¾x§²¾öîY——ö_rzJ²3ód•+W{\žŽæž†a¬ÿ†½‰Ã7Äx 5ƒ ±;új÷®ÓMAœ©c-±SQf²õ¥‰È®±%g¢:@.­h.ý´¯›ZãÞ6bJV´~ÚWÍ­qï0~÷íº¼ÚØþñ¼’Rµ¿{öÝ^mlxÞI( Ö‚ïÛJùµ®=ãf$¥kAwí¥|Ú×ñ³7ï~Û«Í­ïÉ%6gŒ-k‘jÞ#¶Í&¸à:Û¦y›dtÓë­¯«wž+}Ó4È£¦§¸ä:“2Íì‹ôN¤•n8­ÚçE“Úúi.Öz(ëhÝ>³2LBïObÉl÷*Ö¾KlUiOx†4ç%M޾7Ûï”mOêµ–ŠªÚ^JŠŸßv¢§bã`âžX‚jòn±ÏȈ»*²V+²ý‹—eú/’¿’³†Êcrô•¹Š¿O%QdbIY£b;P,‘ª¢=‰,LW±UÍÝ»¦ç+}´TX/Wk[˜ú›EƶÝ4‘/8f}D,ð;ìø'F$ÐHŠ­’'±íUk‘WŠ3œ¯ý-iÆ2¶~é+-íÆo ÿvõ‰ÒÑPÃ'GµÈÊÌflv¡õ^u—4»½Ά^X1ÃFgÏV'Ë·}¨èlñM›êk½ÐYàŸÜïÇ"Æ¿ÚbµÈ›)rÕXÚØ¬õúôé‹Ðd°ÝǬ“./Z®Ô9Q?ŠLeÊ­¶Ï+¦Í¹\ÅU ³ÊØ­ûݦÇJöGQw¸ÑÛ¢–Uå ¬¨Ž¯;»”ð#ÖiäUFÇ ÷+ZÕTâŒçÿDÚ2Œ©ÿ¶JKzã6u^Þ•ã,¦­¡¨“¢¼•YGŒC‘LÙã^•Íö‡ªµÒÇÎ’ôÏ‚¬¯‹dÈØkrMÛêl=°VæŸý4žHÖEóÆ4s¶]¶2+Ž­”ÏP¯}¸¨6O3ÛzÇ7ÜxŠóes)]èŸÖŒ§i”Ûº,¶Ý Hæ¹è©Äå÷z{æKy¹Q5ñÛe¬tx$DGÒØèXÊ ‘9"-¢šŠ—’"vCöO±ŽsA +Á x÷HàŠ8cE]ÕŒÝ~«Å©ºýWÉmÊälæ2y½Õc®eoÜÈÛtlHã[7¬IjuŽ4UF1e•êÖ"ª5»5À¥µ »öÒ¾mkxÙ‰)³<ë\‹iq©¬xÍǶVÚóÌ'#©Ÿbí}[§ìòÛíy¦;M=»!Ûy–`»ß¥u\KnÅm7:ÜžîÆTÉi³ÖÇEXèÀ7ï~Û«Í­ïÉ%+[÷¿mÕæÖÇ÷ä’€­h.ý´¯›ZãÞ6bJV´~ÚWÍ­qï0~÷íº¼ÚØþñ¼’Rµ¿{öÝ^mlxÞI(~‘E,ò2"’i¥r28¢c¤’G¹y5Œˆ®{•{­EU_²K¦¼W£'¼LËE;¹;è#Rz÷7ïÉÑ£’~’}–I#±ôè©Èî^ü>u—â6üHôwXYñ³!z¤1ÔÀáÒ_,vkQäe§ƒÄóo'ÃëðÏe¬zUŠw·‰nÈ屨¨»·íE]ª‹Á®Ut²mî‘BÄt²mã~ TnéÉQ<’sö‚š¦¥Ý jyêÿr¤•Ý¿oÛ\½¿ð6²Õ¯1KR5[metÍåÎ{’þ1ÎTû/Ñz%#Uµ”í^×±9fQC H Š8coòÇÿ1Ôÿ’^éÇØ•ÔL¥j÷:©Ö]-£å{[,˜m€Èk;LG"/¦±”É]Òt«Yfê’¾­lµf½ªØ¤Š’˜5ΤSc•´qÓØDð’X••š¿ª1°ç"ýËí 9É¥NlÇïJ‹öU¶V5Ÿù+¡DTÿz/!&-“DНÇïH‰÷T¶V9—ù«aTDÿz¯#rß_ðEéW§ãþÛºƒêøíÞûƒNz~_Ÿ¥ß¹Çü>¯ñ¯ö“{þSŽþÝÙ·Ûþïmÿ^?ÈÑÙéªiЩ§žÿ÷'ŠHÙ÷ý²5«Ùÿñ7’Xa‹ñG4nþhåcdc¿âÇ£š¿óC ºëÌRêŽW[YC3¹òžÚ¿ƒsU~ëôX‹HåUíU};—Ÿõí^} Ô±/¨¸ºÖ.t¯¬š[XJƺHðÚÇÑvžE_OOwVR³aè›DûUñUœ÷#e–"Ê])õ"£Ü½Žžº/…’¼¬²ÔýUlF§×‹¤w䊾 Nbý©ïùìó6ïNÞnú Ô‚½ûòHÕË GE>댕ëØÊuUäJåŠX$|3Ç$3Fåd‘JÇG$oNÅkØôG1ȽŠ×"*T5CÖO‡Î²ü?æÙêæ€Îèû6#1÷­Ã¼a"ó#°º‹-ÌYÕkæŽù¦¬bZŠ»c²Øì¬k- QXDDWµª­–=ý»½,{û"¹ˆ‹çŠ©šáßéx/8\Š®~C 5v&óN̶ÌÊ™lð±?™ò^i*n¸Ý<­õ÷›}DÊ­£gG?H¥– cž $†hdd°ÍݱK‘ñÉŒTs$cÑǵQÍr#‘QQÌs¢¸­cEqÒdË;î0BÆÇ»)¥H]Q2&#Y =\µ0_m±Dħ§·Ýà·Dù&·U$}ŸÃ^r/ˆr;9û· ‰­ú¯ñ4âjµ>XãZOUU’Â"ö ¿çšR7'Í’ÑÜ£{µ6–Ê_Y"‘¨œŸrêÓ2g*ÍnÓ55VµOõf.9ÌyZ ³áqþ×ã°ÍU}DçÍÙmá´òÞ`‘UÌ–ËKMkƧ‡šÄÚë-}L=•W}0ø£¶­fe[$¥Æ­°Lƾ;†UTÙ`£tnG2jz9iæ¾Üb•ާž‚Ó-ºgG-Ê—§†Ë,³Ë$óHù¦šGË4²½ÒI,²9_$’=Ê®{ÞõW=îUsœªªªªª[×ø›Èžðã÷U_£¯OÍO¢ÿ RW+“æëuŠŠ’WTLÁ¿ò=)"¯Ë’ÖÏŒB‰G MZæôg¸ÎÖºª^ÌÖ/jS«ÿÁ‡¢ŠˆÕ•Ò½:k•zˆÐºEôËLbô_OôÎHél4); ƒ§*p¦È’M"1;–®Ùrwnß·$÷¯Xsìܱ=‰#ºRÕ«7g}›sIbywÉ+•Î_É k}šÆ¢5©²5 ¸§b¹.gÉáT¬…!­k:0\`k[S§òµëØ•¢ýá—š"+¾›¢zôÓ*#®´‹ên—Êh¾ iœ>®ÒÙ˜VŽ7N;”æM—·ÎܧÃLóu §nÉê‡foÇ~u[yΛeìÎ×cñ¹»Åõ¸iívãÓúŠXÑVÊE‡Í§Þ¡s;ßÝ<ê ý}ieŽºå*¶fORtw¢ÌãìA%L9Yã‘!½F{/C ‘Ëéç’JÒÆäår·VÚ.¶»Œ¥¯·ÔÍIWNõk–)àzÇ#QÌWG#zIÍ’FçÇ+²F÷±ÍrøE‰úÖÈÈ‘zyv/nVÂÕí—$Å-°+¾‹Wùå¼b”q9bjôÖ³‡èư~œ‚+„øÕÍK™¯Šdk-×TŽÌmÝÉSvM9UV½†§rnî?<2*O ÌgaêD8é«ÜÆÉ-œ^7ÛÂÜ™Xé»Mr6Î6úÆØÙ_3½F.Ô)*¤*‘»’ÆÙ°f<<Ûmº¶ïp£µÛ uU}¦*JH­jË<ïF1ª÷¹±ÆÎkÍòÈöEÒJöF×9<"‚ôýd|+û2ìžÞ™²lo¸ÀŽú_çŠñ•ÒJÕ­è:›ðò,ÿ¨êa·Ò[°èZÈáF¾Ý…VVÛ«wM¹Í*"µR½v¯rgrj»ä†7,óBÇä:{Fk2rK[ˆ–óW!V6e‰ÎVÖÆÐY#$Ëåæo¤ÇEÚ™±/¨É[¸¬nJÍ~7*¸Qs¡Æì³6¢ÇŽ¥DQVFŽk/wŠ¥…/YEícÒ*ù)©©-|pËŠÝiަÖ¥\’â• mhY \çñäçÈý•òÊ÷,’Í&Èç,®|âo'/µ»"Pær³æ²Vr3Ç 7j8*×G¶µUaŽ¥ }VÈù$J¸ú0W¥Y%’Y{GÝ–Y9Hàç-€µ »öÒ¾mkxÙ‰)ZÐ]ûi_6µÇ¼lÀ ûß¶êókcûÆòIJÖýïÛuyµ±ýãy$ +Z ¿m+æÖ¸÷˜’•­ß¶•ók\{ÆÌß½ûn¯6¶?¼o$”­oÞý·W›[Þ7’J.‚†¦ç[Mo£eª«™ÂÄìEs×—IËÛщÍò=k#kžîMj©â}E"2«$©÷9_Cné'Ù‰Ëñu çý\îTÌzrTFT±{}ððÿ”ø™ë®‹éU'Ø©ŠÈZ~[XåëµL&ŒÃ𳞾Ç9¯–æ…bÅb+ ³9,lS'jGªZ3¹Va±–o9ÏcQ•ãrì’Ø“剋ìªÔ]ß&Þ{lz§”*xÝ‚“µSÛiQæ§Ôª¨èò}USÑ>¬ïûª"ª##jªý8˜Æs^ŠªóÀÒ4–”ÓºL`tn’ÄÔÁi1Š¥„Áâ(³·Z†7+Ö¯*¹ïVÆÄYf•òObW>yä’i$‘ß9Ï<Ö¦–Äò:Y¦{¤–G.î{Þ»¹Wù¯„M‘dDDD@2ˆIÒd–©íµHs“êRÔtQ_KTÄ_¥3?¯.j¬•ˆ©õ"sÙÍÈäçjÝ)§uÖ˜ÏhÝ[‰©Ó:Ÿw œÄ^gr­ünB׳ˆŠ×±]ÕÑMãž¼­ŽzòG4qÈÞX'š¬ÑX¯#¢š $R5vsÅݪŸEòžQQQStTTUCK—LnòŠÉg·]ìÕÌ–Šyôµ”’¶X*iæoEÍs^ÖMÌTæ ¼•ÊoT™%º£.°ÓCKQLŒvc`¤±Ej©šVÂÌ‚ÕK"GÝ*$“C R~ï:[œÊk}m‰&Î6î<ŠÚ\’™œœÕe Ë¢ŸÌÕçø:—råÚÕGS=îæªŽ¦brFË=âáa¸ÓÝmsý ºez5]sA43Fø*¨ë)¦l”õ”5´ÒKI]CU´µ´“MMS°Jö;ÅOÅ×þcá§®Ú˦rK-ŠØ‹-ÊhܽÆðn£Ñ•u¼$ÖÝ®‘$˜ÌŒðEž‘ôñË^9 ±õŽ…Õ´2Xt§šŽi°9W³ïUk$¿ƒË@ÞÓsXvM$Q¾Ì»YÇM<³x¹Œö(ÜLn_Æ<»Y-÷«}NQ‰@°ÓS5³d˜ÊI$õXÃå{cüuåsê.Dò6*Zé-e–ya´ß$’I-—{æ|íZÌv˜ç1ÇÆîÜðJˆÙ«ÌˆŽtS5ÈŽF¹®k˜çÅ4ndÐI,2G#ªóx;x;1Å;àµVÜ s•¤çËÌcÞ÷Çü|ÒGމdŠX,Wž÷±× µŒÊT¥“§rœPY€žZl¶ë-¾›(Ë`Y©êZ³cxÂÉ%=VLøÞèÿ\øœÊ‹~'O,nÉ#Š[ù £ŽiI,PW¯^ò7g«ŒÅÔ»“¹Nœÿk5&7n§Ë¯Ô°ÕTÔô݇Ø+#l‘]'†WÂü‚ëJôT“µÔE$pA;~ŽAv…mímM¾‚øÈ°ªÚÚ»eU¾¦jÊêꉪë*ê$tµ5U:içšWªºIe•î’G¹UÎs•Uy©å^/ õƦëtŸëÕÔ«ÊØã†a†6AKIIM c§£¡¢¦Ž*Jh⥢¤†Zh¢‚(ØÞ0â«^F9öm+_rdDwUмH»²­ur5Ëæ’g5¯³2ºW2(û5à­Îæ*X†¾õôî6GÉ©dqßÌ_{R;Ü»!’X£·a¨‘RÇE5ЏLzEB­®K1• ÓkAwí¥|Ú×ñ³Rµ »öÒ¾mkxÙ€÷¿mÕæÖÇ÷ä’•­ûß¶êókcûÆòI@V´~ÚWÍ­qï1%+Z ¿m+æÖ¸÷˜?ã jlm»ÄvÙÈ6ngg»Ny›bö˦G_-Ʋ‡´æ™–Ë=<Ó*º: ÖU>žý±º¢UOæSYŠÖýïÛuyµ±ýãy$ Þ(¤šXቪùe‘‘FÄû¾IŒcSýîr¢'ûÔÝ+-¶+=ªßl‡—BŠ–(UÈœ’I¼æ•S³¶i–I]ØŸ¹ëØjÞB•ùu–''6CPê×ösDü RUGÍ?ÉfŠ&ÿÅÈm¹è‡ìJéuZÚG¬]gµY®¿—ÔÞšá­=ˆ’ÖÇà¨TÔº;drÁ“·ÓÝõòÅ— Z¨èäC©z‘uΟŽjü±Äû’5=œù^èaUýXئÛë´‹ù ×:Ä2õmŽñi¸[%åÑ­¥–¹ÉÍ#•[Î yvöÃ2G+{÷1; -–7Ã$ÊÕd‘=ñÈÅûµìrµí_÷µÈ¨¿ïCyMHÏèRƒ.½DÔäɪ[ZÎÎH¿Ž†:©9¹&–Fÿ—6¯.ÃDÿm·K«YÒ]ë=ZÍeìF%Ó\Õ–1[43”-êm<Éݲ¹°ã-àõe|1%ÍH×/'ƇgtÞë›c!Žrü’DË‘¢¯†¾'¶vý^Ùaßë´iù)Z®×šéi«–о‘Ît5+UQÇE4RÆö¾*Šjˆ_%=U-DrÓUÓK-5LRÁ,‘»7}¢Ùœ£ª±jhm™Rµ_]†EÍ´·y9ÉY…+Üåtò¯7OˆÈ÷VG*¢ã’\i¦[Užp|µÎkšæ¹Zæª9®jª9®EæŽj§%EEDTT^h½¨yÒ³Sºô±žšãŒlèÎm’4UrAj.LõrW*7œrÄ®{«Í Þ÷;¿ðÚ…(Ö—•§÷γ2ØŸùý5ŠvÞÈá~O}b°¸œªÃQÉ7§µFó «_’‚¥h¡9®cœÇµÌ{\­s\Š×5Í^Nkš¼•ŠŠŠŠˆ¨©É{O‚ˆ™£-kió…žšñÉ#¦Î¨`üM|ª‰ÉŒË­ítnÈ!EF¢Þà’<’š7K%K²6CEm‡¿b·l}´õL†²Ó\¯K]þÙ/ãlwVƈçþ àÆµ‰QÇU[j™Ku·9í†åAGQÒ…²ÃuFÖ·¤¶íÑ‘¹üá±Å\êv¬l舎s¢VÇj6·œµÙ˜÷ód´»™NlÖŸ·ûA§áF:ÍÈ`ôù,7qíŽ8µ!&³6)Î|‘Eèæ»‚·<©Z†bݸ¬×¯Ž ófµÏsXƹï{‘¬cQ\ç9ËÉ­kQ\ç*¢""*ª¯$NfCaÅ®Ùj*)™¦…ÌK¥þé/àlv´‘æ%e{Úæ­L¬cÝKm¤eUÖà¬tVÚ ÉùD¹²+F&×Sàë=E㢬©Î« ü5|j©Éñâ6÷:Gcð+•Q·©ä“$©±ÉNüu“VÛ% šò$Ž­R?Wm»#ãkøC_tEG\°{`Ý×6$l–¤jóŠ»ãkÞ̯¥Üúp浿Ùý?77V¹,£%˜íHèä‹NâjÓe\ÇÇ,r^’jX*“ĵ¯æ*Û’µ{£-6ÌU”SCtÊ‘¨ú2^o¥³È©Î:ÌÕXæªTD¼Ÿ!’­ò§<öêxVÓwÂ.·[îáStºÕË[_Væºj‰U¨ªŒcb†(ãcYÔð²:zZX5%4QSSEG|9Îsœç+œåW9ÎUW9ʼÕÎU檪ªªª«ÍWµO‚jÕ'­‰äõÎ[Á‘ƪŽX*ÅÉýŠüšÕVó|²«ëLøØæðæu ^­Oîm9Zt±-“­›-²7Â̦rÿjºå²© ’ÇÞž­,žÔXŒv6 Vb”+LhÌð{µ66¢â;SdË3È0{ÝÛ<Âq{Ó¯–ÝY]ŽÝ³LvKž¢hU%sèé_QþÙO¯ò¡¬ÅkAwí¥|Ú×ñ³7ï~Û«Í­ïÉ%+[÷¿mÕæÖÇ÷ä’€­h.ý´¯›ZãÞ6bJV´~ÚWÍ­qï0~÷íº¼ÚØþñ¼’Rµ¿{öÝ^mlxÞI(TÔ0¤™=LŠœþ…ž©í_ò{ꨢÿöÉl¡®:uÈ™ Å¿ÕÖi\Ÿðmu /ÿé Ž=]}õëÁðo…’jKo¨îÅÅnÛºÃoU¨Õ~Þîô•j¢oºðF§²!ÑzùÎ]C*/³jÕkíV+—oÿ';ùîÏŒ,­[z'¦‘?øözYÿý2¦¶ßÿÙÛÿ/èl©®;‰È¹¹¿Õ¶X\¿ðuuz'ÿåM`ý¯«Ïðoš–tjËO¨Í>Iº¥‡^µQÊÏÉÞ’Õ¤UOì+“ÙTÍtªjÑ=RÒ;ü¸µßÿMi%QNó?bÉïëªo¨c¨«QŒ¹Zk©á¸Y®±F®VGrµV2j*¯¤®s©¦|_Š¢•߈¡žš¥¬™¼8¦†ºâŽhŸ·(äc^Çl¨æî×"¦ír#š»n×"9JÜvK!ˆ¹CzÖ:õuzÁr”òÖ±r7E"2h\Ç£e‰ïŠVoÆXžøäG1îjÐ #%N•$é^_Úê*ç×Ý0ꧯû4W&²» °*¯F8)n±d®sŸ=^Cn¨ÄÇïxµûH%ºÛßZ¹(n”ÒÓÜ,·$bs{­—»|µV«‹Yö‘h«'úNEdµÍL|çl™=ÿYÒÏt©£†©Úêl¨µÜcgkaºZj™=²é/oáî•0óä«4B‹Ó\­ýNÂX‰=ªä#ÕòŠûR[,MÕ^åµ÷9Q#c¡b&Ù:ætÞoơûyß‹;¤jӮǯºÉ{II%,-‡ðc+ÀÌÝ'(é-[‹%aUÁ;üÿ»öd¢[jŸü×|2«òΔŽþzšÌrâÚû5G/»(¬rbtÉÉÄçÒúþ•²\{qÜÒÏR÷ª¶äñKˆ]Ëù%EdµØ” ût~¦\’;·û´DU&ûÁ±ø·ZÕEOw¾%ž¾Éø¤[5Vx¡‰žÚÖwѵ7ÚEÑòÜù´îk¨˜íøÖ¯y¸¬Ç7y†£p™äÆ_Èß‘Šˆ°iög+÷¹A ¹ßÁ_ƒ0«À3J8XìrçYngk®ÖˆRùeTí^l½Y]_j“±»¬wgoÛ´ÄQQQQU9**v**/j*/Ý ˜-V´ŠêÖ °Ö®ÎtÇ*5}öUÎD]¼ì¾KS›ÁÉ9¼>S4ÍWÅSo$¬EÙ_-à žÔ_ 梢/…]Ï€ÎZÀ”EUDDUUTDDNjª½ˆˆ‰Úª«öC/¤×ù¥d ¬n9s£·½9¶íw…,vTNH¿¾õzuª>Åçýåc{;~ݧö«VDu›Wk—fºyc‰¿’,Žj*þˆ]1x<ÞrI!Âáò™‰¡j>X±xûy "b®ÈùRœÆªøG9|"îaàÎJÙ-ݹkg§{ÖÛ±ˆeËîçü«E$´8”íû£¾ž\²5Q?»TTSì™'gìÇñ6ܪ™ü—|Ò«óElþJšÞ|ùQæôȼûˆœ——.Hˆ˜08>뢟ÑÄúéùT±f›ñ«4-ÿ/>…ÓöóT¿ÍËõòïöYu# ¨çTñº:|ö?#3·Ù7å"ï·“9ý_goú­oƒD¿Ñ~®uQË·Ÿ>U™½J/o.Ç"§$åË’ª+õít_õw¡O蟢ñë¯$ÿ.y åËÙÙÍÊç'Ý‹Ú`À}×E¤‰öò·bÍÆ¯ù¶ÔÓ5šy#ûyªYæžB¾!Éí.ŸÄatäéùqŸÇLݾ›=8ý63…Ù9Ã[C‘UÙ¨­X±˜©1XU«÷bÃÓZ¢XÿòÕŸO±?obrÄ*ëk.¾ª¾®¦¶¦NÙ**ç–¦w¯ù¾ižùÿäå<`sÁJUWV©Z»œ›9ÐAJä÷ÙV65U7ó²ø-yMM©3‘ÇkPg3Äõ’(²™kùâz¦ÊøÙnÄÍcÕ\ÔETñ¾ÀT–0­ß¶•ók\{ÆÌIJÖ‚ïÛJùµ®=ãfoÞý·W›[Þ7’JV·ï~Û«Í­ïÉ%ZÐ]ûi_6µÇ¼lÄ”­h.ý´¯›ZãÞ6` ÿŒ+ι¾q¶jµ– kë$æmGs´dyä[ ²á‘AšdKs¾SÝáÄ0¶Ûè. ’•”ö%¶ÖºÞêi^·jÏÄ£`Öbµ¿{öÝ^mlxÞI(6³\ßóR²Gôªíh–ê”Uæål-OÂʼÿr¤”ßMªõþyc›·š)ªfq€äߦïŒ|ïèÛkÑ”µüÿ–6«¹ÁT©þtÒ9UËÚ¿BIѨ®Vòûëìáø©ðçñ„¹©/¶Oº‰U4µ±<œ)â¢ÈÛ‚l¤°®TŽ8°y¸kzëO_á0W³R1åF»Õøweðò¶s·QÞª²"|ÏV5RXSê«,Jî-OÅ+cClðŠŽDsUªˆ¨¨¨¨¨©Í;;QS±Pù=~¢£‘ÕG5ÈŠ×"¢¢¢¦è¨©áQSÊ*xT:€ðªEs•¨Šªª¨ˆˆ‰ÍUU{;UW±‚ª5ÎTkZŠ®rª"""nªª¾<ª¯„@`{ø–lj©ŒF®è‹n¦D_Ü™«ø©Sú¢GMõOå–H»QU T3Œû&ýI|‘ð=]m GRPr_Û#QÜçªDÿ:™ŠÕìU‚8ÈŽj˜9äíø©ññ›»§/6÷OºwWö EX†Nu2ã­O>{RWâ«‘ç3sZZ6˜»ÚÁR½è×5XÞÿÒwb16fñ·mÞªÊ*læ+Ú‰+õEŠ$o&¯á•ÒíãÈH ™àöó®l|Gjj­›‚dÉ>y„ÑÛ-æy½¬·äSæ˜êÛ/•y± Ñ· {#ªeE‰-´N¸:¦'¥ÚðÊÙõ˜­h.ý´¯›ZãÞ6`ýïÛuyµ±ýãy$¥k~÷íº¼ÚØþñ¼’P­ß¶•ók\{ÆÌIJÖ‚ïÛJùµ®=ãfoÞý·W›[Þ7’JV·ï~Û«Í­ïÉ% ö±Í[Q8ÕÒnU7¡j¨‘Ý“ÂÔì¢{œ¿ë¢NÊoé$IôS“ãbKj4e®s×±ÎcØäsÕV¹®j¢µÍr*+\ÕDTTTTTEEæl6 ±á¸¶EþfCpDlTÕò*2ï³YîìlUk؈ååBý•“*6OCÿf§Ú)‰Éaôÿï^sÑcsظ«aze¯³[î:$e|nÔwçzGS9F4ŽžžÊY{+f©² U©bÍARL÷Rë##$—/‹‰_ÕÒ]«wtO_/± Ë¢zîéXÔÞ7nö¢Æç$V½“¬@ÙÙ«`Šlj×/:‰[лTF½Bäí¡c“ï4Í_ñ*‹Ê8—è¯7É"Eäç;"{f´X&d×GGSpQðÐýÑÑÓ»µ²Õ§Ù^œâ§^Îo™صéîsÜç½Î{ÞåsÞõW9Îrª¹Îrª«œåUUUUUUUUæh—í,ûE18ì> øuè6~,–w)œ/SµöËe£‚ÇJ×A’ѺrüXîfïÆ²SÔ9JÒ>¶›ìbjÉ.jŹ0=£tŒ’¾R%dLVÉJ¬Ùò½6s,ÌÅO–&þ(Xäå#‘$THѽߨóÂvе »öÒ¾mkxÙ‰)ZÐ]ûi_6µÇ¼lÀ ûß¶êókcûÆòIJÖýïÛuyµ±ýãy$ +Z ¿m+æÖ¸÷˜’•­ß¶•ók\{ÆÌß½ûn¯6¶?¼o$”­oÞý·W›[Þ7’J7Ù—Kb¢¹5÷[cÄsÑ+©XˆLþÉ£j,¯b#Yб:%òÉ“Ù2ÑöÊ襓£Ò’•ëô«"ÿ?©LõI:-^ϨÄ|.T^„ŽNÓM¼rIÛ$O|r1ÈæIœÇ±ÉÚŽkÚ¨æ¹쨨©ý š|0ý©wè,v’Õ­‹¬}: È«SÃê|Šš«J$k#«€Ö) ë>Ž‘;;G5Z´1ÃSì]vìa™­‹Ê¹ó×ßmÛ«¤ˆè%rùWK_v·’¯•|N‰Êª®57”©jÙ9]±ÇV²ã yrŠçâËúÿ‰k¢«UåöéÎäOº'ßžsG¹™É_br9?šJ:Är*ÿº¡j·þuÿõÍwÓµ³á [V®š—?ªz[”‘­l´5Ž–Éߪ–6Nm¯—ÑñêZKY¿nÎGî·=ˆ‹,=R3¯®h<ýg/f(/1=Ÿ^v1Û}7ŽÂÂíÿ6³žË쪞K%1î iÈ:;ÌnìæŸ‡£{䭯樟ïj/û„›ƒj/BŽó#»y'áèØßù««ù¢/ûš«þã¾ÿßçàßÓú¯÷„é÷k.>ºç¨ÛßoGè}_/ðv9ý8îZ¿eµü~é·¾û~íÿ—.;~»ìU ¬ÜÌä­ ±9]þÌ••ˆÔOøÃ .WÊ¡¿þû0k®ÉÊîhæ6µ–è]ÏœVØÿî_ÓüK-Z//¿Bv¢ýÕ>ܺ¨ÿkg‰«cög?ªz¥”®lT4~–ÉЪ¶6ùc/¬"ÓT›_}–K8ÿ½ŒUXàéÛ.´ô~Ë“½X¾Uö'cÝ·×hë¬Îåù5ü~ªžæÆ^ò{&=¾ç]RtzQÒ±~­d¿åô阫'EËÙõŒ…ª©Ó‘©Ú@ò­™t¾6Z+k_j¶?›øê¦/b¤ó3²ÜŸÍ ÚŠæI4ÌwDšÉ#å{¤•ï’Gª¹òHå{Þåû¹Îr«œ«ýUUUO¡§?‰ïµ®ý~¥‘ÒZM±ts§WÙ-k˜}1‘±kTç)JŠÉ*çõŠÃFÊÓž5s'Ç`¨á*Ù‚Yjd—)]Ûƒ…Ñ8¼S™bu\…¶*9²LÄl9<£¢¯»Ó’/”|®‘ÍTG3‚ Ë30ZÐ]ûi_6µÇ¼lÄ”­h.ý´¯›ZãÞ6`ýïÛuyµ±ýãy$¥k~÷íº¼ÚØþñ¼’P­ß¶•ók\{ÆÌIJÖ‚ïÛJùµ®=ãfÏøÂÃqÜ#ˆí³lÆv¾¸(«sÌÚñSë«vÒ¶Yí ÜÓ"mN+qƒmë][–ýhlIq¨´Øî˜Ä¬­¦KNGt‘•‘Òk1Zß½ûn¯6¶?¼o$”lϸn;›ñ©­™6×À4ýy„Þ)²‹nÚW;=ÞáEšc­¦ÅmÐjMk´¯ñ_®ížY-Õk¯‰”U)vÈír>Ž:½f+Z ¿m+æÖ¸÷˜¿{öÝ^mlxÞI)Zß½ûn¯6¶?¼o$”kAwí¥|Ú×ñ³Rµ »öÒ¾mkxÙ€÷¿mÕæÖÇ÷ä’•­ûß¶êókcûÆòI@kAwí¥|Ú×ñ³Rµ »öÒ¾mkxÙ€÷¿mÕæÖÇ÷ä’•­ûß¶êókcûÆòI@V´~ÚWÍ­qï1%+Z ¿m+æÖ¸÷˜¿{öÝ^mlxÞI)Zß½ûn¯6¶?¼o$”V´~ÚWÍ­qï1%+Z ¿m+æÖ¸÷˜¿{öÝ^mlxÞI)Zß½ûn¯6¶?¼o$”¥8r©ÛvÊì³'Ü:W‡ÍkoºÉͳ7–C–QÙ+r(é.5VG£=<ò»}Ú›ÈW/5‰#ç·+vYWƒ[ÜáÜw ]ÛæÖ1æÉ)¶xX¢Àñ[žw¬¸”áÊ;m½ù…×FÝöå–ï‡Ãv¹QÙmÕ÷­}ÄVÐ[F¢ÇQz¸Û¬Òäøþ|Æ-·k•¦Ýv¼ÐV^m×Kx|†j÷¤)éâ–z‰öþµ†!ÒÍ4ÒævVEQ1ù%‘îk#sž÷#ZŠªˆW6~æá©¸~G…pÍÃnw« Í©-vÜ»3ÞœAPq ±]fµd|¥–V» Ò\6künÙp¿cöjË­eVµ¿åÁm†ÙoÉm–ÊÛÝ%ß]pLW?ËòZf²Ç3 £1¥ú—›e¿³Þ¯y-?äÍüÂ[­ &?OSt‹ò¦Áøé+©ãoà[â],IM$b9Uè‰3¶W;÷‰UÖ#Þ¬XW扻9QÒGŒDs^kÄÓ*ªl¯ì¢/omÒî»ìÔDdÎ~éÆ'Ëš±¹®cÞè"Ù ûÿ۶êÿ }ÍÞÖÇÿ²üßÿÞô2KÕLj_÷7¥ù¿ÁœöQ¼8­Ær½‹4ÛüBcù]¶ºhoÖl£`l{NCArrýZˆ®öëµÚžåK\®“êMl1Ϊþ›Ó›¹¯Ö;ˆ_77ª¿ÎEG"9ªŠÕDTTTTTTÝ<**yEO „UQQQQU6TT𨨾QQ|*/°êãÄ/€û›ÒüßàÇW!|ÜÞ—æÿ:Çq ãÆæõC7ùÁÖ;ˆ_77ª¿Î :¸ñ à>æô¿7ø1ÕLj_÷7¥ù¿ÁޱÜBøñ¹½PÍþpuŽâÇÍê†o󀮢®vÀ±S@ÇK3ÙUÉE]ÑUQåDE]šÔW9Wo£ZŠç/²"*¯„R ¨žê‰º¢&ë·—*5©þjªˆ‰îª¨‰åJÇ \퇱r;}¢·4v;~€âÃ9 wè,âÑÏ5Ö,îM•­™ø´³Gõ~¦Åıhÿ+é*^ú_’¬r¥zÄøW!|ÜÞ—æÿs9ê⟽ܱ¬³mq‹ävj—Q]ñü‹<ض[ݪ±ˆ×>’åj¹]i«èjX×5]TJÔsUXˆ¨R² ˆ6'ªq}ï”ÉÆN5£ózõµa{— ~í³jœ¾æ©rÛ±}‰qZlBÿ^¢¬rÑÚ¯uÚJ•XùA/B]Ó·ÞÝ;\¢owÝò™Üao?ÃÊW*6$ßy»3uðM²÷;[/uRG${~óŒ-Wʼ?Ñ5Ò.Û1¨®vÈ›‘ήæô¿7ø3:ؼñ7¬ò ~9zÓ&éYrÁ5vÀ†§À3›¥¾+NÙÖxŽÔ°Ûª*]Ó,WÛE3·Zr›wÓslù5ÞÒÚŠ¶Ñ%TØ/Xî!|xÜÞ¨fÿ8:Çq ãÆæõC7ùÀW!|ÜÞ—æÿ:¸ñ à>æô¿7ø1Ö;ˆ_77ª¿Î±ÜBøñ¹½PÍþpÕLj_÷7¥ù¿ÁŽ®æô¿7ø1ÕLj_÷7¥ù¿Áœý6ã⺷»æ”{SˆZ¼;»Ù1ûöYMœl‰ñ«%û%¦½Vã–K½ö+£ívÛ¾AGäUvKmeT5—Zk êzgŠ×\ø8±ÜBøñ¹½PÍþp/…T_ ›n‹îœš×·t÷NLs^›ûµÍrxTQúý<ÿúUEÿEEEü•=ÐuqâÀ}Íé~oðc«¾îoKóƒc¸…ñãsz¡›üàëÄ/›Õ ßç\x…ðsz_›üêãÄ/€û›ÒüßàÇXî!|xÜÞ¨fÿ8:Çq ãÆæõC7ùÀW!|ÜÞ—æÿsx× œGå9?ŒPèý³I[‘ÞíV:«ž·Î)-´ÕWzø-ôõ ¤ÇåZje¨d•u ‹ ’DýŠðc¸…ñãsz¡›üàëÄ/›Õ ßç9¼›…N#ñl Æ+´~Ù«­Ç/w[ eU³[çvÚš«E}E¾¢¢ßT¸üKSC4´ï’’¡bfÑȱ³¥ÑN«¾îoKóƒc¸…ñãsz¡›üàëÄ/›Õ ßç\x…ðsz_›üêãÄ/€û›ÒüßàÇXî!|xÜÞ¨fÿ8:Çq ãÆæõC7ùÀW!|ÜÞ—æÿ:¸ñ à>æô¿7ø1Ö;ˆ_77ª¿Î±ÜBøñ¹½PÍþpÕLj_÷7¥ù¿ÁŽ®æô¿7ø1Ö;ˆ_77ª¿Î±ÜBøñ¹½PÍþp:×\ñ7³2 †9eÓ&×YmÁ6ŽÀš§"À3›]¾[N¦ÖyvÔ¿[©ê[Ô¬·Û½ ¸ÚqkwÓko5m¢ÒêŠFÖ­T8/W!|ÜÞ—æÿ:Çq ãÆæõC7ùÁÖ;ˆ_77ª¿Î:¸ñ à>æô¿7ø1ÕLj_÷7¥ù¿ÁޱÜBøñ¹½PÍþpuŽâÇÍê†o󀮿ô¿7ø3,Í6ÚÚû.-±6/XM% |Øîi—lüZû Κ:Ûmd¶‹å‚á%ÂŽXªèjNÕÓIð>Hž×®'Ö;ˆ_77ª¿Î¢£“tTTÝStTTÝQStú¢¢¢§ÑQQ|¡2¢¦Û¢¦èŽMÓmÚäG5SôsU‹ì¨¨©áGW!|ÜÞ—æÿ:¸ñ à>æô¿7ø1Ö;ˆ_77ª¿Î±ÜBøñ¹½PÍþp‰ÕLj_÷7¥ù¿ÁŽ®;;œwj8•ô¸Ö‚6(`c;m†'²IÑZØ …­Vöf"#·bG%™§b&éÍÒ*Ìé'šG¾Iæ‘òJçʲM0NJÞŽª/âIü,0ª‰u~ˆà/¼Û¹§ä5xâÕxÝÏŠÊغ_…–Ñ|ÌvøfhÉÃÏ5Uþ+Š~Ú†·Ñqw±ñ/ºq¼JÛ†Z2Ê(-vLc&ÂqÛ­Fƒ\sŒ[ ÌŸx“(Äñ—rƪö.%^‘d¿±cyM®ØæåKJÆd·ÆÜ%‘¼›£œå­u¶Ò³×øK Ü~JŸ‘>vKüwi“5$FUšôk Ž™ŠÉ«ÎÎîskg²Ä¼g¬ë=ä· ®ìsán2F6%F+¤š)xÙã›f¿††#¨²N;õÌ›_nuªõÅìÝuØ4°Q×G°Û 4îÇÜø¾ =ÉR†ëM™^ð+=†²Ó[ΖïIpžÝPÕŠ©è¾WV-=±0-ÆÎ§È7ÍE׉­…Ä&%¹±>"sœ7iæÖMǧ²,šÿ“Y6N®µ%¶ÿƒçîóÅ*lvªÝyf¹bW5öÀû…ö‚šßpv²Û¸¦ßk…Ǭ¹ãì–þïù^O¤f²cx…žõ†ÞókíI“ÖO’Ûqú\-eÎím¤•(ó[®GCEFÙ­VêjKM]] ø~ÈÜ»lGb¥Ìn6FÚqu¼¿Æq 'ÖØmާ"¬†» ¯µáZãÅ1*+¥ò¢–.÷X,¬¹\©ívz*Ê©¨ìö¸)"ôG6›w¥6LÈœçq‘+—¿mÏF¹ÏvBÒ†Ý5VWcñtl²Iej¢r9Îtö¦bG]-Éæ†6w"|Q>Ó«×b=ZzGNù`²Æ¾em«tÜ…ÝÉ%À$÷Á”AÔ/â‚Ö:?ì>“‡^7°ë- ܟŨ5 ¹}ã†é£W-/å–KƾÑ÷<5YÎ(®tíM¿JR¹uƒøZ]uý«>âUwÖrËøN¹p¡›Ùø¯¹b7h¬»_Ô×…«bdz]'WQOWo«ÚÔ{­5=§Çïô®Ãòx¯ 8®±a÷ ÞCiÓ[¿û¦ûˆ×aWL²Š{]ÛÇ0ÝÚ,7¢Îòu¡ØÖ’ìêj›dd¸­•˜ö7MCßr»…¦*,g ü"Ñc–Jz ®.3¸†ó‡_ž[SƒhÊ>¬öùuÖ°Ÿ¹èÚÖMM¯sœ:|2LKfÚÒªµ÷ ëvE“+½UÝ)mWZ»œ÷+%žª„ˆŒTTU²Ó²iÅK{ªÚ‰ìÕÓ>õ‰!|od³ØÎP­-x&Ž%¿‡$Ùà§NYŠ©UVÞfži]Yû:ªÏ¦±VG±[ÞŠ¾&ãà»+]K[Z\tKfJûEüT±è¼s[Íf§1Ò'È·âQäîI½kgŽäyË="g2JH!/@mŬŒošÀo’ËYhÏHÐÖÚç͘fÿŒ ™é«Í­½ÿå+¶º-9ÝóbänBÆŠ+Õ2ŒlÏE]]£RçøP2×Um¦ýô/Õè´¥yÑæÖOªú¾8Ø‹^¦¶i<úªò[üjæÏÄô©HãÞlºq…SåÎyuŪJ¦ÞÉ-aödÓˆBIã§î¼Í£|íRn›6Se<1!=güBÿÖáüBÿÖáÌŸ´«_íµ|·Ý*'T~9vžªG{Þœá§ÉâáûNÒßâŠ>hI®áNÃ|z¸Û¶WÁe<>ÎÛø…þ ÿ­Â%˜Ïø…þ ÿ­ÇJµþÑûWË}Ò¡ÒuGã—iê¤w½éÎ|ž.´í-ñ(£æ„šîì7Ç«»e|SÃìDôŸñ üÿ[‡ñ üÿ[„K0~Ò­´~Õòßt¨tQøåÚz©ïzs†Ÿ'‹‡í;K|GŠ(ù¡&»…; ñêãnÙ_”ðû;oâø3þ·–`#?âø3þ·M*×ûGí_-÷J‡IÕŽ]§ª‘Þ÷§8iòx¸~Ó´·Äx¢šk¸S°ß®6í•ðYO±Ð FÄ/ðgýnÄ/ðgýn,ÀyÅÆŸ×ÿ'}!öq=E}ò·Œw.y©Ç¹<©û¯,ßÒM?A³Îÿ_I²žuRôöó©·›ñ üÿ[„K0Ÿñ üÿ[Ž&•ký£ö¯–û¥C¤êÇ.ÓÕHï{Óœ4ù<\?iÚ[âOÚv–øQóBMw vãÕÆÝ²¾ )áövßÄ/ðgýn,ÀFÄ/ðgýn8šU¯öÚ¾[î•“ª?»OU#½ïNpÓäñpý§ioˆñE4$×p§a¾=\mÛ+ಞb' @Œÿˆ_àÏúÜ?ˆ_àÏúÜ"Y€óö•ký£ö¯–û¥C¤êÇ.ÓÕHï{Óœ4ù<\?iÚ[âÎ'£È¯£ÞQ¶ñƒ®åÏ58÷'•?oõå›úI§è6yßëé6SΪ^žÞu6ócÁÑÐFÄ/ðgýnÄ/ðgýn,ÀyûJµþÑûWË}Ò¡ÒuGã—iê¤w½éÎ|ž.´í-ñ(£æ„šîì7Ç«»e|SÃìí¿ˆ_àÏúÜ"Y€Œÿˆ_àÏúÜq4«_íµ|·Ý*'T~9vžªG{Þœá§ÉâáûNÒßâŠ>hI®áNÃ|z¸Û¶WÁe<>ÄO@ÿ¿ÁŸõ¸¿ÁŸõ¸D³çí*×ûGí_-÷J‡IÕŽ]§ª‘Þ÷§8iòx¸~Ó´·Äx¢šk¸S°ß®6í•ðYO³¶þ!ƒ?ëp‰f3þ!ƒ?ëqÄÒ­´~Õòßt¨tQøåÚz©ïzs†Ÿ'‹‡í;K|GŠ(ù¡&»…; ñêãnÙ_”ðû=güBÿÖáüBÿÖáÌœ\aÉýòwÒgÑäWÑï(ÛxÁ×rçšœ{“ÊŸ·úòÍý$Óô<ïõô›)çU/Oo:›y±á¨ÿ¿ÁŸõ¸D³ÿ¿ÁŸõ¸âiV¿Ú?jùoºT:N¨ürí=TŽ÷½9ÃO“ÅÃö¥¾#Å|Г]†øõq·l¯‚Êx}ˆž3þ!ƒ?ëpþ!ƒ?ëp‰fÏÚU¯öÚ¾[î•“ª?»OU#½ïNpÓäñpý§ioˆñE4$×p§a¾=\mÛ+ಞgmüBÿÖáÌgüBÿÖ㉥Zÿhý«å¾éPé:£ñË´õR;Þôç >OÚv–øQóBMw vãÕÆÝ²¾ )áö"zÏø…þ ÿ­Ãø…þ ÿ­Â%˜?iV¿Ú?jùoºT:N¨ürí=TŽ÷½9ÃO“ÅÃö¥¾#Å|Г]†øõq·l¯‚Êx}·ñ üÿ[„K0Ÿñ üÿ[Œ»Œ9?¯þNúCìâz<Šú=åo:î\óSrySöÿ^Y¿¤š~ƒgþ¾“e<ê¥éíçSo6<=güBÿÖáüBÿÖáÌŸ´«_íµ|·Ý*'T~9vžªG{Þœá§ÉâáûNÒßâŠ>hI®áNÃ|z¸Û¶WÁe<>ÎÛø…þ ÿ­Â%˜Ïø…þ ÿ­ÇJµþÑûWË}Ò¡ÒuGã—iê¤w½éÎ|ž.´í-ñ(£æ„šîì7Ç«»e|SÃìDôŸñ üÿ[‡ñ üÿ[„K0~Ò­´~Õòßt¨tQøåÚz©ïzs†Ÿ'‹‡í;K|GŠ(ù¡&»…; ñêãnÙ_”ðû;oâø3þ·–`#?âø3þ·M*×ûGí_-÷J‡IÕŽ]§ª‘Þ÷§8iòx¸~Ó´·Äx¢šk¸S°ß®6í•ðYO±Ð FÄ/ðgýnÄ/ðgýn,ÀyÅÆŸ×ÿ'}!öq=E}ò·Œw.y©Ç¹<©û¯,ßÒM?A³Îÿ_I²žuRôöó©·›ñ üÿ[„K0Ÿñ üÿ[Ž&•ký£ö¯–û¥C¤êÇ.ÓÕHï{Óœ4ù<\?iÚ[âOÚv–øQóBMw vãÕÆÝ²¾ )áövßÄ/ðgýn,ÀFÄ/ðgýn8šU¯öÚ¾[î•“ª?»OU#½ïNpÓäñpý§ioˆñE4$×p§a¾=\mÛ+ಞb' @Œÿˆ_àÏúÜ?ˆ_àÏúÜ"Y€óö•ký£ö¯–û¥C¤êÇ.ÓÕHï{Óœ4ù<\?iÚ[â߀ˆ€ˆ€ˆ€‰Í×*ª¿|n!´OÉì’–ùþÛ+gÜì³^‡ºK¸õTSÁËÞÙW zhãÓ×ÈžŸoHˆ€ˆ€ˆ€ˆ9ºåBµQ÷ïÄ6‰ù=’Rß?Ûelû–kÐ÷IwªŠx9{Û!êá/MzzùÓíñ鈀ˆ€ˆ€ˆœÝr¡Z¨û÷ÆâDüžÉ)oŸí²¶}ÎË5è{¤»UE<½íõp—¦Ž==|‰éöøô€€ˆ€ˆ€ˆ‚Ké;ï-ù´æOÓ…hI}'}å¿6œÉúpD­ " " " " " ’úNûË~m9“ôáZgHÇ‘º°äOš_Þ{×RܵðWÖ>ãŽb{U)ê{Ì-c³Ó°žqÙyH÷ÊúÉ»{¯£¯¯ã¢%æI}'}å¿6œÉúp§çb½öfÜ¥aýâ*F+Ýàž{|äW¸4Y§¹C?ôÖìeXúÝÔsÏI^ÙÚH­éïäòæ6èb­ðš¯>U~Gj·{7U|ÎÛäwyµJùÜA8î&¦;vó}oCE{t¼­ÒE?.|žl¢[ÀI}'}å¿6œÉúp­ /¤ï¼·æÓ™?N• D@D’½Qj¼•U”¥]býê³5Øûœg}#Üût‹9f_çb^0GÑ`ÑÇùwizž—¤¯¨‚Š'¾bÓ¦ cÇò|ZÖ‘éQ&gÒ³ÉA|–ß¿s8‚,[¤ûÜÔŸÞe*1¬´íIžÞ›fùÝEvS±ŠŽ̨ü'ÌeØw×[çÅÁâß•xÂ*ùµ¦»ÿPñ¶¾ô&á_q&{Euå)ùœQ[C}‰[/‰ µŒ­çï¥ñ8 }vþDŽÏØz÷½ƒߦ S‘â½é44,9µ%ò[~<“û6U¦_û¦'ñ3·‹u”OµÚG,¿{ÏÛùñ®ØHtÃÁ²´82GõéyG³0PŸ%·¥ØÉH¨ñWŽ}ÉôåÜúÛÈ;ÛÑxýÃtýo’Ó ¥6Æ_Ò>J9úŒ)ä·#ô·Yx¡]†½ª¿õˆÈ=¢¤~0²f®·²Õå­j–«±å¿Û«ú¼þß±ÚŸûH}?²Hã’7°`“0ðm’¡R¡MQûÚ2[Ub¾Komíy—_¹Ï|Ò} 'ÝÂß¿þ¢ñæÿ•KOÝ5Úµb—]‡ªVXûl#"Xw/vŒ›ëåEêAç«ù5û=G.V[o÷ÝM³öš[iàëÌÇr<¶­‡^„z6ðØðf\+e£&”×G=ÉZúï¤Pú1UÓ–Ë-ª­û”ºü©´·N•ªø‚ ØÌÞ]!âj@Ào"H•^ÈiUSA%VWlh’)çý´M=s¾ûgÃíð×\g9ðÿôy•Ñgí¿õׯüÓÃ9F-ѯ&Yyê³β\Üɧ$×Õá‹‚‡ 9càg¼rÅ«¼£c«Ë¥^^¯ÊÖ‰¸ E>´ÀFèñâqžƒòV­w£Úª—jܾ©7ù¤ÝjÓ`¯Ë³Â;-ÛJCK6wý¶I5}m–K '¢ž_6šçåïöÚ(&ÿéðgÖ=g…è¶+÷R:¼ä[ºñèBÑ.“]ânoæiÔ+S|ˆÆ§`™q–pPÙe\J]”«[¦É¢i²iþ2|ì¦îZÛØŒügŽà€W·‘¿£åµP-ÇéF$z>;’°ÖZÚ)ÔŠ• ·¡ìËÇ®dóÙ¿õ^5|œ ø[Žätš¹5†¾Úkò{¥iebû.§ýs×QÕN}ÅôÝØ¸¸òÿ:ÛסðŸD¼lÎjï`ˆwc²J¼|çUQ®P¨5x÷ö¾B¹ºlí6º7ŽŸµKÖjóÔ[dQÙÊi$ãd“Ë„[w¤¶tÆUM ÙEÒÓ6©­»fû«¦1¾È%²ž¾\¦''¿õô«›2n¢§û"ùŽÍÅm]ﺱ͹N{¨zÃ^KöuÑ4w™Ó[ÓЕU¾š8Ì_gëi¢ i®`¾¶¸×¦ž›ÿiº¼ú·GH~Ï®`å^øÓö£¤Ú§H_†iýYF-1géBýoËè§Ï‘€ŒŸ°Ñ云iµ~¶‹û/Í[_ϹŸ·×Þ_Uóp™®j¾Nsg!GËU‹m|{äçö~˖Ϫí·Ws­Ìê©úƒ–âx75ç¶ÞZK-­©åtç/m|OÅlJ•Éȧ#Ãq¿¨/½øÙIÅÇr©hȵYeœÉr~nöQÇÕþ˜9+¨š÷ò·Ðy.;ZÕSœ¦Óãþ1äÕ%RZ÷2*ÊVa‡Z*Ñ¢µy›„K×\q-‡’ÑÉx©Š£Å«ÖUiÑ·: ðcÿRaÿdo,Ìб³;õS•ºKšáe`µÂR 97©Ž&Òš¥_ µÂˆÉ%ê*œf#ñª˜Ól¦ß\ùsï9UäÍ¦Æ ç›œÝÆ+õÒÙžž+€å*kµ5¥¼ÎŒïRt«Žœ?÷]m·X„ö+ÕñèÁMÍP°=ɤjÝžë|Aú ©£+gµüžÍ«Éª”¦ªj¨0I}'}å¿6œÉúp­ /¤ï¼·æÓ™?N• D@D@D@D@D@DgHöʳ«TtöÖZû‹toT¼¿+#VBf9k|ZûUtBIì"nv“jÁmœ¶Õ'‹µMº›8C)œªž6´È³¤zY­ª;ƒjÕ}½ºKª^_Š‘´¡ ŽB- ª»¡öm6Úɺ`ŽÍ›l“5Ý(Ý=›¡ÆRO:¢Z`>Dý~× '[´BDY+³LÖ™Ÿe1 ,ÁƾEØÉÅÈ¢å‹ökéû«6t‚¨«¯îï¦ØûÛ“ºágÝ uÒ7MTé.·Ï\YÈœjáçpuN©^W‘«rÕ¹+:¼wA{ÆL'äš#2íâIo7³‡yÆË¼Î»«®÷ Õ£-ÊAM"‹Ê3VÖÒºÔî…]«WfuRÝ+Êe•ÛeVgµ§ÉzêÌYUÅ:®®DpÈ¥U'ÇîQâݯ©"sJÌù1~Ÿù!„ÜLQ½/¿u/秊yǵùl5¬T9"d­ûÚÒ8Ó”kéö ,j>‹‘e[µDÉæ~«ã=ƒ¾‘ºUšã›gÏô½Ó¤ò5[÷$qƒ¾ã™N9»ßÞ»o'!q¶TžÕu¯Û,î%[7|­žzÄÓ§m›½]}\§¦t¢Ák±°Úl ÿ5¶Üà¢uå}´_r  SnŒÙô¶uë:ê¤i®¤ÐöÙeÖ¹Ó5tùV˜é¦Š»’•çKëÎK3kh«VªRö&óN›i{¢ˆ‘¯%tqEåk?OЖú¼N]1Øë<•ƼO­³€«ÉòÅ!­8ÞbÈÕ†!›Qø“GÎQ8þ!» îÈÃÙå_lZ"K(äÞ.¥˜‹4ß²ß&,ÖëÒ´¥ú®bK[¢Ê³æ¡®°µŸM—&`Ã>\õןí*ƒ^zqÔ…Z²gk¬§5JZè®ÝoZ*|útÞTÛ¢çpŒ”@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@DþWïØÅ±y'&ñ¤tlsGä$¸E› Y£»‡o;qºh5hÕÔ]Ã…ÔÑÓuUß]5ÛlHÎÂY¢º‰­ÌÅX 亰æe£¦a$ZKE?GU+él«) 8hé-UMD¶Q”× '¾™Ï›]±Šýû2Œ^FI³i#"Ñà ÷íÑxÅûˆîÝÛ7h¢š:AEpÝt÷EtwÝ%tÛM¶×2FpP•˜®¢`«pÑUø8Þ¬9™èhHæ‘1LÙJú»$Ê9‚-Ú5KeTQ]“AõÊŠo¾qæÛlåÉ€ˆ€ˆ€ˆ€ˆ€ˆ‚Ké;ï-ù´æOÓ…hI}'}å¿6œÉúpD­ " " " " " " " " " " " " " " " " " " " " " " /¤ï¼·æÓ™?N¡%ô÷–üÚs'éÁ´€ˆ€ˆ€ˆ€ˆ€ˆ‚ éýßr7Vwð»û?eê[–§~tú¹ÛñÌ·t¥=?f…³÷›÷óÍûß;¨îÅ/E6võ¶ô<7¼É/¤ï¼·æÓ™?N• D@Dø¶¯C¼˜ö™©ÎÏ·ÿK¯0÷9‡]äÿ“eê¡ëú¿pãü]}6¨®·ïz~\æ?Lßô£š?ì_ü¡´§KX‚–üc®ˆøÕû=Ÿ}“ßã¡×úÿs{5øª¬®œTåË >ªÚ:BªxV¤ˆfò>Ï—_€&uVä?”Iæ3àÜ‹]ðl«Ÿp´Ö}¢3>–ÉëÛáßzãÅÊž§™$½?ßÕ53æÇ—íýv^HøÜ²±_ä™ÿI$÷*Õ[Ýb”õ“žšO;ä<ê¥ãä_OOš˜Î¾9ðñ4cÂß›ïòïÏã_Çþ>=õþûüÌýF¨6ÇþÇÇâ3}]Þ¬ì“æñó>»xûîbÿLßô£š?ì_ü¡©ÁÊûÜS)_m•ˆïRʾÛ8ϰ–ià¦éúoYúŠú çÉçÆž¦þ)í¦Þ?½áª ¢X¤—·äz§Güö¿ýH鿨«›Ò¸nÙþªÛü—¢<ܬñ-~ÓüéþÌ^‰ù·‚¿dOt©Õýk©>œ¹OŒçùïhú/õ% BºrEÛ’¹Rù}ã©ü©Ò×3¼Ÿr¤4dߨæ³;i‡¤ªéy>Cƒ™«V÷xÍM†‹y­M]—Y“ŠãÆ”²ã³^úy:xþü®Bê%k•mËS]ÆŒÚ.´Ój%¸øüâÄ¥¯çë:,è0LÙøžJÔ·o~c> µµz,U­,qrüš²æ4z3Ô÷SVY~¶zcýœüY8ö©fæ=ä>£ùîû ¶Z)]7q“öU†ÐT§{'¾aíœÅÉ2ÑôÍm­ü$ê«”uXÛ‚Õ™è‹%ûV8ª³Ô7)ô†û§Î§Ðꋦ8f­ÆOà]lœý^ægó, 9‚]Kõ’wºJ>³a±r•¦Âþ²â‡6½•ªR±¯ãÑ#8S™øö¤þÍn©¹Úàß“öäÙÙ=û89³˜#{} [uAWµÇó$<¬Ó–è²hÃ^`²Eßêðn¶eƒ›”[ âÚLOÃÆ-üýiôíׯ)sUsöŽðÚ`ú¢èÛ™ øÏ¦þœ¥¯]:Ä!Ô—H¶=›Gõô~G•V sÊ{N¿ãØû=·YN7OŒª² ©¬íW[FnüTgÓÄÒ4}fK9^Ž{]HÊ*j¿RÛÄa¶–!Ý+ÏÿNêl•ü–Ó|Ÿ-ú³'®Ói·UÙí¯’zêjN3†»ƒ¢÷øþK4p¹¹.B«•Å ëw#_ê.¾‰w ù›ªŠžlyü¸·‰/¤ï¼·æÓ™?N• D@D@D@D@D@D_Ißyoͧ2~œ+BKé;ï-ù´æOÓ‚%haüßÓ'M½MEAÁu#Óçõ Xs-Z‡æþ'¡ò¼UzQã|3w%|€Ÿi 馺µrñ‚-Ü®ß\ ª›%Œjn‹*°é•XV€ 20tncÉU”þU€aÑÌ«2žÕŠ’IRA*êQױצV*ÃðÊH=‚DÍáŽ!gÅìxF?Œ(1<;X†âØZ”-½”6††©Å1g  £V«B¶‰dÍ8‡ ¸ÃUÛ ¢z2(èÝO*e4M2ªª®®tOLi®T]}Ô]e<ºãΪÊ(ª›xî¦ûï¶vÏíŒÌìîÌÌö7ŒÄ–±þãæìI,ݳ&$ýÍïÙUUTEUT©JÖªZÔ„QG¤R+@B€D}£®_ZMK[м…ñè½ï WôªbÔ³]œoYÑödö€bý|(¼tC™/NAô{ ›6‘|Ý£·é¹]“Eê"=£Ò¯—ŠA|ì{_¡øvØö7_Õc»žÙ‰2þKsxùå¼Qk^ÏäøÖˆ‹ßáTtª@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@DA%ô÷–üÚs'é´$¾“¾òß›Ndý8"V€A })}#uaîú$úËr×Ç;‘}#|ŸÔ§÷¾õÜÃ>Ãé{kØÿ¨z—«û¾¹y’_Ißyoͧ2~œ+@ˆ€ˆ€ˆ€ˆ€ˆ€ˆ€ˆ€ˆ€ˆ€ˆ€ˆ€ˆ€ˆ€ˆ€ˆ€ˆ€ˆ€ˆ€ˆ€ˆ€ˆ€ˆŸ*wÞý’gã>ÕòOj‘øÿ¾÷~Éï}¢ÞÓï>ßþÚ»þßÜ{/ó}§­Ûä#n†>oñ^|úHø¯Íþµ|Ïò„{¿Å{Îâ Óöo~ÿWí»^ßÏß‹ÜzÞ_ðü…¼I}'}å¿6œÉúpD­ " " " " ">\Ìä%u–d¬PQØrÍžd&dF2ùI1`×.ž¬‚rùêè3f‡©ê¹t²MÑ×uTÓMŸÈÉ!@þK1 ª?Éf =’@ÌþOúvOþ€“üÜú„—ÒwÞ[óiÌŸ§ Ð’úNûË~m9“ôà‰Z@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D_Ißyoͧ2~œ+BKé;ï-ù´æOÓ‚%hý¢.JueÅ\[DÌV÷®>§õ Æü£Í|½ƒÈÞ¢ø–¨ÎÎÖs‡æº}'ârj·|ÅVÛ Â›t¡°©Zdc!¦É4Ä:ÊýŸï&:êo§N†jtŽ%ß™8&ÿÇq?:qЇhúÕW{Ïjt’5n²G¼sªÙZ“Ò‘h_.Ú[£vò2óVõ¤t“N.üi×u×^k–[óäÉŽÊ­uQóÓñc¥«Mï†ß+*(JøÛ]Í^Ì{zf©«:X]©QFÍ[«qXañÜnÙzÙ}›­§âª×u¢‘XòS‰ºKúV䮣¹#ë3ÕÇvýXrJâŽfø¯ì›Ö÷õU¾7#ê«/áä›ß¾×¿Ó9×Á/Ö²Ké;ï-ù´æOÓ†ÕnÌljÀÛSSañFò­Ê–_½Xʯ±Ó½ْϦü®l¡þ7*P·Š7ÚJ±:°üªžúï×ç¢gô)Ò·©jŧëÕfž’}ñÄùƒËUϧ®šöyˆøî|X©äó*߸ýý¶ß>|xýŸe§MÝ­ƒ{ÓßRŽ|ë=WÙò—­_×¼At=-#}‹_Zúþ³-=lú ¢‚ž;ú~\Ò`Ý£šäó%õѧÁ4ñÍÄÞ¿vóãØx¶~Þ¦+Øõò¡[ÇñgrË÷jÒikíó9î]Ÿ ×Âä=«ýˆ¡º#ú[ÉOò¦Jpý+{E‘KÖ?ªÉOQwë{ Ç0wµ½;ü-I8¿Ž¥åAŸ­âÁ?_=¾RG>;ù>ß·Ç}8}[3kúyêJóâÒI§Æ¹”~MSǹ'”ûœCû/l<|ñ«w?åTÆ6ò©áàR ¤ò[XØMÝ›h«5Ÿ·WÝE&ÃZz¯×‰±Ï’ôçËîcÐêÛ9]öÖõY’8`ËñR; :aÚÖìàŽ¿Ž¤±Òß´>~÷ëÕ<Ÿ¼Oi/˽ë&^º‰)îlüy.Þ]Kȃß>þšj+¯§·ŸÇÉÒ±µœmõ”êÊcß"׌î'yÜDzɪŸ¸A«ñÄ}¾Q/W΃¿*Þš‰¥·§Ÿ'†k Y«—ävÝ«F%ÛZ—Ôÿ òµ £ã]H©àÀ«T ø`G©Šy=Ùꮊoðª•ñ­~:[ÅÇ“VÌöÄŸ÷'ŠŸO©]*NCÙ~gÞ7äÖÎK÷›mOÐÚGnþ—3ì­½ŠIopðpë¶uêjÆ;ž½·ïò‘ý(û| ÔÖS«'¾õ³M½æC˜û™èžÕ]TòÂÈüsNÃW>_MÞ=}d¶ÛO||JÈÑÌrZ‰7éù |¶ðп~*óU”ý•/ÿy3¯_‡øû°;;–…õçkZ›|ûÛOÇ[y=ŒÌíӣ컗 ;ô©N;¥onyõê±÷y Œ‡¼Èòÿu<×ÑÂ8ì™ÈüwOB=_GÅfÞŽÞ|ª¾|øõ>Ïîé“Ü*­ê¿XN§™vòkIüŽ?–;kRþ®‰éíî&=ƒV1/'¾¾M÷SoS>o SÀæùEÏfA«¬öîNIëøsýÛkJëK¼Í^cÅ*EøÃ Of²I' »Si¯[[ÞŠª4%ž˜±+à!ì»}ÅK{ô}¤ÕúQõë,«_YN¬‘ì¤TùÇéÙúš¸×±{+ñÌúñÉ÷dÛzyvA¾|ùô¼6ééÓÖ¢@Q~ºŽKØd¥$~b'ù/s^éœç°Ÿ°û}Æ6;ÇÂ-¯fiŒc¢ž f湟ŽÚtÛ²·øs¿Ž‹ÒÚí³ÆÊ™O’]`ðe5¯—j …#:wëÙ_âߒ¾Ôøüu'´=¯ºÑ[Ñÿ~ÿžä›-Ò‡»E@E}e:³ö£îQ<ÇÙËMw[7ÛÕŸyñÅ=ÅvÝ¿•¢žš>Ž«¸Ç†Þ§îþÉ~•=Ýò?Y«£>>Á¬G0öKMúGå…OŽ«îOÖô|Wqੲ«gÉ?ÙWª¹=Ô¾{*¿ÅòÝ~ŠÇKx]¡î~š²ͬsâá•{é@\Ü¿ êèÚ;W_µë®»= ƒþ䦓Ùyþa±p=šËr­§Qãúg q¦³cu-Èu =U¦Ý[:EÞ“— Ö¶ÚNyôrñèAr¥]šæIÔƒ…´O¡Ÿú¯Í÷×þ,ü9Α*tË0}>“èøä*ŒLÓ³Ž/²ÈïI·íƒfÎåR{DJÎÏ–°œ ḲNjV¦ºSË·[k6ùÜyµÓÆs•dÇš®C:àÑNm–Zÿò¼.\9¹ 沺lËg$—dåœVtã²ý÷®]JÕ_ƒ9nC-g-ZYk©™Ð5’ç{È傱tÀ(ízñfäêUO‰µv×ä¶Ë/tãWŶgÞ]6ò§„ý«vͽûxz›'åÛÅLço7Ûàq.8¸p»¥.bC×YU½÷oIº>®ûoé Ÿ¶m颟›È–žlù4ƺøçÃÄØçÍ2ªíS¿äÞ»üû³ÿä™e|žê®ºô¿ÆÛü~Wø©>~¥ûMeW¡ÿˆÿ=Ìi>ôÔMO¥NeSɾ»ù¼y“ß˶6ò)¯µãͦÞkãsœxãÄîí•o–2lËävª×l뻺œ¿³=_Á%Ríܯ۹õZçÔõr“_ñ“K7îxgªQR« N•úòMï¯Ç²{þ‹9MÖÛMÖ_ånrÆ–ø©À ö­a[°õë¯]L_ègþ«óGýõÿ‹;:…+â;?Ûå·k?«m|¶ùïzÕ—m•óâãnÛg¿ƒœþÿ«„PÇîúojg¥2§L;èù1ü‚¢Ä~ þ$¯å¹ 5=7hó©úò_Š•ïѹ+V2ƒèÇG×bdÒœOîrOä¾’¹j;¿xáßarí#Y÷ î¯jÁ¯¶©Û³CÍé·GÔßÒK]tómáãŸàúÿªüÑÿ}âÍ 9h$’žÉìýÏù?þÒÅæ¹4UEÓÒª…Qðç=Ù¨“Ð’Iÿ3˜Ÿ¬ûôP ³ÃzYiŸw€–öéÅ;]|¾ Èvëyðçþgxôqëoöþïû÷ÐÏýWæûëÿm“ÑU‡ÉÓ²ù0ô?Ñœü¦ì¨k¢ÿgkø©nݺò=½l}ô=Ðþàjt/‰½r÷æ—ë/r×-{KeÞY!â²J÷ ìÛzN±éúX[Ï·øJ+§—÷üqóg¸ÃߥÞK}!òŒ7yº{ûd ·Û¢úh$‡•›/o[ÐÑOKÖS¦ÞeÔUOyü1¨ðTPWáöòÉ¿>Ç}÷ßò}wÔOrè}Bþ¯zÅMgÅO´H__€ö«ì(>¿>ÌÅþ†ê¿4ß_ø³D€}Žî*mfËJÔØÃ7–ÚMe\Ëúošo¼séj"Ž’Iªêîílš®s®ÞESQ=:CÏú7?ëŸ÷Ó¸‹msãöj‹Ž$¸cm1ö×Ö~ß™Uφ<Ê(ŒFsá(™Ê5h½‹]„–$+ö©×l}›MjÓþÆÚ_§–MUj½¬·>;µä­RšÃÙª·@rµ©*œzì¸A/ROe[c3‹`ÜJÆZФ(ÊÜmÎÒ´Þu¯Ö=Ñ )*Ö)ZÕEvQ²Ou6“¯DGY”ráÒËm)0ï}TË}PI=’uYT æVj“ÙÄb¤U†fºº ƒ¹TÚ-¼sU—W:¤ŠK¼Â)(ª›k¢zo÷Î5×9>'UñG Ò)˜W×ø•F¹Z˸ڜfî6Û8ÆwÝ}Ûl¶ûçmöß;mûÙÉC©{êì1®´±Ï²å-X¬úè1 -ô{Èöêç½3ñ{¼¡«^œÙ×µ®Ë†$§[ìQä¬Ô¥·>¬_°ÖÊâ–ƒò­MTókàž1¯—>'v¢ †°ŸcHòoduÑï¾ÿø0ÜžæÐššþï­ hÿ#¤o.Lj¯À÷äÞÊ“ïóèL_ègþ«óGýõÿ‹4ågãêÃü‚Ï;êªá_t±Ë{¤Â}Âz'é¤÷·CÈ’O;}=,úJo¾Þ;y¼1Óƒ)EU·’/G®»òcèÿì‘üFŽSvªÅWßò ep¿+÷/~'´­O®Ï®ú?Ș¿ÐÏýWæûëÿdwûtƒ¤Î\}ؼj󲑹÷Qï;Uô_µ|ÛÛtî¸òz.óé꡾éùµóxã\Z'°{sþGÿ´¹¹¾M••´ö¬ ‘ðç‚:#±P#°sŒ·Ó~]ˆü|ªçXöüºÏBsÙr÷ºÃ|xHgµsÜá¿oâ×¹èåwóz¿»Å} ÿÕ~hÿ¾¿ñfÐ >z]‹2vǮϓÀz àâWG+¿5IEøTž^+ñRÝy1vûž¶cÛ1>É뾇®„äêUO‰µv×ä¶Ë/tãWŶgÞ]6ò§„ý«vͽûxz›'åÛÅLço7Ûàf6Ž=…­ÄX®Neåzýv6^Ë?&âù«8˜HX¶®%%/¾Ñ™Õ¬tkp®ÛmPlŽÙÎs|MèŸyž×öÏÆî¡~CžU¾°¾W,)aÜCªSÝoÈ–ihÍÒQ xµ¬–.6ãE#\c-Ö’å¥]&³§ž· Ã'/ÈfÄiºÌõW³~ÁžÊ«Ñ_ÅãÑÊò÷ÐÚ,JZìüf=z*K‹µ­C35_vv¿J^íµv5TÁììUH+ñ°QäáIEgñÜÈ8û‚žrtGó[îhë„æßH¾ïÅ2ܸݳ æÃÄKkR²Áµ®e.ëM|Úãðõmv’VQ²o6GÒÛ]^ÇÓÇÈ®«]>œúŠ‚õ¥4”øs“}®”—‘ Pöä`}‘$^þ_YFÖ|Ëí²ž¦<| (Vóš–Ý£^?º.Ã^ ¡sqvZ¶Uth­ôZ(Dª±ªÇ:íøüì´»¹8}û-³=×_ò_•‹ÕgÇRucü—]ø²²à )´é[´µojúÇõXçÎùëïŽ;æZ«¯{«{=!þ;¯•‹O_ÌÉ¿qŸCdPÏŸOÃn’ÓÏÀ®›Üþœº‰ºyÔ‘Sâ—þLù/OqIÒ^M ½‘Ÿ•6=ש¯užÙVÍwñßÑðÚˆªr»ÐØËFÜMǹø©>XÚ»jj}Ö@_uhòì?aHü–Ý55ÝçS²³/ÇRöÊêê|’µaÓ"žõÑ ± Òß³ØX>±}SÊwÝÿú$Ï.÷Õö}úÞ·ùß%Ûöý&ãoÛ£ûŸ¿þçò×:Qøê²*ýe:²÷·1ž˜ýÍ&=ÆÉíîÚ|qÖQOÊÝߎþ–ª+Oo?ÙX‚6ò[ommÞM­jMã¥~E¥™ê-`'‹;Ð)núb@Xœ¿!Z¢&Ž–°ÅAñf¢O ?$™5CôÛí¶H_§Î¥e>G¤g»LrŸ{5äÕm}¶ÿØ’ö¹=ýoÝúKù¶Iúxò}¿ ¥h‹ŸŒúÊue)ïÍ›¶÷ Žcïe!{~ãüxKÛœ­Ü˜WÓ[Ôôþî¾—ïV@¿g7ÉòÝ~½?5ºV¹¾õùœ_ÓªE_‹á¯úB‡ñýÏ>Ûºrï׎¿‹5¿~nþ?o÷Yýg»›ßøï¡ü&zÇM_¯[+ÿOýLX>VÙ“o{³ò¯»Xk}“ö¯ûŠœ—°·öw.û^Í꾋Ÿ]ƒ‡Müºz¾}~nzXñ€“úÇuWsFCÞ±ËþñþŽ­uì£$~=þR=^×̳oEOSw³çÇ«á­T 75ɵ ˜éî†ßW&Éðç÷ºš«¦«ü…^cƺ«_ˆ7ÂÞ=µe‹…Ý©t¾Å·­OÀÖxV{«È7‡CXöò ×õu$Üt£áXÍgë)Õ–|e=Ïä9æ?øŸáa/oÄ·Ç>È¿³Ôí;þ®s¿©öø[þžûþ3ˆã_§¡Ù{DÂ’ÿ?aÉ}·&Iùôw§µËÚ½—~öNïÏ£.Á/.íšmêçÑðÚ‡*æ9<þ->>zS~Í Ýï[ÔÖ}Õ»®Ç_Òû 3~ýz–ºß3C‹*?kàêA¤E ÑPznǯbI¯ºQïkÐõÿ¬§VM=gk{Û.cíì2ÚË-éLÉ|s~ùÞ·¤ÓOA/E‘ÓÇo'Ž©ßK]Û û¬gU ¾>ÙÛnñ§.ú/æû¼¶ÿ1`qñí½ÉË^Ûü¢¾D}]ÏîíêþíP gåù ·çÓŸGÇvMWmÎÿ ñêÑòüÖø½LçóYö:µkåö¢ô½NîOvЬ¦Ûüêµ>;ã¥|“ÐñòZÕ‡à{Rû’'+tô¨Þ¢‡Ös«Î7ø” (/[Šy£áî,Ý“Tû͹OHûÔó¿C¹{#åmëºYu½=O.9^ƒ©ÿ¥ó3å7·Çz£æï•òßÉ.“¾žõýûëïjËÜäwóùTuÚ¡æÓM5òcËã›”’úNûË~m9“ôá¯~Í:•Vû<Õ,ºÕ¯Vh°ÙsvФù¹-Ñ%Wð¡G©Eš¯¶š¨wòª¢¤ñAâ|y Ý/¯¹“ïÜ­¬×€ˆ€ˆ€ˆ€ˆ€ˆ‚Ké;ï-ù´æOÓ…hE#Û*ά}QÓÛYkî-ѽRòü¬Y ˜å¬qñkíUÑ '°‰¹ÚM«¶rÛTž.Õ6êlá h¦rªxÙÓ€ˆ€ˆ€ˆŸó8ÆqœgÇÃ8Î3áœëŸ ãÃìÛ\ãlgÿÖqœgûqœdź|äÈ.‡©òÒÏ¥-Ô™;5) lœ£)y>C§Õ¬rÜ{ÈÓ/ºq¾,×zZå‚âÙêl5¸½Ÿo«\²M›§[QËTäjýAGrâˆzUÓZñO BX&bâRé uBKƒd* ÖGx¬Éï›Ï+Ö¬m2圭—yº-¶}šËVYôC&¼· öc¡ôŒü¶;¯ÉeÚnßÂѼWÅçÕU¡ò/#“Üú“o%Ÿ‰Ìé@a³=V}¯]1ºØ°§nT¸£"ÿ+âc{#Äï€ÏË`" " " úßX’–´ñ}Š+-´Þ£j—q9••Ù%\ÕæéˆWl[gTÔŠ|ÍR[twôõSH|ø+®úë´ƒå)Kßgjyñ³ATlIz¹Ã©Hx·2LØl‹K}$k£ó¶™ÛM\eDü×Lâ«‚ül\1Züm騚XZ½äù õüþ?™½Æ›¾¶š³µIn¯“kɪò> Œ(¢½Û€JX¨¼ò0|ÒQƒ)6 è匋FÏ™9O>)¸hí6_Lýž:*Šš)®ù×lÖZ#°{Ø#ðGùšL¬¬UVRU• ¬D}‚¢°} ˆ€ˆ€ˆ€ˆ€ˆ€ˆ€‰žr%–N*k=ÄÕ»ê5¦š¸G×OxÍ^ïc¹kª~ms…ñA¯ZÔj¶3þUΈºÎ»ê†tÛC1Ë/úÏ5q„.ÅiT¬ßù Î5ûrÎqM è5ÕÇûk‡ð¶îBѱãœå‚úøxg962šÉk/$’ÖµÛÒÖŽHÿì^ÆV?ýþÙÒÙ]tãâ‘QE—æ¿eî@ùKÛ·Fjëcù.|tÝJÁÑe‹ÚÚ §6 " " ÃøšËu¼Y¹‚Ãc‡öZ|'#Êñ絃Z*~B¹Jc y¶È(ÿDßå•›”Ù[£ëz&ž±RÔºNß»¶¶d”Óís‹ÞJeÄלpärr©# šýw=žÑ°v‹;¦ÕØ›Œê/œ5IÕjŠæSKŠ*í þ¿&Ê)»É5Ù´_A‹ÞI99¥""£¢Ô™šq«¹‰mØ3E¦ÒrδMÉ¿Ù,º~ãDRÕgJª¦©é±®;ô-8ÿOëÖÎѧ˜ÔüFt{~NGŒ£Ž$€À²HòR®’B°ŸÉ4² " "Ç}4SM“S]wÓ}vÓ}7×i¾›c:í®ÚíŒãmvÆsµÎ3Œã9Æqá“ò?‰pû£Å5ˆwÙE¨›Îñ‚Ê©¶r«¸ºÅ-Ç©¾W;gϤ­¥%®ûãU'‰­ŒcUu6™‰uXi;?X‡Õ›I¶ÈÇ[§ãÚ³Q¶Ûiny6ьӅp‚m-.ö¯6’Ц²Ëú±ªåÖó%•:bªšÓÉ[ãAYeü_ØÏD!‡ö° û”¸èävj5Y@٢ͫU«âè›ÕWü$)jµv•”±GL [4 " " " " " "'3ñy ’Z+³saöÊm‘ê>¦Î[{SmìѰ«í·øXí[Ü·‘ò¡Œý²¾E÷ÙTp’1ŽpGùÞ;kjÛ÷öä;¿‘Ð_9ñQx[½¢Zz£…vÿùlΖî¹¦ØÆ¸ôY%.¾ÆUCyÕ]ž*¿"‹:QÐϼwþ[¦gùnÏó7ùJ~›~¬Ÿ%–ý§²Öòfl€grŸøÓç[ û®Ÿ %I lЀˆ€ˆ€nßo­Pk3W+ŒÃH ÍyŠ’3Ïr§ Ñ²y×LySGE\ºrºÛ¤Ù“ˆ¸zýâÈ2dÝ÷¢¥´Q~«éÍš›tiÑmtgÏEou÷ßsŠê¦š« e¶Ûc*WZ+;»PX0H’@I=²I>€Ù'ñ2Ù*µŠßÏÕ{VöìqÇÔlm­ÅN.´ŒŸ2Þ±†dm‘-“I¼zT0Õt«mž¼y´Î9ŠRIÄ[  d^îÆ?ÁüX¯Rƒ“›NÓo±Úî…È6äãö‹ÖËy¾Ø¤,“®Û0Uä“–0q9|Ú¯OŠw'&¼&·^÷HĤ®v³ú‡U6í¯-uoâø<ç‡â¶Ó‘ñ&Ì”êժ͋»Ô!¿fÞAFÆúšëÔ”2P•Wššé/›)G´üŽ¥ƒbª¡{oت¨|}¤öI$€[?•û2Œ^FI³i#"Ñà ÷íÑxÅûˆîÝÛ7h¢š:AEpÝt÷EtwÝ%tÛM¶×2FpP•˜®¢`«pÑUø8Þ¬9™èhHæ‘1LÙJú»$Ê9‚-Ú5KeTQ]“AõÊŠo¾qæÛlæÉ$¾“¾òß›Ndý8"V€I}'}å¿6œÉúp­3¤ ÷}ÈÝXqßÂïìý—©nZùÓêçoÇ2ÝÒ”ôýšÏÞoßÏ7ï|½Ú=ÛÖÛÐðÝ󀈀ˆ€ˆ€‰ó\sVõ¹)·:å Ç%gåN1©FL9‚›•ºÇÐ.Ÿh‚CÎÛÝlÕ›M’¤Í¬»gΞÓO:"ñ§yM·W9¡U¾Så[NÔ®ÕÈ;uZmžvËIŠí’1¬Ä$£\ﮛ弄kÆÎÑÎúë·¦¶¾muÏŽ1Ò[Fòw*pkú¥~©@aC¶qµ8ea %xŽß¬F¨–ªï®¯É•C›‹„E›8ê›î8“]‹uì˜ÊÞ“=mËp+[fÏÓUŽAtÙ¾ÃZp÷æÇ£8ow¨Ü×'FüëÇ¥W‘æôîQ(|”’+µO`-ÇÀ€£³j©ebÀ÷V…O‘?ÑZ¯]Ÿ-øy¹t@D@DLrcýœé’XðE¥ê…k¨H+Ÿÿ.v¥'k¦³ÇûcÌŒ$—(¼ÇŽvÏ—Mü˜Æ2¦s±œî­#aZ‰'«4¥iWøkC~ùE’n¤rì%êV¤±º(9Û.÷¦Ú¬^Ø–Éaå0É×fŠ›¼oߔ֥^ðA ÖOü|Z´ ×ûùÆaÿØ7÷N–Ûk¿7ê᮫äÒÿ/ÉF½ K7òk®ËM-ß↨*.œØ€ˆ€ˆ€ˆ€ˆ€ˆƒ”¾6±½£Ü™S÷A+kÊ­­]WKe»T¬N"]£ «•ñ¶EºR[¶Quu×m“K]ö×]¶Æ5ÏVg7k¬]‹‹«ÐʦšÖû£¶sl‚nB¯N´Y$Üi¢˜ÎÑĤ\ îuðQº“ˆîžq¾uÉ]¥El°ã_kéµ…kâƒäãø“ø›œ}vÙ®£JÒÏ@·a]š xj³e¿*€K§ÅCù"'`öÂuÕè8úÄj%/B*½Ùþ |K$3KìÆ1þfééöcû>Ìcؘ@U?ÐýêkXïk½–3=–;;»ÙÝÉff'ÙfbI'òI03!÷ÈÈPyg‘+p‚î’i-ÉUGWj¼dVÍËÉðä–²/ô…fþ"ww“’Ž…˜—|Ò2&%‹¹)I'îhÆ>9‚ :zùë¥öÑÍ6IW\-¾‰"Š{¨¦Úé®sŒW­ÜësômN“=Ô }fñ.ÚÃ! úȵq¬x¾8FQ¤†ØÅOlR“™{CŽlÅ…bÑ`´wh;²Èئ¥½/,ãòò_¨üwÔüpÏ‹†ÝóV¹ÿQnsfW½­±u"gâ²shÓ‚».ËÉçâÅ™t%²›zvJ~Ò¶±[È÷Rúnº$—jÔ« ôDMÜy©t@D@D@DA%ô÷–üÚs'韕ö(I™¿m•˜öx©_h‚gî’¾ÞÑg~Û ÃÔG¾•}èö±ÌýT»—j¢©§ŸÍˆÛ¡‹Oͪ¼ùjøåª£ï=Uó;ŸŽ]â=‚Õäqß·š‡îö.vô}}îó7U<Øóùp‰o@D@D@D@DJ]oð-Ï©Ž•ù§‡8Ó–y3ƒ9FÓH›ÇòÇòEç‹-ô®HdÁúT¾,ü{=^žZ 9ôاc‚Qò±“pª~G3÷ÛgÜÔÛvVñ5ÝçÙE·gÕSÍ.kT i³.š«©wc¼xéã÷5bÛøý5þSFT²‘p>,¶»Ôõ£ÔÝ€´¾ /¤ï¼·æÓ™?N¡%ô÷–üÚs'éÁ´€ˆ€ˆ€ˆ€ˆ1NnäØÚ¯}1¥k”)ër%"61„ƒë¿Ø•yI¶¢ÍW-—~Éå KC.`k¬ågUãŒTuÝV–'mÕÚÁ¿ÅíN;~m–cÉÈÓS°¿ê…¹uçµìüYQ¶‹,Jµgz¶c´¦¼Wç×E×RèÊ‘éÔôÊAìüˆ©íXv¬ ’‡W¯Tj&xçf”²ÉP§' *–™ õ¬6;W'.û~,š·>~ªÓN­í*Jß54ªÏíVê¬ý¯eÔNkLi·™åqUÇr[°Ñ²ŽG>m6Õ›ËßÓïÌœÛiV%ëMTïZmñ¾Ÿ“á½ätUl]Š”, ²7对Iü§±Øôzìv€Ï“€ˆ€ˆŸÂÖYìã(/gœw&Ö_ÐlëÚ¥œ2](é.Ùâš8ì^n‹¯AÓg •ô½5ÐY-¶Oo‰Ç6œÞ8þ‘rÙÙ[UN¿`]¦~Í™:–ŠjõÓ5ñÎSY“••j²[~úK#º{ãë¶1Ù˜ß ¦±¿Òöÿž‹Ê—Xäü>ÄôŒ·ºmʵö­õÿl6‹®ò L2:éûºb7d³Ÿ:{ã±+}^ÈGKŽÏFÅ(èüðÀ…ö},éÓZ]Ån!èÉ«€ÁTX¸î[ójfp=K©¸ÔUbEoq(Ëi; ºs " " " " " " oë|ý¶|Áãž'×Lxg;&³þZµçmñŸ5wLj‘ÏÛåY&¶A»×I—Ì<Œ;ø´•ðÙºš¶ÙVj,ÙT×V«WÌÔžJ°ZÊOÜËWܾ#óöÜib  û€;ø®9«ÝpªÆgÊØ©½Wºè»c°XÇíîþ=9 Q}±,ΣöÙ—§Í€ˆ€ˆ“ÿ1[ræÙÅÜÚ§]»'Í‹]ÓäHkl^fklx§[ô¹.ZZ!]´a4”Äå«xż<†Ë4Y×$%(ú6Z"Y‚»þ1quÆ5×\cëŒcÆ1 cÇÙŒcf1³1n–ä»+¾U³_›>{ÊV8.)¦ÉĵŒ”„ãÊ6­)ZX%TÕ²r òe² ÕÉ+¼r¢hqýšËFldJåÖÔz}Sãø5L¢î#3¯%~-Önϳ—ÛsëÕif®ºiу+àà5Wßôp¶jͯUZ榮ÛÎÞÛ«xP¥kPGä’ƒÚ¥º`, UHêž—@D@D@D@D_Ißyoͧ2~œ+BKé;ï-ù´æOÓ‚%h`½Ls£¾›ørÑÌ ø?žº‹V°¬>›q?LôÈ^Bæ9ô¥æD(æ¯OµÒÙÌ¥ «ßu™I)ÄÞ!Ñë¶­^(‡¡¶ôX®ËÒXko$o ªßjº³§LêÄ Y#¦Pņ‰£*°.Ÿ"û<Š÷Ø Ëì$0üŽÀ {Ï_ÙùÀiqôG>uaá”ø#–zßæ©¡¹]ë ½ž–Çzä+ê×g5÷²p»^µ©VÚÜ9”<¤¤Lw(]¯M£å%‘Ǻ¾ô(æ)ãEUV)Ï“&.?–ðñ¹(Áƒ0víìñ梖ÂÖÛñü–³ØÌÆ”Vë,smútêÛ¦Ò¡MÚ÷i·f»¼íO›MöØzD U$à’úNûË~m9“ôáZgHJ_HÝX{ŸÀ>‰>²ÜµñÎÇä_Hß'õ)ýï½wðϰú^ãÚö?ê§eêþï®"^`yäz¼5G”©ýGº¸ÄQ¢«5YÎ6å…&“Ý(‹U Äýœ-WÏÓUØÌÐy6ª×%¥=x¨zÕó“Û(›u§õ~Ò†9Ë…J¹©Z(—–³Õ+¥vj§hƒ}®Û²™®Ø£\ÄME;×M´ßfÒ¯´_o®ÙI]¼»k·†qŸpÕŽx©Ž*oi´Ûí|¥S‹ï3÷”¡m±Ë£Çõ+$}ÎMV-ÙGKüÆ~>aÄìC&‘.§¶ŸŒE³'ðÒQ¬}6‡·™à³Þl×§wéª~‹Ec*(ý5vÅ<~§ÕM+>Nc’¿Ž¾ÎBÓãFþiÎÕSH¬:P— |fà¿r…'®š´ÊZíí»; ó2耈€ˆ9œIV£m‰@&‹f–‹TD­ŸoB?ÒZb>¦µjAëÙÂnŒÍŽºÅ$ݯ³œ5rŽôËvûú]1Žr‡ú5“ˆnºÿ†ŒEý:”ÛŒϘK‹{SdËÿÜwÈËñÊ»øçÿÃ×ÃÛËœUsO0ñzû$v ж?äuã[;wüODvÿBêÒs3Ø¿6}kZÖÁZí)–Û±gè‚_¶¼õë¶fJ¿‹ Œ[4 " " " " " "s¶û+eJÑp“ÆÙªWfì²Óþ|±‚s(ïxcoÞÊ Tòþî~ß³?ì|(­=§ñ¥¹+w›Œ¬D'b_Oöwf]¢nì¯öûsŒ©!<âEò¹ÆsŒ¨ã|ã>?.M«HÝj+ÕãÕhšRÓu$§põESEÕA½²íÒ7OEöÝĽM´ÌKT÷Õ4wpù?]d‘Æûã¿)ñc ±jRùk›GûèUO_ã³þO]miÄ%ênÓÈÙnšÿ,µâÍRaqü(vßÈ«{%ÍkØ]9Ðb½@Bò·Œæhœ],­vÕ{s Ryme3ˆ9Ê5zv.+’ougšo«½.Uj;Ù·´U&®Q¼íYQÖc‡K¥µÍ«tæQ(\!nß Ïñ:0~g1Õx«[×\Äõ),©ºO'o·úýzó/4f!ø††{eߺ¬çÑ~œ+‹SóöYMkú|æä2W«·‘ÉÈò馶ã8›jNn´½wìл4U[ñœw$Õ×¶êëæ«¾åû·µ%X+%}}î¶ôPTÓ² –)j‚I#¦TÛDSÑ-6Ye\+S×k•W_u]LãÎë,¢Š©·Žêo¾ûglþÀcMwc»geµ[eieN¨×Qu4nÆš“F!ÈdÉf¼º¨­èxX¥—í*~êÙ”0W€z>ú •oŘ+)=¦ Sƒ9Ñ|¯Z#ùœ$qµþÍÆ÷¦q,äYWß¾ˆÙœÍ^ÙYÒIÔŠø¯ß¸îÁL½±eîÓ+Wv²/S“–y7_”ßYG)Çiâ7êãµüfü¶x(±nÍ}l«e²hNëÓ]^¬zk&­9nªú™«±I#­ˆ®½ôþˆéü`}«)YOµ`Aö hIÀD@D/&Uݨ–Jäc–ÌfݲÑåjAæËHËd+¦óu9WXCEËx»$tT‚ØCL¯”Ûm„|òçÐ"讌Œ;WVFõÚ° ŽÇ±èþeù´[“N}T·f¾­m6-•’§Óê Ѩ_Å3R’Q6x‰÷ª¾Ÿ¦ò Ú± ²þNã1ØšZÁJË“×Mw]~;Ÿ§»YLi§¨«÷òøgΠb·"¸y|O]©þån»”ö¬;ôÀ‰-yŸ›³;+šœ¨±;5ÝYª¾¢ÁKS}e-©ˆUº·^àNk@D@D@D@D@DLÑÅ‚]Ï/ÅÔãù áøîbËmi„ﺒv DOç.EG£»z÷$n¢MÕoë¬Ñ¶Êe]ΘÒÌoŒÿÖíÜÁwÛüT_ÜÛÑ ýë¼g”CÖžo‡cÉ’<˜ŸÙŸ.|ùÏ—]ó¿ŽÈSA.­a$‹,°¯ç¡Z·ÇYNÿ è‹g¯E˜~gO•®º/£-hˆráÆ—¡lmWRºõ®‚-v}ZnÉ÷}ÕÕžª[ÿŽÓ™2>^µÄFÆBqâ¶‹JÝΧ¸»¦ê ™¿³ÂY]Ñ­–Uíq‰È¶{Óṋ>d¦™ºˆEÜkNZ¾s"Î9ïeE¤ÖxÖ“Qãº\bpµ -f¡WˆGuN6¹Ú"!–ª­º‹­Û0h‚[.ºŠ.¶ÚåU”Q]÷ß9KÒù²ë9Ìlên4qÅvNTàž7¼º™våž¾Œ¥!¯,MB@ë²1Ñ­~•¸þB†œ›–®¥%㥥¢¤ñZ±¶IÍznlYÅdÇúp®üšs¬ýG‡SeŽ|Ý­3¨L®öøþ왟7"ß[Ær·ó™›>;-ÑSS_V3]Ú2Ÿ¶–_.þ.”Ÿêè}ö>H<^±Q퀙—@D@D@D@DA%ô÷–üÚs'é´$¾“¾òß›Ndý8"V€I}'}å¿6œÉúp­3¤ cÈÝXr'Í/ï=ë©nZ‚ø+ëqÇ1=ª”õ=æ±ÙéØO8켎¤{å}dݽ×Ñ××ñÑ󀈀ˆ€ˆ€ˆ€‰Š_ånTáÙÚ®¯,k(â×DåZ›d"µÚ ßcÎÒ¹m‹¦œªúU§ª»Ðæ š:Ù»˜žOVÌ«|íOÆ®6³áZ+‘w ÕŠ¥7£¥!m0RõÉ}¿{÷x¹¸÷ôg'»Yç[4t®¿`å»ÖjçG WItÓS\û„±qˆ¡AQ¹>ß^¹r5(+tä4’n_ØX³}'N½Ù#0Ò9X!Ö"˜Zì0é±ÄD]™üü5~Bb")´£¯A£áä8,šSè3ëà|]ù³åjvr8·jäù y6£=zŸ‹O®ûS3SžÏÓùë:‹ØsÔ;KX"¶öà–íQ•Q `ІäP vE¤øô;×€Ÿ–ÀD@DLnþç ¬FÁeÈTÊíî9?ÿ×b¨¹Þ“xwŸöÆ=\Hׯ6Û?nvÛá=q²Åž~¬œTÄÂø<œ‚¨5~‹d–U›Ë¤ìT b*­¶Ú*ÝŒ”òð¬×ÊYߺݎÊ%¾×túrª”!±÷µ€r‹Yœ÷þA°ÙâzºÊ’w÷ZúW.¦¥ë5÷U¶qÔS˜|~‡‰LƒÊ„³|Œlì%¨ªÍ€ˆ€ˆ€ˆ€ˆƒäX'bêð3vY·:²…®ÄIN˼Û]·Õ¤\C5¤¹ÛM1¶ûêƒFê«t×m¶Æžã9Î0}sæÿõ:¼%OÞW“nõjBͳŸ _WT{½—XÃxεsOfØÎÙ×]µÎ¹Ûw9®«tYTøøg>‘}O“•P“Л¼ndÙ¿&kY’‹o¬i±HœªÞz¯ì‚ª(ζÜÌÀªª €f©Ú=³$ý±‚1­]ªêS-Qe¤ù¹‡kËHºpÓTÑÊoßȽtþKuSÕä¹pë;¹U]öú ¯@C¡ëüà¯âj3fbI,ʼnbY‰$’Y¶$žÉ>Éö`fF " Å9Ï­TX ¬gÃ4äŽK¿ÖøæÚUŒ‹êìc©Nön×o´ëê9lWè\w^¹]œ²Ì¼.öGp i±Òìfì‘Jgk1^?ß”¦97˜lVü<€ãÆëT^&§.œNûI1¬0w'nå§®Zê´“gWk=™ÅJ* ÛÝÚ¶ªq¤•­Ü$›!Þà+Ï]úym•ñú³ptUÈ/ÔÙÓ˜½¶åÇ—ªºë²ÝŠ.Ò»·ä­³5ÜFESnKMW ­$€Š]M„§š/ñ,ÎI /¡â¬{êÆOµ‡bjð°Õ¸˜øìDd KdÙEÃB°iÍyQiÅ$³l–¿ºš ÑM$ñök¦0}0%–Ymm®öÛkµ–Yc3ÙeŽÅÝØ–wv%™˜–f$’I–=àü0I}'}å¿6œÉúp§çb½öfÜ¥aýâ*F+Ýàž{|äW¸4Y§¹C?ôÖìeXúÝÔsÏI^ÙÚH­éïäòæ6èb­ðš¯>U~Gj·{7U|ÎÛäwyµJùÜA8î&¦;vó}oCE{t¼­ÒE?.|žl¢[ÀI}'}å¿6œÉúp­ /¤ï¼·æÓ™?N• D@D@D@D@DA:ò<57Œy>¨§® R!¢è)q*ëìe!í5·—(×\q;fuê:€K‰lv{¦ö‡-–¯Wj|ȲVÅ#áÐÅ‚Š>=†¿ l€œªÙ¢˜OVì°òuû£džFLÂL²^:Z*EšÚ싦,¸fñ²ºì’íÖQ%5λgëðœˆãw£ßf¡ÇkFÁÍSé~£_ ­‘9 Ô´jÆ4šGÍ‚ý®yqò„Õ’‹k®ÔóB_5>u–òél_hÇÄ«x÷é€aä…ý¬AûÃ8†Ù^c+iéõ¦¶´'xáR^ñ+‰» ßç* Ó§rv“{¬³ÙÖ3“Pjd”¼¶Ë»»ñíËg²ß,_Ène§wµò\¶j˯3ÛZÔú8þG%‡°Ô¶\+xýYµ­+šÖàŒÅ”Ì£‡PïË+IÑŠ:ö@ïÅÕ—¾‡}wÔ|œ@DL÷–+/®os¯ÄgDçÝÁ;sWp§Ù«+tV5—¨Èøøëá´m•„Sý3æ×ÃvÚþö¿ï¿O³0ºTª÷¼oˆËevË…1বg#[I´ÕLxc8ST'ñœc8ÛÆqŒãÀèÎ.RÚ[Òµ«üH4i5jy[e®±ÐsV™™ÈHÓÊî<ÈV¢¤Y×Û/´îF"¶QGmòž´ø°¼8kÒVÃØôÕ¸5?>Å·‡}zï¢/©ø–Ícuv~AoÊ[î«^g¯{3Tø¾.4V«;J†¼{@tç@D@D@D@D@D4ÍMÌÅö‘h]Ú‡§EÜ7J/}ÊêÚgÓ‚‹‰šK|…¦±UÜ\¢Ô×oÅ—O˪*c~äËxºbNÉ‹ý‘Û×"dy*ÏUf¶Þ)ÅÂQû.=x“\c×-¥mu;5•±æõМK}ÝG8ªÂŒÕÔÀ±v?´PË`søô,ø××}–®»ëßU[7TéRÑKefuòù’ªìš±Óm™e¡›Ä-yíea`¬H[4 " "?¶×Mvß}µÓM5ÎÛï¶q®ºë®3¶Ûlç×]qŒç9ÎqŒcÎsà??ˆ˜×97µY¨óyWBM4ߺӕ¬+2¶KÚ5Aƒkmb‹‘A«˜ú¬\´z^m›ŽÍ—ôÊ=½ñ÷Ù·—¯F 8ýTþ¡ÕŸ.~CŒÒ—­zì^éGZj@(ä3v03ïó¶š¾ònõÓ€µÁ”Ô *à‚T|¾^d©öŸo¹=š—@D@D@D@D@D_Ißyoͧ2~œ+BKé;ï-ù´æOÓ‚%hŒƒ˜÷Ò²ncÍÌ„ƒ×*j“fl™£»‡Nœ+¶qªh7A5UM³tÓM¶Î|0b}FôÃÀ}\qΜIÔÓùƒŽS¶TnúÔnðí&á~KH›m; £©ª‚Úh庌$Ù/¢Œg $&ks-ŸÀÍJG»š¤ÿdw쮕ŒWömôÑ)N˜¨ê+¤~ˆ”l›´7Cw²±Ü~ÚB1ú:©•?báŒÜj›†Ë$²zo¬ÈVÏJ¬ Ý—ãB®ê~.›å6)¨9SZVÿ8kZºlQW^LåÏÒª²þãZnö‚0vU"ÆdøÊ {= ŽšùwŠ*óJÖ,ÜŸÇ•Û.zµå¬b½;u­ÄNg/ñYËb&BI»üåæO-1†ÿæ1¾™Gϱã{GM|EʼnΥlön0ãË—ZòÖqa¥Våç1–¬áŽq-!áþ2Ï §†™ÃòøÓL#䯏ðœ®^àç¹Å¸®¸ïž«ô(kdç´d•áÂq ;¼}m=)Ê)SÝGk´¤„µj’—øª–ˆÈém«üf=Š3S¬dÙo \¶zÙ»Æk¢é£´rÕÓu4Y»–˧ª¨.‚ÉçdÕEd·ÕD”Óm´ßMµÛ\ç\ã'ï1N5[•co\½Q¿êæ~¦Ö~>çļƒºí4yP¼bMi2–m£-÷°ñM’"U£I%"FOì|mÝÊØ. îr[z%øù>Ôý;¿O|ÚŸFö¦¾KŠÝ§ŒÅ›ÃŽÊÎ{ŸˆÛn¥i¹5Ù“’×q¢ÜœcÙš¯io÷· ¨*ŽªìÎÌ=b€½‘âvÀ;X󲨀ˆƒ'q#! Í‘ì?x¬÷ŽëÉg+mdã©ý\¹ì›o¿n”®ÿºÎ²ŠxYÓ*{+Ÿ#-|uƒæT•aR¼6IE\ñÅþµf[ é¶øÒ½)»ª-áʺi®Ûª”]ádšÕ-tßÌî-®úãUMDèÑÚ×òû©ÒÓ×çÁOîúþâi6ä‘×¾ˆêq ¶ì8Ü+B‹ð `:ú«ë'%Èî¥^E25–)V®ºÙÕ¶|åÀD@D@D@D@Dã9ך5 áoѾ¸®×%¥XGøþü¤£VJïŽ1¶¹ÝÌ´—kÙ=vÆÊ¸t’zçmƒòãʦ(´J};¹ËÕ+U¸xgRcÁI7ÌX¢Œ„ªùð×;¹”}«‰JmŒn«‡*©¿ïï“ú¥¬ñqÖ½MÃwO%-¾ô»4[¢‚È³Ž®2EäœÄžV]-‘níÜ4Nª·MÒÞí9–PÕWtÛ§*5Ìþ@šÔT¯èfêÇìÿ>kðžºû|}¸‰¾öYWNSKVº¯míqnƪ©cËâž?hÍpä—Ì7î5쬣âR@Ù¡Oœ½=RºØcz[˜‰°gšh\†½óÙ¥ëêÓx•œN+òóò³lBJ9kU’ÁH­2rÊrW2yØUòÒ‹aU¦×bŸŠª×ç-®vg[‡“Ÿ™y£gO7iÉy:´d‹—®¶A£u•Õ³Fëº_:a&誮Úi¶] Y¬õ¾UäŠ~‡Ê<вñláôgl‚ 7±ZìWÇ·©U\È<‘´Q+võÑ´µo ¥i‡ L^\Õš4”ÎWô¼%gϧõ-µÚS¹qqMFã‡Jþ¡Õ“]Üvüí[ 6UÁ>uå46`Ț׉ǰÕO(Ži´ù‘H#·OÚù/Ĭ¡Ðƒöƒhbƒ¾»_‘—³_S`dÉœk6‘ÑÍ0`ÙLX²A&¬Ù3j–ˆ6hѲ&ƒvÍÐODPA4I´Ñ4ô×MqŒH›ffffbÌij3Y˜žË1=’I$’Odû2ïÇâ" " " " "'#mä n¯wj)´Šª¡âÛd†® ùt4ÕE‘f¬ÃÖiºU÷ÓuSCm÷OMµÛ}q®ØÎfNŒça,Ñ]DÎÖæb¬r]Xs2ÑÓ0’-%¢Ÿ£ª•ô¶U”‹œ4t–ª¦¢[(‚Êk…ßLçÍ®ØÅ7mãúùmotšÕ´rª¯ÞÛ[†± ÅuôÕ5–f”Ã'‰µUdôÓETC]7SMu×}³®¸Æ&NŒà¡+1]DÁV᢫ðq½Xs21ÐБÍ"b˜#²•õvI”s[´j–ʨ¢»&‚)ë•ß|ãͶÙÊ%’—ÒwÞ[óiÌŸ§ Ð’úNûË~m9“ôà‰Z@D@D@D@D@DA‰ó¿ÚïÕHgœu<Ú·Êpµ+jVj •tâ¦@ÇY”¶WãVµW UClÿÉiáù œ–?ˆß’Ñb¥õ%ù¯B ]—^{«V-tµ™¶e¹ZYm»=ÊÕXêab-ˆÈÝôîÁ!ü†VÕ”ôÊÃÚ°{ã@Ø -1ûKV¦âl1zIMÃo# "ÒU†²õ©© ÝŽ/gl•] H@Øbe ¦åL8—}ñ4^4]þÉ7&Ò…ÓÕþJIy‰è¨¦ùV“8=™¢µ¯Ì²UYŒ?•ÖE=tÞ§§/éV…a³7;i7Ë9AFñß)»Äå"ló}8®¢ü']ÜO!Ez¸Ýzó5j”UÙ˜ž…w]Åî8ÝÒ­æ:iD¢úVb·,b®ª{ÿkzp°¢IY“¥[]`u›lÑxý“˜²À?`çtÔ]ŒÅJÉ-Ušiº‰g)«ª2ÐÏ4EdÿÃ] $º¸¦¹:Ã¥ÿܩʕ ¿q‡ÞW×8ò%¯¾1Ú¡mŒc§Ž1·c9Nif”ß]ûëòjo¾Û8òé³Rìõ#Û©jÜõ×o[-×ðÇÍGð¬'C“ÏV}Ž(s_V}™±Ž”Wªº „“cæý5–w÷[K÷Ñì¶sà" " " "&3^ÿ‰9ªû?·øŒxò½Æq9ÛìÙ¬ý…|…|Ê_ün„„3Î'OÍ+¨wIí¶Ó:¥³….¤•>:Q¦©&îf×mµÈȬ†¨,áÕ¢Ã!0“]´ÕEs” ã1®Gmº›©ˆ¨voœm¦q޼ª•eB\tîïcÁ »ªXQ­íV­¬i6oœÂ@££Tœ?r¢ú°vùâq휹k ))ºZ´t²WæÏ~»ëÏž·ºëI•«;fo |QÛ®‘ºU&` ’@òIëÿìàn yZ{˜8Â*¼£šÇÕÚOÞỹ¨}Ý^§;7ªO2QW2Ía5^VS‘n“øk²njtZÜSÉfvkrÛaðg+Ä\uW”žVßq~òVÛÉwnÕ{¿$ÛŸ­;u³jÍEÝmòmã†ÕŠæŽœ3¨T™ÀT"·Ö"‚IëÇWžÑ•µUÇ`³ž?…Mf.O 8÷æiNCf¡ËlªûnÒúu¶¢+m ¶Ó†¬Y>2Ò•Ô§¢ì^Ò®ÈÎã> ¿…_}‹nÉnÈpå°I}'}å¿6œÉúp­ /¤ï¼·æÓ™?N• D@D@D@D@D@DgHîû‘º°ã¿…ßÙû/Rܵ;ó§ÕÎߎe»¥)éû4-Ÿ¼ß¿žoÞùÝGv)z)´{·­·¡á½æI}'}å¿6œÉúpD­ " " " " " "rWª-S’ª²´«¼:Sµ©­Yåëjv!ë˜)¨ö™I2jé.‰ùknA“䪂Zw"qMÕýnÑSÚGiM®I*âWŒïв*1ŒÚZ¯Èt­˜Ê¶~‹[DÚÙÜè+¹q=EžÂ[1‡óŒ‡%Õ!`ù‹¢sgsQ³ÃÉr5ŒS7–.GâÍ–²ÂÕ©¦£r©ë7ô‡NŒl¦qm–¬«Çûv8ºí5é8OR—ý7wÇòí½là4íåtaÃÅó>jô ÅÜh§žËšŽ7MújÇñlÏÂlÕÌaâøíÕé¦ÎЋ‡}(êÕZûÖ<ºë®Ÿº™‹€¥»Sb­lî¤nÍË " "rÒF/­µ»¦Î]6•­DÙ`‘Õ‘ÃgÑ¥`]I2}¢©o¾tÖB³ýºˆ(ŠÉ®ËÉêl‚îW©8îBªbóFµÔpë1î'à¤cãå4×+,£}ö‡›oŒã>áetg*Ï å7LÑßÎuÁøqͳ7š-VØ«\G¼š…fæZ/ÍçÞu4ûkùñÛüÔÚâëæÛÈå’ºy¶òøæ Ê·5~=æ Ù>e|k]zð_„wßÝçè}¬Nû×mÜ}:ÆÅÉyãÍ%@újîíÊUûýÁ¦ÓɽÔh%˜‹«Uí³B " " " È9©Ë—˜ŠT{…ÛIr}¶ ‚’­UQ³!ìærü«Whíª¬Þ·ãX ›˜÷iíªˆÈ¢Ó)íª™×lkæJ³óÜÖÑë¦.Ҁ㺻Æ:]²ÚGÊÛ9UFïd²ºjš¯ê5Êoj¢Í¶ßTÛr–Ûï•2ªiQ£¶¯ã^û¹–¯_Œtƒøi2“ëÈìSˆ)VϬ°¨N:›w.жŠþƶCîÄ·|•Z‹ïá{•Eg]h_9pÛDú=ê ÓSê"+å²1|z¯&Rx³3X‹B‘,³¹dk6^d¥G7î_Êfy¤$J‘{“rßWÔ êc*\ˆænÕöyøý×$Qx.·ZBʽÒ.vÇÊÒH7…¢pëFo!–z»¶#²ÖëÝ­ÔuN³ÆJ½m~·¦«–¼{!ÿeƒƒ†¬BCÖ«‘QðUêôT|$KDECÃD´E„\TcÚ&Ù”|{è4fѺi Ù²)¢–š'¦ºãÔV¶þŸâ—Iss<öBÜuôé¥RŸÓ[+æ8ŽatQ[6šôs%FZRãœl±©Ó›—Ç}tž­r>Ö®¦éÁSÙ¹~++ Ÿ´ŠÁò$wûž Õ°ŸPyyt@D@D@D@D@DO•;+ìP“3~Û+1ìñR2¾ÑÏÜ'%}½¢Îý¶‡¨}*ûÑíc™ú©w.ÕESO?›·CŸ›UyòÕñËUGÞz«æw?»Ä{ª+Èâ ¿o5Ü;ì\íèúú%Ü+ænª*y±çòâÞ$¾“¾òß›Ndý8"V€I}'}å¿6œÉúp­ /¤ï¼·æÓ™?N• D@D@D@D@D@D@Džhð²\9x»CÙyÇr­ù)¾Š´ØfëÈ×¶Ûg'q„>Òúå9ºªŽ _rE ‹igóPÉN^ê­""h´ª‹t¨c7åÎ.®s/ÏqíY,åõbò2z Âll´ûL “Iú}æ¥$ª.t‹·R-1±š¼žíÜ&Ær%Šë6r†Š·Wùh\_¶Ø¹SRm­ß‰$¡aí±vfQñ²ò1óÑ:IÕ¹-µ•“¦]FSXYèÝc´ô¶¬åœUŽ£aƒŠõŸ?ŽÎu>kùLu ýGU8ëLôáμGÇsößOܦÝ+——·Ef׿­×ëÑ£œç¡?i…G¡[Ù%½–?#½@ÀE_*À=|`¨P+íµ ååðeœ{ )W°ò]yV+¥ZslÍæ¤÷ã²ô/hï'k‰ÕOçy&ü€ÖÛb{§—]Rckˆ×_6s¶ÙÔÎ ÷lyNø|†6Z RñV³º[Õî"ÙZðî¾ùŽ©ï®›ª­ñýF)߯®è£' ó>]Úé’«|Âæ%~"I`?µÇƒ?‘X%loà|jÇÒΆ¾Ñ£¡Ó¾´D­ÏGç¢ÅÑKÐ;ëuKrP:.ã]´V<®÷ ÙÏ€ˆ€ˆ€ˆ€‰úÖYèªá© ‚ î²Ë-¾©¤Š)kÔUU7Î4M4ô×m÷ßlã]uÆvÛ8Æ3““ãûB÷zUjâ¼^ðÚZ"›Ï1UmÖr„D®2ög¾£v»¡ âf.¤XìŒsåœ0õ\a·p¯Î ©#QgÇíßGü·?Æúå-¶Mm %Ð{%È_\ãf®Øq¬=ÅìkœgÖYôµßEOll)$š)¦Š)è’)i¢I$–š¦šI§®5Ñ4ô××M4××M5Æ5×\cÆ1Œ`¤35ì ý•  èÖX|€ï®ÃVŠ ôEêHô³¢ôUOEÎé۪Ƥ’ÊjÅ‘>6uO/+Ùª÷¬XWºìã,Dcç`˜ºs " ø¶I7ðµé鈘 \´T4¬”]V!ÔK)k4‹²¯E¼Ÿˆ‚k#2áãÙ9™•Œ‰AÄ֑dÏEÜ¥ö³œcÎsáŒ}¹ÎÛÿ÷’h¯ÀW¹Ó‘8÷¨˜ëË[§Ôkªðœ lcöp¹¾Î:³TîƬ›Õ5NÛ‡t´¨ñDÄc°ÍjVžCŸ‹“µÄò„?g‰ÃEãVýîÔq¼uLïkbÛ«>¾NÊ4ÝÄðnù,Ì3ÙÌ]’äklÛ‘èã³r{³á\·Wcâª;w#¡äªUQe€0=ŠÃÐVÊ)è7Ñxf’¡¸òNa±³²rT¢²–;nñ)¡¥r½'c”w5ðZЉ°rú¡Anõujb]¶'ç¢aZÎOí™yšë©hò‘ݳ}”åÎûu_©óáÏ^LT5öµ¦œ™i VlÕy|tQX UJ¨¾”I"ø* ,B¨^Ø–cÐë¶cì“ù$þL I(€ˆ€ˆ€ˆ€ˆ€ˆ‚Ké;ï-ù´æOÓ…hI}'}å¿6œÉúpD­ " " " " " ƒ:@úRúFêÃÜþôIõ–寎v?"úFù?©Oï}ë¸ÿ†}‡Ò÷×±ÿPõ;/W÷}ró$¾“¾òß›Ndý8"V€c·;3Ë|]Ç•«·2ÖëˆEG0Êq“— *h{%³Žâ,rÁ»IÉÈØÉ(JØ]b±xuêgv'Wßg÷½øÝ¹ö-UéJ­¬èÅ{è\œ†`ê×ñûF[óh|[+SFªê¾—z]‚Y[øºÅ×ÍJöTz`dn½:ù)ö¤‚ÑœÕ2Û}¨Ö.Õÿpö;l UŽ'Yx™(dØL2EûTe ¦Z²—…”E%õJF"U›I(Çš,ÉóT ªZt¦ 6ÞýEå·ýíLð=† ÷é*.Ý<Ú)·OS#^IFrEYüŽ©¶N¥g‡EÍ{’ ¿I¬\¬uJé‹-\r+™MèØå°çËf}®ªþ?‘Î6e yÑn/'d»‹ßaÏ”ÿÈñÖ)¦òsPº©9¹,õ [ò;ƶ,Xè|[±Ðo@‹vßccÙñ!Ÿ$h™dAÊÞ*/4ë5=êë3od„‘ˆïÛcÜbï(“YV;g8ôä"eõµÛ]ÐzÕ“ÛMÓ×lu@‹*º²0íYJ°ÿ*À‚=z–Óu¹î«E.kº‹kº«]¥µ8zÜví]CÁ`΋ínî”:ìü¢ 3ŸÝªñV¸ô3œ¡t®>u]¹Ä£¶ÞÝ«TT¼z*çÂÉ6Ñ\c9FªW'U¯°ËhÙ»~ó÷]£tÙÇšSxå+Ѷ)„ß;¶G)8–ïÒo”0³¹ûdråëú²5y Õ]ÃØŠ©cßnÄtH,(+k@±×®˜ª@—T ŒOò½@ µ¼ ´¾TÒuQ‰Ÿ-y­’»lwz:%W=Ú,ºú”öÛäÄ»1 lÒ€ˆÊ¹šÏÈ5Š;ø¢¡¥Ï’'¤#êôæRªuHIyŲÛ+ûÔnᕘӬ¶m­¬ÔÃ(ßÖSsh›…h¾ç†ÞKvN>‡ÏU»4U.Ù¢¬™)60S~½w²Q—-*Mº4\ëU£ÛcRD]‚+1…ô ³¿…P f?€ O@{œ%âÉVæ;ߥ¬ÆXfa7㥜se¦µ`q\iJilUƒzϸšÊrù·òMmK«¨êûÆRõj;4'eßÀïuãåçè8ØØèhæ EDÅ2kÕ1ñÑÌPM«& 6Ñ&ÌÙ3l’MÚµnšh7A=KMÓ]qòªð;@D·nõËYk–Ñ‹[,èÃÆÁº¸XÙBÅÂ<³Ê1ŠI&‰ÈH6‰dŸ¦Ÿ6L›2Œk¶¬X5I>ˆßåy ,«'Ç|Õqx«mztU»˜·=rœÈ®äΔ}m”%8ê¯WÏÅeãóë]ëÙ·\kB ;ô]Ïçĵ‚JWØ'¿IbYvr½)UPâK " " " " " "'Ê÷¿d™øÏµ|“Ú¤~?ï½ß²{ßh·´ûÏ·ÿŸö®ÿ·÷ËüßiëvßãyÛ¡›üWŸ>’>+ó­_3ü‡áïñ^ó¸‚ôý›ß¿Õûn×·ó÷ßâ÷·—ü?!o_Ißyoͧ2~œ+@ˆ€ˆ€ˆ€ˆ€ˆ€ˆ$¾“¾òß›Ndý8V„—ÒwÞ[óiÌŸ§JÐ" " " " " " "'ñIFÇLÇ?‡—`ÊV&U“¨ÙH¹&¨>Ž’Ž|‚^°~ÉÊj¶xÉãeUné«„”A (’©îžûk™ÖŠâ£Óz¼[ÓÌ¥–ß#nst‹á‰ÛjI¼Œc_Æ“Ð\­Ë+wRV*õ5IÝ™œ%VéàÙÏ€ˆø–[%~›]ž·Û&£+uj´4ŠÉašx„t< +%¤e¦%dn›f1Ѭ8xõÛ…4E»tTUMõÓLçUU·Û]We×]bUM5#Ym¶ØÁ+®ºÐ²Ë…DPY˜…PI`$€$’zd’}äÏs¼Ô¸ò)ûœãH§3uÚÓ7°ºª?±[gV«Q¬Ú$áô”Äôü¤|L\kÎ6ãúœ3•ÔÕj—9r±¹×i{òÅc’QHú³juJ©ÎИEsÖÜkÏW~7±T$*.î’|;Z¹I¿ÒE„%©!"y:ËÇëµbΡÈó•¤ƒŽ™EýÓi×k jMÕ~rÓv«°£OK½Ïéüz¸ äå5ü¸ÿVmÙêl§Ë—ˆãµe}vt³^CØ›*¯^ßÅZqYÉÒ£åe´ôQzj?¬ä[Ä!™J’«ÛygŠ–—ÀD@D@D@D@D@D@D_Ißyoͧ2~œ+BKé;ï-ù´æOÓ‚%hÒ±än¬9æ—÷žõÔ·-A|õ¸ã˜žÕJzžó Xìôì'œv^GR=ò¾²nÞëèëëøéy’_Ißyoͧ2~œ+@ˆ€ˆ€ˆ€ˆ€ˆ€ˆ€ˆ€‰›rÅ÷$ÒßWaîÖŽ8±¤î:r©x©=Q :Ý¢ ÚrP’ã6Y8Ë\z‚hY)vÝ×-°k?ƒ—m³g™Q/×E½k é·Üç)ßMõÚ5>ÑÈÕZ›‰_lk‹$cµ°Ö‘ŸlÒaÕ2NÃacùm(ÝHå£$\æI²ØßM3ÛWÓí¶ºöR+|ݸÉÜÓªmŠ>NFM£kw¶ØkrbÖEIŠu‰4c]NTæ’¯?˜¬XWŠVv«^ÞÃÈd»ðü»^¸ªöñzqæÇn¼|µ¹«Zê¹®ø.ÑÄï|¹óìÎ6Wô×Ç]öÓ¯Žåªd`ÿ%`> ᙂµaduØ™”øŸ>¾6 zô bÜ3Ë/ù!Œô5¾œÿùV‚ý´/#О¸ZU„{çi*¼MŽ“kÚ:)¥÷­í[¯#L¹2a³¤P€´AÔ¯µË}6»´šŸ·‡Ý£Žä*Zuf)æ©ui²»kKóé˯-—eÙ^{jÕ‹vK¯É·%ÔêËuÙî®Æ’:Ø¡Ðö­ß]‚¤H!•€ee «+ÊÀ«A4$àÉ9ZN¡c ÜðýÞ*^í½í•”öæÍoãÕí»6ÆÙÓ½ƒ¸´…‚YÎpš,ë–û ›å2ŒRYO[>-Ž¿l¯ÎUçšáì%Š&BY¦vÝ>â:Q¢¬ž#…Ϊ%¾è-¾4U=µU-üª'¶»ë®Ø®Õg­‚œtÈ{ y¡ˆ÷àÌ¡\e ænñ÷ÓŸ]VhCffó§RVs›EoEíHrh®«̮ޫЕX{ðŸh×¾³¸©£tIömUG¯*sR¯¨Õ+J›èŒ}ɆޒmWin‡Þ6®¬7]´\ŒƒøÃ臉%¢™G"¸|”2“ùVÃ)ôÃø ‰V¬í—Mù™ë´Óc ¶¦ó¦å캗èyÓjxÙSô<«en½Àœ×€ˆ€ˆ™/1KI§\cM®¼]¯“¥Ò¢Á¿i¶twÖA£ÇÖ»Su1Œêƒš¥6>~r-EñÛ8°4…ŠSl)&†»i11°1pPÌÐŽˆ…ŽeÛ_#f1±Í’fÅ›}ŽfºqQ©ªÄtšÛ'”g·®¨œ\Ô› 5Ϩ“&–Tg+Éì¶5ËÅ!m•#Þ³Y^¼¦°¬íxo0ꪄÖ½Ÿ·¾ü¼Ü³+ ¬BnŽ»-¢Š¸Ë(9Û5×_©YÃYf«–µÕP>?¦¢ºê\öyÛžöØY‘¯z* §:?ZË"Ý\8U4 š‹.ºÊj’(¢–¹ÝUUW|ë¢i§¦»n¢›ít×ÛlãÎL€II d“è²IüŸƒ§MXµrõ딳f‚λt²mÚµjÝ=–]Ë— m¢H ‚ZnªË+¾©¤ž»o¾Úë®sŒJ%>V·òäŒóÙ8êçÖ`ާAį>û›&¬±ò27»–­ä7¯R*ˆ9Íz™]ŠxÆbÉ;òK-—}«íéíp>JZô–ëgç?A-o»)Û¬”D]ªJ„4Z{µq¶6ËË-ƒå-.²ªI©­Z˜XÕ4StîüpO7ŠÃ]uÓ]tÓ]tÓMq®škŒk®ºë u×\c×]qŒcÆ1ŒcÇêtR¿¥ëÑMYú—E<‡Ê`äxÕ³þ™G|ªŸÝqUýJè›ókªì/ÿOÓ}f›«ýDp4óø²’)·G#æè1÷Ðÿá«) û¤Á§¯—òV_>TìW¾ÂLÂ{”¬?¼EHÅ{¼ÏoœŠ÷‹4÷(gþšÝŒ«[ºŽyé+Û;I½=üž\ÆÝ U¾UçʯÈíVïfꯙÛ|Žï/ïö©_;ˆ'ÄÔÇnÓ¾s¯­èh¯n—•ºH§åϓ͛x’úNûË~m9“ôà‰Z@D@D@D@D@DA%ô÷–üÚs'é´"Αí•gV>¨éí¬µ÷èÞ©y~VF¬„ÌrÖ8øµöªè„“ØDÜí&Õ‚Û9mªOj›u6p†4S9Uݵ 6Ùw#ƽw]Èååjd`ÆÊúòoêìÁAö@…°z`¿x°«îÁŠqµï‘¤löÎ?åN=q]Ÿ®î´¥z÷XIü¯r59ÔŠÍâ¤b&×wu+£2Õ Ú¶ÒA‹ÝÔP™¼UôZ}¶Öhr\vŽ+[dÒÙìa]7Wv=TmÉ¢%Ô]ŸVk,¦ÄzÝ|”0·=¢ÌÚk£U7Q\‘Å‹ä½dÊU¢ =þ?‚:e%H$4$ç}¸9£§[˜]š ՜٣à­ò[¨¦‹ÖãçuZ6]5ÆÉ«…¡x8ùÍÖô‘‹‡“y`páPÎð§||鈈ËD¤ ÛòpÓqÏbe£]§…ZÈFH¶U›æNRÏØ£wMVU´ÏÙ²jm¯ÿ&aÅSlq1ÅÖ§Î$-œw«[˾ß;¼¸PärëJ]Éesö¹pÙƒÊí©lê–Ê\«³ÏjÞ.B'eé,ÉpV=¥£öÉëí±Gm_c¯NƒÍ;ì†K{nŠ(é­iãZêP.®=ûÖ ·ïâÑb¥:€$€ù´Ø2èñ*½8Mu^«NÀ.œÈ€ˆƒ+å‹ ´|4uN¨ë-/\‰#š¥]Úzhª:,Ùgv;ª‰)®ée ]u Æú»×VRSÈÁWTY7Í1¾¢¢‰¢š‹,¦‰$–›¨ªªo®‰¦žšçmÔS}³tÓMq·ßlã]uÆsœãÎNJ­NÌò“â<²Ž%*(²¯NåGÞ—ÅgWg=¶cYºÙ4™'8£x‡Ü&ÑrIFChñERŒc¢Z ©­+?äùtâ¿ ,dëßSÒ·á]”žúèïàzóÜ»tP÷Ó™‹"üBÌölÙf:t—! m~wÕÙ{³×uho‘>µn½R¯ÂUàZá”-z)„,SLoº¹A„kdÚ5OuUÛeVS¥§ªºÛî²êguVßu7Ûlý  ¨Tè?€ &–=¶=¶»YmŽÖYc±gwv,îìI,Ìij1$’I'³­ÞëZãšœåÚÞýHÚåuž^É9o'0û}vU6í™EÂB3‘œ™“z»hØh8驹Wlâ¢=‘xÙª·çÏ£fŠ2d¢íZµ]V|Ù³Ô÷hÑ¢÷Z©¢ŠkV²Û­±–ºª­YìvUU,@•’bTÌH;$“è=’}>Ô´´TT”ììœ|,$+’³Ï[FÅDÅÇ·QÜ„””ƒÅQhÁƒˆªéãÇK$ݳt”Ye4OM¶Æ+³.V¾r„»i¦µúçOî!Ó„r…vß5ÔûEq >}1…´”cM⪺2ŽcÂë®—[ý±£—’ŠÖ¨£ùGàbއSÊ%›™èW UzÃ!ià»<ü;¸Û>­^4V?Íu¸fŽZ=˜‚ì³f‰ã7yúœ܃);S)»j¼¥:™=¶oÓimŒ›ùû*å8îCæ§/!‡o©«=:8]Ù·iÿ•³=;@äE:2qÔíÏ«‰´s4QÈq´+ˆ'Éj:,o¢H±YUÑû; åJØ>2Qÿ’I“EÓESÑ$’KMSI$“×&šiéŒi¢ziŒk¦šãë®1®¸Æ1Œ˜—$’I$’{$û$ŸÉ'ù&_—ÒwÞ[óiÌŸ§ ©ûö1l^IɼiÑÃù îfŃhîáÛÇŽÜnš Z5A5páu4EtÝUw×MvÛFs°–h®¢gks1V9.¬9™hé˜I’ÑOÑÕJú[*ÊE‚Î:KUSQ-”Ae5‰ï¦sæ×laÉ€ˆ€ˆ€ˆ€ˆ€ˆ‚,é§VkcêŽàÚµ_on’ê——â¤m(CG#c‹Cj®èF½›M¶²n˜#³fÛ$ÍwJ7OfègDñ”“ζ™%ô÷–üÚs'éÁ´€ˆ€ˆ€ˆ€ˆ€ˆ€ˆ€ˆ€ˆœµÚ“Väj¤å"ë Þ~¯be–2Ñnwp†K &Ệ¯,ÚB2N=â-äb&"ݳ–†”jÎV)ë9m]%†=³Hô¹DBê÷—ù¢‰3&Î_“·ˆŽ¸ÛøÆ™¶š­÷’WðÖå{€‚ÏšNýW³[YÆhÂÏÉz?lÒåȺS€îqœÓe¦¾7¥ù?Óí´nÕÄþ˜›Û;ä³W·â¾Î342¢ª­Í¢Ü˜+‡”Ç‘15O_‘óCáh_³¯/^A¼]{×±ø$0 ß#1ióâ%â¬1“ÐRqóPsqÌ¥á¦"^7‘‹–Š’l“Èé8ÙŠ,Ñô{ök"é›ÆÊªÝËuSY7O}vÏÐ1Kg\]ò,$Ð9bÉOtŠ‘7Š$ê.oçÀ«Yá®uè›E}Ö]ÄLµÕÓEEVÎRÎ6Ý,Ÿ²q¢n£ä㤼|¬cÔ‘}$ÙÔ{ävÙdtûæ `Æü5c“½´Ó|ñm¥î_rTz:çdè³êë¢{ò‹tÆrvKTÒG“#®Pb¦ùÓk„¯Oå7„ÔMdôU-ôU%tÕDÔOmwMD÷×i¾›ëœë¾›ëœm®Úç:í®qœg8ÉUVòK[«è8ƒߨ 'ã³£ãìø°zÉ,7·ä®“Vœ…¬ãõù¶WrÊc’9.祗ôƒ;!IŠ“ø¶í!9cZ:V~Q¬]r•8»*ä4ߨæ=¶IzÌsÇöˆi‚FGö‰pä<ÿ(r)ôUÌüO†”´Zè4^Ÿ9£¦ûkjÜ+Uäæ–åKwU½HVe¦câ[¸Z6>o*Q3ÏÑI“û I›Å%c¥âËâÖ‚–¦‹¾Ú˜‚UºëÊÏ[í}±•:½êj¸W Œì•Ô>kßĦz¾ëX;µi×}Wæì¬Ÿ“êV¢¶T_вKé;ï-ù´æOÓ…hy›Å<áeá»WR5['L]UË÷ÝLòmšÇQâdl[Eju½uÄ\õza+"=ìk¯"èj¢­Û-«†ÎÝ|˜ÛhÈÏLýr? ½f#¿º×#ð«Ögò;û D³çí+­KãÏ–üï£þ¬b{[´ó:o²pºŽ}Ά‡iñÙiRäë·›yæyß¶O·M/M/+T¼Ùóvß\¯YŸÈïîÌgõÈü*õ™üŽþè8šWZ—ÇŸ-ùßGýXÄö·iætßdáuû Óã²Òþ¥É×o6óÌó¿lŸnš^š^V©y³æDôŸ×#ð«Ögò;û }r? ½f#¿ºK0~ÒºÔ¾<ùoÎú?êÆ'µ»O3¦û' ¨çÜèhvŸ–—õ.N»y·žgûdûtÒôÒòµKÍŸ7mõÈü*õ™üŽþè,ÀF\¯YŸÈï¥u©|yòßôÕŒOkvžgMöNQϹÐÐí>;-/ê\vóo<Ï;öÉöé¥é¥åj—›>dO@ýr? ½f#¿º×#ð«Ögò;û D³å÷u)q¦}0üÃ¥Ž³7ùg:ò Ò¯ÿ´’òÓ§}£Ù4û-{ö^ÕÏún|™kãÿ&¾§Ûºýr? ½f#¿ºK0Ÿ×#ð«Ögò;û âi]j_|·ç}õcÚݧ™Ó}“…Ôsît4;OŽËKú—']¼ÛÏ3Îý²}ºiziyZ¥æÏ™Ð F\¯YŸÈïîõÈü*õ™üŽþè,ÀyûJëRøóå¿;èÿ«žÖí<Λìœ.£Ÿs¡¡Ú|vZ_Ô¹:íæÞyžwí“íÓKÓKÊÕ/6|Ý·×#ð«Ögò;û D³ýr? ½f#¿º&•Ö¥ñçË~wÑÿV1=­Úy7Ù8]G>çCC´øì´¿©ruÛͼó<ïÛ'Û¦—¦—•ª^lù‘=gõÈü*õ™üŽþè\¯YŸÈïîÌŸ´®µ/>[ó¾ú±‰ínÓÌé¾ÉÂê9÷:§Çe¥ýK“®Þmç™ç~Ù>Ý4½4¼­RógÍÛ}r? ½f#¿ºK0Ÿ×#ð«Ögò;û Â¸3©K3釿,u™¿Ë9×n•ý Ä—–;íɧÙkß°òö®ÓsäË_ù5õ>ÔOPAýr? ½f#¿º×#ð«Ögò;û D³çí+­KãÏ–üï£þ¬b{[´ó:o²pºŽ}Ά‡iñÙiRäë·›yæyß¶O·M/M/+T¼Ùóvß\¯YŸÈïîÌgõÈü*õ™üŽþè8šWZ—ÇŸ-ùßGýXÄö·iætßdáuû Óã²Òþ¥É×o6óÌó¿lŸnš^š^V©y³æDôýK “”l¾¹Ý (‚ÚcmôÎÉ+¦É©®7OmwÓ;i¶qæÓmw×ÇÇ]±œc$qõÈü*õ™üŽþè\¯YŸÈïîƒ A‚ ƒÑ{ì}‚?4Z·[ø^â—ÜíÜ”Ãx¶ûqçóo"»y]¬J¶Um×`Ç™Rïü„²jë¦R¹:å @e³fÕ¶‘púkŸöEsä4E)ýÇž Wé‘{ ¬žüÉnã¨úÛ™i-Zëî½yƒ·ÌU¥ ç]ºÑ” ïŸBO9w厕­BMeH”§ŠWZ—ÇŸ-ùßGýXÄö·iætßdáuû Óã²Òþ¥É×o6óÌó¿lŸnš^š^V©y³æì\u‚ƒ´jë¤þ±Ü¶rŠÜ¶qÁ:,ƒ„ÓdÖAtT³lš¨ªžÛ&¢jk¶›é¶Úí®uÎpzK9úy;-·õW'«V¼·ëæ³_wÎÙM U7Ô-¬ÝÃ]~Êë{µò<‡ »”Õ¾ÇÛ«uö=ÂÚEE¹EU`µ I$V¤ô¨–­jƒÅP:²pÎE¢.š¬ÙûÍÓ]»„IÓG§ÒYSÛt\7pŽúîššmºJ§¾6×;k¶3žË<ÛŒa`¶§¹Z¢QRx©2ÑMèðMè„kæÕ(æ½ÓúÜ~ˆêÑúä— Ó¶tÞäb2# ^D£'NŽ¥ñ‡KÝttòÂzBÏ·pŒ'·a=/³µeŸ¼¨¤îKŽmZJ:zæBB6ïK³Ä<•ß®#Ô’ÓGZðñ}[uZM“ž¹âÕ/X·[ã4uË;»g;Ê”]ŠÞb‘¶ñ5¢­Ç¶'½£eB7†gbä½Xµcàë{G»Nj£Ãñ;ZµãQåÎ÷ìÕšªùÌzxëé¥ë²iÑvdäøºóìQ’ß.F·Í·@Šøú¬å+ØÏ¤Òëõ9_N`UîÏ]ì‹i*Õ±FRŽ·Ò,w¢ÆªÔ:®V|ÖzÕ+;ÆfEŒÄD£T_FÊF;Aütƒ')áVîÙ=j¢­6]=µQÐSt”Ólm¦ÙÆq“ûÏgú åz’ð¶n3èw¬šýŽ~-žI­QøæÛÆÊ]Ýèš³MÓ©_-Jºª¶ç္5ºR~½ˆÂÞ|™êå_^Wsï-Zè¥÷ŽÛŽúÚÇÈv´WŒ”|:Úêí±+ø4Ñv]YšÁöÐczû >§>›+T úÓØ(_AÁå? õM~ «Ë‰Yú8ëŠ[[‡6_ou— ¸žê j–Åâ‚ø‘äVŽX8oÙ¸Ê̶U«l+§ ª»o¾ºýD:üç,_•Šýž]b¥GMFXaxò±2›í^ªÅEfÞ:•äjœÜpm·|ƒÊóZYg‰è£ VÉé—Ôaãôr73¾uÊû ÝÊqœ]? e¨ÓÊlǵ~â”À–¶û€sNk>;ïÊËazÝy’ Sê1šÜy*E®Ž£êè:ËVPìÝDQ²ÞfAÞ•J®‹$¶5x»g2Ój5v«=(‚¬Óþº Os›š“Í¢ýgËU­Öåšáž^åžöè88ï]Ö+ôè :tvº‹§=·rúRUôÅ–bzzWφ½^s‹J’F¿Ð(TøºFÈ„ÄåÍ%Âo“.¨nÉ¢ÝÈÑYÔêèØo¬{YGœzO 2ÝV¸×]cÐøœsÔO9¸äk}땸ۯœÀÆòÑ6âJ×OüiÆëñÓ†ê2§ÊZ4dó“%ìíÚ¿w»Ä_òB0{I1a'­]šÉ'¦»?ôúTG%Îðy­iäqd§UÜ£ÜlVø0«ð¹¹,™y[—Ç寔Ճè«v«GÓÜ-¢ÌÙÉ"eú?5õÕq­y 6x-û_Á‹5ñÔڢʳR,ùîDÓ¦Í V1Óù[VO0O磵²m-imTj¾$nUø=NVV£‡vYÆÌ—vÍ¢™‡Š|¦Ïž²`ž›¼xÕr:ç!rg/Wî{Sè¾K1ì’ã»ÿ6U#¸ŸvíWy5ô/z„¼Ãıd›|4cÉøîÖ¤›­ñ!PA„~¹–™ø÷—x‹ŠÎÈq¿A½MSeí.¶}kŸƒé¾=¥–Úûe6W/­–lXvŸ³½ÆûxhîzJAÂzjšZ)ªI§¦º×#ð«Ögò;û Ü}¼n^'Ü¥Ýá|œ¯=EUÖg¸iÐõðõmãlùÝkÆÔòÚù¬VbKã[õTØym~Œ}Á«¨“äèwk*¸ëÛv‹[#îéO–íÇœY¥66–«­Ã˜¬Ÿ$VàµÓ“Ö‚–obV'H-\V!  ëÔús8Œ+Â"‘\€g¢oe_=Ä„Üìü´®¬yûJëRøóå¿;èÿ«žÖí<Λìœ.£Ÿs¡¡Ú|vZ_Ô¹:íæÞyžwí“íÓKÓKÊÕ/6|Ý·×#ð«Ögò;û äo߯’Óf½–‹.µ‹u]T梠Ob¬Ù3WN\yë%9rÓNj+ ]5WZª‹U*Ž€ÿ$±?홉f'ùf$“ì’e˜Ïë‘øUë3ùýÐq4®µ/>[ó¾ú±‰ínÓÌé¾ÉÂê9÷:§Çe¥ýK“®Þmç™ç~Ù>Ý4½4¼­Rógͧ%=gõÈü*õ™üŽþè\¯YŸÈïîÌŸ´®µ/>[ó¾ú±‰ínÓÌé¾ÉÂê9÷:§Çe¥ýK“®Þmç™ç~Ù>Ý4½4¼­RógÍÛ}r? ½f#¿ºK0Ÿ×#ð«Ögò;û Â¸3©K3釿,u™¿Ë9×n•ý Ä—–;íɧÙkß°òö®ÓsäË_ù5õ>ÔOPAýr? ½f#¿º×#ð«Ögò;û D³çí+­KãÏ–üï£þ¬b{[´ó:o²pºŽ}Ά‡iñÙiRäë·›yæyß¶O·M/M/+T¼Ùóvß\¯YŸÈïîÌgõÈü*õ™üŽþè8šWZ—ÇŸ-ùßGýXÄö·iætßdáuû Óã²Òþ¥É×o6óÌó¿lŸnš^š^V©y³æDôŸ×#ð«Ögò;û }r? ½f#¿ºK0~ÒºÔ¾<ùoÎú?êÆ'µ»O3¦û' ¨çÜèhvŸ–—õ.N»y·žgûdûtÒôÒòµKÍŸ7mõÈü*õ™üŽþè,ÀF\¯YŸÈï¥u©|yòßôÕŒOkvžgMöNQϹÐÐí>;-/ê\vóo<Ï;öÉöé¥é¥åj—›>dO@ýr? ½f#¿º×#ð«Ögò;û D³å÷u)q¦}0üÃ¥Ž³7ùg:ò Ò¯ÿ´’òÓ§}£Ù4û-{ö^ÕÏún|™kãÿ&¾§Ûºýr? ½f#¿ºK0Ÿ×#ð«Ögò;û âi]j_|·ç}õcÚݧ™Ó}“…Ôsît4;OŽËKú—']¼ÛÏ3Îý²}ºiziyZ¥æÏ™Ð F\¯YŸÈïîõÈü*õ™üŽþè,ÀyûJëRøóå¿;èÿ«žÖí<Λìœ.£Ÿs¡¡Ú|vZ_Ô¹:íæÞyžwí“íÓKÓKÊÕ/6|Ý·×#ð«Ögò;û D³ýr? ½f#¿º&•Ö¥ñçË~wÑÿV1=­Úy7Ù8]G>çCC´øì´¿©ruÛͼó<ïÛ'Û¦—¦—•ª^lù‘=gõÈü*õ™üŽþè\¯YŸÈïîÌŸ´®µ/>[ó¾ú±‰ínÓÌé¾ÉÂê9÷:§Çe¥ýK“®Þmç™ç~Ù>Ý4½4¼­RógÍÛ}r? ½f#¿ºK0’úNûË~m9“ôáñþ¹…^³?‘ßÝ¢—–Yš¯6Ú¬œmȼYó.¦yvÍ\åú5‹SªÓç­âç·‡JBOЗì×^5E\j²íô›¢—›ˆ–`D@D@D@D@DN ’ø»yŽŸ%Aäú”=Ò£+»EÝC̷ʉ¤ú9Êob¥ã]£º/á§aŸ¢„”üC¦3P’mÛID¿fùº.—j¿³·¥Ú´ì|òñÜéȹˆ~ÒV&µÏ`õÔEIǺÕôdŒgóÿ;r_G¾ˆzš/!4©¢¼;¦ÍFnÕV·Jß¿Úsm_·aesec—@±ué‹(U ÝöЇýÄø¬ýÊúeøßîOþ¡àݯMÙòt{÷YÌÝmÖ8?‘êTûOõ+ÇöNM㾘ê&·V£ºáJ&òÄÜ5fƒZµæ[‘¡yfE¤Ý–ËZ®8¹P8¢ñÇõÛëH[E²M¬»XÚ—eù²°Ùßñ÷òMÏy–¨<€åÞa¶ða öíîöQµº›Á½@Ê»™nù8¶Í`U¤2bñ£ÇïV±±Z5» _$:ú¹ëÔOLS¸g«8^;ý¡=$ÊQ¹>7¤N!¼ñ÷-@XºŠ¶ñõ‘¨œÅP<Éœo2þEÕû—Ç8ê2ÌÛ”we]¥l´&+=ëÄù)]¸ŽÚ£{q§nZù+ë¨7ÔZ3á¶ïˆæCãÉ[Ç-ÎÕ³ä×&^èÐ<–«&‘–ûÆšöü7 5ÝsŸ?˱jD¢]vWYeKª÷fF " " -åÙ~l…¬6wÀ¼}ż“sÞeª 9w˜m¼#XB½»Gû½”mn¦ðoP2®æ[¾N-³Xi ˜¼hñûÕ¬lVnÂWõþ zþO_Ç~½û?€=ž€&dOC¯Á>È  >ɾ‡¡ùcÒ¨,@2#~Ñ^2âîh¨ñu—‡zRmåˆתx®:„}Ó=š­èÖ+üub´ítCº’º;aAÅÂ7Œå8Í•õòtù+Ã)æ²L˜úx«Í_´¡k¿+R:Pçþ¤úlãÎKâ~Mâ·0ps—ݧ,]EVga/ÜsÁülÑjõ:ï}^•ªÚ¥f>+RÓ²ÑUºjU|MNÜbª^Õ¥{Á]ÎE®ûu%:éd|ºñ&>1’ÊÞ¶zƒ·”ŠÝ”ñg‰°¾–±·ì¤ –V Ô‹—;¾[C-ù¯}‡…‹`KAluá7yÖ«õÃp¬Pqø@0%Ô—Åõ/Ré=Ë;Æ9NéÄwŽk‡{µÈÛ¥ñý–TŸE.F~Å¥RZÎŒ· ײ­Z¹#75Å}$,­`šÉ@)1Örì¿6BÖ;à^>âÞI¹ï2Õ»Ì6Þ¬!^Ý£ýÞÊ6·Sx7¨Ws-ß'Ù¬ ´†L^4xýêÖ6+F·a+\oµý§ÝÁò§U9QÿCýjæÅB¯ò v–±¶I®HèmÖb+’ÓuúŽÑ²ðóº×æQ*ÏçØC½šôníÞ2h¨6b£°+¾ÎF»°-vÍú{™å3­ Ÿ">§&ÖT±~!e$×e©b„¦ç ù-yÝÙ®°ü–,¶ŠŽ”µwØ•#½llzîÊÑ‘ýQ€ˆ€ˆ€ˆ8NN䚇ñý³“o’[ÅT©î&¦]¢Õ̃ÍÑG:¦ÝŒdk$Ö}-3*õVÑp± ]ü´³Æq¬PYÛ¤Rß»"¿ÚTŸ¶ô­mN»%4êÈÝ9òü¤4;72RÓ êK‰9¢ùÍ%ÞK?‘¤P¬,ÚD3AùU×Ò=ª .å4·Ê­lʶÞ2ÔÄ-šX\õ“ÓÞÊA )^ì ‚^º’PÅ”-msi^ü­nýV½{òsö޽ö}{›ó¼MÒó%Æ´‹ßr; to!5¦ò&´­ägiJÁ«c€‘ãû­ö¹ Þy-!l‘þöŒÝ}ëøEebÛGXëÏ¥73Ïšý–¯Í}ñ×'ñ5š¿ãþ)è[:a…†°»œ¹¦«=µï±+ºŒs<Þ¿Á—©™t©#+ öM³FöH…ú a<Ÿ6k¬¨Ñu§‘T{.^g“Á™ÅnMÕýF,™´Ÿ—¡s\ÚsŽüÀaÕÆJï[ÔW‘ÏKî«/Á—Eµµ‹ûV–ç²£Pýš,«-íf¼ú-°?RëhÝœ)…vM”[}PAwKí¢Zg}°‹fɬå¹×\á4¤ªëoàšIî¦Úëœ3¦þ£8ûª~2Ï,ñ‹[›*¯Î¹CpÛ)“ÜylFˆùÏÅöÔäév¦±öš÷’ÑR—Ñ´}š*}&º£™hh§»,ÅÑe’n’«®ªh ‚{¬²Ëoªi"’zçuUM󮉦žšç}÷ßlk¦¸ÎÛgÆry«û*­Õ;wOœ´æ©g¯YÛ·ëŸö…¨ázôÔlÊ(i)Öç=JFî²±Î\è–’ŽšÈ±Û}µÃ¶.Pv†Tn²jmŠûkÂ`³H ùVM¸3ù¹öJ2ê*¿ÐÁì¹e ›º¯.{@éíæ3b,OÚÔÙÅs{PzýÁn ·l|;($ŸK€f " " "’y½ÅT{ þщUa«­]VPìwÏ·Œ†¯× "Ñq%;d±L½‚¯Â°EW’³2 X7Ó*¸Ðî Û˜y_Œ8+Œ.ÜÅÌöúõ‹¸Þ Õ¶éq´»A”DNtq—Η_Ç/‡:·F5²ªù욬ÙG"»÷ ‘Þ»+¦Û,´Q]uØö\|z¥K5§ÌêµϘ+ëîw-¥˪­*kÞËkE¡¹™Â­H·-a!(,I>ú“÷KiÔúœµòï¯ÃÜ÷ÓÏ/ðŠ•wž"ê*£V¬\±Sä$&Õ¡r uýõÉT[M"ص^Ó)rzñŒÅjj"z6EŸm½”y{зTucÌÙÌÏ|Yͽv§qÛ[|[¡ïzð÷ ÐßY´âÊMÊf°æJ …žNÅ|äKkôwÛ/¦f¬P°.'`èúͯê³b2-êj™óÔÌou« ,¬MµºÝñ»Òºêèv©Íduw¿ÂÕ¶µ»¤ ©dVª» ? ¡¬fÌX f²Þíwf ¥>¢ÇP®NZ%´R6-ì³Äb"ä'%œ É ×Ù¬L,Kw’³޳¦ÇEF4u!"ñTY³n³…“Oi›§¾®"yã‘9kˆf8Sœú~å^Š¡ÚgèœåÆèHNPy=Kcj' Ô§x““ùn™/\ž¢Ûâ”dâÏo€–€}h«Â9ôZ„äNC¤ñ-ÝÉÜ“dŒ§P(uù;UÆ×2®ÈD×k°ÍT{+1$¾š)²,˜4IWUÆ›zii¶ùdž2yÓ;Ç}|ò6ðwTÒýUôÁÔ‡NK\9ė_éüoË”«Í '‚«œQÊ‹sZ ÷ØêlÄxÚn¨½6WcЖ%ƒºØ8ñ¥û_cÆú*Ó_¿Çf›«f^ü«,k°-ŠÈ Tœ@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D§QŽZ㾺Z8/…æ9ÿ–šE¬…Œb-LNfÄñ=ÐŒu?e䛕½UŒyº/l‹·—u?í)9ÖbO(2Sk,Aj5eC5±Gñ?Ô×§BËÚùÖËbå[£…uoñدà–x –Õ±%yz>$ø·]0e%O€=ô¡ÕïìéëfãKãî8ºsÏC=cÃGó¯8_S°ð/^œ:àœW yj×\ã·Ü^³ºâNWE£YÉÚ µlÍ"Y¦uMG·¢Þÿ\l&œÔž9+lô2¢£&5¶ÆÅˆ ÂÖ2ñY®/AXz8Ì™3YeÆa¤'Vßw“—ÒÕ[“y 5 *«^Öï¶ú®OEvr<‹‚G%«^¥®¶ÐëpÿÙgiza-1.5.0/docs/samples/images/sample3.png000066400000000000000000000554551477367113400204150ustar00rootroot00000000000000‰PNG  IHDR„X:Å(ÛbKGDÿÿÿ ½§“ IDATxœìÝyxT…ý¶ñg2IÈ2 !@Ø! «, Š­±uƒê[¥ÆªhÅ­.X¥*.E±jQ@-n¨àŠ£Ö*þ´µQ+*Á…M¶°ƒ²„L²ÎûÇHM !É|ç̹?×åUMÂp‡”™<9gæx@@׉²Ø`€K1À¥„àR Bp)!¸ƒ\ŠA.Å —b€K1À¥„àR Bp)!¸ƒ\ŠA.Å —b€K1À¥„àR Bp)!¸ƒ\ŠA.Å —b€K1À¥„àR Bp)!¸ƒ\ŠA.Å —b€K1À¥„àR Bp)!¸ƒ\ŠA.Å —b€K1À¥„àR Bp)!¸ƒ\ŠA.Å —b€K1À¥„àR Bp)!¸ƒ\ŠA.Å lˆÚ"-˜z®ú§xäñxÔöèÑšüáÕXw@0ë°í­?jX;<žÖúÉ¥Ïjþ?®Ò7¼¢½¿~J ¶úµù½Û”þþ_ôäò½Ö©pØ<@ `nþÐ%Nó~÷ýóö»|¶n½`¬fÕÞ®/—Ü¥qß}PU^š¾Iç]â!oïwÞQ^^ž233[6ˆkÖ¬QVV–N;í4딈ÇÂ:¬«¦ÛÿtªŽô%¨ÓÐK5ýÅÛtʧ)3n¿Ši¯.;?hÐíåçç+??¿EZ¹}nŸÛçö¹}nŸÛçö¹}nŸÛÇ኶G¿>ºFëvUKmc$I G_£¿TU)f¿ ìþT³rçë„¿úö233•™™©œœœéõù|’ÄísûÜ>·ÏísûÜ>·Ïísûuûhy Â:\øØºeòCúð®q:1-ZŠNÓO‡íÿ5ÚüÊízqÏO4Ë*r?©©©Ü¾áí·4§ÿù8ýö[šÓÿ|œ~û-Íé>N¿ý–æô?§ß~KsúŸÓo¡ÃsëSµS+×F)³Oª¼u¼»bãûú÷·4jH»CÞÔìÙ³%µÜOP`‹¯odãëÙøúF6¾¾‘¯odãë:!¬OL;õîSÿ»[u;I£º….šƒh"^=6²ñõl|}#_ßÈÆ×h B ‰†j€Ä×7²ñõl|}#__ ypÙ p)!¸ƒ\ŠA.Å —b€K1À¥„àR Bp)!¸ƒ\ŠA.Å —b€K1À¥„àR Bp)!¸ƒ\ŠA.Å —b€KE[¸E^^žü~¿RSS•m„ÜÜ\*??_YYYÖ9®ÀBp)ކHVV–rrr¬3€°µïL:ŸÏg\â!—b€K1À¥„àR Bp)!¸ƒ\ŠA.Å ¦f§æ=t¹F_r­.?#]ñ =4ròâCþ²Ú¢Ï4sâ_5wKuƒ~›ê­oéî›Õ§»jšZ 4ƒ¨W¥V>8R?·H'ß5MOüó#½8¦«Š7|sÐ_µwõ3ºø¬‡ä½`œFv‰nÐïÝy”þtEŠž:コ¹ª9â€CjØw«€•¥ÇÌW~®I^)º‹Î~ô¿:û ¿¤æÛ7tÅ)w)~æb]˜ÑªQ¿]l÷ó4uÂ<;r‚Ò>œ¬)ž¦õ‡ÀB >•Û´t[#>¾f‹^¾ôÍîx“&ŒHQãçœG­‡ß¨«¢TöuïhWm£ohŽ¢E̘ñã·#ÅÆJË—Kóæø¾ÌL)++øï¹¹RaáïÏΖRS¥¥wÞ9ð};Jgžü÷wÞ ~Ìþ²²‚·ß+¿Rw½û…òk$i±îs®^Œ‰×€që¶ã[×9öJóïÕø·JtôŒ‘ ž)Z«¢/_ÓC7_®‰ïJÝ.Ó‹sïщ[Ö¯Ïú«öŽþ‹î¹íJÌLøþö¢»iÔ}uÝõWëqKuïOâ4G:ô½â1½ôÌÍ,I¬›Ÿ™£9sžÕíõŒAIš?ýEmÕ>¸­¼’¤(¥ ÊÖ/¿©ë{HÚ½Cñi­¯Š=oŽÞ›yƒFí?%IÑêxì0¥©@Oþma ~†GÑB.»¬þ÷õëü§>ÙÙõ¿¯[·ƒßöi§º­¥üëã"Iê“{ÀÛ=ÉÃ4ñÙ«•{Ât]yå;µR·¼9Jiõü8&¶Su’ôåïJ:¡¥³àb!šÉòo$)Q©‰Þ¼Ç£äá“ôÌeôíkS´ñ¢ÛuZ»úÿêy“:(I’¶~Õr±€„@£*¶ê“™ã5jȹz{Ï÷o/«’$¼uý­ò¤hÈg©“¤…“V¾?Pïí{¼1ÁSN+Ëšµø!!ÐHžV5ìÌ!Ú³z‡ö¿b`Ç$IªTiÅÇ^ t¡îÿóv]yó±Š^7Uß»X¥õÜ~ ²§\ðI›´pÝþC/ â'êêO£)cz(¦U_]3óõÓRM3MKêØ„{7.ÒfIýFŸÒ,ŸP!P‡Ÿ½¡'&MQð 4yâ#zù½•*9ÈÅâ{üîNN)Ó‚7W(øì¿ ­ýGqÆmhãÕn­¤jíÞPÛ)ðù­Ê:󽺡r¿[)ת·?Qqü©špQ#/ž4’'8Èyqh³gÏ–$åää— ÙìyC'uPãÖ¿¯³Zï{c¶¾|®Ž¾>Y/­˜©“[×wÅÂúŠÞÓÅ}ÎÖ†;ëÝ«2{è_qøþ9t8BŽ:ŽâUçsfêõKÖèÏSé /$ZÏmë“{ÆkÑÿ›­¿_Î@Ëc(Û¤…o¿­5Å›ôß¼ÅÚT¶ßò‹j­ŸÝùº&yе}¡’†ŽÂ@±M¿VÓ&ë½é£Ôᇗ2Z@´uà4ž„®’3C›ê;ƒÁÛN'Ýñœzô–>ÿ¶¿Nèxè¿fÕß|©mÃÐó?mÇ_J„ ß{-"VGœ­Î üèèN#4ªS‹?Â)£àR! ‘¼¼<ùý~¥¦¦*;;Û:;¹¹¹*,,T~~¾²²²¬s\#„àR! ‘¬¬,®£ľ3é|>Ÿq‰{p„\ŠA.Å —b€K1À¥„àR Bp)!¸ƒ\ŠA.Å —b€K1À¥„àR Bp)!¸ƒ\ŠA.Å —b€K1À¥„àR Bp)!p05;5ï¡Ë5ú’kuùéŠOè¡‘“ò—Õ}¦™ÿª¹[ªôÛTo}Kwßü¨>ÝUÓÔb Á„@½*µòÁ‘úù¸E:ù®izâŸéÅ1]U¼á›ƒþª½«ŸÑÅg=$ïã4²Ktƒ~§èΣô§+RôÔy×èÕÍUÍRþ[ܨü+=þ`¾jôsuHòJÑ]tö£ÿÕÙù%5ß¾¡+N¹Kñ3ëÂŒVúíb»Ÿ§©æéØ‘”öádHñ4­8Žõ©Ü¦¥Ûññ5[ôò¥hvÇ›4aDŠ?ç­µâµC±çÍÑ{3oШýÇ $)Z¦4èÉ¿-lÁÏàaÈdee)''Ç:#dÚtR³Þ^R¿~>Êjÿú¸HR†ú¤ÅðvOò0M|öjåž0]W^y³†o­Ô-oŽRZ=?މíÔ_$}ùÁ»’Nhél€°±ïL:ŸÏg\â!šÉòo$)Q©‰Þ¼Ç£äá“ôÌeôíkS´ñ¢ÛuZ»úÿêy“:(I’¶~Õr±€„@£Ô-ÐÙÔÎëQT§,ÝúÞí»r`Y•$yä­ëo•'EC.8K$-œü°òýz7&xÊieYsç`ÿØ:âÞÚ^±Cý¡T™¨Ï¾Ûm“$©R¥?{Ò…ºÿÏÛuåÍÇ*zÝT]|ïb•Öó{*ËU%IIi-óIßaõ üxصûÍxÓ3AQÑítü×kpõ}wˆpx†$jÃî\X>àׂ»ÇiñètóÄYúË`VÞ3FS¾*¯ó·­Þ³EE’Ôãøæül€aõTï ©SµöVÇaf¯6Ú÷ Á½ë?—N«Ÿ&ÿû” ~"i“®ÛèTüñD]ýéo4eLÅ´ê«kfÞ¡~Zª‰c¦iI›pïÆEÚ,©ßèSZêS$1:íüì =1iŠ‚~X ÉÑËï­Tɾ‹ÅW­×?^NÔ÷Ÿ®¶ßý-êñ»;5:¥L Þ\¡àY¤Z;û:ãŒ)ÚÐÆ«ÝþZIÕÚ½5 ¶ Ràó[•uæ-zuCå~¿s¹V½ý‰ŠãOÕ„‹2CöùÀ<@çÅ¡YÍž=[’\uÙ‰ˆVS¨ü¿¿¡Ò¬ßé¤N1û¿C[_>WG_Ÿ¬—VÌÔÉ­ë»baýEïéâ>gkËõîU™Š=ô/ˆ8|ÿ:!£f—濟ϸÄ=8B.Å —b€K1À¥„àR Bp)!¸ƒ\ŠA.Å —b€K1À¥„àR Bp)!¸ƒ\ŠA.Å —b€K1À¥„àR Bp)!¸ƒ\ŠA.Å < 5»>Ó+ÏÔÿ­(²N€ÃÆ ¬Cõ¶w5ñW½”äñÈÕVýGÝ gíVÍwï÷¶ý©Nëù/ývàÙ¦ÐÑÖáhæè_éΧkÚÿÖïk¯²5óôçÇëºÆèÎk†«­WŠj• O Á·ùÅó´ùÿfð¶Ÿý,J½{ghÛ6iÍš?¾}{©OŸà¿ÏÛ¿ì'¿_š=;ø¶ØŠ]j½û+y½ÒñÇß¶~½´iÓ¿¶{w©k×à¿ôÑ÷oßÑñ$IÒ˜1Rl¬´|¹´âÕ¨®ósZ¼X*-=ð¶ ¶JŸnî§Šøÿ{_ÇŽRVŸUÚ»eKŸSïÞRZšTQ!åçø>¯Wúù¯Ú*yà@åçK_||{LÕ¥ìZ¬®]ƒŸ×?§}† “¢£õ£¯ÓδÊè­¬¬ïßVøÉ'ª­¨øñ4€¯W/ÅuérÀÛJ×®UùƇu{1­[«õàÁ¼­jÏíY¼ø°nO’R‡ ST\ÜokÊ眘ž®ø#<àmÍý9Wûý*Z¸ð°nOªûsà µ••*üøãÿýw«”Ô¯ßS¹k—Š¿úê°v'ô£·íúè#ª«ëøèCKê×O­:t8àmþUÁÇ¿ÃÛ6øø·¿¦~ÎmGŒ'úÀo!›ò9×õø×Ï9-’ÊË|û‰£Ú*uð@-_.Í›|Û¾ÇüN¤ÌÌàÛòóƒß7ìoð`)1Q?úþjgÚuè­3Ï þ÷;ïHþÏ>‘·öû8Ø÷"­ZIC‡ÿ}Íiui/•'|ÿ9*õL >þ5æ{)øýÕ€cƒ¹¹ßä­ò+u×Âz?'éàß3¶¦§ÌLýï{ÆÔùòV¿kì÷Œ¥¾t•ù¾Ì3FªÙ¶Ak>.Ð'Ÿlמ={þ÷¾¤¤r­¬øJCO>ùÇhv!¬Ãk <úÅ#OêÚTR«u8ê]~ß“úëé;ôüô7´¶¼áCØ(YºT…û"N mßn]8Ÿ'°n~àÆŒ.ÚõÌ*Í‘ø£÷ÕîÎ×ÌÇëÈ~Ÿê¼s7jgåû‡¼½Ù߆ËÉÉiöV„‡›n’n»MJJ².ì³ñé§Õþ”S¿ï0ÇàûçÐáaÆÝ}‚–<öºÖÕq\T›¡úýu#´ñÕyÚUóã÷ÃÒÓ¥_´®ì¯|ófÆ`„ú÷¿¥Í›­+€ÈÀ ¬Ãç=«7~¿[OÞõÞÝRõ£÷{ÒïŸú^ºîƒ:„£óÏÿþù˜{ÕÅÅŠII±Î@ ™4IâË 4^T¦N±êrò5ºç`ÏcmÕ]¿ú@ÈŠÞ|>©_?iáBiÈë4·¢E‹”$_¯^Ö)¨lýz%ôèaŸ|Ìõù¬K€ÈÀB ™ŒËi£‘**6V%Ë—[gh„Ò‚a„zâ é²Ë¬+€ÈÁ šÉ1ÇHS¦XW %$tï®òõë­34BùúõJØwM!DŒ¢"©  xy̓A4#¯×º-!:)IÕ%%Ö¡º¤DѼôsĉ—žzʺˆ, B ™]{­uZBtJŠªö»h.€ðUµg¢yÅ‘ˆÔª•”‘a]D!Ð̉ë GžÄ=TVP` Ê ”Èó#ÎW_I_~i]D!ÐÌ®¸Bzüqë 4·„=T¶nu€([·Ž”‰@“'KѼ>>Ðì„@3;ê(éÛo¥;­KМzôP/,8BLJ ƒ0ÂìÜ|l=ê(ë ò0pñÅÒœ9ÖhNÞ„Õ”–Zgh€vYYò&$Xg Íš|lÐü8ð´€Ñ£¥(~ÜqbÚ¶Uå®]ŠmÛÖ:\£¶Vzí5éíK€ÈÄ·¬@ ðz%ǺÍ-‘瀉§Ÿ–bc­+€ÈÄ ZÈÞ½ÒÍ7[W 9%¤§óJ£bQQR¿~Ö@äb-$.NZ¾\ڴɺÍ%áÈ#U¶aƒu€ƒØ=¾ušÑæÍÒXW‘A´ ±c¥3¬+Ð\¢ââT[Q¼Ø$€ðhÇ{ïYW =ñ„TRb]D6!ЂFŽ”þýo©²ÒºÍ¥UZš*¶o·ÎP‡ŠíÛÕ*-Í:ͤ²2ø:r¤u Ù„@ ŠŠ’Î<3ø€†ÈÐñÌ3”d eëÖ)!=Ý:ÍäÿÎ:‹WíZ—ZØøñRLŒušK«Ž­Ô£´ @mŽ=Ö:Íä©§¤^°®"?sZcB£|ãF%y¤ušÉHœ ´<!ß|#ÝwŸuD®@m­55òDsòS¤8кp!;JsçJ~¿u D¦½[¶(¾Kë 4ƒ’’à󄃑 /”ž}ֺ͡dÙ2í^°À:À~Ê ”‘afðÜsÒŽÖ€{09ïVú|Ö%€{ðÌk „x@âõœÏ%׫ڪ*Eñ2²€¹Úª*y¼^y¸`ã=þ¸t÷ÝÖ€»pÏ „c0r$y¤Ê7l°Î ©|Ã.7!n»MÊÌ´®Ü…oOC$//O~¿_©©©ÊÎζΡիƒ¯8:nœu š"1##øœ%¾sÌ•®]«D^P&"ôïo]k¹¹¹*,,T~~¾²²²¬s\#„@ˆedHsæH••Ö%hŠ„ôt•XgÐw¯0Ê Ê8Ze¥ôÒKÖ€;q„0D²²²”““c0%}¶ôÊ+Òùç[×àpŶk§Ê;­3Hòõî­Øví¬3Я¼"mÛf]p°ïL:¯,2! \r‰ôôÓÖh*ob¢ªý~ë ÀõÚqZ™ã=ýtð±@è1©©RÏžÒªUÖ%hŠÄŒ •­]kŽöÙgÁ’IMµ.܉Ayì1©W/ë 4EBF†Jy!4Éßþ&ýáÖ€{1#\.Ëùyah² ¤Aƒ¬+÷â[RÀÐ’%ÒÃ[WàpyTSVf¸Úμ<ë4QïÞÖ€»1C}ûJ/¿,UW[—àpŶo¯ŠíÛ­3WªØ¾]~žŒíXÕÕÒ¬YÖ„€¡èhéôÓ¥×^³.ÁáJÌÌä´QÀHYA33­3p˜^{Mڲźƒ0vÅÒSOYWàp¥¦¤£Ž²Î\©tÍ%rAzÇzê©àc [ BÀX»vR·nÒúõÖ%8ÞÄDE'%Yg®T¾i“â»u³ÎÀaøüs©K—àc [ÑÖ¤'Ÿ”<ë pŽÀwO¾öDó­Œ=ø 4nœu‰A„Æ 4NÙ† t°I“‚gǰÇ)£@˜øüsiÚ4ë p†²‚%fdXgà01ðÁ ÂÄ€ÁKPTVZ— ±ª‹‹µéÙg­3W)]»–Wu ÊJé‘G¬+ìA„‰èh);[úûß­KÐXÑÉÉ*߸Ñ:p•Ê;Ë+’8Îßÿ.•—[W؃#—^*=ÿ¼u‡×çSuI‰uà Õ%%òú|Ö8 Ï?|¬>„@II‘úö•Ö­³.Ac%fdpz Dxþ 3ÍŸ/¥§ë„!f~XêÑú•˜™©Òµk­3WàùƒÎôÐCÒu×YWø!!4ƒÄôt!"¥k×*1=Ý:ôðÃR¿~Ö~ˆA„¡eˤÛn³®@cDÅÅ©¶²R ¬S€È¨¶²RQqqÖ%h¤öí­ Ô…A„¡~ý¤÷ß—ü~ë4F\çÎÚ»u«uÑj«ªÔaÔ(ë 4‚ß/Mj] > B y<Ò˜1Ò¬YÖ%hŒÄÌL•®YcD´¨ØXµ4È:0k–””d] > B LýîwÒìÙRm­u *13SþÕ«­3 lÔÖË~÷;ëõaa*>^:óÌàó á q;ªâ›o¬3 l¼ù¦ô‹_Ó„§hëõ»åë4ŠÇ#o|¼jÊÊäMH°®sO>ü@øâ!à¼p¥s$¤§«” Ô-¢tíZ/YbF˜3GêÔɺÀÁ00·~½ôûß[W ¡{öT)Ï#ZDñW__u ŽÁÉ@øc—ÂYO IDATa®{wiËiÛ6ë4DbzºÊ¸@=Ð"Ê ¸ ½ClÛ&M™b] !xaˆäååÉï÷+55UÙÙÙÖ9p˜«®’}Tš4ɺ‡âMHP÷«¯¶Î"O ÀósäÑG¥ŸþÔºN”››«ÂÂBåçç+++Ë:Ç8B8À™gJyy\¨Þ)¼qqÖ @ÄÙ»u«Zñd4GðûƒYgži] !8B"YYYÊÉɱ΀Cy<Òþ -Y" f]¡Wºf|½{[g fÍ’ÆŒáéž8<ûΤóù|Æ%îÁ ‚Ÿ'p3ÿêÕê0r¤uàÍ7¥7Þ°®ÐPœ2 8LE…u"PScD”½[¶(®cGë 4Àÿý¢œ„A8HI‰tÆÖhˆuû›ªyÒ'Ð,ªý~E'%q¢Cx½ÖƒA8HR’”‘!ÍŸo]‚CIHOW)—ŸšEéÚµJÌÌ´ÎÀ!ÌŸ/=ñ„u€ÆbsãÒÔ©Ö8”ÄÌL•®ZeD„ÒU«„0uªtÒIÖ‹A8L¯^Ruµ´fu &13SeëÖYg¡lÝ:a˜[³&øØÔ«—u €Æb4~¼TP`]ƒ‰ŠUmU/.4Q ¦FµUUŠŠµNÁA<ø týõÖ—ˆk:C|·n*߸Q =zX§ŽU¾q£â»u³ÎÀATVJß|#a]àpp„p°íÛ­ p0¾ž=å_½Ú:p4ÿêÕòõìiƒˆ•rs­+.GÂ¥3.R_¯GG)Yã4ý?ߨZ’*×i΄S•êIÐÏn{ß:hQ€tÖYRy¹u ê“Ø³§J„@“´8PÉXg@Ärä ìÙ“zõξ’¤Y—벓;Ï}í¡³~;DÝŽ»GÏý™—¹Bdóx¤‹.’fͲ.A}bÛ¶UåÎÖ€£µêØQÞÄDë Ôã±Ç¤·Þ²®ÐŽ„R¬ú\z»N‰“V=:]Ÿ•î{û^­xémµ›­î1–}@h\t‘ô ¯[¾bÛµcˆH55ÒóÏK'Ÿl] ):¥¨Ž¿Òíc:JÛfé/o«ZIÚ»\/ý§«.ÕY^ë@ âã¥3Î^}ÕºõñõêÅi£"Ò«¯ƒâã­K4…c¡äÓ±¼AƒT®·ï~^kª¤ò¥/飞—é—íüitÕUÁÓGž{ö”Ÿ Ôˆ@>| àlŽ^N1êö_%J_MÕC wè«—hàØÔ†oŽá"©©Ò9çXW >û.= ñ6̘a€zlÙ"ýâÁÇ ÎæèA¨¨4~ë¥:BÛ4ëÖ{õðâcuÉÐ$ë*ÀÄÒ¥Ö¨‹'*JQqqªáå`F©)/WÕž=Ö¨G—.Òm·YWh΄’~z£&eŪüƒiZ0üB J°.lLž,}þ¹uêâëÕK{·l±Î¥tÍ%ffZg Öš“㡼G({âEêÕ_—_ÐG­¬{#ãÇK÷ßo]ºt<ë,¾±©tõjùzõ²Î@.¾XZ³Æº@sqþ ”›–®'þAç¦s­ ¸×€RYÒ"GÃÓš5ÁǾ4@䈀AX®¥Ï¼¡NWœ­®ÑÖ-€­o”¦L±®€¦ ÔÔ(P]­¨Vœ÷n¦L >ÖˆŸP5ÚýÉ_uÍÛÇiÊmi‘°n&>\â58]ù† Š?òHë üÀ¶mÁ#„Ç[—hNŽ„ÅïýN¿|Q;%IítþË44Ñ8 #GZ .êjUí٣ضm­S€°ç_µJ¾Þ½­3ðë×K·Üb] ¹9ò ZâÀ té/û)½_–®zö#ÍøGý}ô‘TTd]ýÕ”•ió /XgŽà_¹’” CÆIYYÖš›#zÓNÕ½ÿZ¦{­C€0µiSpN˜`]‚}¢““U]\l8Buq±¢““­3°ŸM›¤®]­+´¬èÜs¥·Þ’¸zxiÕ©“önÛf„µ½Û¶©U§NÖØOy¹4z´T]m] %0-]x¡ôôÓÖ%ØŸ¯W/•®Ze„µÒU«8]4Ì<ýtð1%Ú‘ç•8!¡ÆŒ‘^xAªª².Á>¾Þ½å_¹Ò:kþ•+yA™0RU|,3ƺ@Kág=!’——'¿ß¯ÔÔTegg[çÀââ¤çž“<ëìÓªCU|û­uÖ*¾ýV­:t°ÎÀw^xA:çœàc  ¹¹¹*,,T~~¾²x£`Œ³®ÂOL›6ªÚ½[1mÚX§a‡¿á§]»à ¹<@ `éfÏž-IÊÉÉ1.-[&mÝ*ýò—Ö%¤ÿþ·¢}>µ6Ì:?€jÊËåMH°.`ŒïŸC‡ç®sgiÒ$‰ý„_Ÿ><¨Çà €ôßÿZW!áÚ´‘Ž?^š;׺’Ä*ß¼Ù:jî\éí·­+„ƒp?þQš:Õº’þw¤Úï·.€zM|ìù„€ ¤¥IJ}d])xù ®G(PSc€ïüç?ÁÇŒ´4ë¡À \âž{¤áí+ q=B .[çÌQÙºuÖô׿JãÇ[W!à \“0\$ôè¡Ò‚ë ¬”(¾[7ë Hºï>©Kë ¡Â \¤ªJºöZë x¼^ùzöä¥_ïÔìÝ«¨˜y¼^ëH<غ@(1‰‰‘ü~iÁët>÷\Ùß)]µJ¾Þ½­3\ï‹/¤ùó­+„ƒp™[n žáÂÿõ× Â0pçRÛ¶ÖBA¸LÏž’Ï'-^l]A¥k×*!#Ã:ÃÕ/>6ôìi] Ô„€ Ýz«ôòËÖ ÕVVÊ¥¨˜ëW»ûîàc÷a.Ô§OðeÅakïÖ­Ú»m›u`Ê¿j•9,ejùr)..øØÀ}„€‹ñ"—¶ªŠŠTøñÇÖ€)ÿ×_ËÇ1Õ·¯ôøãÖ¬0»öZ髯¬+Ü+13S¥kÖXg¦J׬Qbf¦u†«y\n²ãßÿÖÞ­[­3\gÒ¤à™ °?!€tï¼.!B+1#CeÖ@H”(1#Ã:ÃUÊʤ¬,‰Ë>ø!!€:½òŠu»x¢£Õ.+Ë:hq5eeòÄÆÊmâ* Òõ×[WG܇H^^žü~¿RSS•mÒ‡JíÚI'd]âmŽ;Î:hqþ¯¿VRŸ>Ö®²q£Ô¾½o]Znn® •ŸŸ¯,~P!P§ ¤»ï¶®iJ–-SR¿~Ö®rñÅÒîÝÖÂGC$++K999Ö@ƒuî, ,Í+i] R”mØ .çŸoásçïË;w¶.fß™t>ŸÏ¸Ä=8B ^7Ý$Ý¿u€HQ]\,ob¢ B•–f]à.^ŸOE Zg-¢dùr%3C¦gO醬+„;!€Cš?_zé%ë wˆïÒEå›6Yg-¢|Ó&Åñd¶9úh©ukë áŽAà”~Xª¨°.qG±íÛ«rÇë YUîØ¡Øöí%Ç:%âUTHÏ=g]À)„)!AºðBéñÇ­KÜ!ù¨£T¼t©uÐ¬Š—.åtÑyüq©´Ôº€S04È¥—J/¿,•”X—D¾¤£ŽRÉòåÖ@³âeB£¤$x_}é¥Ö%œ‚A Abb¤k¯•Þ}׺$òŶk§Ê;ƒ¯D‚@@•»v)–—»lqÓ¦IW_¼Ï€†àÂôì·¿µ.p„îÝU¾q£â<Ò:h²š½{Õ¬3"žß/ååI·Ýf]ÀI8B Ñxq™–—ÄóA¼ññj;b„uFÄóù¤wÞ‘¢øî@#p— Ñrr¤ ¬+"[Rß¾ò¯XaÀaâ⬠8 ƒ@£Ýx£4q¢uEdó&&ª¦¢BêjëpíµÒ·ßZWp"!€F6L*.––,±.‰l¾^½ä_¹Ò:@˜[²DÚ²EêÐÁº€1–»ï–n¿Ýº"²%Àóáx…Ÿ|¢ª={¬3"Úí·ï“àp0–¾}¥3Ï”*+­K"Wbf¦J׬±Îšdçûï+:1Ñ:#b}ð”–¼O€ÃÁ pØ.¹Dе®ˆ\žèhyããU]Rb–ê’yãã剿*W-%?_ºóNë NÆ Ð${öH‹YWD®#ÇŽU´Ïg–’eË”tÔQÖíO’:u²®àd BMâñHW_-UUY—D¦è¤¤à2à@ÅK—*¹댈TU%íØa] 04Ir²tþùÒcY—7{·lQ\—.Öé±Ç¤9s¬+D!€&»üréå—ƒ§€ÄlI{öïs/»Ìº@$`h²˜é†¤ûî³.‰\\ NS¼d‰’ °ÎˆH÷޼ω±. „šÅÙgK×\c]™jÊÊTððÃÖ@£ð‚2-cãFé³Ï‚÷¹Ð„šMçÎÖ‘É› ÚŠ ÕòÊ=pˆÚª*ÕVVò ¹- &FúÛ߬+D!€f5kVð§×h^¾Þ½åÿúkë  Aü_-_ïÞÖ©S'.B y14«Ÿÿ\š0Áº"ò$¨’¥K­3€)YºTÉZgDœG±.‰„šUÒ AÒë¯[—D–„ôt•Xg RZP „ôt댈òúëÒúõÖ"ƒ° *·ñÓz .·Þ*Ý?«oNž¨(Å$'«r×.ëà *wíRLr²ZzåëçJ0@Å%„‘â¥K•<`€u†c½òŠ4s¦u·c0uë­Ò”)RI‰u‰3µ>æíY´È:.µgÑ"µ>æë G*) Þ÷{®u ·c0åóI7Ü Mšd]âL­ÒÒT±c‡µµÖ)p™@m­*vìP«´4ëGš4)xßçóY—p;!sçœ#x¢u…sùzõ’åJë ¸LUa¡Úwœu†#-[ü‡’„ÂÂÈ‘ÖÎÕzð`ñ…u\&¶];¥rŠu†#mÚ$M›f]A BacõjéŸÿ´®pžÄÌLùW¯¶ÎÐ@§&õêe]A Ba£kWéž{¤Ý»­KœÅ¥¸ŽµwëVë±{·ôßÿZWÀ„ÂF\œôç?K·Üb]â<­9FE¼Ú(Ön¹E*-µ®€1„•ÓO—ŠŠ¤O?µ.q–䣎R ×#DˆΛgà8Ÿ~¼o;ýtë8ƒ@Ø™2Ezî9ë g‰Š‹ST\œªŠŠ¬SáªŠŠ´{áBë G©®–nº)xßá†A ìté"=ö˜u…ó¤ ¬=Ÿn·çóÏ•2x°u†£<ÿ|ðô]ºX—ÀE[@}ª«¥’©MëgH9öXÕVTXg ÂíY¼XGŽká(^h]õã!€°õõ×ÒÅ[W8‡7.N1­[[g ‚Õ”—«¶ªJÑÉÉÖ)ŽQS#y½Á q„0Dòòòä÷û•ššªììlëÀú÷—zö”æÌ žnÀVñ—_ªõ AÖŽ1gŽ´aƒ4~¼u ๹¹*,,T~~¾²²²¬s\#„ÂÚĉÒÔ©\›E‹©õ1ÇXg8ÂîÝÁû®«®².€ƒãaˆdee)''Ç:pœÄDéÎ;ƒ¯Ð7c†u3jk%/X4—@uµªŠŠÔ*-Í:Ånº)xß•˜h]8˾3é|>Ÿq‰{0„½SO•:w¶®pŽoçÎU|×®j}ôÑÖ)ˆ ÅK—*©_?ë Gøà©¬,xßáŽp„¬ œ#eð`}ö™u"LÑgŸ©ÍСÖŽ'M›f] à àëÖI÷Ýg]þâºtÑÞ­[ÿwê(ÐTÚZíݺUq\H¯AŽ;NjßÞº†AÀ1zô>þXâÚ뇖ԧü+VXg BøW¬PRŸ>Öaoñbéí·­+ q„å‘G¤ë® ^´õK2„ÓFÑlŠ>ûL)C†Xg„µêjiܸàårÀI„¥[7iôhiòdë’ð–н»ÊÖ¯—ë8]  ²õë•н»uIX›<9xßÔ­›u 4ƒ€ã\u•TSc]æ<ùzõ’Õ*ë8œÕ*%öì)y<Ö)akÙ2éùæ gâ²Çã‘n¿Ýº"ü¥ ¢ÝŸ~*_ïÞÖ)p°ÄŒ ÅwíjÖÞxCš>Í À™8BÀ±öî•Þ{Ϻ"|%fd¨tíZNE“x¢£åMH°Îk&H={ZWÀáap¬˜éÞ{¥•+­K”ǣĞ=å_½ÚºˆH6H»w[W@Ó08–×+=ú(Ï)<˜6C‡ªháBë âÔÔH—\"mßn]Mà àh½{K#GJÓ¦Y—„§ÄÌL•®YÃi£h¼@@Õ~¿uEØš6-xßÃSt8ƒ€ã]wôÁRQ‘uIòx”˜™Éi£h4ÿêÕúæ7¬3ÂÒòåÒ»ïï{Àé„Ïë•Þ|SJI±. OmŽ;N»,°Î€Ãì^°@mŽ;Î:#,<]Ýëµ.€¦cˆû^î}×.ÛŽp”˜ž®¸N¬3à$€Ê ”˜žn]–æÌáUED!€ˆré¥ÒçŸ[W„Gíñ ë 8HÉŠÁëWra½TVÿ71Ѷšƒ@DyøaéÚk¥Š ëÀ¹vÏŸ¯6ÇkV**¤SO•JK­K y1D”®]¥±c¥[oµ.œ)PS£òÍ›•У‡uJX¹õVéâ‹9: ò0Dœ /”6n”æÍ³.œ§xÉ%÷ïoV>ø xŸrá…Ö%Ðü„"ÒOH?ù‰uEx©)/×¶×^³Î@˜Û=>¯.ºŸ¢"é–[¤Ç³.€–Á ‘Ú´áÔ®òÆÇ«dùrÕî{e àj++U¹s§â:w¶N ññÒÓOKmÛZ—@Ë`ˆh<"½ü²uEøhý“ŸhÏâÅÖS{/Vk­ U+©_?ë h9 Bí’K¤¿ýMڴɺ$<´9î8íž?ß:aŠÓE¿·iSðôé„"Z|¼4}zðú„55Ö5öbÛ¶UmU•ªý~ë„™j¿_µUUŠåÜHÕÔï3Î?ߺZƒ@Ä;úèàõÃ&O¶. m†UQ~¾uÂLQ~¾Ú j&OÞg}´u ´<!W¸þz‰3á‚R† Ñn!~`w~¾R† ±Î0·`ôÉ'Áû p!Wðx¤“N²®Þ„Eû|ªØ¾Ý:a¤ÃgÈ›`aÎï—ž|2xŸnÀ ‘¼¼<͘1C¹¹¹Ö)€«Iü£u…½ÔãWá'ŸXg Œ$hN>YêØÑºp¯ÜÜ\͘1CyyyÖ)®Á à*))ÁŸü?óŒu‰­äAƒTüå—Ö@ؘ=[â¯7жp‹¬¬,åääXgtï½Ò)§ŸSاu ׫„=Tºf33­sS_-͘!ýë_Ö%²³³%I>ŸÏ¸Ä=8BÀubc¥§Ÿ–.¿\*/·®±Óvøpíúè#ë ÀTyyð¾à駃÷ à6 B®”‘!M˜|N¡[%¤§kïæÍª­ª²N‘Úª*­6Í:ÃÔõ×KW]¼O7bp­SO•:u²®°Õzð`íY´È:Fö,Z$_¯^Öf**¤þý¥Ñ£­KÀƒ€ë=ù¤´j•u…ÔŸýL•……Ö0RøÉ'JýÙϬ3Ì´j%]}µuØbp½“N’ÆŽ•ÊʬKB/&%EÎ8Ã:ªvï–<Ť¤X§„\Y™ôÐCÖ„\/3Sºæéºë¬K€ÐÙ5ožÚºôèàu×I]ºXW@x`€¤ìl)1Qš9Óº@@{/VëÁƒ­KBnæÌàßõï^Ù\Aß™"ÊIDAT·Ýf:FÀœ¾t啦S@ð£@5tè ååI|`:‰ÿ9{÷V)O ;Q‰‰JhßÞt ¿[°@ZµÊt B¨‡Cš6MzåiófÓiü+"6Vqç§²íÛMGjdóféå—%›ÍªuB!€jŠ—fÍ’ÆŒ‘Š‹M§ñ¯¦W^©âìlÓ1€j+.¶öÍY³¬}P=B¨ÔTëLaT˜OÚÛ²¥Üeeª<|ØtÔ‘×í6ÁïÊË¥[o•¦L±öQ@õQ †ºt‘7¶¾özÍfñ§¤Œ \³Æt ÔQÑâÅ:¼i“é~åñHO7g޵j/ÌŸ“þçtZ÷r" Ádÿ²ej6`€é>çrIwÞ)½óûø…|àäÓƒ¥¸8æAƒY•‡©êÈÅ·nm:ŠÏÅÅI}$%%™NáKF$''GÓ¦MSVV–é(ühÃièP)ÜÌé*(оE‹LÇ@5gg«é•WšŽáSn·TXh}MÂWVV–¦M›¦œp½9?QÀ‡ú÷—®¹ÆzÐE8ÍQ—šª#_}%OE…é(8OE…ʶmSÃîÝMGñ¯×Ú§þùOÓI üpÉh€dffjÈ!¦c€Q£¬KG}Tš4Étq8ä¼ì2üøc5½újÓip?þXÎË.³ƒ&}TêÐÁºw@x»é¦›$I‰‰‰†“ØgÀyD:qB*(0Äwœéé*Y¿ž‰êƒ˜×íVÉúõr¦§›Žâ3S¦H‡[ûÀ÷(„à'/¾(µje:…ïDÔ«§†]»êÐÆ¦£à NND&s1””XSL¼òŠé$¾(„àg_|a=1$õí«âìlÓ1pÅÙÙJêÛ×t Ÿq:­2i: „/ !øY§NÖ‡Úpx`ZTb¢âÛ´Ñ‘¼<ÓQpš²o¿U|›6Š ƒûnrr¤Õ«M§{ €ŸÅÇKYYÒ“OJŸn:MÝ5ëß_û—-3§I<ÿ|µ¸åÓ1êìóÏ­}¥GÓIÀ(„ Z¥ð¤Í›M§©›zMš(ºqcËÏ7§‰ˆŽ6¡N6m²ö‘¬,kŸø…¤iSé½÷¤ädÓIê®ù A*Z¼Øt „‘mÛ¤{î±ö‘¦MM§û @¥¤œ*„%%f³ÔELóæŠˆ‰‘k×.ÓQ&Z´°Ê`JŠé$`/B0 ¤D8PÚ±Ãt’ÚK¾öZí[¸Ðt Û;ø¯™ŽP'EE’×k]"ššj: Ø… p:¥Ù³¥;ï´æY Eq©©’Ã!WAé(¶å*(БM›LǨµü|éºë¤ýûM'û¢€!íÛK³fIÆ…î™Â惫hÉÓ1lkßÂ…j>x°éµ²c‡µíÏš÷Õ@¨¢€AiiÒœ9Ò˜NR;q­Zé¼áÃMǰ%WAäp(®U+ÓQjìÛo¥»î²¶ý´4ÓiÀÞ(„`X»vÒĉ¦SÔ^Dl¬é¶TøÁJ¹î:Ó1j%;[š;×ÚöfQ ˆLœ(}ù¥évǾûN±±ŠmÙÒt”Z7NjÓÆt €D!€ rÿýÒøñÒúõ¦“ ˜í[°@)×_o:F¬_/k:àtB"))ÒÂ…Ö™ÂU«L§©×®]:ªL !G·nU½¤$Å4kf:Jµ­ZemÓO=e: àtB2IIÒ¢EÒ‹/†Öãø£4ÐÞùó­Iåà^¯ö}ø¡š‡Ð½ƒ H/¼`mÓII¦ÓNG!€ Ô ´d‰B'ݨ‘:vTé† ¦£„­Ò ”б£¢52¥ZŠŠ¤yó¤?´¶i@ð¡@r8¬¿wï–þö7³Yª+yà@í_¶LÞª*ÓQÂŽ·ªJû—-SòÀ¦£T[r²4¾g: àL(„äZ¶´Î´Œ/¹Ý¦Óœ]d\œœéé*ÎÎ6%ìggË™ž®È oWn·4a‚õ‹ @ð£@s8¤çŸ—:v”n¿]r¹L':»¤Œ •ææªª¬Ìt”°QUV¦ÒÜ\%ed˜ŽrV.—µ¶i#¥¦šN¨ !„ˆ{ïµ>lc:ÉÙ9"#•2x° ,0%l-Z¤”ÁƒåˆŒ4åŒ ²¶Ñ{ï5P]B!×_/½õ–éçÖ kW8p@®‚ÓQÂBòµ×ªA×®¦cœÕ„ ÒsÏYÛ( tP ÄDEY¿÷žÌ·êµ¼õVí™7ÏtŒ°•˜h:Â9½óŽtÉ%¦SjŠB!êê«¥—^’¦N5ä—Ŷh¡¸Ö­Uš›k: üäõ×­_LB…BTÆÖünÛ¶IãÆIÁ8ÓCÊàÁÚ¿t©Üå妣À‡ªª¬mî›o¸DB…BXT”u–°{÷àœ«0"6Vɪðý÷MG 9EK–¨êèQÓ1þŸâbëá1Ý»[ÛÞÉK˜¡‰Æ$''Geeer:ºé¦›LÇfFŽ4àÌõ쩃k×êøÎŠoÝÚtœp|çN•mß”“ÐÏž-=þ¸Ô§é$ÂQVV–JJJ”››«ÌÌLÓql3„fž~:øžDÚjØ0•®[g:FHðºÝÚ={¶Z f:ÊÏœ¼ê÷  @8qx½^¯éánîܹ’¤!C†NÀ*+¥”Êʤ¿ÿ]Š55Q´x±ÑÑjÖ¯Ÿé(’¬"8nœÔ³§tÏ=¦Ó° >?g ÌDGKS¦HýûKýúI;v˜N„ê*ß»WGòòÔìê«MG‘dm;ýúYÛeÂ÷@˜ºùf©[7éÛo¥L§Á¹x=Ìœ©VÇK‡é8zï=éÕW¥7ßdû€pF!€0֡éóyyR›6R0Ìq^uô¨¢ê×7#¨-Y¢†Ý»+6%ÅtIRZš´b—@¸ã’Q°‰‚k2û L'‘v¾ñ†\;wšŽ4\;wªlÛ6ã÷ nØ ­^m}ݽ;eì€B61`€ôþûÒOXO"59‘}«»îÒ®™3å9qÂ\ˆ á9qB»fÎÔy#F»T´ªÊÚ&žxBºà#†PÀFRR¤Å‹¥Æ­'‘šR¯I% Ý³g› $vÏž­äT¯I#ËÿæëÌqãÆÖ¶$W¬„{Àfiüxéä¤Cn·õwdd`s4êÙSGòòTºn_zi`$J×­“5êÙÓX†3¤©Syp ØgÀ¦N^¸q£u†(//ðRï¸CÅ99*/, ü +/,TqNŽRï¸#àËÞºUª¨°¾ž<™2vF!›»äiÚ4ëÒ?ÿùTQ„ˆèhµ5J»Þ|SîòòÀ-Ø4¯W3gªõ¨QŠˆŽØb+*¬÷xÂéС€-Ä(„µo/-[fý™)?¸eÇ4k¦æ¿ùv½ñÆ©ëXÃáö< ˜fͶÈìl)#ãÔ{œ°E‚… ɺ„tøpiåJ)>Þz-Pmе«âÛµSáfA g¿ûNz÷]飬÷8æ½ !àgN}}à ҳÏJ.—ÿ—›BÀ}ô‘5 AF†4ožÿ¯èl=r¤JÖ®ÕÑ­[ý» \»wË{ò‘®~äõZïUF†ôý÷~_ ÄQg!Ý}·uÿÙ×_[O¤ô'GT”ÚŽ¯Â÷ß—« À¿ WA fÌÇÏ×à~ò‰Ô·¯õ^egKC†øuq€0À<„€sJL”žyæÔ÷ÅÅÒž=R·n¾_Vd|¼Úާ§NUÚCÉÚ‡ªòÂBízë-µûýïç×emß.½óŽ”šê×ÅÂg5VY)=ÿ¼tóÍÒ–-¾?ÚéTÚÇ|¬(*ÒΩSÕvìXE;>ËéŽ;¤²2ëû‘#)ƒ€š í#-Àˆ-¬§VnÙb=t¦ªÊºœ´}{ß-Ãé»Á (/,ÔΩSÕæw¿S½¦M}:ö_H“&IQQÒcYgp¨ ! Öºt±ŠáÖ­RLŒõZy¹k6—iÇwîTÁÛo«í¸q>/ƒ¯¾*åæJO=%uîìÓ¡6Ä%£€:ëÜùÔ¥ŠK–HW\!͘!UTønÅ+WêH^žïô“#yy*xûmµ»ï>Ÿ”ÁŠ k]ZßoÝ'Hø…àS7Þ(-^,>lM}ðÈ#Òþýu×yÅ*^¹RÅ«VÕ}0?)^µJÅ+W*mâDE7jT§±¾ÿÞZwÖº¬_ßG!øB€Ï5h Ý¿´v­Uh<ëõ’’ÚŸ5ŒŒU»ûïWž}Ú5}º<••¾ \GžÊJíš>]ûö©Ýý÷+²Ž×ÌNŸ.=ôµîÖ®µÖ%÷ üB𛈩_?©ysëû/¾°æÉ3Æš3ïdQ¬.GD„R‡Uý.]”?y²Ê÷ìñ}è*ß³Gù“'«~—.J:TŽˆšZ=k]Œ#ýø£õÚˆÒûï[뮆ÃP#f€:ÊÍÍUnn®éðÞ_ߺê*ëŒ×˜1ÒÂ…RzºU†jªq¯^j=z´ fÍRÑ’%òºÝµÊS×÷÷ÐÆ*˜5K­GVã^½jôßnÜhùKO·ÖŘ1R›6µŽ‚_ÀþÞxß u”ŸŸ¯üü|Ó1à'¼¿þÑ£‡ôâ‹ÒgŸI½{[¯åæJwß-eeY÷ÌKL³fê0q¢QQÚ1i’ʶo¯qŽº¾¿õ;wV‡‰Ó¬Ù9öðaë;'K·Üb­ƒ_´Ö |‹ý7¼ñþ¾Á´c©^=ëë^½¬{—.•n»Íº×pÄièгЬ_?5¾äí?_û—.UÊ7*®U«€äŒ?ëÿ¾j•´fôé§Ö´W]% `]:`@@"pVÂ3¨Üÿ¹æ¾üªf.\­ [÷¨Ì#É‘¨öRæàa;~ˆ.m^ÏtLIÒòåË%Iýû÷g|ãû[¨¯ŸPßßB}ýøzü .°þL˜`Íg˜•µFË——«ÿþ4Hj×NêÙSºøb©cGéäÜõÑ©õèÑríÞ­}}$Ë¥¤¾}ÕàW¿ªñ=}§óz<:²y³¬Z¥Ô¡Csò†ÈÿàvKÛ·[—&$H7Ü`½þÞ{ߨmÛ£Zº´§_æf µ÷7Ðãû[¨¯ŸPßßB}ý„úø á/8²á|ükuºñV=7’:œ×Lâ¢ä)?¢{òµeÝ Mq«þùè =ž^·ÇŠûBII ãßßB}ý„úøþêëÇŸãÇÆJ{ur~(mÙ"mØ M™"åçK+VX¥07WÚµKjß>Umn«÷X½ZòxÔ°×bz**T¶}»õ•Ž÷ê_x¡ZÝu—ŽE&ië—R§NV¾µk¥Ç³Îø¾uÙgÏž§Æ¹âŠÿôÿ¥ç–T7¡üþb| õõêãû[¨¯ŸPC!üsßm¢g>œ©Ž1?=2¾‘R:\¬”ëêÛ¾ÓŒ‰³¤ôߟs¼üü|åä䨬¬Ì/yOÞPÍøŒÏøŒo—ñ{ô°þLŸn}¿w¯Sß~ÛBÅÅ tà@¢ŽUŸ>MÕ§ÏFiãFÍ{™bcO(.î„Òc¿PB”KÉmŽjßîår5Ò‹K+ÞáR}Ï1%x)*Ú­ˆV1:Ô¸±^Y6T¥óäõV)>þG%%•iÀ€/U¿¾Knw„† ñÈá8•í“ON=('\×?ã3>ã3¾¿ÇŸ;w®233ý26~Îáõz½¦C›'§ïУ#:(ú¬?U©ü·žUÚÝOœs¼åË—+''Giii>J„¯üü|effrIjp†ð8¿Z­ï+:èü˜³üЉ}š—¤êT¼þýû³1:Â_0ìö"Ý5h˜ºÝ~»®I搜­š©A\¤tâ˜þtá?æ|ªä‰3MG€Zã’Ñ3¨Ü÷™f½üwÍZ¸Jë·©\’”¨–¿ê­ÌA·iÔØ;ty˳B€àF!›ªÛäL€E!›¢HÅYz ³â9šöфŅª2 >âRþ»÷é×­êÉáp¨ù¯Ö’½¼»áÆSú¹þgÈ(­6T-˜ˆºs(ñ¢Qš·!Aß0>ðõëSÉÐEêûÓ ±uçø÷-ò\7£Ùàì³á‹cnxã3³œ! €˜Ö—ÿ´a[\;·(溱ê•h0|$^ÿußu‹?õJbçLu¬£(‡¹Tð=GL‚êñž†…å˪ԧ»ó?€rvï#÷ŠåSÁרgÃÇÜðÆgf3(„åVé—Ó4ê·+Õ©ÿŠç¯Ð‘¨–©õ¶#UìÍSÅÅ7©K‚±TÎâó½‰jŸý³×¢“Ò”X¸ÑP"ÕÅ1×.øÌH€q«xí ýõÕ*,ߢWoì¤+ÿºÍt(øÜqm™¿YWýéZ%³wAéPy”âO;u䨗 ¨òRC‰ÔÇÜðÄgæ@c÷ ˜H5½l¤ž~mžr¾ùQ †7Ñg“ÿj:|¬âÛw•Õìq=|1¿ª‚UÓÊ+þ¤o¥Kž¸Æ†¨ ޹áŠÏÌF!ôƒ;/h©–-úsÁZuô´ˆj¡kŸxLÝ+wɇº9Óûë)]§·W¤ê¾{º)KBÖ9÷_„¼Þ-éÇ’ÊŸ½VYòƒŽµèe(€šâ˜k|fž2êï|³çÜ?£†úú? |î—Þ_oÙfÍüߺüþaJ‰’$\).Éð|¨›jí¿i}ûEëO[Ë{~SYŸ#½:¼e½"û=c8€êà˜k3|fö;Î@eÁR½>u‰¶—ý4í±§TŸM_£Ë&2 ¾Q‘¯÷>£SU¼á}üñÇZ½dºþ2·édð%[^I^æ4 yFŒVôÌyÚqâ§NìмYñ?æB£¹àcì³á‰cnXã3³¯—*ýíØÆÇuÕÕOk]DoÝ1â:õlíÔy—ߢßtiH#uî"-u±~3ãôQšß’§'/Š1 ¾äQYþ§Z:÷)üïÍðÒTý~à•º,g`‡.·Š×¼¤çQrrœ\ûŠÔèúÇtïåIŠ<÷ŒP–ÿ/öÙ0µèîVsߙ͠€MQ¶À¦(„`SB°) !Ø…lŠB6E!›¢€MQÀ¦(„`SB°) !Ø…`‡ó>Ф›Î“Ãá#ª‡&.Ø¡C{Vè©ËäH¤?¾µVû«L§ p¢L P^tƒþ8çBÅvÑ>Û¯cM›«~ü.Ÿ¸Zo}:_¿mm:"åðz½^Ó!¤ÊïþWW]8V§ ÓÄî[µgèb½}csEš@€Q6T©ß¼FGeËuÉTíüt´Î£ lˆ{6­óÔ¯ã$}þ¬þ²ö°øí(ÀŽ(„ûqïUÖƒSÔòù‰êîØ¥W‡>¢œRéT…`3•úaÆ=šÜà)ýeü“š3¹§"ö¼®;ÊV `3B€­¸¾ž¢á/¥èùg2Õ8"Fî}G/ôŒÐ¾éCuïGûä6€¢lã»9Ѐ+ÒgQ**©”$UïС„xI4çú>ºåÙfC@ÂŒ9 þKXþ ÄLzè00ðOEˆ©20è30ì›ïPoýÁLî¹XIDATxÚìwœ$U½·ŸSUsOÜ™Mì\rvÉ Š * èQ¸*ˆâáõЉœ^Q¼êLd$IœaeÙ8yz:wuU÷êê™Þ™ÝÙMÃy>ŸÞé©î®î>Ußúe!¥”lCäñGã|ú¨—R"„ —Ëqâ‰'’ÉdÐ4mém !BÔßÏ6öMêç i¶mouû¦ë:Žãl–ïfS¼ÖÆ>çÆ®QÃ0°,kB¯%„X¯}Ö4 !Ä:×·Ýæú·V&ò]LåcÌ[Ç“ñzÞ¹kcžsäº7¶úU$%H‡e¯½Ä­7^Ï\ÊŸý >÷OµsÅZäóyÞ|óM®¾új‚Á`]À·vÇAÓ4®ºê*âñ8§žz*¶m£ëú»æÄá}¯¾ú*×^{-×\sÍV²Ý5dš&_øÂ¸ä’KèèèØdkË{ÞsÎ9‡SN9…Ýwß½þÙlìgûå/™üãì·ß~~Noû+®¸‚T*Å)§œ²^kÔ{?CCCœsÎ9\wÝu„Ãáq??ïyo¿ývÞyçÎ?ÿü1÷×»ÿþûïçïÿ;ßûÞ÷FÝ/o»ÿû¿ÿãùçŸç /|×c#¿‹sÏ=—Ë/¿œT*µUœ'½ïçœsÎáä“Ofï½÷Þèu¿®×ºì²ËX°`ÇsÌF¿–·–.¿ür¦OŸÎI'4áõåíÃþð^|ñÅm@¨…À®–xëõ7yñ•§xîÕ~C[¯…ØÚÚÊᇾMH÷Þ{/étš8à]{¥ßÚÚÊ]wݵU~3fÌà°Ã£©©i“¿ÖìÙ³yßûÞÇ{ì1iϹÝvÛ±ÿþû³xñâ ~Ž{ÖÖÖ ?Õj•éÓ§sä‘G®÷cÞxã Âáðz½V±Xä­·ÞZç¶+W®¤X,¾«±jµÊ•W^É‘GI تömöìÙì¿ÿþì»ï¾›üµ~÷»ß±Ç{LêZ¸óÎ;Ù~ûí7ê9W¬XA¥RÙ„@rðÇŽ£Ô÷|ø·ëý0˲( „B¡mÆ¢ö®¼J¥ÅbÇq°, Ã0Þ5'ï3Èd2 á8ÎVe…”Ëe2™ ™Lf“Z!#­žL&ƒã8mùybpppƒÖ—·}&“Áï÷ã8ÕjŸÏ·^ïgpp°þùÅãñq??ïy½íÇÛß‘ûåm;Ú~yŸA¡P \.¿+±5¿‹ÁÁAZ[[·Šóäd¬Ñ‰®å‘ÇØÆ¾Öhkv}ŽÑökpp¡¡!¶™•éØ6™¡õôkšVl B-¥¬Çμ8‡w{7¡i±XŒ l5ïÝ[C†a°hÑ"B¡Ð&][ÞóΟ?ŸD"Qÿ6öóÐ4ùóç“N§Ñ4 Ã0&ôœÞö³gÏ&•J­÷sxïÇï÷³ÓN;áóùÖùùyÏÛÑÑA¥R÷µ¼û›››™7oÞ˜Ûªc¬ñ»X´h@`«:Ozkt"ëkCðžwΜ9´··OÊkyßn»íèèèØ¨c¬½½¹sç"¶…d2Û¶Ðuƒ_ÿèË|ò‚?Óyƒæàè1jo¡­ZµŠc=–{ï½w\‹zk;8½«É¯}ík¤R)¾ño¼ë®öŠÍqŒýä'?áÑGå§?ý©:Æ[—aZó"n;ÉdyU‰D¶Ù+Þw›­Pln¶/›âÝÇšçþ)+Ô@€¥K—rØa‡á÷ûÒã5M£\.³Ë.»ðÃþp«Üÿ¦¦&ºººÔŠU(6Ñh”¡¡!%ØŠ­Æ8BP*•øüç?Oww7>Ÿ)å¶#ÔRJt]GÓt@âê®Xç›>üðÃiiiÁ²¬úÁ(„ Z­ÒÑѱվßt:M&“Q«W¡ØDÄb±mÖ㦘zxúdGu¹\®ž8ºÄ¨Ý˜ÒÍ–Ïû¯ôTVÑâ?FÝÓÓÃþûïÏÓO?M<ßæ¾´|>mÛ$ µ‚ŠM€WY±9JìŠa«‚J@×þòë[ùË“KÙu×i\yù÷yùm×-ì¬ã:£R©¬%úÞmk)ûh4ªDZ¡Ø„„B!%ÒŠ­Ö8yÛJ ÑR¡@0AåbÍÄo¬]OêYÔ½½½ì½÷ÞÜtÓML›6 Ó4I§ÓÌž={›ø¢¼¯EÅΊM{œ©cL±µ#¶µ^ßë:°¼¿ °`ÁæÍ›G"‘ “ÉpØa‡qá…n²vt …B¡PL¦ÖmSÉdõ+‹õ¼úµ,‹x<Îm·ÝÆôéÓ::)‘V( Ŷ uS¾Ž¨eŠk Ó~ …B¡ØV˜Ò¦¥¢Þh^‰´B¡P(¶E¦¬E-„À²,Þ|óMr¹¶m‹ÅhkkSߺB¡P(¶=“Slbº€ïïïgÁ‚ì¸ãŽ$ r¹‡r]t‘J&S( Å6£iSÖ¢¶m›x<έ·ÞÊôéÓ±,«>fL‰´B¡P(¶ kzª'“ !ˆÅb„B!õm+ …b›dÊg}W*,˪O£òJ´ …B¡PB½XÔÍÍÍjάB¡P(6¯Õô– ™NYÓ4R©Äõ×_Oss3¥R‰wÜ‘C9Dµ T(Š)*ªÞù}Ma•R²fîôhÛxÉÆžFxÛl)ݘÒÉd^yÖÓO?M:&›Í"¥äCQ«Y¡P(¦^xs¤hü}]M¯¼î•k†G_xáÇa×]wUõdãÕMßtÓMk¹TÖ´B¡PL=ã졇â­·ÞbñâÅÌŸ?¿Á‚6M“çž{!år™P(Ä^{íU·¢u]gpp|`0ÈGÁc=ÆóÏ?ÏßÿþwŽ;î8>ýéO7´£Þ\ïkJ×)I)¶m,ËÚªÇZ* …bÃÎó–eqÞyçñío›+¯¼’]vÙ…[o½µîYBðÓŸþ”£Ž:ŠN8N8¥K—î\]×¹í¶Û8ýôÓØc=˜>}:gu_ýêWY¹r¥²¨7^¦·ŠK+ ÅÔÂsoßyçLŸ>ïÿûH)9õÔSùÏÿüOŽ9æâñ8ƒƒƒ¬X±‚¥K—"„ ŸÏÓÞÞŽã8ø|>®¹æ.¹äüqæÎ[¿˜={6¯¼ò ßÿþ÷¹øâ‹ëîf×±wÃÕÖÈ›B¡P(¦žh¶¶¶rÖYgÕï;óÌ31M“¾¾>„üú׿æ'?ù ßùÎwxùå—ë"­i/¼ðçœs7ÜpC]¤=¼)Œ{ï½7ßùÎw°m[ õ¦ Ô3•E­P(SO¨/^Œaõž===ì°ÃLŸ>)%qÄÜvÛmì»ï¾\pÁõD³ýèGèºN?§œr Ç{,¯¼òŠÛÌ0˜>}:^x!Éd’jµZŸ½YßçTîõ½páBvÝuW‰CCC|ðÁœþùÊ ®P(›¯øÁ’H$Fý …B1yÖß~ðž{î9ÀFWÙxâ‹Å¸ôÒKI&“cZ³ž ?öØc¼úê«|ýë_o(£Ò4 Û¶1M]×Ùwß}YµjétšÁÁÁzü9™LÒÒÒBWWG}4»ì²KÃ{ÜS}ñd³Yb±Ø˜Ýj …B19ì±Ç´µµaƤ¸À=+8Œ»®ë,[¶Œ^xo}ë[õ¿=ûì³ì´ÓN†ÑÐÌdÉ’%üñsÌ1<ðÀ\z饀[o­i{ï½w½ôË0Œ-jàMÙuOO‹/æÁ¤³³SÅ¥ …b cÿþ÷¿ùèG?J:¦¹¹ÇqX½z5gœqùÈG8ðÀ9þøã9î¸ãxâ‰'èêêâk_ûRJ …B½¶úCú×\s ™L†ÿøÇku7SB½‰„úhj%Ö …B±iØÉdãyB½óú#<Â<€¦iX–€a|á _ rÅWðÊ+¯°ûË.»pÀ4<>—Ëñ?ÿó?8ŽC*•â„Nت´bÊ õ#š¿ü…Þÿý_̾>†~˜iŸûœ+ô>á9sØáÊ+1{{qLsôø&fJǨ…47774cW( ŦRÊZÒîXåOB4f[oècÆ>é7>мR"4Í\Ë"ýÁ‚”$ßû^¶»ür–~ík¶ßžÙßûñ]w)úç?ñO›†]*‘:ì04¿‹”iMY¡Ö4R©ÄUW]Ess3¥R‰wÜq³þV(Šwš6ñD« yÌ ¡ëtýò—L;ýtmm`Û ë`´žqCÿ;Ë/¹„n¸k+Õ¾>JK—ÙuWZŽ>zÔ‹M¾ßS¹á‰˲xíµ×H§Ó B¡Pý+¡V(ŠÉ%óÈ#˜«V!<Ës¤àØ6z,Fú°Ã,äÁ‡¦ºzõ؉ÇIrb#¼¢žH÷ÝuþövšŽ: Y­"|>úþ?þ‘?ûæ©§òÚI'±ô ÙñúëiöÄy 3e…Ú8~õÕW×;’´¶ …B1ifAé7(¾öZ0ØØ·B¨Vñµ´>ôеSzýõÑcšøÚÚH|pÃcÆÝ5—Ô\Þ¹—^±mÚO:©¦~Ò¶¼ûnb»ïŽƒ¿¥…9?øožy&V¡€‰ 7CÙBÆÝ”ïL&¥$“ɇëÖ•H+ Ť« Ó>ó™ ?¦ã³ŸðcÆü³aà ÃMKl ƒÜsÏÑuÛm´{,™‡Ç!ÿê«´úÓ„, ûøãu¯ ˜={¸ÙVß4åžhš†®ëÊÝ­P(›ÇA¨1çúý£%“Mô1£`årôß?þövò/½DhÁ‚mmXÙ,«o¾™ÊÒ¥,ÿïÿ)±s9‡†Ó~ÚiX™ +o¾™àœ9äžzŠY^ˆ0Œ-ÒÜdÔ ©>úÁ¤³³S µB¡PLåkÓÄÎçÑ#œráó¡‡ÃHË©T>ß°ë\Êálð•U«p*Ó§£ù|[Õ{3Ô׫P(ŠmÍïGK§ÝŸGˆ°0 tÃϺ ÐÑÑ`å³…I•P+ …bj°f2Úh÷¯ùwïÿ‘S³¶²\&%Ô …B¡˜ŒÞ'ìéE%MlÉÆJ¨ …B1…Œj9®èz¼æTEÁÖ›Ãd¼¾4oµ¦i*¡L¡P(¦(ŽtЄ†@`Z&Bhøtc ãZÔ-h`yÿJzå4Çìûa‚¾àV÷¾¦tQ±‚P(T/ÑR"­P(S[¤W ¬æOþ™^y„¡âа•]³¤WvqçÓA ¨T+ôæúøÀn‡Ó“é埯?U.eQo&‘¶,‹—_~™iÓ¦Q­VI$ªTK¡P(¦¨HßûüÜóü}œtÀ ,š¹]«5+€GJ®ýëTªeŽÞó(|ºÝgïBÑ,1»}°¶ùÖ¥Sz(G>Ÿçë_ÿ:‰D‚L&ÃGÁÅ_¬„Z¡P(¦RºñèG_û'7ýýf~|úèLwÔcÕQßæáWÃoøñ뾺AçHɳo¿À}ÏÝÏ̦é´Äš¶š÷%„˜ÚC9lÛ&ó‹_ü‚3f`Y¾Z»j#ªP(S@¤qÅ,_.pÃ_oäðÝÇÐ Þé]Ƭ–™ BþÜÒöÙaOîñÁºå,,ž·a_{_x€ÝçìZø-ÉÈd·)£ŽD""‘~¿_­l…B¡Ø„ÂéŃ'ó6æë9îßžù÷sôeûðû<üêc\y×5üðÿ®¤\­ÐŸä™·Ÿã½óö¡h×]^u,Vv!¥$à°Ëv;o•Ÿë”Ïú¶m»þe+KZ¡P(6¡q„`K¢Kº–ОšÆÇö9šX0Ê ó×}Ù­³8v¿òðkñÁÝ@×44Í@×t4¡áÉߟ»‡éÍ3˜–žÆÁ‹Øêê©§¼P !TŸç€à+_ù Žã(ñV( ÅV”rê µã8Ž=öXÚÛÛ)—Ë̘1£ni+ …B±µ#„˜ºB-¥$p̱ǒˆÇ×zã …B¡Pl hSûÍIrCCH ¶mã8ŽúÆ …B¡„z«°¨ ß ÕRÊÙAÄšqi•®P(Šm€)ëú¸îïeï,E:6‘HŒ¦Ö6âÉ&Œ`Èrê ¶r…+ …B õ–Á²m2CYéëë%‘Hnj!ÙÔB0!Ò’m®¬B¡P(”PoËH)AH„&¶¤X*R*—è'¶z%©t©æV"ñšÏ7òÊÊV( …êMî3èšA³ží]1M*ýd²Ctww‘J¥H7µM5á…•[\¡P(J¨7¹5mIRsR<Ø÷ »0Ÿ™±64!¨ØUÜ)gË²Éæ²ä yúúz‰Ç¤ÓÍ$Ò-cqDCSåߦ×C-yp¬Ò<)¥*ÛS(J¨7¯9-È¿3DÚñÈ;Oà÷…Ø©us“Ó j»ŠwØx¡X¤X*10ØO¬k%ÉT©¦V"ɺÏ?,ÒÊÊÞ&ÅxÍû¼þï†aŒù%Þ …B õ&DÓ5²Ù3}Ó8d§÷ñüÊWy¾ÿ ží{©í˜—šMÄÄ´«ØÒv‹WL*•A2¹,½½Ý$IÒM-Ä’Íø#‘mÚ-.¥D"‘RºB…Äq$R:8ÒÁvÜÿ)q¤ƒ&4‚¾~Ç¡ëëȾ¥­â‘÷{ïѲ¬ú­Z­Öo–eá8>Ÿ¿ßO0Äï÷ÐuÝ@¯Ä[¡Pl9ÅFJy'ÒÞ¾~Þ·ïž´¤ãì¸ã<>pèáÌž3›·—óÔÊ—É›¶OLç=Í; D©Ú–´êbä},º¦ ˆÇã$SM$Ó-„b „®|UÖíù1oü‰Þ‘î40ïæŠ®ƒ-½Ia5Ám_W”¥lmoÿeÃ~ŠúϺÐ0t¿á#`økÂm¬-XÞRÚLB&¥Ä¶íº›¦Ù ȶm×ݬ¹Ì½}÷î—R¢iº®ãóùõ›ßïÇ0 å6W(J¨'S¨»{z8òùÊÙ_à…^â©§Ÿ¤cZ8ìH¼g!+‡Vñø[OÓWÍ235Zv¤-”¢Šƒe™®`8™ !øýD#É4©¦"‰4F °qû[ûWÖ„Ô!°‰c;ØÔFuÖ„Öq†·ó+GˆNíkrÛ( b!_bDý¹dMÐ5¡áÓuW¸}~|ºCÓF}9¼ÐFû²†ÿ¯Ý¤÷¿ã …MÖ˶±l{-«Ø¶,lÛF:Þç1,ÂkZÅkŠóh÷¼y÷Ä{MË{<ñ^€B¡P¼«…º§§‡C:€Ë.þ/:;;éêêâáGáɧž"OpäáG°ëλПïç‰wžeY¡‡Öx+û¦ç‘héÀql0ÍQN¼Ÿa‡ˆÇ¤Ò-ÄSÍøC¡ºXŽ´vš[ÙZGºV¯ñûðc\Ñr-Ý‘r;ò ©¬býíó5¾f¹N«ßýUÖDVJ§þ<Ò‘PÛoBÓê·5߯å}¯÷!Dƒµ½¦ð꺎auÑöÜçó­—0++\¡P(¡îéáðƒàÂo~Tº „Ãa†²Yìq}ì1ü?‡|(ûì±'%«Ä?ßyŽŽ<Ç´PöÛ½³l{- ´î×u‚×-‰D‘0½kXYâ …bê uo/ì·/W^þ]"Ñ0¥J „†¡ë„ÃaJ¥"O>ù4ÿøÇ?°›8Þ»CH2<@µZ%xØ¡ˆjÕ=‘×,6iÛk%-y±M!D]n…u…i<ኺ‹FU^KìåZIÙˆ_×´5¶«=­¤ñqc €¨Ý/]Yö,J)%Ò–ØŽ]‹ ×bàµØ·—´EýÂÄvÏ š蚎OèøuC30„†&4÷uÄp`Ä“¬yÕ2¾§@ޏ˜ð„y¤ˆ×¬pjB®BÓêSRJ×=ï}ž#Üçµ¾GºÎºˆ†QíÑD|¬éÊúV(”POÍd²Þ^öÞgnûÅ/hM%ì^M±œÇr$n’X8¢Z­òì³ÏñÀ+äÙkyßÁ‘ŒF(fsXÕªk¡‹Ý ‰QµL,ÇnÅ ùåš¿ˆF9ï9å:Íâ‘©¨ï«ð„¨fåŠBïþ½®Ú p³â»A0Gn#F^u8².œÂU(¨%ÝIFx„@:>ÝÀg;ø¤+ä†ü>¤gÇ[6ض{Tsµ;uC_®öDÑ»éšV¿ßÛÇq¨Ú6Ž£Q|Ñ(Z BÔмطmÛuá)ÌbB>R¼G³ÂG>çF÷n^2[0Ä7²cžo…B õTê}öÙ‡_üâtNŸŽY.c—Šä3‹y,i×­P(„ã8¼üòËÜwß}ôõö±Ç{ðþßOKs3e øäS””¾s:w¤ÕÇ’6UÇZCÇãuÌ‚5ܳ£+>Ýö´²ö4Ž”8‚Z¼×Æ–¶ca °tª´±j·ªc¹7Û¢êØ˜åtæ$:Iø£8Òq•VŽˆO;Ãÿ Çá3êîdY.#³Y÷wÇÛqãØ8¶ƒ´-´iÓУ1tGâóÐ{Ж.Å`ƒˆÖVô¦&D,†ã÷#5°žðÖ,z»–`V.—)•JK%²Ù,¹|ž¡l–ÜÐû{.G±X¤P,bU*„"ñ8Mmm4wtÐÜÙIºµ•D:M<‘ ôJ¶»S·F¹'æk ùºÊÈÆŠ{x1ð`0X¿ùý~U6¦P(¡žzBÝÑÑišhºŽƒU,P¤P̹–qíä …BðÆorßý÷±|ù vZ´ˆƒ:éäÞy‡‡z^a…=DG¢[ç1-ÜRb:VÝ"m°Që¿{Öçðï#íb/¦í ‘††4j‚WsE×3£- áHVûªä\ÑÕ jU©:UªVË®Ý, »jâèèš+šÀ)–pº{ÜÑŸ–¨Z¶ƒa;èŽD+™DvÙ|K‚íÃíìØ¶=Å×^Ázð!ðûA:uµŸfP­”Ð9}î\(—!¤úÊ«TÿñD0àZðš†ÐBÓÑ MBààƒðÍš…0MD(ˆýæ[ØÏ<‹0 ŒL}pˆr6ºF°© K Ï'“¬Ìç)xÂ[.S°mÊå2–e!«U„ã`AÀç#‰Dˆ&Äc1‰‰D¿ßÏP6K_Oýýýd2²CC**¶¥ëè¡ñd’d*EkK mmm´´´ÐÒÒB*•" …’ȪÕ*¦iÖKÄÖG¼Çq¯´ldöy  ×…{4—¹n…B õ–TbœZ\x}„úg?ûÓ§O§jšÃ®[M]°k"ñù Þ~ûmî»ï~Þ|ë-vØa;òæÍœC×Àjž^öK ]$#ivi›GG¤Kº™Ê¶´Ý’"lªŽåÔ¬TÇ¢jWÝßmËVÇÂv\«Ö¶,ŠÕ"Óó‚=ú…+þ–°,WÈ EŒ½÷"ðž÷ðÄ;ÿ¢ÏÎãÏ—‘o.Á't|Ràó’¸Ðñ Ýv½g'B³f»bBo?Î˯`‚èºføÐt¡h>4}ÆtD<Ži–q4,q2ƒ   Кî£"-Ì<Íá$‘hÝð¹ºënµmA`K˲1«U*• ¥r™|&C.—§Ï‘ÏåÈ•ÊäM“b©D¹\BŠT»ûˆ–Læ$’ÌM&xÑï§ð“ŠÅ‰·µ}þyÂ+VŸ?ŸÄìÙDfÍ"ÜÑA¨¥_4Šá÷£U*uO…—u.mM×Ñu4 é8u«¼˜Ï344DÏÀÝ}}te2ô 1”Ï“Éf)‹Àçó …H¥R´¶¶ÒÜÜÌvÛmÇܹsikk#‰`šf]¼½„»‰ˆ÷h1pÏeîYÛ¡Pˆ`0¸Ö±¡D[¡PB=a‹WŽ"´^}°çŽÞÐËȬï÷¾÷½ÜqÇ$“IJ¥’{Bùæ5 é vf€BiX°Á­›öûý¬\¹Šû¸Ÿ—_z™é3gpäa‡óžy ÉäyæxchF0ˆnø†]ÄŽƒS(¢‘èt)0$hBð%Át3ÁT†ø ?F¥ «»ˆZ‚TÉFú}n&³áŸÚ´vD2‰î€nP1‘ù¼›$åÅ„kÂã%UIMÔK¾$Žû·ZìS®‘hV–WM×âÖ t!Ð|>÷V‰&5úŠî]öOJåaÐIÓL"Š6C]äkœÏ‘+ä(”Š˜Õ*ÒqÛ·†Ž?$  ‡‰F"Ä"âñ‘hŒp4B8%Šˆ$BÄ}~ ]s…×0°W¬À~ã ìþ~¬¾>ìliš8š† … µãÐC€ë‚áóAíwY©¸VxmMhšVpÃ0Ðk÷¡iØ@UŠ–E¶Xd “¡··—®®.úzzèéé¡»»›|¡@8¦££ƒyóæ1þ|fÏžMkk+¡P)%ÕÚ‹×%m}Å{,áÖ4 ¿ßO("‰‡ë-R …êõ‘PÛqÝÏkà8ÎZÂíH‰6ÊÉ*?ØÅ‹¯¿Í®{íKHã õâÅ‹y衇hiiqOžùü¨ Ãv‘ÂÐ Åb–ªS+Ë’²'ìééᡇþÁ¿žy†ææf?ü0vßiWŠ¥<«†zðBø4 C3Ðh¦….4tMGÓôz‚“¡ 4Ý¡¹ÅÑd­äÈÑ¶ÞØ@¤þsµZ/“®?¹Ö%MÖK©<—ù° U6h°W&%G4™ý,‰`YV=æ›ÏçÉçòäó9rµŸsù<år™J¥Â`aÓïšÙJûÜN0+W­d`U1=ÌvÍ3˜ÕÜÉ´t ÉX‚p$‚á÷áó»؆¡×³Àë.ßõ×N­̧éõ~Í@ p¤ƒðû~¿·˜ R|98ˆìíE èûîë µmƒÏ‡uçÈþ~´E‹ÐæÎE47# Y­‚i"k‚^Äš7ÇKÀÓ #Ä á‹D0B!¨…+ŠÅ"=]]¼ýöÛ¼úÚk¼õÖ[¬\¹’r¹L4eæÌ™ì¸ãŽÌŸ?ŸY³fÑÜÜL @J‰išuñÙte}­n/f/„¨»É£5׿ßûŒ …êñ(tóÌ«+Ùwñîh5+OÁÀÊ7ùÓßþ4B|ð˜ci†]vÒá˜\séÙ\~ÇS¼üÂ3Ä„ƒ¤QÐÖê|ÎÎNŠÅ"ýýý …q[b• 3®K¼êXuÁöù|ƒ!2™AyäQþùÄD";ôP½gQ­‡=¢g6ÃBã¸%N#›}ØN­Ñ‡#Ýmlg¸å¥·í¸‰`#ÚaÚµímoûÚ6^-³û³=ÜTDºIõv¢#®7 ‘õºèz‚–íÔ<¸–¯ßO(& FˆÅbÄâQ¢‘ñhŒH8ìv* p (È2ƒf޾r†L%KÅ®âà î ÓäOÒˆ÷Gj~7QK:Xž(©‘5Õ²–¨Р¾ ÍW»Øp<Åro#J±d©ÔÐâÔyçœ%Kp–.E¢Åbˆí·GŸ71}ºëq(—KÃFÔ\¼ÈÜ×òûÑôH_0HÀïÇÐuwèK¡@WWK–,áõ×_ç­·Þ¢«« Ó4I$Ìœ9“ùóç³ãŽ;2sæLš››ñù|T*Êå2Õjµ.Èc…}Fí‘nòP(D8&×ó1”{\¡PB];™A9ÛÏŸýK.üîåDæ|ˆ§¼Û4Ñü~^½ÿw|à´ÿäëß»žp×\tË=üß_ÿÎÎÓصºe) ÃÇ[ÿúýâ¥<þø#ÄX¡iµçóyúûû)‹£Z+B¸nÕ5Û;†A("ŸÏóÏÇÿÉ£=†#Ý®¥Jƒ%ÖðìõzhÑ`-iuAr­m¯&[×½R#×ÚÖDÍ*¯• ÿÝuÕjºæº«ëÓë®Ûᛎnh®µ¯ë#ž£ñy‚Á ‘p„`0H pk~k.vïªÞOÜÑcÜq-z]4×ùOÕ©’·Jô—‡è-Ò_¢X-‚ˆ/@S AKØu›Çü|†Ƕ©X×A/´Ñô>W¿î#bñk5Af”†&n<¥q]úýŸiYÈþ~W´_ÙÕ¶¾x1úþû»Ö¹W“­ën·:O°×qï~]G … „Z’™V³p½¾áŽãËåX½z5K–,áµ×^cÉ’%twwã8©TŠwÞ™=÷Ü“ùóçÓÔÔ„¢.Ü^’Úú„‰¼u;Ò½î÷û‰DÜ‹­p8¬Î„ ŻۢvO©ùÁ>þ½ämÎ;óôFá™o¶t™gïígÐtØ7øëÍ_àï›Ë¿›çÉ?^¿Ö³½ùôŸùÈY—ñÄMH¨G³²Ù,”J¥ñ»X 84H¡æš@:®•‡)Ь\¹²–™«Õ›Wh#jx×úYÓÐj¿ ¡ÕÎû#-ÈFÁÚp4£¹Ä×}½T¬ZÆùÈÿGvïò~®½ÇzqÇi¨^»“©hlà"eC­·¨õ74×ÅíHIÙ®1óôèÉõ0X¤R)áC'Š3§i6sšfeQ©”À±Ý¯†ÕåŠxP÷ñ04 ×]×>RX Ãuk2ŸÇyë-Ð4´yóÜPƒ®»y…¢£ÃÝÖ²¦éºÒGZò#Ÿ[ÓÐü~D$‚ "k kn|Þílç«åA†eYd³YV®\É+¯¼Â¿þõ/–,Y‚eY̘1ƒ]wÝ•=ö؃¹sçÇq§zðÜÝëßÙ”%“H$ˆF£kåq(Š-ÏfÈ4qO¡T3;ïÙ̬ö&VÚ5o¡ÆÒ=ÆSïdùÕ‰G׬ÁÇOþÇžu=+‡~Ì+wýÿ{ïÙsŽýÀضå«pÐ6nÏâñ8±XŒ¡¡!¨T*u1•#Ü©z$B<!\*R PÈQÅ‘®U¤ë:Ûm7{Ø% £6»ëgY?·; ªÚ 6r;ßÂëXR\1Bl½ö™õÿGvêò¶qQ°–âK÷¹=×±€IrY­7øüaÚÃQ:S!¨ÚUò•"ýÅ~º³=<Õõ/ô¿Á3w££©Ã?[6Ò¶\Kزµf(%«BÙªÔ;ˆ¡éãW®{½Ãk%o^2š†¶h‘{¿—)®ë8½½Xw܈D³g£Í›‡>{6"s¿›J¥A´Em 9• T*8>Z(„…мD>)ëòȬí·ßž… òñœl6Ë’%KxöÙgyöÙgùÓŸþ„ÏçcΜ9ì±Çìºë®Ìš5‹p8LµZ¥X,R­VÇt‘l¶â­óB¡@¡PÀï÷ljÇãF ›Qnq…bÊ uí`·•ªÕpÿ[/>Â`vg[ýj~»Ž9g'^ïfáÜÈ´·¦\qÅ0 1Mœõ°$åZ¥Ö´0’É$ñxœL&Ãàà ¦i6œÈ<‘ÔÃaâ¡°+Ø™×%^ìJ¥²~Þ9¾xxÖ,hµ¾X«ouCkMÔÒĈ¶¥coã÷ÉF;¹žw6É}§ÅÈ—”UicbÖz¢ BF€YÉÌmšÍn»ðòª—yøG9láÁ´ÆZ© ðû†Ÿ§f¡bÛ8–EÙ²0 !Ç ¤ù0Ðê½×G†FmKê] yߥ't–…oÎŒsÎÁyûmœ×_Çùë_q, §µmÞ<Œí·GK$j»ä†¼,r!Ò²°³YÈçÑ‚A´p¸½ÉåpG7Y³’K¥R=¶¼`ÁvÛm7Ç¡¿¿Ÿ×_ýë_ÜsÏ=üêW¿"2þ|öÜsOöÜsOÚÛÛ1M“B¡P'ÚÞߪÕ*½½½ F‰ÇãD£Q%Ò Åff­æG›ÏÉ.Ü8ëǼpL¿>|2|HeÓaþþïc¾wN6 <ðà#ô®ZÅÃϾÌûw[¸Î¡ @`½²f5M#N“H$$“É4X& ‚q;R³°ó…–´ŨA4…ëF÷¬^Ms³µ5 ¡°|½û<«X Dz¬hD}zôˆ4+·©ˆX[G zñw1J¿ðÆG8RbIkDrœÓ0®º¡¯ù‹l¬®[#­:Mˆz9”×7]7t¢Zœ#;Žä@ë@77 f%74Ž.hHôrÐ%Dt?ݰmÓı,×2¯euSÓúuËX.óšeÍ‚pôÑÈb{Å J/¾Háùç1Ÿ~š¶sÏÅ—Lb–JËeLÇ¡’ÏcYV½ì )qŠEœR áó¡…Ãn<ÛkpÃpkWr¹\ϧƒì½÷Þì¿ÿþX–EWW/¿ü2O?ý4¿üå/¹þúëyÏ{ÞÃGÁž{îI*•¢T*Q*•êyãuL3 )%Ùl–l6K0$‘H‹ÅÆlgªP(&[.Åê1¯´ÚùR®áu•Ýš–Ï0@èì¼øhî=àcèpMxÆ6QÇáwÞ©wˆùæÇ! ÒÚÚÚð]×inn&™L200ÀÐÐÕjµ>tÃm™é ¶V³°C¥"f1¿†»YGèZM ×Ý5/<ìpçð‹WŒb5]k ^û Ö×âñZRÊZûQ7S½êÔÚgÊZkRgDÿj¼žÛîʼn®×’ÙjB¬ëFMˆ½ßÊÖF níµ"°^^o{J0©ëÄBqb¾ {±eY®h›&N¹ŒmšÈ‘në±.ê¤tcÖÕª×ÞqG‹‘>î8¬Þ^ôHaøcn|iÅ ´Ù³©8ù¾>*Å"¶WÇ `𨦉“Ï#<+Ûïw¿\Çi8h=o“mÛ òù|ÝtÈ!‡pä‘GR*•xõÕW¹çž{¸æškp‡½÷Þ›Ã?œE‹ )‹uWûh¢½¦•].—)—Ëô÷÷ÇI¥RªÌK¡Ø„8ŽCww·{_;>7«PŸPeÝnž1)-úrƒ82†’UCýHdÑì6„¦áóÕ²¢µ ;í²ë£B†aËå8묳ˆF£X–Õ Æår™ÝvÛk¯½vÔý4 ƒÖÖV’É$ƒƒƒ aÛv£ ±6 B‡ ‡#£ïŠ”£¸ å(¿ŽR5-ÆÒ±ìr ·÷:ó û+G¸êà~ÃGXÔí´Ú•ŸæZúÒMðvKéF$Ëiš^ÿ},amh…‡+n£÷S÷'äa;e³²–Å´ËôUÊd}~â¡(‘@ÝçC¯u sªUœJ»T®5?‘#2¤Yó¢Ês¹—ËÈZ"¢‘L"kñr©ë8Õ*=?ÿ9¢Z%õ0mß}‘á0…þ~ŠCC”M«Ö#\T«ˆj§Xt“Ï<+»~×x¥=ò½Y–E.—« .d÷Ýw'›ÍòÌ3Ïp÷ÝwsñÅ‹ÅxßûÞÇ!‡ÂöÛo¦iäóy·µî8V¶÷7Û¶éïïghhˆD"A:V¶B1Éú(„ \.söÙg³zõj|>ŸFÛ\uÔ–†g~l?žÚ§ï¿ÎÍãÉ­dNët޽üO\qöÑüàKÇòÇ*¬xá.4ÇFhzÃÕFÝ•.Æox²ß~ûqçw2}úô†«“‘eV±Xl½ö¿R©000@6›µAËæ ÔãÉbl+ym<‹X³\lÄhFÝp­à‘žôº…¬z¡`9¶ÛܲÜÿíaz}ŸÄè™ìYØ~ŸŸe½Ë¸ÿ…8t—C˜Ó>³jR©®-ØÞë|~b¡ahÔ +Ç4±ËeìR Ç4ÝÄ5/¡jœb‘Ä{ßKò°Ãtt`‹”³Y×-].cšf}\¨­ÇN&ÑúEÃú~&ŽãÔ+ü~?===<þøãÜsÏ=üûßÿfÚ´i|ðÁxàtvvºCLj®õñÖµ¢÷ù|$“I’ɤl…b’ÛÓO«6ŸP[6Ý+øÐþ;³DìÉ‹Oüަx”@ÀÇÿ^ómN¿ø×üõÁ?ÓT]Âáø8—Þz?'`7l[¢ëÚ„Þäú–gm¥R‰+fýuvìXîX÷­Ï׳¦ÈŠzÙ×Úcë1à%d£ÝÖ·#Öšû9ÖöRJlÇîsnYXŽ…e[Ã%`Œpÿ ±NïD¢ rµÂÃ/?Ì3KžcFK'‡ír(³ZgaV+Tªæè‚- ä ’ŠÄ1tcÌ\iÛÃÖv¹ì ÷XÖö(Vz8ŒcYžžÁ¿ýÊÒ¥„.$uä‘„fÏ®»³«Õj]´+• Vmº£ÇãnùÛ»¨•µF=ápMÓX¾|9=ô<ð]]]ì¾ûîœxâ‰,Z´ˆJ¥B¡Php}'ØÞs{‚­Ú•*›ÈFÛ O‚òP/ÿó‹Ûxá­¥hþÛÍÛ‰?qM·!ÄÝwü”{þõa­Ì>‡ËQî½Aâ:R¨÷ßž}öÙú`„Ñ„oCÅ{¼.g“iÑz?V/^>RtG{ÌD„v"ŸídâÔbßUÛv–XV-îÔç`¯3Ph„Aús<øÒC¼øö‹ÌjÅ¡»ÌÌ–™”«Ì1[×tR‘8á@h½Ö²S­â”ËXå2N¹¼Nk[֮н„±ÊÛo3ð—¿P^²„ÎóÎÃH&݉hµF2Ò4©:åJÅîb[Óñ8z(äfˆoÀ÷æ­C¿ßO8ƶm^ýuî¸ã}ôQæÍ›ÇÉ'ŸÌ>û샔’\.W·Ì×ÇÂöûý¤R)’ɤªÅV(&á\»y…z½®ü%š&ÖyßDĤ¿¿ŸvÚ‰~ô£¤R)ŠÅ"»ï¾;ŸúÔ§&Up¼.gåryT¡õÓÓõ±f7Ä¢ÝÐ…°5–Þxuòåj…\¹€Y5]K{œ}u¤ƒ¡„!ú†úxà¥yiéKÌ™6—Cw9˜éM£ ¶‡†Â$Ãq41ïã¸ÖvM´JÇk¹¦EêYáZ0ˆ588™–– …‹-âØcô‡×¸bM—ó¦Ú­Yd7…h—Ì2ùRrÕt³íÇr¯ãñ>‚þ =™îñ^]þ*;tìÀ!;LGºƒ’Y¢jUÝÎoõR4‡€á'IômXV³¬V±+¬|»Xt×Ùš‚íÕL×)>ÕÞ^V|ÿû„æÍ#uÔQ·ÛY*!«U´šKÙ®V© A5¤"%¥R »æ"ߵ扶7¸£··—»îº‹ÿû¿ÿÃçóqÌ1ÇpÔQG‘H$ÈårëL<i½R©‰DbËäs(J¨·ò75ÂõýÌ3ÏF·Z׆²4ÖŸ’Y&W.P6+ì®Á.î{á^_ù: ¦Ïçà¢=ÙFÉ,Sµ«u+Ú[;ñP”D8ÊÆôbsÊeªCCXÅ¢ëþöZ³Žs¸U–-cðî»)¾ð¡ hûÌgð55a ÕËþDMüõX ‰P.—Éçr”F îðÄt}mO°½äÊB¡À½÷ÞËwÜA6›å¨£Žâ˜cŽ¡½½l6[/W\×sJ) ƒuÁVk]¡Ø0¦´P/^¼˜»ï¾»>”ÃËXVlÛ”M×%^®–qä:[JüºŸ€?ÀªþUÜ÷Âý¼µú-ÎXÈ¡»B*š¦Pʯa]KBþ©HŸ¾qëÅ1MªÙ,v>ãÕòן¬‰ ü~*«WÓ÷?ÿCá…hùä'Iv˜¯¹Ã½æ;F0H ¹`Ù6ÅBl6K¡Phhn2‘Cܶmt]'bÛ6=ö·ß~;ÿþ÷¿9âˆ#øÌg>C*•bpp°~Q0îû¯¹ÄÃápÝ%®P(”P›L¦˜:Tªrå"%³Œ#1ãËžuç7ü|Vô¯àÞçïã­Õoñ=Ždñ‚Å+ElÇ®?‡#%º¦‘ŠÄ‰6~º”S­bårX¹ŽW*¸æ†”à¸óµµH„ìOÐsóÍø;;i=í4üÍÍnc–‘Ø_vÙe>ñ‰OÐÔÔD>Ÿg×]wåãÿ¸Jn™j‚m™äËJfÛY‡`ã vÐäÕ¯ò›‡ËŒæéœpÀ ŒÅJ½V·ï%šE‚n¢™> ±ViÛÂ]³Çl-Å1Mº®¿_G-ÿ8N>ï ²ãÔ…Y:šß?ÆqQjšf½¨×‹~¢ñbÏ"ŽD"ø|>î¿ÿ~®½öZ‚Á _úÒ—X¼x1Åb‘b±XO˜\ÁŽÇã´¶¶ªl…B õ.œxâ‰u¡Þm·Ý8î¸ã”POQL»J¾T X)a¯ÃÂv¤$Sª–ùí#¿eYïrN:àÌëœG®”s1œhæ×}¤¢ ‚¾Àä¬SÇÁÎç©ærØå²ûzkˆ¨t4Ã@ƒ8¥Ò°»¼Vîå‹®`ëz=«ÜH$ð§R ÏeÛ6Ùl–¡¡!J¥R]°'â÷;S­VùÍo~Ãm·ÝÆ¢E‹8ûì³Ù~ûíÉd2X–µ^åY¶mãóùhii!™LªÅ«P¼…Z¹¾ß½Tm‹|©@¡RrÝÙcX‘ŽtÐ5p Ì£¯>Æ]Oþ™÷.Ü£öø–maVÍúcÝu±PŒDh'JI‰U(`e³ØÞ¸Ë5ÚÔz³­=‘–¦Iþ¥—ˆíµša` ¯ÊqЃAüMMèÁàZÇF¡P “É4ı'ja{=Æ»»»¹ñÆyàøÐ‡>Äé§Ÿ^ŸB·.ë}dIW,£µµUõW(ÞB½xñbî»ï>:::ê#U©È»˶ȗ‹*E,Ç® ìX£;\-á,ŒÒéæ¶…&t>uÐI4Ç[(T q¤$è ŽÆñé“ë¶µ‹E7ñl¬Ò.O¨-‹ßû²T¢ý‹_$´ãŽØ™ÌpÙ—mƒ®ãO&ñÕ¬Õ5½H^;›Í®ÝÃ~}öÕ¶ñûýÄb1^~ùe®¸â Þyç>÷¹Ïñ±} Û¶ë³Ú×ÇnÍÍͤR)µpŠw›P?ðÀ -D•Ëû݇íØäËEòå"–c*ØŽãà÷ùÑ4??õgžxãI>ºïGØm»]0­êZÍ4M#Ž †'k¥]v>¿v ÛpŸþßÿž»î"uÄ4√ش®Hss½{4ÁöZâNÔÂöʺ¼žâ÷Ýw×^{-áp˜sÏ=—½öÚ«>.v}:œ)ëZ¡x õþûïÏc=Fss³ú¦ØŽM¡â vÕ^[°½à±`ŒW–¿Âÿ<ôk>¸×Ùkû=)™¥Qzµ;D’‘X=mR=¹æÀ€›%¾¦;Ð JK–Ð}ýõØ¥í_ø‘÷¼;›Þ´çö75aŒÓO`czد¿þÅ/~Á¯ýk<ð@Î9çœ —séº^Ÿ\§P(¦°P÷÷÷³páB-ZD<'ŸÏsÐAqÁl¹éWŠ­G:ÊEråUÛZ+éÌq"Á0ƒ…!ªv•D8><µm­ç’ø ƒT$NÈœüõlY˜ƒƒX¹œg~ÿͶÝ8´aÐç Üqɣޢé£m¬Ó®ýlÄãøÓéÑ]ê5 …ýýýkî÷‰ ¶¿~çwøÁ~Àk¯½Æ™gžÉÇ>ö±úÐu¹Ã½rºd2Ikk«ê®xW3¥;“õöö²×^{ñßÿýß´··S©T˜6m;ï¼³ÊúVÔ-ìL1K¡\ZkZ—×;\áÆ·×cÍÅB¡Ø&Y[v±He`§RiÚÚ„žLR~çV^~9MÇKâ}ïs“ÌÖØV#ÑlMr¹õñ—yO¶mˆD"ÜsÏ=\qÅ´µµqÞyç±hÑ"×+;Üko:mÚ4B¡Z° eQO5¡ö\ßO>ù¤r¡)Æ¥r¡b®nÖ×’ñ†mz®ò‘ýƒ¾M±Æ&p…KÇ¡:8H5›m¨£ö¬k-BV«8• Z 0<ºÓóxõ×BàK¥ð¯ã¸ðæâ Ô‡Îhš¶^%]^ü:S.—¹ùæ›ùÃþÀ‡?üaÎ8ã B¡™LfÜNBˆz¢[KK étZ-VÅ»’)íÿ9®Ï¶í1Ý—Šw7±`„Öx~Ÿ¯64¦&ëèõôÑ„VŒ&4*U“žl?¦]ü«jMÃßÔDhÚ4´`°a>µÐud¹ìNÕ!ÒÒ¶Á Âçs»šÕÄÝìï§¼z5Že+”‰D‚Ù³gÓÞÞŽÏçs‡ç¬Ï¾Ö&ÅyYå_ùÊW¸å–[xíµ×8þøãyä‘Ghmm­ úXǯçzïîîfåÊ•Xãì¯B¡„z*¸”»[1~ÃGk¼™x(Zï`6î#4^Yþ UË$ì7Ìζ,‹ÞìËÜ4m0H¨£ƒ@SÓÚ³«pn=u(Dþé§YvñÅØå2F$‚¬ Ð4¬b‘òêÕõ†+ã7©TŠY³f‘H$êÉcësŸoBÖ­®ëT*ùèG?ʯýk^zé%N:é$V¯^MSS¶mëV7 ƒjµÊòåËP Vñ®A¿øâ‹/žŠ],¹á†X¸p!™L†¥K—R*•hnnVÉdŠuZ×!˱¨ÚÕµÖŠÛ±Ùeöοyø¤t˜?}>R:õáRº³´ ÝÀolšžÖB×1b1„a`W*n³¯öZJ4Ÿø E"¬¾ê*dµJtÏ=Á²êQ»P)ÑC¡µ{¯A  cÛö„zˆ{1îb±H<ç¸ãŽ£««‹K/½”d2É^{íE¥R·‹—Ø–Ïç±,‹H$¢ŽeÅ”ç]Qž•L&Éd2rÈ!ª}ЧرsGr¥Ü°XKI"#Šmê€J?ÖÐÐZYáz(„#%]×]GñÅiÿâ‰,\ˆ¬V‡­èÚ˜Í@k+z`ýX–Eoo/™LfB™ážØÆb1òù<]t¯¿þ:ßýîwÙc=èïï_çM¯ýè´iÓˆŽÓÐE¡Ø–™²®ïB¡ÀOúSN9åâñ¸rw+6C7ÂØŽµV;Q/-¥dÏí÷ Šò«‡n£-ÙÆìÖY”Ì2špŦlVRô6åâLJºŽ],Öïšæ ²”$9é8_~™è^{¹npï= ¶U( ÚzXªš¦‹Å”J%ªÕêz{¬4M£\.ãóùøèG?Ša\tÑE!Øÿý)—Ëk•Í­y¬;ŽC6›EA8V V1å˜òõƒ>ØÐë[¡Ørå™BvÔõä8ñHŒ——½ÂÏîý9Çí,ûì°CÅ¡ºeíHI4&M¬³ükc±‹Eʽ½®ÈGJ´piÛ®x¯a‘×ë­¥të­'P¿lYÝÝÝd³Ù êÞÔÔÄ+¯¼ÂW¾ò,XÀe—]V¿ð^—+Üq’É$íííêXWL)T V¡˜±`„¶D~£±æÚ³‡ YL_Àçü¿{ô÷ü㕇IDõ˜¬&ùr¾ÜàZŸlôp˜PGZ08\Â%hN±ˆ4Íú}²6×Zn Wm»êà å®.·{}¼†Agg'mmmu^?G€[wÝ××Çœ9søÍo~C±XäÄO¤»»›T*µ^%\ƒƒƒ,_¾\Õ[+”PoKض]¿©†'ŠÉÀoøiM4 Ej5×#ÄQÓÉ•rÌiÛŽ³>øþüô_¸çÙ{]±Ñ¥X)Ñ›ÄÞÄb­ù|§MCņÅÚUµzf¸ðù¨vwóÎPY¾#‘¨×[£iØ…‚ÛÅ\ÿºðt:ÍŒ3ðù|:î è·-½á†8äC8ñÄy衇hmm]g —®ë –-[VÏHW(¶u¦tŒúÖ[oåË_þ2@`I) ÅD×XÈÄÐu̪‰=® ³j’Ž¥ÙiÖ"~ûÈ”*%vž½•j„»e[Tª‚¾À&­BB`D"P«­®[ÖÞÿ¶‘JáT*t]s þÎNBóç#½muiYØÅ"z0¸Þá>Ÿ¯>Q«R©¬÷ñçÅK¥t3gÎä /¤P(pàbšæ:ãÖ–e‘Ëåƒ*#\¡„zk=‰–J%®¹æ4Mã­·ÞâñÇ'›Í2gίVL¢u]«¹¶k®…˜¶I"œ`·¹»ò‡ÇÿÀ@n€]çì†Y5ÝáµzìRµBÀ@ßÄ%ƒz(„æ÷c—JÃ}À‡]ODwßÀÌ™¬¾â ·Þzq•Šk‰ë:Ø6v¡€ Öç[¯Ó¢×4âñx½·÷Ù¬Ï1ìÕK/\¸C9„k¯½–Gy„Ã?œ@ @¥R·ÞÚqr¹†a ÕbUl³Li×·eY¼øâ‹<ûì³<ùä“,Y²D}ãŠIǧ´$šH„cŒl>ª ²Y&Šó•~™WV¼ÊmþŠh(Š@Ô/-Û¢7Û¿ÉZŽŽÄˆDÜ^á~C¯p„À$¶çžÌþþ÷ºÿ~V|÷»ˆ@Ô‡yHÇ¡ÜÕåŠýhnnfúôé†1aWx&“aÚ´iüæ7¿! rÜqDZzõêuÆ­½ ‚Õ«WÓ××§ªb›Â ñLù:êý÷ߟýë_Äb1õ­+6 ¥j™\{„kÖ‘~Ãe[\óçkiI´pê!§P®”pjëÕ]·ͱ$!ÿ¦·þ¤mSéíu;’VomY¬øîwq :Î;#‘îzV³Æmm,‡2M“®®.òùü„¤hšF*•âºë®ã—¿ü%?úÑØwß}éëë[¯æ(©TJe„+”E½5Šv&“Á¶m,ËRÉdŠMNȤ9žv›~ÔlkMh˜–‰®iœóá³*d¸ño7á¯Å¦½‹K‰¤/7H¡RÜäû)t`{;¾Db­)\N¹Œf]z)9sèùÙÏ#ã¼5±®twcMp@†ßïgÆŒ¤Óé ÞçÔ××Ǿð.¸à¾ô¥/qÇwÐÖÖ¶^Ifƒƒƒ¬\¹r½'€)[ ªŽZ¡Ø˜–Iov Á²–R¢k:†npãßoÆv,ÎøÀ8ŽƒeWÑ„Vß.M F6˾V‡†0ûû‡EØÝ ·QJ €58ˆ‰Ôk°ëµÖµS‡¿¥ßx­èé驽ìú›–eÑÔÔÄ3Ï<ÃÙgŸÍñÇÏ—¿üe×Ùضm"‘ø|>µPÊ¢V(Þ­ø ?-ñ4º¦×-=/y¬jU9óÿAØæê?] Hüúp]¶‚üùòæçèK$´µ »µGXͲ\ƈÅê-4oZWmøG¥·—j.7á×M§Ótvv¢iÚ„ãÖýýýì¼óÎÜ~ûíÜsÏ=|ùË_&‰à÷ûÇ}.]×)‹,_¾\•o)”P+J¬=±ÖÄÚ‘e³Ìgÿ,­ÉV~üÇ+©X&~Ã×°+ÖÅͲ¯F$B¨£aîðšKËr»™_{¡ÇC÷bÖµ}5{{×kTæšÄb1fΜI ·äj4±Îf³455qûí·Óßßϧ>õ)ªÕ*¡Ph\÷¶¦i˜¦É²eËÔlk…j…B‰µ–xÓZb-¥¤X.ðéƒ?ÅÜiÛqåWS2Ëkm7ÏPØLb­î|ë`p­Œp‰Û@¥ûºë¼ûnôtz¸c™˜}}T‡†&üºÁ`™3g‰D&<ãº\.#¥ä'?ù Ûo¿='œp½½½Äãñuf„Û¶ÍŠ+Èm€7@¡PB­PLE±ÖE…rcß{,‡îzUËbµæÐþÍ(ÖÂ0M›†/]K¬e¹LxÞùdzzzÆm²"„ »»)%MMMj±*¶¬=Â,ba¿ÌM"Ñ~äòC$›:9þ´³ùþ¥_#¢±M]]®Ù™ì‰'ž µWõ Å&³Tíª+ÖkXÖëZ×à&u5E“›M¬œJ…rw÷ðÌ–uéÍ7Y}õÕtž>þ–wƵ·¯Žƒ#,ëR©ÄÊ•+©V«ºÀ¶,‹T*Å+¯¼Â™gžÉÉ'ŸÌYgEooï:ô8ŽCKKKýÂ^¡Øâ¢}ß#ÿ”s·›I:GCCƒ<÷ϹùÖ_²Êjçû ¦ÇÀ‘î,ÝmI¨/^Ìý÷ß_ox¢&h)¶.±v{|[㊵ÄÐ}Hé4l·EÄÚ4)¯^íÆ£½ýuD0ˆ]M) õ¼½¦(µm6Æ nš&+V¬wÇXbH$X¹r%§žz*Gy$\p}}}õ¡caÛ6­­­J¬[‡P×™ì®ÿù1ÿóøj®»üÿhÛ„ËXu&Sl{b=€e[ ëSJ‰O÷1àwþ/'¾ÿÄÃq*Õ šÐ€Ò[À².­^=ìww¶A”…a |>œbqÒÄÚ²,V®\I±XœÐyÈëD–ÉdøÔ§>Å~ûíÇw¾ójnùuYÖ­­­455©ó‡b‹¢UªUÇAJ‰”¶e!«%–¾ý:éËœ{â!Jf­×®úÀŠÉħ´ÆÓºÑPm!„ êTIÇš˜ÖÔÎõ¹³jâ«u0ó$£?Ÿ¡X)m¾F @°½½¡…(BÔ­haTÉ?÷Z4:œ5¾Ùà0\¾‹Å&Ô«[×u …‰D‚Ûo¿çž{ޝ}ík$“Éz¢Î˜ïUÓèééa``@‰´bË õ}O½…&Àq$–e£O?ðG®ýåoq‡Ýß{épýxT(“‹QkŸnàŒk–]åø÷Ï;pÕ]× q-í‘ÓŸÏP47ŸXëÁ Á1ZŽzÿ¯¾òJÿþwôTÊkO‚XkšFggç„k­½¶¡Á`_þò—¼ýöÛœsÎ9Äb±u¶/Õ4îîîzé–TÖŠbKõUÿýc¡cáóùxãù9ôÃ'±2ïZÑU³¢,i…b3ˆuK¼ ¿a¬%¹R–O¼ï:›:¸ö®ëÐ4­ÞÁÌ»vîËe(šåÍ'Ö¡Ðpða7Ò4ñ·µ1ã éýùÏüÛß0ššÄÚØ fž§aÚ´i$Ö^Œûg?ûƒƒƒœy晄B¡uÎÈÖ4®®.†††”e­Ø2BÝÕý$þètŸŸ_ßp) w=ˆ ÷㨽wGºa(KZ¡Ø,b­Ó[Û²Fò•<Ÿ>èS$£ ®ûËõø ¿«iYç©XææÛßp˜@k+ Wòš†S,š;——\B÷O~Bæî»]±özƒkf_V>¿Á¯ÝÞÞNSSÓ„»˜U«U,Ëâ–[nÁqN?ýtü~ÿ:ÅZÁêÕ«U3Å–êçžxŽroòÁ~€SιŒs.ý /=ó{Îhw7P*­PlV˺5Ñ„oDÌZ @B±Rä´COïû¹éï7 ês¬®[¶/7ˆe[›o#‘QÅÚÎf í°3.ºˆ®o$sï½kt0«ôöb•6ÜeïeeOT¬-Ë¢\.sà 7FùÜç>G @×õu>×êÕ«ÉoĆB±AB}ÓM?Ã7£“üåo,\|8ìÜÊ_p?ûËÝÀ±mú Ú¶]¿Mä€V(¶º¦:"SJI¥ZásGœŽi™üôžŸ¸ù#Y4Ñ—Ï4Zä›Z¬£Q--½Á '›%2>3.¾˜®ë¯'sß}è#̤¤ÒÓƒcn¸ ¥¥eÂ-G½þà…B«®ºŠP(ÄgœA8F×õ1ãÐ#{ƒ—J%µP› ‡%šN:ª”)•+ò9Ný¯Ë¹ùâ¯R5M|~ÿ6ó†Ölxòì³Ï‰DÔ7­Øæ¨X&½Cý8#›H‰¦éèšÆUw^M[²Oü)ò¥¢ÖÝÌ‘’H Dsló6ú©f³˜½½Ã%Y–…žLRxáV\~93¾õ-BÛm‡S©ÔÏ„ÏGhÚ4·{éïï§§§gB¥[Þ¹"sÆg`×_=¹\nÜr,)%º®3cÆ ‚Á Z¨ŠM/Ô¦iJÏò”R†èzíiî|èENÿü©èÚ¶åúö°¾¾>vÞygŽ=öXÒé4…BÝwß“N:IÕD*¶Jf™¾ÜÐXcí•sýøOW0§}'ð ²Ål½©#áÉp|óŠu&C¥¿1B0¥ã ‡Ã”—/G…0âñ†ñ˜8Z0HpÚ´†ÇM”ÁÁAººº&,Öš¦ 9ýôÓ‰Çã\}õÕd³Ù1ÏžçÂçó1sæLüÛ!£ØöR¢é†Ïç#  …Ò¡}ÇÝ8õ´O¡k‚_ÿòXÒïWßÖ’¿…ƒAÂá0¡PŸÏ§¾uÅ6EÈ$M®]cmWBð¥}‘7V¾Áïû‰pGº.`Mhd‹ùÍ6Ó×LH§Ü࢖`èèiM®ÅÖuìr™JOSb’J¥hooŸðä-Û¶©T*ÜtÓM ð•¯|…D"Q?IŽ%îÕj•+VLh†¶B±AZ6fg2+Ï÷¾ñ–Ugóý~ p]nÛŠE­\ߊ©D¶”g°0Ô0¼Ã‘ÃOÑ,ñ£?^Á¾ó÷áƒ{|€l1×`U¶ÆÓ|ÍkY{õÒ#­[¯ÎZ·\KJ´`iš ëHÛÆhiÙ¨×ÞËÚq|>š¦qê©§²ÝvÛqùå—×›Œåó:ŸÍ˜1C ûQl2ôhSëÅš¦“É °jÅ ž~â!~þ“ùÚ¹ Ï؛뮺€4mÅY,„ P(ð“Ÿü„ã?žhtxίry+¶E>?(W+ Su,Ç"ä±ëœ]¸ýáßâ÷Ø¡cÊf¹^¾U¶LÂþàf=)ÝàÞëz1i¿sõjV|÷»D÷Þ#CV«MîMßÒCÞ5 ¡ë:ù|~½wϲÖ4|ä#ÜtÓM¼öÚk|èC¢P(ŒùÙyõÙ¦i‹ÅÔùE±i4mûÙò­¥+‡ï0‚ìþÞ÷ó_}‡¼H)¶‘V½¾S™þü ùr±Ñ²vÂ0+úWpퟯãôÃ?Ëöís)˜ÅºX|~Zâéõ§9™Túú¨ 5Æž¥D ‡éþÙÏÈ?ý4Ûýð‡žyZYû[[ñÅb÷Ym@‚™ã8Êå2ÿøÇùЇ>ĹçžKww÷˜ó¬…õi]Ó¦MS‹T1éh/¾òË–¼Îã=Æ?Ÿ|Š¿½”§ú=x/ÇÞ¦DZ¡˜ê¤£IÂþ`= n¹Q¡R`fËLŽßñÜzïÏ(dðþúj¹Za ?´Ù÷7ÐÜŒ/o,ݧT¢ýóŸ'8gË/¹m¤]kˆb—7®ÓZSSÓ•n•ËeÂá0?ÿùÏùýïÏOúSZ[[ÇŒE{YàƒƒƒôööÖïS(&M¨gÏß“—»-öÝo?öÙkOfOoC:6¶ã iºi…b+B hй1ç‘b­k:¹R޽wØ‹ýìËM¿ !¨MÚ’hB£P)2TÜüµÍÍ®{{¤`J‰ÉÐùÕ¯‚”¬üáѓɵj¬åF&j577OX¬½Þà---ÜrË-\ýõüþ÷¿§¥¥eÜÄ1]×éííUC<“/Ôq¹’~øDº‹¶ma;(+Z¡ØzZ!h‰¥ÖΡk:Ùb–ïýašcÍüì¾_†ëÛhB#SÌS¨lÞLp„ ØÒ‚/k¯.¼\fÆEQ~óMzn½£©©>BSV«”»»~Åz¢Ìt]'—Ë1wî\®½öZ.»ì2î¿ÿ~šššÖ)ÖÝÝÝär9eY+&ï˜ñ¥9 ³Ìߟ|!4lÛ=HT£B±õRï^¦»ó°& Šå§òiú†úøÓ“w’DZ».òù!*ÕÊfë@k+F8Ü ÖÒ²ºÎÌï|‡Á{î¡ïŽ;ÐÂáúŒk§\¦Ò×·Ñ/ßÒÒB:Æqœõ¶v à “ɰÛn»qùå—sî¹çò¯ý‹d29®X{}ÁËå²²¬“#ÔøtN9íTV¯ìEÓ4ü>aåùçÏP»$TŸ’B±âÓ šciÃb-õö¡Ÿ?òs<þÚã<ñÆS$‰º«\JI_~óö¯‹u[z(4,Öš†,—ñ773ýüó)¼ðN¹<\Ö¥iX¹ÜÆI[[‰D˲&$Ö|ðÁ|ó›ß䬳ÎbÙ²eD£Ñ1çb !p‡•+WªkÅäõo¼Î@O†¡åKxã7xëÍ7¹ã'×pû_îÀqlõ))[)ÃOS,¹–P˜U“T4Å©‡œÊüŽ7V¿A`Dr™e;ôå3›Ý5+4`{;z 0lè:v>Ohûíé<ï¼aÁës^›cmMÂ0ŒiÓ¦ÇÇٱĺ··—ãŽ;ŽÏ~ö³œ~úé À˜îtMÓ0M“•+WªŠêyóæóÕÿw9ßýÆg˜7o;ì¸#?ã˜FHÔ Å6@Ø$iì^¦i…rùó8r#x襇iBP©š 6r™Ð4mmnoooŸ5 Y­º%ZÞv#[sj•¾>ìÊÆ¹ì…ttt‰D&ìïííå?þã?xÿûßÏç?ÿy Ãsˆ‡— ^,éêêR‹T±qëöꫯ–š À¶‚á0Ï?rfÇÜtÙa[úF4Ëßܨ:jÅ»•l)O¦0TÎîT-]3¨TËøôµ[è:RÒK­MáÚœ8å2¥Õ«‡;–5**fO¾–÷¸­YØ“1ÀÜŽbË—/§T*­w>Ž”)%©TŠ3Ï<Çq¸ñƳ{™WcíMùR(6H¨Gk!*‹=ÜõÈK}øÁHÇÙ¨FùJ¨ŠÍG>C¾\hhlâ•gçænK4ã76/|+Ÿ§ÜÓÓxl:Z4ÊŠï}#‘ ã쳩ö÷#té8á0ÁööµÅ}‚T«U–/_Žišë}nðú|>ùÉO²páB.½ôRz{{Ñõ±[,;ŽCGGG½‡¸B14˲XóF¨•£?ØUr•ý­Pl3¤# ‚>ãĸ"-¥¤?ŸÙ"±T#%ÐÔ´VCY©ÐvúéäþùOþügŒT iÛ]Ç*©ô÷oô½Ï磳³sÜÔ£YȶmcY7Þx#=ö×]wÝ:k¬5M£««‹b±¨©bâB­Æ7!äf<¿)q§~S5Щނ¦h]k,ÛZ×cLËd 0´EöÙ—HàO$˶L_SÓ/¸€îŸü„â+¯ G£n9—¦Q¢šÍnÔçèèè˜ØISÓ¨T*D"n¾ùfn½õVþô§?ÑÜÜ<®XK)Yµj¦iª…ª˜Øš51[c£M7±‚h4Цi躮\ߊw†®ÓK­WÓ"gD3”B¥D®”ß"ûìonƈD†ÅZ×qr9 Òvú鬸ì2¬l­–-.4 ³¿»TÚè׎D"©ë:…B3fpÅWðío›gŸ}–d29fF¹7sÕªU*\11¡vj hªY›BªÕ*?þ8Ï<ó ÿüç?Y²dIýÊV¡˜Ê}’‘DC›Ñë7Öö‡ê–·&ƒÅ•ê–±ø­­èÁ`ƒX[ƒƒ¤Ž:ŠØâÅ,¿ä„ß?Ž“’Jo/Î$Ô*'“Iššš°m{½/èu]'“ɰß~ûqþùçóÅ/~‘®®.B¡Ð¨B<2|õêÕj‘*ÖÿÂð¹Þ¼8’œÅüí;Ýı)bI—Ëe®¸â ^{í5üqî¼óNŠÅ"ïÿûUb™â]AÀðãH‡Jµ1YJJ‰ÏðÑ•éæáWaÁôùX¶×DR©VB›}Ò–#Â.êmD…Èr™Ø{ßKîÿ ÿì³Ä/Ër“ÉlÇ41¢Ñ>¦#‘¦iN¨£˜¦iäóyöÞ{o2™ W^y%Ç|½éÉhÏ£ë:¥š' ‰¨…ªýbº¦SRJ´þ÷·xöñÿãÍÕ™ÚSãMÚ¶M<çöÛoçÎ;ïäá‡æ[ßúVýàR(Þ ¤Â Bk ðB`;6éhŠçþý,¼ô ±P Û±ª¶Í@~h‹œ „ÏG ­m8£Ûë ^©Ðqî¹XCC˜+V¸5Öµ6£v©„9 mFÁmˆâYÄ­±þÊW¾Â¼yóøÒ—¾D4­—seY÷õõ‘ÉdÔ"UŒyáêý¯m¿ã|Á¯/[í&qL1·°÷~”»[ñn=ØÓ±†f4¶c „øÜŸã¾çî㵕¯ Fp¤ƒ&E³D¶”Û"û¬ƒø››“˪U´`ßü&¾æf·9Š÷5j6Kuhã“á4M£££ŸÏ7áñ˜™L†ï}ï{äóy¾ýíoÓÜÜûb17ܺš›Û®[Ùõ¦'“œ\æ÷ûéììœ+Ýsu›¦Éµ×^˃>ȯ~õ«u–m©LpÅz µ/â7º“½g7Õ®òTìV¡˜j|~R‘xCÙ¥®édKYö·;ÏÞ™[ïý~Ÿ¤üПÏlþáž`65­5mk„2byåY#BYåI˜a  …&œ î•m% ®¾új~ô£ñÄOH$T&¸bã„úÒÿþ!ÿxâYJ¦¥Üà Å&ŒE×ë\)DZ‹¥jUù¿þ‰xØ‹W»¥›ý[`x‡'ÆÖV„Ï×8tÀqÐ#úÿøGºòôxܵ¼kc3+½½“2¤ ‘HÐÒÒ2¡xµ®ëd³YvÚi'¾ùÍoòå/™ÞÞÞõÊïîîV‹T1ºP²ßÎsØi<ùÆS<³äb¡(¶´Ñ„ \­)f·Èþ à ¸fl!pŠEš=–ü³ÏÒçÃË4 «Xœ”±˜ÍÍÍu‹x"ÉeýýýsÌ1|ä#ᬳÎBÓ´1Ë`¥”†Áàà ƒµýVF“¢A¨ï{òu>ý¥ÿb—9­µØ”r}+S )šÄ§'— !¨X&©H’“<‘Ûþ-½Ù~†+èšÐÈ• *¥-²Ïz(„d›Ñšål¤RLÿÆ7èýÙφ;—ÕfT3¬IJÒjoo'OX¬ûúú8ï¼óhjjâßø©TjL÷¶gYwwwS*•Tù¨¢Q¨·Ÿ⢠¾MwÎ)ÕXK…bŠ£k:M±dƒèB'_.°óìX¼`1?½ç§hBQ"ƒ…!ª[(^íK$ðÅbÃb­iعá hýÌgXñÝïbåóh#Üä•ÞÞ†ìð >IÖ2Áý~ÿ„âÈBr¹?þñyõÕW¹ñÆ×;¹Ì²,µPÃkð'~–#vŠñÄ o 4Íu‰Qÿ§P(¦ÃO:’X;¹¬˜åC{}h0Êoù-ÑPÛ±í8 懶عÁßÜŒ ºÍPpÝâÖà é~Øž{²âÿý?D(ä^U–E¹·wRö×çóÑÑÑ1¡ ^wDÃ0¸êª«¸å–[øÇ?þA*•Sˆu]Ç4M5ÃZÑ(ÔT3\}óo0B1ïš9ÆlU…B1uˆÃÄB‘Æf(Êf™Sù4o¬|ƒG^y”x(ŽíØèBPª–·X}µÐ47¹L×ëV³Ð4ìL†ö/|,‹®ë¯G ‡›¡LR¼zC2Á½žàÛo¿=]tçŸþzµÍf³ôMRÅê¾¢Ínº•ƒvš…”Hå!{äñÚÊQ% ÅT%Žô '— !°‹?Ä)‡|š?ýóO,ï_NÈ–N­¾º@Ù¬l™–χ¿¥eØJö:—U«tž>Å—^¢ôÖ[ˆÃ;¬L«P˜”×Çãî n}ôÑ|ä#áK_ú>ŸoÜä2]×éíí%ŸÏ«Eª@»ó¾×ØkÏ]ð Û]׸éªËøé]÷`ÛJ¨Š©Š;3‰1b,¦&4Š•"sÛçrÄGðÓ{nÅr,tM¯?n ©¹Ä7?F$‚?•Z«s™‹1ãÛ߯ßÚêÆ¦Gi¥·gâÕ---Äb±q»Ž&Ö}}}œ{î¹$“I.¼ðBÒéô¸Ï!„`õêÕT'i¿Û°P_zÁy¬(ظs©5~~íÅüÇùßÇÑêÓQ(ÞºA:šdäøj¯¾úàfFó ~ñÀm„aé  Þ|KáO¥0Âáz¼ºž ×]{·ZW³JOϤī…L›6 ¿ß?¡çBÏçùáÈ“O>É/~ñ‹q“Ë4Mò,V­Z¥r†ÞíB}äð­ÿü2o¯ZÅéÇÄ©_ü6_:÷[œþÁC‘¨ Å»?H"kH.BP(ç9éÀéÉtsÏs÷Ö†wxýÀË[l~5Bàoiil†"„ÛøÄsãûýÃÃ;tÝW÷÷OÎÅaÐÑÑ1á6£Õj•p8Ì•W^ÉUW]5nç2Ï^(èééQ‹ôÝ,Ô×þø'œóÁÝ9bßÝøÃ“«¹çé¥\õýoQééF*¥L¡xwÅûƒÃñjÜ!=ºÐ8íÐS¹÷¹{YÚý6¡@°>¼#SÌaZ[Æ5«Qš¡ %Z(D÷/~Aî‰'Ðc1¤e!tkhˆjnã“ᤔ„B!ÚÚÚ&ܹ,—˱hÑ"¾þõ¯óÕ¯~•‚Áà¸Éed³YµHß­B}øáä¿oÿ#ÿ^ÞC0â××^Ä~»íÂïþõ<¶ê?«P¼kHGøt½¡JÉ,3½i:ØãüâÛp»>«ZJI~p‹u4ÔC!üéôp¼zXáï°Ý7ÞˆÙÓƒVK.CÓ0ûú°+— çÍ N&“¤Ói,Ëšpç²ãŽ;Ž#<’/}éKøýþq¯i]]]”ËeµHßB­ë6eŽ9áDöž7ÕÝýèþ èºútŠwº¦ÓM5Ì¿ðâÕîô~Ú’müöá;ˆ†¢uKÒ´,2…-¯ö%“øj]É<«Ú.Hvñƒbå÷¾çfñJoïÚâ¾b ÐÚÚJ$Ù Îe_ÿú× \|ñÅ455ÛèĶmV¯^=¡$6ÅÔ@ÈѲJüíÞ'9òè#Ýdm(N-¥DAOO‹/æÁ¤³³³~¿B¡X7¹rüP½¥°”]Ó±‹Ëÿ}>¼÷Ñì¹ýžäKùZ™‘CS,M$Ú2ǽãP^¹ÒÍìöŽs)Ñ"–žw¡ h?ã ì¾>ðù¶‹lœñ¾¦i²lÙ² YÖ^ïjµÊqÇÇé§ŸÎI'D__†7Âs ˲H&“ttt¨sڻɢ¶, ïfÛ6–eáÓ®H»>—­NˆU¤B±i‰#Dƒ¡µê«Ã'ð þ÷±?Пï'à ¸Ç£Ð, m±‘˜^3Ö.ištž>Ùûï'ûè£è‰„¯Ö4¬\ŽêÐäxü~?ííí¶ÈMÓ$ò£ýˆ+®¸‚_|qÌÒ/O؇††¨»ßï¡6 ï¦ë:†a ‰M+†c=·tœq_×sµ !6Úm¥P(Æ'I0|õcR…r‘÷Ì|ûÌÛ‡ŸÞ}«[®%7Ÿe Ÿ©×coö“Y €¿¹¹ÁîT*øZZhÿÒ—X}ÕUTûúЂÁz3s`{â¾RJ¢Ñ(ÍÍÍî\–ÍfÙm·Ýøâ¿ÈW¾òLÓÄ0Œ1›¡hšFoo/ÅbQYÔï¡ãZo“,é8Ø£dHJéà8î#„À±íQ†ƒ¸ t¨wo/[…Pec Ŧ=9¦X²ž8n¼ºP*pø®‡²höN*…úß5!(U+ s[lŸ}±XÃð¡ëØCCÄ÷ߟÄA±ü»ßm´º½xõFÆ}=ë¶¹¹™X,6¡LpÃ0èííå”SNaáÂ…\pÁ$“Éq_J©âÕJ¨7 BÓÐ5|.?âš["„†¦ –¼ö2oü{š®#„l°¤AðøŸ~ËÉÿ4G²§}õÿáÔÄ_¡Pl"áÓ}¤¢É†~àžÅ|Ä®‡ò‡þ¦ l1OÑ,m±}45¡{õÓ¸Ã;ìl––N õà‹Ã!=!pL“Ê$ôÕö„yÚ´i [Ö™L†Ë.»Œ×_[o½•æææq›¡T*º»»ë­PB½Ñn!Û¬ðÊãsÖÉÇñéÏ}Ç`«Š#åî·9飇òãŸÿž›.ÿ'œyy[à8ŽcãH‰]ÉðÀÓK¸éæï¸‰¿þòv–gÜÙ³j‘*›ŽH H"kd€¢YõØB0ßr#1ÑuükÖW×:”%>x¸IŠgukV>?iñj]×™6mÚ„›¡X–…ÏçãG?ú×_=Ï<ó ñx|ñêÁÁA¯VB½Ñ*@èæÅ_äï÷ý•·W G‚&lÎ>í8ëJpÍw¿Å®¿‰—ÿtÿyÙ hš†¦éºŽHrîÅ_£# ½isÌ$è“îЦQ(6)‰HŒ—8V·žÇ>ðlÇvãÕ[ª¾:µ¾Ú)ꢭE£Ãç¨IŒWƒ;i«¥¥eÂVµ× åì³Ïæ¼óΣT*áóùÆWwwwS*•T¼Z õFùƒ@@´}&'|þ ¾ßNõ&*†ÏÇàÒç¸õ¯Ïð•sÏÇFŠ(_9óD~öƒ«:¼õâ3<ôÐ?xãß+0$€Íw~p Ÿ>ó ´EtÇí ¤P(6áaŒ MŽ+Î '¡Q®š ¶\7-_2‰‰4ŠuÍå-m›Ì¸óÜà“¯öD4N“H$&¯îëë㓟ü$;í´\pAý9ÆCÅ«•POŽaí8ضM¾ÔØè¥'ïÃ:‹æw‚¦#Ì[°vn O¾ÑÍ›O>Οþô'}æy4]çÞÛo#òÞ9ãGQÈeÑt•T¦Pl Ý I¬åo8Α#²Äùr|¥¸Åö9ÐÜŒf4d§ÖZŒÝ}7½¿ú•[²eÛ i“¯nkkÛàxõw¾ó–,YÂO~ò“uÆ«Ë岊W+¡žœkr]×׺"¯äzAjăñúvM¡(A×`‰|ö,~øÃpÚqäîÛþgžÿmô®×8çsŸáw¿Œ?ŠÓ¶í1oŽJDS(&D4&Ú2T"ñéÁ.r!ƒù¡-Ö\†[²µæþÚ6çŸOîÑGºÿ~Œ‘õÕù<ÕLfR^_×õ ÞaY†aðÃþn¸gŸ}¶žM>šõ®âÕS‹5µjË›£r4ǵ@ AHÇ¡lZ8N•!;Î)Ÿÿ }Ë–ëœÃìU»¢c.ø¦¦¦z}¸®ë 75L¡˜8köp¤CÈâÅw^æžçï­·õ„¤?Ÿ×ߤž€H2ÙX_mšø’I¦}ùËtÝpfWWc}õàà¤Å«ƒÁ ­­­rMëºN>Ÿç=ïyçœsçž{.•JeõÕ===”Ëe¯ÞÆYS«Œ-½C¡d;R8”Ì’É`¹ˆ”‚Îæš¦á3š&8þ”/ŽëfZÓT(¸è¢‹ÖÐî•6l·ÝvœvÚijU(@éh’ž¡þF+Щ2-5ß=ò¿´¥ÚÙm»]É—ò蚆i™ †hЦ¶È>ûÓiìr§R!êÉb{ïMòˆ#Xñ½ï±Ý~€4MOù¨ôöêè@läÜ)%©TŠB¡@.—[oÁÞñÉO~’§Ÿ~šo|ã\wÝuôõõ¡±ORJV­ZŬY³ÆÜF±ucš&×_=ƒƒƒõ ³ÍhRJGÖ,Y·ôJJxÏÞ”6ÿzs‰D°ä­—ñµ,bÏí›ÝxRÍb¶m‹jµŠU­bYãyw<ñ®V«kÝLÓÄ4Íqà+Šq¬D_€x(Ú0Ó´ªt¤Ûùô!Ÿâöü†Õƒ« øØR¢ |¹D®TØ2;,„;SÓ†ë«u;“¡õÓŸFóùèºåŒ¦&×òÞõÕííícfpyQ¤i ñê[n¹e½âÕ]]]uáVlxß•”r-Í}(Ç&Àtàøýwàùʾ¼ñÔ/q,ÍÐùÚÇãö×#¼õüñ;Cì³ýlöýÌÕ\ù_ŸÄ¶ltCŸÐ›õ†rì¿ÿþ<ûì³D"µ ŠI¿ô–tgú0­j]ŒlÇ&Nð÷gïæŸ¯ÿ“óŽ9)¥ÛjÔ hÑo"àóo‘}¶òyÊÝÝà ¥Dø|Xù_ýêW9ï¼óÈçóøýþ1-f/^­úo›ŒÔ(Û¶7ŸE-m‹¡lžx2‰™¡<±DcD"X_wަµ9¾QƒgQ¿÷½ïåOúÓ§ODz,€²®ŠIƉ™iè Ÿaðƒßÿ·Û™ïý!2…!tMÇ‘’€á§5Ñ´ÞuÙ“m<”V­ªÇ«GZÖÀs+×£x›Œxµgí¾óÎ;T*• ‰¨eY´¶¶òµ¯}ÞÞ^n¹åÆW†Á¬Y³ðù|j¡nËÅr+b¸®1‰^sÙ¶íöûÞ¡îïïgÁ‚Ì;—D"Áàà Gq—\r Žã¨Œo…béÍ P¬”êb-¥Ägø*fùÑ̉œÀγw&WÊah:¶tB´ÄÒ[dÓ¤´j•ÛFt„X×ö¦ôÙvÝnD"'8Êr,J¥Ë–-Û s[0äøã稣Žâ¬³Î¢§§gÔùÕÞEA4eÆŒj‘ncxß·”rËg}»Ç„@Qû7ÙŠ¶m‹Å¸êª«˜>}:•J…h­e i…brIG˜U³a~µi™4Çš8ùÀ“¸íÛhOµ“Ф¨X4¡Q¬”C¤£‰Í¾¿šß¿©‰JOϰU;âY­âØ6z$‚¬VÝ,ñBspjã2×¥”õ£ÝÝÝë}>ÂK•üèG?ⓟü${ì±»í¶ÙlvÔó¦×–´··—–5ûŸ+¶n+º¶…h[ÛŽMfówáv-óÛ‹Y®V6ûþ M#ÐÚ:ìövÍVœ|ž¶Ï~=gÕ5× ÷¯¹Ÿ+½½kMæÚ à}âÞ^?ð‹/¾˜eË–qóÍ7ÓÒÒ2n}µeY¬ZµJµNVB½õ ë:Ùl–ÓN;üãyä‘|ï{ßP U¡ØT'!hŽ¥Ð4×½íZ¡[º œŸ;ü³ÜÿÂ<ûösÄCñºXƒ¤/7¸Ez‚kÀ¨#1íBί}âsÏ1p×]É$Ò¶š†].cNB3)%Ñh”æææ ¹À…nÒ­¦ñƒü€›o¾™§žzjÜùÕº®S(èééQ u38·Š¬ïISµò¬}÷Ý—_þò—tttP­V‰ÇãtõªP(&F¹Z¦';Ð0‚Ö‘‘@„WV¼ÂÏïû%g~à fµÎ¤P. knïpC7hK4¡k›¿ýe¹»+ŸwK°¤ÇA ‡)½õË.ºˆ™—]Fh»íܙ֚æ6Cij—LNÊykùòå ô5ú¨‡eY477óë_ÿš[n¹…ßÿþ÷uMô½$'a¿Ê¢Þh Ã`Þ¼yl·Ývì¸ãŽJ¤ŠÍDÐ$IŽš\¶hæ"Ž}ï1Üô·›èê%ä¹%“BPµ-úrƒ[d€G ¹ÍçsK¶4 »P ¼p!­Ÿü$+¿û]¬ljBî5C±Š_BÐÞÞ>æÐñÎqýýýœtÒIìºë®|ýë_7^íYÖÝÝÝ”J%µP•PoÖu±XIJÜá*±L¡Ø|DƒaâáhÃHL/¹l¿ùûr讇rÍŸ¯£PÉã÷ù]÷¸”«&½ÙÍ¢ºN ¥¹Æ}Öà é|„ЂôÝq‡[²5â=Uº»±+_÷ûý´µµMÈî^O¸ýÀ¿ýío³téÒuö7ü·jÕ*5ï@ õ–GA<Ç0 |>Ÿš&£Plf’á8‘@°AØtM'[Èrøn‡²çö»sõ]×a;6†^›ä‰u~`³[Öz(D •jˆW ]ÇÎåhÿüçIðƒØÅâp¯ðZç²Jw7²ºqñu)%ñxœT*5¦ëz¬óœmÛõùÕ7Þx#O?ý4‰DbLãDÓ4LÓdõêÕª\K õ–iÓ4¹÷Þ{yøá‡¹÷Þ{yùå—ë„B¡Ø<¤£Iü>_ƒe­iCÅ,Û÷£l×6‹ëþr=†nÔ“Ð4!¨˜&}¹Í/Ö¾T #nL.s„®ãK§‡]ãîÉÄͯV)wwoT&¸'Ì­­­ y¼~à .äÜsÏå«_ý*ÙlvÜ~à#›¡¨óâV®gS5™¬¿¿Ÿ… ²ÓN;‘H$Èd2zè¡|ãßP-DŠÍŒeÛtõaK»ž`æe…‡anúûÍ8ŽÃ™GþÓù Ž”„ü7“\l¾cVZ¥U«–ÕXº5¢Í¨0 W˜mÛM.³m·Íh[[ãc6€ i1 ÃýÀ¿ño°bÅ ~ö³Ÿ1888îùÎq:::H$jÒÖV¨eS>ë{ñâÅ<ú裴¶¶ªo]¡ØÂT,“ž¡~$ÔsÁ% ŸÏÏÕw^MS¼‰S9…\)7,èRÜbm—Ë”W¯nì^ÐaööÒ}ÓMtœsz4꺽k=Á}ñ¸;ûzŒžžž e{ÛE"N<ñDöÙg¾þõ¯ÛÜ{½3f‡•Xo…Ly³Ò4Mw自V(¶(ÃO:Ú˜ îZÍ–]匜Áʾ•Üþðoøõí„”ÌòfwƒëÁ ææF‘¬õ÷O›†‘J±òûßw[Œz"®iT³YÌþþ ~]ÏŠJ§ÓD"‘ %Áz­V«\yå•üñä¯ý+étzÌÄ1ï1«V­RË”Po¼þájñ)[žH D2k\!–maè:Ÿ9ì4 ݇Y­4ŒÀÔ„FÉ4k¥[›Ï hÄbøkN¬ÐJ…Ž/‡UW\‘JÕÛ MÃÌd07ú¼å•lM褮i”ËeÚÛÛùîw¿Ë…^ÈÒ¥K‰D"c,š¦Q­VUç2%Ô[oð¶mÛj*[‰PŒx(Ú ÖšÐ0«&‰p‚îýa@°¦kBP2+ôfû±ìÍWVäojˆD†Å„ÇA–ËL¿ðBJ¯¾J×-·`¤ÓuAšFu`€j&³q¯í÷ÓÚÚ:ás—×bô ƒâSŸúgŸ}v]ÇÞ¡iÅb‘U«V©Eª„zóZÓét]×1 C%)[ ©H‚X0º–emK›’9v#¯t«{¨Ÿ’¹ùz÷Z[ÑFfP×\àZ À¬ÿ÷ÿºÿ~zo¿_SSCó¿3›ÝàוR’H$H&“®¯6 ƒÞÞ^¾øÅ/ÒÙÙÉ\@:Wô5M#›ÍÒÕÕ¥éÖ¤eS9ë{§vâðç©©‰\.ÇÞ{ïÍé§Ÿ®’%Š­„|†\¹0á$1/!-ŠÇ6˾:• %/¹ÌÛÛF‡1»ºXzþù´œ|2©ÃÇ)•À3 ¤ÄßÜŒ/ßà×¶m›wÞyÓ4'tîò:‘wÜqœp |îsŸ7¹Ìk3ÚÒÒ¢fX¯§Þlì6ëz¼6•?@]×Y°`ïyÏ{Øe—]˜9s¦ZY ÅVD:š  ¯w’˜ V®Rû=SÌÑ—ÄÞ a--p³¹G&Ãé:N±ˆút¦ó›dî»kha £3ÍÞ^Ìpƒëº¾A-=Ñõûý\uÕUÜpà <ôÐC¤R©1“˼sg__ý‘75e´Ïw]Û­Ï6ïZ‹º§§‡ý÷ߟgžy†h4ªV™B±µ³Hús •⸖µ”Œe³\e9Râ7|4Eø ÿ&ßßj&C¥¿¸;¸ Qœryx~µ”îÍÛÎqð¥RøÓé >¯õ÷÷ÓÝÝ=á.‹–eÑÔÔÄßþö7.¹än¿ývZ[[)•J묱noo'•J)OäˆÏÒ²,LÓÄ4ÍúïŽã4ö¶×4 ÃÀ0 @ŸÏ·A!XcJŸ¤d``€P(TO–Pqj…bëB hŠ%I¡RZK¬%]è«E~zﭵǑì2{2Å!W… jUéÉLj ã“/™Ä±,ªCCÃb­iHÓ¶¤kõÖB×±K%w;MÃDÚ6ææ 5Eñ²©©‰R©D.—›P}µ7¼ã¨£ŽâÍ7ßäÌ3ÏäŽ;î@×õqcßš¦ÑÕÕ…â];m˶mÊå2Åb‘R©TgÛ¶‘RÖ/`Öü ½ïf¤öøý~B¡‘H„H$²ÞýS¾áɃ>Hgg§ºT(¶c·/?Hq4±–Ÿáã¹?Çþùì¿p1Gì~8åʰuím † B›®AŠ””W¯ÆòDxÄýÂïÇ\¹’êà ±=öÀr§nÒq0¢QÍÍîHÍ °è–.]ŠeY>§Ù¶MSSgŸ}6¦irà 7000°NFJI{{;ÉdrJžK×|O–eQ((‹‹ELӬ׳뺎Ïç[ËBv§nU{Âíy>lÛ¦R©P©T¨ÖzÂâñ8‰D‚`0¨„Z µB± ‰u®&ÖÚÚb„Y5°š;½ƒJÕä¸ÅǰCÇäKyé ‰áò#C7ˆCDáM2ßÚk3ê¬)˜R"ÊK—²ì¢‹hÿÜçH~8Vÿ°0;ÂïÇŸNcD"~í|>ÏŠ+&|Nó΃@€“O>™=ö؃ /¼îîîuZwŽã0mÚ´)kYK)) är9 …¦iÖÛMÂá0º®S.—éëëcÙ²e,[¶Œ•+WÒ××G±X¤R©Ôª‰---Ìš5‹Ù³g3kÖ,R©ŽãËå(—ˆA2™$Nðšç(¡V([û1õ©O› î½.0å,kÓ4Éf³uá´mMÓƒõ&1Ë—/ç¹çžãÙgŸåÍ7ߤP( i­­­´´´ÐÔÔD<' áóùê¢ßßßOoo/ÝÝÝ  ë:³gÏf¿ýöcÿý÷§£££Ê0 ƒt:MssóZ©S^¨~øá Ê–T([–|¹À`!‹S}¹¦`Dƒz²½ü§7×Ç1û~”fíDŪ`VÍÚ.­&Øn,Û§|‚þÃ7)®q»\¦ÜÕµ¶XÛ6zßþö·ihh ««‹êêjš››Çÿ>ê¶¶¶²ÝV ã‰D&EoºȵQW¹˜ºI8¦7ÕÇ›ßà•u¯Ò“êaJÃŽ?ê8&×M.–9®CÁ±±»(ö T±’TÑâÖ4OÀuÝ(‰¶©›X¦‰¡º¾ÛÄÁÍfÉlßî î.ba`Äãl¿õV¬ÚZj>òÜdÒÛÚåÿ¾?È».ºibD"˜Ñ(F8<´•Z,Á¹}Û6zzz<±Þ[#úç`ÉÛ…õ55\wõÕüí™g¸åæ›Ñ”"ŸÉ`è:ª(¾èºw=Û†B  ‰P_[K$ÁÎç½{…<¯€izS¢âß§‡B˜‘È^' Ã1þèžžúûû±m{ç²I,F0ä7ÞàÞ{省­£Ž:ŠüãœtÒI„ÃáAâì[Ɔaƒ„Ãa@i¯ôž¶h¹®[ÚwÍfÉd2d³Ù’»Ý·æ7oÞÌõ×_ÏK/½Ä·¿ýmÎ;ï<ºººãúé§Ÿ.“ œí‚0öÈÙyz’}äì|ɽӮõ\†n „P®âÝîÍ,_³œ··¾ã¥VÒ\ÝÌäºÉ4×4S«"`14W¹¤s™!Çßnöþ[•„z 0LLÓ‚|žÜövœBô]ÜÆ€‰xVªŸL×1"Üt·P”0ÅÏô`#ò0DßEè°iÓ&2»nxm¥¼b"¶]º¾ÿ¯›ÏSS[Ëϯ½–·V­âšŸÿ ƒ|:ÖÝÚºÕÙ‰êéT l•Nc|ä#³g£2ê[ZÐW­¢ó®»ÐãqôH„@SÁ–BÓ¦œ8#ÅÍf1‚AÌŠ Œ=D9,Éd’¾¾>R©Ô 2¡Ñh”`0Èòå˹ãŽ;X½z5§œr çŸ>³fͶmÒété;š¦aYÑh”H$R ;XÉçó$ ‰™LÇq‡ÃÄãqž~úi~üãsÜqÇqÕUWyÖ¿D} ‚0ÖÞñT.C2›"gJÖï®¶†æ ¨ ™MÒÞÛÁ–î-lîÚLg_é\†€ ŽSŽ3¡fÇM=n¯ãDÀ `&¶c㸎ë”Ü麦cÁ@ 2 §½P@ÓV»o]ûë¹ºŽ“JÑ·d •ÿøêëq’IÜ|~§`…¶4††e¡™&ša”>ù|žM›7ûkš;'Žã kñƒëz¢m`YÞG)T6K<ãÚ«¯fÃæÍüäk_ùÿ~ ®‹Q]V[ µµhÕÕh‘ˆW‡»ªÊû×uq°aPaÛ˜¶M¾³“ܦMä6oö¶¦Yᣦö¼ó0b1P 3ÅŒÇ÷+ˆnOÖ³ã8$ úúúÈd2ƒŽøt[[·Ývk×®åì³ÏæSŸú---¤Ói²Ùlé;†a‰DˆÇ㥀±÷ºþܳRŠt:ÍŽ;H&“8ŽCuu5ýýý\qÅlݺ•n¸A„Z„1ú®£Èä³$³ir…n1²{×ñÀÏlfš&¦a¢ky»@_ºöžº]tôw¢¡óOó>PŠßõ<–i±®}=]}4T5lj…b„ƒa,ÃÛ’c;6§€£ºRèý ¬¼M8ÆÜU°•ò2—årl»ñFò6PqúéT}àÞúu.‡›Ëynñ]­ä!˜ à¿¿Ÿöޝü4¦¾«[×!ðÜή‹J$pÛÛQ[¶à¬Z…6u*Ög·,®½î:Ö¾ñÿýÃb65‘ÓuLËòJ}úBï»Á‹îwß²7Šû‡+kj¸…ù;È®[GjÅ ªÏ9‡@C*Ÿ÷î;C7MÌXì=ƒè†dzÙli{U¾xNMÓp]·d/[¶Œ[n¹…õë×sÎ9çpÁ0aÂ’Édé;–eLJLBr¨5$™LÒÕÕE2™,%C¹îºë¸ÿþûE¨Aûd 9’Ù4™|¶XàÃs‹kCˆ6ÞO1Šnk]7Ð5 ÇuÉî¡Ä¦RŠ` Èò5gé[/á¸yÛ«d„¨‹ÕÒTÛDSU3 •uTE«±L‹¼'Õ݉ÓßO4!ˆ`Þ’¸*‰µ ‘zí5v<þ8¹ ˆw•§ŸN°µ#ÅI¥) å@4 Ý0èêé¡·¿ÍTÿ+Ù,jûvÜõëQ›6¡úú@×= yÒ$ôÙ³ÑÀq¨ˆÇ¹îºëXõöÛü÷O~B,#•É`…BÞº³¿f] Û5 εmL]' Qb™¦·¯i8©”7n.Gâʼn/X€Õ؈¡ëX~L‘¡?ĸ](H&“ƒ\ÇþÒ¦ã8„B!b±o¾ù&7ß|3+W®äÜsÏå /¤©©©$êþ¹-Ë¢ªªŠÊÊJ,Ë:lâF/îÕF)òwß ;v MœˆÞÚŠÞÚŠV_Ñ( r9(PE뻺®Žýkýå/Ü|Ë-´q½}}˜EWùÞð·Â¹®ë­ñ†BÄB!E+\årÞχm7ÞHvíZê/ºˆŠÓOÇ0M0àïó·Dù)=}qJcºã8***X»v-·Þz+K—.嬳Îâ’K.a„ $ …Béþ,Ë*Õû(Ð#M&“aûöí$ šššÆÔ÷²e˨8ˆ:°‚ ŒM×%oçÉräloÏ«gm{ PÔñÑÚÿ5Pª‹aš7é÷‚ʼR.ÙB޾t?Ú7°jój¶ï؆išÙ<•GGƒ%ÓßKÞ) D¨ F1t·˜øD´bÀ˜ÝÛKfÍrëÖQùþ÷{Bî8h÷ÜCvíZt?ܶqÒiÏUžÉ`44àž>΀’ *•B‹FÑ¢QÏZ- Ÿ/­™kÁàÎi¢tšš~õ«_ñ›ßü†ëñ ,X@gg'†oIï㘬”Bó‹R„B4 ²YôB#&ÙÖF×w™2…º/~­®ݲ(éTª”#Û—+MÓÐu½´ÊÜÍ›7sÛm·ñÌ3ÏpÒI'q饗2uêÔ’íÇ4M*++©®®U=×uÙ¾};]]]ã{õüùóù¯ÿú/ÈårLœ8‘yóæ‰\ÊT¸]å}×Åul×)í öÅ{g‹ÁRîïÙVÊÅ-}Ç-þ~qXóöÔÌ º¦‘È$ØÐ±‘ëW°®}=“ë&sÊ”ci Õ’/äp\‡êpœ¨*¿äÖ6 oÿ±iv}ë:©+(ttxîdÛF3MÌÊJŒÊJŒxœ@M Ûfûöí;ÿÀb`šæ¹°ý=ξ…¾Kr¿ˆÇÃ?ÌOúS¾õ­oqÑEÑÕÕUòRî×øìºÞßX ¤Ã¶QÅtœN*Eö`õjÌí¸ã¼}Øá0ÚAX¾µ^YYIWWwÝu=ösçÎå‹_ü"³fÍ"™L’ËåJUÂt]§¢¢‚ÚÚZÀ˜è·ã?3ÙñÇOUU}}}œ~úé\~ùå’™L„_ ×U%Ñw]»¸/Û)FƒÇU˜†AÀ b&í}¼°êÞØ´’Ê`”3Ž\ÀÔÚRéAÓ¢&\‰Y´®˜UÞ:í.ã•ï–@ÄôRÅÄ$†¦•Ö;Kõ«}ñ…<ËÙ0×ο–õŠ+øæ7¿Éé§ŸÎ~ð …étzŸK5IQ|Ý\ÎÛSnد¼‚}ß}˜'ŸŒyöÙ••ž ˜lÄuÝ’‹»««‹{ï½—?üáLš4‰Ë.»Œã?žL&3¨Ö¶RŠh4J]]‘ˆ0I-Æ¿ë{É’%Ô××Ë#Âaƒ ŽMÎw»òØŽiXD‚aúR},}û%–¬z£ê§pî¬Ó +ƒl&Em¤‚p 4X¬‡¾ÈÁd ´Êu3 «¯ÞT 3‚bìAçÙlÛ¦¢¢‚žž¾óïJ¥¸æšk8òÈ#éîîÆuÝ“l¥p ¯\d{;…ÛnÃ8çŒÙ³½IE,F¨˜‹{Û¶mÜ{ï½,Z´ˆ‰'òùÏžSO=•|>_*˜á–êêêÆtâ«qLöÌ3Ï Šú—· ‡W¹ä y’Ù4é| X(Jw²›Ç^~œõí8köi,hK6™ ŠAÌ ynuØë˜5hø.®Ûj–… a„áJ×Ù¼y3ÉdÒË4v€C¾/záp˜_þò—<ðÀ|å+_á‚ .(m Î[©ë¨l'“ÁI$P¶ 74°¡£ƒî»gž}–)S¦pñų`Á\×%™LF©Ôduu5µµµgõ‹Pz¡–íY‚ Œòvd6E2—FG'Œ°òÝ•<¼ôQj*jùÔ?œ…AÈ…*+Œr\?QÉ®ƒ·®—¶Ié–… y‰P†޲m›M›6‘ËåJHýõûšš–,YÂu×]‡RŠ/ùËœyæ™$ŠV±oíó¸ë¯û{„™ËRŠ\6Ëk¯½ÆSÏ=Çò•+™6g~úÓÌ›7Û¶I¥Rƒ&~–¯†††A¨D¨E¨AöÛuH¤“ôg’^ºS¿{öw$si¾ôÁKÉÛ6±P„Úh¥7® Üí¯[îk•ªb¤[.—cÓ¦M%kó`p‡X,ÀÃ?Ì]wÝEUU—\r §žz*Ñh”\.G6›”c{¨\ØþqÃ0ƒ„B!ÇaÃÆ<ýøã,{úirù<Ç|ð[ßbÚ©§’/¦úôÚwsëºNuuõ5E¨E¨AÈÂîIõ’·m,⣯ƒê˜WçÙu]¢¡µñ*4†gìJ§Ó¼ûî»Ãr.ßj®¨¨ ™LòÐCñÐCX°` .dúôéÔÔÔ”¢®ý`0_`}‘µm›ÞÞ^6lØÀòåËy¹­-[·ÒÒÚʇÏ<“sç~ðA2½½¨¯|+Cà9p]—p8Lcc#ápxÜõjA„&•KÓ›ê‡bêË’)—h0Lm¼zØÄ:‘H°eË–aÇÁ4ÍR=ç¶¶6žyæV¯^ @CC---477SUUE$ñòµ§RìØ±ƒmÛ¶±yóæÒ–¯É“'s 'pê©§2¥µHvu‘ïï§pýõè¿ô%Œ`·¸E¬¦¦†ÚÚÚq»›G„Za`;6Ýɲ…ü ò™J¹D‚êâUpb탽½½lÛ¶mX…ÍìH$‚išôõõ±víZÞ|óM6oÞL{{;©bò T-ª¡¡É“'3}útZZZ¨­­-Yÿ~n]×qs9ìîn W_qâ‰XŸøÑh”††ÂcdËÕbÊë!‚0 cä¡¢Žžt?‰LªT`DÓt’Ù4º¦Q«:8ˬxΪª*”Rlß¾}ØÄÚ0¼¢#‰D¢”ýköìÙÌ›7¯T$ÃqœRêOÓ4KΔRäóyr¹½½½C¦|ÖƒA̺:Ô—¾Dîç?'>c“?ùÉÝ ±ˆPQ [ ¨4#Vµ £MÓ¨‰V0,zR½^4–aRpÙ$ñPlX®U]í­…···ë¸80ÉH&“!NNÞáWÚP†r`tøP ¼½åºNåܹ_ÿ:½·ÝFêØc‰OŸ>îûŸOÏešf)/¬ˆ´ cX(B]¼ /-i"›äïë^!Ë’Íç†í:ÕÕÕ466Z®{iUùÇþlo[¹œb6ÉÆæfZZ[iþèG‰.\È»W]E®»[„z¬[ÓÉd’l6[Êù*‚0BÔÇkÐ4° “?.û#/¬^JαÉÛùaëæææAžÇÑâ]ð£Äãñ8­­­ÔÔÔ ºiÒxñÅÄN<‘ܶmØÅ½ÔãÖÓ2žs}Ïœ9“iÓ¦QQQA"‘ଳÎâÊ+¯”\ß‚ Œ2…,©l†M]›¹iÑM\zö˜=yÑ`C7†í:‰D‚mÛ¶•¶]4Žã ©««£²²r·Ÿ»¹¹Þ^ÜtM× O˜0d²—ñ iãvÚu]b±?ûÙϘ0aù|¾TîRDZ„1cY[!P0¥¡•Ÿòqî|ú.¾ýÑcRí"áêx<Žalݺ•B¡0bã¤oHÕÖÖRWW·Çâz0ˆ ’+¦-$ª«÷- ÌX²¦5mü µu8}útêêêämaìŠu „í:œxô¶íØÆÿ{ê6¾ý/ÿ†©Ìá³"#‘­­­lÛ¶ÍË n‡íoô×Éãñ8uuu„B¡÷üŽUU…“Ï{µ»7nĈÅ0ÆHùÊýaܯQg³ÙRqñqæå¡Œˆ‡¢èÀ?/øá@˜‡_ü×Åqa½ŽeYLž<™úúúA™Äå8íg›4i“&MÚ'‘ö Õ×£\—M?þ1É7ßôO*B=ÖÜõ-Âx 2Ç4t>ýŸâÕu¯ðêúØ® ¯0išF}}=---D"‘a5tüqØu½ZÞÁ`¦¦&Z[[‰ÇãtÎØÑG?þx¶Ýx#®_Àd‰µ,Ö ‚ ŒÃX(„ê&Î.÷ýí>º=†¨®5D"ZZZhjj"”Äu àî¯õì'<‰F£477ÓÚÚJuuõRš†¦ë4ùË::èzì±q·N-B-‚0†0u“€eñ³ÒXÕȃ/<„í*\uèöB×ÔÔ0eÊ&L˜@,+U«ò mìI”}·¶/î¡Pˆºº:ZZZhii¡ªªjx‚Ö”"XWGÃ%—Ð~ûíä{{Ç•U-B-‚0Æš‚–É'žÏªwWÑöΡ\“t]§²²’É“'ÓÚÚJCCñxœ@ 0(Û˜/܆a …¨¨¨(¹¶[[[©¯¯/U¸Ö¸!¥¨ûЇ0kjh¿ûîqeUK®oA„1HÈ 2¡º‘/ø0½ø3&M§¾¢ö°ä¾ƒƒAÀ[k¶m»”ËÛ¯-íöæÒ¶¸!M¥0‚Aš.»ŒMÿþïÔýË¿ž4 \Æø–\±¨AÆâà­y)8ç9MÓøûºWëõ}kX×u¡Pˆh4J$! –Ò7曢bÞ<¬º:º}tüô!\¥PJ¡†µ ‚0’Úä‰ÓQMGP«féÛ/ ÉòþŽ{,—\‚ÝEKD¨AÊ¥º¦³àèh{{Šòu覉¦ëžP‹ë{øpÇqʳº Â00ÿ¨ãÙ‘ØÁ–î­žû[•o¶23C©Ñ½pØ…Z)…;Äær¥Î{ˆ°tÃÀ0Œò-‚.‚pÀºä­I7W5ÐTÕDÛ;ËŠckù>fðÉ˰ꧡJ‰P ‚ ì—ýÄ÷÷ú(TyFEÙŒF MJßßþ6*½ ‡ÁÆ÷~¤¦ù§þÓ&7R°=wµalzýE–¬ÙÁ%Ÿû¸Læº\øÙO³ä¡ß²-‘ã™ûïægW_ÃãO¿€ë¸Lœ6_üü'üá†ÿËÛ“è†>äz¶ ‚°§QÙ—çu½©^6v¾[¶Ñßþß\yÚiô¿ø¢×>£Ìý}ØîF9.®ë’ÍÍÛÞYñh&GNjô‚Ét#'…ætóÒêvêijj" £:u Mœý±K9éÈ© ¶¼q‚ ûmHzÑßµ±j&ÕN*o÷wQ”+O>™|g'ùŽÏÒE“ópºt]Û}[•“¥4C¥C3€B#•s8æ´³9¦xü¿ø ÞÍ43wF”S.ý_Ì\…뺻E‘Äu½ ‚RjÈ-]º.9_A(?ü1ñø©óxîÍ¿qþ©+Ïèï¢û;PWG ¡¾çŸ§þcóv#PZÑ]=úÈw­x·óÆ i M÷ö\gsy\×åÂK.ãCgÎcîÉçð­K/@GíUh5M#£ë:†a ëúnA„²´ª‹¾Í¹SŽ¡7ÕÇöÞö!E¢\&-'ŸLòµ×F…ÇcàÇ<Ì­QlUL]5F)›©^\GC±­¿¥‚Ìnm@×u ]Ó˜_¾PtÇçÏ'½r%ªP±â"Ô‚ Â`BV€¼“ÇqòlƒbðXdÚ4â§œ‚Nû¦¶µ ‚0ò„¬ J) ¶]Öí`D£4]|ñn–¶µ ‚0¢­ŽëЗMHc(…JømˆP ‚ €—NÔÐ V¾»’G_z¼¨UªlÛÈDF|}Z„ZAØI5X½y5¶ë”u#¦ÿå—Éut”,ljAaÄðEyúÄ£QÊåÝ®ÍåkU».š®Ó»hýK–xí0B‰OD¨AO¨ÑPJ„h¨l`廫ËV¨Kû©çÍ#¹bňދµ ‚°S ðêè Gñö–·}/G÷‚'ÔÇKvÝ:PjÄÖ«E¨A„ݘ1q:[{¶á¸NY–½ô—"3fàf2ä¶o÷MmjAaäjJc+ÛfkÏö¢>©rk¯>u<ŽUSCêÍ7G¬D¨A„ú„†B F¨‰×ðö–wÊS¨Ù<š6ô믋E-‚ ŒòÄhjÓ¼å¯S—§{ð t¤V{u#QŸZ„ZAØÕ¬¼uêw»6£”BÓË/¢¬´N=s&n*…“N—\â"ÔJ)\ו†yÇF@§=šÚ|é|†ÎDwiëV9ZÔÁæfš¿ùÍû¨sêQ<“Óuy<‚ ïØÈ´BQ©¤"\Á;[×”&7eÙ†AøÈ#QÎÈT“^: gù¯¾ú*‹/.ë—Cå;¶fÍ-Z$ïØžÚ©¸N=¥¡¥¼×©L^œLF„Z äŠ{ê©§øýï€ã8Ò0‚0ÌïØòå˹馛*“÷ÏŒIG³¡c£wH/ï¼ßj„òž‹PR¡PHÕQ:€º®{ج°Cq­á8§Rê€Ï±¿ÏuÖ“÷õwMÓ$‰È;¶‡¶òשj>ŠþL‚¾tâ°®Sšw¬x\3MÚo¿|gç ã{;çÁŽ_~_¡¥Ì 8ž­kˆº®¶ªB‡âZÃqNMÓøûû\÷g=y_W‚Éöþ,ügÛPQGÈ ²±hUû)FËæ+Fyë–EfåJR+W–úÏ{ó`Ç/¿/‹P £–T*ÅâÅ‹G¥ëñâÅôôôòÉÀK/½ÄæÍÃSÅÈÿ~[[7n< sú¿¿jÕ*^/&ØŸs¸®Ë³Ï>K*•ÚçkmÚ´‰—_~y¯×òwtt°¤XíHØ;Žãðì³Ï’ÙÃÚ««\4M£¹º‰w¶­-64‡¥ß/]ºtØúý{]ëÕW_åí·ßÞãµühïè¬Y¤‹BÍ{ôÃW^y…wÞyç Þ±õë׳lÙ2jatz:;;ùáH>Ÿ?¤/ëpÕUW±fÍš’ð üó^wÝu,]ºtX®åÿúë¯çÙgŸ= sú§{;ï¼sб}y®¶móýïŸööö÷|®þ½-^¼˜ë¯¿~¯÷ëýõ×ùÏÿüÏQ×gFã;–Ëåøþ÷¿OgÑ»k{ùž½#`}džÃroþs¼öÚkyá…Ë;vë­·ò裾g_ÏœIº(è{²Àýïßpà <øàƒûü~ u_‹-âšk®Á,‡9–ÜÈïw×O¹ "F±ZÍhk˲¼-,‡øù(¥0 ]ׇåZþ÷MÓÄ0Œ>§R ]×÷ëþÏ•RX–µOÏÕÿù¾^Ë?>ðwßkL(çwÌï {zþ:õ´ ÓXüÆß(86¦nÒ¶®>º?×2 cï×*¾ë‘Y³h¿çì|Þ«¤eÛ»í©vMÓˆD"ƒAÇ)ÛßÉp  Žo¡6 ƒp8|Pki‡ÿ¥ ‡Ã¥{÷µr¡” (! ‡÷:ƒ ‚Á ‘HMÓJ“‰CÑB¡¡PMÓJýã`û—ß®rÎçp]wŸû¨ÿü‚Áà öÛÛsx­÷j¿½¢Ñ(Á`pçøŽù¿w°í:Vß1¿­öô,üÿŸ1q¡X˜¾\?u‘šÃ2g¿¯kƒÁÒµ†ìË~{M›FU8ŒÙÝ ÍÍ{í‡~»ú“€y÷£Ñ(@M³i¤R MÓèîîf„ Ìœ9“x<>f¶8)¥ƒ¼õÖ[¤ÓiæÍ›G.—3áB×uR©+V¬`Á‚¥Ùîh¹·_|‘3fPSSsÈú–RŠ@ @[[MMM´´´Ïçª/øç\¶luuuL™2e¿Ïé÷Ñ7ÞxÇq˜;wî~õQ¥K—.åØc%îÕ­éßï† èêêbþüù{¼_ßRooogíÚµœ|òÉC>ÿœ›6mbëÖ­œtÒI»Óïkãù½Ó4 Û¶ikkcÞ¼yD"‘=? ‰ê4ÑB# J;´c eY¼üòË4773yòäƒî÷ïÕ—_yåÂá03fÌØk_vtãÖ®¥òdR“'c*µÛ–-ß´lÙ2b±3fÌ(Mh÷×cµfͺººÆŸPtgÜrË-¼õÖ[ƒ^¼±0Éð]×Éf³»ÍnËiÖ …öè2’„Ãar¹Ü~»´¤O„ÃalÛ¦P( ˵”R„B!Ç9àsúp@Ép8L6›Ý§Ì¸ à ›Íîõ÷}—©eYd2™ÒïúïÖàsš†I&“ëº.¦@G‘/Æ}ö2ÿY¼×é÷Ã|¡À¡‰E¿¯÷ÁuÝ}šÂaªãqfÏ™ƒmÛCŽ[J©ÒÄÇï³û£AþïƒA ßB-‚ ã…q½0cÛö¨¶¤½|º`×I ¹,:†®ãíVÔX&=í[èJØL;ª\‡‚ãî÷ MÊÍ;× ÓÉV0PzotËÂ6®}#Zˤ¦òÙ,ºeñÒ¢»¸òÚÛX÷Îz>ö¯?῾sÊqG¤¼áhlÓrw4¯1«‡s\ õhQJ¡¡èzw=÷ßu'>µšßþñ·4u\W¡k.×ÿð<û®ÍìF“×¶d¹á¦˜7Qh蚆 C¿[®móÎ+müÏ 7ЙÃ-¿ü®]Ӣй/}ýD§‹½õM‚GŸÉÏðUT~á-îxðlxêv>ù£ŸsÅw?CuP¡”†¼r‚XÔe7C'›â¥gsÿƒwóÌÊÓå ëþê|ó§÷°jûffÔøôÙsùØg¿JÛ£·‚ë 47a‘v]Ð4z¶m乿þ…;~ws>ø,Óæ+Ÿþ(/ägòö=ÿݳž‰-Ó¨›ÔÂ.:‹ËÿψWF‰Ÿ´€£[ÿˆ®(&··M!­5ê‘ÅvlLÃä‘¿Ëß}Œöž•TY€Ê1r%õÿô#ž¸õ \V/þ ³ÏøKßnçÄiµ8®ÂÐeð„!ä ¸à´™l«ø0Ï=v5í«ž£iÖiÜþÄ›\ò ëüä_?ÌOï¦{ã‹®®+®üòeTŸþ9¾yái¸Ž‹nH~(adž7Ò3%Àuzû¸ üÝý_åµ-9N¦7xiåj4Íû®íIଅÇgøòøaëM뺎†·^­€¹§œ *Å››:P®‹B㵫‰´ËÜÉQ;O¡Pð>¶DÛ "ÔeWÜ)äÉçòDBÅæfŒþï¯ñȯndkÂË/}Ë×1ç”OpÒôF”ë KÄ· ìypÓ½w+›Nc+o½ÚµZæžÎ'OšÅ5?¾M×ÑT·Þù _ýÚÿ&€eYÞÇ4Åq%Œ8Æ•W^y¥4ÃMøM³yòßqëï!Ou &¶Iu<Â1 Ï&°ã nºóQ¶®i£mmÿsû¯iŒ]\q‚0¤!­Ð4Hwoçö_ßÈ¿LAe±¢L;z:AËâœ~ˆÅþ?–®~—§ºƒÚ¹ÿÄ5W~…fè"ÎÂè2çdõÈËuçöv¬p”PР·§—XU±p?ÅBÇÖMô¥¦uÄN—†„½âä³ttõPQ]…²óô'3446aê;ß ukÖ ‡*˜2©AL¡LÄGaø{8•‹+©C…Qf½z;ÆÚ}»(tüÕ#×qÐ Éô'ˆP {ì<”!ê›u\F?PKÞ-A¡a”’Ï$)(“h$$!‡‰úalT/5g¶—þóÿpÜûæðàS¯Þö'AD¨AQ4.F°’~øLÞ\³‘œí×)vq]qÐ ‚µ £@¯5&Ï™Me¸”‹cç1M ]×°m[ÚGD¨AiìLDZQhN–o^r}öñÈÓj±®a8\ß‚  Q­á¸µ55,ûÛÓ,{'ÁO®»‚SŽŸ…á'¨A„Z„‘Áu•aîþÅw1ãõ<ôçGiŒ‰8 Âp#®oAL¨„CŠGþðËW®BÃÅ)$ LD¨Aƒ‡®èë7¸î¦ßÝò,g_ð ËBÃEÒ3‚µ #Œeèô':hž~~òIV.º‰/\þc\Ý@Ó$”LD¨A¼„'ùL?÷ÝvSŽ<‚'ÝS7¯÷A¿ë&®úÙ t%2ຈa-ÏÿÏá<ìÈ™IEND®B`‚giza-1.5.0/docs/samples/images/sample5.png000066400000000000000000001263071477367113400204120ustar00rootroot00000000000000‰PNG  IHDRênÁ.Ì£¬ŽIDATxÚíý{˜dYY%¯wŸˆÈKe]»«/U]ÝM7t7ÝàØ¨€‚€#úé€8¢  £ƒ€è(Þ~ŠJ£>è¨4Ê訟ó8ÎèÏÏË(#`Bsk®Ýmßïu¯¼Fœý~œ8'ö9{ïw¿'2³²*óœ'Ÿz¢"###"#Ö^gíõ®EÌŒîèŽîèŽî8ßÓ½ÝÑÝÑçãÑÛ!ÏÓZÛý±»£;Î'jiLÛ-Ñ‚Œ1g•S'žtGwtGwlÈ‘ç95ßþì»XßøÆ7Þzë­³³³[»\1ó²ƒV³à2[ùÔçÃKŠîO¯fÐ+++ÏxÆ3~â'~⦛n:}út ÈŒYYYyö³Ÿý?ð[ò°‡ÃáwÞù”§<¥øïh4ʲl³_ÆíϾ ø¾îºë>÷¹Ïuì`'T~5.›òÔ/$W ý·ñ¯{¡;Ÿ]ÿqÍ5×üöoÿö^ÿúýÑÌÌ°Í $|Æ{ƒÁ§>ñ‰[?ñ‰¿ú«¿ÚNvòäÉk¯½ößý»÷MßôM_õU_5 Î]Û)Ú÷®]»Œ1S¨iÝq6·ú2!üõ/5`Á¹Þø_îQÇ_ýiõðšË+mýBqýÐw®´­Î0vÒQ|H˜ùÊ+¯üÎïú.å^uå¿pûí[rº`vvöÏþìÏöîÝû×ý×ú§zýõ׿üå//žÅæ!øÚº,€»ƒïsë³Z‚¬)Ù±‰nã_ŒÀ.'?1\ÇnjÿȹüE|SùoõL ß} ƒé äåÛAyèÓººº²|úxv–ó\A›çÙÌ®cGÛÂO·1æúë¯ïõzW^yå­·Þzÿý÷ßtÓM/ù˯¹æšÍCð^÷^éŽ-¡ÛÆù"炆/S‰Ú#À}Iáqð ywñu8ý𔮃rß.oÜÌ::(¯½Òl‰sClbHæ €¶H.ÐùÌ™3ÏzÖ³^ô¢]sÍ5ðÐëõŽ=ú³?û³ï|ç;7O îà»;¶¸3€€,ž'àÕôêô¹ÁÐ?Rý—ã|¡»r¯ÔÀ7"8Ž|WrçߎãÌè÷zs{v ‘ç ò^‚åþì L¶ga×>Ú™™™k¯½ö—~é—fgg?ö±ò‘ôz½Ûo¿}iiéÏÿüÏŸõ¬gxéK_ŠÍ´ñtðÝ›N·)N·«ëå$¾æãš5ÅÕpŠà¯ ß=½\h|™§8|W^Dy©’ï¨#ÏóK^øòûâ™ÙÙƒöa¸Î#_yúõ×ì»ðÀç>ýé[oûÂÙ_f˜yiiéøÀƒ>ø?ÿçÿFÿê_ý«—¼ä%ØüAž¾»cS §6%|Sµ5âILB *ˆÐpD ˜ãžü¬ ãˆ0nÄåòÈJøî9°ŒJ”ßo!¢ÑÈ^rÉE/}Ù·"›Áòi ×|턬.?í†kŸvã×¹èÀÇ>ý…³ÿ8‰hß¾}oûÛÝs‚‡zèÒK/Ýlßwßݱ‘,›v±ØWKø†#R+A\€o¤¼Þ1N"ˆ»7óïÁ:ä"j#ßYɾ«”Âf3F;††“Áp8\>vlffl1±g>Z\¤Ìœ>yò,?‚\⟸ð >üc?öc<ðÀ¾}û>ò‘¼ñoü¾ïû¾ÑhÔï÷;øîŽs²á°éØ—@ÃM÷IáûÆTqïq \LdWâw³¸‡Q å®Ö´¶ch82bCÌÖÂrü}h3cÎöºV#×^{­1&˲o¼ñÅ/~ñ 7ÜðÙÏ~vaa@–eûîŽs¸³: Sê+¸EéÃ7)Ä“¤¢¡ÞðÐSà$b7Ä™ÌÆ÷_S‡ïâßÜ[üÌΡáÌà|ü%XóÙÂŽ°E¦ï™™£Ñè/þâ/žÿüçö³Ÿý§ú§_ÿõ_Çægt±Ýѵ Ÿõ 0(ÿ}çßâB1¥â_p¿²ú—©_6uÊÙ¸Aæ¨ YèË„.ø—ƒ×ö˜ÆÂ{¨m¿üt_¨¾ó5p^ùlGÁwúk+ÏIŽ;vèС뮻Îó5_ó5ï}ï{äyÞÁwwœ+t»ï@ö Ž)ýú52pW¨Ô‹c™™”Á+LÌBëñÖ aä'Èăú¾ü[~LÁ{Þk;S¾à´½ßy6×~q¾%°0ŸÌÌÌÜsÏ=¿þë¿~øðá|àGŽ9 ì»OºC˸}Ä$ì ª(ÉéJA3i¥Gkö-9"h(U_Qi˜ƒ‚ê 9ÿÚònóЫgêZŠÝžo=µx²uì»Àè½{÷¾óï\\\¼ì²Ëúýþžð„¾»c‹?==OÓÈBz馒¨㶨OQºÐɑɸ¤e0&L'AœŽò¤ê‰œ]ÖêY/Õ«¸0*`¶n2O*r-@¡µãÛl™ÆÃDôÉO~òÃþ0ÝvÛm/}éKŸøÄ'v¾ïîØº]ÀtOT*4 :™@‹4†'I¤ØþýÈ–m!APÃÁ5û¨í9gÍ‚ˆåÆßÞ†Þðsž}Ø}ôèÑw¿ûÝÿé?ý§¹¹¹O}êS—^ziǾ»ck€;&Ó†ÂwµeñŠ ¿²¡o˜8 n…à> w,©pȡ۠ÄîÌ™˜÷Ù·ëÕqÿ(£í4¢9Æåó@Çܹ` ¥Úÿ´!4?çAœÔ#€@lב ƒÌlÙ‡:çAœ€áhtìĉÁÌÌü`ÐëeáK´´´2²ù©Ó‹[E½ûý~¿ßó›ßü’—¼äãÿøoþæo^rÉ%›­œt𽃀;‹G|4œgOwU‘¬üDƒ¥46äT¤’w p95ûŽ dV4J]ÖØÃ7D<*Ð4Yƒàð7K«¥¨Š¢•îÃsëÝkhm8ºîª/ûŸû3³3{wÍceÅ0#· v‚3‹ßõ-Ïýÿ¾äùÿxËÇÿý_8ûð}æÌ™?þã?~õ«_ýž÷¼ç9ÏyÎþýûŸüä'?þøã‡ÚìÐÁ÷ö<©~=g„2‹gé)µ×ãlÄ©w |s=8Mc÷ž¾“)á2ûæˆÐÈÎdã¿Æ¹ÞFÇÝ­ÈFl,yýp~нç릦ØÐ…ÜaßÕ‹s® )̘ô_¼ff°:‚,19ö.Ì`ßž‹ì>ëkŒpÍ5×|àÈóü}ï{ßÞð<òÈç>÷¹ë¯¿¾ó}wGkŰï`w¯n2ÉâJ7Z†íiö-ÑÒ["Ã÷fo]•kö¶.­gowÌ1RÉPA#  ?Ák±pË3Ý©z÷ Zçšj•uá»òŒ7Îs-Cœ­][]€a¥ôÑ(ÏVW†kÃ-ZfØZk­½êª«~à~àIOzÒ'?ùÉW½êU̼©ÊIßÛíÈB™Ú=µfb<¬4¢² …r"Ó´¶Ô˜“§ú½$_Ç o'ÓWErþ±8êI¡¥BH¶B=%h˜q76]ž^I(T"Õ-Ï5'ä„L¦±K°D[64ŸeY–e?õS?õÞ÷¾÷èÑ£7ß|óÞ½{»­Ëîh‡Ý}'D»Q‰àæ4Ô„ŠÊ4ÿ*,‘âãÊ)ùäf&E!´” n6Z¯9>¹ÄöKƒS—¹çÆ-M=TÖ­‡vÁ¼µÇ8Ÿ‡|ñç ‚€*qÅ¡Ë"qp‹§.™ùÅ/~ñXÑÉóÍv vð½}ŽžSÐØ®lˆ'”Š{MRݶ .oZ¶]Tw 6¯¨‹àME"äíŒØ”§òÇcMÇþé‚'¶¾¸^Cÿ‰·ÁÇ›Á¢é»YÆ_[»Ü8\û,`wßÛäˆ5ÚÝ&¤È „bT]CŠ5ðÝV99;ðœq§xš•¦í!ßPß!ÇxÓF‚òCñ!£ê[Ãs‚ƒ·bß[l€´ÖÞsÏ=Y–}êSŸ:xðàWõWwÆÁîHœ_fvû›–Ul·?K©Ébâ[5Bt–¶ÉSú•cŠ}ËÆÀdL¿&Ï42Å0º ™8ÝÓxH”’ø£@ŸØòvN 8ÀFÁ¾G[è_gæÕÕÕ7¼á ÖÚùùù[o½õû¿ÿû;øî­fâcw£(‡BV“)· ßP'»ê¼Uö¬^(qaòØ7<&Þà¤ëy@|Iˆé'‚$ÒÐsÚ· E\¹~D× ’Eþ¼Å:8•‘Uö=ÚB훈–––®¼òÊ7½éM–——ï¿ÿþ³ ¡tð½Ý4aÆÒÔýÝP¸ñôÒ6éÀW¦¢SpL•-Þ¸p#²ÍÈq1šãÊLЂ"ß3B\ÝM‘n =)«Ðå‹Ë[‰àã²4£O¶4ïûÀ÷Þ{ïw|Çw:tèãÿøk^óš'?ùÉ]dUw„‘®çaw©¦Ì"þn´¸Ûº°§Ó.¦Û½Ô »R…o¤ÅúØ›z'%(Ñh–àrâ®1‹ÿ°EW#x±uÎåt‘üû-8ßž¸Â×xå•W¾èE/ºþúë?ùÉO^tÑE(çz:øîŽÚǯùÊBÝ 1ÍD6‡(ãŸ6¾¡ö}ëO„!~ö‹t8E)Y#8)à/{CözÉõÂOYcàxãÈ"ç[‡àUÞw’}Û-O ˜~ãßø¥/}iyyyee%Ïó Ö;øîŽÉ¬WÏÉ"_ 7yó{P̵7⼎þÂbV #Äù ˆE®økâÝóhiç[wçÚ‡N§x(tŸþºþ¿¤Á†Å-róê¡fõ­Î­DpÎ[—¼…]—L///ÿ÷ÿ¾}û>þñ¿êU¯zÎsžÓÁwwL>i®®Ý÷.Iw0§-ÓûÐÞß­Ñ16Š}Ç~…¿\a#&wüGkœeC¨ÇlÜ!ÅuÔcRiOÎë ]š1ø6õùû,ô˜·F×jß¼µÆA"Z[[{ÚÓžVl].--u[—Ý1ùŒ™R3ÉꕹJòºá•ðòü2:ø†N}Þ øF›¡!¤¤j Xj8ˆ6"Aá±ÜŽØÆñß6"šû BNÄj»ÇÙDpfÎóažƒ,ÈDÿtlmž­ÝÊ­Ë}ûöeYö­ßú­]tÑ­·Þúº×½îª«®ê¶.wúaêöíÌ‹ðöAܤòÇ É‚â9'h“Á-èr'‰×PýÆKÁy/ÏD³7BŸÉäˆÇXsl¡õÙ a,J{.%”à«zvœ~æ˜íãô*lóÊô=ìì™ß24#¢£G~á _x÷»ß½°°ð™Ï|¦ßï£ÛºÜá‡‹ÎÆ3–“Ì“¼©¥kÒMº?¹‚í‹ZY¹“¿) EÄmÂ÷ywð¿AL­(±‡á§qhÒÿ‰--T?Ããïæ­ð¢d†9vú¯>xÛÌLïËŸ|xÿÞ9äM …Ô˾ðÏ÷?ôñåOîn`×V}T÷ìÙsýõ×øÃÞ»wï'?ùɧ?ýéè¶.;ÒÝó߃Pî[¼ƒÃñh#mëáŠ\ª¶%jSø¸•—5ªÅ+ÞrŽ#î â8·Œ®m­ÌÜï÷ÿáþa0<ýéOÿÌg>sÉ%—tð½sIwÏ+¨4qøöGr(žFÑiçï!ŽÚ)°ÁÛÎyj&9eÔàR˜‹¸)‰¡HN!YÅ#纃¥‘|bâ¥ÌÕCÚ¼†­ íÓ¯¼äþÜK13ÀÊ+«ä½j†€Å¥W}ã ¯úŽgßú‘ÏüÒûOo•xàOþäOŠÿ~ìc»öÚkÑm]îÀ#8•yÚˆ %ÁfÞcrN'ØÉ`tiPغ“yÜúL•$»Ì"Õ ªGä¶ì[Cºå“3jx@hJ^ãÔtñZùPû%ß¼#ÏíêòÊÀæ`¦ø#­ÌòòÊêÚÖ8™‰hqqñßþÛ{ÑE­¬¬üÓ?ýÓG>ò‘ùùùÍŽüîàûœãÝýÈndPàöÄ7 X‚&âòntëÈ {ô\¹)ŠÔ9AðzŽŸa°(ˆ³¨¢øì›Sa~ÜfþO³ê?[×O|åÞ„½œj4^XÑë…Ë›…à€‰-±e+Ö50¶Ä[V×ÀZûã?þãÏ{Þó¼ç=ïy衇.»ì²³@õºãâÝýx¹0Å·(}ñÄèÒeC¬WŠ|(A?:ØZ ,ò椲¤ jZ£l˜:,¹å/E(•¥±zù«©[æ`o Oî`Ñv,͉éºóàx=GV&SϺ2õJe÷ÁS µQ×ñQO7Ì"2zqamœÊÌ6 ñ¤È<9«€VðÅn¸áïxÇ×}Ý×8uêÔâââ›ßüæ3gÎØÔ‰ùmßÅø¿ñ·ß~ûsŸûÜú¡úíßþí………óâÁ÷ê­ ™"±„Zj#š@œ’‡: J3ô·çi¥Š´ÜçT1¼ð#ÒÍõr ‰ãõB¥rpÖÍ%¯i^ù }©äÞá†éàåˆ>Sº=ÔnYYÚ®]» ì~ßûÞwóÍ7/,,ÙUgAnø.^£/ÿò/ÿîïþîÝ»wßzë­>øàÕW_}îð>0HEuû5 f*XúÁ©%I×ë'²|Šþ´ŽW‚8GÊtb¿‹#ãìÂмÜ+#V.*A¶­ËÜn² ²tŠÖIÄ#$‹¢úp2Pß6; ‰|‹¶.­µ§Nºùæ›ë·~ëСCÿá?ü‡÷¼ç=/yÉKF£QY•8 uéÙÏ~6€cÇŽ}í×~í‘#GÎ}쮬&}¾cN_*‘µoÒi)Ñ %y3=|+åï)àŠF1J±ox`-´Ñ…ßÁwެ±s“²Û›ˆ&(ž˜|“â/‹ @pïIZ}Þ7±µ y›'CgY¶¶¶FD‡pÙe—?~ü윻o“c4Yk_ð‚óNçô’ãHÞAê,ÇiÅj¡¶£Ä4 m‘2bË"ø†Ãw+uã‹ýÅ$Šà1Ò˜$ø²„"ܧ,à°B×âP*al äÈî(¼U?øV®ÿ£RYaôº. ·ÙŽ"bæ‹.ºèë¾îë~ððÒK/ý—ù—üÁ,\p|ëžI¯àÈ‘#î½÷ÞË/¿¼ñ‡<§°»ry÷DÍ„êS9HÙ§Ë;v’ƒ+ 8©o¿â §Ds™ÏÊÑ(>C7žâók Ý&È…ÉÛ{憒ëeŦMýÅÆëݽP„´”Ç×àuç¢0Ø‚ím;Xö³Ÿ½é¦›¬µo|ão¼ñÆÍ;)'¢×¾öµ¿û»¿»gÏžïýÞïÝ·o_§}ë–gk1õWõÿð½^ï¶Ûn{éK_úŠW¼¢ØÒtõñsB©KÞTŸÊA(Ò!¶ uÀ7‰;‡ˆü^A¡vO±ƒ¤ÉÌXò:ÕÜ{NÂwu3㉳>iº~bÛäX«{³ÎZ¯;=lu…iŠ·¬±(µÇ΄S—8ÏVÅÀ·šyÆQ°6%‚s©~×Å“àZ:1Ö0á‘GùéŸþéŸù™Ÿ™ý©Ÿú©w¾óGŽÙ /63‡Ã×¼æ5‡~ÛÛÞvóÍ7Û·}ÛE]Ôež¨Ö=×]wÝ…^HD/}éKo¸álþÈÓtGw7RMô“´Ž#¥ÉÈ”¤}›ÄXW½é;ɾ)²¤5v8ÅÓ5ÖÿvÝßîBÂ^Tð[¦®VsýnYèX·‡b[ÈCp­+I-ÅýA[¾°ˆPv¼(Ó¥Ë2ÛÑhd qYEè9;Ìœ[È-óÈíÀîq×]w]sÍ57Þx#€¯üʯüüç?_œo8vcŽ=zúôé·½ímÅâñ¿ÿ÷ÿ~å+_ÙµíháûòË/o&ç8v÷DÕqHp£êáx¤Äqˆ;œ~šZ¦rË¿ÓÎO&U”dºwR„§Ä\+Ù“”U[Y—9[‰M¸_¦ÎÄÝ žàƒzƒDìEkËÁôh~O†A6fß ,Ë{aêg½Ù @Ï2úæÈTûý~žçDÔëõƒÁ&á3_pÁ‡þ­ßú­ë®»îýïã]ÛN‹5°¸7ûU›úµî§€;©ËR5"¢sÒô Eayìn¡¸g(*Ð4¹áXßRo{’?Eú•|W1aDÞolܸpÐÆ–ã/f±…Í„à›"ãõm³ dô…ûO½éÝŸîe¦øhÏôÍ›þÍ•ó³=¶LýìÖ/<ö§ÿø !²ÌsƒÞ??x_ìÞÉh4ʲ¬8 ïõzÃápó>݃Áà—ù—ßþö·ÿùŸÿùÏýÜÏ=å)O)XyßÚ5ð\v f¡Ùœ,÷jtlšÚc%t¢Jpâ䤲^ioû_Ù·ï_Ö„b  Û¨„hÎ rp!)¥Ø7â’½OŠ)'KžÐŸDp ÅöÄ—=o‡àæâ=Y¿×+¸ÙLŸ YpfXžðÅ{{QÎ<3Û?z‚¨ßÃ\ð‰O|bmm­ßïÿßÿû_øÂnª0??ÿ–·¼¥¸f8c:çÉv8L*MÐL%†$ÇsLJÊX§z>vkÎ0’ô)žN8óYj+ÂN!ñ¡á{Ž( 6TEïC³»;ºÎ…Æ î·e/£J®¢p³§z7x7ê;™š‡=ÌñÄ‹çÿã·^‰Ao²u¹4DžC{í»¯}ò>°ŒÝ3·ýÓàÿ¹Õù73_uÕU/{Ù˾ã;¾Ãó ßð OúÓ7›[k‹Q¢ª¸Ûº<ÿO "zwpèÆxºD›ôxŠ”Õzб{»•¾@ÁœŽ6[‹¤†ï¤¬ÁŠeƒSÚºÒ¼›ØDèzDbc§áAU=)˜P] ð LD7%¬Päl@Ÿ.KÀ0ÏWN/÷û½bë’Sl]JøjnWÖä–3›Ÿ<³æKÒßõ]ßõ‚¼ ÏóÇo˜÷|üøñ~¿_Äuü¯ÿõ¿ƒÁ7ó7wìûüÆî`’‰‰ 8D«_ŒhËS—h3"Ÿ„édƒ ¢o=û–UoŠc\¬äLϾƒà؈ðæPC|ÐX‚Ô6ƒ¼K©yØ1ñÄx‘„‚#>öšÇ,ᲂduÜÀf° ÿF[ûn©MpkÈúš†µ¶h ÞÔìÖ¾ÿäOþäOÿôOßð†7ìÙ³çƒüà\0;;û¾pó~uß›.y³¨bÊI+šì·ê˜¸xBйyJ ÜJ¿ Ä•Cß­Jp’Î!5Y©}£ðå˜ZÝS¡3˜ ‹ˆî¬|ÀÊ÷ÿ A·¸rYõ­â™ëÅ×PóøÇ‰ƒ¤Û±N_¨(ØL;C!Èœ8qâ–[nùó?ÿów¼ãkkk/yÉK^ð‚üèþè _øÂÍÓO:øÞ\É»ÙYseä’÷ß´~ª Ë÷]…1‰õ•r$Ö†À7Ç›ˆ‘êLˆqp£˜ƒ—ý!ˆ?˜ Ì¢üˆ¨@ .êBÞaP©üìÁ¬ZÿKa)’`I÷ú{m²£¡Piz½Þžð„›o¾ùÁ\\\|àŽ;öè£vâÉy,›¸z· è4ƒÔÛ´,<“5é¢hÑþÔ)g$¦Ú “1]h(&µ%–5]ô œ.c¹>¹˜qdCRx‰XüEþÌŠìÛQa/Ó*‹ˆàÕ×(ñˆ<‚…¾M}Ÿµcaaáõ¯ý'>ñ‰7½éMŸÿüçìÇ~ì¥/})6s³ƒïM\³H%|gƒg»05‘žØg’ãUô‚ã- ãš4N_Æ&\ßÖƒèÆiK"*濘¾Éóäµu»'sÞI콄XS×h{ÈBìÛ–_âÕežX»ñU?m8€ /¼ð±Ç{ë[ßú}ß÷}×\sÍÓžö´ÙÙÙMÕmL‡³›$yûÁ,T‹£¤«&ÒJì3qD~*FÛ7ð˨ÉQ¯ZÖœdÄvð<Æ(æž° ¯€æåmûúCƒ7dZù¡°ßo¦.6>UQ %ÅN~Y?²êl…_ðG~äGn¿ýö§<å)ÿþßÿû{î¹gvvÖŸãïØ÷y€Ý}µ‰bŸ–øÆîÄÄ[ô’šÖÁÑfb^ùº!òD H¹RfçB¡ÉÒ“l÷D›Wê¶OLõ+’SˆŸŠUŸ‚žGÀ n$\Áê¾ò-Ó¾™yÏž=ÌüáøèÑ£úЇ®½öZt™'ç×AÞTމLÆ'§äQÿ®IUC;¡à×Ah“䦽öœÅ´;™97¦¶“½ 2ûæHs±Må²iëÌF"Tfo¯G^Æ3ø;‹Gxç"鬨DðÌ‘¿{¥ÎAy_¥}¼eÚw!|/,,ÜtÓM?ÿó?Ÿçù+^ñŠç>÷¹]]ÃùŠÝBª‰¼9|#Õ‘†T¤"ô3ÉΠè[Ñœ $kØÐf¬¨Š]@{ƒ¹\+ŒT¬ {ùÖS]à9I ”÷cc~A„záÅÊÃû½ò¹¼Þ WTlÜ[Ñ[oËI¢µ:ã `i«´ïáp8Ož<¹wïÞ_þå_ÎóüóŸÿüÇ>ö±o¼qSg…:øÞ`ìî…΃íÃm·­bz ÔÕ‘­" [‘S‡]/yCQ»Ó–DǨhÐVASÝ9GÚÑ Îï§Òcõ ,®R_Ì)LŠA#Š ‘%Á_§Yw9V½0x†‚}ãìkßE!ÌG?úÑW¿úÕÅt¥µ¶ßïßrË-¯}íko¼ñÆ<Ï;ø>Ž,ä6Ñ|‘BÑ6qûic÷V²c(63M\n†ÂiŽ6šÓ¸_2#EWïüÉÍOŽÌL"^§É‘ùR?ýÕz(¤üÏZ¨>¹“Tc2g3ómàlÙæl[—–`Ï6û.´‘g>ó™ï}ï{Ÿò”§Tן9sæÌ™3(;ø>×±»QN‚Ó:¤€o8•iFta*£¯¾5k¼i~¤°ŠÐŠÃ4Ä)Gù"N!¡¸ŸXȵ^»OÜßeÅ—…RÁØäÌLZ¯¡%Dfß®ï›C/,—ŸˆÊ÷]}X¬÷Íɧà›-m•öÝï÷Ÿò”§ŒF#”˜ EpU×uy®FíÔ[wMÄz¯…¾ºÌ(Æõã—P"冢ã¢e§ÝáœúJë1ƒr0F”L4„˜ ï¦&åø˜2–…Ôyå …t˜¬N½]øö:Õ˜ƒ ‰º69ñh«@ÀZëíb±9 õ|oŒä-PoÓ³Ôl‹IMTs½Ûθ+õhJÕ5  m‡â)ñšâ: D‘w %ñ~wŽ@j`½UÞ!‡zclZˆxJ|Pooh”dúùÝ2³aO@'‡}³ß•~ÂŒAŸ~`í[ÿËâLßüü7î¾æ²š/TÎÈfé÷þþÌ_~í‘“+—|o 4î³ÖÓÁ÷Æ`·Ð¡CŠ ¿dcŽÑ±Ô˜ ¡·Hëq?‰Ýˆ»¶ƒ¿1ƒã¿×WQ°ŽŸ ŽÁ⢠Rât,;vÒÓØ„Œ•æÄboáÝ?µT~üÅÃÕÐØ©öá»Ù@åxâ…½7ÿëÞL?»|0ÊýWÓ0°Šo¸º÷UOììKÿ°´£ ¨ƒïõJÞ™7lZn]êw#c\Û(ÚvÚÊ/zI¡ÔYår…ºž±œ>FÀ•Œ+é¾P²oö e(®@(¡T:ƒ#¦$›ìÏÄ´ Ã×k¼çP˜‘‚oD"™Z­Í¬@%!¾U]"´¶sêyµ"õš‡'Sxô”,ÄHî—Ävãk?f‘VE*y·uÙ2õª„=™ ”Œf%ÃWIA±!¦G¡½/P ßÊ*¸¤È“ìQ“eîu†ƒ' ß ¤T<,ÇI½f¥™â ¬GÒ 9ë<‘­[¢ÞHϾ;ñ¤;ü#‹‹Ý±éJŠM¤q¸•x"ï…&õ‡VFòVyßòä'Zv¤M.Pa·kÏ!*Ò)äþƶ§88%æÄW‚„RŽOiú˜H7¬¤‡ò sKöÝm]vGã-Õˆ„¦á³T#¥†• ƒ‹Ê YÄ u°~_P„ B‘lÕ¼’ì{ ¯$ Ê2Cà3Ye‰ˆ† £°|!/ÊýI¤–yaS¾VÔþyA±½¸çVðݱïîð©·Ð8LmZÐÐfÒ}[]ÕRb¦êŸL*Já:]yâÞ"«MßgÐV«¬?l1}fŠ>eŽ(àœÒÁ¡îr“CÃIçOG$ñŠ#A.Õ]'²ñ„Óæ”¾w.õn xR6!…Š¢ÑLL]©HîmjŠ(…nûV|™¼ÕE˜ Õ$Uy¿½üyÌ<–MˆÛókY9©C”lµ~µ>n[#+ëãJ4Š6D±ñ8­äBÎñu…CíkÁ—kBI˜)>*# Á{Ìšnë²;œ#ÙA쎉$ÅnÍ.DöT+1D:Ü*8â ÑêÌ£ùPÉ»±ÑXõF%8ñ‚jÙÄ+0ƒ©È›“Ó©AÀ˜„"»Sxû“ˆøeìŽ1îà9 GÞAzîç2¢BäöNÀ0„S«üɇ0èãËö`×Ì 7xàNÀç |w‡£œÂ,89èu”vRÜJšA!Áv"/Híˆ">¯ïïLV’7Ì„z×ö-ÉÁÂá{цë#c­à2™¹ª¤ümùG 3†+i~l­òQ›â ûö_™žá;ŽóÏ|3}¼õ9¸æâ2ÜÆYuþú.zø4=‹;øîŽ1á5¡84£Ë¥üÝë™Ö¡8€"®ƒS›å§-¡F{ (ôã%^¿Ly3Ï61A .åÑB'…wßX@êü½^‚ˆ&D_µ2J'aYµH†‰k´d­²‹‡C¨Mâ=7R9BÀ›k™ì9SzK4H𣈔ÅPŽœE(‰0Fí!ªÀM‹$M„o“Õ1š3wvø8(ã5UÀíúµûWž”>“JÅ®ã2yTvÂÙ+d¯#"s\ƒ¦(‚ËÎBAÑnHÒÆkú꬧ƒ+#¼…GŽo? ÄY/¡hdêÚ(N¶4EóxÒË…•fA#ÞÀˆÓ’HI1z…$9þ£™nGÊ\® •¯¡)í:|W†n¢ÞMË ðÎ8í†ã šFÀâ[Õ=œà!7ÆxU¨Kápô79SÐì+æ®VîË‚[¨– ¬c2³-”£=ûnEžILÃw—8ØQo#[&‹VMêz¤PR¸°iy ,Ïl;ì3~Ê”M6$}øž\ïÜT×O*Œà&,·Àãš7p‡}*ÄU”$b3œ)#ù÷u­Ð!xìWÄRcˆ¯‘Y„EHàÔú6JèÞíµ}]†µ° ñ¤Xº©ËŽ}7i2t]À1Ì•Lý ô!úÊ]SÍo”•™è•4Ž Õ6-›ð]Ÿ±œÌï¸8[Z¹Q7 úÉ®Ó,ס@ׯâJíˆD\Åö*)>L/¤6<æ4*éç‘G:…Drÿux÷:ñ“ƒgx­Œƒ]`l§œ˜ÔÈ;"‚²Qt™ìpp—/ öÀ ¢­OQiöz7²¨Êœ†ŠÒˆ¦j²oìÞ•ÍuŸ_ƒY3Á°@MrAÕ×S‚Gãfµ ;Wˆ£rk#„ãã<æ˜È XAðɃu¥(Qû^`…º-—EOZ±ïNûîà»­l”¼M|´G.!Ô4ÝLÍè!öÿ¶ c‘û6ÇVn MnWöA_T¡ÐÂæ:LÊY‚gOTáIv5qš25Qµ­ÑÚŽ`8°Gþk#”˜ØM‘÷ ·oÿ]dÕç$‚„âûÁ7jŒÓý¹Enq&¶¸M§}o׃ûÔ2ØDUA¯„&›Mô¤I)ÝÈO*iÉÝawšT.Ôè¶™:JVÊ8„Ë•ŸL6Vû˜ê èþO‘ƒÈ.ŸHçÎcª uÛ"â7±r†h„i,Å»!vÛ.Çz„åAˆ¼œ›7§€“ÀryW=ƒ}}ЫkÅAŒ¹ Ù»{|oÓƒˆ”Ô›âc–h¹×'68Åšc“xˆKð)"d…Q=zcšŒç˜jŠÒLü'ÆÔ àÕ°e£–<` ˆ$ÂÞ‹é³GœñŸ‰Ô'ýÊyá&sCT"ƒ5h5iØÃ˜¸‚Ì­¡ AáŽë®DŠ+àÁs…LX`Ø_žèô wŸæ_ù,fzøÿ\†#»0´Í'eÙ ÷¾t_|¸¾ƒïyÐ:º†×Rba>iJ¶Å 2kRfI½P§Ùø-rÔŒ½€ÙÄÇØMà{2rYWT$Á¤’2ªâÚ:å› ½û_“÷ T^”8^™Ç+uÅ5®¸*Š{4ÕÛñ ÆÆ[‚ãcAÉèNË’¶ Y¼¥pW}`,–ce„{OcÐÃÊp¬nûðm ޝâžSxt;ÍzÒÁw€¨ oteÈ_r|#ö1“Õp¤¤jÄwVeÐ'ñƒ–G|õ¼À@(•™(ãíÛÓLb›ì8'1‚§8“@Õ‡zX,‡”Ã!šUbe$v …œþŸ>¡>…8?2¬7~ª²¬1žºþó3A},­a%Ǭ ñÒËñíOÅ?Þ_¦e=éà[¢ÞÉw°ß9" ¦\‹PÊßM¶öywL2 ì–Hz‰×¦>°3¡áTWQBÛ•„IùY…ÑÌM^rp ôÕ͘ªŽšwEFzö•Š€£ôR( “À¬äÔŒ ^Aí{ )®]Ø/þKbÞ ü:¨‰û‘UYt XËñè2fG¨w.5ÓCì^ÂñÕNûÞÁ]`2$v Õé‚,³hR¨b}i ü¼”*Ÿd²-éÍX‘œŒ?šTæŽQÒâ²x¥þ-Í–Z,5P¥#À{¥Dn9Ì‘ ¶yɪ3Š4,0i/J,áÉ5y×ú‡aòxW Ã;1誃oI‹ˆU­'Å“$ßnfÄ»U–-‚zË]š$Šã&Ò…VõXšR/è¶q70³rÓãRùÚã° 3Žœ¸° rm›–v{BÀ9qBt°Ôö É‹[;ä@í˜ßC˜k–éÄÖSÏùƒ"$V˜-j³Àô¨…}ŒC>Qÿwt¾ï»§˜dÁT¦lÙЂdƒ`’'+•‘Z±–R¥g8É LV"xVKA©<'ÍÏjÉkû*û!¥ÂnþÛÀî p\ö”‹&‚£^WOME…Da$F‡I,0#±-û¦”1ÖÓ™¸YÌ·j“Båß]3¶cw¤ïÛtØ 1ÿO°+ï6ù­VS”r)ð³¬ÓaÐ^‘‡Ë¾‰ùÚÀNÖMæ]ßH÷†‡¶u!;0•ãšRêz·„Ýñ‡R'YmCÇZÝ,¸ÆC=œ…6“™´AÒ…X¶rà>º$ØTawm;;¾Mû³Ü ¯TÆ“¤¤HŽÄk‹„ðXèNAÈ‘€¦Å{²{Yâµï lÌ7Ž#¼ªwÅ© ÅÝ¥lîaV;™pt®ùO#‹ÿì;„š%™ŽCfÂ#˜ŠÖûÚ3õ’Š]‚ò:Çû45˜Sæ»êXy[>ÏV˾¹Ov²xkc0-Å4+7æh„ XÃs8'{s¢XU´·;¤C™Ú…2 *Àõ†`Ë7,Ôu˜Ýß®¼©™†ü'5ŃÒàDõÀØ Çô ×}\)D ž7«¹+¹ãXæYý©Ùزã0îëc™w ùîà[ÑÌ ±%GyÜ]„"ŠRæÿJ¿€Rµ™ÂÛ0@æÅºñ&•B’9R‰ÛsÆ!²Æ 7¤Gãžmn¢yÔ;€[bÖÆ· ¿‹Úä@M'}°BM¢–¼{½@ßUwðTNQ±Æ+jHÆ’X)«™YˆÂ…f®¼Â jqÊTÔšÆÍ Aµ¤ÐI2Ó+÷0ßw5ÄÈu —÷„|Ù‰Zm`6v,kRIýNšŒ››ÚH-tž%ΜõØ=˜ ܹ±ŽrªªM0ÿ‘bŠg:&uú yFõâ/eõ[—x²¢­ÑÕÐ@v?G© ¹ÂŠÎZ”ÃÓ:õ{¤±™ŽF¨wÑiiÜ“¬Ü™Ìj°>Ѿ͸ÜÝ8¹"°Žê Oìæ± ÜÔL t¶5Þ˜ªgŸ¹OEº}àaVÝLÓúû‹ÙÀYô®çD6fj5¬™PÌKN“·G×4ßÁwBÖˆ%¾Â ÷0ºm=J ¸Ù¸+ã}Š¡y¤Æp“U j‘#?ɤçíF šITìäWðЛ>W ±“ËšÒ àþå¤f2•”2– I ÜÙý!LÖ(éÆå[awÒ#T»%qka‚}wÚ÷ŽUN„š´XͼOH©Îß LTïi£ë/F{Ee#×9š8áåz×äG31¥„Rë@0€û”+'µåX×|&¶)•¸UÌ^Ö`ˆ€“îá†áîÔ¡L¡¸ù¤q¥< Imb¤8þI±‘3¼àÛ•BO Ë–»)Òbë²Ó¾w¸ð­¯…„‚ö’šÊÉ)€2Ž“zµUhxò¥yŸTGöâšbT§7O&ž“rDžxòãa „=hv?·Îçõ!L®cd³…`+ºµxoT õÆî ‡†Öóàái8ùMµÙr-GRûîà{ ßÕW&2î OÂ(âñUˆÃ ÄŠÜWùÈÒvL¤ÆxŽSH8)£‹MË,«EVU¼ØXØúom¸¹îγôhÂzãµæ©±6Ž^› Áž¹?>¦ƒ+³M¸Î²ñ’ oÊ*––Åñ¥ã[ö°Êç‘0G˜!,‰äºO˜%ÌtÚ÷N£ÞYÝy¢7uh«kF<˜?&hÄ: ¡ ü­’‰+ÎKæW.ŒE’F¿eV*'¥®í.ðLÜR‚õ øoX¶Ö¼(ì´ZhãtuDy tŽ@} xPɉÁz2‹¼ñƒ}àó§ì÷݆™ ?øexêVCu »2üÑýøðqv(/a¼qê> ‰cj8…&çz‘$,nƒ¡ÐÄŒ(‚D.#~lST.ÒD2¿³lÛ±âZWܬƒï¤œ$&²Ñ;I·ƒQý&tWBæà«çõ¾È4„±7b ÇÐ=CÜ_Ѱ ”8nÊQL¢ñÌÎØ2Èà2YˆšÙÓ &iVîìÌIÒ¥j+XóÄ9Yõ+hª_${ õ§Á¹eu2bÆÁnl§ƒo¾cÀmÄÞÞ wuçØÆ¦ÿ©3"p+Ó\•;¨šÎ šRIu~º/r}&ï^R#?–ÀD3OÆ&áÌ_r3³»æ G½)­õNÑpz­ãÉ,({°N b€5ófEèl`¨P­ìRÝ`¬LÆ¡¶ p·ŠÛ@”ÂÝ0I+KÃwçûÞiªw—¿¥FGIT¨IѼÖi/þ=›”ºâ?)–yjÒVB8'v,s9V=dEaa;቎Ì~^ &9V\ežx “°ªø_zŒàþõôNIÜ"48ið4wkÏo¿DJVÆy·:ñV ÿÏê÷6¬ûä$,…ÃêØwßá÷® ÜÍ„Ú8‰5e•¤{äÂÂÀ^¬œYQÑÏ÷ÃCŸ1ú]òe¬ ÉõÐëµocÆŸ´ …çq©J£ç¬íÝØºÔÃqd©óž§‹ÑÓƒS{m:ˆìSÜíFµ¿›õ…÷Q›(Ÿüñ;øîàÛ}ãöâfAAÉsÉÞ(fR0„F¹V´OÑÒ4Ô»àUNlüe¥x°õmÏñ`t›O6*SÀë$Ï€¸iÝ”Š¬Æˆõ}0|ËZÌ޶ËRÉtBy°©GN—݆ÄÞûS.ŽW«¶¯åÄAÀvâÉNS½}ÏBØ Q‘4eáÝ)—X , ýDn BèM9BµÆ—1¡Èo · OèT‰•Édl5ihÐõiøÆ„Õaëuæã¦H~ˆcD‰%ÍFIºw‡10 ¾æBý<Ú÷'PÄf§!㛫•Ôp8ÂBª¥=­}—7ëà{›ÁQ{È|ºÚP$†šl†Z“QŠ*I!!ØjýA¥z£|hr§z@ÕÄ|ÖvX?絓*®·íO“›ì»a,‹+É`j(<¢û›•P¤kçÒ'¯]ÒIŒÞ@ú¼þdÁ {ª‡(¨ÄtâÉΠÞr(ÅS¼“6)mSjÀ”ãûœÉæbÄ)9t™B0Åõjù‚\gUóY}'p¼ÃIãOTÆ‚†Î©q›ƒm½'¾.v»ŠŠ‹›“ñNçqé6M¨úXj÷–GOj©ÓMßÁ0B¿Œ1Ôö±[ààÁ©)ô³Ùš$×ak{,S·aff6Ætð}¾¤Ó»MÊd"gÃjP^Q"ÌÝ4~‹Q› e)Fu/–ËíG®¦‹I W/óªŠáw2~ŒÝvÌÄmy¡ƒEØ”ëI•>>¨àÛA2Ke "M††jNfµÉw9jÏÐãIpGÏʃÙO±ˆ’)â 7 ÍÉ[ZXtOÞu ›Ã’Bû¦DÞ7m·‘z³£à[ÐLÛ5¥:¶“’J†Þ6OI„eFÙÓ&a·+8É®Mu¥ÊŒÍd=˜¬¤ÉN±eô64¿[Þ¯!P¦˜Û¬T Î'Ss•ØâO?Žu.Õ’ÒN^ýR·H“säÅ=c ßœ—€Î°4jàö´9»šÌaÝV"xª÷$§`]^äìÄ]á¼ ¨øYi¬+T‰P=gYÊë[,=Ãwáö;ÏóâÂå—_þÍßüÍûØÇ:íûüfßm©·Æ^-¸ I=ôHâ~)Ö]o/cº<ÂCuÞÝH毤÷Ó9™¦3ȲI)F\UË€uÂÝùÆê2dìî Y½þ8Ȱ¸>ËÆ²;3ìhl@,¼äù°¤ö Êa TjâÍoØQ˜k #¼ÏH ZÍ qYßf¹±ò4«ð¤Þ)‚f™žÈñøeÕ{²Éûj…±T–\¯Zôî^¯WAù‰'¶ íø¦8|“ }íÛ¨cCHTH +úÑì:*Fˆ9à‰ˆpX-`*Mn‚Åuç õÆ¡ŸD@¹?YŒ÷U7n·ãùc3÷ñPY½R“!BÖGÖƒr…Úl‘0"ïa4_ jƒ… ¤o½:¯B1ÈÃT[œ‚Á&1(÷w2¹ÍÌdLBIâ «ñw EO‚ì›ug-èƒÿyÙþÄiôz#gì2xë!,d1æ >|¿w3 ô3zxÏ(ß@ÌLDG}Ë[ÞàU¯zÕW|ÅW€ÞÁ÷y âJ{âØPÞwL•–¯GüfÂão{>Ûv"?vÎÎfcð“ðÞº ”ú 8K×,“µ^4ç šn¢ñ&dÖG¿Ø¥Ì@zz}ôf@@>ƒ˜asfÆh ÃU¬­Âô‘BPC §6ïÃ!4Tt¹ötöñ͉lKÃ7ãþ•¿È#ГgÍOïÁLo¬}0WºPV-¾b×ÎŽÙ÷Bÿñq|¨Dç¦÷îÝû¦7½ À¾}ûÆt~8ìàûüOHÝÏ€ˆu/ȾgßH)'&¾( ø&„ä@àØÙ±¬—[‹ÌÔ»ÍxüJ”¹Ú2&š0nvÆê¸:G.$”JU7¥ Nc½»Àî¹]˜™G€^ƒyôæÍsŒa‡¼¶ŒÕebæÂñb2 ‡­b´:~"…Þ]<[>;r£S·^ÿpž'EäVû„ÁA}w^ee=P>]C›»³ªy¡ü¡GØg0c&[—#§¯£Ìš1Ußm°à£[¯wäÈ‘âò>ð?øƒ?XYY¹à‚ ^ýêWçyžeYß矄ÒP-iÄ„&ÕLF kTlÍ0Þo1 s!‹°‹LÑu5>ZTÏ!©p|¼ý˜Õöã¨ÄD2@¯„o‚S„æè-Æ„`*Çî³úÌîÂîX8€ùý0sÍõh÷^ÌïÁì.0fÖr¬-ç>zêÎÓKÇa2ôã´q×5˜—˜"sœ ÖNrq±‚E:yC¹)‚C=ÈÎñyM)%â=mòòYÿÄ ;½Á-÷G,c˜Ãо/”-•–!arž&"zÁ ^ð¾€µ–ˆ¶vcÍËn( t÷ch¶ eÓa+!e=j‰`G /<1kÆ2ë]' Jª–Ê^™çONÊ ·%©7i w/‹O³É Ðïcv.¼{£w  .ÆüÌìÅÜÌÀ`ý]èÍ ×ÏVŽí=ò!üÃÇÏ<ÌdõêÝ@"ä\Bvqü`GE_¦±=†KòînÒNaA¼^gý¯ûgôÓ™´ë›º¤ºœ²Í/w®ö-XJX1 Ñqƒ`Ù$.§cýs ::âÈ^å:¹1RÄ^“™‡z3ê󙥄R•ïfí^K räÖÑI †eèõ1˜ÅÂ~¸»/#sø öÆ®K1X@6ƒþ.ôæ0³ó1wv]„™Ýæð³öíz7ÿÕßœyŒ(ãj¾¿ÚS¥Ñd3“ãp57ÄõN„q O:ƒª„Â0™©w+ U 2­*ÓHg‰sªjÕ9‚°â3×Ïo66ó¤Ûº<ïŤ¸³rg²­Ðã¿Pä¶ý dù|qö ó\7i 8–‰Qaw†~NY­‡ÞØ2aº’ÑQÎÁãšYƒYìÞ‡ƒG°ë˸ør쿳ûÇ X£eØ!Vc‰°r »#ëcþ  =gaïc÷ ÿîó«k&ëYÓ›T¾€d‡ãD¶ ;É"/€ÛVû™Ž6Q‰ò•¥i棺P®h>Kèq²zõY䯉_ºQ>ñ˜¾(>MÍï¼¼ª+ž$!X–,X ¦ò£Ïi±;å¬ÐdTEk~Ü¢c™”㔆n;=Âz³àUd£ÂAè¦PƒùÛKfæ°çÁÜ—íÆá§bÿUÈæ`W±ô(NÜÕÓÈáÃU˜ææ±ï\ò <å[±ÿªì†oÜß—ï°£þøñRûЀ†¥N“ þ‰™½ààT«½¯Tð¤ÆžYz·hòO4èÉ-¿5M渓Ø]q\0 Â7ç`R°ïr'£ƒïÁ¾9$…“Z>n¥‰»¿”Ä LÄç05n“Xs¤fP^Õ‚2½ÒÈów’9°cçµÅh„Q9>C ôfPo4î,®Ü&¥-¬% VKfœ[ÒŸÁ®½¸àfŸ|‡®ÇžËÑ›Çê1¿Çî=ðX~†ó<0£7@þn³ÿ8q'®ÿn\ðÔÁ—?§Á§xiÙž^]92X¨\*s a ¹ÒQ¸ÚF˜@vl`w­ããAÿP¹š¯¤›¤:[A¿ˆýÅ~¼–L?6€ÚÆvðÝÜÏšz£ñ€Ë,ž")Éò3nã>Lœo7æVØIÌÁ#p^þ>ÓÃ`úK&c2% ÆD g†1u¢0üÍÌcÿŘ½|_ùK0ZÁ‰»pünûÐC+æKÇçåöTcП3´†;?¶¸øËqÁÕ4»›–7§ÙõØCƒ‡—ONŽ)öÈ€ ò!Ãæ €Ü„ ;nWª–´É\hÃeA(Eeо´VêdžÈܬxû„}8<ÞG1òÛÐbÊ';¾Í´;´¾ÛÄfydygºRnÿÀÒÓù4‰…‚™Ø^‘*ÆÄùvˆÌ¦ê¡ß3ÙÐdã¸ð¼Ìzx½+»^†^ó ˜¿4Ã¥OÂÜEX=‰cwØîY}tmé–Nƒ¬Ç㺟Ø£!Ìe®˜µ¿ÇñÁžCÈf1{!æ.¤]îØ;<ëñâI˜ ´âì@:²½Å¸ùÉÙ±tÎ6¨a%¤¦ý†"–­`‘#ê°F8žZª^ïækýä[6ýΖ¸Ì¾Ñ±ï£}¯‡°LýQ;9˜Ã-çæY=¥3•»íbwc£’Ø9µ`3‰í¶y9³>D– ôç13kf†½~NN•Ã;Y³»°çBd—Äž+@„SwÛ»ï8y7Ÿ>á*¨p­ä Ê`€Ø›Uô—†½Å;i×ý4;ÀžƒØs³qé|oîî=3÷÷î>>æþ•aÆÔŸs•U²i&§³Á«ãè㎳°í&hg5{å³ÞÃ0ŽÇžB퉔yß,Âw¾Ðißݱ¹ N"YlœŒ£‰Ç >>.?dä\®@ÜZä9h“a4Äh„у5`˜ÙefO÷0™nF¡?ÀžØu¤ ¯@'ïáþeé!>y kËÈs˜ èO¤2ÀF#d#ðùh|Wæ²lµ7X½àtï’Gqà ,«M6³‹î4fDå¶$Qã4†ã‰e%…ƒI¾Š‚6jÉu±©n¼…¬týѵ-´ïN<9"¤Æ¿.8BÆ×ƒ§”búˆ°ï)ê.)õSâì$îÂ<4èþGìf;¸mkJö½2ÖeÌÓ ™Œ+çFaÂsݾ՘åÌ.Ðbîb¬ÆC_8}ÇÊ#÷ÒÊ#ÏÁŒÑÌ8wÐZ2=c8â3{èvºdûžˆýO$¼¹Óò¨ð–ŒK“Gã-PM Ž(L„ù¸Ç{¹<)³g§Ââv%Ö1L?>ò´SEX·8®ˆlPÍï¶.w|x}ìØ±Øí¾cV< ™“Ñ%HÍÜ·Z$ 3ʯ†°Æèa¦Bp¸-ò9òÖVaW ×`°sóÙ`±’Ñq¦ŒqÃÉЛæ÷€2œ¸søÐÉ£Òч˜-3`Œùr± d†‰`z%÷/[ÜØ"b¸†•3X:§F{×î6°Øw%ö>lwî‚͹ÐèíØDhsƒÜ8]_ÖYõËMWkËì–_™®”![™šÂ)YÙR¨å†g,mŠtš>· ‡iÞxƒº.;øÞ€#Ïs"Úð¹Uf>yòäOýÔOF#"úÅ_üňo¡fBФn¹5ª§êÊ+§> q÷ŽØÙ½´9ò5 ×0ZE¶ºŠÑ2f/À®½ý]‹ýL=‹|“Õ† øî÷‘ ÃX;…,?ÎËg¨H ´v›õ°g?v2ƒ‹öR6à¥S£ãË‹Ç`-ÈÀÚñÚ`GY¬.ãÄãè 삹`pàÉØ÷D:¼:?¼/·œç`‹!Uu*»•‹¤—‰îo&O“S<4Ù€B0Ñà)mfÒ÷¦Âck¦qNln›£aà 6¶ƒïM>Ф˜m}F½^ïmo{ÛSŸúÔ׿þõ¿ó;¿óÖ·¾õïxGq½,žl8RCW`–,-ørR™QJ.ë¼×§ É1Ÿ¨M@n0bÔÃp«‹œÒ‹Øu æ/Ìö<6·{¸´8žo4N=|¡NʸÍÑk§í™ÓËgç\ŒDæ#ƒls 8xUoæ9ÏÇág„ÅGqß­3Ÿ¿mñþáÚê¸]sŒÅeÞ÷éã0&ŸÏî¥Þ ö>žlÖ–v­=>ZW:­›&C†IÐxú?+'Ç‹çKed9œíJïíåsðXËA ò‚›{úT“)– +qŸ«u¯1À{é-ÖZï}ï{?ó™ÏÜZk7nÅ…ÅÓ®a”ƒ2ôghvŽö¡Áӯǫqôƒ™“yïÌcØu .1>4ûØQs¢ôŸ`"tP>f»v…±t³dó{ö\\YÁÚ æváÒëf篾<›1= š1\`kÃÏúÄçgïýÄî¯\ÁÅ×e—_1süŽÓ­,d` T`ayßÁ©Á®ÁÁë°ëR:ððì©S«Ë­•ݘvl‹´<–¿™· «ã B`G¢^ÁêaÅ)=‹3÷Y8"欓é° œòò®N ‰®ìÑ" zX¶ÚðÞéð =|gÿaÜ^‚çxRä¦ßqÇwÜqÇ¿øÅ¼øÅ/~ôÑGßõ®w-..®GE)¶(/»ì²›o¾™™o¾ùæK/½¡pÈ0Ö€4¥4Zê Ô[ÐR„=Ì$û–é­ã³-`E–,v:PÆP^ ^ZðùÃ5¬,cõ$pü(–G6ý—Í\Ò[ØÓ3ò|ü€ z=P†Õ“Ì>€á"vïÙ{/å#WÑ“ž3¿÷EÏïÿ«™'<—\‹œÍ™;‡wÝõÀ?¸ûKtÿg‘?p†§±çP_kk­a´6Ö¾+C÷êN? ~ìQ,?†þ.ì;Ôßoævc07.ñ)vG«ˆ+÷)+Ïfdû Rƒfµ2>…H LORonc•ñ$–€e`X)%rFŒÓ§í¸d'øÆ*ã¤ÅâÎÓ¾ÏûFý~ÿGôG‰èõ¯ýOÿôOÏÍÍø™Ÿù™/}éKÏxÆ3¬µÓmffYÆÌ?öc?öó?ÿóßû½ß{á…¾å-oaf·PƒˆzÀ~ f€>ÂRš šÊšv¹<^ï,Ô°oÄwDIgþ£ˆ¾I!6î†\ûtÝUN `iìý+àk®`yƒÇ‡ý½÷cþ ›‹ßsêµeœ9‰Ñ¡Ï›q¬­`í‘•™ý÷bß¡þïÏÎLnžúäщeZ¹;ãLJŸ¾uña»zfôø}8ú±e›cñ¥=WÇÌÞl÷®þ̉å%1S{†0Êqæv=²6»ÿ>ÌìÃüE´ï¡Ù“'W1ZÅhT:iÜÈCîk*´¾skAÙ'Ý,NƯ¬cWVâ‰ï_䈩QY7QVŠ6Ÿ…æ+€xÔÝÚ­åå·1ƒ:øÞ¼£ÓŸýÙŸ}êSŸzñŇƘW¼â—\r €õQˆhvvö~áb;îhП »¦œÔ¾bâJq Yq’.(Ý1WrØ ÁeÍ£Ó:6™“¬BLéÖÈai<¿3\C–aé4ú}ìÙsŒö<€=OÂÞËû—Û»¸¼º‚µäù1³ ¦‡@Àâã0w?Ø¿jG¾¼éŽÝ…Þ< G´ï2þèê½<ö…µ3§030F#dE™NÓc¬ÁÚi0›ˆ8˲M×]Æh «§Ñ;u»O `v6›[íÏ ë£ß‡!Ï@¦LX´ìµ9Ó:ÌaCw¬|‡#{•‡¢òËn[WZŠ¿Zž‚ov[I;øÞ–¥Î4¡‡á¸eG¶— ¥€Ë÷9Ýì»æö,Ö>0Oìì^YJ6v8+5ÜŽ=ÝlaËÏXfPìUšyÏà^ÊØw%<9#:Ý;;?:öŽ=‚•¥Ix¡‚{Ű%­,au 66¦,ªïhÜËsáeè]r»¢F>3‘á±µ±”_ `0lŽá*ò%ΖOa°Ù,f³þ\Þ +k9 3P^Îì8ë^q ¯ãm)ËÇ1öÃ_ˆ’:ÇMå%”¤è‘\„¶E÷^¾Ñ‰';ÁI7n«Oî: ì;ñ®¦ 'EsN­F: ñ?ÕäN&ZŠ“]¸ªÝûeþ«ñËñ} Ç:…Ï˘ÑBï.ÊzØûD\p5 æw-Ü3³ïôì.œxl’<…rP>q¯žÃhmìÿ3ÜWÎÌaÿA,\jpà2 vcù1^\Y=ƒ~æôqŒ†\Ür’bÆÝlTf%æC`e„á"úó0=Ó[ë ÐëÁdc' 䋵Þ!õc’ó >kå¸ ì[)ã(q,¶%¨¥ Îôeý§ƒïíL½‘’¡ÛIÌîíc(Gh2§Ê-9åò¾e[ñ„#²8{ô°YÞÈåþ~YÔ\:Æ,Õyªã1™2|u”kãk–Ï€€|4\Èo§#«8p5.ÃÜ…´÷ÁÁE÷Ž=Þ¿ùÌã´¶ÆvcÆ62.ÁíÌ0= f±{öÂìö㢫ћǙ‡ðà]gÌW–0\ÓÿB¿Î2žÄB?)NìZ¬-ÂôÑë™ôªÉ²!rS÷ŸÐ¤;­ö2P¸dG9=$³6…ÝÖ³xÏH5û8.» cß§áÁ¯VÂH'žìD)†,E:MF¸Üˆ“ Lìyq Óàî‹*5ÏÕFxưnKXtÈ8ì¸7’ ßtÙä0\o'æ k‡ +wf—/â«°pû®Äž'à’Ss»?ÝqßÊ Z]å¾`sôú`Æh"ÌÌaav_‚ÞáÒ§a×¥X9ŽÇ¾°x×™Pžs17Tˆ<` Èm–àñl¯ÖVÐ[†Íád°dCCÈË—»ªO«F\˜£HM-gÓ¡“#4Ž«H‡håöï )çŒ ›XÖ‹¯¼LØÁwßüµh¦©Êq4‰7hv_C½5V“¸Wwcü²êbçJ6)ë&}˜nŽÆ£¶˜±48Å®ØÝK.>N.ÆÂØw9.}&>mÐÿ³ìK_ÊNÒZ›#·lGcý„3ó˜Ùƒþ>]r= ».Åê)»#¿ÿÑañ4çkeÕ=Æ: ªBNÀ–Fc·âp„|Xat‘u5öÕP7XÖA!™·"*aH3•#Óg&£Ín'Bë:âû(ÂÅ"1Ŭiß;E<á–·GDo¡uDG5­xm€[“ASí¹Ž&¤@ùfæ‰ãŸÝfRêãã,”rßÏb‚† dŒ!Æû‡Å¼å̉åÞìÝfpOÿ¢/õž¹€k¿ »eôóÿò¥Á",€ <²Ì Ìž9ì¿»cϘ¿£œº;¿÷_ŽÝeOÃêF£‰C†Ê5cœâÍ€¡ÀŒ,FKÅí«ÌØBr)мêbFù¸ì,®ÚÐ×ßõ®!“ õŽ6§üàU™tÎtáa$·4­3u9¾†[—Üm]îÆMÓâ>â6· œÚß?œîT©G¥_¥‚6 ŠcиˆÝ}:UpmY釓KÕ9 Ö`™†«Èî<}0ÿë¹+¾W}æ/¢;ÿªâŒ–A„åc.Œù=˜;ˆùƒ˜ÙVOáøíöÎÏž¸}íèƒX^Äh¶€™˜Ù–kå”*Y‹D…áš{ZQ v1±i͘ŒOˆ|Õ׬`Õ4)…Aï¶u|o%¿h:àŸÝ°Û*Ü5ŸÔà;õ¶NZaß;KûžÊIœ€W*þõÜ&ĕԗåîÖ¤PìÔ¡LO¥F •ó±fÇ+=q^—¦‘ÊØ;ŸëƒˆóË‹&ÿ¿_qÅ™‹nÀ_‡‹nÀòcX=•“8u?–Åòñ±/„ù*Î<„ÇoÝwÿñ}+KȇåÝæãÐŒÊyRTÓe•…/-8/ÑÂŒ¡ ð#fÙÁI3Äb}“¯l„ˆÝGØ5ò‹°~(Ï'äeF°«7N,Š#v`Ѷ €ÝÀ\ßÛõ`¼ÑŠâZJR¹fQýÔ«¢Ê©}Ù©Âñ}Wè„”Àsä‰nPÝ]£´·Òš«±(ó-¸FïM^«>z}»|à#÷½•nø.쾃=Èf>òáX®^9ŠÕX=…•cxüþÕûN»'Çê2FÃ1.WÚHñ ÷$‹@DS>~˰90FãF4Âø–cု‰*e÷ÅäŦ+)6,>Õø¥rR5/“Z dÍDöÌp\7v/‹oeÌZû_àyÀÅeØ\ã1 €w‡»¶FÀ§Ä©ÒÅoì[>(5© ·òÅŠœIL·²³Qé_®ÀŽÜ9ÌJÏ' ™¹¢MÀÅ8eÖÇÉ,ýÙÿ{àÁ;³'%\êaù–Ãòqœ~'´'NòÒš]^[>Žcáô1 G°#ŒŠFãQ™!n¢ù¬Ô¯á<$˜ñÃæb¨²GA)Á±ÂÍ2'é7¼ê—u`Úö>mäÔ~x'Æè¡Ûh͈怙z†mƒz3Ðæ™§Ÿìб—0Yg:†S±å–IüHíµÁcñ)‚þƒõa÷äš’‰7JÁ¹úœ¹‰}vìÜkÇäHɲ’óáÔÃdÿîó _¼½p_n†ó5^[…æ‹++ǰxÃeä9†C,ÆpÖ"·È‡°CäùdfÏ„·I|wÅóRóa‡n;ïƒb ”¼—Ë¥j€E_ tS—ú0B!D%ɾ}5Y¹œ(ƒMbÈî¼ j움œè¢—`±¤ÞþC]ž¼ø'àÖÖ¶³ãœ'JýDþqaÄ„¿Æ€G·•ü©J¡‚â-S@¹o-¬®: Ý•¼Ô¦3[¦_ò ¦‡¬dÈ Ÿ9MK_Êÿr´?F#0\ÃÒ a-3ä£UŒò1é.ì%®á¯ùœÝFnÁ#ÐpLXå”võª§8:©Å“Öf÷©I]Y%I„“¸]Œ‰†As/ GFç«c‰,NuÚwwèOcId¦"ª •œ§›Åß®12&÷6å‰|nzÅžØâ";9Ãp1MSðñ¢®¡W•3€¢bÿÐZä–ó!Fk<ÞudäC ‡­a4*e…f »Ä/ãäõ§IÓæøÈÇ;«(w;M94O‘3²Šzë+}7Īì3nRäOÉ8š_šìØÓÄ…Ç&BÝÃèäMƒ®m§;ÚŒp ý:-ÁC¡Ëa™B­ðдÍjšÑ$Šãw#œÝh'Ô\ƒÅxýXr±¥”\Ö5ŒzÈŠœ“±ÄÌ㺌MâEŸ—[”ùÈév_ÏòÕ·€±à¶Œ¬*˜µ¡±‚Vˆò…ëq̾ÍXˆ¯ýÅëØÃõUÁ½¥ ½¯¸%\ÊÊj`Ub±Mý)6*5Óžˆ8Û~»±¤œlÔÌ$§˜"Xì ‚Àü-É¡M+¦ú¤6Ûòuñdñðó©úÕJ™¢â1á5eéeÕeCå­c,ÉË\ʼ;‘*³œ*SS Z]¡°Áô@œ'BQ²ûÉîkC‰41rHG^gA»¦LÓˆ¦tyOAz¦–Âm}.¿úØÈ¦ec½éwˆ#ŽVPÀºì‘"³C}+A@o(0¤É(Ârj÷‘t\ÍžôBÕãP&¾ojf«r]"¯J)Ç% ÕÄ 91#•¦\ö±M°ÛyµS2œ w¯´r›Úè?cq dŸš2ñ¤ÂKr hܤØ¡Þ ñ„J½»PU¿0¡Þõ “Âs’ç0…xbk jî‰à“süzQ½ø:ÂË ±m¢EX”\44âX ·çà¬Ë`iŨƒï¬œp\9!êÉÚK«RYÃAj’^I£4Ÿ»^ —ÑO|u…Ÿ|"ݼ¾DÉ­4iµww,ÉÁqcjc;ä [NˆQbéØ+ùÛæõmLÇÝè§}X¶R^Gc€ùYùV•ãšÊ™R¹HˆÕS[^ßÁ÷NÑL|3ÅEçõ,õÓA9OEí§x0ªðXøÃ~šöCÆÒkAžl2 ¤݆ÌDK©îŠÝÙ}jVêL²¿wF¡«Lœ‚·Sélʘ'ï Ë€ÕþáÖ'‹%“Á›eÌXû;À ðMÀa`Ò”f€ŸŽ_Ùµíl{ŒÖóÄ77 4•Öåckõ#1 ß*dŸ”q ø½™’K´ŸèÀØ Œ"÷0®Ž_¸«kèŽØÄ㨪§½2&òYÑõä­ªæ2VEšD|6„fРŸ¤8õ ÑD!™èÚðŒ%®ÂCµ¿&Õ ”sšDk‚ —ÊɤLÙÂrÍ ÎqÄâ–^lˆ“/Ó±[mÒ´‚òúÑÏš\´‚·ßEtÐÖâç1#à °XîíÄ“Ü~Ú§š6d´g=+·ÏoÑÜzå}oÜ`YŸPbڄ凼µÇÔÊÜ„–É)ypÉ“ŠK¦ .[ž$‰W—aky„à¦Fr”:¶§Çº7°’w+ñŠõíã„OŸ+=-—¼[8Ö€%`uçáUßéw©‘njÂKëîyªã¿&‡b×h¸ƒÝ"xÌQeUÕÍ"ï¤ê'Æ/25>ù…LeQ@Õ:_Š$…í¤(‚¨yÀ½,; åX¨XÝâž ÄuíV>hÙ& E_%«M#mMßú7E+ÖÒÁ÷v8¦nXŸZß˜Òæ±¡ Ò†Ÿf‰Ø8õ§æà®ÿv å¯OR«à(*E“‘Ë1dW‰ƒ ±ÙцQ²mô+R"2‹ëoè_<ÉŽ§×Ôø9pß|O“UÒö­¯Ì§x÷ú|PBþêç9áÝ\ÿñ§®&!1O´nŒ!‡wS}p¿tV"IS ¯¿ÄÛ8»tÛµ æ¥ÛõFy–tjJµšYõÌd[°¦ö"ì˜SÍ>è‡îl£ñSšxÞ©só;+ï[S vS{i%YLÓ&LM·›Êñè+’ y Žáá:çqƒ(È 3ÉTD«&˜Ô‡tÈÜiP9 àZ¡™X,Œ£Îh^Ù½«¾yv …¨«Þ A÷-gE6lŽ)à­¦íýê;Õ'i‰¡¸òž˜ÔX!•§|wÇzº>}»Çtv¹&‹<|}èe×p"Iq:½'SD©¥8ÂK‹ ´‚€OœÖñt³ÓÁõ5Ôƒmã\A¯‡È:¦Ms >½È³±Q®¬#ømị¬Ú¡h»~¹yºY9%J~ؤ8'àÈèP< >€æœg}³š¢¬ ݵ†bTÑs|lÇ_ªëÃ<ÆÁSBÆvo8C˜¨XÛŒ­]_æ€Ûˆ°KmÒPYMx[5I±!O’z!÷ b]RiyjlUù4;øÞ¶ÀÍꌮ ÙB¡”rÒvr‡åA…$&˜hdÓ†äíÎ:޼`ßTßÓ#OQѼ^©ÇTAsô…ö4nÿiÔ€¬D.G1'ʉ­eWÚ·eol§Þ¶î*8â1g<Æ}9 Xé$µŸ-÷*“”#tF åÊ_Ùj픞°±®P$… »ÈÇNôà¤)­üݹlô[BW³uxС»·¤ž1ß*yþéèð$én@v^gßë‡ïÎy²=ŠSLp.ëÎ{Z@ÓVùW¹ž-F±7 äƒ. 9·ÿãÕs¦(öº”gÁKƒÈ‰ "rb§ò:XCN¬„2Ê‘¥ÔÀ)ÖkåAÇËæY-en[ÇqoÙnër‡Ãw«òï$Q²‚]MçcEò­&òcÆ/;NÊÎr½=×A½ÍN½Qäñs\TÁDà®î—꿦ä ²“§7QðÏÃ^s¼ÿêB±Õ–¦#¡Ôšw*C$Àqà$o´é£‘Sgè”õ -BY§ Û²!ù;ß‘M |o‚é’ ‰#.žPŠCÄnem±RB ~5)Û”:÷2ñæ3åz¼ ·ðóù¹¯®Ë»¡œLfsœžûælާW6Á1`“>“Ö† ¿v!;wìÄvb‹ñz‡H*]qmÛ¸=hB1ìÞø+k¶äI"½Tw.RoeÎŽeß;«,émÏéõgŽh˜™$nSŸÉ"þ+4!ÔnևĸëÌ^®Á~È£C~+qh×"ê-¸ž›¿n“Š}³ Ô]Ê ©8•Í-¼…’°Ž ‘O’+–â2õ& _rLá9 dûÞÆ‡¿s’‰ó‚fÒðùÅ2Så‡d!¡ÆòxG¢Ü½2Ýs‚Sìä¢zÌIc<…iø¤=‡&Ù°p‘º¾wL%÷ÏÜ!êšj6g²W™×5“jß²¼PPïV24R@Ï©Ê1%õ†(skTYçŽÚǶa“;–ÅŸn xè»~ü$òpxèw𽩷­ã¸çÐÕârŠë[ÙÃÄDDjPzçÜט~µ)»zÔŽuiº,»éGh¾R´#3BÍmIµè 7¼ÛwRèô•&›–lœè’*ÖÖ60ÃØ­Î†….\0&[µUN f’(…èìçšq$Á÷‹†Ãü¸µ €—y¤mç ÀÀ×vm;;A9öôe-[%÷Éu07Üß`”Ù.B{˜‚¥„Sô\Ù,Òðæ‚ä8¾¥pÅO ¸ 5ÞíŽSÖNŒÄ_áÊ>“!ϼ6CÏuŒF£Û^¡qÜÒvR\ÖÖ’-<¥³iJ$¸>Γ¼«¤Ý»h۹ؘo*…‘XÛÎ*p=p#ð`صíìöÍ¡4™«ÆF7¹®ÒÃî]…N˜¹ ¸„ÂR 9ÁC¢§Þ§á¤XH³9àQoª·+d7àÛÕU¨‘;è?ÎjÖ¿:4µ¿qåÝ¶Åø¥uªŠë~Á Om`(mѱ5¨Á@"d!È«ÕÏP¹ŽÎƒ‰…a »—ÉwGè§nlJ‰|­O¶7|“§¾™HpÕ¯°28Öèp¾…Õ"ÈÜeØ¥¸§Û=ÃÐd%ÊC(€­ßËxéôÚþ$; NžÑ»®eû)Uõ$oÁa4ÛØN¨wetC­³  ÔÄ«ú×ÛÐ{£ÕÚ”­å¿£\§O³^O ‹WÉ#¯+‡Áæ,|Ÿ÷G^žõ€¼Ü§V¾ÿ8ŽãÊ¥‰3­ åˆç ŸXR”BhÎ4-0qÙwÓÉ^SL]ñò\ÞMhî^NPÛzwE"’Ö %ñG­&à­ëÌ'½ µÑy‡ r„¥ÊÍ8,*ãX·‡„Äœ²¤f"|N›µ…Q¦í]´ƒïíH½™8̇}›:§È–‹¬ ¤À¥‡ÆAöê_R ~†§ëŸ|ëzî𺠜\Iž4ÄÍ=F_*!—Nû×»?KŽÜSÃ9”ÊRQo®‡#¼;·eÜ`á?M‚«òÒ8hË ê†ï)ðå–Æ’¤`|·P›xˆ.‘锜ÎZõ¨N«ÄÁ.²j{D`yB'ŒÂ{ˆÕ I"‰†Øk»±lñžÄÜUðY¬àI>Y7¼Æ²Yj(¦ÐUBv4:ã…{à€TBÁjM®‘ñq1q^Ús°EÎÍYy%ÚÆD èÌõœòíµÚÃH*`J(O®F­øGÛÌÛ.²j§‹'ð¶M4ïΘrÝŠ}O|'žC !oã-h’áñopíêwY‡}ÛºÖo˜ËñsvÔYy؈:õnÌX†°ÛñbjŸÍñìäÊ–yR¶Œ >øJ6‹'<Ûu 掴-¢îoNåb·õq·Oä!Uc9SÜfäñ «ëà»ƒï ¨™”¢‡6ð-g’4PÛ×iÇ‚å7¨‡ ¬·Š¬DVÌ×q¼fJq7!:þŽ“•µž S-#…¨ùDÈ7©p¿º—­i T†nG¯eÃB5i)gKéÇ[”¼^8ßšÑ\µÄ¶1ª'y7{&–Ž}wðÝš}³˜Ü¦aß±‰?… b=‹Þ• é†.¢ŠÂŠÓmÒ5dBLÕ¦† M³¶L#)xV_‹¸áD ßk¥ò˜tžÕ’LÊz®ÜlX9ˆJn¢º:)‡‰²X@7NÝFn1ÖŸ $Óµ6Pûîà{›³o«¶@ ðmrM!_6{t†ÿSEºm}KÓD´Bÿ·XH{tfZö­œ³Ÿ¢"Ù÷œ4øu€^s™'åÞ›sGnZ7É-B\¿è4U2×à»bßUaq1¤ÞÉw«mà,žêMç÷Ð|K®(k%ãPJ,²› ß]Þ÷væÝðTo»>í[9áëÑ•nf¼eãSgâ©+QÛ%Ñg Gd„Gÿ—àÐØdt©AÈQîþ°›ßÀwÝ5p2Ni'~AvpWç±ÕĦÜ2LO ßÊ6Ÿ$qN~:X—›¨Y„éPÛ&P_––§ÊÒ˜ÙZ ˲¾Ï³ƒB, _­ žpKLDJß—Å?1áEVf ò&y¾ŸÚ¼ÚIÂîçqÇbÐÝ'Ð(…(dëq¶8M⨾‹ºx2Ù“¬³o¿R§¡˜³B…z”.f¤üãz¢*œÆ’y¦£±Êiû³O“™™ˆ¶pÇÎ ŒÍCìí=‚.©œ{¶{‡•ãmšÛÈÃPT[a §A½ 'ÚB‚b½O²VŒPOm­ý×ÏtåZæT£ƒØæµXÁp/$öÝöOlÕ1š oMžxŒ›·’ã5’wcÌXx»Ú–ö-ý—€Ý÷Þ{ïË_þò›nº‰¹éàû<Ô¾5=RšØû$ñTŽÒMñ)M>žVO )\Þ˜QŠo{€Þ(½¬µJòD¼voLp¼pûÑ%¨ze äFŽ`9?Îûv0¾r#®ð*—|¹Ç’@,³oϵí$d2/%vªa§¢ÞSÇäºØ àøñãoxþû»¿ûÔ©S¿ú«¿JDy¾fìwœóÄê:w‚ò§¤ŠS’ê¿Füyòäoÿöo3ó‹_üâ'>ñ‰kkk‡ºâŠ+P¦htð}ža7)ü‚BZlŒ’Ë}ð/?£CG=…‡#“Ð:HFËÊÞ‰Ýá_K­LŠBapç&h’“DȥΔÑÔÄK_ —ó8Õ£t:ê³ï“ë]}œKHS?©d“êýÀM)Ãê”dˆU„²SZËQ½5Vte`R –XZ¯M¯œm;ó‚zËå°$a#àp¤|0sÀí§..ÌÍÍ}ý×=€<Ïæg~fqq‘™xàßüÍß,´ïóƒï8øn$æLÁÃSáR>qaò>x=ëîe(7)¡¿Çi/z£«Ì£©éBi¼5¥¤Žã§Äâ@aÍîIU£s-“”ä4ö]+ Óãýä‰è*Öd‡U¬w©âÜû£–Žo ¬Ôõ÷]1†ÎW9ï*‡Ék^óšâòÅ_¼{÷îíf;—}ÇÜÐ1T '÷ô4 C+öMêG¢©6FÜ{MJUDAÀ},ar™c5&ÝI'*)yɵ©.÷HêJ„z3×KlZöÀi\ö6N¢¡æÝqåv%RYÞ¶Mº·ðƒ¹C´}oå9!­Z&ըΞðÔ•ñ¾Ïc×»µHTNb¾:=%)Ú©Òð:È…÷XwZ+›"¦)O<ž? DSc±¨ÅººvMr©wA 8+ïÆV¿ÎbSw(eðv†!„ËA¬GäÎá-‡h|þk#D›RæÂ$jÛ6ðÍΞ¤â.ŽOÑ(¢šOÊ2®S¶K£ñN„ïàö"žYAþf…МÄî,’ëˆ4àȆ¿ØºÂñ}Qª¯vFÁļ/²PPÜÀ@uF¬eþ>‚ÛúÌ!ªËÚ|(uŒ kHtPHZé†.ËPs’Ò¶msnkW3µ¤Þh9L”ž§ÛŽ%ô; ¾©®ŸÄö0e¼Ž}~b`Ý0Ò‘(Vĸ߃ …ï"X“ØËìﯢ}¨Kåã®]GÑS“ð R1ÝÃâpT:h^`U2ppCÒ¿0ÅôlÍÑæn•â¸Fúrðä-­§–ص]ìµ§Þ¢J|ïÀcÇM]BWm%̰4MêD E¦Éþm¸MëñƾŒÙM"1N˭ý×8éÅia”=ê >“. É~À]9£tž >:s‰(µûäËÃî|ÝØ;Ó•oÓu]îÏ#FW[ŸÐ彎c¿C§BAÆ­äÅAŒE €Hj,f±¢ñ‚PdåKVÑ#B9]œ=¢M ²Ï!2Î"3•M>û–#ÀlD{‘ƒ¥0UÄà@ÙÖ Qû†¨“I· ßCÁíú>­]ÛNßµ?¶ 2¸5’ à¦Ð®QôÆ+I 8ï&ŸM¦¼²'5hp_›)ôyˆQþäJ@b˜ ,›À#ݕ焜k5CˆÝ•fR\–ÿ]ÿGU³uÙÁ÷BpÿÃà#£-gºÚåãÈì»Ó­Ê“·6'5Jñ“z!ÊJb±}êgØÊĉŸeQÿ•o“O +‡®f êдØ#„ÁÑ~ë2ö–ˆMÀ7Äî†f’£;:øÞ4î3 SoÃqûnŒã©pÍ%Ý&BE“\#·ÂGRHÁ)|x'¨‹6ò©C[ì¦Ðƒ–ó€Å“=|sŠ±ÆÆ/“yñˆ¨7Ÿ¯i•¥—¼´q—·D–³7Bé‹Ý ìm(ÓêÄ“¾'XœÇ|©þ)5ÎOU bC,˜"‰€Ê`U¿ãX`£1-Lç“â3`Cn_"§ú—Ò¤ˆøº%/ h$ ü ¿`…tˆNÐ>¨o ±º„¬åþ†¤T(Ä6„„!ø<ß8‹ð݉';Wª sÏR4j¸”1µœ‡ B-)ôhD|›|âûnõéšBa5Žkˆ­šÑùdÃL¢5…ÂY<âEÛÉj7¥r2ª#øpÓ°»«*îà»ö÷n ˜R6±Þyº©gƒPÈìAÎ-Ù ¢â×&1ùO`ß$Žêp|g2¨´¸ÛD¡Q#ö<6­º{bEúm¥*¢A½ ûnÛ|$XJ ‘Õs}PHOV»q<‚ª1o#’÷†|BQ?QÐP±Î8¸ƒô“à)a…ã¦üôR©–ƒkÁÉu¿ëÔ&n9 *ƾ9Ùò&‹œ 5¬zî/Kc)J:O°Ž¸!¾õL21ƒ¼/Å '±Ý?½™5ëà©vJˆzìiBôÄ™F˜ Ç¡|THå›ó9E*¨Ov"ÏCû–99{•¶ŽDÖÛ½¤:  ‚Ç@Y¸,°o¹R'­)ÂvŸ{Ém½µëˆ—_ A@ðaÎê8â P­l×6®?pJ±Qï ¥³'Ež¶Ï4ë–DZ{ýþîØ¹Úè—9±±7OÌ”Í;|ï”cdå¿.ïŽ àP$ŸÄ8X`êרü êÚ‚ÑBžŽáøø;¶ h³7”Ô‰(¢–P<ì…t˜®I×bÅ9êqyMlw’Msd;ê]ʶˆ¯Ì*In]ÆÎPsG6Ùð½ÊɆù8ó-@¸ ØAðpðÑ1à¹Ì|ï ý¤¢ïv‘Ú:Ðcâ'n~È\FldöMíaq•F ±›`%|’8X$ÈâS|YßÉĨV%8Éê²V¾ïäx{ë+ÔØÝªùã~ÁÆxNÜÃÍø| €@¿<¶¡OAÌ™w Ç|GÃ7êïHSÂtA–†UÎ8ÿ"$›R„}#^Üž”Y‚IRÔ†e#õ#•®ÍöݰÀCœûGʾ­TºÛwr~§UDT2ÿÓBäÔ_òÒPº­ÂÙmS;–>ŽW ¾Iòæ.¢+ë⠇Ρ/æÁ6ìà»|ÇNüÉãæTÇÙ³»ZЉà¥‚Dü›!¸P‡^!Ô)ܸs묳ìÆaBXㇴQ=´Îz`¼1zÍ|}ßêX™z~]^$‚©ŠLöäÙú‚T¢‹,‘CD|V³´Š…nX†uþî 18¦Ï¡Òä˜ Ð¶,¹U6x÷hC£»£ƒïM!à¦ÜÃô1"æÛC]-É{¸õ:rd©ðˆ?GÄq„|2±9{ š…#߈’\Ú.½–¢ÛlÎh?ƒÔø¢ry@µ9ÞÎ*Ûc¯K#ׯ<lr¶ ³þò¹`çûî|‚ã¶Iî<ˆ­ïX6À4(WLߤ¸¤& 0&Œp„árþ4aÔþUžEj˜H˜aÑ+à­à[³ß˜Ôg JPÈåØÐíMAAÊñ,®<;GYÕÁw Å—Mrq‚¨Í!aãEõyN½& ³ou¶IX1 ƒSäì‘q(,êI Dy¢ àãð­Ì½‚¸Aš|‚H"´§Ž»² ±ÛEíѵçLMÀ×y›¾w§T 5ˆÌ.Úú85…†©Ô†Xyà ¥›RÞ&¾«ÙÐôýž“*²¢T¹ÏÔ /vÑ(4: q±„Bdø?îo¥ Ò’,k>òf)Ô=>ï>Ë’7wÀÔÁ·ò–`ÝÁ\ æ ¤T4€Û%쮕…ê˜(X>Haîf…¾1u`Cé¦Ð`ã„Ú*4kDN,”Õ‘PòñúT´„o(â« ˜YWn<ÊóœPì¦ZO-‰©Þg»¹MdUß;úà:¯DðÆöc™ 2~.ŠŸM(¨á1SyÎÏTÎ;âÂ9žôÍñ„EÇ$"ñ¼B³&Ñiýð=j£ý8GË4¾oÁ‚2ůösÏúÍgý#Ùiß|kÜÙÆÌë¹zþ[ŸRå¼!2!M@Þ¨ rÊS,oñ!äDä[äMcï¿Ö»#¾ ”RŠ‚ZMlÈÓ(h<½ˆãç.msHP§lÕ¯³êµuêq÷h[‘‰³Â¨ùÕ®Þ‡xwua«¨wµ¤ lÃvì»;îbwå#Ì"Ÿ"_dB ߈Û3|Þˆ?œ+{§Õ·bè µDóñ‹¥ZݦU“b¥ù:)’ȱ‚HUC$· ‘S¥ FÞ*€Ú¡(ÇÃŽÎâ||ó É|ÒÚO}àÊHÛNÑ”vð(Ñp¥µ|wÇäÍÑH³ÊC=a¨g¤ø*p,HÖz>å£ ªÏAÝÜÔÁ© ˆ¤$B¢h“Ì®b…A-ŤÊ!!fa³ʲ.ÔŽ¥¦º^Ù©r_eàÎãAÞ[b¬ý݉Œ9ô€A™ä«k8Èü @Ætð}¾yž3s–eXºáê'£ò¬?÷ Õ¨îìF]Ýömy,n¾Å܈۴à(@­LðŸÕ8¸9®ü$©ñÓzB °— MÎIìö6Âåý‡'Ç ,[³À#nz±¢Ap˱å î<ÐÅwúÀ 0׉'çõ‘eãQvfÞ@w 8… |Q¿lBŒòËŠþ„`ÈxŒÿ²'PP(°›Ûa„E‘žÛÝ¿ ‰öù¶mœ'VTc ˜²‘{å§È“Ò ÊúMa 'F½¹T[ÞÉ%UJn´œ öìÛä\ƒ™üîïþî÷ÿ÷=z”ˆxã:§C٬h鵺O¸|&µ̆氅ÉlQcee6Ø‘(_o#RS‚.ÌyÛøð·rÏŠwž4J³ø0ZijÖ$(Þ ±ªø<^~6:—ÐPÿWæ¾ÏSÍ„ˆ~ó7óŸøÄ³Ÿýì7¼á gΜÙð÷аâÅe¾YLê ñ<É:5C"HM¾\ˆ,²P…æ E §ú$7#›u¯sÛš¤êÖF’FFý lÌ©ÞÆ £sC6éŽ!žäyžç9€n¸á•¯|åž={>þñ?ðÀW_}õÆJ(9°ù˜eÎÇÆÔ¥ 9OôòeL—ð'ɬAòÄÕ’àî+t¢ ¼íP!‰…âƒû²½žÑv¥ÁCs¥þáÉ.Fx{ÑV\€ƒÛFNPòпÁ½Êá¦5ÇOwâk»ÄÁm ßY–’÷×|Í×8vìØsŸûÜ#GŽl,vW>Œœ²:FGgoTRókðt;ILO¢¹æz÷!GüY1nJñêŸÆ^‚^Ož”L}–Ðê_´$òÐ52¯G4ó÷'åÊsP3⬥Õm:ø>·k­1æøÀ=÷ÜsÉ%—|Ã7|Cžç‹‹‹ÏþóçççÚ÷FIá£úG¥ï1 ¬ŽÚÊTrðd2Å )NÏcïòؽëÔFj„‡Ä‰|¤Ö%GòÖß÷‡‘¢ê¬¸Äoñ¤!f2ÉC³”¹·s® ¾;ñä|: r= fggƒA¯×ëõzGŽpÿý÷_vÙeþ7Šƒ7õÁË,[A1”ÔØ+K‹u`bªŽùV‹ ÔAáGü a\`ßJ©ZIŸ¹ ç–÷ŸT±€¦H÷‚f£’#•#¾Gå9e¾#|o1|í×~mñß¿þ뿾å–[z½Þm·Ýöâ¿ø•¯|ežç••pƒ‰?°úðô" r2³¡*Ž\ÄÄÍÚ>¥]Ð XlCc>hå:Èfo’cZ(¡ZµØýgÅ\ÄáOÄ'¬çT &[Ò¡3õîÄ“í©}[kó<7Æ\sÍ5û÷ïðoþÍ¿yÆ3žÇ¾Io¬aýü´Ÿjö¢º>Α~È †˜(+!ëäàÔâ9BÒÝÙÔØ7â=§.IÐj%[g…Þöãñ‡ˆ`½û,cØmCjÉèÜÞôë¶.·3|cŒ1®¸âŠ+®¸â,Sƒa¨“°x3õ<ýˆ@zg1"¦=¡¬m1BðJùþYÝdFŠ­NÿÎZlô*Jò¿É]Mn©žË\ ÿúpð¤x’Œ=ñg²òziŽ­íû>÷!O ÍÝÖåù}ц;õçwÃYh¸­mhì>ùîô‘Ô„Þ²$öÖ'³ýX\Tô™àÁÛø3ôÂyƒÏ¾•À­—;4»Jo;ͯ¯0F|~’C£­Á *ª'Ÿk=|wì»;¦“­Õ…LƆÐ=7©j1·ÞÁW!ÙÏè°"(›ctž€ãï  ÕÉ1øFœÞÊXYíïANT< ÛüÔÔ8 ­ÛÕF„’L+:»‡çÉ„ÕYÞöÝ ¤¬yXVuî¥oûP’ŒQ¥MNR,ð÷¤öB)l­Éë5)Eê Et DáÓŽ×Ë*M’ÎkJlÝÙHÑðyŠÝ¨×…'oF;p:øÞ`²0ò€ÛGsë\n@a0Ô0VÆõIý$  ‘ÚÛ”×Ð5ƒ—ˆ w;d³¢H-‡ãÑޛȊnLe±Yî}WÐL†ç›¹{Ä|ºÌû6qì^–•¾»cÞsžêmœ ¹'ò᛼6ö4“XPxŒk†!õ Ô³£ˆ€¸fI•zŠ„86n©/à;B—Oþ"òz…X }Í{‰Ý6Mu~a7+Ìp)0‘ø2à$p XÞ¸áê¾;¯¡¶qôë)à±xB*1ðç69n%DD–ñá29Å“TÌes ·¡öyÊŸeõvâzàŠM!ùm¼çÕ’X^®lœ‰?ïÎeç¹è‰Òv.ÞÐáê¾wºŠbêì[PT‚ì›<´µNnêE?6´cßhÓȃÆB©DVˆ ¥¡VýK-Ø6ÐÞæqº2{è\.ò½Ù8R7z„cð]Qïów[O¿u¹¾7ñmWqð‘§¢årÿz2S¤%‘Xðˆ2µÊ'éЙX” ¬\H(t âWJ’µ ÷ÑÒÊÆ >}(ŠOÆóP •ŒVŽÎshÓ;çIwl¼„’9ú‰‰‡²Vº¶‰à{cmpáÞ†*‰Q7SÇ(ð:Uo!q"jûì[yÞëë*ú‰ve]«RM*Áäü5RO]¢ó}wÇfC§¥>V˜)øOŒ×x@Þ§»Ï)ã>MP…Tn-âömy˜¾“<9†Ã âŒ6mÈJÔ†8AÚø)¯:kˆ$Õ‡|o²›ºìà{+9¸ ÜòûÏ8TZ@Iö2cY­ ¡>8’œ‰ßNé¯ûîà{+ÜAðQ\“ó13¡=Ìê[*Êx Òöu~r(¾…Õ…R>îØÀNÒJH) …uyRJÍšÛû¸mä»IÂèßõj*sO?iàõйÁ¶9:øîàûÜ"à‚Êá·eúÐl­ ÚÆå —°BâÔ<ñ$†àßµ£¸ä¢o%‚'µ}1Ú85çAÏIÐÙ=ŠøÏ—ªVØ­wžtðÝ›õ.9"¸ P»Pe<ß·†ÁU”?Y@,ÏòDÖL’?Ëï&5E•§xX§`Ä4 Ž[S ¾g5ïÖ<þXzIîÕ œ·ãg§sžtð½õJ±9ôˆ$×K2}Îêíª+Å<§‰ßÌo"Öc·èòª hdî|#hµ ZLÈjøž»!6ļz³Æ(üv¯n벃ïsÁG^¼‰ïÚÌÃnã4Ù»<:wغñîÊxÖ½ýœIn㌠Yo €³ïÊS6ÞbÀ-?rAnã–JÉáeäÜ ¸ói=¿¶{bNbè6B‡ˆÏÁỚ-Ì#Ô{è ÁŸû• ‚ÝöÝÁ÷Ö¿‡!‘:(J4z\xrñË–ØÝÈ7ì"uWán\¿%yAèD¤w˜ÄHUèôJ•ü*9¸¦µ¡ŒÙ¶l=É’·Ð2ûâíþ©éໃïsâ°!ñÄ}ó§®ÞÕ7\ß¡©_ j7ªÎØ›ð4‘ò3A vQÊ·õÇËÃ2|CÔOÏõöï0¦„$“Á“_h‰8é·ÙÃó0>°cß|o E€ï¬.hduåÚÔñ±Qßcâj"È…6þBa·þ3Óª3^OÙ;Õ4RBí<ºg::ýñœQ(ôõ|1鎾Ïo_‹ƒNV¿ÆeßÑFŒêß èw!56æN!1„"ËOCß‚·’ýÍAXõð¤ÕX|·š±D(°{Q½y'}XHw³Ž}wÇYEpaÜ.sªØaßäù@¨¾ÙOLÄ®o„P[0h7 Ÿ"ªK[®ºJFý¡¥ P/´wö73¡³»¸¥96䬀{Gœ[µítì»;Î¶Š‚P*ÜÕWæÁ4ÅÓe}ÜåéìH’XÉ!é\ó©‹ùµc!­Äè Mø ÚL]Ê–±xnMïXæŽÒ½Óæsa·‹C‹€Vºº†î8Ëîæ³ò¿Y ÜÕÙÛu¬`"ûF¨Ð=H¥cq¯ÿ‘ vûcŸˆ‡¸*á›Õ·Q†ŸhärÖ Ù`+Š-H噌¶Epàzf¶ÞË|¿åÛ%¢«ƒïóé°eE}/äËœ=Lv|) 8§Ø·æÆÛŠ„ÂIb}ðÁfŠ >4Ç’Í“8.çœÄ®A¨M-Ü~7›Ü Ì!]E®@óçx§Î¤3“jÛá’›ç]ÛNwlņžlJ ʹ®h›:ÃM²oxC˜PçÇr²öÍj„Μ—D(—gô•ñßÁÇiE¤±ô²:¶þ]v"M8”Ü=kG}4rÅû3/_äŽ}wÇÖ#‡qWÿrI̧†S}Ì’êÒDCTçù3uÅ\FjŠ€>B¹Zÿ¥ˆ‹é|y5#<Â=@ך¦/°v›5®ÏK¸i$R5¦+¹û<„þ@É[vðÝ[)¤ ½í¬ü×–*ŠqTÂkÔ‡¼©>O ù»ú$µ¯^C¬c#à”ú|6F]’@B _ ;×êÿV7YÖÁwwl=Ýpi¸ÿeënœXªƒyÏõñÙÕW–Æš”RÀIìô Δ'ÙwRr‘—ŠÆ lH6z¨R¸´¿Ç:…Ý¢œµ»£ƒïíÃ8ÖJ¼îÕAÁDh89ßj°ríRÂSWdj#ÀýDF{äT ˆ+«Ëª¦”¥Ö‰'‚ç$VM+ÇéÔíVúI'žtð}>Õ‡¿ç@¹©ëã. ·uGH<ñERoE&á[n+NÊ&ÉÏ'DGªM¦ç¬že/×0–òšÇÓº;ºÝÁwßÛÿ½›;BJÜ1o 6ê¨ã„ÁnÐ5nk¥xÒêÂtnq}JÌÿ—כ̂FÀîÐÔr¶«ƒïî8GA¼Â‚ 7ˆY¶Ÿî-ôLRÁ“ØMm”“¤~’ÔC’3ñ­½2¶áæv5“Q¨Òl§•l¬Øm]vð½M@<ÆÄ«Ùz[÷}Å“†Þ¢¤Œý+øXhCÅ´Q±eöMâ2 À´¿Q‰º±ÄŸ™Ì7QwtGßiCW^¡sæÁ·­;Uf•‚Sä‚ßJö ±~^ÝP$“(ÙèÅË}ðÕÈ{·?95_á6ì[~™™ˆŠ;øîŽ-ñ5Ï—’Õ‡3MH«GšŽ#tÑÍæ ÍмŒÚ¬–M‚€‹Hùo«Þwò„oŸ}瑡ʸ7þýÌl­]s,ó ꔥªhȈà´íè|ìØ±·¼å-^ýêWßpà o~ó›o¹å–_ýÕ_ýµ_ûµ<Ï+dïà»;ΕÃ:6ÁÊÖÕ[ÖìÛõŸY9R¶îàe½l½Qú #ïJ&¶WéF—ØN-Ù̃ˆˆÈ”M&þ†üʘלº†âž={þãüìôÊûxy(@Üx¥<«ŠIýx4¢Šæ[X–u"ônËZ ÇÅ“ûîÎÙ÷yŒ¿Õ•,«Ð|Û ^vð½³Þßy µ|çjgŠMNMBá†cð½¬x32øfq¥Q—Ó[EÀ7êÅßf]Æ|ïÐD^" ÊðB*‡äÆÉË&$=ýYv†Õ™Dñ,F©.J«ÀqN¡|wlv›iƒÛþèà{G® ½þÌe Ì8¢¹õâõŸR\/ ¶P«–—¡gß~n‰­s:¢áÝqNxß;¾1Y–m›¬ƒÍ+lü3ã׺S›OGp\nÃI†z»Sþ± ùJ/rg&c´ZÎÛꎳöQ%"cLqyü™åÄ»¬øâ§:øÞnÇââbžçÅmwÄ÷ÕY–Γ‡½Ôýå¶Ó›0Ï‹¬µöôéÓÐ4sk‹Ÿêà{[Ýþ¥_ú¥û×ë1óÖ¾5Ï#÷Ò9~BZ$ZPa*HTu„ZsXk­µY–máI*F£Ã‡?å)Où‹¿ø‹ÑhTät'9{žç‡ÚQ/ÚZ8ëŽîèŽî莎}'hÅ–/TY–}àxðÁ_ùÊWž çü=*¦æNœ8ñGôG»wï~Å+^'ï¢;¦~I?ýéOßrË-¯yÍkúý¾µVC{7ï!¿½Õ¨DóŽ}wÇF.Ƙ?üÃ?ü›¿ù›={ö\qÅozÓ›°óvZ6ä(Þ±§NzÝë^÷å_þå<ò€·¾õ­[{ʾ¿?‰èÿüŸÿóÎw¾óÒK/5Ƽýíoï÷ûØvFémvtðq6à¦8–––~í×~íæ›o¾õÖ[?Þa÷z°æoÿöo9òÃ?üÃo{ÛÛî½÷Þ»ï¾{ ©â6x‹Ñ£>ú“?ù“ÿù?ÿ祥¥O}êSÝëyîïûlœ»?ð?àäɓ߸ߏÍ:÷¶q®¸âŠ<ωè²Ë.ëòìg?û[¿õ[ó<ïpgŠEÀÉ“'_÷º×Ýxã<òHžç¿ð ¿Ðm]®“g|ñ‹_üÜç>×ï÷o»í¶}ûö½îu¯+¶Ü»×çœ=º¿Í¦£Ñhuu5ÏócÇŽ=ðÀ÷ÝwßUW]õõ_ÿõß鎶¼À¾}û~ë·~+˲«¯¾ú¦›nêõzv¯sE<}úôƒ>xß}÷íÛ·ïÛ¾íÛÐißûîŽîØ<ÂØ½ÝÑÁwwœ£Ø*.wgú‚à…ád›U¨lÕQLÌwïϾ»£;º£;ºcs޶tÇùJ½G£Q±±f­ílÝѱïîèŽîèŽî8?ŽÎyÒçÙQè³÷Þ{ïOüÄO|èCúà?øã?þã+++èR«ºc‡xÒçÛ #‘µöÀ‹‹‹ÿøÇ‰h0ôûý΋Ò;î³Ð–î8üÁ¼úê«ßð†7t/EwtðÝÝqÅ›ö¿ý·ÿ¶¶¶633c­ýŽïøŽbª#àݱsŽNûîŽóì(cï¸ãŽÿò_þËÕW_}èСw½ë]¿÷{¿Wˆ*ÝëÓûîŽîèŽî莎}wGwl /z0:ÒÝûîŽîèŽî莎}wGwtGwtGßÝÑÝÑÝÑÁwwtGwtGßÝÑÝÑݱEÇÿ¸Áßãá}1IEND®B`‚giza-1.5.0/docs/samples/images/sample6.png000066400000000000000000002551431477367113400204140ustar00rootroot00000000000000‰PNG  IHDRênÁ.Ì£IDATxÚìwxUUöþ?·¥÷HB¡÷.Ò±¡‚¢b糖ˆmìe¬3vFA±"*¢ô.Ò!z:¤÷vSîMnîýý±·ç–ÜœùÎÏqÎzòäI9÷œ}Ú»×~×ZïÒØl6TSM5ÕTûo3­z TSM5ÕTøVM5ÕTSM…oÕTSM5ÕTøVM5ÕTSá[5ÕTSM5¾USM5ÕTSá[5ÕTSM…oÕTSM5ÕTøVM5ÕTSíßmzõüù¬¥¥EùY£ÑhµZ›ÍfµZů6›M«Õj4ÇÍ´Z-`µZÅ¿”¿+T6³Ùl.•º:®õqÿþ»Íjµj4Çñ8š‰¹ãG\þ"þè8f10e´bÿZ­¶õf.§/.¦ø rvÊ6Ž»u¹Œm™8œ²eë«­Ñh”Q‰{×zðâ|[ŸŽËýíÌxTûï2Z4ÿ§7›Íöû^ÝßýÁÿ_'ÕÉ»€f;“Gë™à?|M:9·›©¦Â·jÿ}¶}ûöÚÚZ“Éd³Ùúõëׯ_¿úúúuëÖµ´´ÄÄÄøøø$&&­_¿Þd2555Ùl¶ &˜Íæ'NôéÓ'!!Aq{ëëë×®]«xîÓ¦M«©©Ù·oŸV«5 õõõÑÑÑ&L,˦M›Ä°°°)S¦ü‹'RXXàçççXâ×ŠŠŠÚÚÚ„„ñ«øž››ç‚kÇŽËÍÍmhhhii‰ŠŠš8q"°aƪªªÈÈÈ   øøø={öTTT466¶´´$&&Ž9²¥¥eÍš5&“I,;F¿y󿯯ÆK/½T¯×‹A:tÈ××wìØ±ƒaëÖ­f³999¹G¢j]]]}}}dd¤Ø²²²rÏž=&“Éb±ètº‹/¾800ðäɓǎóððHHHÐëõ ·¸¸¸8...222!!A§Óíß¿?;;ÛÇÇ'!!ÁÓÓ³{÷îëׯojjjnnÖh4“&M ÿ#ÏǪýSgì?!m²zõê… ÖÕÕUWW?ûì³§NzôÑGSRRjkk?~ñÅïÙ³X¸pá·ß~k4‹‹‹ÿú׿æççÏŸ?ßh4*þiuuõƒ>xìØ1£Ñh4333Ÿ{î¹Ù³gïÛ·/55õý÷ß77Þxc]]øÈ{ï½·fÍšêêêÒÒÒW_}UL ÊÞ”ïÂÄ” ü |›µ´´466^rÉ%gΜqÙFlPXXx÷Ýw¿õÖ[bæhiiÑh4kÖ¬yðÁ™±qVVÖ“O>)ÎâÃ?ܲeËÂ… ¿þú뺺ºÂ»îºëÍ7ßvîÜùÊ+¯ˆÍ^}õÕ”””^xaÛ¶muuuF£±¼¼|îܹYYY6lÇmii±Ùl‹å¥—^Z¾|¹^¯×jµ«V­züñÇÍf³Â2¹œšøµ¹¹xä‘GÞ~ûmq â4Ÿ~úéãÇÆýû÷¿ùæ›øë_ÿj4kkk—/_~å•WÚl¶uëÖ-]º´¶¶öǼì²ËZZZ¾ûî»üãF£±²²rÞ¼y÷Þ{/ð·¿ýmÛ¶mÕÕÕO>ù¤r5TûÓ˜Ê}ÿ mÆŒ'Ož¼óÎ;³Ù¼dÉ’„„„Ç\ü÷ / fÍšxÅWsæÌéÕ«×e—]6`À; ãââ^|ñEeÏ+V¬8xðà[o½•‘‘áççwÏ=÷~Ö`0̘1cذaC† æÎ+\xÅãsüYá.j[x©Š¯ªÓé<<<®ºêªššF£ÓéÌf³§§§²ŸˆˆˆçŸ~ùòå•t:]FFÆž={ÂÂÂÙyÁ_|ñÅ¿üò‹¸ ‰‰‰ëÖ­kjjZ¶l™ØæòË//..×Íl6‹Í¼½½¿øâ >ø@9ý„„„/¾øâÎ;ïLLLÔëõÍÍÍZ­6..nÛ¶m ,¨­­õôôìÖ­Û«¯¾*®°`Ï]NM8òƒ¸å–[Ö®]+Nª¥¥%,,ìòË/ðÁÃÃÃ-ËO<±téÒW^yExÜÀôéÓ5M^^^Ïž=FOš4Éjµ~ùå—Ÿ|òIPP¸¿ï¼óŽ^¯¿æškfÏž Üz뭭㪩ð­ÚÎjkk÷Óh4¶´´ôêÕ«¥¥Åb±hµÚ†††ÆÆÆèèh£Ñèçç'6khh0›Í ð ¿²wïÞ---b®×ë»vízà 7X­Öüü|£Ñh±X®¿þzáfxxø«¯¾:`À€]»vÍœ9síÚµýúõ»ï¾ûž}öÙ.]º?~¼ÿþsæÌñööÖh4f³ùý÷ß/++óöö~â‰'¼½½½^ F«Óé¾ûsç¾ñÆæÐ¡C111111b¨««³X,ÊÅ1›ÍÝ»w·ÙlžžžÅÅÅ‹Åd2)×­¶¶¶¹¹¹_¿~V«Õl6ëõzF“””tìØ±šššÚÚZe²X,W\qÅ¢E‹4Í”)SBCC­VëÉ“'ß~ûm«ÕzÕUW]uÕU=öØÀ·nÝ:kÖ¬iÓ¦mÚ´iéÒ¥¡¡¡ááᎤP}}½CmmmCCC@@@ll¬|IIIpppnnîõ×_à 7\zé¥wÜqÇÌ™3­VkhhhPP˜N’’’ÄŒk6›W¬X1hР’’’+¯¼ÒeúTM%OTû#Z@@ÀW_}5þü|°²²²W¯^uuuÂϵZ­óçÏ_´h‘p0-Zôè£Þ{。¡¡ÍÍÍb /¸½^o±XDnƒH]°ÙlF£Q«Õêt:±Éd²?LZmQQQVVVFFFaaáøñãï¸ãŽmÛ¶õïßÿÑG ùè£ÆÿÍ7ß´´´lÞ¼ùÒK/9räÎ;_~ùå-[¶Øl¶´´4‹ÅòÊ+¯lß¾ýøñã>>>ÞÞÞ[¶lùòË/›šš¾þúëòòr1 ›ÍÖÜÜlµZÅhŸ{î¹Þ½{[­Ö’’’ÂÂÂáÇÇÄÄ(>¾ŸŸß¡C‡z衇zèÛo¿7n\MMÀüꫯî»ï>›Íæçç·nݺyóæ=ôÐCGŽ:thmm­pZ…‰Ë">eýÍÄUêß¿```CCÈ#šššDlàµ×^›7oÞçŸnµZ>øøã¯Y³¦¸¸øý÷ßã7&MšÔÐÐàHè777?þøãóçÏ¿çž{FŽ©Ð÷Z­¶¸¸xÆŒyyy?üðÃüùó?ûì³'Ÿ|R\~K/±Ùlaaab[·n­©©™1c†¸•êÛ¡zߪý±çd­öÒK/={vccc÷îÝ¿ù曢¢"­Vëáá!ì"¸g0®½öÚÉ“'[­ÖøøxNçãã#Ö×:®ºººªªJ§Ó)*++iëãããëë‹sv ^¯Ÿ;wî!CæÍ›×ØØXRRrß}÷]sÍ5?üpLLLDDÄ /¼pöìÙFFF^tÑE=zôðôô Öh4W_}µ——WppðرcO:¸fÍš7ÞxcèСùË_¢¢¢Ê%((È××W ªÙlÞ±cǺuëNŸ>ýÁ¼öÚkŽD£Ñ 0à‘G1™LÕÕÕk×®Õjµ>>>ÀìÙ³}|| CSSÓøñãz衆††¸¸¸C‡­Y³F§Ó)çh4ëëëE4U«Õ 2'''§[·n6›-999((H‰£öêÕkÑ¢E{÷îõòòÒét³fÍJLLLJJŠ‹‹+++‹ïÖ­[CCÃñãÇÙ¤ÀÀÀ›o¾922R£ÑÄÇÇÏž=[øÔÀСC§L™rÁäååùûûO™2eÊ”)7Þxcyy¹?(ãLII2dˆ§§ç¼yóbcc_{íµ½{÷Ž=Zõ¾UøVínÛ·o?uêT||¼øu„ ?üðòåËãããõzý™3gúöík³Ù6oÞy×]w‰ÍÒÒÒöîÝ»}ûvNwüøñÒÒÒo¼ñ™gž »ª¨¨øòË/Ÿ{î9`ÿþýÛ·oøá‡dêvÇŽ™™™ÕÕÕõõõkÖ¬4hÐŽ;^zé¥+Vlß¾½°°°²²òÚk¯]»vmYYÙ¾}ûÎ;—ššš––vÑE;v¬¬¬¬¹¹y×®]V«uË–-Ë—/Ÿ?~}}ýÔ©S-Zd³ÙNŸ>}ûí· Ö¸¦¦fÓ¦MGMII8p ÂPßzë­¯½öZqq±¿¿¿¯¯¯p]>œššáååxyy¾üòËãÆÓëõ{öì ÆÞ½{Oœ8Ñ­[7±«Áƒ/Y²dÁ‚‚z6›Í .|â‰'Ö­[wèСšL¦õë×5*!!X·n]qqñ7Þ(PrãÆï½÷Þ'Ÿ|ò·¿ý­¢¢bÛ¶m¾¾¾ÍÍÍ;wî¼÷Þ{kjj,XÐØØøÕW_=øàƒ!!!‚9Ùµk×…^8jÔ(áO›6íÑG½çž{4Muuµ‡‡‡ÍfÛ²eË¢E‹ž{î9ÆÆÆ   Q£FÍ™3ç†nhiiÙµkWRRR¿~ývìØÑÔÔ4þü9sæ¼öÚkååå—\r‰`ÔwäÏaº^xA½ nizzº¯¯ïÈ‘#õz½Õj 9räŽ;rss+++gÏž=pà@›Í–™™)þ%0.++ËÛÛ;77777·®®î’K.4hÐСCwíÚuîܹÜÜÜ’’’9sæ 4HOO :t¨——— ,K^^žÁ`ÈËË+**êÕ«WŸ>}L&ÓäÉ“=<<òòò&NœÛ£GáΚÍfŸÐÐP½^YYZZj2™æÏŸß¥K—S§Nùùù]sÍ5AAAûöí›9sftt´miiéÎ;ããã«««‡.²\L&“ŸŸ_BBBnn®‡‡‡ß™™™þþþݺu ²Z­S¦L9zô¨ yÆŒsõÕW™™™}ûöõöö¶Z­^^^&Lؽ{wNNN^^^nnî¬Y³ÆŽ{âĉ€€€³gÏæççûúúÞvÛmbFÉÌÌ 3fŒø5&&& ÀßßРA¾¾¾UUU‚Ó0 C† ¹æšk~ùå—¾}û^ýõÉÉÉ‚¡ªªªª«« NNNßêõúýû÷çææúùùÍ;×`0„‡‡wïÞýìÙ³™™™³gÏNHH5jTUUUjjjqqñ¤I“.½ôÒ†††ââb??¿~ýú'%%mܸQ›j’÷]Í%úÓ[ë%sçË[~wiÌï³Å‹GGG_~ùåÿ±#žï™þ‡ù‡ßw§ÚÿU5•òy}ÖlÆdÂd¢¡ÆFêë1il¤±‘¦&,ôzèÛ—èhví""‚ÄDºtá7ÑsW³Z±ÙT']5¾US­ Ø_ .½`rsÑé(*¢¹£‘úzjj¨©¡¢‚º:ŒFL&êëilÄl¦©‰¦&ÌfÌf%Ž›Í47ãлƒ;èߟɓII¡KÂà $*Š^½èÛ—nÝðò"0èhôzÖUSá[5ÕÜyÙõàkj¢¡½{II!-¨(œ×_ç­·þµg\ƒV+±xÙ2®¿`×..¾‡^vó÷§[7éÖ ??ºv¥_?ºw'(pãª[­ò,”3RM5¾UûsB¶‹—}æ YY¤§³néé”•ÑØ°r%×^‹ÅÂwòÙgèõñ,G|l•­‰lqÄ–ŋí^ó=÷°x1ƒtÏ•u@kóñ!0OO¢£é×>}ˆ‰Áߟ®]ILÄÇÀlÆÓAQÇiI5ÕTøVí¿’i×µµTT–ÆúõddpêçÎ9!²NÇ…²q#z= µµÌœÉæÍèt8ÈvÖ´Z¬VdãF""ìOKcâDJK¥í8GümiqéQQÄÇãïO|<=„ÕJx8¡¡N§¯â¸j*|«ößíe[,œ=˯¿’ÍÞ½:DME RùÕjåóÏ™=[¢ªVKv6×\Cjêy#¸€Noo~þ™‰휵ՊVËoð׿J|o­]~eZ-Ë—sã<ÿ<ëÖ1k^Ȉ(m仢ò*ª©ð­Úµ[cS]§N‘ŸÏ¶mìßOa!……®~±€N=ůƒ±y³tc5 µrÕUv€¶.&àþå—yòIl6;¤ŠÇ¾²’)S8zô÷øõâ#|ù%“'lÞÌÅÓ§×_Ϙ1 dŸÆZZäÏ*Ž«¦Â·jÿÿÍ1pgµb4RZʶm:Df&‡SWçJŒˆÌ ·ž€æ·ßæá‡%j+À§Ó±q#×^‹ÑèäªwH›\r «Wãéé:Ljýû­tóŨ΋éÒ…/¿düx‰ËõõLÊ(üý™0‰¹újºtAt|VIÕTøVíÿ¿Ç-´Š êëùî;/¦°š'¤sùH;4…ÍFl,劶Á¿úŠÛo§¹¹ƒ])ͦMôëç48:à--ÌœÉ?ž‡.¶ìÒ…o¿eÌ'näé§yõUt:¹se•ĤIL›ÆÄ‰tïnŸ?@ÅqÕ~·©š'ª?j+¸£Õ’–Æcqÿý„‡3r$¾¾ÔÔ Óa0 ÓIêCùjpŠÝq‘‘vLtM«•nॗÜ`q[;|óM÷Ø­Ìz=O>I` {þ§-ìNJbõjÆŒ‘~·R:c†ÌWI¬64ª«ùþ{î¾›‹.âškøærr$w$†ÑV€T5ÕÚ}US­sfµÚZZì?½Íý‹icȉŒí£¡8Vn®->^âlû#<Øvâ„û Füåµ×Ú;qâÊQ4[|¼mÞ<ÛêÕ¶ÊJ§]© ®š ߪýKæˆ#ÕÕ¶•+m“'ÛÑG¯·i4¶€ÛÁƒöÅöë×Ûzõ²oÓ>vk46Ææëk;|¸cÀ(YQa=Ú P ?×××¶ys›^¼Û.XÐ슿eKOwõ»]f‚”[PPÇ‹Ʀ×;ýeÈÛƒÚvírõÇUSM…oÕ~?URRbûà — œ)Á„ 6£Ñ»Ê³²l—]Ö)"Eìgöl›ÙÜžëíjÙÙ¶Þ½]1Wüüúëm‚l[½Ñh3ÆýPÅ>§L±;×ÞnÅ~ZZlãÇËY¤Ã5‡Bª(3œNg0ÀöØc¶£GåTO\µ6L ]ªÖnd2#ƒ×_gÌþòöîµÇâD¨M„ìzôÀÏÏIA[d}$&²jóç˨£’sÝ:„hµâéÉ­·âáÑ©¢ØBŸ|BT”=ŸZÇ_|1÷ßoÏŠéL„ÓfÃÏgŸµ'¸Ä*/¿œÏ>#.®ãÑh¸á†ÎÆ!ÅÕS¯—aÏ'¨­%8˜íÛÙ±C†7Ï+¯Q55t©Úÿ¢»­8z))¶¿üÅgwŸ]ÜIÁx€í£Úã‚m6ÛgŸÙ""$‘ÒU}ÑE’:ï¼§)ö¿r¥ÍÛÛ¾ˆµ¥¥ýÚ¡¥Åf2Ùf϶»ÛÊ>¯½ÖVQÑ©}Š RSm¡¡0én/‚XÊlÛ&÷öî»6ÛÓOÛòòTN\5•þ˜³g;öÄÅß/¹¤SxáâêUU¤§³f 7ÝDv6÷ÝGCƒl&ÀN«E§ÃËKv’tlDéÈ`Ølxzrã²nH«%1‘à‰'\äÖ¿º {s3¼ð½{c³‘˜ÈرãçGSäåñë¯h4ÄÇ“”D·n\x!={F` ëÄ`fÍ’ðm±àë˼yÌ›GX˜ûrnMpSnG®p) |ü1?ýÄܹÜq‡l§‚¸ê}«ö'qºEû±çžãÜ9<þ˜¢"§uº#sÒ»·ä¬[3¿Ž¨­ÑÐÔĉìÛÇúõdgSR‚·7 ŒC÷îX­ÜsUU,X€·wǨíh7ßìÚI' €yóHI¡±ÑM|kÓ騭åÊ+yðAy¦Â bÀŽÁÇÇi3ä­VØ¿Ÿ;ñò":šÐP `Ü8ºv%9™˜fÍB§ãñÇåNZ‡(ÛeÀLJ.]ÈËk¯ÁpöÅM^}þ¬¦²cFÄ«ÑÈ+¯pÕU²A»‹WÛŽî’@g›=xã vìࡇˆˆÊJŠ?+š~9&u(^^z:Ë—3gÓ§óê«l܈ɄŸ>>èõX­47 ó%âx{óôÓ\}5FcÇ)ä^ fÏ–YÞ­ýÖÛncÀÚóv5ÉJ?û,ññN-~ÄÓ§ŒÅÒ&ò*šSb<>>øúHa!z=cÇ¢Õrûí|ø!ùùNd'×O~~ò:wú ñ 5Š—_¦ àüÖ4ª©ð­Úÿ§[¼½§N1kÏɵŸ£)® v>/´Ö® ˜Lœ9CY99ªl¡ ߪýá àÓO™:•õëíâ®.(’en•½Åyï=¶oçž{ðôÄÏ%X””ðÍ7<ü07ÜÀܹlØ@~>øúJôtiä¨Ñ`21aþþv²Bøà¼û.ãÇw€à‚o®·ÛœEU]Ä•WRWç~W‚~¹â n»Íý`µâíÍÅwöú‹kÕÐÀ}÷ñÆ„„ÈCïÞøú’›Ë;ïpýõ<ñû÷Û‹9ÛqÆÅy øVôxÛY3 vK€þ”)¼õÇŽñùçôéÃóÏóí·ö#ªö§0•ûþS˜Â{æçóâ‹,Y"á©5[ª¼½¾¾çJü2„>⦛HM%7—ìlvïfÛ6 ©¯ÇÇG’¼nÚ­Á S§]ø ›ÐPÞŸ»îâàA÷̵p½GŒ`êÔöf //|={(+Ã`p‚-‘µ2`Ï<ƒ·w›s0~ËÌ™ü㤧ÛËS ët„‡ËyBLÌ ^^ŒÍ¢ElÞÌâÅL˜ k”Ä)ÀíxÅ¿t:–/ç†(,T\…oÕþ?a·x“?ù„iÓØ°ÁIX£Cóôì˜ н;µµ®Àáv·\`ŸÚájÆŽå•Wðó“ì‡VKc#C†0mZgão¡ÆŒáÆe]~}=ƒóøã2ó½3@HãÆ¹÷»kkéÛ—%K?Þ v‹Ÿãã%|·Ös­ˆääð÷¿sà <õ©©ÒI×hðô¤woYÖ/x€Õ«Ù±ƒûî£gOûÒ§­‹ßÜìêû¯]Ëôé=ª"¸ ߪýÿÀîÂB»î¢¸Øž©Ýî0äâ½tfÜ55,\Èõ׳d MM’ðò’7e¥?m+VpÅ44`±´™j­Ñ`6“”ä¾\³õÆV+—]ÆK/¡ÓIßY£á¦›ÚL8ik?:wßMŸ>TWÎK/Ýmâb—^Jx¸“-¼ø‘#Y²„þýÛtä…*Kpp{wGÐ "ò´”O>áºëxè!¶mÃbA¯§Gl6&Näƒس‡ ˜:Uò9J}V;çÒØˆÅbÿU ø¡C\}µœøÕ„B¾Uûaws3›73|8Ë–Ù×Ôâ{'Í`h3óDqº›šøùgn¼‘¿ýâbì¹Û>>vç]YæÇÇóÁ2‘C$›»õ…6¬³è)ŽxÝu<ÿ<€ÑÈ!R'Ë‘pùR§J¦yK 11<ø :<ÂÈ‘2¯ó4‰‰Œ-ƒ~‚¨«cÊ/&!¡ƒà§øx‡åûbœbf5›ùö[Y³Ø¾+¯díZÉn'$8ÕIu¦¿±ÑUÉ] øÙ³\wŸ}foÓ¡š ߪý_7ÐÔDI V+×_Ï•Wâë+ëh”’Èé øŽÒÕ­Ù’”ûï'% ¹%:8Ø ×áãðx1}ûRSãê ¸ôñ¡gÏó˜iÄo»ÇÇj妛 ´Ó»n¿Íâø%æ’‹/æÝw¹ñFûœ§ŒÐeh=ƒiÓì %êë¹þz, 2²SÚ~ƒÉrÓÎÜe‘ÕîéI}=V«$y¢£ñò’Rkv»ýg¦¡ÁM#¥4÷®»xçû™ªößcjÞ÷v¯½F@óç3u* œ=ËÑ£|ÿ=éé?nç¾…?ÞVŸh$æ²~”›Ë§Ÿòõ×TVâë+s]^{7‘C%ÝeÜ8–/çÿà›od›eTMM„†2~|Ç̉c¨Ø̘1NÓ `±ÐÜ,UÍfil¤¡³™¦&™cµb6ããÃØ±l܈NG—.DE"»=´Œ‹Cm³1j}úpò$z=÷ßÏ£JªÎø¿ññnDfÚZpX,ôêŽ÷2cÞÞüðóæñòËÌš…‡Çy‹ÁÖÕa6»ñ¯Å~,æÏ'/_”醪Ҭ ߪý›±[£aáBþö7fÍ’€èãCŸ>ôéÃ7RVÆž=œ8Áš5œ9Cm­¤;Ù?G~ÓÑw¯«hŸöí·|ú)ééx{Û3Z{mþþî#ŸŠ'Ûµ+o½Eÿþ¼û.eeváÖ–bcéÚµ½Ót!‘EÈ.?ŸŠ †çäI>úFz”š-, Ö¢YOs³ü£øA£¡¾ž¹s™0o¿åÔ)"# Àß__¢£IH &†À@<< •Uþ.çÍèѤ¦òâ‹Üu—$C:‰t>>„†RZÚ^¿ØU]AAÜvwÝEl¬ :ºSKUSá[µóÀîeË$—'=hÇ&/ááLŸÎôé<ôyy¬]KJ {öpîœÃÝÖKY鎨T—lÞÌ¢EìßVK@@›n»˜DgÈvèAãÜy'ƒñüó8 è››?Þ©¹Zë–câ{}=õõ;FFyyœ……2v'Üá€4êê5JÆî®ºŠC‡Ø»W†m;¤’éÕ‹‹.’W¦kWFŽäÜ9× ue"šþˆ‹o±PSCM õõôéC|½)/žÁ@I ÷ßO~>³fÏ„ >Ì·ßòóÏ”—ã鉧g æ5Ù˼ýWÚ‘I()aûvÖ­ãê«?žÍ›9s†™'ŽÕŒ ‰«ÄD¢£žW]ÅÁƒ9ÒžŽ«X+\}µS•¦èìsá…ìÝk×h »-Ù93&Fz¦}úàïOy¹Ì‰ôòÂd"=Ó§ñó£OúõcâDºvµkçŠáu튿?eerë­Ü}711roÝ…~¡^ÏÊ•9ÂóÏKÝÖn¸ ¾;_¤*®ðÚkTWóÆç­O©ÚÄÔàò»OœàúëÉÏ·g˜8ZYY{ÎZkžàéÓÜ}7[¶àé‰Ñ(ÿ8|8ÿ;_ÍÝwAuµ]`Ä­) JmËÑÌÎæã™;—> #C¦Z¿ü2ãÇc4vv9ïéÉÈ‘®[qÇøùµéQ ×{ð`.¼ÐÍQ.¸€ØØ6ÓéÜ;îqýTöŒw‹þõõÜp3g:}Ü` [723íãqü.$ÈÍf`ï^™Q>~<ƒÁ”)\v7ß,o\ç=âvšmâÏ\´ˆcÇxê)†wºq.Î{[å¦Êöøøøqôï¯/ TTœ_Û6ÕTøþ_ÄîœfÎ$-Í}»ñÚgeQQÑfýKkcåJ^|‘ª*üýij¢®ŽÂBÉ&;Üzõâ¯åúëùî;V¯&#­V’¹Š¿©Ñ¸ŠÍ:f¹™L=ÊúõìÝKm­TðPÜOO‰¼!!<û,Ï?ÏáÃí!¸¸3FÒ5.EžZ-×^Ë¡Cœ<éJ¡ð7Nºí­g­– .à‡hlt³ÎÐ騫cÌî¼S:³Ê Òëéߟ͛ۼƒbl"’YQAi)û÷ȃrõÕDDÈBÖöE¦\ˆ/¿í‹^‰xæÞ½ÜvóçsË- òƒBªEdòˆÑe¶óð Oúö%2’ädÆŒ¡kW<=íüϦM¼ý6ï¿/u²T\…oÕ\}(Žsç¸öZNœpÝŠÈ2è±øè#^}U–Û9ÀÆFòóÝÀ„€•øxy„n`;ý–“'Ñjñò’\°V‹‡‡+pµµìßÏÆ¤¤P_··tEÅ>­Vüüì% 6ááÁSSÛCp«•>}$:»TBÚl„„pç<óŒ˜2ž–|}¹ê*ùA¸[öîÍ!lÝêztq}ºuãÁåÜãòñè莋>zzJbÒ$FŽdÿ~¶lá®»dò{çðvŠn\¨??ŒFž}–}ûxê)êê°Ùœ˜¢®]éÚ•ÈH† cÔ(ÂÂˆŠ’2.ûlnF¯'=>"&†§ž²3㪩ð­š|Ûu:òó™=›Ã‡;ÀnáO)58í¸c ¼õ‹IúBìS§£¾žŠ ÷Œ² îÒ…ûîcÆ Ö®å›o8~\v (ìH•”–²k6pæ ‹ldìR·iµlÏÊà-üÔ)7,¶(—ˆ`À÷0'v2bW^É—_ÊÙ‚ß’s¦Lqïz;ºØ'²{·ÓqE¤ÔߟÇ“¹­õ»CC ¥¦¦A­–¦&)2c†ìW¹u+™™\t3gJ¸ìŒ3ÛøVœSýé'NbÞ<.½”æfüýéߟ¡CIJ"<œÁƒéÙÓþ¸Ë²@T®j4¤¥¡Ñðê«ôíËÕW«¸ ߪ9Cmi)·ÝÆîÝ`·RFxæ ƒ¹‘”ìÝ—^bÕ*Yé§€©€E‘ ì}”Š <œÛnãê«Ù¸‘o¿å—_ ÃÃCn“ŸÏ–-lÙBNެÅÉ$.ksᇆ:%0ˆCÄÆòÌ3¼ø"ééRÊI#"HNnïêiµÜx#))RªEô~Åñ^ÛšaÈ'+Ë©šÕÊÝw3lX›™ÔݺKi©}Âp;*“‰À@æÏgÊ{ß__ŒF¾ü’Ý»¹î:¦N•w§ýq¶_3éB(µ´`6£Õ’‘ÁÊ•$$ðè£<ó nZ,9>àêV‹º¬Œ­[±ÙhldÞ`î\>úˆ³geq¹Û:FeF “±P—(bb"O?M÷înTÂm6† “âˆm j[­„…qûí²&S§Ãdbüx{ …¶ÎÎj%(ˆ ì}pD×Ê+¯äŠ+Úì=o³áëKXX{š'b}Ç /ر[¡§ôz|})(àí·yâ ~ýÕ^OÔÖdÐV›yeT‚Ô¥‚ºç~øO?%4”õë¥ —˜Û÷­¬ŸÄW;\|e%99z=¹¹Üu¥¥÷SUMõ¾ÿä&ÞŸêjx€µk;…ÝüÖÄ@¼Q.(#v˜šÊܹ¤¥à>ø©×SXHSSÇ‘(G÷ócÆ F¦ªŠ·ßæÀBBdÖGûÅ/+…ëç–ÂîÙ“§žâoãìY§RxŽÁƒåÇÛšiÄßÇgÚ4¾û‚‚¸úêŽ 2ÅÑ/¸€Õ«©¬ÄË £‘Ñ£¹ï¾Ž/K×®n¤t•ñ μy$%9¡¼ÂM‰¬àÈNŸf®»Ž^½ì­Ë¡ÝzßJ‰(òðÉ-cÇ2nœTô xýuŠŠxùeyM:Ï{ˆwí’ÁO¡´³gÏ=ÇÂ…Nn»jª÷ý?‡ÝBÈtþ|¾ù½¾³*…‰ÊÇî·â×mÛ¸óNÒÒÚˉÖë).>¿ÚAD¬^Í›oâçÇSOqÉ%47wà:b‹Â¸ ‚÷éÃO#SA˜H·nc„p$oº‰ž=©ªâ¢‹HNîv={2`V+& ²©q‡7p ›ŒC¦õõLÊ‹/’”Ô^ÿI1f±dY·ŽÇç£(+sb®kù'fúÆFjjð÷gÚ4^{Õ«yýu®¼Rb·è°qê,[Æ+¯tœÁâÖvï¶Ç9DMæG±p¡Jž¨Þ÷ÿ6v75ñÄ|úigýnG¤.-¥¶–€;pÛl|ñ¯¼Bmm{Ø-HXñq‘×á±4ÊÊX±‚ï¿—‚'Ý»ó üðŸNm­„¡¶pÁQ̤÷|Ð žx‚W^‘´r]=zÐ¥K›`êx8«•èhfÍ¢ºšË/—µN ¶ÓÒ˜:•-[ðõåÁéÖ­Sþ©È«lRïn±ÐÒ¬YÜ¿÷Ö/­¯ŒFƒ¯/55|ú)¿þÊu×1eŠ=YS|D$(λٌÉDx8rÙe Æ AvÞI ?Š™cÿ~Ìfüüøç?ñôä‰'Ü,ÚÚYÖ×ËužË£ûÄ$%qÉ%ª8¸ ßÿ«~÷ÓOóá‡öf•Ž ¸“?UÞO /³g¥ç(Ðÿí·Y°@*¶üÔ騮îxÂP^òÇY¸“'¥^‡Å")à›n¢O/–=Õܶ-ÐìááÚ_Í­>l?Îë¯SQ¯/ƒ»ëÖËv¥šŸ=z8‰vh¢dé ¹à‚Ϊx{{%몰šÍx{sÛm\}›!ÓvÜpÕÌÎæïgÛ6n¸áÃí©‚17™hjÂ` W/ÆgÒ$†µ'ó(•2IˆÃåçKÙ///>øæÍ딌‰ØàäI޵?u ¬740w.6˜¨†1Uøþ_2áw¯ZÅ—_ÐA  ã§WâÑ¿¿ ¸½ôË—ãé)s?:´–êë;~{M&¾þš¯¿¶{ô¢‹e†!Cxí5>ý”5k0™ðöv϶{zvàé+ÕC£Góè£2Q}È×*|—S®he%%%TV$%±~=MMxyI'Ô`@§ÃÃOO¼½åw!•%¾{{s÷Ý’znÝ´×å¸â×à`’“9uJ"™L„„ððÃRëwäÕ‰ÓÕ˜ûöqü8_ÌŒtï`4RSÃÀ È•W2p ÑÑNlx¼J5ƒwßÅ×—{îéxœâ"äçËB|—4PŽŒ x€U«dŽJ‚«ðý?áz77““Ä üú+¥¥”•Q_OSUU‘›Ka!ÅŞė¨Ëp´ÚZ4 yá~üÑ^ߨ™™Àb¡¨¨=àÖhÈÌdÉvîÄÃÃŽË655vªWÁ?ü0C‡²h99ví@GœÝÂèD¤Ëjå ™;—C‡ µSS55ÔÖÊ UXHQUU˜LÔ×ÓÐ@y9ýû3l'N°w¯°òßu:ùÝÃCê{ˆöÁ‘‘L›Æ–-tëF@ÑÑöjCG:‡â&­–˜‰bF#ññ<ù$tÀÕtæÜAVWýðûö1mS§2x0Æ1y²Ds—!µåÔk4¤§sö¬ŒÄ ¯Ùfãµ×ðöæ–[: ÁÅÆ{÷¶9ýëtlØÀÓOóæ›ö‚,ÕTøþ“Ó&ÇóöÛ,ZD@={ºÙLô–NzE%%äåI´V]ÍÙ³RëîÁÙ½[ ˜ˆe{‡êBÂwÎÍuら_[Zؼ™?¦¨È©h^¼·ÂÏu$=4Ù¾àÓOÙ´I:zÊG÷Ý:éØ-É.3y2½zqî”—c4RUEy9ÕÕ²ù€ò%x½úõ#$„)S8}Úžy¢|Á)m®¡¡C aóf*+ &.ލ(bb¤¸ R,êâ)‡‡ãçGm-C†ðØc$$tìvÝ—b0PPÀÑ£ôëÇ”)Rá@AíN’ååÔÖdŸzE˺_ÄË‹ë®ks¾çÒÜÌŽíM6: 2x0·Þz~ÝãTSáû¿»æfÞz‹¯¾bÎÆŒ‘®œ#x‰†gJW­¨(Ycíh&ååTUÑØÈÔ©„†R\Ln.••²ÀR¸hKýUé™Ù:w¥¼œO>aÝ:¬V׎6b‡Bï°5ïËÓOӯ˗SRâ´¦LE[×Äq%%ddpò$ƒ“—ǪUèt47£ÓÉ/Ç–íʧ,|}éß_ò'Ý»sú´]Jq'‰rAX÷éÃäÉøø”ÄáÃ46rì˜Ô¡õõ%(ˆädââ'!Azåâã½{ããÃ0ožLïR;D7%°©‰¤$fÎdÚ4,~˜iÓ¸új§E@‡»²Z9vÌ5R4>nnæÙgñö–îmYq±«¸‚˽‰äóçÓ³'£G«Š ßjøÖjYµŠU«ÐhX¿ž±cÝ/~Û Z*?ˆúÆåËùë_yäl6**8|˜¬,àÈŒFêê$ka08¹ yRZê ÜÀþý,^̉x{»É‡¾¶(¸oM ·ñškè×O6>VP[dãµåk¥¥äåqà99R&wäH&M"%…Ü\Ù=¹õÂÂQä$"Bf2t(ii\U±8˜<ÙžK³oŸ¬?ÿ5©­•¥DENÏž$&Œ¯/÷ÝÇøñrlq‡Û‡6Á/74È®ÓW\Ad¤dŸssyç¹ñÆNqëbƒ†RRܧ» Ô×óØcxyqÑEnÆ/ö°s§ÌelGÿ]«¥²’9søé'bcUWáûÏ‹Ýyy<û¬¬ÂøñGžyF¦Ü¹¹ýUà—ÙÌk¯ñùçLœ(›Ž‡…IµþÛn£ªŠS§Ø½›³g9q‚¼< ”‚öUªì”Ð¥[c#+WòÅÔÕÉb·/­ÍÖf¸òž÷ìÉßþ&c³õõhµ„…9±Êœ>Í™3?Ni©Tž2 !4”à`fÌàÃ;.;´X4È~1‡gëVÊÊÚ,ÞçÛ¯ŸÔòÖhvjÒÍÓà©ÒÓÙ·¢£™>^½$ê9®Ÿ~|‹74àëËWpíµ’RÜý™345¡Õòá‡TWsçî³[[}=eeNЉŽ.Ê”y„E‹dÊ#‚‹¤¥É¦툮 %5•'ž`ÅŠŽ… TSáû¿Ï.¼öYY2+9;›mÛ¸ì²ó.„ÓjùäV­ÂfãÐ!.»Ìî™>>øøÐµ«ôªN¢ €={8p€òr il”)Ø44àã#£”ÿü'{öÈ(e;½o¬V‰ûíäÆÙløùqÛmôéÃ’%8@D„$sÔÎ뾀 Ž£¼œº:<=ÑédºHc#ÞÞa³1p “&±vm{£bŠ ö|˜°0†å§ŸÜwSÞºp<ÅD¥ÑCh(••nHs°Â+Ó^Pññ|ù%ÅÅL™ÂÀN=‹;7•]­–Ñ£¹þz†wJW×h((팵Z>ûŒòrî¿¿ºFŒ!5•š'®ÉÑZZðö¦¢‚äã>ܾC±Šjh)ƒìùÕW$'óÜsÐUSáûσÝ:?ÿÌ’%;ôzÙ¹“K/=¿ýhµlßλï¢×ãåž}”–a¯‹sdZ´Zúõ£_?Ùl>7—½{ÉÎæÀާ¨ˆÒRââØ°¥KÉÏ·K¼¶Oß[,vʾ-)±åˆôèÁ¢Eté"ÆççsèYYœ=‹Ù,él‘3#-v+f±b¸ì2ÒÓÉÌ”ª&nýè¤$é±*¡Ô¡Cٵ˩²ÆqxMMŒé¤ùCP¥¥î_ u66Ò½;·ÞJX ÙÙ,[Fl,Ç3r¤÷ÝÇ’%ôéc¿ùù2Ũ3Eöbnkjâ±Çè×OîG­åù?6õúþ§àûí·9zÔÞ¸R|OKãÈ‘Nu;©¨àÙgÉÌÄÇG£f3[¶´É«ŠJGoÐaaôïϤI´´0r$·ÝF—.Ô×ËU|[2 ôÔÕIîpÀZ-åå¬ZEq1þþœ=+é%<ØúÜů¡¡r.F2`S¦Ø¥]f5ƒ¡C]W:cÆ8)Á*ãojbÔ(zö´Ã¥øApÙm‰è ¾øæ›éÞ]¢•ÒRdûÔÔ°v-ï¼#›–‰ÔOÇIT)¼jh@¯çškxûm°°6©óŠ rsf ÁegóÔSìÙã4O¸¸ §O·Ù ÎÁEÁç}÷‘žn¿7ÊËu^KÌÜ\ÒÒ6¯¤j*|ÿ7a·VË/¿ðÞ{ð´re§Ô'¼ÿ>Û·ÛõLÄ”éÌæz;VTWUñÒK¬[ÇСÌËûïsß}ôèÉDCC›ZKëêÚ“»R¨±‘­[yûm¾ûŽòrFæðóë¸OFCd¤UŧM£W/9Á¸ OD„›N1@r2 N>»r†„0i’~6.Î}qZZ˜>]‚*½}©êêøõWÞ{ Ø·úz'E“‰æf.¸€×^ãñÇåLÐÎÚ«¾£Ñ ‚WTð ¬^í¤î‚ƒ$Nz:žž-Áõ÷'#ƒ$'G^™cÇì…Nü<<Ø·gž‘•ú*‚«äÉ1v‹Œ‚gž¡¡Á½$ÈÞ½¶'̤À÷Š|ò‰S[^ᦧsäHe\vU[Ëopà€¬Æ ¤kWn¹…K/eß>6làäIêëñò²×¹'¾[—ü(´É±cr?6>>²ÖfØ0l6>ù„úúöŠû5W:Èf# €k®áý÷e/e0 ôé#ÉâÈߟáÃIOwÊ.onfÜ8÷ÒT~~SYéĹè"¦NuJ2Q22]@\s>̉ÄÇ3v,ƒBK IIÜu&HýÅoYf¦ø€]»Ü`·’¶?W_Ýf¼^pˆ{öðúëÒ#vô³ Š‹9y’‘#;KãÔ×óÆìØA` åådgÛ#xaa\~9]ÄþýlÞÌTWãé)¡Á±RÑE/ÅqíŸ›ËÆìßOCƒÌ$1™¨­µ§ôi4,YÒ‚+UKŽÜEŸ>\r ß}ga ?TpÍn¡PdŠ€$ÐÔD—.Œïꊆ‡Gq±lNï8] Æõ×Û!R¡ËÛš³A¦Êˆ ëÆ\t |ðQQ®4w[w 8uªM7Võe˨¬dî\{ pð Ý+w[죔¡Š¤@! Ci)?ýÄäÉÜxcî۹͆É$ýÁUøþo¥MŽáÿh“@¨´nW^é~±“¢"ž{ŽÊJ×vb ó»u+7Þ(‹ ÛG„ÆFÞ|“-[dMM 2x°MáéɸqŒÍ™3lÜÈîÝ¡ÓIy&ÑýÝ1X9hU;w²måå® ˆuuX,ÒlßÊM.Ž­â*NÊéÓ²µ¼ ˆúõkó.„…1dk×ÊÚlLœHd¤ûöóDFºv¬7›IH`öl‰éŽqE½¾.X€¸ÙLu5ÞÞÔÖRQ!y¡N²É¥¥$‰®ö«WSSÃ#.o≲D^FZ,47;­Bôz¢¢HH/ññôïO\¾¾X,œ>Íoü«ù{÷b0¡"¸ ßÿmØ-`î™gäbÜí"T¼N6PY)_¼Öò#uu<ý4©©ºß‰^ωßñxÞy‡õëeouÁää`29A¿ð ú÷§®¹†mÛØ¾³ge‡jŽN·ÉÄ¡ClÜHv6:kã4áò;*ŽðÉ'448©£nÚ±©± …âëËÌ™äçËèŸÕJ÷îN-4]¶þ¾èÓÜLb"\ПeŸuÓÈìÙDE¹A|·2Ž&ô²{ô­$–,aÇ®¸‚Ë.sßÃÞÅ**¨®î`’çâïÏöíTUñè£ôèÑH~>R‚ÜÏ‚ƒñ÷':š¾}éÝ›€‰‰q]è%%²šwÆ ùœüŽç¿¥…W_eüx}TÍBQáû¿Í4–.eÝ:™%Ö–{%l×­ãÖ[Þg…¬øðCÖ®m»ÎVT°mwÜá”Öï¿Ïš5vA?N^žTDrôshHL$1‘«®â—_غ•S§hh¢ƒÂ;;y’9zTJSá.SXtFv¡5‚;úàJ JQÈî‘““™:•o¿•TÆ AmöSziöîÍþýxx0y²¬j 7{ö”Ý„ ™ž/4ÍÝ~¤õÁåÐŒÁM7NCÅÅØl¬YCv6×\#[0·s˲³)+sŸ‡Þz Èѣ̛Ç3ÏH‘ÅK/¥o_Âà &)‰„)¿åVKùY§cÝ:ΜáŸÿdìX÷+•  ‡±a99Ür‹×D5¾ÿ ¦$h¿újǬN‡ÅÂŽÌžíZµ¬Õ²f ‹¹áL\\¼ÆFŽqï()ØýÏòî»Ò騪r…oFX¼Ûaa\s ]Ä‘#|ó ÕÕX,”•±y3»wc4âéÙ^{IÑáÁe·Á—,¡¡ÁŽà--RQ„¶«Ì§N%#ƒC‡ˆ‹#6¶£g\Ϙ1ìÛGr2#Ft°qp°Ô´Ù°X¸îºö”˜Ú‚oÑyÇfcêT®»N®EZZ¨ªB«ÅÓ“'ÈÏ窫?¾½¾šeeTW;«[HÜ\¡Þ.tµrs5Š¥K t? :âµcôRéa½nœ×-â…~ã"|‹…“'ùö[x@MAQáû¿‡6inæ¹çÈÏwŸmâhÂÞ°Ü\{ãñ=%…瞣¥¥ƒ Bpÿ~rrdo\ÄÅ`,–.eåJ7Ý&…“øë¯LšÔfôÏ‘Qñ÷gÜ8†—Z¦ŸNa!~~’phçmi¡¹Ù‰‡saQø-ÙNÃAà\}5§NÑ¥ ]»ºv)jÍ-$'Ó¯&Èq:F]jj ââdçqã¸øâöNÊ-­!òʽ½¹æ¦L‘ hH-2Á½‘+HKcæL§`¦ã`**Üw/RrÉhi!<œøx&N$9™þý1›yÿ}¦M#6֩ɽãÎÛ ¤¤pà€TKÿâ &Mbܸó`?”=ß/ÇùÁÌš%sÛUüßj*!õßß/•N;̺Û³w¯=~¨ÕRZÊóÏS\ÜqꮈPåå‘™éJ¿ˆý/¾à‹/0Ü'0Øldgw\†#2ÅHHM%"‚‰‰ˆÀdê¸]}K &“ûÿÎ]wáã#«rD[¯ö©^›¤$®½–~ýäGÚúÿõócÆ  ²{¬.^§RÓäáAr2uuôïÏu×É‘´uj­á[¬„¸ÿ~.¹Ä‰ÕÉ͵Wð‹¤ѵýÝwÙ·Ï>3áÐçèÌû!Ñ1¡9#²'GŽdÎþñÞy‡™3éß_ÞÍ5kX°€êjI•(¥Xí·rˆo¿•wJ¯ÇhäÍ7e·NºÏb³Ï?§²R7-eËÚœ_US½ï?v YÁgž‘âyšCµX­¬\ÉìÙvQ‘×_gÿ~:•x+ÞÉõë¹äû{"à`Õ*–.E§s¿mÌ IMå‚ :uv,_ÎéÓôéÃôéôéêUœ²ÏmyîUUääÈ”ŒöóÓÒøôS)áü8½{Ó£ù [·²~½dÀ[ûY‚Oh«µ¦Ò¤X£añbe¸¬µ&8ÈÜ;£‘ôt4ºwgçNÌf‰×"INùßRY"#éߟM›8{<=ññÁÃ//ˆˆ (|| ¡KîºK6“l_VÉ«§`63v,×]ç^°¾ÞM·ð÷[Zøé'22¸î:ÙrS„=EŦ`H„Æá¸qôêEÿþN*(Êðt:JK9tHNBk×Ï7v¶žËfcÓ&òòœºóxz²d ãÇÛËM;ô$¾ý–Ü\û#§Õ’Íòå<ý´ê€«ðýÇv½×­ãÓOh·²sŽ+w¥sü¦M$'³f o¾‰^/_¡ÖÅë­»7:8'‡½{¹ôRé…mÜÈ‚X,N™yn©sƒ”®¾º=*†”–.¥ª ŒFJJhnF¯ÇÏéÓéÙ“ï¿çäI 7n¸Å‚ÑØÁêaèP,¾úʩťÅBCF#99”–RYIq1MM²QN·nxxPRb—ÀVÒ±•ë,<âèh"#¥þµÙ,…€ìl¹™§'²PS¤…†:¹®­ÁKéÚÓÔ„FÃUW1}ºt]±[¤l–•¹¯È@ïíÍ™3|ð—]ƤIxyÉÉX§cð`úöeìXºw·ß Ǫ"G?~œŒ I¸éõ,[F÷îŒÙy-\QÁ?:‘u"¾¼œ7ßdñb§Ìw·’åùì3×IWLÌ7ÝD·nj¡ ßT쮨à¹çhj’Kòv$™\ÌÇ__23)(àë¯ñó“ì§pZ…¤‰å •©šb!_Uűc\z):;wòöÛ45u€Ý ÒÒd’C[­/wìàë¯åò_TlgeQR";öj4ôîÍC±a›7Kýnú ·´t@¯‹-GŽÄ×//L&òò¨¬¤°¼<)§%Èq½^z¬aa3x0NË —H¦—±±hµ$$pü¸¼Œ­Dônnn&(ˆÍ›e6NBqqDFÚ'QÇÛ'„>Ìfüý™1ƒÉ“Ý ¼"X\ÜfŒ8wooêëùê+Μáºëhhàºë˜0nÝìmBÛé+/òS7o–ønhà­·xýu;ö·m#3ÓUåJ¤‹»çí5´cX»–ãÇåW`]§ãÜ9>ý”çŸW¡B…ï?$|k4¼õ‡vÀ&êεZ||ˆˆ :šn݈Ž&$D:}ááDFâíÑÈßÿNc#µµÔÔPWG}½$s…˜Tm-••’@ݼD5Èüݾ;ïäøq^xAª9;jð·•›!ªKŽ¡kW7'e6³z5ëÖÉs’:”—cgxýü˜9“Þ½ùî;ÒÒ0ä*D8¼m….<Òh0ñò’uÛ••öYJ¸¨ŽaF‘ÇÒ£‘‘îuºsHB@hh{©Âm¿ðBºv•MËNâøqBC‰Š¢O¢£í„мICIIÜt“½òÓ-º5485‚hký!æûÒR 6ŒéÓío¿¯¼0Ñ#T9ŠHqÉËcÁ^|QÖÙ¶Õ™¯±‘ŸÆlÆÓÓ é§Óñá‡\p½zµ¹­“‰Å‹Ýl ž™>âÖ[‰Wp¾ÿx®÷/¿ðÍ7 LDøúFt4±±tíJx¸Œ• ¼v›2¼v­”èk߬V©°.2”…4]M &YYôïOA%%öw^¯wZ¸¼œF#©©\~¹+ªÖ׳b¿þê&qÅfãäItâ5úö%6– Ø´‰ÆF){b±Øe]rcįµµœ:%ÄÜt~~ää8¥<;–q èÌFh(ÉÉö¾­¯U÷îòÊûû⾃šÈžNL”(,"½"_³ºšÊJΜ! €ÄDâã%‰!(šþý¹÷^÷5™Žf4ÊnËn[„v-bb˜8‘ (.æã¹î:úõ;¶a÷nJJ¤n»â;ûø°gŸ}Æ´÷ô¦¦²{·ûsQUPÀ{ïñöÛR;ÁíN6ofß>WeMå~³hÿ»Ú“^…ï?’‰øRHß}GL íÕã9®‚A¤©‰+ع“k¯eÔ(§GÜ%õB«ÅËË}v]i)›7sçX,deQUEV))SU%û¶ˆ¶dŠx¬†^/küÑ ¡½l‡Û»À8ž²ÕJV–,Mté3ÀuבœÌ?ž.ëì}:m¼3gHM¥¼œæfðôdêTJJ¨ªrﱊ³P(…8r„ÆF7  Õ/wJd$EEnütP#GÚ;H(7HÀ´Í†ÑÈ¡C?N` II$&âçÇ_þBHHÇx”—ç¤*ã8<1±ED0nœ¬rÒÒ8y’+¸ûn’’:˜~æ×_ÝH Zæë¯éÚ•«®rÓÓRüºf µµNÐïhBü§Ÿ˜8ÑM3¥4lÙ2,÷A{±ÍòåÜqÉÉ*®Â÷Ãă(ßÙ³íl]…ÑÚçrÜömìßÕ*¶UÞ.6ÝûöeÐ z÷3†ë¯—T@v6²MZs³,dÕ’^^deqo%[ =Ý}ͧÀµŠ òó]µV7|à@ºucÝ:vî”]Á\Ð_$,fdȰžXˆj”ØXÆç§ŸÚìT)²DÄHÂÂèÕ‹œº© —6*Ê^–©ÕÊŽ‘­wØÔDŸ>²ŠÝ… P dFVW³s'55 Dv6>>r*m§Î(7×µ\Hé+ÀĉLž,Ç)2XöïÇ×—‚>ù„ûîs/oëb©©dg»™™”™rñbâãúÃ)vî[¶t¬.k³ñþûŒáÚ§MìððaÖ­sb½[¿&¥¥üóŸ¼û® ÿS'À‡ëm±°z5=$E-Ä“*à.­K'Ä£ßÐÀòå˜Løù±m›l Ó¥feoBÝð§Ÿhjâ‡ìùs‚° dôhfÏæñÇyóM>úˆGåòË6Œ  êë%Û®DöRRX°€ŒŒ6ëõ|——““Ó&“k³Ä72g R"\ø›YYüø#ŸÎÞ½TTàååÄØ šeÀ ’In—óÂû#éÓGv rdt´Sy\œ ½ºìÍÏ‘#íÝsÄê¤5 ¶XèÞË.£¢‚ï¾ã»ï¤*w[´²ÍFuµý2 Ôk…±c™?Ÿ[o•Ø-v’–&ëu½¼8wŽ%K(,ì õÕʶmnzY(Ã0¨ªâ½÷()qÓÛaÃγ礷uooÒÓY¸Ðu!%žð%KÚ€ãƒñùçœ8á†`QMõ¾ÿ?°Þ¢øÚµTT°`/½ô{&€ Ø»W6ç5™øä.¸ S¢tÊX[˲eTWãçÇž=9"uY]ÞU­–ÈH"#éÞ+®Àl&#ƒ’²³Ù·3g¨¯g÷n¾ûŽÆF7€ØÚ .(h/'0hQQdgSZJE))²kšh N.³h èõŒGAºC@¶ø¬¸>"E$-ÍîB ÌKå³QQxxÈÔ …#jnfÄbcí—KÀw[SuHW\A@……èõœ9ÃÙ³ôëÇÈ‘nÊßÅ­©¯—û÷×``À¦NeÀIˆ+>²ÕÊÉ“RYÌÛ›ÌL–,aÎ÷ÂOâ/¤¦¶×MHœ>Í{ïñôÓvAsQÍÿóϪ«…<+W2~<—]f¿\ 'NðÓOÏ1";ëŸÿäƒTðP½ï?|«VÉ„â?äĉó®0®®fÅ ÙUVŒ{ö°~ýy„w4Ö¬áÐ!||¤êК5vMWÇ rGVW0Èýú1y2wßÍ0>¥¥¤¥ÑЀÕ*+³Û!p N¢¶¶Í÷Vù{T]ºŸÏêÕœ8Å"#`­óa¬V ߢÍñĉ2„è’Gì(s*Ð|à@§:Qê"ðTAyOOI¹8ÂqXÇ;¹nC[==¹øbºv¥¹Y®'< )°»x1••m^çC‡(.î€ýŒ“Ht¼˜û÷“šêÄ;µó¸Š$wáÅãóÕWòèPàA£á³ÏHMU›aªðýp½ëëY½Zz‹ÕÕ¼öšû U;È»y³ä:•*5«•O?íTŸoq¬Ó§ùæéQŠ·ô×_9v¬MRùR’ðL¤¥‘’Â=÷ðì³Lž,eN•ávQ,:WUu0¼†¶nå›o梋dvy;ð­ÈÃŽáÔBXp°Sy˜H×®’lQ(A°(Ûˆ¾.kÿ¡Cí[~Ë l‹ ?ž¾}ÙªF9G//jjغ•/¾àèQ9 qy+*¨ª¢©‰èhn¾™ùó;ÖÎT¸èÌJK |Ä­9~œÅ‹]gJÇËÛ–b‹yzòùçlÛ&÷ÓÒÂ÷ßc2u¶3ƒÌÑ£|ô‘¸+(à³ÏœVQíOF#| ’'*|ÿà{÷nöï—x¡Óñý÷¬_ß1ì*¯©aÙ2×B Ž‘šm:ïf3Ë—SVfw¾D?³~Í®:ákµœ=˪UlÙBe%={rûí<ò7Ý$u[÷/$ƒÉ$s·cÌÒ·ß²cuu””0lS§ÊšR·>…ûV8ý . >Þ• sj; øùÑ·¯œfDʳ¨Öqáyƒƒí{nn&&FJY9Æ$ZkQ Žå‚ 3Fþ¥ªÊ‰êe2üø#+WÚë9E«™3yì1.¹Ä.lÒº×fãða§ÞÊ. ¹x±ôîïé¡Cœ=ÛA²“’>/Pþƒä2ñØ1ö•JEXû_âRñ»vÉ‹öÕW’¬ïŒË"öo¾áàA•WáûÿŸ‰×oåJÉ{ˆ8aS¯¼"Õ*:tœ5k8rÄ©¯˜0ŽÏ>£¨¨cü]»–]»œxjÑolÿ~)Ñ™YÄhäË/e5ÐÎòï]»rÙe<ö÷ÞËÈ‘xxÐØh×ä·œÜ\÷ûliáÀ¾úJ–q 1<`Ø0¦MÃÃÃ}+E‘záˆh~~Lš„ŸŸâ+YƒŽ³OÙ¸¥…À@Ýœoh¨ÓÏÈ‘²žÅÑ\ Pœæ AŒoÖ²2~tœ¡$œèo¾aíZŠ‹éÒ…'Ÿäê«¥ßNí̹sdd¸ïÏ üÐ!–.¥¡Á~\‹…={¨­ubó•)Yio±È²¯º:ZZ8wŽwÞ¡¢‚õëÉÉ¡¥…†L&ih°Õ×Ë/Ç¿ÔÕa6STÄK/QUEi)Ë—£ÕÊ*-ÇJàö׬‚þVÀÿSC—ÿšë}ö,k×:½c¢­ð²eHÔ‹——³b…{ÅË‹´4¾þš‡rÿˆ‹=œ;ÇW_¹éŸ¢ÓQ_Ï?2dˆkƒÝÖÖÔÄ×_sü8¾¾˜Í8À¸qté"%ÆŒaøp²²8p€#G()‘¯«è¶^P@i)NÒÒ••ìÜÉÑ£rÁ.&§ÚZêêðócÈt:Ö®ÅlvÊì³  Jû3†Í›%« Ó¹AX (ˆ¾}Ù¹S¦{»íù rQŒF¬V’“e¡‹‰Ssô»™2ʼn\®­¥©ÉM´Pü*½OŸ¦kW‚‚dÍzûhe³‘žNy¹›¹ÜÁ÷ïÇ`àöÛeŠzq1ڣ܂_B¤P£Á×—€ðòÂÛ›¨(âãéÒ…êj¦NeÊ)Ó(è ³™¦&%Ü‹L&IÜ‹ÿŠFÙÍ2?_FJZûû8×[9R(«Wó믌«æ€«ðý7¡äðý÷RË‘NÕhxûm®¼Rê´Ó§xõjŽs_ê&Ô‚¾ø‚éÓíê£.a±°|9yynö &á€ÓæD"v»};»vI…~ŠŠØ·k®±¿~Ñzõ¢W/.¾˜C‡ä‚½¡OOŠŠ()q‚ïÓ§Ùº•¢"<<ì dÑÔ­ @¦W$%2„YZ¿íbŸ#F—ÇéÓ RÅí¹ôéÃÑ£TWÓ£‡\λdß‹ŒÃsçðõeÔ(×þÎâg¥¯…ˆÔ……qÉ%®]ÖÌf×TnÇ£46Ò­W\AM +W2aÇ·ÙƒB'Ø·¯ BÜÖÝ»ñðছðòbûv²²d)–`oôz‰ˆ kW¢£ñö&0.]ä¼¥0$ÀG1jC‡vöw”§ €†6oæÈjjHOgß>rrdè[y)ÄA](ûúz,`ĈJTSáûßïzëtÔÖòý÷nžrQóòÁüýïífI _~Ù&¸‹´Ü\–/çÅÝW¯ˆ ñ¶R³…¾f ƒ»/ÑÃ8~Üé,DÇîÝ\x¡k¦šø9*ŠË/gÜ8Nbï^ÒÓ)-%;›þý¥vÊÞ½ìÛ'Õ3\úrÕ×Ûãœ6›L›ûé'ÙwXÙRÑzu•—'R\,›µ·nO,¶ïÒ…¸8ôz©øêÖâã9z”~ýä¼ØÚ„÷-â¾¾\~9]º8]ŠæfÙº5vÛl47Ó¿?S§ÌÁƒTW³iF#^è:[8ZVí…•µˆ“fÌ / /”š·]ºÐ­‘‘ x{Ðæº Ø»—eËÈÏ· \®¤Ë¯­éx›%Kˆˆàþû¥b;PZJCìÙCFÅÅœ9CA› TƒÕ«Ù»—ñãÕ¾ÿã~ø0»wÛáÆem¸d ³f1th›ø?pò¤lúÞŽ«õÃ̘Á€NâSý?û̽¨|ÜÛ›}ûHIq£å-~ÍÏgÅ êëíü†`o‹‹Ù½›«®ró‹c0jÇ“™É¾}Ò «ªbË22¤ØzTZ-¹¹ jÿ¯ÀŽ”ÎoÉ|--N@&Î1:šñãùî;üý퉃.ùà ýûãí-uÏ[ë´h4„‡ʰamºÃbÑ ô¦M£{wûfJ¨ ¼Ü ê‰v£'2z4>>”—“›+§±_~¡¶–©SݧóÛlRï¥õBJÉí ‚ƒIN&6–²2î¼SJqµõ¹ ²0_¾àÀ޵—´§qyÂ÷ìaéRúôáÖ[å´¤Ó!'È‹.’ DQ…TXÈ®]9Bu5eeRýxóMÆŒQp¾ÿ³¦ÑÈP­ÄÃ]UÅë¯óùç®Ô³Òí‹/:HöüIQŸ~Ê?þa¯ïù^ŸNF~~t1)(Ç;µÄ?46²r%ùù®d«XêîÝËØ±nZ:‚¸NGr2=zHîÉÉ‘‘@·3ŠVKa¡¬[Q¬woÉ„ ™YÁ5»À·rÜÁƒ9sFfP´~áůqqò²xm=x__&L K'lrÜLéº9a‚ì@ær Áü:‚fñóãâ‹ÆszCZZX½šC‡ÜÔkˆ0ùù8À¥—¶÷>+yŠii´´pñÅìÚEV–Ì@pKø44P^îJ}$'sÍ5üðuuRw´¹Ù  ÿnÒ$ΞuòÓE¥ÏÉ|>>ìÞ^/³/”F‘"æi0е«äÜ[û­t,†eôh÷'b29¥¢‹ZÊØX.ºHºêâ2ž>í:§§óí·\v11NOv¶,.×S$ÏX,èõÄÄÃðáÄÆeGd‘qd2/5Å:¢Bòûï¥0¬·7{öpô(#GžG­™VË'Ÿ°oÁÁTT°y3“&ÉÁ;ö´s)ËR¤Ö&MbÒ$€º:òòÐ騫kSÏV5¾ÿÍð lÙâÚ% 59ÞÒÂ+¯0a‚LõU|“¼<¾ù¦cUBy‹ôÔÔðÉ' "õ••,]ŠÉÔfŠ‚Ë›&RP† ³Ëéi4üò 6´Yf-F»k£GÜæ{%þxø0›7ÄàÁ\=ûö±?F£,jw X ììl)Àíx¸=˜1ƒ~ ²R¦@¸t–QÒÑ‚ƒij"3“†ª«11›åG„z_h(}û’-«F•9F xs³lpüË/RfÝߟ  œxÞ^½˜:ÕÞÄÇÅÊÊ$O¢´Iëߟ‹."4Ô>Z§mÍàçæ²jS§Ò»·ý¿û÷K°6™dmzDýûÓ£II„…¹zgϲe ~~œ8Á¶m\~y§ê €†–-£²R²4âñøþ{îÀw|¢~ù…O>ÁÛ‹¶n%/ωbra~\Æ `ºŸ½{³j--RÞ@µó1Ý /¼ ^…óÃnáΛ×AR¶ÒØ7:šQ£œ\’?æçŸ;öÿÅÃìl ’‰ÌŸÎæÍòõk§Éºc#žÂBÙ;Fì3#ƒO?Åln/P¦×SYIx8Ý»»÷ìÄ»ššÊúõ2qØÏO*bÇÄHvç—¨” ’„‰Ë4Bt499X,ôïo¯%_TVÊ ääpú´ìh!|a1=hµDDн;EE´´ÈddÑÖ]Q§£W/jk9wNz¹¹QP@U•eîÛ×>é¶ž±Ž!/ƒA6¤3Æ^£ÜåcÇ8~ÜZ‹Á@]ÙÙxxÈþçÎñãÔ×£×Ó£ÇsùåLŸ.=nq#À--|ý5iir唟OŸ>íÍ²Žƒ_³†U«œ:&‹ÔÏädââ:pá‡Ç''GÆKt:jjèÒ…#:Õ ÓQ¿A£áÈn¼‘®]¥û¯zߪ÷ýn;w’šÚ©Å¦FÛo2}:ݺI-+‹o¿u#Oá"F(òçDu‰ˆ•½ó#Grü8Ë—Ëþ ŽÞMëî‚ÊÂç]³FêYWTðÅTUu,s!œôQ£Ü,lů'O²a&²ürÀˆ'2’ƒÙ·ÚZ».x‰¢"**Ü0Ùl$$0c›6a2É57S^Nq1……TUÉŒã¨(dq¹ ¸ˆæ^~~’Øu¤>ðÒµ«lÚ H VVR^Ž^Ïɓһ7MMx{KRw*T"ÃÄLJɓíê%ʽ0™ÈÉi“X30™Ø°úzF&;&N¤Oºtq’Htœ¡•a8À¡C=E:æ?rß}m®ø-!êÜ9¾üÒu%@2lX{{P®á¢EìÛ'KŸø-UãFn¹å<áÜÔÔð裔–râDgÉÕTïû_ò¾m6þñtêGÜÖÆ:ÕÕØl\r‰|d/fÃûƒ®¼™--²\BôuXïå…ôìI·n$'ËNÁÉÉtíJTáááï··ð_‚ÕU„Ou:Ξ%)‰ðp>úH&›;Àí›#ðˆéõ»D_ÓÒøùgŒF™µ­×S[Kh¨Ì±óð [7ºu“n¸ƒ¸ôê%Ãw.SŽÍFH²$;›#GHO'7—úz{ó„à`zô °†W€=kââ0]óðÐÄÇ“@~¾“´ˆ ÅES·˜<<Ø·’ÙÕSé/#N¼¹™#Gd9åUWÙï·)-eÇŽZ£‰þÅâŠM›ÆÀ„‡;©¶¶žÑu¶bÒ¯פ €°0ûêÊí:©¹™… eó —NGa!IImîA™~ý•_t•°Ôqg —½½ü²ìk\[Ëôé©xTïûÿÌÄ3—™É?Ê_;ù‘¥K¹ñFFŒ =/¿”­[pn `«KBB0 %1‘ÄD¢£¥¶Ÿ‡Ëäɲ¬®¥E&iê@Y "X|56ʯª*™øáåE|¼ì¯x‹ëÁ5S»¥…Ý»1Âlïgv6k×R[ëDØl2ŸZ„FCL 3grô(¿þJuµÄÁ¦& ÜW´‹#Šþ¿»wK=QÛ©ŒÍj•Myââ¤æŸ“Cò[A¦ègæ‚SZ-ÑÑvy?€³Xð÷§gOΞÅj¥¬Œ²2BBˆ‹#>^Ö¼ö ¢‚¾}¹ì2'VښϜq¯%¦á¶÷ïϨQœ;GM$.Ú¯Ìߺ•¬,§°‡8Ÿ&9Ù5?Ýñ³»vÉ*Ö“ŠXŸ­^-×gm9Ë"™ª¶V 8úïuulØÀäÉ’¾”ËÚµ¼ù¦œ}32ÈΖA5¾ÿOL¼ëÖQZÚ±¤‰c¥™ÑÈ_ÿÊ÷ßóùçÔÕÑ·/žžDFGl,±±àíMd$áá’jpkß~+{‡ûøHÌUê;cYYdfòÐC”–RZŠÑHz:ÙÙÔÕQ]M]J%Uðö&#ƒ#Gì‰+ ¹¹²•°’-Îo ……¤§Û`ŠN]£GË/¿Èœ?y»à;á  NEiidf2`11öfi.—Z`G|ì)¼°œrrèÝÛÕCôôdôhâãÙ±ƒ´4rr8PV»äærú4eeÒý·X0Ñé8ª*§ü?å@âµOLäÜ9; $pDdŠÎ–EEN£,ÏÝÒ={@M“8­BŽëõÔÕ¡×KR¥_?7KÁää`6ÛWQbxññŒ!'6±Û³gIM•´•ÿ›9³ÍèŸFþ}9ÒfK3AÜÿø£\@(Ë­–Çùé§Ž{¡yyqì;w:%û+UEo¼!{¹Ä€·m㦛 i‚Åx>ÿœÏ?·×»‰Q9ÃÁƒNsj*|ÿ;™«•Õ«il”Ož’ö«h¼]»Ò¿?×\CïÞ îô†‹ Ÿnw²Ú º¼?µµrÕ,þòñÇ$&Ò·og¼¥…íÛ©¬ÄÏü|¾þš{ïuõ¤Ä«*eÑí¾¬Œ’ ii¡´”µkÉÈ 0°½–ÍÍ=JÏž®aC~k>yíµìÙ#%ŸŠ‹9uJjbˆµˆ8#“‰¢"’’è×ÇÝÜßáá2×PI¢8+6‹Ž&=Ýî˜ØË]4-¢£%_SCc£›j¦&z÷¦G¶l¡¶–êj <ÜõN56’ž.Ÿæf©»;t(}ûJVGD皚سGšŠi/+‹íÛ™6͵ Tü\V&4ÛZu‰œ;dž ö–ÙBmüÓO©«ë8QUyÂÇŽuªTmŽÝÒ&Ž˜‡sô(“&¹‡`qgåé§q+««II‘ð­ZçLÕi<×;/~°€ˆà¡x%úõã/aùrbÍî¾›±cå›)’ÿòò(-åÐ!þñ ýçeû÷ËDc! X^ÎÛoKáÖδãÉÉáÀ<<$½’ÂÆN‡­[© ‡.2’¸ä ¢°>ƒAª†¶ž{Û-[»UtM,ãã9yR¦‚Œv´3›©©¤¸‡â_»S‰‰NìŠh'ÌÏÏë--tíjŸ±î[`–ÐSðÚÐ ý}Ça[,tíÊàÁR’ÉógÙ±ƒôt'ÈÉ¡¦FR\r ³g3|¸ýÐ⢠;vP[ëôqz¬ZÅœ9mÖÚ)å»wSU…Ÿ99v~6(HÆf 9y’ÌL鲉ÌëúzRS‰uÅåìl¦®oorséу /ä×_ÉÍuÍÃêt)+“½\¼oo–Ž›‹²¹¿¿\ EG;ed*ä‰ÕJb¢=Ö×ÔDMÓ¼ëåÅðáDGc³ÉiŠ*>b0P^ÎŽôïOx8—^JLŒS ËõÌÍ%%Ž3«¨õnÝÊ5×ÈÀÉÁƒœ8§'ÍÍö.ÊP>>øûB` ÞÞxzÒ¥ ••LœÈðá²Û™Ù,I'Q šŸ ÉÑFG‹‰‹ðÍ7LœHJ È¡Š$Ç5Û§Ý`à§Ÿ¸ñF{€DL«Ì+³<Ý6'ñ¤­[¹öZ¾Uøþ·bw}=>>,Xà«édì8wŽü|;õáéIq1O>ɲeö ¶ ¿¦†Ý»Ýc«NGc# Ò­±±îÁ"-ÇÝp¦"Õ÷àAbc¹új;´ž<ŽåÔ)™&èáÁ‘#ÄÆ2x°Ü¡·7ݻӽ;ÅÅdgsò$EE2ôwæ ÆIà¯ñÉ“;&S蓉¬,ÙÿWH+ &îÂB© ¢Ó1`”•IŸWäö‰Óôó#>žŠ ÙtÆÑ¢¢ðôÄd¢K'¿Oä{˜L„„Ы—ݵi” ²k4 H|¼¼ãyym"‹8£ª*zö´“$­/is3{÷R[Ûžb·7§NÀÔ©ðÕW44H\öñÁÛ½žà`Y%‚‡z½l‡&è{`ï^äÚkÛô”A\D2„ÞÒ";^ÖÔ•EÿþÔÕ‘›+Ýɽ(sëü¢Ó§9x)Sì¡FÃóÏsò¤ueKI¡¬Ì ‚j*|ÿNæDx”/¾Èí·3eŠô ;S]¦Ø–-vÿWèr=Ê“OòÞ{v?Å­íÝKvv{‰zÙÙ¼ÿ>Ï?ïÔ@£­[©¯ww¾Òúõ$$0dˆ{ô/-eÏ'ÞÖbaÛ6Âɉq 6FEÅàÁdf’žNVå夤pé¥Ò…OMåäI{õ¼X¯äçË×UH³ž=k/@oi¡ºZÎm£ b×.»é8Ç$$–&ýPGóóC§#,Ì^£¯$Š_{õ’™àÊ%áqúô¡W/ù¯òr阻$z67ʈTW³gF#ǻסÕh8s†Ó§Ý¤Ì;ñ"pššJ˜LLœHp0>>F@€d]Ú*Ðj9~œ%K bÜ8×è‚’œ*´[ÏÝÑêëùùgfÌàž{ÈÍåða¹úII¡¸“‰º:¹Öq\Ó(]¨Ö¬aòd;#ôé§,]ê¾TÂÅ:r„3gTøVáûßjÍÍlßÎáÃlÜH·nç·¸knæäI§Ü ñ°úû³aï½Ç³Ïº)ã{zYS“ûÒ…ºÝµ‹å˹ï>×0ÔéÓ¤¦¶—® <Я¿&*ʵÞZ©˜/-µOñ«ªØ¾3œ°R|ÖÛ›þýéÝ›²2RS))¡¬ ??)]"x[e.Ú¹=Kh(>>Œ…^Of¦]°¾£Q–áØlÄÄЫG:Á·B’ÄÄPYi×)Tø¥ÐP'ñ)ÅY¶Z‰Œ”žµr}êë¥ÓÝÜLRƒÙ%%ÔÕ9uT¾jBC‡ÊŽ3gÐé:ÔM»‰ÚZöì‘:ˆŽœ¸"{R;¡kW’’()!*Šë®ë ¶ážŸ9Ã’%47SZÊ™3DFºY ¸åm”qšL¼õÛ·3v,@\œÌ—oi¡¢‚šÙ£§¨ˆŒ òòì™TÂ=÷õe÷nÒÒèÕ †S§xöÙÎê»Y,ìßÏ…ªØÝS%«:ç}8À矓ŸÏÉ“LŸ.á¬Ã'L¸B§O³p¡û4 $*ŠÜ;¿ÙÙ|òIÇžˆÊ‹‰‘šA ôý5¹¹mB¿Ç••TV2p ]q_ñÄ vîtei…ßWZŠVë¤päšÓéð÷')‰˜YA~ì˜LµvÛú kW<=1ˆŒ¤©‰òré››LDFJ>@AAÔÖR^Nb¢ýïŽ!͸8§k%˜ÖWõ׿frr0@VŸ*èVP@~>ÍÍÄÅ1z´½5¥ÐSÝ$pè‹Ö§ÆáëKJ ’R/-•sƒc5¿FÃÞ½=jÀ$¾h H¯^\p#G2f ‰‰óãx{KwÁ-µåBß MÁÅ‹))ÁËKÒ#£F¹)elK[X8È °z5z½TIS¤ft:|}e$ùâ‹¹â ÆcêTÙ¬G}èÛެ,®¼’W^aéR7dQû«Õ+¯”/TøVÉ“ƒ•”ØÙ†/¿$*Š7Þè˜þP¸ys›*Š5êêxæ–,¡W/'–¹¬Œƒí™aíÏ1žž”—³`¯¼BH&¿üBS>>‹”uÀÚµÄÅ1t¨|9÷ì¡ À=ñ¢$ilÝJx¸Så¡ ;ƱctíÊÁ±c²Ã¯£/&ÊÇ“’¤Ô†§§”Ï>yR^ùädI°Š—9<œœ ±”Œ ‰"ª&2,ë꤉ˆþyya2Ñ­››ªw£6ÌÞéXعs2â*RôÂÃ1‚ÈH³™Ó§eaG âøqôzÙÙGda0@h(qqôèAp°¤†/lQkÖÈd¡Š Žáâ‹;ª©aŠΜ±Ç9ôzª«9vÌ©­Oû$Ì’%|ù¥LåW……N¬šK†¸2Ÿ‰tC‡Êç§¼œº:©Œ.'c1$ mÇ)*bçNzöTóOTïû_fN„(ÇÂ…œ>-!I§cß>BBdYy[~RìþÞ{vuæ¶œßÂBrs¹øb»0…иXµÊMÔQ)’tTÈï[F••ŒÍ¡C|÷V+&“Ì+KiÑî@¨i‹ô;A¼ò›N^¿~žÎöíN]QÜòæ5544”äêÃ*ÌÏ‘#hµXûõ“uÕÕ47;i‘74àïo²‰r¡“gµÚž”ýË‘WVRZJ^ž êõTUQU%óšÅ—ŸŸä[ŒFªª¨¨ ¸XÖæ44È4G%™—Gr2ññN‡khàÔ)™nµ’ ÓÀÅÊÌäôi7L·H4RÀéé8@ŒÅÈ‘ŒG¹êˆÌñ~ ¸XNœ655$&ºïO¯|ÊlfùröísÍ.™K‚ÞiG‡Dl¹|9K—ÊeŠX蔕1b„›¤¦Ö Œc¼Õjv<õS¦Ð»7%%rùåèË»}¨¬V)€®TN¨¦Â÷ï4ÑþÕW¥´´ò˜þú+}ûÒ»wi;v°reǾ·7§Oc42~¼Äµ–>ù„³g¥ã)eñ]¤Í‰‚¬Kp°lšESáá$'“œLÏž$%Éô¾øxºu“Ýo##‰Œ”Y„„H”eãF %'£ôGn åz=%%øø¸2Îbé°oŸÌ M||èÒ…èh‚‚hl” k”ÚA7+“œNGD:EE„…IUÂd¢¢‚ÆFŠ‹)(Å™"˜é닇‡,¼V ƒ‚¤{.Ž%¶ ¦¤„ÒRjj¨­•7±±§Þâ& a1Ó À!v449xPN­¡Íd¢¦F’0£F1t(ݺäDD8ÎÁ55¬Y#‹ãZt MJrâ¦Íbá‹/Ø¾Ý A'”¸££IH軿úŠÅ‹âbÍ!gÇ:â¸^ÏÁƒÜvÞÞLJ—.ŒÅÍ73b„lb2ÙºÜާ¬ŒnP›«äÉ¿ÃÄÒÛÅ%¯«ãŒ”>xk݉TTêTfÒÚ„ ÒŠÄÅñàƒ?.×Ý‚Æ_ÉDà®]éÙ“˜¼¼ðó#4??N¢¶–[nis¶PˆElKI~0›)*b̆ !'‡Š Ìfjke³‹Žn—VË®]DF:uZ VSc÷š[ZHM%(ˆÈHºu#<\êߊ*ŽòròóIJr*¾ï×OŠ Šð]]åå”—S[KP ´*q9w"ª,È1`EçKÙ³ü”Hn©¯§¬ __‚ƒ v‡¬V 1™– ei„ôt*+úBË‹øxYpÔ­›$ ³÷\ÔÐÀæÍdf:1Åb'N0p $1\üƒ–V­bË–6ƒ+f3‡3vl›:ò «WóñÇr¶sqÞwØDMq½u:âÁ©ª"+K>ü6>>\~9—_ÎÉ“üðßÏ‘#’ÖS¦pÅ„àet´Š=*|ÿkä‰È|R Ó²2nº‰t£ü§TÜìÙÓqKIåUñò⃈‹ãŠ+ذÂBÂÃÑéðó“T—.²«CL aaî{ÕÛläæ²t)55\s¬9t¤,¯Çmâ°Ù̦MsÅ ŒÅBc#TVÊöcÐ÷²ÀrÛ6Ù²]Pé©;•éët?NPžžøø0t(]»’š*;> Õ¸8'”ÑéèÛ—²2ÊË©®¦¼ÜŽò55N)=BÛÄÐ |}©¨°£HºÂ5ŽB]‚PJK#"‚¨({Ÿ{“IFJ‡—d·£W.ÒS …›ß¥‹œVOžäèQŒFÆŽu’9l=ÿò ©©î[WWsø0QQ®BZV+?ÿÌÚµmB³¨´Bê}ú¸ÏnÚ´‰… ¥â£ãƒ*üè’²³;Õ^¨!:ÄŸO@€ì"’¸Õ—¾}éÛ—‡bãFV¯æ§Ÿ¨­µƒ¸R~ùÃŒ¯zß*|ÿk̉àI„Çíøp‹‡5+‹»îâûïíµ…ŽV\̉„Ý‚V”×ü1ýû˼yôïOD„Ä;·]¬pNP dDí²ÉĬYöì·¶>èhgÏ’—GVf3—_.{þ*¥+õõ˜ÍäåQV†ÑHe¥,ÏÛ¸‘+®ÀÓ“Œ ²²Ü¤ äærâƒË×5:šà`ÒÒ8s†º:Š‹)-•Õ@Ž£mn¦ªŠ²2»˜W”—;5d ”ü‰ØL¯w*£ ÇÅ{Xµµ44—Ge%ÑÑDDàáAA‘‘ "Ó?”»f±pæ õõvï^Ìáá²1©Ï“yydgÛ/ckÛ³‡={ÜO¨âÒ<ÉàÁòâ(¶c?þh"´Å&××säˆÌÂváLvíâÝwiltó”*ô÷‘#R½½$óðax€¼<||äÄ_\lÏ.UÔ•5üý™9“«¯&3“/¿dð3r¢ëžÉÔY¯_…oÕÚ4¡}ÚZ«A ø¾}ÌËgŸ¹AÉ]»¤¸¨ÛU­Xù67ÓØˆ§' ôë'E è×äd××É¥Þw æ««)*’¤ÁÆ46rà î ;ݾ'NÐÜŒ——üáÊ+ ´÷;÷õÅ×—ºu“®zEF#œ;Gn.^^8 ã¨.3„_áÞŠh˜à:$:šãÇ9{–´4ºt±û˜55œ;GE…dÌ«ªœÐÓd",ÌI£N Ž^ÉdßÒÑçâÀ@ÉPEd &G0cÙÙ²M³··ì4ärssí:-¸ÃÂèуnÝdéPZÇŽÉ{ÝÒÂÉ“DFJ —ïÁƒlÛf—o ßbHÒµ«=1éÀ¾ù‹Å©%›[ô×éHIá’Kœ²ñ4æÍ7©­ujz×úã29½ì‰ªsçJìIñf3‡1z´+E®0x:Éɼø"ù {÷²l»wË,¯#GHMeäHµyq;¦*vĜƀ6 _µÊ®@ï²{÷:)G+@%ªÐÑÑÜ~;o½ÅªU|ô—_Nr2§Oóè£ìÞí„ÚŽoGkåøqªª¤óëå%ÅšKJ:È>ÿ*.&7WØÃƒ´4¾ÿ^ö8vœB”ýi¤ädÆŒaæL1éÝ›À@93¹@žÈòNI¡ºÚéï\x!£Fa4JB‹…‚NŸ–è,zØ+YŒJã:üýíù?G Á=<\I­à`™MäØÌ(* ³™¦&É„ˆü‘Äb±8¥-Š44pú´ŒëŠ@è°aLžLïÞ»óò8r„æfû««9qµzK£áØ16n”Ýú)wY¯çÌ©.êiW¬^³cò{[Î{i)))vÜ”àk¯Q^Þv Å.¡CÒÖrMiÂð—¿mOTYˆÇº]t*¢oV+aa\qß}ÇæÍ¼ü2P[Ëþý*©Þ÷¿L|§§w®yç"#yâ ù&hµdg“žn»D‡h ôíKÿþLÊ ADEÙ_<ñj‰ž–¯¼Âœ9\~ùyT ‰¾&“¤woo¢®Ž[nq͇kýY!T¢¼Ïdf²jÓ§·Yúá˜ù+24FޤW/ ¤ãl2ÉZD%-¡¼œ'=Ú‰ôðð o_BB¤XRa!eeÒ‰Ój©¯§©‰.]8{Öþþ $2R’§b6Õjñ÷·ϱ{ƒø”5™ìTxX~~ÛOGLQQQX,ää`2‘˜èÔÜ23“¢"Ù-1‘îÝåAÅåå2Å1¤©×““C×®²™¯Lf&7ÚE\te•FNʺj÷nºv%+‹… ei¥Xg8F’[ÇE…#|ì˜l!¢Õ’•ÅßþFA¾¾”ètTU‘MLL›ØšÊ_þBV–ëÞD—5‹¥½–ʃ!6èߟþýyà6m’Úg­×=ª©ðÝ)(iuu{ÚÜâÓjyê)"#¹í6¼JK“Έˆ‰ íÓÄDF–%vŽïƒ²B.˜hÜÐÀÛoS^ÎÍ7»6Ðjk²Úé‘•˜–Æ?ÿÉwÒ£‡›<¥.üäIW_U(8÷W\áþVœzÁ€×Õ±g#GʾbEEä瓟/µDÕ`0•Eh¨ul¥V^.›&‹yQqö++éÙ“º:™L-©¯/^^TWÛcÑáᑞnŸ-¬V‰Ž&7מ-^^NK ‰‰xzrö,qqôî-+3— ¢ÿNi©›*-Abˆ6C£FQUÅ?Ÿ/#«þþ2õSü Ez¨ŸŸ‰rTgÏrÉ%Ljï ÔÒ‚É$Ukj0íêÞ¢> ¡£QJòÜs¤¤àç'+E¡o†³g©«s*Ø}ê=Ä™3øù¹zñbE•ŸOn.={všÍýM•0#ƒ¿ÿ§Ÿ&,Lõ¾Uøþq---üúk{O¶K€¨ªŠàûï‰eˆeäH.½”¤$ºtqõµÝö¯ŠhÅ"¨OOV®¤¶–‡r |µÆÐ£Ginv,Uªê-âŽ;de³ ‰æ nÒ…?[ZÊ?2mšû$„š²³íU”V+‡ÓÜLß¾2Q}Àzô ¬Œsç(.–@“’ÂøñöÕq]™™v}|ˆ‰!?ß®«nµRZJd$qqdfʉ#"(-Åd’ðíë+Yr!N­¬i„r,HæDÌjÂõ6íÊLJ„jj¨©±Of¢¼àjbc]3•d˜#Gdu¾KYøÔÂÅ®¨ÝŸ»ucäHüü¤L¹§§ì´àVŒÁba÷n¶m#6–Aƒ$ +æÈµ6‘èÙØHi)õõÌœIBÅÅRTd÷ôÅ—ÒÏñîgeqê#FØ32vÏË©Sn°[yƒϯÿ™˜D³²¸í6öíãìY5¾ÏønjâĉκêâMKãÑGY²„^ _?û{®0˜mõåQL´³9±O??Ö¯§¦†‡&.ÎÍÓ¬¬Í³³%ÞµžoÄbÖh䣸é&©É©¸bIî’ùëòÙª*Ö¬ÁlfÐ × 23©©±{ý±MM¥¥…$œy{Kg¼ªJ ûqô¨,Ækh]"ÅJK‰'.Îî‹âûŠ ¢¢¨®–íÄ,YLa¡„Hgåå 2_B ÌËKf¦74È+¿?……2çDp)¢õšÈFW.cK‹T­¬”™p.Tµ FDƤ#j‹ñxxÈ©"4ŽÂB’“6¬½Åœã£U^Îöí²±XœÅÆv@G8ÖyzâéÉáÃlÛÆ 7pÙe\vÍÍdfrö¬ìTZ*çT½^òã £%$¼³²>ÜŽÝéé<ü0'N´‰Ýü–3sü8×^Û©ÞÜŠBçm·qà^^äå¹yØTSá»S&”TÛ÷¾ ª1,Œë¯çî»9s†„"#í¨Ý™ÇWl#úOº¸Æ~~’Q?ŸþýÛd?ŠŠÚ“'ðd2±lõõ\t‘p…ÛÛ¡´lCk×ÒÜÌðáv¡-G°S†wü8ÍÍ b•VKh(¡¡ôèAq1ùùLzº=aF©uìÕ‹ÄD²³íá¯âb""HH„€hHïçGD„ä7Ä •‡‡„oq^AAx{ËŒC› ºvÅj¥¦F‡FC·n„†’–&ùåºùúME…|-ÅÒÒ8qBºB({xE` 11ãíM^‡c2/ç’¶X`åfd°y3……òˆf3ÄÆvðD9Î͵µüô›7ÓÐ ×ânöî-ëq„ÌÑ£¤§“›KZuu2ê ÐÜË‹={¸új‰ìéé<ôGâïßqäóèQ©Fо-’¸RS¹é&NœÙŸ" I5¾÷}è·È^˜1ƒ9s8à7xäÞŸ /ì¬pš?®¿žÿÇÞ{‡ÇU^kß?õÞ{µª«Ü{/c6c:ÁØB‡ôBB ¡¤@N€@ !„¡™b7pïM’mõÞ{—¾?Öbï™­™‘œ“÷¼9ï7ϥ˗<šÙ³ëý¬g­{ÝwQ‘6ÍËÙkkVåÉ ßîáò„ lo¹½¤2vé¥Üv›zJHêéI{;´´ðƒPUÅí·×Þ¡¦†¶6WúàÒøË_ÒØÈš5&Ê´·“Ÿ¯7½-ϻ¦È×—ØXhÍÏ'8˜Å‹ñò²sp7òÈÙˆ×$ÌlhP¶ô dc]b+>uö,ýýÌše×ú/\f¡ý Gh(v®åå+5þôiu‚on&2’¤$ý]ªµ"×%Gêåeîy{©, 'HNÖfŦ&zzˆ%-M³ÒMMº¨òõ%5•øxŠ‹•åm‹8šÍ(-%#ƒ#¶ë2¤ÛËËÙ»WEƒêœHÝ:+9óÙgœ=‹¯¯5+%ô•âb¢¢\ż--¼ý6[¶¨'µÑŽPZJg§5óãÐGMx;ÙÙdg\uMM9¢ûßÜŒ¯¯¶Ú»€WÑ?z”3\ÅÝÛ¶qíµjçmÑ··»¡È ßçzK¡Lê–v˽%öŠÜqK–ØU]ŒÞ¹†½û%‘RZÊHLŒSuYcœ8Ak«•½78Ý×ÇSOQSúu*®tú4--úí¶ ‚þþÚé@|<ééDGãïOt4QQøúÒÔÄÇ“•Å”)ÃJÐÛŽÆFNbÜ8üýéèPé>Qpmq9!âì\P@_³g›j«½½Š&ÞÞ´¶ÒÛKz:£FQZj†á==¬ž;gÎ(ƒB¤¯ÒÒÈϧ­M£Ý˜ó‚ƒMTòö6ƒq!à‹sqk+„‡“žŽŸmmTVêt%îõÑÑSVæ`a!‹ƒf̰ʪð'º(GÒÑa ((Ð9Ã÷°e Ê|'ôöªºCþ¾œ¥×_çèQüüìÊÑ2Íwt8u( åŸrÇΞåŽ;X°€;xóMví¢¶–À@sZüy{ÓÑá4…-ؽi×^KU•vÉã™r“OÜð}iè²2“v"7Ü[]Äw¾Ã²e&ÈZ*“mmJ Hp0ûÅÅüò—Ž»fl¿´¤„övBC]ee ¾¾¼ò uuÜqáá8@Cƒêb‡†Kr²f„SRˆÇ×Wùa–/íïçÌŽ#/yó4jË[pqо ´æç§vêËÞÙIC--Ú>.JXóç+|H{Ž1íuuqæ ™™ŒKi)UUtwãåEk+EEdg«xn® ­ÈÑÅÅÑÔ¤™èh•"†4LVjÆl¸P 503S›T++Õ“!"B_ ãlH[ŸQQj !~íô4"ÇC‡ÔýÇR0š3kjÔ%N¶ßÖÆöíìÚ¥ß⬆áåÅéÓÌ›gGÄ6ÐÛ6Þz‹º: ºm#waò˜„¨!ó‡’.ñE^I“hk#<œ‹/fùröîåƒøè#eéȶÕT0–ÅÅôôX ò§¹î:½ lïyÙHy9íí:ß»‡¾ÏaH•̶γx1wÜÁŠZŒ2„œ,£©‰ÚZS³i`€ÐPvì`ýz~ýk;ÎÆàB_}ý°]å^÷öæÍ7ijâ¾ûHLdåJF".??BBGXƒ5¤Ä•ÑÛ›'()aútfÎÔˆ~È>Ϻ:úúTQº¤„œÒÒðñ!0PÃÛÚÚhoW@oh ¹™}û˜<ooJKí´>¤X—ŸOVYYDFR\¬ÚR55ê%/½š§NQ]­¶ TUižG’?¢Q#3“¬¾Åñ²³S=½$ .þj†åqs3••ºÁÔTüý©­¥°Ð$½ˆ8T|¼ömVT¨êat´ÕÞ¨®V¸A¦ Ámm*ghdê>ù„ü|-ºº¨?{zÒÜL])‚h4|¾ÿ>Ÿ®”öÁ[ø..fÖ¬aE0Àþý<ÿ<‡kps³i¥6{6³g³aï½Ç‡*ñƈ÷T›¿?§N)ÏÝö&ôôäŸÿä†\u5WUÑØhŠ÷º‡¾‡;„f+wÕìÙÜ~;«WkêVâ_g©†ÖV³¾o,ƒƒ9s†õëùÅ/¸ì2«Œ‰ü^]MAÓ°ËP‡ð64”ÄD®¼’ hh .Ž+¬Áõ`ïãÁžÂ¥¥tu)?¬½-[8s†ùó5ʩ֊¼ØÑ¡JXr*ª«Ù¹“òrÆS@”·+ʤ¦*룦FS%’7hÝFÁíôiúúHN&8XYíí”–*£#2R,Âøöõ%0Peêl…¨l›° °–bi]¡¡´·©€¾>JKéï';›¸8õ“*ŸÌ”âþ#jˆ%%ÊG­s¡¨Ûžœ³g9p@Ù8–Œ„m,,eÏ‘# äøq>ÿœúzÍJ»ž8½¼èè ?ß4¡kº¿ÿ'¬ Ë-Ô×GSÓw¾ÜÞÝݼý6þ3--ÑÓCS“®NŒ˜ÆÃƒŒ î¾›k®aëVÞxƒƒij"0P]€¾¬Luil;lÿñ6l ½Ý1vÉé¨r'OÜð}™Ð(fÖ,¾õ-.¿\Cg “¶Ÿ•'Äs o¤¡{怒€;ïÔgÌvS ””XÚæJ´—‰‰L›ÆôéL™¢h^O?Íôé\x!™™Cï§íÒŸÔñ$T,*¢ªŠ‰™=[Û>øO¾¾ÔÖòá‡Z%KI± TÊÒä)!Ú³ÕÕª;hKÌ9CÂv‰ ÛÚˆ‹#>žädÓÊRÎ@q1}}Œ¯/ÉÉ„„PYIMR¼%Pµ- GšÆvôõiyCZx/ hhP·8ÒuvRXHU•æ^Œö)MKÇ¿4õDF’˜¨-ò"f"Ì?y›m‡}i)ùù””˜HNŽ«»ËÈ# ¾wth-ADäÐ!ÔýYú•Œ³1X6Kî–Ž§Eè†/½ÄÛoÓÓc톗 :K¼Øê¾zz’“CNëÖñùç¼û.;w²¿þ“Oòà »)Ö=Üð}nÉ“®.þúWÖ­SJÃ9 ]l_<½DÑøÁ™3GŸŸ¼QK9RY•²~— ªá¨+WÐ×Wµ±„‰ßÕÅÈ‘CÏñ”•‘ŸOU•¢{;NÅÈl|^^*C”•©ÍæÜ¹L›F]GªÆzY™ £¢ShÁñJK;Öš-Sî¶³ùXvCúh†oÿ$WêË/ùë_¹í66näé§yôQÓoÈ\h ÃÿF7|»‡Â«4¯]Ë/~Á]wiT;$v±°ëáåEw7¤¦ÒÝMc# j׌­ºìp²=B®²`–p¶<<8~œÂBæÎå 5$G!ú!¶\.£cÓ–ùàïODaaºrlfÏ&8}¿³µ¿å|J»MHˆúˆä­/LWEE47«JŸÑßßÔ¤ú$ÎäÎm3à.Âm‡Á¸ä¦EÛLJæf hkSª¢$mdNmnVi0q15 S8ѶºzBc¯¨àôiÊÊ´ÉnË “•å˜"³lq1›«åƒ\(Ü[h3N‚0årK ôÔ)òò¨©ÑÔ1ù%Ï=Gn®µJéìN³ C&!;:øÛßxòI€Ûo' €ï}%KøùÏùðÃ!Âp9¢áÄûnøvC°«‹ü€£GùÍoˆ‰Qöž‹[¶½}-fÎæfbb¸ñF®¿žÌL¾ü’‡æüó¹ì2“®7Ì!ŽYÎò좒úÉ'?Î…2{¶&$`”¤[Ää%(__­ÂEFHTááf…³§‡]»èì$9Y,ÅI#?_µ>¤±HDÕ»»ikS2¸ÌÕÕ47k.vYááÊ»p‘a ʶºz΢rãEÏ’H<4”ädBCu ”ˆ»«K•§,“e[›ùE}}q——+­Þ!p˨¯WÙ–ÁÀ]TÄÁƒªàêãcÇ ЙÏYâÂ2¥¤pþùÔ×S^Nu5MMlÛÆO¨â aªé‘å†p‹ŸòCñÅ ˜Å¾>¦MãÍ7yñE|P[¥\¤ÂeŠr7|ÿ‹.·×+¯ŸÏsÏ1i’S:‡€‘ÄeTy½µ•À@֮妛˜<Ùü–º:þô'¾úŠ«¯fÑ"“Ô1$ùÏâ_>ø€€*+yé%䢋ÈÊ¢¢B噂ƒ5Ý@l,ññ*!b62öSømmmäçsú´ýˆDD˜\o‡Áxw·r‡UÓ#$Ä$xá²¥E›ì;;Õh4)‰˜õ uz;ÄK{ÔàÚ¦PD>%9ÙîØ››í€Û–ôm|\ÊzB謬Tà–T‰³ëh|¯«U‘qïßO^ž·øY&'¡Zhƒ×=¶ê‘‘„„hõ8-5kرƒª*íÛr6ÁÛ÷5Cû×a¸ )µ—_æ÷¿§¤DWZr€²À’¦Ð[oeáB|×^3Mš{g§Iow7|Ÿó›ÒË‹={X¾œÇçúë¦ÂíLomo}YKzx°x16pÞy&GP¸RËÏçÁÙ²…«®Rõp×Y¿¶6…×÷·²ûúؾü|峯XA|¼~¯ÃÖd‹é—…<^^Úy$äåü|HJ"9Y ‚c¨tØI!qh¬­U»œØXÍ/˧„$×ÕEW—® ‡Ì~> ƒq‡5^‘Þ"­­TWS]­Í÷ÜR\R”u‰P-››)*¢­M ­"c+e›3ÎCS“ž4îƒ9y’öve›8DU¹¢méúî5rÐ--ìÛÇÖ­äåqóÍ,^Ì´i¬YÃÆ|ñEEà;‹…EJSV.‚îÓ§ùíoyûm<=íL£,AÌÀãÆñ÷¿³|9?¬xƒ‹áMM46êzÔ=Üðý¯§Â½¼¨ªbýzΜáÇ?ÖNE NÕ×ÛÙ†‡&pÓM\|±™j´V(Û–-<ÈÅsÙeª+í ¼¤³Ãa>Ç( J°ìïOTçŸÏÈ‘ŒI~>eeDFmÆS¶ÊÎÿŽÍAË“&ÛÝÍ™3””JJ ÄÆš™c¡`›è4ÂX‰¸+*Ôß 2RE¢@’¼uu®Ì O6¡Ù’"wˆPÒ‹ßÝM]²J¤t)Ð&8Ù’Ë–€´³S=ØÒÓÉ̤¿ŸÎNµ –àZN‘ÌI2o ¬‹ B]j¼9B^mmf8좖ØÕEk«Sh³ ùØ¿ŸíÛ)(Д D»@F·ÞÊÊ•lÝÊÇSX¨ËÒD"Ñh ßF5åÝwyôQ uvVÙ6&žž¬[Ç¢E<ü0/½dÊå_]_OMÛ°Ø ßÿªÀ/~Áñã<ñ#FXSá"èa¼"õÉŽ23¹þz®¾ÚÔr ŸDé  ::xùevîäŠ+¸à§ä¿ÆFéy<Œ6¹°0¦L!'‡É“MéÔŽvìàðaÈÎÖ–q#Áíâiio·{, ˜,8ÌåæÈ$$¢onn¶ËóXx5"‡RW§ŠWQQ„„˜Œ7Û™ÒEÏYÔÅ̈ µÑÓå›K m·ÌCJ‰D–«c–Ö¤Æ Íô’3ooŠŠØµK½/¤á^¸=.V ¶&Ë΀»±‘]»Ø¹“‚¥«Ë”c4ˆÉ›SR¸î:.¼M›øì3Nœ ¯O=ïùC¢ïº:²³­gÒÓ“Š {Œ·Þ¢¿ÉLÛÉRnø´4žž+øÅ/8rÄŒÐ%ú®¨PS7÷pÃ÷7‘"hò曜:ÅÿÈìÙvXc£†N’ln&6–õëùÆ7´gr˜rɨSR“OòÅ\}5³fÙÅÆ_Šc¶%/é6 %-)S?žÔTsR‘*¥®§'ÅÅj§’‘ÁÈ‘ª•j9K:Ò![Üè›zz´…$8˜¤$‰‹SõàFÛeŠÔDz;<œÈHÂÂhmul)à0‹m‰Ááµ»mëœ~~ÄÄ8píîVK_YñH¹Ov[B¼‡Æ¥‘°](LR mj¢´”ôt&L &† ¨®&/º:io×Hyðy“L´ÅÐÀözÕÖ²w/Û¶©²£QötXí”##Y»–óÏg÷n>ø€£GuÑ&É=YDÚ6^sêGñÄê\,qÃð‡Ì\vóæñØcüá¦yt{û¹yÕ»áÛ=†@p‰¸cåJœo4•ódiFK \q6h}ÒEÄí"ç.+è={8vŒe˸â Óé\ ^¸wù j ÙnÒ$Æ3›PlŸm[qIÚòµ>õñãÄÆ’™É˜1ª>zzô X"tÈG–~~Љ’𒌊D²¶‰`Ûõ²ñŠàcs³™1wá¤lA¢ÁAËÇ]äÁmé‰== Ö ´·+ßQN …b(ÂÞckÍÍ47S]ME…’m$y’šŠ·7áᄇ3bS¦ÐÒBQ‘öàÔÔèNÒ5ÆWØJ‚تWWóÕW|ù%¥¥ºn€¡K#ÆUç‚ X¸Ý»ùì3v殮EûK¥Ðb\Qš|æþüg \‹® †ÇÆòÄ\p?ý)»wëy–®(wéÒ ßÿÎDЧ'uu¬_ÏáÃ<òˆ)®ÖÖF@‹sóÍ,\h'Êñ/ £§¯wÞáË/Y»–U« 55­$0ìí%2’ìl&M"'ÇÎLËâ$଺%SEy9ìÛGz:YYŒ©&¿Æ;ü¸-`I“½ÈÃúûFt4ÁÁZ•ëäIjjdJp°r™½½žòrUžs6qÎçzqÅ3¨¶VõÊ%eÚ—ÃÒ|d¡ÜR‘ÚÙÐ@CƒfZýeµdôæ)å úˆgÏ*ß¼ºÚÔZ»¢(PUÅÎ|õååxx8-{ºqã üýY¸9s8vŒ>bçNM%ùö;xðAT;§s º‚¸|õùç3e ¿þ5øƒæÝà ßÿæa¬÷; øÍoÈÈ ²’ ¸ï>–/75fÏÕ„ÌÙwÑÐÀþÀÖ­\{-óçãåEm-¾¾êv6v,iiÖ†òá·ûÛã½½;Fn.;w2jÙÙ*%qº¤k‚%U‰¯/¡¡„†:¦²Ù¦ :;¿*+¥/F¶&*Þ†L˜-&ºŽ¾‡st®cOD$)!f‡‘A#1¦.ùEba#l—B¥èXUVR_¯ôv9X[ƒ´Áèiù“Ñ} *1V^ÎéÓÅK*ÃÃòr¾ü’/¿¤²Òä« GÊu$îãÃäÉLšÄÉ“lÚÄ?ÿIuµê,>ý4/¾¨²‘áÿ«ûû‰ŠR1‰ÛoWËYwÝrðÙp/I&pËËY¼˜¼¼aé¢IÞ3%…^PÞ´áàA::TËLöA˜ÝžžLŸÎ‹/ò§?ñì³´¶jHñ/‡áÆ:õí·¹ÿ~ŽÓ˜3‰7|»OÁ¿’Ä–œ3xöY&O¶{öð÷§§Goea\­Zņ Ú96|ç#üñöfñb; Û0PHxÆc#üÅ–6mbçN?ž)SHMÕt;;Õ9wäH²²HOw@·Ýaêqpdgh¨Êd óYd$ááDGST¤ ÎÚv Ô–dnD„J,µ´8®^:ƒigÀä:B7^½¢Ø—@w7ÍÍ45ÑÚªÚ[Â9‘#²Õž•ß*E !±cio§²RÛv¼½éí¥©‰¦&JJÔl³±Ñì½t¨Y8Í _¶Œ™3Ù¿ŸmÛ(( »{ˆHܸkjض?&7—Þ^nI%ùùé½a¬ÕÂù÷^¦MãñÇÙ½›ààáNƒÛÓ“ÂB³{Þçå¾u3OÜðýoÀnIÝ®_Ï#g† ò„…i¿»àiHˆú®}öW_Íõכʙ®ïH©‚vw3z4W_Í’%¦…±åSâ©hr]32QTÄçŸ3z4cÇ2u*QQæ¿«‹À@FŽ$;›Q£ˆˆ°†Û÷ÐV‘Êrr YPññŒaº°Ë²ÙŒºŸ$£„Óa·nhk³ãS;Sôfèçâ¥ÀPQA_ŸN’‡Ž&&†Þ^õ–lhЦy‰ mãÄÁîòrçõ^ "ÂÌ#±s'yy&«Ú²®N„Ÿã,‰Æ’%LŸÎìØAn®2ˆl¯e"//çÓOÙ´‰3güý52 µ¿Ÿ€Mר®Ã€… ;–§žâ•WÔ¶b˜pcÙßÏ+¯ðÀvÚU¢!:îá†ïCÂÄߟŸÿœï}ÏÔܱqq›¢ƒRo ¥¡ßü†>`ýzÖ¬±3A Ü’SŽ‹cõjV®4å¿‚ix8~~ê`‰øä d”¤Ê'Ÿ0nãÇ3j,]Êøñ$&š3Ðp¸x{›gƒðÐÓ£–#F¨ ¬e2 QÁ Û¦Á›‘q‰¸mI{Fƒßð1Úu’Äõ_==‰ÕÂcq±êM ’J´+¿KP,—FdÅÂÍpV½*‘÷’⧬‹”•”  ŒéÓÉÈÀË‹èhNœ0}D•%}!6i.ª@H 2u*‡³u+ùùÚ½i™¡óóUí¤¼\Ý´Áš íx‹¯›Q莉QãÖ_ýŠ'´{ÞunH¶:Åý÷óƦr¬üi`€ÐP¥áº‡¾ÿ» “ôtž|’K/Õ»ÙSä>–z]i©©ò,ð$Ï|A?úï¼Ã† ¬X¡ÁšMò-ííøùqá…\}5ÙÙCÂdÒØè¸.oÌÑ£j çÌç¡¿??‚ƒ]©q*‚ƒ™;—)S8tˆíÛ9zTçéÞ^rsùðCvRëÌàx…Ô×§Ò¾ç<9ÿ+V0~mfÀÝ{öðàƒ|ð¹´üíaa*ànøþW&ò|~ë[<òC˜¥ÉúÚY BàC AŸ|—_rÉ%Üx£šÙÇűr%+Wš–É8d9ï: (“–ÆE1s¦F‹ññ„‡«{E…†?‚þþ’@|<„…E` î0BB1‚ädâã­r%Îv[ûíí„„LHˆ¦‰êêhiÑæ#A¾>1‚øx]£øùDK‹uFq=iYÖþ®U«úú QƒSI;„…™TôØXªªL·¥ÊÏ ]‚TWsú4ÅÅ â.šiEÒÌÉÏÃCA\"ñcÇTDÞbôcø^:Ëãjc'+*Ôe)#ƒC‡Ø¼™Þ^î!³Õr{»æË Ë/gòdžx‚÷ß7Ãù¤¹™?üGU¿'c)æð中vÜðý¯ YÜóØcÜr‹–S\ôÈC"Ä.n8 1BBèíåocãFÖ¯géR{LÎm×ÚÆ¸¾Ãýéè <œ… 9ÿ|M\Jø#0mh'IºY²Ô׫Ϻ·7AAZH”X8&†ôtuÆñó£±ñ¬Š}}µô×ÜL]öÂ`¯ú$9e ç3ÖÔ¤Y‡3âદ3rÁ9‘–w!¡P^®1iD„F™™ÄÇSYiÚ8ß+²-xyzOt4™™ âNAÜ(&[ÂX™ ™<™ƒ9vŒæfSs\¦4gA½mYBØ¡¸˜ÊJ ‰‹ã§?eÍ22øÃ8zÔôúq Ͷ^ÌC&m23yê)æÏç±ÇL7m//¶någ?cÛ63èv1œûîá†ï!âîþ~Fâ÷¿géR»&4×#:zXÈ+ qZ[ #2’M›ˆ‰aî\sµ8) :œ{„R=u*+W2r¤ rR£+*2AÐ8p "´·kt,"$©© ðÕWÃzàùºÏ„ «VªA˳5ˆèï'(H£~A´®.EÕKÁr6†#îâ F}BJ²’3=šòrŠŠ´¹Qp<0˜RRˆ‰¡¶VA\¶¬ Ûooˆ‰!3“¼<ÊÊ”£iÙ¥ÈH«'§ÄHH`Ò$3"    «³ñ©Þ^% ––rü8 J0¢Kl¬Nä“'ó«_ñç?óÏÒÛ« GWÓaâÛEîãÃ5×0n/¾ÐØÈcñ›ßèdæ:ä—ãŠuC‘¾Ï}45qÁ<ó ééÃ"kO`|ü°à[¬§RSyè!–-£§‡Ï?'7—1c˜8‘ùóÉÎ6Ÿ[î°å —ÒŸ¸ûúèè %… .`î\Ÿ2¥¤°w¯ãÇÆ’{ñôdâDæÎ%- ôÅ!»¯  ÆŒ!;[c· ]mÖÒ¡Cj*ÁÁÚÉÙÐ@m-ÄÅ‘šª€¦~ð®/çÂõþ²@žX6ûøšª|>¹JIy¹VHO§©‰†•–¥Ìà3éíMb"±±ja\V¦zrФ0䱉‰$$0a‡sü¸ÚÙ¦­z{)-¥®Ž'8s†úzêêL² ¯¯~Qo¯aô÷ÉÝw““ÃsÏQ^î´^^‘3­gD<'òðÃäåqÑE|ù¥ÆàÃdD[O·@“¾‡9zzøÞ÷ÔÏ÷\EK’’ì8|ŸIš›™1ƒ‡fâD­¦§sö,äçóÞ{ŒͤIÌŸOF†ÆYà…=<ˆŠ²#3tvÀ’%,_®Á‹³çMô]cGg'QQ̙äI&B ÃOè.Î’6BLO''Çn7bc©­µrCBHI!6V‰ÅÔFP>5•#t?%Ù `êÌíløC¾]V?qâ±±j{‡¿?……44hª¤·WÝv$§ ÄvMuq2½½IN¶q!P†‡ëtåì4Z&ì”RR˜9“={ˆ‹£­žJJ8vŒª*ΞUµì3ŒY{ee™­Fòï‘Á /°m›VS’Oââ†uJ‰hhà7¨¬ä;ßaõjöí£»ûZ@ÓÒÜhä†ïayZüü¸á³CáœlRãâ†Ûknfõj|P$äÅìl¶lÑV‘ŽãÈÞ}—ìlæÎeÂÆŽ5'ÛêhD„>–ò`ääpÑEŒïÀYÍ2w„e<˜#ØÓƒS§2w®>·Æ®  ®Î` y£¯ˆÆ#=ÝÚ(9t‰ …¼§ÜÞ‚êëikÓÇ[Bàädý–†ªª”$ÓØHKË9#µÃb¦Ñü"àØÕÅéÓTWGL aaŒMa!••&YŠibãé©ÞʧOÓÒ¢ôp©ýJuAv^BN__RSII¡¢‚ü|  ÔËçð!ª8± s\~""ˆ‰aï^ÞzË4D–›ìP{ðÝK€ŸÍ/~Á+¯ðÚk´¶:h½1xîC†Û2rsùäþùOöícÉ¢¢øîw å®»èì:ó&{e»«îá†ïaÍùÑÑÜr ©©|ûÛ9'"p ü9gFæbŽó­oñ£i¢ñüŒcç($è®.ÒP+;› ˜4Éôd…¿„oííÄÆ²l‹9õ5¶´j-(l¸e&%1oãÆ™¬^Û aL ÅÅzÖ¥Ï;+‹±cM_fÛÝnø†€¨(bbðô¤¤D= øZ‰ÐÓS™-žžtuQYIy¹BªÌX¶¶ÿâíï­yçòr¢¢ ÃË‹ôtz{©ª¢­MA<6–‘# ¢¸ØÎZâqIšÇÅáëKq1 ÓB”$µ¯¯ºìÂÏÎ&:Z}ºº´!SºŸ::´/¿µUmé{{MˈÞ^:;ñ÷熘6ÒR6mÒÚ©ÑÏé¢ÙG’øƒo¡„nØÀ„ <ý4yyæ]d\D‡]BØ—L»»9x×_gëV $0PÕÌ[n!(ˆ›o‚Ëânø>绣ƒŸÿœ×_ç–[¸þzSýuH—‡vpjÏËKû‰¿÷=Ö¯×ÒmZ&4”À@³=Äh÷ò" €æfvíbÏ"#™1ƒ‰™3‡ÈHScöl–/'5u¸û)H*Ðo›Ðìî&09s˜9S×!R ŒVôcbLgd ÉÚ1144ˆ—UU´´h&]Q²ii¤¤00@]¦t££IMÕíÔÕÑÛKb"ÍÍf´>L—í h  $?_[ü}}IO§»›ÆFš›ii¡ºš„í§=sF#ncSRk•eÑ"8rDn¥µr0PÊ &'âD**ؾº:¥œƒ•Ÿn̲ƒoÏÎÖKpÝuŒÅk¯i^Þ5“Rfe™åÙ§Oç±ÇxñE>þ0ë™FƒÒà<‰WK ›7óϲmÍÍøø®û?eŠÙ„yÝu°aƒ²] ¸­¨‹{ .Ÿýüç?wŸ7±ä¦ßŸêj6näƒ4\%k`ááAc#|@k«]HëåE[ üæ7¬]kæ-ß»g55\ ’¯—;¦&âeetwãïÏ”)¬\if{œå…ïse%ÅÅ ²2ÈÎæ¢‹˜6ͤ:;Òêj¥²²ÆŒaútââìvc O••ª$^W§þ¿†s£q¤™™$'ÓÙIq1EE´´¤ç_°»¤„¤$ iEoÄËË~|¤FÔÓSÅl¥t,]‹AA46RR¢tƒc.éi¡QÊ>DGëBÇH “Ҹʱ±š“xc%aü—FX(cÇ’˜HHÅÅ&¥DNˆñ#Œoá½EãÆ‘•¥ótRcÇR[KY™éÆéð’uv2a³f9%zÊÆCB˜;—¨(N¢© ??úú cùr3¶%•òÆ<ðý+ÇŽéä$ t©ëÜr ±±¦¼É¸qŒLJj îìF‰aýz=çî®K7|ŸC’´¯?þQoÐêj>ø€M›ðõ%3Sc‡ .‚G7R]­ív1µ¶2~<ÿõ_Ì™ã˜C20@` ÇŽqü¸&Uœ-QE’ÂÓ“ÆFöì8ïi.âYá„57SQ¡§")‰33ÆäQH©HôUUqê'Npò$íí¤¥DM ==v“œ<ê#GOM §OSS£ ËôtM¼ÖÕqê”fÀe©ÞÐ@B‚6» 7\®š/{]bcc5³QZªœ?8¬­¥¶–în}g` ’ÍeÛÛ©«£§‡ÈHµ¡?4”ôt«­Zx8qq ú.æÑþ~ÆŒaÄ<<ˆŽ&#C5 CgáE?þþ,YbR¥ú:i>>œ>­Z·ÐßϤIŒçêâ§NŠçeeÊ.MHà u¹frOœà™gxì1Þ|“š||ôî5 ==ŒÁÕWÛ+=š©SùôSÌw - 4cã†owòäFHÑÑÔÖšËÕ½{Y·Ž?ý‰[oå’KLY ‹Éº$O ’ÉEñÀ¤¦:å±È#aP€]Ï.†á˵×rË-„†RUŧŸ²{·DD(‘C–öÉÉ„†ZM)å‹$´éïgÊæÌÑ<À0ƒQêð÷''‡Q£ðöVr±$ÚÛikÓøZv¸»›#˜>]cÞ”NŸ6VD<²² !/êjS546V+55äåjj30@Y™â»¿ÞÞZemn¦·—ÐP¥9JÞTn;2R¥Ä ðõÕ¦¤øxmléì$=ˆÒÓ %Öyc#ÄÅÑÐ@\œ ¯qÒ"#™;—  òò´çpp‡gp0IIæåމaõjbcÙ±C‹ÆÎ² ýý„…ÙQ°e#AA*ÿÖ[”•éŽYœ(1b¸kP©Ç<òÿ;ù‹Ê :Æ[·òá‡|þ9õõøøjg¥dÍŒ«÷•mŒß×Dze¼öW]EU•c*a|ü90ÍÝðíæ<Ÿ”Ä„ lÞl–J¶ogûv-âÎ;¹ðBÍÍÙò@„L&mw7]]|ûÛÜwŸrË\{ʤ¤¸ò¶­ °~=×\£Oé´iìÛ§ŒÝÝ”—S\L_ŸéÝ.Z€ii$'Bx8±±ºŒ5Š‘#™0ÁUŽÅáÞ††2v¬6‹(M[ÂR©°¹ZÙç‘#™5Ë,Ø VWë£+]òýý;Fk«"f?¡¡šI¯¬äìYººHJÒ @>žž®{%ÑŸ‘Á—™Œ¯õf¾ûû©ªÒ*eXÅÅäç3fŒÂ·ø 76rê©©ÄÇÓÕ¥Î5‰»·—êjüüˆ‰Ñ‰­ µ—þþLŸNd$‡ÑÚj§¬'Œúù±x1ÑÑlÚDM þþŽï„¾>²²L¶Œ%é7{6©©¼öûöé ÌX&Êœ1ø¶L3·ÜBf&¹¹šòúüsÞxƒ4¡$×Â![ÈEÉÉ:ÙÞürÑ-â­·¸æÍàÇ+Ç• ½îá†ïs€o¡sää(|·²±¬ûâ ¾ø‚å˹ýv.¸@Ã+ƒ8%}4¢É÷³Ÿñío›ñµë1v,!!*pጻ"Òû·ßΪU¦h­pÃëêLõ;Ãí°§GyÖÅÅ9¢Ýá"®ÄܹääPQÁÖ­ªgÄ’ò»¡kj0„èáÁ”)DFrô¨öd‚]¢ÆÖr³¯ÌLfÎ4ÅþåNIQ/™N$Í"íõF.EŒ&ÊËMÛØX•f-,Tg ÐÃ4ˆÉ­­ ‘’—omUÛÀ@ÊË©¯W¾vx8hWQ|µ” ±«[xz2r$aaìÝ«³”Áçóð -Mo ¿{üxbcÙ¸‘ü|ÇfDzÂ0ª –9u`€¤$n¹…äd>ù„®.üü%B7– ÎÖv¶É=#µ5iYY|ð¿ûyyºT s¬3eìˆÚ†Þ–b~_sçòÚk\wgΘ1¸ÁŒ2JÍîá†ïsHƒbåî”@[žùì3.½”o›Å‹5Ö6BK #F𓟰zõ9ؤ ¦©Î!vwvÁ}÷±h‘ÜGP#G²}»Â‡-uÁHþØŽª*JJX¶ŒQ£(*â‹/ô¸ö—Û¾.O//Î;´4¥i‹–¡åƒ¡e`€‘#™6Í®½PÞJr2ÕÕ„…QU¥¤Û½¹Á²2 4œ×uzi)ûKN¼µU‘B”°l½Ç´Æ+Aki©š·……Q[«ÓžäÜëꨯW),¤£ƒädz{µ*hc22\RSÙ¹“‚•µŠˆ !A7.—&.Žùó9r„Ó§uIÑÓCt´Óvðââ¸ür¶mcÏ%b·PO±±®"h#‘rÅdfò÷¿SQaVk’“ˆZÚîi ½'(*âÌöí㆘4Iµz´ÐízôöÁ¤IΫo^ôõ1ko¼Áµ×rò¤]Å0úp7|ŸsþdâD|}unÁ5£±­¯7ßäãY¹’ï|‡9s€&Oæ÷¿gêÔs³¸ôñ!)Ic½ÁÅœövFŒàÞ{™>Ý.ò’(u̶msðA‡Mð¾¾\u+VàåEV©©:–6üÙÀ@–-cêToFŽÔ Þá"Fò§“&Ù©Ú!|ÁÐPMa[ʘÑÑÄÅ)v¶dRxå<Њeo¯é± tuÑÜl’”…ÃרH|¼æÄ^T±|}éìTa“¬,’“inÖ¯åɤ¤ÐÓ£No Mðrn%á³s'--47«®“äµ££‰ŒT^‘²9tH'¡„UªqHÿü]¶Œøx>ÿœ¦&;ùx1Ÿ²öèáÁÔ©ÄÄðæ›ì߯1xF†¹)¹:†ð–ü+-¯gϲgeeTWkç}\“&‘œÌ3Ïp×]lÝJhèÐð-4óŒ W{+éÉ“yí5Ö­ãÀ³T iwÑÒ ßÿ |O™BT”„³»“¯Iÿøï½Çµ×rë­LŸÎõדp|dy¿?ãÆ±c‡Ülmeòd‘#­iD#o£òÐÎPX4}}¹öZ.Ô5„þl3¼ÎöPXË—3q¢9-efRXhdž6°ÛÓ“qã˜0Ánb½mm¥¬ŒÊJ²³IN¦½]=Ôm³´))TWST¤é”¾>ÂÃ‰Š¢­ÒR]HDßÔ¤ü²bò ­."MÞÓCS“ædg**”÷¦š®eeøøhÉ·¼Ü””>OB½½šŸIMµ³*NO§«‹={4;:ho§ºZÛ‚BC•6>jááìßO[›"š‹Fy¡BNžLDŸ®%VùSvöp‹ÚzöÁlܨ'ÐHñÚr-ö理„¼&M2‹Õ.†Äà#Gò÷¿sÓMlÚ¤“îá†ï1úöõeâDŽÖCbDO=EX<@?S§²|9ãÇ“žnתNÛaÂà ӌÀV{;«Wsûíf‡¤Ã0Gº]ŽwŠÝ]]DEiW´å³ÑÑdg³k—cw+ùll,]Df¦ƒNÂŒ L‡FaòM™ÂèѦ⇰ ¨­Õ>É´4&NÔ€¿?ÙÙäå)W:!®.ÊËM^¦´DDPQAm­¦­„WÓÒBCƒ¾M¾Nê–==tu¤ókW­­™¾ÕÕ*¨mV}}0jqq™¹{é–êê"&†æfíÞ;Cú1chk#7×nõc”"::((àÌââ˜6Ü\jjˆ‰!$Dk‰>>fK½å‡…±jññ|ö™*Ч¥Ö6q$fkÖàéÉ{ïqð %%””è’E~üüôêÛŠ¥ÈLªÒQFßMZ¿ù wÝÅîÝj»áð!’ùeÈ6¶üÒKÜx#›7«ü½{¸áûœ‡$RçÎåïÖ××Gl,Ï=GFýý\|1?Nq1ÿü' ,XÀ”),ZD\œƒê¢mT.At~>ôô00Àõ×sÓMš²t½'&ðñÇà[jžII¬_ÏèѶãéɨQ9¢ªå!”Ï®\©Óà} #3“´°éãÃŒª0ÞÛKc#…… »òü ioòd3!*‚ËÉ1°©ÂŽZü ÑטíÄ„S„ŒÚšÀw?55*"(ˆÜÕEI £G¢ˆ/'êìYÒÒT™VV}}*ÛíãÃáÃäæ*cÒ–,èçÇ”)tvRTd"¸¥€,¢’O8p€­[52õö& @IxÁÁøùiçgX¡¡áíÍĉ™†ÈbŠJ{»vHµµ©?²¡rÕÖ¦¹©E‹˜9“>`ï^‚ƒñö6ÉÚ`¥l»ÝÖÆ„ v>‚³üæ7Üqûö9Fp1W;'уhøâ‹üêWî†7|ÿ«CîiIe i¢(OïïÏìÙšo:•  ‚‚Tÿ襗xýu?ž /dÜ8FvW‘b`t4yyš¤¾ùfÖ¬±c˜¹11$$PRb—?ñôÔÜåºuª]î0C"ÎdEEÖÏvv’–Æ%—hÞfð>È‹ééRSCP³g“–Fg'ee””PQAG‡.ªZNŽ>ضâ·AA¤¦RSCU•)ïÇ×ÂÁÁê=f€cx8ÔÖš{ëíMk+ííúY!ÈKD) ù¸ÁºžIL UUftÙÜLY‘‘´µ){26V»mÌL>ûŒÒR23Éʲñ€fÌ ³“ª*kBH#ÑÑäähÖêÕÚ_#¥×æfÍùžŠÀˆ¨ÙH;’0ð¦MãÓO9vŒþ~Z[UcRŸÝݦ?²¸{eb“âvb"<Àý÷kkûp Ò$¤°TÁ33ùío¹ã°"¸¬ØFŒPža>qÆ –’Âý÷ÛÜcpÂÉÝ4?.77« §³>fC&â‰'ذÁ\ì{{³mUUªb!j äåñþûlÙÂÞ½47f®—5æ¡C>LL ÷ÜêU¾ÎÊDÂ>uÊôg¾ÊäÉlØ  Pƒ±Ûh+ïîÖµ¿m­2+‹K/µk0±<Û2üýƒfÏ&,ŒÜ\$/ÚZÍ¥bo/£F1a‚¹'F4]VFK‹’ÿÚÛÍ¢@G¦k¢Ø ?ÒROs355Š/„‡k#¥0ö¤^zñ%Ör›h®Ñe{»ú´·“˜HV–¹PÌIQÕÕ”—«Wƒ¼(uà˜Õ+7’àre½½™1Ã$¢aQíí:± L:…²n„ÎNM¶LŸŽ¯/›6‘Ÿ¯.HíínI9‘ñXéèéaêT–.ÅË‹&NäÐ!*+ÍûÄuVpÝ:FŒp@3vдiš±5¬0n¼õëíøˆ.€Û˜iªªxùeöícþ|7ãÛÕZÅ} †ˆ©ÇŽÕ$€³›O`âG?â®»L칆‘#MÒ¡(yúù©kbEï¼Ã~ÀÅsÛmüéOäæšwðÈ‘¤¥ñóŸsþùC°Aï³4¹{ÒÑÁ¼yÜ|³Ö»\ ‘gfª¥ìFw7£F±fZ™mÎÇø>rNee|öP]­Ò(2ý+ÑÑŒg×G.ûyð »wëùÉÊ";[_įÇÛ[kÈÆ†§§FÍ¶å‡æfó ::ÌŽùWŒ U‘Žimµ®ÓEèÆÓ“ôtÍ™`ÃÏÈ !AêèQ6mâÀššôã̘¡ühÛž¯Œ 3û$›1‚åËUuËȳ‹Ì“‘zL÷ð 2’Ù³•r~ûí$%iÍ@àÞ`ÝõFãGŠ&èêAj÷ßOZš;ÞY 1<Ü®?øæ=šßýŽñã­2m¢é(Ñ€ çnÛFŠíÛùþ÷™=›[oÕég8ÆîèÛ=^üüøøcí&|'I±ë†øÍo¬ÊP²0ß¶Íúx¥0‘êìäøq>ÿœM›Øº•®.¼¼ˆŒÔ‹-DÚ¢ç`kã÷  öîÕåBWK—rýõšâÒD"(ˆŠ ÊË5ÏÉá’KÔ†|°ô_“ÿÊË9vŒ]»ˆ%0èèP@ü¸úù1gŽRÐŒƒ*/gï^Nž$)‰œý ±¢ïí¥½èhmÎ4BxqùΉ±p "2’ÒRº»M_…˜jjTÙN2Å11´¶š[ëï§§‡°0M•9¢E.FS’ì³ ¦ÒK½²’Š zz ÄÏüý©¬Ô¿·—ÈHfδã`^ÇÄÈéÓC*ôô0iÓ§ë§"#IHàèQ¥<º¦{ööÇ•W*|Ë™‰ŒdìXöï§±Ñd‚Fçöv.Ô¾bg“"J3u*û÷S^nÑ_v3f8^·Éñʵ+.æý÷¹÷^œ-[TUæ‡?TwSwòÄûþ×p¡è:Ãî%KxòI;nœ1D´ÈËíkpÆEñNžÿ?dÑ"ž~š/¿dãFrrHN&, oo56s˜z¶Íc„…‘”¤L¸•+Y³ÆËmpêÃ999BW“'sá…JŠ0ò’l­©ÑŽÇæf9éêbæLRRðõeÆ vïvÚÅ#êETµµqò$yyª’m—) eÔ(BB”[bIõˆþ†¡WÅ×ÌHÛ˜Wø'¶a¾yYxùTK‹f±$3¦ooòóÙ³‡É“M1^))Œ¡}íCMMìÛÇÙ³deiÌÞÕÅÞ½š67ÎêeŒM{¨T:ËÎ ÷cÚ4;ω¹öZþügÕDt¡PØ×Ç”)vS¸lgìX~ð|º:³±~ðdz³5 vA*†Éï~Çm·‘›«%__ííœÝ–UEWGŽð÷¿óÑGZ²–Rw7“&1~¼ÛâÒ ßÿ½ê¥‡óæñä“Ö›[°{Ü8ž}–¨(Ç7w|<'²}»+*#”ö÷§¯ÄDn¿ÔTÞ~›_$6Vs—¤¥‘–¦-ãII$$XH>>LœÈþý\z©æÍm»ácÇàfZQQpI³bE--ÔÖR^®*ØR%3Z`Fâ‚ 4ˆËΦ±‘'¬"M==¤§›~oýý”•qø°)"½- rŽ¿ö  uv—Ä‚„±BT·œ¤ÅÆ8'½½Z5µ E[ZÌŽvãÌÔÕNPññÄÇ›åÉÉ>Ì–-LŸ®¶¹|-J>z4f]DVõõìÝËÙ³ŒIz:==ìÝKVii®É™3éè`Ë>ôrê„ o©ôΙCK ÿø‡8cHßã¤IÖâ¼Ú4î½—_þ’ÖVk¦B¦ºØXmywËm–“ÃSOqûíäç+ Ñ ±ô UV²q#¯½Æ¶m´·›!‚1Ý +i8tC7|»Çéo__å¢ñš@í_þBv¶ì6"¦Y³øüó¡¥äý==üä',] pñÅlÙB}===´µQWGn®섆E` áá b­EDIIÜt“nÇÙºUÂÛô¨pººtµ{äˆé<ÙܬkC@ÜÄ¥ÀE‹4O-QÕøñ46j£!žÆ„ ú©–ŽSù@AyQô¶g÷ôpø°6ŠÀ·Hr76âç§’°–º¸Ž‹!1³E7‰µcbt6¯rD#Gªó¤mI65•C‡Ø¾‰5ÊÄ ØX²³9|ØL[ƒ~µè¨H$>i#F˜ b/Ч'sçÒÚÊž=vþ2rL긂½lmm¼óŽõÔÙf?Æ'+ËÁ—Ên/X@{;O>Iw·C±\5¡Ü «ŽæI?&(‚?ÎøñÙµæwwsø0¯¼Â§Ÿrò¤ É=‰MÃ×êÕCÏnøvŸ‚¡G` II*D‡:þŸÿÌÔ©V¥ŽÁ¹ˆèh3tqë77sË-|ãúˆfd¨Þ¡ñIç¾>©­Uèùâ MKJNæÒK à/1uj˜Vo¯ÎÉL^omeútV¬àwÈË3—Ìâ£h›¥1VÁ,^lµ bútÚÛMd//&M":ZÕûŽS!uÉ{ôõ‘ ±­±JèîæÈrsY°@_Pai‰llÔÏÚ~µÑ*iëïc‚Ž“v¬sap0šuµÍË˲ 7—Žöì¡¥…œ=Rd.)QÅ+Ûó#Ç%DšY³ÔÚ-"ÂN.Êv=$U%KhmåÄ 3-:a‚ÉW±Ä¬^MG}dGü0 ¾¾L›æ4&_½|9<ý´ž[C™3]}vðmÜ×Çĉ<õ×_OF†v |ðo½Å‡*Ó·“GŒ ;Û ý«¶¶ÆÅ©ª»íé’ƒƒY¾œöv õlU|Ò$;3R øzyqå•tv²i“Ým&‘{|<99C¬/¸ôRººøÃLVŒlyüøaõLÚÞ¢Ò(ÿ쳪³o}ÄßþF~¾‰ò‹Ir z{Y±Âi“{¸áû’'BºÊÉá7Ì Þ~ĺu®Š9ƃ„ œ:å*`io''‡ŸýÌŒéä1?ž1cÔ;Ír¯fzyÑÞ΂Üy§ÌËÞ½ê>>d~_ \®½–¸8ÈÊbêT¶msÊIè8)‰%K˜É99ìÙCJ cÇrú4ÇŽ)oÏVU¨ ¶íÑ8 O{d¤æÙ©S“˜¨½$R®lmUW9WÆjC:ɪU¼þ:••j× òß8÷V•=¿æÚÛùê+Á¾™fHü½ê*ººøãñõUN”äåpIû³]o«¬$1‘„6là½÷¨«³«¹Ð—?I¦ÞõºÖ=Üð}¸QZ¿žŸþtXqàûÒ¥üãN±»»›ˆ|ЮR<*Š3œj˜X¶ÓÙIBßþ¶zúøú²`GŽ ·1²Ì—_Îĉæƒ4k”–:À’Ç, €¥K•î0*ôô$'G;eŽWÛ0Û Û˜<ÒÒÌ©«£ƒ}û8}ZOE\œÝ:Cz:Žeöló ûújJ[›rWäO‚UU[y#½½?n§Êm µÐEüüìr…d"®i>>Ô׳};99Z3Æ®q_bÕ‰3Æä/ΫºŒ}}ª7rèú%$¨EœL„±±\r o¼AM ññZ9¹î:ÚÚ8zT뺒®1Te†¬ñ pà tvòÒKÓÓCf&ññv©$Ëõ5v©»›¦&$7—’vì "‚·ß&=º:m+u˜'üÈ$$°d‰;ñí†ïSL˜@d$õõ¬\Éï?Ê2Ä4]üã-¥I5þâÌëxƒK–ðÎ;®z>íøùqÇvz&99L˜ÀîÝR¢èïè`Ζ.5ƒ©BC™7·ß6•¯mG_ ’•e…K8V_Ol,55=ªÖビ³aa¤¦êvÚÛ•¶!a—°*±iËloçÐ!%;Û⎇‡2Ö ÃöAÈ*aaVzFq1QQÖkh¨ò÷îeÁ³+BµÂˆ8îìdÿ~Z[™8‘ÄDÒÓ5g-sÆ„ Úo|i\Ó§óÉ'ÚÌ)s˜´Œúú¢…ÐØX’’HIaõj^{ ˆˆp| W¤##ùÆ7xî9ΜÑy(#C‹–Ã|ó›ôôð·¿ȤIv}Aà†Ξ¥ºš}ûØ¿Ÿšjj´ ÐÝÍ£âçÇw¿Ë¼óÎÐSˆqã5„>¸{¸áûÜà{âDüü˜0^ÐTÆp°[nÙ‘#™4‰÷Þ#<ÜêâÚÙÉ=÷pùåb+¹•SR˜9“>R­Ag{ØÕÅúõ,X`;žwÇŽ©ùº³¾ ‘4Y»Ö.õ,ÿŽÃĉ: ^ùHNŽSX’0FæºªŠƒijbÅ Á%ƒd1î‘ÎC1nog÷n š¥ÕEmŒ¥úñ㔕áïo…’JJ”¨c«.Ý×GQ‘Ö<-¶½½äæ’œl×J®µÖòröìaÎ=-~~$$PVf—qàäIZZ˜:•±c)/§©I×óZ “'sêEEfJJ:*ûûU¯\’B ¤¤•ÅŠÊqq¶ “’¸ážy†ª*<=™=ÛqGÂà›Áö•[n¡­O>Q¦¹ñÙ¶6šš¨¨`ûvΜQ›Ðº:}Ô"#éé!5•Å‹üüxüq ¨ÈÎÊÒŸä“ânøþ7 //–-㦛ˆ5‡{޽3Æ*(åÊÕ«ùö·Úñˆ)åœ9lÚäÊ~¡µ•¥K¹æ+§{`€Ñ£™4‰;û½JÞ98˜k®Ñ”·%ŽöôdÎ÷0èÝÝDG³h‘]sñ·´›Kn.EE45±x111€:¥;fRý O†´4-9îÚEq±‰VÒE)–4òEEäå™2L¶£©‰ÒR-$;&ÉßúzüýioW›4#yâåEUgÎhŸ§ìR` L‹ù²ŸÓ§kò=>žà`] aÃ0)-¥¹™Y³7Ž/¿dìX&Ovܨ̬Y”—ÛåŽl™*2óåçsæ {öpùå44°s'!!øùé "Â4)¶ »Ef&6ð»ß¨QÖÒ·3ùÛW<=¹ûn23µÓ8?ŸcÇ(-eÿ~ާ¹YõaD\–G¶‡ÓÖÆêÕJ¨•Õç/Éõ×}KÌ1}ºoÜðýo¾ûúøñu¡-ÏŒkÍnË8ÿ|ž^U“$pkiaÆ zH[ÒÎw%+‹S§0%=šÛo7—ù–™ã¼ó´‹ÒaÞ×ÇE1nœcê:ͼy¼÷ž™ðñaéRUPÁ†ŸWVF^§NQS£Ü¸8&OÖÇRôN8tˆövE«þ~RRˆŠ¢µ•/¿´J”³$lùêæfÒnxƒqhDý´µ©ÂTD„y--ôöª¬ í&4 ¸xÉ)õõ5õóó RöET”6ÖÛ. äÐZZغ•±c™5‹ìlÇòò©1c7Žƒ­.ò¶JO’÷˜<™Œ *+Ù¶òrõ„QYùEzúcbÇ×ÂÂÆË‹1cذ’;›„ˆ<¡ˆaµ·«9‘œ“¾>::èè`Ú4Þz‹wߥµ•ÒRíë-iÉLI2¦ä‹/6¿´¿Ÿ«¯æ«¯xúi;ËÁR_S§*íÇ9qÃ÷¿gˆi{;7ß̬Y,_NT”IàµU¹tvÏAJŠ §H®95•_ýŠØØ!‰„„0¾Ùã`‰CB¸õV»ú’/²²˜6Í›­¸ªóç³|ùž/99œ=ËÐÙÉœ9vn;­­rò$gÏÒÒ¢rwþþtvªé6"Ñ£GÄž=šd #ƒövv젬̚÷ò2ÍVz{9z”º:||”`+BÒÒ¢Ö BA±••tu10@Y‰‰æ&ªÞÞ45qê3f˜!!Ê(è9z”  ²²ðò"5Õ±sžÑ¯FY™i¥æpB=›‚Z[^÷Ž&Nä¼óðò")‰+®àÅÝššhh°SF“_ %,Œ°0‚‚ðñ!5•I“x÷]ÚÛ5XîêRÊ¿˜‰v®hÊ+¢!.9½ÌLžy†ñãyôQr‘µ ep#8uªÕËi`€ÿ˜;ÔÈE Eú³Ü™7|ÿ›<5•½{yábcUDò¿kXîi‹B±ÁÉ[²„ƒÕÁÏŸýÌqÌkyäA;—7ßtðÀ÷õqóÍ̜銖àíÍÂ…8 ª¤F JXÞkÖ¸r0Âí¹s5…2j *ÎVU‘ŸÏñãTU©Ó¼Á ¶‰ðX,OI! €¯¾R£2¶n¥¼ÜÊo-=Q\ñðàôiNŸ6#n[Ú;PR¢|Äþ~:;íAhà^^TVªÓ¼±‡Æ©8{–#T¥ÖLJ°0Š‹ÍôQOûö@R’ÊKutØ…–Òs4y2ññÔÔðÏ’˜Èôé$&ZÉÚòߤ$¦NeËB%ÂDJJbéRó„LŸÎþýʵ4ú£»›êj**”.ÙÓÃu×1}:ûöñÉ'¨È­—¼,blÁÅsGf¸k®QúÿwòøãVg©ÚÓÃÊ•›÷¶l0.ާŸfùrëòÅ6l—^‡áëkºsºnÅÁaÝ”ªêùñÇ´µqæ 7òÆ|ü1û÷+_82Ò|,^SžžÔ×óÙgšîøÁ¸îºa…F‡ç™3œSYÁñÄDââ˜7{î1 >Ã_'NŸÎˆ* ÚÕEB÷Ýg×WâzÏGŒ`Ö,º»ÕrwÆ –,±:0 f&ôôPPÀ¾}|ðû÷“”ıc9¢9b£Ÿ~ð*8=Ýi·žÄË›6QXÈØ±œwYYªˆ½ˆDʧN™ÒW¶iqAØž íbÛÛMŒnk£§Ç£ÛÛõÒEbVo/§N©ô]` U{O_««9p€èhèí%3“E‹ÈȰczºbŸlÞÌË/³s'MMvä˜1¦›‡‘ߟ1CçÔÁ¸¼d ¸Î]œwcÇš¥æ /dÚ4“0ã:|îìdüx.4Ó,ýýÌ™Ã-·˜)#󇟗]æt} oøå/IJr¼ô\¸??Ç$w÷p'Oþ»éoYŸ¾ý¶F"Ô“x°­²26mâå—Ù¼™;éî&$„À@ÂÂX»V—Æ-z:”£3îû–víÒŒÁÝw3cÆ9Tx<=‰ˆàðaÉÈছ·³§’ÉH²B$6ofËdölÆŽ%%Eµô7àØfÛ—-³3d°Í€óÁ>ÌĉJÅKI!"‚®.ZZ(%~Ÿž·ß6ËÈR´ˆŒä»ßU7|o¸K—ç˜?Y¼˜‰ÙµK5lÁ݈姯ýûÙ¿Ÿ¿þ•øx.¾˜»î¢ºš–•íD,ªeX’ Ó3fðöÛ”•±açg§â=äÄ#³™3ùäÖ®U 9„žª«9s†º:ÊÊ((PEo‰O%+=i³fDG³jo¿MI‰›D ߯ŒQ_DËÙkogÏö–” ÏEdÄââ8{–Ü\éë#4”žR~ñà/’?{Öî ‚ÑmmªôÒÔd/-ÕïµTd‰P’6–Þ"©ûÉU‹Ž&.ÎqÉWP/-M?äµL••9Âô錅¿?))LžÌöí À…º–üÛ|ù¥Y±}}øú²zµŒìü„ \r ù‹²KÝÞííL›¦úŽ–rkx8ßÿ>Ç;5÷‘?ï<Âǰ êïçŠ+ؼ™?ýÉÔ€FfÚ47v»áûÿ|Kpwíµ|õÕÐö FÖx`€ÊJŠ‹INæ­·xé%’“•9›œLRéé$&âïOh(ññ„‡[ï~ GVIyŸëÄÌžM\&PVF]ÕÕœ­ô™øÀ|‹ZÛœ9<ö˜5zMMeËjkp*n§¥…•+ùæ7†ÒÓ9r„’§V8°hogή½V“8‡„(¼º½ÓÓ¹ürm4wÓÅÆJ~>‘‘,_NO›7³i“Šô>?ŒKF†ƒgõÔ)Þ{æf¢£Uß ›qoo‚‚HH 5•¾>¢¢4­!'!¿X-{xhk¨aæ)¼£ >$DIKcôhFbìXµ1 ÂÏš6o&+ËND×v‰ EN¾và-)¡ªŠ¸8Í2K´ü|Õ*°½b¬±j•iÉFQeeøùÑРR»véÊÆÃCujª§'11:—^ª~uÃÁ¾ôtΜQ'x ÉŤI+‡L[óµwó'Ÿ(å±·—ØX~øÃ¡=}l3u†é`\£F1}ºZâ¹áÛ ßÿ λïªô’³&oož}–qãìÖ¿@h(lÙ24þÊ*;4”‡"%EßìïO\Û·Û™:º˜l|}5ô6ˆÞ$'«ãŒ³Õ}_+W2nÜÐÏd|¼î’LiÇŽé ç°£Çߟ ”|m»Ù'x÷]E«ÈH&M2ç<VdO„Æ3i±±J@O¯„á W-S©'&ªqWR’ò|BC‰‰aâDFŒ &F}ÔŒ P_ϦM´¶’™é€ú"EÚ#GÌôö¦ªŠ¢"ÂÂTäOeeTVš9 #uÙe$'›ˆ&@¶w¯iå®ÇË}û8z”cÇ´Hëç§éáçíÞÍ´i¬]ëÀOÎøz{“’—_ê¼b}Èþ ‰žrG¥¤Ð×Ç–-ÒÜÌÚµ\z©K_˜m“ü^_Ï™3ÄÅ‘ =únø>—á.]þKØ-J~Ë–ñ§?¹*ά]k´-·õå—óúëfä"vniáê«™<ÙL¿Hnáâ‹yõUWL^¾nq\´Hàl±ÞÓ“U«¨¬dçN«²!^!<\‘”<н½¤¥©ÀÿÙ³šsp¸WÒ~"‚¶ãØ1ÞŸŽkü0 nnÚ¤4”Ú¥4}´µQ[ËܹNç6Z!XÄÖåˆzzðõåÈÕìxàﯞ2ÆqùûS[Ë[oqþùLª=f Gš÷ŒX6_x¡É84Ö$'S\Œ^ ƒ»YW§„ñ€F"3“qãHIaÁΞeéRå-`ƒ‰Œ–[wÔ(Ö¬áÙgñó£­+?þ€e#ßøÛ¶±};QQœ¾¹Û–@ÛÓ¥™ ¢‚Ý»9{VÄóòxí5w'¾Ýðý?4ÄðŰhd£¢øÁô¶ÜEËõ×ó£¹R2è´ßø†¦bl—Ï×]Ç¡C®˜¼|mv~é¥VjÙˆ¯/—_Ny9ÅÅv nÙŸ9sˆŠrjÔ"/vv’—ÇŽô÷sÓM¬YÃgŸqê”v:4_ON6eÿdkGŽðá‡Ê:Qi‡Æþýœ<ÉøñôôX=0¯+(àÌÓ5ÍÂ<.ã_¨©Ãˆ¯»[O»vé`óñ!4”êjs‘! Žîn>üêj.$$„„â⨮Öé\´ ,Êì²çŒ¯élÛ ÕÀqÉ íÝ˾}„‡“Àôé\pAAtu™Cllÿ$ÿ½ì2öîeï^"#¹äWª“ƒÏ¡ü7"‚ýˆË/'3“9s”òdÛ¨)£¾žÜ\jj8qB=zšš¨®6o¶Ë.S—>wÜí†ïÿÑ|òd.ä‹/H÷÷ó­o1a‚]ó±e¬ZÅk¯qô¨5øµDÁk×:hb–éáúëyà§í—Bæ]ºÔ±4•|$>žë¯çé§Õ£Ýh.OH0+QƒÃm e÷nòòhldÝ:U³[³†½{Ù±ƒöv™}o™Òd’;tˆ>¢«Ëüv‡ð-*)aûví¯ikÓ¾‹Í¹Ì••Ô×;°Q–ßkj¨¯gï^{‰ wS»Ÿ}Fh(#GÚ}WHQQTVZwR&­]»¨«ã¢‹ˆŽ&5•’‚‚X¼˜Y³\å¤I|ñ…ƒ¶FÛF0)ç¶µqü8©©ÌšÅïOy¹2…0“šJh¨Ú„8¸î²ÿ7ÜÀ¡CÌšÅĉVžÁüJ?S§rÓMÄÅ™6FÔÕÑܬsCE……äæÒÚ:x¼Ugâž{»[¸‡¾ÿb·¸Š¬^ÍÖ­BïQ£øö·r`¤bb¸î:¾ÿ}Wyôt§.S,ZÄž=¼óŽãF8ÙÃU«œø†ÿËÚµ¼ô’wÞQ–·%{Öµ½Í›ijÂ×—–ZZ¬êtòþÒRJKÕ’ÑðÉ´¼­°PÉãÆ1j”ƒ÷HômTöÞŸ+®ÐÚƒ1Áƒ£{__òòhm墋ÈÎæÔ)–,Q² œÊÈ0==\GÁ}}\x!W]…¯/™™¼ý¶‰†ÞÞÚ+I|<ÉÉDE)'%EõÊ…ò1}:7ÞÈŒÃMYò„¶3åºu´·³s''NPQÁþý8@m­Uuݨ¸ØNH½½\q…J÷¸±Û ßÿ£Cnú5kxì1ÊËíÔ¸÷Þ¡;ÐX¹’×^ãÀ¸ä”¯½–ÔT§ILI¡>쀅"èþùš4wÇœ7’6n$0®.ÕÂ6Þlo'/¯¾âøq•¬¤ÛÉ#;™™Il,[·²¿æ‘èî&.NÓÓìÝ˧ŸÒÛ«½¶»dÙÿ]»ÈÏ×Lw{»ú™ >1côò"/Ñ£­Ò¯Ò ØÜ¬+›Ý»IMÕéÍ6„·MjK‹ÐGqùåšM2Òß«ÖòŠÔ-_}•e˸â ²'~æLŽ‚ÚÝÍ¢E\q…žÕ xóMêë5½&Í¢]]46’Ÿ¯Ü__ ÑŸ˜ÒÒHNfÑ"Ù½[›x¥WºĈGγ­#üUÞÜÒ½÷âﯞœƒ9?Bë|¼!!Üv›ƒì¢{¸áû"¨U«xöY»¶‘E‹†6f•wFDh Û¡öÓØ±\q…Ó‡Ù \{->ê8ô¾ä3SábˆØEe%‡ãáÁÌ™ê¾&Ÿª¯çàAöì1åñ¤7O~zzHL´êuÈÃyá…¤¦j’ûÄŒ±¯Ý»Ù´É´-¶Å>iª´ ñÄmg×.».C Öšëë9yRçaOænWTÐØ¨Ùù3g8q‚©S­gØV \ŠÅÅ|ú)«W›rQ¡¡Z0p8³vtANÉÉÒÖÆØ±ÖÊÁà :r$±±Ô×;)yþ|®½Ö\QÅÇ3ko¼¡GŠø¥m³Oo/µµTUiN¿­3xäÞ|“‡"<ÜìÜèo»ÃF«NK óç3w.==¤¤ÐÔ„yÞ¢¶åæ¿ürfÍr•]t!cH÷)ø×‡àÂÚµÉ]èïÏlй@p`åJ¦M££Ãz÷÷sà ®Ú }X¶ŒÅ‹íøÅòœÏ™còU†œ‡‚‚¸î:%q/\¨[>{–7ÞàÑGùË_”Aáç§àh<¥¾¾ªáçpq0a×\CNŽ>ØYY ðÕW|ö™ì6>k©I65±i“ž"ãýÒFo9™Ç«kšäÇÏœqp¼’œ5ü¦w囹ÉAîÛr-üü8~œ-[L˜‹µ^eƒèéɤI\}5+VhéòW¿âÕWµÏËÖŒÉrÆRSÉÎvÜÍ+×tÖ,¾ñ ;U)//æÌQF[5Tp™´¥33“{î!2’+ÔÒHi 4‚‚ôÇö1MNIág?Sý€õëéï§§Ç.ÁâbÙ*RßùŽu¶p7|ÿOà³f1gŽÊ×õ÷så•,]ê4Âüñà`Ö­³Rú¤ yõê¡CxÀ×—ë¯'>ÞÔò;1!œ 9\b"k×rÁ„„pô(Ï<ï­Ê‚^^ÚDca2;'Çé¾ ÇFØò¨ù%›7›U¾Áû#ÆÆƒÝßÏÎv&ô2jkí²U@K 'OjÄ'Ë—’«V¸,&Œ¹ÇLJòrѶ=´Ár²2Q}õ;vè+áá¦êˆA ‡5k”Ù-ç6*ŠÞ^ÞŸ'žàí·©«s âÀ´iVz¾œ> ¬ÄPOz‡¸¶ûo¬–||¸ývFޤ¿_ýZŧÂ@|×?@[ßø3gê^y%iiçàꫵÕÈz»áûÿ|ƒ2ódEÅ÷¾g†Ã¼•Ï;9shm5uõ¼½Y¿ž°°¡§A‘#¹æ­¤}tÒqãì16R±F޲¥…ôt&NäùçùÕ¯øê+š› ÔXØáB¸¿ŸèhÝO»çëË‚\uõõlÝj¦­å„'»wü8ûö9èihPÀ2ŽñÌÊÊt%$Ð|ö¬æd÷´·STd7«yyqàUUv;c›<±^^lÛ¦poX3Ë4&Íë+Vp啌k²)<<ˆŠ""B;*ß|“'žà³Ïhmµã}Cò'¶Ž3Ò7;eŠì6œ–,±³rq9º»¹ñF,0û/¿œ€€a9ÛÆ6˜³`|<ßø†Yòvˆà;ßqç»ÝðýŸ1.»Œøxúû¹ãF>‡0ÄhÂüÆ74‘*@ œ›å¶xbÍžM{;}}„‡³j• .¶Ki[oIïÙÇòøãÜ|3O=El,ãÇ«/hº ¥÷ô“ãJÄx½¤„¢"FŒàŠ+˜:•€ºº¤›"j'µµ|ñ…“%'kËE“=±-!HXרhrûäOvE6Y‰Ð6ùë0’5zî7m¢¨__eÑtuȼy\}5³g›¢}Æq‰pw7ÞÞPRÂ_ÿÊOðÕWæ‚Éà´„‡3eŠ)U(Ø=a7ßìê>47óÁ\}5‰‰9¢VDÒdËÕÁ†dmd Èϧ°œ–.%'G‹2CŒËæÍê"ÔÖÆ˜1Ü|³IrwxõElëãÊ0vO˜Àí·ëcäÙ¸è"¾újX¡wSßúK–˜7§œÌÑ£¹äž{ÎÕ+쬘n¹Å´fv7|ÿßòü¯ZŨޅdgóÍoíIíáÁ’%lÞì8Ç%tÉØXî¾ÛÚI+¿,_Οþ¤Í·Î[r–ÆŽå–[¬ŒIù}Ã^~YUkœmD¨â£G»Co7|ÿ'eÀÏ;Ó§9tˆ„BCíºÝœÝ¦¶y ¡ΙÃ_póÍÚcmÛð28Žv¸—]FHcǪvM ‡sü8õõÔÖªB¬¨oKs‡óvt0nœ)*•ÌÛn㥗ؽÛÔó³ý:Éõ {0v °{7ï½GQÊ·¼'6–%K˜<™¼<¦¼\û¿©®fëVk7¼m£«‹úz’“ñ𠺚Ü\²>>TWSZªðÝßoç~iyg^'Oj£¬Ã^s©L¬Y¤§ãåELŒÉ\v‘>JM嫯ì¾ZvUvìàØ1fÏfÑ"RRðócæLbôhn¾YIœC‚Ýøñdeqꔂ ±ï[naÌë’Îpw;ÿ|ž{ÎU\6rÏ=$'[÷GÂꉵA”°¦M’’¸ùfSÁÊ=Üðý‘? ¤¥…õëÕ¥%2üüÔ•<5•„bc ¶Þ¾~~\=))LŸ®«]g£§‡övÍ˃ÚÝ­~•ÍÍ̙ßþÄÁƒjæ`¤P}|T)i°±½ÌéévQž°»¾ùMBCٲŬpÚbhv¶ç™t×ÖòñÇlÞLOÒH,GdûþˆfÎdüxrs9rD{öDrVrƒ¯îGŽÐÖæ8oÐßOAcÇâíM]UUN)ÕÝÝìÙCf¦iÂiÈWÉ)Š%-ÌLRSUvüàA^z‰o~ÓÔWq6RSǤˆ·µñÑGìÛÇ‚,[FV“'s啤¤ C“\x8óçs옵ÉÖÎ֯砃¦lÕ*þñe=ÞO!z_y%\àt|}¹áÞyÇJ»´ÝÉuëÜêTnøþÏCðþ~æÎåòËyäÇoç³à`õ)ýRáK+yJŠ Ÿ–”ÐÑAM*{tvªbu{;­­46*LKãxk«vx÷÷ÓÖÆèѼú*cÇòÐÑ¡=2F:ÞY`%^Y“&9˜–¸î:¢¢x÷]z{í"\ÆŒ±["Î8À›ojǼÔcÅVÂ"z޽ˆR` “'3j”úàttFK‹B§ñcÛÙßÕPSCn®ÓàTì+ÛÚ £©I»à~~sô(³f)WZêŠ2Kl¬™„1âǼ<žzŠ«®ÒI×Y˜b]XT˜×¼õ»v±f ë׫¥œ-žºpcæÌáí·íÌt„(²h×^;Dü1~<óæñÁ„†ZïIU¥¦rÇC0,Y¼ylÞlU’ë•”Ä7¿éN›¸áû?5…rÏ=lÚÄž=ú¬ÚƹÒpÜÒBE…¶ÀØ錸î:î»þðò¢£ÃìT6âAÃFÇV=YÇ--,]Jd$sçòÈ#<ðÍÍÊq½ç")>q¢ãgÒLJ•+‰Šâå—Í W<ÏDźùç?Ùº•ÎN-?õ:)Hº8uF¯yK ±±¬[Gi)uu44PXHC]]šW>Á ?Ÿš«ç½íz_\'O¦¶–¾>§Å=IìØAR’>ŒGj*#Fam;4Λ¿?55<ÿ<55,_îÔ+]TG**œtŸòõeÄFŒ`×.ŽçüóIK#.ÎnÚp–¨ÉÊ"'‡/¾0ûÈ:;ÉÌäÛß¶+W:¼Ê~~¬\ÉçŸ;r‘+xÇde9 œ ýüذ/¾pü·Þªº1îÐÛ ßÿ‰xT<ªUtvÚ¥¶‡œ¶ Íýý´·ÓÖFf&‰‰\{-;v¨“dZ «\ ‚XÊG‘‘Lœ¨ÒÌ™|ÿû<ôŠh»@p¡Ñ£X(Øîçܹ„†òâ‹TWH{;™™v½õòî»äå©·²m.Ñ¥å(‚×¶m¼ñw߯/Zmm¥³“âbÊËih ²’ÖVúú¨©¡®N]ål[Î-_ÜJJ˜8‘ÂBÓîÒÖC’¯Éæ „„ÐÔĬYDFeæë-åC:Jˆt]]¼ú* ¬^퀚 * UZê€Àn¼§£ƒ˜V¯fÞ<|| áãÙ¸‘ÌL&L`Æ &NÔR-ƒÚÙå¸<=9ÿ|¶m3•#CC¹ï>FŒV¾bñbFŽääI»[æ¿å˹üò¡Ë§¬XÁĉ:dfÀ Ç×nÚ\Ð=ÜðýÁ—,áæ›ùío­™âÁàk›Xìï'5•å˵ þ‡?äþûMÅŸ!‡tågÚ2ˆ˜Ñ½÷òøãtw»Z¹Ës>yòTÅþ~Æç¶ÛøË_8sooâãÝøôS>ÿœövò—à‘kìÞ¹“—_¦»›º:õ¸ Ö¤Ó”)tuQS£uOEEôô¦H*Ð,¿쑾>òò(+£ºšŽÂà ÆÏ__5lj‰! ooBC ×䕼Ԝt2Ržž|ø!UU\u‰‰vgRX=11Ž[OO-ŠNžÌš5j#70À¸qDFÒÜÌÙ³œ<ÉG‘˜ÈܹŒÏøñ„†š×ÅvºÊÉaäHSþ¦›†+œÐßOh(—\ÂáÃæ:IJññ|÷»vúÎnBiÉY·Ž;ï´–‘¿õ-qs‡ÞnøþÏÍŸßû7ªkÁpÀWÆÔ©êó+䪳gyá‰HcÂ3‚–í\pÝÝüæ7„ýlCïÈHs‡|833¹í6þö7b€£Gyë-òòÔŸÌYs¦ÁÁ®v~çN^zI¥þŒŠ«m¤i¬ñÅÖkÔ(hoçÚké›ÎNº»éíU‹K‰Çûû;:˜2…É“ '*а0]Ü öŠ++ã7¸ç§fø¶ÍüìÛGM 7ÞÈÈ‘ÖTxPƒ´»Ph¸äV¬0õ°Ä*3$„†üüðó£·—‚rs Rà HK³³.êë#&†éÓÉÍ¥­5kX¹r¸¹f™¢Î?Ÿ¿ü…ÊJS«»››ofܸáÖX³†ßþ–‚}?#G-âænøþÀøå/¹òJÇÑ–CtફÌ̦·7ßûžÙHùqÈgÆÃƒåËí2Ѳµ‹.¢½?üÁ±D”P8ÒÓ‹‡st±±Üt[·âçÇ›oòÙg´µ)î¸`ûúø˜¢þ–Ýöð`Çþòe ¶´h/ÏàyÑÍ==ùê+¼½õ¨‡<Ã'O2i’㎅NÓÚJa!ù ßùÎö»–æLI¤óôÓ\w3gÚ]ýøx;_$C˜03“µkõüÛ%IO§ @qÙàzö÷sü¸ZƒfeiϤ8; ·ç¼óxõU¦Nå[ß–™µíþŒÍܹüãøù™²‚ëÖCq?II\w>hË­·«'Ó=Îq¸Ïæÿ`Õ*®¾ÚN¹Âõû“’˜>Ý.ÎÏ~FròÐÝÌ’ýÇÞÁ¨'¢7Þè´Ôì,W‰iÚŒ•¯—£FQ[Ë®]45™ƒ.>ëåeç‘fûþ;ùë_MÓ)óyÒòòxóMŽ·–ˆ-?ò×ÖVÞxÃ.Knaveáînrs æäIþö7ÚÛ]MÀƒrÒÕØÈÿ¨:ããB7”[BšïEîæÎ;í°Ûv1z´]€od¥•¹˜›ËŸÿÌOÊw¾ÃŸþÄÞ½tv2b—]Æm·©‰‡¡—`9jgWjíZMžôôɽ÷|Î:×^KLŒ~ïØ±\ýë÷pÃ÷P ÅÓ“Ÿÿœ´´¡“}1-_nW_’¬Ë„ <òˆ.œ]§5ÚÛ™1C¿n°¯¦—×]Çõ×ÓÛk}ƒüwî\ëJ0p)|ÀwòÉ'LžÌÈš5ª •‹#õòrlÙ¾c/½¤ â†X (·8ÄMÙ“¶6Þy‡ŽÊË))1QÏÙÏÉ“œ:¥Vd²“ƒÓÙƒ¾¤Àߟݻùè#«‘˜Ãä‰Á}}éëãÍ7yé%ÚÚ4ï$ …²ÿDE±a7Þ¨\{ ºÉ+‘‘ŽO©¡ü'éûžrsyþy~øCn»wßåÒKñó£¾Þ¤*Ùò”l•-€îáÁ¤I*žÓÝÍõ×3{ö¹%¬ 7d)uwÜáÀµÎ=Üðý€§¥ñÓŸ½tíëÃۛŋ­OˆÄàË–qǦ°‘³Ì€¦1º¤­Ý:Ö®U²±5霔$¯CÔ6N„–ÇgÏE–¨(Ö®åÞ{™? ³Ói•Oâm±ÉÃ;5gb[Y ©¶6WâÆ>LHж.FO_~‰§'ùùìÚ5Ä›å«eW}|øàvìpzP†)Ïà+â鉟[¶ðû̷߫§§ú«uu1mwßÍüùN‰†2bbÔHÁ…|‚äUDù@òN£FQSÃ5×pÍ5Ü{/¿ûù‹Êluvšá¿-¦,)qù¸ðBºº˜<™[nùWÖFýÆ×—‰MwwîûÍàúëyÿ}Þ}×i S^OHЮÖ–o~“S§xë-ÇeLÉœDE©LŠ‹éÄLJo}‹Þ^ÞxCWÇçΛg…oÛŒÑh3ØÊRÎOs3o¼AK‹&"<=9}šæf®ÄFpÏÚÚð÷Ç×—ÂBvì`Õ*§•€ª*:;5Û+W°­¿ýÛn#5Õú× r¢‚‚(+ã׿fÝ:¦LaÊínN2!2’ðð¡»®€öv.¸€{ï%,Œþ~BBHLÄ×WÅȤƒ´¤„ÂB€­[õSaaÚ—MR£G“™IH==<ü°’P‡tüp¶WžžüàÃʺ‡¾ÿóòRž “ÃÈ=÷8M+{zrá…Úã0øQ‘i &†_ü‚ ¨¯·öàHô½d‰vʸxNŒ‚Ø]wÑÓÇ@X˜ºÛJs3;wòÉ'ª%"mý¶-”þþv‰lc¡ÌòåLžÌ石};MMêç ›ŒãnÛ­uu9FÆþ~>ù„Ü\³-ÈÛ›†ŽUƒ·Á£ºZ[HŒ³ýÅLŸNB‚cŽL´¶ßèçGi)ÿ;ßù!!v!³³ä 6ò„ííøú’˜Ho¯–ÏiÄÆ!ÁÚ×Go/k×rë­zZ ø§Ÿš JžžÖÒ±$»ŽãÀ??4>¸é&/æûß–„³Y34”o~“¨(wÊÛ ßÿkG?·ÜÂGñùçV%6ùoN3fèæìíïgÚ4~ücî»OŸO#Lîî&1Q…^‡¹ªõ÷ç¾ûèíåŸÿT•AÊÊØ¶Ï?'/Þ^üü”½`i¡”ü‰Ãqq\{-S§òÉ'<¨Ì™ÐPÏæ»C€ÅÊR@áÈ>ýÔîƒÂó;s† ÃÄÞ½TU™"|¾¾TT°y3×\ã`û55*Õb‘ àða^}•o4“6΢o¸ÅÆaâDæÍcâD‚ƒÙ´‰ßþ–õëYºT›˜\7²{x0n7:Î]OÆ×—›oæÊ+5}$w‹‡3fXÇêî—RÒßeeÌšÅêÕx{óPVö¯ßùO<á@Ò=Üðý¿)…"iß`÷nõDzý”/¾P"‡¤š…K¥TŒfvØ îÈJ|ï^>ûŒ#G´gg8Ø-[¨©±bkCï¼cõ6L„kjˆµj67³w¯'™dvîdölío´=„ÖVu:,QÀÖ­DGsÉ%¦ÅŒ¾ …ÂÞ^BB˜1ƒ¹s=Z'I1•–òë_óé§\usçšò‡Î®!n"‰Î]wqþùf‚èhBBT%ÆÅy¶mŽomeölþð­…L™Be¥cõWÃË‹în{ïuW,Ýðý¿Áûú˜=›ûîãþûíùåŠ+†åI/O·¿ÍÉ“lÜHHˆªÅz{3c†]HèìAµM×!!üøÇTV²{7Ÿή]ÔÖâím‹9;œ  !ü-ùºUgÎÆŽåóω‰á‹/xñEMà8ò¶ä ÷È?úˆ¼<»Î/jk)-Õì¿í8yR]ÍlK£ÞÞ46òÙglØ`ÍViü`ø||øðCâã™3Çìç´M”I·gL S¦0{6YY&Лõ÷ÇߟÇ9y’… Y»Vž¸T‰[ZìöJìLùј2ÅŠÝòK\£F±{·c·Á˜ÛÚJN¿ý-))šÇ›8‘÷ß®lƒ-v/\ÈO~2Ä´äÿ–­ûü%Áo»éÓµŽo¤JÆS‘©aòaaüâŒ«Æ B1>ï»wsö,))¼ö6Í3ÏPP@`àÐ]þ‚>C–àäéõò¢ªŠ§ŸV=¦9s¨ªâÀòò8{VƒJ//Í!Øî¹Áûöô¤®Ž·ßÖ–zghRRBS“&‚ä\åçsê”cV‰^?ûŒQ£ÌlOõõCôŽúúÒÔÄ‹/r÷ÝÄÇÓÝ­ø8r$³f1mš©@âhk®ÓÞÎßÿÎW_qÙe¬Xa—7œ‹ÓÒØ·ÝZk+‹qçVa¬Á'?.nˆ$_{`ffòì³j¤ a˜Ht4µµÃ~0’r¿ý­J÷¸Ù&nøþ'1Âo›ßüooúúÔø_ä%ó‹_ÐÙɬYÚŒˆñDµ´pêÅÅlÚÄÉ“ÔÖRU¥l6‰ÅœSÄ^|‘Ï>ÓöHò„|݃ã"¼²€}áŽ!1Qï´4ÒÒèîæÌòóÙ»—šUÅÛÖãFì&úûùàΜqšhº´”Ó§™:Õ,ßíÛGs³ãOIÆüÈ`Ö,¸KJhhpìŃ EÒߟâbþügÖ­ÃÛ›±cY¶Œœe©»V(,¢íåEp0¥¥üîwlÚ¤ q£v*§12Rç{qg^»V-†œõEÂÌbÍ(ooz{Y¿žï~×Lй‡¾ÿ_K¡$&òðÃ\s ÝÝ\z©)‚á"F³h…ž,?øL›¦[>s†Ã‡9}š;8}šÖVÚÛñò" ÀTj5üÒ¼¼ÔÂvåëãÃW0v,Ï<Ãþýøû›ëhˈ,­‹ ûÐ!ž{Žƒ5ÍÒÖF]ŠÖbïàîïϸqŒGCååìßO~>EEjÅÄÛoÓÓ£l[ãfË÷úøpè^¨+A½ ½= Àóòؽ[‹úEFû¸¦E©1&†ØXâãÉÉ!.NÛß·l!"BüaŠ©ºx]Z+7mbß>V¬à²Ë4-6z´ÎC·ÝÆe—Ùg×#0¸8ÊÊd?d‚ŒŽæé§™:ÕÁþËöGÆËK3ïÎv^Þ0s&?lºF¸‡¾ÿDp#¼ê*þò–-ÓB–¥Æå°”gmm´´píµ”–ò§?±?EE”–ÒÑ¡°ëå¥ ë°)ÍUÃV$'‡‡æ•Wxë-éfŽèh+ˆ}ö]]¼þ:¯¼BS“]³Os³I[D‹ˆ "‚qãhl$/C‡èéáóÏ),ÄÇG?.Ç%se;ÞÞÔÖRT¤[ؿ߱±%÷ôdóf¦M#0ü|||èéÑâ„Ø×ÅÇ3v,11$%‘’b—((àùçÙ¾ï}„„aÁÖE (ˆÎN^}•;Y½šU«ˆŠ"+‹•+Õ&ØYfÆa&zêTöîu¸DDðÛß2w®ã@^¾bÁbc©¨p ß’W‰å÷¿·³^r7|ÿ¿ ßÞÞÜs^^L˜ bêµÖßOCª«WY©R|ÔÕQVÆO~¬YìÜÉ知.e†.¨ë|¥§§Ò{-œ3)—}ç;ääðÜsœ9£¹#ò•PtpÐ-ÕÂ^`Û6|}­IçÞ^º»µÕÞ!¤Xx83f0y2%%DF’”DU•¶Ñ‹õeCƒª­ÚN>>´¶rìãÆ‘—GA)*b¼Óˆß ¥=NâóÏY´ˆ3gTÍ<-˜²²ÈÈpР$ÛñôäÔ):;Ùµ‹ÿ˜ü€‘#‡Š‡Ãƒ–„xHÕÕüæ7lÚÄúõÜu—ªÛ²Ú‡œ*<=™0Áªx%SlP=Æ’%CìR\))TT8½ŸÅdî÷¿gÚ4wÊÛ ßÿ?@pY“þèGÔÕQXHE ttÐÝMM ee”—SUEM MMZÁs¦íçGVþ3¿ø¯½fåo¸~¶½¼HKs“5É… ÉÈàO²Ö3==íFäͽ½|öÏ?Oy¹]Ðm ®è†0 î|ø!ðãÛ‰˜·¶ÒØH[TWS^®SZG‡š…=ÊÒ¥lÞLc£ŠkK¶Zþ•//Õc‘Ÿþ~µÐ\¾œ´45¥´µà±UG±¡­«£µ•ÈHNžä‡?äûß×îY×ÝaÞ$²ÈÊbéRÒÒøç?Ù¸‘yó´?‹¡<‹!¾B†ú®ˆpùùñË_rá…®vÕ5/fϧ@_ßý.—_îΙ¸áûÿ7ÃLJ”Þ}—Ûo§³ÓÚ îìq2X€Fl%<¹ÈHœÈHþøG’†šÅǤ))üøÇääð׿R]­‚Ú³cÄËÕÕ¼ðÌÀ€Q-¾®’ÕթѸëö"OO>ÿœßÿ^ûq„²bkziûfIO77SQAm-==462~<£F)ÓN ¶Ù"ë!ÿúúâã£ÿ pà‹™‡ ìÁY—¾>JJ” He%÷ßÏ­·rñÅ®ò¿C·¤ÑÚÚˆˆàŠ+X½ZûÎæå—=šœ.¼Y³HK³›ðœåܲ³IKãäIešKÿþû¹ì²a™@yy1k–Ó”w_—\ÂOêø,¹‡¾ÿŸ¾¾¬^ÍáÃ<òˆ™B±”æ,EK#"‘Ql,IIJðõå§?%&†_ÿšÎNüý‡ÈœHô=X·dpüåãÃå—3fŒÖ3 y `ÇžžS§4Çâpæ5¨êê¡ žžlÙ“OÒݧ'ûöqÉ%v3Še³&GGk:¾»›íÛY¾üÜVñ<÷sç²~½ÙLäb?¥ƒß • ›°µ•_ÿšŠ «.Êð—ebãàãÃyçqÕUŒorPÔ×óÉ'lÚDb"çǼyÌŸOX˜Sïy )‰¤$VªèÀ?ø×]7,žŒü59™ˆìÒß2Ïþ $%7v»áûÿ_Ip__zˆ¾>~õ+;Éü!‡<<))ÊLÍÓ“[o%1‘ŸþT™Î\?&ÆK¯Ãý×ó‡æÿàï×.°×_çõ×M…UuW C/¶oçÉ'im% €ÆFVø¶$Êdzòñ>â$1QỸ+œÇ‘#œ^ZÊë¯SQÁ?ÿIV–IRtG‹w¤›ÿ{’“ÉÎÁËÊt}`›j©¯wÞ¡¾ž;ï$)ɺ‡ÿ}}tv’œÌ¥—rñÅfbÊö²Jk¨QQðö&<œÞ^rs9vŒçŸgÊæÏWË=£>,À:kûÜußùÎ9ðÓ uÉŒ ¾øÂúúã³h‘»ÿï÷©ÿˆÁùKnºÉ”CrÈh›€6Èþ~fÍâÅ™8‘–§ìí%!AU‡98.¸€»î¢¹™ÇcÛ6­ s8+À BíßÏcQW§TEQ¶*( ¸ØiÜj™þúWΞ%"‚M›8qbXÜ àÔ)ŽÅË ??ÊËùíoµËÉõ79â@MEV*ÁÁlÝÊÏ~ÆÑ£ŽeL àÚÚðõeíZžx‚k¯ÕbÆàÉòN2<ÒüýµýrÛ6}”Õ«¹ã^yE…^…a9j}}Ü|3÷Þk×T9ü1ožB¶l³¿Ÿ;ï䦛ÎÁ¿Ø=Üðýÿ,‚òä“\q…ö%¾32<ŠÒ/>z4Ï?Ïùç«Dí࢖À÷pR´ñIá´¾ž_ä‘GˆŠâG?âî»IN¦³SUI]¤Œ%:nj2aË´9¯~EE…UPp`@Ü.& yÿ–-|ò‰ú¯77óÎ;C[áÈg¿ü’êj|}éí%(ˆ}ûø¯ÿҙƂ—•i¦Ãm†„pò$?û™úd›2䥤糷—ùóyôQî½W]iœ‘I»<—FX%!!øû«ƒó÷¾Ç•Wr×]ÊÀññáþûùÅ/LÏ ©÷‡¤${2ožR¥\¹x±š¸ºË•nøv#8ýý„†òÌ3¬Ze¶&Û–¶#xj*O?ͺu´µ9°Ÿ—o„!D·åƒžžTUñüó\wßû;vÐ×Gv67ÞÈï~Ç]w1~<ÝÝ´·Û‰dY†—55j”lIXŸ<É/II‰Rý,ãÀW`*[¨ªâÏVý¿¾>üýÙ¾\ц©æ–-&'R´p?þ˜7ßt8Ë imUSg—ŽóÚZx€÷ß××7{yÑÓC{;ÙÙüèG<ôS¦ ÍtÑýo ²Àkh¨®Z^+¯ä–[hjbþ| ¨®Ö\‡——y™,®óGx8™™z\<ÿâèQÚÚLjŠ-L‹¼xTÚBa~>?La!AAÖC–ìªâÄ Uµv–zùeNŸV t¾VÑ{ûm&OvlalŒ={(.¶‚£—/½Dz:sæ8ÎQRb:ø8›b}}éìä‰'¨®æê« ¤·—–²³Y¹RÛ)^ŽÃèÛŽKR¥­ øÆ75Š»ïæï')‰I“˜0¸8µøâ‡Ãì¼A_éï':šóÎãøq‚‚TTÖÝ]é†o÷°FÄqq¼ôW\ÁÎC¸œˆMåS‚÷ÜCT>¨„BYn(Ón0èqÙ™3¼õï¾K~¾r¥ óFì»l¸à-bß>>ý”]»hj²‚¸§§v'Ùbwa!<ÂéÓŽ«¬²ÿµµ=ª!ªC#y™9l›<…É·{7_}Å‚ Øh5Ú²EµŒo—9££ƒ'žàÑG­½”ò{}=uuŒ#"x?þ3%%Üz«²E×­Ó`vøùïa?§^^tu©¨ÙÝw+m\ZRssÉÍåµ×t1‚¨(FbáB23‰ˆ`Ä«¸•huI¬00Àý÷sþùîîJ7|»‡“91‘W_eÍöîu…àâ#>ä” Ðyà DFrÿý”—«v¿¿¡-Ÿ8q‚×_çý÷)-ÅÛ[ÍË ÐØùùù1w.3grâ7²};µµZ”`­¥Åt`¢ÈCqò¤ƒ¸Û‚G'N¨>â`®©á…èì´S öÛÚx÷]¦Ow`Ñ+Ÿ=y’C‡päÅ‹¹¢‚§žâÁ‰ˆ°ÎC»¿Ëû;:ô³{ö0m“'+'}˜Ò%çß²ÁæfRR¸÷^5óð R޼|¯4:= ðÅ<÷@J ãÆ‘žNR³g3n„„èm6z4wßÍ]w¹Ýðí.<%Eüða.p™•å8|vˆàýý¬\I|<ßÿ>Ç@H‰‰v·ŒýûyûmÞŸŠ üýµÅÑvŒ‡ßò-F$îíÍ„ L˜Àš5lÚÄæÍiÏ=hÖÅÓ“ÊJzˆ£GÍŒ‡³l€¯/GŽPSÈÖ@¸¿Ÿ×^ÓŽ! žŠ!ç¾}ìÜÉÒ¥²ÿÀ¶mª«5‹E}ß>^x{ïµsºééáèQÇf¸pˆO±‡©©ŒÉ¢EŒIl,O?—ë×[Ù®ó!Fw’‹7jàK—ò“Ÿ0v¬Ýö %ÛÎ/£SL~JJ()Ñ¿úûFr23g*£|Ê~ö³¡wÃ=ÜðíFp23yã V¯æÄ +‚Ü!Ø  „ÂéÓyñE¾û]>ý”ÔTuù‘­·—½{yå¶l¡ºZ33¥ %RWç}l-Á€ÌL23Y¹’/¾à“O8}Z5§<<¨­å¡‡8thì6âô¶6fÄëë»vñÎ;NYçBå~ûmfÎÔn[&um-;v85g0&€wÞ!!Á®M±§‡ÂB»¢¨qཽ´¶âëKX‹1i3f˜«œÎN¶ogÛ6¶mãöÛY´ÈNirÈèÛEž]4 ‚‚¸ã¾õ-lkȃsƒÍ îP¿Š¦UU±?ÀÚµ,YBh¨»\é†o÷‚ggóƬ\ÉÙ³bpÑü¾’ÀMZÏ>Ëwræ ÁÁKîØÁë¯óùç45™ÀíUûú¨ªzÂ}KHàê«Y¾œ;yçjj¨©áÇ?fÿ~e „ ‰M{÷²j•Ýë üùÏtt8ÍA þ9ÂÖ­\|±õ+vì ¤dè”ù iiÌ›§³]}=­­v†¥âPÜÛKL 3g2e sçgn\>ØÝM}=ÁÁìÞÍ¡C\v·ÜÂȑֳ“àìV ©‰I“øéOY°ÀñÖ†“ª›Ëúæž{øå/‡>Qîá†o÷°Cð±cyóM.½TóòtɿΠœ=™ÆóÅsÏñá‡s꯾ʮ]46¤ ®Ãa™jj†ŽmA<"‚‹/fáBjjøòKÚÛIK£ºZ%>|}5î3 òóÞÞQQAB‚®¾ñ†Jy É}|÷]Õ1>ÛÖÆöíôöaâc”1ŸzŠäd¥fŸ8AK‹æ‚::T~ 5•Å‹ÉÉaÔ(:m¢=<(+£¥P=ƒ—_fëV¾ùM®¸B¯¦‹ØÖaî[d»õëÕ{Óâ»d ßaNö|Ý êãÃðã7Ïãnøv»GhòdþñÖ®¥´Ô T”º0dÇíó,øØØHe%±±ÿ_{gU‘îÿOg#I YÅ€‚(¸Œfà‚,^PQÁQApÐAun0 ¸à\D.‹a°Š °†a KX&@‚! `BH!ûÚIýþ¨šsº;îÆŸ÷:j}Ÿ~xBç¤êôéîO½ç­w¡ €ùó9p€ÐPÂÕ é‰drc ·7‚š"9™×^cð`rsIJ"?ŸŒ RS))QE?$Ím]²-Nf&ééª+‚·7ÿü'ë×»OÖ—©›©©ìÚÅðáf–ü¹sœ<é>t„õeÎÎfÎfÌ <œï¾#?Ÿ°0|}éÞž=éуÛo7íS‡}`ã*%'SX¨Úœ ’ŸOt4Û¶1q"ýú™¯ºî%u0Ÿå[YTÄm·1e #GÖû^Ègd½‡=㥡Îܹ<÷œf·Æ·Ö’ QxàV¬`äH®^U¥‹7VAß®mm[ïgA{÷’œÌîÝ$&ò›ß°};«W³v-Ë—sñ"Uš•¾ï‚O_‚¼‘—í3gÎðá´iCë֪ޖ죖ŸÏñãœ?On.ß}Ge¥j[,ÃÕeg¯”~XE°,[Vob§üÚ¼™^½Ôf¯ÅB|žQ£‚K—8qBUkq¨Ð[[Ku5V«J¸oЀÀ@BCñóS¹*YYüç2nœIm#¨ÜuXpíš¿Ìó¬­%.Ž}ûxñEF2›Ö;ì=Êõ¬´”† ™2…±cÍ6›® ¤>H.“}M ÷ÜC\wÞyÓÑZßZN¾Wµµ Hl,/¿La!)g¨C#ù%/(à̶n%%…„»2­ò¯ŒÔùçíÛóñÇ Ê¢EìÝ«œ3.¶½¼¨ª2[t:ýzL9p€˜’“ V›ÉÉ h—´m+YŸ:”ª*228}šË—ùö[òò8w//V®¤¦†’ÇØù#;<ããÃöíôíK³f=JV ˜åd½u‹…€Z·&"‚&Mð÷',Œ¶miÝš•ÊxìçÎñì³&¸=éo)ñÏsÞ:Y2=4”¼ž L_Šáþ’Ò£ï¾KT”yåVòâ»X•å…ª©¡_?–,¡uk]JPã[ëG·$øˆTVòâ‹´j¥¾l¶÷Ô?ÎÑ£lÛFv¶™ßhë•UAdÞCœßCqÏ=lÙBl,ÉÉ4h Xã´èGYeevoŽ‘ˆ_´ˆÏ>£¸˜Õ¸ÝLJ}û˜4ɬñï´hŸ¬¼êïϽ÷rï½€j LZ< Î¡ºZù7¤½\U¥zŒY­¦-°XHJbãFžy†o¾Á×—[o%$n¹…6mh׎&Mðõ¥aCš4©7ÐbÓ&/æêU&LPžwÓ+WÈÌtŽo)¹UèçÇáêÊù„ t쨬f•šô L›FãÆ7çÖ Q]˜]ÀÆŽeöl5ÒìÖøÖú±½(B0z4yy*TCÞgg³o;v–FV–£·Ôiì6ØÕ'2 Àˆüö·¬YÊ\ºDP“˜EooŠ‹).v‚oƒ)çÎ1{6›7«l{coo.]"'G9yëC uZEDÁÒ¥ôîÍÀvè—Œ®ª¢¢‚ÊJÊËUëËÊJty*+ ¤¨ˆ§žÂߟV­hÖL½§Þ꺹ò¹¹$&âïÏœ9äçóî»*ÈÒÒÉ^qFá*î&éKYµŠ„ÆŽå™g Áj¥iSfÏfèPô›Â«¬cå´ÞºMbbxûmO“ ´4¾µ~ˆ&MâêU¶mcÇNœ 1Ñ„£‘vnÂHdZ`@€7%>š6åPñÍ›).V)ׯ2àí­ZË0>Æ;w2c†ª!åèçÇ÷ß³w¯û¾ì¶¿’È›3‡Y³˜7¶mí~+Û{º-#=ûO>é¤á}Ý6l'`±pø0©©Êç¾|9W¯2{6MšxÄ»¬,O«ÝD¯\!:šõëU¿æÍ›éÔI-E7ë R÷[—rm ä“O7Îôziý\Œ:} ~N^À×—&M aÇRP%@eÔ¶'uœkjLïŠíøFlbd$Ÿ~Ê’%ôê¥rðdíé)+sì|&™RTÄ0a/ª(r‡v ddÜD,šœ16–¹sñ÷gíZ®_W«‚‘ðíð0* ¹˜mÙÂäÉ,[fwÿaÜ1Ø>œú‚¶m3fëVÆWn`Nžô´‡\ƒeQÙ¦MiÔooªª8}š‚ÓMS™œÔ,”ì¾õVââ7N ¨Ù­ñ­õ¿ q__~˜Ã‡U !«ÕI¶‹kI:¸p_H4Ȉ—Ù³ißžâbå:—;%%v·ü^^¤¥1~<óæ©ŠÛNÍF}ü8—.¹b3ŒÁ•+ùðC|} ")‰­[íNµîC2ÎxÈMÝ‹ùì3¼½™7„„›HX—ÊÌäèQ³7±ìÉ ýgÏÖ[ûÛxòüyå‚w n™‰SRBh(/½Ä²e|ñQQê¦á‘Gˆ‰áÌsgØXÆ\+0Ðß2ü¼KÖ¯gøpd¢ñ­õHp!hÔˆ¹sY³†¶m=гJuµâo}ß|×À³Ïòżñ!!) ZÆ_û¯¾bÔ(þþw6teÊT™™ä溚ÝÖì]¿ž˜E7ùÌš5zDc«•Ï>#-ÐP ™>¬,Wýê^±­[¹zÕnﱦ†† 9y’—^"1±Þ¾hòrÉNí®-îòrŠŠh׎7Þ`Ã>üž=Õɧ¥áåÅѣ̘Áo~ÃóÏóå—ê½ö²kˆûûÛùmdäx¯^|ó*àá‡GKã[ëG#¸<õññ ¦¾Àb®¨P Ü®§0컈Þy‡Õ«> °P×>>\¿ÎÌ™L™B^ž*Aå¶/¥ÕJB‚ËW. »v1}:UU*¥HqŸ>Í–-7ç{Ù¿Ÿ/¿$8˜êjIIaöl‰áÉríû÷;™±¦†23?ž­[„BÊŸ³²Ô†³Ãªf„9ʤӻîbÖ,Ö¬áwèÐAE…[,TV’–¦Ò|d²åªUŒÉCñᇜ1¹nׯ{_àûï™7²2õB¤Õ¼a šÎ#AJ IIΓàý÷ë >^¸ BƒdKa!¡¡ŒC\ŸÎ#¨XïºyLò¬RS¬µF€\jkIN&:šþý6ŒM›¸zÕ|#Œø“åË™6MÝhvk|ký»8R¤Î'Ÿ°n;ªH5§m¡ÞÈ“ú\òÛ¾w/£FÑ¿?ï¿ODýûóÖ[lÚÄ¢E¼ú*wÜAE¥¥”—«8 §« ŒKMu4å¹åçóûßsút½ÍdøJRÛ·»òŸAy9óçsù²“tGiž=ËŒõîâÊgöíãüy÷å %ýý™7wÞ¡°P½´ÒRRRðõUá:­[3iëÖññÇ<ð€éŸq±y˜–¦b~ê›W^%yÁ¯\aÃ{ŒAƒˆ‰!5U½Ø®]Uïy‡Œ$-o­#3\† cÇžxÂù~¦Ñ†w¾c[“ðàAž{ŽAƒT¯Û’’’THµlUŠ‹MóÙh†ðûßsäˆÊ³w±\ÕÖ²vm½¸â¶mlÛVï2`µÒ°!;vð—¿8O¼”î;wzå"¯UÆÄÅ)ÏÜxLM¥¢‚;îà½÷X»–èhÕÌL®."öä¤Òñí6NF¾ƪyü83fУ#Græ ÑÑ<ú¨ü…Ig]þâÌpùMn׎µk‰å½÷((P÷×¶‘ÎFÕÀúX`ø²eÁ6nTþ™ù]Zʾ}DE™¡&B¨‚Sýûsù2 :ÄÞ½|ÿ=ÅÅfè±<ØÇ‡ìlrsÍ®²ù›o²w¯vc?¯ y×¥Þ¥KÌŸïÞdö÷gÁ:ubð`'îàôtŽWÎ}·WÞÀbX7rñ"ÿýß„„й3¯¿Î£Ò¨‘ymÝnþ ÙšÎCoœ¼€Üw*EV;L4¾µ~f¸Ÿ“&ѳ'S¦pèzÞÀY}|4îå¤$/fÍÜÒÄ“a|rïÑÀ–­‰Ú¼9#Fðøãäç³w/û÷sü8ÙÙx{ãí¿¿*Û½g‘‘ÊM_R¢z¸m€iàÒjeõjúõSVôùçœ9Ch¨›VÈ2SfÖ,:t S'Ç–˜[¶PP`·íé”Ú2’º²RÍ%Í›ãïOb"ÿñ,Z¤ÎÐÃ"…¶ƒ“‘áþ>Éö­—ïQ“&ŒÇĉª¶0ºl·Æ·ÖÏÈ — ~ðA¶ogÆ , ªÊt¤Ô­?gë„=}šeËX±BÅçà6L< 1‘ìlZµ²+Zk %ëäµhÁ¨QŒEj*IIlÞLZ99ª„^zº"NU|ÀW_¹e]33(ˆÄDöìáñDZ{ð «V¹i¥fkÈgf2s&±±ª©±<«¼<pB[Û kY=¦ºš°0n»¦MyðAî½—F¸ãüý™6ª*bb UoŠçë —/sþ¼yÍ]ƒ[æçLj¼ù&Ý»ÛûZßZ?'‚KÊ„„0g½z1u*iiª™l“h›i"?{–¿ü…Õ«¹rÅ ¸mïÐÓÒ¸|Ùß¶S;T׋Œ$2’‘#IKãÀHHàÈΣ}{æÍcåJUÿObÈ¡â  Æ­XÁ#¨ ´ò™ÂB>ý”¢"ðÍ¿²oâã™;—wÞ1y”Dr²]m[y=ËË©ªR5uÃÃéу;ï¤];î»Æíò¿ûޝ¿æüyfút 2ã/=äiy9yyn®ƒ­·$*ŠiÓì&Òo­Ÿ·#2„.]ˆŽfíZ€ª*^Ò$OOgéR–.Uˆ‚Ûâ§Nqß}®°bkŒK¦wîLçΌŅ lÝŠÕÊ7ßðé§*ß¶ß‚ô´Èè7ÛŠT¶ìö÷WðÇ3­æ¯¿æÀOÙmkËþ9ݺ1dˆjóf5»ôŠÈ^<téBË–téBT͛Ӵ©] C£(Š·7'Orþ<>>$&òØcŒÇÔ©jÁóÐ ¿qÃ+I¦ÿÔÔо=“'3z4!!f §–Æ·ÖÏÞ —„jßžÕ«‰Šâ­·¸|Ù4uÏŸW1È—.ynþÕIyÇ^~ÙUÛÛûlO‚‚¸ë.:tàØ1:t`åJÊÊÈÏ'=Œ ®\¡ªŠÒRJK).¦º__UÖb1œÎ|ñ}ûŒÅBz:±±j›Ôö”êûÙX¼½©¬dæLÚ´¡kWÒÒHHPÁ3FçÎDEѲ%;›e[o’­IÚàk×*+ØÛ›êj,`×.Þ{§ŸöÔ­!#ÿœ†¾Ø&‘ŽÇk¯qÛmjX]ÃDã[ë—f†Ë/ö«¯©ú¨]¿ÎêÕÄÅ)«'à¶¥Þùó”—ÛÕ ÷d!‘¬¿r…ñã9r„£GéÚÕÎ]PSCi)99ªïåõëäç“Í¥Kܸ¡ÎЈ“óóãÀöïgð`jjˆåÒ%BCÍ’&2䯍b[*Ö¡B¬¯/çÎñÇ?Çž=ñÚkDDpÿýtêdW·Ï¦u[nZ,dgsø°ÚN0ò$ÓÒxæ¶oçT]†šÉÆr˜œìß¶Þ’'ž`êTî¿ß\´Ñýë1Ì„‡;ÚZ¿ û“ÅÅdeͦM @ÒBôÄB–-DEyz«n8ÙOœ`Ò$ó§?ñî»æ®©S³±¦†ï¿W‰ùùddžN~¾ª<~ñ"‘‘|ý5;wòÒKÊB÷ñÁÏOu óóÃߟ€å°–†¼ì@` ê˜Lp0 Ò½»²÷[µrce;•ôG-[ÆØ±Ž• GP«Vü×ñÜsfÓµº÷ ²c‡ÙóÈܲéå!æ6ƒ¶¸5¾µ~—0ÊÉ!>ž+8tH±Éà‹[I¦,^Ì+¯86Þt*ñ+V0e W¯ªŒíÛsð M›*“Óé¦e}kCi)¹¹deQTD¤¦’“CÆêô$¬ "4”À@üýiÐ@1Ý…bcIOç“O”wÂxiž—ä­ªbÌÖ®uÒmθtÀСÄÄp÷ÝŽf¸¼55DEqø°º+2ÀÝ¢o¾É˜1„…Õk¿ký:¾ÈZ¿z‹¯¾ƒ Pooa±˜ÿuúðö &N55¢¶ÖÍ55BQV&¢£ÕÈ^^æ¿ ˜Ç8Um­ù0¦³´¦FÄĈ¬,O_²í€ÆÃjV«ÈÎ; ãÆ‰²2lj<Y‘•%ÂÂÔ{-õÚ5}$ŠŠÌ³2ÉÉQgâã£Æ 'ŠÌLóUßÔ¹iý²¤ñýë–¤¡Te¥øûßÅÓO‹[nQˆñòRˆqú¿ŠŒׯ»bœÄ¢"3S<ú¨¹Œu¢gOqãÆÍÒÀœ|êTâ…De¥¨ªV«¨©q|8ÀÚ—¶—bÚ4ÂÏO€=Z¸YZœžØ‚®Øí°‚èÕKìÝkBYN÷ˆà`óZ=ú¨8p@ƒ[Kã[«ˆ !ޝ¿.76ãåå„D†=xöl½ä5žÜ¿_Ü~» }‡eÀb_|áxžH²{Îe¢‚X¼øÒMü¸¸åa±˜k̰aâÊO nXñC†ØÑÙÅØ(8X¼õ–¸zU½®ÚZ±v­:¦{w±j•¨ªr\r´4¾µ´LˆhÈÈÓ§‹ÎMÊ8ÀH2Ä¢EÎÉ+Ÿ©­ÿó?"4´^œIxõî-*+oΗã/_®| ÒoÖL¤¤Üœ½lŒV^.ž|Òî<å’0hÈÉñhLyÀ?ÿ)ÂÃ=²¾.ˆ{î›7«ÑæÎ‹?ÿY1ýfÝ8ZßZ¿:ÙB<'G,Z$î¾Û¹[\ÒmìXÓv0ç ÅøñŽŽ‚ºæ§Å"üüĶm7]yØîÝÊX¶õ¤÷ê%nܸ9+U¹q£“û yÚ¿ûò8»>=yé.t~ŸáÚ÷ñQ×Ä“OŠóçE|¼HLÔÞ­ú¤7¬µœEˆ].[´àÕWÙ¿Ÿ+0@EÅÉJOF”Hz:EEføš›xêC†kvêª/TÃÛ›ª*–/W‰—v ÿö[^~Yu–a32Afß>>ý´ÞÞÁõÅŠðþû*†¯nàÞ½<ý´jìâ…ȸuë<á“€òÒY­X­øúÒ§·ßNI ½{sß}*P]gâhéÈ­î//ññâ‰'D` [<8X=êh!nØ Zµò4ˆEàþþj×f¦<Ÿ¼ø@4hàéÞ-_zIMç"ŽEQP ú÷wãLïÒE\¾ì~1¿½pA´léÆ[-çêÔIœ8á¬ò™™3]½pÌcÌÒ ¸ë.1s¦ØµK¹þ¥äÖ¥––Æ·Öq[°ž=+Þ~[´m+@¼ø¢z2/OíþݬóWܤ‰2oZröÒRñì³nìzIÏÑ£Ey¹+/gÂNX{ÛmÊ%íàî—ëJT”]d¤qoáp¶Ýº‰×_;w:ÚÚ:°DKã[ë×b æâEñÑGâ™gDQ‘سGtébzÝ#»^޶d‰+„|þÀdÒx2lË–*Û ¸ÄîÑ£v'&7$mÿ¼K1fŒØ¹SäæÖ{Iµ´<“Nš×úÿ.ŸRPÀ† ,YÂåË™û{͈]×­–Å@Ž!"Â±Š¡ÜB\²„W_U»y®?º²DW“&ÄÇs÷ÝN2ËåŸWWóØclßî<»ÝEµ€ÆY·Ž>}ÌÝN‹…©SùóŸÍ]\£bm³f BŸ>ôíKãÆŽTôž¤–®y¢õ“•O1TXHq1'N°gYYœ8¡ŠÐòñQ1-à¼jm-Ì[oÙW²{ófžzÊ£&˶£õîÍæÍ9®rüÕ«yþy'ÅÄ=¹qcV®dÀEð’úõãøqshÑ‚¨( à‘GhÚÔ,¸h;ÔÒÒøÖúé!îF))äærì{öpñ"99v-’eO[SZbñÎ;Ù½›[oUÇHÎ&$ðøã\»f×±Ó­||°Z‰Ž&&FE(Ú®:W®Ð·/gÎÜ„éí`ƒ‡…Ç!;v0p ¢v·nŒE÷îDFÚÝ@èø?-o­kcÜ`±-¹nÜààARS9}šýûÉÏÇjµ£¡aÈ×Ô°l/¼`A<{–!CÈȸ9v·~~lØÀ Aæ2#—„?ý‰÷Þs3¦CyXã[ÜÇÆ2f ³fqäC‡Ò·/wÜ¡=$ZßZ?g”ÛvÑ4dµ’—G^;v”Df&ÉÉvõöæÁÙ½[µå¼r…'žààÁb#}d$»w+—ºÔÙ³ôé£ZzÚÎnôñ‘Ï×Gv__š5£MBBhÝšI“ðò¢E ‚‚ìÀ­K¹ji|kýB¬r[†T^))ää°kÇŽqí7n¬YÃÓOSQÁóÏóå—øø˜- Lc×7ü«µÛ¨Q,[f¶;–eËðóSy¤õù¾}} Q"#éÜ™Ž $4”¶miÞ\5ªªR5Ä¥‡Ý?Cv6ÞÞäæRSCq1¥¥RTDAÅÅRZJI eeʇ^SCu5UUTVRYIi)TW«ÿß½›®]0€´4Z´ <œà`:vä®»èÔ‰ÐPüýiÞ\µì©+#f¦>Ÿ¸––Æ·Ö¯×*ÿÁ½Ò%¾ËË©¨P¬¯¨ ¼œª*ª«±Z))¡S'Zµ"1‘-èÐfÍœO$£ëÒYcZKã[KËSš;ýˆ:`ôGR×Åm'b--o-­‡ïžüÖvSÆ&:à^óZKã[KKKKëÿ@:(UKKKKã[KKKKKã[KKKKKã[KKKKã[KKKKKã[KKKKKã[KKKKã[KKKKKã[KKKKKã[KKKKKã[KKKKã[KKKKKã[KKKKKã[KKKKã[KKKKKã[KKKKKã[KKKKã[KKKKKã[KKKKKã[KKKKKã[KKKKã[KKKKKã[KKKKKã[KKKKã[KKKKKã[KKKKKã[KKKKã[KKKKëç¡ÿOqð0´å_IEND®B`‚giza-1.5.0/docs/samples/images/sample7.png000066400000000000000000001614711477367113400204150ustar00rootroot00000000000000‰PNG  IHDRênÁ.Ì£ãIDATxÚìýw”\Çu'Žß:÷ä`ò 9'  FÉaw´Þõ‘ý“vM­­=ë•lë8µÏ®½–-Ù»ç+Ë–×–e1I ‰ "L==ÓÓ9ç×ýÂï‹)ÔÔ{3hÓ3œñ«õ™¥ ÕŸWU·ª^½[ŸºNÓ4X8IQA>úè£ï~÷»þç®iÇqäŸÞzë­£GÖ××c>þ½råŠÝnß¹s§ªª<Ïcf ¸uëÖË/¿Lƒkšvúôé´´´`1üÉÇ û÷ï§"‘ÈÕ«W_yåRLo½õÖ®]»ÚÚÚh„Û·o‹ÅƒÒK&“çÏŸùå—A`¶lÙ²råJ¡««+‘H=z”FÈf³gÏž}ñÅ­V+iÇqï½÷Þš5k:;;i„¾¾¾@ püøq¡P(¼ýöÛ/¾ø¢Ãá ó?üðö¶¶7ÒMyî¹çèn/•Jo¿ýöÉ“'Ýn7pþüù†††­[·Ò^¯÷Þ½{L·›†3 7_†Ãü_þå_þÜç>wìØ1\^Ðz(ÂÂL<Ï[,:GQ- “O2é±k±X0ŸíŽ©øQñ'z2ýfF°X,²,3#<ÏW‚ ¯0A˜®ÉEeY„Ùí´GE0 gn~ ÇüÏ…´ ÂBNô§ƒ6™H>ù;C&ƒö¨ÓÌB%Mž¡òN›÷n7 gn»}ᦅ½|›ÉLf2Ó¿Ú$.èÚÓ^0n2‘|òw†LmºÂôãh„é@*¯ƒÁðé"TÒä ÿ>4óñºÝ°±¦áLÃÍ‹á Ûe.ßsá6Q…9ºTE–e’•ÉDƒ`1EQô˜4þ‹"Ȳ̌€é0Ñ#Ìi V㑈óŽ4Y_ÒdAÓ4ÃNÃLÃN£»Ô¡’nÇ2L·›†3 7_†#ÿj.ßs—AˆÇãï¼óN¹\&oQEQz{{%Ir¹\ªª¢m,ËÐÐÅb ƒårM%Šb"‘˜˜˜Ð;¿z{{s¹\]]Ž,‰D Ó™©TjllŒIÇõôô¤R©††RØb±x½Þr¹œJ¥°xZ’ËåFFF°9¤ÇƒÁl6{ïÞ=º>Ÿ/ŸÏçóy¡P( áé A¡··×ï÷’&[,¿ßŸN§‹Å"™8 £Ñè™3g¶®¿¿ßãñŒŽŽÒ¡P(‹á µ•e¹¯¯O–e‡ÃAWx``Àétú|>ºÂÙl6“Éœ>}šn¯i8Ópóh8‹ÅÇáda/ߪªÖÕÕ=ýôÓªªÒ»oI’8ÀИ,‹Ãá`ˆPÁ`Ðf³=z”Ù ‹ÅÝ»w7773$$`ˆPÑhTÅ£G2ã©X,nÛ¶­µµ•F¨­­- ûöíchLpôèQfè|ðÁëׯ_¶lÐÓÓ“L&:ÄðÏE9|ø0Ã?“eyåÊ•«W¯¦ƒÁàáÇþÙG}tðàAzãO–.]º~ýzEQ°É<Ïãº@ê€O,•JÅbñÀ4ÿ 7•õõõ›6m"ÇMLL >|˜Ù= …ýû÷×ÕÕÑ¢(ÚíömÛ¶ÑÁ`Ðjµ2š¦åóy½á>ùäرcc8žç>Ì®P(lݺ•6œ n·»X,îÛ·GþS*•RUõðáÃŒá>üðÃõë×wttÐÄp4B6›•eùСCŒáJ¥ÒªU«V¯^…a``  ÑÝŽ/b8Ú š¦µ¶¶®[·Žn²Çãñz½ÄôÄp’$:tˆ!r‡†£|>ßÀÀ3_ÁŒÃ‘öƒü¿¹|Ï‘çÄb±Ô××3ù.—«¹¹¹¦¦†Î¬««s8 tf¹\v»ÝL&"4551ù.— ˜LMÓ\.Wcc#ƒàv»õuuuV«•ÉE+Ì Øl¶úúz¦p}}½ªªL¦Ýnw¹\--- ó ›¦GÈçóú¦Y­Öææf†µdÉ’ööv¦u¥R)ŸÏ7551njjZ¹r%“¹dÉ’¦¦&AUÕp8¬Ghnn^±bÒÅHjmmu8 në –/_ît:™L¬ép8¼^¯¾Û[ZZ–/_^[[Kg¶µµ ¦uuuƒƒƒK–,aêëëÛÚژǵµµY­V¡©©©···­­MßiLáöövMÓØé W[[«<Éd2‹1™ªªâðs8EÈf³6›Íp¾,‚‡ EsùžÓ½ûVUµ\.“|²EG!ý&/—˪ª26Ã24þ„lKõôöŸÌ =©]1D0t¡Ò…ŠP.—™M:ø*DÐ4­\.[,–r¹<66–ÏçEQ¼{÷n(ÂM"6YÜÄ566Ò­.—ËÝÝÝ n·›l0A¸{÷n}}½$I4ÂØØX?Þ° 7qÝÝÝn·_Qá“O>±ÛíÄGŒ¥`0ØÕÕµtéR¦Çº»»m6[ss3Ù·Š¢xçΜœ4B4íîînkkc ×ÕÕ…ï áîÝ»ÅbÑjµ*ŠB> ’Édwwwkk+m8Žãº»»eY^±bFÜ}»Ýn!›Ívww/]º”f+ãŸt:½zõjwßè^p:+V¬@cÃ=t´×0=_Èà±Ûí• èI{‹`Æ™¾ïy¦è© Ïš™3§ëÏ©§C˜ù(ÜðéUE0lìÌ8ˆ{{{¿õ­omÚ´ = ©Tjtt”|Tò<_.—eY>sæ ñ`âЗ$éâÅ‹ø€ù<Ï‹Åx<îóù„r¹|æÌÚ…Š_ÐW¯^Õ#àG7AÀ7S©Tzï½÷è)‡^ ëׯÓ>MD€3gÎèÞÿ}=ÂíÛ·I’4M#Ø]ªªJ’töìYzæ#BWWW__ÝäR©¤ªª!‡~H0¿X,öôô 2Š¢`·÷ôô¼úê«Û·o'¿ªp´ëÇü“Ï—Å1ã4ùd/ßz>@ÇÕgþI¿›˜¹X%3›¹bÓ<*ÂÌUù–D:Þ¹sçþÏÿÌôiMñ‘N§§ŸíO2_ô§Ž‹`Æ-ôk; øÒ<óÅ»³v»yëZ­V›ÍÆq~1a¦Ýn·X,ú݃€?Á/\Cýu[C›Í†ŸÃtÅqøâO°Â ‚Õj5D°ÙlÌV‚4¹žç±ÂN§“Þÿê7&ô>‘É7Ì|¤Â&Ât…isð<ït:9Ž£ ÷ÐÑΘž±T>_l6› LÅÁŒ#GÁæò=§kw2™¼zõ*MUehhÈjµÒNXt>Z­Öl6[.—‰6‹y<žK—.1ódhhˆã¸††Úù866èM#‰Dbhhèâŋ̈R¥©©‰ • ?¢ ·  CCCçÏŸg|ß¡PèöíÛè¸ '›Í ‚@#äóùááásçΑ‰uëëëK$~¿ #ÂØØX"‘°X,Ä ‹ÞÀx<~áÂ…šššëׯŸ£á€žî3s† ,ORØD 3q0”Ëå?þXUÕL&ƒ†£}ßH= ƒ‘H„ŒvQ'&&B¡Ãá@Ó#¬,ËÃÃÃçÏŸw:Ì|q»ÝÉd’ ð<ŸH$Âá03_ÁŒÃ '“ɺ‚/àÝ·Ãá`–o|#Ž h«ÕjµZív»(Šd(àÖƒ9sGB "Ѓ ÷ø8‚P(L¸fðhâÈ`Â:‡ƒY¾±z¤ˆ`³ÙJ¥ƒ€#Õáp0Ë7nHa‚€…éå[Aìv»Ýn·Ùlè,6Ó§ù¼-[.—ÑpV«•^¾qøéG»ÕjÕ/ßÓÍ7 ‚ 0óeÌ8\¾ÍÝ÷œ&UUkkk·oßÎä‡B¡={ö0ì±R©ät:·lÙBgâ-†]»v1Á`p÷îÝuuut&^Ú±c™J¥ …ÂîÝ»õuصkCóE1ŸÏ3ù|>NïÝ»W_‡M›6µ··Ó™v»=‹1¥R)‘HìÛ·AˆÇãk×®]±bYSS311Á (Š211±wï^‹ÅR*•nܸ ÿ&ñb]¸q íØ±cëÖ­år9ìÝ»—y÷§Ó鎎ŽÎÎN:³±±Ñét2¦Ç±ºoß>†z˜Ëåššš6nÜHgúýþR©¤Ÿ/‹cÆÕÖÖš¼ï¹^Á‘WDï¾Ëår±X¤‰PxptúöG±XD³@„ššš„„ƒ IK ½!#¯X,bõÈÍ I’J¥©0€Û(A–eI’*G@fíQŤ0@` ‚ªªÅbQÅb±¸ÐOr}B–þEÃ1×vˆééûVŒéÉ"‹ƒïmÒó…Aà8  Ì|Y3Ž|Åš»ïyØà&½ra&s‹Œä“"9úÓ$&ÏHÉù†Aà 0u`*†µš-}“}çÀŒ1˜Ìô)ö´ái´ÓË79üŸÅù²àfœá²¹|ÏÑNÄ$Î"qÐÜz/ aogeÆ™ÄÁù߃oY0l!Tâ`HHV«UEýkœAÀŸàÁ !‚þÐÃ/þéùUXg…„ôt& 'NWl2ƒÀó<Ö똘éS˜ˆ±ˆáhƒâ¹ßt£!V>_±§'.ô7Ãe"sù®âÚ-IR `|߉Db||œ‰|‰Dl6[  ½¡P©uÌk<‘Hø|>t¥?Fºa¢Ñ(Qcl™è($¡Pˆ®0‰|„f|ß¹\. ‘A‚J¥„\.—H$¼^/s÷:ûý~«ÕJ×! Æb1¡X, …ñññšš¿ß¿p€ÿJ’ªª~¿? e24ãwŽÅbi‹«~¿?3ó¥\.ãðs¹\4B4-—ËÈä#ƒ0 år9f¾,‚GÎè ¾PyßÙlöÎ;LÀ؉‰ ŒâD‡¯ôx<ø*fÂWú|¾[·n1_O¢(2á+Ãá0L²Péð•·nÝbÞ+>Ÿçš_)¾˜¸£Édrhhˆ\'qGs¹œÍfcâŽúýþÛ·o3qG1t Rw鸣©TŠf[bxŠL&s÷îÝÚÚÚÞÞ^ ´Ð‚‹ÕgBb´º\®t:†cÆz½Þd2‰œk:`l4½}û60Öï÷ß¹s‡ ;::êr¹ð”›J¥èù²hfœÅbÉf³&ï{î’¢(/¼ð3¾à™gža"^¾|Ùápìܹ“Î 7oÞ|å•Wô“äàÁƒ---tæÕ«WàÀtf$¹råÊg>ó}õvïÞÍ“»}ûv¡P8tè™L&Ï;÷ÙÏ~–Y+OŸ>½uëV&†_WWW<æ™g˜}º(Н¼ò ãE±³³“aõõõùýþ'NЙ…BáôéÓÏ?ÿ¼Ëår¹\ãÉ\»?_œ¸Ö<óÌ3Ìår?úÑžþy†Im·ÛÛÛÛÚßðððððð©S§èLY–à¹çžÃw6IN§³±±qëÖ­t¦×ëíêêbæË¢™q¯½ö£#a.ßs·%!ß•ôI3iR%†„ÆDJêôÕ馫~ë=aO2òHu€i¦ª‘0ùJ@ÎÎrE&i¿äU„2ÆsJ~Ècüª†c¦òWÕêêŸËT 9mÕÞÇž~üøîÝ»»»»ß~ûmŽãÖ¯_/Ëò‹/¾¨(ÊßüÍßà¶WÓ´Ï}îswïÞý·ÿöß’@áÇÝ»wïwÞ!_øÂ®_¿~ûömä<”J¥uëÖýØý½½"Â1¥RiÍš5¸M›¡Â<Ï¿ùæ›Ï?ÿüÖ­[EáæÍ›~ø¡ ¢(þÔOýÔÒ¥KIˆê³gϺÝ¶6ÓÜ$~A×ÞP«¦áU¢œý¨â<*‚¾p…3~¼:ÌVB ÁG}äñx¶lÙ²bÅŠ?ú£?ºråÊoÿöo/[¶lÓ¦MÁ`ðññ ë?ø$I›7o®««ûú׿^*•¾ýíoãõBüØ¿uëÖoýÖo-_¾|óæÍ›7oEñ+_ùÊ/ýÒ/uttŒ ­\¹òk_ûL½€ï§Ó‰ê03¬Ýø”¿ú«¿zýõ××­[÷Û¿ýÛ×®]ã8.ŸÏç;ßiiiyê©§Þ{ï½x<Ž8~¿ÿ›ßü¦(ŠMMMsC%~¤±úäóåÉëðéœq¦Òü¼%ƆSŽøãˆÃ‹¦ýhÄå§÷*ÒôÍA¯ý13㹞.\ } (00ôÍC„ª®;uè…^hkk{þùç```àïþîï>ÿùÏ¿üòËXæ3ŸùLSS“Åbyá…~ìÇ~ì©§ž€/}éK»ví:yòd}}=ºÎAø—ù—ÏþóäëÅ_üÿãœ:uêgög1œÓ¿ûwÿƒ``×)Š’L&1Õ¶dYN$Š¢àj^*•b±Æ™!½ñî»ïþíßþ­Ëå²Ùlßÿþ÷÷íÛ'Ëò¯þ꯮Y³&—Ë]ºt kX,ÿú¯ÿúĉŒgU‡ý £ ½ÆO8_è ¼äôŒ3}ßó0þäÛo¿­Wš/‹†º×@@¯{­_³zzz²Ù¬¡î5ÆÜat¯õ»Ç2Ô½&L> t¯q=¢ùX@ ›ÍvuuéËs¹œ^°ëÖ£(°^°¼P(0ÄÁH$òî»ïÖÖÖÞ¸q·¥ÕÓ™LY år9;Ζ–< L¥R.\hhhxöÙg±ž˜™J¥$IÊårô+Êf³áÉ©æ’%KPÔ8™L¢6؉'ð'™Læ¯þê¯îܹ³}ûöŸýÙŸýýßÿýŸþéŸN§Óÿ÷ßÚÚzåÊ•o|ãßýîwN§ÕjýÝßý]â ollÄu---v»\.Wmm­¢(§OŸ&Ô ëׯwww—Ëå?øƒ?øõ_ÿõ#GŽT£I€ßsçÎår¹t:†Ó+ÍŒŒx<½Ò< !à •æË岡Òüøø8CL§Ó?üáõJó }ÆY,$Ë›Ë÷%Œ8ˆúßô`Êår»wïFÝk ¸ìvû–-[/ˆ¢xðàAf0e³Ù]»vÉD,ŒtºíÛ·Ó™ÑhG'^¥Ùºu+ºDIa§ÓY,÷ìÙCÞüÈï–eùàÁƒÌò}îܹµk×¢`9iEMMM*•"’çX2›Í–J¥ýû÷cÔP‚P,W®\¹jÕ*ºƒƒƒápxÿþý4B¡P¸páž={p:>>^Õ/J§Óù§ú§gΜI¥RGŽÁÀ½0Ïóÿëý¯ÏþóÏ>û,Çq¿û»¿ÛÑÑ‹Å^|ñE‹Å‚|tš“Xþ´oCÀ“IˆA‹ð®`WWW øÎw¾sàÀŸÿùŸohh¸wïÞç>÷¹—_~ùµ×^;qâĦM›~ë·~+—Ë}ñ‹_Ìçó£££¹\®µµ•\C%Ï ˆ¢xëÖ­_üÅ_ÄÌ‘‘‘ƒ~ùË_üêW¿ºuëVreÖ½%¢(nÛ¶m÷îÝ™LæÒ¥K{öìAŸ'²,/Y²•æ‰éGGG½^ïþýûéA‚ÂÓ{÷îE¥y â7ÕÕÕ=õÔSô8™˜˜¢çË¢™q<Ïÿûß7#ΩÛe¶™üºººÖÖVF÷º¡¡wy B]]“‰K—.eÔ¬Q}œ),B]]^n3™ÂMMMù|žÉ´ÛíXaÁáp4773…#‘ÇqLfMMMmmm{{;³RÔ××·´´0…“Éd©Tb2Ëå²Ífkkk³ÙlK–,ÁÕK‹åË_þòsÏ='IR}}ýïýÞ:tãA?ûì³'OžÄvýÎïüΦM›PV&‹ÕÖÖ’ëÎ###…Balllÿþýd½Þ¶m _ ¨£ªê¦M›Þ|óͯ}ík¯¾úê’%Kž}öÙÑÑÑÚÚÚK—.e³ÙŸÿùŸ€ø‡¸qã†(ŠN§óÂ… I5•JÅãñ––¯×[*•P†ã8¿ßo±XV¯^ßéø€uëÖ¡À&YΪáò^²dISS“ÛíFÃ1,CÓçr¹T*¥ŸµµµmmmøaA#4551…%Iš˜˜0œ/‹`ÆÑ»sùž;Ç7£4½ôº×˜É¨VÓd‚É Õj0Ò½&÷tiCò8F÷ï•1n†ÊÙ†¥RI–åR©ÄŒ­¼Th¶õì‘󼪪ßÿþ÷—/_þÙÏ~Öf³©ªú3?ó3¿ù›¿™L&ëêêAPÅívçr¹7ÞxÃjµîÞ½w»ï½÷Þ™3gvìØ!ËòåË—7oÞüùÏþ+_ùJ4Åy>88¾ò•¯À›o¾Y,ú§šX*ŸÏG£Ñ††Ü¿öÚkÉdòÀ_ýêWÿÓúO¿ú«¿zðàÁÿóþÏÿüŸÿóoþæonܸñꫯbÓéô¯þê¯>÷Üso¾ùæ×¿þu¼‡½bÅŠ>úhÉ’%x±pddääÉ“¿þë¿þÇüǃƒƒ{öì!\”*õ$Z–Ž÷úÐÑÎŒÅÁc³Ù*AÐëÄ/‚g*ÍÏ[Ò+gO'/=³ö6ƒ9ƒD÷t‚Ö• Ì\1Ãj<Âc(ÍÏAÀX\¾îç~÷z8'7lØð'ò'ï½÷ž$I¿÷{¿çp8²Ùì¯üʯ}Çq+W®üêW¿Z(4M;pàÀ‹/¾¸dÉ’o|ã|ðF¦^µjÕ¯ýÚ¯¹Ýnøìg?‹ÂdÚçr¹C‡ÕÔÔ\½z5;v ý¡¯¾úª$I;wîâc»Ciüt/"è¬ ¬V+žÎ1ž8'Ô7Íf³éô2ÛˆÀø.±" r uãߪZ ¹¤Óp²á|£#ñ3ŘÛðÄ©­Ï„ÉPè%ÇIûÓ?ýÓ_ÿúן~úéŸø‰ŸÀ­7­±"©P|pžçÑ{CdHÉŽ|Ýãùjc9ŽJF;ƆnðTˆ ¿nº˜fœ¹|ÏéÚÉd®]»FG½PU5^½zÕétÒçã^¯WÅ\.GŸA§R©p8|åÊ9‰\¿~9‹0þ‚f}` !߸qݬZÒ;\⓽té=z°n÷îÝ£‚Á`>Ÿ¿zõ*Ã0‰F£/^¤‰ƒH=”$Éï÷Óáp8“ÉÐèH- —/_v»Ý×®]£7;UmFÁÍ §ôCËf2¿ÅÇŽ;vì½Ðë'ítË.OëÔ0˜.¾ÊìnºÑ­|íÚ5Èf³…BáâÅ‹ôb„wJS©T4¥Çj,‹ÇãÌà‘e9^¾|CÎ’ü±±±h4šJ¥h„t:J¥˜Á³8fœ ™LÆŒ8h&3}ÙYÓúpf2Ó"H •÷]SSc¨°~àÀF÷šã8§ÓÉÀŒÅbü±>JóØá4Sbæ/ÜÊ}>´óza%Zi^Ó´B¡À(ÍŽv¢Ïqð0ÔÃé˜Ã†Å1ãL¥ùùÜ0Jó0½öötªÕúù?ëº×3HzOçÃ}l„é”ÅgFøt*ÍOçÝžyúHûñ:ìª4?ÝXe”æ Aßo‹`Æ™1Oæs'b*Í/J¥y Íú'ò'.\@¸$IÇÿÿá?Ë#$$?Þ÷€?üðرcÈÅ&s˜ì¿pÆâÖìµ×^[½zõ¶mÛpŽW¨é[Ô@Ýù´MoSi~gœ©4?ÿ{û-E"³ýPím"»Î`23è^#‚!kÂP'ùjŒ ÷#)ÍêÄ™mÆCZ9Ê–ãðO•Ÿw×®]·nÝúÃ?üCY–óùüoüÆo¸Ýîÿñ§y‡ø˜sòäI¢TKë÷Yï½÷Þ¯ýÚ¯‘]³L“âTõ åc$´,m¸ÊG;=àéÁS ÂtJó zÆ™Jóó3½K¥²£HŽ¢(©T* .ÎÞD"Q("‘Ñ&§R)¼ÇÁ„B!ÂXÂÂét$W¡¦*]1Ì$ì`¢ÿ], LÐÁ 3!« …B4ṳ̄ø8ãÀ¡¨<#v‰D0­ÿùLÈ*䮩© ‡ÃŸ’ÍV¯­­­£££¦¦F–円†/|á ï¼óÎOþäObȽçŸþÎ;ñxüàÁƒ×¯_w8MMM<Ï_¼x1¾øâ‹6›mdd¤§§µCq!…B ~¿¿T*=ýôÓ’$ÅãñññqQwíÚÑhôÂ… Ï=÷rÚ>%3\Ó´p8‹Å2™ Ž Y•L&­Vk}}½¡é™Uét:0¤½d2©i3N¢Ñ(N"&dÕ"˜qè(7•æçÔ+šN§¯]»ÆŒEÑ0|e>Ÿ×‡¯¼rå 3˜0"¥aøJ<9aÂW2,T$½âr£_‰ÁLèð•ˆÀ,ßÛs||\0Ou耱cccü10Öãñ¤Óép8¬+Š"06•Jݸq£¶¶öîÝ»ÕûH©\.£}Ñ—R.—›››ß~ûí?û³?khhxë­·¶mÛö÷ÿ÷ï¿ÿþ_þå_&‰r¹|æÌ™oûÛçγÛí?úѾò•¯¼úê«›6múßùÓ§Oc¬¢»wï®ZµêÒ¥K¿üË¿ü¿ÿ÷ÿþ«¿ú«T*‹Å¾ño|ýë_ÿó?ÿóo~ó›íííú§êv»ÿéŸþé _øÂñãÇç}N¥ïÞ½kµZ‘ˆa¶è€±ÃÃÑH{ƒ ‹ÁoÉ0“eyllÌjµ2c‡††œNg&“ÑŒ¥çË¢™q‹%N›¼ï9õ655½øâ‹LÈ*ŽãŽ=ÚÐÐ@ŸWÝkúÛï÷ߺuËP9ûÀK–,¡O±‰î5‡¯^½ú™Ï|Fÿ=¸k×®öövè^ÓK$çÏŸå•Wæ Qš§ˆÒ<ÉdΞ=ûÒK/1̋ŲfÍšµk×Ò½½½@£`„|>‚ån·Ûåruuu}ª¾%IH#QÝnw8öx<û÷ïçy¾¡¡á‹_üb¡P…B;vìø/ÿ忼úê«Ñhô‡?üá~ðƒT*õÁüó?ÿóºuëZZZž{î9§Ó‰íŘ;vìxùå—Ÿ{î¹ÿïÿýþá¾ýöÛ/¿üò7ÆÇÇ[[[GGGÿïÿý¿¿ôK¿ÔÜÜüièZiþСCÙlöwÞyþùçñÊ 1¨ÃáhkkÃp¯d¬ ŒŒœ:uŠažpwòäIÂúÀ¿.— •æiC¥ùE0ã0ÿ7Þ0•æçÇýMoÉéCgЩ"ÑÿDŽÝõ3„)Æ××ö tÅè ÏкGBÐ$Ò÷ÉtŸ¶ïGâ©ÄøPï¾ûn}}}$ùÝßý݆††ëׯkšÖÑÑñÛ¿ýÛÇŽs8v»ãÊŽŒŒ¬Y³æØ±c.\8qâÄOþäOvuuçØØØ3Ï·fÍšÏ~ö³Ç9rä;ßùÎ+¯¼r÷îÝ .\ºté+_ùʯüʯlÞ¼ùùçŸÿßø_ù•_yóÍ7÷ïß¿nÝ:ÄÉd2š¦e2™¯~õ«]]]¿ÿû¿ÿþûï_¼xñúõë?úÑR©Ôž={nܸ±téÒ+W®¬ZµjýúõŸ6†Ù#Õ'Ÿ/O^‡OçŒ3‰ƒf2Ó,'Üñ‹_üüç?ŸÍfqÇ´fÍ8zôè–-[$IÂø­­­ÿò/ÿ‚Ü÷ßßf³Õ××ç;ß!þîïþn|||õêÕˆìv»ÿàþñW­Zõßÿû¡¡¡!‹9sÆétþ¿ÿ÷ÿA¸|ùò—¿üå+V|üñÇôGô—ù—øF1Mc&sù6“™îçe®AcRUƒ»’ý²n\.—Ëåb €(ŠdíÆ×€Ãá€@ pçÎQëëëñ( àáíŸÿùŸ×ÔÔ<ÿü󃃃'Nœ€~ÓÇL‹5ñ‹`žëý_†.?ÚûVIäxú'Ó!̬´ GÐWÌðÊe…Ød&`á£Ö>­ìWýå  në:Ó ëL$šñÌ€ßï?uê ×Ò?Çò_ýêWNç~ô££GbŒòOÏòýP#Î0Úõó…)öHóeÌ8Ó÷=?×ñxüwÞaˆƒ===’$Ò˜‚Á CcB]G½îu.—chLH5Çã Éëõêbº»»S©”!)•J14¦ááalÍÇòûý¹\îÞ½{ q0—Ë2LqI{zzü~¿^iƒþ0ÄÁh4J”æqû)qNWÃã/Ãÿ0AÏÉîÝ»wïÞ=Ý‚èr¹ˆdÚ§¤7ôJóh8†8Ø××çñxôJóÑh†&˲ÜÛÛ+Ë2Cìïïw¹\>Ÿ!¦R©Ó§O3ÄÁE0ã,K<7•æç.©ªêv»‰5ÙU¥R)Zç üŠ¢Øl¶-[¶(Š‚[3¼»xAƒž!ÉdrË–-D÷¯ð!nëÖ­4·]»v1ã)•JmÞ¼™è^#‚(Š’$íØ±ƒÜ,ÀëÅbq×®]ÌÐÉçómmm„…AñS©ƒËår¹ÜÎ;É…I¬[6›]¾|9QšG$Þ!‹â“Íf·mÛVSS“Ëå&&&>mè«´¢t½ L$R…HOÉ·ˆ O=õÔÖ­[1tû¶mÛèpQøF_²dÉÚµké±:::êt:‰éW·íÛ·»\.A’¤ººº7Œ ?<<ÌÌ—E0ãÙív›çt(£Ì6“ßÐа|ùr䙑ÔÒÒ‚dØ)ÍE¿ßÏeE„eË–!‡Œ¤ññq`ìv»×ëíèèÐ#tttèuâ …ƒP[[;44´|ùrÁår-]º”©["‘°X, B±XlhhX¹r%ƒÐØØØÞÞÎÎf³Š¢0™årÙáp,_¾Üf³µ··Çb±9Œù4lêAÐ_¾§Ë|ÚœÝX[4ÓÒ¥Këëëïܹ³|ùr&ÔASSSkk+cåR©”Ë妛/ŒZSssscc#SXUÕ`0h8_ÁŒ#7œÍå{®£ŒÒ<*p3á+ñ“¾€2Û†º×4 º×ˆ`¨{­GÀ „†:ñ•+ÍO‡ I’>`¬a •æUUE¥ùB¡àóù|>Ÿ¢(‹…€Ñ+ì š†a+™.Œ}>³VÎ }ñÿbÇêAÐ[_E¢–FÀþ¤3é ÏiòtæÔï÷#‹‘®¥y2Ú+Qš'#­B¥ù=ãL¥ùOŘJóº T®4gP›7o¾xñâw¾ó‹Å211áp8‰·T„d2™Éd–-[Æ„š™˜˜hmm¥ã®àBc³Ùšššh„t:H$–/_N/[ªªú|¾¥K—Ò› A06EKK A@÷e,£0ù|¾ææf§ÓI+XƒAhmm¥P1kÙ²eL‡7557."D"EQh ~ …–-[FûU¡¡¡¡¶¶–nr,“$©½½F(•JÁ`°££ƒ ¾áóùjjj Có …ŽŽŒU½|ùrúÈÑTš7•æêœQš×ËKQ¹ž{ÝkR˜”ŸuC¥yR˜F0ÔÞÆÖ555ýæoþf©Tâyþý÷ßoooß´ií|~á…è5K’¤Ó§O?÷ÜsµµµtÜ¢?ü°±±qûöí4‚Çãéêêúìg?ˈ.¾ùæ›ÇŽkll¤.^¼èp8vïÞM#LLLܸqãÇ~ìǘåûõ×_?tèã½|ù2:tˆqÂ^¾|™èÍ“j¼ñÆ{öìéèè nÞ¼Y(>LG>ŠÇã}ôÑg?ûYFbôÍ7ßܺuëêÕ«iŒ«…QShéÈ÷Þ{ï•W^¡ßXǽóÎ;ëÖ­£ð úÙgŸUU]%´¹ UÞéÑN¦€^iþ çË"˜q¦Òüü$C¥y‹Å¢×½¶Z­6›“µÛízÙu<†®\÷Úb±èÝĆ6›M¯DŽú0­†:ñ6› c{êôJó¤ÉX˜FÐkoó_ µêÍŒ3•æçzíN§ÓwîÜ!8ôÄy½Þ7n rñ X­VôyáÖ?н^ï­[·˜×¸×ë%N|“‹¢ˆ)‹…FˆÇã^¯÷æÍ›Ì^e¶ñ“Ÿ  ™øayžÏd2^¯÷úõë̈ŒF£===¡PˆlÁ0ŽG&“q¹\4FP»ví™'X·‘‘‘|>Çé:x½ÞX,†Ÿö´70•J]¿~¸>H§Åb±T*E3·|>_ À`¤d)—Ë£££W¯^¥ÙcØd·Û](ˆ<‰DnݺÅðÏ<ÏÇ\[[K#ôõõY­VtÙkF£Ñ‘‘“Çã±Ùl ¤u‚ ŒŽŽâséÌD"áñxnÞ¼Éì¾GFFxžonn&…‰áè08ö<ŽnH$¹wï^0¤[1<<œÍfËåFGG?þøc_*•Ž=ª¯ÃŽ;ŠU}}½¡Ò|¡Pxæ™g„B¡°víZFi¾¥¥ebb‚êV%‹9r„Y‰ÊårGGGgg'966644¤—úN§ÓGeËñ&úÆéL¿ßÿÉ'Ÿè»Ý4œi¸y4Üßþíßš¼ï¹^ÁõÄA|“3ÚÛ¥R ?rÕjäîðŽÑ½6DФ CcÂíCcB=qwß•#艃¸ªAUÕb±È„&ŒÜ8@V"l2úŠ€»EÃMœi8Ópsl8ú¼Ô\¾ç4™ÄÁÙ"šü3Óp&qÐ\¾ç4镳áQ´·ÁH9Œ´®éÇÍŒÀ”„ŠUÞg áÉ•æC°¼ÝnÎ4ÜÎTšŸ·­·^ižÑh'º×(qýPål¼ ¡W­&W$ôúkCRF÷šçy=W•#àãè­rÝ*D@qµJ:ME¼H÷]‡Jô»'Óp¦áæËp¦Òüü¬Ýår9™L2!«éŠvx¥R©R©”H$h?Z,Ëf³‰D‚y‡ã¥>ò[üI.—=B.—‹ÇãŒí³Ùl,#þDüI*•* ‰D‚®X2™Ä 3.TI’’É$8G„d2‰Wi„l6›Ëå"‘ãBŦÕ××?¡P(”J¥h4ʸ/Óé´ÓédšœH$™q¡b+H… ŠŽÓÉdR’$¦ÛMÙ†›/Ã!#…D%4—ï¹HhžK—.1cGFFÀ0|e:Öë^Ÿ?žùz‘eÙP÷:—Ëéu¯ÏŸ?ϼWFFF$I2 _‰‰&ÿŽŒŒœ?ž¡G£QI’<^iz耱çâÅ‹LÀØÁÁÁx<î÷ûõJó$þLÞxL&“W®\a⎠ƒAF«Ë1º©­,ËG&îèÀÀ®#LÜÑL&Cw»i8Ópók8‹Å’J¥LÞ÷Ü%EQñö6½û€'Ô½Ö4í‘t¯_yåý{û •æßzë­-[¶T¨4/Š¢^i^ÅÊ•æß~ûíS§N1»Ý^¹`9èËN§¡`ù½{÷^~ùeÆš¦áLÃÍ‹áL¥ùyóŸ0“sÐÍGç “‰v½a1ý\¾šoˆ w€N‡ A`Þü¤|åú&ëë`Ødô΀ðÐN›¡únG¬i8ÓpŸ6Ã-Ðepa‹¥1'é34?*m „é@žA_¬r„Jš\á߇f>^§=”6`Î4Üœn¡3OLV3™ÉLf2—o3™ÉLf2Ó\¥ìûfœV´{ŽQžFW­Z…õ˜ ýCCCC½¤·¡?(¥®  y¬•×ü­¼Óº}åÝ®gþš†3 7†[è¼ï&„ò².\øÖ·¾õ ¿ð „8ˆn¬@ ÐÜÜL‡Àçy>‰ð<ßÔÔD" …(™LêÕÿü~SSÊ¿§Ói r˜Y,c±˜^»CªÒ¢-oSUÕ––:Ôª$IÑh´­­¹ÂÇN']äáJ’ÔÚÚÊk …Bmmm ƒ-ÔÔÔ`O‚L&QýŽð ªj2™¬¯¯§sxž‡ƒŽ ‹ñ63™ j(“g)Š–.]ÊÄ> ƒÁ•®p±XÌçóD–Á4œi¸y7œÅbùö·¿ýꫯ9r—s÷]ݤªªÃá@-Z=$›Ínذ¾†Àóü½{÷l6Q0!ªÕƒƒƒ[·n¥a5MËf³k×®%÷&ðo?lذ¹P.—·lÙ¼ºs¹\gg'QÎ&:5’$mÙ²…ÖþÈf³˜Éœƒß¸qcÅŠ„J…###étšAÈçóù|~Ó¦M´Ò<ôööv"ƒ6šA$éÖ­[7n¤1²kSSÓÊ•+i„‰‰ ¿ß¿eËšV.—±ÛiÊÖÖÖ®Y³†~\8cbÑ™†3 7_†ÃP´„ùn:Oæ"¡Ò<WîÝ»·zõjFÄ$8NFŽÝétƒÁU«VéV®\Éè^‡Ãa` '‰ñññÕ«W3ÝÝÝ+V¬`t¯S©T>ŸgꀗÖ¬Y£¯C{{;#ƘËåDQd$I\·nƒ044ÔÑÑÁFq[&S–å®®®ÎÎN†åñxÚÚÚôöù|^ßi===6›ÎÃudÊhÅp8lØí¦áLÃÍ—áL¥ùyXÁõcUU•$‰¹È0ö¶^9ËT®{MDÁ™-I…*ï’$©ªª;Š7ô*Gx¥y *I~Å?ž`9©ÃCH»‡˜i8Ópób8SiþÓrzù¨!4§;²¨<|%ýExhÌÏÙB˜û¸£OØí¦áLÃÍ£áÌ€±ó¶<¥yZ{ÛpG¯×h'Ó#ê^ª¼WIižnˆ¾ÉE`ù̦×êž3ÁrÓp¦áf×p¦Òüü¤ª*Í3íx¾dˆ0îµ^å½zJóŒïfTš×#<ª`9ƒ`³Ù>=‚å¦áLÙJó `íÎd2ÝÝÝt5EQ|>ß'Ÿ|–ã`¢Ë#‘ÈøøxWWãöòù|wîÜ!º×XxbbÇ}>ßÝ»w™¸ññq»ÝNt¯I8I’\.#XŽfØcñx¼¿¿?Ó­Êd2õõõŒ`¹Ïç»uëÃý-•J(7Nêàñxb±-7ŽÞÀt:}ûömrzƒ­óx<étšVzEýo¿ßïÞ=†çóùnß¾Í(Í{<žh4ª( ]áH$Çén7 gn~ 'B&“1#Îi’e9‘H¡nLù|>™LʲL‡¯Ìf³}˜_‰ÓñxœLˆ@ŸH$˜¸£X<"&!›é c?ÐÝnÎ4Üühî¾ç.©ªÚÐРלÎçóÏ<ó Cc²Z­‡ƒ!œF£Q›Í¦—úÎårO?ýt}}=yýúuÐé^'“IAŽ;¦¯ÃÞ½{›››é̺ººB¡Àè^çr9UUOœ8Á d³Ù;vtttЙMMM±XŒi2ªÍžùä}·›†3 7†ûîw¿kò¾çz7Tš×Ó˜ u¯%IšN÷Z/õm¨{†º×z„R©¤×½F=ÿÌ…¾BÁòéê`ˆ`(X^.—±†V‰`¹!‚!{Ì4œi¸ù2œ©4?oÉTš7ËMÙ†3•ædªP9›aÍ‹î5Sá‡ÆAf WŽ ¯ítõ™Y°tŠÝÓUø‘º©¤i8Ópók8Si~Þ¶Þ†JózyiŒ=¦WΞN÷Z/õm¨{†º×†ø8F{:Árºp%Ì] Ã:&3Œ>:ƒ`ØiÝíúŸ›†3 7†3•æçgí–e9“É0¾ïB¡J¥h–>Çq¹\NQ”L&CûÑÒét¡PÈd2Ì;È5bü žƒ3(e²4fo þ$›Í‹ERad_*Ã2ù|žAÈf³ˆÀ¸P‘ÀÀ d2=B¡P(—Ë©TŠ,Ç’úN£ˆ ;MQÁjµ2Ùl¶\.3ÝnÎ4Ü|ŽÜò7•æç.aÎsçÎ1JóCCCŠ¢0º×ÃÃË…¡1% ¿ßOÓ¶È)¿$IŒîu4€t:Íè^Ÿ={–y¯ ær9F÷zll¬\.㔣ɿõ÷h>V(Êç󃃃Œ`9þœ,E‘áŸõ÷÷G"|(-XžÉdh>/Üx<~þüy½`¹Ïçc$ÏC¡P<Ç®¦ß£ÃÃÃÀ–:ŽH$¢,?{ö,Ã?3 gn¾ ‡U5yßs—PižQÎÆ¡yøðaF÷úÊ•+v»Ñ½·oß~饗ô´}ûö1º××®]€}ûö1º××®]{饗ôïí;wbleZ÷ºX,Uôá'évÓp¦áæÀp&ï{~’!ïÝs ÙS‹ÅÂpH1ò¤ž…J êyëô^3C‹Å‚'àtÅП¨§cN=­´M#`“If¨ƒ!ÇqÚit¿Ñu¨AOþ5 gn¾ gò¾ç!aôÈ>ø€!öööʲìv»iS¿Õj%D( -ybbbåÊ•MMMtaI’`Íš5tf,K§ÓÌ`òûý(7N.‹Åb‘ÔK¦Óéx<ÞÙÙɬ±X¬­­méÒ¥t+Êår:fr¹\$Y³f 6: .[¶lÅŠt4M³Z­¤ˆP,£ÑèªU«ìv;ý¸H$ÒÒÒÂtqÔ 'µ-—Ë~¿õji„X,V[[ËT8 •J%ºÛMÙ†›_áê…qpN½Þ.—K¯=00°~ýz&|e4u8LáÚÚÚD"Á èïï_·n¾2‹á`¢3Ãá0™ë°víZ&|e.—+ B.—›˜˜X¿~=ƒÐ××·råJ&î¨$I±XŒA(•J^¯wãÆ ‚ÇãY³f wTUU‹Å àlÆ Œ+`||¼££ƒ),Š¢¢(únܸq#CÒòûýMMMLa»ÝnØí¦áLÃÍ£áÈ Ì\¾çnnŒ}ò¸£Dòœ,7㎚†3ÆšËwuO/Á kÆ5 gÎ »](„DkKÓ‰Ö½&’ØL¦!&£W SuħC0”¸ÖËiOG®"ƒI›>=a†V"èq*é´Gívýãô=fÎ4ÜÜÎ$ÎC2 €I4§‚Ôt2Ûú79£ZM2iñN§œM‹…“:L§{¾Kº ’VЂåtaÃ:Ì,X®œ!‚¾Óˆ`y%¶Z­¦áLÃ} g.ßsºvg³ÙFiå´™sðÑÑQœôÁt$ñûýHœbÎmº»»™sp¤1õ÷÷3çà~¿¿··WÞ××Gë^ ‚022‚aÕ˜sp|C`H¥R###ë’´bdd$N7773†@ ÐÕÕÅ|>†â¤ë€ â¤0)XžÉdîݻǖåóyY–i„ñññ‰‰‰þþ~†À€u` cccÉd’çyúq‘H$•JÑÝnÎ4ÜüN„l6kFœS¯w©T¢©©x’N§ƒÁ`6›%ŸQ©©¯år?Á6žJ¥&&&˜ï¸t: …$IB««ª*Š")öûý²,„d2™N§'&&˜ÝD*• …Bår™ X,–X,†³…PSñ „Ì X¡PˆF£ä”¢Ñ(Îy#cNÒA0€2ÑÞ&ÉdÒï÷“QŽä_I’‚Á rÉèO&“¸[!&Š"Îa‚@(Øíw”îöR©är¹Ïóp™évÓp¦áæËpH/•Jf¼ï¹K0V¯Z-IÒ‰'“Ãáp8Û¶m£3#‘Èõë×õRßÅbñðáà ‰„¯¤3“ɤÅbyöÙgõuØ»woKK Ãy* û÷ïghLÇ:uŠAxë­·ô‚å½½½zÁrôÏ?ÿ¼ž–³víÚ•+WÒ™(XÎtš,Ëo¼ñÆÉ“'þÏózÁr¯×;44tüøq}“Ÿ}öY&œ(ŠÓ –ë»Ý4œi¸y4Ü?þã?šcç4qK¢×ÞÆ C„’eYŠ‚ I–eC“,Ëz“,ËzöFë×Ó˜ð*ÝcóÏÁV9Båü3Ÿˆ=‰uxlþ™i8Ópób8“88Ÿ.0‰ƒ&ÿÌ4œi8“8¸àÒt2ØO¨œ 3Š…ÏŒ ¯Û º×†­xBÃü‡"Ÿ×û¾s¹s ¸T*aŒ7Ú†äª|>¯÷Äåóy‚L_á5DÀÃÆ§G(‹¥R‰dAnY–3™ ãBEïGBлPõ(ÛÊ  MÓr¹z6i÷%"ÐMfh*öÓíÅbQ€†Ó»PMÙ†›{Ãaþ=·na}>(Š"Â… ¾ùÍoþÜÏý ‹–ˆD" xCâãñ8Ïóõõõä€ÇV&“aN« ×××.-¾™qÌáù É”$)™L.Y²„AˆD"555$'>.™LªªÚØØHoK¥R"‘hiiaßÒÒÂ#‘HSSCaŽF£V«•FÀ&K’„Ú¸¦áLÃ} g±XþáþáK_úÒ‘#Gpy1wßU_ÄkkkålEQΜ9sðàÁúúzú•{íÚ5»Ý¾mÛ6úM ïÞ½ËPˆ4M{÷Ýw÷ìÙÓÜÜL¿ÉoÞ¼ »w廉Ñè7žþyf/pæÌ™mÛ¶µ¶¶ÒwïÞ-‹ûöí£+–L&¯\¹rêÔ)fļ÷Þ{7n\¾|9ÐÓÓ“H$ž~úi!›Íž?þÙgŸe6q~øáªU«V¯^M# „B¡#GŽ0›¸³gÏž^á5D`¯Ó!`@a&ùU555ú¦9=‚Õje2ñ–DMM ³ŽX,=‚Ãá°X,L&z].—Ýng:ÍA_¼ ív»õùúnw8zÃá|Ó?Ë )ôÏózÃá òŠ g·[x^o8 Ï;iM޳[­š¢°†“$ Ï׸\0ÕËNÎj·Zll·+ ðÞYã´ S‚µ VÁæ°16‡M´Š®rÓ£ô{…óÅÐp‹iÆ™¾ïy 0»oà†~å’LúMn¨ZM‡È¡ßääðZ g¡"ºb˜©§?ù‚fš\ L%Ñ*²té&˲¬§c&~(ÝíW^‡ÃÁ˜Øn·ãÚD÷°Ãá`,R˜FP…5œ h€âp”ív€9®*ÛíŠÃ¡`1•ãxÙnÇ §˜I#È_Ïr5üÉtÈôYù äÙʦ«Ø,"è ?t„âC‡éå W­ZÕÖÖ¦OtêÔ)·ÛÍtÎPÛL¦‘HäÙgŸÅ™“N§].óËçóÇ1Ë:ÍÕÖÖ2Ý•N§N§Ýn—eùßø}»ã8N¸³g¹ÿú_A›ŠÅgóy^‡p"v8œÅ‚µÄªl.4MãœNÌÄ¿uŠò\.'ÔÖbkáý÷rérÇ÷ûÜïÿ£ð"ˆÙYEQ\œ (Õ­fOek¬5z’ÈÉZmV+gªÒZ©¼²\ËÕªœºÖý ü ýæyÔÑ>‹óeqÌ8“÷=Ÿpý~ÜP`[ÿO3Ä®œAµzf„ŠÍ\±é@aæªN§Û­ßš¹Ýn}‡c$9ý´Ñ/¦À|äêZ*•îÞ½[ÇÙÖhñ8×Õ…#¾ÖèW†™CÇÝÔÂZ© ÑXçé‚.»?ÍójŒ2m“×Ú P˜Yi~æÑþ$󦡜/ègò¾ç'†¯ECGÒï[‹Å¢ßHb` ýn‚AÀŸ“4ºõ,TQ騡D÷CçÐCCÁr=‚Õj¥ãmÒtÌ ÒäÊxž§›LT¾2õù•dbG‘¸£èî y³’P_Üápà#ày°X \Ötž“Iï…Ñ.aæÂÇÙí0I+¾/Ï \<ð°”¡ •?oúJð¯‚ê7ÇŽ1=3Ú ÆN7_  •æúŒ£Iôæò=wç–ñxüܹsLÄÁþþ~MÓwEâŸõ÷÷£˜4ÿÌëõ2Áz4Mëïï/—Ëõõõtü3¿ßH¥ãŸŒŒ`¨b¤¯¯¯P(466ÒñÏFFF𫟉600`³Ù§A0¼víZ]]¸Îëõb˜Àuï¾û.¸®»»;{<:pÏçC6¸.ž={‡û¡C‡a†ÜÊ3Êçóݽ{×ét&‰x<~öìYAÂá°>ŒÆ&Œ‰qóæÍ¦¦¦|>  ŸÉœÎŽ›7·©ª&Ëœª¶mºOè‡æ¸ gÏ—, WÓPS“¯Ý6ª.SeMV9¸ÇÀÕåk rj*›ºpù‚$JJYAÃ1»»»ÇÇÇ}>q0D":,öÕÀÀ·Òó¥§§Çåra ?:â Žñ}/ô‡M¥ù¹v›X­Ö¶¶6&Þ÷èèhkk+}8Ûl6,LF¹ÅbI&“Ìòáñx–.]ÊDÆð•ííít¦Íf‹F£Lx9ŽãFGG—.]ÊDN¥R’$‘:Àdôá`0ØÑÑÁC¡Pss3aé"B.—#M¦ÃFOLL´··3Ôݱ±±––¦ÉÅb‘nLri@kk«ÍfSOüg=¹\®åË—[­VA …B{{;ÏóÕØò`»—.]*IR.—€¶öö’ÍÖÐØˆ%fý¡­­­å¥KyU †BÍÍÍÍKší%;úŽ8˜åÇY,–ÖŽVYKR‰Ž'ÍÍÍŒé1¨S{{;Ã=÷z½­­­L¼ï@ P[[ËŒ4‹ÅR(èù²hfœ 4oÝ\¾«žTUu»ÝzÅhdzeˆ-”J¥dž è̦¦¦L&£—úÙ¼ys]]s, B*•J$L\M¬ÃÆÝëR©T(„|>‡7oÞÌ ¯Y³†¦ªªÆãq¡T*ùýþ­[·2>ŸoݺuŒ`9ò«EQ†††¶lÙBï>fñ0¡Ð¥žN§±Óô78fëq«W¯F‰ñl6 ÐF«WWéœjÝ–-ÐØÃ##ÄpÍÐ<Ëãì6ûºÍë¦3„B¡ŽŽFнIŒé`tttëÖ­ÌyF4mlld ×ÔÔ¤Óiý|Y3޾'e.ßs´‚3Ê{¨{],ñ"î0Þ&ѽ&ŸQ´ö6 ‹x匦u¯I&Š…3V§ÅÂéÂD÷šÐžˆÜ8Ò˜è†ÐqGéVL‡@b~Î\I’ TU-‹xi­JŸ„†qG±ø5PDzï¾áTUá8¡TªÃ@+5Mã4 §j*§r2/Cž§¦)šÆk´á˜qbhzf´“(²Di~æ‘FÆ.Ögú¾ç:=4&úéD8¤†¡#郴=ÍIš®ƒ@gê AÈØªɯ¤tÓªg)ú¨T=Â;xž¯þã€Dkâxà«ù8Þ8”k%£ýIæ QîúŒ›á˜Ç\¾«î7‰ƒU"Vi÷= ­ãÁíNÓ¸ª=Ž%ª ñpU{œIœ¥gç'M§{­§11º×„B„Ü&æ5Î јfÖ½fH{x„ÂИˆî5Ó´ i´`9ýE2]*'Îúþ”ÔðÏÂ,¦ûì=Êp"èë³Ö:›% VgfqÀ=q°B¥ùÇ .ôgçÇm’ËåFFFè“tEQB¡ÐÀÀs>>>n·Û].}0‡C¡Ððð0óú …BƒƒƒÌ9x8Æ3F÷: 1ÃÌt:M+‹ŒÜ8Š´"y‹öÄ¥Ói¯×[,éVx½Þt:Mê@:! õõõ1Ì“@ €|º£££‘H„A(‹Ùl¶¿¿ßn·+вjÕ*k–¹T*¬Vk0L§ÓCCC<χB¡*íLÇÇÇÇÆÆJ¥Ò}à •¬ÖúññV¨Ânkt`™'h¸‚T°•lñ¶8Ô³ü8©$yF=Š HE‰Ž'~¿ézÌð Ì|)—Ë8xæ‰ßïÏf³ÈD"ã$ ¥Óiz¾,šÇó¼>­¹|Wwë],GGGIÀXL±Xltt”œ##©3 a $‰#55G£Qý`ŠÅb^¯7•Jº(ÆÁDg&“ÉX,6<<Ì ¦h4:66–ÍfIaTÝ.•J‡Õ‘…ŠÌòÂäÊ™´s„|>ÇGFFü‹‚ D£QÀ“%R‡‰‰‰T*EZAæp¡PµZ­år¹­­(ÎÖzÊq\*•t:Éd2—Ë ‹¢ˆS´Ëw0Ëårh8ÏðpÞåZ ¶b}f}ù-äó¢,£áÒ…t]¾.åLAhÚì¹P4$I•,’RRÐpôÁ#ŠÊ£n:mú@ Fq5$ÃL–åx<îñxH¨U,‡1„7=ÒÒé4ŽY¾ÁŒ³X,ÅbqnÀ°Òü‰'˜|Y–?Î\øÆˆhŒîu8¾qã†^sº\.:t¨9“ÉP÷:_¾|Y/.Ëòž={˜¨ÄwïÞÍçó 3³Ù¬(Š/¾ø"ƒðÖ[omß¾}Ù²etfOOO,;räY,9Ž{ñÅõ«íÚµkW­ZEç NLL;vŒiïo¼qêÔ)šñ=ëÄÁ+V ‹Ñçóݹs; ß1³þ^We÷îݨì>Åpñ8cÂl‡=öÜsÐÜÌn¬žã˜¥Çqµ5µÇ_:>áСÑÑѱnÝ:æ344Äh´cð¦S§NéƒM655mÚ´‰ÎDÃéçËâ˜qßûÞ÷Ì€±sš #*ŠBkN) d,ÑÑËÊå2ÆKc0Ia:zšÖAÿÌ<Ž%A½½`ù#!”J%&lô#ÕAÓ´R©„û÷êíA°£øEbžTéYDÑüáxY®ÖÑådÌb8Ð@å«ÂEÓ@ÓT 8` Wáhgâ}ãàÁ‹?E0Tš_è3ÎŒ88Ÿp˜&Àè‚U¢œMp*‰fH¥šaº*UÁð_£³n,Ã:TïYSþg•‹‡7Û{üÑ>‹óeq̸MäÁLf2“™Ìdî¾çeNüžäî‰á[—þ'= ¦Þ^1¼`¢G01DÐofPÎÖkŠWˆ`¸Ù©¡ªÛýƧª·„˜ÿÀæUm ij[onö£PÍ{äÑn¸ù}<„©í^ð3nAo½aA_šG§£4O®ðÒ²/‚ à­_âG“$ ãø0ž8D ÈøY–ÑWH#‹EY–%IÒë^“ëé/(“L¡X,êËÉ•ß ô‚å•#(Š‚'着"vÖ…ÞI¬¶ªwi¾\.£3”Ná8K¹\¥±^*µR‰£ Ç©œl‘¡ 4M+I%à63Ú±ôXeLO|ß8xøéˆáh³.ôGkN™Ë÷%Œ?yæÌ†8Ø××'I’Ëå¢iLÃÃÃH‡¢iL‰DƒR2§}}}¹\®®®Žf,!G"Ó™©Tj||\ï ìííM¥R 4ill¬\.§ÓišÆ„D@lÍÇ ƒÙl¶§§‡n…Ïç+ …BF( È£bˆƒ}}}@`hhˆfùýþL&ƒ³ˆlI0`ìûï¿D±S§N!‡wv‰ƒ^¯÷Úµk.—+Ng2™·Þz )nÕx©ÀÍ›7ëëë³Ùl"‘€D$’w»Wݼ¹@›&Z쓤³gÏæ[ZDY„BÙl¶«¯«>WïÝç…5 jêì3™ÌûgÞ/ZŠjYEÃÓã°õz½´éC¡P<Ç“F2ÌdYîïï—eÆ’‘688èp8?NSî2™Ì~ô#†8¸fœ0v¶Þ Ï<óŒ~÷}èÐ!F÷Õ·oßÎè^ß¹s‡–ÔÂU.—÷ìÙƒÁZgÖ½ŽD"7nÜ8yò¤~/°}ûvF÷úÎ;ÅbqÿþýŒîµ 'Ožd†Îûï¿¿aÃF°¼»»;™LêËàøñãÌî[Ó´U«V­Y³†,ƒGÕ –=zç02Àf8¸lÙ²¦¦&žçÇÇÇûûû‘Á†Á¸gÛÁ+вmÛ¶C‡aào4œÂó¶HªCͼoCÃUol7àúý¸0öS0Öð¡ÕS”æç2`,þ?3`¬0Ö\¾ “0f#`¬ÝnçyžŽZÕ­÷|ŒÅöW«uú€±\ÕÆê gŒ5Æ.˜µ;‘H\¼x‘øO‘Æ400Àó<ÿ¬··×jµ¦R)šÆ„‘ÒˆÐIŠ¢Ð$$Q}> i”&B »¦ˆq×ßß/IRSSMcF.-CÆøàƒôRÅ7oÞ¦[1::ŠÂ»LÄÁÁÁA"7~ÿtKz{{c±r§HÆÇlj:Á鈃±XìÃ?´Z­²,ïß¿ÇÎ.qpbb¢§§Çáp`ع>ú¨J±Ç>ùä“%K–äóù@ R.Wp:Û?ùdsuˆƒWÎ+.Y"È2nÐ3è.¸Ç6AÇì³¹ìå/—Ä’\’ÑpLÄÁîîn¿ß Îh8Æ 3Y–- q°»»ÛårÅb1z¤%“Éh4zîÜ9†8¸f"›ç¶Þ¢ØÐÐÀ(Í;ÎúúzÔÍ#ÚívÛl6z|`,l§ÓÙØØÈ &D@d:Ð00™š¦!3˜œNg]]]I2’$‘:à`BíàÆÆFfù¯©©ill¤[Aê@#Øl6‡ÃÑÐÐÀÄûFæ 3%’Éd©T"ƒI¥y$ŠÙívý!êl%»ÝÞÔÔd³ÙŠ‹M®FÈ*l—Ûí®««³ÛíÉd6Ûý¨xUøÂ¨¯¯/54ŠbõùjjjN†ñ›õ»—‚ Ô7ÖË¢\*–ÐpŒÒ¼Ë媩©aLŸÍf³ÙlCCïÍÚE‘A€I:&ŽY¾ÁŒAÿl.ßULªªÖÔÔè£}>ߎ;"T.—s:LáX,V,õíãããÛ·ogt¯‘â¶eË:3•Je2&*&ÖaÛ¶mMMMÌ&4ŸÏ3uÀhÝ;vìÐ×aÆ ííí̼Åb *ìÚµ‹A‡Ãk×®e”æívûÄÄÓ EQ¼^ïÎ;¥yÜÌÜ0¦ ¤ 755a‡444 ì´öövòÖ¡g~:.õ{%DÀoöõëףĸ$I°m4<  g±Ü¯°ACJC%MÆsDวvóùˆáÚ Í gAÁ¶ išÆsºVh*ý &r¢ j½fÓŽMÓâñ¸^i¾¦¦Æjµ2¦€‰‰‰;w2Éd²©©‰‘„÷ûý…BA?_ÇŒ«©©1yßs½‚Ó2Ò0y3»X,¢þ­9/[EQ„4j5^" u¯Q|è^ëÈN–$D uCFå\áÅëÝÌ ÄKÀØÀJpMš —ŸËñö©É d˜ óEZ¤sáO¬@.—{ì øtљљ–J¥ ”æS)®\†rðŒ3ö5Oçƒ~€ årZ}=hÚ}Ãi*§r1>VæÊe(Ïap£gúJ`á0„5EÓ81=ÚÑôôXeLO*ŽU:ä¬!¹òÎÌ—E0ãÙ¼4?‰ÈHÓ{@ZšZ/»Î¨V3›8½î5Lå"̬{ S‰\zÝkÄÔ#=nˆ¡Òṳ̈iôW­Ïçs¹\ ôÎ:•J¥R)fSÛÀåË—3ºè3ArÔLj[[[û¥/} ×ÙÑÑÑöövæ03ˆ¢Hîã‘]$a”(Àãñ´¶¶ºÝnEQPjàAÛyž×4nÓ&xõU„B6 W¯^Í ŒŽŽ¶´´×*¹é'Ër[[]R’¤ ¿õªU¸[çjkïÿ¶Žã‡—¹—Ýš[äÄp,\,;::˜g|||ÕÊU¼0Åôcccuuud+ŠuH$¹\nù²åhíÐÎ(ÍW>ڙ᪃ìù²pgœ©4?oIO„‚G¡R ¦¡.? ¦!=io¶ž8HtWWײeËêëëEÁÇq@```€Üæ'+ѵkךššH°üÛÝÝÝÔÔÔØØH˜‡ÖÖÖþÙŸý‚|øá‡Çg:¡»»Ûét2ë¬$IüñÑ£G™Â}ôÑ‘#GÈ® ýøZ§(ÚöíÚ7¿É$åú… +cfíóç÷ïßï´Ù4@F<ž|>ߺy3fâß Àõ?\~ü¸HŒ1ÜOÁOý”òS Àøèx,ÛѾhˆ<|píƒí'lÖ8¸úÉÕõë×7Ö6U‰/äóùvwìÆLt°Ì q°óeaÍ8“88o[o=qÐP{éM•¡ðͬ'íáɆ!‚Þ kˆ@”õ*ïúcdSéDQœN'žqYˆ¢hXCŽãôæt:Çq¤íàp8\.Óí(J«çŸ9N§ÓÉ èék8…’Éd2™dn3' I’˜å;ã$“’Éd<oii!ƒaŠáð?À»’I=ÏÀ•L:âq®­£&†3‘€|ž›üí}„dÒ•LZ4í£|²áS($œ‰D!S!²ölÒ•,Û˰В¤+wĹF *wÄÎè1ŸÎpÓvÚô˜¦Óª7D04Ü"˜qspƒÌ\¾ ÖnI’ÆÆÆhG˜ªªÙlÖãñÐ!xxžÅbÙlÖëõ/ÏóÑh4“ÉŒŽŽ2ë–Dç)ÙHbàºÑÑQ&ü >ޱ}&“ËçóôãÂá°$It0àT6›aFd±Xôûýx˜  Ô7ƒÏç³Ù,Ò¿èÁd2911Aô!$ A’¤r¹<<Ÿ/™LÒ©TªX,ê —Ïçõ†+ ¹\®Ã¥ ½áRù¼×ïÏ•JôãBñ¸¡á҅ˆÇS‰ábÁ˜¡á éÂèà(c¸l"ž[`J·Gü‘LŸgØc¦áLÃÍ£á,Ë·¿ýíW_}õÈ‘#¸¼,<òBI¸µùðÿøÅ/êÿõõ×_'¬’._¾|ûöm&3 þð‡?Ô#¼ñÆÑh”ɼzõêÕ«W™Ìh4úÆoè~øÃƒA&óöíÛ—/_f2S©Ô믿nˆàõz™Ì®®.¼4A§\.÷Úk¯IV’Þ}÷Ý‘‘&³¯¯ïƒ>`2‹Åâ÷¾÷=<¸§ÓÙ³ôöö3™CC#ï¼s†É,—•üàõl6Çäôѹ»w»˜L¯×«ïvUÓ^{ã¤Îp—._¾¥3\ |óôiÓ¿ùf¤BÃE¢o¾þ¦áô›§ƒánݾ|Ig¸dê×ÞÐÔ w÷ܹt†Ë¾þú¥ÌäŸ9óÎÈÈ“ÙßßûÁg+4Ü|Ð××ÇdŽŒŒ¼ûî»L¦¢(¯½ö~¯Ðéܹs]]nÑ̸/~ñ‹~ø!Y^PZ¨·Eõ縊jòcŽ6|“Ñä‡Ó!‚Ì€@WŒ®0ƒ@~(ºükåuJ‘}ò DQE„UéL‹E&ÿsÒZ¦ 3 A 5Ñ÷§(¢,‹Ø üWM€™¸šÌ´èCjƒ`l8Ð@eY”5`«![dY”I1TR˜dÒ ÷PÃá°eYœÚ2eQ–EZÿg2ßBF,L!®’ÑNw>.U"n̸j‡ß1}ßfš»B©¡ÀârªÏžÒùýb(ä€>´+—ùHÄ96Æ»Ý÷óño0h—$KC( ÔÔ€.Î3¨¡Éÿˆ8ã‚PSØA»Ýn³5¨üdfHÃG€™À“E À ¾I Àƒœ'øY’µ#ì}"”'Ÿ¤ð` Ø´¢)5R‚3℉I¡ï¥†Šßi€ €`±ìöL…àù¬Óáù1 G— pGHVº‹ßnM"XšÌj&sù6s 'OBWÇó ªGˆC•â\¬XMýÏûÎC€æOÜÿ{,(—ù_þeøæ7ÙÇ…–áF]à…h Çý¿{÷ŸîƒÌ¥KáÔ)ƒª?ÿŸÏçóŒÒüÐÐè”æ{{{ý~ÿàà 54N“ œ@)ÍŸ9s†ç-v{9~ –ÝR>Ñî[àFGGÏŸ¿–Lº …t&“ùá[o‰²q:øLfkƒªiÀqׯ_¯óz³Ng<€D$‘wçW^_¹ökª6ëQß{ï½|K^”Å@(Íf{zîärõûö®^ š¦ÎÖöO2™ô{ï±XŠå²Š†c”æûûû=Ïèè(£4‹Å&_Ò@Lß××§Wšp:>ŸO¯4úôi†z¸fœ©4?×IUÕººº§Ÿ~š Y%IÒÝk‹Åâp8¶nÝÊè^Ûl6æî5ò±vïÞÝÜÜL¿Éoß¾ ;wѨ(ŠGeÆS±Xܶm£{][[[(öíÛÇ\C€£G2Cçƒ>X¿~ý²eËh„žžžd2yèÐ!Fi^Q”Ç3Jó²,¯\¹rõêÕ4Âàà`0<|ø0£4ÿÑG)ËÂÄ„o``à™#G@Ó‚Uˆ°Ìsœ°yóæ½ª Ã)¼bØ€ã9˜e¡y8pà€ÚªrÀM®CQÄššvà8féy8Ê\.×±cy^-Šh8Fi^Ó´ÖÖÖuëÖÑcÕãñx½^bzÄÐT‡b”æ9Ž«¯¯ß´iàóù˜ù²fÞñùÁ~`FœSÏ ;fò].Wss3#/]WW‡qéÌr¹ìv»™LDhjjbòqQc25Ms¹\Lôap»Ýz„ºº:«ÕÊdblåææfÁf³ad:/b0™xa½¥¥…¹þ‡MÓ#äóy}Ó¬Vkss3¾ª÷Øá°ÕÖÚ —Ëâ•tžT)Õ¹Ýun7k¸ºj=®¾¹hÃápTç»Sljª—«DޤÚÚZýàI&“±XŒÉTU‡ʺόÍ>0Üâ›qôÅ%sùž£ÜPi¾\.ëå¥õÚÛ»ÒP÷šF˜A÷ u¯õ¤tÅÁÐ÷m¨?B¹\fvßèૃvZ,Ü‹Tçk 4MàH  UO46І•—y®:ê“Zù>‰œ2ð|•vsšªj´á:Ú‰k˜¹4ƒ‡÷:ÂtJó zÆ™¾ïyK*g3 æC÷Úð„½J†}Œ:TÁXSŸ^ÍgÑ Üd8×*6c ÕmÝ#öédãŸd¾,ŽgŒÏ ¸~?n*Í?^ÀØY<±4jŽ ÀOyhÕvßî¾¹QUUP9ãªÖ:B¼@ž×8SiÞTš7—oãCªi”æõ‘K­V+Æ´¤ƒO¢F»¡î50ƒî5"ê^ël6›^÷ôcAÐ+gÛl6:*æÌJó¤É• ÁòêmDDñ¾Ú»Ífáþ£«66¬lj"m8D¨–Ðù¤/›u¤R±p8|éòeAQÂvûƒ{•³åd×4฻½½í¡PÁn÷y½ ””¢£¸ôîÒ§à©j¯_¼^\R 766R(¸7nôµµÍ>q0—ËÞ¼yMK¥’Œ†£}ßÈ ƒ‘H„ŒvQ'&&B¡Ãá ,˲<<<|þüy:¨/ηÛL& ÆM ‡ÃÌ|Y3ލx›Jós½‚;fùÆ÷0òXÉ€¶Z­V«Õn·ctyÌÄ­s掄D îðq¡P( 3˜p;Ì àÑ¢Ýn'K'ž® ³|cõH+Áf³•J%GªÃá`–oÜþ ÓË· ‚ Øív‹Åf±È³>ˆïëˆ¢ÍæT[±hÁápðŠbŸ*6;›ÜWÚ°ÙÐpv‡³q÷¿Qªðya·Û9;'¨ÎnwpœmÒ"\†½]ž/£á¬V+½|ãðÓv«Õª_¾§›/ nÐpÌò½Ðg.ßæî{N“ªªµµµÛ·ogòC¡Ðž={ÝëR©ät:Õj¼Å ×hƒ»wïft¯ñr#PJ¥ …ÂîÝ»õuصk£{-Šb>Ÿgòù|:Þ«ÛƒÁM›61qív{,cJ¥R"‘Ø·oƒÇõJó555 ‚¢({÷îÅ=ÙsÜì-ß´¶¶<õT øýþR©´kçNˆWé`ãš5›×¬ ·kÀhµÎ©¶îÙ `€2\ëì>‘çÞ½Ûô†#)Në•æN§^a= íÛ·¡ær9C¥ùR©¤Ÿ/‹cÆ¡P²¹|Ïé þØJóDsz:Ýëššš„„ƒ IK Âtº×•ëÄ?¹Ò|±Xdˆƒ3(ÍX½Ò­÷ß ”á J!îiÃ=¶Ò|åó…6Übšq¦Òüü¬Ý’$Æ÷H$ÆÇÇëêêhO\$±Ùl@€ö†B!¤Ö1¯ñD"áóùЕFühé†AˆF£D±=fÞ÷ðN"„B!ºÂX½T*…f|ß¹\. ‘A‚J¥„\.‡âñ´`9Š…ûý~"7ŽÁ`0‹1Åb±P(ŒÛlvAPK¥¥0«ënn2™\$/•ÄP(”Ëåü~?§iAA€ÖÖYÞ™@8g³²Årßpþ@Y,»ÃîFh¬†(8TÊ §qh8AàdÙÚØ˜q¹`ÖýQår) ò¼R,Jh8Æï‹ÅAp»ÝôXõûýñxœ™/år‡ŸË墢Ñh¹\F&„ÄpŒï{¡Ï8r6°@Wð…ÊûÎf³wîÜaÆNLL`':|¥ÇãÁW1¾Òçóݺu‹ùzš˜˜E‘ _‡a’…J‡¯œ˜˜¸uëó^ñù|@8×tøJA˜ð•ˆÀŒM&“CCCÁ` ›Ëål60Öï÷ß¾}› ;66–Ï瑺KŒM¥R4ÛÃSd2™»wïbÀØBá€e½(š¦p‘H¤·÷f2é,Ò©TêæíÛ÷ÆÎúò­iÀq###ÝccY‡# €")waÅÈŠFh¬† ¥««+Ì‹²ˆ† ‡'òùúÝ»#.ºVgíEÈqP(nܸ‹cÑpLÀX¯×›L&‘sMŒF£·oßfÆúýþ;wî0cGGG].žòÑcS©=_ÍŒ³X,Ùlv¡r¨Òü¾ðV°\U_ýõD"Á –_º„ƒ†N~¿:Ýëp8Ìd^¹råÊ•+Lf8žN÷Úï÷3™·nݺté“™H$^ýu<1gFGG™Ì»wï~ô+XžÍf_{í5¯‡VšbË{{{ÏžeËóùü÷¾÷½|>ÿsëV @ãyôƒÏÂÿY,€ö¥/ÝÜèè(éö€¦ÝW÷™½ÿ³hhÚk††{*1‹ÿÇiZÀÐp_šíçñšš¶ÕÐp$={¶··—ÉÒ+Í—Ëå×^{-›Í2ù}ôÑÝ»w™LÚp‹oÆ}á _0•æççÝCþ›Xešs9`”§z`Hÿd:„é@¦CÐWLOZª°'õçZ•צjÌWÇL÷Á§œUoTÀ}‘ö†µÊÏc Wí΄L9Ãh×Ͻ{åóe̸…~t¹°—o3™ÉLfúW›ÌåÛLf2“™Ìå{Γ¡È:LêD9ûQ*ÄyT}á f(\BUß¹‡üïÙSŸÅÍaË ª,†™•æ+1ýcŒö‡ŽÏ:ãL¥ùyKŒzº´ˆ?ް…Haú.íS£üÉ zí™èŠÍ€@®¾†€h´©öôê½ÎQmgJ?WsÃÛ ªP-"6hªF;º'Õvª5ìQmg†ÑN<¼ôeÈ'œ/´áèq¾ÐgœyërÆŸ|ûí·õJóÅbÑP÷:èu¯õ'!===ÙlÖP÷cî0º×ú]j ê^&Pº×Mæcl6ÛÕÕ¥WšÏårz¥y¬£4?11100 Wš/ q0‰¼ûJóÏVCiÞãñœ;w•æÓéô›§Oß'>ÿü,/mšwíÚµZJi>ŽçÝù•×Vîƒ}Õ{æÌTš÷ýÙl¶»û“\®~ï^O5”æÓéôûï¿‹ÄA4œ^i~ddÄãñè•æ1`f¨4_.— •æÇÇÇâ`:FêÈ"›q‹Éòæò=G #îÛ·"ã`Êår»wïFÝk˜ääcTû-[¶?^"EñàÁƒÌ`Êf³»víjnn¦ ß¹s¶oßNgF£Q8xð 3˜r¹ÜÖ­[—.]Jv:ÅbqÏž=äÍünY–<È,ßçÎ[»vmGGÝŠšššT*…M&Ùl¶T*íß¿£†„b±¸råÊU«VÑu ‡Ãû÷ï§ …Â… öìÙƒJó“¡ãf=â`ë¶mGeYðû'†††8ÀUGi·aÆ˗ˢx ·m»,ÊÎqg•>–wïÞ­¶ªœÆ;†kW±®®*NçÓOïA¥y4†¬"ãD–å%K– Ò<1ýèè¨×ëÝ¿?=HJ¥R>Ÿß»w/*Í¿©®®î©§ž¢ÇÉÄÄÄÐÐ=_ÍŒãyþûßÿ¾qpNÝ&(³Íä×ÕÕµ¶¶2º× N§³¥¥…A¨««c2aéÒ¥Œšumm-0…A¨««[²d‰aÉ’%Lᦦ¦|>ÏdÚív¬0ƒàp8š››™Â‘H„ã8&³¦¦¦¶¶¶½½Y&êëë[ZZ˜ÂÉd²T*1™årÙf³µµµMFX‹8ECAEÜôMu pÌ®p2Á7¾ÕÊ@m­£±Ñ¥’411±¤¥_ÂGÝV/òÓßX˜×>kÇqV ¹®®±®îá–´4Xî_)Õ4ã9½„V­Ä/Œgžl2p4·5C3m8µ"€u2þ ¯÷a ½‹‰ê ]Ç š(:–.mÖnfÓçr¹T*¥Ÿµµµmmmv»Ahjjb K’411a8_ÁŒ£w?æò=wŽoFi/zéu¯1“Q­FŠ>ƒÉ Õj0Ò½&÷tiCò8F÷ï•1n†ÊÙ†¥RI–åR©ÄŒ­¼T³T*‰¢ …ö;D‘FÀÿ@÷¢!‚þÀÚÁjµ¢jã‰CqB}Ól6›A/³ŒïîkKV„€Ê‡ƒÉÏåœÙ¬€§©„Ù,ɤç°=—s N‡ƒE°Û `?a­Ønçù¬Ó™u:k§ægNÕéž§YxXRÏËÃ|Ûd¾8½áœY§3ëÔó1ŸwMvðàÌ9!ÿ¿™’:4#oh8÷z½¢(ær9ú :•J…Ãá+W®0È‘HäúõëÌY| @OÃúˆD"z„p8|ãÆ ¡I0 %Íšâ8.ŸÏG£ÑK—.Ñ£ëvïÞ½±±1! æóù«W¯2 “h4zñâEš8ˆÔCI’0ŽA‡Ã™L†FÀ°B¡pñâEzLsŒg³ÉD"B79‹Åãq¦²,'‘?¾„‘KIþÄ„7‘ˆd³I!N§R)¦ªª&"‘:Ã{½¢(³YÆp±PHßíñpøvņ Ç LŠ…n|bl8õªÊ.’ˆ<’á5\$’¸xñ2c8¿?\,Ê~ø± çóùR©T4­ÄpÑhôòåËŒáÆÆÆ¢Ñh*•ªÄp‹`Æ ‚Édè n^š7“™Ìd&s÷=WIUÕššC…õ0º×Ç9έ[·Ò™±Xìã?f8¤˜¿wï^F÷úúõëÀT§R©b±¨GH${öìat¯»ººòùüþýûéL¼†óôÓOëë°eËFi¾··7‹8p€Î,•Jétúðáì'!›]¿~=£4?44411Á ¨ª‡>Ìì>JÅ|GGGçº S¼Ã£#ƒƒƒ €šˆEž>¸ßbsйJYjjjÚ¸iŠÜ8F'×!@,Ùw`ÛY;uk¡:Îm[vLÙ¬ÅB×®•ô݇wïÝÙP×ôPÃÅR‰œT0@HÆwìÙµ´i Õì“{wóùü}S*œÎgÓùl…†»×Ó§7\A*'R™C‡3»§T&·nݺ5«¦®p¸rÃI’ÔÑѱvíÚ)†Ðw{<?tè£4/ËrSSÓSO=U‰áÇŒ«©©1yßs½‚ë•æEat¯‘-„2ÛŒjµ^9iL•ë^˲¬×½Fú µ· õŠVºA­n=qQšŸA¯4¯×ªŸ¡P(hšV(î – >æÁ•çÜ*}p çܘI\–€Ïs®<8jèƒK€<çrp®Š‚Iä<Šž0⸼›Ë»Á>‚Ë»0µ÷K2sM›ÌŸ¬„¬ÊŒáD^Ärç9wž…¥;ÞÏo˜¬ƒ Àƒ+|žuJÅî—,A4M½¤öáá>„‹Ë¹>9Õp_y­ß9^Ç7Èšº’Ûï†6”¶¿ßvàü|æcÍËsb™ê_Oó½ ËúƊ؈k ‘âã5Nå8~¤ÙW*IÃ|M‰ÉÙ³Ý+ã)¡‡çyàXkŸœG¤'á0'X8·)“µŽ÷ñ4B¡`½_•º'ŠâêÉ'‘ew…ºÖÂýšÊq<çó5ÄãZ ×­ÖÉX¥=Ti~º±Ê(Í?‚þˆoÌ83æÉ¼%Si~v•æ5îõ_àÆ|`ƒm"€  аM€6à“)ÛV‘ƒý€>mJá-x¥òpY€“ÿQû±ÿ¦>:Ñÿû <±î‡ÞûÚó ,`J&ßb#Üc_w`ݽáà?iÿo³öÓSZªÁyÍû³Üÿ¨:€}"@7;žöZzÔ)ÍX#pW§dº±Í=ø»qíkP3uLj߸ÂýíYÜüJà®OmçË~ì´mëNè :TaaðËà€Ä-[c_Öð¦+˜JóO<ãL¥ùyÛz*ÍëåØ µ·‰ì:ƒÉ Ì {†D(Cx Ãr?’Ò¼¡N<‘Ù&M˜¡†ÇÝê×p‡ÀÆiª÷o…?ð”h ¦qV£ûßÖiî V€8x`¹ ìn°N^ƒ×¬ÓÜ ·sÜTo æusXµrV€²ssGpƒÝ5p—@Õ4çX¥{UÓ8Î:õÎ<àDç9ÛTW îÚî·ÙÎÙBN À58@tƒÕ %EÓxg€`5Š`}p¥sÒÛ¢ivN³Ààýû)†«x´Óž<• L§4¿ gœ©4??kw©TBvÉQ%•JƒÁb±HSˆ‰D¡PˆD"tD›p8œJ¥"‘óúM¥R¡Pˆ0–°p:ÉU¨©JW 3ÑGë‹E‚“t°ÂLȪB¡Fñ*3i>ŽAÀ8p(*ψG"ŒGëc>² ¹v»ÊñMRAÔÊ òœf .6¹¨(ùÓV@.dÓ©H\9 …H$ —ãƒjsùþ/9#m1Œó5£kì“%åX*Z—ƒ(£á‘ˆ(CÔ+ת *p ר¸3æÑ€¦º4ÐpV›M%­“Á*ÈÊ4ͨ4}L$9‰©_,NnjȪd2iµZëëë MÏ„¬J§Ó@€!í%“IMÓ˜q2i¸²jÌ8t”›Jós—ÐÀ×®]cÆŽ‰¢h¾2ŸÏëÃW¢*sF†á+ñä„ _ɰP‘ô*˲aøJŒ‰A‡¯DfùÆØžãããú€±xªCŒûøã™€±'N‡Ãa}ÀXQ™€±©TêÆ/óögóùZ4mÖBj𯉠¯_»ëR’é\!N_¹zd±äŒÀ,Ç‹MÓDúûû#ÞÛš3 Ç 'Üy®eö‰Ú,¶m2ݼy£%o•E@ÃŽMÔ ¹`p/ˆ«Ñ#5[mËçó7®^*ªU)£á˜€±ÃÃÑH$‘HèÆÚív&`ìØØ˜ÕjeÆ 9ÎL&£KÏ—E3ã,K:^ ¼ï¹|+ŠÒÔÔôâ‹/2!«8Ž;zôhCC}^qùòe‡Ã±sçNúÛï÷ߺuë•W^ÑÅ8p`É’%ô)öÕ«W1ŸF‡ÃW¯^ýÌg>£ÿܵkW{{;pûöíB¡pèÐ!ºb‰Dâüùó¯¼ò Ã<9}úôÖ­[W®\I#tuuÅãñgžy†FÈd2gÏž}饗æ‰ÅbY³fÍÚµki„ÞÞÞ@ pâÄ !ŸÏÿèG?zþùçN§Àûj! œmÖ„v9އ’²zõê•/>Ãx½Þ®®.ìö,ºgÿ³Œ/²oß¾ »OÄp BZèèæ9«2Û"§N=ßnÚpÚ÷ßæa x+§h³Ö6¡¶¶öùW~`ªá(ƒ:޶¶6 ÷JÆêÐÐÐÈÈÈ©S§æ Çq'Ož$¬üër¹·nÝJ#І£§áBŸq˜ÿÆo(F‘ØÌå»êîozKN:ƒN‰þ'rìÎ2´¿ÏÁð¥=]1ºÂ3´î‘ô‰ô}2BU¿y] ¾šWÆ8~J©ªÞNãé‡ÝoWÍaÏÏ<Úi††a„²Ç˜/ÌèZ43n¡‹¥-ì[—ÌIºáß ¢=B…8Š /\! …ŠPÕ3xÍ G›»çU÷QZÍå¶=ÒX}òùòÐñ¹@gÜBgž˜—æÍd&3™É\¾Íd&3™ÉLs•Ä]{Æ—§wöÁT'2Lã$h†Î2ýE50"žÓ z„é*fxå²Bl2÷îQëðàoõíD÷WµrpßÙýÀ:|•Ƕ®ª>Õ8ãh×ϦØ#Í—E0ãºï{¡*ÍÇãñwÞy‡!öôôH’dHc ƒ ÉçóÎùÕÓÓ“ËåRMãñ8Ccòz½ú£˜îîîT*eHcJ¥R ixx›35j¨?—ËÝ»w!ær9BÆ‚Iâààà 0ÄÁžž¿ß¯WšÇ ? q0¾ûî»H<‘N׊³KT9+Œz<7ß>ïT’é\!•J~ë‡÷‰ƒÏÍòÀÐ4ÕÊÁõׇÇê4G6Š@$s¸ë+â°ÇªV8xæ½w‘8ðûs¹Ü®žz!ïñìë*uv‰ƒ"—N§Ï¼õÑp q°¯¯Ïãñè•æ£Ñ( !ÃL–åÞÞ^Y–â`¿Ëåòù| q0•J>}š!.‚g±Xâñ¸©4?wIUU·ÛM„¨1/lݺ#ÿ¿¢(6›mË–-Š¢ u¯`×®]S'ˆ–L&·lÙBt¯UU¡«« ¶nÝJ#à|صk3žR©ÔæÍ›‰î5"ˆ¢(IÒŽ;ÈͼnP,wíÚÅ |>ßÙÙÙÖÖFˆP?•J1¹\.—Ëíܹ“}ƺe³ÙåË—¥yDp»Ýápé\tŸl6»mÛ6»Ý¦‚àv@8a‰ƒÈÐÒÒ²oÇS¢Vò‚ÃÃûvîË Á®*ìòe€5kÖ¬^²Y³È÷ºîÀ–­[Ä27âötsœuÖÏ·nÝÖª85.æò­míVNnÉ6Â8pVf‘8¨€ÃáØ¶s¼ôÀpvz´ …%K–¬]»–«£££N§“˜ñpuÛ¾}»Ëå¢$Iª««Û¸q#AÀòÃÃÃÌ|Y3‘Ýn·qpî’¦i(³Íä744,_¾ÜívÓ™---H†ÒlQôûýLlODX¶lYCC9>> ‚Ýn÷z½z„ŽŽ½N|¡P`jkk‡††–/_Î ¸\®¥K—2uK$‹…A(‹ +W®dÛÛÛ™ÂÙlVQ&³\.;ŽåË—ßX­³½¸q ‚«¦ÆÕÖŠªƒAlš–j8T€%KÚ—€oÜímí°rj5>•—·.o1\G{ÔÔ<ˆž2{ã¬VKkû2ÃM¦¦¦¦ÖÖVÆÊ¥R)—ËM7_µ¦æææÆÆF¦°ªªÄp‹oÆ‘Îæò=w+¸¡Ò<*p3á+ñ“¾€2Û†º×4 º×ˆ`¨{­G(—ËzAnD¨\i~:I’ôc ë`¨4¯ªê}Ár¾:ƒXSMÓ8Z°¼¥*¹£ËZYS5àT(óå*=®¤•4°Ò†Ãø¸Õ8Mдû¡`¦îa*ïd´W¢4OFZ…Jó zÆ™Jóó–L¥ùÙU𝮥ð6Ë”“R®zÃp[ÇUñêþÃŒŽÑª6ìM¥ùY›qfÀØyÛ€3Józyi|uÓ*×s¯{M “ò³Ž`¨4O Ó3)Í'TÏRšÆO1§qZ•pMÓTUî~\PUS9ªú8MSµ†Ó8NÕ4¾J\Ò6˜^åíd è•æŸp¾,‚g*ÍÏO2Tš·X,zÝk«Õj³Ù04%íGÓË®ƒ0³îµÅbÑX"Øl6 A—G½îµ¡N¼ÍfÃØžz½ÒŸ/•JGÕ×aÇŽ Ū¾¾ÞPi¾P(<óÌ3 B¡PX»v-£4ßÒÒ211Áu+Š‹ÅŽ9r@ßuC8q–ƶ-[Öv`øýþO>ùäéCO@âfß·À—@ÙöԶΧvÀuá`¹†®ðœmÖÆÞ{¤,J>0ܲ@?ð¶Y «€ÛíÚwè¨á¨µ¬£££³³“ÎÒk´§Óé£G2JóyãÆtæ}ÃéæËâ˜qû·kò¾çz×ñMÎho—J%¼dŨVOr¼ öµµµzÝkCýA "04&Üþ04&DÐqW9‚ž8ˆ¨ TU-‹÷ã}WƒAÅ&Ëx–‡›8ìö"«q¶Ç!“OÑ@b8P $” :ƒ¢VÔ@¤  Ê2_ÇâàÃMíXF'ž6=y÷ãXµX,• Ãéwß wÆÑç¥æò=§É$. â ?ÇÄA~*qŸcâ oMâ ¹|?äœÊ0~ñ“(gƒ‘Ö5ý¸™˜’P±Êûl!<©Ò|5Åþ…ª2ùDáÆÿ®Æ¡åƒÇ6uLV±/ Ç6<–Ò|5æËšq¦Òü¼m½õJóŒF;ѽF‰ë‡*gc42½j5‰a¦GÐX":0º×<Ïë•æ‘qU9¤ºùƒ­Æ|¨ÅÕHnU¬Åóü¤-H,U¹4 r"*Í?ˆW'€Xµ¡ná,ÜdÀI1u®JDŽ»¯¶3Åpí¢( ‚ÀÌzðT‚ ßö.‚g*ÍÏÏÚ].—“É$²*—Ëa\Úá•J¥J¥R"‘ ýh±X,›Í& æžËåb±ù-þ$—Ë€!—ËÅãqÆöÙl6‹"þ$•J …D"AW,™Lb…ß·$IÉdõ¿ B2™L§Ó B6›Íår‘H„ñ}cÓêëëŠP(J¥R4u8ì*ðõ²,ÌúHæ@*2‰´r2™”$)‘H€9> õUñ}§²©D1‚J Ç+²§À]•YMFEÕÜ}ùÜn”B¡8Û¬·M–•d"©_|`¸)~çt:ít:™±šH$pH0¾o~d¤T‹§nªï{¡Ï8d¤¨„æò= ÍséÒ%&`ìÈȆ¯L§ÓzÝëóçÏ3_O###²,ê^çr9½îõùóç™÷ÊÈȈ$I†á+1Ñá+GFFΟ?ÏŒF£’$y<½Ò<õÐc=ÏÅ‹™€±ƒƒƒñxÜï÷ë•æ1,06™L^¹rÆ>—ËͶҼÊYÀï÷_»t•æ3™Ìù çîŒ}aÖ ª…ƒîî(ͧóYwžë^‡ý–jŒ½zõ ŒEà x녜߿,«ÕÙæ}çr¹+>€±h8&`ìÀÀ@0 ‡Ãz¥yQ™€±G&`ìÀÀ¾˜€±™L†ž/‹fÆY,–T*eò¾ç.)ŠÒØØøÂ /0ÌxBÝkMÓI÷ú•W^Ñ¿·ŸPiþ­·ÞÚ²eK…Jó¢(ê•æEQ¬\iþí·ß>uê2O„‰ª(ͯZµjÙ Gy¯×{ïÞ½—_~²è™ýÏ2¾ÊÞ½{7ì<¥4¯@Jì詆ÒüsÏB¥yb8õûïˆÕQš¯9õò¡ÒüÃQµÛí•+Í€^iÞét*ÍÃÑÓp¡Ï8Si~Þü'̪‡9èæ£ó…ÉD»Þ°˜þ.ƒ@_Í7DÐ{®§CÐ?Ž 0o~R¾r}“õu0l2úu³¸ÀiØ"Ëd’þ¡÷Ê5xA°À1ð pTçy¢ L5œ€Ãd–û€qzÃ=0ýCGû ƒG?_hÃ-Ê·@—ÁE¥4?óAó£ò=*A˜äI`yìJ*iòŒJó攟ü'ÿ¿û‘›4½½@›Õ=xœ6)þþ s4Ð@ãªó4óñF»á(]è3Îdž˜i±$MƒÿxV“KÏ]¸p±µuéºuëè¯WgÔë=vìý ^.•ß?ûþ‘#G˜°Ë—/××7lÚ´IUÞ^šÆÐZ\°ô¿E=óÞ™ƒÖS¢-Ç]»~Ýa·3_ñÁPèî»§N=ÇLàwϜٳ{wss‹ª©N®Q•§¶&*¨/ÂZŸö5žã#ÑèÍ›7NzžÙs½wæÌ¶íÛ–.me|VÅbaïÞ}Sæ’W®\9õÜ)^`)¸ôùû'á7žVïééI$“ÌW|6›½pá³'ŸµX-ôWüG}´jåÊU«WÓu ƒ‡ÑTÍ*rºŽ4Ó¿Þd.ßf¢’³ÿÿ¢miÙÙî)b%²«T°˜LU¼¥E­]Î)D‹¢­µìlwëƒ%qï†ûPÖ|K­²Ü=ut[œƒ”Áä–-ÖBÉD·²Ü=ÉeQ½Gg±jÀ®ÇòÖv¨a ,)X—Éîf˜"•…"´MͬUÔ¡¼µêfèÈZÔÚβ­Pl›¯¶Xò+êT˜êKXj-´»d¦pÎYÛ„¾_4“¹|6i÷£<®.Zµ ë1ú‡†† †zIoC"L’a+G0ä±V^ò—Ö›AA&Î5*³ S¹' Û¸©…a²&~FAQQ~ðcôÌ)•A,ëF0††ÃÂêêù eÌ'âIa©"h‹Á!dd q9ïW×"Ni”AœZ˜'…Iæ´†«`´3÷$*Ÿ/††[3n¡ó¾˜P¢(‚ \¸pá[ßúÖ/üÂ/â ~~ææfZ¹ŽçùH$Âó|SS‰l€¢d2©WÿóûýMMM(ÿJ œN§Ã2Ìb±‹ÅôÚ}@ ¾¾žP©ðq±XLUÕ––’‰q$¢Ñh[[s…7;NºÈÕ$©µµ•F(—Ë¡P¨­­¡šš ãI’É$ªÿÑTUM&“õõõôaÏó@ÀápÔ××Ó™L&“É †2y–¢(@`éÒ¥H¼%…ƒÁ Ífkhh +\,óù|cc#ã4 gn¾ g±X¾ýío¿úê«GŽÁåÅÜ}W7©ªêp86mÚDÀTU5›ÍnذvÂò<ïÞ=›Í†n\’F·nÝʸP³ÙìÚµkÉ…üÛßß6l`®”Ëå-[¶0¯î\.×ÙÙI”³ñqƒƒƒ’$mÙ²…ÖþÈf³˜Éœƒß¸qcÅŠ„J…###étšAÈçóù|~Ó¦M´Ò<ôöööŽŽºï›A$éÖ­[7n¤yž/•JMMM+W®¤&&&ü~ÿ–-[¦ø¾ËeìvšÁ†r…µµµkÖ¬¡‡ÇÆÆ˜Xt¦áLÃÍ—á0-a¾›Î“¹9cÓl6îÝ»·zõj—ËżœN'#Çît:ƒÁàªU«ô+W®dt¯Ãá00…‰ÄøøøêÕ«„îîî+V0º×©T*ŸÏ3uÀKkÖ¬Ñס½½}Ù²eLaQI’×­[Ç utt0…QÜ–É”e¹«««³³“ác ޶¶´3…Õ2äÒ¦Ô2twõ­^ÑépOñ}{GÆ›šQÃá0ÛíôÜéZ½l¥«~Š?:8îw: ‚ËjOô†ë¹Óµªcy}KÓC F½^¯Þp]]]­­­tf</ LÒéôÐÐP…†Ëf³zËÅÁÁÁµk×2+Ñàà`{{»ÞÊ•Îãñ´µµ1… ŸÏtZOOgg§Í6ÅpcccMn±Ì8Si~Vp}ÀXUU%Ib.2L§½­WÎÆ2•ë^£3  UÞqZêÆâÕÊÊžDiCƒJ’„_ñ<Ïa¸%¡!/64@ÀL±±À×禄dâ-’PŸ³¸‹ÖÉüI„APÕûê˜[D7€ƒ\½P¨ôïò 8Å)5(4Zrõ3Õ4€\½Ph´ÔMSe™b8EQÈ2çt:™ëþÙ¦Ýîp8˜L¼’®Ïd/4Þ˜îì 3§#’2n½áOiž ž‡"L1åÉ\è3ÎTšÿ´œ^>jÍéŽ,*_ Ó„Z}ò`­O‚ðØc9.ü>—ðsÆÇ·Ž»\} hp÷ Ç©T[:å”VpôÁŸªZ¼£ûÞú'§ÅÂѧs›ívûè®( ëžá6ÿÐaNÒ|í,h jÚÞQoÍ?¼ÃÙ¦~n EQàZÆ HHÖÆ\nO$Â}ïGÌÉå^Ïhýß9·‹SŠðÿ;Èm[B·N¯×{úôi§Ó™Ëå‚ÁàÄÄÓ磣£½½½ÌF2‰(Šrûömf;ì÷û'&&ð?ó3?Cô H'û|>¿ßoµZ#‘ˆ$I·oßf"b«ªzóæMf) ^¯7™LÒ…ãñx>Ÿ¿}û¶¢(.—ë©§žzŒÑn0ö çËâ˜qfÀØyÛ€?žÒ<­½m¸£×k´“Çé u¯ UÞ«¤4O7Dßä‡"P=©]ÿ aÌv–© L¡™PÇC݈Ž8b…5>Ý C t¨=à´¬¶éß=КWU8àÒ÷Ísø€5`g0ÚÀ ôнãÞ"€—©Äj°ø £=½Vݶ„›Üëa{}>ßw¿û]¼Þm±XnܸÁ  <#3$žAŸÃdˆ;Dà8ý,ªEÓÝë÷û»ººr6º»»™åÆjµö÷÷3û>«Õ|>Cð¡§§§\.777oܸ‘¾“Rùh׋¬Ï™Òü§vÆ™Jó󓪪4Ïh´ãù’!Âtº×z•÷ê)Íë]3(ÍëhÁr÷¨ UÖP@÷m6žÝ­hªfåXõœ‚•ƒ2¸›8Ž8nª`¹ËV÷ý둪ÆqVC޳3ŽMÓ8Þª¯ÇYÁÊC¸:§ÈqÀqD°\.Wccc}}=ªÆ0ú^dÒgnÐ ÁGІs8èÁÇ1n\GÐFÌ‚h±Xõ2,ìp8ð 7¡4ϘÞf³}z”æçwÆ™Jós½vg2™îîn:‚š¢(>Ÿï“O>©­­%/mQ‡‡‡q0‘€d¨{=>>ÞÕÕÅl|>ß;wˆî5ÆmœŠ$3û|¾»wï2»ªññq»ÝNt¯I8I’\.‰öÇó|:Æ 3ì±x<ÞßßÇéV e2™úúz!—Ëù|¾[·n1ܯÑÑÑR©„rã¤'‹Ñrãè L§Ó·oß¶Zí¼(ç2¡lWx TCU_4ƒØ>ÓV@ãd.ˆuzÕ‚- Çãñ{w»¬¡ÂSeª5ƒßO—¯Ö4Ð8™ó Æ:ó6 Ðpv»£0â‰ß¬s pÈišF. ‚@Æ*÷tOçþF«år¹»wïÒ†#Çn8,=O:¦%zQ¸Ýï÷ß»w!/ú|¾Û·oÓñqœD£QEQ葉Dâñ8=_ÍŒ!“ɘç4ɲœH$ðˆƒ ¦|>ŸL&ÉÅÏäl6‹Ñ‡éð•x0Ç™Á„ôÈEå±ñq$3™L"3˜òù|*•E‘_™Édè:ÀdND`–o\yA [‘Édr¹ƒÏç1¨106ŸÏcho:j(A ÆbDÍd2)ŠVÞ*+Š2ËŽ@ x€b±˜HÅ”¬û!+"Ø“RjÀg³ÙX*áÈkh¸x<.Šb6›­ÒÅ!§im8TpŸÝ31äðš޼¹qXær9«Õʘ>NçóùD"ÁŒÅÁƒzd¤‘XÛôH#†c–ïE0ãð‡æî{î’ªª zÍé|>ÿÌ3Ï0§OV«Õáp0„Óh4j³Ùôí¹\îé§Ÿ®¯¯§3¯_ XNOZAŽ;¦¯ÃÞ½{›››é̺ººB¡Àè^çr9UUOœ8Á d³Ù;vtttЙMMM±XŒi2ªÍžŸd”æñçŒÒüðð°(Š q°¿¿?‰àCi¥ùL&CóyqàÆãñóçÏ ¼…·—³ÙSÔj³çEÑTÍœÏçûèãkJÒ•+¤3™ÌEpFJ/κcAÕ8°Ü½{w´eÜ™Õ"‰ »ndd„fÇÏ¢+ãÂ… .—KÓ4ÚpªªZ­ÖY<Cîs6›}ÿý÷iÃ长ñ¾>£4tC†88<< ŒÒüàà ÃáˆD"z¥ù³gÏ2ÄÁE0ã°ª&ï{î*Í3ÊÙ84>Ìè^_¹rÅn·3º×@àöíÛ/½ô’Þƒ¶oß>F÷úÚµk°oß>F÷úÚµk/½ô’þ½½sçNŒ­Lë^‹Åƒ2º×/^|饗˜Ý÷Ûo¿½iÓ&½Ò|"‘8zô¨^iþ…^`vß‚ ¬Y³¦³³“Fèëë Çg¶Zï¾ûî³Ï>ët:Ô‰[À6ÛÄÁ•+W>¤4Þëõöôô¼øâ‹ÈôÎòþ”ç@)íÞ½{Û±õ‚ÄppãÆýèGúË–O¾#>yò$Ì#†€»wïö÷÷ÛíöY$–Ë寯ÆãÇm8Ú 6›­­­mãÆôXyî¹çôJóÇg”æGCCƒ^i ÇLÃ…>ãL¥ùyÛ€ëï‹¢h·Û™|¼…Ìdâ%`=ãÕeL¦ÝnÇKÒz¼£LgZ­VEQ ð¾//‚¾ÂV«Uš 0tÃ&"¨ª*ir•¾ EQ°Z¬¶k_­1m±ˆ+c8ýUéÙJ¤÷hÃé·™³µˆ#>c¸Ç0=z+Gx`¸E7ãî¥ùÅ£4¼TòºƒfúŸô$V BÑÅfF0™þKWX_ÇC0¤—TŒ UÍL@ôÑôXõȶš¦NíI¨&Ç€Ž6g”†Gí†ÌÇCxì:|:gÜBgž,ìåÛLf2“™þÕ¦¼ï˜°ú½|5X¨p®gáSÎûžÒiUã}3tå,5ëãp:õz²¼ï'™/ kÆ™¼ïùI†¼otÏ1dOA, Ã!ÅÈ“z*)l¨ç­GÐ{Í , ž€ÓC¢ž÷q8õ´Ò6€M&M˜¡†èN­*ï›çïó¾1dèýÇèÜ ³66DQ N8¿Uzéb¸ê¹S‰ùhÃU>ÚiÓƒ§=k{Ì8“÷= £G~ðÁ q°··W–e·ÛMÓ˜úûûQô„¦1Åãñ±±1ýùRooo±X$qY±p )™Lz<æ@Œã¸žžžl6ÛØØHÓ˜<O©TÊår kppPO Åb±··—nÅØØX.—Ã8tÄÁþþ~=qðÞ½{Á`pxx˜fù|¾T*%Ë2q0ž9sF¬¼­œN¡fÖ‰ƒ££cg¯ÜQRÎL.™H$Þ{÷Œ,‚#,›õ©ªq`ùäæÍñF¯3§ùÃAH&“q·JÄÁ÷Þ{µziËÅY'Š¢˜N§ß}÷]ÚpLÄÁžž¯×ËpFRñâ`__.§GJz¤aË3gÎ0ÄÁE0ã, Æ 4—ï9JªªÚíöU«VÑñ‹Eñûý«V­ÂàË0I•M&“v»}õêÕtì`·ÛÏç‘ZG#OLL¬\¹²©©‰.,I¬Y³†ÎŒÅbétº³³“L~¿åÆéÂÅb±X,’:`Ét:Ç;;;™å;‹µµµ-]º”nE¹\N§Ó B.—‹D"kÖ¬aâ}ƒÁeË–­X±‚®ƒ¦iV«•´ŠÅb4]µj•Ífç¥Çf˳Hä8 ®®nõ²uZ‹5–J¥5*gàÖ¬oNÔÖÖVûŠÖ’V”KÐÙÙ‰SWíhVžˆChÃù|¾@ 0‹/ ᇣ³³“6œÝn§ÇI$iiiaF;®M(OÐÊå²ßïG¡a!‹ÕÖÖ2#- •J%z¾,š‡ªfÄÁ9õz»\.½bôÀÀÀúõë™ð•ÑhÔáp0…kkk‰3 ¿¿ݺuLøÊX,†ƒ‰Îlll ‡ÃLdN¬ÃÚµk™ð•¹\®P(0¹\nbbbýúõ B__ßÊ•+™€±’$Åb1¡T*y½Þ72gÍš5LÀXTrap ¶aÃü¢´Ù`–G12@ccÝšåu`w؉DçÚN€ºRœ ·._Þºb Äq\¾a2*w5F#r´áòùüøø8^&œÅ]‹ÍfÃ!ÇޤñññŽŽÆÊ¢(*Š¢Ÿ/ƒƒƒ7ndØu~¿¿©©‰)l·Û çËâ˜qäf.ßs·7Æ>yÀX¢U/B•ƪüÔ€±RõÆ*š&,ꀱ´áÌ€±fÀØyz fÀØ0–ŸË€±¼0Ö kŒý”»PÈf„Ö–¦­{M$±™LCLF¯¦ ÀO‡`(q­—ÓfžEƒà¿jÓ§‡"ÌÐ C„ÉmŽÆq*€P5K© ÝÓTM〫&qPÕ4Nƒ‡ÎfwG ÓÄYõïNZ‹ýQGû£ÎfœÐuq̸¶Ò::Š+}0‰Dü~?§˜s›îînæiLýýýÌ9¸ßïïííefÂҺׂ ŒŒŒ`X5æÇ0OR©ÔÈÿ¿½/knãH³M…àN‰­ÙVË”dí;Õ¶l¹=VÏ}»ó4o7f~ÎLÌëÌËÄDÇܶu-/RÛÖhWK²Õ%® @€Ä^X KmØîÃge§¾,€ Àtd>(éâAfžBV"óÔ9¡x]Ò^„B¡b±8::Š”'‰Dbff)OÖÖÖÀŠ“m$ˆÓ^§Ió¥RéñãÇ.—Û&Õu}§¸_¦p°Ù”ˆM–ó ᵦîÊÈiEQæçævâLio¿‚…°Hkáp>TsM n~~Þn·ƒÕÜ«Â-Ga‰“eùåêa ÂD–8”4FUU­Õj,õ«««±Xlaa)OàæAÊ“h4Z(ìv;{Ÿd2EQØï˯æ>ŽÂq°«»Þ¦i²ÒT8H)‹Éd’JĨS%H_«Õ*üÙ¸¢(±X }CŠÅb*•2 Xo4’$Iq<¯Õj¡P(‹ÅX,†VŠ¢¤R©jµJœNg6›…o •¦ÂÐÑ¥¦i²,ÓS@e&kœŽÁ‡“vÁáp€2ÍÞ¦…B!ӻĿ†a$“IÉá´¹kÕêq¿Üµ·J¥’H¯ÖK¾b)¯iZ<«;ˆ'm¾ôé’æs¹\,åðªM .‹¶÷}Eá–ƒç%×l6UU}Ió ö#„ü8I¢§sp[Â2“Þí’$ÁäK©´Z­ß0Œe¿/¦iúý~Š`·ÛÁ)}_~ß8‰¿ºcm1}[0ŒåS« ÃøðÑŒÉëõz½Þ½{÷²•™LæÞ½{|F»®ë§NB2&Öw”p‘þè£ø6>|xllŒ­Ö4íèÑ£l%œ;w!|õÕW|ÒüÜÜŸ47ý'Ÿ|ÂoîܹœKi¤y4hµZíÂ… gÏž…ÀÒQìÄi·µ^€[Ô7IÓfqq“›]²ÕšdÇë¯ýöèkäi`ù‡0ìY“ØïM–%BëX^Ü´›M²“fmïÁƒ{¿…ˆ úӟ貋ÿºZÖ¯[ †±p˱Ä=zôèÑ£G>Ÿ~ Z~܆ÚjŠááa¸iqìS>i>‰ƒApšE÷ÏG}„<ü$Ij•4Ï_~߸ÿú¯ÿ†±]-–ÂAX’ðÙÛ°BAB¨Z­ÆŸ¢!^˜—1Õj5^ÆT«ÕxÙÄ,ð2&xò¹…ƒ€`)ìe»Ñ ¤AìÄÖ$¤Aˆñ!´b'6¤¶â ¶:gWøó»?11*`ø¬þL7luãçe%q‚1l?Ÿ£ÖQ+lÄNVpÛˆDH6BŒ¦f@Ò<%¦ MÓà Ø@‡ƒ×ÆÁ‚–9:/CÜ;yV87ààWZG;þ¤z;þ˜oT{·!á ¢`¡…pó<·pp³ã„p°—[(D_ªpp|/!^ⲓr±,==¥Å4MÓ4úúèX*•úúúÐÖD¥Rq8¾>Z#Co§B>†2—ƒì}4I“R±è÷ûÑcLUU›Íîõ>sÂY­Ö4Mëï +‹>Ÿ_ò8IMµ {ù¤ù@ °k×®þþ~Ã0TU…Ýj„àõzÑ;Ùš¦ÁkåhÚªT*€`³Ù¨Ï ;’}}}£££GUÕz½ŽV—F£\. !êK¥o] jå@ P«Õ„pP Ów«ìLÎ&mSÞ;Œï$÷Ú²/ˆ`Y¿.­ÿßÿ÷çM‹+7nMNN¾óÆnB„Ø¡2[ .?þí§ìÆFƒ˜_~}ùܹs^)ð´¾IˆíÚ;#Ã#ï½³&ýšüüÑc>òðÿÀêúÏßü¿>ø`ÈøÛßrÿÇ;>¯÷àî}k!é|úÞ½{ÿëÜgh›å»o¿?66†vâè(Û‹b±hšæèè(’îf³Ù±±1¤Ïd2>ŸÚxRÃ0ÆÆÆØƒšF£¡ªªÏçc5v»=“ɸÝîþþ~¡\.«ª:66†Ä¿™LfddiÏeYv¹\,tÙ0 ÈÆÄ â~ Ä9ÎÿüÏÿüçþçÓ§OÃô"V߯|ïïïGÉÙõzýòåËÇd¹wïÞõx<{÷îeŸäÉdòÑ£GHBÔl6/]ºtèСÑÑQöIþã?B<È"Ȳ|ÿþýO>ù­._¾¼wïÞññqáÑ£Gº®9r„mX¡P¸}ûö¹sçÐóç?ÿy×®]Û·ogfggóùüÉ“'Y„r¹|íÚµ>ú-â®\¹òú믿ñÆ,Âââb*•:}ú4ZÄ}ÿý÷gÏžõz½lýõë×·nÝúÎ;ï°]‡Ã+++4«ž.â¾ûî»ééið¼¦7oÞÚ½{7‹°ºº:??ÿñÇ#6q‚¸žõ/^ÂÁ®‡Ãô°ç÷ûQ½Ëåòx<¨ÒçóI’d‰àóùP=¨,âµèÕP%è«ß5¯×Ë#¸\.T oI48Nd¨vý~¿çÙWØ;G€ñ‡Ýëõ âq¿@âÄÞwd'hõM nØG.­dŸä–©Õ¬Eû$g|0¯BµD 5là’×}?‚QY°]î<+¢ïdÐØa1ï‹ » N×+âèÿÓwÄ'äY+_Ï«\-ÿ¤2ïj Û9B«†½DþâužcÐ^â° âq=$Nè¾{¹ç×ã–Ûüÿjã]Ù&µº=B›ËÚ7¬ÈFÚ7µUn÷FíE†´œ âqÝ'Nè¾{S,í+%IëHöyët:ùÜkptâWþ„:L²°uÈ«P%Ibí^iî5Xç° ˤyÁår±~›,ûn$írçv»ÝrÐXÏO:h–¾£­†ÝÁ2°\'ˆë qìÛbúîÞ¹e.—»zõ*r\XXh6› »¢þg `8‡üÏ"‘z)¼Ùl.,,T«ÕÁÁAÖÿ <Þ@4ÊúŸ…B!êõLËüü¼¦iÃÃìÿY(A.ò?[\\t»Ýh 5™LÞ½{w``€uŒD"Ðä8¸¸¸xéÒ%ä8øäÉ“t:‡YÇÁµµ5PS!ÇAY–¿ÿþ{d\÷äÉ“ÕÕÕµµ5Ö¸.‘Hd2ÖJ¶PáÔŽöÙÙY¿ßVp¬q].—ûþûïѪ N×âÀqP$Íw{ÛÄårMLL ¿ï•••ññqä>œN§Ýn7\Lïr§ÓY(&''ѯ§p8¼uëVä> ö•Û¶mc+Ýn·,ËÈÐf³­¬¬lݺ¹+Šbmyê>œL&'''‘ø7•JŽŽR•. T*ÚeÖï;‹mÛ¶ Iw£ÑèØØê²®ël/ÈS-m"‘G¶Ñ±Xltt!€7жmÛ„9‰Œ#ÛèD"Ñßßìt:5Mc‡]'ˆë-q‡ãÕEyˆéÛ¢4¾¾>>1:OMM!µ¢(^¯÷Ýwße+GFFJ¥ŸÑ …Þ{ï½¶²X,B‚¢(ù|ùjBvíÚ…r¯MÓÔ4 !¨ªšN§ß{ï=„°¼¼üæ›o¢Û´Ñhär9„`šf<ß³gBX[[{ûí·QÒ<è«B½^ƒSSShõ‘J¥&''Q.¸×ëµÙl²²²²gÏd´$Ëòðð0º8‹E~Øq‚¸Ǿ'%¦ï.Íà(yr¯u]‡ÈÓ€6÷šþŒb³·YX@€WÎèÅlî5­„W™ëlÊ;{1ͽ¦²'š2&¶#¬a,Û‹VÔó³}àím¡Ñh€å)ú8K4hÔŒ”–·o0õÄ â~Qĉ½ïn—u 0aO-TCjiÉþ/8¨îYMR{¶­ä,Aè½Õ9ªï¤ èã:´vKå– N×â,C3Äô-„ƒB&„ƒ‚8!ÓwÇÂAš9Í.4Pî5•±.ûô1ލÉRÆÔ>÷i¿àɘhîõóéÏØ¤y¤?³là êÏ: ,ý™ N×â„p°7Û&•J% ±'éõz=•J-..¢sðÕÕUÇã÷ûÙƒét:J¥–——Ñã7•J---¡sðt: g,(÷:•JƒAÔ0¨,‹ìÅÑhT×u”!­ ÞbwâŠÅb$ÑuíE$)‹´ tR©Ôüü<0$ аmXYYÉd2A×õr¹¼°°àñxØ‹Çã úB½H$hØ«Õ*´ âñx¹\v»ÝìÇ¥R©b±È» N×[âìv;oB+¦ïW»ôÖu}ee…ÆÂÍ”ÍfWVVè92ˆ:S©xè€H¤©¹\N–eþfÊf³‘HDQ*…‹áfb+ …B6›]^^F7“,ËÑh´\.Ó‹!uÛ4Íp8L…ê B4 @¢Š–Z­öÁôõõ±•àˆ†r¯Óéôýû÷ùÌéjµzâĉááa¶Ò2÷:—Ëݺu‹Oy¯Õj‡B®Ä=RUõرcle¹\–$éÓO?E_}õÕ¾}û^{í5¶rvv6›Íž>}š­ÔuÝf³}úé§üÚaçί¿þ:[³´´‹Å~ûÛߢþ^¸páܹs(ãQ’¤ÉÉÉ·ß~éÌ‚Á Šú sçÎ!ë;—Ë522²{÷n$Œ{øð!?ì‚8A\‰ûãÿ( c{pn‰ëõ:›9M£4@±Äº—U«UðKC˜ôbÖ½ ¨µDàýÏ,èÇ¡PÈ+á“æ7„`š&²ÞPšÍ¦išìË{ëNÛ©×MÓ„÷GÖE° ,Ä âzBœpü ‰Uö6i‘`MZ˜Y]«@kÒÂÿ¬}È÷«F°ü¿"t>h/qØq‚¸·©…ƒv"Š(¢ˆ"ŠX}÷dNÏ3iµåS—ý_¼ Š0¯ gEôJÁÄ_´IÎæÃà;D°\ìtˆ°î Y®¡žá™„ N×#â6õÒ›lê—æaÓ %ÍÓWxÙìm‡ÃoýÒ}4Ã0ÀLJ?ÌŒjv­V«Á^á3±ëº^«Õ Ãàs¯é[Î^P¦•,‚®ë|`9}å·C>°¼s„z½'ïhÐí2B [¨Ð7Þ z‡ú+ˆÄõ„86ºHLß]*à?yùòe$œŸŸ7 Ãï÷³2¦ååeC±2¦|>¦”èÔb~~¾R© °Š%sår9¶RQ”ÕÕU~7pnnNQ”¡¡!VÆF«Õj±XdeL 'ƒî°z¬d2Y.—gggÙ^¬­­iš¦i‹ iè¨þl~~>‘HƒAV=ÇK¥|‹è’|G¿ûî;н[\\\YY‰D",B*•Êårp`E[[«ÕjµøŽÒ/--y½^!³Ê­R©ôõ×_#ý™ N×+â„al–ÞCCCgΜáWß'Nœ@¹×^¯×ãñìÛ·å^?|øðìÙ³h-P­V:žŸís¯3™Ìýû÷Ïž=˯öíÛ‡r¯>|¨ëúÑ£GQîµÃá8{ö,ºu¾ûî»wß}–?yò¤P(ðå„>ø-âšÍæë¯¿þæ›o¢Àòd29==Í–OOO£”ÃáGå¡PÈ2°¼V«9s–;ÎÁÁÁ÷Þ{–/,, aÄ âzEÔñÅÂq°{…u£z¯×;00€êý~¿×ëE•ªªò•­¼^/!Uš¦éõzûûûy„þþ~tq__ŸÃá@•ÍfÓëõ"§ÓÙ××Ç#˜¦‰*ÁkppÍ#>Ÿox~¢Jx!{``ùèû|¾@ €.îïï‡zô†AãsÁ-{át:q‚¸_qìo 1}wiçußFò³Q¼4Ÿ{]«Õx+\Ã"ÐÔj©PW¡¶B๡óÀò6(°Ü² ´ËöÁ¹”4šDÎ ,ï|Ø[– âq=!Nè¾{,;éDÇJZkH-a_º •op{ÒYrö/\>L6X.ˆÄõ„8aÛË8¿¾£ÂwT'ˆ†±¿Ü" cÉËðõx”<•1-..Úívä677çr¹EaeLà”Fƒ¦hY\\¬×ë¬I’¤µµ5BˆFY!Ôòò²ßïG·ã‚a###¬Œiyy´´HŒµ¸¸øÃ?ð‰·?þøãòò2Û‹•••J¥BAÆuKKK4nœ‹ÍÍÍe³YÐNÑ6¬®®æóyØKeë²Ùì•+WqÝ“'Oâñx2™D ¶t: _ ÚÚZ­¶´´ät:‘qÝ“'Oü~6›e\(dY¾zõ*ÒŸ âq½"…ã`wÛ-ICCC(iÞçó Bn½¡ûúúÜn7{€¥²ÏçF7 2k4LA•ÍfÐÍäóùØ‹A$cmÜLA;<<ŒfÕÕÕ@ 0<<Ìö‚¶Ep»Ý^¯whhÙFƒ€}% …‚iš´aäi`9ÅP`¹ßï¡\.—Ëå¡¡!d m`Å¿’$!hX½^/‹ì° âq½%Îápð?¤Äôý K£Ñ|bôÚÚÚûï¿„P•JÅçó¡‹³Ù¬®ë|Ô÷êêê¾}ûPi„©©)¶RQ”R©„\1¡ {÷îAÛsªª¢6€éóûï¿Ï·áÝwßݶm’še³Y„`šf:>pàBH§Ó;wîDå'‹¡^ÔëõH$²ÿ~$¢Èår|`y p¹\‹ÅöïßË …ÂÈÈJÇ㚦Y&¬ âq½".Ýw·gp6Fš<õÔuòGØÌixØÖëu!µJ­†—ØÜëF£áp8hî5@D´m  °pú oµZ…7ŒYx :Ø ,Ähø¸ñöXξýÁ"°]æ#Ï¡¿ÐeÖ¹Ô¾9†]'ˆëq€,^šïA¡1Ò” Mͧw£Ôj´áÅç^#½‘%BûÜk$äâs¯“G ´.ÛËÀòö´kê5Ÿ)þÜÃ.ˆÄu™8‘4ÿ nHJe)„j%]²Ô'µ=‡öëe!ôDö*†]'ˆëqB8س¥7/´ÌÞyS'B(x2óÚ/8Ù°Dà¬-hr Λ€šŠG$©UÜ8BI’dÙK›ÍÖù ±TÖù°óò5Aœ ®‡Äµy™HL߯pî6 #²aF£\.‡ÃaÖ‚Çn·g³Ùr¹‰Dè.˜Ýn—e¹T*­¬¬ g8\©( ûc0ŸÏBVVVý |â¾T*E£QUUÙK§Ó†a°mߢr¹ …Щëz<‡÷€)D}#UUËå2ȿ؃…B!‹Á˜P„D"‘Ïç‚aÕjuyy™MÌ]&|+X„X,V(è8ÐÇr¹¼¼¼ š0z1ØÅª~\:†ŒitŒ!ˆÄõ„8дð&´›f&Ü\?êõºÃá¸~ýú¿þë¿þã?þ#5Œ&‰Äèè(•RÁ“9“ÉØíö‘‘z@Ö‘…BabbáÇãñ‘‘8Š¡Šb±Héïïg+u]Ïf³Hf@I$ƒƒƒTŒ—ÍfÆØØ«Ü2 C–剉 ô o.—óù|làkiÆøø8Ò~¥R©‰‰ ¤`K$à[Ķ¡P(hš611ÁÔ4B¡088ÈÎD0e€¹‹P*•J¥ÒÄÄR%‰­[·" \2™õÛ`]×UUEê1Aœ ®‡Ä9Îÿ÷ÿ§ú§Ó§OÃô²ùv7K¥Í•+Wþð‡?ðÿ÷‹/¾€Ç8[nݺõàÁT™L&¿üòKáÂ… ²,£Ê;wîܹsUʲ|áÂáË/¿L&“¨òÁƒ·nÝB•Š¢|ñÅ–‘HUÎÌÌÀKl©T*Ÿþ9d¥åÒ¥K¡PUÎÏÏÿðèR×õ?þñppÏ–~øa~~U†B¡K—.¡Êz½þùçŸW*TõêÕ™™T‰D,‡]'ˆë!qøÃ®\¹B§—MT6ëÛ¢ü9|hF5ý¼Çà?h%zMŸd,ýÃV– m؆± FìÅë"ÐWOÙÿÛyè¿Ûk¸ã;Dà=çq‚¸׿8tSU,Š(¢ˆ"¦oQDEQºU~=Ió˜#“¶ÉÙmسtF ·¡½gôF:ér‡ÿ®[ù|ÃnÙYAœ ®'ĉ¤ùÞØÃBi;¾GëáßúÓ‚’;ØäV“E€?¡ûŒ<5Äa7-  ì¸˜ma/î½EfÙÚeËÐ~РÒrÐPhKçÃn¹k,ˆÄõŠ8‘¶ÓƒIóß~û-JšŸ››ãs¯ƒÁ Óéd-4Á"¶ˆ¹¹¹9>÷:“É«Üëh4Ê¿†0;;Ëç^Cò7µÐ$O¥T¡Pˆ´,üø1 ,WUUUUX  X>77Ç—––kh±X¤&œ„ ,¿|ù2 ,_XX‡Ã+++(°<›ÍÂw€¶¶V«ÍÏÏóå‹‹‹>Ÿomm,¿xñ"R° âq½"N$Íw»4“'O"Ë*Ã0Ž;†r¯N§×ëݳgʽv»ÝÓÓÓh- ëúÁƒGGGÙ'ùƒ!û÷ïgdY–$izzÝOº®ïÝ»å^÷÷÷kšväÈô!dzzÝ:?üðÃ;ï¼óÚk¯±³³³…Báĉ(°¼^¯Ÿ:u –×jµ;v¼ñÆ,ÂÒÒR2™>þöÛo³]‡Ã‘H„"À'‚Ãщ'P`¹Ífܽ{7‹°¶¶¶¸¸ˆ†]'ˆëqðŽÏŸþô'á8ØÕ0;Fõ~¿ttÅK €¯1[Y­VûúúP% ŒŒŒ zpˆG•ÍfÓï÷#÷aBH__000àr¹P%x+ŽŽ"·Û Èl%¼ˆ*=ßïC¯ÿA×xUUù®¹\®ÑÑQäÚßßÏ·¡P(d³YTÙh4 Þ¡\.Ã+!‚8AÜ/‡8öÅ%1}wi·Lš¯V«|¼4Ÿ½ Þ•–¹×,B›Ük@°Ì½æh؆‚åªeÜx+„jµŠq°Á×!˜vÂÜ~Ðè#z÷ÚÀº†¶AhX.ˆÄuŸ8±÷ÝcÙɺÉÙ¨^ä^[ž°¿"ËÎvˆ°î µJ‘aÄ âzHœ0Œíåœ_‹ÀrX.ˆĉ¤ù_ni•4Ï'g»\.ð´dÍ'!êÛ2÷šEh“{ –¹×<‚Ûíæs¯÷u8|r¶Ûíf]1Û–Ó.w‚`Xn9hnøv>ìn·ÛápX– âqÝ'N$Í÷fî. wîÜaE õz= º\.Ƚ¦z£ÙÙY—ËU.—«Õ*ì£Aü`8¾yó&zŒƒA›ÍFcO†$IÑh”»i!ŸÏƒÁ7n ;2 Öëõ‘‘ŠR*Ó4aßzZ–Ëå`0xíÚ5´…šJ¥Ÿ¥VÃ[ |Ôw2™°|xxØçóñAÝ©TêÈ‘#HÁV©T,ËMÓä‡]'ˆë!q”,¦ï®ÎàÏ4O3§[å^V„7ˆ–B«ÜëÎãÆ_<°\×u¤?kXNaÛ–³|`9E ßÕ®– âq/—8‘4ß³òê’æÙ°púpq‡¹×Ç¿x`9ŸœÝ&{›²ÁÀr¶aìò/!°\'ˆ#"i^…þLèÏqB8(¦ïWµôæ…ƒ(¨›†d·ÉÞF˜–Qß­r¯-=Z……Ã)+ÒWA›ùSYËÀr¶’Ex‘ÀrHïæmCå;¿xý™ N×âDÒ|oænÃ0‰ÚûÎçó«««ìN\&“q»Ý‰D‚Ý L¥R ÐBñ|>¿¶¶[it œn‚,Ë`¢†¸‡JØ(¤©TŠm04OQh0ÚB­T*©TŠþ¤Š¢ „J¥äl`9„…Çãq7Éd2›Í"]×5M[]]EÛ—ÙlÖápôõõ±]ŽÇã¹\ {µZ…^øý~A–åjµ ‚0Ú—T*U©Tа âq½"Žž lÒ|³ê¾ËåòÇ‘al,3 Ö¾2ãÙW®­­ýôÓOè×S,“$ ÙW¦ÓiòT…ÊÚWÆb±Ÿ~ú =WÖÖÖञ·¯t8Ⱦïh¡PƒÉdùŽV*·Û|Gãñøƒïh4UU¤»¬ï¨¢(¬Úì)J¥Ò£Gïh$) Ýe}GeY~ðàòÇã>D¾£+++~¿‹XßQEQØaÄ âzKœÓé,—ËB÷ݽR¯×‡‡‡÷»ß¡'9!äÌ™3ȉðÖ­[^¯wÿþýle"‘øñÇÏŸ?Ïï£?~|llŒ­¼sç!䨱cle&“¹}ûöïÿ{¾yœ˜˜`kù r=϶mÛzlyyyyyùܹsHnAùøãÁ%ŽŸÏ7<<¼g϶2‰ÌÌÌ aÄ âzKÜçŸÎOoŽ…ì¦Þ¹gŸä ju¼CžM­îä܉ý“V­@Z!ð ãEK#Põ$ µ¡Õ¿mv>Õ»óaÄ âzEÜf?ºQÅ¢ˆ"Š(búEQDELßˬnÒBÔIröF:ÄÙ(q‡m.^aÝ‹_|Ø×í¦ N×MâDÒ|Ï J--ºGÕBôbö\vODð'møìölÃÚ °w‚À¾†hlmv{4ht£}§î‡gv¸q‚¸ž'ÞºìAÿÉo¾ù†Oš×uÝ2÷:‘Hð¹×üIÈììl¹\¶Ì½Ï”{ͯ šÖ2÷š “{ nj¬+‘H”Ëå™™>°¼R©ðåÐX‹ÅùÀrMÓþ,“É\ºt‰,…Báp˜,ß ÚZ,¯V«–å«««HV,¿üòK>°\'ˆë qN§ÄòbúîRÇÁ#GŽÐCd¸™*•ÊÁƒ!÷š<Õ䃫ýÔÔðÃK’$?~ÝLårùÀ£££ìÅ>$„ìÛ·­”e™rüøqt3U*•={ölݺ•½Øçóéº~èÐ!úä™p­V;~ü8š®^½ºsçÎÉÉI¶@@Qè2E(—˦i=z\C)‚®ë;vìxýõ×Ù6,--¥Óé£G²š¦]¿~ýСCà|D?®V«mÙ²Ë)ÂÊÊJ$9zô(ûY¦iªªzøða,'Œ ÐÀÀÀo~óöãb±X0d‡]'ˆë-qv»ý¿ÿû¿…ã`W·M fÕ Œ£Üë¡¡!ŸÏ‡„¥Ífs``UÂÖ­[Qšu?!]ìp8¶lÙÂ#lÙ²]<22¢ª*ªôx<Ð`„àõzGGGÑÅ™LÆf³¡Ê@ Ðßß¿mÛ6ôppppll ]\(LÓD•ÕjÕívOLLÐ×ÿÚ T*EQø‘ìï˜ðx<add]lF,³vAœ ®WıQ1}woã%ÍË^|î5T¢Ôj¢F˜¦V«Ükúž. b‰@?å^Ã{e臛er¶%‚išµZÍ4Mä;ÚyÀTÓ4MÖ5tÝAC¾£Ð·ÛÝ 7.ˆÄõŠ8‘4ßcÙ ŸK½Ñìm„Ù&¢»U u'ífÙŒçCè~`ù††ÝR ˆÄõŠ8qtÙ³8û(¦‡'ÈØžÄÓ ØJË=kýΞ[" ú[!X6¬ÕIúFhGPÛ:DØè ñ†ÎèŸ ƒ N×}â`£\LßÝ.`_ÉþzµÛíþ‡øp:à®ÉÖÓ ><’Ä"ÀÀö¢%`m‰àr¹ µíÄA8!ß5·ÛÍ#ð1Û€€ö.¡ "@r ×ëídÐÀb´U:DàSq‚¸ž'¦ï®ÎÝ¥RéîÝ»¬ÑL£ÑeùÎ;>Ÿ=D"’$U*ö ZQ”t:}ûöm„œÉdîÝ»‡Îâ‰ìô!ñxè „t:}ÿþ}°Ð¤`hɪ¦l6›ªª²,ß¼y“½{ m?ŽF£,B2™TUõÎ;H¨ Ëò7Xý(Ø ÃˆÇã,B:.•J,œ€išvãÆ öž7EQdYf»œÍfs¹jC­V“eùÖ­[à\Jë£Ñ¨,ËŠ¢°ÅbQQÔAœ ®‡Ä9ŽR©´IgpñÒ¼(¢ˆ"ŠX}w«4@ `Ô}ìØ1”{m³Ù|>2ÀÌf³ùË_†ê>Œr¯ïÝ»GAÕŠ¢èºÎ#äóùC‡¡Üë™™UU=ÊVÂÛ'OžäÛ055…Ëçææ²Ù,²Ð4M³X,ž:u !”ËåwÞy–ƒÁX,†F:>uêZ}†199¹sçN¶2..."ö'N ÀòZ­622ò›ßü†­“kKAœ ®WÄ¡ûîö Î'Í×ëu”{ j!ˆÙF©Õ|r6Ș:Ͻ®Õj|î5 °)½M¥Wl` duóú3XÞ,ç#Ï[!hšÖl65MCå–ƒFãÆ‘þ Ú€l­Øó:Aœ ®·Ä‰¤ùž>iž´ÎÞn•Zn¦W‘{Ý&Ò›?Ÿa»ö­’ÅÛ#ltÐP`ù†ø“"Aœ ®WÄ Ï“ž‘4/Ëq‚8‘4¿)—Þ–Ió|ª·eö6MïF˜¡Mî5 X ¡,ãÆÁ:ro(°Ü2nœÆlÓ.´iƒ%‚Ífë0°!@aÛÐ B«ÀrAœ ®ûĉ¤ùÞÌݦi‚:ŠÖÔëuEQ’ɤ®ë¬„(ŸÏkš–ÉdXG›t:­(J&“A_EQR©U,ÁÅÅb‘‚@\™ªlàöàØüo]×)yj  FÎGš¦É² ¯2Ó^ÀÇ!ðƒlr”™›ÉdÀŽÍÿ†zä|ÜÈù¨P(¸\®ÁÁAKä|T,‰Ò~ …f³‰>N–eà9 âq½"6ÊEÒ|÷ |÷î]dF%I²´¯TU•·¯¼}û6º™À‘ÒÒ¾NN}%R¡‚èµV«YÚW‚'k_ hoÏÕÕUÞwNuXßÑh4ú—¿üùކÃáb±˜N§yßQI’諸(÷ïßG¾£ËËË™L&ŸÏó¾£ùŽF£Q—Ë…|GƒÁ Ïç+•J¼ï(;ì‚8A\o‰s:ÅbQ$Íw¯Ôëõ‘‘‘O?ýYVÙl¶ééé¡¡!ö¼‚æ^³§Øñxü§Ÿ~²LÎ>vìØ–-[ØSlš{Í"¤Óé;wîüþ÷¿ç8p`Û¶m,ͽf–Ïç¯]»vþüy$` å, ,gJ¥Ò÷ßÿw÷wHÀàt:ß|óÍ;w²sss‰DâÃ?dTUýúë¯?ùäxó‚Ö{½Þ‰‰ p ¥]ƒ¡PèܹsHÀ`³ÙΞ=KÅð¯ßï‡ÀrÁ2°\'ˆëqPáÂ…Mš4¿¹•',‘ôœÚÒa‡žY³‡Ú–¹Jè2vw’G°|h·A`Æ6¸Mï6„ÀñcÒ ÁÒÒˆÿ_/2쨑‚8A\o‰Ûìai›û­Kt’nùo› ,Ñ6„Ð!ÎFø‹;Dhsñºë^üâþn7q‚¸n·Ù•'â¥yQDE1}‹"Š(¢ˆÒ­"mêÖ£½<~³<»IZìR4ËÍ2þE5b%Ÿ"À'—dß¾}~¿ŸE0 c```×®]ü¬———Ѱ âq½"ûúú„ã`÷J³Ù„˜mT?44´}ûö¾¾>¶rll İÏt[’âñ8òö„×^{mhhˆ­\]]%„ ljD&''y„ÉÉI>n\Ó4„Ðßß ·oߎü~ÿÖ­[QÛòù¼ÓéDº® íØ±! oÛ¶ ]\.—ëõ:ª¬V«^¯wûöí(‚dddd||]lšf¥Ri5ì(;ftttxx]Üh4’É¤å° âq½"޾(+¦ïîÍà–IóÀì+á&û Äl[æ^³mr¯Á2÷šG¨V«| 7 tXÞ Á0 ÞwÔ² –åF£ÃÀr:h–ÓwX.ˆÄuŸ8‘4ßãsK‘4/Ëq‚8‘4¿ùà(iž—†G7›rÝýÜkz1½þ¥#X–Ó‹Y„ –³ƒFG’,ÁaÄ âzEœHšïM±Lšw:|îµËår»Ý`MÉî£ñéÝp ÝyîµÓéä¬-Ün7D°×Ÿ{m7îv»ÁÛ“GàËi—ábÏÞ¶ÛíZ+„·Ý2ò\'ˆë-q"i¾Ûsw±X|øð!•RÁN\$¹ÿ>$×ÁÃÖáp,..º\.Øó‚¥ÃáÈd2‘Hä§Ÿ~BñH$âõz‡‡‡ûF£!I¤8N!—ËE"‘ü­ f{llŒEX\\4MÓårA%<óK¥R$¹wïº#eYžM¥Rt &IR(*•J~¿ŸEµ»wïÒï ´- ©ªšËåØ6D"‘l6ÛßßO`7PQ”{÷îs)´`0˜ÏçK¥Ûåµµµd2I‡îßÔÔ[™ÍfŸ9­(ÊÉ“'Qî5|ÇøÜëf³É‡…‹Å#GŽ Üë¾¾>UU9ÂVªªjšæôô4߆÷ßI¬-Ë5M;sæ BÐ4mçÎ(°|ll,‹¡ îz½žÍfOŸ>f¢jµ:99ùÖ[o±•Ñh4 òQßÅbqzz–ƒ©ï®]»ØÊx<þ׿þ•vAœ ®‡ÄýÇü‡Ð}w{ç…ƒð$GÙÛ¦iÂKV(µtE–kþþ~>÷Ú?H$c‚å’1¯?ƒE\ç¼þ P"4 ]בm4E@qã,‰ ËN§³X-Z.âq‚¸.Çž—Šé»«E…þL'ˆÂÁMYøäl²‘ìmÒÚ¥V³×]I: Y= ,Ã.ˆÄu8‘4ß³¥7Ÿ4¢¾iî5D\¯›œ nd|j5õ0ãøkKÚ”{m·ÛùÀrP\uŽÇ.%Àó¡CÈèêdÐ$Ir8hØÙ6t‚À¯žq‚¸^'’æ{3wW«ÕB¡€,«*• øÚ°^Š¢˜¦™ÏçÙ}´l6[.—óù<<ü»ßý)O!/˜{Ýl67”{}þüyþ¹ý‚å_}õÕÔÔT‡å’$ñå’$uXþÍ7ßœ;w <Oçå„>°ÜçóY–?~üø³Ï>Cl âq=!N$Í÷lÿ}y ¶ùØzÇÓÂn½Áeü ¸}5ßßm…ÀE@O~z}ç|—ù6XvöÛ ¬;hmÚÀ;ìÀ âq¿4â6é4ø«JšoмQÙ@'­@^´ˆÇî¡“.wøïº•Ï7hëÊq‚¸®'’æEEQD›'ßBaÿ»}pªe%Bk k‰°npêºmx¹t¹BçƒÖµaÄ âº0ìbúîv¡É&(m‡¦l üxÝ–Mzô+ !°Ù–¦iòÙ<ý8Jh‡î9Ø.°]î^}¶ mi5h|hË‹ » N×+â6ûKóÿ\ž`ƒÜ IEND®B`‚giza-1.5.0/docs/samples/images/sample8.png000066400000000000000000000372561477367113400204210ustar00rootroot00000000000000‰PNG  IHDRênÁ.Ì£>uIDATxÚíÝy|L÷þ?ðÏYf&“ED$BD#Db©%ÄÒZKÄVªôÚªö^U\·í¯½­rmñÐå{)®]õÒ–Rj—¢ ‰ì‰- I$"ûd¶³üþø\óÍ—.Df9™×ó>tDÎÌY^ó>ŸóYY– ( ‹]€øÄ7 ¾߀øÄ7âßð[AÀ¸9¨3gÔ(Šÿ{1 ˲²,K’ô¿uË2 óÐ1 #IýyËëþCY–:-9Ž{t»µ_¯3ú~†ùÍ¿¥ï¤ö»@|Cƒ"Ëòï% üÞîÒét;vì7nœ¯¯/v Ô]uˆž .”––êõzI’BBBºuëf2™>l6›ýüü5jàããsòäINg4eYŽŒŒÔh4—/_nÛ¶m»ví,e¯Éd:tèÙl¦EîÀeY>þ¼$I...ÕÕÕ>>>¤Uù‰'jjjŒF#!ÄÓÓsذauN=úAîÞ½«Õj===óo+++‹‹‹ƒƒƒë7^%Iâ8.55uëÖ­UUUo¿ý¶ *• g<ÜÂG!äôéÓŸ~úiuuuUUÕòåË“““ß{ï½ .TVVfeeEGG9r„²sçÎmÛ¶UUU•––¾óÎ;yyyo½õVQQÍGBˆ^¯_¸pa\\\UUUeeåíÛ·—/_>eÊ”cÇŽåää¬^½ºªªjòäÉ………tëÿþ÷¿¿þúëòòò²²²•+W–——ËX~§åô­Zg,ÿµü­$I£Fºté!DKk ýû÷ïÏŸ?ÿÃ?|´Ñæ¡ ôb-µ›†,­1’$õìÙsË–-‘‘‘õÒ ¨¾þ-B_|ñE—3fBX–ݹs§››Û²eËèÏ 0@­VB&L˜PVV6eÊBȵk×Z¶l9bĈ~ýúY~ÕéÓ§5Íš5k,¿ÿèÑ£qqqÇŽ+++«¬¬œ={vãÆ]\\$IbYvܸqMš4 Ëruuµ,Ë<ÏÓ¢Ø`0XŠbŽãŠŠŠnÞ¼yýúõððð¡C‡Î›7ïâÅ‹-Z´˜3gNUUÕ† Ž?¾{÷îåË—Ÿ={vΜ9îîî‡^³fÍ«¯¾*Ër^^ž¯¯ïŠ+è?tuuuqq¹|ùò–-[ tâĉI“&uìØ‘VÊf³™¶½H’Ô®];úhýNëë#FÄÄÄxzzrתU«nݺÑ= Óé,…¹^¯§qߺuë>ø >>ÞÓÓsÕªU‘‘‘´åñ 6mB4hМ9sjjj‚‚‚Μ9Çq µiÓ¦YjóÑ£G3F„V­Zi4FCKoµZ]UUURRR^^nù‡„ŠŠ £ÑÈ0ŒV«uss£Ai)KY–5kÖàÁƒ.\(Â;w¦OŸþÊ+¯Lš4)((ˆ²|ùòk×®xzzFEEµiÓÆh4Þ¹sÇÃãY³f ÃŒ;6??ßÍÍmèСÉÉÉM›6‰‰yÿý÷üæ›o6oÞÜ’Ñ^^^®®®´©úÑ ŠbÓ¦M‡~öìY†a¢¢¢hµÎ²,}Iã›~Ñ0dÈãÇkµÚÞ½{ÿAƒ âêMœóçϧ¦¦¶nÝš¾Ø³gÏÝ»wõÕWíÛ·W©TW®\éß¿?!äÌ™3ÕÕÕ‹-¢?–ŸŸûÓO?¹»»gee]»vmöìÙK—.Ý´iSûöíiѺiӦŋBÎ;WSSãââbi5þùçŸiÛ…Á`8tèPXXXllì¢E‹Nž<k6›“’’,X°}ûö’’’_~ù%%%%---66v„ IIIùùù‚ œ={ÖÇÇgïÞ½›7oþøã}}}‡ ¶bÅŠFeff¾òÊ+t‹z½þäÉ“III—.]êÞ½{EE…$IÞÞÞ–7Ãqœ$I#GŽ|çwª««?ú裇Zá-ÿ¥;­ªªjþüùÑÑÑ*•꥗^úàƒ:uêD›ïq^ApôÁ:À•ÞYYY5êܹ³F£‘$ÉÍÍ­_¿~çÏŸÏÍͽwïÞK/½D›®_¿îááAÿÌ0Lnn.Ïó¹¹¹ƒ êÖ­[¯^½.\¸›››———ŸŸÿꫯÒÊôÚµk^^^:u¢58-‡oݺ¥Õjoß¾ŸŸQQQ1pà@77·¼¼¼ˆˆˆ__ßÐÐP­V+‚——— ÆÏÏaÚz“m2™æÌ™œ˜˜èîî>zô耀€óçÏ92((ˆVÐåååG .**ŠŒŒ,**Òét7®]/‹¢¨Ñhrrr ÃØ±céW‹‹‹KXXXXXX‡ÂÂÂéû/))ÉÉÉyî¹ç|}}ïݻDzlXXz|CݯD Ûz)ÉÊ ÇL¥ßü1«&ÚþýûFãäÉ“koè)·¸bÅŠñãLJ„„ÐÜhéC£LÐxöD'ë°Œ4¡íô!$M+Xý}biù%,ËÒÞ{ôþ÷~ãè¿¥=¦yž¯¬µ' ¡E‘çyút‘F'ý/²O&#ÏóGŽ)))?~<ÏóÇ™Íf†aèo OS-Q[ûñ<ÿP;5ÝܹsçvïÞ=f̘víÚY†×ÿAÇAAè_Ñ÷†îÞ€êàq Bˆ‹‹K½ü6“Éd05j„6@|(²”ß´Ïò`N2‡} àÐñmû‡N`QÇG—4¦ Ã/¿üBçây¾_¿~*• à Õ7ý'eee‹/nÖ¬YÓ¦M !ùùùƒaíÚµ´—.Àáâ›vÀúì³Ï!o¾ù¦åõþóŸÓ§O§?@L‰½ ί¿¿S½¨{¿oFSZZZûNG§ µÙ»@õýd$Iª©©Y²d‰(Š>>> Ãùúú¾ÿþûÆ2sAAAZZš¥kŠí¿úxž7›Íöú⵬÷hÇO·nû7@¿¶yžÒÕx-ss3 #BOËXGËú vÙÿ–U ìR÷ÑÁJöúøtL–½ö?!„Îgi¯/ËrXX˜¿¿¿õ>m°fggëõz£Ñ(Š¢——Wpp°%ßY–ݸqcNNNÇŽM&“ËpË*\/½ô’í}–›™™YXX8hÐ £ÑhãaÓô =z´K—.þþþ4m¼ÿu:ݱcÇÆÿD[§m$$$DEEÕímÓ¡ž¿þú+!$""‚­´ýþß¿ÿ°aÃÜÜÜl|Ò­\½zuøðá¶?ú’$i4šÓ§OûùùµoßÞöo€žß~ûí¨Q£Ôjµí÷¿Z­NIIiݺõܹsi:Pã }C?üðÙ3g†>tèPBÈŒ3Æ?lØ0Q-5Ô¸qãzôèa¯›‹¬¬¬iÓ¦Ùkëqqq)))“&M²×(,,œ0a2Éö CNN]jçI9rÄßßêÔ©Oó¼¼¼!#FŒ°×þOIIyíµ×êk„ç“ÊÍÍe¦nû¿^ÔÔÔtìØ±W¯^vÜÿ³fͲ×Öããã­º‰ºÄ7Íî“'Oîß¿ÿƒ>!))©sçμuëù¿½¿éj¶ÖûþùF£±iÓ¦¿9S³ ¾~éÍ»»»»e2 Û¿OOOAèÝ«í˃Á@÷ÿ“na˜ÄÄÄÑ£G×ù̱L*K¬iiû»†aš6mj0z d³­ ‚àééi—£OOxwww:Uº½:7mÚT¯××^Ïf7,Ëêõzko¨îñݬY³ò`™×ßœ‚ÇÒiûøÖjµ ,°ãdo]»víܹ³eþ&Û›6mšJ¥²×Ö===çÏŸ_‡­—––Þ¿?<<œB»0Õe·Ûëô#„ÌŸ?_«ÕÚëé}ëÖ­§M›f—N7:vìØÚS€ÙÞ‚ ´Z­]6m›!èuÙ³töµ×^{²yófË“1WWWâHèÂ.öÂó¼í¿ùksqq±ãœv Ã<éþ§Z/^¼öôO¼M&]›ÍާŸ{^qg¯vJ£ÑÔùÛ·\þ¶H˜:_™<ϯ[·®¢¢‚a:#¨¥‘‘N¿éÏîC@íû÷ñi‰ÄÄÄèèè§ßz@@N?œ~ˆï?ºA®ýmïhÏîϾo@YŸÎ—}ÿþ}£ÑH×®óû§7ì}ûö­ý¿Øÿøø GA›JÒÒÒ5jäææf—Þfˆo€:ЧU3@|ƒ2Jo:ÒêöíÛÏ>û,âñ Ê@×ýˆ Ôjµ˜é ñ Ê@›¹ÃÂÂhšcŸØ9¾í;g (æDdY£Ñ˜ŸŸO§X@Ë (—ÍBÏêêµZ-.EøÓÓa˜¬¬,­Vëíímû9ê={m0àÓºñ-IRzzºV«mÔ¨Q«V­p\á7‰¢Èó|LLLŸ>}°Ø(]^^^eeezzºµÛ­[K’tñâÅ“'O^½z~¯ôæ8Îh4Þ½{·cÇŽXâ”îêÕ«'Ož¼xñ¢µãÛºÕ7ÏóÓ§O·ãŒ‘ ˆøfY6##ÃÝݽY³f¨¾AéFE‰‹‹KNNVpõM1™L´!þ@JJ (/Š"ö(}niƒéÒ¬߸†?9Y–’œœÜ¿â3ç8fî¡OØí\uíÚ5&Mš åñ Ê@›JÎ;שS'4² ¾A1èRè………;wF;â”6•äçç×ÔÔ‰¢ˆ^ˆoPÚT×¥Kì Ä7(m*¹zõjŸ>}æ9@|ƒRJo–eoܸáêêêïï>'ˆoP’ÄÄÄÀÀ@–eÑçñ 9óX–’ššÚ¯_?‚–ŒozYââ„Úèh‚‚ƒÁ„–hx¥‰ BÏêó}ëõúšš–e]\\p\¢3Äž9s¦k×®²,#¾¡!1 ’$éõz¥Æ7-¯ÌfóÆúé§Î;O:W)PÇI’tóæÍ‰'2 ƒÅ˜ ÁÜV2 ³oß¾¤¤¤ÜÜÜXÂPIñMcZ¥R-\¸°oß¾ô »ÁrŠçååÆàà`Ú»qS¦L™:uê… ÒÓÓ­š{¶Xë’¡…Úwf ÁÁÁÇáÜ€†w†Û&ôlQõ è†GÅÅÅÑ[K”ÞÐPËð†ß´©äöíÛjµ:00ßîˆoPÌ}%!$66¶M›6,ËbmÄ7(]LçÚµktT”ÞˆoPŒ¢¢¢ŠŠŠÐÐPô9@|ƒ2Ц’³gÏvíÚ{ñ ŠAG褧§GDD´œ ¾AdYfY6''‡a˜ÀÀ@ Á@|ƒbâ›’˜˜Äó<úœ ¾Ah­?xð`ò  Ô™Õg”$I‚ÁuN_z3 “““£V«¾¡á’Pv|3 ãîîÎó<Ž(NhŽãÎ;FEÕ74Ø¢˜ç !îîîÖ®Q¬;a¬ÉdZ·nÝ3Ï<Ó¡C‡‰'âi•Ó¢,sssÿò—¿àV ö]æ7ß|“žž~óæÍÞ½{åNËóüèÑ£»wïîææ†ûe'?§ïܹ£×ëŸyæŒÖ†ŠFÜ€"""._¾\VVfÕܳzãI```›6mp\m99þ|÷îݱ7 Áóõõ%„Ü»w¯¼¼Üº7µÖþ$F£Q–eôsò’D–匌 ŒÖg Š¢,ËF£ÑÚbmpéR8¨N[z³,›‘‘áêêÚ¢E <ÿg¨Wlzh‚[HHH a÷aˆoPL%BIII8p yЧ ßàÐ$Ib&55ÕÓÓ³I“&XÖñ Ê@óúçŸîÚµ+V¬@|ƒbpg0îÞ½Û­[7<Á@|ƒ’JïÌÌLµZíãã#Š"âñ Èn³Ù,ËòÙ³gûöí‹þ‚õÝÀ*ÙÍ0ŒZ­&„”••EDD å@yñ-˲$IxfålÙ}çÎ5kÖ¤¥¥yyy©Õjz ÁÁI.Û„žÕO´Z-˲˜ÔyN\Y–+**¦M›Ö¤I“ž={Þ¹sçý÷ß§ãæ±ÀpDz¬V«Uv| ‚°oß¾íÛ·Ÿ>}ÕÐ!ò¿þú«ŸŸß¬Y³âããwïÞpÿþ}–e‘àà NŸ>½}ûö}ûöÑ•j¬Çê3úùùøøøà :Ú<âîî^SSsâĉÁƒ‹¢h4-í' ž,Ë¥¥¥J]®á¿¿çû÷ïßµkWQç‰oY–{õêÕ¦M›%K–¼úê«3gΜ6mš‡‡VØ'Ñ©S'BHãÆ¯\¹¢àø–e¹ªªŠNŸˆÉ.œ$¾iûÉ’%Knß¾íëë»víÚ=zȲŒì'!Ã0UUUÖ¾ã´z¤Òç–6Xµ‡,Ë C† ™9s&yлœû€Õ7„} Ö¨Áùå—çŸ^E ¶Pjõ N…¶œäåå1 Ó¶m[ìTß  ´±ïüùó:t „`qÄ7(Çq²,gfföéÓ‡`˜%€5Õ½ñÄ2 Ú2<”eY\®N^z3 sëÖ-AiC v €ÃÅ7MjY–k_¢ècàÌDQäyþĉ}úôÁ k«KqD¯Ì’’’ªª*†a ¥LHHhÒ¤IãÆ%IBË €2â€rîܹÈÈHìÄ7(b°¬¬ìÞ½{]»vÅCKÄ7(&¾eY¾|ùróæÍ=<<0Å âƒa˜sçÎ 6Œ`Ž*€†ßtÈ%ú60´ÓQnn.!$$$„`"€Z7¦¶™0–·ö,ÓB;A !çÎ £3¼£ú èµàææ¦ìø–$‰NÚâååŒãÚNPY–ÓÓÓ,XðÐz§NîÆååå Ö.À­ß)))&“)((ñÝ`Ж“äädWWW???L1P[VVVvvvFFFXX˜‚ã›çù©S§öìÙG´!¡-''Ožìß¿?žj<$::šréÒ¥¤¤$«nÈêE“Ñh¤KÀá 6˜ì¦Ý½KKK»té‚€Bõ5ÖÞÕã›yµÁÄ·,ËW®\ñõõõððÀ.¡‡&K¨ËÙyþüù^x`Ž*ûÁµO€>¥ÌËË!44ñ €øe *OŸ>Ý¥Kò`ÆA@|ƒ£ã8Îl6_»v­_¿~˜£ ñ Ê@Ç $%%¹¹¹5oÞݽß  –îÞC† Aé €øÅd7ÇqEEE•••:u"˜£ ñ J‰oY–ãââ‚‚‚´Z-f÷@|ƒ2ÐaqqqC‡%˜ÝÀâ›^çxÆ¥ht âÌÌLµZˆ†o€?JU–µM‰cÝ)«dY.///++S©Tîîî8® eyhI[Qß¿§ººÚl6———[{B7Þª¼ Û¶m‹‰‰éرã”)SpÙ+Çq:.??òäÉ-~?÷†9pà@JJJvvvÿþý-a¨¤ø¦W¸J¥Z¼xqdddíAYhËI||¼¯¯¯··7ÖøãÜ›2e !$666%%Ū¹gõ&i³Ù,IFW+ý¤<}úôðáà cüQ%I2›ÍÖÞ-&ŒeYu·rKo–eoܸÁ0LHHš¿'ôPIÁŸ;þ|çΆ±ÁâÙ€ø†ú8?XV„´´´AƒaIbÄ7(}bqþüù€€///´œ ¾AhX_¸paÀ€ØˆoPÚTrûömƒÁN»b· ¾ÁÑѧ”gÏžíܹ3Çqh9@|ƒBÎ –5›ÍIIItIb Õ@|ƒ2Jo†abccéCKô@|ƒ2Ðv’‹/öë×{À1ñÖÞ1.Ê‹ïÂÂÂÒÒÒîÝ»cMK€' =Y–mpÏÊ[;´Z-šM•…NJuäȑ޽{cozŸ¤Óénܸñâ‹/Ì ð$—Ã0{öìIMMÍÎΦmJ0–çù‰'öìÙÓÅÅA  øŽ÷ññiÒ¤ ¦‡xÒÜ>|øÀ/]ºTTTdÕܳzãIóæÍýüüp\•%&&füøñøÆ¨oooBHóæÍ‹‹‹­º![Ì÷m›V|xzô)evv¶Ùl Ãg€º]G²,7„ù¾QÁ)m¤;~ü8] _ºŽz¨­àÑ5-³³³ûöí‹ÒÀÁáú„ÿ½ã#„\¼xÑßßŸŽ´Ämâ”A–å³gÏbMKÄ7(©ôfY655U¥R£ô@|ƒ’œ9s¦OŸ> ÃXo  ¾¡^Ï–-//ÏÍÍ4hÁô°ˆoPº¦å‘#GºvíÊqú  ¾A8Ž3™LiiiÄÞ@|ÿr‰¶T‡%˲,ˉ‰‰îîîþþþ¢(¢Ï €"BÏêªV«eYm©Ž|ª1 óÓO?1SBÔËí,˲Z­ÖÚ²î”U‚ ìÙ³'11100pèС8®Ž†v¼uë–(ŠáááݽžÚñãÇsssÓÓÓCBBß,ËwèСI“&8¨Ž‰a˜˜˜˜nݺ±,‹éaž^«V­ÜÜÜL&“µ‹!ëÆ7Çq=zôèÖ­ލcbYÖd2¥§§ðÁ˜ä ^„††B´ZmBB‚u¯_«þvY–«««EQÕÑÐþ‚ÇŽ iÔ¨¾ê… ¢(VWW[ûé¥Õ«-úÜe£¡a-BllìСC‘ÝŠ =¤ªóÆ7˲W¯^uuu Ä$'ÊûžÀ.pfÇŽ£ó "»ß t~ÁÜÜ\N×­[7<´@|ƒ’=z´wïÞ‹¢(:¾éÈiË«¹¸°,ËB-¯˜£Î²UUUׯ_4hJo…âɃN„ƒÁ`6›9Žsuue†ÞbÿAv3 Ãóü£/b·:2:6çĉ¡¡¡®®®ª Ôø¦›ŸŸøðák×®ét:6mÚDEEý^Ó×ïß¿âÄ Z¹³,îÊ(½iÁE‹Œ’PtõwôèÑQ£FÍ;—"ÂåË—7oÞEW(Ži#IAAÁ¢E‹ž}öYBÈíÛ·=úÙgŸy{{£ÅaÑ‚ñññ7nÑ¢JoÇ7Ã0eeesæÌEñøñãC‡åy¾W¯^‰‰‰¿¹n– *•jÏž=C† ™9s¦åõµk×îÛ·oîܹ‚ Xj:éú¿ à6·#ºÿúé§ñãÇô¨?–'ˆ4îlÐ#€'„DEEB¶oß¾fÍš‹/öìÙsÈ!¿ÙB_ñññÉÊʪýznnîóÏ?_;†qwwgYwèRz³,›™™)IRÇŽñРÞk#ò AÒÝÝÝÚå#Ë2¡_§Ó¹¸¸”––nÛ¶íüùóÆ ›<Ï'''O˜0ÔêýM'Œ¥.iXàÑ¥KïÊÊÊôôô¥K—BÐá Þ¯2Ë£K–em0a,/Ër“&M¾üòËW^y…f·Édºråʱcdž ü{íÔæÆ+V¬°TvÔëõý˜å¹%j=»ÇwLLLHHˆ‡‡ú X£·D¥múkð„^½zùùù>|x×®]ÕÕÕÁÁÁ3fÌhÕªÕo6ºÓWBCC7lØàççgyÝÏÏO§ÓÑÊ]¿ =d/^|ã7¯žöì œ?~MM mæ¦k$ÿé y??¿Ú1ݸqãÆÓt@|;z/^¼H‡ê Ã @‰oš¶´‚«««%šÿ´S𣓢ÐÈFeç€dY>qâĸqã°+T|“G¦óã£ÿ ;Ôƒ›a˜ôôtAÂÂÂÐê Ð`à&Ú)âûСCÑÑÑh3@|ƒ2Ð6±[·nUVVFFF>ÚßàˆÙMãûèÑ£ýúõ#XUñ ŠÈn–eyž¯®®ÎÎÎ[¿~}xxø¢E‹ª««Ïœ9Ã0 ¬*##ãÂ… ±±±Ö¾â¬ß’$ݸq#===//Õ6hL›ÍfÿíÛ·>ÜÇǧ¬¬Œ<WV•———žž~ãÆ k·ŸX·MƒçùI“&õèÑGÔ–Ù­R©^xá…‘#GNœ8ñÒ¥K±±±o½õ?ØÆÐ¡C !ñññ‰‰‰ ®¾ !z½ž>½ÄAµ šÑ .lÞ¼yRRÒ/¿ü²mÛ¶-ZLú`¢(J’ôèô« «¾i=H[cqPmƒ³Œ‹‹9räÂ… k¿ˆ`››`–empÅ¡k˜_þGŽ‰ŽŽ¦K’b]4€†y«]ÐÐÑ:ñññmÛ¶•e™çy´™ ¾Awm„#GŽŒ=š`HÄ7(¥ôfæêÕ«,ËvìØ]Mß $‡1bA/oÄ7(¨ôÎÌÌ4Ý»wÇŠhˆoP †a¾ýöÛ‘#G¢Éñ J*½³²²ôz}Ïž=Ñê €ø®h„µAÝÍ0̆ Æ0 v8€}Ùæ´ú¨K•Jõ˜ COº"ZYYYß¾}Ñê `碘eiô);¾eY¾{÷naa¡‹‹‹··7Ž«5H’Äqܾ}ûFŒÒÀîÊÊÊ ÃÝ»w­}1Z+¾éûá›o¾¹téRxxø¤I“0ó†5ö3˲·nݪ¨¨èÝ»7ÆÇØýVøèÑ£©©©ÙÙÙtYë…¸µâ›†ˆZ­^¼xqDDDí¡Þãûûï¿á…8ŽC|ؽú&MšDùõ×_“’’¬š{Vo<Ñëõt­K¬—VïhXçææõïßN  Ãèõzk7žXýjgY–ã8ÄŠõ¾í÷íÛ…Voa³ÐCª*•¥ÃIQQÑóÏ?'N÷=] èøþæ›oFÅqvâÀ2̲¢¢â¹çžCé €øÅ`fÿþý˜\ñ J*½Y–MOO¯ªªêׯŸ,Ëh<@|ƒbìß¿ÿÅ_Dé €ø%•Þiii:®W¯^hõ@|ƒ’üç?ÿyù嗱ߠ¤Ò;>>ža,©€ø¶.Y–%IBûl½ “'|÷Ýw'NÄÞpL6 =[Ì÷ ±^ˆ¢Èq\LLŒ——Whh(JoÇD{‚)x¾oúÍc6›×­[Ô±cÇ)S¦`ÂØ§ÙŸ Ã˜Íæ#GŽÌ›7{Àa¯Ó]»v¥¤¤dgg÷ïߟ(wÂXžç§OŸI¿ˆ8OsZ°,{òäI??¿6mÚÐJ»À¡Ðˆ{ñÅGŒ{ûöm«ækíãåååíííîîŽCû”L&Ó±cÇ&OžL¬ÆÈÝÝÝÛÛÛËËËÚ«ÕS@EBˆ$I8¨O³Y–=|øpûöí›5k†5;}ÊŽo¨‡ƒÄ²:îüùóãÆÃ! ¾Sz3 ³gÏžž={6mÚ” åߊ¸ cY¶°°0--m̘1è,ˆoÅ`fçÎÑÑÑZ­£Ÿñ­˜Ò;33³¤¤ä…^Àİ€øV’={öŒ?ž`bX@|+¨ôŽe&""‚öÄnÄ·C³ÚûöíÃ8@|+)¾Y–=räHË–-CBB0NìßòØ×¿Ç†Ñét?ýôÓôéÓ1;€â.aÛ„žÕã[£Ñ0 ƒ.ÖÚ;wî|î¹ç¼½½ßÊÂqÃ0ÆÚ²î|ß‚ ìܹ3>>>(((::Çõq¾·9ŽËËË»víÚêÕ«Ñl 8GŽÉÎÎÎÈÈ Sp|³,Û¹sç®]»zyyá >féÍqܶmÛÆ§ÑhߊӮ];___µZmíЬßÇ=ûì³Ý»wÇ}üì¾té’ }ûöÅy% ¦HLL´n}lí¦N'I’ æNl†‘eyß¾}S§NÅÃ^…EQ’$Ngí«ØêÅ˲,Ë¢àq9Ã0‡nÙ²eÛ¶mißAì%Öa4÷¬ž®Ø×Ž€†uyyùÉ“'§OŸŽ&o@|+&¾†ÙºuëСC=== ÖÄ·ã£(ÓÒÒ GŒ'–€øVRõ½}ûö×^{ »ßJ*½>ìïïŠÒßÊ(º !eeeÇŸ1cz›â[1ñͲìÎ;ܨQ#¬"¶ˆoZ9ÖžX éóDh;IrrrAA]†{€-â›ölc†a˜êêjƒÁð›7þÒÿ…Á„µ ‚°mÛ¶™3g¢› @¸™~(źÌy"Š"Çq{÷îmÓ¦M×®]ß~ûíªªªŠŠŠþýû¿þúëMpêææf›HJ,½÷îÝÛ®]»¶mÛÒ]ŠÝ \´–%ÖÆrsssÄø¦·ù7oÞl׮ݮ]»ÜÝÝ×­[g0fÏžEÇÓêòàÁƒ999F£‘ã8ƒÁн{÷ððp'ŸÃš~-ß¾};66víÚµh6PzÝÍ0LjjêåË—]\\DQÔh4W¯^õ÷÷w¸øþï¿äùË—/gffþõ¯•$ÉÅÅeÔ¨Q·nݲ|úuäêêêáá¡ÑhX–Õh4jµ›~?õÕW'NÔh4˜Ï  P«ÕžžžtžXµZíêêjí"µ.ñÍó|xóæÍ1Æ !Õà–;iGŸ0–Îi[ûë+Êÿ1Öqqq%%%£GFv€}âÛâµÿŒ¦€?¨» !:nÇŽ .Ä;Ç7}úôïßĈsæÌùûßÿN ÞÁÉ Ð° 4ˆŸ˜˜¨àø&„èõzÚïTÉ¥Õjûöíëëë»wïÞwß}w̘1ζœmAÕëõÖÞÕã›öŸs’EèéóIAV¯^½téÒŽ;ÖÞ8­œ =\òèÇVŸhóÈÆ»víÚ±cG³Ù,Š¢“|u€!¾ë9»/\¸——÷ꫯJ’¤R©0TߎKº{÷î®]»þö·¿´–€•ñØõUz˲¼zõêéÓ§ûúúb€% úV:ÕÆÃÃÃ{õê…é¼ñ­˜ì>sæÌ;wfΜ‰ÎÝ€øVÚ›»  `ÿþýÿûßédUØ-€øvôì¦>ýôÓ3f4iÒñ '¾-×ðö}>¹zõê=ztïÞMÞ`ËгzÏFÃ0LÃk¦MÞûöí3›ÍùË_°ŒP4 4²ã[–åÜÜ\777__߆TwswùòåsçέY³ÝÀ¢¨¨H§Óåææ*uÆAú¾Aøá‡RSS;tè0qâĆÑ4LÃúîÝ»6løç?ÿéââ‚&o VÚ:{ölzzúÍ›7{÷îm C%Å73µZ½xñânݺÕ~±QW¬X1sæL”ÞP;â&NœH¹råJBB‚UsÏê'ÕÕÕtÉ º€P(½9Ž[½zuß¾}###Ñä ¡‰W]]­ìå!tµõ†1ëžet¥››ÛĉAhßIP¿¡GY}CØ×O”݇ÎÏÏ_¸p¡(ŠÈn°#ÐdwBBÂñãÇ?þøc:¿ v سÌÇ.øS´½;//ï_ÿú×»ï¾ëææ†®&€øV@v³,[\\¼|ùò… ¢« ¾€6’TUU}øá‡¯½öZxx8FÆ€ƒ@Û÷e7]wxéÒ¥#FŒèÝ»7º ªoed7˲+V¬èÖ­ÛðáÑ݀øVLv¯_¿ÞÇÇgÒ¤I‚ »ñíèÙMN~õÕW,ËΟ?]¼ÀIã[Y“}Ón‚›6mªªªZ°`?Ç =«Ç7󀂲{Û¶meeeK–,‘$ ý»À1CϺÆšÍæõë×8p sçÎS§NuäÑ.´Í„ã¸={öäççÿãÿ@ÿnxÒaf×®]III¹¹¹ °j%ÎXéWÓìÛ´iS›6mz÷îͲ¬‹‹‹ƒ×Ý,Ënݺ5''gÙ²e–oQœ‘ðD ƒ$I/^¼uëÖìÙ³­WZý‰œV«uuuuðÝM÷ï—_~YVV¶|ùrú•†ì€: ¥ªV«µö†¬Þ8@§ŠuØ ceY¦)¿øâ‹ÊÊÊ÷ßÙ Š=§îGª8ŽûôÓOEQ|÷Ýwé³Jd78>çoÚ`"ºuë\\\,X@Ëpd7(‚“ö¬ Ù]SSóÿþßÿkѢł dYæ8Ù ¨¾½¤¨¨håÊ•QQQÆ Ã<‚€øV@ÝÍqÜ7Ö­[7eÊ”ÈÈHŒ«Ä·C³ Ì9~üøÞxã°°0,7 ˆoG/ºY–å8¾ºqãÆš5kÜÝÝ1 ¾1¯ !,ËZŠnA>üðCOOÏ?þ˜eY´™âÛYEҞݷnÝúì³Ï"""&Mšd™Î‡ß¿‹f¥ën–eoݺõÞ{ïUVV†„„DFFÆÆÆN›6­k×®˜ #÷¬ßjµÚ–qIRêõúY³f1bðàÁÓ§Oÿúë¯3227nŒ•`›[µZ­ìøaÛ¶m±±±Ï<ǫ́Q£lß>>>£F2dÈ{ï½wúôéû÷ï{{{£Á¬íСC7oÞÌÌÌìܹ³‚ã›eÙÞ½{wëÖ­Q£F¶Ùq¢(ªT*??¿˜˜˜>úèøñãf³yëÖ­5Bƒ Ø@—.]Ú´iÓ¸qc½^¯ìøîСCxx¸ vmÔV©Tiii»wï=zô­[·þýïŸ9sæ7ÞðõõÅò `­Zµ"„èõúÄÄDÇ7ý ’$ÑE¬´ K×@QwïÞý믿N™2¥W¯^ׯ_OLLœ7o^`` ºš€ÍÚè8koÈêñÍ0 ídm¥à¦¹ÌqÜùóç>Ü¡C‡5kÖhµZI’Ú¶mÛ¶m[ò / Î*°z ^ëÒÚ,7Ã0Û·o¯©©™;wn›6m,yMÃîJœRÐÀ(2¾iÿ?Žã <˜••=dÈò œæ5úwâÛ!XÆÁó<_UUµ{÷ŒΙ3‡ÖÚ¤Ö`KÄ·ýÑ)鈛ªªªƒ&''·mÛö“O>¡«‚¢uߎ•Ú–nžç³³³:”——×§OŸ·ÞzËÇLJ² £ÑÈqœ'‰³ïåïèñÍ0LYY™(Š„žç½¼¼~ó–$‰v±ty¨K_MMMqqñÕ«W“““u:F£ Y¼x±ŸŸý³ÙlùW?Èh4~þùço½õ–½îÚnÞ¼9aÂú­cû7°cÇŽÁƒÙå.²²²rÓ¦MK–,±ýÖéIbù¯•FýéþÿòË/gÏžm³ ÚzNNΩS§fÍšeûýOOøï¿ÿþ™gžéÞ½»½1>ÿüó7ß|ÓöõSí¸sÄø¦ãàW®\™™™ééé)Ëòýû÷#""½VµZ-˲ÕË•••ÅÅÅ999÷ï߯¨¨(..6›Í¡¡¡ãÆkٲ壧»J¥ªÃ›Ôjµ%%%v|ª)IRuuõ£ßf***xž·×Ö]\\ìµÿéFiáiÇý_RRâââb¯­ó<_QQaÇý_]]mß.a%%%Z­Ö^ß›®K|Ó¯Ö¯¿þº´´t×®]ô½šL¦ >|xäÈ‘tÈ?ͯï¾ûîÚµk&“‰eÙØØØ{÷îYÆCšL&FÓ²eËÖ­[·hÑ‚a˜ôôôäädƒÁ@úÓ|c3 c2™²²²vìØaãõ"è/Ïó™™™………®®®F£ÑÆ'1}‰‰‰²,ûûû ‚`ãò‡aN—™™¹k×.Ûo]–e•Jõ믿BÊËËÍf³íß=¶nÝêææfã3n½  àêÕ«vÙÿ’$i4𨨨œœœëׯÛþ Ð30++kóæÍjµÚöû_­V§¤¤´nÝÚºŸ±Ìl6«TªU«VµhÑbêÔ©–׿øâ –eÿú׿ ‚@Û ÒÒÒ,cjÌf3»J¥R©T*Z˜F£Ñh2™H}“¤Ý Íf³]¾ù-óˆ¢hûïËǧ[·ý Ç‘çyAìòñ-Eí[NjïAlsýèÖéã}{íºuÚvj¯@¥RÙñã˲ܡCbµ‡¨u‰oúOòòò/^<`À€fÍšBnß¾ÿÙgŸÑÿ%NðØàñc³Þ#‘©ÛW}+ùùù?þø£åÇŽëããcy—‚ ܼy³eË–®®®öª€À9¯Ztggg›L&WW×Ö­[7ø.Àà'mu¨©©qqq¡ÿ[^^~ïÞ=:õ©CTßðebùmwïÞ}çw¼½½‹ŠŠV®\IÛ€pý€ Ð'8~üxÓ¦MíÒûœ°hÐétË—////ß´i“,Ë—/_^½zµ¯¯¯Z­þè£h/Òz<ëþ<öáj¡W}n¹víÚçŸ~ýúõ¯¼òÊÊ•+Ÿ¨ÃÀSÓ,k47oÞ<|øð7ß|sÖ¬Y(Àèj_QQQôIž$I«V­Z¶lÙ¿þõ/íÛ·Óq-õyª?åuÂ×Rû 1Æ aРA¸rÀÆA?~|VVÖôéÓøáb¿˜à<ÙMÑh4ýúõ£]M&S“&MÂÃÃEQ6lXYYY½oÔZ¢T*UMM ÏóeeevvÎÉÍÍmúôé„)S¦¼þúë#GŽÄ¤f`•••–Z¶F°,«×ëë6xÅŠÕ÷ÐéttȲ‹‹‹N§ÃAÛ“$©yóæ(½ÁfÔj5-X†©©©¡¦ÒW@|Ó›ˆN:}òÉ'¥¥¥«W¯ !h|2›Íeee•••_|ñ…‡‡Ïóöêz ÎV1””””””TVVj47nÞ¼¹G¤¾×“a¬qZÓg˜ŸþyjjjPPÐÛo¿uËÀf×˲)))6lEÑÃÃcùòå®®®èyVEO°âââ÷Þ{¯¢¢"00ðÓO?ÕétK—.-++{á…&L˜PïS0¨Jl“ïõû;­øP‘ÎDHL `ËKÅÒÞý”“ç}žþy†aöïß¿k×®ˆˆˆÄÄD??¿€€€´´´5kÖ„„„¼úê«%%%;wîl×®,Ë Ã0 óñÇõÕWÍš5Û¶m›——|^¿cË0ŒÝnߺu«ÉdZµj•(ŠÇýή·ÍfÛ½{wRR’Õj5 +V¬ø üØÅ‹wïÞýæ›oFDD<úÂ'7n4hÐÈ‘#¿<äÿ42‚ü60œ/))qww_¼xqUUUË–-W¯^-Ëò•+WZ·nýþûïWTT8Ž;vDFF–––ʲœ••Åóü|P\\òÙgŸÉ²ìp8žxâ‰víÚUWW+siiiÝ»wß¼ysmmmQQQ¿~ý6oÞ,ËòŠ+’““óóó áC‡$IZºté­[·dY¾pá!ä¹çž“eÙétʲl·Ûƒƒƒ5Íýû÷A³ õÿÁn·×ÖÖöìÙ³mÛ¶’$Y­VezGùIY–á‡EQ„·ðçßþö·üÑétfgg/Z´¨}ûö’$ÙívA”ÿ\y!I| ¼p8²,ïÙ³‡rûömA@3ÌÃÀO:NI’RSS9ŽûðÃEQyð%hBä·ÀøFþçøNLL4 III²,OŸ>}ذa¢(.[¶ ~ 2èÔ©SMqqqF£1''G–åáÇOš4I–åšš77·;wBìJ’TYYÙºuëuëÖÁ7Ȳ¼cÇŽÐÐPY–­V«,ËŸ}öYpp°Ùl®/)???**ªyóæééén§OŸîׯ_xx¸2Õþ[¬X±¢M›6õ?ùÏ?ªFŽyäÈåÃcÇŽý·e´Ùl,ËÞ½{÷·þQø‡ÂÂÂ6lØ€®C~'8íˆüσ³cÇŽµlÙ²S§NåååçÏŸŸ2eÊþýûAXºt)ä;Çq<Ï6Œçyøù.]ºDDDäåå%''>œrîÜ9I’úöí«Ìf¼÷Þ{‡cñâÅÐÍ”$Éb±X,Bˆ^¯—$)..®[·n®®®°î}eeecÆŒ ݶmL‰$&&<¸®®¾öÂ… 3f̘5kÖ¢E‹RRRÞ}÷Ý/¿üröìÙ¹¹¹N§ÓÍÍíÀ}úôY¹r%!„a˜sçÎ;vß¾}‡ãóÏ?ß°aúuë6mÚK„Þ½{ÿå/‰MHH „Œ5êóÏ?òÉ'_xá…âââÅ‹O˜0ræÌ™eË–;wnüøñ»víºvíÚ¸qãà{***!qqq'Nûl||¼"Aãùþ`Y†aŽ;FY¹råœ9sÆ?uêÔ;v 2D§Ó1 #Â|°lÙ²E‹ݺu‹a˜'N8ÎåË—ÏŸ?ÿ¯ýë´iÓ!ÇŽkݺu³fÍ$IâyÞf³}óÍ70ÓÍ0 Ïó,Ëž?¾]»vðO×ÕÕ={vÚ´in2Ñjµo½õÖ_|át:SRR\]]Ÿxâ «Õ ±XZZ:vìØÏ>ûìÒ¥K‹-Ú´iÓÉ“'ûöíëêê*Ë2˲^^^:txñÅ !÷îÝ{ã7ÆŽ;oÞ¼ŸþùÀï½÷^«V­Z·n Í!dñâÅ_ýõýû÷{õê5xðà;wîŒ92--Íétx{{GEEBNž<¹fÍš   §žzjæÌ™Z­ö™gžyå•WL&“«««$ImÚ´‰ŽŽž3gNii)Ã0óçÏ—eù¹çž›>}zAA”ÚétŽ=:22òÝwß (++SÚ-Á¹oä¿›9¹s玧§çîÝ»ïÝ»cÿöíÛ/\¸P›Í&Šâ!+V¬(//¿víš»»ûÑ£Ga2&CÚ¶m»téR˜Ie¹²²’råÊI’‡$I%%% ÃìÞ½þ‰£Gzzz+J`ÎáÆK–,‘e9((è³Ï>Û¾}û7¾ýö[ˆHø™´´´7†††¾þúëÑÑÑÊ$Ï’%K ÃÀËËËá“C‡ †W^yeذa÷îÝÛºuk³fÍ~«ñññÍ›75jLgûúú,Y²¤¢¢B–å„„–eeYNMM…†¤¤¤„R\\l2™!ÙÙÙv»~kY–ÝÜÜNœ8!˲»»ûž={dYöõõÝ´iÓ–-["##×®][YY©üF‚“'È·íæÜÝݧL™êt:†éܹsnn.Ì™°,h4—-[æíí}äÈ‘°°°Ñ£GGEE;NBH^^^VVÖ”)S!:.333))ÉÓÓÓÅÅ…aØÇ2{öìL˜0A†a<Ø»woÿ‡¶j ØU2{öìwÞyçòåË]ºt±Z­0`fïÞ½±±±ÑÑÑ]ºt©¨¨€™eKudd¤N§{饗”>¾‹‹ËG}têÔ©€€€’’F#Š¢ÃáPº½„nû€~þùgN'ËrlllXXØÈ‘#›5kæååE©­­…ÔeY»Ýn·Û9޵ð+ð<¯Óét:H‚âÀ¯Oá8N„yóæ8pàÇìÝ»wnn®ò?Apòù½Ã2ŽãÌfóÎ;Û´iCå5˜OX¾|yZZÚW_}%ŠbqqñÒ¥K{õêÅq\EEÅž={:uê¤l YÝÏ?ÿÜÝݽY³fv»ýêÕ«¯¿þzhhèøñã×­[g2™îß¿?þ|“ÉôÍ7ßh4–e333¿ýöÛ:Ô¿ëz×®]»råJmmí‚ ÊÊÊ`HJJJee%„ݶmÛüýý;tèššZWWWQQa±X FóóóEQܲeË7ß|³fÍQ»ví SÞK–,ÎrUUÃ0ðkBô¯_¿~òäÉYYY‡ãôéÓƒ bF§Ó-_¾<'''&&:Nh$àl,Q2Z’¤¢¢¢¿ÿýï½{÷nÕª!düøñ§NJNNö÷÷òÉ'a’½`Á‚-Zlß¾ýÎ;YYY Ã`|#¿  8òh|³,ûÑGeggÆ'žx"88>”eÙËË+&&æÄ‰GމïÚµë»ï¾ëêêúî»ï–••i4šÎ;ûùùÁþå³gÏ:t($$ä§Ÿ~úî»ïŽ?îííýüóÏ8ðîÝ»ß|óÍÕ«WÛ´ióÑG¹¹¹Á¼Ê’%K8޳ÛíðOCˆ³,›’’²iÓ&å¡C‡z{{?óÌ3§OŸ>qâD@@@BBÂðáÃ;vìxþüyFÓ®]»ŸþY«ÕZ,–1cÆX,–]»viµZ§Ó™œœÜ¢E‹îÝ»ÆL™2¥C‡[¶lqss{â‰'BCC%I‚î<ìÿ‹‹‹;w—×Ô©Syž‡öŒeÙØØXX2ýôÓO !žžžIIIµµµF£ñ矆 ~ýúéõúüã‡cÆ ÞÞÞ„^¾|ùäÉ“K—.ŠŠ:wî\zzºÅb±ÙlYYYûö탕–eq8ò«àm;Èÿ2ÜëßÓPßð_}íÿ¿†‡¾ä÷¡Ýn—$éÍ7ß=zô Aƒþÿï²ißù¿O㸠šíNÝUª<‡öEÔÿ+˜X€Ù^ø½ cþèÏ×ÿP™I˜×þç: Ë·‘_ž Ÿþøã7ß|sÁ‚ÑÑÑ AúeÖ¥þ †aDQT¾S©tðIõ+ Š Ci#Dož`ïAþkêêêrss•=ŽòçÄ÷©S§èꀳ,ëp8l㥦Р7C ŽãèR^WW§ÕjµZ-EVaYîrqqipÙF¯×Ãí ho´÷Ÿåp>>>¾S§NõGvjF’$NwãÆsçÎ-\¸–rÃ\AUUÕ–-[^~ùeOOOZ .ùðÃصkW»ÝNÅEQ4 {÷î%„Lž<Ùjµ6ìêÌ{4øÌÚíýû žœœÌ>|À€t  &MšD݈ûرc3fÌpuu¥Kù±cÇFŽÙ¯_?ºdgeeBÆöF{?~ö ä­V«²LDE¯Šã8‹Å¢<ŒŠFtÖÖÖ ‚P[[k0èR.‚ÅbÇR±‰MžçáGØ [ýÐÞhïÇÀÞ×V«•Wåa,ý«¶ôõ×âÁDõKÞÊÆ ]_9þ&¿lÌ€úS1"®ï€ Ÿüª½©0É£öV§R{“_6Mý›Ö‡¶7Q¥{f)½›EM£rz}# Š€(„;u±ÚâõßÜ»w/!!¡´´”:_¹r¥°°Ðól68dàܹs„›ªi‘-IRnnî·ß~ û:èj)ãââÀ't)?yòdzz:]ÙÍ0LZZZ^^]M¦$I/^²Ñ'XmT®ºÞ7‚ BMwK€ ‚ñ ‚`|#‚ ß‚ ß‚ Æ7‚ ‚ñ ‚ñ ‚`|#‚ ß‚ Æ7‚ Æ7‚ òÂ7ø7>úTåœo¤Q¡èÈÚ“3 ÃqV£QQÎÿRà8Ný>TvcÄ`ÃÇ7†õŸuÙ þ–$ C‹~¬˜œ¢V”Ãc¸i¹H)m ÿÙ|Ã^ ÃÜ»wïÂ… Ê[QÛ·oßµkWå*E¯?ÈóY–MLLLOO4hE­&fKEïUáôéÓÝápÎg1™LW¯^…3/_¾LÅ2‚ ,\¸ðÔ©S7nܸzõêµk×,X••¥æ‚ƒIŽ=ºxñâ»wï&&&&&&Ξ=;;;»Á/φï¬É²5Ñ@[BBÂÉ“';æããC™8qâ¶mÛ^~ùeI’Ô<ŒeÙf³½õÖ[/¼ðBjjjIIIÏž=Õ?…"ŠbXXØ'Ÿ|Õ&„”––:N•q!+W®LKK{ûí·ÝÝÝãããPygÎðööö>xð`aaáýû÷ƒ‚‚öíÛ§ò4j_¿~½_¿~>>>‹E„I“&%&&ªßÛ²,ûùù8p`òäÉgΜùâ‹/`DOE¼ªªJ§Ó)‚ÝnW¹`˜1öññéÞ½ûêÕ« !ï¼óÎÌ™3cdÌ6†zžç Ïóîîî´LyƒÎ¹sç2„Ð0' —_TTÔ’%Kžz꩎;.Y²dÔ¨Q*ïƒCï»®®náÂ… ôlÙ2++kåÊ•ë*¯v@@ ÞÁäiiiÞÞÞê÷6Ã0V«uåÊ•³fÍ ÿÛßþFË9Â<Ï7iÒ„çyFÃó¼N§£¢Ú²,¿üòË·nÝÚ¼ys“&M† Ö㳆Ÿ<áÆñññV«U¯×ÿðÃuuu„†ÉA¸>»téRÿ­úçääTUUõéÓ‡–Ù›ÍÖ­[·fÍš-Z´hÙ²e/^T¹`˜5މ‰Ùµk×Ë/¿|xïÞ½T´—UUUîîîk×®ÍÉÉùꫯ MT¾m†a˜ÒÒÒãLJ††Š¢È0Lff¦ú/LX"8pà‚ ~üñGŽãc‚oð4iß¾ýÙ³g¿øâ Axž¯ªªzê©§UÛÂUG’K’$ËòÀ»uëó?*7€¼½½Ÿ{î9‡ÃqàÀðððæÍ›SaWWׯ¿þzóæÍû÷ï÷ññÙ»wo‹-T>íU Z»v­,Ë‘‘‘+W®¤¢¢Õj{ôèqüøqNý¿ÈÈÈ€€Z:à&L(,,ìÛ·o#EJCÆ7¤ÆàÁƒü[KË E€ààà`B¢(jµÚððpY–U¾ôWÿšôôô\±bÅC}[õW[ÙîM×¾ï¿ýío4^§ /""bÓ¦M÷¯4Êθ!­¾¹qÇ÷pqÚ¶÷@^ÃŽZZwHpp8]Þf졼 ¥¯olhxhÑߨ¥æC1ÞIüg i„º¦þÇ·ñT÷«ïÚÄN1‚ •ý*ŒoA:G®XAŒoAãAÁøFÁøFA0¾AŒoAŒoAãAÁøFA0¾A0¾AŒoAãAãAÁøFA0¾A0¾AŒoA¤1à%IEQ’$Y–Õ/WEB¨E±QOqn@@'Ȇ‚Ó¥\‘ õ§Â' ^Ã[´7Úûñ°·RjÞÕÕ•ã8Žã¨Ð :]]]5 -šÜÝÝ5»»;uÊ5 >Ñëõðíö~üìíêêÊ'&&jµZQY–‚‰I’xž¿yófqqñ•+W$I¢¥‘gY¶²²²¬¬,>>ÞËË‹.åÅÅÅ7oÞÔjµ‚ PáQ5Mff&!$!!ÁétRqe¢½ÑÞ¿Ó'Ç%&&2={öô÷÷§et)˲V«½ÿ~nnnŸ>}hìBX–µZ­×®]ëÞ½»Á`$‰åÇ]ºt)"""$$ÄápÐâN—’’B騱£ÝnG{£½'{sWRRBΜ9#ÓLúœ={vüøñ2m”•• <¸¬¬Œ:åãÇ?{ö¬RõÓ¯«V­Zµj•òíö~<ì œ9s†…v’–ÖRQ «RT,·*:•ê”+²éò ¸íö~,í-IûÐ/£8ž"h—M—xE-]¯/›:å”ʦ«í¤ÑÞ|ý7TÌû< ÊþSdÓ¥ŸRÙŠ`Jeô8ú¤‘ø·ÊVVV¦¦¦–••ÑÕ·²Ûí)))EEEÉf&77·ªªª¤¤ä矦E6˲%%%’$ݹsÇápÐRm³Ùœ••e·ÛO:;Rh¹ÑáîÝ»‡#11ñêÕ«´È{WTTB’’’hé€+ö&„üôÓO………*/8[2%%%娱cPt*€¥ù'NTTT|ÿý÷&“‰¢Nʵk×/]ºd2™.\¸@Å0“a˜ôôôäädY–¿ÿþ{›ÍFE pWZZzá‡Ãa4/^¼HK«ãt:ãããkjjÜÝÝÓÒÒ(êÆ^ºt©¨¨Èáp=z”–8Ã0iii?ÿüszzúþýûF#½oH=ŸêêêêêjZy°E‡JJJ*++5 Eþöööv8uuu^^^ÐàSQs¸©ÄÝÝ¢!šÑhÔjµnnnaaaƒ ¢E¶V«5:®I“&555555Êݤ귷Õj=þ¼Ùl.))¡ÅÞžžž¢(6kÖìé§ŸNHHP¹ì›û¶X,Æ ƒ.-ÝXÙ¢E‹ÒÒÒöíÛÆSZšúÊÊÊOOÏœœœÁƒJf ëêêìv»,Ëf³™–A±,ËV«U’¤üüü¯¿þºk×®¡¡¡T8\›ÍV^^^^^­Õji¹Ýd2y{{GDDøúúRt&¸:''Ç`0DDD¨< ùú9Ø£G»Ý®ÓéUK%‡£[·nZ­–гN»M¡È¢(‚¿Õ_sQûöí ¯_|ñÅúæQ¹ì°°°3fH’´hÑ"жµiµÚY³fɲ &-Ê'Nœ¯/^L‘OÀÞN§3""BýIÈ?ô^§ÓÑÒ¼×`’_ž>C‘lE-ÇqÔ‰§–eéÚ¡X…¢ì®r÷<]ö†iXõ_•üˆê,No¬`v#k{‰We#–† Beëˆ%@ÁøFA0¾AŒoAŒoAãAÁøFÁøFA0¾AŒoAãAãAùáãK%IR©Ì0 EÏàVÎ`~-ÒØ5‡ÇrRWj|Æï\mBçƒ9Õ' ßžwCÅ 8PeŠŽy üMip+ <-å¿ÆÝô<ÊUI@ŠÎÒªï“ÆKp¾Á ͲlffæÖ­[Íf3˲'N÷Üsð°yŠÎ£°ÄÝ»w7lذ}ûvZê/I’$IÇåääÃsý©hõ)m)á,*8îÎÅÅ…¢—eY„²²²   Fú'؆-4Ã0 ãÆóóó³X,‘‘‘Ë–-ûä“OX–Uí¹ˆÐ+)++9rdiié´iÓÆŒsøðáÙ³g³,«þƒµDQ4›Í ‡²ÙlV«•–þTMMÍo¼‘’’òÆo0 SÎMµ°,Ëó¼ C‡MJJâ8NýÙ —ÞfΜ9{öìY³f͘1ãöíÛÊ_©Ù'Çegg3æÉ'ŸûìÇTù(a“É4uêÔºººÔÔÔaÆMš4)55UåÝX¨j¯^½æÌ™Ãó<ÇqëÖ­óõõU¢T3ŸþùóÏ?ÿì³ÏöíÛwÇŽ»wï¶Z­*ÃwìØpóæÍ„„¨‰¢¨ÞÞ·b__ß   NçççL(Y'7ûùùyxx0 #²]]]AªÁ`°Ùlîîî*¿&Až§§g]]ÉdbæÁƒ _åÓ&’$uïÞýèÑ£N§³   ??Íš5/¼ð\®êŸ°Z°`,ËO<ñĸqã`™Jýs>&LHOO‡O’’’ؤIATkrX)**Z³fMDDÄÙ³gCBBæÏŸiÃvaù¼&eYöõõuww÷óó7nÜ¥K—Ö®]k2™>ÿüóöíÛ«v¤åîÚµë—_~ùä“OÎ;—b·ÛOž<¹zõj5·=PóN:µk׎ât:CBBzôè¡òœ={vFFÆË/¿üÁLž½C‡¯¿þúèÑ£Õ(,ËBa¿øâ‹™3gž={¶¤¤]ý£4ðùǬÓ騃°°°wß}7##ƒ2þü˜˜¢î­> {À€ ø­6Iñ þhÙ²å™3g¾øâ 777½^ÿÕW_µmÛVÍ!5‡þòË/µZíÛo¿=tèP*v)AÙÛ´iÓ¦MY–a+›úû¹Þ{ï½;w.\¸Æ@ê× ýAx;tèPB Ãx{{7FŽ4êˆ'66–Ðܨ¹‘Úx¾Áý!I’——×o¼Qv‚–ÛvfΜ9sæÌúƒ Z.KÂStS´:!!!Ë—/'TÝEB~ÙŒ SÞÔÝ*E¨ºK€aQ•9Žãh¹ãèŽðtY*;{8Ž£âÊO(FaY–®@¡ñ¦ hu¨èw?¦ñ]ïÜ¡÷^húâûkyÐ(T?¨Aþä!,–AãAÁøFA0¾A0¾AŒoAãAãAÁøFA0¾AŒoAŒoAãAÁøFÁøFA0¾AŒoAŒoAãAÁøFAþ /×CýrëK¥E3H­ÿ'uÊë˦È'zíö~lì-Ë2Ïó¡«‘///_°`Á¦M›|||èRþâ‹/>óÌ3ýû÷§«÷ýñÇB^yåºzßho´÷ïé}_¸p ˆˆ T‘››ëááAlooo£ÑتU+wwwº”{xx„†††‡‡Ó%Û××—Bl´7Úûwú„·Ûí’$QÔûæ8În· ‚ IRýF–ŒÕÙæƒN‹Å"I’Åb1)WmW´ ‚>ú«_¶ <Ï;NèªÀ[¬fÙ¿joõ÷dÕÞÊÅH—½•ån5G"h³Ûí<Ã0 þT¹WdYfY–¶Y–¥kŒ¦Ô™:åõ NE3E† ³¿@EµÑÞ®½•Þ‰Ê >ù§Dh‚*++†q:´Œ dY®®®¶Ùl·oßNII—ú7o2 c2™l6›ÅbÉÏÏE‘Šj3 cµZaSDFF-&aY¶´´ôÖ­[„üü|»ÝN‹I¬VëÍ›7N§Íf3™Lê—­ìþNNN®©©)//‡d*öS3 “•••——çp8nܸ¡~Ÿü+¾óóóOž>>*¸)ÚÜÜÜ Çq nnn´ôd=<<à.˜ììlð7ÝØ6mÚ >¼¦¦&$$$77·¶¶Vý¥–$)88xРAmÚ´1TlžžŸ——WÿþýûôéóÄODGGµ®KÕ¿*Fc¯^½úõëÊqÜýû÷éè}Bl6[AAAóæÍ)Ú¶)Bqq±(Šééé~~~´ Ó!ÅÅŃ¡wïÞ0A…òššš’’’‘#GJ’4dÈ•_–€F£9qâÄ÷ßߪU«;w†*Ëkj†ã¸Û·o,-‹T111pƒƒÝn÷òò¢B¹(Š]ºtEÑf³=Zýþ®/Ûl6Úl6777­VK…IBBBž~úi///X Q¹IÀ ®®®cÆŒÑëõ‘‘‘uuuƒŠÞ7Ã0ƒ–$ÉÕÕ5((®J âf!üüüdYö÷÷'ôÀ²,tº=<<Ux{{à £ÑH‘lež‡Š^ÉÁÀÀ@«íéééééIhÃÅÅ¥yóæÔÉæy>,,¬¾mTÞ5ár¹²Â@ËCg¨¨ò¯Õoü)’MÅ~äǦÚÔ)§W6]>áuAWÒ˜Ýlºô£IPùã'k@¡ŒoAŒoAãAÁøFÁøFA0¾AŒoAŒoAãAÁøFA0¾A0¾ä±§þãè‡ò––BŒïÿI’Äz ¹ÿ˜d¡®Î²,‹¢n¡å([°·$I‰‰‰f³Y–eI’è}. Ú»ñŸÔAG|³,ËÕƒ"s+ ]^Qùi°¿š†Ç[¨0Iee%ØÛét^¾|¹²²’a–eËËËá(ÌÁFµ7-EÍ,ËÂÑHð¢1ÊÞð‡Ÿ:ΣGšL&.ËòÈ‘#}}}©xº?­=„(ŠÇíÚµëÖ­[7n„·T˜;//oÏž=&“)00pΜ9p|:MמÉdúòË/Ÿ~úéÈÈÈŸ~úiüøñuuuÛ·oïÝ»w·nÝà—RyvCyé:jƒeYA,‹»»;-m$˲ [¶l©«« Yºti```ƒ—opsX,–¹sçVTT(Ÿ_ºtIýñ ò®\¹²aßU«V©ßå’$q—ššº`Á“ÉÔ©S§éÓ§«<Á•nȤI“†™5kÖ+¯¼òàÁƒõë׫v"‚aI’ÂÃÃ{õê5eÊ”±cÇ&''ÿýïŸ0aB÷îÝÕŸÝð[”””¸¸¸('ÞQÑÌÇÅŽ÷Þ{²,ÇÆÆ¾ôÒK*¿*AsJJÊ‹/¾¸`Á‚–-[ž:ujêÔ©‡vsskXñ|cX¤I“&ÕÕÕ,ËÂŒÏóê7 Ã0v»}úôéYYY„‹Å²gÏG•79ùùù&L0™LÇÍ›7/$$dàÀjNè›ìܹÓËË«E‹qqqsçνvíZRRRTT”j•ƒªÞ½{¯[·nàÀÇ-[¶lÍš5sæÌQÿ¸ Zô„„„yóæ|õÕW^^^Tô¨Ìfó»ï¾ûöÛo7oÞ|òäɽ{÷ŽŠŠR³rèìÚµkêÔ©3fÌ „ôêÕkÒ¤IgΜ?~|Ãv­pçÉ¿*îp8ŠŠŠà:¼wïQýÉIÐW-,,LOO‡ùµÚÚÚÛ·oÃ_©¼Ú·oßîСƒ··÷±cÇzôèa4sss‰ŠwqÔÖÖ&''¯Y³fõêÕÞÞÞ‚ èõúcÇŽ½üòË?þøcYY™šç”A[^^^MMͽ{÷ªªªˆê7Ì(ñít:£££ÃÃÃ}}}‹‹‹ [}êêê‚‚‚!6›âçç×5g£èÕÕÕ¢(:NXAý]oY–ÝÜÜ–,YÂ󼿿ÿ[o½¥þV‡ã8I’zõêµcÇI’œNç /¼°`ÁI’Ô<ârùòå;wî¼téR||üܹs%I;v¬,˪îØl¶‚‚‚æÍ›¿óÎ;={ötuu ݰaCtttqqqmm­š{¨jllìâÅ‹7lØÐ¬Y3õ`ø0tèÐáÇO›6Í`0 0FojBÈ€¶mÛV^^®ÓénÞ¼yñâÅ4xÍþ"×h4Ç/..V[½¼¼Ôß“yK—.9s¦^¯ÍTÌfJ’ôÜsÏ%$$$%%mÞ¼YýØBàéé¹yóæ¯¿þzãÆÝ»wß°aQ÷’š¯¯ï¨Q£ n6›/\¸°f͆aÆŽ«þ–ªªÑhfÍšEѰ.À+Vœ?¾ªªjÔ¨QꟉ…ROž<9--íé§Ÿöññ)..~óÍ7[¶lÙàƒ|ƒëvqqÙ½{÷oý­úgQ`ÈCËÒ¼²‘`ãÆ‹E¯×«¼o¢teYž8qbll¬Óé4 õ/WÕzC–e¿ÿþûI“&uéÒåµ×^»téRÏž= !<ÏS±mIدI¨º®T\˜Š¼5kÖäää”––¶hÑÂÛÛ»1.L¾‘ŒN]pןE¡N3!Äh4FŠ6„A©yž‡þ—¥F£‘eÙÇÇgÔ¨Q’$=ùä“<ÏÛl6Z6´Jö< ¬åÀîoŠ4GFFFFF’_¶£4üÿM‚P8Jø­&“.ñõï3¢¨ÕéÓ§rOCÏž=ñ¦â?l…:Í’$A§»‘ôódq4¶:«låRñèväÏjupã ‚ Í–AãAÁøFA0¾A0¾AŒoAãAãAÁøFA0¾AŒoAŒoAãAÁøFÁøFA0¾AŒoAŒoAãAÁøFAþ /˲$I’$Q!W’$†adYÙ²,SqÎ7èÁPmº”+‡úSá(²ò𠇣½ÑÞ¿Ó' žwqqaY¶±´o°ÁËB\\\4 -šÜÝÝ5»»;uÊ5 ]>Ñjµ„NÇ0 ˲ðíö~<ì­ø„11Ñl61‚–ÁŽ,Ë,ËVWW§¥¥ :´I“&t)OKKëÙ³gçÎA Â'¢(jµÚššY–cbbÇqho´÷ãaoI’8ŽKJJâ‡Þ·o_º;yyyãÆ£K¶ÝnÿöÛo§M›¦ÓéèR~øðᘘ˜>}úÐ%;++‹2vìX´7Úûñ³w@@o2™DQTZK˜È‡êìUqg2™ìv»(Š šPXPgã +$•••‡£²²ÒÏÏ”«¿à Ün·ƒOêÒà¯Ô)[žçëêêÀ3‚ @ï›j{«Ü$Ù»þê¥j{â¿eoð‰jeK’IJ¬ÉdâY–å8Vx”ßGÍmÇq,Ë2 Ãqœ¢Vå²AÔ™ã8ꔃ= ©˜…€ÉA°4T›çyeÔI½Ùêt˰wý@{7 ø_+­ ÃX­ÖŠŠ Å.´Œ $I*..fÆét–””Тœa˜ÒÒRA òv» Ù,ËVUUY,§ÓyïÞ=‹ÅB‹l«ÕZ^^S´N§“"{?xð€eÙºº:‹ÅBÅ„2Ø»¨¨êl6›i‘Ͳlyyyuu5T^"«^µedd|ÿý÷3fÌHMM•e9::ºè*wIAAÁ‰'ºtéRXX¨ÓéFŒ¡òþ,40UUUqqqnnn555ƒV7œb±Xnܸ‘››Û±cǬ¬¬þýû«ß'’$ݽ{÷òåËÍš5cYÖÝݽ[·nê_¤{ÇÅŹ¸¸DDDØl¶öíÛ{{{«Ù*ŠORRR†ñòò²Z­-Z´ R¿l»Ýž““sïÞ½˜˜˜ãÇ5ÊÕÕUͲÿåàŽ;öìÙ³ººº  v,©¿ñE144tàÀ:vÒØl6•ˆÔðôô5jÇqñññ•••™™™Ê´¬j£„¢×ë‡ Ò´iÓN:5kÖ¬iÓ¦DÅ3›õã»S§N;wö÷÷?qâ„ÉdbYVý5°÷!Cl6[nnîÝ»w T~a‚\\\‚ƒƒoݺ•žžøÃ?¨|L¯Ø;22²¤¤„ât:APûpáŸpž¿~ýzYYYMMÍÝ»w“““©¸,Y–½wïÞ7ÜÜÜúõë\WW§¬ó¨¹7›Í§OŸvwwŒŒôõõMII¡eÎê»ï¾ãy^„ÊÊJooo*ÅZ­öÚµk%%%v»½W¯^>~ذa­Zµ’eþTÿ(Íl6B¼¼¼$I*-- ¡Â'v»½²²2  ¬¬Ìl6«?¾y¥èÇi4šæÍ›¿ñưd¯~3 #Š¢··wMMMUUUÏž=!PÔ¯ÜápF£ÑØ¢E‹ŠŠ Ø´¤þe§Ói08޳X,:uòðð ¥÷Íqœ^¯÷ôôôöö6 Fýiööòòª­­ Š5 TÜîp84ÍôéÓ«ªª***Ú´iC…½EQt:C† 1ݺusuuU¹½ÿß;wV>uww§â²”e922222’ÐTÕËË+&&>  E¼V«ŽŽ&´!IR—.]¨“-ËrDDDDDÄ£þQ¿½½¼¼!þþþþþþ´\¯×·mÛ^wíÚUý‚ùú¯¿oš–ÅbxÖŒ²iÙÊc}”¦´Ü¥ë"ÊöXм~é²7uW%L*[ciy–ˆ&ð.õËþW|S÷ ÅÐTlÕ|T6u×$@cµÑÞ¼lõß³óŸ}B…aðyß‚ T‚ñ ‚ñ ‚`|#‚ ß‚ ß‚ Æ7‚ ‚ñ ‚ñ ‚¨K€ü‰Ô?4« ßÿwCPõX xÎ%¼E±þƒùÁ«åá„KÕT…Ÿâá1FÇÙíöŠŠ åhJŠNéCdz÷ îúgûÀ²´>>*çÓù׿þ5//oÚ´iÑÑÑžžž§Nš9sæŒ3^~ùe* ƒü‘Ðk‰F½ ùFÒ—‘‘áïï?lØ0£Ñ¨æêƒf‹Å²hÑ¢´´´ÀÀ@‡Ãñî»ïNœ8qþüùêT®œ¬:uêTY–?úè£æÍ›sWTT´uëÖ˜˜˜„‡‡«M<ŒoæÎ+IR\\œbë6mÚ´iÓfÚ´icÆŒÑëõ/¼ð‚Ê/WÚ{‚téÛ‚ÀqueoTÁ y…À„Iyyùرc7nÜXRRòüã©§žºqã†jÏŸU‡cêÔ©,Ë9rdïÞ½‡Ú¹sç‰'V¯^­Î Yx¨ü’%K\]]:Ô®];½^¯ÑhÂÂÂÞÿýçž{î…^€ãÕSvQY–=|øpnnî—_~Yš^–e‡ÃáççwàÀÏ>û,//Oå†Çù… †ì¦E9Xýܹs+V¬ H6`³ÙòóóÏÉ ßÁY°`AË–-O:µzõê½{÷.\¸pÞ¼yUUUê,=˜cçÎÇmÙ²ÅÃÖ.[µjuäÈ‘ãǧ¤¤¨-ÁáäÆÌÌÌ«W¯nÙ²–[aî^’$AæÎëááqøðaUÅ7tCöìÙ3þ|˜çQ:S ÃhµZAš6m½ÿ~ˆ{Õv¦û uA0Œ5©PýîÛ·o?óÌ3k׮ݳg˲ê4Ưöe³³³,XÐx‚Ù†-tffæýû÷×­[×§(ŠcÇŽmÕªÕ‰'È¿ïoS `â³gϾøâ‹}Çqçt:]\\F}øðaµ)g\¹r¥mÛ¶nnn°mæîáâ”$é©§žúñljjN¯{TWW›L¦Þ½{×ß2Xÿÿ…,˃ º}û6Qßq'Ð@Úl¶Y³f­[·.;;;###++Ëf³QßÅÅÅÙÙÙÉÉÉcÆŒ9~ü¸Éd‚θÊsÐÏÏïÙgŸ7n\÷îÝ ='ɲ,‚Óél¼øæP+Ã0yyy¡¡¡0.æ8NEAÚ¶m›ŸŸ¯ÎúBØ ‚àëëûÐf’$'''Un¦6™L¦3丧§g]]ÚJ]]]Mñòòú­z2 `2™”4WUå†Ù±cÇŽ;:uêtóæM§Ó)Ëò¦M›Zµj¥þUî;wž>}ÚÝÝa˜ï¿ÿ¾°°ð‡~pwwWs|Ãeèïï%Šb‹-(Ú˜Ä0Œ‡‡‡N§Óétjoðn«V­²³³Œ…yž'„\¿~}„ ê¬/ô õz}AAA»ví`~Vé-fgg©sÜàíí””ôèÄL­”””ÀBUÍ9x{{BJKKµQ”eùÞ½{žžž0y¢ª ¢dêÔ©ÅÅÅÁÁÁÓ§O· ¢î»¥@ÛÂ… çϟϲlmmík¯½ööÛoR±£C–e³Ù\WWGËÄ7´—&“iß¾}………ŒmŒ:³ kî°°°Î;Ïž=Ûl6ó>žaAú¸ÿèìÙ³]ºtQíT›‡‡Ç;ï¼3gÎ777WWWZÆò:Îh4º¸¸øûûïÙ³§uëÖ´œÏ0Œ›››··7]{Y–½|ùòÕ«WÓÒÒiåmØ*˲üþûï †!C†Ì™3gèС§NÚ±c‡‹‹‹:G—ÇɲüÌ3Ï„‡‡?>++ 2=>>þ/ùËܹs›7o®¶ DaÓ¦MGŽùüóÏK’Äó<Ìzó<ÏqÜòåË]\\bbbTØ·š5kÖæÍ›ív»F£AYqu8æÖ­[W¯^4iÒ¯NŽ«¤cN–¢@©¯íÕ¯l»lÙ2å­úÛY–FãÇüᇮX±¢‘:R|ƒ‹6 Ÿ~úizzzFFF@@@=ˆº÷™‚ìO?ýtݺuýë_ ,8,Z´(66V£K˜3Y²dɼyó ´xñâ¶mÛò<Ÿ½mÛ¶òòò½{÷ª­æÇI’4pàÀèèè±cÇ~ýõ×0IB~Ùy’šš:uêÔwÞyÇÏÏOµƒz¥¤4îûV4ÓÒïVÐh4†®®7!$<<üµ×^k¼+‘op@ÛÞºuëÖ­[ן R¿­—,Y²`Á‚»wïjµÚvíÚßë3$„­[·ƒå>­VûÔSOÍŸ?Fj+;´:ï½÷ÞòåËcbbFŽ9dÈooï¼¼¼'NüôÓO+W®3f Þuù‡å8ò ëRq†2Ñ£úÇ•’$¹ººvîÜ>¡â™'„ñãÇ?Þb±H’d4UÞdÂ~’Õ«W?ýôÓû÷ïÿàƒ,‹‡‡Gûöí¿ûî;???|æ ‚-åŸßõÇtUšJå¶:*žÓB~Ù¡áââÂv•o„$)*****ê¡f¶Íà5 f|ÓÛTR7®|(行?˜E°~è5šA0¾µ'8L¤À27‚`|#” w°ò¿ìa A0¾AŒoAãAãAÁøFA0¾A0¾AŒoAãAÁøFÁøFA0¾AŒoAŒoAãAÁøFù¿/Š¢ ê?UEQ–eøSÕž§þ SOrE6ü ê—-ˆ žŠ«íöþ=@\‹¢È7iÒ„ç©92 ¤zzzêõzŠd>>>Z­ÖÇLJ:åz½ÞÓÓ“çyZ”ƒN£ÑHá8Ž–ÓëÑÞhïßO“&Mø¯¾úêúõë¢(RÑû–$I£Ñ¤¦¦¦¤¤lÚ´IEZy–eM&SffæºuëÜÝÝ%I¢HyJJÊ—_~yýúu§ÓI‹O´Zm\\\œ‡íö~œìÍq\zz:_QQQTTDW|WTTX­ÖÂÂBº\b6›m6[qq±Ùl¦H9ÇqV«|BW|×ÖÖʲ\TTDW|£½ÑÞ¿'¾+**ÈÅ‹eÚ¸téÒäÉ“©“m·Û‡ f·Û©S>yòäK—.Q'{ýúõëׯG{£½K{_¼x‘¯©©E‘¢¥KŽãjjjìv;¬3(¼šWK@[EE…Ãᨨ¨ðóóSÔª|‘äÙívð Ô_ý>çùºº:òËÒ¥2­©æ‚ÿ{«¼‹öþƒ{ß,ËÖÔÔð,ËrÇ0 Ä7,¼ª¹âDZ,Ë0 Çq™Cµ^aPgXI£«á{€³áO•ûÅ`i¨6-«—¿jo*Bð·ì­þ†ç!{«_<fíqÃ/C(„–鶇°Ûí4ʦ×'v»6ÒUmRPWm›ÍFÅV¼‡ª-Š"RÙú ‘,˹¹¹×¯_WºWT´Ÿ²,gffîܹ³¨¨ˆå Òl6Ÿ8q"##ƒ¢‚CöeggŸ?^yKKÁSRRâââàâ¤Å'²,WVV&$$в+YqEVVÖáÇãããi n¨vYYÙÍ›7“’’5ñ ý©šššœœêºM›6 *..¦å²„qÁ`Ðh4µ: \’¤»wï–””Pßнyófff¦ú§#²÷nÞ¼i2™è²w```‹-\]])²7Ã0æðáù¹¹<Ï«\6«”;!!¡°°P¯×Ó2p€Zß¹s'))Éb± †Ö­[+ÖQyǤ¤¤äÂ… N§ÓÓÓrPåi>¶Z­W¯^MJJºuëVzz:l`Rÿ•ÉqÜÕ«W333§N~ïÞ=åžL•Û;##ãúõëÇõèÑãÛo¿U¿lWZZzáÂWWW«ÕêççGËàÌn·_¾|¹°°°eË–%%%°ô­fx¥èíÚµÓjµuuu>>> vÂÂÂ!×®]KOO iÑ¢…Ê;VкxzzvéÒ¥¸¸ØÕÕõ©§žR|ƒ}zÓ¦M´ ä !{öì±Z­F£1//ïäÉ“*o2á"´ÙlW®\áyžçyŽã233333Õߨ–••qg·ÛN'˲‰‰‰‘jî—$&&”1„ (Š,Ë^½zUåÆNKKƒùú‡fTnݺÕÀÿ\ãý“&Mòóó#”¬§AX¿ôÒK3g΄ÉMõ+…:tð÷÷7O>ù$ñ ­NÇŽeY6›Í„¶mÛª¿Ô°zæíí-\ŸÆ××Wý&wssãyž ,˾¾¾jž6zúûûC¿ Þ²,+IR`` ÊGÃ^^^®ŸI’Vi@øÆ«~»víêÿŸ "FãÖ­[)šð¾I×®]/^¼h2™:wîLhØ  ,X`³ÙÒÒÒFŒ1`À*”s·~ýúiÓ¦•””hµÚuëÖ…„„¨¹¥‡~IddäôéÓwîÜ©|þÚk¯A ¤ÎÅpÂèÑ£CCCóóóaòÄétr÷ì³Ïª<¾ÇŽ»{÷nØ8ýnAÜÜÜbbb6qé’®]JõáEÊáúlÞ¼9¡gÿˆtqqYµj•RyõoW 2$99¹  ÀËË«Y³f*ï €=xžÿä“OÚµkwôèQWW×çŸ~ìØ±j^ë†±Ž¯¯ïÞ½{_|ñE˜vhÚ´éŠ+úöí 7ÕÙºK’4zôèùóçoÞ¼YIB½^ÿé§Ÿ†††6l*òíuº kòC^§®æ0§ #bŠ6üH’@K{ u:Ý«¯¾úꫯ>ô¹šKI’úôésùòå„„»ÝÞ©S§   •ï°m›6mêׯ߷ß~[\\ܺuëéÓ§÷èÑ£Á•ãÆÁÇJK]ÒµYb…º²+ €ÐG¡B9”ÚÕÕuРAtéeYŽmÔÙŒoD}Cl,ÿ˜Æ’ÆRÿiŒjÃ>7RãAlxEsã59xÛ‚ •`|#‚`|#‚ ß‚ Æ7‚ Æ7‚ ‚ñ ‚`|#‚`|#‚ ß‚ Æ7‚ ‚ñ ‚ñ ‚`|#‚ ß‚ ß‚ Æ7‚ ‚ñ ‚ñ ‚`|#‚ §8K’D…\I’†‘eY9|šŠsÊA'ªM—r¥àP*|EV^Sáp´7ÚûwúÄóz½žeÙÆ; ¹ ,KÑëõ†Í ...<Ï»¸¸P§\£ÑÐå­V«üɲ,¼@{£½{+>á322š6m*ÒEQÔjµÅÅÅYYY¢(ÒÒȳ,[VVVZZšššêëëKK;/Ë2ÇqÅÅÅà‡ÃÁq>Ñétùùù„œœ»ÝN‹l´7Úû÷ô¾yžÏÈÈ`V¯^íââÃL*Ê­ÑhÊËËKKKŸxâ Zæ|Àßv»=++«yóæ:ŽCSçÎ???§ÓIËe©Õjsrr!‘‘‘‡ƒÙho´÷ïa‹ÅÂÐÜ‚ È¿µ=”ꦴÕAÙúe7X¯LAì}#‚ ß‚ Æ7‚ Æ7‚ ‚ñ ‚`|#‚`|#‚ ß‚ Æ7‚ ‚ñ ‚ñ ‚`|#‚ ß‚ ß‚ Æ7‚ ‚ñ ‚ñ ‚¨žÿþHdëëëIEND®B`‚giza-1.5.0/docs/samples/index.html000066400000000000000000000031351477367113400170570ustar00rootroot00000000000000 giza - samples
    giza

    Gallery

    sample1 sample2 sample3 sample4
    sample5 sample6 sample7 sample8
    sample9
    giza-1.5.0/docs/samples/thumbs/000077500000000000000000000000001477367113400163625ustar00rootroot00000000000000giza-1.5.0/docs/samples/thumbs/sample1.jpg000066400000000000000000000175631477367113400204420ustar00rootroot00000000000000ÿØÿàJFIFHHÿáEExifMM*,ÿØÿàJFIFÿÛC    $.' ",#(7),01444'9=82<.342ÿÛC  2!!22222222222222222222222222222222222222222222222222ÿÀ‚‚"ÿÄ ÿĵ}!1AQa"q2‘¡#B±ÁRÑð$3br‚ %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyzƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖרÙÚáâãäåæçèéêñòóôõö÷øùúÿÄ ÿĵw!1AQaq"2B‘¡±Á #3RðbrÑ $4á%ñ&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz‚ƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖרÙÚâãäåæçèéêòóôõö÷øùúÿÚ ?÷ú(¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ ¯Mc,h f\§óíV(  û_µ*¥º²G儉¹É,:†•,‚õDÐ7·’y?÷Õ93ý¥7Ly1ÿ7©qºqp£ öÉ h®~ܲ*™í€cÿ<[ÐÿµO){Ž'·Ï¼-ÿÅTò)hØ)±Á#¡íJŒ†€}È ^àâx3Û0Ÿþ*—˜æx?ïÉÿâªÅª‹|PšÜ7p!?üU(KÞs=¿^1 ÿâªÍU…âfžÜ(óÅ¿øªiûz•&[}§ƒˆ[Oâ«wHˆO™‡·ÿ¯ùSÙC)SÐŒCØ®R÷#Ûã¿îOÿQÍ-Ô<Ë åÕHÁ`;½êÒ?î²ümÈ$ñÓ½V¹ aWÇ-4\Ãx¦'عEPEPEPdÏö”Ý1äÇüÞ¥‡7Œüçw?§éŠ®ä‹ÛŽÀÀƒ ò^® }£ëÇ À%GÒ~œ2õúúÿJQE(¢œh‰ËÈÜp1è?úù©)‘ D¹$dÒ»ì\ã' ¦½ÈO7-'oåþ—¹òÿ]ïµ§íòÌd·$}Éýjeî|„À÷Ñg'ýµ <Ë4QE (¢€ (¬ùµ7Ž[˜ÅœÃÉ]Ë+q8±çÒ€$$M× 1Æsô/Å\¬ûY^kÿ1â(ZÚ2G]¤—ã5¡@ØTr¸Ø$« cßëRS%]Ñ:䌃Ƞãè¤VÞ‡qšZÜÄWÝ…#Øœ’£|£ñ–ý1ýhÜ“¥FŸ¼}çî»þ4Œ|ÆòÇÝxÿJ—¥Œ›ýS@ÛósíÍCzp˜æhº¾µf©\6ÛX—i?¾~^ƒt.ÑE(¢Š(¢Š¬‡þ&S õ1ÿ7«5YþÒ™yÏ“éÇW«4QEÈÉŒä‚A&ŸQ¯8È侟Ҥ op¨ “3*»{Ö¤wÛ€XôËuÂ,˜’X´‘"€?ZuPTî¾T#iÁž#ŸøÕʧ|B˜É-$cž’/øÐ4\¢Š(QEQEYþÒ™sÏ“Çâõf«!ÚS.F|˜Î?«4QE€2xñ$mÔ©'ÐÿõÀ¥wÁÚ¼¹íéîj9Y¥ŒˆÇ¸o§¥Iª¨ÀëÎ}h ÐÖSNÀƒ!ÜöHªBŽÇùŒäþýz’ô (¢TÔ1äÄw`‰âÇ¿Î8«uZôd™£?ï­Y¢Š(¢Š(¦»¤h]ÙUGVc€)Ô×D‘ :«)ê¬2 UIáût­æ¦Ö†2á‚2õ'Ûí3qElŸÒš¶`\; ;v¬{§ÿ_óúTÞD?óÊ?ûäPfí2hÆNg4‡ïËßZŸìðÿÏÿï‘P]Y™>ÎRVÉ!zŒÏnŠljË«6æÞ§Ö@Q@Q@Q@Q@Q@¬laÓ­Ú þZ’Fö,y9êjÍPEPEPEPEPEPEPEPEPEPEPEPEPEPÿÙÿÛCÿÛCÿÀ‚‚"ÿÄ ÿÄ5 !"1VÔ•2AQ#$%BRa…‘¡ÿÄÿÄ2!1Q"Aa2q‘ð#BRbcr¡Ñ’±ñÿÚ ?þþ1ŒcÆ1ŒcÆ1ŒcÆ1ŒcÆ1ŒcÆ1ŒcÆ1ŒcÌï«]‡#é×,Ñê‘vÖÃg«:•kko–§`ö5ªU=´LަÉqVÑȽ[\s-k6•ÒÍ}ûûçóV§¤áîh¸Ñq~›pKÛü«A´åû¹Úîoómºö6šî{¦ªÀ¨®1W³†.§Ø±cÞµ«ªÛ¶_Wh*[”töô”JULzsÈ•fÍ×—Mjiu^Tªñ$ÖÞy‰jª7‚]á!=úé³ø·Ì"ðë¦Ó,öŸÉ‹?RõZ=>ŸT¢U$Rß‘ †D¦D¤ÆÐk›|…rÚÖ!zz!fµ¢)­µµ;uZµŒ+»Rµ÷w± H߯3\ØbÄÕ‰ñ1 ô¾HØ*‚À‰sxBò(h¢S+¡4)cÙãz’FHØÆÚѤPteÄu~®Ë[RÇ1銫lŸéIÏMùi<Þª v)*ª>“|ÍtجֱêiÙy „Ãeìkº·é/‹Ìzu/îc¦ÜšÛÌ}žR¾«I÷õùøv¹øÁvó—ÍGÝÖ\E6%7ý$Ýu—¤,*®ÉíµöF ×.(ð"‘)‰Îš°¥Zê'º¬¨X13ù‚f?:™@Ô2 .Yˆ±mY­‚&$1 Hb¤ÞÚ”žHºaÍ&Ðê9›JâŽtURÁ™¡Âƒ”* “R…ÔÌd‚i ÕEÚî¬z[ñùO&Ǩýî›rHW»Æ}^٫ɼü}’%áåã]³Ø5ÝUðg1é÷ŸŒyøtבøùöüÞú¯åãß¿¿nÝþù ã/œÙ™kiu‰Ô’ͧ(éÝ;Å-÷WGN¹Ô¸0S"Øê¿cóD)…Ûü&dòçBuÝ[îÿ‘Ìzuî/éé·%™šþ ñ÷Áõ_´>í‚…Ì®C×1>RQ.1ŒËî/ªZÕ^½štéZÚ¨‡M91Xü°~ø`~+x”‘z†¸+ÈÌŠD¢'ǼqÇZj³XÛ\—¦§Jã^‹ÓW§<®lëMïXêY"lוɣh­­eˆ4¡¨÷zô-‰•­¦¯X—ˆÂL¶û4zý’Ê5Á¨¤“8øÄý³kZD™¨­§S°Jý«] ‰[µ~ª6DнÊÏ©`DÍfH°²S„X¹@˜—b‚ˆœÈêbÚZ´l; Mò Ñ U`ë5aHìO „Kâ-å4KÇÓê(‚0De%Ô¯6¡!YÀBB4ÈôFkºµæW1é߫̾O³¦¼—ÙëõŸ£Ç«2Ïo® Ù00¹)‰’ˆ‰®rMßRx»4fîAÁw!w”ðÝ^Æ…n ¿ÕX^›sØ\VÁGÛ*­¤«pS¯—k­©×"Ä•uY%éš½‡Žšmlˆ©Æ»çÕ½ca*¬:[VhØÙ4ä+¥Tí #Ù)ò´+á=n€Zç´g<áwÙ ¥¶$;eÔnGƸש”4Éê‡ô€§ÂÄŲ"Íh”"é[,¯,uÃj Gæ¾@‹ßçÇ~{gêñLÝ=i#,…H ,nUˆ<DiSØ– Í‹Æ[Æ1ŒcÆ1™Öº_øµÌGÁ_ð릳ìó/wÈú—ªñêððõzû”Ÿ¶ ϰÀLL”Y8Ô)Ô·\7Ë‘Zfì‰þ0ÒM•&¾²µÄ-D-]ebPDÌ$œÇØ&½”…‡£¨=BŸQÝ0éÍQØVqžÆ½ûÜ›ª´kJ)zгZ¦ÄX›³K…‹‚'ËÜâ„K92€‘Ïy“!‰9™™žå13=æg¼ýær‡yì[­¹s@× €¬õ ýô‚S¤b,¢aacðúuY2tÓ«É4.WPÒУ2’P¯¾AébR[Z3@jlÞiMYõV¼!y~ñ‚#kÞö{ d½°AÜ&''2Àëò(!¯ž¤ýÖ„¤}vuV• SCÎA¬·_fÉSbÕ«ZÑiµ~‘I¶(Ý›Iç‡6¿G°äì,Dhúˆ¬[D$@H¼,›b"=rÌ|Š z3˜Æ2ùÏŒc?73Ô¦¶{vZÍŸ˜ |K´‘~Q‰íÚJ~Ñyý1ÆH$Ðùœ†Õw}ýåâ*­‚º­uf¤uµÀNÓ<ÊQ¶~ÕÊ6 ÂÔÈyÄîCèRIÔQö(ç¦-ØRçÈWbä•§³ØßqºVnö:CÙ"P1ûí/ƺ¬º6Æ.½J°ÀI[¶òðEqc?(y—݇إJ6’DøÁËU]ƒæA£LDÄÄÇx˜í1þ±þ“þSúLOÚÏ혿0ºt¸_׽͕õ¦In­`êMÕŽ'¯U›36©"Ê«-¡^NËj›&«LÍ$¯R{í¡¾›øžÇËê8îÙºO@ÐõÖëÔGýš£=7î[—òiÆ1—ÎlcÆ1ž&"c´ÄL¤ÄLó<ãÌçZᎭs Чwü:é³½°¢øñÉz®¿wotÌùB»ùJàŽ>Ñ9£fs®²¸êç0©ãcÚ]9齈?‹kâúÇ“uYr3{Óð¢Ç‘DI±‰~NÊ@Ìtlcÿ÷Æ2°Š$í2ë©]¿AÖ c*Ürû²F}ü``KËÄÂòÈc'2 œ’7»ŠÄÊÒ6Ó®Ú  aVü‰G«· P”¨u´Œ,“` ÙVx¢ºèûgr‰ðúmâJƒÉ;{’wß|èêÇã³úJ±Ï@ÌTR¢ùÊyUVÔ…XÊ]ƒÙÈ64µŽk6 …HSTækµª6ŻРÐv/­H¢E^ÎÁ•½*9E[¶)X6[©é¯Y_+cpátêÄÀÄÄÅöžs0)¥EGòm0¦ Àb½@}Û«¶‡ÑôQµ°u´lonv¯[Ø×­ñ•jsN·£Í yÔõ€êûJÊÄ?ݺ²›,‡Ý‘GrÄö +¸ÞÝ{רÜÍ º­;±BïW¡¥‘e §K¢‚J¢v|©%†…%kꮪe„!äDÇ5ŽsšÃ&5ÎkÌØÖ}üG¼-p+ìÆ3LÈ (ÀPä1˜÷>)£®j~ ¡U¾¨trÀXX1Ës®õ…)̘BkEƒŽ$–&È’Ÿ6v͇1¾ª:½qö17XÝÇ-éumzömWAkú»Â,(l Z®šÃb66 nZj) jxù¼;Qö({8íùAèO,8£ÜÕçWOez˜ÅÛôì@ßs ¤ìveG‡Í¨~•/ “Æ_9±ŒcÆ1Œc3u”GVù?hü™éÏM¬Â{þDrn«*[ÛþˆaLÄ÷‚˜û}óFÌë]b¿â×0©/OÊžtÚÀÖö‡È”%겉ðŸ/g¦B¹o®  $¼¦#4\cÆz1‹JØÖ˜)Jc¬HÌ̦$ˆŠ`F"ff";ã ³NÓC|‰ˆ±sUnˤDÑGe[Ü ‚# –ZÜët•à'1ë`~»¬¥¡B€ Í«¼d>Ç0@äL8‘žÐ@"Q¸6 ö"òèíBÃpÊUVHe%H ‚ f‹Œc')ŒcÆ3‡g´ÖihYÚn64u:ÊJ—\ØìíסB¢bb%¶nZb«¡Q3,kbf"gïÙóÕë7T,ê÷ê;meÕJnk¶u+ß¡m312«4í-µÞ©˜‰•µf311öÆ>y—ë¹OüH仨ôeÓ~˜Û×Þþ±®ø·é·‘u^UfŸ‘éµYû­È3Q÷ü¥9:}Wé¤6+£œñ…©Y¶)iöô÷w½K3lÒÓ²õ±T@”{I0}–%&B3ÃG§ër«[Æ’Ç^š¾£EľŸ×=«/Z5ÑH}SZ­:N­·µ\)×®û'ÈíWضÕMF…:ûÒ\V^3ÇçÿK­þ6A¿B>‡ýŒ£ /Èèf˜Ýw ç°ãÖï+ö9þ«Ú”¢ÿ¦Ví²'nù&ž\²´[·áR­{víØ–R¤ûKW‚lÂöºº‚³ü=³âAá²äÜÇŽÝš¥\×¶ÚÊ::VEë”YM]b&ßÊ„üK—ßråfÀ V&6búKŠ~Øãß×þ ­þ6>’⟶8÷ö]oñ±]÷ùñôãÜ]ÖG†ÆL•¸ ZAþ;î5ê*@ ƒ‡r¾+Y-{ù'®Šê7=­ÜkTªè@Ö™Ù€R’±#aœÀ,ˆ¦"&rµ®æÃEw\¦§´FALµX „œ¸/?IqOÛ{û.·øØúKŠ~ØãßÙu¿Æÿ¼å³,ðÞaÄÒÄ)ܣީ¶Œ•YlÝë–Z &šÐj ¦ aAH¬Hæ bf)]Dßè-hµH¯»ÓØs:…ÒaRS²¤Ö›'ª|6V°q”Ä IILDGyŒ»}#Å?lqïìºßãetÙûºúxáV4\6þ¿ejåËèÑ"_r£4[Š ¤‡R*v)46—uûØ!Ãn§ÁöQ$ÝôYCü}ûc5¼dvž­Ê:]-âÙì)ë©U½²5‚Ocr½e*ÍãJû-Emàv a,‘ˆˆŒ‘Çßß8ûÛòúòÆ1ŒcÆ1ŒcÆ1ŒcÆ1Œc3ž”t³Šôg„ëzÂÿ¬}?ª±²µVwÛ­"ÚË¶Û ;;Ÿ#o¶u‹ö­4i¡®$ë© }f½uµ”éÔ¯£cì;°P ØcÔŸRI>ä’Iþ䓌cÆ1ŒcÆ1ŒcÆ1ŒcÆ1ŒcÆ1ŒcÆ1ŒcÆ1ŒcÆ1ŒcÆ1ŒcÆÿÙgiza-1.5.0/docs/samples/thumbs/sample2.jpg000066400000000000000000000154401477367113400204330ustar00rootroot00000000000000ÿØÿàJFIFHHÿÛCÿÛCÿÀ‚­"ÿÄ  ÿÄ>!1"A#2TV”Ò Qa’•ÓÕRbt &%34BqÿÄ  ÿÄ7!1AQ "aq2R‘±áð#Bb¡²ÁÂÿÚ ?üÿéJ¼Á\anÖg}cÞ`õŒ•Ä¥îó2¦^ý^Ú(o¯â“"ÑÄð,ÎÉòØ~Öÿ“+þR˜É:U’í¡Ѷ•­¼ï$ ÇVa{ˆãYÄñw#)Ñ/ˆi nñþ(|?ùM%lûËaøG[þL¯ùJc$éUçgÇÑF›­W‘š^3]b S–("’2²ª»œHΩMòØ~Öÿ“+þR˜É:U”»F)Ö•­ÂÑÀ#º³x‰„³9¸áòœCÌO=ÔÔ÷ŸnG­Ÿyl?ëÉ•ÿ)Ld*¾MŸÎÌšnµ1åcQ˜eAþÒe™È½™›÷“\¶¿’Äærö˜»O¢æ’Üåcž>«IÊK œ“…–' "V^¥”© ±uJR˜ÅVꊬ»8y 5,³e‘d’ÍÒ0#G`Òºˆ‘˜ÕÝZWŽ0βUU«fäñÿjä‡þ|E•1’´¥)ŒR”¦1JR˜Å)Jc¥)ŒR•Ý>Ï…n~Ò±èÝ‹èQ!Ø7L¯„ñ× #Øá16KœØ2]ßÄ,0¸›k¼…©OÜ-­¿UÍÄ(ÒMž¿I¬ØnvÖá¡«ÕRµ±ØÞ²ý•éÑ¥ÙµjgóÛFò9èHU=>2™ºÜê¸îŸkÈ7—«êôºMuݶÛemÄUhkuÕä·vå‰^ÈkVŠI¤n„„CÐÐgSb±\îB׃Æd39[Ù;«%"·W̼íæM{Ìû)ûö쉥Xk}šêxù¶G³·M«´Œ½¥Öï¸dU¦ºÈež7žÇ߇“¯cd¶ÃcØÁj×s]Þ\ùfñ¤¨ÑÈ‹$n ºH¡Ñ”ú«+¬î •k•}¤Uê璘Ã}8^;ZÃEËy»—[°ÙÂÐÙŠ…m}¨õÉ( KÛ›°£Ï23×N|Ûír©K“Y©À=%¾)RÓÃß‘ò9µMĹSn e=Uèµ1ÌuxíY½9Œ£Ø†´¬õ¢üÔ©^àß´»ö\h]»i[7l=†ê¸ÝK·­zÆó;wŠ×í-ñ¸žÖmlâ’êÿ“Ç[¬6qn“D’I„Ø"HfÉÝ„Äçxn,òŸO·GÙY‘ÑÔ«£©!•”€U”‚HAÖmzë·õç‹M¿ã‰>»c¬š*|‡ŽÞ’9/énL$ËXîkî$rµ „qĶD3Ç$5ì×±^Š{5ûKp_i®?(âQÙÔítö!¡Ê¸¦ÊX¥Ùñûö#yk4!c¿«¾‘Nú½¤qB¶Ö½˜¥¯Vå[U ÓUº*«mx€ò,@=Óu2ÈÀ²XÝ:FI#uJê±!*]Õ¥xâ"ÉUV’@Úqž>ºo_ø³ÕíÌ‹ÉZR”Æ*·S’H—gh¤’&mK-4nѳG4–qM ˜å‰Þ)P’²FìŽXƒ%Uš£*®Î^1 ÷K,¡K:Í-š¤œ¡RLNV@¤”r2Œ“¥)Lb”¥1ŠRµÇÊéj^I""ŽK3÷’hH’zä“ðês•Vf  ³1 ª –f' $“àäŸ4IàIòz“û«8Ùù“¥³üí´×kê\*U!!‡ÅÄÐÌ«ñ˜ëÔÓ ?ª´u3)o#<·WŸ1Ú¿¬q©ò3'LA*Ëén>¡uwòb|@]‡È€À„“+3ðB<Í•¯[ªÈ‚Í€z:w²ÖˆÞBÑ2ÉaþE£’ãe=­aXÍÿÓ‡‘7ŒG—P oâõ•פ³éÔ}iÑ`þK5Ä'äe‰%RO§Q‰Õ‘Tý¢Và’ªH ØT®{ÊIúõþÅJùýí×ôüi"Kãã×Þu?óŒÊšÒXL OnX(¸‹ÄóÂ?!d‚CÒÅc¸Ž)Tº+Gÿ¯ú~u,6C¶®Þ·[¨â“9¬vk®à0æ@à³Û¶I/3+^u„ú—¡ãÉ4û{||ÍRªÆÍÈõשlîëâ‰:´³ìhSµJ£êlK:À¨EVÆÿl¿çÞÌÞ±qÞ ©9¾&÷+êëwMoa[O°¡ºÚëõª%µ6ÃU¯½F:=­bO¼$Jö{¤d÷t¥mÃ47Åqo,sÁB·›hR»‰<Ú}p&×oq®›ª¡ŠýàUº,’Eµâ)$‰ËÝF^'hØÇ5ÔSFY ·D±;Å*sÓ$nñ¸(Ì •VhÌ«µb Æ$K¥ YÐk¥Gæ2­ÌNVP¼ô¹@ŽÛo$éJSªÍQ ®Î¡£R5,³ó$‹‘¶r ä#+câ–B± .Ê v=ޱ±ë–Ùóø<¦,î{”þRÆâÇé,lóc¤·¾´ÆÓZÜÃ,7Ó()qkqmw =µÌÈÆuÅ)Jc¥)ŒVlQk$ÃÊK†{hÌF¨¦äƒçÇRÉG¥’Ib:ÅaVu÷Àm`bbŽ ¤ñíÈôåìÄÍ#Rx$ ü²'ɉfô§Cÿ™@GÍIñÓ¯Iºßðã±càcEŠ&úO`•Et²èã Ipb¡°iJTL”Å)Jc» ­©*ù•$Æ5hì,,‹Ê[ÏÌïýBêøiZöYk}‚Xc—;ÚØ»ÃX\•ø%{|g¶7ÙhüšºÂI"ž¡s­¤ÿ•Œ¾…îÏ€=VŽèHO¯Q7íbB$ƒXóɽ•}曹9&ÿÓ­t»{¼×g×lwš(/Ø1’ÅÚ=¦º…‰ç”lNõŒÖ˜Ø’^æîÅïP}ˆý—9÷,³Ë¹'¤º‰7wåev]F×’qº·¬\.<—õ¼ssªÖܰòLZ͹iýæìÒ[’S$Š|´ö«öØíóÛbµÌv½²Àp¸™çŸZе»y±F²Ó‚’IÄÉu{su|Ñ1²ù«ü®a­É·7þˆ‡‰t¥^î?Çt\SQKAƵý—]º¥¬ÖUŠ¥:èX»”†U2K#4³JÝÒÏ+¼³;ÈìÆÿñn)ƸF‡]Åø†‹WÆøö¦»O¦§ c,Ò9ŽÉ4¬óXû¦±;É<òI4ŽìªÍ íX… ñ%Óó$‹ñÔ…C9 ]‚•9ê’B‘ .ê Ui$ §Éãë¦õÿ‹=Vs°d­)JcÛͬßb¥ÇØã Å}¤lVÓKC)ÈÍ“lU¥å̪m"`óZ[C {©o¯T„¾KH,-,ºž«5Nï§gï…}ÒËp#eVï ¶b"K£ƒËÐÒ¨ž0ÊŽŒC«>Oýä)Jc¥s8{7œb¸¬mÍàSÃʪ±Û£|•îfhíшó ò« €j¹Ç8Ç%æ;Šœ{ˆñíç)ßßb”t|sSy¸ºê;™*k5•í]²Á|•† y#¦BšhkÆÒØš("O-,Ò$Q¨ú³¹UÌŒá«;!ç,4’ÆÃ¡¾MÜÚCm/ÿ¢x&‰¿ÝqÈàš«žÎ7hŒÍˆiUW©–ÚêÎâQÇÈCí4ü"I ùT¼ñJ-„sG$Wù #•Z9]U‘‚”1\ºÉœ¢×bç¾’ú§élôÔ¯Mùß}‡zÑωïxÒÞRœÑ}Åip£„Y>îÒû²Åd À]~ŽÂ½ÈiÜ«hªÇd}Úx¦`õË«+{·`ª+ÏbSÜ&%í=:«qô¥+ ã¥)ŒR•òªÎÊŠ9f`ª?{1à?ÞOø|s I$êI>y$Ÿ€ÌÙ~}’&k›éÕ~fK(RAòéim§AçÏTMÈ‚pk.õ—½XPó¬kn‡Ï‚P³ÌãŸ0$¸y¥“Ó×Ò¤¨ZĨqÀñq×ÁÝœ>Dþ}rjëa”}ÔUë±Užµx«»)ù¡x˜£x,¤=”¥DÉLU†…q5¶ÙŠx»wñ°3Fæ+œ}ܧ¬£¼†GN /WR2¸ #ê³FîýêÄw‚B½å×6UnðØÝ‰.Ž:^†‘zzž0ꌎÊêÆIÒ”¦1Uº¤o*ìë—a©e¤!|ÈH¤³–F?Á#Fvÿjš’ª­\›7#ŸûW$óâ,|錕¥)Le–¬{ÑšKi‹.>Õd“êiø¤ðWµ>‡÷Ÿò ~ꚟÄß :†û*Lr,Öºt€˜k7Í£sÓßX_!eAîa#ÞÁ$Îc–/ŠR•$±JR˜ÅVè±¼»^!cRìêBÌ„ŠÆêYÿÄÛýªjJª´ÓˆäsõÓzÿÅž˜ÉZR”Æ*·TvvvQ'RË!ï"Šeé–K8Ø…™$U+“ª°Hh^9‘dª·TWg;"û¥– ¬bB]d³1!S$|,’G“©ŒHÍ ŽR¢6c$©JSs lñëY®»¢F:ýÚõ€'¹áº ¹é–¹`ê<û©$e êª|«ŠX§Ž9¡‘%ŠTY#–6WŽD` º:’¬¬! ƒÈ5àÝT`÷‡_Nç|Þ’ÞáEŰ$òJ#üQrI,!xÃK|ël¾Ài >Ì\zϤީè·\—Òé6vöüwgÇIù½²K´¦šëÖ¨ÕÚè6Ëìš$½RîºüÛ ®ÅoŠÕº'*áçu(¿FXáºc™&îXT#bê¬ÑÊ‹ø:•eugosyQ;ÆÕµ‰—¢UúVò)"ÇÀ2+°(nÝyåb·ä°b8yBÆ=X¯KÜv¯µÍŽ7°¶fR °Ús ?êNúIPüQ…uõåíÞBâK»ë™®îe<É<ò4’7Ȧ'…Q¢/Š¢ª€\{Ký±÷§û¾-ìé£åòó.E­³«NkÊ(TÐëø”¡x'ÙêiA±Øl6›êñ<Ÿ³„ñëèQ¶Ðl$›bµ›_bƒ¦ôúÒZŠ}¼µÅx]dû´ Ò¼åH!$bˆ‰?¿Ú]™A@»¼czúÒ”¯<_Ž]œR”¦1JR˜Å)Jc¥)ŒUnŠí׈e’^é8’(¦^™ln£bd‘…rc/y &…ãš8äY*­ÑB¯$vzîˆeŒJK­Ñ‰ ™"ád$nýDČҔ ‰ØÉ*R”Æ+±õý_c´†ùîpY[tØ´¼µî¦±¸Œfl⸴Üã Æ¾¸2mí ^Îï+(úS3 اÇßÞ,.Ø´–Ú ãîþ€“üº|HÇùþÇûžƒùõÉt¶ÃÙŸé×Ú­o§mq0Y5ÌÒ1H¥±·`˜æ‰&‰ÇÕ}™"‘$CèÈÊÃÈ× ãï¾ûwù™¿]<}÷ßnÿ37ë¦3—ŽÒH^ÌòHQÎ:èy“À˜€ó$:ÜŸKÛm§žÚ}s2“ÛM-¼ñýpÝÜÐHÑJ…’6F(êÊJ³)ã•$pkWÚäײÑäo,!Ø Hž6Çdî. ¼LÃpÎ;¹Â;Ô1³OŒº¾··–Îîk|…£fÚFvþÞ늷Ö--±X¼Zc±Wy !™±–qY¶Nê[»™¤›)“1 ܬéÜÛÏ5ÄÖÖ–p€)dWtŒ,‘44Ô7Nåm„ãgDfS€ÂæsU“¸h¶Ž:ÆbÆ^¤cêdZ³²qYØKdW'D–Õ1L0ÜšüãžÞ´ì' 6CآܸIenÁ$Rù%,¢–&L¢W _cKm5ÍÝ&ÁŒb!"ÉÜ˜Ž’íØB"%‘+ë~ÐXÏqõ‘Ä î-Þ? g›gÁÇ…/ÍGÙ“»"r±bFŒ•B·3rÍx*²ÛID¹ÓQSÝñŸ±>¯úq“ Í¯Ô ýÌ@òdUÿÌÍܳ)á·ï×w*±Y0Î{—ܘ~ÀIG·ž {BãÓþs\/–B%¦š†~âÞ EÇÆÀ´âª 5WFã‹þªâá pfµ{s5R6ÛR&À²W^BÁóNswC#c™ \;“ë \‹dD¹ZŒ"Ïi¨¥"ÔK=59íá aÆÂtˆª7.ØèàMs% d ‡1G<0\޾ç9»¡‚cœŒœº7&'Ö$±HäÛF*%À¥Æ,å@ÔK=5 ½Å»Ø’ll Ceµý ÜxAq®H¶<«ã5AòذTL;W “4ã›ë›»Ù!ö9õ€ƒ÷}ɉõÉIÊ¢:û{ŒD̪Ô†„PB(–zj'ëÛÃÖ'ö ‰¢¹Wܸ_` :.)‚•J€'ä” Ò˜‘Ž!Ïîâ²Úó±\"´×tZ-ňøÍ'²Ð#é}X® ³…ªr¯¥¯9°Ñ-´ÔHç·„­; ÂMö(·.Y[°I¾D‰E (…ŸÆe‰“(•ÃØÇî3›ºMƒ;ÄBE“¹1%Û°„DK"WÖ ý ±žãë#ˆ9K=5 ;‹wÂç`YæÙÀ0cqáKàsQödîÈœ‡¬X‘£%P­Ìܳ^ ¬¶Òy';»â?b6}_ôâ7&›_¨ú9˜äÈ«ÿ™šÿ¹fSÂ%n4K]5õÝßÊ£ìVL3žå÷&„pQí炞ŸôÿœÄ— å‘ÑÉnÝˉÆå²×¶5€§‡§rý‰^áõΩFœÝ{*®`Š@Z•.Ã+½EëA-æ‰èZi¦‘i¦‘i¦‘#éC>ÿÜ“Ü=?g숅”2¯ ÷2o¶@€†Bp !2–²v¤oýÈÎçü¶~È“?®:f|„]„xü0»ðeÌò"Äqά?ï¤L2ܘaíÍ³Ž°É/òw§ˆP°ú­<õþ9çˆëÌóç›ÇÎþ.Ø̆ÞÝû•XL–/om­ÓtmT½(Nvî ¾ÚÂÜ‹ ®`ßfK˜+‰OµØêT[~ð"©)ŒõýEg0Þ;Ìæ[³ò{t)Jט«‡·˜ \ç*3+ €wFnJÔŠœŒ|rÍ"·§›À¸â:|$È›üzò®MK±!tâŤÐmαÁªÂ÷½ö5B¨ô'›V6¾,]Í §¼6æùÄÎwjå™Ä|üŽ4/Õïèm¼U×Pº*#ö-vPÁJœ1 QÈJiu—‡ÇaqTÊž–7@m\iVÅW­Z¨Üu–²ù’ªˆ+ä¶á9–ÊcÚV „é–IkSYÄi¦šDi¦šDi¦šDi¦šDi¦šDi¦šDj?ÈpÙØ;Þk[ghnN†Õ“–%ôk¼I¨‚`ÄþdÊ™Äÿz°ÔÃÙ°wºû˜wÚ”`×=X=°·c•—Ôãû‰âxÿ"Xi¦šDi¦šDi¦³ò×]ÆÞ¿_2úu]a8œWÁú–EŠ0§Gêw±¸ÿ”òˆZ~nB•h2‰u”„IÂ$å(Gø‡¹¦>OÙ› ¸†Ê>·äOPzÄ’Åžéö˜#(“™›=yF;qe¼rcdn˜,†ÆÙV¬Ö7íYÃ;ë›ð>Ÿ“îµ\êDÎØ¶d¨ôYÄ]“•ƒ+gpåà £bn¢)“‰\\ÙâK`”Éo(_ 3$‡% K% •9½®6`8èñ«.%=9 àŽv°/zà×~wO|˜ÁäÁ`Gž”x RÁaL Š k}ÌÇÔ‘c£·1”ðmŽÅû $ÿ‘~3Ï‹ù+ÿN[Ê™÷ç÷'Õ–ëø»¶òõqÙÕ¥–Åm,î_pmÚ·èA2ò±÷wá ¦?"*ú§ÉÇý>ýJÖÇÕO?–hŽÈÝ …°À -츈\¨fïYBÛ,p¥°\1K8h+ä÷-ĸkinJ‹kFº-5»]µÛa†°Bdªn[,­6ÈR늭XšXž6ìÒEª07ÿ! ÀcɉžÖØiTbÅR@›ªË}·ŠÔ nGÅ£ /@0*ö* ì]]…±0¾9Ûñ¶ðn>2Y|´³)tòJÞk#c'vYi‚,`|‹' ïØà" Í…É•¦³>}®Ü}'ǧÛßÛ†ëß×ßãÿöݽݿOn¿Ùù÷ú¿nƒ~ÑJbp¹0ö‘É7 1Z@˜"·tË‘¶L&¼< \¸a¬á¬µó]ü­ÏÓÏŸû8ð˜¾:­«.#µÑû9ºžšÇ<«ÔŸ{°¹D¬dåòmÂÏÆBÄHì»×—8$ÀÉTKŸÂÏôó+ƒ×‰‚ˆ(˜˜(‰‰‰æ&&9‰‰ÄÄÇæ&?¸üè=ýÁú Œ ¤‚H]XäŒÕÈ;Õʼnû¦šjÎ#M4Ò#M5›c"J{ë"…ÛÎ®Š¶ j•‰ m² ;·i„°>+Ñ’ˆ’¤dˆàb?‘'¿~éQœµ°’U@…²Ì@Ø $ æ–šÌ+ö ›…Éœ-``BÜ4 ˆ &R¨,°”1}Ê\*TÊ£N%rÄ_µÈÇÑrq\Ý%-Ãp a Rã-%6 "U`œ¹ei*j{û[½výøxMÍãâÿ‹µñ®îÝŽAOMNÚϾ«(¢6înÍ«Òé µÙ€–¡uäaϲNÎ¥ Bá‰ìÀs#½Šèl¸<påº }ºd¤Ì%/d÷Dà gxúä\È&DÕu„i±²âvUjU Rî˜õÚK‘”•Ô êªÔ¬.Ѫxm¾øöØÖ\G¿gòüGÌ·S¨¿#Â'Ç»ê-2¿ÙÛ›Ü \5d¿¢Ýï T‰Ccñ!"Q?×®Üî ´AÌlmÒ]K¨Ä[Ù<²;8{‡má€ødõ°˜éÜl%<ŸÊÆÈÞ¡#sÆÖÏ4mì¾’,ÇØA¶ ÷x³Ö…0í¶%bÒ®–ŠëRšÍxMßù°ùýÿ#ø|Ëo »§ù1Ÿ—³}áôo•«Õ4ÓMg84ÓH4ÔVÛÞ‹Ü›‡{`‡ÉS‘”Çáìe¬•#Æåî_ÅVÌb޵§¼¾K´‚øÛMcE·•^¦Ä7«ý_µù‘·=x?S_?;ñÀä‹å¥ìûÿróÓÕö~ÈëÇ>ÏgÖ¼…ß·?ǧ__^?—nüþ8Õ†£é}ÿ¹Ú}gg쀄Ì+Ö$9¯ ̰f– A4•°P°ÎÃHt²Uý tÊzûÒ`"Jo©ÀF¶ˆ1-€jÙë2Y€°FHc]Ý5Ò3#«©¦FVSÙ”‚±ÌÏÅÚ;”PæWõ•Z !vÐD›kŽÀ²‘ d’×2fV21¡©õGÓ3-DÄüLá2Ýrdë¡cr±z–Ú©é7KXVQ•–¸E´Ñª i¸d*Œ¸ë€­v›î|7ˆž¬„‹ò6?¿>cûÖn'‘Ç×L‚Âj‰ÒTǯ¥&E˜ˆÉB¡«H·Ñ&dŽþ’3í:ZΦ>«YÂabVdO¼Ìº^†I"éjäzLÀÁv™Àò¨úÑí÷{ïSEÝ2ÚÖ‰JäRöìxfŽši«84ÓHfã‹Û7ìC‰ üƒábC# Š`œq¬&gù:“lAÄ@É<ºÄ]×´P–¸¤`T³dÉ̈ÇA’þE3øüÌDÏüDÏ=|rÍtjƒÚ~•‘²êîF0s=8Ž¿’ã‰/Ç3?r~Ð>û×±=+Ü  ÛŸ˜ªz݇lU7°w¡`´î馲òöÝV¡ @ä-—ÃÇ,ûz¦ã€åL²@$K©XA–î2Ìj×w©n|©,Õ²:¢Õ±iEòÌNʪ,³•A'`fgiÕÇqs%‘ÉLv⨙wþ)¬Q7‰Bk}þËcÆ §\[0U@½®­‹¡Nµ%I˜VBÓ d.ßXÄK]*,œÒå® X ´Ìà ˆík¬î¯”½ ;çÃÆ)#£0Ú¨kf5¼ƒù;Ÿ_ùÀòGùÙö÷õtöý¡¹z{9õ÷ú5Þ½úÿ.¼ñÏ_ÏüjÃQÞC=ƒ½ÀZh"Ú;’ª…K3†»Á9nLÿq Sñü€£YK,tÓM"4ÓM"5ùÏÌó–<ñÁàêi¦š³8ÓM4‰›”ä뮨Ê$ïXMXıD^Û‚PBm]ZzÀ£¡Jx/ãδµ˜Ø—å+‚ÉTRˈãÚìC)Õ%¬ߤUœ 8œ±Q«ú ¬[}zƒrOoúHöš5Æ£³;qaœÐ4"0pXô"šÀLFG0Ë}`«b!Ôk0•YyÝ&ûÃTI eŠè“k´×ò>efL:½…o/mµk êÈ|ûT¥|E—DþòÅŠ¦¨e×* MÊ®i_-bÆ{4)+QÓÞA×» X×Ì›^ö&ÛFû 9#k˜ÆÌúSøX[!Ùòêňu U›'£à¯!µfÜ61yÍtŸ^ƒõ>ÝçoM4מXÔ_‘åãÝõ6Œ_ìíÍî6²±_Ñn÷–6Hacù“’ï˜Õ¦¢üŽÿãýìïKß×jgÆY~×O³i}„9E}ýŒžc¢„Ïó׉D´ÓM4ˆÓM4ˆÓM4‰JY÷þäŽéû?dHœ0¥’ÉÍy¸½P0,‡Œ©pl°Ô}!?¿÷)wås³ö@ÂúÄu8Íy HûÿeÞ¤þ§hü”êÃH4ÓHt2TG!TÑ씸dVÈ„*[I{+YXÌbS"$—%åKÎVÓ‰ï鮑™]M2Êv4A±±°|Á"½ŒÍÅ_+Õ¦^ ­z³ ®F 4Þ®¨D𴽕ê2ÅV®ÍL©PîP}kEV¼ºR½ŽÂCÌa(ì3ÁG11ÌOûLq?í:ž‡T´9zJ—,S’ª¡2}Êk“5p†ÊfÆ„€è7׆൫ØM´&Ís†"–å0yˆ54`Àâ ¢f'‚ˆ(þŠ ¢b5Ì‹¶\B±9û6O…“–ÄI%¨nØ™‰/Ž­‹®@°*Îã¯?÷ØùTêbÎ šÕݬ*’t˜n­&T)A8c„ŒºA„,™“޽¤GYB(HcL—“Y>°Ì‚¬S*ÒA²]cÞ“E”ÖöWÊY’0櫯:ñ_.ßN>¢¾ûÍr‹WLƒXíñ^ 6_²á“`©«Æšk§}ì¯Y„”Í‹"šé‚ë sŒT¾ç2 \Ÿ¶ÃL•Ynlôë4šöÞp ³’àrz“@äS81Ã$wm¡gbÛ" ŠZŠÑÉ‚"õÌ‚§²Æ{r} Œ¤´æb?¿ÇþçÿŸuêÖ]:Ȫ®ÞªéZW'<œ‚‚$ˈìeØÊb$ŽH¦"gX·Ì²Ö™…LOÄO®sn%öY­¡ ^!eì,ÙI-ö§£"½. —‘1Þ^!¢t*®¼¯Vlj±¨–`ª,kvU°ZåÈÀ±"Ȱ«|(Üš¥k ¶Â}ãûdî`»E5Õì¡Á,D”|¬›ÁXÄÝ`B¨ð ÿÛR»‹°C”4Wß×Ȉ€ˆ @ˆÄˆÄˆÄq1ˆˆÄDQ¯­\¹…8k±Ò‰ñ?ž³ø"Xi¦šDi¦šDi¦ºL|F:öRäœUÇÕ}˱ìpšë&³ ÌˆÉuã±GöfPŽdå!_øƒ¹K¹{~ÎØâK÷2B¯!ÈW“•IŒ¸V,d ,ØB ²×“Ñݸ©ÜOÜp·¹6FÌ~6Þ7kn úÚ5ò{ÒÃë6æÛÆæ) «J£ ,ÂBÚžƒj :ò A'íñî½`¼gäˆ0“ 8‡Ú“ÄDÁË``€. b4‰q¦¢càäÌ>õä ff|kähíÛˆ«s3ÞŠC‘‚ã´sÀ~FÁ‡Â˜Åo²­…vù"¬gÙ\핱 R‘« m‹v+¨•LbÑ/tÔDùéú~÷ý3ÁqãO#LŸëò˜«2ïâp?ª öÁ+ý`Q ò %qôýíû9ëÇ|1 œË'íNøŽ#Ù#ÉÌ)ãH–úœ5;öت‰nåbÕêÊîo¡a…ímÚ5† ZÁ“]~š:6,‘[ª« {×8Ö<‹„M{oNü°UÓøèñ§¦Å¢Z!ðª‚ݲ¥¹‚…*} ¢*&„ÈóNÿÁwšÖdÀÎ ÛÎ XѦ;X†±€,›ùX&X{“aï;Ôÿjã®”ZÛ>Gr®1f¡㟠åhÓ>¾¦2«WµS|–åNÅkú  ù/¨vxhê¶ÇWþvñU¹ÆisƒÑF+');€pøš†’Á  ÑN¥ÐÔ¬§R’@VÕ¤2–#n)vUÀÌ'°k+¤[É ±GêÆŒÊ&>£·eD (_B™ej²Jû¹ar>wkËX®ª [sÉ,°w!¶x—É¡Xn²¡[3jªCAse+}úÌUV.Å¥ƒ#áŸÍMßQ©]9§½ðôÀùR¼wä;9GûlMìŒmI¥^å–Ë×]¶ÎZÛ²3.K“4rÅc«!¢w S#‹¿‰T *AaF¯òÁ&õ°¥Qv‡ÄÌl,¿VR9m¾×·r²×ã0梺¨Xܸ`L«Šó1ìë"62^¸–£&&I±t«W±X¬iÒ¥_\kV\-bLaOâM®q“_aÇÛFë.M­32žgQ57¶Ù£QI©‰Þ©®êZƒÆ^H‚‚m‰i‰m_lËgbÅ–ö&we·´û'œ|‡„+N­ô­ò0¤W|X/ù+¶l2Òý*8ÛRrä|h;KÙ­ l#`«¬™O…ˆÄQ-^&Wƒä­…[xxÁ+ˆ3ÎÌù2dSWùÃõ=y¡°Zj<…‚IÆ;|D;¯X/ù" $ÂN!Áö§dñ0rØà ‚˜}FÿÁɘ| ëÈ@ÌÌø×ÈÐ3Û·;Væ g¼‡#Çhç e¶š‚?#`ÆhÄb·ÙÅæú £Æ¾BÅÈe°nÙ[þ<ˆƒ6œ•š„%­W4ùéú~÷ý3ÁqãO#LŸëò˜«2ïâp?ª öÁ+ý`Q–úò(¬¼¾E¦K\í Ë`æW!¢ÝìBõÚ™ˆüÃÀ!þà¢uÅ>@ÁD®>Ÿ½¿g=xñ¯‘¦#“™dý©Â¿Ä{$y9€åâf2³ê‰ëzi¦‘i¦‘i¦‘&§iâKv«{2-7;[Û•ËNšµ1[˜|†Bº)ÁB ­\ÀbžÆ˜±€UÎJ!´ºi¤F¦w&ÓÅn¢ÂNZmðÜ^㤄?Ô†e0ÖÕ{ÛAнÁVÚåŒJ˘!ïц%M¦œQìA£qøÄi¦šDêݨ«6« «[ DÉëd„‘À6"Vј˜5®:ëá±U0XŒV‡¶(á±´qT¢Ã™añSYU+Cì4‰¯t%!ís˜ÓìÙ"™Ö–šq~zoÏN­7é©«¶£Þ;y]{Õýh}#Oûi¦‘<·Ä7ööCjÛ=µ†Ü¸ w6åÁ·»C-6¶îZÆê‰Èd–ìᩎ©¸¶ÆQVe{‡neq{”`ã1îo©i¦’ªÿjì6Øttƒ¹'¹'êI÷=ÏS¼k%8Z(Îä·á¿RÊâp¸[e.a"hà.gïc…uä¥JpØÜ™I{Àa–«ƒ&F²¢5´Ò#M4Ò&[mbóYM±˜¼ ;»C+s3… 8Mûؾ۰ÆY& b³yÀAA6dºÄkM4ýb5¸ð½×€ÍmŒå—…Ü»Øl½N丷ŒÉVe;ÕHÂ`À,ÖsRd'eЄ¸(ÙÓP€ApEÜA ‚6 Ø=ˆœHT!)@“ R¥¨MÌ&´Åa֜ɱ…ÆÉL‘O3:åÓM^y“Ž#M4Ò#M4Ò#M4Ò#M4Ò#M4Ò#M4Ò#M4Ò#M4Ò#M4Ò#M4Ò#M4Ò#M4Ò#M4Ò#M4Ò'ÿÙgiza-1.5.0/docs/samples/thumbs/sample3.png000066400000000000000000000067251477367113400204460ustar00rootroot00000000000000‰PNG  IHDRÂtë4 œIDATxœíYsÛÖÇϽÄJ,$DŠ-˲ã,vœ¦yi§ÛGèô­_³Ó™ô¡3q§q2ÓÉLš>$qÒñBI–(.âØqû@ÙÑJÀ% P÷÷$ZÄÕ¥õppþç B0©Á«ÞcM`JbÐ)‰A¦$˜’t`JbÐ)‰A¦$˜’t`JbÐ)‰Anþ·’(úé‡ïL'xôøcµ(š¦éûþâvÆX><Ïkš–ìØç$BˆV­=yü‘gö Ñhœÿn¯×;ÿÒ²¬ó:ó}ß²¬)ïýú5[må«]úÆ%®xùòå{ï½—ø_Âu]QÙj«]-Íï4+qÅÿ¶ÚJÈŠ’y‡)‰A¦$’+i0°,À:áûþ`0H|xr%•J%žçÎÈ<Ï—J¥Ä‡¯þê6蟶Ú]°Fg©k4ZéŽIˆ‘ãNÆé)ŒFP.Ã`Å" ÐëÁ½{ @¢èó¿þ§?þÙt~:ìÉÈ5ªõQ»áÝ{²¡eåþ–1 WÒÆÆÏ_ÆÙ•ÊÙc¥¤#ßüa¿­Ôê'ß>“Œ½$Ÿž47´½EïA‘U_Ýy÷áx4بmŒÛ퇟þÊvû=»Z¯¯xcŒ˜$?'9ŽEÆé´ˆÐ/>ù4ð=‚¹­²!Ëò€m;²,¤Z–Ÿ(ŠÇI|øÂ¯nóÀñð²ÍêLS.ðÜ-ËÆÊZôu=­yÂëz”äv:‰Ÿ£7Á÷/̣ΠӔyãSWØÛ^@>u>tRÞ{!ŒQ|N†)¯n“¡øYfê9I(þáw¿Æ7„‰KèÁŘÂÜYõjž CpÝ…g#×ÊÁ½ÊΜ¤›ð†8ŽP¬VI„îÊ4ÂÌOÊœƒ{ „@SÕRòº¾ÚúI8Ä)’‰„,©6rÝÜ«( ¤1Ð0Ïs+ím;âüS'Jây Ò„dùµr£tŽw´hr $¨TR…ÞˆãÈê’ziì¶Ñ2YE| ùPÇ¥R¯ë>­R•˜„¶Í¥¸}ït 3Îá ²ëà^¢^‡ÃÄÇbž_U#¥?&’º]¸Ÿên¦²žîUMKÞ|â‡T·³p&†ï2ÛÙr>E9ª ‰³Œ$ŠV’UÂIÿزÖÎ6“<)©PσdWTqcÃ¥Ø.>$’å$=%·lïÈ“’`{;i•7ÆË•kײ@×éîeáäLI“Ð!Ùe*S5ÝSCð¼,ÖüO'É~£ÀÇqÌUÜZìï'9DÑ2˺Ãñ¸èþÿø¶·©og6¦i.ÉÁ%$úñÇö÷Ç£—Ùïî& ½yM[fV© Ë ®§£Ôj‹ØÎ‰á,"„?úèñ»—’$i+JÒp\ \F 윸Ž¿ÆÑ²€Ò˜®Øhš¶æj’ž8NU—“ HöS¡R¡¾—%‘W%MJMd¼¥¾yý¾ÓÁ÷}ÐõŒö²ÍC^•Õ*ÄM\#Ž#KqxxMC1E1.°i äXIƱOKˆã¨ !¼ BâöÙMüéìŒúK@nÜk1ŒØ¶®X­¦ló˜‰?ÆšnC˜æê#¤ÛâàÞÄýû±Co—Ö´¯m;Ö4ðÁ #lo‘ƒ{- €ëÆšsö×ë×ò—˜¬÷àÆc¨Vç•“²Ãú*$ çlöm6áÞ½Ì]×Ö¿7‚†1WÀ„Á;=¥ø£½ÓÓy¼¶ÑT5…l3Y» Ëge‡3¡;Z  3ïÚ¢,+‹Ó´Ó³†J€r执9M (Õ¾E¾?Ï éà ¯…l3YO%!Õ*43ÞÆ) ­9]^·;3ði4`o/sá-òíàN¡P€Ý]88˜ñ6†QêOùþLEžœÀÝ»)Îb¹íî0†íígâÅMý@0§ZùÃaú×n»ƒ;žEéi8Ý$†Ó#¤ñ¢h=£ì󬹒ÎòÈS=B¥’¦Îm·§Ä>–ž—¹g±-‚õW”J†7&™Æ‘ë&‹–"ßGwÓ\Ûn¢èVÈn‰’ TŒ¡Ó¹¾0‰SÕdÑR`š7EH‡‡ ªùkÊNÌú8¸3QU(—o¨ÖEˆS”¸ƒMÏüÚ+—6BàÅ ØÙ%v×Q€9¸1à8ØÝ…W¯®y¯ë8–ëDȵÕ¶ Í&<|¸¶y£›X+wN<€~ƒËW:„±Ólιˆsr"]IW·Zy5ù™ƒ›„jdšÍ ÏþBsª:gk%§ëç;ÚÂ^½‚ÍÍ|÷¬¥!·-Ÿ©¨×¡ÓÛI:{*§ª^¯G¢hÊcFËšÄU“—£ÑY?ƒËØvf¹¥ç¤wT«`@4gå‚a0¼éÌäõû‘çMddšÐjã€adýAGK ž’Æ–yÚë_Ûà\ bÃ0<ß H /Æ^zób€²ÌÕˆ$…{{ÐnÃá!˜c䇜}|<©«œ¬ù> ‚ âF¨ÔëA£² µ”Ë!@>>éÌÕÒ€æoH ƒðEãp³,G!®ÔªÏŸ??q›¦y~Îx<E±ðÖj ÃÐuÝâ¹ÉT—Þ?õs¹—Õ®Ö뙞§‰/‚]‹Þ¸­Ër¯K8C9= 4Í,—×ä“^zE=‚DÄP9~sèQ}ç®ÀeÛd,XW7TßÙÝÛۛȨ×=ùú›ÿÐÚǛƋó ­Õ†ÝýW-:•µ­ã£ŸgŽ)UW’ðÛïÿKg)kÐ{úô ŸR;±ïŽŸ}ùeâÕF܃~¿ÀËàÒ8è÷e­|ÿî­ÕüˆÚ ˶6Ë>­'3£'P;«zéÃq@ç£ò‚¼SU­AÂîä„J*•˾;~ÿãO“~u5gdÙ”Ú†J岪e™ŽUqïNeìÊ%ÿŒD*µæí±e-˧4¤Îµ-¹²«ë Ë_bÅI ÆÜö|ƒLI3°z'ùëßL{õŠÏ8LI3àxÑõoeÌ ,Nš=Baª’ü·¦$ØÕA¦$˜’t`JbÐ)‰A¦$˜’t`JbÐ)‰A‡ÿN®™”·îÜIEND®B`‚giza-1.5.0/docs/samples/thumbs/sample4.png000066400000000000000000000214701477367113400204410ustar00rootroot00000000000000‰PNG  IHDR®‚Pdô IDATxœíYsGžØó®ªîêûAE‚IñEjGžY'b=;ŽpL„þë×ùŽù¶Ã&vG¢$j´Ãáð¾.‚ ®F£ïê:3Ó´š¸Øhðh@ý{ QÕUÕ•]ÿÊüçÿJ(¥­Á=÷ëýÓ/þÃ?2 ×®]³, BØâ逛7o^ºt©õã·dlllddäµß+¥|öìÙñãÇ·ü4—ËAS©Ô†ý÷ïßÿøã›÷l¸çÉÉÉááaÿÛ Ã˜››ó¿¢Z­ær¹ááaÀíÛ·/^¼¸û–½ÂÜÜ\2™Ô4íµG>xðàìÙ³[~T*• …ÂÐÐІý›Ä­[·Hë7‡.ä$X{”ÒÏ?ÿ!ÔâéRJÓ4õ«_íJz6“ÍfO:ÕŠ( œÝâw:uj»O{zz¶ÜáÂ… {._¾Ü¼yâĉÆß¡P¨!jÑh4ú#„öÞÌÇ·xäÙm&Çãñ ;!„µ¼¼ìºî.DAnÚv¹RIÇÂBȱcÇcŠ¢´r:„ðç?ÿù ÎBø³Ÿýl53‹:u ¶®+üƒýv~ýõ×ã .„B¡·u]Þ!» Ö…À‡RzæÌ™V³.û‚V•¾Í¸®;>>^¯×ßàÝty´/ ”ÒááaUUßàÝtyK´¢ì©Wxúô©išm_¡ËÇ0Œ©©)Îy©Tšžžöÿ( ÷ï߯T*;ŸÛ¾(0Æ.]ºÔÕ;Š™™™©©©‰‰‰?þñµZmqqñúõë@€R(v>·}Q°mû›o¾)—Ëm_¡KÈ­h|zòäÉX,–N§¯\¹rýúõ7nèºþå—_bŒ_«àïnÑŒ¢(Ÿþy‹F….o„™™™±±±Íû/]ºäѧ¦¦,Ë2MSÓ´¡¡!BÈÀÀ@¹\>qâÄkíÂí‹€s.¥Ü_æ”}Í‘#G¶´B6!$kš¶°°ðÙgŸiš677÷Ë_þ²ÿÀîLLÍ\½zÕ71…Ãáö®Ðå­ %€píßÍ›ÛÓ¾® (ÊgŸ}Ö•ƒŽBzžµ°¤4¦§™^¯ÓÓn¹\yøÐ]]ÝùÜöE´6[íò.‘B”nݶ+ß¾]¾s‡†ñì‰ÅÜZmçs÷4ƒ¸víZwñ.áõºËÙ¹œW©œÕUS8Ž$‚EI§ƒÃãGKý+ ‡¥ë*›<òØÓ âÊ•+@ í+tÙ-Ü4|@H#»¥’tÑuÀ@zž°máyù«Wi"a>ÿÅ/Üb1véÒku…öÕÆï¿ÿþÒ¥KÝÉdG!=Ï3 ¢ë^µ $Á W­’P’׿ó{šLvé4 !4ÒhÀaâ–žrûº‚¢X,zž×öº¼qÏŸûÁt,!åØìÓªY{òb¼ÅsÛÎùÒÒ’³®°té®Þ(×+@ʹü˹•9©ŽëHÐ’ÐþA)=qâDWWx—”jåÕêæÞxO@ H)kVíìðé¯î„‹KÅZéäà-™ƒ»ºÂ~" jo Ø0ÂÂã.—WÎ9‰¦)¦éh ÁV;þ®(ì'aþSߎ£}îç1BWF>m]À­]:  /€]ÉèŠB—{2<ýõ×]Ãóa3BÎù(ÒßàÝty´/ žç>ºó·X"Ñ7p8–LÖUîoÚÄ‹âK‹ÛÅÂj0¨÷dûS½ýj Ø^P“ï ‘@B°ëlÃæ??_±è²Qà²0»âôº”‘´“¨Õª/f¦R™žÞþA=kJ´]{ÈBJ!…BJÉ…Bp)„B)%—B !€Ä1ÂTÊe"øãU$Ò.¥çy®ë:Žãº®ëºžçyž!ôs8UUUEQ”½§±þthß3ùõÕ¯ ]›_¨”K8Īf %ÂX,K¤$BúZHðJ`.k°ÍOIJ)¸ÜœC)ÄX$€RpÎ9BB¾o0†Œ!„ͱ– É`Œ1Æ(¥„ŒqW8¶¤ý^a’êÒÃñºQY\\œ\ÍgJÅ$!«T ) …Õµg kFpéÙIé—KÁ…‚s)¸àÜu9÷¤”ÑHB3à¹@HŒÄÊ ”ªeûhÕÀÕ ¹¦™œ;®ëøzž'@ŠÂB!-꺦iªªB=Ï«T* ÁSJ5Mó „t%ç¥^¡ñ;J)8„Àµk×úûû…ܱ«ÅÕºQÎçW5]E:¥ŒI„ëJÁ¥”HU¡íôV\J$ *àÅ2CDãqÄ4L„0b ¼Rå®»XÍ{Œèªn,BHẲT,™B_¼P1Vb16< ¥p„,Ó¬Öëu×µ0]W@¨ƒ¡P(‘HèºN)õ»„Ð ]×}±x‹¿tdz“(”ò+SÏ_޾qóV²§ÿ£‘óK/ËæéãÇßÿýÅ‹-Ë* žçqÇ®WëFeµXXXX¤”@ð)XëØ¥”B4ø58„"DÖaŒ©ª‚TR±j¦p(&AªêTS‰ @hXÑ¨Šž‘†!––€m£lF£@J€"* §´î8ù|¾Z­†¡ëz*•J&“ŒýhÄÅ«ªªëº®ë?M™Ø©ÍDQÇÆžp3ß7tòöwÿÂm+•¸M^i„P, ‡Ã¥R©X,F˜¢; -NÄã®ë‚µ2+þÿ" „A„Bcàÿ ¡¿@ \“XYâëØž]³Œ‚Y‰kÑ Xw¸€DU”„B8‚Jψ©)‰O&q$¤ *J(›EªŠ0¶m»P(Œ† ûúú‰çÜ0 Ã0òù¼®ëÑhÔ×:ßâoßaì( ”L£Ú£iŒáã#Ò®JbùŸ:ŽsóæMJi"‘8vìX$)‹Åb1šÉ†œ„]7B#ÿ]ˆ’Ѥ3BÐPáÚDÃ÷5M(!BJ&¯Ö“@DB Qˆª*͹iú¢–žçæó4®<î!dÕjn¹Œ‚Ad2™t:1¶,kqqqrrÒ/"‰D8çår¹\.kšÇuýàÛЖ——§¦¦v VW–ÿ÷ÿùÿù·ÿxçÁ(”ò׿þ‡æ·äûï¿?þ¼¯“7zTÏóVWWËåò–—õ§v#Æ­ãÿÝxÒdý©„®ç9žër×åžÇ¹k#½”rb~BS©~%4+” Çá¦ÉMSضô%×5~øAº®rô¨%e½^w@ss8çSSSù|>N7j°4MK$»¢çÜó¼DsÏu=EQÇöOó§_}õUµZýâ‹/å¨8ŽS«Õϸ™Æ€^­áÒ )¥Ëݪi˜ÎZçT3k³Ë³±P¬7Þ‹ kÁª¯)¹BÛæõºW«ù& €W,rÓ¤Ù¬íy6c¶bòJ¥Òøøx4j(@ ‘Hhšv€‡Œöí þóŸGFFb±Ø{Q²Ï­Z†éXþý—kå—«ó=±L"œP(‹#¤)¶SrîU«nµ*=H鬮𳳡“'‘¦a]çŠRªT ÃhüÂjµ:11¡ªê±cÇï@0L&“µºÈLL_Í;wîÜ{Mý¢¾. «‹†eÍc„£ÁpPy¥þ¥‚†[. וœK!¤ç!UÅŠÂ’I€R©T­V9çSªÕê“'O²ÙìÀÀ€¿B‹Å‰Dë+÷ {ʃ¸páB'ô™÷ª–aئ”Ҵ͉ù‰‡NPBƒŠ †7FpHé†S(HνJÅxö,xâ …X,FÃas_ùmî!§¦¦NŸ>ݨ+Âëééi¥Ôê>bO™ÔBˆO?ý4‰¼Ù{j.xɨÔ ¬»µãx0ªÐA`R·Xt+@m|<0<Œ(ŚƒIDÈ–Êï“'OÇùè£S˜D"Çßû›ð¦8PÙQê—ê¿Q†e0Â(¡ =P¶xƒ¹e9««Âq„æì¬šÍ"EaÉ$ Žãär9Ã0Ç[–õàÁƒ¡¡¡t:íï ƒ™L†RúNÚ÷vÁ¿ûÝïÚ;ó‡~˜žžN¥R£FA¡*UÏR@'&1Â"„àæQDÑu¡°,¬ªµÑQ¤ªR!VLH("„XÖš.Béëë[^^^\\L¥RB×ukµšªª@öÔ+|úé§Í¶ÛÎAHQ®WkV0—›#„ôÆ{#PH n™à†“ÏKÎíÅE¥¯HIt%!€ã8ËËËÍ*ËåòÓ§O?þøc¿S„f2™(ÛfOj°çyYbA FzA4Rί̗ëÕ²QÝò†I0¨öö"Æ”lVz^íéS¯V³—–|Ã%c¬¿¿?‘H4Ô‚H$ráÂ…‡úeϤ”KKKù|¾3ÙS˜ëwß}÷Új€ï‘€¢e"I…²l"K ]ž­ZF¡¶µ%1¦ööbMƒ«ýýå;w<ð––„ç „Éd2›Í6l „O>ù$—ËMOOû"²ººº¸¸Øp{î;”Ú¸%RÊ|µh¹v¡R(ÖŠÃÙa•*ÉPlkÍ_J§Pp+áºÂ²H8 1V{zк*àºîüü¼mÛ3VVVΞ=ëÿ’š¦e³ÙýèÛÒu}_ØXÒà Rx‚{œ«LÝòþcHU…e±TÊ^^&¡7͆4@B¨QâšRšJ¥îÝ»—J¥!¾4øuße3÷þÿó?v *šªìâý~ñâÅáÇ÷Ñ|B¨1ÕåžÇ½º]±ü" {ÜÓ¶“B¢Ó\«z$Dsß!Ô4Ò°ABzzznß¾Éd!BˆýÕ7àÏöùÍ×3ÙCýÙÞ]½ß³³³ýýýûHêÁº4x܃!„ò ¡@ÈåÞ–¶HàKƒªòz1V}ôˆD£Âqp ן®e_[¯ƒ‡êïï¿uëV:nHƒ®ëûBðg—/Õ ³¯ Û“ym¯ffffEÑ4m_´³/ ŽçB…”¹â²®é•n=òû¯^W2ãÙ3–L Û&Á \÷L2ÆTU­ÕjÕ”nß¾íBˆz½®ëzç{2ñÿýçþøã³¥BjÁ€º‹™áÔԔ뺉D¢óÕÆ @5¦Ø®£PÅõÜBµ 1 cÜHGߢ3ÆMSI§¥Òq$ç¸)j³4ôõõݽ{7™LúzƒeY¡P¨Ã•*|êÔG/ææêëyM‰Ç ¼|ùòüùóûÔQëKƒéÚš¢ÕÌšãºc…0²M‡(E”òzQyð€¦R@¢i IEiÄ¿@{zzîÝ»çÏ)<Ïs§ÃUläô›ßüæÈà¡÷}'ïŒp2Ãõ¥úV+yÃ2Vk%o[pŽƒJ2 1:U½ß«VÝW-­º®÷öþ¨oBÎ;w÷î]ßÞP«ÕVVV:Ù2¿øùßWJÛåédbWºÂ~T7€b”Õm+N<{ùC<s¸P¶ ÆAŒAŒ…ë’HÂmQŠšÆG?¯1§À'‰{÷îùAP–e!„:¶Å¿ÿýFÃA=´[ÇÚA˜aZwÌT4… òÓz5¶­Û+ŠŸÕ#lÛÎå!Í €¢(ã†4PJ#‘Èèèh6›˜¦Ùú"­ïüûßÿ>™LE"»®åÿüùs?Á¨“Ç¿V ˜@mwÍ´ìr£mUHVUéºRJ{q hžPTUõàö7EA-,,$ @½^ïLÓºu÷í `®ëŽŽŽŒu&CšPT€íÚK…¥R½âxÛ; dÉ$R”àØóóÂqì|¼ª$“Éf?E&“ñc$œó………¬‚‹âñH{š cìÂ… #y F¡ U ˨™µÕZ‰oïn†)©$D?yÒ¤vJ¥W€°§§§9¾ëèÑ£¹\Î÷é»®Ûîl´œ+ìóþÍ€ ŠëQ„ÐpvxjaÊñœ’QÞ¡$.¢TI¥„¶«ccn¹Ì_í 1ƽ½½ÍÁéÓ§ÇÆÆüþ ^¯wZ¨ ²M£½âàA1IèQÀÈàÈÓÙ§uǪ™; XÓX,†5&æ‹v>/^õM3ƲÙlÃÎ!¼páÂíÛ·ýÍb±ØQ?h`ðH1¿üì‡@'IèûB¥J$"˜ô%û^äæ*fm'¥]W{{±ªJÎí|^¾ÚíkšÖPJGFF?~ìoær¹†§û½ƒ/_üø»¿üí䉑D<öS³+l £ÔåÁ¤l”%¢, Bìû«TÕ-•üLPòêÊ9Š¢ø¶gSUU˲ ÇÃRJß&Ý  ŽÆO8Öœö FÆéùü¼åØ%£ºÓñ+é4„1V{úÔ«V½W삦R©fËÒáÇWVVªÕ*À¶íåååNPðþð‡cÇ>L¥’[v Ò¯z°nW÷\ÇãÂwEÔ^€ T­;V$Y,,Ô%„âm- cß ¤ôJ%D)›íN~pCµúc¼u&“¹{÷®¯I8Žƒ1~ïVH´C9»üâÂ_¯ÿͨ”¾ýö›Û÷J)¦&§¾úêO ÂoFX4f” fÅZÙÝÞ= ¡Ñu¥§GÉd$v.·Ai`Œ5{( „çλÿ¾¿¹²²Ò0I½/v¢‚ÑØôäÔã{7?øhòÑG¥äZ8Ñ, X,t5`š\¯&µZ+m»K$¥Rc|œÛ¶³ieø`0Ç›ªªö÷÷ÏÌÌ€õLŠ÷hw’Rî$ "€ë8„R‚ðÑk­¿7íK¶ëº·nݺqãÆÄÄÄ»¹ÝwO4&C'¦lÇ.;Íý B,™jGŽT=òj5oÓ*Ÿñx¼y9Æžžžz½î—L÷S4ßË«•Ëånܸ±“(Õ²åºÇÏ|2þøn4;¨«tððб£kÅiüâEÇïíí}W÷ü®ÁÅôˆ”2›ÈN.L¶é'ßm{¼ª²X 1¦d2n±¸–›ÛBÈ`hìyòä‰oy¬V«Åbñ-µe"‘ÈñãÇwJ‰‘BHBœó͵“¯^½Šºxñâ_–ºT¯TMcµ²j9Vª?ŠmýRZ¹œoy”œcMS{{á«sÅJ¥âû#|ÇyøðáÅ‹Âþþþ÷²ëŽBþ|wËb¸Š¢\¾|¹Q}âÑBÓD8ázn©VÊW‹îŽÎ*?ÂP}ð€›¦³i]ðp8Üüþ0Æ:ôÞ•†ö-Žãܺu«öºE¯Âd(Š:ÜsxauÑ´Í•jÁϧØúxŒ•t@¨Ÿ:U}üØ«ÕÜM ¨d2™æ¨…L&cF³³êÝ+ í‹¥ôôéÓ?‘5© & =!üpàØäü¤åØùÊNÒ€U•F£HQ´Ã‡…ã8…‚×T²¬+ ÍFÆ“'O>yò¤ÙYõöš³%í‹‚ëºOŸ>}ï³áw†BY,F<1>7n¹v~ǾE"8 Ñ(ÄØ-œ|ž¿ênð+B66!„gΜyðà¿Y(Þ±³ª}Q`Œ?þ`Ä+´HP „5#üaÿ‡¦mºž—¯¶Œ…PI&¥cëåK¯Zµs¹ ŠX,Ö\TÓ´ÁÁÁÆä|yyù]¾i{ª¯ð§?ý©ôjÈÆÇ/ÝÂ(Ó5àr/WYµ\{˃×Ü…NŸ6ÆÇ…eYËËÍÒà—kiž[¦R))¥?:!šøßÛi!³ÏÛ¦h”}C¾œW¨ „šÒ‚[.íÈëuky€µª÷ˆR%“ÁMNµZm~~¾ù”›7ož={Ö×+ !{ù9ç¦i†áº.çÜ7 øµõC¡PÃ÷Ñ…6)•ªeH)g—_pá õa„u5 1•²¡â“[©8««@ÊÊ£G£G‰®³h”F" `.—Û`\º~ýú¥K—|o_{Òà‡ÚV*•Z­¶¼¼¼°°`Y–ã8!)%B(ôõõ ú%j÷T·‘s~åÊ•obÚŽºmŠÂ´ÍéÅép œŽ¥5¦úÓ eŒ0‚Bà–ÊN±„¨>y¢öõÑX ) ‹Å°ª…s/^XMcã8÷ïß¿pî’RrN ̤Ӫª"BcR¸}ˆƒ¢V«ù+3LOOW*•¾¾>?Ö’RŠ1–RzžgYÖË—/ççç?þkãÎ역뺿¤Åæ()5ÆX$‰D"{ ._¾¼ßë¾)¤”.÷\îqÁ…ë g!…’ Q­W— KU£t(š R , ©jmlLrŽTÕŠF+†ƒŠ‚0fYÖÝ»w?ùä“f]!D ä««Þ£GddD¤RB!Äèè¨âäÉ“@ •Jµž¾]¯×÷4@\¼xÑ_µ­½+üÔBØžSw¬¹•—/fŽ'õhQ诟 !D) RÕ\©d¼jŒBܹs§§§gppPÑüƒ Ëss–®OårŽãœ>}Ú/ ÕFmú®®ðp¹W2ʳ¹¹¾D6©G‰¿<«¿†œó—/_nŽ„ÎårSSS‰D"“ÉøÉ6–eåóùüòr°\;¦ªj:n/6®«+¼(&©p" hE£²j”Sá8þq±^€1Îf³/_¾t^5M¦Óét:]«Õr¹œišBUUS©ÔÐйy3|ìXf` íàéöEAJiÆæ…„º´HP „‹¹É…éc}G›»}Jiÿfiøs ;Õ`pà·¿5nÝCC ]QhßðìyÞäädçdtìGªdã=ó…¥\y£Ò¯úÚ®cœN§:‡cŸ~êìÁŸ¹''õ™3göRkïFèåãïLÜßœ†å“Éä–}>B(9r$[+RLtÝœ›³šâ£vEWWxÿhL=ôì½É—>¼°a:æ¯E‰D*•J½^÷<Ï·ƒÁ-+BFΜYùö[5“ic˜èŠBGަ&¦ÊõJ4¸…‘†Çãñx#7i»ë EÑí|^iJÔl‘÷Ÿª×€ üxøÌÃéÇ;ÏíwÈ_júðC)DÉÐ{)å{‰Û?Õ@LæJ+{¼ÄØ-—ÛÐöºòí·ßvT…€ý·ýÇžÎ=Û¡¾G‹èCCÕÑÑ]u ¯ÉŽÚEQ¾øâ‹®â ¢Pv(}ÈØ1ë¦ ¥X×ùn‚á Ü*ê¦Ë{d ™m,·½¢.ð]FÂuE¡³ „Bˆv.õÒ ˆ1óùs¹›Åjº¢ÐqhT™˜ŸÜûuP °SÙâñ{ÿÊ.oMÑr啽+Á#GŒ‰‰Ö•Ç®(tÂÞXÏJi¯ÙQˆ±Àðpë³ý–D¡q9×q¬7–ße3ÃÙ#“ S{¿FÝ–³ôw…âJîî{f­ríÛoŽ>RÎÎÌüùÛoºeýÞ6S!å+´b¬6>ÞâóÚÉAUmlì)¯¯ö ¼ýÝ¿pÇîí͘Šî¸òö鉥ó•ÕžØîÖkÙVé8RØBLÉNÏ”P0ëUMÓ!GX¦yùÓ‹B€çyOŸ>››ÛËívÙ’Tÿ\îå^¯¡68èUw*6Èçó>Ü©W¨UJ…Réßÿòßݾs#Ë„4:À5Æb±!ä½W™;(Tq¸ËoŽukmp¿®:¿®ë;…¹ !<Î)¥ÜuÆ(ºa®o›'/ƳñÞ¨¾7Ó¾”…¿ü%þw÷ÚR½; !F)€PÚ •gj õAo$nc±)Fr3Ýܹ(„ñíKy´ „j6k--½öbBƒ{óIDATÀ®(t.~”ÊÞ¥Aëï'-¤8wE¡£©••7Ì⬼þ"]QèhâáøR1·÷ëØ‹‹òuÅý»¢ÐÑ”@Ý®ï5jBµ¯ïµ!n]Qèh ÓêÀµˆÖßßA½‚”òÑ£G>,VJùøñk—[˜Ç •õ`w RU¾æ˜=~Ç®˜žžÞûELÓlñ‡Þa L×u7§#ŒW mnÞcYVãÛý¿9ƒ³³³­ÜÞÎØ¶í/Ý“‰¥s¥üá ›ï¹_e¤¬ÉõzÁ[6sO¢°ÛÊ {¯Ä ¥|ðàA‹ËýíoÛNhfgg7|*¥¼víZóN)å—_~ÙØ#¥kTÏ«V«÷ïß÷?-—Ëcccm´hK¤”333þâ Uîl' RÊï¾ûn»f®®®ŽŽŽúŸbM¶í/¢üÕW_ !ä:Bˆ«W¯¶__áñãÇ·nÝÚÕÓµ,«yÎöp§ÅZe¶mogçœK)7¯v´ù” ÷ìº.!ÄoµÂó<ÿf„œsJ)À¶-EÙk3=ÏCëåÖ9àlkvÜ¡™Íw…8ÆbDU·<ŶíöEaWù0¥ÕüJ©:M?|4šîÍ94ÐÞ—v2ŽeŽ=;sö£Ç"¦{úì׿ù¨cŠÒìüÞ¶Ÿ3ÙJÒV×±&'§ ‹3©C#ÿöí¿ú/ÿ•’ƒV•zý¯·ú2á|Õ«çžÿÙßÇãIÁ~qß¼£»dŠ ¨WKšî°Üóþ…2F)©UJ¡HXWÙÄôK‰ð>jè;ʤ®µR±péÜ™'cÂñ£0ƒÛ6ë…B!Ö;x盿@áý§8K×µŠ}AûºÂ®p]‡sÁŪ×UMÛ/}æ®àÜs—1Åó\cÛ®KÙ™¼#QدHùøá½CÃ'"¡ƒ¿Ê|;ß$TÊ«SSÏ_οÞß¿ßéŠÂk’ÿÛ[étò}ßÈ[§+ ;!%¨&°ë£OÆüHúÿ¿«¿p ߤIEND®B`‚giza-1.5.0/docs/samples/thumbs/sample5.png000066400000000000000000000233441477367113400204440ustar00rootroot00000000000000‰PNG  IHDR®‚Pdô IDATxœí}[“Çuæ—™U}™+f‚@ $ MÉ&MS ˤ÷bÇnÄ>ì“ûO¶Ÿ´¿@û¸±?AoŽðã>x#öAÚˆ}2(KA™A𢑿¼I sé®Kfú!+³O^ª§èÌ>QÑSSUÕ]çËï|çdV5ÓZcÚ6‹c~c1\OÆØ,N”Mýˆo½õÖúúúÔûµ . ƒŒ1@àö•¨€.y×½š i—Ð@m·Ï”ô£ý׿øóË—//¯¿ö³ÉwßÛÛ{íµ×žzê©ï|ç;ã[NŸŒ‡Á ÈYp z³h0Û™Îܵ`½NQÛ× (z˜0]ùÃo>óÔÅ\[÷w¿üâó w×Z¿ûî»kkkËËË6ž•1ëTaA¹…· ¢] %h î-·b 0@=ƒ/uþñ¡ h`®ƒÓ«Kî8Ïœ9sëÖ­çž{îÀÆ_(˜ž‘ÞïþqàÐÀì¾±¿)¸]Ðà¢CmÃMسácжÔ\f½ÃØ\OL¸c¯×cŒ•e©”:°ñ‰‡r  tý(@ÁýÐ0 ¸ÒÅ"€3+ûÀ §ø%ë!êAó «I/cóóóEQHyðÇ9ÁPà@Ç‚ tˆú‹FÜO¡Àü®¨ÓƒìË}(¸uH 8·ìå´èA¨‡Í:c“CÀîîn¿ßŸDº<(˜OA“N÷{î÷~îûžûà@JÀ?Žö)Ê™‹MC °‰ÆCYíCA Zë………n·{`Ë“ :‚œ0XQ=óýGC†AƒË‚„"€ÅðS(ÉòÀŠr°w_W+¦.P+] ÷'ÜQ)Õëõ>úè#ÎùO r ô Äàà¯p¿»uáoqsMÐû÷„²mÁIa* J ÀðBÆ'Ÿ|rõâ™<ÐØÛÛ¿ýÕæ„;nnnÞ¸qCQ–e¿ßßø@}`Þâ Û’Æ¡! ƒ6¡àDe² HÞ"'ƒl‚ÊiOaT¤$f4ÄaãÅÕo=–ë u`¹Ç/œ4™<{ö쫯¾º¾¾¾°°p`ããÌ ÀÐKá  ýØÓho`È™¶§Ö>”ïE á«Øór›bdp{‡Eƒ‘£$硦×ë:uª(й¹¹ñ-5 9`ΆwMyäàx£»zIeDönÝ©|n€] KI»o€ôa¹¡.PFßD–“ïúþûïߺuëܹs' è[>è=˱1ŒagÆ Iĸq­¶ô@5È+'-•=ˆDK(ƒÉÑ𬰼¼¼±±1IËã“)ô,ôˆTt^‡½Äl D|bH–‚h3úgýJ]®C´ÂĉJf_Ý‘i5sR4èõÀ² gúå«Ó§OŸÈ B½h *‰”êiþ85YG "üÊü”ç]°¶½ò}  nGéÓ¤L£±_¼õÏ_}®“q·ï~{óö¿øz...nllL2ÅáxA!·á c™ ë+rÜg…¤TL ‹€q!ì ·+4Y`@öuj#³ÿr[Ö$d©é`|†©ñ½«g;¬4zlžÿÎùÅÉ/iUUƒÁàHYAký³k2`ÞF„ÜŽ+vˆü¦²@´„† <0¾øˆ7ð Ü-!H ‚X7¸£ Ü1…}+©¨7ÔCT®ÚˆÉ«ÃáÐ N†Ãáõë×_zé¥IÆÅ“&€`žÈÃÌ_Ð@‡šb͈v(Äqþ[”œ#iUÑ¥ ÜW—Œ0ˆ$‚;QçÍaÇqƒ7ÈIåfY–Bˆû÷ï]€ÈóüÅ_|àé*˜'E¤Œ,¢eáOÂù; … @À6¦¢Ï™sp06­¢…òŠ ëÊ?E‚ ØoCƒ—L2(@k]×u–ecܼ´´TUU·Û-Ëòˆ’ɺ®×××/\¸pêÔ©ÃîËlÉdŒmà)$ëŒIdÄ:1 c<‚‚£I`AÁá#•G Vù$ôã%ë ºª*çÐЀ–=7oÞüàƒžþùsçι¼½^ïÌ™3Nç@GL Ýn÷Å_äœ?1ôä)Çš€§ÖE 1Êb¾ƒjq¿Û.ÉŽ,…w"I2OÆ4<…ÜÀðúúWŸÜ½ÿÇWV¶öë_}¾³~íßi}ÿþý«W¯îî¼+++›››yžèˆ©ÉÆI„Il‹ƒN„ƒdŽÀ}ˆh¥$8qyR0RµHC»«(Ð2³"yÍ6.9>mÁËÇÓ ¿¡wùl_¨bµ‡ï?Ù¯?Œ±§Ÿ~ú½÷Þ;p¦ÚÒÒÒ³Ï>ûé§Ÿ>õÔSã[>Êd2‹F‚\QŒÕŒñ€dŒwÀXº'Y!ö(ü '8pA-;"*8j‚!´ÀÑ@mHÒQE_1(StaBI /¼ðÂy}}ýÍ7ß|ì±ÇŽ/¸_>Ê"/  IÁ8 ’,ÀRÜà6r_‚8•û )äŦ5 m?›ÙâX§rgª o²ƒ:DµquuõüùóÎ|Ç£‚º„r߯tzjæ"éã Ø@™€F FÐ@KCˆHšF²è]Fz¶ô½ÎgÐ#;£É§ó'÷3O… Ø1ûj@Q[2v((loo+¥Lð¨ Ð!#L?uä>bJz9óŸ\¡-Yä<í/ÑŠìžL@¤mSGÇÔö«Ánqã4ì»ÊN¨š÷e1‚QWØÜÜ,Šbqqñ˜ÎxîDƒL”„…BÆ0\v (A4 •5¡!° âÒŒ²Kœ#h_$ÂØ-AmŠê‰>0J ·¶ö//u€ý [û“²ÂéÓ§WWW'¬52Ë=^•‡Y„ƒ¶²R–z7I ð;Ú+}”@0áØÖ÷ ëÌt¹(ì't²€~#j ˜IŒª. U³­õĬÀ›|4àH¡À-º„ Új‹ÎÍÉ ŒÁzÀ1P`+Œ¯„8I¯ýÝ™mQä5 §1ií¾”©-kBcm®²ÑsŒ­v]¼™ÄŽ ÌÎS¥|Ì’yD2LÄ:1Ù˜z(ŽñA€n¤. ø)VÐ>¸6EZ"udØxá¦C@]¢r²' ¢ÆLYÜLådÛBAŒ N.7ZD""ÈÈÁ4d$Y!Ð%®'h0F¹Þ}Z"@JÐÛ›71rR;"(REèDÑ!© Æ€@Dˆ ¢Cæ£Ä Ìú[‡bšó´Š@@;zð®±6˜¸ÿ0 Ø„¤"-N4:$ut dR(ð,b¶»´?1º#k^ŠÒºAClPzœ,à>£ ##ŒqB<Ž*h©‘ªU]7»+ žæí˜#; (pËÈ÷±`£üÇÀ"æ šLrÎ ˜ j@A)hߥŽ*ÐâWDa%ö4R8€A„d%­>Ñ sïÝ· Øâ³F ÐŽ ¹?ÚÔÖõc§nˆ£C2LŒ(7¯\€spÑ\u­ ¥¡U³n0aðÁˆÛò‡_‹lK´zÀ˜B¸mLŸÙà2OÏ­"WͦËWÄf–š—Æ}ï&—¤ør˘Y-͉çà"ƒÈÀ88X À ” ``S` Ü#:‰Êˆt©ŠàÉ"àØ–2‚jÿ†Ëª²hÀ)ð+óñAûJŒêï¶"€ŒAp‘g༠ZCIhHh@1@ÙQÆÀ s0(€¶ BÏef‹ˆŠ:Z8ÁóaûAÚh!É­'W6æ~ !àvÎc¯'£o9•ÜC&åY&`p @I0h04þa ZƒqàZƒi(Ëé´Ú_8sÄÐcÊ:TÁÿø h“5l… ÐÁY§d³…'S׃näýÔÚ¶´…’P|0ˆ "G–5h0¯†”„ÖÍ:3—Õö{¸ü‚ƒ)hÖÄáƒÒZÜ/0jOÿeþ¾ð÷ ÌVIÔõèšèÙ8ÜäᎈA–êÐôZP2‰ñ'ŠD‘!Ëuuw‘w’`ö|HŒc>3 ã`Fmx¥˜iLE+ÐC,ºÌ?s X¾ö9€pk¿Þ™‰³fË «bòGt!Ú☴²B> ”SöŒ #Íïs0›*p¥! Ò*ðî3¸#% ÷o[|¡à4·Ö|ï ¸jæ7¬æ¸vðTÄf ‚îtzcÉ·’¢¡ £nÊ!²™#6JLÊ`ˆa”;(‚ú±Ì S`ztö È¨üÏF.@È Fl1=˜}« ue/ ƒ:xÊêƒØ ¡À*YÆïÒkLÉ@!ï ï ë€ @C)(i]nו†R^> €œ6Š` LÛ×v(sâéä—¢þA> ¦ˆld LCy›-‚ª¢˜ cÈŸúÀ5v+·qÁª„,ãP¶°haþuà0hF¬`Àˆ¨lëÇô˶! Ø·O͵р$É$TRV<´Í ‚Üï”™ÇxwB½ªŒÜ «³ÐM}¦áGÊÒƒ->j€ÎóÐö4mCÔb4ÓÉjmþnë ÊÿÊ’f'‘òhžR0ÖàŒ^èd ˆ;m)ÐŒ24f‘!ï ÓÏ÷Cø@[nÐjTfMûœ #Æa"€Eü“t¨ý>àæ}œË ìI|qˆ‡®Âf=J-¨2±Ô¥æc]žTÝ#ÝÀÁE“:¹ 2T%FÑAË&X˜-”=Ÿ}*ÆÒ‰®³€íµß,x£FÀš Á$Vt É ×X¤Ýhz6+(ä>&Q œ¼²±ëˆ€"ÌÀ£«(tÁ”‘‡J6S@Fô@sÈØÃ°oÙéÑŸD«d>œÄÈF¤¾àˆí=rë3³Üf`3KMUjAPuˆ}ßVTp—²™…ÀÀ`„@ÞEÞªÂJ„8q°}äÖ¼¡Àl‚~µäB$/HŒŒ8‰@ô +(I2œ(­ ìD•x4² wGnŽš1ÛW‚œ1;Í­Ðí5ªPÖ¨«f‚€ó¦ݤ‘ÌžÛ¡!°¸*J•Aðáml“1a8b kÔd¦ÅŒ2ˆ™„<bt%€3Œ%áÂ|†v×—YÍhêHœ#Ë‘÷ 2(…º²#:vOΛl³;‡¼‹¬Ó Y5ÙæàÄ¥:Z£!…µ¯±øÝ`_'eݔ̊ƒ‚”òã?žÖ¯°Ì„âY¬ÉXP‚ð;=üXÐA¨™qE3‚ :èô‰` `ÂG–7¤Óoj‘²B]£* jÔ50[ŠvƒÚÌ¿{)XŒA1éºV 15w]SÑZë>øàâÅ‹Sùa±™@!Èi‡Ž]ë$qƒF÷šÊÐ8Gdà=ðaš– .DŽþV0·„¬ƒrÃ=ìÞÃþŠý=MQ5Õ'ÃEA50–Šœ$¡ADHµ½ƒˆCߺ¹‡ÝÏô±§°Qà–€ííí­­­{÷î™çªÖG±ÍJ+$u" üma‚G…‡ P:iâ…M ÝtE­À9ÐË:ŒA+ˆ‹§ñ­ßï,üÎþø“lùR=à›÷7Y>8GU ® 5 ¡8šuf#õn²NŒ¦m–=¸ÁÄ“9Îg@yàj%€S§N-//Ÿ?~’ÇhLb3BÒå1õÅÁ‚ÎP‚]Ü+ó9fdš AAèf¬#9ÓY™AWÈzX>‹ËòDÿw_@¹¯öv¡îf×þÃéÿ²’ý¯ÿ™w%Ø¿ª€¬Á*HÙÌZPº‘rŸ*D›‘B§¶#j£m8€©6ºöl¤c“×v½C“û™aY£b° %…X^λ_5óP4N=Áæ¯]üö7ŸýýçZ¡ÛG•£º9×=ÛŸ¿öÌã¯,ˆxO¨ážbP›_rƒÖÐÜJ‡èó(B]Áã$ã°Ñ ôÞ¸ÙÜ'7q29>c ?ûÙÏ>ùäóoðƒÊúq:ÀRJIW ÒжSì ¾7dËgº‹Må±ÓGE Úùì>¿ýÊ Ëø{K/>¯Á¶þâÍý;×Åz½3/_Y]Co®É0oÊMn}6DŒ§ˆ¾]DâƒÍ4W³èºµ‡<¤M­õ믿þî»ïVUú9¢ÛÛÛ—.]ºwïžAÌø®¨Ådõ).3´Ê­™ Y—ØßÁÎFÑ[úöJwóKX8‘1]˽-Ì­e_½°|íüÜ+g^ýÎÜ–C±¥îþâ×|åô™ß]ž[B§‘Cˆfʃ‡oQÔ¨kÔ5îTøh6ÕÆIYÁ<*øÆÉw—––nÞ¼¹°°`Üä÷¤~ 2…xaÄ–¸ Ìjl©«Ïºß¾²ø“58‡Ü­QŸùÓÇžûË?š{ò©/~þÎoþö:z]±•C(…­êÁúûËO®¬¡7‘‰Ä'ˆk\I&H~Zº¨h÷ªì/Nià*l‰iAቖ ò6‘V`Œ½üòËY–µ=Çennî•W^#¦ÄD¹4. ŵd)îę˲´ ᬩ5BOBV¨†Ø¹‹;ïÜ~üì¹3/]ÞûÿÞßBYhö/ýÁw¥ì|òÓŸßüûÝåsÐÃzÙÎÝ:ë{Þí_Z[¼Ð¹÷e9ØmBÃèľ%Õ¢ò& HcÕò®°î‘õèÁMlV·AL,Mò*„8°%ür!káÿ¶A¦6V ×Ý‘2º‚ºÉ Ì­ ²FUa°‡;Ÿêî?ÞXù£.ý™øâç7w>WÛŸ×[ÿûýTOã‰k"[Y•¥6ã=\`¸­õÖ­|¥?·XÞ¿!PA5Ï|ªX®…}K¥Ü¯È½‘twI“ªH5zü’CüÔmVDÛˆ€1-c> ˜pŽÁÎ7TçÍMªF9Äî=|ùÛšeo.¿üÿó¥âƒõ­·?ì`Ž¡.±¼Æÿ“çõ°ºûA1܃ÈÑé¡.!ïÝËVçz È»î{8`äþ'Qä¦Ç¸÷A!ÉôžÉšÜJ/µ÷$®GÌ ‡²8º8HíImÈÐd:9½ŽÐ àMµ˜³æÑ%ÃÎô¯ªòÞ/æ.Ÿéÿ›¿>ûí[ÅoþŸ®vòS§ò'ŸÕy÷öÿýéÖ”„CUAîTÙÒ~ÞÍg1"uÔãµÿ3•m¡!ÀŒ(Áh©QÛKÃØTâ˜Ø‘>€‡†ÿàRÒ‹•Ì!a99@¥h¥À´Y$¤»ÇAAkÝýêöÜîO×þÛï¿ô±ñ:6ß—w¾ÚüÅ[oUÅJBd€,¢ây§È6žôcS‹!ý^3Á˜¸>Ví€õžÆíi»ÆØ D[/G*ÊRƒ:I±PKs4â{‰æ–rØÔ¡µ‚üÕÛúüÕ·ΫýÍÝ­½Myï†{¨Ë¦l mpi~nÞÜXí –¾Þgh‰q²€Ê_¤}þãš…€.pè‡ëOf3 ´÷ÓÊ(Þû]Ÿî¤ÇŒkP@@AY…¥ê U‰N;÷vدßÕåu‰rYƒ1;É9´„B©ÑÍ×p#^)R‹û}‚`Gíû>` h1#›>¨“‚]\W>h3ªè1A ÐZ„ ÏYà~xÍè€r‘5ݘ¬¡­Øl&Çvìl—!d ¥"Ïétÿ¬ÍÙ®–¿+ýË"ío 3ËîRœ0Ù‚"©LLµ£A§âؤ£9cp$4dEаwÊÚ'rpÑÜ|-%Ê!ªʪ>­3Ö•J Ú¤C°$é!ˆ&qö@mø{H; (Äq?÷}O™ƒÙuØ}“ÑÛª0؈Ïa¹ÌpGsÃ$Ð`‚Yp{Ó-ãÐU²€ªG£ƒÇxMŽ÷euK‡N‚BG’‡®œ0V@”y+ßyŒpÍâ L(ªw1ÚŒEŸhv™ýƳæž*n+T²F]¢¶7M˜#PLYâ.Né‰~þ$aФԴ¼œ²»Hÿ§"¦h³M&“W*¶€ÛƒÝ1ù^lôWct+KxPóÊG” ¸­(ª4겂2£‚r¦˜ç,%Ÿ9&K¤öuo €Ú²c ©«ñð6óºBŒ€1~M²Ú±BÉlÒ–´å‰Äéøè‘ÜbÂ=–ÅƪD]AVÍM5f.u[\a¯!‚ ¢}ï: i`Ù† 0›´ÍøNê6£_>¨ŒoÇ`ш4˜ çºõhæÁ[£)Œà@CÕ¨4¤DU@š9mv~Tü1b>\|f·»Jáä ®R‰“›A$»BÐ@G=Î8m¡ '9ºdt3aôcr؆¹[©,½iÎ"Q×હ‹FÖÍ\%§ÿégÖÑÆ¶X mï—þóùÙxà~0› +è–­{Ð-d@¡‹®¡ÜrHå ¸rÞs–,pnfdf<”¨ Ô¥Åö* ˆü-ýH‘ŠÃ·Û1ÙÒÌX©|(œHV€ÿ̓ \ømßÃßNÓz³@à zôd ÀV‹é¿ )ƒ tˆÌ=nu…º´rAB©ÐÓˆ˜ *b jmŒ"- ÷ …šô’XÀ¿ ®®àŒû8pqAùG‰0GÐଙ¢®µÇ ®š§ŒZtÛuóhO(Ë •½ÃN†¥Àdº¨É(TPBù:qtT§cwÑ6€E;5îMÅI‘Í •Ï–ð¿?ˆã¹ÿÓ­°ï2%hžÔÁHyÊ‚¹§¨çïqó/a…ÑÄyŒÖ¤$ªuiå‚ò@à"BL Ér5Mv—>hÜw7Ê€öÇmãEX|0¯d3Ba‰!¦Ð¸[ScDº‹Ó† —XöÞAìó´›Lr„F0o½9¦)¤TS_2Z¡–Í'éãúAIæÔ 5¹DÁ. á}A€ˆO1›•l¬}%%I®è Ɉä!-,JŸÿM³` #KÀ½æ©‹4.€àÀ<´×hÞ¦›”ÁñÒáLê{Eºxˆ6jÿhAøp¤v‚µB•Âô+®¯P¸î› b”ÿlmFh†µw:ÛÀ„ s‹´Rà Úe3@C)ȪB]£V¤/b˜Tncµd <©Iî]­õÎÎÎÒÒÒ8gLl“N~?”ÅÑ¡íËdz¸h?“d÷ÀTv¹£…fò¢V´}ê¿{8—´“Êe…ªD]x‰ƒÔ!êT¤oc‹@1q$–ÊŽ Á›/¤õÖÖÖo¼±µµ5¯Í*ƒ¨}G%.9æj N%Ùc|)‘Ò ÐÒ>}Ó©{js>ó–‘ 8$”Fí‡éÃqr4€\Úï)¤ÔZÙùŒÔ>¶€ó@lZÙhî¨ÿîw¿ÛëõÚcÀŒ  }bÐäŠh á?H`wwÞå)÷Ç„Ü,f.¼MC=Ñ`Ë îaf]YÂhø`Ì¢Zp@D’Âuú@gÔö˜aj´é° (  \°G^]]íõzï¿ÿþ•+W¦à³Ù•˜¨äFÄ„îžù¸ô¦ˆ2J)"¨à·YLYº©1˜v »˜i 4v €v%ÅÀIÖ2¢‡ }´-¸CÕä8µ-(ÀDš–*`/š³¹¹¹I~‚~B›aQû×Å]/Gø,Bƒ"€ùZšEh *’"É0 #tAµj3Ha‹º{ mI„ö!"£ÏC]NV[2û-ÐÁu˜‰¾›ÝÈdêO°Èœ5@eç¸Ê‡îÒ&O4+H J cŸ´¥‰îcd¾r ûœïy7–Žf(ÈTêFJèÓ’hpjƒDûΖ)2È#)-(HU2E ƒhä)iÒ'ƒ ŒI`/úÍ5å1o ¢ìœ&P>nàg ÂWñÃ=@œ ÿ5é`Š€ T]ÂЧ“üA¡~œQê2žx(¨€ÿèoi6AÝF‹Û:iŸIDATµp‹FV4‰2šDNÖ%ûx òˆ«F±€  ) &tª<Šß!>’ÉïCûH÷ å >c„ØcÁ/Éq\IÑ¡„ûPp óÂýÏ£"×Ò.¸\û{Ìà v?APPš\Æ!u65(h­Û:- 1pBænüIÚ A2pÀ:¤ëÓ²DP´ ÑA5Š1&’™a’<Jp £ÃÒ¸`øàP¿ù³e1 ÔÇü–˜º®oܸqõêÕ¶çÌV4'ådíjÁÛéÁLžVx«€‹úC T hâBE„M»íð…#Ûƒš¦{¥Pä°m*AEH¢3ÒœN4|ð08@ô|… S‡µG°ëÿ©1—#ÐrµÃGx¿¬Ïù,„y îÑvhhjj‹(q¦PÛ ÒÌJÚOÍU<¬õý0Ñuo °fæ³Bæ#ØmBä]—•´ÅD„{W¶tqåCŒ•@p(‚ƒ‚èƒÉKËcÌÔ]¨û¿V˜öm!(I¦²m´/)ŒÅÓUx;[hò/ôA Oô+hKÚ{VMÅháù릜™ñª ÓSv\*pý±@!Rad EÈEtÿR©  Á¿Î%”D!î>D²´ ™œ‘=b((H'6×:·#ô®w ‰“îwAà;¾ÃA@ ’Í!©" qw…aécýëÉ Æ†~wìÚJƒ°U÷Ks™mæº5#P0ƈê¤QvjAørKú¯t$EmãÂÞÄókET8Ÿ… (hYݨÇ_Q20îÉüÜVTsò¯K4tÄ ð·PIJ 7w—~ÔÂNÝ«gÖ_1=Ù1ÆŽŒ™bƒÉË{@×Ÿå ˆo„/é¸ÈhøP`Ñód’0öYÖ Ü0c5{?i_6ÎÈŽ(›ˆ@ߢÁý¼µñGÍ—t1‚ÎféÓÔ‚‘\¸N@r9¬i€ZüfaÇ Æj[¡ë[zÈ-¤•É!A^áW ¨%í7˜ À»‡éh@`L4|m“É6Ó–xKB™uIM¥Ä§¦ˆ’Ž€b¬dàp0#a8ÞTK\ ëëëÏ>û,çS˜}L¡`LY®ˆÌür5ó_éJ@þH¡Aù}ŽžšNPÚ©GGIÎ-b>CUUu]ß½{÷XÿRýtÍÄ‹ÒÆˆœ$–Á/U¢e²Í4' NZ0(ì£ó•I¿k¬,Ëíííùùùoh *2¨!8 Ê‹ˆa°¥I툚\Êp ¦H¤sZa~~~~~þüùómSJk³ù=ˆ)}¸ØL'®¬#ÐóU$¢X@1át"†@@!¸ï›ö¿ÙåoZók¾Œ)rIYÔ`*6e(0ÆžþùÿøÇ“ï2fªôLí¤œ÷Ê•+Ï<ó ݲ¸8“'7²çÖu@¥Ôõëׯ]»vöìÙé~ŒñöÕW_½ýöÛßÿþ÷ÇÏÇœºÝ¾}ûwÞyå•W&üß6›ˆ§…ÉM)µ¹¹Ùï÷www×ÖÖŽì¼Zë7ÞxÀïÒ¥KGv^EQܺuëܹsmw lŸ­pdöˆYcìè/Íþþþ;wªjF3FÇÙñÄŽ‰ ƒŸüä'Ç“¨•}C¡à¥—^ úS#{ôZá_í˜Ø7—þÕûE„aÙ㇜ìIEND®B`‚giza-1.5.0/docs/samples/thumbs/sample6.png000066400000000000000000000441721477367113400204470ustar00rootroot00000000000000‰PNG  IHDR®‚Pdô IDATxœì½w|”UÚÿÿ¾g2™Iï½CH£„.Uº MQP,ˆ½ ® +Öu-kÁµ7¤­ ‚" ‚”Ò{ !!!½÷ÉL¦ß÷‘ÛøÛçÙ}žg ºß½^óÊk2s·9ç:Wý\×Q„ü‡þC »Üðú­ÐXá?$Éír?À?EªSE¡þU?ÿåû_~¢(ÊÿîÿÿKýêýß½ò/Ïý»ù?}˜ËB¿VÈËË«®® ­¯¯ÍËË ðññéÑ£GNNN]]Á`hmmíÖ­›‡‡G~~~jjjDDį."„(--‰‰Q¥©©ÉjµÕÖÖFFF¶µµ>>ƒ¡¦¦Æ`0øúúªŸ;w.99900°´´´ººº¥¥% Àd2‡š6mZEE…Õjõðð8~üø¬Y³8`2™ôz}pppuuuJJÊþýû}}}…­­­ƒ! @Q”ãÇO™2¥ººº©©Éår5772¤´´´­­Ín·_î!ü§èwÀ €ÅbIHHΜ9c2™œNgffæÞ½{[[[[[[OŸ>íååÕÜÜìááa·ÛÕuiµZKKKýüü\.—Åbioow86›M¯×ÆöööúúúÈÈÈššÀjµº»»Ož<9//Ïétêtºôôt!ÄÉ“'ÍfsUU•ÓéŒW§ùàÁƒ½zõÒétV«5$$Äår)Š2vìØÜÜ\½^ïééY]]íããsæÌww÷ðð𦦦ÿÎêbúµ®ým’Íf3 .—ËjµªÂ@NN§×ëm6›§§§Íf3™Lv»½££C¯×ët:—Ë¥þΜ9“œœl4Eqwww:v»ÝÃÃÃétª“äp8ÜÝÝ-‹›››ËårwwWyÈÝÝÝn·ët:£Ñèp8 CGG‡úTºŸé—ç^¼”ú‡C½ãe½’~¬ð§ßź¼¼ôÿ +ü‡þ!ý>l…% *Ô7¿\ ¿ü÷ÿ=òÿ+¨³k³QU…ÝNI ­­´·c³a³ÑÜL}= èt,XÀ¦MÄÄIXàå%Ùâß9þ}YAÌfª«9wŽƒÙ³‡ädþüg>ø€×^ûõ‘:k×Ò»7§NqÛm¸\ øûCt4©©ôìÉ Aøú†^™~Ò%&ñïD.—°XD~¾Ø°AüñbìXáç'E€ÐéÄÎÂåõõbÖ,^<"¬V!„hlãÆýú[N¼û®hl7ß,|PlÙ"jj„Ãq¹í¿˜þ]XÁéUUbÕ*qꔸç¡Óýz:§L­­òà²2qÅÚW¢²R~år‰;:n4Š>6›p¹ÄòåBQ„¢ˆÄD±h‘øñGÑÐ œÎËõ£ÿµôûg—K‰×_ݺ‰qã„Ù,ÚÛÅ›o £Q›NE6t:+'Gôè!@xzŠÝ»;}e³‰Ûo—'šLbùra·Ë¯ÎžžÚ5Eôè!ž}VìÛ'¬VáruÑO¾4ô{f‡Cœ:%-ƒœ˜§ž’óár‰íÛER’œ¶¾}ESÓ¯OÏÊ!!âõ×ÿβÎÎ>>ÂËK¬_ßIX­âæ›-o22Äw߉íÛÅ? ›íRþàKK¿OV0›ÅÞ½bþ|áå%Mu™nÞ¬ãr‰ü|1c†P±bE§%ër —K˜ÍbÓ&QX(êëEs³°X„Ã!s:Å_þ"¶lù5—¸\bÍíŽ&“xî9QU%\.qô¨ðð ˆÓ§§*ã÷br¹ÈΦ­?ÿ™ï¾ÃåÒ¾òôääI;ßÐÀ;ï0g¾¾47SYIM ¥¥œ;Ge%?Ìž=|ÿ=&>>xya4b4âíÍäÉ45Ñ­øú¢ûØQRBZf3ãdzd ƒáæpá}úÐÔDX?ÌÍ7þûò?W¬`6³v-+W²c­­ìÜÉÛoóã2r0z46àã#v¹hk#'‡ÚZZZx÷]jjP“„Š‚¢0~]n±ôÏ‘Ë%Οóç EcÆh¸±Q¬['23…N'žxB8ÂåííâèQñúëbÌ/~øA´·‹%KDB‚ˆ×^YYòÊkÖtú|ölÑÜ,„{÷ÊS.ž8dˆxî9±k—¨­ýµ‘h·‹©S;ÙŠ"¦OYY¿·ó÷br:Ùº•¤ ÀËKûÊߟk¯eìX¾ýOOrrÈÊbýz äúöñ¡G<]¬_/jj¤}ºd‰X°@Ô×_ê¡ú?Òo˜qø°3F³ØU©»d‰6[N§ÈÏ<"E^ž°ZÅÚµ¢W/mþ>ü°ßTU‰›nsæÈØâ/ïõúëâ­·4¾QéìY‘”$âãÅOˆÆFù¡Í&†Õn‘’".‡‹Í›ÅóÏ‹cDŽŢ]Áé=&EÌœ)ŠŠþåƒô/¤ßª‚p:9q‚¶6FŽÄáà§Ÿ°Û¥ ö÷‚ÚZÖ­ã£hjÂhÄÇ£‘™3éÙ“gŸåèQ…¾};™ñ¡¡¼ð……X­X,ØlX,X,8 †› xzâîŽÁ€¢ÇرÄÅqÿýxzÊ‹èõ @y¹ü×baËÂù⠮¿ž¤¤Nwt:ijBÖ­£¦†·ß&=ý·éYü&YÁåbãF~ø·ßfäH| 8r„-[Ø»ƒ‹…íÛyûmΓ§xzâí  (ddðÁ¼÷;v8´´PRB^EEŒǼyØl8ò%/½ÄÉ“<ñDECx8ÑÑ\wýúuÒôŠBJ 6È÷ÆñÐCôîÍ¡CÜr ‹3aƒ<ØéÔÜ“={˜9“?døpÍ;ýÍÐo„`Û6n¹…0›ññÁ×—Œ ÒÓ™;—²2Š‹yá>û¬ÓY>>7(ˆÇgèPŠ‹ùî;Nœ 7‹EaÒ$úõcüx¾üR;~à@23 fͪ«©®æøq„`̦MãÁ;–Aƒˆ—iɸ8€ÐPœ‰ñôD\.*+yànº‰‡"(À墱Q»Q~>S§òá‡\ýoM6üÆxSvïfÚ4ZZ(*¢½]ûJ¸‚Nžäé§ùÛߘ8Qû6*J†zT*/ç³Ï(-¥½Õ«9~«U^aÈt:n¸AN§zÓ›nÂݸ8Ö>ìу{î¡[7jkùøcæÏçÎ;Y·Žâb¢£¹ûn6näšk4ÅátÊW¯æúë9t— !°ZµçWÌf/fÓ&yüo†~K¬ û÷sýõØl%%45ißÚí¬]˽÷’›‹›W\Á›o²~=×]‡^OPz=çÎñæ›ÜqË—ããða,Z¤ ’’¸çÉ=Ç“ž`00a‚f‘üáb4Ò³'€¢pþ<ï¾Ëþ@S£Gw 1)ŠT4*?ϼy|ü1ÍÍ8 Î#ðÑGìÚE~>§OÓ·/ëÖý¦¸á7£ „àðaæÍ£¶V~âtRUEf3}Ä;ïàpPZ*pw'3“Œ æÍãøqΜaóföíCE$ Ap0:#Gb±ðÆ8¤§"OÏÌdÚ46nä†44J¯^DEQ]Í# Ö±èõ¤¤p옜æøxiOÜz+Æ1{6qq’Õ~5¯ÞÞSXÈGѽ;žž2ʩҙ3Ü?11 òÑ¿ V‚S§˜?ŸÂÂNŸ×Ô Íͼò _|!'£´«UË!!´µ‘—ÇÏÈtø9¥Ó1a6o¿-µƒJnn\=:ÉÉàÑLJI“p¹¸â M¤wï.oÝ¿??LDµµ8lÛÆþý\wW_M@€dOOfêT ,Œœ^W_•VíÅß{ú4uu<ü0ŸÞ)6uùè·Á ìØÁ!ÄÆRTD[ØläçS]Í¢EìÚ¥ÜÒ‚Ù,YÁåâèQ^˜^x¤$>þXf%ôzévz=W_-¥‚ÃÙLK TWÓ¯ß}‡›F#^^xx’Bp0N§¶ˆcb‚«®â®»ðóƒ_àÛÚøôS¾ÿžÛoÇåâ©§6Œ„̓8ž]»X¼˜W^‘窴s'Bpð O?ÍÛoËøæe¥ß+X,¼ÿ>øƒ>»Ž±X¨¬äèQðõ¥©I.h—‹†BBhkcÍþö7„ÀdÂá <œÇ§_?þúW\.m|].jj %'‡wߥ±‡ "‚‡â³Ïhi77y„¥K1HK#1‘øx˜?Ÿë®Ãhüû?¡½«¦M“ŽƒJBpæ ŠÂ¶mxxðüó2;ÕÚ*}Q`õj’“Y´è²C&/7+ÁW_ñ Üx£”“îããCSK—òä“\ummqꇑ•Ek+ùùüõ¯dgËë46Jùl00q"={²jnnTW““þ}“œÌí·³w¯\ñ@Ÿ>„†2j7( C‡’œLr2RSÃÎètLŸNP„…iZC}c21s&Ó§Èóϳn?®ù&V«–Âøæ¼¼X´oo 5çHž}–ÔTf̸¼FÃåö ŠŠøÃ°ZÙ¿¿SI‚ÍÆûï³u+99ètøúÒ»77ßÌ믳};f3_­Å—«Uúl€¢ÃôéìÝËÓO³r%……8øùÈM7i#Þ«Š¢^^L˜€^O÷îÚ•ûöeÜ8víâ¹çX¹’¢")Qt:Æãí·¹õV‚‚èè ¨ˆÜ\-âÌynS99Ú¥>ûŒ7ÞÀl–ªü¤ºwÝ%Ü—.«T°ZYº”ÊJ€o¿åÚk1™„`Ó&>ù!øñGÆŽÕ&O¯çôidáB®¹†mÛØ¶–l6ZZF**Ø´‰ü|/¦¡;å¹!!( ©©ŒË?LL @X™™9ÂèѨ¥ø±±ò”¸8nº “I†8wíbß>221‚gž¡OÍ&hi¡¦ ²’E‹xâ † ¡¼œæfí÷zy±gññ´·sÿý¿Í›IH¸ŒFÃåc!ؾwÞ‘ÿnÜHI‰4æç¹çäâÛ¶Ç×òû÷óâ‹xzbµ’”D÷î\s ;w²aV+--üø#[·bµâîŽ^ϬY¸\ìÞ  Ó1u*§O“š*] EaÔ( 5Jò\XF#&·Ý&Ϻh%ØíòÁΣgOª«±Xäû¶6žy†ÀfcâDRRˆ—e6>>´¶’Í‚¿VV+_}ŬY—Ëh¸|¬PQÁSOiˆ´övöí#)‰êj}TÚq@C99\qÀ¡C¼ðv;MM\¸@¯^ètDDpãLœHa!/¿LE…<ÑéÄáÀhäÆq:ÉÊÒ :ooæÌÁåÒ&#)‰o”³øúÉôéšx¸X =~<3f—Ç?›Ë¼yBWV&=R—‹ðp&O&!º:Þ~N–à©·Û²…W_¥OÂÃ; È©S,ZÄàÁ\¦¾—‰ìvÞy‡'ä¿ê}ý5S¦ðÜsw*kÜ·Áƒ9q‚çŸ×‚¸GŽ‘!s8س‡övî½—Ï?—ªÚåÂl&$wwæÎE¯ÇÇ!°X¨«£­ §“5k°X°ÛÑéèÞ/¾ 4”À@üý¹æRSµVÙodØ0ôz©ÔÊÊxùe¦OgìX ‰eôh¤{w  e8á"Fhmå‹/hhà­·xæM¨¸\,[Fi)«V±dÉeIV]&lã®]Ü~;$%@x8Em-ÍÍttÐÖFCƒÌ!Ýr Ï=G}½¶ŽÓÒxõUL&,¾ø‚¬,bbX´E‘@&«•G%- DU¹¹TVb±àçÇäÉ|ñ…ô;zö¤O¾øB^<"‚ädÊÊHO'>__–/gð`RRäúþøcöï—ëõL›FT={âá¡=áòå¬XAx8ù ÑÑòÃ={˜7@QøäM%åä0p f3aaìÚ%CÝ]K—C*´´àëËáÃ2°ãæ&Aq1Ë–ñôÓš²TÓ9UUñÊ+\¸À™3ääP\ÌÙ³TWããÃÊ•œ< PQAC‘‘ŒCr2_|ÝŽÓIu5‡“›ËŒÔÕI/ÎϘââ8 %EÚ( W^IM ……b2‘–Æ!A.\¤zõÕ¸»³f ݺi1ÐÖV¾ÿ ªŠ7ÞàÙgñöÆnçë¯åBðꫤ¥ŠËÅúõ˜Í55¬XÁ /t½`¸Îä±clÙ‚¯/¾¾èõRÅ®_ÏÚµœ8¡yYêWë׳nŒÍý÷óÆ|ò Ïz÷føp† áÜ9ví¢ ³™¶66n¤¢‚  &LÀÍMNŒÃ^Ϙ1I÷Ýh¤ÍQŒ‹CQˆŒ¤A7r$ÔÖâp (Øl”–âæ&Í• 4#æøq–-câD ¸â ¢£‰ˆ 4”à`,¢£¹áìv鑪ú«µ•˜Þ~›'ع“ÂB„àí·¹í6zõê‚ ¹H]Ë BðÃÒRSñ'¢(äç³v­ÍwßQWÇ! (]77醆bµ’“ÃÑ£2P\LGþþ„‡SQËEj*EETWSR‚»;ååxx`2qîÇ“–†^ϱcRP©Æ‡É$¡ ááÒY¾œêjJK8P¦yþyZ[±ÛQ)¥€ª*þðjj(.fÚ´N!ç–èhzôè²UJ»]ËÌ* ~~ "‘)7âí§§„ú§NÉŠ¨_æ…N6làºëðô”vîEEäå¡×³y³ä#G¸ê*Æ#1‘}û°Ùho—N„É$uG` áá”—ãçGh(BàíMh¨œ¤ÄD òó).&>žž=‰ŽFQèè–iH#GÌçŸãí-¡VBpè4þKJرƒ«¯F¾üR‹nÝÊäÉ$&âpðÁœ= ÐÖÆž=Ìž­EÌ>ø€mÛ¤§ÚU:¢ =ˆ²2–/Ç×—{îáë¯9vŒo¾aæLÞ{  BCñö–v5°};[¶°iS'Cº²’­[Y½ooRS™8‘ûïçÏ–á?yðñã47£(tëÆŒœ=ËæÍ””ÐÜLzºÌ;8RZøø ÝÜÜpw'#C”ÝÜ a÷n²³eˆ¢£ƒ)S˜?Ÿ””|¬‚ðêëµ°ðí·\¸@v6ëÖiIm‹…õëq¹ÈÊbõjíàÕ«5ÞÞ½,^ŒlÞÜ)›u‰©«¤‚*®¿ý–”™[R‡æìYöîå•WX²D¦%š [úè#âãeàVÙíäç³i×\£e»v‘”ÄÝwSTıcœ?ÏÑ£ŒÕÊÁƒèt$%qö,V+v;C†°cV+ ã・;ÄÇ£ÓáæFr2žž´µ¡×3t¨´9Ž¥¦†øxî¼S>§ŠŸÚÛùê+æÌ‘>¡—!!øù&‹êèÀlF¯Ç锡¯/­­( ééÔד“CD#FŸOUµµDE‘Mq1ŒÅ•WÈwßѯ¡¡ †ÿùç8€^OŸ>RAètX,¼û.?üÀ 7C¯^\y%×\Ãôéxyqþ<ï½GCÃ/æGÏŒtI‹è®JGåçˀɊ\w䆳g¹ê*͈Œäã±ÛyàÙú$4”øx¢¢HJÂfC¯GœNl6ìvüý±ZÉË£©IVTöèÁµ×¢Ó±geežtô(S§âáA~>±±ØlÔÔÐØˆÝŽÑH{;¾¾´´Èô£—>>rRÆå¢o_*+Ù½[‚“’ˆŒ”0k ¶–Õ«ii¡W/¦N•\õÕW|÷€·7Ï>+CÚ*ŠsãF„à“O:a¥\.¶nÅLJ„²²X¾œ;±ÙððàèQÍ/½”ÔU ¢¸› !˜;—ˆ†GQ8q¢“UØÒÂÆ Λo„··ì|#ßOu5³fuÒ/%%ìÙÜ9AC55”—“NGI À±cLœÈäÉ=ÊùóddEQuu˜LòÊ>>˜Íx{ÓÒ"ÿ¶·ÓÞNCÑÑ„‡…Ó)…vBݺqü8žž2ÙØÚÊúõ]‘ÍÀDD°m›ä ­“'¹òJìv–/×@”§NÑ­›–ßÚ¾… Y´ˆ¡C™5‹iÓ8}šõëùè#Ž¥gÏ.Ð]âA!½&ÀfcölΜÁf#+ !ð÷gÞ<–/g÷n.dýzüüˆŽÆß_ !8r„Ý»ùðC Ò"'NPXÈçŸÄÇ3p 3f…ÙLX,üôîî Fh(¥¥œ<‰Å‚—6›D¿©dÕ‰õóÃé$$‹…ÆFŠ‹e>,/&Mbð`rsihàäI‰É^¿žª* €säGްq#nn2ÇærI+uõj-¢ üô“45\.¶oçž{°ÙÈÍ•€䥗ÈÎ&"¢SË©KF]%ÔjT•*+¹ûnÞ|“˜V®¤W/­ïUu5§Nñè£<õ”†L©¯—Q'NðÎ;Üy'´´Höª¬”1ìà`Ù´«´”~ý˜:•²2i„gd`µRW‡›ííÄÇË ’‡îîxxÈ÷îîx{S]Mx8õõÐÑAx8éé2ƬF„ /zö¤||ððÀ`àØ1bcyýuYm¡–ë××sìÄÆRV&ñÖ'NÐÐ@p0;w²p¡d‹œ,?%¶w IDAT­xFåÎü| êTQsi¨KX¡µU«9þ¹simeút’“;‰¾šl6êëyòI~˜#P ¸¸çN~>K—r÷Ý”•iøñÚZ>ûLÖ&—–Ê:‡ƒ´4ºu£±‘ÒRJJ‚ÈHim%6³Y‚Z0™ Ân'&†¦& 5s8ðó£¶“IÖoUTGT&“”ðj±%ÐÜÌ–-œ=KP<]MÕÕ±u+ii<ô 55pú4§O“—‡ÓÉ£J¤PP@s³6ëmm¼ö+W2}ú¿ +ÔÖJ z÷îÜ?×]GD»vq÷ݼü2ýúi>Eq±|ßÚÊ‹/ÒṲ̈Iœ>¢`4âïOX‘‘TUa±ÈЂê¡MMX,ÄÄÐÜŒÙÌÉ“8ôê…§'ÒÚJM ÉÉC]AAX,£×BK þþ45Éâ™ØXš›±X$À.4”ž=1©¨`ÿ~, ()aãFiùççÓ»·Ô¹¹¬ZEu5¾¾( ^^2Å0v,--œ:Eq1AAš»d±PZ*sîê¼ü22‘v‰éÒ³‚êæ ¼ô³g+Å@M EEÜr /½ÄäÉrRÏŸ—¾"`³±r%¾¾$&2j2¤(´µñÞ{ôèÁÈ‘Zõ™ÙÌ·ßÅèÑ( ­­45QQAs36ÄÅÑÞNE©©44.÷PË­ÜÜðôÄn§{wŠ‹éÙSvù Âá ®Ž´4©€T&JKIO—׋9‘’ÚÛ1ؾ ¤<+(è”Wkmeùrššøã™:•ýû%Ç墸˜AƒhkcÉþúW„ ¥¥kbŽ—žÔ}ð ññÚX¨© ½ ¬Œ[o•ºÀåÂhdÔ(FŽ”%Žù 7Ü@` &<ÔÅzü8gÏ2f ½{£×K dAeeôïOB’ÂÂäâNLÄÝ–´r9•Ô•§üã⨪Bzö¤¬LÚªµµ”–ÒØH÷î˜LxzÒÒBe%¾¾\}5íí˜Í€_ZÊÖ­?®ýÞª*Ù6D52^}•óçéÛ—‹  ¦LaüxŽgͲ³inæ‰'øày®ÝN[['Nº4Ô% ¢´T+1SIQ´^FÀ+¯P\Ì‚„„°d }ú '¾¤„ÊJ–.eÐ ¦M“j¸®NJŽöv6mâôiƧ¬L^Íjeï^ŠŠè×êj¬V::ˆˆ 6–ÆF__í ¿"‡ƒÖVYßÑAAaattÐÔ¤uvjhàÌY¸1p öÓš›9vŒ¶6æÍcÔ(Ξ%;›²2::¨«Ã``óf>þX¦TDŒ>2<˜8uŠU«øè£Ncu±ÑÀ¥¤.a…òr?¾X’¦ÚSI5æ««?ž~ý4H8HÛP Qgg3e ÆQU…Á€·7ÁÁ„†!ËÍ&8X®lU[[­ɰ£j-z{ÿ—| ’z–шÝNÏž´´PQAG‡tÔ±ÅÅRG\l®ÓÔĉ9‚ÙÌðáøûãïO¯^LŸN}=çÏS[Ë石}»vë_‰%¿v-/¿LJ ü#‡˃/ºÐ—’ºÊ™-"¢’¢µ×2nû÷ÓÒÂûï³téßTnn ÊÚµìØñÏñÿš.G„šÃµÛÿA“È"µDI»ùû“žNZ!!èõ˜Í47k¦¨—III`’ÓIK Vk'ô>ª·7­­²ÝŽ»;!!„„‘A[›T­­œ?Ϲsc6#„ŒHÞx#cDz{·¬çäçmÕ_}Em-ï½Ç‚ ÈóÏkµ=Éá`ß>ž~šôtfÏþ?Œû?E]È áá¼ö3gâîNG!!üôwßͨQÜ}7½{¸¹1a³g)×J@.9ÂÑ£Ò OI!6–à`Y9 ¸»ãtHb"Ñщ¤Æ¬Ô|·êÖÿ“+ÌÃC† œNÜÜðñ‘• 9945I‡¢£CàZZ¸pAÂmøEõ~x8×]Ç•W’•…^Oi)Û¶±e‹ŒK øù¡×ӯ˖ñÉ'|ò‰örÄöv¦LùWMÂC]Å ƒñÆ (¥Š!„`çN²²¸þz&OæO"3³°ó—Æ„¯/W]ÅÀìÞÍŠ>Jx¸t)CCµŽ­­²“ªh*+©®&.//,–àD¨\¥¦$ÚÚ¨¨îep02l¥²”º3é°a²ZëÐ!ÚÚ´í@„ÀnÇf#4“‰Ï>ã‡4e§1*²p!²f 6{ö°x±Lâ«1ïKO] 11¬Y£õ*àgëé"©ÉºðpV¬ ¡~ýd0d9”¢0t(S¦ÈA Ç餹™æfΟ§{wÆC§Óª›…èh231™¨®–müýihÀá 0ð¿ -ètxx Óa4rö,z=¾¾ï憿?C†’™3wjÉ0|8½{sâžžÔ×Ëßìl)Zž}–… éÙ“>ÐP׿dzÕHT ‚.ìduI+–.a…ÈH:::…NÕ$áEZ´ˆ¹sxùeÜÜ>œ+¯$#oo©wSR45¯¶ÒQëª ®×Ëæ~€‡ÈΚŠ" ·Õ£’’Ðëef¡¹ù׿=`0àé‰ÑHu5f3ݺQQ!ÝúÔTNœ ®//L&BBððÀÇG6‹4›%楹™ùüsŽÑ~¯*QŒF¦M#5•W_åÜ9-X,=ÊçŸÈ£’Ÿ¯U ÑiÙ\2ê’t”ÝÎàÁ<ô7Þ(¡;Š"qÏÞÞ¼ò &ÈtTb"ÙÙ8ìÜÉÎøûóàƒ\y%z=uuøø`2É,¾§'={2b„¶bÔ(Bt´LWVÒÔ„¯¯,~Ò뉗 ¶ÄD ÄnÇb‘¿››Ä›˜LËÀóÙ³øûã燛ÁÁ’—ÇñãR¿˜LLšD~>[·j\ååEL wÞIR_}%SáášxKN–©çúzt:jkÉÊâÓOe/·_Ä×——^Âhä7BÆU/=Š©KÒQÑÑÁÓOóñÇÜw³gEH‰‰¼ü²ØW[Ÿ\”ÛF#·ßÎС,_ÎgŸI#+$„˜zô`ð`üý%:A=Åݤ$Ù¾]–3gd)q.>>2I‘”DNÉÉTV!Ñ­>>r«ò€ ‰Œ$7—ðp|}ihÀ` [7ÊË $%…€öí£½˜¼½ÉÌ$,Œ ¨¯ˆ•˜¨ñ㉋cåJ)~9—ÞÞÜx#ÙÙ,_ΪU~§’š´S‘žžüùÏøúvêýyɨKÏz=ß~+Û•mßÎæÍ¸¹Ê 7–ÖiŒ::øö[™1züqÆŒA¯ÇnçÈœNÚÛe gôhÚÛùærrÈÍ%/ÚZ23ñõ•MÞ¾}IK“I^//ªªp:eMœÚ³_ PªÕ±¾¾ÔÔHĺº_ˆ§'RÅÇJQû÷SSƒÉDBmm¤¥ÉõêëKÏžÒ›:T"b…à`¹ã`÷îÄÆÒÞNI ðõ×,_.M¢M›´~^Ü¿´:ÝÝ4òò¸ãŽ.Ø™®KlÒÓ9t¸õ5kXº”5k¸â zõ" @ú„aaÒ¹xê)KÔ²5U÷ìÉ‚wäé)ýõ°0®¿žÀ@\.YÏ:`11äçSXH\éé2V[‹ÝNx8.н;ååRk„†ÊJŠ¢"bb(,$, ƒæfbc¥’‘A{;çÎQV†^Ob"µµâ鉿?&ãÆBXííЦ&)úöE^{'$RQpw§G‚ƒyí5î¿_:¢II,D//~XºÁ—žºÊ™Tµ€*É££y÷]’’X¶ŒÛnÃÛ›©S=š^½ð÷§o_“»Hl,……ôïÏܹr\Ô…xìQQÌš%?ÔéHKÃ݆ŽÃn'"B"ÇÝÝ åÂYo 26`³É7jœ@¸¹QSƒáᄇ“Í©SôêEÿþ´·S^Ž¢HDÓ—_Ê^ÌÈ ¬LvT÷ŸbcyòI¹É)?Ç1{÷–ñ®#øë_Y°@Öî]láÃÏù[Uã\zê¡(47ËA£‘M›dð@Í4Úíœ9æMüío˜ÍL˜ Û<»\ rEZ,„…1gŽæˆ+Š "͘ËEy9gÏrà&ÙÙ¸\xz2j.?ý„$%(|­†ÚÚðð µU†ÃÕ^âÞÞR¤ûúÄéÓääÐÜLr2--2Æ¥ÚƒKz=“'“œŒÑ¨í=ª(̘Ab"ii8ÆsæLRSåññ¤§³u+3fЧ@{;GŽðúëÜq‡\$ÿf£Jññ²€dÕ*mµlè¢Ä5×`³qÿý²íj$ªµÌ^^rS†_–ÄDF²j•æöìIZšTÿ¥¥dfR[ËÑ£²*KM:'$ÈT‹Z¥Îe[&“L\©%1TV’™I¿~ìÚEI åå$'ãë‹Å"Ék¯•Ï–Fx8:cÆÐÚÊæÍ>>²È͹s±Zùúk„è4»ŠÂ¨Q,]Š·7eeìÚŧŸ’•…ç§lqé©«X!0ÔTn¹…éÓµð€Z)¦ÆÞ==yî9’“q8èÞóçe© €Áƒ™1ƒÏ?—$u\ùùÙàïÏøñö¢ö6(.¦¼!HMÅh”xó”Ùj)3“ÖV¬Vt:l6¢£¥¨ £±‘'èרX¶n¥©‰Áƒ‰Š¢¬Œ  ‰güúkHN&2’k¯åË/xEáÉ'™2E¦u:~úIÆ3ÏDP?ý$cpz=wÜ!Ûi) EE²¶P­dªªâÄ zö¤´³ŽAƒÈÎ&'‡ÄDÂÂ8vL7++ñò"4”òr"#%»„‡c0°w¯¬´/-¥¾ž²2Ùªgļ¼&7—³g9s†“'im¥wo ›P³©z=ÉÉÔÖ2r$AAZù¬jOøùÄ™3üð«W³t)ï¿OP7ÝDy9hCtçZoÇKL]%ÔmwÔêkð`Þxƒyó:õ64HöB6yì1‰gŒeð`öì˜ÉÈàÙg;A8ÓÓeõDd$¯½&WERR×Ϊԅ½˜¼¼¨«#+‹ãÇY·ŽeËØµ !¸ê*YÜ®ÊUu޽½Ñë™3§SÂÆË ‡ƒ«®ÂᠰÇټ™õëÉÌ$ €3g¤úèß_— ùáFޤ{w¬V kS1 ‰‰äåÉ(¤ÉD~>ÄÅqî8x{S[‹ôîM·n2Muæ 'N“ƒ§'=zpîS¦HÅïá—Ç˧>Æfãôiù¡‡¥K„VÕM7áïÏÔ©„„Ix¸\Lª:PÃ5N'f3f3²v­œ9•’’èѽž)Sd½zÿþ˜ÍdeÉ~wF#F#C‡RTDM ²Pºª  ¹Y¶gSѤ*3’˜Hb"=zÀŽttн;îR]MC6͈„‡ãrÉÔ×ÀLb":mmœ>Ma!mm$%QV†ÍÆuב’‚‡ÅÅìßÏìÝKYÞÞ¤§“‘¿Øx.2’Š z÷æÊ+;-ô¨(ÚÛ™8Qú>íí\¸À©SlÙBmmo]ݵRAQ777æÎeäH9XIIÌšÅÇÁ=÷Èå8cYYÒèËÈÐ6V5ŠÒRöì᪫0°ÙÈËc×.ÊËyê)n»M›(-Åß__`Û6„~¬ÙÌæÍŒIL ÅÅÒI9ž’&MBQ°Û9yFŒ 0PÆÁŽ£¦†ÄD&M’M™…AƒØ»Wª˜ƒq¹˜09sdgùÈH‚ƒ — âÕ,ù/ûŽKm-o½ÅáÃìÞ-Ó§:Çwe+W.CçØX,`Õ*zH+Ðé˜=›uëhjbÜ8† ‘Ÿûúrï½;k–&rÝܸî:€èhvíbÛ6©ø‡•å+sæ°?MM9¢í¥â]wì ©IBà­VŽÁß_ú%%œ8AïÞDG˰UV~~$'ËsF™c<}ù<ªhQõQ¿~Ür &={’•%*=ù$¹¹¼óN'X¶ÉÄŠ”—óÐC Ú< •ëwu9ø]Q˜5‹E‹~í&ÅÇsó͸»s÷ÝVC¯^\s }úH¯R™ê=z”Œ >ûŒ•+%€¶¯‹Úà?1Q‚Vø¹Š77WjœÆF„ ¨ˆÚZΟ—/ee8ìÞ-½J=Ü«ªðõ¥W/n¿‘# eÝ:þüg¢£CÚ¤@ïÞÜr žžèt²w5?£œgÍbÔ(Æ—h+Î/ з/“'k»£þþÜqGWZ *u­­ R@AA˜L²žéb¸)* »]vÌPI¯˜i79† ¬ZÅêÕìÙà 70x0µµ2ã§z(*¬¹¸˜?¦{wFŽ”­V›šHH`ëVéz˜L¤¦²mMMAx8&“Ü‚²±‘¨(‰–ŒF…¸â ÜtsãàAÊË9z”‚ˆŽ¦¶–ùóµs@?þ(SÈFc¾¾k{=¤§³d >>x{ãpÈV•ŠÂÂ…\w]׳ÂåØ%FE€§'‰‰DFJ¤rPcÇòõײ#‚Z¡¦z·ßÎâÅÔÖj¤–È™LÜqkײkÒÑ!7˜ëè}óÔM½23©ª",Lî)ÕÜLI‰ÜìÈÍ•šù„Ý£Éɤ§‡Ë–a·“ž.¹6.Nf7òòÈÏ—ÛG¹¹iøMoo®ºŠO?%"‚”¦Ê¬_} Óñè£Ë÷×^ËK/a6Îܹ—eï¨Ë´Ø°aÜtú“,T‡oÊ–-cÍ­½™:²÷ÜCz:ü#K–hµ™™2@i2ÉÍàÌfY­¬.;EÑ2Úv;[¶0z47Ü@GõõTTP[Kr²ÜF¬­ÊJRS%€ÑÏÖÖNn}K o½%å¼^¯¥ˆ ®¹†Ñ£ùðC^}•Ñ£4ˆ¤$©5¾ü’G‘]TTêÓ‡Þ½9uŠ›nbèP³{ô`î\ÞŸ»ï&)éR ù?¤Ë¡ Ž”vïÖú`+ŠÜZoÀ~ü±SË… ‰%,Œ¤$öîÅá@n¿]ÛœO§“½X?ûL«4Õë¹ê*ÙŒmùröí£_?ÂÃqs“;\«y„>}è×Ovë7Ž„ iüเJ{öÈ}Ìf’’èèààAââ¸÷^ @¯§¾ž­[e÷ùï¿Çl&8˜ÌL ’¿Nek•}Oœ`éÒN€%µØá‡xõÕÿAï¿”.ßFÄáá<û¬¶ì¼¼d/ÿ^{MvªÈR@Qèߟ'Ÿ”ˆ7ußg—‹²2V¬àŽ;ðòâ±Ç¸öZYv§"˜­VV­’I)ÕÈZ[YµªS×Èü|¹çŸJjO…O?Õ4ÈÅàæŽ¼óŠÂĉ<ú¨¶'dLŒ\âê¾øB žùóyå¾úŠƒ).¦±‘¡Cyá…¿SåÒ«/¾Hnñ+º|[Ž* cÆpÿý¼ù&ÀÔ©2’¯(ôêÅÓOóØc8L˜ ±…š©ûãùé'ŒFòòزEZgjòÉLJɓéߟM›ÈË“Ýu÷î•§_¬u߸‘êjÌööFví¢±‘;¹öZ…êjÙ¦iÙ2z¨Sc,µ¤I5~™p ÅÓS¶XðõeÑ"äØ1‰âWÉÈn» ³™‡úõ€„…qß}—ÅJPé²îIm4òàƒ¬[GE“'kaEáê«)(à½÷d$_%¦¬îÁøúëìÜ©@º»Ky«n½•Ü\Ù^•ÔôRv¶¬Q¯«£¤„ÔTªªd³Ö;2„¨( ^RÂÊ•,X€ÝŽ—C†0|8QQ45qóÍ ÌìÙ2"©î+QTDT‹K·V-õ¿Ø€Íje̦Oç›oxë­NC¡j‡Ë·!5—™€øxþòî¸Cn5|‘ , ¸˜ÔTY]X(‹÷ícÅ fÍ¢¦F«>6™4NRÉ/¿äá‡<˜¼<öï§ €¦&øÛß4½pê))ì߯uvÚº•yó:áˆNŸfÛ6F&3SZ$ï²s'ûö1c×^Kp0 xzòÄšQéïOjª–s™3Gz*£\| 5÷Ýå1¥_ÑåfZRBd¤ìd ö¸hj’qþcÇøî;vï–4¨X ooºwç…X·Ž•+q¹ ”¡$›­[yûm‡CÖÀJm-ùù8 #ЪîW»/«›—óóöçƒsîQQ¤¥Ñ½;qq l܈O'>¸ØQp;ý–ùó:”>}:}êv¥*ÈvæL{L:5ݺÉþ@ê<û,W_Ýõ„_Ñåf±¿þ•³geÛU50ìtòÔS̟φ ´·K  ÓÉÆÕŽL½zñÚk„„àæ& ÑU¤“ÚŠë¢ãDE0q"íír—ãêjŠŠdHÀhÄË ¬V.$2Rë§QPÀòå”—sï½Â‚I-¦³XøòKFŒél@Q$rbÒ$žzJëÈêãÃôé>o÷Ýw¹v§ïDâ7B§O‹¾}h/Ek× —K45‰%KDB‚ˆññ¢W/a6w:·¶V¬['vî³f‰Q£äkäHqô¨<Àá_~)ÆŒß|ÓéÄêjñÖ[Ân.—üÄå«V‰å˅áöãòš ŠÒR!„øÿÚ;û ¨Ê6Œ_g%`± G‹š"Z! m†š>ÄÁÏ$›´lÉÉÌ©`¤B fb,tÁˆQh(°vDtid@6g@‰qðvYdaYÖ³w<{8kï¼ïÛë¼,¶¿ñfÏÙ=àsíóq?÷sÝ7nÐÊ•ôÒK´n••Ñð0Q]’JE[¶Ð?Ro/Y­tþ<%%‘^/{®ÍFG’ Pt4]¹rÿÿ¦o1é@h(Fp°ìE__~Xö“O’Â3À¤i€ÉIô÷Ãdœ9—]bóy› µµD‡}h)IDAT(,„(J~ë__TWC§“:çÑQÔÖ¢´gÎðNˆeC ·+ŠîÙƒÎNÁÍ «W#/›6ñ®‚}³™kdj*Ö¯ÇîÝæ¹ü,B·KÒ²óýûe‡¦§‘‚ 2%%RTÇÍMúÙË Û·#;J¥”6n±àìY|ôââ Õ"$©©8t¯½Æ×{ƒƒÜƒÿ«¯øZ££C2éÑjQS«ee’>ÚÚx¡ÁøäQyÛ3z{‘žYYøðCéàØÉ[,P©„¤$,[†” ¡:wÏË“ÙN7N0W°Ã Ãòåèt¸t Z-êë¡Tò®¢È=¿::àæ†‡†Ÿüýáë‹G^Ü\Ç•$ H HKCURR…þþس11Rb»B!ëÛBBPXÈCìN†óI€BU«àïS§pú4NžDk+/ÇRÍ<=¹?We% ¡×Ãl†ÉooØlhoÇÞ½hkã§˜Ï 3]föÁÝÝøö[q+fÞ<6†Å‹OO¸»óÄW‹|€¦&$'KûœD¼-n×ÿ{óMÄÇãÅQ\ŒÇ—53«4ÁXºòS³Î‡“ vfÍâÇÎ[[ÑÜÌ§ß ÇÌ›‡·ßFE6oæN»8v o½Å£öDg;ׯ#- EE¼Ðˆ¯/¡RaáBüú+4nØsß}¼µzzÐЀ£GñÙgÒf•(ÊâÙ³gcÃÄÆÂhDi)´Z˜ÍÒo;k|| ؼÅÅŽÖ"NÅt¯fÿef’››oضM 0¬Vjj¢³géã¥ðû·iY­ü6½ž¶m£G¥À@ÒhdŸpî©TôĤVËb ß|#}Tb"]½JDÔßÏŸ²híÛG:ݺ%…  Š¥òrºz•D‘l6ÊÈ ÷Þã±'Æé¥@D¢Hj5©T\ ëÖ‘(Ên0¨¤„*+é÷ßéðaŠ¥À@Þ~O=E==DD££”œ,µk|<™Íüíãã´q#}ñbêê⯴j•LXë×Sw7;GÏ>KEE40 ÓÍûï“ Hñ1ooÚ½›Z[I­–žåÄ8ë1…Ë—C­Æ»ïòs;ÃÃ(/Ç /`ëV´´àÉ'‘”„ÊJTWc×.,\“ :ÆÇ‘“#«®ÑðNžUUÐjù냃HOçùÐÌ^SOŒFüðFFP[‹„^‡‚!Џ|Yˆ0:Ê  ÅÄÈ_ΊSNïD€ýû¢"0Q_¼<^¬@K /Êãá°0,Z„øxüñ®]ÃÏ?£±‘Ÿ¿°/î¿ûQQ¸~¹¹²µ¶¢ ÉÉ8~œW+ŒDT‚ƒáï77¤¤@«EBßà`˜LRž ˲IKÊÒdÓéù"¾[°Ù»Ñˆìl™I.¥íí ’Ý?4„ƒ‘˜˜L¼¨t_.^ÄÀvîDc#Ôjxzr/Hwwž³bÆÆ¸«^ÍèéAh(ÆÇñòËÈÌDt4_7^¹‚ˆðóî]xã 5ŸAL÷õ·§æfÚ±ƒx@6<×ÔH÷ØlÔÙIk×’ PI‰ãL“ˆÌfªª¢înÒëid„&&ø,ˆD‘öí£šÙ¦£¼\z¢»;edðƒVK^^´s'uv:Nef3S Œ[·¨£ƒ>ý”<<¸22¤¶¬«£ÇãmöôÓd4:¾ýôiš;—rsÿ¢åΟ§ûï'¥’ÊËej0›iËÙö)@*UWS}=56J«•ÈL–Ãf£¾>ÊÏ'•Š–-#“‰ÆÆ(7—ÜÝeûÝ¿ü"{×… D)•tê”ì’ÅB Ò÷þÈšœä—ººH©”}lXåäPs3MLüEÇ3£˜ùR`ˆ"ݸAååÔÖFï¼C …ãwwÍå7÷öÒ’%Ò¥ÐPà—l6:qB˜¾þš&'Éf£¢" ¡½{©±‘ŒÆ:Üɽ"†ÍFf3]ºDÇSV­^MóæñvU(èäI²Ùhhˆ6ntJr2_ú ãxU¡ ¼<2(>žRSéÄ ºg`g¦­ þsˆ`6órØ¿ýøüsdgót{**ðê«(-ER¯€;w.ÈíW¢¢0g|}jgù.rïJa*,{öÚ5X,èíå¥âX5êñq A¯‡(bëVÔ×KÛ’ÌRŸfØÊð¿çŸ!…©8ü½Â;Y‡Ÿÿaüó¤àâ_po{.þ.)¸à¸¤à‚ã’‚ ŽK .8.)¸à¸¤à‚ã’‚ ŽK .8䇹۾IEND®B`‚giza-1.5.0/docs/samples/thumbs/sample7.png000066400000000000000000000443701477367113400204500ustar00rootroot00000000000000‰PNG  IHDR®‚Pdô IDATxœå½Û“,É}ß—Y÷êûÜ{¦§çrÎ`A€ ˆ€ÄR ®¤e†­[|à‹CŽ_ù÷XV˜ò“š¡°ùà½ÁÀB“A¢@Xíåœ3gn=Ó÷ªîº§>èTmÏLŸœ¡vh×CGWö/«2³«2ùý}¿ŸPopEñþûï§išçù'Ÿ|’çy¯×ë÷ûyžôÑGyž'IòìÙ³<ÏŸ={†a–eˆ ƒ›››<Ïò“ŸäyÇñ‹/òMÓ”»¼xñ"ÝæápHc¸x’$ÏŸ?Ïóüììl:êÆAp~~Î]¢(J’„êWWWˆQ=‚ÓÓSîDZ®~ss3 t›Ã0ÔHר~¿ßëõô°§iúþûïEñ&ÿ¦!ÞøÿÉûnú³6yÝ‹Ÿ¯ú›7ãAŽ7ÿ­7¬¯”zñâ…”òüü\1LÓÇççç†aEÁÃ{}}E‘mÛBˆétª”Ƕmó6dYÖï÷ƒ p]÷òòÒqœù|EQ†¼gJ©ëëk!Ä`0˜L&Žã\^^Z–ÇqQ]]]¥ijÆåå¥mÛ“ÉIJ¬J¥rqq¡”Šãx2™¤izqqQ…”òââBJ9Ni§J©ËËKîEc¨>›Í˜Z¸xQÌ%ý~<Óf˲’$ Ã0Žã‹‹‹,ˤ”WWWBˆápèyžïût6§izuuDZiš–eM§S)åh4:??WJ¥i:˜T²,3 ƒe‚aâ_PJ}΂”òðð§òðð°V«™¦ÙjµŠ¢8::Êóܲ¬n·kšæÖÖ–ëºRÊ£££ÑhTÅÚÚZ–e‡‡‡Y–¹®»¿¿ï8N«Õò}?MÓÃÃÃÙl6›Í677…ûûûJ)˲=Ï«T*~øá|>‡išÎçsÃ0f³Ùh4’RFQ4 f³™išqÏçóÁ`e%Ô’Ròe6› !²,ãT)…|†Ü‘ò(Šò<ϲ,Š"Äf³Ùp8d©²m{>Ÿ÷ûý·Þzk6›íìì!:Ž”Ò4ÍÃÃÃjµZ©T*• ]›Ïç£Ñhooϲ¬˲Ò4=::‡†a´Z-!ÄÁÁAÇžç1€NÇ4Í¢(y>666v¥ÔóçÏ?çGAqssÃ\­V‡Ã¡eYY–Çãëëë¢(F£‘ïûãñØ4MÛ¶G£Ñõõ5³Bžçãñ¥a8º®Ë#âº.åQÍçs!Äh4ò<‰äææf4M&“J¥òo|ãÍÛÿ€Ç~ô£ËËË¢(˜yôõÈDQ4›ÍèS”mÛŒò777“ÉDJÉdÀs3}ßF®ë†Øt:ͲL)ÅÅß|Jò(ض-¥´¹eYÌ¢|±,KA¬( }j…úW¾dYV®Å;Ê©išyž¿yãö`˜$hª”òÎÐ#£MÿÊhÜî2¥OËcþX…f³É³ßl6ùóšÍæ`0hµZ¬gÍfs2™4 ^wf¿¢(šÍfµZ¥Ö|>oµZ³Ù¬ÑhxžG9}n6›\\)†a³ÙŒ¢ˆ™ÿÍÿ°‡”²V«åyÞl6Çã1#3N›Ífš¦,tå¦ÕjAÐh4,Ë¢¼( ºÇqÇ `³Ù4Ms04›M!D–eå‘yóÆ?€Úøé§Ÿ¢6²˜¦Y¯×ÏÎ΄¨išÞÜÜÌf3Û¶™?ƒ @øüüœ÷»ßï'IÒï÷Ñ)¢(Š"º4M…(¡¬ôŽã¼yÿöȲìôô5âââ"I!D¯×£³žçyžG×’$™N§Qõz½ù|nš&å“ÉÄ0ŒÁ`pqqÁ.q<£]&Ib‹Ú8™LöÇ¢6K) Ã8::º¹¹±,‹÷þÉ“'yž;ŽÓívmÛÞÞÞvÇ4Í£££ñxœçùÚÚZžçOžÀÁ– íšõ›/|ê/ì…ø’eYQ÷‰Ýþ§RJ ¿ò%PJýð‡?ä½ù…_ø…jµú£ý¨Z­Öjµo}ë[ò'²¾¾þ—ù—¶må+_yûí·Ó4ã˜uZá8Î÷¿ÿ})å“'OþüÏÿü7~ã7~ô£=}ú”§|õhE¡Û_™ûº–çyYLwóθ¯üÍÿÇX .//¥”777Žã°@°­ò<¯( æ‰Á`€žˆ DEý~ŸåææÆ0Œ›››$IÇ¡œ‚õ…¢ßï;Ž3 x¿W·M«c_ùÊW>øà¦+×u³,³mû«_ý*ûš·ß~ûÇ?þñ‡~èyžã8Õjõâââøø¸^¯‡a¸··¸9 ¤”_ÿú×WÜ‘ŽEQE¿ß§ÍzdX èZ’$“ÉDq}}­”b’«V«,³ÙìææÆ¶m¶–e1>†a0°,I’pñDz@°{βŒžO’dŸI¢ÓéE®çùþþþx<.Š¢ÕjÍçóýýý,ËLÓÜßß7 ƒ‚r½@dYÖétèm§Óa1 V7¬R©žœœ|ÿûßÿò—¿|~~þöÛo÷»ßýÓ?ýÓÍÍÍ>øàää¤×ëI)Yn}ßB€ˆüâ/þâ_ÿõ_ïìì„aØét<Ï«Õjûûû«Gø„"Ïs¥Ôþþ¾ëº,óù¼ÓéDQäyÞÞÞž¢Ýnƒ^t:jµjªt§Ó‰ãز,‚Õ „™O>ùä ÿÊX NOO™ ØL&è>L¼Bˆ››VeÄ@o¦Ói¿ßw]·( ¦Á`0ŸÏmÛ¦ýy>ŸßÜÜ!”Rý~ŸÝÊëÌ Ož<‘R6v»-¥ÜÞÞ–R¾ûî»Z@J¹¿¿/¥ÜÚÚj4|×?½ýöÛ|©×ëBˆo}ë[¯Äw‹¢H’X¥<2®ëº®K×Ò4fåuw]7)%àa¨B®ÆÄiYV†yž3y†ñ(!Äöö6FýA뉢ˆ7£(Š,Ë666ÐÝvvv&“‰RªÙl†aˆ˜bggG)Õjµ<Ï£|>ŸÏçóõõõ$I¶··QÜvvv Ãà[Ý0y˾À•ÿQ¾ÞWýÎÓ;Ó4Ñ…·¶¶Ò4åá˲Œ‘ñ}ß÷}ºE:fQÛÛÛ¦iRîy/]ŽãXJÉ"ÆÀ¢w¯¯¯3ìEQ<{öì•Í[}<À£à8ÿã8< ŽãX–å8À3ð¿ê/br4‚Z¶mëêY–¥iªËYS9-«ú¯yÌf³>øÀó¼¯}ík¬Àº,¦i>þ|gg‡Y ˆ÷ç¸ à{% 1Ýî#£ËË”aå.—Õ‡DŒ)Šâgmç-Ãúlc´iµq2™\^^2š½^ÓNǘ£¤”¨ÓéÛ ÚèÂl6ÃÎä8Àól6Ã>¤”biW@ÕýÃ4Íííííííßÿýß_[[k6› æóù~ðƒßùßyùòå³gÏ Ã¸ººúêW¿úÑG}ç;ßaŸùštL_ (˜£h³ïûžçÑ5p…,Ë LÓ¤µC‚Ý<Ïs,m¦i¢6†a¨MhBmÔæ¨2®°dŽ2 £lŽÒ¸6˜²9 µ‘r­6Š[æ¨×Á–žËÉdòµ¯}mccc0¬¯¯gYÆæžûÇÜjµ†6GýL·àiËóíµÄsTµZÅ¥q˲P)׸‚ø¬9Ê0 mŽÂž‡Ú(•9 %n:b%„á^Éh4ÂÚë8ŽC ‚€^Q>N Èã˜ÓÙl†9Ny9Êb?ë¬èûþw¾ó½äëú­·Þ’Rv»Ý П={Æ\ý3Ý¢( ºÆ~o<<Óå4MÑÇã1(*}aÛÁx}EÑd2ÙÞÞv]µ‘«õûýJ¥Â&öääD«•JÛÕQ¼hs·ÛãøúúºÛíú¾¿··Çf½¨†®)¥`¶}ž‚:a¶8„|U\¶˜¦Iyš¦]ÊGš¦«K°`Ý>ÓŸÜ…ƒÅ^ß´\å¾6—v»môH_¢Í톕ïr[LW/†nsùF·ÛV>ËÁ^ÿææFˆØÍÍïû˜£Xn•RÏ®ëN§Ó¢(â8î÷ûp=08 ƒ4M]× WWWÐ\³,c ð v‹Ýy0Ôjµ(Š‚ Bh› ÕG£”Cl6¬,¦irJ›=ϵÄèmŽFöûý,ËÇá4 Cþ!.®-mï<Ï£1ðWi*ï:Õ5Í•êì’’…ìkµÚx<6 ƒĆ>7Ó4‘÷}\‘q]÷±à ?Ÿ9 \³/ß똣¸kïûQu:ÖæÝÝ]¥³(¦Ö£F£AÛ´ˆ«–ïïïƒOlllpЉ™N±@ÐæÉdÇñææ&mò¼¿¿ošf£Ñ¨T*QíïïÏçóñxü:æ(!°4åP1~sÛçù(!ÎÏÏÑÆmÛæµ ÃPÛ™xœñ“ÁÎdÛ6ï zâùù9¯A gggQÅq »É4MÞW˲†Ãá|>Ç–íû>/"÷B0»œŸŸÇc0 nªíÂ(4ܨCn‹Š|ÙbnÛöl6KÓ4I.® ë(¼Ì"¾ïC~çW<ôȸ®Ëäq~~ÚH`ÄPù=‰¾ÉLZ¥­Vyž3­>"nãÚÚ&öõõu!õt:]__§¹ëëëP]×E £% >(ðY–avÂ5¨…9* õµ5¥TE\¶^¯{ž73Ms}}=Š¢µµ5v\4ƶíz½>›ÍÖÖÖØƒè«p±«¤œEA#ã8.·™MÄúú:m†.^Y¯×auÓÃ] AÑÌQt-Š"!wY[[ãù^__gk4aò+f§ù|N×XX€ëëë´íQè B4yÇqP¶-Ëâ S+_ô¯œò¯h1–d}ªåá€èr¥Tùje1ˆküŠ…†SÛ¶µÛ-Vn3½ÐW+‹’zž¿M‹é®éNQ.V. Ë7]+ŸZ–¥ûΦCW/Œišz³,+·ùÍÿLJÁ¤”lp˸šíÍÍ ¤&¬/e\A)•ç9L…Á`0Çyùò%cÊšzyyE‘6kÇc&söâ,Óé´×ë…ahÕ§Ó©iš•JX‚99 Cvü†aàÀ„Ê ³”6÷z=æ^C›g³[y.^îZ­Vs]—Æ ®0ŸÏÁþQª3a⃮Xã üß Ôà xGÑæ2®ðXÔÆ§OŸÝ²¨ƒ‹+ø¾ßív5®ÀV\ùóää$˲Z­Öét...ðŽBœœœhï(Û¶Qè<Ï;<<¼ººj6›~`èÛí¶çy»»»X–ONNP†mÛà šYzpp€ùøèèHã œ2÷àÏ„K›'“I’$X€NNNò<¯T*ûûûµZ µQ,ÔFÇqööö`ÕÞÜÜ€6Šd2vww}ßÇ;Šr¼£ þcŽW@á5M“ÕÞQ {QW˜Íf¬ˆ(ü|œEÁƒ²,ÓbEQà‰’Å”A] ˆ‰/Ø q¡œÏç–eåy®OËò†aèÓ,ËØÜâÇX¾Z¹ÍB×uõ]t9[ª£6êêåF²ÑE úîòÒ]ôŵmf׃('§`ê·»ÆÅVëç° Þy<À£À4Èd9ͯú¬OµƒÂi–er*Kƒà“á¦X_M¨Ðàâ8† £/®Ëñ±ÔBè»xè[sS~Å9³Ü5`lݪó]—ÃGZÓmÆ ˜‹£p ›«é®Q—Aã×Çò(lnnJ)Ã0Ä›“b2™lnnòß³___GßÜÜd±¶¶6666ØAlnn²ƒ‡ÙØØð}à9‚ HÒ\¬w8nllÌf3˲¸ËÆÆ›IfrÇqšÍ&ÕùË777Ã0¤Í“É Y±¾¾Î©RŠFÆq y¶£›››Ü”Äææfš¦,”ó¿rv´J)Å¡[†alnnFQ´±±Ábss ¯)Úç9]ãWÉ‚‘ÙÜÜ|‚Rêùóç°˜„0µ!á@)ÀóHï(!j#d'¼A€öÐ.ÑÔ`11=â*$„èõzBˆáp¨êyé™ÿµS=Õá܇C¼âÁÒ4…_#¦…Jm¾ººbdž!wB°¡u²Š•ê¡'ñ¸0ÿ/µY›£¨Ž‹Ç NõT×Nõ´ _žç½^/Ë2T]¶Á( ûcQ! E±¿¿ïû>P #ŽÀææ&)ȸBÇ w¶m£¡©Q®ÍQ`m 0G½aŽÚÙÙ‘RbŽ¢:»Œz½ÎMã8®T*€’Ýn/”ýý}­6rʘv»]˲ÖÖÖØjîïïóÏ1»Ð5ÝmÛfŠ¢1ÚUh#mö}sÕÑai-æ(Ê1G5 ÆÀD e`µ9 1õHXL˜kËÔíÅÇ—¥Ó¥rÀƒÛÕuù+/R®Îûv--©Ëi3§ôbéâ·¯¼â¦w6ré.·Å´ð’Ø}=-‹-5ìÍÿÇx`Z^__[–JÊvþêõõ5àk–e¶m#æ ß÷}¦Y!„ž)×êQJQø°Ep‰dö†R«m6ãñ¢X¯×3 ƒ‚‹ê]__Û¶ ÍÞÝ^„Së¥1½^NeYDZ¶´é®…aèyaȲŒ1å‘a ºžqæv¾ï_4M“pB)eš&‹9Š‘aÿòæÿã< Øþ•R8¶bŽÊ²ìàà€N–i®BˆƒƒÍWˆãøàà´;ÓÚÚ³èÁÁÆ”R,¦i`db@W`e²ív»•J…¥„¶i¾m`€I „@Äö/¥<88°, sòà ,å®q‹J¥Bcôj¥”Ò4WF†ƒêDr¡µà ´YóhsÇ€±Ãa1?88Ðæ(ÄŠGâ¹{0>BÇ3°#b Öj( J©8ŽG£Q†ƒ& ˜KÌ üŠÑ…à,ƒÁ€÷U‹@6M“Ë2+0èøZ¡H|7 ¤k#õp8¬T*EQУíËhjY–qqÝ5,æØMÀþPŠ §¢GFÏ ZL7FÁ´A7¹ „‘S»ÎÂÀj#5,³ÜFÈw(S:8Œfðá8 ãYÀY–Áà›ÏçèƒDê $C«Õ‚Éš‚|ILJ‰¯ñ(à*ÔëuÚHÀ> ~%DKƱÕjMw °ÕjÍ£¨Ùlºž7 ú˜¦i«Õ†Íf³È‹(ŠšÍfÅõzݯøÃÁ»p5ÚÌlÍÍ‘6`à‹é‹6 !Piœ6Ò+ÜF=ìoþ?>¼9Ê4MÀZ”ÊÇÁC9ඦ0ø¾Ÿ9ŠS¥TÙ6ãûþÉɉ&%ضMÀlîeÛöïýÞï½ÿþû•J$Wµjµ*„Ãð½÷Þû­ßú-!„ÿ/ÿåÑÿ±[­*!ÃЭV÷çsËq Ó<œÍÜwßM~û·¥”ÿÊÿWtòGu·.”˜ug§2ïÌÓ1 sz2ý{îßû]ñ»˜£´ ìNK›Âu]ß÷µ9J‹†¡Ëuu>µ¥ ŒëÑ™£ðá½¼¼„“iF­VcWÍÓNà À·J©~¿ÿòåKÖìÛ4W±Ë4WÜpG£Ñ`0xòä cª]iEˆR§§§¦iþà?øƒ?øƒ;Ï÷W~åW !¼÷ïªø‡B))þP:¦‹+Ä|míÙ;ïyñCï‡ÿºþ¯•PB.$>ZÒ•Fd|úé§a|4*Ñ\µ9JÓ\±]__‡aˆ9J9ªZ­2P iÇgW€æZæ(èùo¾F<Œ9Ї·LsÕæ(l6®ëjsj#sµškµZÅ® ”ÂÎT‡9J-h®esÔ}G½^×ªß ±µµµn·+„¨®­­ó××Ó,[«ß+¦„jxããã²9 #5†:º¬qß÷Ûí6Äœ““‚ Þ¦¹jK{›æÊËó&Ç,Ø…ƒ€]A1™PT®OÍAÚCžOfÄçT)¥Åˆš³Â{ ÓD '"OÓ®²yšÎçó4ËÒ,]1fi‘Îgór_Ðé 2úײº6b°ééx’$º1}µ,Ëtù£X „(½ÌŠ˜Þõ)Híd2pG‹˜h1L•iš²?Ôö-Ä”RAL&ö FcÅ£À2d¾*[Ça*!Ò8^õ(ÄqYž'i²êQÈÓi0 ÃΙ™Éd„®M§SîËPø¾n1™Là¾ê‘ÑìN›N§ šmÛÔz,;6ôqã ®0›ÍÚí6^1ív;MSÄÐ(áñ«RªÝnc£b·Ùn·Á¶¶¶â8f§®=S±è¯h•ïû¬,hˆ÷µZ +šW«­sªÕí­­$ͪþª«Uì ;;;D’€É¾»»kY¸BÄW°m»ÝngY¶½½õ¡Ýn£wë*"Ö]kV»ÝVJ}øá‡+ÿ¥W 6¢ïàìÍÎ¥ ;Ƙ<˜v€±suuE¯nnnÐ a PÎE!µ Úƒ œûãõ…aȽVGä€nTQ™LüûÅâÉäüü<Ë‹Ie"î‚$8;; ‚ IíTO3ƒÜFºù=Ïsô>ø]®ë¢wc¨!F /uv2™°Ú"&‰Ú¸»» ù}ww—ÄžÜÛÛÃ4···WÅÖÖ–ã8Y–ííí•c1íîîB0dV˜Íf»»»ZmäÅrÇÝ㊆U*•íím˲ŸsßQ«Õ¶¶¶Ô+g…z}gg'ɲZe•XÅ®´ÛmÌQ  #ƒÚH×¢(Â}J)E;g³ÎR t9I˲@ ¤îîîV*ÔÆ4M¹È£ˆÅ„r`Þuð+6x"³è£\E‹éað5}<—¯°¢Uúú«㹑B®“?•S†\y5ù™>.u“î,Ãín–nÛ£ñ(t¥ÔG}ô 4×Ùl®`Ûö+i®•JåéÓ§+ö“ÓéôÅ‹xJÝ÷ЀU¿xñ¢Â«÷?[óÁàÙ³gyQ Ý¡¬ß+6‰&Ÿ~òi8 Çãñjš+ÀÐÿ¿FsÕQWÌÍU»Ï²‰(»Ï.Ñ\qŸõ}_ã šæŠ9Êó<í> Ž„Ÿñ`Ã0¬T* Êõzðñ;ßùÎÚÚZ½^Ç®X­V©%¥œN§ßøÆ7ºÝ®¢òÞ{A³Y«×•RaTëõy:®kZV8Öþîß=::JÒôÔþ91›¦Pb:›Ö«õpº¶k™Ö8ÿbíŽX –pMs¥kÚU¦¹–ÝgO‰ôÆ.Ñ\QÍ•zèÃHe§EQÃÓ úÎÍÍ ›É<Ï9Íóç! 'þcˆO@ú¼RBˆÉdkˆmêééi·Û¢^×ÕÕQ€_¼xùζíwß}÷K_úR»ÝƵµµuyy‰nqq±»»;…ê×~íì‹_ììî*¥.¯®vÛíÞõu³Ñp\÷òòr·ÝG£4Mßï¼8èt1RïììôoúµZÍõÜ—§/÷»ûÃdfŸï IDATÈŽš¸ 4ž‘ k4ÆqlfÈâc§ú ãƒFIô0NÅ!„À§b‰á]¸–Lÿ ŠL¹»¯Ju¬”ó¸PŽýM_ܶmÛvMÓ²m7Ë Ë²mÛ%šaPß!Ä‚íº„5Ë•2-ËvÃ4-Ça¶]÷§¡l×6L×v‹¢° Ó±Û´Ëq-Ç6-×v;B8ŽmZ¦ëÚy^ض庶e›¶cº®mZ†ëÚåFêè ·»†V—³ gÖd"ÑÕõÐ9‹m VS~},B£Ñ`Ñ%Ú ê}¥Ri4Äbj4ãñ¿‘Ñhª*bgF#<à(GoB ^W›Ífõzý÷~Ïÿ·ÿö ëë~šVãx­^wÆc·^w¤”ƒÁ[¿þëþ{稜ãü/Æ÷§éyYQ̛ͺëŽ]·éyRˆáÓ§ßó~3M…ÿµñô»O½5O(á=¯éySÏömÃ2ܱë½ã‰,’,i6ÿ÷·Þú?}])U©L]·éySÓtMÓþ¾ÿuÛþ§EQ4jµZ¯×¥”ãñ¸Ñh@§#8W½^Ç» $Iôˆ™ \ja­å"¦iR^Õ9}‚ZÐ\˹£ˆîoÜŸ;Šb2™ÜÎ5N]×¥|~+wdžÁ`0™Œßÿèþ,À¨ð§õ¤ô[­àK_:3,û{Ožüs´KÃDÞ[(›ÒóÌÙìkgg…!üãWþEE(!„ð„'„pWó„‰èå×_¦yæyV«ýB()z1 mø¾ˆãñ‹ß Ã Š¢óósµ,厢kxt%IRÎÅ ‘âoeî(AB"•€+EqxxH°><ÏQ¥”eµ1I; Ê(¸‚¦'AúVJé`}°˜šÍf­¶*¢b³YÝÝݳ§µÒjÕôýݽ=%…ß\0 ¯åu:$KªÕæ 1×­u»û˜£„šÅ„¯¸]‹JÁúP)×j£µÑó<µ±( ìyà »z$4WL±øñÀÛ¢ˆSíÃiQ|Ñ®&XƒÐíÃd@9N,ZL)EuÄòÜb…9*O’8W*/ q?fEÇJŠ"/Lq¯¢È‹8Ž“,ÍólEFˆ¢ÈqÎÔ]x¦/€úTv]Ž® /R3MSŸâÃé£X „hàãñ¸Z­‚+°# uæd2!J;Ät±Éd‚{,+à¯äÝbkίJ)äáÎÇqµD*X>¢('¦eÍ›MqDÖ(I&ãqaˆõhÝ÷N é<GYž­¯G+…,‹ RÉŽÀu]_­VG£']xfAø0º†‹!Øt:¥Ë˜'Æãñp8dàâ¾ßüx€G2?(Ê0„-€g â<ÏÙj#¦ÐVià„`ooOG]I’Dϰ=›Íf¥²*aP­æommYŽS[™·êû[ÛÛJ ¿ºjpkîÎöN’%¾¿Ÿv*„ìÆÎðLøÛ¶QéÑ9@”1ãQ®ºŒ'?ÈÁÀj\!Ib²|ôÑG+ÿ¥W–r”!„Ç:Æ3ÑëÙIÃb’Rjï(\…`1ñ‰CRÙ;ŠϘäµwÔt: ‚C­'Þ>ÆãðââÜ0­±ëŠûÕ…Élvq~^¢2©TĽ¯W4Ž^ž½ÌòÜ÷Ç+Œq¼|ùR§ÕÞQ8<ÝöŽJÓ,Ò4Mʵw8èOZû6J1ž‹¢Àä&OŒç2ù];ÕC$_M~_[[CWÒäwH­w’ßµ¯•&¿¯Vj»½k9Ns¥ÚØðýöÞžÂo¬T›^gµ±±BÌukN§L~G?¸“üŽS½¹ ¿3Ú©¾L~g™XíT¯ÉïBm„jª,Kχ¼u0:ú§¥êåÏ;JßWµê§b¯J‘xtrqóWH½VË—»¹$°4’÷•—«¯nüë°@àŒ»gWR‚(@G˜Ïçà EŸŸŸ)þ*¸‚óÙä‚ìž³,ýs<M§ÇRÞ=1H)ÆãàüüÌ0­‘ë Ï»ïÍfç/_†ðG~ETÄrJD£èôôt±@Üû4Äñôùóa°¨i\·ºÌË/[ºÌQ¯×ÉÈ‘•r0°¨Óé1ñHø GGGr±{Ö „R stM˲X Ã(ç¤Îóœ$ìž]×WÈ²ìøøX/RÊ¥ä‚Ífó½÷ܰժfYÇY­æM&ózÝ“R‡Á/ÿruo¯c;Îß÷çGA˜=›É¢(‘Ǔ˻Z®O•RØdõžcŒbà`0`3 ¸FÐòfòŸü“Ù·¿ý¢Ó9ˆãy››[½Þåææ¶a§§Ï÷÷F£‰eYÿy–}ýü|gw7‰ãÉx¼¹½}yq±ÓnKø<;kw:$gÿHœýÒY§Ý)Tqyu¹ÛÞíÝôš¦ë¸W{;{Á8ȲLÊøâÅ[‡‡Ý¢(z½›v{ûúú¦V«ù¾ûâÅÙÁA'އÐü1G•G €®aŽbÛŒq}z3I-&ÊyÍ(×›I=2oþ?>Àó9ya ! aÊPBæÊTBê/ZL S©„¡¿!…Åg1%3—B©¤QH©¤™ú‹–‘R™F.¥Ò_ YF!„0å£Ë‘ý30+úx‚PkNC*QEˆœÈëNЂâ(‡g* )\àI¯¯¯ë‹GQD8ÿf³éÿôžÿ úq+˲,‰½J­N¼J]JéN†Õä=uükŽcÿ°ùGùÿ¦ê7ò"‹×£Š_+ãªßRNýQàÿê[â !þ·õ?ðÒª|¨”šTÃf¥:­Î<ǵ sR ¿]9ù/¬·Ó$ù¿?Þøã¿òÖ>®)¥¦³Z£ê³ªëX–e&Þ/ ªÿÍ¯Ì ÃX__×A!uhEuEÇm$ü q‰Æ‚nˆq˜‰3ÄD0â6ê‘yóÿñoŸÚ{g4ÿ䫽ÿ™>Ð ½¬I8µ3ç-Ë2~â~÷´òÏ…Â\Hhø "äLT_~U õÿáWy.„r!°¸œªˆ<ÊÿÎi³È²ÿç?øÿýiÄt ½Y­þWQüîÞó Q“$ùùÔFÌQ‹ÕFrG½ŽÚXÎI}||œ¦é µqkkK«vP]¯.Ľý¯Õ›ÎžãØ?òH|§¤¬UZý=!D«òîB´¼Z·ÛM“¤ù¢¦î«{îÁá!j£aŠ&àjµ›u9'õë¨(Ô¥6>€®p;Jˆ>]*¹³üvl‘¥KÝyý¢(V<B%”RªPÅꗥܰՂ…*”Rê7¯ÓòÛݼ3†Ëêq[ª¾²ñ¯uŸÁöÖÖÅÅåöζiŸ>{~tt G¶mUüãͳoìîíÆq<wvvÎÎÎv÷v Ã8=}ÙíîÉâ¿´ßþÚis¿Û-Šââü¢Óé\]]5[M×u/Î/ö:{á4HÓô?û’ý þ³Ã£ã¢È{W½öîîõu¯V«û¾ÿüٳã£é4ÒDÔ]ÃǾ0Û12$òÖb(›œê¡àS;нQ¨ àUXËäB9G! õV¥TYŒrHÒD»GX_Pu”Ħ5SJ™yœ¤I–¥Y'išeI’†‘åY’¤„ÞIâ4Íò$ÉÒ$K³X8iG‡0Ä_þò—¿ùÍoâÁ8¡ïÒ<˲0:›¦IªkÌQQ12@ t &·N5Àƒ¸]æ/gù•…ß <´QçŽJoå¤gŒ¢¨ìTŸÞ•“Z玂 ND»ÛÁútNêjµòïÿèéÍFÃRÂ’B(Qý©eZ6D>§¦a¾õýUí_œ !-!,¡„5¡0RפÿYòâ –TâÏþìÏþâ/þâ¾nA°½½M;G£Ñh4âEì÷û|òcêšÝ•“z)X¬öÙlVÎ¥nå¤.;ÕCÝ(ç¤fd_ô(ÔFrR/ë³9© Öç½*'õÕÕÕÏš“úO^¹ûªô)…h¬ÕlËö×?J”öeAQ]«J!øîëf³Ù%°¯–\úâûþ“'Oþÿ›“:M¾8ÊßõB°T¢¿gYv[þv¹Rê3§ÅO_î;U¨<ÏMi¨¢XÁLEL ±zŽÕ­]ýò-µpi4èÎÒ8PÎ0ÞîæÒ¸•Å–FæUÿÒ«X € z½Q©Ñr¯¯¯qª'?°v&¢‘Ea…V5ðL9;R©`æ æ=!Z¢ÙÁ}ÞQJˆ0˜õ®{¶aU¦³8bÌz×=©D†+º†!yZyŸѸPïIÀAœsÐFº¦g"‡[–u}}M ¯^¯‡a‚y@Å4M–Ý#C˜ŽG±@è,1Ìc¨išv»Ý<Ï Ã \* bW ò=)Üqeˆ¢h_óòEþ®æ8N³Ùôj÷bÀRˆZ£ºÛn;–ã6V…×óÕݶ¢¶2,W­V#|Á„îwœ€á+¨E!áXQéš^ ¤”ð¢(êv»W Ë¸gÁX+äyÞívÕ# Ë…´ßï{žGOСi4™$„Ìǚžs0\^^æy6Eœð—“èÌ˘v ‰&³½ÿ`ù³‡bÎonú–iya´Âló›~_ 1›ÍVôq>ŸC Z¾×¥#SN 3Õ3h;]¦[6±cà¸j«³#óˆ’Ôëuœãêõ:!ëõ:&ò<ÃPÇÐp‡r4^‚!&yt­VÓ¡6ˆÒB  jqµ8Žëõšeßk5B8Ž]­VmË6ÝU†;Ûµ«Õª,… ¿óp§V«f…˜iš´“„Ú º¬½£–rR£–ƒõåŸÍIý(’`b×Ñ@P“$™Ïç:Ì qR”R”cžÐACÒuŽ_!„ÎRÚ¢QW(|ïwŧŸ~r|üd>ŸM§Óííóóóv{Ç0ÌO>ýäÉñ“Á QJÍÿé;§¿~¸¿¿GÑp4Úm·O_žîwö¥”/N_tâáPñ›¿ù›o¿ý6pÍË—/»Ýîååe«Õò<ïåË—ä™LÓôÉ“'Bˆ'OžEqyy¹··×ëõêõºïûŸ~úéñññR›e) >å®±U&êJYL—ë¨+|–Ç9/E·y,ºSk£Ñˆè*Bˆ Ø1R†!‘ó(ÇÌ(„ÃàŒò x½Â0$Ð!>üŠÚHX!DEa8C, C×õ‚ <Ó4à ¤1–eEÁx4Šã8˜NGžL6ë|aO€Au_° è¶Á Ít¾°¢mĪ%ÝÁÒÈ`R*‹qYâ“PÎMA G£© è2\}S6ê”? ]Aç) @†;;;lxvvvtBãÃPÂjµ³³܆<æ¨rl6ÛÛÛ¨ÍPH.H0wŸ`6̺Žã4(Šˆ»O ,šŠ!¸Ýn£0bòà:yž“\胴˜y‚æÑ¬êÜe{{s#ÃA×Яé;M¥Í¸Š€°£ºk ,Á.’'|þI„eò;O.ÆÜž q.‘ß™¦Ó)Lð¼D~Ç9îNò;h£&¿—ƒ³„aHà;Þª(UG0A«Í²ìòò´êêêÊ\d Ù4ÜÂë‘‘€ÄPOA¹8¼~¥^¿åp*šüð¼‚üže™&¿Sùã6ù®Á‘ÇXšç9#³BÛý™Ž‡‰ÅÃ`oo«.±<‰ ™G)µ¹¹ wXLÐ\I@'Þp­¤à,±˜¸·àYAŒ7U)Õn·YkwwwÑR‰‹¹··E‘ëºÜŽ{hë”*îR,ÒI£Ãr ‘ÆéîînQr‘á]ÆèðÁ:“RŠÆ€+P|}wwW±½½mš&åì?I¸XNÀEˆÐ¶»»[­V1Gé‘y)Go‡¹3ÊÒ¢éÈ»‚³èò¥%ˆÝ¾ø!KîŒÞ²ô«þ¢{Q¾Ëí+—?Å"bËí›Þ×ñÛb«ÛüÊaÔ§bV@ß–R^]]ÁÏdúbÓ³(x€mۈ͒-Z/EQ€.,-óùT!v©ápˆ¶U^  Œ–`ìÑEi`þ× jãl6+/RÊÛ ¨èíb:.-¬Vå6ß¹@`®ƒàD9j#+¬”’~//‹ËÈð(< \AÓ\‰-®°šæªq¸eš+a¹p!Òj£‚°\xGyž‡ÚHuÔFæO=‹²•Çp%”Ñ~¿Ï^Ÿ´EQ’ ¿w(£†aÚ¶½±±Q¦æ&IÕ Ç/âô# ·'@!a¹h34WðDÄF£Q9𫦹‚+ˆûi®xG+ˆGEsÅ 2jµ©¥ó<FD÷Ç+v“mÛ”ƒÙ!F{¸á<"žçÇcTH¶æ£Ñˆ$£Ñˆp˜ÄìA ]£LtÜ}í`„CÒh4Â2ôKu’3)¥8-ŠBßE<‰ K"¦»6yA)góIdü ™ápˆê£Åˆ·õ–‘‘RBáñ"‹iµ¹,Š*Û.šú(!„ïûRJw‘hœœSþWaX{¼$IR….Çᕲõò…y¯|Z¾Z¹·|~5 ˆÞâ ‘Ú¢ÛŒKLùjZ¬Ü¤4M ÃÐåt­|P.„ OIù¦üJ¡ã§Í؈Rh†–×åå®±¿Åõˆ_Ë£Àæû>^Ž,Ïœuu~½OÌ,EÊ/½–ÄÊm¦Ú´³tS-Fœþä³ù àœ•íLå¾È…ÿNs”¶,‹S¦?›+€5±Çhއl…uÜÆ|vÙrÊY 0ü ãOÂßq·‘ÿi:B‰Óñó<'Nä6VŸr DíRÉŸ])h¸š\=ä¦úâú [|\Z!Ö²ƒ ÍpØÅ€7èH‹ðd)n# m£1\œåÜ4Ë2j-%0!,Y „´í±¨Äít:Ï­V+ŽãN§“—’°@dYËIPÎÙñëì³NG»Ï.eŸ…Êaooo6›1‹­ÔgÃÒh4È<E ÿ8åít:ý~_+õÑ…˜£è|¶tbÝN§c,²[ÍçóN§Ãv;“NÐétÇÁ}–êQ)û,äÚ¬i®4£9 «i®:ûì£H-LRÞ@î à dh#p$ä÷^¯Gªò››!1ý\×¥§ú8ŽÞÝ zâÅÖëõ<Ïc+Ÿç9h#A-ˆª Œˆ¾©”â”6# „¹ƒLK#{½O§šŠ|ßG»” ÑmP Ñ#£ê©ù½lg¢œ`VÀµð›Ê)Ó! ,jãöö6FjÔÔF ¾Ú’›¦éææfÙHÚHÚvm¤.J™êwvv´ÚÈÅq!Ed£Ñð<ê³ÙÌó<®ƒi‡êျd¤¦Í¯1R…»h#µNdµ³³£ÕFm¤.ŠTµQ§ ÷ BÛ¶¥”֭öm´t˲P}u9„êð›—®…šC)uû.º¢þÔ7]úüvÛ,ËBèòrÃhª¾H¹T/ÿzgÃÊ#sgù,aZ’ C —Åt›iØ›ÿ““ZA¸Ñ¥œÔš¿ŠÍ†"¹+'50󮀪|_NjذJ)ÌQ°½ ÷èW@׸ŠúÅÅz™Xà xû÷z= W-ÿ )Jé¶”h ’·sRksÔ®Ðëõ¦÷ç¤FçW@½“ÍúQ,WX¢¹ÞvŸ%Ó椆æŠ9J,à‡ÉdÒn·=ÏcóMu`(ü)Èç®À–CÑññ±V9-Š ¡R© 6ÒæÉd‹I,pºV«ÕPÅ¢ìN~§IDATås”ó7œ“z‰æú(p|Óét4aBpÊ®R3øÐwC¥‚š‡˜ÎŦy‚Øo,Ëâ"ló4 1vnÓé¬^!óæ*¢©QþSncð¹h»ØÃ´”]Ê1GY "bº/¼åú.lY—F¦ÌmÔ§åš´ˆ9Šžb ÕdFTr}5ÖNdx˜$²”s>Eù‹–¹- ?—¾ð ,]\¯,_ª^¦ÆÜÙ˜;Û¬Ëï¼Ú’Ìí¾ÜW~»k5€ox<À¬À?Ñëå¤f)¡xn)XŸRj8,^^^"³»‘YÊïlYVµZE¡ƒu˜¦)‰h3•‚€ú¼µ°ž0¹®K× ¹ÒHš8Ôöû}LM4†% Š"Œ[²”“[3mC‡M^#'5zÕåå%Ô{vú8sR—“ b¥]J.ˆ×=j£(%$Æs9¹ eY:ÆóRrAÔFc‘\÷5MSÄP Ã@mÄW_«J©n·«-@œò¤”YL˜v„ÄÝ×¶±n·«ÕÆ$Iˆ`YÌ+ÍbB9]rª—R–“ ÒµrŒg\oycãµã™\PjóÇœ\;æürèµdxL‡“Rêxc<òe1jñZ/Å'£œm§>½¹-V¾©”R7&]œ–«Ó NžµðÒ]tuÄôMËwÑúi¹•b”ë›–Û¬åµpyd >‹9Jæg~Cëf‹§eYh¹Úð`ÿ]Å`0`bŸ¦œ•F@ wAç bC£•RR-Àl6£s2ŒSÀømðØú«€FҾض ®ÀŒ­¿˜¦Iìqxo¬P„hÔájؓЖÃòÄœ»ŽPáRJ˜Žãp;˲¸š¦Ë¹–,óÿñ…n·+¥dvÕÑ\³,c0nE])/q³@0Ùê9™rmŽ*ŠâvÔÖ‘n· _AP]±@€+ù…™ &‚€L¶È›¦ ®À$¬Ú¦»æ8À³žùoG]988 î¤)½ZaÃwŠr½@ÐežørÔV›£è‹z ~ÚEP mŽº¾¾ÆUŽÅdÛ6b¨px–ÌQX€(×v}&!æ(LƈisžF<.Tç}šL&Ô¦Ô6-¹ˆ’¤ÍQœ"`-ÌQ½°v²ÓáâèÂRJ°žçÑÃé‘m¤:Lü²9ª‹ äsT9]+›£¸øcQyñÚ.ÀÎ ?¤¢(HÛŽÚˆ¹YÏ aãHJ‰«ÎË”‡a8ŸÏá›·Ûmt…ÝÝ]ì¾ï‡aˆÿ!ü¥<Ïa1QnÛ6³ÕÙ´ÛmNÙâ·$„ }–n¼‹¢`V kzV mØß1CëÆàª…m #ÛæÝÝ]Û¶á!Ò6žxn‡ÚH¹çyÆ"S=MeÚÀY”Åîj£™G‹É²,)%–m/áË}åZô©Rê>±r9Ö ÀײQG—èÏ¥«-” Œ0õØÃ,0('œN§Š„¤‡:8‹±p‡poŒêà •J…->srEzÎÞ\Äp«˜´ñJ½P‚\ÄÅY Ò4-›£ Ã â\\\$IB›é, ÕÑa™áçó¹¹H.¸¶µÇ/f–b2™0ìe8>>–¥œÔ–eáDÔl?¶m£6𦹔“úøøò;FÔFÊ5®`ÆíœÔìPW°m\êÚ;Ê4Í2ÍÕ4M¼£¤”eš+§Ì=ø`AsåT{Gqñ<ÏÙñû¾®@c4®`.‚±isÕµÚè8 åÚ; EÓ\1È1ؾî”:==ýœ±0Gi ÍÕ6¬)Ž -bƒÁ°¶bÉ51GéØ1nI)±è ¦ËuLNQùUË—ƒ`Ðf±0Gé€T7M“ݦ6GÁ<Ó9BÀè×wV³tªksT¸¾è4 C,b•0ÇpNœb޲,‹ÓG±@!R4&£±£%äÝP£7e1fB} ª£kér¥T¹¼,v_ušw§˜nÌ’˜¾ %újK×)#Qåò¥6—ïrg38– ¦û®v{dô`¾ùÿø9P‰F–„ù„(¬PC “àº.8¶ãµµµQ) tVÜg)/'~æj˜²<ÏÓb–emnnFQí€r! „Ý"¥ÔWã}eõBEš» Ÿ$ mžÏçlX ¸80g Šzù.Ñg“ †ËÖÖV\J°¹¹iš& Õã8Îóy~ÕIØAè‘yóÿñoÄ5~Uî(¢®ŒÇãÛæ(Œý”ëÜQ¸ÁbBÀ%×bà :áÕ¹¸¸°, µQçw†d•$É’9 \¡lŽBs¶1V,Ë‚ ঺k777˜£(gu»ÓÍU‹A°d޲, rôz¹£9Š”£â–S=žçÖ-§zÍbZ[[˲L;Õw:û³)Go;Õ£ÁaŽZrª*@+L’„DVà B Eø3iÔh#§„SÁ©\Spøæå®Ývª—RŽ®pª×¹£´SýÑÑjã¹£èÚNõbŽzêŠúO~ÜwÓŸµ1âVB‡Ï¥r¼ùÿøÿ-žÄ¥5nã J•L¹ÑGG“D×|¶/fœ/ò j:U2å'a„ñ¹aË;ÑõAnYv ÏÑñÇÜÃk*Yª@Ë÷¾ós:*ýÙ£8½Äùm{Ò—…O®~Ê·?à>WË%Å„%°0%@Žâ’Nê„ô}?ó]Ü‘±Ü„Àüë ÍlvN¨˜ƒùë ½hÞóªøƒ€§]À¸ZL×€Z-ž…J®îÅŒ^,ÌŠzŽŽµ ž¿Cˆ-…<‡´ýts±3”j¬µFÉ”ñ¤—eŒQ `NÒíJL­xN:•'j\vd þ¾5 Q¬¿A¸ù»Ôsà"‚pagW”˜ Lï†y Âã+êºL¦åzùþíÇ"žv…€•pSËàSî‡U±2ÜBËÝs½´lÁ-ÖTö¨-wÎmÆwkÁÅß8½ô5ßm(Á5.¿«áf ‰&?rO•3º,>‚0~ ¶qí‚pÎ]:º:hãVsT–›r•ŽÆKbõ8£·>¼÷ÝòXÃBžåbfQ‚ ·xvµ|*€TÏ|Wß“º£jmÒiÑÅ|w3Àð{ÆØ"UðØwOÚRÞw7¹øaµ_á÷ úÁ,gW+Nôa³pµÿ^?ÏÃqÖ!é¤í¦{_ zö˜*™rËëpx7Vƒi›0Ï›KËÑÉ*ÄfzË­>¼Ž™±ZM NÓs#È5…¿é9nÞ :žuã:W«\“¬Å?A·¶Ndé鿤“òÓ­þD_I§\|¡_ñ̇«ÕŠ}Èì[àÎÕô7wûwª‡«íÚ¹¾ºøÚ*HvµÉº5ðÆ:í&«û$è„-.ä––¯„›¸‘[Ù¾seÔ2r-_ƒ©mÜëóT–EË-X¼x[}û Ïjkç3Àl·ÿ«ï¿íwOˆÒ/Âõ~m«´ÿàjúÔK.~j­_-µŒ\6Ÿn×—á `„é|þ¦ÙMê.*tfæ»ÔÊQû8šü²ß^q»ùî%Æ^éFÖ‘XÉmçg¿á«K:Yâ\®yXB[Íé©û:ÞMm³sH=ÆGW˜b¡ãƒ=ÆGïmš­¥]ͬi¼ §f·«Gª11nìÏC’Î)‚F¹I¢“NæqOµgƒéÅ`ôÎ*_EM‹ôªövÕè`W•†¡¿j?ˆzKÿ˜]eêϥ̭‹ÍŸóq7Lè6·x†<–” תkµ‹æ¾ d)$,y‹9a•äÁå[½t?xŠœPS”1Gÿˆœ÷þÿGõŽ ÃR䢱‹ˆ< ð9óYL(r:™œ¾«¤ßí3sµÿZ¬:¾—|IEND®B`‚giza-1.5.0/docs/samples/thumbs/sample9.png000066400000000000000000000044321477367113400204450ustar00rootroot00000000000000‰PNG  IHDR®‚ú ¬áIDATxœí\Ko[Ç>CI‘¢´Þ’-ëm%‘Ëv¬´±šÄFP´H€Ù¢èª‹¢ý]tU Š"èªY¸mºi$@Ü ŽÓÀHlGp\K¶eÙz[”"Š’(‹E“âãÞé¦ö¥s>Ub¯o’‹Þ >Œ¾9÷Á3ósFB‘ÌõM;Pš9îZiŽ»Všã®•fÞ]E¤©bÄrõŸ“æþµIõN4pc¢âLvJ÷_^È~º\;øî/ÅîÔ‘˜ó‰H]hjLú…É٤ɿ'Ñ?üQxƒ¢÷?øÁ¥ºô+©¿µÝÉ^IWÝ ®ªÄÉ©Š;_–­»+î·Î–ßÿ”ÇÜl¦_†…ïzrWG_xÞ“ÈèÉL­(Ú?£B3󤂾òßÝêö½ÑbÁ9/û_ЇɕÐÈ}ÿóF…÷¡¡f&S’jüÙ÷ÐE\~1\x óÔ~ÿcí#¤]—•envª¼:ëc¯™ T%ö1½<¸]Áy©œmªÜÍÐ@uºЖ§ød9—Ь2”ˆ–óêT+hèJ …´¹Ñ@E€Rt¢É¨}‡E/Be"8€@у¼Ï@ÚFþ®âˆÃž$‘Àßáh1Šþïö _«Ù×]e(.UAŠAc‹³uË}~•¥‚Ìç`²©Êf€jhs58ÀÇj#Ú•÷1înÄË–Ð/œN†ßñsië: ¹7×A¤{‚Ï&"«Æ6θFïµ õlDw·Á Ɔ®À}Ï)RÿÇutÉÿàƒª£F:¸ÿ( èE»¨àˈÖû8¢} ÛÖVãsÑ•›ÝéïÀPíîCíÈì`Ž»Všã®•&Ñ2­àþAAÕ s6;erLÓÊKÕ¾CàM´H«khh„­ MÈ¡0V/‰ò !«Ó)€ÎP·´«.Kr˜Ôv™ð@7ÖÐs[[@´Q$8ÓkÛ‡5º(Æ ¹ %ÑsËeÑXÄJ´ \ }%ЬÆJv£DFV£Ø‚O"´.õ­fimÈw­4ûº‹•ð·«fl¸{÷/‚05óÁeÆËL¡€4} -Ü^W¼ùQ܆xÆøl¸; ó\¤šíÜ ÆÈëk̉ Ž¦Ï¿ .­ì2ªKU“Õ?¾`x`hµÞ‰¦z6VtLÖù8ÅÑ?ó¡äé[©íàsˆ^ßok9('@fZ<[0 wk~Š6 ‡zP´öC!ÛÛ @WJull“‰âÄé®Jؼ>.Áv̾Ìæ¸k¥9îZiíÙI× EU5]‡(YC+¿x܇"à ªq°œÒ¡Ú iÚ¸üXNUnÈÅsµJœ@’5?ÐYêä¨Ê œ'Àò ç‡º&éNþ˜oÎËÅ–JÍv°¬„ Õ/ûýl,MªÇø÷B›«áwGO-5Úh¢›§Â%•£—„*yYšHÖ¡æ_;ʰûèQøÁP¡{P‰­‘$Tz%^"?,ô†àJß+mhhJ$QÓת„­ÙÙ,î:îZiR C}3CO ´EŸ w3¿y ,œúç÷CüO@4ëý Ñ÷þ™.ÄÐ5ćAï‹öɃÀpW{ã2¸;ù?,ƒÉæÞܼ#ã<Ÿª6†GQýø¬?GR,äš mÄ}ÿ/’¬o£ŠîÑ3@Èz~–å½Iâ±_h Çéz ºþvPjö lµwÝm€`‡&IÑ‚PÔ‘F+a–QaœŠ¯Ö¾‘Áæ¸k¥9îZi6sWn‚ý½JÅQy1G!…Ð$Å­ Ý”a°DRt…ñåYª(B# wÓ´ ùd o§R‰cš`Ë™J!Án¾9 yC5µ¹xcqâ˜ææ]Ìé#äbúæa>”V]4q‘³Âè<)yn£bq2Лvxœ£”:» Æ.锢¥¥¬;+Xö]´¨×4rD)Ñ_ÁQá?‰Æ66‚·Ê“„Éx?h¢#ª‚Û•„J8™].Á,޶Òìë.‘Xon£ Å9¤h©iµ[aàÃÜÇ#\&ÏŽ}ÂD öi¶ìU€JŸ›ÅçñÁ[ K9b QHk³¸ë¸k¥}SîþµÛ]Ý-AÎk(ÌQ­oÙQPö¤ù3 +œ{ûFN·ÈÝ$úgê"JÔnü ê¿èöËomúùài>4û«WþÎïÃí×~ùþ´h‘  0%úÐý¯x ¢æ Ò’Ž­?ìã­Tòø=œ öñˆ¡Cw•m¼ÌKDÔXL¨ÿFþÅõ®÷êþùëÕÞ>Ýú5ýqŠ­„ƒ·u¡¼‡©@f¥9îZiŽ»VZ)o÷~ͤƒ·¥ÐÊi$RÖ¡d]…’u¡1¨„MÓnáðõ­5›½»Ž»Všã®•f3wÿ N/F¾¡q’IEND®B`‚giza-1.5.0/docs/style.css000066400000000000000000000047651477367113400153020ustar00rootroot00000000000000table.api, .header, #menucontainer, body { font-family:sans-serif; } .code { font-family:monospace; } h1, h2, h3, .header, body, .code { color:rgb(51,51,51); } a { color:rgb(0,141,191); } .header, #menucontainer { text-align:center; } body, .code { text-align:left; } .code { text-decoration:italic; padding-left:10%; } .header { font-size:17pt; padding-bottom:5px } #menucontainer ul { /*padding-bottom: 1px; */ /* padding-top: 5px;*/ padding-left: 0; /* margin-top: 0;*/ /* cancels gap caused by top padding in Opera 7.54 */ /* margin-left: 5%; */ background-color: rgb(51,51,51); color: white; /* width: 90%; */ /* line-height: 18px; */ /* fixes Firefox 0.9.3 */ } #menucontainer ul li { display: inline; padding-left: 0; padding-right: 0; padding-bottom: 5px; /* matches link padding except for left and right */ padding-top: 5px; } #menucontainer ul li a { padding-left: 20px; padding-right: 20px; padding-bottom: 5px; padding-top: 5px; color: white; text-decoration: none; /* border-right: 1px solid #fff; */ } #menucontainer ul li a:hover { color: rgb(0,141,191) } table.api, body { font-size:10pt; margin-left:5%; width:90% } p { margin-left:5%; margin-right:5%; } dl.toc { margin-left:0%; margin-right:0%; } ul.nested { text-decoration: none; margin-left:5%; margin-right:5%; } a { text-decoration:none; } a:hover { text-decoration:underline; } h2 { text-decoration:none; font-size:12pt; font-weight:bold; margin-left:5%; } h1 { text-decoration:none; font-size:16pt; font-weight:normal; } h3 { text-decoration:none; font-size:14pt; margin-left:0%; font-weight:normal; } h4 { text-decoration:none; font-size:10pt; margin-left:5%; font-weight:bold; } hr { width:100%; size:1; color:rgb(51,51,51); } table.img { margin-left:auto; margin-right:auto; background-color:rgb(51,51,51); padding:5px; } table.proto { width:90%; margin-left:5%; margin-right:5%; padding:0px; border-style:solid; border-width:1px; border-collapse:separate; background-color:rgb(220,220,220); text-color:white; } table.api { width:auto; margin-left:5%; margin-right:auto; padding:0px; border-style:none; border-width:2px; border-collapse:separate; } table.api th { border-width:1px; padding:1px; border-style:none; } table.api td { text-align:left; border-width:1px; padding:1px; border-style:none; } giza-1.5.0/docs/title.png000066400000000000000000000166111477367113400152500ustar00rootroot00000000000000‰PNG  IHDRÖmÝsBIT|dˆ pHYs × ×B(›xtEXtSoftwarewww.inkscape.org›î<IDATxœíyÜ]ÓÕÇ¿yD%¥(E5DÈKÍ,-J©šÇÆT5¥ b¦¨Þ˜SC¨¡Ú¢¨!b(BEêE 1,‰ jH‚„ÄP"‰Hž÷µožûÜç {Ÿ{νä|?ŸûIrï¾çìÜ{×Ö^ë·º´¶¶R’"ò`K``y`Y`9÷gW`ð1ðð0\U_oJgK ¥KiXÙ‘ï;`Æ´%°J†Ë¼ VÕkòëYI³) +"²9p°°HN—½8TU?Ïéz%M¤4,ODdIà@àPà‡Ýæ`CU[ÐõKD×fw ³#"Ëgý€o{¼e:°6“u ¼Ýz@_àÎÀ÷•t2JÊAD¾œ,^óòlàl4˜Py¨ê'5×XèîqëS( ëO¹Œ@Dv.V­zzp/p70BU? ¸ÞñÀùÀžo顪S|¯_Òù(g¬*Dd5à àçUOîž»8Ë]DNÎ |[貤“Q–CD¶n–tOÍ..ª^Þ^³'pF>=,ù&Qó–jƒ1§Àhà7ªúb—Þè–á}åúüÎmX"²pæñ˜œØ~Ã-~šá=ïåpï’&²À–ˆôî6vOMvÉa–ªfN†÷ÜXžc}óY KDÖîÃâùÆ;©êû9ßê‹Àö³€ërîCIhivˆô Í¨î~Z€Q<Ø~€ªN( % f2,4;;°ø¶ü Y|¹xγíyªzcAý(i0 ̱ˆ|ø?àÇú‡Üw%àz,ú=ЉÀѪz_Ñ})i ’a] ôwÿ¼BUhཻûkº§_p»Tuf£úRÒÑ=±eÀÀVª:»‰]*™Ï™ï KDVÆßÞÅÒ2>ln¯Jæwækç…[‚Ý„ÕL oiT%`¾6,,1±ý0@Uµ™)Yp˜o—‚Î ø:v^u©ª×ä.•,@ÌÏ3Öï0£zÉý½¤¤aÌ—3–K×xXØZUnr—J0æ×k fT÷”FUÒ æ;ÃrjJý€¯€šÜ’”NÝ."‹cбË`îñO)Z{ajJתêøÜ;Z…Ëçú!&6³(0§ªÓ‹¼oˆÈbÀJÀ°Ïy‚ªþ· {õVÃd^Ì)×-K?ºKK¹Çb®OŸV=>WÕº÷GMÙc‰ÈRÀV˜¶ÄVÀÊÀ·Þ2ûò?¦`ñu7©ê³5×mÁ”“VÁ‚GÐ÷E07þ˜+¿{M“¹ØôEÀmªš%'+wÜ™Þϰg;ìVˇÀãX¢ç³¯‡Þsq,N²oÕÓcÏOÕ{}ûol†…’mô!]Od.ö…Eé<¼:4̰D¤;¶D;XŸèeh+6ê€éóõp¸ôö—€k0#ûXDvîžQÕcÞ“µÿ]€#0y²åSšWxøE3SAÜ`s$&¿Ö+à­'ªêóuÜûà·/}¬˜UK$åž«ûºGŸœ.; œ£ªïú¼¡pÃr©GºÇ2Mfaq|÷#k—}î½)ðKà×Àwb®qЙTÕ!9ý‘¥±Ží3¼ýc`WU}2¯þø""k×ÒÑÊ,à8U½"ãýÇ`"¤Qœ¤ªƒ3ö+ê^kƒ€Ýòºf³€+sÓ"x 3,Y;?:ƒŽË%°Ùi(–¾ñ¶ç5WþŽ-ãhVPÕÉa=޽çÊÀcÀŠUO¿‡%KþÇ=ºaÆÑZîÓQÕ·òè“Nví,’—ؾ ú‡.‡DäâÓeîTÕ=ëí˜Û¿]€ÍPqθÿbZ"ï`ñ¢ßƶ ½‰ìÓxØBU'Æ5(İ\êûß cš|쫪Ã3\»›ÝvJh6ø¹ª~zýš{}x XË=5ø#–”ØÁA!"[`ÉQÉh̸ ]"¸í àœ/}°_ÈžQDÿóòÓªºI=r’uCho­À“X‘‰Ç€w’œ2î;^+½t°¶çí'aÆõVÔ‹¹–)Ï&^õõ}`GU}¡Ž{,Žeæ&­¡GÛfÍŽ0à{cTõÍ”÷]O›êS-;™Ðè¸nv)è7øŠÝˆÈöØ@ÅHUÝ!kGDäØ~·âŒ˜ƒ9JÎñ]Å\woàj:ÊŠGñ:°fÔLžÛ9–ˆt‘?aª¯qF5 ÛÌg6*7™Òlàg Y¸6£ºØ-ͨ·$¼vtƾ¤""]RœQ-·Bö[cç‰Q¼•µ"rp*mFõ"°Žª\Q¨ê?°}úTæ}€ý£^ÈŰܗz#é?œ£òpã:nǦã$~†•Ý BDŽwÿ|Ø?@’,©OÛ‰Èÿ„öǓ˭ ºv5Dä|Ÿ†n¹ütÌ˱û“$Dd0V¬¢šu€ûDärWU³.\•ÍðN=Õ-¿Û‘׌u1–[ÅýyV-tÓïÝM9Ϥ"².m£ò(`wUu£H*–Ð8*àZ^ˆÈ1X!¼Fq’ˆœäÙ6ê¼ lv BDvNŒyy%ì³}YDÒ~‹©¨êHàßMWÃWí¨Û°Üžê—)Íæ¾_Dc<Ú,„ˆÆ\„-eÇa{¢Ð(Š´h–]¯—ˆˆü¸8â¥qÀ¥Ør¶7v¨}#‹·8_DÙUmY3â¥'Ck/»}õåM—n‘…\?†[=Û­UûD]!M"²-~?Ú!ªúR=÷Ša¬g»Däè´™GDvÀ–Ss_g<ÀL[êõ‘–<Ôn]È5´i΃…è ªµ3ÂD̃Vý½I]¸BD6~qþ¸ñâ£×f¸×@ §gÛl°Ù,Ã}ªñÍ6ï0xd6,whz ~³^–Ò‡žíº?ÂBT"qëä Ý?¯¬#Ûxõ”×»b1‘d¼~5§×Üoæd—ô&U}xÐ-­Î¡¾Ò¯ýíEd¶tZ;»Šs¢¼ˆ3p_Üws``¿V l…¯}¬VûD=KÁS±eVcgAEàã­°EÊëý±‘g ñg/>¤ø‡DÅâÎ _õÔSÀFiFUªÃÎmö&aÐñ 'vn6;ç«Uí™×\¬€yhîVÀrïÉÃÐÁ)QèÍEdE,Dɇû D oŠ#vÙ#"‹bgo'Ôy°ìsÀX·ç ;錨S€=³,]Uu®ªÞ®ª›`Ë·zt[1Oê^À°š×®TÕ8/aœäá}ö±:l1²Zõ@¢Cw¢Ž® İ’tOÄ‚}QÕ¡Y;#"Ëá÷#¨k4‘åJ8ÐàWyhÏ«êUí¬€ œ·aá[I|¼<Š-¥û;c³à^U힣ý ‚o‰Ùj2UÄy4k™UûDðË­w÷ðl>ÓJ/Š¥`RN×BX<_½ê¸{ã·|òˆEp$mßÝ™ªZ|!U üÕ=‘e°ÙÒ˜×í,‚æƒZ_—ó4 3® ˜§ö)S/¾3e‡NçÅÆøí­)‚+Ö°Tõ49;uÜ}=ÚÌ2'`ºô›îŸOv” Uýbx"² ¶”¬öŒN¶¯SÏq8aûÞcs’íþ‰g»WkŸÈ²$Ù1 m‘Ë@3¬Ä}S½F%"«ÐVÄ.‰·UµÃÒ!€ý±™£8¾è ^D¤»ˆü3ôj£úØAUߨçúªú ñµ\§ª7Ôs?˜WîÉ×½ÿJíY Ë7úüÏ™²uøǨÂzaøîê]ëþ¼UU}K†ˆlŽ}ÏÇÓþ÷4Ø4G‘Ô}±Cï8æ`gWy»ð­ÀR‡Ú‘e)’¿¢U„ÛëùFGÏÀRŠêKo,åÝ‡Ì "²56˜Ì¼‚MÃèçcûÊZžÇ2r“óVÕ7EdS,™qs,Ú¡3à±X*Oælç|—?:þf1,ï¸; 4,,zÝ×kópÁ¥rÎÆÿ³¬gSý pðZ½QÜYq*X±€ë¨$Ê{1/eîÅü\VÃ1®Ý–"¾3ÖsQQ4Y +MŒ£šBT!é—Õ wP»góɪê߉‘÷JmX"²0p8í5 }…Í¢—4bß§ª¾Q7Á¸ÁÃw›¹÷ËbXocA>9cíœÞ€gUõ_öcþ{Õö£0DäXú{\béxl–š_ŠNlŠÿ’›a¥å@U˜‹©ÛäŽóÀùÆ· *¢®›6sæq¶Ò0DdC,D))l(px öc§Á‰­F›DÚF˜Š˜/¹Ö“˜ZR_¸$ð­îÈ¢«À¹m?ÂB}:=®Xß¹À~ÄÜã1wÑG*¹âþoÕF$Ø¡w&¸3¾d1¬a؉|Z˜ÉB"Ò¥ ã:À£ÍØž \êÅ–où[çW…ãÔqOÆ\çQ‚8`ËûAXi¤Іãö…`ŽˆŸ`K¼ oiÅŽC|³¼cÏÖ‚ Ë cŽ~‘ÒtQl/–«Ì³ûHË#jv¡9E²Äüš0­ˆ†â–C`z%q‡¢­˜XË©ªšGÊKî¸ÿ‡`Ëó-°)n€û^FcÚO¸Ç²$Ÿ—U“Ÿa9NÆ"0Ò4ëÖ#GÃr#ÏòëXU-ÌQ ";b_š/ÃòÒ9Ìù1æ5Mõ…}¦M?®Å%{n… uîBz´ÄXpñ£˜[;?€ˆøn3 oÃRÕל|pZºý.عK^ "Ý#yºªú¤p×Ãéí‹îO0Nèò|,D*n5ûŽoî ¡SÕ8Çʱ˜.üb)Í?ÄÒì‡zˆù˜3Iˆ,ª'5 –°—$ܱˆœ”ÇÒADö"=lè|U=§Þ{¥ôc;Â$›Ç¨j=I„¹â¢ÏÇUi–(LÚ,œ”Ýn˜ýæ)ͧc²ãC‡r}µ2žOŠ/ÍlXªúµˆôÃþqcßÂ$¦ër"ˆÈ–˜²n3Ãò¾ôàŒÀöf¶‘=°œ©¤âÀßyj(6„ªÃéc1ÕÚ$&a+ŠÛUõËÀû,¬ëÙ<1(¸.1Êq˜ˆL§M‡¯–ÃDd¬ª^™å"Ò¢óBNú6bý/"Û`¡T¾L%YÀ³!¸èK1Å8žÆ øH~5 WìàÌ»—Ä ì{pQëáŸTYœaUPÕDäCâ üYDzðMÏp­çÂó5pp†ªNËÐí,„î­®)8F1§§x¦G—€ùæé«M£o*nÙ÷;,3-[}$0@Uß©ó¶!’i‰†•«v»ˆ|Û{L´Çp,æv¾3Êî´Ç·Á\ùû?z<€Nvȃ) Ù ©g<è•× 9sN,Óä=L¦ûïj’dBDVÅf)Ÿ Þ˱RCuÿDdé³`1Ÿ‰º%EUYÝ$z¤üxK•Fý>VÙ1ntús“ÉQ¦Úy «àèË?T5MÈ4wÜàv-ñ)5ŸaK¦ËB÷ À…«=MzzÒÌ rÛÊÈkø«»CUƒ¡‹ªAü¶ ^…è8³®X|V=¶*¦buã€û€2Èfå‚sí†@nEÕ|‘=±ýhTôù,à/Ørüãõg,âa”zÞ+¡{~9¿VÕ›êìbõ½—$ù÷XMj6sn†åÖóý°ƒã͈?<žƒÞ1÷€Wãb°šDhªÆ¿rNºKDD–À–DQ¡^s1½¿ÓUÕ7€:/NÀ„‡†’àéþDGá” X¥û»ŠîƒïÚ$M¨Õë–€=¯ù˜Sl*_ÃòR‹ 2,·Bô>XU/ ¹Þ7„ržowÕ˜WÎæÀvUOÏÁ»ÓŠLY÷ŕЩ8­ÒÄD+Ê»>ä¡nÛ—£•”NRM¾†%"¿Ç"Ë£ÜçïÓ/XшUªìPû(‹ŠÜ?:e¤{iŸ=ýpP'‹} 1¬\õKÜçûÒå%ªI+îP‘Ûö2¬¢6¾ßs¸}ÌlŒ©z¼P„tq>K¤/ÚBÚ>œêþükŒ'ñl¢MGa1X•‹>˜ñõ'¼œh-«cçcç‰ÈP,˜wt\Œ¦›Q\Dûlä‡Õ¯fWH)ÒzgèZÎÁ±_ÁO£r6 šš"²Vmf¼ªþÇǰ&Læ+/Æ–bëa_@«ˆ¼ý¸îÀ–`EÎj>^(¯“øjDdmLäK" Ÿ» ß¨ÿ¬Ø@µ!¾Œ‘Á˜çöêÿ.ŠÕàÌtû±ç±¥Ð$, auÌUþýˆ÷ûÖ²  —ÃaÙëãìsöz3Ås²ûs8ø¹Û¯Ç‚)ãòzIl„îƒ9U>uûƒ TµÞò8QøÌXY´ØOÁþ/qŽƒ¸eÔqçdÎ}¨Û×^G~ÖÝ0_ë¢#BöM?Æ–nuᎮÁÍ=ñ÷Æ~žN¢b{L"î&ðpuªê»XøR³÷;Q,‰-ƉÈÕ"’GÑìj|A5ÀÄJñTŠ(tÈ%r‡Àq–[§]ßE}ïIqKø$&àªxòB@ÛŸHD䇘ÀÌ·€~.Ô*NP§–^.·öš[W»^WqØx!¸´í-û IW,kyœ;GÈ‹!$ õBD¾‹­º7ÅDoHüRn3I­b©ªÿÄ"˳9Ø?p¢eßG¬È]&ÜQгØû`U½Ç½äkX]€Ë° "²¦ˆœ‹ymÆHç9¡¼+:ªêÓªº>öÅÿ¿ýG£YÛoÄ©FáÒêÓÄ`Bê…]‰IÆMÆRm¢HZš,„_9V\…•mhÜ÷tªªú–3@UÇ/¼åf— éˆ|OD®nÆŒèQÚïC20ú_ŠÈ{X¿O¡M÷ý,­*´\*UUG«ê‘˜å¯ŒåÐIç™ÍºW:ý¿<¸[;Ç‘š~/"ÝDäbÚܱ%„ç¤9B|+¹£ª£°Ìç¢ÓwÎRÕ¬±¢i¢¯Õü€d¼yˆÈ¢"2[žVŠ¡ß ì^ã„xŠôUI5]éè°ù5Ëú`Í 7 fÿ#ì@8îô.ö¥~‚œŸbž°îØèQy,iä)ð6°f),"2œä '§ƒ¢ÔbEdcÌ™P‰2¸JUccÓD¤/&kÇ…ªê[ï¸rÍå°•×lÈYªzf=p$!°#±Ï\+Ÿ¹SuêÉM÷Åœ •=Ñ—˜>Æßbîÿ$V ï[©êkÕO†D·W\°'`Ë™(Z¹Ç³XÒŸWRš3ØÞXjöÀϱÑ6䯚•0èiß_M,µÅt'OO;ëtQÃH¯ S¡“ñ;E­.rb Ë¥œ‰…ÔÇyNÞþŒ SºIv?ˆ Yz¨ê”œúЋ28ÿ¨W°DoAL÷EŸŒí?–Àöã²Ä$F\¿v„raü/c˜+‹Ò"t‡·ƒ‰>xNãlÉ{;&èã½wrŸù¡˜pÐú˜$_-“ݵoPÕDŸB¤a‰ˆ`Óãª1ïkÅ<"5RìÑ¥¤_NXDòy«¼ºó²Ø,Ú[ŠTøû>‚E­Ü_Oò£ˆ,årŽ("aK±5°åó X\b+V¥ãml9u]¨×¯Ž>uö»bQ?ËÓ~pÿËõúÐý9‹Jy8¯Œ 1mÌ °Ïb²{LŒÚGGÑÁ°Dä`’+6ÎPÕ<ËóáÂwNôlž»aEôg)Ì ¾l–öa^¸‘{à¿)Áíñ¦u‚àìTÚ–ˆü[Çmn§»:7nÓpÁŸãðSOÚºQªI%%æc‰•x¹†x£zظÙFྥJ#7—%%EÒó¾®"ùÀx€o¾ƒð…Þ+´%%T é2¢õ¾+Ü¥ª#Ðo\¸QZôù8í¤µKæoZœ÷cŸ”viÚÍ"-€2$ȳ¤$7ZðSzít›±BiQ¥a•4…ì¬ ‰Yq§ËM&Mäf–i\RÒpZH¯EÔ¨2¤¡ì’òzš¦]IIa´à¯ôÚi‘ž$—Öù Ç*)i >†ÕÓíg:ƒhK ˆâµq¿KJ:Ђ%‚¥R PœÌT¿„&£È¼›’’FÑ‚E§áSI¼pDd-¬¿qÙ3€Ã¾#Kæ3Z0Õš4ú9 ñ¦á Œ$^†m°K'+gS²€Ò¢ªo‘^Ы;ðùÜpDd,s6.sy&°[l[ÒY¨¤æŽé!$E‹ï錟œÐ&W\ý¤A´‰D1諪5¦W%%éÌKq o’ìmK€&žòYÕ£›}w%0]…ž׊%a^¡ª±¥TJJ: >òg;cûÍ «gT/_ÿÆTqníLú %%ix+ấێ˜bé¶@ª8 _a"Ÿc‚ŸÏÌ5ŒKP‚%¦ažœo/¬^åÑ 3¶ï`ž¼Å°ó¯˜³¡ú1 M{«ä>©ŒF/™_øPŠÆ¥é»IEND®B`‚giza-1.5.0/m4/000077500000000000000000000000001477367113400130045ustar00rootroot00000000000000giza-1.5.0/m4/libtool.m4000066400000000000000000011253061477367113400147220ustar00rootroot00000000000000# libtool.m4 - Configure libtool for the host system. -*-Autoconf-*- # # Copyright (C) 1996-2001, 2003-2015 Free Software Foundation, Inc. # Written by Gordon Matzigkeit, 1996 # # This file is free software; the Free Software Foundation gives # unlimited permission to copy and/or distribute it, with or without # modifications, as long as this notice is preserved. m4_define([_LT_COPYING], [dnl # Copyright (C) 2014 Free Software Foundation, Inc. # This is free software; see the source for copying conditions. There is NO # warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. # GNU Libtool is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of of the License, or # (at your option) any later version. # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program or library that is built # using GNU Libtool, you may include this file under the same # distribution terms that you use for the rest of that program. # # GNU Libtool is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . ]) # serial 58 LT_INIT # LT_PREREQ(VERSION) # ------------------ # Complain and exit if this libtool version is less that VERSION. m4_defun([LT_PREREQ], [m4_if(m4_version_compare(m4_defn([LT_PACKAGE_VERSION]), [$1]), -1, [m4_default([$3], [m4_fatal([Libtool version $1 or higher is required], 63)])], [$2])]) # _LT_CHECK_BUILDDIR # ------------------ # Complain if the absolute build directory name contains unusual characters m4_defun([_LT_CHECK_BUILDDIR], [case `pwd` in *\ * | *\ *) AC_MSG_WARN([Libtool does not cope well with whitespace in `pwd`]) ;; esac ]) # LT_INIT([OPTIONS]) # ------------------ AC_DEFUN([LT_INIT], [AC_PREREQ([2.62])dnl We use AC_PATH_PROGS_FEATURE_CHECK AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl AC_BEFORE([$0], [LT_LANG])dnl AC_BEFORE([$0], [LT_OUTPUT])dnl AC_BEFORE([$0], [LTDL_INIT])dnl m4_require([_LT_CHECK_BUILDDIR])dnl dnl Autoconf doesn't catch unexpanded LT_ macros by default: m4_pattern_forbid([^_?LT_[A-Z_]+$])dnl m4_pattern_allow([^(_LT_EOF|LT_DLGLOBAL|LT_DLLAZY_OR_NOW|LT_MULTI_MODULE)$])dnl dnl aclocal doesn't pull ltoptions.m4, ltsugar.m4, or ltversion.m4 dnl unless we require an AC_DEFUNed macro: AC_REQUIRE([LTOPTIONS_VERSION])dnl AC_REQUIRE([LTSUGAR_VERSION])dnl AC_REQUIRE([LTVERSION_VERSION])dnl AC_REQUIRE([LTOBSOLETE_VERSION])dnl m4_require([_LT_PROG_LTMAIN])dnl _LT_SHELL_INIT([SHELL=${CONFIG_SHELL-/bin/sh}]) dnl Parse OPTIONS _LT_SET_OPTIONS([$0], [$1]) # This can be used to rebuild libtool when needed LIBTOOL_DEPS=$ltmain # Always use our own libtool. LIBTOOL='$(SHELL) $(top_builddir)/libtool' AC_SUBST(LIBTOOL)dnl _LT_SETUP # Only expand once: m4_define([LT_INIT]) ])# LT_INIT # Old names: AU_ALIAS([AC_PROG_LIBTOOL], [LT_INIT]) AU_ALIAS([AM_PROG_LIBTOOL], [LT_INIT]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_PROG_LIBTOOL], []) dnl AC_DEFUN([AM_PROG_LIBTOOL], []) # _LT_PREPARE_CC_BASENAME # ----------------------- m4_defun([_LT_PREPARE_CC_BASENAME], [ # Calculate cc_basename. Skip known compiler wrappers and cross-prefix. func_cc_basename () { for cc_temp in @S|@*""; do case $cc_temp in compile | *[[\\/]]compile | ccache | *[[\\/]]ccache ) ;; distcc | *[[\\/]]distcc | purify | *[[\\/]]purify ) ;; \-*) ;; *) break;; esac done func_cc_basename_result=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` } ])# _LT_PREPARE_CC_BASENAME # _LT_CC_BASENAME(CC) # ------------------- # It would be clearer to call AC_REQUIREs from _LT_PREPARE_CC_BASENAME, # but that macro is also expanded into generated libtool script, which # arranges for $SED and $ECHO to be set by different means. m4_defun([_LT_CC_BASENAME], [m4_require([_LT_PREPARE_CC_BASENAME])dnl AC_REQUIRE([_LT_DECL_SED])dnl AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH])dnl func_cc_basename $1 cc_basename=$func_cc_basename_result ]) # _LT_FILEUTILS_DEFAULTS # ---------------------- # It is okay to use these file commands and assume they have been set # sensibly after 'm4_require([_LT_FILEUTILS_DEFAULTS])'. m4_defun([_LT_FILEUTILS_DEFAULTS], [: ${CP="cp -f"} : ${MV="mv -f"} : ${RM="rm -f"} ])# _LT_FILEUTILS_DEFAULTS # _LT_SETUP # --------- m4_defun([_LT_SETUP], [AC_REQUIRE([AC_CANONICAL_HOST])dnl AC_REQUIRE([AC_CANONICAL_BUILD])dnl AC_REQUIRE([_LT_PREPARE_SED_QUOTE_VARS])dnl AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH])dnl _LT_DECL([], [PATH_SEPARATOR], [1], [The PATH separator for the build system])dnl dnl _LT_DECL([], [host_alias], [0], [The host system])dnl _LT_DECL([], [host], [0])dnl _LT_DECL([], [host_os], [0])dnl dnl _LT_DECL([], [build_alias], [0], [The build system])dnl _LT_DECL([], [build], [0])dnl _LT_DECL([], [build_os], [0])dnl dnl AC_REQUIRE([AC_PROG_CC])dnl AC_REQUIRE([LT_PATH_LD])dnl AC_REQUIRE([LT_PATH_NM])dnl dnl AC_REQUIRE([AC_PROG_LN_S])dnl test -z "$LN_S" && LN_S="ln -s" _LT_DECL([], [LN_S], [1], [Whether we need soft or hard links])dnl dnl AC_REQUIRE([LT_CMD_MAX_LEN])dnl _LT_DECL([objext], [ac_objext], [0], [Object file suffix (normally "o")])dnl _LT_DECL([], [exeext], [0], [Executable file suffix (normally "")])dnl dnl m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_CHECK_SHELL_FEATURES])dnl m4_require([_LT_PATH_CONVERSION_FUNCTIONS])dnl m4_require([_LT_CMD_RELOAD])dnl m4_require([_LT_CHECK_MAGIC_METHOD])dnl m4_require([_LT_CHECK_SHAREDLIB_FROM_LINKLIB])dnl m4_require([_LT_CMD_OLD_ARCHIVE])dnl m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl m4_require([_LT_WITH_SYSROOT])dnl m4_require([_LT_CMD_TRUNCATE])dnl _LT_CONFIG_LIBTOOL_INIT([ # See if we are running on zsh, and set the options that allow our # commands through without removal of \ escapes INIT. if test -n "\${ZSH_VERSION+set}"; then setopt NO_GLOB_SUBST fi ]) if test -n "${ZSH_VERSION+set}"; then setopt NO_GLOB_SUBST fi _LT_CHECK_OBJDIR m4_require([_LT_TAG_COMPILER])dnl case $host_os in aix3*) # AIX sometimes has problems with the GCC collect2 program. For some # reason, if we set the COLLECT_NAMES environment variable, the problems # vanish in a puff of smoke. if test set != "${COLLECT_NAMES+set}"; then COLLECT_NAMES= export COLLECT_NAMES fi ;; esac # Global variables: ofile=libtool can_build_shared=yes # All known linkers require a '.a' archive for static linking (except MSVC, # which needs '.lib'). libext=a with_gnu_ld=$lt_cv_prog_gnu_ld old_CC=$CC old_CFLAGS=$CFLAGS # Set sane defaults for various variables test -z "$CC" && CC=cc test -z "$LTCC" && LTCC=$CC test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS test -z "$LD" && LD=ld test -z "$ac_objext" && ac_objext=o _LT_CC_BASENAME([$compiler]) # Only perform the check for file, if the check method requires it test -z "$MAGIC_CMD" && MAGIC_CMD=file case $deplibs_check_method in file_magic*) if test "$file_magic_cmd" = '$MAGIC_CMD'; then _LT_PATH_MAGIC fi ;; esac # Use C for the default configuration in the libtool script LT_SUPPORTED_TAG([CC]) _LT_LANG_C_CONFIG _LT_LANG_DEFAULT_CONFIG _LT_CONFIG_COMMANDS ])# _LT_SETUP # _LT_PREPARE_SED_QUOTE_VARS # -------------------------- # Define a few sed substitution that help us do robust quoting. m4_defun([_LT_PREPARE_SED_QUOTE_VARS], [# Backslashify metacharacters that are still active within # double-quoted strings. sed_quote_subst='s/\([["`$\\]]\)/\\\1/g' # Same as above, but do not quote variable references. double_quote_subst='s/\([["`\\]]\)/\\\1/g' # Sed substitution to delay expansion of an escaped shell variable in a # double_quote_subst'ed string. delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' # Sed substitution to delay expansion of an escaped single quote. delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g' # Sed substitution to avoid accidental globbing in evaled expressions no_glob_subst='s/\*/\\\*/g' ]) # _LT_PROG_LTMAIN # --------------- # Note that this code is called both from 'configure', and 'config.status' # now that we use AC_CONFIG_COMMANDS to generate libtool. Notably, # 'config.status' has no value for ac_aux_dir unless we are using Automake, # so we pass a copy along to make sure it has a sensible value anyway. m4_defun([_LT_PROG_LTMAIN], [m4_ifdef([AC_REQUIRE_AUX_FILE], [AC_REQUIRE_AUX_FILE([ltmain.sh])])dnl _LT_CONFIG_LIBTOOL_INIT([ac_aux_dir='$ac_aux_dir']) ltmain=$ac_aux_dir/ltmain.sh ])# _LT_PROG_LTMAIN ## ------------------------------------- ## ## Accumulate code for creating libtool. ## ## ------------------------------------- ## # So that we can recreate a full libtool script including additional # tags, we accumulate the chunks of code to send to AC_CONFIG_COMMANDS # in macros and then make a single call at the end using the 'libtool' # label. # _LT_CONFIG_LIBTOOL_INIT([INIT-COMMANDS]) # ---------------------------------------- # Register INIT-COMMANDS to be passed to AC_CONFIG_COMMANDS later. m4_define([_LT_CONFIG_LIBTOOL_INIT], [m4_ifval([$1], [m4_append([_LT_OUTPUT_LIBTOOL_INIT], [$1 ])])]) # Initialize. m4_define([_LT_OUTPUT_LIBTOOL_INIT]) # _LT_CONFIG_LIBTOOL([COMMANDS]) # ------------------------------ # Register COMMANDS to be passed to AC_CONFIG_COMMANDS later. m4_define([_LT_CONFIG_LIBTOOL], [m4_ifval([$1], [m4_append([_LT_OUTPUT_LIBTOOL_COMMANDS], [$1 ])])]) # Initialize. m4_define([_LT_OUTPUT_LIBTOOL_COMMANDS]) # _LT_CONFIG_SAVE_COMMANDS([COMMANDS], [INIT_COMMANDS]) # ----------------------------------------------------- m4_defun([_LT_CONFIG_SAVE_COMMANDS], [_LT_CONFIG_LIBTOOL([$1]) _LT_CONFIG_LIBTOOL_INIT([$2]) ]) # _LT_FORMAT_COMMENT([COMMENT]) # ----------------------------- # Add leading comment marks to the start of each line, and a trailing # full-stop to the whole comment if one is not present already. m4_define([_LT_FORMAT_COMMENT], [m4_ifval([$1], [ m4_bpatsubst([m4_bpatsubst([$1], [^ *], [# ])], [['`$\]], [\\\&])]m4_bmatch([$1], [[!?.]$], [], [.]) )]) ## ------------------------ ## ## FIXME: Eliminate VARNAME ## ## ------------------------ ## # _LT_DECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION], [IS-TAGGED?]) # ------------------------------------------------------------------- # CONFIGNAME is the name given to the value in the libtool script. # VARNAME is the (base) name used in the configure script. # VALUE may be 0, 1 or 2 for a computed quote escaped value based on # VARNAME. Any other value will be used directly. m4_define([_LT_DECL], [lt_if_append_uniq([lt_decl_varnames], [$2], [, ], [lt_dict_add_subkey([lt_decl_dict], [$2], [libtool_name], [m4_ifval([$1], [$1], [$2])]) lt_dict_add_subkey([lt_decl_dict], [$2], [value], [$3]) m4_ifval([$4], [lt_dict_add_subkey([lt_decl_dict], [$2], [description], [$4])]) lt_dict_add_subkey([lt_decl_dict], [$2], [tagged?], [m4_ifval([$5], [yes], [no])])]) ]) # _LT_TAGDECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION]) # -------------------------------------------------------- m4_define([_LT_TAGDECL], [_LT_DECL([$1], [$2], [$3], [$4], [yes])]) # lt_decl_tag_varnames([SEPARATOR], [VARNAME1...]) # ------------------------------------------------ m4_define([lt_decl_tag_varnames], [_lt_decl_filter([tagged?], [yes], $@)]) # _lt_decl_filter(SUBKEY, VALUE, [SEPARATOR], [VARNAME1..]) # --------------------------------------------------------- m4_define([_lt_decl_filter], [m4_case([$#], [0], [m4_fatal([$0: too few arguments: $#])], [1], [m4_fatal([$0: too few arguments: $#: $1])], [2], [lt_dict_filter([lt_decl_dict], [$1], [$2], [], lt_decl_varnames)], [3], [lt_dict_filter([lt_decl_dict], [$1], [$2], [$3], lt_decl_varnames)], [lt_dict_filter([lt_decl_dict], $@)])[]dnl ]) # lt_decl_quote_varnames([SEPARATOR], [VARNAME1...]) # -------------------------------------------------- m4_define([lt_decl_quote_varnames], [_lt_decl_filter([value], [1], $@)]) # lt_decl_dquote_varnames([SEPARATOR], [VARNAME1...]) # --------------------------------------------------- m4_define([lt_decl_dquote_varnames], [_lt_decl_filter([value], [2], $@)]) # lt_decl_varnames_tagged([SEPARATOR], [VARNAME1...]) # --------------------------------------------------- m4_define([lt_decl_varnames_tagged], [m4_assert([$# <= 2])dnl _$0(m4_quote(m4_default([$1], [[, ]])), m4_ifval([$2], [[$2]], [m4_dquote(lt_decl_tag_varnames)]), m4_split(m4_normalize(m4_quote(_LT_TAGS)), [ ]))]) m4_define([_lt_decl_varnames_tagged], [m4_ifval([$3], [lt_combine([$1], [$2], [_], $3)])]) # lt_decl_all_varnames([SEPARATOR], [VARNAME1...]) # ------------------------------------------------ m4_define([lt_decl_all_varnames], [_$0(m4_quote(m4_default([$1], [[, ]])), m4_if([$2], [], m4_quote(lt_decl_varnames), m4_quote(m4_shift($@))))[]dnl ]) m4_define([_lt_decl_all_varnames], [lt_join($@, lt_decl_varnames_tagged([$1], lt_decl_tag_varnames([[, ]], m4_shift($@))))dnl ]) # _LT_CONFIG_STATUS_DECLARE([VARNAME]) # ------------------------------------ # Quote a variable value, and forward it to 'config.status' so that its # declaration there will have the same value as in 'configure'. VARNAME # must have a single quote delimited value for this to work. m4_define([_LT_CONFIG_STATUS_DECLARE], [$1='`$ECHO "$][$1" | $SED "$delay_single_quote_subst"`']) # _LT_CONFIG_STATUS_DECLARATIONS # ------------------------------ # We delimit libtool config variables with single quotes, so when # we write them to config.status, we have to be sure to quote all # embedded single quotes properly. In configure, this macro expands # each variable declared with _LT_DECL (and _LT_TAGDECL) into: # # ='`$ECHO "$" | $SED "$delay_single_quote_subst"`' m4_defun([_LT_CONFIG_STATUS_DECLARATIONS], [m4_foreach([_lt_var], m4_quote(lt_decl_all_varnames), [m4_n([_LT_CONFIG_STATUS_DECLARE(_lt_var)])])]) # _LT_LIBTOOL_TAGS # ---------------- # Output comment and list of tags supported by the script m4_defun([_LT_LIBTOOL_TAGS], [_LT_FORMAT_COMMENT([The names of the tagged configurations supported by this script])dnl available_tags='_LT_TAGS'dnl ]) # _LT_LIBTOOL_DECLARE(VARNAME, [TAG]) # ----------------------------------- # Extract the dictionary values for VARNAME (optionally with TAG) and # expand to a commented shell variable setting: # # # Some comment about what VAR is for. # visible_name=$lt_internal_name m4_define([_LT_LIBTOOL_DECLARE], [_LT_FORMAT_COMMENT(m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [description])))[]dnl m4_pushdef([_libtool_name], m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [libtool_name])))[]dnl m4_case(m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [value])), [0], [_libtool_name=[$]$1], [1], [_libtool_name=$lt_[]$1], [2], [_libtool_name=$lt_[]$1], [_libtool_name=lt_dict_fetch([lt_decl_dict], [$1], [value])])[]dnl m4_ifval([$2], [_$2])[]m4_popdef([_libtool_name])[]dnl ]) # _LT_LIBTOOL_CONFIG_VARS # ----------------------- # Produce commented declarations of non-tagged libtool config variables # suitable for insertion in the LIBTOOL CONFIG section of the 'libtool' # script. Tagged libtool config variables (even for the LIBTOOL CONFIG # section) are produced by _LT_LIBTOOL_TAG_VARS. m4_defun([_LT_LIBTOOL_CONFIG_VARS], [m4_foreach([_lt_var], m4_quote(_lt_decl_filter([tagged?], [no], [], lt_decl_varnames)), [m4_n([_LT_LIBTOOL_DECLARE(_lt_var)])])]) # _LT_LIBTOOL_TAG_VARS(TAG) # ------------------------- m4_define([_LT_LIBTOOL_TAG_VARS], [m4_foreach([_lt_var], m4_quote(lt_decl_tag_varnames), [m4_n([_LT_LIBTOOL_DECLARE(_lt_var, [$1])])])]) # _LT_TAGVAR(VARNAME, [TAGNAME]) # ------------------------------ m4_define([_LT_TAGVAR], [m4_ifval([$2], [$1_$2], [$1])]) # _LT_CONFIG_COMMANDS # ------------------- # Send accumulated output to $CONFIG_STATUS. Thanks to the lists of # variables for single and double quote escaping we saved from calls # to _LT_DECL, we can put quote escaped variables declarations # into 'config.status', and then the shell code to quote escape them in # for loops in 'config.status'. Finally, any additional code accumulated # from calls to _LT_CONFIG_LIBTOOL_INIT is expanded. m4_defun([_LT_CONFIG_COMMANDS], [AC_PROVIDE_IFELSE([LT_OUTPUT], dnl If the libtool generation code has been placed in $CONFIG_LT, dnl instead of duplicating it all over again into config.status, dnl then we will have config.status run $CONFIG_LT later, so it dnl needs to know what name is stored there: [AC_CONFIG_COMMANDS([libtool], [$SHELL $CONFIG_LT || AS_EXIT(1)], [CONFIG_LT='$CONFIG_LT'])], dnl If the libtool generation code is destined for config.status, dnl expand the accumulated commands and init code now: [AC_CONFIG_COMMANDS([libtool], [_LT_OUTPUT_LIBTOOL_COMMANDS], [_LT_OUTPUT_LIBTOOL_COMMANDS_INIT])]) ])#_LT_CONFIG_COMMANDS # Initialize. m4_define([_LT_OUTPUT_LIBTOOL_COMMANDS_INIT], [ # The HP-UX ksh and POSIX shell print the target directory to stdout # if CDPATH is set. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH sed_quote_subst='$sed_quote_subst' double_quote_subst='$double_quote_subst' delay_variable_subst='$delay_variable_subst' _LT_CONFIG_STATUS_DECLARATIONS LTCC='$LTCC' LTCFLAGS='$LTCFLAGS' compiler='$compiler_DEFAULT' # A function that is used when there is no print builtin or printf. func_fallback_echo () { eval 'cat <<_LTECHO_EOF \$[]1 _LTECHO_EOF' } # Quote evaled strings. for var in lt_decl_all_varnames([[ \ ]], lt_decl_quote_varnames); do case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in *[[\\\\\\\`\\"\\\$]]*) eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" ## exclude from sc_prohibit_nested_quotes ;; *) eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" ;; esac done # Double-quote double-evaled strings. for var in lt_decl_all_varnames([[ \ ]], lt_decl_dquote_varnames); do case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in *[[\\\\\\\`\\"\\\$]]*) eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" ## exclude from sc_prohibit_nested_quotes ;; *) eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" ;; esac done _LT_OUTPUT_LIBTOOL_INIT ]) # _LT_GENERATED_FILE_INIT(FILE, [COMMENT]) # ------------------------------------ # Generate a child script FILE with all initialization necessary to # reuse the environment learned by the parent script, and make the # file executable. If COMMENT is supplied, it is inserted after the # '#!' sequence but before initialization text begins. After this # macro, additional text can be appended to FILE to form the body of # the child script. The macro ends with non-zero status if the # file could not be fully written (such as if the disk is full). m4_ifdef([AS_INIT_GENERATED], [m4_defun([_LT_GENERATED_FILE_INIT],[AS_INIT_GENERATED($@)])], [m4_defun([_LT_GENERATED_FILE_INIT], [m4_require([AS_PREPARE])]dnl [m4_pushdef([AS_MESSAGE_LOG_FD])]dnl [lt_write_fail=0 cat >$1 <<_ASEOF || lt_write_fail=1 #! $SHELL # Generated by $as_me. $2 SHELL=\${CONFIG_SHELL-$SHELL} export SHELL _ASEOF cat >>$1 <<\_ASEOF || lt_write_fail=1 AS_SHELL_SANITIZE _AS_PREPARE exec AS_MESSAGE_FD>&1 _ASEOF test 0 = "$lt_write_fail" && chmod +x $1[]dnl m4_popdef([AS_MESSAGE_LOG_FD])])])# _LT_GENERATED_FILE_INIT # LT_OUTPUT # --------- # This macro allows early generation of the libtool script (before # AC_OUTPUT is called), incase it is used in configure for compilation # tests. AC_DEFUN([LT_OUTPUT], [: ${CONFIG_LT=./config.lt} AC_MSG_NOTICE([creating $CONFIG_LT]) _LT_GENERATED_FILE_INIT(["$CONFIG_LT"], [# Run this file to recreate a libtool stub with the current configuration.]) cat >>"$CONFIG_LT" <<\_LTEOF lt_cl_silent=false exec AS_MESSAGE_LOG_FD>>config.log { echo AS_BOX([Running $as_me.]) } >&AS_MESSAGE_LOG_FD lt_cl_help="\ '$as_me' creates a local libtool stub from the current configuration, for use in further configure time tests before the real libtool is generated. Usage: $[0] [[OPTIONS]] -h, --help print this help, then exit -V, --version print version number, then exit -q, --quiet do not print progress messages -d, --debug don't remove temporary files Report bugs to ." lt_cl_version="\ m4_ifset([AC_PACKAGE_NAME], [AC_PACKAGE_NAME ])config.lt[]dnl m4_ifset([AC_PACKAGE_VERSION], [ AC_PACKAGE_VERSION]) configured by $[0], generated by m4_PACKAGE_STRING. Copyright (C) 2011 Free Software Foundation, Inc. This config.lt script is free software; the Free Software Foundation gives unlimited permision to copy, distribute and modify it." while test 0 != $[#] do case $[1] in --version | --v* | -V ) echo "$lt_cl_version"; exit 0 ;; --help | --h* | -h ) echo "$lt_cl_help"; exit 0 ;; --debug | --d* | -d ) debug=: ;; --quiet | --q* | --silent | --s* | -q ) lt_cl_silent=: ;; -*) AC_MSG_ERROR([unrecognized option: $[1] Try '$[0] --help' for more information.]) ;; *) AC_MSG_ERROR([unrecognized argument: $[1] Try '$[0] --help' for more information.]) ;; esac shift done if $lt_cl_silent; then exec AS_MESSAGE_FD>/dev/null fi _LTEOF cat >>"$CONFIG_LT" <<_LTEOF _LT_OUTPUT_LIBTOOL_COMMANDS_INIT _LTEOF cat >>"$CONFIG_LT" <<\_LTEOF AC_MSG_NOTICE([creating $ofile]) _LT_OUTPUT_LIBTOOL_COMMANDS AS_EXIT(0) _LTEOF chmod +x "$CONFIG_LT" # configure is writing to config.log, but config.lt does its own redirection, # appending to config.log, which fails on DOS, as config.log is still kept # open by configure. Here we exec the FD to /dev/null, effectively closing # config.log, so it can be properly (re)opened and appended to by config.lt. lt_cl_success=: test yes = "$silent" && lt_config_lt_args="$lt_config_lt_args --quiet" exec AS_MESSAGE_LOG_FD>/dev/null $SHELL "$CONFIG_LT" $lt_config_lt_args || lt_cl_success=false exec AS_MESSAGE_LOG_FD>>config.log $lt_cl_success || AS_EXIT(1) ])# LT_OUTPUT # _LT_CONFIG(TAG) # --------------- # If TAG is the built-in tag, create an initial libtool script with a # default configuration from the untagged config vars. Otherwise add code # to config.status for appending the configuration named by TAG from the # matching tagged config vars. m4_defun([_LT_CONFIG], [m4_require([_LT_FILEUTILS_DEFAULTS])dnl _LT_CONFIG_SAVE_COMMANDS([ m4_define([_LT_TAG], m4_if([$1], [], [C], [$1]))dnl m4_if(_LT_TAG, [C], [ # See if we are running on zsh, and set the options that allow our # commands through without removal of \ escapes. if test -n "${ZSH_VERSION+set}"; then setopt NO_GLOB_SUBST fi cfgfile=${ofile}T trap "$RM \"$cfgfile\"; exit 1" 1 2 15 $RM "$cfgfile" cat <<_LT_EOF >> "$cfgfile" #! $SHELL # Generated automatically by $as_me ($PACKAGE) $VERSION # Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: # NOTE: Changes made to this file will be lost: look at ltmain.sh. # Provide generalized library-building support services. # Written by Gordon Matzigkeit, 1996 _LT_COPYING _LT_LIBTOOL_TAGS # Configured defaults for sys_lib_dlsearch_path munging. : \${LT_SYS_LIBRARY_PATH="$configure_time_lt_sys_library_path"} # ### BEGIN LIBTOOL CONFIG _LT_LIBTOOL_CONFIG_VARS _LT_LIBTOOL_TAG_VARS # ### END LIBTOOL CONFIG _LT_EOF cat <<'_LT_EOF' >> "$cfgfile" # ### BEGIN FUNCTIONS SHARED WITH CONFIGURE _LT_PREPARE_MUNGE_PATH_LIST _LT_PREPARE_CC_BASENAME # ### END FUNCTIONS SHARED WITH CONFIGURE _LT_EOF case $host_os in aix3*) cat <<\_LT_EOF >> "$cfgfile" # AIX sometimes has problems with the GCC collect2 program. For some # reason, if we set the COLLECT_NAMES environment variable, the problems # vanish in a puff of smoke. if test set != "${COLLECT_NAMES+set}"; then COLLECT_NAMES= export COLLECT_NAMES fi _LT_EOF ;; esac _LT_PROG_LTMAIN # We use sed instead of cat because bash on DJGPP gets confused if # if finds mixed CR/LF and LF-only lines. Since sed operates in # text mode, it properly converts lines to CR/LF. This bash problem # is reportedly fixed, but why not run on old versions too? sed '$q' "$ltmain" >> "$cfgfile" \ || (rm -f "$cfgfile"; exit 1) mv -f "$cfgfile" "$ofile" || (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") chmod +x "$ofile" ], [cat <<_LT_EOF >> "$ofile" dnl Unfortunately we have to use $1 here, since _LT_TAG is not expanded dnl in a comment (ie after a #). # ### BEGIN LIBTOOL TAG CONFIG: $1 _LT_LIBTOOL_TAG_VARS(_LT_TAG) # ### END LIBTOOL TAG CONFIG: $1 _LT_EOF ])dnl /m4_if ], [m4_if([$1], [], [ PACKAGE='$PACKAGE' VERSION='$VERSION' RM='$RM' ofile='$ofile'], []) ])dnl /_LT_CONFIG_SAVE_COMMANDS ])# _LT_CONFIG # LT_SUPPORTED_TAG(TAG) # --------------------- # Trace this macro to discover what tags are supported by the libtool # --tag option, using: # autoconf --trace 'LT_SUPPORTED_TAG:$1' AC_DEFUN([LT_SUPPORTED_TAG], []) # C support is built-in for now m4_define([_LT_LANG_C_enabled], []) m4_define([_LT_TAGS], []) # LT_LANG(LANG) # ------------- # Enable libtool support for the given language if not already enabled. AC_DEFUN([LT_LANG], [AC_BEFORE([$0], [LT_OUTPUT])dnl m4_case([$1], [C], [_LT_LANG(C)], [C++], [_LT_LANG(CXX)], [Go], [_LT_LANG(GO)], [Java], [_LT_LANG(GCJ)], [Fortran 77], [_LT_LANG(F77)], [Fortran], [_LT_LANG(FC)], [Windows Resource], [_LT_LANG(RC)], [m4_ifdef([_LT_LANG_]$1[_CONFIG], [_LT_LANG($1)], [m4_fatal([$0: unsupported language: "$1"])])])dnl ])# LT_LANG # _LT_LANG(LANGNAME) # ------------------ m4_defun([_LT_LANG], [m4_ifdef([_LT_LANG_]$1[_enabled], [], [LT_SUPPORTED_TAG([$1])dnl m4_append([_LT_TAGS], [$1 ])dnl m4_define([_LT_LANG_]$1[_enabled], [])dnl _LT_LANG_$1_CONFIG($1)])dnl ])# _LT_LANG m4_ifndef([AC_PROG_GO], [ ############################################################ # NOTE: This macro has been submitted for inclusion into # # GNU Autoconf as AC_PROG_GO. When it is available in # # a released version of Autoconf we should remove this # # macro and use it instead. # ############################################################ m4_defun([AC_PROG_GO], [AC_LANG_PUSH(Go)dnl AC_ARG_VAR([GOC], [Go compiler command])dnl AC_ARG_VAR([GOFLAGS], [Go compiler flags])dnl _AC_ARG_VAR_LDFLAGS()dnl AC_CHECK_TOOL(GOC, gccgo) if test -z "$GOC"; then if test -n "$ac_tool_prefix"; then AC_CHECK_PROG(GOC, [${ac_tool_prefix}gccgo], [${ac_tool_prefix}gccgo]) fi fi if test -z "$GOC"; then AC_CHECK_PROG(GOC, gccgo, gccgo, false) fi ])#m4_defun ])#m4_ifndef # _LT_LANG_DEFAULT_CONFIG # ----------------------- m4_defun([_LT_LANG_DEFAULT_CONFIG], [AC_PROVIDE_IFELSE([AC_PROG_CXX], [LT_LANG(CXX)], [m4_define([AC_PROG_CXX], defn([AC_PROG_CXX])[LT_LANG(CXX)])]) AC_PROVIDE_IFELSE([AC_PROG_F77], [LT_LANG(F77)], [m4_define([AC_PROG_F77], defn([AC_PROG_F77])[LT_LANG(F77)])]) AC_PROVIDE_IFELSE([AC_PROG_FC], [LT_LANG(FC)], [m4_define([AC_PROG_FC], defn([AC_PROG_FC])[LT_LANG(FC)])]) dnl The call to [A][M_PROG_GCJ] is quoted like that to stop aclocal dnl pulling things in needlessly. AC_PROVIDE_IFELSE([AC_PROG_GCJ], [LT_LANG(GCJ)], [AC_PROVIDE_IFELSE([A][M_PROG_GCJ], [LT_LANG(GCJ)], [AC_PROVIDE_IFELSE([LT_PROG_GCJ], [LT_LANG(GCJ)], [m4_ifdef([AC_PROG_GCJ], [m4_define([AC_PROG_GCJ], defn([AC_PROG_GCJ])[LT_LANG(GCJ)])]) m4_ifdef([A][M_PROG_GCJ], [m4_define([A][M_PROG_GCJ], defn([A][M_PROG_GCJ])[LT_LANG(GCJ)])]) m4_ifdef([LT_PROG_GCJ], [m4_define([LT_PROG_GCJ], defn([LT_PROG_GCJ])[LT_LANG(GCJ)])])])])]) AC_PROVIDE_IFELSE([AC_PROG_GO], [LT_LANG(GO)], [m4_define([AC_PROG_GO], defn([AC_PROG_GO])[LT_LANG(GO)])]) AC_PROVIDE_IFELSE([LT_PROG_RC], [LT_LANG(RC)], [m4_define([LT_PROG_RC], defn([LT_PROG_RC])[LT_LANG(RC)])]) ])# _LT_LANG_DEFAULT_CONFIG # Obsolete macros: AU_DEFUN([AC_LIBTOOL_CXX], [LT_LANG(C++)]) AU_DEFUN([AC_LIBTOOL_F77], [LT_LANG(Fortran 77)]) AU_DEFUN([AC_LIBTOOL_FC], [LT_LANG(Fortran)]) AU_DEFUN([AC_LIBTOOL_GCJ], [LT_LANG(Java)]) AU_DEFUN([AC_LIBTOOL_RC], [LT_LANG(Windows Resource)]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_CXX], []) dnl AC_DEFUN([AC_LIBTOOL_F77], []) dnl AC_DEFUN([AC_LIBTOOL_FC], []) dnl AC_DEFUN([AC_LIBTOOL_GCJ], []) dnl AC_DEFUN([AC_LIBTOOL_RC], []) # _LT_TAG_COMPILER # ---------------- m4_defun([_LT_TAG_COMPILER], [AC_REQUIRE([AC_PROG_CC])dnl _LT_DECL([LTCC], [CC], [1], [A C compiler])dnl _LT_DECL([LTCFLAGS], [CFLAGS], [1], [LTCC compiler flags])dnl _LT_TAGDECL([CC], [compiler], [1], [A language specific compiler])dnl _LT_TAGDECL([with_gcc], [GCC], [0], [Is the compiler the GNU compiler?])dnl # If no C compiler was specified, use CC. LTCC=${LTCC-"$CC"} # If no C compiler flags were specified, use CFLAGS. LTCFLAGS=${LTCFLAGS-"$CFLAGS"} # Allow CC to be a program name with arguments. compiler=$CC ])# _LT_TAG_COMPILER # _LT_COMPILER_BOILERPLATE # ------------------------ # Check for compiler boilerplate output or warnings with # the simple compiler test code. m4_defun([_LT_COMPILER_BOILERPLATE], [m4_require([_LT_DECL_SED])dnl ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" >conftest.$ac_ext eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_compiler_boilerplate=`cat conftest.err` $RM conftest* ])# _LT_COMPILER_BOILERPLATE # _LT_LINKER_BOILERPLATE # ---------------------- # Check for linker boilerplate output or warnings with # the simple link test code. m4_defun([_LT_LINKER_BOILERPLATE], [m4_require([_LT_DECL_SED])dnl ac_outfile=conftest.$ac_objext echo "$lt_simple_link_test_code" >conftest.$ac_ext eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_linker_boilerplate=`cat conftest.err` $RM -r conftest* ])# _LT_LINKER_BOILERPLATE # _LT_REQUIRED_DARWIN_CHECKS # ------------------------- m4_defun_once([_LT_REQUIRED_DARWIN_CHECKS],[ case $host_os in rhapsody* | darwin*) AC_CHECK_TOOL([DSYMUTIL], [dsymutil], [:]) AC_CHECK_TOOL([NMEDIT], [nmedit], [:]) AC_CHECK_TOOL([LIPO], [lipo], [:]) AC_CHECK_TOOL([OTOOL], [otool], [:]) AC_CHECK_TOOL([OTOOL64], [otool64], [:]) _LT_DECL([], [DSYMUTIL], [1], [Tool to manipulate archived DWARF debug symbol files on Mac OS X]) _LT_DECL([], [NMEDIT], [1], [Tool to change global to local symbols on Mac OS X]) _LT_DECL([], [LIPO], [1], [Tool to manipulate fat objects and archives on Mac OS X]) _LT_DECL([], [OTOOL], [1], [ldd/readelf like tool for Mach-O binaries on Mac OS X]) _LT_DECL([], [OTOOL64], [1], [ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4]) AC_CACHE_CHECK([for -single_module linker flag],[lt_cv_apple_cc_single_mod], [lt_cv_apple_cc_single_mod=no if test -z "$LT_MULTI_MODULE"; then # By default we will add the -single_module flag. You can override # by either setting the environment variable LT_MULTI_MODULE # non-empty at configure time, or by adding -multi_module to the # link flags. rm -rf libconftest.dylib* echo "int foo(void){return 1;}" > conftest.c echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ -dynamiclib -Wl,-single_module conftest.c" >&AS_MESSAGE_LOG_FD $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ -dynamiclib -Wl,-single_module conftest.c 2>conftest.err _lt_result=$? # If there is a non-empty error log, and "single_module" # appears in it, assume the flag caused a linker warning if test -s conftest.err && $GREP single_module conftest.err; then cat conftest.err >&AS_MESSAGE_LOG_FD # Otherwise, if the output was created with a 0 exit code from # the compiler, it worked. elif test -f libconftest.dylib && test 0 = "$_lt_result"; then lt_cv_apple_cc_single_mod=yes else cat conftest.err >&AS_MESSAGE_LOG_FD fi rm -rf libconftest.dylib* rm -f conftest.* fi]) AC_CACHE_CHECK([for -exported_symbols_list linker flag], [lt_cv_ld_exported_symbols_list], [lt_cv_ld_exported_symbols_list=no save_LDFLAGS=$LDFLAGS echo "_main" > conftest.sym LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym" AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])], [lt_cv_ld_exported_symbols_list=yes], [lt_cv_ld_exported_symbols_list=no]) LDFLAGS=$save_LDFLAGS ]) AC_CACHE_CHECK([for -force_load linker flag],[lt_cv_ld_force_load], [lt_cv_ld_force_load=no cat > conftest.c << _LT_EOF int forced_loaded() { return 2;} _LT_EOF echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&AS_MESSAGE_LOG_FD $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&AS_MESSAGE_LOG_FD echo "$AR cru libconftest.a conftest.o" >&AS_MESSAGE_LOG_FD $AR cru libconftest.a conftest.o 2>&AS_MESSAGE_LOG_FD echo "$RANLIB libconftest.a" >&AS_MESSAGE_LOG_FD $RANLIB libconftest.a 2>&AS_MESSAGE_LOG_FD cat > conftest.c << _LT_EOF int main() { return 0;} _LT_EOF echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&AS_MESSAGE_LOG_FD $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err _lt_result=$? if test -s conftest.err && $GREP force_load conftest.err; then cat conftest.err >&AS_MESSAGE_LOG_FD elif test -f conftest && test 0 = "$_lt_result" && $GREP forced_load conftest >/dev/null 2>&1; then lt_cv_ld_force_load=yes else cat conftest.err >&AS_MESSAGE_LOG_FD fi rm -f conftest.err libconftest.a conftest conftest.c rm -rf conftest.dSYM ]) case $host_os in rhapsody* | darwin1.[[012]]) _lt_dar_allow_undefined='$wl-undefined ${wl}suppress' ;; darwin1.*) _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;; darwin*) # darwin 5.x on # if running on 10.5 or later, the deployment target defaults # to the OS version, if on x86, and 10.4, the deployment # target defaults to 10.4. Don't you love it? case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in 10.0,*86*-darwin8*|10.0,*-darwin[[91]]*) _lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup' ;; 10.[[012]][[,.]]*) _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;; 10.*) _lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup' ;; esac ;; esac if test yes = "$lt_cv_apple_cc_single_mod"; then _lt_dar_single_mod='$single_module' fi if test yes = "$lt_cv_ld_exported_symbols_list"; then _lt_dar_export_syms=' $wl-exported_symbols_list,$output_objdir/$libname-symbols.expsym' else _lt_dar_export_syms='~$NMEDIT -s $output_objdir/$libname-symbols.expsym $lib' fi if test : != "$DSYMUTIL" && test no = "$lt_cv_ld_force_load"; then _lt_dsymutil='~$DSYMUTIL $lib || :' else _lt_dsymutil= fi ;; esac ]) # _LT_DARWIN_LINKER_FEATURES([TAG]) # --------------------------------- # Checks for linker and compiler features on darwin m4_defun([_LT_DARWIN_LINKER_FEATURES], [ m4_require([_LT_REQUIRED_DARWIN_CHECKS]) _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_automatic, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported if test yes = "$lt_cv_ld_force_load"; then _LT_TAGVAR(whole_archive_flag_spec, $1)='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience $wl-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`' m4_case([$1], [F77], [_LT_TAGVAR(compiler_needs_object, $1)=yes], [FC], [_LT_TAGVAR(compiler_needs_object, $1)=yes]) else _LT_TAGVAR(whole_archive_flag_spec, $1)='' fi _LT_TAGVAR(link_all_deplibs, $1)=yes _LT_TAGVAR(allow_undefined_flag, $1)=$_lt_dar_allow_undefined case $cc_basename in ifort*|nagfor*) _lt_dar_can_shared=yes ;; *) _lt_dar_can_shared=$GCC ;; esac if test yes = "$_lt_dar_can_shared"; then output_verbose_link_cmd=func_echo_all _LT_TAGVAR(archive_cmds, $1)="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dsymutil" _LT_TAGVAR(module_cmds, $1)="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dsymutil" _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dar_export_syms$_lt_dsymutil" _LT_TAGVAR(module_expsym_cmds, $1)="sed -e 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dar_export_syms$_lt_dsymutil" m4_if([$1], [CXX], [ if test yes != "$lt_cv_apple_cc_single_mod"; then _LT_TAGVAR(archive_cmds, $1)="\$CC -r -keep_private_externs -nostdlib -o \$lib-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$lib-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring$_lt_dsymutil" _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \$lib-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$lib-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring$_lt_dar_export_syms$_lt_dsymutil" fi ],[]) else _LT_TAGVAR(ld_shlibs, $1)=no fi ]) # _LT_SYS_MODULE_PATH_AIX([TAGNAME]) # ---------------------------------- # Links a minimal program and checks the executable # for the system default hardcoded library path. In most cases, # this is /usr/lib:/lib, but when the MPI compilers are used # the location of the communication and MPI libs are included too. # If we don't find anything, use the default library path according # to the aix ld manual. # Store the results from the different compilers for each TAGNAME. # Allow to override them for all tags through lt_cv_aix_libpath. m4_defun([_LT_SYS_MODULE_PATH_AIX], [m4_require([_LT_DECL_SED])dnl if test set = "${lt_cv_aix_libpath+set}"; then aix_libpath=$lt_cv_aix_libpath else AC_CACHE_VAL([_LT_TAGVAR([lt_cv_aix_libpath_], [$1])], [AC_LINK_IFELSE([AC_LANG_PROGRAM],[ lt_aix_libpath_sed='[ /Import File Strings/,/^$/ { /^0/ { s/^0 *\([^ ]*\) *$/\1/ p } }]' _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` # Check for a 64-bit object if we didn't find anything. if test -z "$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])"; then _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi],[]) if test -z "$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])"; then _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=/usr/lib:/lib fi ]) aix_libpath=$_LT_TAGVAR([lt_cv_aix_libpath_], [$1]) fi ])# _LT_SYS_MODULE_PATH_AIX # _LT_SHELL_INIT(ARG) # ------------------- m4_define([_LT_SHELL_INIT], [m4_divert_text([M4SH-INIT], [$1 ])])# _LT_SHELL_INIT # _LT_PROG_ECHO_BACKSLASH # ----------------------- # Find how we can fake an echo command that does not interpret backslash. # In particular, with Autoconf 2.60 or later we add some code to the start # of the generated configure script that will find a shell with a builtin # printf (that we can use as an echo command). m4_defun([_LT_PROG_ECHO_BACKSLASH], [ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO AC_MSG_CHECKING([how to print strings]) # Test print first, because it will be a builtin if present. if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \ test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then ECHO='print -r --' elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then ECHO='printf %s\n' else # Use this function as a fallback that always works. func_fallback_echo () { eval 'cat <<_LTECHO_EOF $[]1 _LTECHO_EOF' } ECHO='func_fallback_echo' fi # func_echo_all arg... # Invoke $ECHO with all args, space-separated. func_echo_all () { $ECHO "$*" } case $ECHO in printf*) AC_MSG_RESULT([printf]) ;; print*) AC_MSG_RESULT([print -r]) ;; *) AC_MSG_RESULT([cat]) ;; esac m4_ifdef([_AS_DETECT_SUGGESTED], [_AS_DETECT_SUGGESTED([ test -n "${ZSH_VERSION+set}${BASH_VERSION+set}" || ( ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO PATH=/empty FPATH=/empty; export PATH FPATH test "X`printf %s $ECHO`" = "X$ECHO" \ || test "X`print -r -- $ECHO`" = "X$ECHO" )])]) _LT_DECL([], [SHELL], [1], [Shell to use when invoking shell scripts]) _LT_DECL([], [ECHO], [1], [An echo program that protects backslashes]) ])# _LT_PROG_ECHO_BACKSLASH # _LT_WITH_SYSROOT # ---------------- AC_DEFUN([_LT_WITH_SYSROOT], [AC_MSG_CHECKING([for sysroot]) AC_ARG_WITH([sysroot], [AS_HELP_STRING([--with-sysroot@<:@=DIR@:>@], [Search for dependent libraries within DIR (or the compiler's sysroot if not specified).])], [], [with_sysroot=no]) dnl lt_sysroot will always be passed unquoted. We quote it here dnl in case the user passed a directory name. lt_sysroot= case $with_sysroot in #( yes) if test yes = "$GCC"; then lt_sysroot=`$CC --print-sysroot 2>/dev/null` fi ;; #( /*) lt_sysroot=`echo "$with_sysroot" | sed -e "$sed_quote_subst"` ;; #( no|'') ;; #( *) AC_MSG_RESULT([$with_sysroot]) AC_MSG_ERROR([The sysroot must be an absolute path.]) ;; esac AC_MSG_RESULT([${lt_sysroot:-no}]) _LT_DECL([], [lt_sysroot], [0], [The root where to search for ]dnl [dependent libraries, and where our libraries should be installed.])]) # _LT_ENABLE_LOCK # --------------- m4_defun([_LT_ENABLE_LOCK], [AC_ARG_ENABLE([libtool-lock], [AS_HELP_STRING([--disable-libtool-lock], [avoid locking (might break parallel builds)])]) test no = "$enable_libtool_lock" || enable_libtool_lock=yes # Some flags need to be propagated to the compiler or linker for good # libtool support. case $host in ia64-*-hpux*) # Find out what ABI is being produced by ac_compile, and set mode # options accordingly. echo 'int i;' > conftest.$ac_ext if AC_TRY_EVAL(ac_compile); then case `/usr/bin/file conftest.$ac_objext` in *ELF-32*) HPUX_IA64_MODE=32 ;; *ELF-64*) HPUX_IA64_MODE=64 ;; esac fi rm -rf conftest* ;; *-*-irix6*) # Find out what ABI is being produced by ac_compile, and set linker # options accordingly. echo '[#]line '$LINENO' "configure"' > conftest.$ac_ext if AC_TRY_EVAL(ac_compile); then if test yes = "$lt_cv_prog_gnu_ld"; then case `/usr/bin/file conftest.$ac_objext` in *32-bit*) LD="${LD-ld} -melf32bsmip" ;; *N32*) LD="${LD-ld} -melf32bmipn32" ;; *64-bit*) LD="${LD-ld} -melf64bmip" ;; esac else case `/usr/bin/file conftest.$ac_objext` in *32-bit*) LD="${LD-ld} -32" ;; *N32*) LD="${LD-ld} -n32" ;; *64-bit*) LD="${LD-ld} -64" ;; esac fi fi rm -rf conftest* ;; mips64*-*linux*) # Find out what ABI is being produced by ac_compile, and set linker # options accordingly. echo '[#]line '$LINENO' "configure"' > conftest.$ac_ext if AC_TRY_EVAL(ac_compile); then emul=elf case `/usr/bin/file conftest.$ac_objext` in *32-bit*) emul="${emul}32" ;; *64-bit*) emul="${emul}64" ;; esac case `/usr/bin/file conftest.$ac_objext` in *MSB*) emul="${emul}btsmip" ;; *LSB*) emul="${emul}ltsmip" ;; esac case `/usr/bin/file conftest.$ac_objext` in *N32*) emul="${emul}n32" ;; esac LD="${LD-ld} -m $emul" fi rm -rf conftest* ;; x86_64-*kfreebsd*-gnu|x86_64-*linux*|powerpc*-*linux*| \ s390*-*linux*|s390*-*tpf*|sparc*-*linux*) # Find out what ABI is being produced by ac_compile, and set linker # options accordingly. Note that the listed cases only cover the # situations where additional linker options are needed (such as when # doing 32-bit compilation for a host where ld defaults to 64-bit, or # vice versa); the common cases where no linker options are needed do # not appear in the list. echo 'int i;' > conftest.$ac_ext if AC_TRY_EVAL(ac_compile); then case `/usr/bin/file conftest.o` in *32-bit*) case $host in x86_64-*kfreebsd*-gnu) LD="${LD-ld} -m elf_i386_fbsd" ;; x86_64-*linux*) case `/usr/bin/file conftest.o` in *x86-64*) LD="${LD-ld} -m elf32_x86_64" ;; *) LD="${LD-ld} -m elf_i386" ;; esac ;; powerpc64le-*linux*) LD="${LD-ld} -m elf32lppclinux" ;; powerpc64-*linux*) LD="${LD-ld} -m elf32ppclinux" ;; s390x-*linux*) LD="${LD-ld} -m elf_s390" ;; sparc64-*linux*) LD="${LD-ld} -m elf32_sparc" ;; esac ;; *64-bit*) case $host in x86_64-*kfreebsd*-gnu) LD="${LD-ld} -m elf_x86_64_fbsd" ;; x86_64-*linux*) LD="${LD-ld} -m elf_x86_64" ;; powerpcle-*linux*) LD="${LD-ld} -m elf64lppc" ;; powerpc-*linux*) LD="${LD-ld} -m elf64ppc" ;; s390*-*linux*|s390*-*tpf*) LD="${LD-ld} -m elf64_s390" ;; sparc*-*linux*) LD="${LD-ld} -m elf64_sparc" ;; esac ;; esac fi rm -rf conftest* ;; *-*-sco3.2v5*) # On SCO OpenServer 5, we need -belf to get full-featured binaries. SAVE_CFLAGS=$CFLAGS CFLAGS="$CFLAGS -belf" AC_CACHE_CHECK([whether the C compiler needs -belf], lt_cv_cc_needs_belf, [AC_LANG_PUSH(C) AC_LINK_IFELSE([AC_LANG_PROGRAM([[]],[[]])],[lt_cv_cc_needs_belf=yes],[lt_cv_cc_needs_belf=no]) AC_LANG_POP]) if test yes != "$lt_cv_cc_needs_belf"; then # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf CFLAGS=$SAVE_CFLAGS fi ;; *-*solaris*) # Find out what ABI is being produced by ac_compile, and set linker # options accordingly. echo 'int i;' > conftest.$ac_ext if AC_TRY_EVAL(ac_compile); then case `/usr/bin/file conftest.o` in *64-bit*) case $lt_cv_prog_gnu_ld in yes*) case $host in i?86-*-solaris*|x86_64-*-solaris*) LD="${LD-ld} -m elf_x86_64" ;; sparc*-*-solaris*) LD="${LD-ld} -m elf64_sparc" ;; esac # GNU ld 2.21 introduced _sol2 emulations. Use them if available. if ${LD-ld} -V | grep _sol2 >/dev/null 2>&1; then LD=${LD-ld}_sol2 fi ;; *) if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then LD="${LD-ld} -64" fi ;; esac ;; esac fi rm -rf conftest* ;; esac need_locks=$enable_libtool_lock ])# _LT_ENABLE_LOCK # _LT_PROG_AR # ----------- m4_defun([_LT_PROG_AR], [AC_CHECK_TOOLS(AR, [ar], false) : ${AR=ar} : ${AR_FLAGS=cru} _LT_DECL([], [AR], [1], [The archiver]) _LT_DECL([], [AR_FLAGS], [1], [Flags to create an archive]) AC_CACHE_CHECK([for archiver @FILE support], [lt_cv_ar_at_file], [lt_cv_ar_at_file=no AC_COMPILE_IFELSE([AC_LANG_PROGRAM], [echo conftest.$ac_objext > conftest.lst lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&AS_MESSAGE_LOG_FD' AC_TRY_EVAL([lt_ar_try]) if test 0 -eq "$ac_status"; then # Ensure the archiver fails upon bogus file names. rm -f conftest.$ac_objext libconftest.a AC_TRY_EVAL([lt_ar_try]) if test 0 -ne "$ac_status"; then lt_cv_ar_at_file=@ fi fi rm -f conftest.* libconftest.a ]) ]) if test no = "$lt_cv_ar_at_file"; then archiver_list_spec= else archiver_list_spec=$lt_cv_ar_at_file fi _LT_DECL([], [archiver_list_spec], [1], [How to feed a file listing to the archiver]) ])# _LT_PROG_AR # _LT_CMD_OLD_ARCHIVE # ------------------- m4_defun([_LT_CMD_OLD_ARCHIVE], [_LT_PROG_AR AC_CHECK_TOOL(STRIP, strip, :) test -z "$STRIP" && STRIP=: _LT_DECL([], [STRIP], [1], [A symbol stripping program]) AC_CHECK_TOOL(RANLIB, ranlib, :) test -z "$RANLIB" && RANLIB=: _LT_DECL([], [RANLIB], [1], [Commands used to install an old-style archive]) # Determine commands to create old-style static archives. old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs' old_postinstall_cmds='chmod 644 $oldlib' old_postuninstall_cmds= if test -n "$RANLIB"; then case $host_os in bitrig* | openbsd*) old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$tool_oldlib" ;; *) old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$tool_oldlib" ;; esac old_archive_cmds="$old_archive_cmds~\$RANLIB \$tool_oldlib" fi case $host_os in darwin*) lock_old_archive_extraction=yes ;; *) lock_old_archive_extraction=no ;; esac _LT_DECL([], [old_postinstall_cmds], [2]) _LT_DECL([], [old_postuninstall_cmds], [2]) _LT_TAGDECL([], [old_archive_cmds], [2], [Commands used to build an old-style archive]) _LT_DECL([], [lock_old_archive_extraction], [0], [Whether to use a lock for old archive extraction]) ])# _LT_CMD_OLD_ARCHIVE # _LT_COMPILER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, # [OUTPUT-FILE], [ACTION-SUCCESS], [ACTION-FAILURE]) # ---------------------------------------------------------------- # Check whether the given compiler option works AC_DEFUN([_LT_COMPILER_OPTION], [m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_DECL_SED])dnl AC_CACHE_CHECK([$1], [$2], [$2=no m4_if([$4], , [ac_outfile=conftest.$ac_objext], [ac_outfile=$4]) echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="$3" ## exclude from sc_useless_quotes_in_assignment # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. # The option is referenced via a variable to avoid confusing sed. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&AS_MESSAGE_LOG_FD) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&AS_MESSAGE_LOG_FD echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then $2=yes fi fi $RM conftest* ]) if test yes = "[$]$2"; then m4_if([$5], , :, [$5]) else m4_if([$6], , :, [$6]) fi ])# _LT_COMPILER_OPTION # Old name: AU_ALIAS([AC_LIBTOOL_COMPILER_OPTION], [_LT_COMPILER_OPTION]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_COMPILER_OPTION], []) # _LT_LINKER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, # [ACTION-SUCCESS], [ACTION-FAILURE]) # ---------------------------------------------------- # Check whether the given linker option works AC_DEFUN([_LT_LINKER_OPTION], [m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_DECL_SED])dnl AC_CACHE_CHECK([$1], [$2], [$2=no save_LDFLAGS=$LDFLAGS LDFLAGS="$LDFLAGS $3" echo "$lt_simple_link_test_code" > conftest.$ac_ext if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then # The linker can only warn and ignore the option if not recognized # So say no if there are warnings if test -s conftest.err; then # Append any errors to the config.log. cat conftest.err 1>&AS_MESSAGE_LOG_FD $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if diff conftest.exp conftest.er2 >/dev/null; then $2=yes fi else $2=yes fi fi $RM -r conftest* LDFLAGS=$save_LDFLAGS ]) if test yes = "[$]$2"; then m4_if([$4], , :, [$4]) else m4_if([$5], , :, [$5]) fi ])# _LT_LINKER_OPTION # Old name: AU_ALIAS([AC_LIBTOOL_LINKER_OPTION], [_LT_LINKER_OPTION]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_LINKER_OPTION], []) # LT_CMD_MAX_LEN #--------------- AC_DEFUN([LT_CMD_MAX_LEN], [AC_REQUIRE([AC_CANONICAL_HOST])dnl # find the maximum length of command line arguments AC_MSG_CHECKING([the maximum length of command line arguments]) AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl i=0 teststring=ABCD case $build_os in msdosdjgpp*) # On DJGPP, this test can blow up pretty badly due to problems in libc # (any single argument exceeding 2000 bytes causes a buffer overrun # during glob expansion). Even if it were fixed, the result of this # check would be larger than it should be. lt_cv_sys_max_cmd_len=12288; # 12K is about right ;; gnu*) # Under GNU Hurd, this test is not required because there is # no limit to the length of command line arguments. # Libtool will interpret -1 as no limit whatsoever lt_cv_sys_max_cmd_len=-1; ;; cygwin* | mingw* | cegcc*) # On Win9x/ME, this test blows up -- it succeeds, but takes # about 5 minutes as the teststring grows exponentially. # Worse, since 9x/ME are not pre-emptively multitasking, # you end up with a "frozen" computer, even though with patience # the test eventually succeeds (with a max line length of 256k). # Instead, let's just punt: use the minimum linelength reported by # all of the supported platforms: 8192 (on NT/2K/XP). lt_cv_sys_max_cmd_len=8192; ;; mint*) # On MiNT this can take a long time and run out of memory. lt_cv_sys_max_cmd_len=8192; ;; amigaos*) # On AmigaOS with pdksh, this test takes hours, literally. # So we just punt and use a minimum line length of 8192. lt_cv_sys_max_cmd_len=8192; ;; bitrig* | darwin* | dragonfly* | freebsd* | netbsd* | openbsd*) # This has been around since 386BSD, at least. Likely further. if test -x /sbin/sysctl; then lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` elif test -x /usr/sbin/sysctl; then lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` else lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs fi # And add a safety zone lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` ;; interix*) # We know the value 262144 and hardcode it with a safety zone (like BSD) lt_cv_sys_max_cmd_len=196608 ;; os2*) # The test takes a long time on OS/2. lt_cv_sys_max_cmd_len=8192 ;; osf*) # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not # nice to cause kernel panics so lets avoid the loop below. # First set a reasonable default. lt_cv_sys_max_cmd_len=16384 # if test -x /sbin/sysconfig; then case `/sbin/sysconfig -q proc exec_disable_arg_limit` in *1*) lt_cv_sys_max_cmd_len=-1 ;; esac fi ;; sco3.2v5*) lt_cv_sys_max_cmd_len=102400 ;; sysv5* | sco5v6* | sysv4.2uw2*) kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null` if test -n "$kargmax"; then lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[[ ]]//'` else lt_cv_sys_max_cmd_len=32768 fi ;; *) lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null` if test -n "$lt_cv_sys_max_cmd_len" && \ test undefined != "$lt_cv_sys_max_cmd_len"; then lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` else # Make teststring a little bigger before we do anything with it. # a 1K string should be a reasonable start. for i in 1 2 3 4 5 6 7 8; do teststring=$teststring$teststring done SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} # If test is not a shell built-in, we'll probably end up computing a # maximum length that is only half of the actual maximum length, but # we can't tell. while { test X`env echo "$teststring$teststring" 2>/dev/null` \ = "X$teststring$teststring"; } >/dev/null 2>&1 && test 17 != "$i" # 1/2 MB should be enough do i=`expr $i + 1` teststring=$teststring$teststring done # Only check the string length outside the loop. lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1` teststring= # Add a significant safety factor because C++ compilers can tack on # massive amounts of additional arguments before passing them to the # linker. It appears as though 1/2 is a usable value. lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` fi ;; esac ]) if test -n "$lt_cv_sys_max_cmd_len"; then AC_MSG_RESULT($lt_cv_sys_max_cmd_len) else AC_MSG_RESULT(none) fi max_cmd_len=$lt_cv_sys_max_cmd_len _LT_DECL([], [max_cmd_len], [0], [What is the maximum length of a command?]) ])# LT_CMD_MAX_LEN # Old name: AU_ALIAS([AC_LIBTOOL_SYS_MAX_CMD_LEN], [LT_CMD_MAX_LEN]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_SYS_MAX_CMD_LEN], []) # _LT_HEADER_DLFCN # ---------------- m4_defun([_LT_HEADER_DLFCN], [AC_CHECK_HEADERS([dlfcn.h], [], [], [AC_INCLUDES_DEFAULT])dnl ])# _LT_HEADER_DLFCN # _LT_TRY_DLOPEN_SELF (ACTION-IF-TRUE, ACTION-IF-TRUE-W-USCORE, # ACTION-IF-FALSE, ACTION-IF-CROSS-COMPILING) # ---------------------------------------------------------------- m4_defun([_LT_TRY_DLOPEN_SELF], [m4_require([_LT_HEADER_DLFCN])dnl if test yes = "$cross_compiling"; then : [$4] else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF [#line $LINENO "configure" #include "confdefs.h" #if HAVE_DLFCN_H #include #endif #include #ifdef RTLD_GLOBAL # define LT_DLGLOBAL RTLD_GLOBAL #else # ifdef DL_GLOBAL # define LT_DLGLOBAL DL_GLOBAL # else # define LT_DLGLOBAL 0 # endif #endif /* We may have to define LT_DLLAZY_OR_NOW in the command line if we find out it does not work in some platform. */ #ifndef LT_DLLAZY_OR_NOW # ifdef RTLD_LAZY # define LT_DLLAZY_OR_NOW RTLD_LAZY # else # ifdef DL_LAZY # define LT_DLLAZY_OR_NOW DL_LAZY # else # ifdef RTLD_NOW # define LT_DLLAZY_OR_NOW RTLD_NOW # else # ifdef DL_NOW # define LT_DLLAZY_OR_NOW DL_NOW # else # define LT_DLLAZY_OR_NOW 0 # endif # endif # endif # endif #endif /* When -fvisibility=hidden is used, assume the code has been annotated correspondingly for the symbols needed. */ #if defined __GNUC__ && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) int fnord () __attribute__((visibility("default"))); #endif int fnord () { return 42; } int main () { void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); int status = $lt_dlunknown; if (self) { if (dlsym (self,"fnord")) status = $lt_dlno_uscore; else { if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; else puts (dlerror ()); } /* dlclose (self); */ } else puts (dlerror ()); return status; }] _LT_EOF if AC_TRY_EVAL(ac_link) && test -s "conftest$ac_exeext" 2>/dev/null; then (./conftest; exit; ) >&AS_MESSAGE_LOG_FD 2>/dev/null lt_status=$? case x$lt_status in x$lt_dlno_uscore) $1 ;; x$lt_dlneed_uscore) $2 ;; x$lt_dlunknown|x*) $3 ;; esac else : # compilation failed $3 fi fi rm -fr conftest* ])# _LT_TRY_DLOPEN_SELF # LT_SYS_DLOPEN_SELF # ------------------ AC_DEFUN([LT_SYS_DLOPEN_SELF], [m4_require([_LT_HEADER_DLFCN])dnl if test yes != "$enable_dlopen"; then enable_dlopen=unknown enable_dlopen_self=unknown enable_dlopen_self_static=unknown else lt_cv_dlopen=no lt_cv_dlopen_libs= case $host_os in beos*) lt_cv_dlopen=load_add_on lt_cv_dlopen_libs= lt_cv_dlopen_self=yes ;; mingw* | pw32* | cegcc*) lt_cv_dlopen=LoadLibrary lt_cv_dlopen_libs= ;; cygwin*) lt_cv_dlopen=dlopen lt_cv_dlopen_libs= ;; darwin*) # if libdl is installed we need to link against it AC_CHECK_LIB([dl], [dlopen], [lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-ldl],[ lt_cv_dlopen=dyld lt_cv_dlopen_libs= lt_cv_dlopen_self=yes ]) ;; tpf*) # Don't try to run any link tests for TPF. We know it's impossible # because TPF is a cross-compiler, and we know how we open DSOs. lt_cv_dlopen=dlopen lt_cv_dlopen_libs= lt_cv_dlopen_self=no ;; *) AC_CHECK_FUNC([shl_load], [lt_cv_dlopen=shl_load], [AC_CHECK_LIB([dld], [shl_load], [lt_cv_dlopen=shl_load lt_cv_dlopen_libs=-ldld], [AC_CHECK_FUNC([dlopen], [lt_cv_dlopen=dlopen], [AC_CHECK_LIB([dl], [dlopen], [lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-ldl], [AC_CHECK_LIB([svld], [dlopen], [lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-lsvld], [AC_CHECK_LIB([dld], [dld_link], [lt_cv_dlopen=dld_link lt_cv_dlopen_libs=-ldld]) ]) ]) ]) ]) ]) ;; esac if test no = "$lt_cv_dlopen"; then enable_dlopen=no else enable_dlopen=yes fi case $lt_cv_dlopen in dlopen) save_CPPFLAGS=$CPPFLAGS test yes = "$ac_cv_header_dlfcn_h" && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" save_LDFLAGS=$LDFLAGS wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" save_LIBS=$LIBS LIBS="$lt_cv_dlopen_libs $LIBS" AC_CACHE_CHECK([whether a program can dlopen itself], lt_cv_dlopen_self, [dnl _LT_TRY_DLOPEN_SELF( lt_cv_dlopen_self=yes, lt_cv_dlopen_self=yes, lt_cv_dlopen_self=no, lt_cv_dlopen_self=cross) ]) if test yes = "$lt_cv_dlopen_self"; then wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" AC_CACHE_CHECK([whether a statically linked program can dlopen itself], lt_cv_dlopen_self_static, [dnl _LT_TRY_DLOPEN_SELF( lt_cv_dlopen_self_static=yes, lt_cv_dlopen_self_static=yes, lt_cv_dlopen_self_static=no, lt_cv_dlopen_self_static=cross) ]) fi CPPFLAGS=$save_CPPFLAGS LDFLAGS=$save_LDFLAGS LIBS=$save_LIBS ;; esac case $lt_cv_dlopen_self in yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; *) enable_dlopen_self=unknown ;; esac case $lt_cv_dlopen_self_static in yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; *) enable_dlopen_self_static=unknown ;; esac fi _LT_DECL([dlopen_support], [enable_dlopen], [0], [Whether dlopen is supported]) _LT_DECL([dlopen_self], [enable_dlopen_self], [0], [Whether dlopen of programs is supported]) _LT_DECL([dlopen_self_static], [enable_dlopen_self_static], [0], [Whether dlopen of statically linked programs is supported]) ])# LT_SYS_DLOPEN_SELF # Old name: AU_ALIAS([AC_LIBTOOL_DLOPEN_SELF], [LT_SYS_DLOPEN_SELF]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_DLOPEN_SELF], []) # _LT_COMPILER_C_O([TAGNAME]) # --------------------------- # Check to see if options -c and -o are simultaneously supported by compiler. # This macro does not hard code the compiler like AC_PROG_CC_C_O. m4_defun([_LT_COMPILER_C_O], [m4_require([_LT_DECL_SED])dnl m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_TAG_COMPILER])dnl AC_CACHE_CHECK([if $compiler supports -c -o file.$ac_objext], [_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)], [_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=no $RM -r conftest 2>/dev/null mkdir conftest cd conftest mkdir out echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-o out/conftest2.$ac_objext" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&AS_MESSAGE_LOG_FD) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&AS_MESSAGE_LOG_FD echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then _LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes fi fi chmod u+w . 2>&AS_MESSAGE_LOG_FD $RM conftest* # SGI C++ compiler will create directory out/ii_files/ for # template instantiation test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files $RM out/* && rmdir out cd .. $RM -r conftest $RM conftest* ]) _LT_TAGDECL([compiler_c_o], [lt_cv_prog_compiler_c_o], [1], [Does compiler simultaneously support -c and -o options?]) ])# _LT_COMPILER_C_O # _LT_COMPILER_FILE_LOCKS([TAGNAME]) # ---------------------------------- # Check to see if we can do hard links to lock some files if needed m4_defun([_LT_COMPILER_FILE_LOCKS], [m4_require([_LT_ENABLE_LOCK])dnl m4_require([_LT_FILEUTILS_DEFAULTS])dnl _LT_COMPILER_C_O([$1]) hard_links=nottested if test no = "$_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)" && test no != "$need_locks"; then # do not overwrite the value of need_locks provided by the user AC_MSG_CHECKING([if we can lock with hard links]) hard_links=yes $RM conftest* ln conftest.a conftest.b 2>/dev/null && hard_links=no touch conftest.a ln conftest.a conftest.b 2>&5 || hard_links=no ln conftest.a conftest.b 2>/dev/null && hard_links=no AC_MSG_RESULT([$hard_links]) if test no = "$hard_links"; then AC_MSG_WARN(['$CC' does not support '-c -o', so 'make -j' may be unsafe]) need_locks=warn fi else need_locks=no fi _LT_DECL([], [need_locks], [1], [Must we lock files when doing compilation?]) ])# _LT_COMPILER_FILE_LOCKS # _LT_CHECK_OBJDIR # ---------------- m4_defun([_LT_CHECK_OBJDIR], [AC_CACHE_CHECK([for objdir], [lt_cv_objdir], [rm -f .libs 2>/dev/null mkdir .libs 2>/dev/null if test -d .libs; then lt_cv_objdir=.libs else # MS-DOS does not allow filenames that begin with a dot. lt_cv_objdir=_libs fi rmdir .libs 2>/dev/null]) objdir=$lt_cv_objdir _LT_DECL([], [objdir], [0], [The name of the directory that contains temporary libtool files])dnl m4_pattern_allow([LT_OBJDIR])dnl AC_DEFINE_UNQUOTED([LT_OBJDIR], "$lt_cv_objdir/", [Define to the sub-directory where libtool stores uninstalled libraries.]) ])# _LT_CHECK_OBJDIR # _LT_LINKER_HARDCODE_LIBPATH([TAGNAME]) # -------------------------------------- # Check hardcoding attributes. m4_defun([_LT_LINKER_HARDCODE_LIBPATH], [AC_MSG_CHECKING([how to hardcode library paths into programs]) _LT_TAGVAR(hardcode_action, $1)= if test -n "$_LT_TAGVAR(hardcode_libdir_flag_spec, $1)" || test -n "$_LT_TAGVAR(runpath_var, $1)" || test yes = "$_LT_TAGVAR(hardcode_automatic, $1)"; then # We can hardcode non-existent directories. if test no != "$_LT_TAGVAR(hardcode_direct, $1)" && # If the only mechanism to avoid hardcoding is shlibpath_var, we # have to relink, otherwise we might link with an installed library # when we should be linking with a yet-to-be-installed one ## test no != "$_LT_TAGVAR(hardcode_shlibpath_var, $1)" && test no != "$_LT_TAGVAR(hardcode_minus_L, $1)"; then # Linking always hardcodes the temporary library directory. _LT_TAGVAR(hardcode_action, $1)=relink else # We can link without hardcoding, and we can hardcode nonexisting dirs. _LT_TAGVAR(hardcode_action, $1)=immediate fi else # We cannot hardcode anything, or else we can only hardcode existing # directories. _LT_TAGVAR(hardcode_action, $1)=unsupported fi AC_MSG_RESULT([$_LT_TAGVAR(hardcode_action, $1)]) if test relink = "$_LT_TAGVAR(hardcode_action, $1)" || test yes = "$_LT_TAGVAR(inherit_rpath, $1)"; then # Fast installation is not supported enable_fast_install=no elif test yes = "$shlibpath_overrides_runpath" || test no = "$enable_shared"; then # Fast installation is not necessary enable_fast_install=needless fi _LT_TAGDECL([], [hardcode_action], [0], [How to hardcode a shared library path into an executable]) ])# _LT_LINKER_HARDCODE_LIBPATH # _LT_CMD_STRIPLIB # ---------------- m4_defun([_LT_CMD_STRIPLIB], [m4_require([_LT_DECL_EGREP]) striplib= old_striplib= AC_MSG_CHECKING([whether stripping libraries is possible]) if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" test -z "$striplib" && striplib="$STRIP --strip-unneeded" AC_MSG_RESULT([yes]) else # FIXME - insert some real tests, host_os isn't really good enough case $host_os in darwin*) if test -n "$STRIP"; then striplib="$STRIP -x" old_striplib="$STRIP -S" AC_MSG_RESULT([yes]) else AC_MSG_RESULT([no]) fi ;; *) AC_MSG_RESULT([no]) ;; esac fi _LT_DECL([], [old_striplib], [1], [Commands to strip libraries]) _LT_DECL([], [striplib], [1]) ])# _LT_CMD_STRIPLIB # _LT_PREPARE_MUNGE_PATH_LIST # --------------------------- # Make sure func_munge_path_list() is defined correctly. m4_defun([_LT_PREPARE_MUNGE_PATH_LIST], [[# func_munge_path_list VARIABLE PATH # ----------------------------------- # VARIABLE is name of variable containing _space_ separated list of # directories to be munged by the contents of PATH, which is string # having a format: # "DIR[:DIR]:" # string "DIR[ DIR]" will be prepended to VARIABLE # ":DIR[:DIR]" # string "DIR[ DIR]" will be appended to VARIABLE # "DIRP[:DIRP]::[DIRA:]DIRA" # string "DIRP[ DIRP]" will be prepended to VARIABLE and string # "DIRA[ DIRA]" will be appended to VARIABLE # "DIR[:DIR]" # VARIABLE will be replaced by "DIR[ DIR]" func_munge_path_list () { case x@S|@2 in x) ;; *:) eval @S|@1=\"`$ECHO @S|@2 | $SED 's/:/ /g'` \@S|@@S|@1\" ;; x:*) eval @S|@1=\"\@S|@@S|@1 `$ECHO @S|@2 | $SED 's/:/ /g'`\" ;; *::*) eval @S|@1=\"\@S|@@S|@1\ `$ECHO @S|@2 | $SED -e 's/.*:://' -e 's/:/ /g'`\" eval @S|@1=\"`$ECHO @S|@2 | $SED -e 's/::.*//' -e 's/:/ /g'`\ \@S|@@S|@1\" ;; *) eval @S|@1=\"`$ECHO @S|@2 | $SED 's/:/ /g'`\" ;; esac } ]])# _LT_PREPARE_PATH_LIST # _LT_SYS_DYNAMIC_LINKER([TAG]) # ----------------------------- # PORTME Fill in your ld.so characteristics m4_defun([_LT_SYS_DYNAMIC_LINKER], [AC_REQUIRE([AC_CANONICAL_HOST])dnl m4_require([_LT_DECL_EGREP])dnl m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_DECL_OBJDUMP])dnl m4_require([_LT_DECL_SED])dnl m4_require([_LT_CHECK_SHELL_FEATURES])dnl m4_require([_LT_PREPARE_MUNGE_PATH_LIST])dnl AC_MSG_CHECKING([dynamic linker characteristics]) m4_if([$1], [], [ if test yes = "$GCC"; then case $host_os in darwin*) lt_awk_arg='/^libraries:/,/LR/' ;; *) lt_awk_arg='/^libraries:/' ;; esac case $host_os in mingw* | cegcc*) lt_sed_strip_eq='s|=\([[A-Za-z]]:\)|\1|g' ;; *) lt_sed_strip_eq='s|=/|/|g' ;; esac lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq` case $lt_search_path_spec in *\;*) # if the path contains ";" then we assume it to be the separator # otherwise default to the standard path separator (i.e. ":") - it is # assumed that no part of a normal pathname contains ";" but that should # okay in the real world where ";" in dirpaths is itself problematic. lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED 's/;/ /g'` ;; *) lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED "s/$PATH_SEPARATOR/ /g"` ;; esac # Ok, now we have the path, separated by spaces, we can step through it # and add multilib dir if necessary... lt_tmp_lt_search_path_spec= lt_multi_os_dir=/`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null` # ...but if some path component already ends with the multilib dir we assume # that all is fine and trust -print-search-dirs as is (GCC 4.2? or newer). case "$lt_multi_os_dir; $lt_search_path_spec " in "/; "* | "/.; "* | "/./; "* | *"$lt_multi_os_dir "* | *"$lt_multi_os_dir/ "*) lt_multi_os_dir= ;; esac for lt_sys_path in $lt_search_path_spec; do if test -d "$lt_sys_path$lt_multi_os_dir"; then lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path$lt_multi_os_dir" elif test -n "$lt_multi_os_dir"; then test -d "$lt_sys_path" && \ lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path" fi done lt_search_path_spec=`$ECHO "$lt_tmp_lt_search_path_spec" | awk ' BEGIN {RS = " "; FS = "/|\n";} { lt_foo = ""; lt_count = 0; for (lt_i = NF; lt_i > 0; lt_i--) { if ($lt_i != "" && $lt_i != ".") { if ($lt_i == "..") { lt_count++; } else { if (lt_count == 0) { lt_foo = "/" $lt_i lt_foo; } else { lt_count--; } } } } if (lt_foo != "") { lt_freq[[lt_foo]]++; } if (lt_freq[[lt_foo]] == 1) { print lt_foo; } }'` # AWK program above erroneously prepends '/' to C:/dos/paths # for these hosts. case $host_os in mingw* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\ $SED 's|/\([[A-Za-z]]:\)|\1|g'` ;; esac sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP` else sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" fi]) library_names_spec= libname_spec='lib$name' soname_spec= shrext_cmds=.so postinstall_cmds= postuninstall_cmds= finish_cmds= finish_eval= shlibpath_var= shlibpath_overrides_runpath=unknown version_type=none dynamic_linker="$host_os ld.so" sys_lib_dlsearch_path_spec="/lib /usr/lib" need_lib_prefix=unknown hardcode_into_libs=no # when you set need_version to no, make sure it does not cause -set_version # flags to be left without arguments need_version=unknown AC_ARG_VAR([LT_SYS_LIBRARY_PATH], [User-defined run-time library search path.]) case $host_os in aix3*) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='$libname$release$shared_ext$versuffix $libname.a' shlibpath_var=LIBPATH # AIX 3 has no versioning support, so we append a major version to the name. soname_spec='$libname$release$shared_ext$major' ;; aix[[4-9]]*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no hardcode_into_libs=yes if test ia64 = "$host_cpu"; then # AIX 5 supports IA64 library_names_spec='$libname$release$shared_ext$major $libname$release$shared_ext$versuffix $libname$shared_ext' shlibpath_var=LD_LIBRARY_PATH else # With GCC up to 2.95.x, collect2 would create an import file # for dependence libraries. The import file would start with # the line '#! .'. This would cause the generated library to # depend on '.', always an invalid library. This was fixed in # development snapshots of GCC prior to 3.0. case $host_os in aix4 | aix4.[[01]] | aix4.[[01]].*) if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' echo ' yes ' echo '#endif'; } | $CC -E - | $GREP yes > /dev/null; then : else can_build_shared=no fi ;; esac # Using Import Files as archive members, it is possible to support # filename-based versioning of shared library archives on AIX. While # this would work for both with and without runtime linking, it will # prevent static linking of such archives. So we do filename-based # shared library versioning with .so extension only, which is used # when both runtime linking and shared linking is enabled. # Unfortunately, runtime linking may impact performance, so we do # not want this to be the default eventually. Also, we use the # versioned .so libs for executables only if there is the -brtl # linker flag in LDFLAGS as well, or --with-aix-soname=svr4 only. # To allow for filename-based versioning support, we need to create # libNAME.so.V as an archive file, containing: # *) an Import File, referring to the versioned filename of the # archive as well as the shared archive member, telling the # bitwidth (32 or 64) of that shared object, and providing the # list of exported symbols of that shared object, eventually # decorated with the 'weak' keyword # *) the shared object with the F_LOADONLY flag set, to really avoid # it being seen by the linker. # At run time we better use the real file rather than another symlink, # but for link time we create the symlink libNAME.so -> libNAME.so.V case $with_aix_soname,$aix_use_runtimelinking in # AIX (on Power*) has no versioning support, so currently we cannot hardcode correct # soname into executable. Probably we can add versioning support to # collect2, so additional links can be useful in future. aix,yes) # traditional libtool dynamic_linker='AIX unversionable lib.so' # If using run time linking (on AIX 4.2 or later) use lib.so # instead of lib.a to let people know that these are not # typical AIX shared libraries. library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' ;; aix,no) # traditional AIX only dynamic_linker='AIX lib.a[(]lib.so.V[)]' # We preserve .a as extension for shared libraries through AIX4.2 # and later when we are not doing run time linking. library_names_spec='$libname$release.a $libname.a' soname_spec='$libname$release$shared_ext$major' ;; svr4,*) # full svr4 only dynamic_linker="AIX lib.so.V[(]$shared_archive_member_spec.o[)]" library_names_spec='$libname$release$shared_ext$major $libname$shared_ext' # We do not specify a path in Import Files, so LIBPATH fires. shlibpath_overrides_runpath=yes ;; *,yes) # both, prefer svr4 dynamic_linker="AIX lib.so.V[(]$shared_archive_member_spec.o[)], lib.a[(]lib.so.V[)]" library_names_spec='$libname$release$shared_ext$major $libname$shared_ext' # unpreferred sharedlib libNAME.a needs extra handling postinstall_cmds='test -n "$linkname" || linkname="$realname"~func_stripname "" ".so" "$linkname"~$install_shared_prog "$dir/$func_stripname_result.$libext" "$destdir/$func_stripname_result.$libext"~test -z "$tstripme" || test -z "$striplib" || $striplib "$destdir/$func_stripname_result.$libext"' postuninstall_cmds='for n in $library_names $old_library; do :; done~func_stripname "" ".so" "$n"~test "$func_stripname_result" = "$n" || func_append rmfiles " $odir/$func_stripname_result.$libext"' # We do not specify a path in Import Files, so LIBPATH fires. shlibpath_overrides_runpath=yes ;; *,no) # both, prefer aix dynamic_linker="AIX lib.a[(]lib.so.V[)], lib.so.V[(]$shared_archive_member_spec.o[)]" library_names_spec='$libname$release.a $libname.a' soname_spec='$libname$release$shared_ext$major' # unpreferred sharedlib libNAME.so.V and symlink libNAME.so need extra handling postinstall_cmds='test -z "$dlname" || $install_shared_prog $dir/$dlname $destdir/$dlname~test -z "$tstripme" || test -z "$striplib" || $striplib $destdir/$dlname~test -n "$linkname" || linkname=$realname~func_stripname "" ".a" "$linkname"~(cd "$destdir" && $LN_S -f $dlname $func_stripname_result.so)' postuninstall_cmds='test -z "$dlname" || func_append rmfiles " $odir/$dlname"~for n in $old_library $library_names; do :; done~func_stripname "" ".a" "$n"~func_append rmfiles " $odir/$func_stripname_result.so"' ;; esac shlibpath_var=LIBPATH fi ;; amigaos*) case $host_cpu in powerpc) # Since July 2007 AmigaOS4 officially supports .so libraries. # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' ;; m68k) library_names_spec='$libname.ixlibrary $libname.a' # Create ${libname}_ixlibrary.a entries in /sys/libs. finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([[^/]]*\)\.ixlibrary$%\1%'\''`; $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' ;; esac ;; beos*) library_names_spec='$libname$shared_ext' dynamic_linker="$host_os ld.so" shlibpath_var=LIBRARY_PATH ;; bsdi[[45]]*) version_type=linux # correct to gnu/linux during the next big refactor need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" # the default ld.so.conf also contains /usr/contrib/lib and # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow # libtool to hard-code these into programs ;; cygwin* | mingw* | pw32* | cegcc*) version_type=windows shrext_cmds=.dll need_version=no need_lib_prefix=no case $GCC,$cc_basename in yes,*) # gcc library_names_spec='$libname.dll.a' # DLL is installed to $(libdir)/../bin by postinstall_cmds postinstall_cmds='base_file=`basename \$file`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname~ chmod a+x \$dldir/$dlname~ if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; fi' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $RM \$dlpath' shlibpath_overrides_runpath=yes case $host_os in cygwin*) # Cygwin DLLs use 'cyg' prefix rather than 'lib' soname_spec='`echo $libname | sed -e 's/^lib/cyg/'``echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext' m4_if([$1], [],[ sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api"]) ;; mingw* | cegcc*) # MinGW DLLs use traditional 'lib' prefix soname_spec='$libname`echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext' ;; pw32*) # pw32 DLLs use 'pw' prefix rather than 'lib' library_names_spec='`echo $libname | sed -e 's/^lib/pw/'``echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext' ;; esac dynamic_linker='Win32 ld.exe' ;; *,cl*) # Native MSVC libname_spec='$name' soname_spec='$libname`echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext' library_names_spec='$libname.dll.lib' case $build_os in mingw*) sys_lib_search_path_spec= lt_save_ifs=$IFS IFS=';' for lt_path in $LIB do IFS=$lt_save_ifs # Let DOS variable expansion print the short 8.3 style file name. lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"` sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path" done IFS=$lt_save_ifs # Convert to MSYS style. sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([[a-zA-Z]]\\):| /\\1|g' -e 's|^ ||'` ;; cygwin*) # Convert to unix form, then to dos form, then back to unix form # but this time dos style (no spaces!) so that the unix form looks # like /cygdrive/c/PROGRA~1:/cygdr... sys_lib_search_path_spec=`cygpath --path --unix "$LIB"` sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null` sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` ;; *) sys_lib_search_path_spec=$LIB if $ECHO "$sys_lib_search_path_spec" | [$GREP ';[c-zC-Z]:/' >/dev/null]; then # It is most probably a Windows format PATH. sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` else sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` fi # FIXME: find the short name or the path components, as spaces are # common. (e.g. "Program Files" -> "PROGRA~1") ;; esac # DLL is installed to $(libdir)/../bin by postinstall_cmds postinstall_cmds='base_file=`basename \$file`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $RM \$dlpath' shlibpath_overrides_runpath=yes dynamic_linker='Win32 link.exe' ;; *) # Assume MSVC wrapper library_names_spec='$libname`echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext $libname.lib' dynamic_linker='Win32 ld.exe' ;; esac # FIXME: first we should search . and the directory the executable is in shlibpath_var=PATH ;; darwin* | rhapsody*) dynamic_linker="$host_os dyld" version_type=darwin need_lib_prefix=no need_version=no library_names_spec='$libname$release$major$shared_ext $libname$shared_ext' soname_spec='$libname$release$major$shared_ext' shlibpath_overrides_runpath=yes shlibpath_var=DYLD_LIBRARY_PATH shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' m4_if([$1], [],[ sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib"]) sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' ;; dgux*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH ;; freebsd* | dragonfly*) # DragonFly does not have aout. When/if they implement a new # versioning mechanism, adjust this. if test -x /usr/bin/objformat; then objformat=`/usr/bin/objformat` else case $host_os in freebsd[[23]].*) objformat=aout ;; *) objformat=elf ;; esac fi version_type=freebsd-$objformat case $version_type in freebsd-elf*) library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' need_version=no need_lib_prefix=no ;; freebsd-*) library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' need_version=yes ;; esac shlibpath_var=LD_LIBRARY_PATH case $host_os in freebsd2.*) shlibpath_overrides_runpath=yes ;; freebsd3.[[01]]* | freebsdelf3.[[01]]*) shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; freebsd3.[[2-9]]* | freebsdelf3.[[2-9]]* | \ freebsd4.[[0-5]] | freebsdelf4.[[0-5]] | freebsd4.1.1 | freebsdelf4.1.1) shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; *) # from 4.6 on, and DragonFly shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; esac ;; haiku*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no dynamic_linker="$host_os runtime_loader" library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LIBRARY_PATH shlibpath_overrides_runpath=no sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib' hardcode_into_libs=yes ;; hpux9* | hpux10* | hpux11*) # Give a soname corresponding to the major version so that dld.sl refuses to # link against other versions. version_type=sunos need_lib_prefix=no need_version=no case $host_cpu in ia64*) shrext_cmds='.so' hardcode_into_libs=yes dynamic_linker="$host_os dld.so" shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' if test 32 = "$HPUX_IA64_MODE"; then sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" sys_lib_dlsearch_path_spec=/usr/lib/hpux32 else sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" sys_lib_dlsearch_path_spec=/usr/lib/hpux64 fi ;; hppa*64*) shrext_cmds='.sl' hardcode_into_libs=yes dynamic_linker="$host_os dld.sl" shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; *) shrext_cmds='.sl' dynamic_linker="$host_os dld.sl" shlibpath_var=SHLIB_PATH shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' ;; esac # HP-UX runs *really* slowly unless shared libraries are mode 555, ... postinstall_cmds='chmod 555 $lib' # or fails outright, so override atomically: install_override_mode=555 ;; interix[[3-9]]*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; irix5* | irix6* | nonstopux*) case $host_os in nonstopux*) version_type=nonstopux ;; *) if test yes = "$lt_cv_prog_gnu_ld"; then version_type=linux # correct to gnu/linux during the next big refactor else version_type=irix fi ;; esac need_lib_prefix=no need_version=no soname_spec='$libname$release$shared_ext$major' library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$release$shared_ext $libname$shared_ext' case $host_os in irix5* | nonstopux*) libsuff= shlibsuff= ;; *) case $LD in # libtool.m4 will add one of these switches to LD *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") libsuff= shlibsuff= libmagic=32-bit;; *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") libsuff=32 shlibsuff=N32 libmagic=N32;; *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") libsuff=64 shlibsuff=64 libmagic=64-bit;; *) libsuff= shlibsuff= libmagic=never-match;; esac ;; esac shlibpath_var=LD_LIBRARY${shlibsuff}_PATH shlibpath_overrides_runpath=no sys_lib_search_path_spec="/usr/lib$libsuff /lib$libsuff /usr/local/lib$libsuff" sys_lib_dlsearch_path_spec="/usr/lib$libsuff /lib$libsuff" hardcode_into_libs=yes ;; # No shared lib support for Linux oldld, aout, or coff. linux*oldld* | linux*aout* | linux*coff*) dynamic_linker=no ;; linux*android*) version_type=none # Android doesn't support versioned libraries. need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext' soname_spec='$libname$release$shared_ext' finish_cmds= shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes # This implies no fast_install, which is unacceptable. # Some rework will be needed to allow for fast_install # before this can be enabled. hardcode_into_libs=yes dynamic_linker='Android linker' # Don't embed -rpath directories since the linker doesn't support them. _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' ;; # This must be glibc/ELF. linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no # Some binutils ld are patched to set DT_RUNPATH AC_CACHE_VAL([lt_cv_shlibpath_overrides_runpath], [lt_cv_shlibpath_overrides_runpath=no save_LDFLAGS=$LDFLAGS save_libdir=$libdir eval "libdir=/foo; wl=\"$_LT_TAGVAR(lt_prog_compiler_wl, $1)\"; \ LDFLAGS=\"\$LDFLAGS $_LT_TAGVAR(hardcode_libdir_flag_spec, $1)\"" AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])], [AS_IF([ ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null], [lt_cv_shlibpath_overrides_runpath=yes])]) LDFLAGS=$save_LDFLAGS libdir=$save_libdir ]) shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath # This implies no fast_install, which is unacceptable. # Some rework will be needed to allow for fast_install # before this can be enabled. hardcode_into_libs=yes # Add ABI-specific directories to the system library path. sys_lib_dlsearch_path_spec="/lib64 /usr/lib64 /lib /usr/lib" # Ideally, we could use ldconfig to report *all* directores which are # searched for libraries, however this is still not possible. Aside from not # being certain /sbin/ldconfig is available, command # 'ldconfig -N -X -v | grep ^/' on 64bit Fedora does not report /usr/lib64, # even though it is searched at run-time. Try to do the best guess by # appending ld.so.conf contents (and includes) to the search path. if test -f /etc/ld.so.conf; then lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \[$]2)); skip = 1; } { if (!skip) print \[$]0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '` sys_lib_dlsearch_path_spec="$sys_lib_dlsearch_path_spec $lt_ld_extra" fi # We used to test for /lib/ld.so.1 and disable shared libraries on # powerpc, because MkLinux only supported shared libraries with the # GNU dynamic linker. Since this was broken with cross compilers, # most powerpc-linux boxes support dynamic linking these days and # people can always --disable-shared, the test was removed, and we # assume the GNU/Linux dynamic linker is in use. dynamic_linker='GNU/Linux ld.so' ;; netbsd*) version_type=sunos need_lib_prefix=no need_version=no if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' dynamic_linker='NetBSD (a.out) ld.so' else library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' dynamic_linker='NetBSD ld.elf_so' fi shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; newsos6) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; *nto* | *qnx*) version_type=qnx need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes dynamic_linker='ldqnx.so' ;; openbsd* | bitrig*) version_type=sunos sys_lib_dlsearch_path_spec=/usr/lib need_lib_prefix=no if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then need_version=no else need_version=yes fi library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; os2*) libname_spec='$name' version_type=windows shrext_cmds=.dll need_version=no need_lib_prefix=no # OS/2 can only load a DLL with a base name of 8 characters or less. soname_spec='`test -n "$os2dllname" && libname="$os2dllname"; v=$($ECHO $release$versuffix | tr -d .-); n=$($ECHO $libname | cut -b -$((8 - ${#v})) | tr . _); $ECHO $n$v`$shared_ext' library_names_spec='${libname}_dll.$libext' dynamic_linker='OS/2 ld.exe' shlibpath_var=BEGINLIBPATH sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec postinstall_cmds='base_file=`basename \$file`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; $ECHO \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname~ chmod a+x \$dldir/$dlname~ if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; fi' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; $ECHO \$dlname'\''`~ dlpath=$dir/\$dldll~ $RM \$dlpath' ;; osf3* | osf4* | osf5*) version_type=osf need_lib_prefix=no need_version=no soname_spec='$libname$release$shared_ext$major' library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; rdos*) dynamic_linker=no ;; solaris*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes # ldd complains unless libraries are executable postinstall_cmds='chmod +x $lib' ;; sunos4*) version_type=sunos library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes if test yes = "$with_gnu_ld"; then need_lib_prefix=no fi need_version=yes ;; sysv4 | sysv4.3*) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH case $host_vendor in sni) shlibpath_overrides_runpath=no need_lib_prefix=no runpath_var=LD_RUN_PATH ;; siemens) need_lib_prefix=no ;; motorola) need_lib_prefix=no need_version=no shlibpath_overrides_runpath=no sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' ;; esac ;; sysv4*MP*) if test -d /usr/nec; then version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='$libname$shared_ext.$versuffix $libname$shared_ext.$major $libname$shared_ext' soname_spec='$libname$shared_ext.$major' shlibpath_var=LD_LIBRARY_PATH fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) version_type=sco need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes if test yes = "$with_gnu_ld"; then sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' else sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' case $host_os in sco3.2v5*) sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" ;; esac fi sys_lib_dlsearch_path_spec='/usr/lib' ;; tpf*) # TPF is a cross-target only. Preferred cross-host = GNU/Linux. version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; uts4*) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH ;; *) dynamic_linker=no ;; esac AC_MSG_RESULT([$dynamic_linker]) test no = "$dynamic_linker" && can_build_shared=no variables_saved_for_relink="PATH $shlibpath_var $runpath_var" if test yes = "$GCC"; then variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" fi if test set = "${lt_cv_sys_lib_search_path_spec+set}"; then sys_lib_search_path_spec=$lt_cv_sys_lib_search_path_spec fi if test set = "${lt_cv_sys_lib_dlsearch_path_spec+set}"; then sys_lib_dlsearch_path_spec=$lt_cv_sys_lib_dlsearch_path_spec fi # remember unaugmented sys_lib_dlsearch_path content for libtool script decls... configure_time_dlsearch_path=$sys_lib_dlsearch_path_spec # ... but it needs LT_SYS_LIBRARY_PATH munging for other configure-time code func_munge_path_list sys_lib_dlsearch_path_spec "$LT_SYS_LIBRARY_PATH" # to be used as default LT_SYS_LIBRARY_PATH value in generated libtool configure_time_lt_sys_library_path=$LT_SYS_LIBRARY_PATH _LT_DECL([], [variables_saved_for_relink], [1], [Variables whose values should be saved in libtool wrapper scripts and restored at link time]) _LT_DECL([], [need_lib_prefix], [0], [Do we need the "lib" prefix for modules?]) _LT_DECL([], [need_version], [0], [Do we need a version for libraries?]) _LT_DECL([], [version_type], [0], [Library versioning type]) _LT_DECL([], [runpath_var], [0], [Shared library runtime path variable]) _LT_DECL([], [shlibpath_var], [0],[Shared library path variable]) _LT_DECL([], [shlibpath_overrides_runpath], [0], [Is shlibpath searched before the hard-coded library search path?]) _LT_DECL([], [libname_spec], [1], [Format of library name prefix]) _LT_DECL([], [library_names_spec], [1], [[List of archive names. First name is the real one, the rest are links. The last name is the one that the linker finds with -lNAME]]) _LT_DECL([], [soname_spec], [1], [[The coded name of the library, if different from the real name]]) _LT_DECL([], [install_override_mode], [1], [Permission mode override for installation of shared libraries]) _LT_DECL([], [postinstall_cmds], [2], [Command to use after installation of a shared archive]) _LT_DECL([], [postuninstall_cmds], [2], [Command to use after uninstallation of a shared archive]) _LT_DECL([], [finish_cmds], [2], [Commands used to finish a libtool library installation in a directory]) _LT_DECL([], [finish_eval], [1], [[As "finish_cmds", except a single script fragment to be evaled but not shown]]) _LT_DECL([], [hardcode_into_libs], [0], [Whether we should hardcode library paths into libraries]) _LT_DECL([], [sys_lib_search_path_spec], [2], [Compile-time system search path for libraries]) _LT_DECL([sys_lib_dlsearch_path_spec], [configure_time_dlsearch_path], [2], [Detected run-time system search path for libraries]) _LT_DECL([], [configure_time_lt_sys_library_path], [2], [Explicit LT_SYS_LIBRARY_PATH set during ./configure time]) ])# _LT_SYS_DYNAMIC_LINKER # _LT_PATH_TOOL_PREFIX(TOOL) # -------------------------- # find a file program that can recognize shared library AC_DEFUN([_LT_PATH_TOOL_PREFIX], [m4_require([_LT_DECL_EGREP])dnl AC_MSG_CHECKING([for $1]) AC_CACHE_VAL(lt_cv_path_MAGIC_CMD, [case $MAGIC_CMD in [[\\/*] | ?:[\\/]*]) lt_cv_path_MAGIC_CMD=$MAGIC_CMD # Let the user override the test with a path. ;; *) lt_save_MAGIC_CMD=$MAGIC_CMD lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR dnl $ac_dummy forces splitting on constant user-supplied paths. dnl POSIX.2 word splitting is done only on the output of word expansions, dnl not every word. This closes a longstanding sh security hole. ac_dummy="m4_if([$2], , $PATH, [$2])" for ac_dir in $ac_dummy; do IFS=$lt_save_ifs test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/$1"; then lt_cv_path_MAGIC_CMD=$ac_dir/"$1" if test -n "$file_magic_test_file"; then case $deplibs_check_method in "file_magic "*) file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` MAGIC_CMD=$lt_cv_path_MAGIC_CMD if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | $EGREP "$file_magic_regex" > /dev/null; then : else cat <<_LT_EOF 1>&2 *** Warning: the command libtool uses to detect shared libraries, *** $file_magic_cmd, produces output that libtool cannot recognize. *** The result is that libtool may fail to recognize shared libraries *** as such. This will affect the creation of libtool libraries that *** depend on shared libraries, but programs linked with such libtool *** libraries will work regardless of this problem. Nevertheless, you *** may want to report the problem to your system manager and/or to *** bug-libtool@gnu.org _LT_EOF fi ;; esac fi break fi done IFS=$lt_save_ifs MAGIC_CMD=$lt_save_MAGIC_CMD ;; esac]) MAGIC_CMD=$lt_cv_path_MAGIC_CMD if test -n "$MAGIC_CMD"; then AC_MSG_RESULT($MAGIC_CMD) else AC_MSG_RESULT(no) fi _LT_DECL([], [MAGIC_CMD], [0], [Used to examine libraries when file_magic_cmd begins with "file"])dnl ])# _LT_PATH_TOOL_PREFIX # Old name: AU_ALIAS([AC_PATH_TOOL_PREFIX], [_LT_PATH_TOOL_PREFIX]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_PATH_TOOL_PREFIX], []) # _LT_PATH_MAGIC # -------------- # find a file program that can recognize a shared library m4_defun([_LT_PATH_MAGIC], [_LT_PATH_TOOL_PREFIX(${ac_tool_prefix}file, /usr/bin$PATH_SEPARATOR$PATH) if test -z "$lt_cv_path_MAGIC_CMD"; then if test -n "$ac_tool_prefix"; then _LT_PATH_TOOL_PREFIX(file, /usr/bin$PATH_SEPARATOR$PATH) else MAGIC_CMD=: fi fi ])# _LT_PATH_MAGIC # LT_PATH_LD # ---------- # find the pathname to the GNU or non-GNU linker AC_DEFUN([LT_PATH_LD], [AC_REQUIRE([AC_PROG_CC])dnl AC_REQUIRE([AC_CANONICAL_HOST])dnl AC_REQUIRE([AC_CANONICAL_BUILD])dnl m4_require([_LT_DECL_SED])dnl m4_require([_LT_DECL_EGREP])dnl m4_require([_LT_PROG_ECHO_BACKSLASH])dnl AC_ARG_WITH([gnu-ld], [AS_HELP_STRING([--with-gnu-ld], [assume the C compiler uses GNU ld @<:@default=no@:>@])], [test no = "$withval" || with_gnu_ld=yes], [with_gnu_ld=no])dnl ac_prog=ld if test yes = "$GCC"; then # Check if gcc -print-prog-name=ld gives a path. AC_MSG_CHECKING([for ld used by $CC]) case $host in *-*-mingw*) # gcc leaves a trailing carriage return, which upsets mingw ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; *) ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; esac case $ac_prog in # Accept absolute paths. [[\\/]]* | ?:[[\\/]]*) re_direlt='/[[^/]][[^/]]*/\.\./' # Canonicalize the pathname of ld ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'` while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` done test -z "$LD" && LD=$ac_prog ;; "") # If it fails, then pretend we aren't using GCC. ac_prog=ld ;; *) # If it is relative, then search for the first ld in PATH. with_gnu_ld=unknown ;; esac elif test yes = "$with_gnu_ld"; then AC_MSG_CHECKING([for GNU ld]) else AC_MSG_CHECKING([for non-GNU ld]) fi AC_CACHE_VAL(lt_cv_path_LD, [if test -z "$LD"; then lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR for ac_dir in $PATH; do IFS=$lt_save_ifs test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then lt_cv_path_LD=$ac_dir/$ac_prog # Check to see if the program is GNU ld. I'd rather use --version, # but apparently some variants of GNU ld only accept -v. # Break only if it was the GNU/non-GNU ld that we prefer. case `"$lt_cv_path_LD" -v 2>&1 &1 conftest.i cat conftest.i conftest.i >conftest2.i : ${lt_DD:=$DD} AC_PATH_PROGS_FEATURE_CHECK([lt_DD], [dd], [if "$ac_path_lt_DD" bs=32 count=1 conftest.out 2>/dev/null; then cmp -s conftest.i conftest.out \ && ac_cv_path_lt_DD="$ac_path_lt_DD" ac_path_lt_DD_found=: fi]) rm -f conftest.i conftest2.i conftest.out]) ])# _LT_PATH_DD # _LT_CMD_TRUNCATE # ---------------- # find command to truncate a binary pipe m4_defun([_LT_CMD_TRUNCATE], [m4_require([_LT_PATH_DD]) AC_CACHE_CHECK([how to truncate binary pipes], [lt_cv_truncate_bin], [printf 0123456789abcdef0123456789abcdef >conftest.i cat conftest.i conftest.i >conftest2.i lt_cv_truncate_bin= if "$ac_cv_path_lt_DD" bs=32 count=1 conftest.out 2>/dev/null; then cmp -s conftest.i conftest.out \ && lt_cv_truncate_bin="$ac_cv_path_lt_DD bs=4096 count=1" fi rm -f conftest.i conftest2.i conftest.out test -z "$lt_cv_truncate_bin" && lt_cv_truncate_bin="$SED -e 4q"]) _LT_DECL([lt_truncate_bin], [lt_cv_truncate_bin], [1], [Command to truncate a binary pipe]) ])# _LT_CMD_TRUNCATE # _LT_CHECK_MAGIC_METHOD # ---------------------- # how to check for library dependencies # -- PORTME fill in with the dynamic library characteristics m4_defun([_LT_CHECK_MAGIC_METHOD], [m4_require([_LT_DECL_EGREP]) m4_require([_LT_DECL_OBJDUMP]) AC_CACHE_CHECK([how to recognize dependent libraries], lt_cv_deplibs_check_method, [lt_cv_file_magic_cmd='$MAGIC_CMD' lt_cv_file_magic_test_file= lt_cv_deplibs_check_method='unknown' # Need to set the preceding variable on all platforms that support # interlibrary dependencies. # 'none' -- dependencies not supported. # 'unknown' -- same as none, but documents that we really don't know. # 'pass_all' -- all dependencies passed with no checks. # 'test_compile' -- check by making test program. # 'file_magic [[regex]]' -- check by looking for files in library path # that responds to the $file_magic_cmd with a given extended regex. # If you have 'file' or equivalent on your system and you're not sure # whether 'pass_all' will *always* work, you probably want this one. case $host_os in aix[[4-9]]*) lt_cv_deplibs_check_method=pass_all ;; beos*) lt_cv_deplibs_check_method=pass_all ;; bsdi[[45]]*) lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib)' lt_cv_file_magic_cmd='/usr/bin/file -L' lt_cv_file_magic_test_file=/shlib/libc.so ;; cygwin*) # func_win32_libid is a shell function defined in ltmain.sh lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' lt_cv_file_magic_cmd='func_win32_libid' ;; mingw* | pw32*) # Base MSYS/MinGW do not provide the 'file' command needed by # func_win32_libid shell function, so use a weaker test based on 'objdump', # unless we find 'file', for example because we are cross-compiling. if ( file / ) >/dev/null 2>&1; then lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' lt_cv_file_magic_cmd='func_win32_libid' else # Keep this pattern in sync with the one in func_win32_libid. lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' lt_cv_file_magic_cmd='$OBJDUMP -f' fi ;; cegcc*) # use the weaker test based on 'objdump'. See mingw*. lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?' lt_cv_file_magic_cmd='$OBJDUMP -f' ;; darwin* | rhapsody*) lt_cv_deplibs_check_method=pass_all ;; freebsd* | dragonfly*) if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then case $host_cpu in i*86 ) # Not sure whether the presence of OpenBSD here was a mistake. # Let's accept both of them until this is cleared up. lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[[3-9]]86 (compact )?demand paged shared library' lt_cv_file_magic_cmd=/usr/bin/file lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` ;; esac else lt_cv_deplibs_check_method=pass_all fi ;; haiku*) lt_cv_deplibs_check_method=pass_all ;; hpux10.20* | hpux11*) lt_cv_file_magic_cmd=/usr/bin/file case $host_cpu in ia64*) lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|ELF-[[0-9]][[0-9]]) shared object file - IA64' lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so ;; hppa*64*) [lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF[ -][0-9][0-9])(-bit)?( [LM]SB)? shared object( file)?[, -]* PA-RISC [0-9]\.[0-9]'] lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl ;; *) lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|PA-RISC[[0-9]]\.[[0-9]]) shared library' lt_cv_file_magic_test_file=/usr/lib/libc.sl ;; esac ;; interix[[3-9]]*) # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|\.a)$' ;; irix5* | irix6* | nonstopux*) case $LD in *-32|*"-32 ") libmagic=32-bit;; *-n32|*"-n32 ") libmagic=N32;; *-64|*"-64 ") libmagic=64-bit;; *) libmagic=never-match;; esac lt_cv_deplibs_check_method=pass_all ;; # This must be glibc/ELF. linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) lt_cv_deplibs_check_method=pass_all ;; netbsd*) if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' else lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|_pic\.a)$' fi ;; newos6*) lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (executable|dynamic lib)' lt_cv_file_magic_cmd=/usr/bin/file lt_cv_file_magic_test_file=/usr/lib/libnls.so ;; *nto* | *qnx*) lt_cv_deplibs_check_method=pass_all ;; openbsd* | bitrig*) if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|\.so|_pic\.a)$' else lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' fi ;; osf3* | osf4* | osf5*) lt_cv_deplibs_check_method=pass_all ;; rdos*) lt_cv_deplibs_check_method=pass_all ;; solaris*) lt_cv_deplibs_check_method=pass_all ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) lt_cv_deplibs_check_method=pass_all ;; sysv4 | sysv4.3*) case $host_vendor in motorola) lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib) M[[0-9]][[0-9]]* Version [[0-9]]' lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` ;; ncr) lt_cv_deplibs_check_method=pass_all ;; sequent) lt_cv_file_magic_cmd='/bin/file' lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB (shared object|dynamic lib )' ;; sni) lt_cv_file_magic_cmd='/bin/file' lt_cv_deplibs_check_method="file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB dynamic lib" lt_cv_file_magic_test_file=/lib/libc.so ;; siemens) lt_cv_deplibs_check_method=pass_all ;; pc) lt_cv_deplibs_check_method=pass_all ;; esac ;; tpf*) lt_cv_deplibs_check_method=pass_all ;; os2*) lt_cv_deplibs_check_method=pass_all ;; esac ]) file_magic_glob= want_nocaseglob=no if test "$build" = "$host"; then case $host_os in mingw* | pw32*) if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then want_nocaseglob=yes else file_magic_glob=`echo aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ | $SED -e "s/\(..\)/s\/[[\1]]\/[[\1]]\/g;/g"` fi ;; esac fi file_magic_cmd=$lt_cv_file_magic_cmd deplibs_check_method=$lt_cv_deplibs_check_method test -z "$deplibs_check_method" && deplibs_check_method=unknown _LT_DECL([], [deplibs_check_method], [1], [Method to check whether dependent libraries are shared objects]) _LT_DECL([], [file_magic_cmd], [1], [Command to use when deplibs_check_method = "file_magic"]) _LT_DECL([], [file_magic_glob], [1], [How to find potential files when deplibs_check_method = "file_magic"]) _LT_DECL([], [want_nocaseglob], [1], [Find potential files using nocaseglob when deplibs_check_method = "file_magic"]) ])# _LT_CHECK_MAGIC_METHOD # LT_PATH_NM # ---------- # find the pathname to a BSD- or MS-compatible name lister AC_DEFUN([LT_PATH_NM], [AC_REQUIRE([AC_PROG_CC])dnl AC_CACHE_CHECK([for BSD- or MS-compatible name lister (nm)], lt_cv_path_NM, [if test -n "$NM"; then # Let the user override the test. lt_cv_path_NM=$NM else lt_nm_to_check=${ac_tool_prefix}nm if test -n "$ac_tool_prefix" && test "$build" = "$host"; then lt_nm_to_check="$lt_nm_to_check nm" fi for lt_tmp_nm in $lt_nm_to_check; do lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do IFS=$lt_save_ifs test -z "$ac_dir" && ac_dir=. tmp_nm=$ac_dir/$lt_tmp_nm if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext"; then # Check to see if the nm accepts a BSD-compat flag. # Adding the 'sed 1q' prevents false positives on HP-UX, which says: # nm: unknown option "B" ignored # Tru64's nm complains that /dev/null is an invalid object file # MSYS converts /dev/null to NUL, MinGW nm treats NUL as empty case $build_os in mingw*) lt_bad_file=conftest.nm/nofile ;; *) lt_bad_file=/dev/null ;; esac case `"$tmp_nm" -B $lt_bad_file 2>&1 | sed '1q'` in *$lt_bad_file* | *'Invalid file or object type'*) lt_cv_path_NM="$tmp_nm -B" break 2 ;; *) case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in */dev/null*) lt_cv_path_NM="$tmp_nm -p" break 2 ;; *) lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but continue # so that we can try to find one that supports BSD flags ;; esac ;; esac fi done IFS=$lt_save_ifs done : ${lt_cv_path_NM=no} fi]) if test no != "$lt_cv_path_NM"; then NM=$lt_cv_path_NM else # Didn't find any BSD compatible name lister, look for dumpbin. if test -n "$DUMPBIN"; then : # Let the user override the test. else AC_CHECK_TOOLS(DUMPBIN, [dumpbin "link -dump"], :) case `$DUMPBIN -symbols -headers /dev/null 2>&1 | sed '1q'` in *COFF*) DUMPBIN="$DUMPBIN -symbols -headers" ;; *) DUMPBIN=: ;; esac fi AC_SUBST([DUMPBIN]) if test : != "$DUMPBIN"; then NM=$DUMPBIN fi fi test -z "$NM" && NM=nm AC_SUBST([NM]) _LT_DECL([], [NM], [1], [A BSD- or MS-compatible name lister])dnl AC_CACHE_CHECK([the name lister ($NM) interface], [lt_cv_nm_interface], [lt_cv_nm_interface="BSD nm" echo "int some_variable = 0;" > conftest.$ac_ext (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&AS_MESSAGE_LOG_FD) (eval "$ac_compile" 2>conftest.err) cat conftest.err >&AS_MESSAGE_LOG_FD (eval echo "\"\$as_me:$LINENO: $NM \\\"conftest.$ac_objext\\\"\"" >&AS_MESSAGE_LOG_FD) (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out) cat conftest.err >&AS_MESSAGE_LOG_FD (eval echo "\"\$as_me:$LINENO: output\"" >&AS_MESSAGE_LOG_FD) cat conftest.out >&AS_MESSAGE_LOG_FD if $GREP 'External.*some_variable' conftest.out > /dev/null; then lt_cv_nm_interface="MS dumpbin" fi rm -f conftest*]) ])# LT_PATH_NM # Old names: AU_ALIAS([AM_PROG_NM], [LT_PATH_NM]) AU_ALIAS([AC_PROG_NM], [LT_PATH_NM]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AM_PROG_NM], []) dnl AC_DEFUN([AC_PROG_NM], []) # _LT_CHECK_SHAREDLIB_FROM_LINKLIB # -------------------------------- # how to determine the name of the shared library # associated with a specific link library. # -- PORTME fill in with the dynamic library characteristics m4_defun([_LT_CHECK_SHAREDLIB_FROM_LINKLIB], [m4_require([_LT_DECL_EGREP]) m4_require([_LT_DECL_OBJDUMP]) m4_require([_LT_DECL_DLLTOOL]) AC_CACHE_CHECK([how to associate runtime and link libraries], lt_cv_sharedlib_from_linklib_cmd, [lt_cv_sharedlib_from_linklib_cmd='unknown' case $host_os in cygwin* | mingw* | pw32* | cegcc*) # two different shell functions defined in ltmain.sh; # decide which one to use based on capabilities of $DLLTOOL case `$DLLTOOL --help 2>&1` in *--identify-strict*) lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib ;; *) lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib_fallback ;; esac ;; *) # fallback: assume linklib IS sharedlib lt_cv_sharedlib_from_linklib_cmd=$ECHO ;; esac ]) sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO _LT_DECL([], [sharedlib_from_linklib_cmd], [1], [Command to associate shared and link libraries]) ])# _LT_CHECK_SHAREDLIB_FROM_LINKLIB # _LT_PATH_MANIFEST_TOOL # ---------------------- # locate the manifest tool m4_defun([_LT_PATH_MANIFEST_TOOL], [AC_CHECK_TOOL(MANIFEST_TOOL, mt, :) test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt AC_CACHE_CHECK([if $MANIFEST_TOOL is a manifest tool], [lt_cv_path_mainfest_tool], [lt_cv_path_mainfest_tool=no echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&AS_MESSAGE_LOG_FD $MANIFEST_TOOL '-?' 2>conftest.err > conftest.out cat conftest.err >&AS_MESSAGE_LOG_FD if $GREP 'Manifest Tool' conftest.out > /dev/null; then lt_cv_path_mainfest_tool=yes fi rm -f conftest*]) if test yes != "$lt_cv_path_mainfest_tool"; then MANIFEST_TOOL=: fi _LT_DECL([], [MANIFEST_TOOL], [1], [Manifest tool])dnl ])# _LT_PATH_MANIFEST_TOOL # _LT_DLL_DEF_P([FILE]) # --------------------- # True iff FILE is a Windows DLL '.def' file. # Keep in sync with func_dll_def_p in the libtool script AC_DEFUN([_LT_DLL_DEF_P], [dnl test DEF = "`$SED -n dnl -e '\''s/^[[ ]]*//'\'' dnl Strip leading whitespace -e '\''/^\(;.*\)*$/d'\'' dnl Delete empty lines and comments -e '\''s/^\(EXPORTS\|LIBRARY\)\([[ ]].*\)*$/DEF/p'\'' dnl -e q dnl Only consider the first "real" line $1`" dnl ])# _LT_DLL_DEF_P # LT_LIB_M # -------- # check for math library AC_DEFUN([LT_LIB_M], [AC_REQUIRE([AC_CANONICAL_HOST])dnl LIBM= case $host in *-*-beos* | *-*-cegcc* | *-*-cygwin* | *-*-haiku* | *-*-pw32* | *-*-darwin*) # These system don't have libm, or don't need it ;; *-ncr-sysv4.3*) AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM=-lmw) AC_CHECK_LIB(m, cos, LIBM="$LIBM -lm") ;; *) AC_CHECK_LIB(m, cos, LIBM=-lm) ;; esac AC_SUBST([LIBM]) ])# LT_LIB_M # Old name: AU_ALIAS([AC_CHECK_LIBM], [LT_LIB_M]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_CHECK_LIBM], []) # _LT_COMPILER_NO_RTTI([TAGNAME]) # ------------------------------- m4_defun([_LT_COMPILER_NO_RTTI], [m4_require([_LT_TAG_COMPILER])dnl _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= if test yes = "$GCC"; then case $cc_basename in nvcc*) _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -Xcompiler -fno-builtin' ;; *) _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' ;; esac _LT_COMPILER_OPTION([if $compiler supports -fno-rtti -fno-exceptions], lt_cv_prog_compiler_rtti_exceptions, [-fno-rtti -fno-exceptions], [], [_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)="$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) -fno-rtti -fno-exceptions"]) fi _LT_TAGDECL([no_builtin_flag], [lt_prog_compiler_no_builtin_flag], [1], [Compiler flag to turn off builtin functions]) ])# _LT_COMPILER_NO_RTTI # _LT_CMD_GLOBAL_SYMBOLS # ---------------------- m4_defun([_LT_CMD_GLOBAL_SYMBOLS], [AC_REQUIRE([AC_CANONICAL_HOST])dnl AC_REQUIRE([AC_PROG_CC])dnl AC_REQUIRE([AC_PROG_AWK])dnl AC_REQUIRE([LT_PATH_NM])dnl AC_REQUIRE([LT_PATH_LD])dnl m4_require([_LT_DECL_SED])dnl m4_require([_LT_DECL_EGREP])dnl m4_require([_LT_TAG_COMPILER])dnl # Check for command to grab the raw symbol name followed by C symbol from nm. AC_MSG_CHECKING([command to parse $NM output from $compiler object]) AC_CACHE_VAL([lt_cv_sys_global_symbol_pipe], [ # These are sane defaults that work on at least a few old systems. # [They come from Ultrix. What could be older than Ultrix?!! ;)] # Character class describing NM global symbol codes. symcode='[[BCDEGRST]]' # Regexp to match symbols that can be accessed directly from C. sympat='\([[_A-Za-z]][[_A-Za-z0-9]]*\)' # Define system-specific variables. case $host_os in aix*) symcode='[[BCDT]]' ;; cygwin* | mingw* | pw32* | cegcc*) symcode='[[ABCDGISTW]]' ;; hpux*) if test ia64 = "$host_cpu"; then symcode='[[ABCDEGRST]]' fi ;; irix* | nonstopux*) symcode='[[BCDEGRST]]' ;; osf*) symcode='[[BCDEGQRST]]' ;; solaris*) symcode='[[BDRT]]' ;; sco3.2v5*) symcode='[[DT]]' ;; sysv4.2uw2*) symcode='[[DT]]' ;; sysv5* | sco5v6* | unixware* | OpenUNIX*) symcode='[[ABDT]]' ;; sysv4) symcode='[[DFNSTU]]' ;; esac # If we're using GNU nm, then use its standard symbol codes. case `$NM -V 2>&1` in *GNU* | *'with BFD'*) symcode='[[ABCDGIRSTW]]' ;; esac if test "$lt_cv_nm_interface" = "MS dumpbin"; then # Gets list of data symbols to import. lt_cv_sys_global_symbol_to_import="sed -n -e 's/^I .* \(.*\)$/\1/p'" # Adjust the below global symbol transforms to fixup imported variables. lt_cdecl_hook=" -e 's/^I .* \(.*\)$/extern __declspec(dllimport) char \1;/p'" lt_c_name_hook=" -e 's/^I .* \(.*\)$/ {\"\1\", (void *) 0},/p'" lt_c_name_lib_hook="\ -e 's/^I .* \(lib.*\)$/ {\"\1\", (void *) 0},/p'\ -e 's/^I .* \(.*\)$/ {\"lib\1\", (void *) 0},/p'" else # Disable hooks by default. lt_cv_sys_global_symbol_to_import= lt_cdecl_hook= lt_c_name_hook= lt_c_name_lib_hook= fi # Transform an extracted symbol line into a proper C declaration. # Some systems (esp. on ia64) link data and code symbols differently, # so use this general approach. lt_cv_sys_global_symbol_to_cdecl="sed -n"\ $lt_cdecl_hook\ " -e 's/^T .* \(.*\)$/extern int \1();/p'"\ " -e 's/^$symcode$symcode* .* \(.*\)$/extern char \1;/p'" # Transform an extracted symbol line into symbol name and symbol address lt_cv_sys_global_symbol_to_c_name_address="sed -n"\ $lt_c_name_hook\ " -e 's/^: \(.*\) .*$/ {\"\1\", (void *) 0},/p'"\ " -e 's/^$symcode$symcode* .* \(.*\)$/ {\"\1\", (void *) \&\1},/p'" # Transform an extracted symbol line into symbol name with lib prefix and # symbol address. lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n"\ $lt_c_name_lib_hook\ " -e 's/^: \(.*\) .*$/ {\"\1\", (void *) 0},/p'"\ " -e 's/^$symcode$symcode* .* \(lib.*\)$/ {\"\1\", (void *) \&\1},/p'"\ " -e 's/^$symcode$symcode* .* \(.*\)$/ {\"lib\1\", (void *) \&\1},/p'" # Handle CRLF in mingw tool chain opt_cr= case $build_os in mingw*) opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp ;; esac # Try without a prefix underscore, then with it. for ac_symprfx in "" "_"; do # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol. symxfrm="\\1 $ac_symprfx\\2 \\2" # Write the raw and C identifiers. if test "$lt_cv_nm_interface" = "MS dumpbin"; then # Fake it for dumpbin and say T for any non-static function, # D for any global variable and I for any imported variable. # Also find C++ and __fastcall symbols from MSVC++, # which start with @ or ?. lt_cv_sys_global_symbol_pipe="$AWK ['"\ " {last_section=section; section=\$ 3};"\ " /^COFF SYMBOL TABLE/{for(i in hide) delete hide[i]};"\ " /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\ " /^ *Symbol name *: /{split(\$ 0,sn,\":\"); si=substr(sn[2],2)};"\ " /^ *Type *: code/{print \"T\",si,substr(si,length(prfx))};"\ " /^ *Type *: data/{print \"I\",si,substr(si,length(prfx))};"\ " \$ 0!~/External *\|/{next};"\ " / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\ " {if(hide[section]) next};"\ " {f=\"D\"}; \$ 0~/\(\).*\|/{f=\"T\"};"\ " {split(\$ 0,a,/\||\r/); split(a[2],s)};"\ " s[1]~/^[@?]/{print f,s[1],s[1]; next};"\ " s[1]~prfx {split(s[1],t,\"@\"); print f,t[1],substr(t[1],length(prfx))}"\ " ' prfx=^$ac_symprfx]" else lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[[ ]]\($symcode$symcode*\)[[ ]][[ ]]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" fi lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | sed '/ __gnu_lto/d'" # Check to see that the pipe works correctly. pipe_works=no rm -f conftest* cat > conftest.$ac_ext <<_LT_EOF #ifdef __cplusplus extern "C" { #endif char nm_test_var; void nm_test_func(void); void nm_test_func(void){} #ifdef __cplusplus } #endif int main(){nm_test_var='a';nm_test_func();return(0);} _LT_EOF if AC_TRY_EVAL(ac_compile); then # Now try to grab the symbols. nlist=conftest.nm if AC_TRY_EVAL(NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist) && test -s "$nlist"; then # Try sorting and uniquifying the output. if sort "$nlist" | uniq > "$nlist"T; then mv -f "$nlist"T "$nlist" else rm -f "$nlist"T fi # Make sure that we snagged all the symbols we need. if $GREP ' nm_test_var$' "$nlist" >/dev/null; then if $GREP ' nm_test_func$' "$nlist" >/dev/null; then cat <<_LT_EOF > conftest.$ac_ext /* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ #if defined _WIN32 || defined __CYGWIN__ || defined _WIN32_WCE /* DATA imports from DLLs on WIN32 can't be const, because runtime relocations are performed -- see ld's documentation on pseudo-relocs. */ # define LT@&t@_DLSYM_CONST #elif defined __osf__ /* This system does not cope well with relocations in const data. */ # define LT@&t@_DLSYM_CONST #else # define LT@&t@_DLSYM_CONST const #endif #ifdef __cplusplus extern "C" { #endif _LT_EOF # Now generate the symbol file. eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext' cat <<_LT_EOF >> conftest.$ac_ext /* The mapping between symbol names and symbols. */ LT@&t@_DLSYM_CONST struct { const char *name; void *address; } lt__PROGRAM__LTX_preloaded_symbols[[]] = { { "@PROGRAM@", (void *) 0 }, _LT_EOF $SED "s/^$symcode$symcode* .* \(.*\)$/ {\"\1\", (void *) \&\1},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext cat <<\_LT_EOF >> conftest.$ac_ext {0, (void *) 0} }; /* This works around a problem in FreeBSD linker */ #ifdef FREEBSD_WORKAROUND static const void *lt_preloaded_setup() { return lt__PROGRAM__LTX_preloaded_symbols; } #endif #ifdef __cplusplus } #endif _LT_EOF # Now try linking the two files. mv conftest.$ac_objext conftstm.$ac_objext lt_globsym_save_LIBS=$LIBS lt_globsym_save_CFLAGS=$CFLAGS LIBS=conftstm.$ac_objext CFLAGS="$CFLAGS$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)" if AC_TRY_EVAL(ac_link) && test -s conftest$ac_exeext; then pipe_works=yes fi LIBS=$lt_globsym_save_LIBS CFLAGS=$lt_globsym_save_CFLAGS else echo "cannot find nm_test_func in $nlist" >&AS_MESSAGE_LOG_FD fi else echo "cannot find nm_test_var in $nlist" >&AS_MESSAGE_LOG_FD fi else echo "cannot run $lt_cv_sys_global_symbol_pipe" >&AS_MESSAGE_LOG_FD fi else echo "$progname: failed program was:" >&AS_MESSAGE_LOG_FD cat conftest.$ac_ext >&5 fi rm -rf conftest* conftst* # Do not use the global_symbol_pipe unless it works. if test yes = "$pipe_works"; then break else lt_cv_sys_global_symbol_pipe= fi done ]) if test -z "$lt_cv_sys_global_symbol_pipe"; then lt_cv_sys_global_symbol_to_cdecl= fi if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then AC_MSG_RESULT(failed) else AC_MSG_RESULT(ok) fi # Response file support. if test "$lt_cv_nm_interface" = "MS dumpbin"; then nm_file_list_spec='@' elif $NM --help 2>/dev/null | grep '[[@]]FILE' >/dev/null; then nm_file_list_spec='@' fi _LT_DECL([global_symbol_pipe], [lt_cv_sys_global_symbol_pipe], [1], [Take the output of nm and produce a listing of raw symbols and C names]) _LT_DECL([global_symbol_to_cdecl], [lt_cv_sys_global_symbol_to_cdecl], [1], [Transform the output of nm in a proper C declaration]) _LT_DECL([global_symbol_to_import], [lt_cv_sys_global_symbol_to_import], [1], [Transform the output of nm into a list of symbols to manually relocate]) _LT_DECL([global_symbol_to_c_name_address], [lt_cv_sys_global_symbol_to_c_name_address], [1], [Transform the output of nm in a C name address pair]) _LT_DECL([global_symbol_to_c_name_address_lib_prefix], [lt_cv_sys_global_symbol_to_c_name_address_lib_prefix], [1], [Transform the output of nm in a C name address pair when lib prefix is needed]) _LT_DECL([nm_interface], [lt_cv_nm_interface], [1], [The name lister interface]) _LT_DECL([], [nm_file_list_spec], [1], [Specify filename containing input files for $NM]) ]) # _LT_CMD_GLOBAL_SYMBOLS # _LT_COMPILER_PIC([TAGNAME]) # --------------------------- m4_defun([_LT_COMPILER_PIC], [m4_require([_LT_TAG_COMPILER])dnl _LT_TAGVAR(lt_prog_compiler_wl, $1)= _LT_TAGVAR(lt_prog_compiler_pic, $1)= _LT_TAGVAR(lt_prog_compiler_static, $1)= m4_if([$1], [CXX], [ # C++ specific cases for pic, static, wl, etc. if test yes = "$GXX"; then _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' case $host_os in aix*) # All AIX code is PIC. if test ia64 = "$host_cpu"; then # AIX 5 now supports IA64 processor _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' fi _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; m68k) # FIXME: we need at least 68020 code to build shared libraries, but # adding the '-m68020' flag to GCC prevents building anything better, # like '-m68040'. _LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' ;; esac ;; beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) # PIC is the default for these OSes. ;; mingw* | cygwin* | os2* | pw32* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). # Although the cygwin gcc ignores -fPIC, still need this for old-style # (--disable-auto-import) libraries m4_if([$1], [GCJ], [], [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) case $host_os in os2*) _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-static' ;; esac ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' ;; *djgpp*) # DJGPP does not support shared libraries at all _LT_TAGVAR(lt_prog_compiler_pic, $1)= ;; haiku*) # PIC is the default for Haiku. # The "-static" flag exists, but is broken. _LT_TAGVAR(lt_prog_compiler_static, $1)= ;; interix[[3-9]]*) # Interix 3.x gcc -fpic/-fPIC options generate broken code. # Instead, we relocate shared libraries at runtime. ;; sysv4*MP*) if test -d /usr/nec; then _LT_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic fi ;; hpux*) # PIC is the default for 64-bit PA HP-UX, but not for 32-bit # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag # sets the default TLS model and affects inlining. case $host_cpu in hppa*64*) ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; esac ;; *qnx* | *nto*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; esac else case $host_os in aix[[4-9]]*) # All AIX code is PIC. if test ia64 = "$host_cpu"; then # AIX 5 now supports IA64 processor _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' else _LT_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' fi ;; chorus*) case $cc_basename in cxch68*) # Green Hills C++ Compiler # _LT_TAGVAR(lt_prog_compiler_static, $1)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a" ;; esac ;; mingw* | cygwin* | os2* | pw32* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). m4_if([$1], [GCJ], [], [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) ;; dgux*) case $cc_basename in ec++*) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' ;; ghcx*) # Green Hills C++ Compiler _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' ;; *) ;; esac ;; freebsd* | dragonfly*) # FreeBSD uses GNU C++ ;; hpux9* | hpux10* | hpux11*) case $cc_basename in CC*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-a ${wl}archive' if test ia64 != "$host_cpu"; then _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' fi ;; aCC*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-a ${wl}archive' case $host_cpu in hppa*64*|ia64*) # +Z the default ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' ;; esac ;; *) ;; esac ;; interix*) # This is c89, which is MS Visual C++ (no shared libs) # Anyone wants to do a port? ;; irix5* | irix6* | nonstopux*) case $cc_basename in CC*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' # CC pic flag -KPIC is the default. ;; *) ;; esac ;; linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) case $cc_basename in KCC*) # KAI C++ Compiler _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; ecpc* ) # old Intel C++ for x86_64, which still supported -KPIC. _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' ;; icpc* ) # Intel C++, used to be incompatible with GCC. # ICC 10 doesn't accept -KPIC any more. _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' ;; pgCC* | pgcpp*) # Portland Group C++ compiler _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; cxx*) # Compaq C++ # Make sure the PIC flag is empty. It appears that all Alpha # Linux and Compaq Tru64 Unix objects are PIC. _LT_TAGVAR(lt_prog_compiler_pic, $1)= _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; xlc* | xlC* | bgxl[[cC]]* | mpixl[[cC]]*) # IBM XL 8.0, 9.0 on PPC and BlueGene _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink' ;; *) case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C++ 5.9 _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' ;; esac ;; esac ;; lynxos*) ;; m88k*) ;; mvs*) case $cc_basename in cxx*) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-W c,exportall' ;; *) ;; esac ;; netbsd*) ;; *qnx* | *nto*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' ;; osf3* | osf4* | osf5*) case $cc_basename in KCC*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' ;; RCC*) # Rational C++ 2.4.1 _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' ;; cxx*) # Digital/Compaq C++ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' # Make sure the PIC flag is empty. It appears that all Alpha # Linux and Compaq Tru64 Unix objects are PIC. _LT_TAGVAR(lt_prog_compiler_pic, $1)= _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; *) ;; esac ;; psos*) ;; solaris*) case $cc_basename in CC* | sunCC*) # Sun C++ 4.2, 5.x and Centerline C++ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' ;; gcx*) # Green Hills C++ Compiler _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' ;; *) ;; esac ;; sunos4*) case $cc_basename in CC*) # Sun C++ 4.x _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; lcc*) # Lucid _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' ;; *) ;; esac ;; sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) case $cc_basename in CC*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; esac ;; tandem*) case $cc_basename in NCC*) # NonStop-UX NCC 3.20 _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' ;; *) ;; esac ;; vxworks*) ;; *) _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no ;; esac fi ], [ if test yes = "$GCC"; then _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' case $host_os in aix*) # All AIX code is PIC. if test ia64 = "$host_cpu"; then # AIX 5 now supports IA64 processor _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' fi _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; m68k) # FIXME: we need at least 68020 code to build shared libraries, but # adding the '-m68020' flag to GCC prevents building anything better, # like '-m68040'. _LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' ;; esac ;; beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) # PIC is the default for these OSes. ;; mingw* | cygwin* | pw32* | os2* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). # Although the cygwin gcc ignores -fPIC, still need this for old-style # (--disable-auto-import) libraries m4_if([$1], [GCJ], [], [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) case $host_os in os2*) _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-static' ;; esac ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' ;; haiku*) # PIC is the default for Haiku. # The "-static" flag exists, but is broken. _LT_TAGVAR(lt_prog_compiler_static, $1)= ;; hpux*) # PIC is the default for 64-bit PA HP-UX, but not for 32-bit # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag # sets the default TLS model and affects inlining. case $host_cpu in hppa*64*) # +Z the default ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; esac ;; interix[[3-9]]*) # Interix 3.x gcc -fpic/-fPIC options generate broken code. # Instead, we relocate shared libraries at runtime. ;; msdosdjgpp*) # Just because we use GCC doesn't mean we suddenly get shared libraries # on systems that don't support them. _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no enable_shared=no ;; *nto* | *qnx*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' ;; sysv4*MP*) if test -d /usr/nec; then _LT_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic fi ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; esac case $cc_basename in nvcc*) # Cuda Compiler Driver 2.2 _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Xlinker ' if test -n "$_LT_TAGVAR(lt_prog_compiler_pic, $1)"; then _LT_TAGVAR(lt_prog_compiler_pic, $1)="-Xcompiler $_LT_TAGVAR(lt_prog_compiler_pic, $1)" fi ;; esac else # PORTME Check for flag to pass linker flags through the system compiler. case $host_os in aix*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' if test ia64 = "$host_cpu"; then # AIX 5 now supports IA64 processor _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' else _LT_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' fi ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' case $cc_basename in nagfor*) # NAG Fortran compiler _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,-Wl,,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; esac ;; mingw* | cygwin* | pw32* | os2* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). m4_if([$1], [GCJ], [], [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) case $host_os in os2*) _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-static' ;; esac ;; hpux9* | hpux10* | hpux11*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but # not for PA HP-UX. case $host_cpu in hppa*64*|ia64*) # +Z the default ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' ;; esac # Is there a better lt_prog_compiler_static that works with the bundled CC? _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-a ${wl}archive' ;; irix5* | irix6* | nonstopux*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' # PIC (with -KPIC) is the default. _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) case $cc_basename in # old Intel for x86_64, which still supported -KPIC. ecc*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' ;; # icc used to be incompatible with GCC. # ICC 10 doesn't accept -KPIC any more. icc* | ifort*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' ;; # Lahey Fortran 8.1. lf95*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='--shared' _LT_TAGVAR(lt_prog_compiler_static, $1)='--static' ;; nagfor*) # NAG Fortran compiler _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,-Wl,,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; tcc*) # Fabrice Bellard et al's Tiny C Compiler _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' ;; pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*) # Portland Group compilers (*not* the Pentium gcc compiler, # which looks to be a dead project) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; ccc*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' # All Alpha code is PIC. _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; xl* | bgxl* | bgf* | mpixl*) # IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink' ;; *) case `$CC -V 2>&1 | sed 5q` in *Sun\ Ceres\ Fortran* | *Sun*Fortran*\ [[1-7]].* | *Sun*Fortran*\ 8.[[0-3]]*) # Sun Fortran 8.3 passes all unrecognized flags to the linker _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' _LT_TAGVAR(lt_prog_compiler_wl, $1)='' ;; *Sun\ F* | *Sun*Fortran*) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' ;; *Sun\ C*) # Sun C 5.9 _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' ;; *Intel*\ [[CF]]*Compiler*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' ;; *Portland\ Group*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; esac ;; esac ;; newsos6) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; *nto* | *qnx*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' ;; osf3* | osf4* | osf5*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' # All OSF/1 code is PIC. _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; rdos*) _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; solaris*) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' case $cc_basename in f77* | f90* | f95* | sunf77* | sunf90* | sunf95*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ';; *) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,';; esac ;; sunos4*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; sysv4 | sysv4.2uw2* | sysv4.3*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; sysv4*MP*) if test -d /usr/nec; then _LT_TAGVAR(lt_prog_compiler_pic, $1)='-Kconform_pic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' fi ;; sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; unicos*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no ;; uts4*) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; *) _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no ;; esac fi ]) case $host_os in # For platforms that do not support PIC, -DPIC is meaningless: *djgpp*) _LT_TAGVAR(lt_prog_compiler_pic, $1)= ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)="$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t@m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])" ;; esac AC_CACHE_CHECK([for $compiler option to produce PIC], [_LT_TAGVAR(lt_cv_prog_compiler_pic, $1)], [_LT_TAGVAR(lt_cv_prog_compiler_pic, $1)=$_LT_TAGVAR(lt_prog_compiler_pic, $1)]) _LT_TAGVAR(lt_prog_compiler_pic, $1)=$_LT_TAGVAR(lt_cv_prog_compiler_pic, $1) # # Check to make sure the PIC flag actually works. # if test -n "$_LT_TAGVAR(lt_prog_compiler_pic, $1)"; then _LT_COMPILER_OPTION([if $compiler PIC flag $_LT_TAGVAR(lt_prog_compiler_pic, $1) works], [_LT_TAGVAR(lt_cv_prog_compiler_pic_works, $1)], [$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t@m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])], [], [case $_LT_TAGVAR(lt_prog_compiler_pic, $1) in "" | " "*) ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)=" $_LT_TAGVAR(lt_prog_compiler_pic, $1)" ;; esac], [_LT_TAGVAR(lt_prog_compiler_pic, $1)= _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no]) fi _LT_TAGDECL([pic_flag], [lt_prog_compiler_pic], [1], [Additional compiler flags for building library objects]) _LT_TAGDECL([wl], [lt_prog_compiler_wl], [1], [How to pass a linker flag through the compiler]) # # Check to make sure the static flag actually works. # wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1) eval lt_tmp_static_flag=\"$_LT_TAGVAR(lt_prog_compiler_static, $1)\" _LT_LINKER_OPTION([if $compiler static flag $lt_tmp_static_flag works], _LT_TAGVAR(lt_cv_prog_compiler_static_works, $1), $lt_tmp_static_flag, [], [_LT_TAGVAR(lt_prog_compiler_static, $1)=]) _LT_TAGDECL([link_static_flag], [lt_prog_compiler_static], [1], [Compiler flag to prevent dynamic linking]) ])# _LT_COMPILER_PIC # _LT_LINKER_SHLIBS([TAGNAME]) # ---------------------------- # See if the linker supports building shared libraries. m4_defun([_LT_LINKER_SHLIBS], [AC_REQUIRE([LT_PATH_LD])dnl AC_REQUIRE([LT_PATH_NM])dnl m4_require([_LT_PATH_MANIFEST_TOOL])dnl m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_DECL_EGREP])dnl m4_require([_LT_DECL_SED])dnl m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl m4_require([_LT_TAG_COMPILER])dnl AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries]) m4_if([$1], [CXX], [ _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'] case $host_os in aix[[4-9]]*) # If we're using GNU nm, then we don't want the "-C" option. # -C means demangle to GNU nm, but means don't demangle to AIX nm. # Without the "-l" option, or with the "-B" option, AIX nm treats # weak defined symbols like other global defined symbols, whereas # GNU nm marks them as "W". # While the 'weak' keyword is ignored in the Export File, we need # it in the Import File for the 'aix-soname' feature, so we have # to replace the "-B" option with "-P" for AIX nm. if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && ([substr](\$ 3,1,1) != ".")) { if (\$ 2 == "W") { print \$ 3 " weak" } else { print \$ 3 } } }'\'' | sort -u > $export_symbols' else _LT_TAGVAR(export_symbols_cmds, $1)='`func_echo_all $NM | $SED -e '\''s/B\([[^B]]*\)$/P\1/'\''` -PCpgl $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) && ([substr](\$ 1,1,1) != ".")) { if ((\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) { print \$ 1 " weak" } else { print \$ 1 } } }'\'' | sort -u > $export_symbols' fi ;; pw32*) _LT_TAGVAR(export_symbols_cmds, $1)=$ltdll_cmds ;; cygwin* | mingw* | cegcc*) case $cc_basename in cl*) _LT_TAGVAR(exclude_expsyms, $1)='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' ;; *) _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols' _LT_TAGVAR(exclude_expsyms, $1)=['[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname'] ;; esac ;; *) _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' ;; esac ], [ runpath_var= _LT_TAGVAR(allow_undefined_flag, $1)= _LT_TAGVAR(always_export_symbols, $1)=no _LT_TAGVAR(archive_cmds, $1)= _LT_TAGVAR(archive_expsym_cmds, $1)= _LT_TAGVAR(compiler_needs_object, $1)=no _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no _LT_TAGVAR(export_dynamic_flag_spec, $1)= _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' _LT_TAGVAR(hardcode_automatic, $1)=no _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_direct_absolute, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= _LT_TAGVAR(hardcode_libdir_separator, $1)= _LT_TAGVAR(hardcode_minus_L, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported _LT_TAGVAR(inherit_rpath, $1)=no _LT_TAGVAR(link_all_deplibs, $1)=unknown _LT_TAGVAR(module_cmds, $1)= _LT_TAGVAR(module_expsym_cmds, $1)= _LT_TAGVAR(old_archive_from_new_cmds, $1)= _LT_TAGVAR(old_archive_from_expsyms_cmds, $1)= _LT_TAGVAR(thread_safe_flag_spec, $1)= _LT_TAGVAR(whole_archive_flag_spec, $1)= # include_expsyms should be a list of space-separated symbols to be *always* # included in the symbol list _LT_TAGVAR(include_expsyms, $1)= # exclude_expsyms can be an extended regexp of symbols to exclude # it will be wrapped by ' (' and ')$', so one must not match beginning or # end of line. Example: 'a|bc|.*d.*' will exclude the symbols 'a' and 'bc', # as well as any symbol that contains 'd'. _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'] # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out # platforms (ab)use it in PIC code, but their linkers get confused if # the symbol is explicitly referenced. Since portable code cannot # rely on this symbol name, it's probably fine to never include it in # preloaded symbol tables. # Exclude shared library initialization/finalization symbols. dnl Note also adjust exclude_expsyms for C++ above. extract_expsyms_cmds= case $host_os in cygwin* | mingw* | pw32* | cegcc*) # FIXME: the MSVC++ port hasn't been tested in a loooong time # When not using gcc, we currently assume that we are using # Microsoft Visual C++. if test yes != "$GCC"; then with_gnu_ld=no fi ;; interix*) # we just hope/assume this is gcc and not c89 (= MSVC++) with_gnu_ld=yes ;; openbsd* | bitrig*) with_gnu_ld=no ;; esac _LT_TAGVAR(ld_shlibs, $1)=yes # On some targets, GNU ld is compatible enough with the native linker # that we're better off using the native interface for both. lt_use_gnu_ld_interface=no if test yes = "$with_gnu_ld"; then case $host_os in aix*) # The AIX port of GNU ld has always aspired to compatibility # with the native linker. However, as the warning in the GNU ld # block says, versions before 2.19.5* couldn't really create working # shared libraries, regardless of the interface used. case `$LD -v 2>&1` in *\ \(GNU\ Binutils\)\ 2.19.5*) ;; *\ \(GNU\ Binutils\)\ 2.[[2-9]]*) ;; *\ \(GNU\ Binutils\)\ [[3-9]]*) ;; *) lt_use_gnu_ld_interface=yes ;; esac ;; *) lt_use_gnu_ld_interface=yes ;; esac fi if test yes = "$lt_use_gnu_ld_interface"; then # If archive_cmds runs LD, not CC, wlarc should be empty wlarc='$wl' # Set some defaults for GNU ld with shared library support. These # are reset later if shared libraries are not supported. Putting them # here allows them to be overridden if necessary. runpath_var=LD_RUN_PATH _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic' # ancient GNU ld didn't support --whole-archive et. al. if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then _LT_TAGVAR(whole_archive_flag_spec, $1)=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive' else _LT_TAGVAR(whole_archive_flag_spec, $1)= fi supports_anon_versioning=no case `$LD -v | $SED -e 's/([^)]\+)\s\+//' 2>&1` in *GNU\ gold*) supports_anon_versioning=yes ;; *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.10.*) ;; # catch versions < 2.11 *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... *\ 2.11.*) ;; # other 2.11 versions *) supports_anon_versioning=yes ;; esac # See if GNU ld supports shared libraries. case $host_os in aix[[3-9]]*) # On AIX/PPC, the GNU linker is very broken if test ia64 != "$host_cpu"; then _LT_TAGVAR(ld_shlibs, $1)=no cat <<_LT_EOF 1>&2 *** Warning: the GNU linker, at least up to release 2.19, is reported *** to be unable to reliably create shared libraries on AIX. *** Therefore, libtool is disabling shared libraries support. If you *** really care for shared libraries, you may want to install binutils *** 2.20 or above, or modify your PATH so that a non-GNU linker is found. *** You will then need to restart the configuration process. _LT_EOF fi ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='' ;; m68k) _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_minus_L, $1)=yes ;; esac ;; beos*) if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then _LT_TAGVAR(allow_undefined_flag, $1)=unsupported # Joseph Beckenbach says some releases of gcc # support --undefined. This deserves some investigation. FIXME _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; cygwin* | mingw* | pw32* | cegcc*) # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, # as there is no search path for DLLs. _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-all-symbols' _LT_TAGVAR(allow_undefined_flag, $1)=unsupported _LT_TAGVAR(always_export_symbols, $1)=no _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols' _LT_TAGVAR(exclude_expsyms, $1)=['[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname'] if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' # If the export-symbols file already is a .def file, use it as # is; otherwise, prepend EXPORTS... _LT_TAGVAR(archive_expsym_cmds, $1)='if _LT_DLL_DEF_P([$export_symbols]); then cp $export_symbols $output_objdir/$soname.def; else echo EXPORTS > $output_objdir/$soname.def; cat $export_symbols >> $output_objdir/$soname.def; fi~ $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; haiku*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' _LT_TAGVAR(link_all_deplibs, $1)=yes ;; os2*) _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_minus_L, $1)=yes _LT_TAGVAR(allow_undefined_flag, $1)=unsupported shrext_cmds=.dll _LT_TAGVAR(archive_cmds, $1)='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ $ECHO EXPORTS >> $output_objdir/$libname.def~ emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~ $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ emximp -o $lib $output_objdir/$libname.def' _LT_TAGVAR(archive_expsym_cmds, $1)='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ $ECHO EXPORTS >> $output_objdir/$libname.def~ prefix_cmds="$SED"~ if test EXPORTS = "`$SED 1q $export_symbols`"; then prefix_cmds="$prefix_cmds -e 1d"; fi~ prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~ cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~ $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ emximp -o $lib $output_objdir/$libname.def' _LT_TAGVAR(old_archive_From_new_cmds, $1)='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes ;; interix[[3-9]]*) _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. # Instead, shared libraries are loaded at an image base (0x10000000 by # default) and relocated if they conflict, which is a slow very memory # consuming and fragmenting process. To avoid this, we pick a random, # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link # time. Moving up from 0x10000000 also allows more sbrk(2) space. _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s|^|_|" $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--retain-symbols-file,$output_objdir/$soname.expsym $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' ;; gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu) tmp_diet=no if test linux-dietlibc = "$host_os"; then case $cc_basename in diet\ *) tmp_diet=yes;; # linux-dietlibc with static linking (!diet-dyn) esac fi if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \ && test no = "$tmp_diet" then tmp_addflag=' $pic_flag' tmp_sharedflag='-shared' case $cc_basename,$host_cpu in pgcc*) # Portland Group C compiler _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' tmp_addflag=' $pic_flag' ;; pgf77* | pgf90* | pgf95* | pgfortran*) # Portland Group f77 and f90 compilers _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' tmp_addflag=' $pic_flag -Mnomain' ;; ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 tmp_addflag=' -i_dynamic' ;; efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 tmp_addflag=' -i_dynamic -nofor_main' ;; ifc* | ifort*) # Intel Fortran compiler tmp_addflag=' -nofor_main' ;; lf95*) # Lahey Fortran 8.1 _LT_TAGVAR(whole_archive_flag_spec, $1)= tmp_sharedflag='--shared' ;; nagfor*) # NAGFOR 5.3 tmp_sharedflag='-Wl,-shared' ;; xl[[cC]]* | bgxl[[cC]]* | mpixl[[cC]]*) # IBM XL C 8.0 on PPC (deal with xlf below) tmp_sharedflag='-qmkshrobj' tmp_addflag= ;; nvcc*) # Cuda Compiler Driver 2.2 _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' _LT_TAGVAR(compiler_needs_object, $1)=yes ;; esac case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C 5.9 _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' _LT_TAGVAR(compiler_needs_object, $1)=yes tmp_sharedflag='-G' ;; *Sun\ F*) # Sun Fortran 8.3 tmp_sharedflag='-G' ;; esac _LT_TAGVAR(archive_cmds, $1)='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' if test yes = "$supports_anon_versioning"; then _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ echo "local: *; };" >> $output_objdir/$libname.ver~ $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-version-script $wl$output_objdir/$libname.ver -o $lib' fi case $cc_basename in tcc*) _LT_TAGVAR(export_dynamic_flag_spec, $1)='-rdynamic' ;; xlf* | bgf* | bgxlf* | mpixlf*) # IBM XL Fortran 10.1 on PPC cannot create shared libs itself _LT_TAGVAR(whole_archive_flag_spec, $1)='--whole-archive$convenience --no-whole-archive' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' _LT_TAGVAR(archive_cmds, $1)='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib' if test yes = "$supports_anon_versioning"; then _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ echo "local: *; };" >> $output_objdir/$libname.ver~ $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib' fi ;; esac else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; netbsd*) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' wlarc= else _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' fi ;; solaris*) if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then _LT_TAGVAR(ld_shlibs, $1)=no cat <<_LT_EOF 1>&2 *** Warning: The releases 2.8.* of the GNU linker cannot reliably *** create shared libraries on Solaris systems. Therefore, libtool *** is disabling shared libraries support. We urge you to upgrade GNU *** binutils to release 2.9.1 or newer. Another option is to modify *** your PATH or compiler configuration so that the native linker is *** used, and then restart. _LT_EOF elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) case `$LD -v 2>&1` in *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.1[[0-5]].*) _LT_TAGVAR(ld_shlibs, $1)=no cat <<_LT_EOF 1>&2 *** Warning: Releases of the GNU linker prior to 2.16.91.0.3 cannot *** reliably create shared libraries on SCO systems. Therefore, libtool *** is disabling shared libraries support. We urge you to upgrade GNU *** binutils to release 2.16.91.0.3 or newer. Another option is to modify *** your PATH or compiler configuration so that the native linker is *** used, and then restart. _LT_EOF ;; *) # For security reasons, it is highly recommended that you always # use absolute paths for naming shared libraries, and exclude the # DT_RUNPATH tag from executables and libraries. But doing so # requires that you compile everything twice, which is a pain. if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; esac ;; sunos4*) _LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' wlarc= _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; *) if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; esac if test no = "$_LT_TAGVAR(ld_shlibs, $1)"; then runpath_var= _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= _LT_TAGVAR(export_dynamic_flag_spec, $1)= _LT_TAGVAR(whole_archive_flag_spec, $1)= fi else # PORTME fill in a description of your system's linker (not GNU ld) case $host_os in aix3*) _LT_TAGVAR(allow_undefined_flag, $1)=unsupported _LT_TAGVAR(always_export_symbols, $1)=yes _LT_TAGVAR(archive_expsym_cmds, $1)='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' # Note: this linker hardcodes the directories in LIBPATH if there # are no directories specified by -L. _LT_TAGVAR(hardcode_minus_L, $1)=yes if test yes = "$GCC" && test -z "$lt_prog_compiler_static"; then # Neither direct hardcoding nor static linking is supported with a # broken collect2. _LT_TAGVAR(hardcode_direct, $1)=unsupported fi ;; aix[[4-9]]*) if test ia64 = "$host_cpu"; then # On IA64, the linker does run time linking by default, so we don't # have to do anything special. aix_use_runtimelinking=no exp_sym_flag='-Bexport' no_entry_flag= else # If we're using GNU nm, then we don't want the "-C" option. # -C means demangle to GNU nm, but means don't demangle to AIX nm. # Without the "-l" option, or with the "-B" option, AIX nm treats # weak defined symbols like other global defined symbols, whereas # GNU nm marks them as "W". # While the 'weak' keyword is ignored in the Export File, we need # it in the Import File for the 'aix-soname' feature, so we have # to replace the "-B" option with "-P" for AIX nm. if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && ([substr](\$ 3,1,1) != ".")) { if (\$ 2 == "W") { print \$ 3 " weak" } else { print \$ 3 } } }'\'' | sort -u > $export_symbols' else _LT_TAGVAR(export_symbols_cmds, $1)='`func_echo_all $NM | $SED -e '\''s/B\([[^B]]*\)$/P\1/'\''` -PCpgl $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) && ([substr](\$ 1,1,1) != ".")) { if ((\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) { print \$ 1 " weak" } else { print \$ 1 } } }'\'' | sort -u > $export_symbols' fi aix_use_runtimelinking=no # Test if we are trying to use run time linking or normal # AIX style linking. If -brtl is somewhere in LDFLAGS, we # have runtime linking enabled, and use it for executables. # For shared libraries, we enable/disable runtime linking # depending on the kind of the shared library created - # when "with_aix_soname,aix_use_runtimelinking" is: # "aix,no" lib.a(lib.so.V) shared, rtl:no, for executables # "aix,yes" lib.so shared, rtl:yes, for executables # lib.a static archive # "both,no" lib.so.V(shr.o) shared, rtl:yes # lib.a(lib.so.V) shared, rtl:no, for executables # "both,yes" lib.so.V(shr.o) shared, rtl:yes, for executables # lib.a(lib.so.V) shared, rtl:no # "svr4,*" lib.so.V(shr.o) shared, rtl:yes, for executables # lib.a static archive case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*) for ld_flag in $LDFLAGS; do if (test x-brtl = "x$ld_flag" || test x-Wl,-brtl = "x$ld_flag"); then aix_use_runtimelinking=yes break fi done if test svr4,no = "$with_aix_soname,$aix_use_runtimelinking"; then # With aix-soname=svr4, we create the lib.so.V shared archives only, # so we don't have lib.a shared libs to link our executables. # We have to force runtime linking in this case. aix_use_runtimelinking=yes LDFLAGS="$LDFLAGS -Wl,-brtl" fi ;; esac exp_sym_flag='-bexport' no_entry_flag='-bnoentry' fi # When large executables or shared objects are built, AIX ld can # have problems creating the table of contents. If linking a library # or program results in "error TOC overflow" add -mminimal-toc to # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. _LT_TAGVAR(archive_cmds, $1)='' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_direct_absolute, $1)=yes _LT_TAGVAR(hardcode_libdir_separator, $1)=':' _LT_TAGVAR(link_all_deplibs, $1)=yes _LT_TAGVAR(file_list_spec, $1)='$wl-f,' case $with_aix_soname,$aix_use_runtimelinking in aix,*) ;; # traditional, no import file svr4,* | *,yes) # use import file # The Import File defines what to hardcode. _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_direct_absolute, $1)=no ;; esac if test yes = "$GCC"; then case $host_os in aix4.[[012]]|aix4.[[012]].*) # We only want to do this on AIX 4.2 and lower, the check # below for broken collect2 doesn't work under 4.3+ collect2name=`$CC -print-prog-name=collect2` if test -f "$collect2name" && strings "$collect2name" | $GREP resolve_lib_name >/dev/null then # We have reworked collect2 : else # We have old collect2 _LT_TAGVAR(hardcode_direct, $1)=unsupported # It fails to find uninstalled libraries when the uninstalled # path is not listed in the libpath. Setting hardcode_minus_L # to unsupported forces relinking _LT_TAGVAR(hardcode_minus_L, $1)=yes _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)= fi ;; esac shared_flag='-shared' if test yes = "$aix_use_runtimelinking"; then shared_flag="$shared_flag "'$wl-G' fi # Need to ensure runtime linking is disabled for the traditional # shared library, or the linker may eventually find shared libraries # /with/ Import File - we do not want to mix them. shared_flag_aix='-shared' shared_flag_svr4='-shared $wl-G' else # not using gcc if test ia64 = "$host_cpu"; then # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release # chokes on -Wl,-G. The following line is correct: shared_flag='-G' else if test yes = "$aix_use_runtimelinking"; then shared_flag='$wl-G' else shared_flag='$wl-bM:SRE' fi shared_flag_aix='$wl-bM:SRE' shared_flag_svr4='$wl-G' fi fi _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-bexpall' # It seems that -bexpall does not export symbols beginning with # underscore (_), so it is better to generate a list of symbols to export. _LT_TAGVAR(always_export_symbols, $1)=yes if test aix,yes = "$with_aix_soname,$aix_use_runtimelinking"; then # Warning - without using the other runtime loading flags (-brtl), # -berok will link without error, but may produce a broken library. _LT_TAGVAR(allow_undefined_flag, $1)='-berok' # Determine the default libpath from the value encoded in an # empty executable. _LT_SYS_MODULE_PATH_AIX([$1]) _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-blibpath:$libdir:'"$aix_libpath" _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs $wl'$no_entry_flag' $compiler_flags `if test -n "$allow_undefined_flag"; then func_echo_all "$wl$allow_undefined_flag"; else :; fi` $wl'$exp_sym_flag:\$export_symbols' '$shared_flag else if test ia64 = "$host_cpu"; then _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-R $libdir:/usr/lib:/lib' _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs" _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\$wl$no_entry_flag"' $compiler_flags $wl$allow_undefined_flag '"\$wl$exp_sym_flag:\$export_symbols" else # Determine the default libpath from the value encoded in an # empty executable. _LT_SYS_MODULE_PATH_AIX([$1]) _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-blibpath:$libdir:'"$aix_libpath" # Warning - without using the other run time loading flags, # -berok will link without error, but may produce a broken library. _LT_TAGVAR(no_undefined_flag, $1)=' $wl-bernotok' _LT_TAGVAR(allow_undefined_flag, $1)=' $wl-berok' if test yes = "$with_gnu_ld"; then # We only use this code for GNU lds that support --whole-archive. _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive$convenience $wl--no-whole-archive' else # Exported symbols can be pulled into shared objects from archives _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience' fi _LT_TAGVAR(archive_cmds_need_lc, $1)=yes _LT_TAGVAR(archive_expsym_cmds, $1)='$RM -r $output_objdir/$realname.d~$MKDIR $output_objdir/$realname.d' # -brtl affects multiple linker settings, -berok does not and is overridden later compiler_flags_filtered='`func_echo_all "$compiler_flags " | $SED -e "s%-brtl\\([[, ]]\\)%-berok\\1%g"`' if test svr4 != "$with_aix_soname"; then # This is similar to how AIX traditionally builds its shared libraries. _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$CC '$shared_flag_aix' -o $output_objdir/$realname.d/$soname $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$realname.d/$soname' fi if test aix != "$with_aix_soname"; then _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$CC '$shared_flag_svr4' -o $output_objdir/$realname.d/$shared_archive_member_spec.o $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$STRIP -e $output_objdir/$realname.d/$shared_archive_member_spec.o~( func_echo_all "#! $soname($shared_archive_member_spec.o)"; if test shr_64 = "$shared_archive_member_spec"; then func_echo_all "# 64"; else func_echo_all "# 32"; fi; cat $export_symbols ) > $output_objdir/$realname.d/$shared_archive_member_spec.imp~$AR $AR_FLAGS $output_objdir/$soname $output_objdir/$realname.d/$shared_archive_member_spec.o $output_objdir/$realname.d/$shared_archive_member_spec.imp' else # used by -dlpreopen to get the symbols _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$MV $output_objdir/$realname.d/$soname $output_objdir' fi _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$RM -r $output_objdir/$realname.d' fi fi ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='' ;; m68k) _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_minus_L, $1)=yes ;; esac ;; bsdi[[45]]*) _LT_TAGVAR(export_dynamic_flag_spec, $1)=-rdynamic ;; cygwin* | mingw* | pw32* | cegcc*) # When not using gcc, we currently assume that we are using # Microsoft Visual C++. # hardcode_libdir_flag_spec is actually meaningless, as there is # no search path for DLLs. case $cc_basename in cl*) # Native MSVC _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' _LT_TAGVAR(allow_undefined_flag, $1)=unsupported _LT_TAGVAR(always_export_symbols, $1)=yes _LT_TAGVAR(file_list_spec, $1)='@' # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. shrext_cmds=.dll # FIXME: Setting linknames here is a bad hack. _LT_TAGVAR(archive_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~linknames=' _LT_TAGVAR(archive_expsym_cmds, $1)='if _LT_DLL_DEF_P([$export_symbols]); then cp "$export_symbols" "$output_objdir/$soname.def"; echo "$tool_output_objdir$soname.def" > "$output_objdir/$soname.exp"; else $SED -e '\''s/^/-link -EXPORT:/'\'' < $export_symbols > $output_objdir/$soname.exp; fi~ $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ linknames=' # The linker will not automatically build a static lib if we build a DLL. # _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes _LT_TAGVAR(exclude_expsyms, $1)='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1,DATA/'\'' | $SED -e '\''/^[[AITW]][[ ]]/s/.*[[ ]]//'\'' | sort | uniq > $export_symbols' # Don't use ranlib _LT_TAGVAR(old_postinstall_cmds, $1)='chmod 644 $oldlib' _LT_TAGVAR(postlink_cmds, $1)='lt_outputfile="@OUTPUT@"~ lt_tool_outputfile="@TOOL_OUTPUT@"~ case $lt_outputfile in *.exe|*.EXE) ;; *) lt_outputfile=$lt_outputfile.exe lt_tool_outputfile=$lt_tool_outputfile.exe ;; esac~ if test : != "$MANIFEST_TOOL" && test -f "$lt_outputfile.manifest"; then $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; $RM "$lt_outputfile.manifest"; fi' ;; *) # Assume MSVC wrapper _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' _LT_TAGVAR(allow_undefined_flag, $1)=unsupported # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. shrext_cmds=.dll # FIXME: Setting linknames here is a bad hack. _LT_TAGVAR(archive_cmds, $1)='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames=' # The linker will automatically build a .lib file if we build a DLL. _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' # FIXME: Should let the user specify the lib program. _LT_TAGVAR(old_archive_cmds, $1)='lib -OUT:$oldlib$oldobjs$old_deplibs' _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes ;; esac ;; darwin* | rhapsody*) _LT_DARWIN_LINKER_FEATURES($1) ;; dgux*) _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor # support. Future versions do this automatically, but an explicit c++rt0.o # does not break anything, and helps significantly (at the cost of a little # extra space). freebsd2.2*) _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; # Unfortunately, older versions of FreeBSD 2 do not have this feature. freebsd2.*) _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_minus_L, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; # FreeBSD 3 and greater uses gcc -shared to do shared libraries. freebsd* | dragonfly*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; hpux9*) if test yes = "$GCC"; then _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared $pic_flag $wl+b $wl$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' else _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' fi _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl+b $wl$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: _LT_TAGVAR(hardcode_direct, $1)=yes # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. _LT_TAGVAR(hardcode_minus_L, $1)=yes _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' ;; hpux10*) if test yes,no = "$GCC,$with_gnu_ld"; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags' else _LT_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' fi if test no = "$with_gnu_ld"; then _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl+b $wl$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_direct_absolute, $1)=yes _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. _LT_TAGVAR(hardcode_minus_L, $1)=yes fi ;; hpux11*) if test yes,no = "$GCC,$with_gnu_ld"; then case $host_cpu in hppa*64*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $wl+h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' ;; ia64*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $wl+h $wl$soname $wl+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ;; *) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags' ;; esac else case $host_cpu in hppa*64*) _LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' ;; ia64*) _LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname $wl+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ;; *) m4_if($1, [], [ # Older versions of the 11.00 compiler do not understand -b yet # (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does) _LT_LINKER_OPTION([if $CC understands -b], _LT_TAGVAR(lt_cv_prog_compiler__b, $1), [-b], [_LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags'], [_LT_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'])], [_LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags']) ;; esac fi if test no = "$with_gnu_ld"; then _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl+b $wl$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: case $host_cpu in hppa*64*|ia64*) _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; *) _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_direct_absolute, $1)=yes _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. _LT_TAGVAR(hardcode_minus_L, $1)=yes ;; esac fi ;; irix5* | irix6* | nonstopux*) if test yes = "$GCC"; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' # Try to use the -exported_symbol ld option, if it does not # work, assume that -exports_file does not work either and # implicitly export all symbols. # This should be the same for all languages, so no per-tag cache variable. AC_CACHE_CHECK([whether the $host_os linker accepts -exported_symbol], [lt_cv_irix_exported_symbol], [save_LDFLAGS=$LDFLAGS LDFLAGS="$LDFLAGS -shared $wl-exported_symbol ${wl}foo $wl-update_registry $wl/dev/null" AC_LINK_IFELSE( [AC_LANG_SOURCE( [AC_LANG_CASE([C], [[int foo (void) { return 0; }]], [C++], [[int foo (void) { return 0; }]], [Fortran 77], [[ subroutine foo end]], [Fortran], [[ subroutine foo end]])])], [lt_cv_irix_exported_symbol=yes], [lt_cv_irix_exported_symbol=no]) LDFLAGS=$save_LDFLAGS]) if test yes = "$lt_cv_irix_exported_symbol"; then _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations $wl-exports_file $wl$export_symbols -o $lib' fi else _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -exports_file $export_symbols -o $lib' fi _LT_TAGVAR(archive_cmds_need_lc, $1)='no' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: _LT_TAGVAR(inherit_rpath, $1)=yes _LT_TAGVAR(link_all_deplibs, $1)=yes ;; linux*) case $cc_basename in tcc*) # Fabrice Bellard et al's Tiny C Compiler _LT_TAGVAR(ld_shlibs, $1)=yes _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' ;; esac ;; netbsd*) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out else _LT_TAGVAR(archive_cmds, $1)='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF fi _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; newsos6) _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; *nto* | *qnx*) ;; openbsd* | bitrig*) if test -f /usr/libexec/ld.so; then _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_TAGVAR(hardcode_direct_absolute, $1)=yes if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags $wl-retain-symbols-file,$export_symbols' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' else _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' fi else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; os2*) _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_minus_L, $1)=yes _LT_TAGVAR(allow_undefined_flag, $1)=unsupported shrext_cmds=.dll _LT_TAGVAR(archive_cmds, $1)='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ $ECHO EXPORTS >> $output_objdir/$libname.def~ emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~ $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ emximp -o $lib $output_objdir/$libname.def' _LT_TAGVAR(archive_expsym_cmds, $1)='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ $ECHO EXPORTS >> $output_objdir/$libname.def~ prefix_cmds="$SED"~ if test EXPORTS = "`$SED 1q $export_symbols`"; then prefix_cmds="$prefix_cmds -e 1d"; fi~ prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~ cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~ $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ emximp -o $lib $output_objdir/$libname.def' _LT_TAGVAR(old_archive_From_new_cmds, $1)='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes ;; osf3*) if test yes = "$GCC"; then _LT_TAGVAR(allow_undefined_flag, $1)=' $wl-expect_unresolved $wl\*' _LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' else _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' _LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' fi _LT_TAGVAR(archive_cmds_need_lc, $1)='no' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: ;; osf4* | osf5*) # as osf3* with the addition of -msym flag if test yes = "$GCC"; then _LT_TAGVAR(allow_undefined_flag, $1)=' $wl-expect_unresolved $wl\*' _LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $pic_flag $libobjs $deplibs $compiler_flags $wl-msym $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' else _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' _LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~ $CC -shared$allow_undefined_flag $wl-input $wl$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib~$RM $lib.exp' # Both c and cxx compiler support -rpath directly _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' fi _LT_TAGVAR(archive_cmds_need_lc, $1)='no' _LT_TAGVAR(hardcode_libdir_separator, $1)=: ;; solaris*) _LT_TAGVAR(no_undefined_flag, $1)=' -z defs' if test yes = "$GCC"; then wlarc='$wl' _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $wl-z ${wl}text $wl-h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -shared $pic_flag $wl-z ${wl}text $wl-M $wl$lib.exp $wl-h $wl$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' else case `$CC -V 2>&1` in *"Compilers 5.0"*) wlarc='' _LT_TAGVAR(archive_cmds, $1)='$LD -G$allow_undefined_flag -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $LD -G$allow_undefined_flag -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp' ;; *) wlarc='$wl' _LT_TAGVAR(archive_cmds, $1)='$CC -G$allow_undefined_flag -h $soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -G$allow_undefined_flag -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' ;; esac fi _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_TAGVAR(hardcode_shlibpath_var, $1)=no case $host_os in solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; *) # The compiler driver will combine and reorder linker options, # but understands '-z linker_flag'. GCC discards it without '$wl', # but is careful enough not to reorder. # Supported since Solaris 2.6 (maybe 2.5.1?) if test yes = "$GCC"; then _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl-z ${wl}allextract$convenience $wl-z ${wl}defaultextract' else _LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' fi ;; esac _LT_TAGVAR(link_all_deplibs, $1)=yes ;; sunos4*) if test sequent = "$host_vendor"; then # Use $CC to link under sequent, because it throws in some extra .o # files that make .init and .fini sections work. _LT_TAGVAR(archive_cmds, $1)='$CC -G $wl-h $soname -o $lib $libobjs $deplibs $compiler_flags' else _LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' fi _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_minus_L, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; sysv4) case $host_vendor in sni) _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_direct, $1)=yes # is this really true??? ;; siemens) ## LD is ld it makes a PLAMLIB ## CC just makes a GrossModule. _LT_TAGVAR(archive_cmds, $1)='$LD -G -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(reload_cmds, $1)='$CC -r -o $output$reload_objs' _LT_TAGVAR(hardcode_direct, $1)=no ;; motorola) _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_direct, $1)=no #Motorola manual says yes, but my tests say they lie ;; esac runpath_var='LD_RUN_PATH' _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; sysv4.3*) _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_TAGVAR(export_dynamic_flag_spec, $1)='-Bexport' ;; sysv4*MP*) if test -d /usr/nec; then _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_shlibpath_var, $1)=no runpath_var=LD_RUN_PATH hardcode_runpath_var=yes _LT_TAGVAR(ld_shlibs, $1)=yes fi ;; sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*) _LT_TAGVAR(no_undefined_flag, $1)='$wl-z,text' _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no runpath_var='LD_RUN_PATH' if test yes = "$GCC"; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' else _LT_TAGVAR(archive_cmds, $1)='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' fi ;; sysv5* | sco3.2v5* | sco5v6*) # Note: We CANNOT use -z defs as we might desire, because we do not # link with -lc, and that would cause any symbols used from libc to # always be unresolved, which means just about no library would # ever link correctly. If we're not using GNU ld we use -z text # though, which does catch some bad symbols but isn't as heavy-handed # as -z defs. _LT_TAGVAR(no_undefined_flag, $1)='$wl-z,text' _LT_TAGVAR(allow_undefined_flag, $1)='$wl-z,nodefs' _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-R,$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=':' _LT_TAGVAR(link_all_deplibs, $1)=yes _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-Bexport' runpath_var='LD_RUN_PATH' if test yes = "$GCC"; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' else _LT_TAGVAR(archive_cmds, $1)='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' fi ;; uts4*) _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; *) _LT_TAGVAR(ld_shlibs, $1)=no ;; esac if test sni = "$host_vendor"; then case $host in sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-Blargedynsym' ;; esac fi fi ]) AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)]) test no = "$_LT_TAGVAR(ld_shlibs, $1)" && can_build_shared=no _LT_TAGVAR(with_gnu_ld, $1)=$with_gnu_ld _LT_DECL([], [libext], [0], [Old archive suffix (normally "a")])dnl _LT_DECL([], [shrext_cmds], [1], [Shared library suffix (normally ".so")])dnl _LT_DECL([], [extract_expsyms_cmds], [2], [The commands to extract the exported symbol list from a shared archive]) # # Do we need to explicitly link libc? # case "x$_LT_TAGVAR(archive_cmds_need_lc, $1)" in x|xyes) # Assume -lc should be added _LT_TAGVAR(archive_cmds_need_lc, $1)=yes if test yes,yes = "$GCC,$enable_shared"; then case $_LT_TAGVAR(archive_cmds, $1) in *'~'*) # FIXME: we may have to deal with multi-command sequences. ;; '$CC '*) # Test whether the compiler implicitly links with -lc since on some # systems, -lgcc has to come before -lc. If gcc already passes -lc # to ld, don't add -lc before -lgcc. AC_CACHE_CHECK([whether -lc should be explicitly linked in], [lt_cv_]_LT_TAGVAR(archive_cmds_need_lc, $1), [$RM conftest* echo "$lt_simple_compile_test_code" > conftest.$ac_ext if AC_TRY_EVAL(ac_compile) 2>conftest.err; then soname=conftest lib=conftest libobjs=conftest.$ac_objext deplibs= wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1) pic_flag=$_LT_TAGVAR(lt_prog_compiler_pic, $1) compiler_flags=-v linker_flags=-v verstring= output_objdir=. libname=conftest lt_save_allow_undefined_flag=$_LT_TAGVAR(allow_undefined_flag, $1) _LT_TAGVAR(allow_undefined_flag, $1)= if AC_TRY_EVAL(_LT_TAGVAR(archive_cmds, $1) 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) then lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1)=no else lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1)=yes fi _LT_TAGVAR(allow_undefined_flag, $1)=$lt_save_allow_undefined_flag else cat conftest.err 1>&5 fi $RM conftest* ]) _LT_TAGVAR(archive_cmds_need_lc, $1)=$lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1) ;; esac fi ;; esac _LT_TAGDECL([build_libtool_need_lc], [archive_cmds_need_lc], [0], [Whether or not to add -lc for building shared libraries]) _LT_TAGDECL([allow_libtool_libs_with_static_runtimes], [enable_shared_with_static_runtimes], [0], [Whether or not to disallow shared libs when runtime libs are static]) _LT_TAGDECL([], [export_dynamic_flag_spec], [1], [Compiler flag to allow reflexive dlopens]) _LT_TAGDECL([], [whole_archive_flag_spec], [1], [Compiler flag to generate shared objects directly from archives]) _LT_TAGDECL([], [compiler_needs_object], [1], [Whether the compiler copes with passing no objects directly]) _LT_TAGDECL([], [old_archive_from_new_cmds], [2], [Create an old-style archive from a shared archive]) _LT_TAGDECL([], [old_archive_from_expsyms_cmds], [2], [Create a temporary old-style archive to link instead of a shared archive]) _LT_TAGDECL([], [archive_cmds], [2], [Commands used to build a shared archive]) _LT_TAGDECL([], [archive_expsym_cmds], [2]) _LT_TAGDECL([], [module_cmds], [2], [Commands used to build a loadable module if different from building a shared archive.]) _LT_TAGDECL([], [module_expsym_cmds], [2]) _LT_TAGDECL([], [with_gnu_ld], [1], [Whether we are building with GNU ld or not]) _LT_TAGDECL([], [allow_undefined_flag], [1], [Flag that allows shared libraries with undefined symbols to be built]) _LT_TAGDECL([], [no_undefined_flag], [1], [Flag that enforces no undefined symbols]) _LT_TAGDECL([], [hardcode_libdir_flag_spec], [1], [Flag to hardcode $libdir into a binary during linking. This must work even if $libdir does not exist]) _LT_TAGDECL([], [hardcode_libdir_separator], [1], [Whether we need a single "-rpath" flag with a separated argument]) _LT_TAGDECL([], [hardcode_direct], [0], [Set to "yes" if using DIR/libNAME$shared_ext during linking hardcodes DIR into the resulting binary]) _LT_TAGDECL([], [hardcode_direct_absolute], [0], [Set to "yes" if using DIR/libNAME$shared_ext during linking hardcodes DIR into the resulting binary and the resulting library dependency is "absolute", i.e impossible to change by setting $shlibpath_var if the library is relocated]) _LT_TAGDECL([], [hardcode_minus_L], [0], [Set to "yes" if using the -LDIR flag during linking hardcodes DIR into the resulting binary]) _LT_TAGDECL([], [hardcode_shlibpath_var], [0], [Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into the resulting binary]) _LT_TAGDECL([], [hardcode_automatic], [0], [Set to "yes" if building a shared library automatically hardcodes DIR into the library and all subsequent libraries and executables linked against it]) _LT_TAGDECL([], [inherit_rpath], [0], [Set to yes if linker adds runtime paths of dependent libraries to runtime path list]) _LT_TAGDECL([], [link_all_deplibs], [0], [Whether libtool must link a program against all its dependency libraries]) _LT_TAGDECL([], [always_export_symbols], [0], [Set to "yes" if exported symbols are required]) _LT_TAGDECL([], [export_symbols_cmds], [2], [The commands to list exported symbols]) _LT_TAGDECL([], [exclude_expsyms], [1], [Symbols that should not be listed in the preloaded symbols]) _LT_TAGDECL([], [include_expsyms], [1], [Symbols that must always be exported]) _LT_TAGDECL([], [prelink_cmds], [2], [Commands necessary for linking programs (against libraries) with templates]) _LT_TAGDECL([], [postlink_cmds], [2], [Commands necessary for finishing linking programs]) _LT_TAGDECL([], [file_list_spec], [1], [Specify filename containing input files]) dnl FIXME: Not yet implemented dnl _LT_TAGDECL([], [thread_safe_flag_spec], [1], dnl [Compiler flag to generate thread safe objects]) ])# _LT_LINKER_SHLIBS # _LT_LANG_C_CONFIG([TAG]) # ------------------------ # Ensure that the configuration variables for a C compiler are suitably # defined. These variables are subsequently used by _LT_CONFIG to write # the compiler configuration to 'libtool'. m4_defun([_LT_LANG_C_CONFIG], [m4_require([_LT_DECL_EGREP])dnl lt_save_CC=$CC AC_LANG_PUSH(C) # Source file extension for C test sources. ac_ext=c # Object file extension for compiled C test sources. objext=o _LT_TAGVAR(objext, $1)=$objext # Code to be used in simple compile tests lt_simple_compile_test_code="int some_variable = 0;" # Code to be used in simple link tests lt_simple_link_test_code='int main(){return(0);}' _LT_TAG_COMPILER # Save the default compiler, since it gets overwritten when the other # tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP. compiler_DEFAULT=$CC # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change ## the running order or otherwise move them around unless you know exactly ## what you are doing... if test -n "$compiler"; then _LT_COMPILER_NO_RTTI($1) _LT_COMPILER_PIC($1) _LT_COMPILER_C_O($1) _LT_COMPILER_FILE_LOCKS($1) _LT_LINKER_SHLIBS($1) _LT_SYS_DYNAMIC_LINKER($1) _LT_LINKER_HARDCODE_LIBPATH($1) LT_SYS_DLOPEN_SELF _LT_CMD_STRIPLIB # Report what library types will actually be built AC_MSG_CHECKING([if libtool supports shared libraries]) AC_MSG_RESULT([$can_build_shared]) AC_MSG_CHECKING([whether to build shared libraries]) test no = "$can_build_shared" && enable_shared=no # On AIX, shared libraries and static libraries use the same namespace, and # are all built from PIC. case $host_os in aix3*) test yes = "$enable_shared" && enable_static=no if test -n "$RANLIB"; then archive_cmds="$archive_cmds~\$RANLIB \$lib" postinstall_cmds='$RANLIB $lib' fi ;; aix[[4-9]]*) if test ia64 != "$host_cpu"; then case $enable_shared,$with_aix_soname,$aix_use_runtimelinking in yes,aix,yes) ;; # shared object as lib.so file only yes,svr4,*) ;; # shared object as lib.so archive member only yes,*) enable_static=no ;; # shared object in lib.a archive as well esac fi ;; esac AC_MSG_RESULT([$enable_shared]) AC_MSG_CHECKING([whether to build static libraries]) # Make sure either enable_shared or enable_static is yes. test yes = "$enable_shared" || enable_static=yes AC_MSG_RESULT([$enable_static]) _LT_CONFIG($1) fi AC_LANG_POP CC=$lt_save_CC ])# _LT_LANG_C_CONFIG # _LT_LANG_CXX_CONFIG([TAG]) # -------------------------- # Ensure that the configuration variables for a C++ compiler are suitably # defined. These variables are subsequently used by _LT_CONFIG to write # the compiler configuration to 'libtool'. m4_defun([_LT_LANG_CXX_CONFIG], [m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_DECL_EGREP])dnl m4_require([_LT_PATH_MANIFEST_TOOL])dnl if test -n "$CXX" && ( test no != "$CXX" && ( (test g++ = "$CXX" && `g++ -v >/dev/null 2>&1` ) || (test g++ != "$CXX"))); then AC_PROG_CXXCPP else _lt_caught_CXX_error=yes fi AC_LANG_PUSH(C++) _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(allow_undefined_flag, $1)= _LT_TAGVAR(always_export_symbols, $1)=no _LT_TAGVAR(archive_expsym_cmds, $1)= _LT_TAGVAR(compiler_needs_object, $1)=no _LT_TAGVAR(export_dynamic_flag_spec, $1)= _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_direct_absolute, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= _LT_TAGVAR(hardcode_libdir_separator, $1)= _LT_TAGVAR(hardcode_minus_L, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported _LT_TAGVAR(hardcode_automatic, $1)=no _LT_TAGVAR(inherit_rpath, $1)=no _LT_TAGVAR(module_cmds, $1)= _LT_TAGVAR(module_expsym_cmds, $1)= _LT_TAGVAR(link_all_deplibs, $1)=unknown _LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds _LT_TAGVAR(reload_flag, $1)=$reload_flag _LT_TAGVAR(reload_cmds, $1)=$reload_cmds _LT_TAGVAR(no_undefined_flag, $1)= _LT_TAGVAR(whole_archive_flag_spec, $1)= _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no # Source file extension for C++ test sources. ac_ext=cpp # Object file extension for compiled C++ test sources. objext=o _LT_TAGVAR(objext, $1)=$objext # No sense in running all these tests if we already determined that # the CXX compiler isn't working. Some variables (like enable_shared) # are currently assumed to apply to all compilers on this platform, # and will be corrupted by setting them based on a non-working compiler. if test yes != "$_lt_caught_CXX_error"; then # Code to be used in simple compile tests lt_simple_compile_test_code="int some_variable = 0;" # Code to be used in simple link tests lt_simple_link_test_code='int main(int, char *[[]]) { return(0); }' # ltmain only uses $CC for tagged configurations so make sure $CC is set. _LT_TAG_COMPILER # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE # Allow CC to be a program name with arguments. lt_save_CC=$CC lt_save_CFLAGS=$CFLAGS lt_save_LD=$LD lt_save_GCC=$GCC GCC=$GXX lt_save_with_gnu_ld=$with_gnu_ld lt_save_path_LD=$lt_cv_path_LD if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx else $as_unset lt_cv_prog_gnu_ld fi if test -n "${lt_cv_path_LDCXX+set}"; then lt_cv_path_LD=$lt_cv_path_LDCXX else $as_unset lt_cv_path_LD fi test -z "${LDCXX+set}" || LD=$LDCXX CC=${CXX-"c++"} CFLAGS=$CXXFLAGS compiler=$CC _LT_TAGVAR(compiler, $1)=$CC _LT_CC_BASENAME([$compiler]) if test -n "$compiler"; then # We don't want -fno-exception when compiling C++ code, so set the # no_builtin_flag separately if test yes = "$GXX"; then _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' else _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= fi if test yes = "$GXX"; then # Set up default GNU C++ configuration LT_PATH_LD # Check if GNU C++ uses GNU ld as the underlying linker, since the # archiving commands below assume that GNU ld is being used. if test yes = "$with_gnu_ld"; then _LT_TAGVAR(archive_cmds, $1)='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic' # If archive_cmds runs LD, not CC, wlarc should be empty # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to # investigate it a little bit more. (MM) wlarc='$wl' # ancient GNU ld didn't support --whole-archive et. al. if eval "`$CC -print-prog-name=ld` --help 2>&1" | $GREP 'no-whole-archive' > /dev/null; then _LT_TAGVAR(whole_archive_flag_spec, $1)=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive' else _LT_TAGVAR(whole_archive_flag_spec, $1)= fi else with_gnu_ld=no wlarc= # A generic and very simple default shared library creation # command for GNU C++ for the case where it uses the native # linker, instead of GNU ld. If possible, this setting should # overridden to take advantage of the native linker features on # the platform it is being used on. _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' fi # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' else GXX=no with_gnu_ld=no wlarc= fi # PORTME: fill in a description of your system's C++ link characteristics AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries]) _LT_TAGVAR(ld_shlibs, $1)=yes case $host_os in aix3*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; aix[[4-9]]*) if test ia64 = "$host_cpu"; then # On IA64, the linker does run time linking by default, so we don't # have to do anything special. aix_use_runtimelinking=no exp_sym_flag='-Bexport' no_entry_flag= else aix_use_runtimelinking=no # Test if we are trying to use run time linking or normal # AIX style linking. If -brtl is somewhere in LDFLAGS, we # have runtime linking enabled, and use it for executables. # For shared libraries, we enable/disable runtime linking # depending on the kind of the shared library created - # when "with_aix_soname,aix_use_runtimelinking" is: # "aix,no" lib.a(lib.so.V) shared, rtl:no, for executables # "aix,yes" lib.so shared, rtl:yes, for executables # lib.a static archive # "both,no" lib.so.V(shr.o) shared, rtl:yes # lib.a(lib.so.V) shared, rtl:no, for executables # "both,yes" lib.so.V(shr.o) shared, rtl:yes, for executables # lib.a(lib.so.V) shared, rtl:no # "svr4,*" lib.so.V(shr.o) shared, rtl:yes, for executables # lib.a static archive case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*) for ld_flag in $LDFLAGS; do case $ld_flag in *-brtl*) aix_use_runtimelinking=yes break ;; esac done if test svr4,no = "$with_aix_soname,$aix_use_runtimelinking"; then # With aix-soname=svr4, we create the lib.so.V shared archives only, # so we don't have lib.a shared libs to link our executables. # We have to force runtime linking in this case. aix_use_runtimelinking=yes LDFLAGS="$LDFLAGS -Wl,-brtl" fi ;; esac exp_sym_flag='-bexport' no_entry_flag='-bnoentry' fi # When large executables or shared objects are built, AIX ld can # have problems creating the table of contents. If linking a library # or program results in "error TOC overflow" add -mminimal-toc to # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. _LT_TAGVAR(archive_cmds, $1)='' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_direct_absolute, $1)=yes _LT_TAGVAR(hardcode_libdir_separator, $1)=':' _LT_TAGVAR(link_all_deplibs, $1)=yes _LT_TAGVAR(file_list_spec, $1)='$wl-f,' case $with_aix_soname,$aix_use_runtimelinking in aix,*) ;; # no import file svr4,* | *,yes) # use import file # The Import File defines what to hardcode. _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_direct_absolute, $1)=no ;; esac if test yes = "$GXX"; then case $host_os in aix4.[[012]]|aix4.[[012]].*) # We only want to do this on AIX 4.2 and lower, the check # below for broken collect2 doesn't work under 4.3+ collect2name=`$CC -print-prog-name=collect2` if test -f "$collect2name" && strings "$collect2name" | $GREP resolve_lib_name >/dev/null then # We have reworked collect2 : else # We have old collect2 _LT_TAGVAR(hardcode_direct, $1)=unsupported # It fails to find uninstalled libraries when the uninstalled # path is not listed in the libpath. Setting hardcode_minus_L # to unsupported forces relinking _LT_TAGVAR(hardcode_minus_L, $1)=yes _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)= fi esac shared_flag='-shared' if test yes = "$aix_use_runtimelinking"; then shared_flag=$shared_flag' $wl-G' fi # Need to ensure runtime linking is disabled for the traditional # shared library, or the linker may eventually find shared libraries # /with/ Import File - we do not want to mix them. shared_flag_aix='-shared' shared_flag_svr4='-shared $wl-G' else # not using gcc if test ia64 = "$host_cpu"; then # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release # chokes on -Wl,-G. The following line is correct: shared_flag='-G' else if test yes = "$aix_use_runtimelinking"; then shared_flag='$wl-G' else shared_flag='$wl-bM:SRE' fi shared_flag_aix='$wl-bM:SRE' shared_flag_svr4='$wl-G' fi fi _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-bexpall' # It seems that -bexpall does not export symbols beginning with # underscore (_), so it is better to generate a list of symbols to # export. _LT_TAGVAR(always_export_symbols, $1)=yes if test aix,yes = "$with_aix_soname,$aix_use_runtimelinking"; then # Warning - without using the other runtime loading flags (-brtl), # -berok will link without error, but may produce a broken library. # The "-G" linker flag allows undefined symbols. _LT_TAGVAR(no_undefined_flag, $1)='-bernotok' # Determine the default libpath from the value encoded in an empty # executable. _LT_SYS_MODULE_PATH_AIX([$1]) _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-blibpath:$libdir:'"$aix_libpath" _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs $wl'$no_entry_flag' $compiler_flags `if test -n "$allow_undefined_flag"; then func_echo_all "$wl$allow_undefined_flag"; else :; fi` $wl'$exp_sym_flag:\$export_symbols' '$shared_flag else if test ia64 = "$host_cpu"; then _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-R $libdir:/usr/lib:/lib' _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs" _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\$wl$no_entry_flag"' $compiler_flags $wl$allow_undefined_flag '"\$wl$exp_sym_flag:\$export_symbols" else # Determine the default libpath from the value encoded in an # empty executable. _LT_SYS_MODULE_PATH_AIX([$1]) _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-blibpath:$libdir:'"$aix_libpath" # Warning - without using the other run time loading flags, # -berok will link without error, but may produce a broken library. _LT_TAGVAR(no_undefined_flag, $1)=' $wl-bernotok' _LT_TAGVAR(allow_undefined_flag, $1)=' $wl-berok' if test yes = "$with_gnu_ld"; then # We only use this code for GNU lds that support --whole-archive. _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive$convenience $wl--no-whole-archive' else # Exported symbols can be pulled into shared objects from archives _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience' fi _LT_TAGVAR(archive_cmds_need_lc, $1)=yes _LT_TAGVAR(archive_expsym_cmds, $1)='$RM -r $output_objdir/$realname.d~$MKDIR $output_objdir/$realname.d' # -brtl affects multiple linker settings, -berok does not and is overridden later compiler_flags_filtered='`func_echo_all "$compiler_flags " | $SED -e "s%-brtl\\([[, ]]\\)%-berok\\1%g"`' if test svr4 != "$with_aix_soname"; then # This is similar to how AIX traditionally builds its shared # libraries. Need -bnortl late, we may have -brtl in LDFLAGS. _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$CC '$shared_flag_aix' -o $output_objdir/$realname.d/$soname $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$realname.d/$soname' fi if test aix != "$with_aix_soname"; then _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$CC '$shared_flag_svr4' -o $output_objdir/$realname.d/$shared_archive_member_spec.o $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$STRIP -e $output_objdir/$realname.d/$shared_archive_member_spec.o~( func_echo_all "#! $soname($shared_archive_member_spec.o)"; if test shr_64 = "$shared_archive_member_spec"; then func_echo_all "# 64"; else func_echo_all "# 32"; fi; cat $export_symbols ) > $output_objdir/$realname.d/$shared_archive_member_spec.imp~$AR $AR_FLAGS $output_objdir/$soname $output_objdir/$realname.d/$shared_archive_member_spec.o $output_objdir/$realname.d/$shared_archive_member_spec.imp' else # used by -dlpreopen to get the symbols _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$MV $output_objdir/$realname.d/$soname $output_objdir' fi _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$RM -r $output_objdir/$realname.d' fi fi ;; beos*) if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then _LT_TAGVAR(allow_undefined_flag, $1)=unsupported # Joseph Beckenbach says some releases of gcc # support --undefined. This deserves some investigation. FIXME _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; chorus*) case $cc_basename in *) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; esac ;; cygwin* | mingw* | pw32* | cegcc*) case $GXX,$cc_basename in ,cl* | no,cl*) # Native MSVC # hardcode_libdir_flag_spec is actually meaningless, as there is # no search path for DLLs. _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' _LT_TAGVAR(allow_undefined_flag, $1)=unsupported _LT_TAGVAR(always_export_symbols, $1)=yes _LT_TAGVAR(file_list_spec, $1)='@' # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. shrext_cmds=.dll # FIXME: Setting linknames here is a bad hack. _LT_TAGVAR(archive_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~linknames=' _LT_TAGVAR(archive_expsym_cmds, $1)='if _LT_DLL_DEF_P([$export_symbols]); then cp "$export_symbols" "$output_objdir/$soname.def"; echo "$tool_output_objdir$soname.def" > "$output_objdir/$soname.exp"; else $SED -e '\''s/^/-link -EXPORT:/'\'' < $export_symbols > $output_objdir/$soname.exp; fi~ $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ linknames=' # The linker will not automatically build a static lib if we build a DLL. # _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes # Don't use ranlib _LT_TAGVAR(old_postinstall_cmds, $1)='chmod 644 $oldlib' _LT_TAGVAR(postlink_cmds, $1)='lt_outputfile="@OUTPUT@"~ lt_tool_outputfile="@TOOL_OUTPUT@"~ case $lt_outputfile in *.exe|*.EXE) ;; *) lt_outputfile=$lt_outputfile.exe lt_tool_outputfile=$lt_tool_outputfile.exe ;; esac~ func_to_tool_file "$lt_outputfile"~ if test : != "$MANIFEST_TOOL" && test -f "$lt_outputfile.manifest"; then $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; $RM "$lt_outputfile.manifest"; fi' ;; *) # g++ # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, # as there is no search path for DLLs. _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-all-symbols' _LT_TAGVAR(allow_undefined_flag, $1)=unsupported _LT_TAGVAR(always_export_symbols, $1)=no _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' # If the export-symbols file already is a .def file, use it as # is; otherwise, prepend EXPORTS... _LT_TAGVAR(archive_expsym_cmds, $1)='if _LT_DLL_DEF_P([$export_symbols]); then cp $export_symbols $output_objdir/$soname.def; else echo EXPORTS > $output_objdir/$soname.def; cat $export_symbols >> $output_objdir/$soname.def; fi~ $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; esac ;; darwin* | rhapsody*) _LT_DARWIN_LINKER_FEATURES($1) ;; os2*) _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_minus_L, $1)=yes _LT_TAGVAR(allow_undefined_flag, $1)=unsupported shrext_cmds=.dll _LT_TAGVAR(archive_cmds, $1)='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ $ECHO EXPORTS >> $output_objdir/$libname.def~ emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~ $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ emximp -o $lib $output_objdir/$libname.def' _LT_TAGVAR(archive_expsym_cmds, $1)='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ $ECHO EXPORTS >> $output_objdir/$libname.def~ prefix_cmds="$SED"~ if test EXPORTS = "`$SED 1q $export_symbols`"; then prefix_cmds="$prefix_cmds -e 1d"; fi~ prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~ cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~ $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ emximp -o $lib $output_objdir/$libname.def' _LT_TAGVAR(old_archive_From_new_cmds, $1)='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes ;; dgux*) case $cc_basename in ec++*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; ghcx*) # Green Hills C++ Compiler # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; *) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; esac ;; freebsd2.*) # C++ shared libraries reported to be fairly broken before # switch to ELF _LT_TAGVAR(ld_shlibs, $1)=no ;; freebsd-elf*) _LT_TAGVAR(archive_cmds_need_lc, $1)=no ;; freebsd* | dragonfly*) # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF # conventions _LT_TAGVAR(ld_shlibs, $1)=yes ;; haiku*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' _LT_TAGVAR(link_all_deplibs, $1)=yes ;; hpux9*) _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl+b $wl$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, # but as the default # location of the library. case $cc_basename in CC*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; aCC*) _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -b $wl+b $wl$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP "\-L"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' ;; *) if test yes = "$GXX"; then _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared -nostdlib $pic_flag $wl+b $wl$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' else # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no fi ;; esac ;; hpux10*|hpux11*) if test no = "$with_gnu_ld"; then _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl+b $wl$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: case $host_cpu in hppa*64*|ia64*) ;; *) _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' ;; esac fi case $host_cpu in hppa*64*|ia64*) _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; *) _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_direct_absolute, $1)=yes _LT_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, # but as the default # location of the library. ;; esac case $cc_basename in CC*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; aCC*) case $host_cpu in hppa*64*) _LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; ia64*) _LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname $wl+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; *) _LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; esac # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP "\-L"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' ;; *) if test yes = "$GXX"; then if test no = "$with_gnu_ld"; then case $host_cpu in hppa*64*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC $wl+h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; ia64*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $pic_flag $wl+h $wl$soname $wl+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; *) _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; esac fi else # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no fi ;; esac ;; interix[[3-9]]*) _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. # Instead, shared libraries are loaded at an image base (0x10000000 by # default) and relocated if they conflict, which is a slow very memory # consuming and fragmenting process. To avoid this, we pick a random, # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link # time. Moving up from 0x10000000 also allows more sbrk(2) space. _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s|^|_|" $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--retain-symbols-file,$output_objdir/$soname.expsym $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' ;; irix5* | irix6*) case $cc_basename in CC*) # SGI C++ _LT_TAGVAR(archive_cmds, $1)='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' # Archives containing C++ object files must be created using # "CC -ar", where "CC" is the IRIX C++ compiler. This is # necessary to make sure instantiated templates are included # in the archive. _LT_TAGVAR(old_archive_cmds, $1)='$CC -ar -WR,-u -o $oldlib $oldobjs' ;; *) if test yes = "$GXX"; then if test no = "$with_gnu_ld"; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' else _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` -o $lib' fi fi _LT_TAGVAR(link_all_deplibs, $1)=yes ;; esac _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: _LT_TAGVAR(inherit_rpath, $1)=yes ;; linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) case $cc_basename in KCC*) # Kuck and Associates, Inc. (KAI) C++ Compiler # KCC will only create a shared library if the output file # ends with ".so" (or ".sl" for HP-UX), so rename the library # to its proper name (with version) after linking. _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\$tempext\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\$tempext\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib $wl-retain-symbols-file,$export_symbols; mv \$templib $lib' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | $GREP "ld"`; rm -f libconftest$shared_ext; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic' # Archives containing C++ object files must be created using # "CC -Bstatic", where "CC" is the KAI C++ compiler. _LT_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' ;; icpc* | ecpc* ) # Intel C++ with_gnu_ld=yes # version 8.0 and above of icpc choke on multiply defined symbols # if we add $predep_objects and $postdep_objects, however 7.1 and # earlier do not add the objects themselves. case `$CC -V 2>&1` in *"Version 7."*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' ;; *) # Version 8.0 or newer tmp_idyn= case $host_cpu in ia64*) tmp_idyn=' -i_dynamic';; esac _LT_TAGVAR(archive_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' ;; esac _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic' _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive$convenience $wl--no-whole-archive' ;; pgCC* | pgcpp*) # Portland Group C++ compiler case `$CC -V` in *pgCC\ [[1-5]].* | *pgcpp\ [[1-5]].*) _LT_TAGVAR(prelink_cmds, $1)='tpldir=Template.dir~ rm -rf $tpldir~ $CC --prelink_objects --instantiation_dir $tpldir $objs $libobjs $compile_deplibs~ compile_command="$compile_command `find $tpldir -name \*.o | sort | $NL2SP`"' _LT_TAGVAR(old_archive_cmds, $1)='tpldir=Template.dir~ rm -rf $tpldir~ $CC --prelink_objects --instantiation_dir $tpldir $oldobjs$old_deplibs~ $AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | sort | $NL2SP`~ $RANLIB $oldlib' _LT_TAGVAR(archive_cmds, $1)='tpldir=Template.dir~ rm -rf $tpldir~ $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='tpldir=Template.dir~ rm -rf $tpldir~ $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' ;; *) # Version 6 and above use weak symbols _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' ;; esac _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl--rpath $wl$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic' _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' ;; cxx*) # Compaq C++ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib $wl-retain-symbols-file $wl$export_symbols' runpath_var=LD_RUN_PATH _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "X$list" | $Xsed' ;; xl* | mpixl* | bgxl*) # IBM XL 8.0 on PPC, with GNU ld _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic' _LT_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' if test yes = "$supports_anon_versioning"; then _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ echo "local: *; };" >> $output_objdir/$libname.ver~ $CC -qmkshrobj $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-version-script $wl$output_objdir/$libname.ver -o $lib' fi ;; *) case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C++ 5.9 _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs' _LT_TAGVAR(archive_cmds, $1)='$CC -G$allow_undefined_flag -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G$allow_undefined_flag -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-retain-symbols-file $wl$export_symbols' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' _LT_TAGVAR(compiler_needs_object, $1)=yes # Not sure whether something based on # $CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 # would be better. output_verbose_link_cmd='func_echo_all' # Archives containing C++ object files must be created using # "CC -xar", where "CC" is the Sun C++ compiler. This is # necessary to make sure instantiated templates are included # in the archive. _LT_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs' ;; esac ;; esac ;; lynxos*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; m88k*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; mvs*) case $cc_basename in cxx*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; *) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; esac ;; netbsd*) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags' wlarc= _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no fi # Workaround some broken pre-1.5 toolchains output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"' ;; *nto* | *qnx*) _LT_TAGVAR(ld_shlibs, $1)=yes ;; openbsd* | bitrig*) if test -f /usr/libexec/ld.so; then _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_TAGVAR(hardcode_direct_absolute, $1)=yes _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`"; then _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-retain-symbols-file,$export_symbols -o $lib' _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' _LT_TAGVAR(whole_archive_flag_spec, $1)=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive' fi output_verbose_link_cmd=func_echo_all else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; osf3* | osf4* | osf5*) case $cc_basename in KCC*) # Kuck and Associates, Inc. (KAI) C++ Compiler # KCC will only create a shared library if the output file # ends with ".so" (or ".sl" for HP-UX), so rename the library # to its proper name (with version) after linking. _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo "$lib" | $SED -e "s/\$tempext\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: # Archives containing C++ object files must be created using # the KAI C++ compiler. case $host in osf3*) _LT_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' ;; *) _LT_TAGVAR(old_archive_cmds, $1)='$CC -o $oldlib $oldobjs' ;; esac ;; RCC*) # Rational C++ 2.4.1 # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; cxx*) case $host in osf3*) _LT_TAGVAR(allow_undefined_flag, $1)=' $wl-expect_unresolved $wl\*' _LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $soname `test -n "$verstring" && func_echo_all "$wl-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' ;; *) _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' _LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~ echo "-hidden">> $lib.exp~ $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname $wl-input $wl$lib.exp `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib~ $RM $lib.exp' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' ;; esac _LT_TAGVAR(hardcode_libdir_separator, $1)=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld" | $GREP -v "ld:"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' ;; *) if test yes,no = "$GXX,$with_gnu_ld"; then _LT_TAGVAR(allow_undefined_flag, $1)=' $wl-expect_unresolved $wl\*' case $host in osf3*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' ;; *) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-msym $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' ;; esac _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' else # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no fi ;; esac ;; psos*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; sunos4*) case $cc_basename in CC*) # Sun C++ 4.x # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; lcc*) # Lucid # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; *) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; esac ;; solaris*) case $cc_basename in CC* | sunCC*) # Sun C++ 4.2, 5.x and Centerline C++ _LT_TAGVAR(archive_cmds_need_lc,$1)=yes _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs' _LT_TAGVAR(archive_cmds, $1)='$CC -G$allow_undefined_flag -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -G$allow_undefined_flag $wl-M $wl$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_TAGVAR(hardcode_shlibpath_var, $1)=no case $host_os in solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; *) # The compiler driver will combine and reorder linker options, # but understands '-z linker_flag'. # Supported since Solaris 2.6 (maybe 2.5.1?) _LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' ;; esac _LT_TAGVAR(link_all_deplibs, $1)=yes output_verbose_link_cmd='func_echo_all' # Archives containing C++ object files must be created using # "CC -xar", where "CC" is the Sun C++ compiler. This is # necessary to make sure instantiated templates are included # in the archive. _LT_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs' ;; gcx*) # Green Hills C++ Compiler _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-h $wl$soname -o $lib' # The C++ compiler must be used to create the archive. _LT_TAGVAR(old_archive_cmds, $1)='$CC $LDFLAGS -archive -o $oldlib $oldobjs' ;; *) # GNU C++ compiler with Solaris linker if test yes,no = "$GXX,$with_gnu_ld"; then _LT_TAGVAR(no_undefined_flag, $1)=' $wl-z ${wl}defs' if $CC --version | $GREP -v '^2\.7' > /dev/null; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-h $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -shared $pic_flag -nostdlib $wl-M $wl$lib.exp $wl-h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' else # g++ 2.7 appears to require '-G' NOT '-shared' on this # platform. _LT_TAGVAR(archive_cmds, $1)='$CC -G -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-h $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -G -nostdlib $wl-M $wl$lib.exp $wl-h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' fi _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-R $wl$libdir' case $host_os in solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; *) _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl-z ${wl}allextract$convenience $wl-z ${wl}defaultextract' ;; esac fi ;; esac ;; sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*) _LT_TAGVAR(no_undefined_flag, $1)='$wl-z,text' _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no runpath_var='LD_RUN_PATH' case $cc_basename in CC*) _LT_TAGVAR(archive_cmds, $1)='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ;; *) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ;; esac ;; sysv5* | sco3.2v5* | sco5v6*) # Note: We CANNOT use -z defs as we might desire, because we do not # link with -lc, and that would cause any symbols used from libc to # always be unresolved, which means just about no library would # ever link correctly. If we're not using GNU ld we use -z text # though, which does catch some bad symbols but isn't as heavy-handed # as -z defs. _LT_TAGVAR(no_undefined_flag, $1)='$wl-z,text' _LT_TAGVAR(allow_undefined_flag, $1)='$wl-z,nodefs' _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-R,$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=':' _LT_TAGVAR(link_all_deplibs, $1)=yes _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-Bexport' runpath_var='LD_RUN_PATH' case $cc_basename in CC*) _LT_TAGVAR(archive_cmds, $1)='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(old_archive_cmds, $1)='$CC -Tprelink_objects $oldobjs~ '"$_LT_TAGVAR(old_archive_cmds, $1)" _LT_TAGVAR(reload_cmds, $1)='$CC -Tprelink_objects $reload_objs~ '"$_LT_TAGVAR(reload_cmds, $1)" ;; *) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ;; esac ;; tandem*) case $cc_basename in NCC*) # NonStop-UX NCC 3.20 # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; *) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; esac ;; vxworks*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; *) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; esac AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)]) test no = "$_LT_TAGVAR(ld_shlibs, $1)" && can_build_shared=no _LT_TAGVAR(GCC, $1)=$GXX _LT_TAGVAR(LD, $1)=$LD ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change ## the running order or otherwise move them around unless you know exactly ## what you are doing... _LT_SYS_HIDDEN_LIBDEPS($1) _LT_COMPILER_PIC($1) _LT_COMPILER_C_O($1) _LT_COMPILER_FILE_LOCKS($1) _LT_LINKER_SHLIBS($1) _LT_SYS_DYNAMIC_LINKER($1) _LT_LINKER_HARDCODE_LIBPATH($1) _LT_CONFIG($1) fi # test -n "$compiler" CC=$lt_save_CC CFLAGS=$lt_save_CFLAGS LDCXX=$LD LD=$lt_save_LD GCC=$lt_save_GCC with_gnu_ld=$lt_save_with_gnu_ld lt_cv_path_LDCXX=$lt_cv_path_LD lt_cv_path_LD=$lt_save_path_LD lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld fi # test yes != "$_lt_caught_CXX_error" AC_LANG_POP ])# _LT_LANG_CXX_CONFIG # _LT_FUNC_STRIPNAME_CNF # ---------------------- # func_stripname_cnf prefix suffix name # strip PREFIX and SUFFIX off of NAME. # PREFIX and SUFFIX must not contain globbing or regex special # characters, hashes, percent signs, but SUFFIX may contain a leading # dot (in which case that matches only a dot). # # This function is identical to the (non-XSI) version of func_stripname, # except this one can be used by m4 code that may be executed by configure, # rather than the libtool script. m4_defun([_LT_FUNC_STRIPNAME_CNF],[dnl AC_REQUIRE([_LT_DECL_SED]) AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH]) func_stripname_cnf () { case @S|@2 in .*) func_stripname_result=`$ECHO "@S|@3" | $SED "s%^@S|@1%%; s%\\\\@S|@2\$%%"`;; *) func_stripname_result=`$ECHO "@S|@3" | $SED "s%^@S|@1%%; s%@S|@2\$%%"`;; esac } # func_stripname_cnf ])# _LT_FUNC_STRIPNAME_CNF # _LT_SYS_HIDDEN_LIBDEPS([TAGNAME]) # --------------------------------- # Figure out "hidden" library dependencies from verbose # compiler output when linking a shared library. # Parse the compiler output and extract the necessary # objects, libraries and library flags. m4_defun([_LT_SYS_HIDDEN_LIBDEPS], [m4_require([_LT_FILEUTILS_DEFAULTS])dnl AC_REQUIRE([_LT_FUNC_STRIPNAME_CNF])dnl # Dependencies to place before and after the object being linked: _LT_TAGVAR(predep_objects, $1)= _LT_TAGVAR(postdep_objects, $1)= _LT_TAGVAR(predeps, $1)= _LT_TAGVAR(postdeps, $1)= _LT_TAGVAR(compiler_lib_search_path, $1)= dnl we can't use the lt_simple_compile_test_code here, dnl because it contains code intended for an executable, dnl not a library. It's possible we should let each dnl tag define a new lt_????_link_test_code variable, dnl but it's only used here... m4_if([$1], [], [cat > conftest.$ac_ext <<_LT_EOF int a; void foo (void) { a = 0; } _LT_EOF ], [$1], [CXX], [cat > conftest.$ac_ext <<_LT_EOF class Foo { public: Foo (void) { a = 0; } private: int a; }; _LT_EOF ], [$1], [F77], [cat > conftest.$ac_ext <<_LT_EOF subroutine foo implicit none integer*4 a a=0 return end _LT_EOF ], [$1], [FC], [cat > conftest.$ac_ext <<_LT_EOF subroutine foo implicit none integer a a=0 return end _LT_EOF ], [$1], [GCJ], [cat > conftest.$ac_ext <<_LT_EOF public class foo { private int a; public void bar (void) { a = 0; } }; _LT_EOF ], [$1], [GO], [cat > conftest.$ac_ext <<_LT_EOF package foo func foo() { } _LT_EOF ]) _lt_libdeps_save_CFLAGS=$CFLAGS case "$CC $CFLAGS " in #( *\ -flto*\ *) CFLAGS="$CFLAGS -fno-lto" ;; *\ -fwhopr*\ *) CFLAGS="$CFLAGS -fno-whopr" ;; *\ -fuse-linker-plugin*\ *) CFLAGS="$CFLAGS -fno-use-linker-plugin" ;; esac dnl Parse the compiler output and extract the necessary dnl objects, libraries and library flags. if AC_TRY_EVAL(ac_compile); then # Parse the compiler output and extract the necessary # objects, libraries and library flags. # Sentinel used to keep track of whether or not we are before # the conftest object file. pre_test_object_deps_done=no for p in `eval "$output_verbose_link_cmd"`; do case $prev$p in -L* | -R* | -l*) # Some compilers place space between "-{L,R}" and the path. # Remove the space. if test x-L = "$p" || test x-R = "$p"; then prev=$p continue fi # Expand the sysroot to ease extracting the directories later. if test -z "$prev"; then case $p in -L*) func_stripname_cnf '-L' '' "$p"; prev=-L; p=$func_stripname_result ;; -R*) func_stripname_cnf '-R' '' "$p"; prev=-R; p=$func_stripname_result ;; -l*) func_stripname_cnf '-l' '' "$p"; prev=-l; p=$func_stripname_result ;; esac fi case $p in =*) func_stripname_cnf '=' '' "$p"; p=$lt_sysroot$func_stripname_result ;; esac if test no = "$pre_test_object_deps_done"; then case $prev in -L | -R) # Internal compiler library paths should come after those # provided the user. The postdeps already come after the # user supplied libs so there is no need to process them. if test -z "$_LT_TAGVAR(compiler_lib_search_path, $1)"; then _LT_TAGVAR(compiler_lib_search_path, $1)=$prev$p else _LT_TAGVAR(compiler_lib_search_path, $1)="${_LT_TAGVAR(compiler_lib_search_path, $1)} $prev$p" fi ;; # The "-l" case would never come before the object being # linked, so don't bother handling this case. esac else if test -z "$_LT_TAGVAR(postdeps, $1)"; then _LT_TAGVAR(postdeps, $1)=$prev$p else _LT_TAGVAR(postdeps, $1)="${_LT_TAGVAR(postdeps, $1)} $prev$p" fi fi prev= ;; *.lto.$objext) ;; # Ignore GCC LTO objects *.$objext) # This assumes that the test object file only shows up # once in the compiler output. if test "$p" = "conftest.$objext"; then pre_test_object_deps_done=yes continue fi if test no = "$pre_test_object_deps_done"; then if test -z "$_LT_TAGVAR(predep_objects, $1)"; then _LT_TAGVAR(predep_objects, $1)=$p else _LT_TAGVAR(predep_objects, $1)="$_LT_TAGVAR(predep_objects, $1) $p" fi else if test -z "$_LT_TAGVAR(postdep_objects, $1)"; then _LT_TAGVAR(postdep_objects, $1)=$p else _LT_TAGVAR(postdep_objects, $1)="$_LT_TAGVAR(postdep_objects, $1) $p" fi fi ;; *) ;; # Ignore the rest. esac done # Clean up. rm -f a.out a.exe else echo "libtool.m4: error: problem compiling $1 test program" fi $RM -f confest.$objext CFLAGS=$_lt_libdeps_save_CFLAGS # PORTME: override above test on systems where it is broken m4_if([$1], [CXX], [case $host_os in interix[[3-9]]*) # Interix 3.5 installs completely hosed .la files for C++, so rather than # hack all around it, let's just trust "g++" to DTRT. _LT_TAGVAR(predep_objects,$1)= _LT_TAGVAR(postdep_objects,$1)= _LT_TAGVAR(postdeps,$1)= ;; esac ]) case " $_LT_TAGVAR(postdeps, $1) " in *" -lc "*) _LT_TAGVAR(archive_cmds_need_lc, $1)=no ;; esac _LT_TAGVAR(compiler_lib_search_dirs, $1)= if test -n "${_LT_TAGVAR(compiler_lib_search_path, $1)}"; then _LT_TAGVAR(compiler_lib_search_dirs, $1)=`echo " ${_LT_TAGVAR(compiler_lib_search_path, $1)}" | $SED -e 's! -L! !g' -e 's!^ !!'` fi _LT_TAGDECL([], [compiler_lib_search_dirs], [1], [The directories searched by this compiler when creating a shared library]) _LT_TAGDECL([], [predep_objects], [1], [Dependencies to place before and after the objects being linked to create a shared library]) _LT_TAGDECL([], [postdep_objects], [1]) _LT_TAGDECL([], [predeps], [1]) _LT_TAGDECL([], [postdeps], [1]) _LT_TAGDECL([], [compiler_lib_search_path], [1], [The library search path used internally by the compiler when linking a shared library]) ])# _LT_SYS_HIDDEN_LIBDEPS # _LT_LANG_F77_CONFIG([TAG]) # -------------------------- # Ensure that the configuration variables for a Fortran 77 compiler are # suitably defined. These variables are subsequently used by _LT_CONFIG # to write the compiler configuration to 'libtool'. m4_defun([_LT_LANG_F77_CONFIG], [AC_LANG_PUSH(Fortran 77) if test -z "$F77" || test no = "$F77"; then _lt_disable_F77=yes fi _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(allow_undefined_flag, $1)= _LT_TAGVAR(always_export_symbols, $1)=no _LT_TAGVAR(archive_expsym_cmds, $1)= _LT_TAGVAR(export_dynamic_flag_spec, $1)= _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_direct_absolute, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= _LT_TAGVAR(hardcode_libdir_separator, $1)= _LT_TAGVAR(hardcode_minus_L, $1)=no _LT_TAGVAR(hardcode_automatic, $1)=no _LT_TAGVAR(inherit_rpath, $1)=no _LT_TAGVAR(module_cmds, $1)= _LT_TAGVAR(module_expsym_cmds, $1)= _LT_TAGVAR(link_all_deplibs, $1)=unknown _LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds _LT_TAGVAR(reload_flag, $1)=$reload_flag _LT_TAGVAR(reload_cmds, $1)=$reload_cmds _LT_TAGVAR(no_undefined_flag, $1)= _LT_TAGVAR(whole_archive_flag_spec, $1)= _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no # Source file extension for f77 test sources. ac_ext=f # Object file extension for compiled f77 test sources. objext=o _LT_TAGVAR(objext, $1)=$objext # No sense in running all these tests if we already determined that # the F77 compiler isn't working. Some variables (like enable_shared) # are currently assumed to apply to all compilers on this platform, # and will be corrupted by setting them based on a non-working compiler. if test yes != "$_lt_disable_F77"; then # Code to be used in simple compile tests lt_simple_compile_test_code="\ subroutine t return end " # Code to be used in simple link tests lt_simple_link_test_code="\ program t end " # ltmain only uses $CC for tagged configurations so make sure $CC is set. _LT_TAG_COMPILER # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE # Allow CC to be a program name with arguments. lt_save_CC=$CC lt_save_GCC=$GCC lt_save_CFLAGS=$CFLAGS CC=${F77-"f77"} CFLAGS=$FFLAGS compiler=$CC _LT_TAGVAR(compiler, $1)=$CC _LT_CC_BASENAME([$compiler]) GCC=$G77 if test -n "$compiler"; then AC_MSG_CHECKING([if libtool supports shared libraries]) AC_MSG_RESULT([$can_build_shared]) AC_MSG_CHECKING([whether to build shared libraries]) test no = "$can_build_shared" && enable_shared=no # On AIX, shared libraries and static libraries use the same namespace, and # are all built from PIC. case $host_os in aix3*) test yes = "$enable_shared" && enable_static=no if test -n "$RANLIB"; then archive_cmds="$archive_cmds~\$RANLIB \$lib" postinstall_cmds='$RANLIB $lib' fi ;; aix[[4-9]]*) if test ia64 != "$host_cpu"; then case $enable_shared,$with_aix_soname,$aix_use_runtimelinking in yes,aix,yes) ;; # shared object as lib.so file only yes,svr4,*) ;; # shared object as lib.so archive member only yes,*) enable_static=no ;; # shared object in lib.a archive as well esac fi ;; esac AC_MSG_RESULT([$enable_shared]) AC_MSG_CHECKING([whether to build static libraries]) # Make sure either enable_shared or enable_static is yes. test yes = "$enable_shared" || enable_static=yes AC_MSG_RESULT([$enable_static]) _LT_TAGVAR(GCC, $1)=$G77 _LT_TAGVAR(LD, $1)=$LD ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change ## the running order or otherwise move them around unless you know exactly ## what you are doing... _LT_COMPILER_PIC($1) _LT_COMPILER_C_O($1) _LT_COMPILER_FILE_LOCKS($1) _LT_LINKER_SHLIBS($1) _LT_SYS_DYNAMIC_LINKER($1) _LT_LINKER_HARDCODE_LIBPATH($1) _LT_CONFIG($1) fi # test -n "$compiler" GCC=$lt_save_GCC CC=$lt_save_CC CFLAGS=$lt_save_CFLAGS fi # test yes != "$_lt_disable_F77" AC_LANG_POP ])# _LT_LANG_F77_CONFIG # _LT_LANG_FC_CONFIG([TAG]) # ------------------------- # Ensure that the configuration variables for a Fortran compiler are # suitably defined. These variables are subsequently used by _LT_CONFIG # to write the compiler configuration to 'libtool'. m4_defun([_LT_LANG_FC_CONFIG], [AC_LANG_PUSH(Fortran) if test -z "$FC" || test no = "$FC"; then _lt_disable_FC=yes fi _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(allow_undefined_flag, $1)= _LT_TAGVAR(always_export_symbols, $1)=no _LT_TAGVAR(archive_expsym_cmds, $1)= _LT_TAGVAR(export_dynamic_flag_spec, $1)= _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_direct_absolute, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= _LT_TAGVAR(hardcode_libdir_separator, $1)= _LT_TAGVAR(hardcode_minus_L, $1)=no _LT_TAGVAR(hardcode_automatic, $1)=no _LT_TAGVAR(inherit_rpath, $1)=no _LT_TAGVAR(module_cmds, $1)= _LT_TAGVAR(module_expsym_cmds, $1)= _LT_TAGVAR(link_all_deplibs, $1)=unknown _LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds _LT_TAGVAR(reload_flag, $1)=$reload_flag _LT_TAGVAR(reload_cmds, $1)=$reload_cmds _LT_TAGVAR(no_undefined_flag, $1)= _LT_TAGVAR(whole_archive_flag_spec, $1)= _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no # Source file extension for fc test sources. ac_ext=${ac_fc_srcext-f} # Object file extension for compiled fc test sources. objext=o _LT_TAGVAR(objext, $1)=$objext # No sense in running all these tests if we already determined that # the FC compiler isn't working. Some variables (like enable_shared) # are currently assumed to apply to all compilers on this platform, # and will be corrupted by setting them based on a non-working compiler. if test yes != "$_lt_disable_FC"; then # Code to be used in simple compile tests lt_simple_compile_test_code="\ subroutine t return end " # Code to be used in simple link tests lt_simple_link_test_code="\ program t end " # ltmain only uses $CC for tagged configurations so make sure $CC is set. _LT_TAG_COMPILER # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE # Allow CC to be a program name with arguments. lt_save_CC=$CC lt_save_GCC=$GCC lt_save_CFLAGS=$CFLAGS CC=${FC-"f95"} CFLAGS=$FCFLAGS compiler=$CC GCC=$ac_cv_fc_compiler_gnu _LT_TAGVAR(compiler, $1)=$CC _LT_CC_BASENAME([$compiler]) if test -n "$compiler"; then AC_MSG_CHECKING([if libtool supports shared libraries]) AC_MSG_RESULT([$can_build_shared]) AC_MSG_CHECKING([whether to build shared libraries]) test no = "$can_build_shared" && enable_shared=no # On AIX, shared libraries and static libraries use the same namespace, and # are all built from PIC. case $host_os in aix3*) test yes = "$enable_shared" && enable_static=no if test -n "$RANLIB"; then archive_cmds="$archive_cmds~\$RANLIB \$lib" postinstall_cmds='$RANLIB $lib' fi ;; aix[[4-9]]*) if test ia64 != "$host_cpu"; then case $enable_shared,$with_aix_soname,$aix_use_runtimelinking in yes,aix,yes) ;; # shared object as lib.so file only yes,svr4,*) ;; # shared object as lib.so archive member only yes,*) enable_static=no ;; # shared object in lib.a archive as well esac fi ;; esac AC_MSG_RESULT([$enable_shared]) AC_MSG_CHECKING([whether to build static libraries]) # Make sure either enable_shared or enable_static is yes. test yes = "$enable_shared" || enable_static=yes AC_MSG_RESULT([$enable_static]) _LT_TAGVAR(GCC, $1)=$ac_cv_fc_compiler_gnu _LT_TAGVAR(LD, $1)=$LD ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change ## the running order or otherwise move them around unless you know exactly ## what you are doing... _LT_SYS_HIDDEN_LIBDEPS($1) _LT_COMPILER_PIC($1) _LT_COMPILER_C_O($1) _LT_COMPILER_FILE_LOCKS($1) _LT_LINKER_SHLIBS($1) _LT_SYS_DYNAMIC_LINKER($1) _LT_LINKER_HARDCODE_LIBPATH($1) _LT_CONFIG($1) fi # test -n "$compiler" GCC=$lt_save_GCC CC=$lt_save_CC CFLAGS=$lt_save_CFLAGS fi # test yes != "$_lt_disable_FC" AC_LANG_POP ])# _LT_LANG_FC_CONFIG # _LT_LANG_GCJ_CONFIG([TAG]) # -------------------------- # Ensure that the configuration variables for the GNU Java Compiler compiler # are suitably defined. These variables are subsequently used by _LT_CONFIG # to write the compiler configuration to 'libtool'. m4_defun([_LT_LANG_GCJ_CONFIG], [AC_REQUIRE([LT_PROG_GCJ])dnl AC_LANG_SAVE # Source file extension for Java test sources. ac_ext=java # Object file extension for compiled Java test sources. objext=o _LT_TAGVAR(objext, $1)=$objext # Code to be used in simple compile tests lt_simple_compile_test_code="class foo {}" # Code to be used in simple link tests lt_simple_link_test_code='public class conftest { public static void main(String[[]] argv) {}; }' # ltmain only uses $CC for tagged configurations so make sure $CC is set. _LT_TAG_COMPILER # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE # Allow CC to be a program name with arguments. lt_save_CC=$CC lt_save_CFLAGS=$CFLAGS lt_save_GCC=$GCC GCC=yes CC=${GCJ-"gcj"} CFLAGS=$GCJFLAGS compiler=$CC _LT_TAGVAR(compiler, $1)=$CC _LT_TAGVAR(LD, $1)=$LD _LT_CC_BASENAME([$compiler]) # GCJ did not exist at the time GCC didn't implicitly link libc in. _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds _LT_TAGVAR(reload_flag, $1)=$reload_flag _LT_TAGVAR(reload_cmds, $1)=$reload_cmds ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change ## the running order or otherwise move them around unless you know exactly ## what you are doing... if test -n "$compiler"; then _LT_COMPILER_NO_RTTI($1) _LT_COMPILER_PIC($1) _LT_COMPILER_C_O($1) _LT_COMPILER_FILE_LOCKS($1) _LT_LINKER_SHLIBS($1) _LT_LINKER_HARDCODE_LIBPATH($1) _LT_CONFIG($1) fi AC_LANG_RESTORE GCC=$lt_save_GCC CC=$lt_save_CC CFLAGS=$lt_save_CFLAGS ])# _LT_LANG_GCJ_CONFIG # _LT_LANG_GO_CONFIG([TAG]) # -------------------------- # Ensure that the configuration variables for the GNU Go compiler # are suitably defined. These variables are subsequently used by _LT_CONFIG # to write the compiler configuration to 'libtool'. m4_defun([_LT_LANG_GO_CONFIG], [AC_REQUIRE([LT_PROG_GO])dnl AC_LANG_SAVE # Source file extension for Go test sources. ac_ext=go # Object file extension for compiled Go test sources. objext=o _LT_TAGVAR(objext, $1)=$objext # Code to be used in simple compile tests lt_simple_compile_test_code="package main; func main() { }" # Code to be used in simple link tests lt_simple_link_test_code='package main; func main() { }' # ltmain only uses $CC for tagged configurations so make sure $CC is set. _LT_TAG_COMPILER # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE # Allow CC to be a program name with arguments. lt_save_CC=$CC lt_save_CFLAGS=$CFLAGS lt_save_GCC=$GCC GCC=yes CC=${GOC-"gccgo"} CFLAGS=$GOFLAGS compiler=$CC _LT_TAGVAR(compiler, $1)=$CC _LT_TAGVAR(LD, $1)=$LD _LT_CC_BASENAME([$compiler]) # Go did not exist at the time GCC didn't implicitly link libc in. _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds _LT_TAGVAR(reload_flag, $1)=$reload_flag _LT_TAGVAR(reload_cmds, $1)=$reload_cmds ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change ## the running order or otherwise move them around unless you know exactly ## what you are doing... if test -n "$compiler"; then _LT_COMPILER_NO_RTTI($1) _LT_COMPILER_PIC($1) _LT_COMPILER_C_O($1) _LT_COMPILER_FILE_LOCKS($1) _LT_LINKER_SHLIBS($1) _LT_LINKER_HARDCODE_LIBPATH($1) _LT_CONFIG($1) fi AC_LANG_RESTORE GCC=$lt_save_GCC CC=$lt_save_CC CFLAGS=$lt_save_CFLAGS ])# _LT_LANG_GO_CONFIG # _LT_LANG_RC_CONFIG([TAG]) # ------------------------- # Ensure that the configuration variables for the Windows resource compiler # are suitably defined. These variables are subsequently used by _LT_CONFIG # to write the compiler configuration to 'libtool'. m4_defun([_LT_LANG_RC_CONFIG], [AC_REQUIRE([LT_PROG_RC])dnl AC_LANG_SAVE # Source file extension for RC test sources. ac_ext=rc # Object file extension for compiled RC test sources. objext=o _LT_TAGVAR(objext, $1)=$objext # Code to be used in simple compile tests lt_simple_compile_test_code='sample MENU { MENUITEM "&Soup", 100, CHECKED }' # Code to be used in simple link tests lt_simple_link_test_code=$lt_simple_compile_test_code # ltmain only uses $CC for tagged configurations so make sure $CC is set. _LT_TAG_COMPILER # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE # Allow CC to be a program name with arguments. lt_save_CC=$CC lt_save_CFLAGS=$CFLAGS lt_save_GCC=$GCC GCC= CC=${RC-"windres"} CFLAGS= compiler=$CC _LT_TAGVAR(compiler, $1)=$CC _LT_CC_BASENAME([$compiler]) _LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes if test -n "$compiler"; then : _LT_CONFIG($1) fi GCC=$lt_save_GCC AC_LANG_RESTORE CC=$lt_save_CC CFLAGS=$lt_save_CFLAGS ])# _LT_LANG_RC_CONFIG # LT_PROG_GCJ # ----------- AC_DEFUN([LT_PROG_GCJ], [m4_ifdef([AC_PROG_GCJ], [AC_PROG_GCJ], [m4_ifdef([A][M_PROG_GCJ], [A][M_PROG_GCJ], [AC_CHECK_TOOL(GCJ, gcj,) test set = "${GCJFLAGS+set}" || GCJFLAGS="-g -O2" AC_SUBST(GCJFLAGS)])])[]dnl ]) # Old name: AU_ALIAS([LT_AC_PROG_GCJ], [LT_PROG_GCJ]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([LT_AC_PROG_GCJ], []) # LT_PROG_GO # ---------- AC_DEFUN([LT_PROG_GO], [AC_CHECK_TOOL(GOC, gccgo,) ]) # LT_PROG_RC # ---------- AC_DEFUN([LT_PROG_RC], [AC_CHECK_TOOL(RC, windres,) ]) # Old name: AU_ALIAS([LT_AC_PROG_RC], [LT_PROG_RC]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([LT_AC_PROG_RC], []) # _LT_DECL_EGREP # -------------- # If we don't have a new enough Autoconf to choose the best grep # available, choose the one first in the user's PATH. m4_defun([_LT_DECL_EGREP], [AC_REQUIRE([AC_PROG_EGREP])dnl AC_REQUIRE([AC_PROG_FGREP])dnl test -z "$GREP" && GREP=grep _LT_DECL([], [GREP], [1], [A grep program that handles long lines]) _LT_DECL([], [EGREP], [1], [An ERE matcher]) _LT_DECL([], [FGREP], [1], [A literal string matcher]) dnl Non-bleeding-edge autoconf doesn't subst GREP, so do it here too AC_SUBST([GREP]) ]) # _LT_DECL_OBJDUMP # -------------- # If we don't have a new enough Autoconf to choose the best objdump # available, choose the one first in the user's PATH. m4_defun([_LT_DECL_OBJDUMP], [AC_CHECK_TOOL(OBJDUMP, objdump, false) test -z "$OBJDUMP" && OBJDUMP=objdump _LT_DECL([], [OBJDUMP], [1], [An object symbol dumper]) AC_SUBST([OBJDUMP]) ]) # _LT_DECL_DLLTOOL # ---------------- # Ensure DLLTOOL variable is set. m4_defun([_LT_DECL_DLLTOOL], [AC_CHECK_TOOL(DLLTOOL, dlltool, false) test -z "$DLLTOOL" && DLLTOOL=dlltool _LT_DECL([], [DLLTOOL], [1], [DLL creation program]) AC_SUBST([DLLTOOL]) ]) # _LT_DECL_SED # ------------ # Check for a fully-functional sed program, that truncates # as few characters as possible. Prefer GNU sed if found. m4_defun([_LT_DECL_SED], [AC_PROG_SED test -z "$SED" && SED=sed Xsed="$SED -e 1s/^X//" _LT_DECL([], [SED], [1], [A sed program that does not truncate output]) _LT_DECL([], [Xsed], ["\$SED -e 1s/^X//"], [Sed that helps us avoid accidentally triggering echo(1) options like -n]) ])# _LT_DECL_SED m4_ifndef([AC_PROG_SED], [ ############################################################ # NOTE: This macro has been submitted for inclusion into # # GNU Autoconf as AC_PROG_SED. When it is available in # # a released version of Autoconf we should remove this # # macro and use it instead. # ############################################################ m4_defun([AC_PROG_SED], [AC_MSG_CHECKING([for a sed that does not truncate output]) AC_CACHE_VAL(lt_cv_path_SED, [# Loop through the user's path and test for sed and gsed. # Then use that list of sed's as ones to test for truncation. as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for lt_ac_prog in sed gsed; do for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$lt_ac_prog$ac_exec_ext"; then lt_ac_sed_list="$lt_ac_sed_list $as_dir/$lt_ac_prog$ac_exec_ext" fi done done done IFS=$as_save_IFS lt_ac_max=0 lt_ac_count=0 # Add /usr/xpg4/bin/sed as it is typically found on Solaris # along with /bin/sed that truncates output. for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do test ! -f "$lt_ac_sed" && continue cat /dev/null > conftest.in lt_ac_count=0 echo $ECHO_N "0123456789$ECHO_C" >conftest.in # Check for GNU sed and select it if it is found. if "$lt_ac_sed" --version 2>&1 < /dev/null | grep 'GNU' > /dev/null; then lt_cv_path_SED=$lt_ac_sed break fi while true; do cat conftest.in conftest.in >conftest.tmp mv conftest.tmp conftest.in cp conftest.in conftest.nl echo >>conftest.nl $lt_ac_sed -e 's/a$//' < conftest.nl >conftest.out || break cmp -s conftest.out conftest.nl || break # 10000 chars as input seems more than enough test 10 -lt "$lt_ac_count" && break lt_ac_count=`expr $lt_ac_count + 1` if test "$lt_ac_count" -gt "$lt_ac_max"; then lt_ac_max=$lt_ac_count lt_cv_path_SED=$lt_ac_sed fi done done ]) SED=$lt_cv_path_SED AC_SUBST([SED]) AC_MSG_RESULT([$SED]) ])#AC_PROG_SED ])#m4_ifndef # Old name: AU_ALIAS([LT_AC_PROG_SED], [AC_PROG_SED]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([LT_AC_PROG_SED], []) # _LT_CHECK_SHELL_FEATURES # ------------------------ # Find out whether the shell is Bourne or XSI compatible, # or has some other useful features. m4_defun([_LT_CHECK_SHELL_FEATURES], [if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then lt_unset=unset else lt_unset=false fi _LT_DECL([], [lt_unset], [0], [whether the shell understands "unset"])dnl # test EBCDIC or ASCII case `echo X|tr X '\101'` in A) # ASCII based system # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr lt_SP2NL='tr \040 \012' lt_NL2SP='tr \015\012 \040\040' ;; *) # EBCDIC based system lt_SP2NL='tr \100 \n' lt_NL2SP='tr \r\n \100\100' ;; esac _LT_DECL([SP2NL], [lt_SP2NL], [1], [turn spaces into newlines])dnl _LT_DECL([NL2SP], [lt_NL2SP], [1], [turn newlines into spaces])dnl ])# _LT_CHECK_SHELL_FEATURES # _LT_PATH_CONVERSION_FUNCTIONS # ----------------------------- # Determine what file name conversion functions should be used by # func_to_host_file (and, implicitly, by func_to_host_path). These are needed # for certain cross-compile configurations and native mingw. m4_defun([_LT_PATH_CONVERSION_FUNCTIONS], [AC_REQUIRE([AC_CANONICAL_HOST])dnl AC_REQUIRE([AC_CANONICAL_BUILD])dnl AC_MSG_CHECKING([how to convert $build file names to $host format]) AC_CACHE_VAL(lt_cv_to_host_file_cmd, [case $host in *-*-mingw* ) case $build in *-*-mingw* ) # actually msys lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32 ;; *-*-cygwin* ) lt_cv_to_host_file_cmd=func_convert_file_cygwin_to_w32 ;; * ) # otherwise, assume *nix lt_cv_to_host_file_cmd=func_convert_file_nix_to_w32 ;; esac ;; *-*-cygwin* ) case $build in *-*-mingw* ) # actually msys lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin ;; *-*-cygwin* ) lt_cv_to_host_file_cmd=func_convert_file_noop ;; * ) # otherwise, assume *nix lt_cv_to_host_file_cmd=func_convert_file_nix_to_cygwin ;; esac ;; * ) # unhandled hosts (and "normal" native builds) lt_cv_to_host_file_cmd=func_convert_file_noop ;; esac ]) to_host_file_cmd=$lt_cv_to_host_file_cmd AC_MSG_RESULT([$lt_cv_to_host_file_cmd]) _LT_DECL([to_host_file_cmd], [lt_cv_to_host_file_cmd], [0], [convert $build file names to $host format])dnl AC_MSG_CHECKING([how to convert $build file names to toolchain format]) AC_CACHE_VAL(lt_cv_to_tool_file_cmd, [#assume ordinary cross tools, or native build. lt_cv_to_tool_file_cmd=func_convert_file_noop case $host in *-*-mingw* ) case $build in *-*-mingw* ) # actually msys lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32 ;; esac ;; esac ]) to_tool_file_cmd=$lt_cv_to_tool_file_cmd AC_MSG_RESULT([$lt_cv_to_tool_file_cmd]) _LT_DECL([to_tool_file_cmd], [lt_cv_to_tool_file_cmd], [0], [convert $build files to toolchain format])dnl ])# _LT_PATH_CONVERSION_FUNCTIONS giza-1.5.0/m4/ltoptions.m4000066400000000000000000000342621477367113400153100ustar00rootroot00000000000000# Helper functions for option handling. -*- Autoconf -*- # # Copyright (C) 2004-2005, 2007-2009, 2011-2015 Free Software # Foundation, Inc. # Written by Gary V. Vaughan, 2004 # # This file is free software; the Free Software Foundation gives # unlimited permission to copy and/or distribute it, with or without # modifications, as long as this notice is preserved. # serial 8 ltoptions.m4 # This is to help aclocal find these macros, as it can't see m4_define. AC_DEFUN([LTOPTIONS_VERSION], [m4_if([1])]) # _LT_MANGLE_OPTION(MACRO-NAME, OPTION-NAME) # ------------------------------------------ m4_define([_LT_MANGLE_OPTION], [[_LT_OPTION_]m4_bpatsubst($1__$2, [[^a-zA-Z0-9_]], [_])]) # _LT_SET_OPTION(MACRO-NAME, OPTION-NAME) # --------------------------------------- # Set option OPTION-NAME for macro MACRO-NAME, and if there is a # matching handler defined, dispatch to it. Other OPTION-NAMEs are # saved as a flag. m4_define([_LT_SET_OPTION], [m4_define(_LT_MANGLE_OPTION([$1], [$2]))dnl m4_ifdef(_LT_MANGLE_DEFUN([$1], [$2]), _LT_MANGLE_DEFUN([$1], [$2]), [m4_warning([Unknown $1 option '$2'])])[]dnl ]) # _LT_IF_OPTION(MACRO-NAME, OPTION-NAME, IF-SET, [IF-NOT-SET]) # ------------------------------------------------------------ # Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. m4_define([_LT_IF_OPTION], [m4_ifdef(_LT_MANGLE_OPTION([$1], [$2]), [$3], [$4])]) # _LT_UNLESS_OPTIONS(MACRO-NAME, OPTION-LIST, IF-NOT-SET) # ------------------------------------------------------- # Execute IF-NOT-SET unless all options in OPTION-LIST for MACRO-NAME # are set. m4_define([_LT_UNLESS_OPTIONS], [m4_foreach([_LT_Option], m4_split(m4_normalize([$2])), [m4_ifdef(_LT_MANGLE_OPTION([$1], _LT_Option), [m4_define([$0_found])])])[]dnl m4_ifdef([$0_found], [m4_undefine([$0_found])], [$3 ])[]dnl ]) # _LT_SET_OPTIONS(MACRO-NAME, OPTION-LIST) # ---------------------------------------- # OPTION-LIST is a space-separated list of Libtool options associated # with MACRO-NAME. If any OPTION has a matching handler declared with # LT_OPTION_DEFINE, dispatch to that macro; otherwise complain about # the unknown option and exit. m4_defun([_LT_SET_OPTIONS], [# Set options m4_foreach([_LT_Option], m4_split(m4_normalize([$2])), [_LT_SET_OPTION([$1], _LT_Option)]) m4_if([$1],[LT_INIT],[ dnl dnl Simply set some default values (i.e off) if boolean options were not dnl specified: _LT_UNLESS_OPTIONS([LT_INIT], [dlopen], [enable_dlopen=no ]) _LT_UNLESS_OPTIONS([LT_INIT], [win32-dll], [enable_win32_dll=no ]) dnl dnl If no reference was made to various pairs of opposing options, then dnl we run the default mode handler for the pair. For example, if neither dnl 'shared' nor 'disable-shared' was passed, we enable building of shared dnl archives by default: _LT_UNLESS_OPTIONS([LT_INIT], [shared disable-shared], [_LT_ENABLE_SHARED]) _LT_UNLESS_OPTIONS([LT_INIT], [static disable-static], [_LT_ENABLE_STATIC]) _LT_UNLESS_OPTIONS([LT_INIT], [pic-only no-pic], [_LT_WITH_PIC]) _LT_UNLESS_OPTIONS([LT_INIT], [fast-install disable-fast-install], [_LT_ENABLE_FAST_INSTALL]) _LT_UNLESS_OPTIONS([LT_INIT], [aix-soname=aix aix-soname=both aix-soname=svr4], [_LT_WITH_AIX_SONAME([aix])]) ]) ])# _LT_SET_OPTIONS ## --------------------------------- ## ## Macros to handle LT_INIT options. ## ## --------------------------------- ## # _LT_MANGLE_DEFUN(MACRO-NAME, OPTION-NAME) # ----------------------------------------- m4_define([_LT_MANGLE_DEFUN], [[_LT_OPTION_DEFUN_]m4_bpatsubst(m4_toupper([$1__$2]), [[^A-Z0-9_]], [_])]) # LT_OPTION_DEFINE(MACRO-NAME, OPTION-NAME, CODE) # ----------------------------------------------- m4_define([LT_OPTION_DEFINE], [m4_define(_LT_MANGLE_DEFUN([$1], [$2]), [$3])[]dnl ])# LT_OPTION_DEFINE # dlopen # ------ LT_OPTION_DEFINE([LT_INIT], [dlopen], [enable_dlopen=yes ]) AU_DEFUN([AC_LIBTOOL_DLOPEN], [_LT_SET_OPTION([LT_INIT], [dlopen]) AC_DIAGNOSE([obsolete], [$0: Remove this warning and the call to _LT_SET_OPTION when you put the 'dlopen' option into LT_INIT's first parameter.]) ]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_DLOPEN], []) # win32-dll # --------- # Declare package support for building win32 dll's. LT_OPTION_DEFINE([LT_INIT], [win32-dll], [enable_win32_dll=yes case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-cegcc*) AC_CHECK_TOOL(AS, as, false) AC_CHECK_TOOL(DLLTOOL, dlltool, false) AC_CHECK_TOOL(OBJDUMP, objdump, false) ;; esac test -z "$AS" && AS=as _LT_DECL([], [AS], [1], [Assembler program])dnl test -z "$DLLTOOL" && DLLTOOL=dlltool _LT_DECL([], [DLLTOOL], [1], [DLL creation program])dnl test -z "$OBJDUMP" && OBJDUMP=objdump _LT_DECL([], [OBJDUMP], [1], [Object dumper program])dnl ])# win32-dll AU_DEFUN([AC_LIBTOOL_WIN32_DLL], [AC_REQUIRE([AC_CANONICAL_HOST])dnl _LT_SET_OPTION([LT_INIT], [win32-dll]) AC_DIAGNOSE([obsolete], [$0: Remove this warning and the call to _LT_SET_OPTION when you put the 'win32-dll' option into LT_INIT's first parameter.]) ]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_WIN32_DLL], []) # _LT_ENABLE_SHARED([DEFAULT]) # ---------------------------- # implement the --enable-shared flag, and supports the 'shared' and # 'disable-shared' LT_INIT options. # DEFAULT is either 'yes' or 'no'. If omitted, it defaults to 'yes'. m4_define([_LT_ENABLE_SHARED], [m4_define([_LT_ENABLE_SHARED_DEFAULT], [m4_if($1, no, no, yes)])dnl AC_ARG_ENABLE([shared], [AS_HELP_STRING([--enable-shared@<:@=PKGS@:>@], [build shared libraries @<:@default=]_LT_ENABLE_SHARED_DEFAULT[@:>@])], [p=${PACKAGE-default} case $enableval in yes) enable_shared=yes ;; no) enable_shared=no ;; *) enable_shared=no # Look at the argument we got. We use all the common list separators. lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, for pkg in $enableval; do IFS=$lt_save_ifs if test "X$pkg" = "X$p"; then enable_shared=yes fi done IFS=$lt_save_ifs ;; esac], [enable_shared=]_LT_ENABLE_SHARED_DEFAULT) _LT_DECL([build_libtool_libs], [enable_shared], [0], [Whether or not to build shared libraries]) ])# _LT_ENABLE_SHARED LT_OPTION_DEFINE([LT_INIT], [shared], [_LT_ENABLE_SHARED([yes])]) LT_OPTION_DEFINE([LT_INIT], [disable-shared], [_LT_ENABLE_SHARED([no])]) # Old names: AC_DEFUN([AC_ENABLE_SHARED], [_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[shared]) ]) AC_DEFUN([AC_DISABLE_SHARED], [_LT_SET_OPTION([LT_INIT], [disable-shared]) ]) AU_DEFUN([AM_ENABLE_SHARED], [AC_ENABLE_SHARED($@)]) AU_DEFUN([AM_DISABLE_SHARED], [AC_DISABLE_SHARED($@)]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AM_ENABLE_SHARED], []) dnl AC_DEFUN([AM_DISABLE_SHARED], []) # _LT_ENABLE_STATIC([DEFAULT]) # ---------------------------- # implement the --enable-static flag, and support the 'static' and # 'disable-static' LT_INIT options. # DEFAULT is either 'yes' or 'no'. If omitted, it defaults to 'yes'. m4_define([_LT_ENABLE_STATIC], [m4_define([_LT_ENABLE_STATIC_DEFAULT], [m4_if($1, no, no, yes)])dnl AC_ARG_ENABLE([static], [AS_HELP_STRING([--enable-static@<:@=PKGS@:>@], [build static libraries @<:@default=]_LT_ENABLE_STATIC_DEFAULT[@:>@])], [p=${PACKAGE-default} case $enableval in yes) enable_static=yes ;; no) enable_static=no ;; *) enable_static=no # Look at the argument we got. We use all the common list separators. lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, for pkg in $enableval; do IFS=$lt_save_ifs if test "X$pkg" = "X$p"; then enable_static=yes fi done IFS=$lt_save_ifs ;; esac], [enable_static=]_LT_ENABLE_STATIC_DEFAULT) _LT_DECL([build_old_libs], [enable_static], [0], [Whether or not to build static libraries]) ])# _LT_ENABLE_STATIC LT_OPTION_DEFINE([LT_INIT], [static], [_LT_ENABLE_STATIC([yes])]) LT_OPTION_DEFINE([LT_INIT], [disable-static], [_LT_ENABLE_STATIC([no])]) # Old names: AC_DEFUN([AC_ENABLE_STATIC], [_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[static]) ]) AC_DEFUN([AC_DISABLE_STATIC], [_LT_SET_OPTION([LT_INIT], [disable-static]) ]) AU_DEFUN([AM_ENABLE_STATIC], [AC_ENABLE_STATIC($@)]) AU_DEFUN([AM_DISABLE_STATIC], [AC_DISABLE_STATIC($@)]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AM_ENABLE_STATIC], []) dnl AC_DEFUN([AM_DISABLE_STATIC], []) # _LT_ENABLE_FAST_INSTALL([DEFAULT]) # ---------------------------------- # implement the --enable-fast-install flag, and support the 'fast-install' # and 'disable-fast-install' LT_INIT options. # DEFAULT is either 'yes' or 'no'. If omitted, it defaults to 'yes'. m4_define([_LT_ENABLE_FAST_INSTALL], [m4_define([_LT_ENABLE_FAST_INSTALL_DEFAULT], [m4_if($1, no, no, yes)])dnl AC_ARG_ENABLE([fast-install], [AS_HELP_STRING([--enable-fast-install@<:@=PKGS@:>@], [optimize for fast installation @<:@default=]_LT_ENABLE_FAST_INSTALL_DEFAULT[@:>@])], [p=${PACKAGE-default} case $enableval in yes) enable_fast_install=yes ;; no) enable_fast_install=no ;; *) enable_fast_install=no # Look at the argument we got. We use all the common list separators. lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, for pkg in $enableval; do IFS=$lt_save_ifs if test "X$pkg" = "X$p"; then enable_fast_install=yes fi done IFS=$lt_save_ifs ;; esac], [enable_fast_install=]_LT_ENABLE_FAST_INSTALL_DEFAULT) _LT_DECL([fast_install], [enable_fast_install], [0], [Whether or not to optimize for fast installation])dnl ])# _LT_ENABLE_FAST_INSTALL LT_OPTION_DEFINE([LT_INIT], [fast-install], [_LT_ENABLE_FAST_INSTALL([yes])]) LT_OPTION_DEFINE([LT_INIT], [disable-fast-install], [_LT_ENABLE_FAST_INSTALL([no])]) # Old names: AU_DEFUN([AC_ENABLE_FAST_INSTALL], [_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[fast-install]) AC_DIAGNOSE([obsolete], [$0: Remove this warning and the call to _LT_SET_OPTION when you put the 'fast-install' option into LT_INIT's first parameter.]) ]) AU_DEFUN([AC_DISABLE_FAST_INSTALL], [_LT_SET_OPTION([LT_INIT], [disable-fast-install]) AC_DIAGNOSE([obsolete], [$0: Remove this warning and the call to _LT_SET_OPTION when you put the 'disable-fast-install' option into LT_INIT's first parameter.]) ]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_ENABLE_FAST_INSTALL], []) dnl AC_DEFUN([AM_DISABLE_FAST_INSTALL], []) # _LT_WITH_AIX_SONAME([DEFAULT]) # ---------------------------------- # implement the --with-aix-soname flag, and support the `aix-soname=aix' # and `aix-soname=both' and `aix-soname=svr4' LT_INIT options. DEFAULT # is either `aix', `both' or `svr4'. If omitted, it defaults to `aix'. m4_define([_LT_WITH_AIX_SONAME], [m4_define([_LT_WITH_AIX_SONAME_DEFAULT], [m4_if($1, svr4, svr4, m4_if($1, both, both, aix))])dnl shared_archive_member_spec= case $host,$enable_shared in power*-*-aix[[5-9]]*,yes) AC_MSG_CHECKING([which variant of shared library versioning to provide]) AC_ARG_WITH([aix-soname], [AS_HELP_STRING([--with-aix-soname=aix|svr4|both], [shared library versioning (aka "SONAME") variant to provide on AIX, @<:@default=]_LT_WITH_AIX_SONAME_DEFAULT[@:>@.])], [case $withval in aix|svr4|both) ;; *) AC_MSG_ERROR([Unknown argument to --with-aix-soname]) ;; esac lt_cv_with_aix_soname=$with_aix_soname], [AC_CACHE_VAL([lt_cv_with_aix_soname], [lt_cv_with_aix_soname=]_LT_WITH_AIX_SONAME_DEFAULT) with_aix_soname=$lt_cv_with_aix_soname]) AC_MSG_RESULT([$with_aix_soname]) if test aix != "$with_aix_soname"; then # For the AIX way of multilib, we name the shared archive member # based on the bitwidth used, traditionally 'shr.o' or 'shr_64.o', # and 'shr.imp' or 'shr_64.imp', respectively, for the Import File. # Even when GNU compilers ignore OBJECT_MODE but need '-maix64' flag, # the AIX toolchain works better with OBJECT_MODE set (default 32). if test 64 = "${OBJECT_MODE-32}"; then shared_archive_member_spec=shr_64 else shared_archive_member_spec=shr fi fi ;; *) with_aix_soname=aix ;; esac _LT_DECL([], [shared_archive_member_spec], [0], [Shared archive member basename, for filename based shared library versioning on AIX])dnl ])# _LT_WITH_AIX_SONAME LT_OPTION_DEFINE([LT_INIT], [aix-soname=aix], [_LT_WITH_AIX_SONAME([aix])]) LT_OPTION_DEFINE([LT_INIT], [aix-soname=both], [_LT_WITH_AIX_SONAME([both])]) LT_OPTION_DEFINE([LT_INIT], [aix-soname=svr4], [_LT_WITH_AIX_SONAME([svr4])]) # _LT_WITH_PIC([MODE]) # -------------------- # implement the --with-pic flag, and support the 'pic-only' and 'no-pic' # LT_INIT options. # MODE is either 'yes' or 'no'. If omitted, it defaults to 'both'. m4_define([_LT_WITH_PIC], [AC_ARG_WITH([pic], [AS_HELP_STRING([--with-pic@<:@=PKGS@:>@], [try to use only PIC/non-PIC objects @<:@default=use both@:>@])], [lt_p=${PACKAGE-default} case $withval in yes|no) pic_mode=$withval ;; *) pic_mode=default # Look at the argument we got. We use all the common list separators. lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, for lt_pkg in $withval; do IFS=$lt_save_ifs if test "X$lt_pkg" = "X$lt_p"; then pic_mode=yes fi done IFS=$lt_save_ifs ;; esac], [pic_mode=m4_default([$1], [default])]) _LT_DECL([], [pic_mode], [0], [What type of objects to build])dnl ])# _LT_WITH_PIC LT_OPTION_DEFINE([LT_INIT], [pic-only], [_LT_WITH_PIC([yes])]) LT_OPTION_DEFINE([LT_INIT], [no-pic], [_LT_WITH_PIC([no])]) # Old name: AU_DEFUN([AC_LIBTOOL_PICMODE], [_LT_SET_OPTION([LT_INIT], [pic-only]) AC_DIAGNOSE([obsolete], [$0: Remove this warning and the call to _LT_SET_OPTION when you put the 'pic-only' option into LT_INIT's first parameter.]) ]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_PICMODE], []) ## ----------------- ## ## LTDL_INIT Options ## ## ----------------- ## m4_define([_LTDL_MODE], []) LT_OPTION_DEFINE([LTDL_INIT], [nonrecursive], [m4_define([_LTDL_MODE], [nonrecursive])]) LT_OPTION_DEFINE([LTDL_INIT], [recursive], [m4_define([_LTDL_MODE], [recursive])]) LT_OPTION_DEFINE([LTDL_INIT], [subproject], [m4_define([_LTDL_MODE], [subproject])]) m4_define([_LTDL_TYPE], []) LT_OPTION_DEFINE([LTDL_INIT], [installable], [m4_define([_LTDL_TYPE], [installable])]) LT_OPTION_DEFINE([LTDL_INIT], [convenience], [m4_define([_LTDL_TYPE], [convenience])]) giza-1.5.0/m4/ltsugar.m4000066400000000000000000000104401477367113400147260ustar00rootroot00000000000000# ltsugar.m4 -- libtool m4 base layer. -*-Autoconf-*- # # Copyright (C) 2004-2005, 2007-2008, 2011-2015 Free Software # Foundation, Inc. # Written by Gary V. Vaughan, 2004 # # This file is free software; the Free Software Foundation gives # unlimited permission to copy and/or distribute it, with or without # modifications, as long as this notice is preserved. # serial 6 ltsugar.m4 # This is to help aclocal find these macros, as it can't see m4_define. AC_DEFUN([LTSUGAR_VERSION], [m4_if([0.1])]) # lt_join(SEP, ARG1, [ARG2...]) # ----------------------------- # Produce ARG1SEPARG2...SEPARGn, omitting [] arguments and their # associated separator. # Needed until we can rely on m4_join from Autoconf 2.62, since all earlier # versions in m4sugar had bugs. m4_define([lt_join], [m4_if([$#], [1], [], [$#], [2], [[$2]], [m4_if([$2], [], [], [[$2]_])$0([$1], m4_shift(m4_shift($@)))])]) m4_define([_lt_join], [m4_if([$#$2], [2], [], [m4_if([$2], [], [], [[$1$2]])$0([$1], m4_shift(m4_shift($@)))])]) # lt_car(LIST) # lt_cdr(LIST) # ------------ # Manipulate m4 lists. # These macros are necessary as long as will still need to support # Autoconf-2.59, which quotes differently. m4_define([lt_car], [[$1]]) m4_define([lt_cdr], [m4_if([$#], 0, [m4_fatal([$0: cannot be called without arguments])], [$#], 1, [], [m4_dquote(m4_shift($@))])]) m4_define([lt_unquote], $1) # lt_append(MACRO-NAME, STRING, [SEPARATOR]) # ------------------------------------------ # Redefine MACRO-NAME to hold its former content plus 'SEPARATOR''STRING'. # Note that neither SEPARATOR nor STRING are expanded; they are appended # to MACRO-NAME as is (leaving the expansion for when MACRO-NAME is invoked). # No SEPARATOR is output if MACRO-NAME was previously undefined (different # than defined and empty). # # This macro is needed until we can rely on Autoconf 2.62, since earlier # versions of m4sugar mistakenly expanded SEPARATOR but not STRING. m4_define([lt_append], [m4_define([$1], m4_ifdef([$1], [m4_defn([$1])[$3]])[$2])]) # lt_combine(SEP, PREFIX-LIST, INFIX, SUFFIX1, [SUFFIX2...]) # ---------------------------------------------------------- # Produce a SEP delimited list of all paired combinations of elements of # PREFIX-LIST with SUFFIX1 through SUFFIXn. Each element of the list # has the form PREFIXmINFIXSUFFIXn. # Needed until we can rely on m4_combine added in Autoconf 2.62. m4_define([lt_combine], [m4_if(m4_eval([$# > 3]), [1], [m4_pushdef([_Lt_sep], [m4_define([_Lt_sep], m4_defn([lt_car]))])]]dnl [[m4_foreach([_Lt_prefix], [$2], [m4_foreach([_Lt_suffix], ]m4_dquote(m4_dquote(m4_shift(m4_shift(m4_shift($@)))))[, [_Lt_sep([$1])[]m4_defn([_Lt_prefix])[$3]m4_defn([_Lt_suffix])])])])]) # lt_if_append_uniq(MACRO-NAME, VARNAME, [SEPARATOR], [UNIQ], [NOT-UNIQ]) # ----------------------------------------------------------------------- # Iff MACRO-NAME does not yet contain VARNAME, then append it (delimited # by SEPARATOR if supplied) and expand UNIQ, else NOT-UNIQ. m4_define([lt_if_append_uniq], [m4_ifdef([$1], [m4_if(m4_index([$3]m4_defn([$1])[$3], [$3$2$3]), [-1], [lt_append([$1], [$2], [$3])$4], [$5])], [lt_append([$1], [$2], [$3])$4])]) # lt_dict_add(DICT, KEY, VALUE) # ----------------------------- m4_define([lt_dict_add], [m4_define([$1($2)], [$3])]) # lt_dict_add_subkey(DICT, KEY, SUBKEY, VALUE) # -------------------------------------------- m4_define([lt_dict_add_subkey], [m4_define([$1($2:$3)], [$4])]) # lt_dict_fetch(DICT, KEY, [SUBKEY]) # ---------------------------------- m4_define([lt_dict_fetch], [m4_ifval([$3], m4_ifdef([$1($2:$3)], [m4_defn([$1($2:$3)])]), m4_ifdef([$1($2)], [m4_defn([$1($2)])]))]) # lt_if_dict_fetch(DICT, KEY, [SUBKEY], VALUE, IF-TRUE, [IF-FALSE]) # ----------------------------------------------------------------- m4_define([lt_if_dict_fetch], [m4_if(lt_dict_fetch([$1], [$2], [$3]), [$4], [$5], [$6])]) # lt_dict_filter(DICT, [SUBKEY], VALUE, [SEPARATOR], KEY, [...]) # -------------------------------------------------------------- m4_define([lt_dict_filter], [m4_if([$5], [], [], [lt_join(m4_quote(m4_default([$4], [[, ]])), lt_unquote(m4_split(m4_normalize(m4_foreach(_Lt_key, lt_car([m4_shiftn(4, $@)]), [lt_if_dict_fetch([$1], _Lt_key, [$2], [$3], [_Lt_key ])])))))])[]dnl ]) giza-1.5.0/m4/ltversion.m4000066400000000000000000000012731477367113400152760ustar00rootroot00000000000000# ltversion.m4 -- version numbers -*- Autoconf -*- # # Copyright (C) 2004, 2011-2015 Free Software Foundation, Inc. # Written by Scott James Remnant, 2004 # # This file is free software; the Free Software Foundation gives # unlimited permission to copy and/or distribute it, with or without # modifications, as long as this notice is preserved. # @configure_input@ # serial 4179 ltversion.m4 # This file is part of GNU Libtool m4_define([LT_PACKAGE_VERSION], [2.4.6]) m4_define([LT_PACKAGE_REVISION], [2.4.6]) AC_DEFUN([LTVERSION_VERSION], [macro_version='2.4.6' macro_revision='2.4.6' _LT_DECL(, macro_version, 0, [Which release of libtool.m4 was used?]) _LT_DECL(, macro_revision, 0) ]) giza-1.5.0/m4/lt~obsolete.m4000066400000000000000000000137741477367113400156340ustar00rootroot00000000000000# lt~obsolete.m4 -- aclocal satisfying obsolete definitions. -*-Autoconf-*- # # Copyright (C) 2004-2005, 2007, 2009, 2011-2015 Free Software # Foundation, Inc. # Written by Scott James Remnant, 2004. # # This file is free software; the Free Software Foundation gives # unlimited permission to copy and/or distribute it, with or without # modifications, as long as this notice is preserved. # serial 5 lt~obsolete.m4 # These exist entirely to fool aclocal when bootstrapping libtool. # # In the past libtool.m4 has provided macros via AC_DEFUN (or AU_DEFUN), # which have later been changed to m4_define as they aren't part of the # exported API, or moved to Autoconf or Automake where they belong. # # The trouble is, aclocal is a bit thick. It'll see the old AC_DEFUN # in /usr/share/aclocal/libtool.m4 and remember it, then when it sees us # using a macro with the same name in our local m4/libtool.m4 it'll # pull the old libtool.m4 in (it doesn't see our shiny new m4_define # and doesn't know about Autoconf macros at all.) # # So we provide this file, which has a silly filename so it's always # included after everything else. This provides aclocal with the # AC_DEFUNs it wants, but when m4 processes it, it doesn't do anything # because those macros already exist, or will be overwritten later. # We use AC_DEFUN over AU_DEFUN for compatibility with aclocal-1.6. # # Anytime we withdraw an AC_DEFUN or AU_DEFUN, remember to add it here. # Yes, that means every name once taken will need to remain here until # we give up compatibility with versions before 1.7, at which point # we need to keep only those names which we still refer to. # This is to help aclocal find these macros, as it can't see m4_define. AC_DEFUN([LTOBSOLETE_VERSION], [m4_if([1])]) m4_ifndef([AC_LIBTOOL_LINKER_OPTION], [AC_DEFUN([AC_LIBTOOL_LINKER_OPTION])]) m4_ifndef([AC_PROG_EGREP], [AC_DEFUN([AC_PROG_EGREP])]) m4_ifndef([_LT_AC_PROG_ECHO_BACKSLASH], [AC_DEFUN([_LT_AC_PROG_ECHO_BACKSLASH])]) m4_ifndef([_LT_AC_SHELL_INIT], [AC_DEFUN([_LT_AC_SHELL_INIT])]) m4_ifndef([_LT_AC_SYS_LIBPATH_AIX], [AC_DEFUN([_LT_AC_SYS_LIBPATH_AIX])]) m4_ifndef([_LT_PROG_LTMAIN], [AC_DEFUN([_LT_PROG_LTMAIN])]) m4_ifndef([_LT_AC_TAGVAR], [AC_DEFUN([_LT_AC_TAGVAR])]) m4_ifndef([AC_LTDL_ENABLE_INSTALL], [AC_DEFUN([AC_LTDL_ENABLE_INSTALL])]) m4_ifndef([AC_LTDL_PREOPEN], [AC_DEFUN([AC_LTDL_PREOPEN])]) m4_ifndef([_LT_AC_SYS_COMPILER], [AC_DEFUN([_LT_AC_SYS_COMPILER])]) m4_ifndef([_LT_AC_LOCK], [AC_DEFUN([_LT_AC_LOCK])]) m4_ifndef([AC_LIBTOOL_SYS_OLD_ARCHIVE], [AC_DEFUN([AC_LIBTOOL_SYS_OLD_ARCHIVE])]) m4_ifndef([_LT_AC_TRY_DLOPEN_SELF], [AC_DEFUN([_LT_AC_TRY_DLOPEN_SELF])]) m4_ifndef([AC_LIBTOOL_PROG_CC_C_O], [AC_DEFUN([AC_LIBTOOL_PROG_CC_C_O])]) m4_ifndef([AC_LIBTOOL_SYS_HARD_LINK_LOCKS], [AC_DEFUN([AC_LIBTOOL_SYS_HARD_LINK_LOCKS])]) m4_ifndef([AC_LIBTOOL_OBJDIR], [AC_DEFUN([AC_LIBTOOL_OBJDIR])]) m4_ifndef([AC_LTDL_OBJDIR], [AC_DEFUN([AC_LTDL_OBJDIR])]) m4_ifndef([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH], [AC_DEFUN([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH])]) m4_ifndef([AC_LIBTOOL_SYS_LIB_STRIP], [AC_DEFUN([AC_LIBTOOL_SYS_LIB_STRIP])]) m4_ifndef([AC_PATH_MAGIC], [AC_DEFUN([AC_PATH_MAGIC])]) m4_ifndef([AC_PROG_LD_GNU], [AC_DEFUN([AC_PROG_LD_GNU])]) m4_ifndef([AC_PROG_LD_RELOAD_FLAG], [AC_DEFUN([AC_PROG_LD_RELOAD_FLAG])]) m4_ifndef([AC_DEPLIBS_CHECK_METHOD], [AC_DEFUN([AC_DEPLIBS_CHECK_METHOD])]) m4_ifndef([AC_LIBTOOL_PROG_COMPILER_NO_RTTI], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_NO_RTTI])]) m4_ifndef([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE], [AC_DEFUN([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE])]) m4_ifndef([AC_LIBTOOL_PROG_COMPILER_PIC], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_PIC])]) m4_ifndef([AC_LIBTOOL_PROG_LD_SHLIBS], [AC_DEFUN([AC_LIBTOOL_PROG_LD_SHLIBS])]) m4_ifndef([AC_LIBTOOL_POSTDEP_PREDEP], [AC_DEFUN([AC_LIBTOOL_POSTDEP_PREDEP])]) m4_ifndef([LT_AC_PROG_EGREP], [AC_DEFUN([LT_AC_PROG_EGREP])]) m4_ifndef([LT_AC_PROG_SED], [AC_DEFUN([LT_AC_PROG_SED])]) m4_ifndef([_LT_CC_BASENAME], [AC_DEFUN([_LT_CC_BASENAME])]) m4_ifndef([_LT_COMPILER_BOILERPLATE], [AC_DEFUN([_LT_COMPILER_BOILERPLATE])]) m4_ifndef([_LT_LINKER_BOILERPLATE], [AC_DEFUN([_LT_LINKER_BOILERPLATE])]) m4_ifndef([_AC_PROG_LIBTOOL], [AC_DEFUN([_AC_PROG_LIBTOOL])]) m4_ifndef([AC_LIBTOOL_SETUP], [AC_DEFUN([AC_LIBTOOL_SETUP])]) m4_ifndef([_LT_AC_CHECK_DLFCN], [AC_DEFUN([_LT_AC_CHECK_DLFCN])]) m4_ifndef([AC_LIBTOOL_SYS_DYNAMIC_LINKER], [AC_DEFUN([AC_LIBTOOL_SYS_DYNAMIC_LINKER])]) m4_ifndef([_LT_AC_TAGCONFIG], [AC_DEFUN([_LT_AC_TAGCONFIG])]) m4_ifndef([AC_DISABLE_FAST_INSTALL], [AC_DEFUN([AC_DISABLE_FAST_INSTALL])]) m4_ifndef([_LT_AC_LANG_CXX], [AC_DEFUN([_LT_AC_LANG_CXX])]) m4_ifndef([_LT_AC_LANG_F77], [AC_DEFUN([_LT_AC_LANG_F77])]) m4_ifndef([_LT_AC_LANG_GCJ], [AC_DEFUN([_LT_AC_LANG_GCJ])]) m4_ifndef([AC_LIBTOOL_LANG_C_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_C_CONFIG])]) m4_ifndef([_LT_AC_LANG_C_CONFIG], [AC_DEFUN([_LT_AC_LANG_C_CONFIG])]) m4_ifndef([AC_LIBTOOL_LANG_CXX_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_CXX_CONFIG])]) m4_ifndef([_LT_AC_LANG_CXX_CONFIG], [AC_DEFUN([_LT_AC_LANG_CXX_CONFIG])]) m4_ifndef([AC_LIBTOOL_LANG_F77_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_F77_CONFIG])]) m4_ifndef([_LT_AC_LANG_F77_CONFIG], [AC_DEFUN([_LT_AC_LANG_F77_CONFIG])]) m4_ifndef([AC_LIBTOOL_LANG_GCJ_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_GCJ_CONFIG])]) m4_ifndef([_LT_AC_LANG_GCJ_CONFIG], [AC_DEFUN([_LT_AC_LANG_GCJ_CONFIG])]) m4_ifndef([AC_LIBTOOL_LANG_RC_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_RC_CONFIG])]) m4_ifndef([_LT_AC_LANG_RC_CONFIG], [AC_DEFUN([_LT_AC_LANG_RC_CONFIG])]) m4_ifndef([AC_LIBTOOL_CONFIG], [AC_DEFUN([AC_LIBTOOL_CONFIG])]) m4_ifndef([_LT_AC_FILE_LTDLL_C], [AC_DEFUN([_LT_AC_FILE_LTDLL_C])]) m4_ifndef([_LT_REQUIRED_DARWIN_CHECKS], [AC_DEFUN([_LT_REQUIRED_DARWIN_CHECKS])]) m4_ifndef([_LT_AC_PROG_CXXCPP], [AC_DEFUN([_LT_AC_PROG_CXXCPP])]) m4_ifndef([_LT_PREPARE_SED_QUOTE_VARS], [AC_DEFUN([_LT_PREPARE_SED_QUOTE_VARS])]) m4_ifndef([_LT_PROG_ECHO_BACKSLASH], [AC_DEFUN([_LT_PROG_ECHO_BACKSLASH])]) m4_ifndef([_LT_PROG_F77], [AC_DEFUN([_LT_PROG_F77])]) m4_ifndef([_LT_PROG_FC], [AC_DEFUN([_LT_PROG_FC])]) m4_ifndef([_LT_PROG_CXX], [AC_DEFUN([_LT_PROG_CXX])]) giza-1.5.0/scripts/000077500000000000000000000000001477367113400141535ustar00rootroot00000000000000giza-1.5.0/scripts/api.pl000077500000000000000000000146311477367113400152710ustar00rootroot00000000000000#!/usr/bin/perl use IO::File; # Open up the output files $fh = new IO::File "> api.html"; # Lists for the index @IText = (); @ISettings = (); @IDrawing = (); @IDevices = (); @IInteractive = (); @Device = (); @Test = (); @Settings = (); @Drawing = (); @Interactive = (); # Subroutine for parsing individual comments sub processComment { my $fh; my @prototype; my $type = ''; my $name = ''; my $desciption = ''; my @seeAlso; my @lists; $desciption = ''; undef @lists; undef @seeAlso; undef @prototype; # Get all the info do { # Get the name and type if ($_[0] =~ m/.* (Interactive|Text|Drawing|Device|Settings):\s*(.*)$/) { ($type, $name) = ($1, $2); } # Get the desciption elsif ($_[0] =~ m/^.*Synopsis:\s*(.*)$/) { $description = $1; while ($_[1] =~ m/\s\*\s*(\S.*)$/) { $description = $description . ' ' . $1; shift; } } # Get the see also list elsif ($_[0] =~ m/.* See Also: (.*)$/) { @seeAlso = split (/,\s*/, $1); } # Get any lists elsif ($_[0] =~ m/\s*\*\s*(\S.*):/) { # the title my @tmp = (); push @tmp, $1; # the items while ($_[1] =~ m/\s*\*\s*\-(.*)\s*:\-\s*(\S.*)$/) { push @tmp, $1; push @tmp, $2; shift; # Items over more than one line. while ($_[1] !~ m/^\s*\*\s*\-.*\s*:\-\s*\S.*$/ && $_[1] !~ m/^\s*\*\s*$/ && $_[1] =~ m/^\s*\*/) { $_[1] =~ m/^\s*\*\s*(\S.*)$/; push (@tmp, pop (@tmp) . ' ' . $1); shift; } } push @lists, \@tmp; } # Fuction prototype elsif ($_[0] !~ m/^ \*/) { # Type chomp ($_[0]); push @prototype, $_[0]; shift; chomp ($_[0]); # Name push @prototype, substr ($_[0], 0, index ($_[0], ' ')); # Arguments push @prototype, substr ($_[0], index ($_[0], ' ')); while (shift) { $_[0] =~ m/^\s*(.*)$/; push @prototype, pop (@prototype) . " $1"; } } } while (shift); # Add to the index and description lists if ($type eq "Text") { $IFile = \@IText; $File = \@Text; } elsif ($type eq "Drawing") { $IFile = \@IDrawing; $File = \@Drawing; } elsif ($type eq "Device") { $IFile = \@IDevice; $File = \@Device; } elsif ($type eq "Settings") { $IFile = \@ISettings; $File = \@Settings; } elsif ($type eq "Interactive") { $IFile = \@IInteractive; $File = \@Interactive; } else { return; } push @$IFile, $name; # Name push @$File, "

    $name

    \n"; # Prototype push @$File, "\n
    " . shift (@prototype) . "" . shift (@prototype) . "" . shift (@prototype) . ";
    "; # Description push @$File, "

    $description

    \n"; # Lists foreach $item (@lists) { # Name push @$File, "

    " . shift (@$item) . ":

    \n"; # Table preamble push @$File, ""; # Table contents while (@$item) { push @$File, "\n"; push @$File, "\n"; } # Table postamble push @$File, "
    " . shift (@$item) . ":" . shift (@$item) . "
    "; } # See Also if (@seeAlso) { push @$File, "

    See Also:

    "; foreach (@seeAlso) { push @$File, "$_ "; } push @$File, "

    "; } } # prossess each comment my @currentComment = (); my $inComment = 0; while (<>) { # Begin a comment if ($_ =~ m/\/\*\*/ && $inComment == 0) { $inComment = 1; } # End comment elsif ($_ =~ m/\*\// && $inComment == 1) { # Get the prototype as well my $nextL = <>; while ($nextL && $nextL !~ m/{/) { push @currentComment, $nextL; $nextL = <>; } &processComment (@currentComment); @currentComment = (); $inComment = 0; } # Add to comment elsif ($inComment == 1) { push (@currentComment, $_); } } # Write the output file # First the formating junk $fh->print ( " giza - API Reference Manual
    \"giza\"

    API Reference Manual

    Here we provided a function by function reference for the low-level C API to giza.
    The giza API is stable. From version 1.0 we aim to keep backwards compatibility, although new functionality may be added

    Index

    "); # Then the index $fh->print ("
    Device Management
    \n"); foreach (@IDevice) { $fh->print ("
    $_
    \n"); } $fh->print ("
    Drawing
    \n"); foreach (@IDrawing) { $fh->print ("
    $_
    \n"); } $fh->print ("
    Text
    \n"); foreach (@IText) { $fh->print ("
    $_
    \n"); } $fh->print ("
    Settings
    \n"); foreach (@ISettings) { $fh->print ("
    $_
    \n"); } $fh->print ("
    Interactive
    \n"); foreach (@IInteractive) { $fh->print ("
    $_
    \n"); } $fh->print ("
    "); # Write descriptions for Device Management $fh->print ("

    Device Managment

    \n"); foreach (@Device) { $fh->print ("$_"); } # Write descriptions for Drawing $fh->print ("

    Drawing

    \n"); foreach (@Drawing) { $fh->print ("$_"); } # Write descriptions for Text $fh->print ("

    Text

    \n"); foreach (@Text) { $fh->print ("$_"); } # Write descriptions for Settings $fh->print ("

    Settings

    \n"); foreach (@Settings) { $fh->print ("$_"); } # Write descriptions for Interactive $fh->print ("

    Interactive

    \n"); foreach (@Interactive) { $fh->print ("$_"); } # Close the files $fh->flush (); $fh->close (); giza-1.5.0/scripts/cpgplot_status.pl000077500000000000000000000023471477367113400175740ustar00rootroot00000000000000#!/usr/bin/perl # # This script parses the giza-pgplot.f90 file # to produce html documentation of the current # status of the PGPLOT interface to giza # (that can be built as libpgplot) # open(FILE, "<../src/giza-cpgplot.c"); my $module; my $desc; my $link; my $status; my $ntot = 0; my $ndone = 0; my $npar = 0; print STDOUT "\n"; while () { if ( m/(^.*cpg)/) { ($module,$desc) = m/^.*(cpg.*) -- (.*)/; ($link) = m/^.*c(pg.*) --/; print STDOUT ""; } elsif ( m/(^.*Status:)/) { ($status) = m/^.*Status: (.*)/; $_ = $status; my $color = "#FF6600"; # default is orange if ( m/.*(NOT).*/ ) { $color = "#FF0000"; # red } elsif ( m/^IMPLEMENTED$/ ) { $color = "#009900"; # green $ndone = $ndone + 1; $npar = $npar + 1; } else { $npar = $npar + 1; } $ntot = $ntot + 1; print STDOUT "\n"; } } print STDOUT "
    $module$status$desc
    \n"; print STDOUT "

    $npar of $ntot routines implemented, $ndone of $ntot fully implemented.

    \n"; giza-1.5.0/scripts/generate-docs.sh000077500000000000000000000011641477367113400172340ustar00rootroot00000000000000#!/bin/bash destdir=../docs/documentation ./pgplot_status.pl > $destdir/pgplot-status.html; ./cpgplot_status.pl > $destdir/cpgplot-status.html; ./api.pl ../src/*.c; mv api.html $destdir; cd $destdir; cat pgplot-header.html > pgplot.html cat >> pgplot.html << EOF

    Current status (libpgplot):

    EOF cat pgplot-status.html >> pgplot.html cat >> pgplot.html << EOF
    EOF cat >> pgplot.html << EOF

    Current status (libcpgplot):

    EOF cat cpgplot-status.html >> pgplot.html cat >> pgplot.html << EOF
    EOF giza-1.5.0/scripts/get-fortran-params.pl000077500000000000000000000006751477367113400202340ustar00rootroot00000000000000#!/usr/bin/perl # # @(#) Perl script to convert defs in giza-shared.h to Fortran parameters # @(#) Written by Daniel Price, daniel.price@monash.edu # my $var; my $val; open(FILE,"<../src/giza-shared.h"); while() { if (m/define\s\S*\s*([0-9]*)/ && !m/GIZA_LEFT_CLICK/) { ($var, $val) = m/define\s(\S*)\s*([0-9]*)/; my $lvar = lc($var); #sprintf("%-27s",lc($var)); print " integer, parameter, public :: $lvar = $var\n"; } } giza-1.5.0/scripts/get-source-files.pl000077500000000000000000000004721477367113400176730ustar00rootroot00000000000000#!/usr/bin/perl # # @(#) Perl script to get current source files for Makefile # # @(#) (c) Daniel Price, Jan 2011, daniel.price@monash.edu # use Text::Wrap; $Text::Wrap::columns=80; $Text::Wrap::separator=" \\\n"; #print wrap('PHEADERS= ',' ',@ARGV); print wrap('SOURCE= ',' ',@ARGV); print "\n"; giza-1.5.0/scripts/pgplot_status.pl000077500000000000000000000023101477367113400174170ustar00rootroot00000000000000#!/usr/bin/perl # # This script parses the giza-pgplot.f90 file # to produce html documentation of the current # status of the PGPLOT interface to giza # (that can be built as libpgplot) # open(FILE, "<../src/giza-pgplot.f90"); my $module; my $desc; my $status; my $ntot = 0; my $ndone = 0; my $npar = 0; print STDOUT "\n"; while () { if ( m/(^.*Module:)/) { ($module,$desc) = m/^.*Module: (.*) -- (.*)/; print STDOUT ""; } elsif ( m/(^.*Status:)/) { ($status) = m/^.*Status: (.*)/; $_ = $status; my $color = "#FF6600"; # default is orange if ( m/.*(NOT).*/ ) { $color = "#FF0000"; # red } elsif ( m/^IMPLEMENTED$/ ) { $color = "#009900"; # green $ndone = $ndone + 1; $npar = $npar + 1; } else { $npar = $npar + 1; } $ntot = $ntot + 1; print STDOUT "\n"; } } print STDOUT "
    $module$status$desc
    \n"; print STDOUT "

    $npar of $ntot routines implemented, $ndone of $ntot fully implemented.

    \n"; giza-1.5.0/src/000077500000000000000000000000001477367113400132535ustar00rootroot00000000000000giza-1.5.0/src/Makefile.am000066400000000000000000000060151477367113400153110ustar00rootroot00000000000000.NOTPARALLEL: CLEANFILES = *.mod *.pc lib_LTLIBRARIES = libgiza.la libcpgplot.la # only compile libpglot.a and giza.mod if we have a working Fortran compiler if HAVE_FC lib_LTLIBRARIES += libpgplot.la fmoddir = $(libdir)/$(FC)/modules fmod_DATA = giza.mod endif libgiza_la_SOURCES = giza-annotate.c giza-arrow-style.c giza-arrow.c giza-axis.c \ giza-band-style.c giza-band.c giza-box-time.c giza-box.c \ giza-buffering.c giza-character-size.c giza-circle.c \ giza-clipping.c giza-colour-bar.c giza-colour-index.c \ giza-colour-palette.c giza-colour-table.c giza-contour.c \ giza-cursor-routines.c giza-device-has-cursor.c \ giza-draw-background.c giza-draw.c giza-driver-eps.c \ giza-driver-null.c giza-driver-pdf.c giza-driver-png.c \ giza-driver-mp4.c giza-driver-ps.c giza-driver-svg.c giza-driver-xw.c \ giza-drivers.c giza-environment.c giza-error-bars.c giza-fill.c \ giza-format-number.c giza-function-t.c giza-function-x.c \ giza-function-y.c giza-get-key-press.c giza-get-surface-size.c \ giza-io.c giza-histogram.c giza-label.c giza-line-cap.c \ giza-line-style.c giza-line-width.c giza-line.c giza-move.c \ giza-paper.c giza-points.c giza-polygon.c giza-print-id.c \ giza-prompting.c giza-ptext.c giza-qtext.c giza-rectangle.c \ giza-render.c giza-save.c giza-set-font.c giza-stroke.c \ giza-subpanel.c giza-text-background.c giza-text.c giza-tick.c \ giza-transforms.c giza-vector.c giza-viewport.c giza-version.c \ giza-warnings.c giza-window.c giza.c lex.yy.c giza-itf.c\ giza-arrow-style-private.h giza-driver-svg-private.h giza-stroke-private.h \ giza-band-private.h giza-driver-xw-private.h giza-subpanel-private.h \ giza-character-size-private.h giza-drivers-private.h giza-text-background-private.h \ giza-colour-private.h giza-fill-private.h giza-text-private.h \ giza-cursor-private.h giza-io-private.h giza-tick-private.h giza-transforms-private.h \ giza-driver-eps-private.h giza-line-style-private.h giza-version.h \ giza-driver-null-private.h giza-private.h giza-viewport-private.h \ giza-driver-pdf-private.h giza-render-private.h giza-warnings-private.h \ giza-driver-png-private.h giza-driver-mp4-private.h giza-set-font-private.h giza-window-private.h \ giza-driver-ps-private.h giza-shared.h giza.h giza-itf.h libgiza_la_CPPFLAGS = $(X11_CFLAGS) $(CAIRO_CFLAGS) $(FT_CFLAGS) $(FC_CFLAGS) libcpgplot_la_CPPFLAGS = $(libgiza_la_CPPFLAGS) libgiza_la_LDFLAGS = -version-info $(LT_CURRENT):$(LT_REVISION):$(LT_AGE) \ -no-undefined $(X11_LIBS) $(CAIRO_LIBS) $(FT_LIBS) $(FC_LIBS) libcpgplot_la_SOURCES = giza-cpgplot.c libcpgplot_la_LDFLAGS = $(libgiza_la_LDFLAGS) -lgiza libpgplot_la_SOURCES = giza-fortran.F90 giza-pgplot.f90 libpgplot_la_LDFLAGS = $(libcpgplot_la_LDFLAGS) include_HEADERS = cpgplot.h giza.h giza-shared.h giza-version.h giza-fortran.F90 pkgconfigdir = $(libdir)/pkgconfig pkgconfig_DATA = cpgplot.pc giza.pc pgplot.pc giza-1.5.0/src/Makefile.in000066400000000000000000004022241477367113400153240ustar00rootroot00000000000000# Makefile.in generated by automake 1.17 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2024 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) am__rm_f = rm -f $(am__rm_f_notfound) am__rm_rf = rm -rf $(am__rm_f_notfound) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ # only compile libpglot.a and giza.mod if we have a working Fortran compiler @HAVE_FC_TRUE@am__append_1 = libpgplot.la subdir = src ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(include_HEADERS) \ $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = cpgplot.pc giza.pc pgplot.pc giza-version.h CONFIG_CLEAN_VPATH_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && echo $$files | $(am__xargs_n) 40 $(am__rm_f); }; \ } am__installdirs = "$(DESTDIR)$(libdir)" "$(DESTDIR)$(fmoddir)" \ "$(DESTDIR)$(pkgconfigdir)" "$(DESTDIR)$(includedir)" LTLIBRARIES = $(lib_LTLIBRARIES) libcpgplot_la_LIBADD = am_libcpgplot_la_OBJECTS = libcpgplot_la-giza-cpgplot.lo libcpgplot_la_OBJECTS = $(am_libcpgplot_la_OBJECTS) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent am__v_lt_1 = libcpgplot_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(libcpgplot_la_LDFLAGS) $(LDFLAGS) -o $@ libgiza_la_LIBADD = am_libgiza_la_OBJECTS = libgiza_la-giza-annotate.lo \ libgiza_la-giza-arrow-style.lo libgiza_la-giza-arrow.lo \ libgiza_la-giza-axis.lo libgiza_la-giza-band-style.lo \ libgiza_la-giza-band.lo libgiza_la-giza-box-time.lo \ libgiza_la-giza-box.lo libgiza_la-giza-buffering.lo \ libgiza_la-giza-character-size.lo libgiza_la-giza-circle.lo \ libgiza_la-giza-clipping.lo libgiza_la-giza-colour-bar.lo \ libgiza_la-giza-colour-index.lo \ libgiza_la-giza-colour-palette.lo \ libgiza_la-giza-colour-table.lo libgiza_la-giza-contour.lo \ libgiza_la-giza-cursor-routines.lo \ libgiza_la-giza-device-has-cursor.lo \ libgiza_la-giza-draw-background.lo libgiza_la-giza-draw.lo \ libgiza_la-giza-driver-eps.lo libgiza_la-giza-driver-null.lo \ libgiza_la-giza-driver-pdf.lo libgiza_la-giza-driver-png.lo \ libgiza_la-giza-driver-mp4.lo libgiza_la-giza-driver-ps.lo \ libgiza_la-giza-driver-svg.lo libgiza_la-giza-driver-xw.lo \ libgiza_la-giza-drivers.lo libgiza_la-giza-environment.lo \ libgiza_la-giza-error-bars.lo libgiza_la-giza-fill.lo \ libgiza_la-giza-format-number.lo libgiza_la-giza-function-t.lo \ libgiza_la-giza-function-x.lo libgiza_la-giza-function-y.lo \ libgiza_la-giza-get-key-press.lo \ libgiza_la-giza-get-surface-size.lo libgiza_la-giza-io.lo \ libgiza_la-giza-histogram.lo libgiza_la-giza-label.lo \ libgiza_la-giza-line-cap.lo libgiza_la-giza-line-style.lo \ libgiza_la-giza-line-width.lo libgiza_la-giza-line.lo \ libgiza_la-giza-move.lo libgiza_la-giza-paper.lo \ libgiza_la-giza-points.lo libgiza_la-giza-polygon.lo \ libgiza_la-giza-print-id.lo libgiza_la-giza-prompting.lo \ libgiza_la-giza-ptext.lo libgiza_la-giza-qtext.lo \ libgiza_la-giza-rectangle.lo libgiza_la-giza-render.lo \ libgiza_la-giza-save.lo libgiza_la-giza-set-font.lo \ libgiza_la-giza-stroke.lo libgiza_la-giza-subpanel.lo \ libgiza_la-giza-text-background.lo libgiza_la-giza-text.lo \ libgiza_la-giza-tick.lo libgiza_la-giza-transforms.lo \ libgiza_la-giza-vector.lo libgiza_la-giza-viewport.lo \ libgiza_la-giza-version.lo libgiza_la-giza-warnings.lo \ libgiza_la-giza-window.lo libgiza_la-giza.lo \ libgiza_la-lex.yy.lo libgiza_la-giza-itf.lo libgiza_la_OBJECTS = $(am_libgiza_la_OBJECTS) libgiza_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(libgiza_la_LDFLAGS) $(LDFLAGS) -o $@ libpgplot_la_LIBADD = am_libpgplot_la_OBJECTS = giza-fortran.lo giza-pgplot.lo libpgplot_la_OBJECTS = $(am_libpgplot_la_OBJECTS) libpgplot_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=FC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(FCLD) $(AM_FCFLAGS) $(FCFLAGS) \ $(libpgplot_la_LDFLAGS) $(LDFLAGS) -o $@ @HAVE_FC_TRUE@am_libpgplot_la_rpath = -rpath $(libdir) AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/build/depcomp am__maybe_remake_depfiles = depfiles am__depfiles_remade = ./$(DEPDIR)/libcpgplot_la-giza-cpgplot.Plo \ ./$(DEPDIR)/libgiza_la-giza-annotate.Plo \ ./$(DEPDIR)/libgiza_la-giza-arrow-style.Plo \ ./$(DEPDIR)/libgiza_la-giza-arrow.Plo \ ./$(DEPDIR)/libgiza_la-giza-axis.Plo \ ./$(DEPDIR)/libgiza_la-giza-band-style.Plo \ ./$(DEPDIR)/libgiza_la-giza-band.Plo \ ./$(DEPDIR)/libgiza_la-giza-box-time.Plo \ ./$(DEPDIR)/libgiza_la-giza-box.Plo \ ./$(DEPDIR)/libgiza_la-giza-buffering.Plo \ ./$(DEPDIR)/libgiza_la-giza-character-size.Plo \ ./$(DEPDIR)/libgiza_la-giza-circle.Plo \ ./$(DEPDIR)/libgiza_la-giza-clipping.Plo \ ./$(DEPDIR)/libgiza_la-giza-colour-bar.Plo \ ./$(DEPDIR)/libgiza_la-giza-colour-index.Plo \ ./$(DEPDIR)/libgiza_la-giza-colour-palette.Plo \ ./$(DEPDIR)/libgiza_la-giza-colour-table.Plo \ ./$(DEPDIR)/libgiza_la-giza-contour.Plo \ ./$(DEPDIR)/libgiza_la-giza-cursor-routines.Plo \ ./$(DEPDIR)/libgiza_la-giza-device-has-cursor.Plo \ ./$(DEPDIR)/libgiza_la-giza-draw-background.Plo \ ./$(DEPDIR)/libgiza_la-giza-draw.Plo \ ./$(DEPDIR)/libgiza_la-giza-driver-eps.Plo \ ./$(DEPDIR)/libgiza_la-giza-driver-mp4.Plo \ ./$(DEPDIR)/libgiza_la-giza-driver-null.Plo \ ./$(DEPDIR)/libgiza_la-giza-driver-pdf.Plo \ ./$(DEPDIR)/libgiza_la-giza-driver-png.Plo \ ./$(DEPDIR)/libgiza_la-giza-driver-ps.Plo \ ./$(DEPDIR)/libgiza_la-giza-driver-svg.Plo \ ./$(DEPDIR)/libgiza_la-giza-driver-xw.Plo \ ./$(DEPDIR)/libgiza_la-giza-drivers.Plo \ ./$(DEPDIR)/libgiza_la-giza-environment.Plo \ ./$(DEPDIR)/libgiza_la-giza-error-bars.Plo \ ./$(DEPDIR)/libgiza_la-giza-fill.Plo \ ./$(DEPDIR)/libgiza_la-giza-format-number.Plo \ ./$(DEPDIR)/libgiza_la-giza-function-t.Plo \ ./$(DEPDIR)/libgiza_la-giza-function-x.Plo \ ./$(DEPDIR)/libgiza_la-giza-function-y.Plo \ ./$(DEPDIR)/libgiza_la-giza-get-key-press.Plo \ ./$(DEPDIR)/libgiza_la-giza-get-surface-size.Plo \ ./$(DEPDIR)/libgiza_la-giza-histogram.Plo \ ./$(DEPDIR)/libgiza_la-giza-io.Plo \ ./$(DEPDIR)/libgiza_la-giza-itf.Plo \ ./$(DEPDIR)/libgiza_la-giza-label.Plo \ ./$(DEPDIR)/libgiza_la-giza-line-cap.Plo \ ./$(DEPDIR)/libgiza_la-giza-line-style.Plo \ ./$(DEPDIR)/libgiza_la-giza-line-width.Plo \ ./$(DEPDIR)/libgiza_la-giza-line.Plo \ ./$(DEPDIR)/libgiza_la-giza-move.Plo \ ./$(DEPDIR)/libgiza_la-giza-paper.Plo \ ./$(DEPDIR)/libgiza_la-giza-points.Plo \ ./$(DEPDIR)/libgiza_la-giza-polygon.Plo \ ./$(DEPDIR)/libgiza_la-giza-print-id.Plo \ ./$(DEPDIR)/libgiza_la-giza-prompting.Plo \ ./$(DEPDIR)/libgiza_la-giza-ptext.Plo \ ./$(DEPDIR)/libgiza_la-giza-qtext.Plo \ ./$(DEPDIR)/libgiza_la-giza-rectangle.Plo \ ./$(DEPDIR)/libgiza_la-giza-render.Plo \ ./$(DEPDIR)/libgiza_la-giza-save.Plo \ ./$(DEPDIR)/libgiza_la-giza-set-font.Plo \ ./$(DEPDIR)/libgiza_la-giza-stroke.Plo \ ./$(DEPDIR)/libgiza_la-giza-subpanel.Plo \ ./$(DEPDIR)/libgiza_la-giza-text-background.Plo \ ./$(DEPDIR)/libgiza_la-giza-text.Plo \ ./$(DEPDIR)/libgiza_la-giza-tick.Plo \ ./$(DEPDIR)/libgiza_la-giza-transforms.Plo \ ./$(DEPDIR)/libgiza_la-giza-vector.Plo \ ./$(DEPDIR)/libgiza_la-giza-version.Plo \ ./$(DEPDIR)/libgiza_la-giza-viewport.Plo \ ./$(DEPDIR)/libgiza_la-giza-warnings.Plo \ ./$(DEPDIR)/libgiza_la-giza-window.Plo \ ./$(DEPDIR)/libgiza_la-giza.Plo \ ./$(DEPDIR)/libgiza_la-lex.yy.Plo am__mv = mv -f PPFCCOMPILE = $(FC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_FCFLAGS) $(FCFLAGS) LTPPFCCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=FC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(FC) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_FCFLAGS) $(FCFLAGS) AM_V_PPFC = $(am__v_PPFC_@AM_V@) am__v_PPFC_ = $(am__v_PPFC_@AM_DEFAULT_V@) am__v_PPFC_0 = @echo " PPFC " $@; am__v_PPFC_1 = FCLD = $(FC) FCLINK = $(LIBTOOL) $(AM_V_lt) --tag=FC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(FCLD) $(AM_FCFLAGS) $(FCFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_FCLD = $(am__v_FCLD_@AM_V@) am__v_FCLD_ = $(am__v_FCLD_@AM_DEFAULT_V@) am__v_FCLD_0 = @echo " FCLD " $@; am__v_FCLD_1 = COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; am__v_CC_1 = CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; am__v_CCLD_1 = FCCOMPILE = $(FC) $(AM_FCFLAGS) $(FCFLAGS) LTFCCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=FC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(FC) $(AM_FCFLAGS) $(FCFLAGS) AM_V_FC = $(am__v_FC_@AM_V@) am__v_FC_ = $(am__v_FC_@AM_DEFAULT_V@) am__v_FC_0 = @echo " FC " $@; am__v_FC_1 = SOURCES = $(libcpgplot_la_SOURCES) $(libgiza_la_SOURCES) \ $(libpgplot_la_SOURCES) DIST_SOURCES = $(libcpgplot_la_SOURCES) $(libgiza_la_SOURCES) \ $(libpgplot_la_SOURCES) am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac DATA = $(fmod_DATA) $(pkgconfig_DATA) HEADERS = $(include_HEADERS) am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/cpgplot.pc.in \ $(srcdir)/giza-version.h.in $(srcdir)/giza.pc.in \ $(srcdir)/pgplot.pc.in $(top_srcdir)/build/depcomp DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CAIRO_CFLAGS = @CAIRO_CFLAGS@ CAIRO_LIBS = @CAIRO_LIBS@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPPFLAGS = @CPPFLAGS@ CSCOPE = @CSCOPE@ CTAGS = @CTAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ ETAGS = @ETAGS@ EXEEXT = @EXEEXT@ FC = @FC@ FCFLAGS = @FCFLAGS@ FC_CFLAGS = @FC_CFLAGS@ FC_LIBS = @FC_LIBS@ FGREP = @FGREP@ FT_CFLAGS = @FT_CFLAGS@ FT_LIBS = @FT_LIBS@ GIZA_VERSION_MAJOR = @GIZA_VERSION_MAJOR@ GIZA_VERSION_MICRO = @GIZA_VERSION_MICRO@ GIZA_VERSION_MINOR = @GIZA_VERSION_MINOR@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ LT_AGE = @LT_AGE@ LT_CURRENT = @LT_CURRENT@ LT_REVISION = @LT_REVISION@ LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ X11_CFLAGS = @X11_CFLAGS@ X11_LIBS = @X11_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ ac_ct_FC = @ac_ct_FC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__rm_f_notfound = @am__rm_f_notfound@ am__tar = @am__tar@ am__untar = @am__untar@ am__xargs_n = @am__xargs_n@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ CLEANFILES = *.mod *.pc lib_LTLIBRARIES = libgiza.la libcpgplot.la $(am__append_1) @HAVE_FC_TRUE@fmoddir = $(libdir)/$(FC)/modules @HAVE_FC_TRUE@fmod_DATA = giza.mod libgiza_la_SOURCES = giza-annotate.c giza-arrow-style.c giza-arrow.c giza-axis.c \ giza-band-style.c giza-band.c giza-box-time.c giza-box.c \ giza-buffering.c giza-character-size.c giza-circle.c \ giza-clipping.c giza-colour-bar.c giza-colour-index.c \ giza-colour-palette.c giza-colour-table.c giza-contour.c \ giza-cursor-routines.c giza-device-has-cursor.c \ giza-draw-background.c giza-draw.c giza-driver-eps.c \ giza-driver-null.c giza-driver-pdf.c giza-driver-png.c \ giza-driver-mp4.c giza-driver-ps.c giza-driver-svg.c giza-driver-xw.c \ giza-drivers.c giza-environment.c giza-error-bars.c giza-fill.c \ giza-format-number.c giza-function-t.c giza-function-x.c \ giza-function-y.c giza-get-key-press.c giza-get-surface-size.c \ giza-io.c giza-histogram.c giza-label.c giza-line-cap.c \ giza-line-style.c giza-line-width.c giza-line.c giza-move.c \ giza-paper.c giza-points.c giza-polygon.c giza-print-id.c \ giza-prompting.c giza-ptext.c giza-qtext.c giza-rectangle.c \ giza-render.c giza-save.c giza-set-font.c giza-stroke.c \ giza-subpanel.c giza-text-background.c giza-text.c giza-tick.c \ giza-transforms.c giza-vector.c giza-viewport.c giza-version.c \ giza-warnings.c giza-window.c giza.c lex.yy.c giza-itf.c\ giza-arrow-style-private.h giza-driver-svg-private.h giza-stroke-private.h \ giza-band-private.h giza-driver-xw-private.h giza-subpanel-private.h \ giza-character-size-private.h giza-drivers-private.h giza-text-background-private.h \ giza-colour-private.h giza-fill-private.h giza-text-private.h \ giza-cursor-private.h giza-io-private.h giza-tick-private.h giza-transforms-private.h \ giza-driver-eps-private.h giza-line-style-private.h giza-version.h \ giza-driver-null-private.h giza-private.h giza-viewport-private.h \ giza-driver-pdf-private.h giza-render-private.h giza-warnings-private.h \ giza-driver-png-private.h giza-driver-mp4-private.h giza-set-font-private.h giza-window-private.h \ giza-driver-ps-private.h giza-shared.h giza.h giza-itf.h libgiza_la_CPPFLAGS = $(X11_CFLAGS) $(CAIRO_CFLAGS) $(FT_CFLAGS) $(FC_CFLAGS) libcpgplot_la_CPPFLAGS = $(libgiza_la_CPPFLAGS) libgiza_la_LDFLAGS = -version-info $(LT_CURRENT):$(LT_REVISION):$(LT_AGE) \ -no-undefined $(X11_LIBS) $(CAIRO_LIBS) $(FT_LIBS) $(FC_LIBS) libcpgplot_la_SOURCES = giza-cpgplot.c libcpgplot_la_LDFLAGS = $(libgiza_la_LDFLAGS) -lgiza libpgplot_la_SOURCES = giza-fortran.F90 giza-pgplot.f90 libpgplot_la_LDFLAGS = $(libcpgplot_la_LDFLAGS) include_HEADERS = cpgplot.h giza.h giza-shared.h giza-version.h giza-fortran.F90 pkgconfigdir = $(libdir)/pkgconfig pkgconfig_DATA = cpgplot.pc giza.pc pgplot.pc all: all-am .SUFFIXES: .SUFFIXES: .F90 .c .f90 .lo .o .obj $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu src/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): cpgplot.pc: $(top_builddir)/config.status $(srcdir)/cpgplot.pc.in cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ giza.pc: $(top_builddir)/config.status $(srcdir)/giza.pc.in cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ pgplot.pc: $(top_builddir)/config.status $(srcdir)/pgplot.pc.in cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ giza-version.h: $(top_builddir)/config.status $(srcdir)/giza-version.h.in cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ install-libLTLIBRARIES: $(lib_LTLIBRARIES) @$(NORMAL_INSTALL) @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \ list2=; for p in $$list; do \ if test -f $$p; then \ list2="$$list2 $$p"; \ else :; fi; \ done; \ test -z "$$list2" || { \ echo " $(MKDIR_P) '$(DESTDIR)$(libdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(libdir)" || exit 1; \ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(libdir)'"; \ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(libdir)"; \ } uninstall-libLTLIBRARIES: @$(NORMAL_UNINSTALL) @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \ for p in $$list; do \ $(am__strip_dir) \ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$f'"; \ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$f"; \ done clean-libLTLIBRARIES: -$(am__rm_f) $(lib_LTLIBRARIES) @list='$(lib_LTLIBRARIES)'; \ locs=`for p in $$list; do echo $$p; done | \ sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ sort -u`; \ echo rm -f $${locs}; \ $(am__rm_f) $${locs} libcpgplot.la: $(libcpgplot_la_OBJECTS) $(libcpgplot_la_DEPENDENCIES) $(EXTRA_libcpgplot_la_DEPENDENCIES) $(AM_V_CCLD)$(libcpgplot_la_LINK) -rpath $(libdir) $(libcpgplot_la_OBJECTS) $(libcpgplot_la_LIBADD) $(LIBS) libgiza.la: $(libgiza_la_OBJECTS) $(libgiza_la_DEPENDENCIES) $(EXTRA_libgiza_la_DEPENDENCIES) $(AM_V_CCLD)$(libgiza_la_LINK) -rpath $(libdir) $(libgiza_la_OBJECTS) $(libgiza_la_LIBADD) $(LIBS) libpgplot.la: $(libpgplot_la_OBJECTS) $(libpgplot_la_DEPENDENCIES) $(EXTRA_libpgplot_la_DEPENDENCIES) $(AM_V_FCLD)$(libpgplot_la_LINK) $(am_libpgplot_la_rpath) $(libpgplot_la_OBJECTS) $(libpgplot_la_LIBADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcpgplot_la-giza-cpgplot.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgiza_la-giza-annotate.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgiza_la-giza-arrow-style.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgiza_la-giza-arrow.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgiza_la-giza-axis.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgiza_la-giza-band-style.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgiza_la-giza-band.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgiza_la-giza-box-time.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgiza_la-giza-box.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgiza_la-giza-buffering.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgiza_la-giza-character-size.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgiza_la-giza-circle.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgiza_la-giza-clipping.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgiza_la-giza-colour-bar.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgiza_la-giza-colour-index.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgiza_la-giza-colour-palette.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgiza_la-giza-colour-table.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgiza_la-giza-contour.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgiza_la-giza-cursor-routines.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgiza_la-giza-device-has-cursor.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgiza_la-giza-draw-background.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgiza_la-giza-draw.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgiza_la-giza-driver-eps.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgiza_la-giza-driver-mp4.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgiza_la-giza-driver-null.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgiza_la-giza-driver-pdf.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgiza_la-giza-driver-png.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgiza_la-giza-driver-ps.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgiza_la-giza-driver-svg.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgiza_la-giza-driver-xw.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgiza_la-giza-drivers.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgiza_la-giza-environment.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgiza_la-giza-error-bars.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgiza_la-giza-fill.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgiza_la-giza-format-number.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgiza_la-giza-function-t.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgiza_la-giza-function-x.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgiza_la-giza-function-y.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgiza_la-giza-get-key-press.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgiza_la-giza-get-surface-size.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgiza_la-giza-histogram.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgiza_la-giza-io.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgiza_la-giza-itf.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgiza_la-giza-label.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgiza_la-giza-line-cap.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgiza_la-giza-line-style.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgiza_la-giza-line-width.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgiza_la-giza-line.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgiza_la-giza-move.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgiza_la-giza-paper.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgiza_la-giza-points.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgiza_la-giza-polygon.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgiza_la-giza-print-id.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgiza_la-giza-prompting.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgiza_la-giza-ptext.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgiza_la-giza-qtext.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgiza_la-giza-rectangle.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgiza_la-giza-render.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgiza_la-giza-save.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgiza_la-giza-set-font.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgiza_la-giza-stroke.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgiza_la-giza-subpanel.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgiza_la-giza-text-background.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgiza_la-giza-text.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgiza_la-giza-tick.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgiza_la-giza-transforms.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgiza_la-giza-vector.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgiza_la-giza-version.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgiza_la-giza-viewport.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgiza_la-giza-warnings.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgiza_la-giza-window.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgiza_la-giza.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgiza_la-lex.yy.Plo@am__quote@ # am--include-marker $(am__depfiles_remade): @$(MKDIR_P) $(@D) @: >>$@ am--depfiles: $(am__depfiles_remade) .F90.o: $(AM_V_PPFC)$(PPFCCOMPILE) -c -o $@ $< .F90.obj: $(AM_V_PPFC)$(PPFCCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .F90.lo: $(AM_V_PPFC)$(LTPPFCCOMPILE) -c -o $@ $< .c.o: @am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: @am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .c.lo: @am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< libcpgplot_la-giza-cpgplot.lo: giza-cpgplot.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcpgplot_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libcpgplot_la-giza-cpgplot.lo -MD -MP -MF $(DEPDIR)/libcpgplot_la-giza-cpgplot.Tpo -c -o libcpgplot_la-giza-cpgplot.lo `test -f 'giza-cpgplot.c' || echo '$(srcdir)/'`giza-cpgplot.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcpgplot_la-giza-cpgplot.Tpo $(DEPDIR)/libcpgplot_la-giza-cpgplot.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='giza-cpgplot.c' object='libcpgplot_la-giza-cpgplot.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcpgplot_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libcpgplot_la-giza-cpgplot.lo `test -f 'giza-cpgplot.c' || echo '$(srcdir)/'`giza-cpgplot.c libgiza_la-giza-annotate.lo: giza-annotate.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgiza_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libgiza_la-giza-annotate.lo -MD -MP -MF $(DEPDIR)/libgiza_la-giza-annotate.Tpo -c -o libgiza_la-giza-annotate.lo `test -f 'giza-annotate.c' || echo '$(srcdir)/'`giza-annotate.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgiza_la-giza-annotate.Tpo $(DEPDIR)/libgiza_la-giza-annotate.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='giza-annotate.c' object='libgiza_la-giza-annotate.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgiza_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libgiza_la-giza-annotate.lo `test -f 'giza-annotate.c' || echo '$(srcdir)/'`giza-annotate.c libgiza_la-giza-arrow-style.lo: giza-arrow-style.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgiza_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libgiza_la-giza-arrow-style.lo -MD -MP -MF $(DEPDIR)/libgiza_la-giza-arrow-style.Tpo -c -o libgiza_la-giza-arrow-style.lo `test -f 'giza-arrow-style.c' || echo '$(srcdir)/'`giza-arrow-style.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgiza_la-giza-arrow-style.Tpo $(DEPDIR)/libgiza_la-giza-arrow-style.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='giza-arrow-style.c' object='libgiza_la-giza-arrow-style.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgiza_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libgiza_la-giza-arrow-style.lo `test -f 'giza-arrow-style.c' || echo '$(srcdir)/'`giza-arrow-style.c libgiza_la-giza-arrow.lo: giza-arrow.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgiza_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libgiza_la-giza-arrow.lo -MD -MP -MF $(DEPDIR)/libgiza_la-giza-arrow.Tpo -c -o libgiza_la-giza-arrow.lo `test -f 'giza-arrow.c' || echo '$(srcdir)/'`giza-arrow.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgiza_la-giza-arrow.Tpo $(DEPDIR)/libgiza_la-giza-arrow.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='giza-arrow.c' object='libgiza_la-giza-arrow.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgiza_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libgiza_la-giza-arrow.lo `test -f 'giza-arrow.c' || echo '$(srcdir)/'`giza-arrow.c libgiza_la-giza-axis.lo: giza-axis.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgiza_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libgiza_la-giza-axis.lo -MD -MP -MF $(DEPDIR)/libgiza_la-giza-axis.Tpo -c -o libgiza_la-giza-axis.lo `test -f 'giza-axis.c' || echo '$(srcdir)/'`giza-axis.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgiza_la-giza-axis.Tpo $(DEPDIR)/libgiza_la-giza-axis.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='giza-axis.c' object='libgiza_la-giza-axis.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgiza_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libgiza_la-giza-axis.lo `test -f 'giza-axis.c' || echo '$(srcdir)/'`giza-axis.c libgiza_la-giza-band-style.lo: giza-band-style.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgiza_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libgiza_la-giza-band-style.lo -MD -MP -MF $(DEPDIR)/libgiza_la-giza-band-style.Tpo -c -o libgiza_la-giza-band-style.lo `test -f 'giza-band-style.c' || echo '$(srcdir)/'`giza-band-style.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgiza_la-giza-band-style.Tpo $(DEPDIR)/libgiza_la-giza-band-style.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='giza-band-style.c' object='libgiza_la-giza-band-style.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgiza_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libgiza_la-giza-band-style.lo `test -f 'giza-band-style.c' || echo '$(srcdir)/'`giza-band-style.c libgiza_la-giza-band.lo: giza-band.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgiza_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libgiza_la-giza-band.lo -MD -MP -MF $(DEPDIR)/libgiza_la-giza-band.Tpo -c -o libgiza_la-giza-band.lo `test -f 'giza-band.c' || echo '$(srcdir)/'`giza-band.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgiza_la-giza-band.Tpo $(DEPDIR)/libgiza_la-giza-band.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='giza-band.c' object='libgiza_la-giza-band.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgiza_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libgiza_la-giza-band.lo `test -f 'giza-band.c' || echo '$(srcdir)/'`giza-band.c libgiza_la-giza-box-time.lo: giza-box-time.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgiza_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libgiza_la-giza-box-time.lo -MD -MP -MF $(DEPDIR)/libgiza_la-giza-box-time.Tpo -c -o libgiza_la-giza-box-time.lo `test -f 'giza-box-time.c' || echo '$(srcdir)/'`giza-box-time.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgiza_la-giza-box-time.Tpo $(DEPDIR)/libgiza_la-giza-box-time.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='giza-box-time.c' object='libgiza_la-giza-box-time.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgiza_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libgiza_la-giza-box-time.lo `test -f 'giza-box-time.c' || echo '$(srcdir)/'`giza-box-time.c libgiza_la-giza-box.lo: giza-box.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgiza_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libgiza_la-giza-box.lo -MD -MP -MF $(DEPDIR)/libgiza_la-giza-box.Tpo -c -o libgiza_la-giza-box.lo `test -f 'giza-box.c' || echo '$(srcdir)/'`giza-box.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgiza_la-giza-box.Tpo $(DEPDIR)/libgiza_la-giza-box.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='giza-box.c' object='libgiza_la-giza-box.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgiza_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libgiza_la-giza-box.lo `test -f 'giza-box.c' || echo '$(srcdir)/'`giza-box.c libgiza_la-giza-buffering.lo: giza-buffering.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgiza_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libgiza_la-giza-buffering.lo -MD -MP -MF $(DEPDIR)/libgiza_la-giza-buffering.Tpo -c -o libgiza_la-giza-buffering.lo `test -f 'giza-buffering.c' || echo '$(srcdir)/'`giza-buffering.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgiza_la-giza-buffering.Tpo $(DEPDIR)/libgiza_la-giza-buffering.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='giza-buffering.c' object='libgiza_la-giza-buffering.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgiza_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libgiza_la-giza-buffering.lo `test -f 'giza-buffering.c' || echo '$(srcdir)/'`giza-buffering.c libgiza_la-giza-character-size.lo: giza-character-size.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgiza_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libgiza_la-giza-character-size.lo -MD -MP -MF $(DEPDIR)/libgiza_la-giza-character-size.Tpo -c -o libgiza_la-giza-character-size.lo `test -f 'giza-character-size.c' || echo '$(srcdir)/'`giza-character-size.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgiza_la-giza-character-size.Tpo $(DEPDIR)/libgiza_la-giza-character-size.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='giza-character-size.c' object='libgiza_la-giza-character-size.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgiza_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libgiza_la-giza-character-size.lo `test -f 'giza-character-size.c' || echo '$(srcdir)/'`giza-character-size.c libgiza_la-giza-circle.lo: giza-circle.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgiza_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libgiza_la-giza-circle.lo -MD -MP -MF $(DEPDIR)/libgiza_la-giza-circle.Tpo -c -o libgiza_la-giza-circle.lo `test -f 'giza-circle.c' || echo '$(srcdir)/'`giza-circle.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgiza_la-giza-circle.Tpo $(DEPDIR)/libgiza_la-giza-circle.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='giza-circle.c' object='libgiza_la-giza-circle.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgiza_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libgiza_la-giza-circle.lo `test -f 'giza-circle.c' || echo '$(srcdir)/'`giza-circle.c libgiza_la-giza-clipping.lo: giza-clipping.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgiza_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libgiza_la-giza-clipping.lo -MD -MP -MF $(DEPDIR)/libgiza_la-giza-clipping.Tpo -c -o libgiza_la-giza-clipping.lo `test -f 'giza-clipping.c' || echo '$(srcdir)/'`giza-clipping.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgiza_la-giza-clipping.Tpo $(DEPDIR)/libgiza_la-giza-clipping.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='giza-clipping.c' object='libgiza_la-giza-clipping.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgiza_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libgiza_la-giza-clipping.lo `test -f 'giza-clipping.c' || echo '$(srcdir)/'`giza-clipping.c libgiza_la-giza-colour-bar.lo: giza-colour-bar.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgiza_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libgiza_la-giza-colour-bar.lo -MD -MP -MF $(DEPDIR)/libgiza_la-giza-colour-bar.Tpo -c -o libgiza_la-giza-colour-bar.lo `test -f 'giza-colour-bar.c' || echo '$(srcdir)/'`giza-colour-bar.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgiza_la-giza-colour-bar.Tpo $(DEPDIR)/libgiza_la-giza-colour-bar.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='giza-colour-bar.c' object='libgiza_la-giza-colour-bar.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgiza_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libgiza_la-giza-colour-bar.lo `test -f 'giza-colour-bar.c' || echo '$(srcdir)/'`giza-colour-bar.c libgiza_la-giza-colour-index.lo: giza-colour-index.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgiza_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libgiza_la-giza-colour-index.lo -MD -MP -MF $(DEPDIR)/libgiza_la-giza-colour-index.Tpo -c -o libgiza_la-giza-colour-index.lo `test -f 'giza-colour-index.c' || echo '$(srcdir)/'`giza-colour-index.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgiza_la-giza-colour-index.Tpo $(DEPDIR)/libgiza_la-giza-colour-index.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='giza-colour-index.c' object='libgiza_la-giza-colour-index.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgiza_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libgiza_la-giza-colour-index.lo `test -f 'giza-colour-index.c' || echo '$(srcdir)/'`giza-colour-index.c libgiza_la-giza-colour-palette.lo: giza-colour-palette.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgiza_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libgiza_la-giza-colour-palette.lo -MD -MP -MF $(DEPDIR)/libgiza_la-giza-colour-palette.Tpo -c -o libgiza_la-giza-colour-palette.lo `test -f 'giza-colour-palette.c' || echo '$(srcdir)/'`giza-colour-palette.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgiza_la-giza-colour-palette.Tpo $(DEPDIR)/libgiza_la-giza-colour-palette.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='giza-colour-palette.c' object='libgiza_la-giza-colour-palette.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgiza_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libgiza_la-giza-colour-palette.lo `test -f 'giza-colour-palette.c' || echo '$(srcdir)/'`giza-colour-palette.c libgiza_la-giza-colour-table.lo: giza-colour-table.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgiza_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libgiza_la-giza-colour-table.lo -MD -MP -MF $(DEPDIR)/libgiza_la-giza-colour-table.Tpo -c -o libgiza_la-giza-colour-table.lo `test -f 'giza-colour-table.c' || echo '$(srcdir)/'`giza-colour-table.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgiza_la-giza-colour-table.Tpo $(DEPDIR)/libgiza_la-giza-colour-table.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='giza-colour-table.c' object='libgiza_la-giza-colour-table.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgiza_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libgiza_la-giza-colour-table.lo `test -f 'giza-colour-table.c' || echo '$(srcdir)/'`giza-colour-table.c libgiza_la-giza-contour.lo: giza-contour.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgiza_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libgiza_la-giza-contour.lo -MD -MP -MF $(DEPDIR)/libgiza_la-giza-contour.Tpo -c -o libgiza_la-giza-contour.lo `test -f 'giza-contour.c' || echo '$(srcdir)/'`giza-contour.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgiza_la-giza-contour.Tpo $(DEPDIR)/libgiza_la-giza-contour.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='giza-contour.c' object='libgiza_la-giza-contour.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgiza_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libgiza_la-giza-contour.lo `test -f 'giza-contour.c' || echo '$(srcdir)/'`giza-contour.c libgiza_la-giza-cursor-routines.lo: giza-cursor-routines.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgiza_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libgiza_la-giza-cursor-routines.lo -MD -MP -MF $(DEPDIR)/libgiza_la-giza-cursor-routines.Tpo -c -o libgiza_la-giza-cursor-routines.lo `test -f 'giza-cursor-routines.c' || echo '$(srcdir)/'`giza-cursor-routines.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgiza_la-giza-cursor-routines.Tpo $(DEPDIR)/libgiza_la-giza-cursor-routines.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='giza-cursor-routines.c' object='libgiza_la-giza-cursor-routines.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgiza_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libgiza_la-giza-cursor-routines.lo `test -f 'giza-cursor-routines.c' || echo '$(srcdir)/'`giza-cursor-routines.c libgiza_la-giza-device-has-cursor.lo: giza-device-has-cursor.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgiza_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libgiza_la-giza-device-has-cursor.lo -MD -MP -MF $(DEPDIR)/libgiza_la-giza-device-has-cursor.Tpo -c -o libgiza_la-giza-device-has-cursor.lo `test -f 'giza-device-has-cursor.c' || echo '$(srcdir)/'`giza-device-has-cursor.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgiza_la-giza-device-has-cursor.Tpo $(DEPDIR)/libgiza_la-giza-device-has-cursor.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='giza-device-has-cursor.c' object='libgiza_la-giza-device-has-cursor.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgiza_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libgiza_la-giza-device-has-cursor.lo `test -f 'giza-device-has-cursor.c' || echo '$(srcdir)/'`giza-device-has-cursor.c libgiza_la-giza-draw-background.lo: giza-draw-background.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgiza_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libgiza_la-giza-draw-background.lo -MD -MP -MF $(DEPDIR)/libgiza_la-giza-draw-background.Tpo -c -o libgiza_la-giza-draw-background.lo `test -f 'giza-draw-background.c' || echo '$(srcdir)/'`giza-draw-background.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgiza_la-giza-draw-background.Tpo $(DEPDIR)/libgiza_la-giza-draw-background.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='giza-draw-background.c' object='libgiza_la-giza-draw-background.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgiza_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libgiza_la-giza-draw-background.lo `test -f 'giza-draw-background.c' || echo '$(srcdir)/'`giza-draw-background.c libgiza_la-giza-draw.lo: giza-draw.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgiza_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libgiza_la-giza-draw.lo -MD -MP -MF $(DEPDIR)/libgiza_la-giza-draw.Tpo -c -o libgiza_la-giza-draw.lo `test -f 'giza-draw.c' || echo '$(srcdir)/'`giza-draw.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgiza_la-giza-draw.Tpo $(DEPDIR)/libgiza_la-giza-draw.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='giza-draw.c' object='libgiza_la-giza-draw.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgiza_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libgiza_la-giza-draw.lo `test -f 'giza-draw.c' || echo '$(srcdir)/'`giza-draw.c libgiza_la-giza-driver-eps.lo: giza-driver-eps.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgiza_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libgiza_la-giza-driver-eps.lo -MD -MP -MF $(DEPDIR)/libgiza_la-giza-driver-eps.Tpo -c -o libgiza_la-giza-driver-eps.lo `test -f 'giza-driver-eps.c' || echo '$(srcdir)/'`giza-driver-eps.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgiza_la-giza-driver-eps.Tpo $(DEPDIR)/libgiza_la-giza-driver-eps.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='giza-driver-eps.c' object='libgiza_la-giza-driver-eps.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgiza_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libgiza_la-giza-driver-eps.lo `test -f 'giza-driver-eps.c' || echo '$(srcdir)/'`giza-driver-eps.c libgiza_la-giza-driver-null.lo: giza-driver-null.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgiza_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libgiza_la-giza-driver-null.lo -MD -MP -MF $(DEPDIR)/libgiza_la-giza-driver-null.Tpo -c -o libgiza_la-giza-driver-null.lo `test -f 'giza-driver-null.c' || echo '$(srcdir)/'`giza-driver-null.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgiza_la-giza-driver-null.Tpo $(DEPDIR)/libgiza_la-giza-driver-null.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='giza-driver-null.c' object='libgiza_la-giza-driver-null.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgiza_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libgiza_la-giza-driver-null.lo `test -f 'giza-driver-null.c' || echo '$(srcdir)/'`giza-driver-null.c libgiza_la-giza-driver-pdf.lo: giza-driver-pdf.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgiza_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libgiza_la-giza-driver-pdf.lo -MD -MP -MF $(DEPDIR)/libgiza_la-giza-driver-pdf.Tpo -c -o libgiza_la-giza-driver-pdf.lo `test -f 'giza-driver-pdf.c' || echo '$(srcdir)/'`giza-driver-pdf.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgiza_la-giza-driver-pdf.Tpo $(DEPDIR)/libgiza_la-giza-driver-pdf.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='giza-driver-pdf.c' object='libgiza_la-giza-driver-pdf.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgiza_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libgiza_la-giza-driver-pdf.lo `test -f 'giza-driver-pdf.c' || echo '$(srcdir)/'`giza-driver-pdf.c libgiza_la-giza-driver-png.lo: giza-driver-png.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgiza_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libgiza_la-giza-driver-png.lo -MD -MP -MF $(DEPDIR)/libgiza_la-giza-driver-png.Tpo -c -o libgiza_la-giza-driver-png.lo `test -f 'giza-driver-png.c' || echo '$(srcdir)/'`giza-driver-png.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgiza_la-giza-driver-png.Tpo $(DEPDIR)/libgiza_la-giza-driver-png.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='giza-driver-png.c' object='libgiza_la-giza-driver-png.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgiza_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libgiza_la-giza-driver-png.lo `test -f 'giza-driver-png.c' || echo '$(srcdir)/'`giza-driver-png.c libgiza_la-giza-driver-mp4.lo: giza-driver-mp4.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgiza_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libgiza_la-giza-driver-mp4.lo -MD -MP -MF $(DEPDIR)/libgiza_la-giza-driver-mp4.Tpo -c -o libgiza_la-giza-driver-mp4.lo `test -f 'giza-driver-mp4.c' || echo '$(srcdir)/'`giza-driver-mp4.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgiza_la-giza-driver-mp4.Tpo $(DEPDIR)/libgiza_la-giza-driver-mp4.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='giza-driver-mp4.c' object='libgiza_la-giza-driver-mp4.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgiza_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libgiza_la-giza-driver-mp4.lo `test -f 'giza-driver-mp4.c' || echo '$(srcdir)/'`giza-driver-mp4.c libgiza_la-giza-driver-ps.lo: giza-driver-ps.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgiza_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libgiza_la-giza-driver-ps.lo -MD -MP -MF $(DEPDIR)/libgiza_la-giza-driver-ps.Tpo -c -o libgiza_la-giza-driver-ps.lo `test -f 'giza-driver-ps.c' || echo '$(srcdir)/'`giza-driver-ps.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgiza_la-giza-driver-ps.Tpo $(DEPDIR)/libgiza_la-giza-driver-ps.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='giza-driver-ps.c' object='libgiza_la-giza-driver-ps.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgiza_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libgiza_la-giza-driver-ps.lo `test -f 'giza-driver-ps.c' || echo '$(srcdir)/'`giza-driver-ps.c libgiza_la-giza-driver-svg.lo: giza-driver-svg.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgiza_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libgiza_la-giza-driver-svg.lo -MD -MP -MF $(DEPDIR)/libgiza_la-giza-driver-svg.Tpo -c -o libgiza_la-giza-driver-svg.lo `test -f 'giza-driver-svg.c' || echo '$(srcdir)/'`giza-driver-svg.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgiza_la-giza-driver-svg.Tpo $(DEPDIR)/libgiza_la-giza-driver-svg.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='giza-driver-svg.c' object='libgiza_la-giza-driver-svg.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgiza_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libgiza_la-giza-driver-svg.lo `test -f 'giza-driver-svg.c' || echo '$(srcdir)/'`giza-driver-svg.c libgiza_la-giza-driver-xw.lo: giza-driver-xw.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgiza_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libgiza_la-giza-driver-xw.lo -MD -MP -MF $(DEPDIR)/libgiza_la-giza-driver-xw.Tpo -c -o libgiza_la-giza-driver-xw.lo `test -f 'giza-driver-xw.c' || echo '$(srcdir)/'`giza-driver-xw.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgiza_la-giza-driver-xw.Tpo $(DEPDIR)/libgiza_la-giza-driver-xw.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='giza-driver-xw.c' object='libgiza_la-giza-driver-xw.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgiza_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libgiza_la-giza-driver-xw.lo `test -f 'giza-driver-xw.c' || echo '$(srcdir)/'`giza-driver-xw.c libgiza_la-giza-drivers.lo: giza-drivers.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgiza_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libgiza_la-giza-drivers.lo -MD -MP -MF $(DEPDIR)/libgiza_la-giza-drivers.Tpo -c -o libgiza_la-giza-drivers.lo `test -f 'giza-drivers.c' || echo '$(srcdir)/'`giza-drivers.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgiza_la-giza-drivers.Tpo $(DEPDIR)/libgiza_la-giza-drivers.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='giza-drivers.c' object='libgiza_la-giza-drivers.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgiza_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libgiza_la-giza-drivers.lo `test -f 'giza-drivers.c' || echo '$(srcdir)/'`giza-drivers.c libgiza_la-giza-environment.lo: giza-environment.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgiza_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libgiza_la-giza-environment.lo -MD -MP -MF $(DEPDIR)/libgiza_la-giza-environment.Tpo -c -o libgiza_la-giza-environment.lo `test -f 'giza-environment.c' || echo '$(srcdir)/'`giza-environment.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgiza_la-giza-environment.Tpo $(DEPDIR)/libgiza_la-giza-environment.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='giza-environment.c' object='libgiza_la-giza-environment.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgiza_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libgiza_la-giza-environment.lo `test -f 'giza-environment.c' || echo '$(srcdir)/'`giza-environment.c libgiza_la-giza-error-bars.lo: giza-error-bars.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgiza_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libgiza_la-giza-error-bars.lo -MD -MP -MF $(DEPDIR)/libgiza_la-giza-error-bars.Tpo -c -o libgiza_la-giza-error-bars.lo `test -f 'giza-error-bars.c' || echo '$(srcdir)/'`giza-error-bars.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgiza_la-giza-error-bars.Tpo $(DEPDIR)/libgiza_la-giza-error-bars.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='giza-error-bars.c' object='libgiza_la-giza-error-bars.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgiza_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libgiza_la-giza-error-bars.lo `test -f 'giza-error-bars.c' || echo '$(srcdir)/'`giza-error-bars.c libgiza_la-giza-fill.lo: giza-fill.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgiza_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libgiza_la-giza-fill.lo -MD -MP -MF $(DEPDIR)/libgiza_la-giza-fill.Tpo -c -o libgiza_la-giza-fill.lo `test -f 'giza-fill.c' || echo '$(srcdir)/'`giza-fill.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgiza_la-giza-fill.Tpo $(DEPDIR)/libgiza_la-giza-fill.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='giza-fill.c' object='libgiza_la-giza-fill.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgiza_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libgiza_la-giza-fill.lo `test -f 'giza-fill.c' || echo '$(srcdir)/'`giza-fill.c libgiza_la-giza-format-number.lo: giza-format-number.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgiza_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libgiza_la-giza-format-number.lo -MD -MP -MF $(DEPDIR)/libgiza_la-giza-format-number.Tpo -c -o libgiza_la-giza-format-number.lo `test -f 'giza-format-number.c' || echo '$(srcdir)/'`giza-format-number.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgiza_la-giza-format-number.Tpo $(DEPDIR)/libgiza_la-giza-format-number.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='giza-format-number.c' object='libgiza_la-giza-format-number.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgiza_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libgiza_la-giza-format-number.lo `test -f 'giza-format-number.c' || echo '$(srcdir)/'`giza-format-number.c libgiza_la-giza-function-t.lo: giza-function-t.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgiza_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libgiza_la-giza-function-t.lo -MD -MP -MF $(DEPDIR)/libgiza_la-giza-function-t.Tpo -c -o libgiza_la-giza-function-t.lo `test -f 'giza-function-t.c' || echo '$(srcdir)/'`giza-function-t.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgiza_la-giza-function-t.Tpo $(DEPDIR)/libgiza_la-giza-function-t.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='giza-function-t.c' object='libgiza_la-giza-function-t.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgiza_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libgiza_la-giza-function-t.lo `test -f 'giza-function-t.c' || echo '$(srcdir)/'`giza-function-t.c libgiza_la-giza-function-x.lo: giza-function-x.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgiza_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libgiza_la-giza-function-x.lo -MD -MP -MF $(DEPDIR)/libgiza_la-giza-function-x.Tpo -c -o libgiza_la-giza-function-x.lo `test -f 'giza-function-x.c' || echo '$(srcdir)/'`giza-function-x.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgiza_la-giza-function-x.Tpo $(DEPDIR)/libgiza_la-giza-function-x.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='giza-function-x.c' object='libgiza_la-giza-function-x.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgiza_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libgiza_la-giza-function-x.lo `test -f 'giza-function-x.c' || echo '$(srcdir)/'`giza-function-x.c libgiza_la-giza-function-y.lo: giza-function-y.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgiza_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libgiza_la-giza-function-y.lo -MD -MP -MF $(DEPDIR)/libgiza_la-giza-function-y.Tpo -c -o libgiza_la-giza-function-y.lo `test -f 'giza-function-y.c' || echo '$(srcdir)/'`giza-function-y.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgiza_la-giza-function-y.Tpo $(DEPDIR)/libgiza_la-giza-function-y.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='giza-function-y.c' object='libgiza_la-giza-function-y.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgiza_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libgiza_la-giza-function-y.lo `test -f 'giza-function-y.c' || echo '$(srcdir)/'`giza-function-y.c libgiza_la-giza-get-key-press.lo: giza-get-key-press.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgiza_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libgiza_la-giza-get-key-press.lo -MD -MP -MF $(DEPDIR)/libgiza_la-giza-get-key-press.Tpo -c -o libgiza_la-giza-get-key-press.lo `test -f 'giza-get-key-press.c' || echo '$(srcdir)/'`giza-get-key-press.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgiza_la-giza-get-key-press.Tpo $(DEPDIR)/libgiza_la-giza-get-key-press.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='giza-get-key-press.c' object='libgiza_la-giza-get-key-press.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgiza_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libgiza_la-giza-get-key-press.lo `test -f 'giza-get-key-press.c' || echo '$(srcdir)/'`giza-get-key-press.c libgiza_la-giza-get-surface-size.lo: giza-get-surface-size.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgiza_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libgiza_la-giza-get-surface-size.lo -MD -MP -MF $(DEPDIR)/libgiza_la-giza-get-surface-size.Tpo -c -o libgiza_la-giza-get-surface-size.lo `test -f 'giza-get-surface-size.c' || echo '$(srcdir)/'`giza-get-surface-size.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgiza_la-giza-get-surface-size.Tpo $(DEPDIR)/libgiza_la-giza-get-surface-size.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='giza-get-surface-size.c' object='libgiza_la-giza-get-surface-size.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgiza_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libgiza_la-giza-get-surface-size.lo `test -f 'giza-get-surface-size.c' || echo '$(srcdir)/'`giza-get-surface-size.c libgiza_la-giza-io.lo: giza-io.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgiza_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libgiza_la-giza-io.lo -MD -MP -MF $(DEPDIR)/libgiza_la-giza-io.Tpo -c -o libgiza_la-giza-io.lo `test -f 'giza-io.c' || echo '$(srcdir)/'`giza-io.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgiza_la-giza-io.Tpo $(DEPDIR)/libgiza_la-giza-io.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='giza-io.c' object='libgiza_la-giza-io.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgiza_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libgiza_la-giza-io.lo `test -f 'giza-io.c' || echo '$(srcdir)/'`giza-io.c libgiza_la-giza-histogram.lo: giza-histogram.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgiza_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libgiza_la-giza-histogram.lo -MD -MP -MF $(DEPDIR)/libgiza_la-giza-histogram.Tpo -c -o libgiza_la-giza-histogram.lo `test -f 'giza-histogram.c' || echo '$(srcdir)/'`giza-histogram.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgiza_la-giza-histogram.Tpo $(DEPDIR)/libgiza_la-giza-histogram.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='giza-histogram.c' object='libgiza_la-giza-histogram.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgiza_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libgiza_la-giza-histogram.lo `test -f 'giza-histogram.c' || echo '$(srcdir)/'`giza-histogram.c libgiza_la-giza-label.lo: giza-label.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgiza_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libgiza_la-giza-label.lo -MD -MP -MF $(DEPDIR)/libgiza_la-giza-label.Tpo -c -o libgiza_la-giza-label.lo `test -f 'giza-label.c' || echo '$(srcdir)/'`giza-label.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgiza_la-giza-label.Tpo $(DEPDIR)/libgiza_la-giza-label.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='giza-label.c' object='libgiza_la-giza-label.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgiza_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libgiza_la-giza-label.lo `test -f 'giza-label.c' || echo '$(srcdir)/'`giza-label.c libgiza_la-giza-line-cap.lo: giza-line-cap.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgiza_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libgiza_la-giza-line-cap.lo -MD -MP -MF $(DEPDIR)/libgiza_la-giza-line-cap.Tpo -c -o libgiza_la-giza-line-cap.lo `test -f 'giza-line-cap.c' || echo '$(srcdir)/'`giza-line-cap.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgiza_la-giza-line-cap.Tpo $(DEPDIR)/libgiza_la-giza-line-cap.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='giza-line-cap.c' object='libgiza_la-giza-line-cap.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgiza_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libgiza_la-giza-line-cap.lo `test -f 'giza-line-cap.c' || echo '$(srcdir)/'`giza-line-cap.c libgiza_la-giza-line-style.lo: giza-line-style.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgiza_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libgiza_la-giza-line-style.lo -MD -MP -MF $(DEPDIR)/libgiza_la-giza-line-style.Tpo -c -o libgiza_la-giza-line-style.lo `test -f 'giza-line-style.c' || echo '$(srcdir)/'`giza-line-style.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgiza_la-giza-line-style.Tpo $(DEPDIR)/libgiza_la-giza-line-style.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='giza-line-style.c' object='libgiza_la-giza-line-style.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgiza_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libgiza_la-giza-line-style.lo `test -f 'giza-line-style.c' || echo '$(srcdir)/'`giza-line-style.c libgiza_la-giza-line-width.lo: giza-line-width.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgiza_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libgiza_la-giza-line-width.lo -MD -MP -MF $(DEPDIR)/libgiza_la-giza-line-width.Tpo -c -o libgiza_la-giza-line-width.lo `test -f 'giza-line-width.c' || echo '$(srcdir)/'`giza-line-width.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgiza_la-giza-line-width.Tpo $(DEPDIR)/libgiza_la-giza-line-width.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='giza-line-width.c' object='libgiza_la-giza-line-width.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgiza_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libgiza_la-giza-line-width.lo `test -f 'giza-line-width.c' || echo '$(srcdir)/'`giza-line-width.c libgiza_la-giza-line.lo: giza-line.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgiza_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libgiza_la-giza-line.lo -MD -MP -MF $(DEPDIR)/libgiza_la-giza-line.Tpo -c -o libgiza_la-giza-line.lo `test -f 'giza-line.c' || echo '$(srcdir)/'`giza-line.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgiza_la-giza-line.Tpo $(DEPDIR)/libgiza_la-giza-line.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='giza-line.c' object='libgiza_la-giza-line.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgiza_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libgiza_la-giza-line.lo `test -f 'giza-line.c' || echo '$(srcdir)/'`giza-line.c libgiza_la-giza-move.lo: giza-move.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgiza_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libgiza_la-giza-move.lo -MD -MP -MF $(DEPDIR)/libgiza_la-giza-move.Tpo -c -o libgiza_la-giza-move.lo `test -f 'giza-move.c' || echo '$(srcdir)/'`giza-move.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgiza_la-giza-move.Tpo $(DEPDIR)/libgiza_la-giza-move.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='giza-move.c' object='libgiza_la-giza-move.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgiza_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libgiza_la-giza-move.lo `test -f 'giza-move.c' || echo '$(srcdir)/'`giza-move.c libgiza_la-giza-paper.lo: giza-paper.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgiza_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libgiza_la-giza-paper.lo -MD -MP -MF $(DEPDIR)/libgiza_la-giza-paper.Tpo -c -o libgiza_la-giza-paper.lo `test -f 'giza-paper.c' || echo '$(srcdir)/'`giza-paper.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgiza_la-giza-paper.Tpo $(DEPDIR)/libgiza_la-giza-paper.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='giza-paper.c' object='libgiza_la-giza-paper.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgiza_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libgiza_la-giza-paper.lo `test -f 'giza-paper.c' || echo '$(srcdir)/'`giza-paper.c libgiza_la-giza-points.lo: giza-points.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgiza_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libgiza_la-giza-points.lo -MD -MP -MF $(DEPDIR)/libgiza_la-giza-points.Tpo -c -o libgiza_la-giza-points.lo `test -f 'giza-points.c' || echo '$(srcdir)/'`giza-points.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgiza_la-giza-points.Tpo $(DEPDIR)/libgiza_la-giza-points.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='giza-points.c' object='libgiza_la-giza-points.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgiza_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libgiza_la-giza-points.lo `test -f 'giza-points.c' || echo '$(srcdir)/'`giza-points.c libgiza_la-giza-polygon.lo: giza-polygon.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgiza_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libgiza_la-giza-polygon.lo -MD -MP -MF $(DEPDIR)/libgiza_la-giza-polygon.Tpo -c -o libgiza_la-giza-polygon.lo `test -f 'giza-polygon.c' || echo '$(srcdir)/'`giza-polygon.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgiza_la-giza-polygon.Tpo $(DEPDIR)/libgiza_la-giza-polygon.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='giza-polygon.c' object='libgiza_la-giza-polygon.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgiza_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libgiza_la-giza-polygon.lo `test -f 'giza-polygon.c' || echo '$(srcdir)/'`giza-polygon.c libgiza_la-giza-print-id.lo: giza-print-id.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgiza_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libgiza_la-giza-print-id.lo -MD -MP -MF $(DEPDIR)/libgiza_la-giza-print-id.Tpo -c -o libgiza_la-giza-print-id.lo `test -f 'giza-print-id.c' || echo '$(srcdir)/'`giza-print-id.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgiza_la-giza-print-id.Tpo $(DEPDIR)/libgiza_la-giza-print-id.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='giza-print-id.c' object='libgiza_la-giza-print-id.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgiza_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libgiza_la-giza-print-id.lo `test -f 'giza-print-id.c' || echo '$(srcdir)/'`giza-print-id.c libgiza_la-giza-prompting.lo: giza-prompting.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgiza_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libgiza_la-giza-prompting.lo -MD -MP -MF $(DEPDIR)/libgiza_la-giza-prompting.Tpo -c -o libgiza_la-giza-prompting.lo `test -f 'giza-prompting.c' || echo '$(srcdir)/'`giza-prompting.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgiza_la-giza-prompting.Tpo $(DEPDIR)/libgiza_la-giza-prompting.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='giza-prompting.c' object='libgiza_la-giza-prompting.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgiza_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libgiza_la-giza-prompting.lo `test -f 'giza-prompting.c' || echo '$(srcdir)/'`giza-prompting.c libgiza_la-giza-ptext.lo: giza-ptext.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgiza_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libgiza_la-giza-ptext.lo -MD -MP -MF $(DEPDIR)/libgiza_la-giza-ptext.Tpo -c -o libgiza_la-giza-ptext.lo `test -f 'giza-ptext.c' || echo '$(srcdir)/'`giza-ptext.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgiza_la-giza-ptext.Tpo $(DEPDIR)/libgiza_la-giza-ptext.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='giza-ptext.c' object='libgiza_la-giza-ptext.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgiza_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libgiza_la-giza-ptext.lo `test -f 'giza-ptext.c' || echo '$(srcdir)/'`giza-ptext.c libgiza_la-giza-qtext.lo: giza-qtext.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgiza_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libgiza_la-giza-qtext.lo -MD -MP -MF $(DEPDIR)/libgiza_la-giza-qtext.Tpo -c -o libgiza_la-giza-qtext.lo `test -f 'giza-qtext.c' || echo '$(srcdir)/'`giza-qtext.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgiza_la-giza-qtext.Tpo $(DEPDIR)/libgiza_la-giza-qtext.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='giza-qtext.c' object='libgiza_la-giza-qtext.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgiza_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libgiza_la-giza-qtext.lo `test -f 'giza-qtext.c' || echo '$(srcdir)/'`giza-qtext.c libgiza_la-giza-rectangle.lo: giza-rectangle.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgiza_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libgiza_la-giza-rectangle.lo -MD -MP -MF $(DEPDIR)/libgiza_la-giza-rectangle.Tpo -c -o libgiza_la-giza-rectangle.lo `test -f 'giza-rectangle.c' || echo '$(srcdir)/'`giza-rectangle.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgiza_la-giza-rectangle.Tpo $(DEPDIR)/libgiza_la-giza-rectangle.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='giza-rectangle.c' object='libgiza_la-giza-rectangle.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgiza_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libgiza_la-giza-rectangle.lo `test -f 'giza-rectangle.c' || echo '$(srcdir)/'`giza-rectangle.c libgiza_la-giza-render.lo: giza-render.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgiza_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libgiza_la-giza-render.lo -MD -MP -MF $(DEPDIR)/libgiza_la-giza-render.Tpo -c -o libgiza_la-giza-render.lo `test -f 'giza-render.c' || echo '$(srcdir)/'`giza-render.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgiza_la-giza-render.Tpo $(DEPDIR)/libgiza_la-giza-render.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='giza-render.c' object='libgiza_la-giza-render.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgiza_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libgiza_la-giza-render.lo `test -f 'giza-render.c' || echo '$(srcdir)/'`giza-render.c libgiza_la-giza-save.lo: giza-save.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgiza_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libgiza_la-giza-save.lo -MD -MP -MF $(DEPDIR)/libgiza_la-giza-save.Tpo -c -o libgiza_la-giza-save.lo `test -f 'giza-save.c' || echo '$(srcdir)/'`giza-save.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgiza_la-giza-save.Tpo $(DEPDIR)/libgiza_la-giza-save.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='giza-save.c' object='libgiza_la-giza-save.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgiza_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libgiza_la-giza-save.lo `test -f 'giza-save.c' || echo '$(srcdir)/'`giza-save.c libgiza_la-giza-set-font.lo: giza-set-font.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgiza_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libgiza_la-giza-set-font.lo -MD -MP -MF $(DEPDIR)/libgiza_la-giza-set-font.Tpo -c -o libgiza_la-giza-set-font.lo `test -f 'giza-set-font.c' || echo '$(srcdir)/'`giza-set-font.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgiza_la-giza-set-font.Tpo $(DEPDIR)/libgiza_la-giza-set-font.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='giza-set-font.c' object='libgiza_la-giza-set-font.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgiza_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libgiza_la-giza-set-font.lo `test -f 'giza-set-font.c' || echo '$(srcdir)/'`giza-set-font.c libgiza_la-giza-stroke.lo: giza-stroke.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgiza_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libgiza_la-giza-stroke.lo -MD -MP -MF $(DEPDIR)/libgiza_la-giza-stroke.Tpo -c -o libgiza_la-giza-stroke.lo `test -f 'giza-stroke.c' || echo '$(srcdir)/'`giza-stroke.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgiza_la-giza-stroke.Tpo $(DEPDIR)/libgiza_la-giza-stroke.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='giza-stroke.c' object='libgiza_la-giza-stroke.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgiza_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libgiza_la-giza-stroke.lo `test -f 'giza-stroke.c' || echo '$(srcdir)/'`giza-stroke.c libgiza_la-giza-subpanel.lo: giza-subpanel.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgiza_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libgiza_la-giza-subpanel.lo -MD -MP -MF $(DEPDIR)/libgiza_la-giza-subpanel.Tpo -c -o libgiza_la-giza-subpanel.lo `test -f 'giza-subpanel.c' || echo '$(srcdir)/'`giza-subpanel.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgiza_la-giza-subpanel.Tpo $(DEPDIR)/libgiza_la-giza-subpanel.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='giza-subpanel.c' object='libgiza_la-giza-subpanel.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgiza_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libgiza_la-giza-subpanel.lo `test -f 'giza-subpanel.c' || echo '$(srcdir)/'`giza-subpanel.c libgiza_la-giza-text-background.lo: giza-text-background.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgiza_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libgiza_la-giza-text-background.lo -MD -MP -MF $(DEPDIR)/libgiza_la-giza-text-background.Tpo -c -o libgiza_la-giza-text-background.lo `test -f 'giza-text-background.c' || echo '$(srcdir)/'`giza-text-background.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgiza_la-giza-text-background.Tpo $(DEPDIR)/libgiza_la-giza-text-background.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='giza-text-background.c' object='libgiza_la-giza-text-background.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgiza_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libgiza_la-giza-text-background.lo `test -f 'giza-text-background.c' || echo '$(srcdir)/'`giza-text-background.c libgiza_la-giza-text.lo: giza-text.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgiza_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libgiza_la-giza-text.lo -MD -MP -MF $(DEPDIR)/libgiza_la-giza-text.Tpo -c -o libgiza_la-giza-text.lo `test -f 'giza-text.c' || echo '$(srcdir)/'`giza-text.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgiza_la-giza-text.Tpo $(DEPDIR)/libgiza_la-giza-text.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='giza-text.c' object='libgiza_la-giza-text.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgiza_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libgiza_la-giza-text.lo `test -f 'giza-text.c' || echo '$(srcdir)/'`giza-text.c libgiza_la-giza-tick.lo: giza-tick.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgiza_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libgiza_la-giza-tick.lo -MD -MP -MF $(DEPDIR)/libgiza_la-giza-tick.Tpo -c -o libgiza_la-giza-tick.lo `test -f 'giza-tick.c' || echo '$(srcdir)/'`giza-tick.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgiza_la-giza-tick.Tpo $(DEPDIR)/libgiza_la-giza-tick.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='giza-tick.c' object='libgiza_la-giza-tick.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgiza_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libgiza_la-giza-tick.lo `test -f 'giza-tick.c' || echo '$(srcdir)/'`giza-tick.c libgiza_la-giza-transforms.lo: giza-transforms.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgiza_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libgiza_la-giza-transforms.lo -MD -MP -MF $(DEPDIR)/libgiza_la-giza-transforms.Tpo -c -o libgiza_la-giza-transforms.lo `test -f 'giza-transforms.c' || echo '$(srcdir)/'`giza-transforms.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgiza_la-giza-transforms.Tpo $(DEPDIR)/libgiza_la-giza-transforms.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='giza-transforms.c' object='libgiza_la-giza-transforms.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgiza_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libgiza_la-giza-transforms.lo `test -f 'giza-transforms.c' || echo '$(srcdir)/'`giza-transforms.c libgiza_la-giza-vector.lo: giza-vector.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgiza_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libgiza_la-giza-vector.lo -MD -MP -MF $(DEPDIR)/libgiza_la-giza-vector.Tpo -c -o libgiza_la-giza-vector.lo `test -f 'giza-vector.c' || echo '$(srcdir)/'`giza-vector.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgiza_la-giza-vector.Tpo $(DEPDIR)/libgiza_la-giza-vector.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='giza-vector.c' object='libgiza_la-giza-vector.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgiza_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libgiza_la-giza-vector.lo `test -f 'giza-vector.c' || echo '$(srcdir)/'`giza-vector.c libgiza_la-giza-viewport.lo: giza-viewport.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgiza_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libgiza_la-giza-viewport.lo -MD -MP -MF $(DEPDIR)/libgiza_la-giza-viewport.Tpo -c -o libgiza_la-giza-viewport.lo `test -f 'giza-viewport.c' || echo '$(srcdir)/'`giza-viewport.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgiza_la-giza-viewport.Tpo $(DEPDIR)/libgiza_la-giza-viewport.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='giza-viewport.c' object='libgiza_la-giza-viewport.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgiza_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libgiza_la-giza-viewport.lo `test -f 'giza-viewport.c' || echo '$(srcdir)/'`giza-viewport.c libgiza_la-giza-version.lo: giza-version.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgiza_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libgiza_la-giza-version.lo -MD -MP -MF $(DEPDIR)/libgiza_la-giza-version.Tpo -c -o libgiza_la-giza-version.lo `test -f 'giza-version.c' || echo '$(srcdir)/'`giza-version.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgiza_la-giza-version.Tpo $(DEPDIR)/libgiza_la-giza-version.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='giza-version.c' object='libgiza_la-giza-version.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgiza_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libgiza_la-giza-version.lo `test -f 'giza-version.c' || echo '$(srcdir)/'`giza-version.c libgiza_la-giza-warnings.lo: giza-warnings.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgiza_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libgiza_la-giza-warnings.lo -MD -MP -MF $(DEPDIR)/libgiza_la-giza-warnings.Tpo -c -o libgiza_la-giza-warnings.lo `test -f 'giza-warnings.c' || echo '$(srcdir)/'`giza-warnings.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgiza_la-giza-warnings.Tpo $(DEPDIR)/libgiza_la-giza-warnings.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='giza-warnings.c' object='libgiza_la-giza-warnings.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgiza_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libgiza_la-giza-warnings.lo `test -f 'giza-warnings.c' || echo '$(srcdir)/'`giza-warnings.c libgiza_la-giza-window.lo: giza-window.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgiza_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libgiza_la-giza-window.lo -MD -MP -MF $(DEPDIR)/libgiza_la-giza-window.Tpo -c -o libgiza_la-giza-window.lo `test -f 'giza-window.c' || echo '$(srcdir)/'`giza-window.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgiza_la-giza-window.Tpo $(DEPDIR)/libgiza_la-giza-window.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='giza-window.c' object='libgiza_la-giza-window.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgiza_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libgiza_la-giza-window.lo `test -f 'giza-window.c' || echo '$(srcdir)/'`giza-window.c libgiza_la-giza.lo: giza.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgiza_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libgiza_la-giza.lo -MD -MP -MF $(DEPDIR)/libgiza_la-giza.Tpo -c -o libgiza_la-giza.lo `test -f 'giza.c' || echo '$(srcdir)/'`giza.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgiza_la-giza.Tpo $(DEPDIR)/libgiza_la-giza.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='giza.c' object='libgiza_la-giza.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgiza_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libgiza_la-giza.lo `test -f 'giza.c' || echo '$(srcdir)/'`giza.c libgiza_la-lex.yy.lo: lex.yy.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgiza_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libgiza_la-lex.yy.lo -MD -MP -MF $(DEPDIR)/libgiza_la-lex.yy.Tpo -c -o libgiza_la-lex.yy.lo `test -f 'lex.yy.c' || echo '$(srcdir)/'`lex.yy.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgiza_la-lex.yy.Tpo $(DEPDIR)/libgiza_la-lex.yy.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='lex.yy.c' object='libgiza_la-lex.yy.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgiza_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libgiza_la-lex.yy.lo `test -f 'lex.yy.c' || echo '$(srcdir)/'`lex.yy.c libgiza_la-giza-itf.lo: giza-itf.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgiza_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libgiza_la-giza-itf.lo -MD -MP -MF $(DEPDIR)/libgiza_la-giza-itf.Tpo -c -o libgiza_la-giza-itf.lo `test -f 'giza-itf.c' || echo '$(srcdir)/'`giza-itf.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgiza_la-giza-itf.Tpo $(DEPDIR)/libgiza_la-giza-itf.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='giza-itf.c' object='libgiza_la-giza-itf.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgiza_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libgiza_la-giza-itf.lo `test -f 'giza-itf.c' || echo '$(srcdir)/'`giza-itf.c .f90.o: $(AM_V_FC)$(FCCOMPILE) -c -o $@ $< .f90.obj: $(AM_V_FC)$(FCCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .f90.lo: $(AM_V_FC)$(LTFCCOMPILE) -c -o $@ $< mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs install-fmodDATA: $(fmod_DATA) @$(NORMAL_INSTALL) @list='$(fmod_DATA)'; test -n "$(fmoddir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(fmoddir)'"; \ $(MKDIR_P) "$(DESTDIR)$(fmoddir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(fmoddir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(fmoddir)" || exit $$?; \ done uninstall-fmodDATA: @$(NORMAL_UNINSTALL) @list='$(fmod_DATA)'; test -n "$(fmoddir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(fmoddir)'; $(am__uninstall_files_from_dir) install-pkgconfigDATA: $(pkgconfig_DATA) @$(NORMAL_INSTALL) @list='$(pkgconfig_DATA)'; test -n "$(pkgconfigdir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(pkgconfigdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(pkgconfigdir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pkgconfigdir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(pkgconfigdir)" || exit $$?; \ done uninstall-pkgconfigDATA: @$(NORMAL_UNINSTALL) @list='$(pkgconfig_DATA)'; test -n "$(pkgconfigdir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(pkgconfigdir)'; $(am__uninstall_files_from_dir) install-includeHEADERS: $(include_HEADERS) @$(NORMAL_INSTALL) @list='$(include_HEADERS)'; test -n "$(includedir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(includedir)'"; \ $(MKDIR_P) "$(DESTDIR)$(includedir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(includedir)'"; \ $(INSTALL_HEADER) $$files "$(DESTDIR)$(includedir)" || exit $$?; \ done uninstall-includeHEADERS: @$(NORMAL_UNINSTALL) @list='$(include_HEADERS)'; test -n "$(includedir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(includedir)'; $(am__uninstall_files_from_dir) ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-am TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-am CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-am cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am distdir-am: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(LTLIBRARIES) $(DATA) $(HEADERS) installdirs: for dir in "$(DESTDIR)$(libdir)" "$(DESTDIR)$(fmoddir)" "$(DESTDIR)$(pkgconfigdir)" "$(DESTDIR)$(includedir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -$(am__rm_f) $(CLEANFILES) distclean-generic: -$(am__rm_f) $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || $(am__rm_f) $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libLTLIBRARIES clean-libtool \ mostlyclean-am distclean: distclean-am -rm -f ./$(DEPDIR)/libcpgplot_la-giza-cpgplot.Plo -rm -f ./$(DEPDIR)/libgiza_la-giza-annotate.Plo -rm -f ./$(DEPDIR)/libgiza_la-giza-arrow-style.Plo -rm -f ./$(DEPDIR)/libgiza_la-giza-arrow.Plo -rm -f ./$(DEPDIR)/libgiza_la-giza-axis.Plo -rm -f ./$(DEPDIR)/libgiza_la-giza-band-style.Plo -rm -f ./$(DEPDIR)/libgiza_la-giza-band.Plo -rm -f ./$(DEPDIR)/libgiza_la-giza-box-time.Plo -rm -f ./$(DEPDIR)/libgiza_la-giza-box.Plo -rm -f ./$(DEPDIR)/libgiza_la-giza-buffering.Plo -rm -f ./$(DEPDIR)/libgiza_la-giza-character-size.Plo -rm -f ./$(DEPDIR)/libgiza_la-giza-circle.Plo -rm -f ./$(DEPDIR)/libgiza_la-giza-clipping.Plo -rm -f ./$(DEPDIR)/libgiza_la-giza-colour-bar.Plo -rm -f ./$(DEPDIR)/libgiza_la-giza-colour-index.Plo -rm -f ./$(DEPDIR)/libgiza_la-giza-colour-palette.Plo -rm -f ./$(DEPDIR)/libgiza_la-giza-colour-table.Plo -rm -f ./$(DEPDIR)/libgiza_la-giza-contour.Plo -rm -f ./$(DEPDIR)/libgiza_la-giza-cursor-routines.Plo -rm -f ./$(DEPDIR)/libgiza_la-giza-device-has-cursor.Plo -rm -f ./$(DEPDIR)/libgiza_la-giza-draw-background.Plo -rm -f ./$(DEPDIR)/libgiza_la-giza-draw.Plo -rm -f ./$(DEPDIR)/libgiza_la-giza-driver-eps.Plo -rm -f ./$(DEPDIR)/libgiza_la-giza-driver-mp4.Plo -rm -f ./$(DEPDIR)/libgiza_la-giza-driver-null.Plo -rm -f ./$(DEPDIR)/libgiza_la-giza-driver-pdf.Plo -rm -f ./$(DEPDIR)/libgiza_la-giza-driver-png.Plo -rm -f ./$(DEPDIR)/libgiza_la-giza-driver-ps.Plo -rm -f ./$(DEPDIR)/libgiza_la-giza-driver-svg.Plo -rm -f ./$(DEPDIR)/libgiza_la-giza-driver-xw.Plo -rm -f ./$(DEPDIR)/libgiza_la-giza-drivers.Plo -rm -f ./$(DEPDIR)/libgiza_la-giza-environment.Plo -rm -f ./$(DEPDIR)/libgiza_la-giza-error-bars.Plo -rm -f ./$(DEPDIR)/libgiza_la-giza-fill.Plo -rm -f ./$(DEPDIR)/libgiza_la-giza-format-number.Plo -rm -f ./$(DEPDIR)/libgiza_la-giza-function-t.Plo -rm -f ./$(DEPDIR)/libgiza_la-giza-function-x.Plo -rm -f ./$(DEPDIR)/libgiza_la-giza-function-y.Plo -rm -f ./$(DEPDIR)/libgiza_la-giza-get-key-press.Plo -rm -f ./$(DEPDIR)/libgiza_la-giza-get-surface-size.Plo -rm -f ./$(DEPDIR)/libgiza_la-giza-histogram.Plo -rm -f ./$(DEPDIR)/libgiza_la-giza-io.Plo -rm -f ./$(DEPDIR)/libgiza_la-giza-itf.Plo -rm -f ./$(DEPDIR)/libgiza_la-giza-label.Plo -rm -f ./$(DEPDIR)/libgiza_la-giza-line-cap.Plo -rm -f ./$(DEPDIR)/libgiza_la-giza-line-style.Plo -rm -f ./$(DEPDIR)/libgiza_la-giza-line-width.Plo -rm -f ./$(DEPDIR)/libgiza_la-giza-line.Plo -rm -f ./$(DEPDIR)/libgiza_la-giza-move.Plo -rm -f ./$(DEPDIR)/libgiza_la-giza-paper.Plo -rm -f ./$(DEPDIR)/libgiza_la-giza-points.Plo -rm -f ./$(DEPDIR)/libgiza_la-giza-polygon.Plo -rm -f ./$(DEPDIR)/libgiza_la-giza-print-id.Plo -rm -f ./$(DEPDIR)/libgiza_la-giza-prompting.Plo -rm -f ./$(DEPDIR)/libgiza_la-giza-ptext.Plo -rm -f ./$(DEPDIR)/libgiza_la-giza-qtext.Plo -rm -f ./$(DEPDIR)/libgiza_la-giza-rectangle.Plo -rm -f ./$(DEPDIR)/libgiza_la-giza-render.Plo -rm -f ./$(DEPDIR)/libgiza_la-giza-save.Plo -rm -f ./$(DEPDIR)/libgiza_la-giza-set-font.Plo -rm -f ./$(DEPDIR)/libgiza_la-giza-stroke.Plo -rm -f ./$(DEPDIR)/libgiza_la-giza-subpanel.Plo -rm -f ./$(DEPDIR)/libgiza_la-giza-text-background.Plo -rm -f ./$(DEPDIR)/libgiza_la-giza-text.Plo -rm -f ./$(DEPDIR)/libgiza_la-giza-tick.Plo -rm -f ./$(DEPDIR)/libgiza_la-giza-transforms.Plo -rm -f ./$(DEPDIR)/libgiza_la-giza-vector.Plo -rm -f ./$(DEPDIR)/libgiza_la-giza-version.Plo -rm -f ./$(DEPDIR)/libgiza_la-giza-viewport.Plo -rm -f ./$(DEPDIR)/libgiza_la-giza-warnings.Plo -rm -f ./$(DEPDIR)/libgiza_la-giza-window.Plo -rm -f ./$(DEPDIR)/libgiza_la-giza.Plo -rm -f ./$(DEPDIR)/libgiza_la-lex.yy.Plo -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-fmodDATA install-includeHEADERS \ install-pkgconfigDATA install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-libLTLIBRARIES install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f ./$(DEPDIR)/libcpgplot_la-giza-cpgplot.Plo -rm -f ./$(DEPDIR)/libgiza_la-giza-annotate.Plo -rm -f ./$(DEPDIR)/libgiza_la-giza-arrow-style.Plo -rm -f ./$(DEPDIR)/libgiza_la-giza-arrow.Plo -rm -f ./$(DEPDIR)/libgiza_la-giza-axis.Plo -rm -f ./$(DEPDIR)/libgiza_la-giza-band-style.Plo -rm -f ./$(DEPDIR)/libgiza_la-giza-band.Plo -rm -f ./$(DEPDIR)/libgiza_la-giza-box-time.Plo -rm -f ./$(DEPDIR)/libgiza_la-giza-box.Plo -rm -f ./$(DEPDIR)/libgiza_la-giza-buffering.Plo -rm -f ./$(DEPDIR)/libgiza_la-giza-character-size.Plo -rm -f ./$(DEPDIR)/libgiza_la-giza-circle.Plo -rm -f ./$(DEPDIR)/libgiza_la-giza-clipping.Plo -rm -f ./$(DEPDIR)/libgiza_la-giza-colour-bar.Plo -rm -f ./$(DEPDIR)/libgiza_la-giza-colour-index.Plo -rm -f ./$(DEPDIR)/libgiza_la-giza-colour-palette.Plo -rm -f ./$(DEPDIR)/libgiza_la-giza-colour-table.Plo -rm -f ./$(DEPDIR)/libgiza_la-giza-contour.Plo -rm -f ./$(DEPDIR)/libgiza_la-giza-cursor-routines.Plo -rm -f ./$(DEPDIR)/libgiza_la-giza-device-has-cursor.Plo -rm -f ./$(DEPDIR)/libgiza_la-giza-draw-background.Plo -rm -f ./$(DEPDIR)/libgiza_la-giza-draw.Plo -rm -f ./$(DEPDIR)/libgiza_la-giza-driver-eps.Plo -rm -f ./$(DEPDIR)/libgiza_la-giza-driver-mp4.Plo -rm -f ./$(DEPDIR)/libgiza_la-giza-driver-null.Plo -rm -f ./$(DEPDIR)/libgiza_la-giza-driver-pdf.Plo -rm -f ./$(DEPDIR)/libgiza_la-giza-driver-png.Plo -rm -f ./$(DEPDIR)/libgiza_la-giza-driver-ps.Plo -rm -f ./$(DEPDIR)/libgiza_la-giza-driver-svg.Plo -rm -f ./$(DEPDIR)/libgiza_la-giza-driver-xw.Plo -rm -f ./$(DEPDIR)/libgiza_la-giza-drivers.Plo -rm -f ./$(DEPDIR)/libgiza_la-giza-environment.Plo -rm -f ./$(DEPDIR)/libgiza_la-giza-error-bars.Plo -rm -f ./$(DEPDIR)/libgiza_la-giza-fill.Plo -rm -f ./$(DEPDIR)/libgiza_la-giza-format-number.Plo -rm -f ./$(DEPDIR)/libgiza_la-giza-function-t.Plo -rm -f ./$(DEPDIR)/libgiza_la-giza-function-x.Plo -rm -f ./$(DEPDIR)/libgiza_la-giza-function-y.Plo -rm -f ./$(DEPDIR)/libgiza_la-giza-get-key-press.Plo -rm -f ./$(DEPDIR)/libgiza_la-giza-get-surface-size.Plo -rm -f ./$(DEPDIR)/libgiza_la-giza-histogram.Plo -rm -f ./$(DEPDIR)/libgiza_la-giza-io.Plo -rm -f ./$(DEPDIR)/libgiza_la-giza-itf.Plo -rm -f ./$(DEPDIR)/libgiza_la-giza-label.Plo -rm -f ./$(DEPDIR)/libgiza_la-giza-line-cap.Plo -rm -f ./$(DEPDIR)/libgiza_la-giza-line-style.Plo -rm -f ./$(DEPDIR)/libgiza_la-giza-line-width.Plo -rm -f ./$(DEPDIR)/libgiza_la-giza-line.Plo -rm -f ./$(DEPDIR)/libgiza_la-giza-move.Plo -rm -f ./$(DEPDIR)/libgiza_la-giza-paper.Plo -rm -f ./$(DEPDIR)/libgiza_la-giza-points.Plo -rm -f ./$(DEPDIR)/libgiza_la-giza-polygon.Plo -rm -f ./$(DEPDIR)/libgiza_la-giza-print-id.Plo -rm -f ./$(DEPDIR)/libgiza_la-giza-prompting.Plo -rm -f ./$(DEPDIR)/libgiza_la-giza-ptext.Plo -rm -f ./$(DEPDIR)/libgiza_la-giza-qtext.Plo -rm -f ./$(DEPDIR)/libgiza_la-giza-rectangle.Plo -rm -f ./$(DEPDIR)/libgiza_la-giza-render.Plo -rm -f ./$(DEPDIR)/libgiza_la-giza-save.Plo -rm -f ./$(DEPDIR)/libgiza_la-giza-set-font.Plo -rm -f ./$(DEPDIR)/libgiza_la-giza-stroke.Plo -rm -f ./$(DEPDIR)/libgiza_la-giza-subpanel.Plo -rm -f ./$(DEPDIR)/libgiza_la-giza-text-background.Plo -rm -f ./$(DEPDIR)/libgiza_la-giza-text.Plo -rm -f ./$(DEPDIR)/libgiza_la-giza-tick.Plo -rm -f ./$(DEPDIR)/libgiza_la-giza-transforms.Plo -rm -f ./$(DEPDIR)/libgiza_la-giza-vector.Plo -rm -f ./$(DEPDIR)/libgiza_la-giza-version.Plo -rm -f ./$(DEPDIR)/libgiza_la-giza-viewport.Plo -rm -f ./$(DEPDIR)/libgiza_la-giza-warnings.Plo -rm -f ./$(DEPDIR)/libgiza_la-giza-window.Plo -rm -f ./$(DEPDIR)/libgiza_la-giza.Plo -rm -f ./$(DEPDIR)/libgiza_la-lex.yy.Plo -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-fmodDATA uninstall-includeHEADERS \ uninstall-libLTLIBRARIES uninstall-pkgconfigDATA .MAKE: install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am am--depfiles check check-am clean \ clean-generic clean-libLTLIBRARIES clean-libtool cscopelist-am \ ctags ctags-am distclean distclean-compile distclean-generic \ distclean-libtool distclean-tags distdir dvi dvi-am html \ html-am info info-am install install-am install-data \ install-data-am install-dvi install-dvi-am install-exec \ install-exec-am install-fmodDATA install-html install-html-am \ install-includeHEADERS install-info install-info-am \ install-libLTLIBRARIES install-man install-pdf install-pdf-am \ install-pkgconfigDATA install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ tags tags-am uninstall uninstall-am uninstall-fmodDATA \ uninstall-includeHEADERS uninstall-libLTLIBRARIES \ uninstall-pkgconfigDATA .PRECIOUS: Makefile .NOTPARALLEL: # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: # Tell GNU make to disable its built-in pattern rules. %:: %,v %:: RCS/%,v %:: RCS/% %:: s.% %:: SCCS/s.% giza-1.5.0/src/cpgplot.h000066400000000000000000000147471477367113400151110ustar00rootroot00000000000000#ifndef cpgplot_h #define cpgplot_h #ifdef __cplusplus extern "C" { #endif /* * this is the giza version of cpgplot.h, * constructed from the online pgplot documentation */ typedef int Logical; void cpgarro(float x1, float y1, float x2, float y2); void cpgask(Logical flag); void cpgaxis(const char *opt, float x1, float y1, float x2, float y2, \ float v1, float v2, float step, int nsub, float dmajl, \ float dmajr, float fmin, float disp, float orient); int cpgband(int mode, int posn, float xref, float yref, float *x,\ float *y, char *ch_scalar); void cpgbbuf(void); int cpgbeg(int unit, const char *file, int nxsub, int nysub); void cpgbin(int nbin, const float *x, const float *data, \ Logical center); void cpgbox(const char *xopt, float xtick, int nxsub, \ const char *yopt, float ytick, int nysub); void cpgcirc(float xcent, float ycent, float radius); void cpgclos(void); void cpgconb(const float *a, int idim, int jdim, int i1, int i2, \ int j1, int j2, const float *c, int nc, const float *tr, \ float blank); void cpgconf(const float *a, int idim, int jdim, int i1, int i2, \ int j1, int j2, float c1, float c2, const float *tr); void cpgconl(const float *a, int idim, int jdim, int i1, int i2, \ int j1, int j2, float c, const float *tr, const char *label, \ int intval, int minint); void cpgcons(const float *a, int idim, int jdim, int i1, int i2, \ int j1, int j2, const float *c, int nc, const float *tr); void cpgcont(const float *a, int idim, int jdim, int i1, int i2, \ int j1, int j2, const float *c, int nc, const float *tr); void cpgctab(const float *l, const float *r, const float *g, \ const float *b, int nc, float contra, float bright); int cpgcurs(float *x, float *y, char *ch_scalar); void cpgdraw(float x, float y); void cpgebuf(void); void cpgend(void); void cpgenv(float xmin, float xmax, float ymin, float ymax, \ int just, int axis); void cpgeras(void); void cpgerr1(int dir, float x, float y, float e, float t); void cpgerrb(int dir, int n, const float *x, const float *y, \ const float *e, float t); void cpgerrx(int n, const float *x1, const float *x2, \ const float *y, float t); void cpgerry(int n, const float *x, const float *y1, \ const float *y2, float t); void cpgetxt(void); void cpggray(const float *a, int idim, int jdim, int i1, int i2, \ int j1, int j2, float fg, float bg, const float *tr); void cpghi2d(const float *data, int nxv, int nyv, int ix1, \ int ix2, int iy1, int iy2, const float *x, int ioff, float bias, \ Logical center, float *ylims); void cpghist(int n, const float *data, float datmin, float datmax, \ int nbin, int pgflag); void cpgiden(void); void cpgimag(const float *a, int idim, int jdim, int i1, int i2, \ int j1, int j2, float a1, float a2, const float *tr); void cpglab(const char *xlbl, const char *ylbl, const char *toplbl); void cpglcur(int maxpt, int *npt, float *x, float *y); void cpgldev(void); void cpglen(int units, const char *string, float *xl, float *yl); void cpgline(int n, const float *xpts, const float *ypts); void cpgmove(float x, float y); void cpgmtxt(const char *side, float disp, float coord, \ float fjust, const char *text); void cpgncur(int maxpt, int *npt, float *x, float *y, int symbol); void cpgnumb(int mm, int pp, int form, char *string, \ int *string_length); void cpgolin(int maxpt, int *npt, float *x, float *y, int symbol); int cpgopen(const char *device); void cpgpage(void); void cpgpanl(int nxc, int nyc); void cpgpap(float width, float aspect); void cpgpixl(const int *ia, int idim, int jdim, int i1, int i2, \ int j1, int j2, float x1, float x2, float y1, float y2); void cpgpnts(int n, const float *x, const float *y, \ const int *symbol, int ns); void cpgpoly(int n, const float *xpts, const float *ypts); void cpgpt(int n, const float *xpts, const float *ypts, int symbol); void cpgpt1(float xpt, float ypt, int symbol); void cpgptxt(float x, float y, float angle, float fjust, \ const char *text); void cpgqah(int *fs, float *angle, float *barb); void cpgqcf(int *font); void cpgqch(float *size); void cpgqci(int *ci); void cpgqcir(int *icilo, int *icihi); void cpgqclp(int *state); void cpgqcol(int *ci1, int *ci2); void cpgqcr(int ci, float *cr, float *cg, float *cb); void cpgqcs(int units, float *xch, float *ych); void cpgqdt(int n, char *type, int *type_length, char *descr, \ int *descr_length, int *inter); void cpgqfs(int *fs); void cpgqhs(float *angle, float *sepn, float* phase); void cpgqid(int *id); void cpgqinf(const char *item, char *value, int *value_length); void cpgqitf(int *itf); void cpgqls(int *ls); void cpgqlw(int *lw); void cpgqndt(int *n); void cpgqpos(float *x, float *y); void cpgqtbg(int *tbci); void cpgqtxt(float x, float y, float angle, float fjust, \ const char *text, float *xbox, float *ybox); void cpgqvp(int units, float *x1, float *x2, float *y1, float *y2); void cpgqvsz(int units, float *x1, float *x2, float *y1, float *y2); void cpgqwin(float *x1, float *x2, float *y1, float *y2); void cpgrect(float x1, float x2, float y1, float y2); float cpgrnd(float x, int *nsub); void cpgrnge(float x1, float x2, float *xlo, float *xhi); void cpgsah(int fs, float angle, float barb); void cpgsave(void); void cpgunsa(void); void cpgscf(int font); void cpgsch(float size); void cpgsci(int ci); void cpgscir(int icilo, int icihi); void cpgsclp(int state); void cpgscr(int ci, float cr, float cg, float cb); void cpgscrl(float dx, float dy); void cpgscrn(int ci, const char *name, int *ier); void cpgsfs(int fs); void cpgshls(int ci, float ch, float cl, float cs); void cpgshs(float angle, float sepn, float phase); void cpgsitf(int itf); void cpgslct(int id); void cpgsls(int ls); void cpgslw(int lw); void cpgstbg(int tbci); void cpgsubp(int nxsub, int nysub); void cpgsvp(float xleft, float xright, float ybot, float ytop); void cpgswin(float x1, float x2, float y1, float y2); void cpgtbox(const char *xopt, float xtick, int nxsub, \ const char *yopt, float ytick, int nysub); void cpgtext(float x, float y, const char *text); void cpgtick(float x1, float y1, float x2, float y2, float v, \ float tikl, float tikr, float disp, float orient, const char *str); void cpgupdt(void); void cpgvect(const float *a, const float *b, int idim, int jdim, \ int i1, int i2, int j1, int j2, float c, int nc, \ const float *tr, float blank); void cpgvsiz(float xleft, float xright, float ybot, float ytop); void cpgvstd(void); void cpgwedg(const char *side, float disp, float width, \ float fg, float bg, const char *label); void cpgwnad(float x1, float x2, float y1, float y2); #ifdef __cplusplus } #endif #endif giza-1.5.0/src/cpgplot.pc.in000066400000000000000000000013731477367113400156600ustar00rootroot00000000000000# Process this file with autoconf to produce a pkg-config metadata file. # Copyright 2002-2015 Daniel Price # # This file is free software; as a special exception the author gives # unlimited permission to copy and/or distribute it, with or without # modifications, as long as this notice is preserved. # # This file is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY, to the extent permitted by law; without even the # implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. prefix=@prefix@ exec_prefix=@exec_prefix@ libdir=@libdir@ includedir=@includedir@ Name: Cpgplot Description: PGPLOT/C interface for giza URL: http://giza.sourceforge.net Version: @VERSION@ Libs: -L${libdir} -lcpgplot Cflags: -I${includedir} giza-1.5.0/src/giza-annotate.c000066400000000000000000000131301477367113400161560ustar00rootroot00000000000000/* giza - a scientific plotting library built on cairo * * Copyright (c) 2010 James Wetter and Daniel Price * Copyright (c) 2010-2012 Daniel Price * * This library is free software; and you are welcome to redistribute * it under the terms of the GNU General Public License * (GPL, see LICENSE file for details) and the provision that * this notice remains intact. If you modify this file, please * note section 5a) of the GPLv3 states that: * * a) The work must carry prominent notices stating that you modified * it, and giving a relevant date. * * This software is distributed "AS IS", with ABSOLUTELY NO WARRANTY. * See the GPL for specific language governing rights and limitations. * * The Original code is the giza plotting library. * * Contributor(s): * James Wetter * Daniel Price (main contact) */ #include "giza-private.h" #include "giza-io-private.h" #include "giza-transforms-private.h" #include "giza-window-private.h" #include #include /** * Text: giza_annotate * * Synopsis: Writes text with a position relative to the viewport. * * Input: * -side :- Must contain a character 'B','L','T' * or 'R' specifying the bottom, left, * top or right margin respectively. The * position of the text will be relative * to the specified side. * -displacement :- The displacement of the text from the * edge of the view-port specified in * side, measured out of the view-port in * units of character height. * -coord :- The location of the text along the edge * of the view port specified in side, * measured as a fraction of that size * -justification :- Specifies the justification of the text. * 0.0 means the left most edge of the string * will be aligned with coord, 1.0 means the * right most edge of the string will be * aligned with coord etc. * -string :- The text that will be displayed. */ void giza_annotate (const char *side, double displacment, double coord, double justification, const char *string) { if (!_giza_check_device_ready ("giza_annotate")) { return; } if (!side) { _giza_warning ("giza_annotate", "No side argument passed, skipping annotate"); return; } int oldTrans = _giza_get_trans (); /* work out where to put the text (done in world coords) */ _giza_set_trans (GIZA_TRANS_WORLD); double x = 0, y = 0, angle = 0; double xch, ych; giza_get_character_size (GIZA_UNITS_WORLD, &xch, &ych); giza_window_t Win = Dev[id].Win; /* check which side to draw on */ /* if drawing along the bottom */ if (strchr (side, 'B') || strchr (side, 'b')) { /* find the position on the x axis to place text */ x = Win.xmin + (Win.xmax - Win.xmin) * coord; /* shift the position of the text away from the viewport by displacement */ y = Win.ymin - (ych * displacment); } /* if drawing along the top */ else if (strchr (side, 'T') || strchr (side, 't')) { /* find the position on the x axis to place text */ x = Win.xmin + (Win.xmax - Win.xmin) * coord; /* shift the position of the text away from the viewport by displacement */ y = Win.ymax + ych * (displacment - 0.5); } /* if drawing along the left */ else if (strchr (side, 'L') || strchr (side, 'l')) { if (strchr (side, 'V') || strchr (side, 'v')) { /* find the position on the y axis */ y = Win.ymin + (Win.ymax - Win.ymin) * coord - ych * 0.25; /* find the distance from the y axis */ x = Win.xmin - (xch * displacment); /* Set the angle */ angle = 0; } else { /* find the position on the y axis to place text */ y = Win.ymin + (Win.ymax - Win.ymin) * coord; /* shift the position of the text away from the viewport by displacement */ x = Win.xmin - (xch * displacment); /* set the angle */ angle = 90; } } /* if drawing along the right */ else if (strchr (side, 'R') || strchr (side, 'r')) { if (strchr (side, 'V') || strchr (side, 'v')) { /* find the position on the y axis */ y = Win.ymin + (Win.ymax - Win.ymin) * coord - ych * 0.25; /* find the distance from the y axis */ x = Win.xmax + (xch * displacment); /* Set the angle */ angle = 0; } else { /* find the position on the y axis to place text */ y = Win.ymin + (Win.ymax - Win.ymin) * coord; /* shift the position of the text away from the view port by displacement */ x = Win.xmax + (xch * displacment); /* set the angle */ angle = 90; } } else { _giza_warning ("giza_annotate", "invalid side string, skipping annotate."); return; } giza_ptext (x, y, angle, justification, string); _giza_set_trans (oldTrans); giza_flush_device (); } /** * Text: giza_annotate_float * * Synopsis: The same functionality as giza_annotate but takes floats instead of doubles. * * See Also: giza_annotate */ void giza_annotate_float (const char *side, float displacment, float coord, float justification, const char *string) { giza_annotate (side, (double) displacment, (double) coord, (double) justification, string); } giza-1.5.0/src/giza-arrow-style-private.h000066400000000000000000000016421477367113400203170ustar00rootroot00000000000000/* giza - a scientific plotting library built on cairo * * Copyright (c) 2010 James Wetter and Daniel Price * Copyright (c) 2010-2012 Daniel Price * * This library is free software; and you are welcome to redistribute * it under the terms of the GNU General Public License * (GPL, see LICENSE file for details) and the provision that * this notice remains intact. If you modify this file, please * note section 5a) of the GPLv3 states that: * * a) The work must carry prominent notices stating that you modified * it, and giving a relevant date. * * This software is distributed "AS IS", with ABSOLUTELY NO WARRANTY. * See the GPL for specific language governing rights and limitations. * * The Original code is the giza plotting library. * * Contributor(s): * James Wetter * Daniel Price (main contact) */ void _giza_init_arrow_style (void); giza-1.5.0/src/giza-arrow-style.c000066400000000000000000000073671477367113400166540ustar00rootroot00000000000000/* giza - a scientific plotting library built on cairo * * Copyright (c) 2010 James Wetter and Daniel Price * Copyright (c) 2010-2012 Daniel Price * * This library is free software; and you are welcome to redistribute * it under the terms of the GNU General Public License * (GPL, see LICENSE file for details) and the provision that * this notice remains intact. If you modify this file, please * note section 5a) of the GPLv3 states that: * * a) The work must carry prominent notices stating that you modified * it, and giving a relevant date. * * This software is distributed "AS IS", with ABSOLUTELY NO WARRANTY. * See the GPL for specific language governing rights and limitations. * * The Original code is the giza plotting library. * * Contributor(s): * James Wetter * Daniel Price (main contact) */ #include "giza-private.h" #include "giza-arrow-style-private.h" #include "giza-io-private.h" #include #define GIZA_DEFAULT_FILL 1 #define GIZA_DEFAULT_ANGLE 45.0 #define GIZA_DEFAULT_CUTBACK 0.3 /** * Settings: giza_set_arrow_style * * Synopsis: Sets the style of arrow head to be used for arrows drawn with giza_arrow. * * Input: * -fillStyle :- Sets the fill style. See giza_set_fill * -angle :- Sets the acute angle of the arrow head. Can * range from 0.0 to 90. * -cutback :- The fraction of the back of the arrow head that is cut back. * 0.0 gives a triangular arrow head, 1.0 gives >. */ void giza_set_arrow_style (int fillStyle, double angle, double cutback) { if (!_giza_check_device_ready ("giza_set_arrow_style")) return; if (angle < 0. || angle > 90.) { _giza_warning ("giza_set_arrow_style", "Invalid angle, angle set to default"); angle = GIZA_DEFAULT_ANGLE; } if (cutback < 0. || cutback > 1.) { _giza_warning ("giza_set_arrow_style", "Invalid cutback, cutback set to default"); cutback = GIZA_DEFAULT_CUTBACK; } Dev[id].Arrow.fs = fillStyle; Dev[id].Arrow.angle = angle; Dev[id].Arrow.cutback = cutback; } /** * Settings: giza_set_arrow_style_float * * Synopsis: Same functionality as giza_set_arrow_style but takes floats instead of * doubles. * * See Also: giza_set_arrow_style */ void giza_set_arrow_style_float (int fillStyle, float angle, float cutback) { giza_set_arrow_style (fillStyle, (double) angle, (double) cutback); } /** * Settings: giza_get_arrow_style * * Synopsis: Queries the current arrow style settings, as set by giza_set_arrow_style. * * Input: * -fillStyle :- Gets set to the current fillstyle. * -angle :- Gets set to the current angle. * -cutback :- Gets set to the current cutback. * * See Also: giza_set_arrow_style */ void giza_get_arrow_style (int *fillStyle, double *angle, double *cutback) { if (!_giza_check_device_ready ("giza_get_arrow_style")) { *fillStyle = GIZA_DEFAULT_FILL; *angle = GIZA_DEFAULT_ANGLE; *cutback = GIZA_DEFAULT_CUTBACK; return; } *fillStyle = Dev[id].Arrow.fs; *angle = Dev[id].Arrow.angle; *cutback = Dev[id].Arrow.cutback; } /** * Settings: giza_get_arrow_style_float * * Synopsis: Same functionality as giza_get_arrow_style, but takes floats instead of doubles. * * See Also: giza_get_arrow_style */ void giza_get_arrow_style_float (int *fillStyle, float *angle, float *cutback) { double dangle, dcutback; giza_get_arrow_style (fillStyle, &dangle, &dcutback); *angle = (float) dangle; *cutback = (float) dcutback; } /** * Sets the arrow style to defaults. */ void _giza_init_arrow_style (void) { Dev[id].Arrow.fs = GIZA_DEFAULT_FILL; Dev[id].Arrow.angle = GIZA_DEFAULT_ANGLE; Dev[id].Arrow.cutback = GIZA_DEFAULT_CUTBACK; } giza-1.5.0/src/giza-arrow.c000066400000000000000000000131671477367113400155110ustar00rootroot00000000000000/* giza - a scientific plotting library built on cairo * * Copyright (c) 2010 James Wetter and Daniel Price * Copyright (c) 2010-2012 Daniel Price * * This library is free software; and you are welcome to redistribute * it under the terms of the GNU General Public License * (GPL, see LICENSE file for details) and the provision that * this notice remains intact. If you modify this file, please * note section 5a) of the GPLv3 states that: * * a) The work must carry prominent notices stating that you modified * it, and giving a relevant date. * * This software is distributed "AS IS", with ABSOLUTELY NO WARRANTY. * See the GPL for specific language governing rights and limitations. * * The Original code is the giza plotting library. * * Contributor(s): * James Wetter * Daniel Price (main contact) */ #include "giza-private.h" #include "giza-fill-private.h" #include "giza-stroke-private.h" #include "giza-arrow-style-private.h" #include "giza-transforms-private.h" #include #include /** * Drawing: giza_arrow * * Synopsis: Draws an arrow. The style of the head of the arrow is set * by giza_set_arrow_style. * * Input: * -x1 :- The world x-coord of the tail of the arrow * -y1 :- The world y-coord of the tail of the arrow * -x2 :- The world x-coord of the head of the arrow * -y2 :- The world y-coord of the head of the arrow * * See Also: giza_set_arrow_style, giza_arrow_float */ void giza_arrow (double x1, double y1, double x2, double y2) { if (!_giza_check_device_ready ("giza_arrow")) return; /* Set the current transformation to world coords */ int oldTrans = _giza_get_trans (); _giza_set_trans (GIZA_TRANS_WORLD); /* convert the points to device coords */ cairo_user_to_device (Dev[id].context, &x1, &y1); cairo_user_to_device (Dev[id].context, &x2, &y2); /* Set the current transformation to the idenity */ _giza_set_trans (GIZA_TRANS_IDEN); double xpts[4], ypts[4], dx, dy, chx, chy, dxUnit, dyUnit, magnitude; double dxPerp, dyPerp, sinangle, cosangle; giza_arrow_t Arrow = Dev[id].Arrow; /* set dx and dy to the change in the x and y direction respectively */ dx = x2 - x1; dy = y2 - y1; /* Get the character size in device coords and scale a little */ giza_get_character_size (GIZA_UNITS_DEVICE, &chx, &chy); chx = 1.0 * chx; chy = 1.0 * chy; if (chx > 0) { if (!(_giza_equal(dx,0.) && _giza_equal(dy,0.))) { /* find a unit vector in the direction of the arrow */ magnitude = sqrt (dx * dx + dy * dy); dxUnit = dx / magnitude; dyUnit = dy / magnitude; /* find a perpendicular unit vector */ if (_giza_equal(dxUnit,0.)) { dxPerp = 1.; dyPerp = 0.; } else if (_giza_equal(dyUnit,0.)) { dxPerp = 0.; dyPerp = 1.; } else { dxPerp = 1.; dyPerp = -dxUnit / dyUnit; magnitude = sqrt(dxPerp * dxPerp + dyPerp * dyPerp); dxPerp = dxPerp / magnitude; dyPerp = dyPerp / magnitude; } if (magnitude > 0) { dx = dx/magnitude; dy = dy/magnitude; } else { dx = 1.; dy = 0.; magnitude = 1.0; } /* Calculate where the vertices of the arrow head are */ /* The point */ xpts[0] = x2; ypts[0] = y2; /* 'above' the unit vector * Note that we want the hypoteneuse of the arrow head * to always have same length regardless of the angle: * |\ * b | \ r * | \ * -----| \ * hence we use sin(angle) = b/r, with r=1 to get b. */ sinangle = sin (0.5 * Arrow.angle * GIZA_DEG_TO_RAD); cosangle = cos (0.5 * Arrow.angle * GIZA_DEG_TO_RAD); xpts[1] = x2 - (dxUnit* cosangle + dxPerp * sinangle) * chx; ypts[1] = y2 - (dyUnit* cosangle + dyPerp * sinangle) * chy; /* on the unit vector, the cutback */ xpts[2] = x2 - (1. - Arrow.cutback) * chx * dxUnit * cosangle; ypts[2] = y2 - (1. - Arrow.cutback) * chy * dyUnit * cosangle; /* 'below' the unit vector */ xpts[3] = x2 - (dxUnit* cosangle - dxPerp * sinangle) * chx ; ypts[3] = y2 - (dyUnit* cosangle - dyPerp * sinangle) * chy; /* draw the head */ cairo_move_to (Dev[id].context, xpts[0], ypts[0]); cairo_line_to (Dev[id].context, xpts[1], ypts[1]); cairo_line_to (Dev[id].context, xpts[2], ypts[2]); cairo_line_to (Dev[id].context, xpts[3], ypts[3]); cairo_line_to (Dev[id].context, xpts[0], ypts[0]); /* fill it in! */ double oldMiter = cairo_get_miter_limit (Dev[id].context); cairo_set_miter_limit (Dev[id].context, 0.); giza_set_fill (Arrow.fs); cairo_stroke_preserve (Dev[id].context); _giza_fill (); cairo_set_miter_limit (Dev[id].context, oldMiter); /* draw the tail */ cairo_move_to (Dev[id].context, x1, y1); cairo_line_to (Dev[id].context, xpts[2], ypts[2]); _giza_stroke (); } } _giza_set_trans (oldTrans); giza_flush_device (); } /** * Drawing: giza_arrow_float * * Synopsis: Same functionality as giza_arrow. * * See Also: giza_arrow, giza_set_arrow_style */ void giza_arrow_float (float x1, float y1, float x2, float y2) { giza_arrow ((double) x1, (double) y1, (double) x2, (double) y2); } giza-1.5.0/src/giza-axis.c000066400000000000000000000256141477367113400153230ustar00rootroot00000000000000/* giza - a scientific plotting library built on cairo * * Copyright (c) 2010 James Wetter and Daniel Price * Copyright (c) 2010-2022 Daniel Price * * This library is free software; and you are welcome to redistribute * it under the terms of the GNU General Public License * (GPL, see LICENSE file for details) and the provision that * this notice remains intact. If you modify this file, please * note section 5a) of the GPLv3 states that: * * a) The work must carry prominent notices stating that you modified * it, and giving a relevant date. * * This software is distributed "AS IS", with ABSOLUTELY NO WARRANTY. * See the GPL for specific language governing rights and limitations. * * The Original code is the giza plotting library. * * Contributor(s): * James Wetter * Daniel Price (main contact) */ #include "giza-private.h" #include "giza-transforms-private.h" #include "giza-io-private.h" #include "giza-stroke-private.h" #include "giza-window-private.h" #include "giza-viewport-private.h" #include "giza-drivers-private.h" #include "giza-tick-private.h" #include #include #include /** * Drawing: giza_axis * * Synopsis: Draw a labelled axis from (x1,y1) to (x2,y2) * * Input: * -opt :- String of options for the axis. * The options may be in any order. See * below for details * -x1 :- starting x position in world coordinates * -y1 :- starting y position in world coordinates * -x2 :- finishing x position in world coordinates * -y2 :- finishing y position in world coordinates * -v1 :- axis value at starting position * -v2 :- axis value at finishing position * -tick :- The distance, in world coordinates, * between major ticks on the axis. * If 0.0 the interval is chosen * automatically. * -nsub :- The number of minor ticks to be placed * between each major tick. If 0 the * number is chosen automatically. Ignored if log axis. * -dmajl :- Length of major tick marks drawn to "left/bottom" of axis * in units of character height * -dmajr :- Length of major tick marks drawn to "right/top" of axis * in units of character height * -fmin :- Length of minor tick marks as fraction of major * -disp :- Displacement of labels from axis * in units of character height * -angle :- Label orientation; angle between text and direction of axis; in degrees * * Options: * -T :- Draw major ticks. * -S :- Draw minor ticks. * -N :- Label the axis * -L :- Label axis logarithmically * -H :- Hide the axis (draw ticks only) * -I :- 'Invert' tick marks, draw them on opposite side * -1 :- Force decimal labelling instead of automatic choice (see giza_format_number) * -2 :- Force exponential labelling instead of automatic choice (see giza_format_number) * * See Also: giza_axis_float, giza_box, giza_tick, giza_box_time * */ void giza_axis (const char *opt, double x1, double y1, double x2, double y2, double v1, double v2, double tick, int nsub, double dmajl, double dmajr, double fmin, double disp, double angle) { if (!_giza_check_device_ready ("giza_axis")) return; _giza_expand_clipping (); int oldBuf; giza_get_buffering(&oldBuf); /* Table of log10() values for log axis ticks */ double logTab[9]; int k; for (k = 0; k < 9; k++) { logTab[k] = log10 (k + 1); } /* Begin buffering */ giza_begin_buffer (); int draw_majticks = 0, draw_minticks = 0, draw_labels = 0, draw_log = 0, draw_invert = -1, draw_axis = 1; int number_format = Dev[id].number_format; double intervalMaj, intervalMin, val, ratio; int nv, np; int nMinTicks, major; double majTickL_l, subTickL_l, currentTickL_l; double majTickL_r, subTickL_r, currentTickL_r; char tmp[100]; int i, i1, i2, j, jmax, jtmp; double x,y,theta,theta_deg,dr; /* set x-options */ for (i = 0; opt[i]; i++) { switch (opt[i]) { case ('h'): case ('H'): draw_axis = 0; break; case ('t'): case ('T'): draw_majticks = 1; break; case ('s'): case ('S'): draw_minticks = 1; break; /* Any of nmNM means labels need to be drawn. mM says to do so unconventionally. */ case ('n'): case ('N'): draw_labels = 1; break; case ('l'): case ('L'): draw_log = 1; break; case ('i'): case ('I'): draw_invert = 1; break; case ('1'): number_format = GIZA_NUMBER_FORMAT_DEC; break; case ('2'): number_format = GIZA_NUMBER_FORMAT_EXP; break; default: break; } } int oldTrans = _giza_get_trans (); _giza_set_trans (GIZA_TRANS_WORLD); /* get the angle to rotate in viewport coordinates */ theta = atan2(y2-y1,x2-x1); theta_deg = theta / GIZA_DEG_TO_RAD; dr = sqrt(pow(x2-x1,2) + pow(y2-y1,2)); cairo_matrix_t mat; cairo_matrix_init_translate(&mat,x1,y1); cairo_matrix_rotate(&mat,theta); double xch, ych; giza_get_character_size (GIZA_UNITS_WORLD, &xch, &ych); /* draw the line */ if (draw_axis) { cairo_move_to (Dev[id].context, x1, y1); cairo_line_to (Dev[id].context, x2, y2); } /* set major tick length in pixels */ majTickL_l = Dev[id].fontExtents.max_x_advance * dmajl; majTickL_r = Dev[id].fontExtents.max_x_advance * dmajr; subTickL_l = 0.; subTickL_r = 0.; /* convert to world coords */ cairo_device_to_user_distance (Dev[id].context, &subTickL_l, &majTickL_l); cairo_device_to_user_distance (Dev[id].context, &subTickL_r, &majTickL_r); majTickL_l = -majTickL_l; majTickL_r = -majTickL_r; /* set minor tick length as a fraction of the major tick length */ subTickL_l = majTickL_l * fmin; subTickL_r = majTickL_r * fmin; /* Choose x tick intervals */ if (draw_log) { nMinTicks = 1; intervalMaj = 1.; } else if (_giza_equal(tick,0.)) { intervalMaj = 7. * Dev[id].fontExtents.max_x_advance / ((Dev[id].VP.xmax - Dev[id].VP.xmin)*Dev[id].width); if (intervalMaj > 0.2) intervalMaj = 0.2; if (intervalMaj < 0.05) intervalMaj = 0.05; intervalMaj = intervalMaj * (v2 - v1); intervalMaj = giza_round (intervalMaj, &nMinTicks); } else { intervalMaj = tick; nMinTicks = nsub; if (nsub < 1 || !draw_minticks) nMinTicks = 1; } intervalMin = intervalMaj / (double) nMinTicks; /* Only enter tick drawing if (1) any of the ticks/grid must be drawn AND (2) at least one of top, bottom or axis must be drawn because the ticks can only be drawn on any/all of these lines */ if (draw_majticks || draw_minticks) { _giza_tick_intervals (v1, v2, intervalMin, &i1, &i2); jmax = 0; /* If log axis ticks always have 9 minor ticks */ if (draw_log) jmax = 8; for (i = i1; i <= i2; i++) { for (j = 0; j <= jmax; j++) { /* log axis ticks are major when j = 0 */ major = (i % nMinTicks == 0) && draw_majticks && (j == 0); currentTickL_l = subTickL_l; currentTickL_r = subTickL_r; if (major) { currentTickL_l = majTickL_l; currentTickL_r = majTickL_r; } val = (i + logTab[j]) * intervalMin; ratio = (val - v1) / (v2 - v1); /* don't draw outside the box */ if ((val >= v2) || (val <= v1)) continue; /* are we supposed to draw this tick anyway? */ if ( !((major && draw_majticks) || draw_minticks) ) continue; /* draw tick, rotate as necessary */ _giza_draw_tick(mat,ratio,dr,currentTickL_l,currentTickL_r); } } _giza_stroke (); } /* labels */ if (draw_labels) { _giza_tick_intervals (v1, v2, intervalMaj, &i1, &i2); np = (int) floor (log10 (fabs (intervalMaj))); nv = _giza_nint (intervalMaj/pow (10., np)); for (i = i1; i <= i2; i++) { val = i * intervalMaj; ratio = (val - v1) / (v2 - v1); /* don't draw label if outside frame */ if (ratio < 0. || ratio > 1.) continue; if (draw_log) { jtmp = _giza_nint(val); if (jtmp == 1) { sprintf (tmp, "10"); } else if (jtmp == 0) { sprintf (tmp, "1"); } else { sprintf (tmp, "10^{%i}", jtmp); } } else { giza_format_number (i*nv, np, number_format, tmp, sizeof(tmp)); } /* write the label */ x = dr * ratio; y = ych * disp; cairo_matrix_transform_point (&mat,&x,&y); giza_ptext (x, y, theta_deg + angle, 0.5, tmp); } _giza_stroke (); } /* extra labels for log axis */ if (draw_labels && draw_log && (v2 - v1 < 2.)) { _giza_tick_intervals (v1, v2, intervalMin, &i1, &i2); for (i = i1 - 1; i <= i2; i++) { for (j = 1; j <= 4; j += 3) { val = (i + logTab[j]) * intervalMin; if (val <= v2 && val >= v1) { ratio = (val - v1) / (v2 - v1); val = pow (10, val); giza_format_number (j+1, _giza_nint (i * intervalMin), number_format, tmp, sizeof(tmp)); /* write the label */ x = dr * ratio; y = ych * disp; cairo_matrix_transform_point (&mat,&x,&y); giza_ptext (x, y, theta_deg + angle, 0.5, tmp); } } } } /* stroke all the paths */ int lc; giza_get_line_cap (&lc); giza_set_line_cap (CAIRO_LINE_CAP_SQUARE); _giza_stroke (); giza_set_line_cap (lc); _giza_set_trans (oldTrans); /* end buffer if it was not on before this function call */ if (!oldBuf) { giza_end_buffer (); } giza_flush_device (); /* Restore clipping */ giza_set_viewport (Dev[id].VP.xmin, Dev[id].VP.xmax, Dev[id].VP.ymin, Dev[id].VP.ymax); } /** * Drawing: giza_axis_float * * Synopsis: Same functionality as giza_axis but takes floats instead of doubles. * * See Also: giza_axis */ void giza_axis_float (const char *opt, float x1, float y1, float x2, float y2, float v1, float v2, float step, int nsub, float dmajl, float dmajr, float fmin, float disp, float angle) { if (!_giza_check_device_ready ("giza_axis")) return; giza_axis(opt, (double) x1, (double) y1, (double) x2, (double) y2, (double) v1, (double) v2, (double) step, nsub, (double) dmajl, (double) dmajr, (double) fmin, (double) disp, (double) angle); } giza-1.5.0/src/giza-band-private.h000066400000000000000000000023711477367113400167330ustar00rootroot00000000000000/* giza - a scientific plotting library built on cairo * * Copyright (c) 2010 James Wetter and Daniel Price * Copyright (c) 2010-2012 Daniel Price * * This library is free software; and you are welcome to redistribute * it under the terms of the GNU General Public License * (GPL, see LICENSE file for details) and the provision that * this notice remains intact. If you modify this file, please * note section 5a) of the GPLv3 states that: * * a) The work must carry prominent notices stating that you modified * it, and giving a relevant date. * * This software is distributed "AS IS", with ABSOLUTELY NO WARRANTY. * See the GPL for specific language governing rights and limitations. * * The Original code is the giza plotting library. * * Contributor(s): * James Wetter * Daniel Price (main contact) */ typedef struct { cairo_surface_t *onscreen; cairo_t *box; cairo_t *restore; double lw; int ls; int maxWidth; int maxHeight; } giza_band_t; extern giza_band_t Band; int _giza_init_band (int mode); void _giza_refresh_band (int mode, int nanc, const int *xanc, const int *yanc, int x2, int y2); void _giza_destroy_band (int mode); void _giza_init_band_style (void); giza-1.5.0/src/giza-band-style.c000066400000000000000000000033601477367113400164130ustar00rootroot00000000000000/* giza - a scientific plotting library built on cairo * * Copyright (c) 2010 James Wetter and Daniel Price * Copyright (c) 2010-2012 Daniel Price * * This library is free software; and you are welcome to redistribute * it under the terms of the GNU General Public License * (GPL, see LICENSE file for details) and the provision that * this notice remains intact. If you modify this file, please * note section 5a) of the GPLv3 states that: * * a) The work must carry prominent notices stating that you modified * it, and giving a relevant date. * * This software is distributed "AS IS", with ABSOLUTELY NO WARRANTY. * See the GPL for specific language governing rights and limitations. * * The Original code is the giza plotting library. * * Contributor(s): * James Wetter * Daniel Price (main contact) */ #include "giza-private.h" #include "giza-io-private.h" #include "giza-band-private.h" #include /** * Settings: giza_set_band_style * * Synopsis: Sets the line style to be used by giza_band * * Input: * -ls :- the line style for the band * -lw :- the width for the line * * See Also: giza_band, giza_get_band_style */ void giza_set_band_style (int ls, double lw) { Band.ls = ls; Band.lw = lw; } /** * Settings: giza_get_band_style * * Synopsis: Queries the current band style settings to be used by giza_band * * Output: * -ls :- the line style for the band * -lw :- the width for the line * * See Also: giza_band, giza_set_band_style */ void giza_get_band_style (int *ls, double *lw) { *ls = Band.ls; *lw = Band.lw; } /** * Initalises the default style for band */ void _giza_init_band_style (void) { Band.ls = 1; Band.lw = 0.9; } giza-1.5.0/src/giza-band.c000066400000000000000000000163271477367113400152640ustar00rootroot00000000000000/* giza - a scientific plotting library built on cairo * * Copyright (c) 2010 James Wetter and Daniel Price * Copyright (c) 2010-2012 Daniel Price * * This library is free software; and you are welcome to redistribute * it under the terms of the GNU General Public License * (GPL, see LICENSE file for details) and the provision that * this notice remains intact. If you modify this file, please * note section 5a) of the GPLv3 states that: * * a) The work must carry prominent notices stating that you modified * it, and giving a relevant date. * * This software is distributed "AS IS", with ABSOLUTELY NO WARRANTY. * See the GPL for specific language governing rights and limitations. * * The Original code is the giza plotting library. * * Contributor(s): * James Wetter * Daniel Price (main contact) */ #include "giza-private.h" #include "giza-io-private.h" #include "giza-drivers-private.h" #include "giza-band-private.h" #include #include "math.h" #define GIZA_MAX_BAND_MODES 8 /* storage of band settings, this is declared extern in the header file */ giza_band_t Band; /** * Interactive: giza_band * * Synopsis: Returns the cursor position and character typed by the user * relative to an anchor point * * Input: * -mode :- selects the type of shape to draw during input * -moveCurs :- if 1 the cursor is moved to (x, y), * if 0 the cursor is not moved. * -xanc :- the x-coord of the anchor point. * -yanc :- the y-coord of the anchor point. * -x :- Gets set to the x position of the cursor. * -y :- Gets set to the y position of the cursor. * -ch :- Gets set to the character pressed by the user. * * Return: * -1 :- The device has no cursor * -0 :- The call was successful * * Modes: * -0 or GIZA_BAND_NONE :- None, behaves like giza_get_key_press * -1 or GIZA_BAND_LINE :- Straight line drawn from anchor point * -2 or GIZA_BAND_RECTANGLE :- Hollow rectangle * -3 or GIZA_BAND_HORZLINES :- Two horizontal lines * -4 or GIZA_BAND_VERTLINES :- Two vertical lines * -5 or GIZA_BAND_HORZLINE :- Single horizontal line, ignores anchor point * -6 or GIZA_BAND_VERTLINE :- Single vertical lines, ignores anchor point * -7 or GIZA_BAND_CROSSHAIR :- Cross hair, ignores anchor point * -8 or GIZA_BAND_CIRCLE :- Circle centred on anchor point * * See Also: giza_get_key_press */ int giza_band (int mode, int moveCurs, double xanc, double yanc, double *x, double *y, char *ch) { if(!_giza_check_device_ready ("giza_band")) return 1; if (mode < 0 || mode > GIZA_MAX_BAND_MODES) { _giza_error("giza_band","Invalid band mode selected"); return 2; } double xanca[1],yanca[1]; xanca[0] = xanc; yanca[0] = yanc; return _giza_get_key_press (mode, moveCurs, 1, xanca, yanca, x, y, ch); } /** * Interactive: giza_band_float * * Synopsis: Same functionality as giza_band, but uses floats. * * See Also: giza_band */ int giza_band_float (int mode, int moveCurs, float xanc, float yanc, float *x, float *y, char *ch) { int success; double dx, dy; success = giza_band (mode, moveCurs, (double) xanc, (double) yanc, &dx, &dy, ch); *x = (float) dx; *y = (float) dy; return success; } /* * Draws over the old band and draws the new one. */ void _giza_refresh_band (int mode, int nanc, const int *xanc, const int *yanc, int x2, int y2) { if (mode <= 0 || mode > GIZA_MAX_BAND_MODES) return; if (nanc <= 0) return; /* Draw over the old band */ cairo_paint (Band.restore); giza_flush_device(); /* int topleftx = x1 - 10; int toplefty = y1 - 10; int bottomrightx = x2 + 10; int bottomrighty = y2 + 10; if (x2 - x1 <= 0) { topleftx = x2 - 10; bottomrightx = x1 + 10; } if (y2 - y1 <= 0) { toplefty = y2 - 5; bottomrighty = y1 + 5; } cairo_rectangle (Band.box, x1, y1, x2 - x1, y2 - y1); cairo_rectangle (Band.restore, x1, y1, x2 - x1, y2 - y1); cairo_reset_clip (Band.box); cairo_reset_clip (Band.restore); cairo_clip (Band.box); cairo_clip (Band.restore); */ int x1 = xanc[nanc-1]; int y1 = yanc[nanc-1]; int i,j; switch (mode) { case 1: /* Straight line */ /* Draw the band */ for (j=0;j<=1;j++) { if (j==0) { cairo_set_source_rgba (Band.box,1.,1.,1.,0.2); } else { cairo_set_source_rgba (Band.box, 0.6, 0.6, 0.6, 1.0); } cairo_move_to (Band.box, xanc[0], yanc[0]); for (i=1;i<=nanc-1;i++) { cairo_line_to (Band.box, xanc[i], yanc[i]); } /*cairo_move_to (Band.box, x1, y1);*/ cairo_line_to (Band.box, x2, y2); if (j==0) { cairo_close_path (Band.box); cairo_fill (Band.box); } else { cairo_stroke (Band.box); } } break; case 2: /* empty rectangle */ /* Draw the band */ cairo_set_source_rgba(Band.box,1.,1.,1.,0.2); cairo_rectangle (Band.box, x1, y1, x2 - x1, y2 - y1); cairo_fill(Band.box); cairo_set_source_rgba (Band.box, 0.6, 0.6, 0.6, 1.0); cairo_rectangle (Band.box, x1, y1, x2 - x1, y2 - y1); cairo_stroke(Band.box); break; case 3: /* Two horizontal lines */ cairo_move_to (Band.box, 0., y1); cairo_line_to (Band.box, Band.maxWidth, y1); cairo_move_to (Band.box, 0., y2); cairo_line_to (Band.box, Band.maxWidth, y2); cairo_stroke (Band.box); break; case 4: /* Two vertical lines */ cairo_move_to (Band.box, x1, 0.); cairo_line_to (Band.box, x1, Band.maxHeight); cairo_move_to (Band.box, x2, 0.); cairo_line_to (Band.box, x2, Band.maxHeight); cairo_stroke (Band.box); break; case 5: /* Single, horizontal line */ cairo_move_to (Band.box, 0., y2); cairo_line_to (Band.box, Band.maxWidth, y2); cairo_stroke (Band.box); break; case 6: /* Single, vertical line */ cairo_move_to (Band.box, x2, 0.); cairo_line_to (Band.box, x2, Band.maxHeight); cairo_stroke (Band.box); break; case 7: /* Crosshair */ cairo_move_to (Band.box, 0., y2); cairo_line_to (Band.box, Band.maxWidth, y2); cairo_move_to (Band.box, x2, 0.); cairo_line_to (Band.box, x2, Band.maxHeight); cairo_stroke (Band.box); break; case 8: /* Circle */ cairo_set_source_rgba(Band.box,1.,1.,1.,0.2); cairo_arc (Band.box, x1, y1, sqrt((x2-x1)*(x2-x1) + (y2-y1)*(y2-y1)), 0., 2 * M_PI); cairo_fill(Band.box); cairo_set_source_rgba (Band.box, 0.6, 0.6, 0.6, 1.0); cairo_arc (Band.box, x1, y1, sqrt((x2-x1)*(x2-x1) + (y2-y1)*(y2-y1)), 0., 2 * M_PI); cairo_stroke (Band.box); break; default: /* do not warn here (too verbose), instead warn in giza_band */ break; } } /* * Cleans up the stuff associated with the band */ void _giza_destroy_band (int mode) { if (mode == 0) return; /* Free memory */ cairo_destroy (Band.restore); cairo_destroy (Band.box); cairo_surface_destroy (Band.onscreen); /* remove the last band */ giza_flush_device (); } giza-1.5.0/src/giza-box-time.c000066400000000000000000001214341477367113400161000ustar00rootroot00000000000000/* giza - a scientific plotting library built on cairo * * Copyright (c) 2010 James Wetter and Daniel Price * Copyright (c) 2010-2012 Daniel Price * * This library is free software; and you are welcome to redistribute * it under the terms of the GNU General Public License * (GPL, see LICENSE file for details) and the provision that * this notice remains intact. If you modify this file, please * note section 5a) of the GPLv3 states that: * * a) The work must carry prominent notices stating that you modified * it, and giving a relevant date. * * This software is distributed "AS IS", with ABSOLUTELY NO WARRANTY. * See the GPL for specific language governing rights and limitations. * * The Original code is the giza plotting library. * * Contributor(s): * James Wetter * Daniel Price (main contact) */ #include "giza-private.h" #include "giza-io-private.h" #include "giza.h" #include #include #include #include #include typedef struct _tick_ntick { const double ticks; const int nsubs; } tick_ntick; typedef struct _tmstamp { char asign; int dd, hh, mm; double ss, tfrac; } tmstamp; /* located in cpgplot.c */ extern int units_giza(int pgplotunits); /* Local support routines */ void _giza_tbx1(char axis, int* doday, int dopara, double tmin, double tmax, double* tick, int* nsub, double* tscale ); tick_ntick const* _giza_tbx2(double tock, tick_ntick const* ticks, double* tick, int* nsub); void _giza_tbx3(int doday, int npl, double tscale, double tints, int nticmx, tick_ntick const** tickptrptr, tick_ntick const* ticks, char axis, int dopara, char const* str, double* tick, int* nsub ); void _giza_tbx4(int doday, char const* suptyp, char axis, int convtl, int first, double tmin, double tmax, int tscale, double tick, int do2, int dopara, int mod24); void _giza_tbx5(int doday, double tsec, tmstamp* ts); void _giza_tbx6(int doday, int mod24, int tscale, tmstamp const* ts, int ival[3], double* rval, int writ[4]); void _giza_tbx7(char const* suptyp, char signf, char asign, int ival[3], double rval, int writ[4], int sprec, int do2, char* text, int* tlen, int* last); #define MAXf(a, b) (a>b ? a : b) int _giza_npl(int nmax, int n) { int npl; if( n==0 ) npl = 1; else npl = ((int)log10(abs(n))) + 1; if( n<0 ) npl++; if( nmax>0 && npl>nmax ) _giza_error("_giza_npl", "output conversion error likely; number too big for format"); return npl; } /** * Drawing: giza_box_time * * Synopsis: Same as giza_box, but labels axes with time-style labels * i.e. DD HH MM SS as used in RA - DEC plots for Astronomy. * If this option is used then giza_set_window should have been * called with min/max given in seconds of time. * * Input: * -xopt :- As for giza_box, plus additional options below * -xtick :- The distance, in world coordinates, * between major ticks on the x-axis. * If 0.0 the interval is chosen * by giza_box_time. * -nxsub :- The number of minor ticks to be placed * between each major tick. If 0 the * number is chosen by giza_box. * -yopt :- Similar to xdraw_minticks but for the y-axis. * -ytick :- Similar to xtick but for the y-axis. * -nysub :- Similar to nxsub but for the y-axis. * * Options for xopt and yopt (same as for giza_box, plus those below): * -Z :- for time-style labelling: (DD) HH MM SS.S * -Y :- exclude the day field so labels are just HH MM SS.S (hours can be >24) * -X :- keep HH field in range (0..24) * -H :- use d,h,m,s superscripts to label numbers * -D :- use degree o, minute ' and second '' superscripts to label numbers * -F :- do not draw the first label (left- or bottom-most) * -O :- omit leading zeros in numbers < 10, i.e. 3 instead of 03 * * See Also: giza_box, giza_box_float, giza_box_time_float */ void giza_box_time (const char *xopt, double xtick, int nxsub, const char *yopt, double ytick, int nysub) { if (!_giza_check_device_ready ("giza_box_time")) return; /* follow PGPLOT approach: check if any time labelling is required at all * then do something useful, otherwise identical to PGBOX. */ /* LOGICAL XTIME, YTIME, FIRST, DODAYX, DODAYY, DO2, DOPARA, MOD24*/ int xtime = 0, ytime = 0, dodayx = 0, dodayy = 0, mod24 = 0, dopara = 0, first = 0, do2 = 0; int nxsubd = nxsub, nysubd = nysub; char* suptyp = NULL; char* cptr; double xtickd=xtick, ytickd=ytick, tscalx, tscaly; /* Need to make a copy of the x/y options for we may need to modify them */ char* xopt_cp = strdup(xopt); char* yopt_cp = (xopt_cp == NULL ? NULL : strdup(yopt)); if( xopt_cp==NULL || yopt_cp==NULL ) { if( xopt_cp!=NULL ) free(xopt_cp); if( yopt_cp!=NULL ) free(yopt_cp); _giza_error("giza_box_time", "out of memory/failure to strdup() x or y opt"); return; } /* Now that we have a copy of the strings we can easily upcase them - makes parsing easier */ for(cptr = xopt_cp; *cptr; cptr++ ) *cptr = toupper(*cptr); for(cptr = yopt_cp; *cptr; cptr++ ) *cptr = toupper(*cptr); /* X-axis */ if( strchr(xopt_cp, 'Z') ) { /* possible request time axis - check if OK, not < 1ms */ if( fabs(Dev[id].Win.xmax - Dev[id].Win.xmin)<0.001 ) _giza_error("giza_box_time", "X-axis time interval too small (< 1 ms) for time labels"); else { xtime = 1; dodayx = 1; if( strchr(xopt_cp, 'Y') || strchr(xopt_cp, 'D') ) dodayx = 0; dopara = 1; _giza_tbx1('X', &dodayx, dopara, Dev[id].Win.xmin, Dev[id].Win.xmax, &xtickd, &nxsubd, &tscalx); } } /* Repeat for Y-axis */ if( strchr(yopt_cp, 'Z') ) { /* possible request time axis - check if OK, not < 1ms */ if( fabs(Dev[id].Win.ymax - Dev[id].Win.ymin)<0.001 ) _giza_error("giza_box_time", "Y-axis time interval too small (< 1 ms) for time labels"); else { ytime = 1; dodayy = 1; if( strchr(yopt_cp, 'Y') || strchr(yopt_cp, 'D') ) dodayy = 0; dopara = 1; if( strchr(yopt_cp, 'V') ) dopara = 0; _giza_tbx1('Y', &dodayy, dopara, Dev[id].Win.ymin, Dev[id].Win.ymax, &ytickd, &nysubd, &tscaly); } } /* C Parse options list. For call to PGBOX when doing time labelling, we C don't want L (log), N or M (write numeric labels). */ char x_repl[3] = {0,}, y_repl[3] = {0,}; /* remember replacements */ char* p; char* d; char const* r; char const*const repl = "LNM"; if( xtime ) { for(r = repl, d=x_repl; *r; r++ ) if( (p=strchr(xopt_cp, *r))!=NULL ) *d++ = *p, *p = ' '; } if( ytime ) { for(r = repl, d=y_repl; *r; r++ ) if( (p=strchr(yopt_cp, *r))!=NULL ) *d++ = *p, *p = ' '; } /* Now we let the orginal box() fn draw w/o labels */ giza_box(xopt_cp, xtickd, nxsubd, yopt_cp, ytickd, nysubd); /* C Add (DD) HH MM SS labels if desired. Go back to the original user C specified options list. */ /* put back what we replaced */ for( p=x_repl, d=strchr(xopt_cp, ' '); *p; p++, d=strchr(d, ' ') ) *d = *p; for( p=y_repl, d=strchr(yopt_cp, ' '); *p; p++, d=strchr(d, ' ') ) *d = *p; /* Handle x-axis */ if( xtime && (strchr(xopt_cp, 'N') || strchr(xopt_cp, 'M')) ) { first = 1; if( strchr(xopt_cp, 'F') ) first = 0; suptyp = "NONE"; if( strchr(xopt_cp, 'D') ) suptyp = "DMS"; if( strchr(xopt_cp, 'H') ) suptyp = "DHMS"; do2 = 1; if( strchr(xopt_cp, 'O') ) do2 = 0; dopara = 1; mod24 = 0; if( strchr(xopt_cp, 'X') ) mod24 = 1; if( strchr(xopt_cp, 'N') ) _giza_tbx4(dodayx, suptyp, 'X', 1, first, Dev[id].Win.xmin, Dev[id].Win.xmax, tscalx, xtickd, do2, dopara, mod24); if( strchr(xopt_cp, 'M') ) _giza_tbx4(dodayx, suptyp, 'X', 0, first, Dev[id].Win.xmin, Dev[id].Win.xmax, tscalx, xtickd, do2, dopara, mod24); } /* Repeat for y-axis */ if( ytime && (strchr(yopt_cp, 'N') || strchr(yopt_cp, 'M')) ) { first = 1; if( strchr(yopt_cp, 'F') ) first = 0; suptyp = "NONE"; if( strchr(yopt_cp, 'D') ) suptyp = "DMS"; if( strchr(yopt_cp, 'H') ) suptyp = "DHMS"; dopara = 1; if( strchr(yopt_cp, 'V') ) dopara = 0; do2 = 1; if( dopara && strchr(yopt_cp, 'O') ) do2 = 0; mod24 = 0; if( strchr(xopt_cp, 'X') ) mod24 = 1; if( strchr(xopt_cp, 'N') ) _giza_tbx4(dodayy, suptyp, 'Y', 1, first, Dev[id].Win.ymin, Dev[id].Win.ymax, tscaly, ytickd, do2, dopara, mod24); if( strchr(xopt_cp, 'M') ) _giza_tbx4(dodayy, suptyp, 'Y', 0, first, Dev[id].Win.ymin, Dev[id].Win.ymax, tscaly, ytickd, do2, dopara, mod24); } free(xopt_cp); free(yopt_cp); } /** * Drawing: giza_box_time_float * * Synopsis: Same functionality as giza_box_time but takes floats instead of doubles. * * See Also: giza_box_time, giza_box */ void giza_box_time_float (const char *xopt, float xtick, int nxsub, const char *yopt, float ytick, int nysub) { if (!_giza_check_device_ready ("giza_box_time_float")) return; giza_box_time (xopt, (double) xtick, nxsub, yopt, (double) ytick, nysub); } /*************************************************************************************************** * * * Below follow local support routines for PGTBOX(...) * * They should not be called by the user directly. * * ***************************************************************************************************/ /* C Work out what the finest units the time labels will be in and C return the tick increments if the user does not set them. C C This is a support routine for PGTBOX and should not C be called by the user. C C Input: C AXIS : 'X' or 'Y' for use in determining if labels overwrite C TMIN : Start time in seconds C TMAX : End time in seconds C DOPARA : True if label to be parallel to axis, else perpendicular C Input/output: C DODAY : Write labels as DD HH MM SS.S else HH MM SS.S with C hours ranging above 24. Useful for declination labels C TICK : Major tick interval in seconds. If 0.0 on input, will C be set here. C NSUB : Number of minor ticks between major ticks. If 0 on input C will be set here. C Outputs: C TSCALE : Determines finest unit of labelling C (1 => ss, 60 => mm, 3600 => hh, 3600*24 => dd) C 05-Sep-1988 - new routine (Neil Killeen) C 08-Apr-1991 - correctly work out HH MM SS when the time > 60 h [nebk] C 20-Apr-1991 - revise to add support for new DD (day) field and C do lots of work on tick algorithm [nebk] C 10-Jun-1993 - deal with user given ticks & rename from PGTIME [nebk/jm] */ void _giza_tbx1( char axis, int* doday, int dopara, double tmin, double tmax, double* tick, int* nsub, double* tscale ) { /* Time scales + subdivisions that (1) look good and (2) feel natural to the user */ /* A: when time scale is seconds */ static const tick_ntick ticks1[] = { {0.001, 4}, {0.002, 4}, {0.005, 2}, {0.01, 4}, {0.02, 4}, {0.05, 2}, {0.1, 4}, {0.2, 4}, {0.5, 2}, {1, 4}, {2, 4}, {3, 3}, {4, 4}, {5, 5}, {6, 3}, {10, 2}, {15, 3}, {20, 2}, {30, 3}, /* leave this one as last (sentinel) */ {0,0} }; /* B: when time scale is minutes */ static const tick_ntick ticks2[] = { {1, 4}, {2, 4}, {3, 3}, {4, 4}, {5, 5}, {6, 3}, {10,2}, {15,3}, {20,2}, {30,3}, /* leave this one as last (sentinel) */ {0,0} }; /* C: when time scale is hours */ static const tick_ntick ticks3[] = { {1,4}, {2,4}, {3,3}, {4,4}, {6,3}, {12,2}, /* leave this one as last (sentinel) */ {0,0} }; /* D: time scale is days */ static const tick_ntick ticks4[] = { {1,4}, {2,4}, {3,3}, {4,4}, {5,5}, {6,3}, {8,4}, {9,3}, /* leave this one as last (sentinel) */ {0,0} }; const double secday = 24*3600; int npl, ntick; char str[15] = {0,}; double tock, tock2, tint, tints, tmins, tmaxs; const int nticmx = 8; tick_ntick const* tickptr = NULL; if( fabs(tmin)= tint ) { _giza_error("_giza_tbx1", "user given tick bigger than time interval; will auto-tick"); *tick = 0.0; } else if( *tick<0.001 ) { _giza_error("_giza_tbx1", "user given tick too small (< 1ms); will auto-tick"); *tick = 0.0; } else { if( !_giza_equal(fmod(*tick, 60.), 0) ) { *tscale = 1; } else if( !_giza_equal(fmod(*tick, 3600.), 0) ) { *tscale = 60; } else if( !*doday ) { *tscale = 3600; } else if( !_giza_equal(fmod(*tick, secday), 0) ) { *tscale = 3600; } else { *tscale = secday; } } if( *nsub==0 ) *nsub = 2; return; } /* C Work out label units depending on time interval if user C wants auto-ticking */ if( tint<(5*60) ) *tscale = 1; else if( tint<(5*3600) ) *tscale = 60; else { if( !*doday ) *tscale = 3600; else { if( tint<(5*secday) ) *tscale = 3600; else *tscale = secday; } } /* C Divide interval into NTICK major ticks and NSUB minor intervals C The tick choosing algorithm is not very robust, so watch out C if you fiddle anything. */ tints = tint / *tscale; if( _giza_equal(*tscale, 1) ) { /* C Time in seconds. If the time interval is very small, may need to C label with up to 3 decimal places. Have less ticks to help prevent C label overwrite. STR is a dummy tick label to assess label C overwrite potential */ if( dopara ) { if( tints<=0.01 ) { ntick = 4; strcpy(str,"60.423"); } else if( tints<0.1 ) { ntick = 5; strcpy(str,"60.42"); } else if( tints<=1 ) { ntick = 6; strcpy(str,"60.4"); } else { ntick = 6; strcpy(str,"60s"); } } else { /* not parallel */ ntick = 6; str[0] = '\0'; } tock = tints / ntick; tickptr = _giza_tbx2(tock, ticks1, tick, nsub); _giza_tbx3(*doday, 0, *tscale, tints, nticmx, &tickptr, ticks1, axis, dopara, str, tick, nsub); } else if( _giza_equal(*tscale, 60) ) { /* time in minutes */ ntick = 6; tock = tints / ntick; tickptr = _giza_tbx2(tock, ticks2, tick, nsub); if( dopara ) strcpy(str,"42m"); else str[0] = '\0'; _giza_tbx3(*doday, 0, *tscale, tints, nticmx, &tickptr, ticks2, axis, dopara, str, tick, nsub); } else { if( _giza_equal(*tscale, 3600) && *doday ) { /* time in hours with the day field */ ntick = 6; tock = tints / ntick; tickptr = _giza_tbx2(tock, ticks3, tick, nsub); if( dopara ) strcpy(str,"42h"); else str[0] = '\0'; _giza_tbx3(*doday, 0, *tscale, tints, nticmx, &tickptr, ticks3, axis, dopara, str, tick, nsub); } else { /* C Time in hours with no day field or time in days. Have less C ticks for big numbers or the parallel labels will overwrite. */ if( dopara ) { tmins = fabs(tmin) / *tscale; tmaxs = fabs(tmax) / *tscale; npl = _giza_npl(-1, (int)rint(MAXf(tints, MAXf(tmins, tmaxs)))); if( npl<=3 ) ntick = 6; else if( npl==4 ) ntick = 5; else ntick = 4; strcpy(str,"345678912"); str[npl-1] = 'd'; str[npl ] = '\0'; } else { str[0] = '\0'; ntick = 6; } tock = tints / ntick; npl = _giza_npl(-1, (int)rint(tock)); tock2 = tock / pow(10, npl-1); tickptr = _giza_tbx2(tock2, ticks4, tick, nsub); *tick = *tick * pow(10, npl-1); _giza_tbx3(*doday, 0, *tscale, tints, nticmx, &tickptr, ticks4, axis, dopara, str, tick, nsub); } } /* C Convert tick to seconds */ *tick = *tick * *tscale; } /* C Find the nearest tick in a list to a given value. C C This is a support routine for PGTBOX and should not be called C by the user. C C Input: C TOCK : Try to find the nearest tick in the list to TOCK C NTICKS : Number of ticks in list C TICKS : List of ticks C NSUBS : List of number of minor ticks between ticks to go with TICKS C Output: C TICK : The selected tick C ITICK : The index of the selected tick from the list TICKS C Input/output C NSUB : Number of minor ticks between major ticks. If 0 on input C will be set here. C C 10-Jun-1993 - new routine [nebk] Harro Verkouter: use a list of C-structs to combine tick values + number of subdivisions in stead of separate lists. */ tick_ntick const* _giza_tbx2(double tock, tick_ntick const* ticks, double* tick, int* nsub) { int nsubd = *nsub; double dmin = strtod("Inf", NULL); tick_ntick const* rv = NULL; while( ticks->nsubs ) { double const diff = fabs(tock - ticks->ticks); if( diffticks; if( nsubd==0 ) *nsub = ticks->nsubs; dmin = diff; } ticks++; } return rv; } /* C Try to see if label overwrite is going to occur with this tick C selection, or if there are going to be more than a reasonable C number of ticks in the displayed time range. If so, choose, C if available, the next tick (bigger separation) up in the list. C If the overwrite requires that we would need to go up to the bext C TSCALE, give up. They will need to choose a smaller character size C C This is a support routine for PGTBOX and should not C be called by the user. C C Input: C DODAY : True if day field being used C NPL : Number of characters needed to format TICK on input C TSCALE : Dictates what the finest units of the labelling are. C 1 = sec, 60 = min, 3600 = hr, 24*3600 = days C TINTS : Absolute time interval in units of TSCALE C NTICMX : Max. reasonable number of ticks to allow in the time range C NTICKS : Number of ticks in list of ticks to choose from C TICKS : List of ticks from which the current tick was chosen C NSUBS : List of number of minor ticks/major tick to choose NSUB from C ITICK : Index of chosen tick in list TICKS C AXIS : 'X' or 'Y' axis C DOPARA : Labels parallel or perpendicualr to axis C STR : A typical formatted string used for checking overwrite C Input/output: C TICK : Current major tick interval in units of TSCALE. May be C made larger if possible if overwrite likely. C NSUB : Number of minor ticks between major ticks. C C 10-Jun-1993 - new routine [nebk] */ void _giza_tbx3( int doday, int npl, double tscale, double tints, int nticmx, tick_ntick const** tickptrptr, tick_ntick const* ticks, char axis, int dopara, char const* str, double* tick, int* nsub ) { double lens, lenx, leny; int const ntick = (int)(tints / *tick); /* test for overflow in normalized device coordinates; if the total length of the tick strings becomes a significant fraction of the viewport it's time to find a better scale */ giza_qtextlen(GIZA_UNITS_NORMALIZED, str, &lenx, &leny); lens = lenx; if( (dopara && axis=='Y') || (!dopara && axis=='X') ) lens = leny; int const overflow = dopara && ((ntick * lens) > 0.85); /* No action req'd if neither overflow detected nor the amount of ticks larger than what's deemed a useful maximum */ if( !overflow && ntick<=nticmx ) return; /* OK see if there's a next-better suited tick interval */ if( _giza_equal(tscale, 1) || _giza_equal(tscale, 60) || (_giza_equal(tscale, 3600) && doday) ) { /* C Time in seconds or minutes, or in hours with a day field */ /* only if there IS a next tick_ntick struct and it still fits */ if( ((*tickptrptr)+1)->nsubs && ((*tickptrptr)+1)->ticksticks; *nsub = (*tickptrptr)->nsubs; } } else { /*C Time in hours and no day field or time in days */ /* Check IF there is a next one */ if( ((*tickptrptr)+1)->nsubs ) { *tickptrptr = (*tickptrptr)+1; *tick = (*tickptrptr)->ticks * pow(10, npl-1); *nsub = (*tickptrptr)->nsubs; } else { /* Otherwise fall back to smallest scaled up by 10** something */ if( (ticks->ticks * pow(10, npl)) < tints ) { *tickptrptr = ticks; *tick = (*tickptrptr)->ticks * pow(10, npl); *nsub = (*tickptrptr)->nsubs; } } } } /* C Label an axis in (DD) HH MM SS.S style. This is the main C workhorse of the PGTBOX routines. C C This is a support subroutine for PGTBOX and should not be C called by the user. C C Inputs: C DODAY : Write labels as DD HH MM SS.S else HH MM SS.S with C hours ranging above 24. Useful for declination labels C SUPTYP : If 'DHMS' then superscript the fields with d, h, m, & s C If ' DMS' then superscript the fields with o, ' & '' C Good for declination plots. You should obviously not C ask for the day field for this to do anything sensible. C If ' ' then no superscripting is done. C AXIS : 'X' for x-axis, 'Y' for y-axis C CONVTL : If .true., write the labels in the conventional axis C locations (bottom and left for 'X' and 'Y'). Otherwise C write them on the top and right axes ('X' and 'Y') C FIRST : If .false. then omit the first label. C TMIN : Start time (seconds) C TMAX : End time (seconds) C TSCALE : Determines finest units of axis C 1 => ss, 60 => mm, 3600 => hh, 3600*24 => dd C TICK : Major tick interval in seconds C DO2 : If .true., write labels less than 10 with a leading zero. C DOPARA : Y axis label parallel to axis, else perpendicular C MOD24 : HH field labelled as modulo 24 C C 05-Sep-1988 - new routine (Neil Killeen) C 20-Apr-1991 - add support for new DD (day) field [nebk] C 10-Jun-1993 - complete rewrite & rename from PGTLAB. Fixes user given C ticks bug too [nebk] C 15-Jan-1995 - Add argument MOD24 */ void _giza_tbx4(int doday, char const* suptyp, char axis, int convtl, int first, double tmin, double tmax, int tscale, double tick, int do2, int dopara, int mod24) { const int maxtik = 1000; tmstamp timestamps[maxtik], timel; double time, coord, fjust, rval, disp; int is, sd, nt, izero, ipos, ineg, it, i, j, k, sprec, jst[2], jend[2], tlen, last; int ival[3], ivalo[3], ivalz[3], ivalf[3], ivall[3], npass, inc; int writ[4]; char signf, text[80]; char const* axloc = NULL; /* C Direction signs*/ sd = (tmax(abs(nt)*tick) ) nt += sd; time = nt * tick; if( (sd==1 && (timetmax)) || (sd==-1 && (time>tmin || time(tmax+1e-5)) || (sd==-1 && time<(tmax-1e-5)) ) break; if( it>=maxtik ) { _giza_error("_giza_tbx4", "storage exhausted -- you have asked for far too many ticks"); break; } /* C Convert to (DD) HH MM SS.S and find fraction of window that this C tick falls at */ _giza_tbx5(doday, time, ×tamps[it]); timestamps[it].tfrac = (time - tmin) / (tmax - tmin); /* note zero time */ if( nt==0 ) izero = it; /* go to next time */ nt = nt + sd; time = nt * tick; it = it + 1; } sprec = 0; if( tscale==1 ) { if( tick < 0.01 ) sprec = 3; else if( tick < 0.1 ) sprec = 2; else if( tick < 1.0 ) sprec = 1; } /* C Label special case of first tick. Prepare fields and label */ _giza_tbx6(doday, mod24, tscale, ×tamps[0], ivalf, &rval, writ); signf = 'H'; if( doday ) signf = 'D'; _giza_tbx7(suptyp, signf, timestamps[0].asign, ivalf, rval, writ, sprec, do2, text, &tlen, &last); /* C Set label displacements from axes. This is messy for labels oriented C perpendicularly on the right hand axis as we need to know how long C the longest string we are going to write is before we write any C labels as they are right justified. */ if( axis=='X' ) { if( convtl ) { axloc = "B"; if( strcmp(suptyp, "NONE") ) disp = 1.4; else disp = 1.2; } else { axloc = "T"; disp = 0.7; } } else if( axis=='Y' ) { if( convtl ) { axloc = dopara ? "L" : "LV"; disp = 0.7; } else { if( dopara ) { axloc = "R"; if( strcmp(suptyp, "NONE") ) disp = 1.7; else disp = 1.9; } else { /* C Work out number of characters in first label */ char tmp[128]; float xl, yl, xch, ych; axloc = "RV"; /* create string for length computation */ if( timestamps[0].asign!='-' && tmin*tmax<0 ) sprintf(tmp, " -%s", text); else sprintf(tmp, " %s", text); /* Can be either unit below because only interested in ratio. So be sure to call with SAME unit */ giza_qtextlen_float(GIZA_UNITS_NORMALIZED, tmp, &xl, &yl); giza_get_character_size_float(GIZA_UNITS_NORMALIZED, &xch, &ych); disp = xl / xch; } } } if( first ) { float xlen, ylen; giza_qtextlen_float(GIZA_UNITS_NORMALIZED, &text[last], &xlen, &ylen); fjust = 1.0; if( axis=='X' ) { coord = timestamps[0].tfrac + xlen/2; } else { /* if( axis=='Y' ) */ coord = timestamps[0].tfrac; if( dopara ) coord += ylen/2; } giza_annotate_float(axloc, disp, coord, fjust, text); } if( it==1 ) return; /* C Designate which field out of DD or HH will carry the sign, depending C on whether you want the day field or not for the rest of the ticks */ signf = doday ? 'D' : 'H'; /* C Set up labelling justifications for the rest of the labels */ if( axis=='X' ) fjust = 0.5; else if( axis=='Y' ) fjust = dopara ? 0.5 : 1.0; /* C Note zero crossings; IPOS is the first positive tick and C INEG is the first negative tick on either side of 0 */ ipos = ineg = -1; if( izero>=0 ) { /* check previous time stamp, if any */ j = izero - 1; if( j>= 0 ) { if( timestamps[j].asign=='-' ) ineg = j; else if( timestamps[j].asign==' ' ) ipos = j; } /* check next time stamp, if any */ j = izero + 1; if( j0 ) { _giza_tbx6(doday, mod24, tscale, ×tamps[izero], ivalz, &rval, writ); if( timestamps[izero-1].asign==' ' ) timestamps[izero].asign = '-'; _giza_tbx7(suptyp, signf, timestamps[izero].asign, ivalz, rval, writ, sprec, do2, text, &tlen, &last); coord = timestamps[izero].tfrac; giza_annotate_float(axloc, disp, coord, fjust, text); } /* C We may need an extra "virtual" tick if there is no zero crossing C and SD=-1 & IS=1 or SD=1 & IS=-1. It is used to work out which C fields to label on the right most tick which is labelled first. */ if( izero==-1 && sd*is==-1 ) { if( (sd==-1 && time<0.0) || (sd==1 && time>0.0) ) time = 0.0; _giza_tbx5(doday, time, &timel); _giza_tbx6(doday, mod24, tscale, &timel, ivall, &rval, writ); } /* C We want to label in the direction(s) away from zero, so we may need C two passes. Determine the start and end ticks for each required pass. */ jst[1] = jend[1] = -1; /* sentinels */ npass = 1; /* Note: 'it' holds the /number of time ticks/ so array indices range from 0 .. it-1 */ if( izero==-1 ) { if( is*sd==1 ) { jst[0] = 0; jend[0] = it-1; } else { jst[0] = it-1; jend[0] = 0; } } else { if( ineg==-1 || ipos==-1 ) { jst[0] = izero; jend[0] = it-1; if( izero==(it-1) ) jend[0] = 0; } else { npass = 2; jst[0] = izero; jend[0] = 0; jst[1] = izero; jend[1] = it-1; } } /* C Now label the rest of the ticks. Always label away from 0 */ for( i=0; i=jend[i] : j<=jend[i]; j+=inc) { /* C First and zero tick already labelled */ if( j==0 || j==izero ) continue; /* C Prepare fields */ _giza_tbx6(doday, mod24, tscale, ×tamps[j], ival, &rval, writ); /* C Don't write unchanging fields */ for(k=0; k<3; k++) if( ival[k]==ivalo[k] ) writ[k] = 0; /* prepare & write label */ _giza_tbx7(suptyp, signf, timestamps[j].asign, ival, rval, writ, sprec, do2, text, &tlen, &last); coord = timestamps[j].tfrac; giza_annotate_float(axloc, disp, coord, fjust, text); /* C Update old values */ for(k=0; k<3; k++) ivalo[k] = ival[k]; } } /* loop i over 0..npass-1 */ } /* C Convert time in seconds to (DD) HH MM SS.S C C Input C DODAY : Use day field if true, else hours accumulates beyond 24 C TSEC : Time in seconds (signed) C Output C ASIGN : Sign, ' ' or '-' C D,H,M : DD, HH, MM (unsigned) C S : SS.S (unsigned) C C 10-Jun-1993 - new routine [nebk] */ void _giza_tbx5(int doday, double tsec, tmstamp* ts) { double tmp; /* remember sign and go to positive seconds */ ts->asign = (tsec < 0) ? '-' : ' '; tsec = fabs(tsec); /* take out the largest unit of time - days - if that's requested */ if( doday ) { /* honour days */ (void)modf(tsec / (24*3600), &tmp); /* tmp now has integer # of days as double */ ts->dd = (int)tmp; /* subtract the days */ tsec -= ts->dd * (24*3600); } else { ts->dd = 0; } /* Next up: hours */ (void)modf(tsec / 3600, &tmp); ts->hh = (int)tmp; tsec -= ts->hh * 3600; /* where there's hours, there's typically also minutes */ (void)modf(tsec / 60, &tmp); ts->mm = (int)tmp; tsec -= ts->mm * 60; /* Now only left with seconds + fractional seconds */ ts->ss = tsec; } /* C Find out which of the DD HH MM SS.S fields we want to write C into the label according to TSCALE and make a round off C error check. C C Input: C DODAY : Use day field if true else hours accrue beyond 24 C MOD24 : HH field labelled as modulo 24 C TSCALE : Dictates which fields appear in labels C DD : Day of time (will be 0 if DODAY=F and HH will compensate) C HH : Hour of time C MM : Minute of time C SS : Second of time C Output: C IVAL(3): DD HH MM to write into label C RVAL : SS.S to write into label C WRIT(4): T or F if DD,HH,MM,SS are to be written into the label C or not. IVAL and RVAL fields are set explicitly to C zero if the corresponding WRIT field is false. C This really is overkill. C C 10-Jun-1993 - New routine [nebk] C 16-Jan-1995 - Add argument MOD24 */ void _giza_tbx6(int doday, int mod24, int tscale, tmstamp const* ts, int ival[3], double* rval, int writ[4]) { int wm; ival[0] = ts->dd; ival[1] = ts->hh; ival[2] = ts->mm; *rval = ts->ss; if( tscale>1 ) { wm = (int) rint( ts->ss/60 ); ival[2] += wm; if( ival[2]==60 ) { ival[2] = 0; ival[1] += 1; if( doday && ival[1]==24 ) { ival[1] = 0; ival[0] += 1; } } } if( mod24 ) ival[1] %= 24; if( tscale==1 ) { /* C Label contains (DD) HH MM */ writ[0] = doday; writ[1] = 1; writ[2] = 1; writ[3] = 1; } else if( tscale==60 ) { /* C Label contains (DD) HH MM */ writ[0] = doday; writ[1] = 1; writ[2] = 1; *rval = 0; writ[3] = 0; } else if( tscale==3600 ) { writ[0] = doday; writ[1] = 1; ival[2] = 0; writ[2] = 0; *rval = 0; writ[3] = 0; } else if( tscale==3600*24 ) { writ[0] = 1; ival[1] = 0; writ[1] = 0; ival[2] = 0; writ[2] = 0; *rval = 0; writ[3] = 0; } } /* C Write (DD) HH MM SS.S time labels into a string C C This is a support routine for PGTBOX and should not be C called by the user C C Inputs C SUPTYP : ' ', 'DHMS', or ' DMS' for no superscript labelling, C d,h,m,s or o,','' superscripting C SIGNF : Tells which field the sign is associated with. C One of 'D', 'H', 'M', or 'S' C ASIGN : ' ' or '-' for positive or negative times C IVAL(3): Day, hour, minutes of time C RVAL : Seconds of time C WRIT(4): If .true. then write DD, HH, MM, SS into label C SPREC : Number of places after the decimal to write seconds C string to. Must be in the range 0-3 C DO2 : If true, add a leading zero to numbers < 10 C Outputs C TEXT : Label C TLEN : Length of label C LAST : Is the location of the start character of the last C field written into TEXT C C 05-Sep-1989 -- New routine (Neil Killeen) C 20-Apr-1991 -- Complete rewrite; support for new DD (day) field and C superscripted labels [nebk] C 14-May-1991 -- Removed BSL as a parameter (Char(92)) and made it C a variable to appease Cray compiler [mjs/nebk] C 10-Jun-1993 -- Rename from PGTLB1, add code to label superscript C seconds above the '.' and add DO2 option [nebk/jm] */ void _giza_tbx7(char const* suptyp, char signf, char asign, int ival[3], double rval, int writ[4], int sprec, int do2, char* text, int* tlen, int* last) { /* the superscripting strings */ char const* super[3][4] = { {"\\ud\\d" , "\\uh\\d" , "\\um\\d" , "\\us\\d"}, {"\\u\\(2199)\\d", "\\u\\(2729)\\d", "\\u\\(2727)\\d", "\\u\\(2728)\\d"}, {"\\u \\d" , "\\u \\d" , "\\u \\d" , "\\u \\d" }}; int nch; char const** suppnt; if( strcmp(suptyp, "DHMS")==0 ) suppnt = super[0]; else if( strcmp(suptyp, "DMS")==0 ) suppnt = super[1]; else suppnt = super[2]; *tlen = 0; text[0] = '\0'; /* C Days field */ if( writ[0] ) { /* depending on wether to print the sign or not choose the correct * format */ char const* fmt = (signf=='D' && asign!=' ') ? "%3$c%1$d%2$s" : "%1$d%2$s" ; *last = *tlen; nch = sprintf(&text[*tlen], fmt, ival[0], suppnt[0], asign); *tlen = *tlen + nch; } /* C Hours field */ if( writ[1] ) { *last = *tlen; /* print it in two parts because all combinations of sign field yes/no and/or the leading * zeroes yes/no must be handled */ if( signf=='H' && asign!=' ' ) { text[ *tlen ] = asign; *tlen = *tlen + 1; } /* print the number with or without fill zeroes */ nch = sprintf(&text[*tlen], do2 ? "%02d%s" : "%d%s", ival[1], suppnt[1]); *tlen = *tlen + nch; } /* C Minutes field */ if( writ[2] ) { *last = *tlen; /* print it in two parts because all combinations of sign field yes/no and/or the leading * zeroes yes/no must be handled */ if( signf=='M' && asign!=' ' ) { text[ *tlen ] = asign; *tlen = *tlen + 1; } /* print the number with or without fill zeroes */ nch = sprintf(&text[*tlen], do2 ? "%02d%s" : "%d%s", ival[2], suppnt[2]); *tlen = *tlen + nch; } /* C Seconds field */ if( writ[3] ) { char tmp[32]; *last = *tlen; /* format the ddd.^[s"][ddd] into tmp string first */ if( sprec>=1 ) { /* C Fractional label. Upto 3 places after the decimal point allowed C Muck around to get the superscript on top of the decimal point */ double isec, ifrac; /* split the number into integer and fractional part */ (void)modf(rval, &isec); /* multiply the fractional part by 10^precision and take the * integer part of /that/ */ (void)modf((rval - (int)isec)*pow(10.0, sprec), &ifrac); /* Now we can nicely format the before the decimal point, after * the decimal point /and/ (attempt to) make the superscript on * top of the decimal point */ sprintf(tmp, do2 ? "%02d.\\b%s%d" : "%d.\\b%s%d", (int)isec, suppnt[3], (int)ifrac); } else { /* integer label */ sprintf(tmp, do2 ? "%02d%s" : "%d%s", (int)rint(rval), suppnt[3]); } /* number was formatted according to spec, now write to output * label, first honouring the sign, if any */ if( signf=='S' && asign!=' ' ) { text[ *tlen ] = asign; *tlen = *tlen + 1; } nch = sprintf(&text[*tlen], "%s", tmp); *tlen = *tlen + nch; } /* C A trailing blank will occur if no superscripting wanted */ if( *tlen>=5 && strcmp(&text[*tlen - 5], super[2][0])==0 ) { *tlen = *tlen - 5; text[ *tlen ] = '\0'; } } giza-1.5.0/src/giza-box.c000066400000000000000000000525511477367113400151470ustar00rootroot00000000000000/* giza - a scientific plotting library built on cairo * * Copyright (c) 2010 James Wetter and Daniel Price * Copyright (c) 2010-2012 Daniel Price * * This library is free software; and you are welcome to redistribute * it under the terms of the GNU General Public License * (GPL, see LICENSE file for details) and the provision that * this notice remains intact. If you modify this file, please * note section 5a) of the GPLv3 states that: * * a) The work must carry prominent notices stating that you modified * it, and giving a relevant date. * * This software is distributed "AS IS", with ABSOLUTELY NO WARRANTY. * See the GPL for specific language governing rights and limitations. * * The Original code is the giza plotting library. * * Contributor(s): * James Wetter * Daniel Price (main contact) */ #include "giza-private.h" #include "giza-transforms-private.h" #include "giza-io-private.h" #include "giza-stroke-private.h" #include "giza-window-private.h" #include "giza-viewport-private.h" #include "giza-drivers-private.h" #include "giza.h" #include #include /** * Drawing: giza_box * * Synopsis: Annotates the viewport with labelled axis/frame * * Input: * -xopt :- String of options for the x-axis. * The options may be in any order. See * below for details * -xtick :- The distance, in world coordinates, * between major ticks on the x-axis. * If 0.0 the interval is chosen * by giza_box. * -nxsub :- The number of minor ticks to be placed * between each major tick. If 0 the * number is chosen by giza_box. * -yopt :- Similar to xopt but for the y-axis. * -ytick :- Similar to xtick but for the y-axis. * -nysub :- Similar to nxsub but for the y-axis. * * Options: * -A :- Draw the axis. * -B :- Draw the bottom or left edge of the frame. * -C :- Draw the top or right edge of the frame. * -T :- Draw major ticks. * -S :- Draw minor ticks. * -N :- Label the axis (conventional, below/left viewport) * -M :- Put labels in the unconvential location (above/right viewport) * -V :- Orient numeric y labels vertically (only * applies to left and right axis). * -G :- Draw grid lines at major intervals * -M :- Write numeric labels above x-axis or to right of y-axis * instead of usual position * -L :- Label axis logarithmically * -I :- 'Invert' tick marks, draw them outside the viewport * -P :- extend ("Project") major tick marks outside the box (ignored if * option I is specified). */ void giza_box (const char *xopt, double xtick, int nxsub, const char *yopt, double ytick, int nysub) { if (!_giza_check_device_ready ("giza_box")) return; _giza_expand_clipping (); int oldBuf; giza_get_buffering(&oldBuf); /* Table of log10() values for log axis ticks */ double logTab[9]; int k; for (k = 0; k < 9; k++) { logTab[k] = log10 (k + 1); } /* Begin buffering */ giza_begin_buffer (); int xdraw_axis = 0, xdraw_bottom = 0, xdraw_top = 0, xdraw_majticks = 0, xdraw_minticks = 0, xdraw_labels = 0, xdraw_log = 0, xdraw_grid = 0, xdraw_invert = -1, xdraw_project = 0, xlabel_unconventional = 0; int ydraw_axis = 0, ydraw_left = 0, ydraw_right = 0, ydraw_majticks = 0, ydraw_minticks = 0, ydraw_labels = 0, ydraw_vertical = 0, ydraw_log = 0, ydraw_grid = 0, ydraw_invert = -1, ydraw_project = 0, ylabel_unconventional = 0; double xintervalMaj, xintervalMin, xval, xratio; double yintervalMaj, yintervalMin, yval, yratio; int nv, np; int nMinTicksx, major; int nMinTicksy; double majTickL, subTickL, currentTickL; char tmp[100]; int i, i1, i2, j, jmax, jtmp; int xnumber_format = Dev[id].number_format, ynumber_format = Dev[id].number_format; /* get a normalized local copy of Dev[id].Win into Win such that xmin <= xmax AND ymin <= ymax * otherwise axes with negative increment to the right won't display ANY tickmarks */ giza_window_t *pWin = &Dev[id].Win, Win = *pWin; if( Win.xmax < Win.xmin ) { Win.xmin = pWin->xmax; Win.xmax = pWin->xmin; } if( Win.ymax < Win.ymin ) { Win.ymin = pWin->ymax; Win.ymax = pWin->ymin; } /* set x-options */ for (i = 0; xopt[i]; i++) { switch (xopt[i]) { case ('a'): case ('A'): /* Check the axis will be inside the box! */ if (Win.ymin < 0 && Win.ymax > 0) xdraw_axis = 1; break; case ('b'): case ('B'): xdraw_bottom = 1; break; case ('c'): case ('C'): xdraw_top = 1; break; case ('t'): case ('T'): xdraw_majticks = 1; break; case ('s'): case ('S'): xdraw_minticks = 1; break; /* Any of nmNM means labels need to be drawn. mM says to do so unconventionally. */ case ('n'): case ('m'): case ('N'): case ('M'): xdraw_labels = 1; xlabel_unconventional = (xopt[i]=='m' || xopt[i]=='M'); break; case ('l'): case ('L'): xdraw_log = 1; break; case ('g'): case ('G'): xdraw_grid = 1; break; case ('i'): case ('I'): xdraw_invert = 1; break; case ('p'): case ('P'): xdraw_project = -1; break; case ('1'): xnumber_format = GIZA_NUMBER_FORMAT_DEC; break; case ('2'): xnumber_format = GIZA_NUMBER_FORMAT_EXP; break; default: break; } } /* set y-options */ for (i = 0; yopt[i]; i++) { switch (yopt[i]) { case ('a'): case ('A'): /* check the axis will be in the box! */ if (Win.xmin < 0 && Win.xmax > 0) ydraw_axis = 1; break; case ('b'): case ('B'): ydraw_left = 1; break; case ('c'): case ('C'): ydraw_right = 1; break; case ('t'): case ('T'): ydraw_majticks = 1; break; case ('s'): case ('S'): ydraw_minticks = 1; break; /* Any of nmNM means labels need to be drawn. mM says to do so unconventionally. */ case ('n'): case ('m'): case ('N'): case ('M'): ydraw_labels = 1; ylabel_unconventional = (yopt[i]=='m' || yopt[i]=='M'); break; case ('v'): case ('V'): ydraw_vertical = 1; break; case ('l'): case ('L'): ydraw_log = 1; break; case ('g'): case ('G'): ydraw_grid = 1; break; case ('i'): case ('I'): ydraw_invert = 1; break; case ('p'): case ('P'): ydraw_project = 1; break; case ('1'): ynumber_format = GIZA_NUMBER_FORMAT_DEC; break; case ('2'): ynumber_format = GIZA_NUMBER_FORMAT_EXP; break; default: break; } } /* Note: -P :- extend ("Project") major tick marks outside the box (ignored if option I is specified). In this code: invert<0 is default so >0 means option was specified */ if ( xdraw_invert>0 ) xdraw_project = 0; if ( ydraw_invert>0 ) ydraw_project = 0; int oldTrans = _giza_get_trans (); _giza_set_trans (GIZA_TRANS_WORLD); /* set major tick length in pixels */ majTickL = Dev[id].fontExtents.max_x_advance * 0.33; subTickL = 0.; /* convert to world coords */ cairo_device_to_user_distance (Dev[id].context, &subTickL, &majTickL); majTickL = -majTickL; /* set minor tick length as a fraction of the major tick length */ subTickL = majTickL * 0.5; /* Choose x tick intervals */ if (xdraw_log) { nMinTicksx = 1; xintervalMaj = 1.; } else if (_giza_equal(xtick,0.)) { xintervalMaj = 7. * Dev[id].fontExtents.max_x_advance / ((Dev[id].VP.xmax - Dev[id].VP.xmin)*Dev[id].width); if (xintervalMaj > 0.2) xintervalMaj = 0.2; if (xintervalMaj < 0.05) xintervalMaj = 0.05; xintervalMaj = xintervalMaj * (Win.xmax - Win.xmin); xintervalMaj = giza_round (xintervalMaj, &nMinTicksx); } else { xintervalMaj = xtick; nMinTicksx = nxsub; if (nxsub < 1 || !xdraw_minticks) nMinTicksx = 1; } xintervalMin = xintervalMaj / (double) nMinTicksx; /* Only enter tick drawing if (1) any of the ticks/grid must be drawn AND (2) at least one of top, bottom or axis must be drawn because the ticks can only be drawn on any/all of these lines */ if ((xdraw_majticks || xdraw_minticks || xdraw_grid) && (xdraw_axis || xdraw_bottom || xdraw_top)) { _giza_tick_intervals (Win.xmin, Win.xmax, xintervalMin, &i1, &i2); jmax = 0; if (xdraw_log) jmax = 8; for (i = i1; i <= i2; i++) { /* If log axis ticks always have 9 minor ticks */ for (j = 0; j <= jmax; j++) { /* log axis ticks are major when j = 0 */ major = (i % nMinTicksx == 0) && xdraw_majticks && (j == 0); currentTickL = subTickL; if (major) currentTickL = majTickL; xval = (i + logTab[j]) * xintervalMin; /* don't draw over axis or outside the box */ if ((xdraw_axis && (i == 0)) || (xval >= Win.xmax) || (xval <= Win.xmin)) continue; /* are we supposed to draw this tick anyway? */ if ( !((major && xdraw_majticks) || xdraw_minticks) ) continue; /* draw the tick(s) everywhere where requested to */ /* bottom */ if (xdraw_bottom) { cairo_move_to (Dev[id].context, xval, Win.ymin + (major ? xdraw_project : 0) * currentTickL); cairo_line_to (Dev[id].context, xval, Win.ymin - xdraw_invert * currentTickL); } /* grid */ if (xdraw_grid && major) { cairo_move_to (Dev[id].context, xval, Win.ymin); cairo_line_to (Dev[id].context, xval, Win.ymax); } /* axis */ else if (xdraw_axis) { cairo_move_to (Dev[id].context, xval, -currentTickL); cairo_line_to (Dev[id].context, xval, currentTickL); } /* top */ if (xdraw_top) { cairo_move_to (Dev[id].context, xval, Win.ymax - (major ? xdraw_project : 0) * currentTickL); cairo_line_to (Dev[id].context, xval, Win.ymax + xdraw_invert * currentTickL); } } } _giza_stroke (); } /* X labels */ if (xdraw_labels) { _giza_tick_intervals (Win.xmin, Win.xmax, xintervalMaj, &i1, &i2); np = (int) floor (log10 (fabs (xintervalMaj))); nv = _giza_nint (xintervalMaj/pow (10., np)); for (i = i1; i <= i2; i++) { xval = i * xintervalMaj; xratio = (xval - Win.xmin) / (Win.xmax - Win.xmin); /* don't draw label if outside frame */ if (xratio < 0. || xratio > 1.) continue; if (xdraw_log) { jtmp = _giza_nint(xval); if (jtmp == 1) { sprintf (tmp, "10"); } else if (jtmp == 0) { sprintf (tmp, "1"); } else { sprintf (tmp, "10^{%i}", jtmp); } } else { giza_format_number (i*nv, np, xnumber_format, tmp, sizeof(tmp)); } if (xlabel_unconventional) giza_annotate ("T", 0.8, xratio, 0.5, tmp); else giza_annotate ("B", 1.2, xratio, 0.5, tmp); } _giza_stroke (); } /* extra labels for log axis */ if (xdraw_labels && xdraw_log && (Win.xmax - Win.xmin < 2.)) { _giza_tick_intervals (Win.xmin, Win.xmax, xintervalMin, &i1, &i2); for (i = i1 - 1; i <= i2; i++) { for (j = 1; j <= 4; j += 3) { xval = (i + logTab[j]) * xintervalMin; if (xval <= Win.xmax && xval >= Win.xmin) { xratio = (xval - Win.xmin) / (Win.xmax - Win.xmin); xval = pow (10, xval); giza_format_number (j+1, _giza_nint (i * xintervalMin), xnumber_format, tmp, sizeof(tmp)); if (xlabel_unconventional) giza_annotate ("T", 0.8, xratio, 0.5, tmp); else giza_annotate ("B", 1.2, xratio, 0.5, tmp); } } } } /* set major tick length in pixels */ majTickL = Dev[id].fontExtents.max_x_advance * 0.33; subTickL = 0.; /* convert to world coords */ cairo_device_to_user_distance (Dev[id].context, &majTickL, &subTickL); /* set minor tick as a fraction of the major length */ subTickL = majTickL * 0.5; /* Choose y tick intervals */ if (ydraw_log) { nMinTicksy = 1; yintervalMaj = 1.; } else if (_giza_equal(ytick,0.)) { yintervalMaj = 7. * Dev[id].fontExtents.max_x_advance / ((Dev[id].VP.ymax - Dev[id].VP.ymin) * Dev[id].height); if (yintervalMaj > 0.2) yintervalMaj = 0.2; if (yintervalMaj < 0.05) yintervalMaj = 0.05; yintervalMaj = yintervalMaj * (Win.ymax - Win.ymin); yintervalMaj = giza_round (yintervalMaj, &nMinTicksy); } else { yintervalMaj = ytick; nMinTicksy = nysub; if (nysub < 1 || !ydraw_minticks) nMinTicksy = 1; } yintervalMin = yintervalMaj / (double) nMinTicksy; /* Draw y ticks (see above under x ticks) */ if ((ydraw_majticks || ydraw_minticks || ydraw_grid) && (ydraw_axis || ydraw_left || ydraw_right)) { _giza_tick_intervals (Win.ymin, Win.ymax, yintervalMin, &i1, &i2); jmax = 0; if (ydraw_log) jmax = 8; for (i = i1; i <= i2; i++) { for (j = 0; j <= jmax; j++) { major = (i % nMinTicksy == 0) && ydraw_majticks && (j == 0); currentTickL = subTickL; if (major) currentTickL = majTickL; yval = (i + logTab[j]) * yintervalMin; /* don't draw over the axis or outside the box */ if ((ydraw_axis && (i == 0)) || yval >= Win.ymax || yval <= Win.ymin) continue; if ( !((major && ydraw_majticks) || ydraw_minticks) ) continue; /* left */ if (ydraw_left) { cairo_move_to (Dev[id].context, Win.xmin + (major ? ydraw_project : 0) * currentTickL, yval); cairo_line_to (Dev[id].context, Win.xmin - ydraw_invert * currentTickL, yval); } /* grid */ if (ydraw_grid && major) { cairo_move_to (Dev[id].context, Win.xmin, yval); cairo_line_to (Dev[id].context, Win.xmax, yval); } /* axis */ else if (ydraw_axis) { cairo_move_to (Dev[id].context, -currentTickL, yval); cairo_line_to (Dev[id].context, currentTickL, yval); } /* right */ if (ydraw_right) { cairo_move_to (Dev[id].context, Win.xmax - (major ? ydraw_project : 0) * currentTickL, yval); cairo_line_to (Dev[id].context, Win.xmax + ydraw_invert * currentTickL, yval); } } } _giza_stroke (); } /* Label Y */ if (ydraw_labels) { _giza_tick_intervals (Win.ymin, Win.ymax, yintervalMaj, &i1, &i2); np = (int) floor (log10 (fabs (yintervalMaj))); nv = _giza_nint (yintervalMaj/pow (10., np)); for (i = i1; i <= i2; i++) { yval = i * yintervalMaj; yratio = (yval - Win.ymin) / (Win.ymax - Win.ymin); /* don't draw label if outside frame */ if (yratio < 0. || yratio > 1.) continue; if (ydraw_log) { jtmp = _giza_nint(yval); if (jtmp == 1) { sprintf (tmp, "10"); } else if (jtmp == 0) { sprintf (tmp, "1"); } else { sprintf (tmp, "10^{%i}", jtmp); } } else { giza_format_number (i*nv, np, ynumber_format, tmp, sizeof(tmp)); } if (ylabel_unconventional) { if (ydraw_vertical) giza_annotate ("RV", .7, yratio, 0., tmp); else giza_annotate ("R", 1.2, yratio, 0.5, tmp); } else { if (ydraw_vertical) giza_annotate ("LV", .7, yratio, 1., tmp); else giza_annotate ("L", .7, yratio, 0.5, tmp); } } } /* extra labels for log axis */ if (ydraw_labels && ydraw_log && (Win.ymax - Win.ymin < 2.)) { _giza_tick_intervals (Win.ymin, Win.ymax, yintervalMin, &i1, &i2); for (i = i1 - 1; i <= i2; i++) { for (j = 1; j <= 4; j += 3) { yval = (i + logTab[j]) * yintervalMin; if (yval <= Win.ymax && yval >= Win.ymin) { yratio = (yval - Win.ymin) / (Win.ymax - Win.ymin); yval = pow (10, yval); giza_format_number (j+1, _giza_nint (i*yintervalMin), ynumber_format, tmp, sizeof(tmp)); if (ylabel_unconventional) { if (ydraw_vertical) giza_annotate ("RV", .7, yratio, 0., tmp); else giza_annotate ("R", 1.2, yratio, 0.5, tmp); } else { if (ydraw_vertical) giza_annotate ("LV", .7, yratio, 1., tmp); else giza_annotate ("L", .7, yratio, 0.5, tmp); } } } } } /* draw the bottom of the box */ if (xdraw_bottom) { cairo_move_to (Dev[id].context, Win.xmin, Win.ymin); cairo_line_to (Dev[id].context, Win.xmax, Win.ymin); } /* draw the right of the box */ if (ydraw_right) { cairo_move_to (Dev[id].context, Win.xmax, Win.ymin); cairo_line_to (Dev[id].context, Win.xmax, Win.ymax); } /* draw the top of the box */ if (xdraw_top) { cairo_move_to (Dev[id].context, Win.xmax, Win.ymax); cairo_line_to (Dev[id].context, Win.xmin, Win.ymax); } /* draw the left of the box */ if (ydraw_left) { cairo_move_to (Dev[id].context, Win.xmin, Win.ymax); cairo_line_to (Dev[id].context, Win.xmin, Win.ymin); } /* draw the x axis */ if (xdraw_axis) { cairo_move_to (Dev[id].context, Win.xmin, 0.); cairo_line_to (Dev[id].context, Win.xmax, 0.); } /* draw the y axis */ if (ydraw_axis) { cairo_move_to (Dev[id].context, 0., Win.ymin); cairo_line_to (Dev[id].context, 0., Win.ymax); } /* stroke all the paths */ int lc; giza_get_line_cap (&lc); giza_set_line_cap (CAIRO_LINE_CAP_SQUARE); _giza_stroke (); giza_set_line_cap (lc); _giza_set_trans (oldTrans); /* end buffer if it was not on before this function call */ if (!oldBuf) { giza_end_buffer (); } giza_flush_device (); /* Restore clipping */ giza_set_viewport (Dev[id].VP.xmin, Dev[id].VP.xmax, Dev[id].VP.ymin, Dev[id].VP.ymax); } /** * Drawing: giza_box_float * * Synopsis: Same functionality as giza_box but takes floats instead of doubles. * * See Also: giza_box */ void giza_box_float (const char *xopt, float xtick, int nxsub, const char *yopt, float ytick, int nysub) { if (!_giza_check_device_ready ("giza_plot_box")) return; giza_box (xopt, (double) xtick, nxsub, yopt, (double) ytick, nysub); } /** * Works out which intervals in which to draw ticks. */ void _giza_tick_intervals (double xmin, double xmax, double xinterval, int *i1, int *i2) { double xlow, xhigh; xlow = xmin / xinterval; xhigh = xmax / xinterval; *i1 = _giza_nint (xlow); *i2 = _giza_nint (xhigh); } /** * Finds the smallest 'round' number larger than x, where round is defined * as 1, 2 or 5 times a power of ten. * * Input: * -x :- The number to be rounded * -nsub :- A nice number of minor ticks to put between the 'round' number * * Return: The smallest 'round' number. */ double giza_round (double x, int *nsub) { int i, ilog; double frac, pwr, xlog, xx; double nice[] = { 2, 5, 10 }; if (fabs (x) < GIZA_ZERO_FLOAT) { *nsub = 2; return 0; } xx = x; if (x < 0) xx = -x; xlog = log10 (xx); ilog = (int) xlog; if (xlog < 0) ilog = ilog - 1; pwr = pow (10.0, ilog); frac = xx / pwr; i = 2; if (frac < nice[1]) i = 1; if (frac < nice[0]) i = 0; *nsub = 5; if (i == 0) *nsub = 2; if (x < 0) return -pwr * nice[i]; return pwr * nice[i]; } /** * Same as giza_round but accepts floats */ float giza_round_float (float x, int *nsub) { float result; result = (float) giza_round((double) x, nsub); return result; } giza-1.5.0/src/giza-buffering.c000066400000000000000000000042321477367113400163170ustar00rootroot00000000000000/* giza - a scientific plotting library built on cairo * * Copyright (c) 2010 James Wetter and Daniel Price * Copyright (c) 2010-2012 Daniel Price * * This library is free software; and you are welcome to redistribute * it under the terms of the GNU General Public License * (GPL, see LICENSE file for details) and the provision that * this notice remains intact. If you modify this file, please * note section 5a) of the GPLv3 states that: * * a) The work must carry prominent notices stating that you modified * it, and giving a relevant date. * * This software is distributed "AS IS", with ABSOLUTELY NO WARRANTY. * See the GPL for specific language governing rights and limitations. * * The Original code is the giza plotting library. * * Contributor(s): * James Wetter * Daniel Price (main contact) */ #include "giza-private.h" #include "giza-io-private.h" #include /** * Settings: giza_begin_buffer * * Synopsis: Begins buffering * * See Also: giza_end_buffer, giza_flush_buffer */ void giza_begin_buffer (void) { if (!_giza_check_device_ready ("giza_begin_buffer")) return; Dev[id].buf = 1; } /** * Settings: giza_end_buffer * * Synopsis: Ends buffering * * See Also: giza_begin_buffer, giza_flush_buffer */ void giza_end_buffer (void) { if(!_giza_check_device_ready ("giza_end_buffer")) return; Dev[id].buf = 0; giza_flush_device (); } /** * Settings: giza_get_buffering * * Synopsis: returns whether output is currently buffered on current device * * See Also: giza_begin_buffer, giza_flush_buffer, giza_end_buffer */ void giza_get_buffering (int *buf) { *buf = 0; if(!_giza_check_device_ready ("giza_end_buffer")) return; *buf = Dev[id].buf; } /** * Settings: giza_flush_buffer * * Synopsis: Updates graphics display * Can be used to flush the graphics buffer * manually between calls to giza_begin_buffer * and giza_end_buffer * * See Also: giza_begin_buffer, giza_end_buffer */ void giza_flush_buffer (void) { if(!_giza_check_device_ready ("giza_flush_buffer")) return; giza_end_buffer(); giza_begin_buffer(); } giza-1.5.0/src/giza-character-size-private.h000066400000000000000000000016471477367113400207400ustar00rootroot00000000000000/* giza - a scientific plotting library built on cairo * * Copyright (c) 2010 James Wetter and Daniel Price * Copyright (c) 2010-2012 Daniel Price * * This library is free software; and you are welcome to redistribute * it under the terms of the GNU General Public License * (GPL, see LICENSE file for details) and the provision that * this notice remains intact. If you modify this file, please * note section 5a) of the GPLv3 states that: * * a) The work must carry prominent notices stating that you modified * it, and giving a relevant date. * * This software is distributed "AS IS", with ABSOLUTELY NO WARRANTY. * See the GPL for specific language governing rights and limitations. * * The Original code is the giza plotting library. * * Contributor(s): * James Wetter * Daniel Price (main contact) */ void _giza_init_character_height (void); giza-1.5.0/src/giza-character-size.c000066400000000000000000000152301477367113400172540ustar00rootroot00000000000000/* giza - a scientific plotting library built on cairo * * Copyright (c) 2010 James Wetter and Daniel Price * Copyright (c) 2010-2012 Daniel Price * * This library is free software; and you are welcome to redistribute * it under the terms of the GNU General Public License * (GPL, see LICENSE file for details) and the provision that * this notice remains intact. If you modify this file, please * note section 5a) of the GPLv3 states that: * * a) The work must carry prominent notices stating that you modified * it, and giving a relevant date. * * This software is distributed "AS IS", with ABSOLUTELY NO WARRANTY. * See the GPL for specific language governing rights and limitations. * * The Original code is the giza plotting library. * * Contributor(s): * James Wetter * Daniel Price (main contact) */ #include "giza-private.h" #include "giza-io-private.h" #include "giza-transforms-private.h" #include /** * Settings: giza_set_character_height * * Synopsis: Sets the font size in units of character height. * A character height of 1.0 corresponds to 1/37th * of the plotting surface height by default * * Input: * -ch :- the new character height */ void giza_set_character_height (double ch) { if (!_giza_check_device_ready ("giza_set_character_height")) return; if (ch < 0) { _giza_warning ("giza_set_character_height", "Invalid character height, character height not set"); return; } int oldTrans = _giza_get_trans (); _giza_set_trans (GIZA_TRANS_IDEN); double chDevice = ch * Dev[id].panelheight * .027; /*double chDevice = ch * Dev[id].height * .027;*/ cairo_set_font_size (Dev[id].context, chDevice); /* query font extents and store this */ cairo_font_extents (Dev[id].context, &Dev[id].fontExtents); Dev[id].ch = ch; _giza_set_trans (oldTrans); } /** * Settings: giza_set_character_height_float * * Synopsis: Same functionality as giza_set_character_height but takes a float */ void giza_set_character_height_float (float ch) { giza_set_character_height ((double) ch); } /** * Settings: giza_get_character_height * * Synopsis: Query the character height * * Input: * -ch :- gets set to the character height. */ void giza_get_character_height (double *ch) { if (!_giza_check_device_ready ("giza_get_character_height")) { *ch = 1.; return; } *ch = Dev[id].ch; } /** * Settings: giza_get_character_height_float * * Synopsis: Same functionality as giza_get_character_height but takes a float. * * See Also: giza_get_character_height */ void giza_get_character_height_float (float *ch) { double dch; giza_get_character_height(&dch); *ch = (float) dch; } /** * Settings: giza_get_character_size * * Synopsis: Returns the character size in a variety of units. * * Input: * -units :- select the units the result will be returned in. * * Output: * -width :- will be set to the width of a character. * -height :- will be set to the height of a character. * * Units: * -GIZA_UNITS_NORMALIZED :- normalised device coords. * -GIZA_UNITS_WORLD :- world coords. * -GIZA_UNITS_PIXELS :- pixels * -GIZA_UNITS_DEVICE :- device coords. * -GIZA_UNITS_MM :- mm * -GIZA_UNITS_INCHES :- inches * Other values cause an error message and are treated as GIZA_UNITS_NORMALIZED */ void giza_get_character_size (int units, double *heightx, double *heighty) { if (!_giza_check_device_ready ("giza_get_character_height")) return; int oldTrans = _giza_get_trans (); *heighty = Dev[id].fontExtents.ascent; *heightx = *heighty; switch (units) { case GIZA_UNITS_NORMALIZED: _giza_set_trans (GIZA_TRANS_NORM); cairo_device_to_user_distance (Dev[id].context, heightx, heighty); *heighty = -*heighty; break; case GIZA_UNITS_MM: case GIZA_UNITS_INCHES: case GIZA_UNITS_PIXELS: case GIZA_UNITS_DEVICE: _giza_set_trans (GIZA_TRANS_IDEN); cairo_device_to_user_distance (Dev[id].context, heightx, heighty); break; case GIZA_UNITS_WORLD: _giza_set_trans (GIZA_TRANS_WORLD); cairo_device_to_user_distance (Dev[id].context, heightx, heighty); *heighty = -*heighty; break; default: _giza_warning ("giza_get_character_size", "Invalid units, using normalised device units."); _giza_set_trans (GIZA_TRANS_NORM); cairo_device_to_user_distance (Dev[id].context, heightx, heighty); *heighty = -*heighty; break; } /* Now convert to mm/inches */ switch (units) { case GIZA_UNITS_PIXELS: *heightx = *heightx * Dev[id].deviceUnitsPerPixel; *heighty = *heighty * Dev[id].deviceUnitsPerPixel; break; case GIZA_UNITS_MM: *heightx = *heightx * Dev[id].deviceUnitsPermm; *heighty = *heighty * Dev[id].deviceUnitsPermm; break; case GIZA_UNITS_INCHES: *heightx = *heightx * Dev[id].deviceUnitsPermm/25.4; *heighty = *heighty * Dev[id].deviceUnitsPermm/25.4; break; default: break; } _giza_set_trans (oldTrans); } /** * Settings: giza_get_character_size_float * * Synopsis: Same functionality as giza_get_character_size, but returns the values as floats */ void giza_get_character_size_float (int units, float *xch, float *ych) { double dxch, dych; giza_get_character_size (units, &dxch, &dych); *xch = (float) dxch; *ych = (float) dych; } /** * Gives character of 1 a size relative to the current device size. * WARNING: will cause the character height to be set to one */ void _giza_init_character_height (void) { /* Note: do not call giza_set_character_height here This is done from giza_init_font */ Dev[id].ch = 1.; } /** * Sets the character_size size relative to it's current size * this is slightly different to set_character_height * as it preserves the current font matrix */ void _giza_scale_character_size (double scalefac) { if (!_giza_check_device_ready ("_giza_scale_character_size")) return; if (scalefac < 0) { _giza_warning ("_giza_scale_character_size", "Invalid character size, character size not set"); return; } /* Sets the character size as a ratio of the current character size */ /* so that the font matrix is not destroyed */ int oldTrans = _giza_get_trans (); _giza_set_trans (GIZA_TRANS_IDEN); cairo_matrix_t mat; cairo_get_font_matrix (Dev[id].context, &mat); /* Dev[id].ch = scalefac * Dev[id].ch; */ cairo_matrix_scale (&mat, scalefac, scalefac); cairo_set_font_matrix (Dev[id].context, &mat); cairo_font_extents (Dev[id].context, &Dev[id].fontExtents); _giza_set_trans (oldTrans); } giza-1.5.0/src/giza-circle.c000066400000000000000000000036061477367113400156150ustar00rootroot00000000000000/* giza - a scientific plotting library built on cairo * * Copyright (c) 2010 James Wetter and Daniel Price * Copyright (c) 2010-2012 Daniel Price * * This library is free software; and you are welcome to redistribute * it under the terms of the GNU General Public License * (GPL, see LICENSE file for details) and the provision that * this notice remains intact. If you modify this file, please * note section 5a) of the GPLv3 states that: * * a) The work must carry prominent notices stating that you modified * it, and giving a relevant date. * * This software is distributed "AS IS", with ABSOLUTELY NO WARRANTY. * See the GPL for specific language governing rights and limitations. * * The Original code is the giza plotting library. * * Contributor(s): * James Wetter * Daniel Price (main contact) */ #include "giza-private.h" #include "giza-transforms-private.h" #include "giza-fill-private.h" #include #include /** * Drawing: giza_circle * * Synopsis: Draws a circle at x, y with radius r (in world coords), using the current fill set by giza_set_fill. * * Input: * -x :- the world x-coord of the centre of the circle * -y :- the world y-coord of the centre of the circle * -r :- the radius of the circle in world coords */ void giza_circle (double x, double y, double r) { int oldTrans = _giza_get_trans (); _giza_set_trans (GIZA_TRANS_WORLD); cairo_move_to (Dev[id].context, x+r, y); cairo_arc (Dev[id].context, x, y, r, 0., 2 * M_PI); _giza_fill (); _giza_set_trans (oldTrans); giza_flush_device (); } /** * Drawing: giza_circle_float * * Synopsis: Same functionality as giza_circle, but takes floats * * See Also: giza_circle */ void giza_circle_float (float x, float y, float r) { giza_circle ((double) x, (double) y, (double) r); giza_flush_device (); } giza-1.5.0/src/giza-clipping.c000066400000000000000000000030761477367113400161620ustar00rootroot00000000000000/* giza - a scientific plotting library built on cairo * * Copyright (c) 2010 James Wetter and Daniel Price * Copyright (c) 2010-2012 Daniel Price * * This library is free software; and you are welcome to redistribute * it under the terms of the GNU General Public License * (GPL, see LICENSE file for details) and the provision that * this notice remains intact. If you modify this file, please * note section 5a) of the GPLv3 states that: * * a) The work must carry prominent notices stating that you modified * it, and giving a relevant date. * * This software is distributed "AS IS", with ABSOLUTELY NO WARRANTY. * See the GPL for specific language governing rights and limitations. * * The Original code is the giza plotting library. * * Contributor(s): * James Wetter * Daniel Price (main contact) */ #include "giza-private.h" #include /** * Drawing: giza_clip * * Synopsis: Set whether or not to clip at the edge of the viewport * * Input: * -clip :- Use 0 to disable clipping, 1 to enable clipping * */ void giza_set_clipping (int clip) { if (!_giza_check_device_ready ("giza_set_clipping")) return; Dev[id].clip = clip; if (!clip) { cairo_reset_clip(Dev[id].context); } } /** * Drawing: giza_get_clipping * * Synopsis: Query whether or not clipping at edge of viewport is enabled or disabled * * See Also: giza_move */ void giza_get_clipping (int *clip) { if (!_giza_check_device_ready ("giza_get_clipping")) return; *clip = Dev[id].clip; } giza-1.5.0/src/giza-colour-bar.c000066400000000000000000000135021477367113400164150ustar00rootroot00000000000000/* giza - a scientific plotting library built on cairo * * Copyright (c) 2010 James Wetter and Daniel Price * Copyright (c) 2010-2012 Daniel Price * * This library is free software; and you are welcome to redistribute * it under the terms of the GNU General Public License * (GPL, see LICENSE file for details) and the provision that * this notice remains intact. If you modify this file, please * note section 5a) of the GPLv3 states that: * * a) The work must carry prominent notices stating that you modified * it, and giving a relevant date. * * This software is distributed "AS IS", with ABSOLUTELY NO WARRANTY. * See the GPL for specific language governing rights and limitations. * * The Original code is the giza plotting library. * * Contributor(s): * James Wetter * Daniel Price (main contact) */ #include "giza-private.h" #include #include /** * Drawing: giza_colour_bar * * Synopsis: Draws a colour bar (wedge) using the current colour ramp * * Input: * -side :- edge of viewport to draw colour bar relative to, either 'B' (bottom), 'T' (top), 'L' (left) or 'R' (right) * -disp :- displacement of the bar in character heights from the specified edge * -width :- width of the colour bar in character heights * -valMin :- The value in data that gets assigned the colour corresponding to zero on the * colour ramp (The ramp is set by giza_set_colour_table) * -valMax :- The value in data that gets assigned the colour corresponding to one on the * colour ramp * -label :- Text label to annotate colour bar with * * See Also: giza_render, giza_colour_bar_float, giza_set_colour_table */ void giza_colour_bar (const char *side, double disp, double width, double valMin, double valMax, const char *label) { /* query current window, viewport and character height settings */ double xmin,xmax,ymin,ymax; double vptxmin,vptxmax,vptymin,vptymax; double xch,ych; giza_get_window(&xmin,&xmax,&ymin,&ymax); giza_get_viewport(GIZA_UNITS_NORMALIZED,&vptxmin,&vptxmax,&vptymin,&vptymax); giza_get_character_size(GIZA_UNITS_NORMALIZED,&xch,&ych); /* setup affine matrix for call to giza_render */ double affine[6]; affine[0] = 1.0; affine[1] = 0.0; affine[2] = 0.0; affine[3] = 1.0; affine[4] = 0.0; affine[5] = 0.0; /* fill an array with values from valMin to valMax */ int npixwedg = 400; double sample[npixwedg]; double vmin,vmax; if (valMax < valMin) { vmin = valMax; vmax = valMin; } else { vmin = valMin; vmax = valMax; } double dx = (vmax - vmin)/((double) (npixwedg-1)); int i; for (i = 0; i < npixwedg; i++) { sample[i] = vmin + i*dx; } double vptxmini = vptxmin; double vptxmaxi = vptxmax; double vptymini = vptymin; double vptymaxi = vptymax; int bottom = 0, top = 0, left = 0, right = 0; if (strchr(side,'B') || strchr(side,'b')) { bottom = 1; } else if (strchr(side,'T') || strchr(side,'t')) { top = 1; } else if (strchr(side,'L') || strchr(side,'l')) { left = 1; } else if (strchr(side,'R') || strchr(side,'r')) { right = 1; } int greyscale = 0; if (strchr(side,'G') || strchr(side,'g')) { greyscale = 1; } if (bottom || top) { if (bottom) { vptymaxi = vptymini - disp*ych; vptymini = vptymaxi - width*xch; } else { vptymini = vptymaxi + disp*ych; vptymaxi = vptymini + width*xch; } giza_set_viewport(vptxmini,vptxmaxi,vptymini,vptymaxi); giza_set_window(1.0,(double) npixwedg, 0.0, 1.0); if (greyscale) { giza_render_gray(npixwedg,1,sample,0,npixwedg-1,0,0,valMin,valMax, GIZA_EXTEND_PAD,GIZA_FILTER_DEFAULT,affine); } else { giza_render(npixwedg,1,sample,0,npixwedg-1,0,0,valMin,valMax, GIZA_EXTEND_PAD,GIZA_FILTER_DEFAULT,affine); } giza_set_window(vmin,vmax,0.0,1.0); if (bottom) { giza_box("BCNST",0.0,0,"BC",0.0,0); } else { giza_box("BCMST",0.0,0,"BC",0.0,0); } } else if (left || right) { if (left) { vptxmaxi = vptxmini - disp*xch; vptxmini = vptxmaxi - width*xch; } else { vptxmini = vptxmaxi + disp*xch; vptxmaxi = vptxmini + width*xch; } giza_set_viewport(vptxmini,vptxmaxi,vptymini,vptymaxi); giza_set_window(0.0, 1.0, 1.0,(double) npixwedg); if (greyscale) { giza_render_gray(1,npixwedg,sample,0,0,0,npixwedg-1,valMin,valMax, GIZA_EXTEND_PAD,GIZA_FILTER_DEFAULT,affine); } else { giza_render(1,npixwedg,sample,0,0,0,npixwedg-1,valMin,valMax, GIZA_EXTEND_PAD,GIZA_FILTER_DEFAULT,affine); } giza_set_window(0.0,1.0,vmin,vmax); if (left) { giza_box("BC",0.0,0,"BCNST",0.0,0); } else { giza_box("BC",0.0,0,"BCMST",0.0,0); } } giza_annotate(side,2.8,1.0,1.0,label); /* reset window and viewport */ giza_set_viewport(vptxmin,vptxmax,vptymin,vptymax); giza_set_window(xmin,xmax,ymin,ymax); giza_flush_device (); } /** * Drawing: giza_colour_bar_float * * Synopsis: Same functionality as giza_colour_bar, but takes floats * * See Also: giza_colour_bar */ void giza_colour_bar_float (const char *side, float disp, float width, float valMin, float valMax, const char *label) { giza_colour_bar (side, (double) disp, (double) width, (double) valMin, (double) valMax, label); } giza-1.5.0/src/giza-colour-index.c000066400000000000000000000376001477367113400167650ustar00rootroot00000000000000/* giza - a scientific plotting library built on cairo * * Copyright (c) 2010 James Wetter and Daniel Price * Copyright (c) 2010-2012 Daniel Price * * This library is free software; and you are welcome to redistribute * it under the terms of the GNU General Public License * (GPL, see LICENSE file for details) and the provision that * this notice remains intact. If you modify this file, please * note section 5a) of the GPLv3 states that: * * a) The work must carry prominent notices stating that you modified * it, and giving a relevant date. * * This software is distributed "AS IS", with ABSOLUTELY NO WARRANTY. * See the GPL for specific language governing rights and limitations. * * The Original code is the giza plotting library. * * Contributor(s): * James Wetter * Daniel Price (main contact) */ #include "giza-colour-private.h" #include "giza-private.h" #include "giza-io-private.h" #include "giza-drivers-private.h" #include #include #include static double colourIndex[GIZA_COLOUR_INDEX_MAX - GIZA_COLOUR_INDEX_MIN + 1][4]; static int _giza_ci; /* these are declared extern in the header file */ int _giza_colour_index_min; int _giza_colour_index_max; /** * Settings: giza_set_colour_index * * Synopsis: Sets the colour to that represented by the colour index ci. * Represented colours can be changed via giza_set_colour_representation. * * Input: * -ci :- The new colour index. */ void giza_set_colour_index (int ci) { if (!_giza_check_device_ready ("giza_set_colour_index")) return; if (ci < GIZA_COLOUR_INDEX_MIN || ci > GIZA_COLOUR_INDEX_MAX) { _giza_warning ("giza_set_colour_index", "Invalid colour index, colour index not set"); return; } _giza_ci = ci; cairo_set_source_rgba (Dev[id].context, colourIndex[ci][0], colourIndex[ci][1], colourIndex[ci][2], colourIndex[ci][3]); } /** * Settings: giza_get_colour_index * * Synopsis: Queries the current colour index. * * Input: * -ci :- gets set to the current colour index. */ void giza_get_colour_index (int *ci) { if (!_giza_check_device_ready ("giza_get_colour_index")) return; *ci = _giza_ci; } /** * Settings: giza_set_colour_representation * * Synopsis: Allows the user to set the colour represented by the given colour index. * * Input: * -ci :- Which colour index to set. * -red :- The red component of the colour (between 0 and 1). * -green :- The green component of the colour (between 0 and 1). * -blue :- The blue component of the colour (between 0 and 1). */ void giza_set_colour_representation (int ci, double red, double green, double blue) { if (!_giza_check_device_ready ("giza_set_colour_representation")) return; giza_set_colour_representation_alpha (ci, red, green, blue, 1.); } /** * Settings: giza_set_colour_representation_float * * Synopsis: Same functionality as giza_set_colour_representation but takes floats/ */ void giza_set_colour_representation_float (int ci, float red, float green, float blue) { giza_set_colour_representation (ci, (double) red, (double) green, (double) blue); } /** * Settings: giza_set_colour_representation_alpha * * Synopsis: Allows the user to set the colour represented by the given colour index, aswell * as the alpha. * * Input: * -ci :- Which colour index to set. * -red :- The red component of the colour (between 0 and 1). * -green :- The green component of the colour (between 0 and 1). * -blue :- The blue component of the colour (between 0 and 1). * -alpha :- The alpha used when drawing with this colour index (between 0 and 1). */ void giza_set_colour_representation_alpha (int ci, double red, double green, double blue, double alpha) { if (!_giza_check_device_ready ("giza_set_colour_representation")) return; if (ci < GIZA_COLOUR_INDEX_MIN || ci > GIZA_COLOUR_INDEX_MAX) { _giza_warning ("giza_set_colour_representation", "Invalid colour index, colour representation not set"); return; } colourIndex[ci][0] = red; colourIndex[ci][1] = green; colourIndex[ci][2] = blue; colourIndex[ci][3] = alpha; /* If we are changing the current colour index make the change teke effect immediately */ if (ci == _giza_ci) giza_set_colour_index(ci); /* if (ci == 0) { printf("in scr ci = %i rgb = %f %f %f %f drawn = %i \n",ci,red,green,blue,alpha,Dev[id].drawn); giza_draw_background(); _giza_stroke(); giza_flush_device(); } */ } /** * Settings: giza_set_colour_representation_alpha_float * * Synopsis: Same functionality as giza_set_colour_representation_alpha but takes floats. * * See Also: giza_set_colour_representation_alpha, giza_set_colour_representation */ void giza_set_colour_representation_alpha_float (int ci, float red, float green, float blue, float alpha) { giza_set_colour_representation_alpha (ci, (double) red, (double) green, (double) blue, (double) alpha); } /** * Settings: giza_set_colour_representation_hls * * Synopsis: Allows the user to set the colour represented by the given colour index * This routine accepts colours in the Hue, Lightness and Saturation system. * * Input: * -ci :- Which colour index to set. * -hue :- The Hue component of the colour (between 0 and 360 degrees). * -lightness :- The Lightness component of the colour (between 0 and 1). * -saturation :- The Saturation component of the colour (between 0 and 1). */ void giza_set_colour_representation_hls (int ci, double hue, double lightness, double saturation) { if (!_giza_check_device_ready ("giza_set_colour_representation")) return; double red, green, blue; _giza_hls_to_rgb(hue,lightness,saturation,&red,&green,&blue); giza_set_colour_representation_alpha (ci, red, green, blue, 1.); } /** * Settings: giza_set_colour_representation_hls_float * * Synopsis: Same functionality as giza_set_colour_representation_hls but takes floats */ void giza_set_colour_representation_hls_float (int ci, float hue, float lightness, float saturation) { double red, green, blue; _giza_hls_to_rgb((double) hue,(double) lightness,(double) saturation,&red,&green,&blue); giza_set_colour_representation (ci, red, green, blue); } /** * Settings: giza_set_colour_representation_rgb * * Synopsis: Same as giza_set_colour_representation but accepts integer 0->255 instead of double 0->1 * * Input: * -ci :- Which colour index to set. * -red :- The red component of the colour (between 0 and 255). * -green :- The green component of the colour (between 0 and 255). * -blue :- The blue component of the colour (between 0 and 255). * * See Also: giza_set_colour_representation, giza_set_colour_representation_rgba */ void giza_set_colour_representation_rgb (int ci, int red, int green, int blue) { if (!_giza_check_device_ready ("giza_set_colour_representation_rgb")) return; giza_set_colour_representation_rgba (ci, red, green, blue, 1.); } /** * Settings: giza_set_colour_representation_rgba * * Synopsis: Same as giza_set_colour_representation_alpha but accepts 0->255 instead of 0->1 * * Input: * -ci :- Which colour index to set. * -red :- The red component of the colour (between 0 and 255). * -green :- The green component of the colour (between 0 and 255). * -blue :- The blue component of the colour (between 0 and 255). * -alpha :- The alpha component of the colour (between 0 and 1) * * See Also: giza_set_colour_representation_alpha, giza_set_colour_representation_rgb */ void giza_set_colour_representation_rgba (int ci, int red, int green, int blue, double alpha) { if (!_giza_check_device_ready ("giza_set_colour_representation_rgba")) return; giza_set_colour_representation_alpha (ci, ((double) red)/255., ((double) green)/255., ((double) blue)/255., alpha); } /** * Settings: giza_set_colour_representation_rgba_float * * Synopsis: Same functionality as giza_set_colour_representation_rgba but takes floats * * See Also: giza_set_colour_representation_rgba, giza_set_colour_representation_alpha */ void giza_set_colour_representation_rgba_float (int ci, int red, int green, int blue, float alpha) { giza_set_colour_representation_rgba (ci, red, green, blue, (double) alpha); } /** * Settings: giza_get_colour_representation * * Synopsis: Query the RGB at a given colour index. * * Input: * -ci :- The index to enquire about * -red :- Gets set to the red value at ci (range 0->1) * -green :- Gets set to the green value at ci (range 0->1) * -blue :- Gets set to the blue value at ci (range 0->1) */ void giza_get_colour_representation (int ci, double *red, double *green, double *blue) { if (!_giza_check_device_ready ("giza_get_colour_representation")) { *red = 0.; *green = 0.; *blue = 0.; return; } if (ci < GIZA_COLOUR_INDEX_MIN || ci > GIZA_COLOUR_INDEX_MAX) { _giza_warning ("giza_get_colour_representation", "Invalid colour index"); return; } *red = colourIndex[ci][0]; *green = colourIndex[ci][1]; *blue = colourIndex[ci][2]; } /** * Settings giza_set_colour_representation_float * * Synopsis: Same functionality as giza_get_colour_representation but takes floats. */ void giza_get_colour_representation_float (int ci, float *red, float *green, float *blue) { if (!_giza_check_device_ready ("giza_get_colour_representation_float")) return; if (ci < GIZA_COLOUR_INDEX_MIN || ci > GIZA_COLOUR_INDEX_MAX) { _giza_error ("giza_get_colour_representation_float", "Invalid colour index"); return; } double dred, dgreen, dblue; giza_get_colour_representation (ci, &dred, &dgreen, &dblue); *red = (float) dred; *green = (float) dgreen; *blue = (float) dblue; } /** * Settings: giza_get_colour_representation_alpha * * Synopsis: Query the RGB and alpha at a given colour index. * * Input: * -ci :- The index to enquire about * -red :- Gets set to the red value at ci * -green :- Gets set to the green value at ci * -blue :- Gets set to the blue value at ci * -alpha :- Gets set to the alpha at ci */ void giza_get_colour_representation_alpha (int ci, double *red, double *green, double *blue, double *alpha) { if (!_giza_check_device_ready ("giza_get_colour_representation")) { *red = 0.; *green = 0.; *blue = 0.; *alpha = 0.; return; } if (ci < GIZA_COLOUR_INDEX_MIN || ci > GIZA_COLOUR_INDEX_MAX) { _giza_warning ("giza_get_colour_representation", "Invalid colour index"); return; } *red = colourIndex[ci][0]; *green = colourIndex[ci][1]; *blue = colourIndex[ci][2]; *alpha = colourIndex[ci][3]; } /** * Settings giza_set_colour_representation_alpha_float * * Synopsis: Same functionality as giza_get_colour_representation_alpha but takes floats. * * See Also: giza_get_colour_representation_alpha */ void giza_get_colour_representation_alpha_float (int ci, float *red, float *green, float *blue, float *alpha) { if (!_giza_check_device_ready ("giza_get_colour_representation_float")) return; if (ci < GIZA_COLOUR_INDEX_MIN || ci > GIZA_COLOUR_INDEX_MAX) { _giza_error ("giza_get_colour_representation_float", "Invalid colour index"); return; } double dred, dgreen, dblue, dalpha; giza_get_colour_representation_alpha (ci, &dred, &dgreen, &dblue, &dalpha); *red = (float) dred; *green = (float) dgreen; *blue = (float) dblue; *alpha = (float) dalpha; } void _giza_init_colour_index (void) { giza_set_colour_palette(GIZA_COLOUR_PALETTE_DEFAULT); /* All alpha default to 1 */ colourIndex[0][3] = Dev[id].defaultBackgroundAlpha; int i; for (i = GIZA_COLOUR_INDEX_MIN + 1; i <= GIZA_COLOUR_INDEX_MAX; ++i) { colourIndex[i][3] = 1.; } giza_set_colour_index (1); } /** * Settings: giza_set_colour_index_range * * Synopsis: Set the range of colour indices that are affected by giza_set_colour_table * * Note: giza_render is not affected by this setting * * Input: * -cimin :- lowest colour index in range * -cimax :- highest colour index in range */ void giza_set_colour_index_range (int cimin, int cimax) { /* constrain both colour indices to be within GIZA_COLOUR_INDEX_MIN, GIZA_COLOUR_INDEX_MAX */ _giza_colour_index_min = MAX(GIZA_COLOUR_INDEX_MIN, MIN(cimin, GIZA_COLOUR_INDEX_MAX)); _giza_colour_index_max = MIN(GIZA_COLOUR_INDEX_MAX, MAX(cimax, GIZA_COLOUR_INDEX_MIN)); /* Now make sure that colour_index_min <= colour_index_max */ _giza_colour_index_min = MIN(_giza_colour_index_min, _giza_colour_index_max); _giza_colour_index_max = MAX(_giza_colour_index_min, _giza_colour_index_max); } /** * Settings: giza_get_colour_index_range * * Synopsis: Queries the current range of colour indices affected by giza_set_colour_table, * as set by giza_set_colour_index_range * * Output: * -cimin :- lowest colour index in range * -cimax :- highest colour index in range */ void giza_get_colour_index_range (int *cimin, int *cimax) { *cimin = _giza_colour_index_min; *cimax = _giza_colour_index_max; } /** * Settings: giza_set_range_as_colour_table * * Synopsis: Can be used in place of giza_set_colour_table to install * the colour table from a predefined set of colour indices * * See Also: giza_set_colour_table */ /*void giza_set_range_as_colour_table (int *cimin, int *cimax) { *cimin = _giza_colour_index_min; *cimax = _giza_colour_index_max; } */ /** * Converts hls to rgb colour representation * See: http://en.wikipedia.org/wiki/HSL_and_HSV#From_HSL */ void _giza_hls_to_rgb (double hue, double lightness, double saturation, double *red, double *green, double *blue) { hue = fmod(hue,360.); /* wrap to 0->360 degrees */ double Chroma,Hdash,X,R1,G1,B1,m; Chroma = (1. - fabs(2.*lightness - 1.))*saturation; Hdash = hue/60.; X = Chroma*(1. - fabs( fmod(Hdash,2.) - 1.)); if (Hdash >= 0. && Hdash < 1.) { R1 = Chroma; G1 = X; B1 = 0.; } else if (Hdash < 2.) { R1 = X; G1 = Chroma; B1 = 0.; } else if (Hdash < 3.) { R1 = 0.; G1 = Chroma; B1 = X; } else if (Hdash < 4.) { R1 = 0.; G1 = X; B1 = Chroma; } else if (Hdash < 5.) { R1 = X; G1 = 0.; B1 = Chroma; } else if (Hdash < 6.) { R1 = Chroma; G1 = 0.; B1 = X; } else /* H undefined */ { R1 = 0.; G1 = 0.; B1 = 0.; } /* Now get RGB by matching lightness */ m = lightness - 0.5*Chroma; *red = _giza_set_in_range(R1 + m,0.,1.); *green = _giza_set_in_range(G1 + m,0.,1.); *blue = _giza_set_in_range(B1 + m,0.,1.); } /** * Ensures value of the input variable falls in the range * given by val1 and val2 */ double _giza_set_in_range (double val, double val1, double val2) { double valmin, valmax; if (val1 < val2) { valmin = val1; valmax = val2; } else { valmin = val2; valmax = val1; } if (val < valmin) return valmin; else if (val > valmax) return valmax; else return val; } /** * Internal routine to temporarily set alpha to a particular value * Note that this only affects the current colour index * and should be RESET to 1.0 after finishing */ void _giza_set_alpha (double alpha) { int ci; double r,g,b,a; giza_get_colour_index(&ci); giza_get_colour_representation_alpha(ci,&r,&g,&b,&a); giza_set_colour_representation_alpha(ci,r,g,b,alpha); } void _giza_get_alpha (double *alpha) { int ci; double r,g,b; giza_get_colour_index(&ci); giza_get_colour_representation_alpha(ci,&r,&g,&b,alpha); } giza-1.5.0/src/giza-colour-palette.c000066400000000000000000000245611477367113400173160ustar00rootroot00000000000000/* giza - a scientific plotting library built on cairo * * Copyright (c) 2010 James Wetter and Daniel Price * Copyright (c) 2010-2012 Daniel Price * * This library is free software; and you are welcome to redistribute * it under the terms of the GNU General Public License * (GPL, see LICENSE file for details) and the provision that * this notice remains intact. If you modify this file, please * note section 5a) of the GPLv3 states that: * * a) The work must carry prominent notices stating that you modified * it, and giving a relevant date. * * This software is distributed "AS IS", with ABSOLUTELY NO WARRANTY. * See the GPL for specific language governing rights and limitations. * * The Original code is the giza plotting library. * * Contributor(s): * James Wetter * Daniel Price (main contact) */ #include "giza-colour-private.h" #include "giza-private.h" #include #include #include /** * Settings: giza_set_colour_palette * * Synopsis: Choose between various preset colour "palettes" for the first 16 * colour indices commonly used for point and line drawing. * This is equivalent to using giza_set_colour_representation * for each index in turn. * * Note: * giza_render is not affected by this setting * * Input: * -palette :- choice of colour palette * * Available palette options: * -0 or GIZA_COLOUR_PALETTE_DEFAULT :- default giza palette * -1 or GIZA_COLOUR_PALETTE_PGPLOT :- default PGPLOT palette * -2 to 4 :- various experimental line palettes * -5 :- colourblind safe palette from http://jfly.iam.u-tokyo.ac.jp/color/ * -6 :- optimum palette from http://web.media.mit.edu/~wad/color/palette.html * -7 :- graph-a-licious * See Also: giza_set_colour_index, giza_set_colour_table * */ void giza_set_colour_palette (int palette) { int nlinecolours; char *text = getenv ("GIZA_PALETTE"); if(text) { int mypalette; if ( sscanf(text, "%i", &mypalette) == 1 ) { palette = mypalette; } } /* set foreground/background colours independently */ giza_set_colour_representation (0,1.0,1.0,1.0); /* white */ giza_set_colour_representation (1,0.0,0.0,0.0); /* black */ switch(palette) { case GIZA_COLOUR_PALETTE_PGPLOT: /* Installs the standard PGPLOT colour table */ giza_set_colour_representation (2,1.0,0.0,0.0); giza_set_colour_representation (3,0.0,1.0,0.0); giza_set_colour_representation (4,0.0,0.0,1.0); giza_set_colour_representation (5,0.0,1.0,1.0); giza_set_colour_representation (6,1.0,0.0,1.0); giza_set_colour_representation (7,1.0,1.0,0.0); giza_set_colour_representation (8,1.0,0.5,0.0); giza_set_colour_representation (9,0.5,1.0,0.0); giza_set_colour_representation (10,0.0,1.0,0.5); giza_set_colour_representation (11,0.0,0.5,1.0); giza_set_colour_representation (12,0.5,0.0,1.0); giza_set_colour_representation (13,1.0,0.0,0.5); giza_set_colour_representation (14,0.333,0.333,0.333); giza_set_colour_representation (15,0.667,0.667,0.667); nlinecolours = 16; break; case 2: /* Terry, with modifications */ giza_set_colour_representation (2, 1., 0., 0.); /* red */ giza_set_colour_representation (3, 0., 0.25, 1.); /* blue */ giza_set_colour_representation (4, 0.5, 0., 0.5); /* purple */ giza_set_colour_representation (5, 0.02,0.93,0.93); /* cyan */ giza_set_colour_representation (6, 0., 0.5, 0.); /* green */ giza_set_colour_representation (7, 0.5625, 0.554688, 0.011719); /* mustard */ giza_set_colour_representation (8, 0.3,0.2,0.15); /* brown */ giza_set_colour_representation (9,1.0,0.5,0.0); /* orange */ giza_set_colour_representation_rgb (10, 249, 223, 11); /* desert sun */ nlinecolours = 11; break; case 3: /* adapted from palettes cheer up emo kid and grandma's pillow on colorlovers.com */ giza_set_colour_representation_rgb (2, 85, 98, 112); /* mighty slate */ giza_set_colour_representation_rgb (3, 78, 205, 196); /* pacifica */ giza_set_colour_representation_rgb (4, 100, 122, 50); /* dark apple chic */ giza_set_colour_representation_rgb (5, 255, 107, 107); /* cheery pink */ giza_set_colour_representation_rgb (6, 196, 77, 88); /* grandma's pillow */ giza_set_colour_representation_rgb (7, 192, 157, 93); /* regretful */ giza_set_colour_representation_rgb (8, 239, 169, 133); /* vintage peach */ giza_set_colour_representation_rgb (9, 221, 133, 239); /* pinkish */ nlinecolours = 10; break; case 4: /* adapted from aboriginal and outback from colourlovers.com */ giza_set_colour_representation_rgb (2, 196, 14, 14); /* vegas */ giza_set_colour_representation_rgb (3, 32, 133, 133); /* eucalyptus */ giza_set_colour_representation_rgb (4, 207, 62, 156); /* parrot */ giza_set_colour_representation_rgb (5, 247, 74, 0); /* enjoyable orange */ giza_set_colour_representation_rgb (6, 38, 51, 17); /* cataclysm */ giza_set_colour_representation_rgb (7, 5, 79, 129); /* wintersky tango */ giza_set_colour_representation_rgb (8, 249, 223, 11); /* desert sun */ nlinecolours = 9; break; case 5: /* Colourblind-safe palette from http://jfly.iam.u-tokyo.ac.jp/color/ */ giza_set_colour_representation (2, 0.9, 0.6, 0.); /* orange */ giza_set_colour_representation (3, 0.35, 0.7, 0.9); /* sky blue */ giza_set_colour_representation (4, 0., 0.6, 0.5); /* bluish green */ giza_set_colour_representation (5, 0.95, 0.9, 0.25); /* yellow */ giza_set_colour_representation (6, 0., 0.45, 0.7); /* blue */ giza_set_colour_representation (7, 0.8, 0.4, 0.); /* vermilion */ giza_set_colour_representation (8, 0.8, 0.6, 0.7); /* reddish purple */ nlinecolours = 9; break; case 6: /* modified version of http://web.media.mit.edu/~wad/color/palette.html */ giza_set_colour_representation_rgb(2, 193, 15, 15); /* red */ giza_set_colour_representation_rgb(3, 42, 75, 215); /* blue */ giza_set_colour_representation_rgb(4, 29, 105, 20); /* green */ giza_set_colour_representation_rgb(5, 129, 74, 25); /* brown */ giza_set_colour_representation_rgb(6, 129, 38, 192); /* purple */ giza_set_colour_representation_rgb(7, 160, 160, 160); /* light grey */ giza_set_colour_representation_rgb(8, 129, 197, 122); /* light green */ giza_set_colour_representation_rgb(9, 157, 175, 255); /* light blue */ giza_set_colour_representation_rgb(10, 41, 208, 208); /* cyan */ giza_set_colour_representation_rgb(11, 255, 146, 51); /* orange */ giza_set_colour_representation_rgb(12, 255, 238, 51); /* yellow */ giza_set_colour_representation_rgb(13, 233, 222, 187); /* tan */ giza_set_colour_representation_rgb(14, 255, 205, 243); /* pink */ giza_set_colour_representation_rgb(15, 87, 87, 87); /* Dark grey */ nlinecolours = 16; break; case 7: /* graph-a-licious from colourlovers.com */ giza_set_colour_representation_rgb (2, 209, 4, 21); /* red red */ giza_set_colour_representation_rgb (3, 113, 49, 159); /* poiple */ giza_set_colour_representation_rgb (4, 12, 34, 100); /* ink11 */ giza_set_colour_representation_rgb (5, 113, 145, 38); /* flower power FGR */ giza_set_colour_representation_rgb (6, 255, 207, 38); /* flower power yel */ /* added by DJP */ giza_set_colour_representation_rgb (7, 255, 146, 51); /* orange */ giza_set_colour_representation_rgb (8, 139, 94, 45); /* brown */ nlinecolours = 9; break; case 8: /* Matlab inspired colours */ giza_set_colour_representation_rgb( 2, 0, 114, 189); giza_set_colour_representation_rgb( 3, 217, 83, 25); giza_set_colour_representation_rgb( 4, 237, 177, 32); giza_set_colour_representation_rgb( 5, 126, 47, 142); giza_set_colour_representation_rgb( 6, 119, 172, 48); giza_set_colour_representation_rgb( 7, 77, 190, 238); giza_set_colour_representation_rgb( 8, 162, 20, 47); giza_set_colour_representation_rgb( 9, 95, 158, 160); giza_set_colour_representation_rgb(10, 238, 203, 173); giza_set_colour_representation_rgb(11, 190, 179, 239); giza_set_colour_representation_rgb(12, 89, 179, 230); giza_set_colour_representation_rgb(13, 0, 153, 128); giza_set_colour_representation_rgb(14, 204, 102, 0); giza_set_colour_representation_rgb(15, 204, 153, 179); giza_set_colour_representation_rgb(16, 160, 160, 160); nlinecolours = 16; break; default: giza_set_colour_representation (0, 1., 1., 1.); /* white */ giza_set_colour_representation (1, 0., 0., 0.); /* black */ /* red */ giza_set_colour_representation (2, .933, 0.173, 0.173); /* green */ giza_set_colour_representation (3, 0.18, 0.545, 0.341); /* blue */ giza_set_colour_representation (4, 0., 0., 1.); /* Dark slate gray */ giza_set_colour_representation (5, 0.192, 0.31, 0.31); /* Dark violet */ giza_set_colour_representation (6, 0.58, 0., 0.827); /* cyan */ giza_set_colour_representation (7, 0.0, 0.825, 0.825); /* Indian red */ /*giza_set_colour_representation (7, 0.804, 0.361, 0.361); */ /* Gold */ /*giza_set_colour_representation (7, 1., 0.843, 0.); */ giza_set_colour_representation (8, 1., 0.31, 0.); /* cadet blue */ giza_set_colour_representation (9, 0.373, 0.62, 0.627); /* peach puff */ giza_set_colour_representation (10, 0.933, 0.796, 0.678); giza_set_colour_representation (11, 0.0, 1.0, 0.5); giza_set_colour_representation (12, 0.0, 0.5, 1.0); giza_set_colour_representation (13, 0.5, 0.0, 0.0); giza_set_colour_representation (14, 1.0, 0.0, 0.5); giza_set_colour_representation (15, 0.333, 0.333, 0.333); giza_set_colour_representation (16, 0.667, 0.667, 0.667); nlinecolours = 16; break; } /* * allow the rest of the colour indices to be * set by giza_set_colour_table * (this range can be changed by * calling giza_set_colour_index_range) */ giza_set_colour_index_range(nlinecolours,GIZA_COLOUR_INDEX_MAX); } giza-1.5.0/src/giza-colour-private.h000066400000000000000000000027631477367113400173370ustar00rootroot00000000000000/* giza - a scientific plotting library built on cairo * * Copyright (c) 2010 James Wetter and Daniel Price * Copyright (c) 2010-2012 Daniel Price * * This library is free software; and you are welcome to redistribute * it under the terms of the GNU General Public License * (GPL, see LICENSE file for details) and the provision that * this notice remains intact. If you modify this file, please * note section 5a) of the GPLv3 states that: * * a) The work must carry prominent notices stating that you modified * it, and giving a relevant date. * * This software is distributed "AS IS", with ABSOLUTELY NO WARRANTY. * See the GPL for specific language governing rights and limitations. * * The Original code is the giza plotting library. * * Contributor(s): * James Wetter * Daniel Price (main contact) */ #define GIZA_CTAB_SAVE_MAX 10 #define GIZA_CTAB_MAXSIZE 256 typedef struct { int n; double controlPoints[GIZA_CTAB_MAXSIZE]; double red[GIZA_CTAB_MAXSIZE]; double green[GIZA_CTAB_MAXSIZE]; double blue[GIZA_CTAB_MAXSIZE]; } giza_ctab; void _giza_set_range_from_colour_table (int cimin, int cimax); void _giza_init_colour_index (void); void _giza_init_colour_table (void); void _giza_free_colour_table (void); void _giza_hls_to_rgb (double hue, double lightness, double saturation, double *red, double *green, double *blue); extern int _giza_colour_index_min; extern int _giza_colour_index_max; giza-1.5.0/src/giza-colour-table.c000066400000000000000000000251211477367113400167400ustar00rootroot00000000000000/* giza - a scientific plotting library built on cairo * * Copyright (c) 2010 James Wetter and Daniel Price * Copyright (c) 2010-2012 Daniel Price * * This library is free software; and you are welcome to redistribute * it under the terms of the GNU General Public License * (GPL, see LICENSE file for details) and the provision that * this notice remains intact. If you modify this file, please * note section 5a) of the GPLv3 states that: * * a) The work must carry prominent notices stating that you modified * it, and giving a relevant date. * * This software is distributed "AS IS", with ABSOLUTELY NO WARRANTY. * See the GPL for specific language governing rights and limitations. * * The Original code is the giza plotting library. * * Contributor(s): * James Wetter * Daniel Price (main contact) */ #include "giza-colour-private.h" #include "giza-private.h" #include "giza-io-private.h" #include #include #include static giza_ctab _giza_colour_table; static giza_ctab _giza_saved_colour_tables[GIZA_CTAB_SAVE_MAX]; static int _giza_save_ctab_ncalls; /** * Settings: giza_set_colour_table * * Synopsis: Sets the colour table. * * Input: * -controlPoints :- Specifies at which fraction of the ramp the control points are placed * -red :- the normalised value of the red component at each control point * -green :- the normalised value of the green component at each control point * -blue :- the normalised value of the blue component at each control point * -n :- the number of control points * -contrast :- contrast of colour ramp (normally 1.0). Use -contrast to reverse direction of ramp * -brightness :- brightness of colour ramp (normally 0.5) * * Return: * -0 :- No error. * -1 :- An error occurred. */ int giza_set_colour_table (const double *controlPoints, const double *red, const double *green, const double *blue, int n, double contrast, double brightness) { if (!_giza_check_device_ready ("giza_set_colour_table")) return 1; if (n < 2 || n > GIZA_CTAB_MAXSIZE) { _giza_warning ("giza_set_colour_table", "Invalid number of control points, colour table not set"); return 1; } int i, tmpn = 0; int iprev = 0; /*printf("contrast = %f, brightness = %f \n",contrast,brightness);*/ if (contrast >= 0.) { for (i = 0; i < n; i++) { /* check the control point is valid */ if (controlPoints[i] >= 0. && controlPoints[i] <= 1.) { if (tmpn > 0) iprev = tmpn - 1; if (tmpn <= 0 || controlPoints[i] > _giza_colour_table.controlPoints[iprev]) { tmpn++; _giza_colour_table.controlPoints[tmpn-1] = contrast*controlPoints[i]; _giza_colour_table.red[tmpn-1] = _giza_set_in_range(red[i],0.,1.); _giza_colour_table.green[tmpn-1] = _giza_set_in_range(green[i],0.,1.); _giza_colour_table.blue[tmpn-1] = _giza_set_in_range(blue[i],0.,1.); } } } } else { for (i = n-1; i >= 0; i--) { /* check the control point is valid */ if (controlPoints[i] >= 0. && controlPoints[i] <= 1.) { if (tmpn > 0) iprev = tmpn - 1; if (tmpn <= 0 || (1. + contrast*controlPoints[i]) > _giza_colour_table.controlPoints[iprev]) { tmpn++; _giza_colour_table.controlPoints[tmpn-1] = 1. + contrast*controlPoints[i]; _giza_colour_table.red[tmpn-1] = _giza_set_in_range(red[i],0.,1.); _giza_colour_table.green[tmpn-1] = _giza_set_in_range(green[i],0.,1.); _giza_colour_table.blue[tmpn-1] = _giza_set_in_range(blue[i],0.,1.); } } } } _giza_colour_table.n = tmpn; if (tmpn < n) { /* require at least two valid control points in our table to remain! */ if( tmpn<2 ) { _giza_warning ("giza_set_colour_table", "not enough valid control points in colour table remain after vetting"); return 2; } /* otherwise just issue a warning */ _giza_warning ("giza_set_colour_table", "%d invalid values for control points in colour table settings out of %d", tmpn, n); } /* use the installed colour table to set the colours of colour indices in the specified range */ _giza_set_range_from_colour_table(_giza_colour_index_min,_giza_colour_index_max); return 0; } /** * Settings: giza_set_colour_table_float * * Synopsis: Same functionality as giza_set_colour_table but takes floats * * See Also: giza_set_colour_table */ int giza_set_colour_table_float (const float *controlPoints, const float *red, const float *green, const float *blue, int n, float contrast, float brightness) { if (!_giza_check_device_ready ("giza_set_colour_table_float")) return 1; double dred[n]; double dgreen[n]; double dblue[n]; double dcontrol[n]; int i; for (i = 0; i < n; i++) { dred[i] = (double) red[i]; dgreen[i] = (double) green[i]; dblue[i] = (double) blue[i]; dcontrol[i] = (double) controlPoints[i]; } return giza_set_colour_table(dcontrol,dred,dgreen,dblue,n,(double) contrast,(double) brightness); } /** * Settings: giza_rgb_from_table * * Synopsis: Gets the rgb values from the colour table corresponding to the fraction of the table. * * Input: * -pos :- The fraction along the table to retrieve the colour from. * A value less then 0 is assigned the colour at zero, and above one assigned * the colour at one. * -red :- Gets set to the red component of the colour at pos. * -green :- Gets set to the green component of the colour at pos. * -blue :- Gets set to the blue component of the colour at pos. * * See Also: giza_set_colour_table */ void giza_rgb_from_table (double pos, double *red, double *green, double *blue) { if (!_giza_check_device_ready ("giza_rgb_from_table")) return; *red = -1.; /* find between which control points pos lies */ int i; /* If it is lower than lowest control point get the lowest colour */ if (pos < _giza_colour_table.controlPoints[0]) { *red = _giza_colour_table.red[0]; *green = _giza_colour_table.green[0]; *blue = _giza_colour_table.blue[0]; return; } /* If it is higher than the highest control point get the highest colour */ if (pos >= _giza_colour_table.controlPoints[_giza_colour_table.n - 1]) { *red = _giza_colour_table.red[_giza_colour_table.n - 1]; *green = _giza_colour_table.green[_giza_colour_table.n - 1]; *blue = _giza_colour_table.blue[_giza_colour_table.n - 1]; return; } /* Otherwise look in the table */ for (i = 1; i < _giza_colour_table.n; i++) { if (pos < _giza_colour_table.controlPoints[i]) { double fraction, d_giza_colour_table; /* find where between the two control points pos lies */ d_giza_colour_table = (_giza_colour_table.controlPoints[i] - _giza_colour_table.controlPoints[i - 1]); if (fabs (d_giza_colour_table) > GIZA_TINY) { fraction = (pos - _giza_colour_table.controlPoints[i - 1]) / d_giza_colour_table; } else { fraction = 1.; } /* set the r,g,b using this fraction */ *red = _giza_colour_table.red[i - 1] + fraction * (_giza_colour_table.red[i] - _giza_colour_table.red[i - 1]); *green = _giza_colour_table.green[i - 1] + fraction * (_giza_colour_table.green[i] - _giza_colour_table.green[i - 1]); *blue = _giza_colour_table.blue[i - 1] + fraction * (_giza_colour_table.blue[i] - _giza_colour_table.blue[i - 1]); return; } } /* this should never happen (but DOES if pos is NaN or otherwise ill-defined) */ if (*red < 0.) { *red = 0.; *green = 0.; *blue = 0.; } } /** * Settings: giza_rgb_from_table_float * * Synopsis: Same functionality giza_rgb_from_table but takes floats * * See Also: giza_rgb_from_table, giza_set_colour_table */ void giza_rgb_from_table_float (float pos, float *red, float *green, float *blue) { double dred, dgreen, dblue; giza_rgb_from_table ((double) pos, &dred, &dgreen, &dblue); *red = (float) dred; *green = (float) dgreen; *blue = (float) dblue; } /** * Sets up memory for the main colour table and establishes a grey scale colour table */ void _giza_init_colour_table (void) { _giza_save_ctab_ncalls = 0; giza_set_colour_table_gray(); } /** * Frees the memory associated with the main colour table */ void _giza_free_colour_table (void) { /*_giza_deallocate_colour_table(&_giza_colour_table);*/ } /** * Settings: giza_save_colour_table * * Synopsis: Saves the current colour table * * See Also: giza_restore_colour_table */ void giza_save_colour_table (void) { _giza_save_ctab_ncalls += 1; if (_giza_save_ctab_ncalls > GIZA_CTAB_SAVE_MAX) { _giza_warning("giza_save_colour_table","max number of giza_save_colour_table calls exceeded"); return; } int i = _giza_save_ctab_ncalls - 1; /* save the current colour table to the array */ _giza_saved_colour_tables[i] = _giza_colour_table; } /** * Settings: giza_restore_colour_table * * Synopsis: Restores the colour table from a previously saved one * * See Also: giza_save_colour_table */ void giza_restore_colour_table (void) { _giza_save_ctab_ncalls -= 1; if (_giza_save_ctab_ncalls < 0) { _giza_warning("giza_restore_colour_table","unmatched save/restore calls"); _giza_save_ctab_ncalls = 0; return; } /* Restore the colour table from the saved array */ int i = _giza_save_ctab_ncalls; _giza_colour_table = _giza_saved_colour_tables[i]; } /** * (Re)sets the colour table to a simple black->white ramp */ int giza_set_colour_table_gray (void) { double cp[2], r[2], g[2], b[2]; cp[0] = 0.; r[0] = 0.; g[0] = 0.; b[0] = 0.; cp[1] = 1.; r[1] = 1.; g[1] = 1.; b[1] = 1.; return giza_set_colour_table (cp, r, g, b, 2, 1., 0.5); } /** * Sets rgb colours for the colour indices in the given range * as a linear ramp based on the current giza colour table */ void _giza_set_range_from_colour_table (int cimin, int cimax) { double delta = (double) (cimax - cimin); double pos,r,g,b; int i; for (i = cimin; i <= cimax; i++) { pos = (i - cimin)/delta; giza_rgb_from_table(pos,&r,&g,&b); giza_set_colour_representation(i,r,g,b); } } giza-1.5.0/src/giza-contour.c000066400000000000000000000211271477367113400160430ustar00rootroot00000000000000/* giza - a scientific plotting library built on cairo * * Copyright (c) 2010 James Wetter and Daniel Price * Copyright (c) 2010-2012 Daniel Price * * This library is free software; and you are welcome to redistribute * it under the terms of the GNU General Public License * (GPL, see LICENSE file for details) and the provision that * this notice remains intact. If you modify this file, please * note section 5a) of the GPLv3 states that: * * a) The work must carry prominent notices stating that you modified * it, and giving a relevant date. * * This software is distributed "AS IS", with ABSOLUTELY NO WARRANTY. * See the GPL for specific language governing rights and limitations. * * The Original code is the giza plotting library. * * Contributor(s): * James Wetter * Daniel Price (main contact) */ /* * The guts of this routine were taken from conrec.c * as written by Paul Bourke. */ #include "giza-private.h" #include "giza-io-private.h" #include "giza-transforms-private.h" #include #include /* for abs() */ void giza_contour (int sizex, int sizey, const double* data, int i1, int i2, int j1, int j2, int ncont_in, const double* cont, const double *affine) { #define xsect(p1,p2) (h[p2]*xh[p1]-h[p1]*xh[p2])/(h[p2]-h[p1]) #define ysect(p1,p2) (h[p2]*yh[p1]-h[p1]*yh[p2])/(h[p2]-h[p1]) if (!_giza_check_device_ready ("giza_contour")) return; cairo_matrix_t mat; int sh[5]; double h[5]; double xh[5], yh[5]; int im[4] = { 0, 1, 1, 0 }; int jm[4] = { 0, 0, 1, 1 }; double temp1, temp2, dmin, dmax, x1 = 0., x2 = 0., y1 = 0., y2 = 0.; int i, j, k, m; int m1, m2, m3, case_value; int castab[3][3][3] = { {{0, 0, 8}, {0, 2, 5}, {7, 6, 9}}, {{0, 3, 4}, {1, 3, 1}, {4, 3, 0}}, {{9, 6, 7}, {5, 2, 0}, {8, 0, 0}} }; /* start buffering */ int oldBuf; giza_get_buffering(&oldBuf); giza_begin_buffer (); /* Get the affine matrix ready */ int oldTrans = _giza_get_trans (); _giza_set_trans (GIZA_TRANS_WORLD); cairo_matrix_init (&mat, affine[0], affine[1], affine[2], affine[3], affine[4], affine[5]); cairo_transform (Dev[id].context, &mat); cairo_get_matrix (Dev[id].context, &mat); _giza_set_trans (GIZA_TRANS_IDEN); /* set up the line style */ int ls; int curls, newls; const int ncont = abs(ncont_in); const int auto_style = (ncont_in > 0); giza_get_line_style (&ls); curls = ls; giza_set_line_style (curls); for (j = (j2 - 1); j >= j1; j--) { for (i = i1; i < i2; i++) { /* find the minimum value at the corners of a 1x1 box */ temp1 = MIN (data[j*sizex+i], data[(j + 1)*sizex+i]); temp2 = MIN (data[j*sizex+(i + 1)], data[(j + 1)*sizex+(i + 1)]); dmin = MIN (temp1, temp2); /* find the max value at the corners of the 1x1 box */ temp1 = MAX (data[j*sizex+i], data[(j + 1)*sizex+i]); temp2 = MAX (data[j*sizex+(i + 1)], data[(j + 1)*sizex+(i + 1)]); dmax = MAX (temp1, temp2); /* Check it is in the range of a contour */ if (dmax < cont[0] || dmin > cont[ncont - 1]) continue; for (k = 0; k < ncont; ++k) { if (cont[k] < dmin || cont[k] > dmax) continue; for (m = 4; m >= 0; m--) { /* calculate the relative height of the four corners and centre of the square */ /* (i, j) (i+1, j) */ /* (i, j+1) (i+1, j+1) */ /* as well as their device co-ords */ if (m > 0) { h[m] = data[(j + jm[m - 1])*sizex+(i + im[m - 1])] - cont[k]; xh[m] = i + im[m - 1] + 0.5; yh[m] = j + jm[m - 1] + 0.5; } else { h[0] = 0.25 * (h[1] + h[2] + h[3] + h[4]); xh[0] = 0.5 * (i + i + 1) + 0.5; yh[0] = 0.5 * (j + j + 1) + 0.5; } if (h[m] > 0.0) sh[m] = 1; else if (h[m] < 0.0) sh[m] = -1; else sh[m] = 0; } for (m = 1; m <= 4; ++m) { m1 = m; m2 = 0; if (m != 4) m3 = m + 1; else m3 = 1; if ((case_value = castab[sh[m1] + 1][sh[m2] + 1][sh[m3] + 1]) == 0) continue; switch (case_value) { case 1: /* Line between (i, j) (i + 1, j) */ x1 = xh[m1]; y1 = yh[m1]; x2 = xh[m2]; y2 = yh[m2]; break; case 2: /* Line between (i + 1, j) (i + 1, j + 1) */ x1 = xh[m2]; y1 = yh[m2]; x2 = xh[m3]; y2 = yh[m3]; break; case 3: /* Line between (i, j) (i + 1, j + 1) */ x1 = xh[m3]; y1 = yh[m3]; x2 = xh[m1]; y2 = yh[m1]; break; case 4: /* Line between (i, j) and between (i + 1, j), (i + 1, j + 1) */ x1 = xh[m1]; y1 = yh[m1]; x2 = xsect (m2, m3); y2 = ysect (m2, m3); break; case 5: /* Line between (i + 1, j) and between (i, j), (i + 1, j + 1) */ x1 = xh[m2]; y1 = yh[m2]; x2 = xsect (m3, m1); y2 = ysect (m3, m1); break; case 6: /* Line between (i + 1, j + 1) and between (i, j), (i + 1, j + 1) */ x1 = xh[m3]; y1 = yh[m3]; x2 = xsect (m3, m2); y2 = ysect (m3, m2); break; case 7: /* Line between sides 1-2 and 2-3 */ x1 = xsect (m1, m2); y1 = ysect (m1, m2); x2 = xsect (m2, m3); y2 = ysect (m2, m3); break; case 8: /* Line between sides 2-3 and 3-1 */ x1 = xsect (m2, m3); y1 = ysect (m2, m3); x2 = xsect (m3, m1); y2 = ysect (m3, m1); break; case 9: /* Line between sides 3-1 and 1-2 */ x1 = xsect (m3, m1); y1 = ysect (m3, m1); x2 = xsect (m1, m2); y2 = ysect (m1, m2); break; default: break; } /* compute what the line style should be */ newls = (auto_style ? (cont[k]<0 ? GIZA_LS_DOT : GIZA_LS_SOLID) : ls); if( newls!=curls ) { curls = newls; giza_set_line_style (curls); } /* draw the line */ cairo_matrix_transform_point (&mat, &x1, &y1); cairo_matrix_transform_point (&mat, &x2, &y2); /*printf ("In index: (x1, y1) = (%f, %f)\n", x1, y1); */ /*printf ("In coord: (x1, y1) = (%f, %f)\n", x1, y1); */ cairo_move_to (Dev[id].context, x1, y1); cairo_line_to (Dev[id].context, x2, y2); cairo_stroke (Dev[id].context); } } } } /* restore the transformation */ _giza_set_trans (oldTrans); /* make sure line style returned to previous value */ giza_set_line_style (ls); /* restore buffering and stroke */ if (!oldBuf) giza_end_buffer (); giza_flush_device (); } void giza_contour_float (int sizex, int sizey, const float* data, int i1, int i2, int j1, int j2, int ncont, const float* cont, const float *affine) { double ddata[sizey*sizex]; double dcont[abs(ncont)]; double daffine[6]; int i, j; for (j=j1; j<=j2; j++) { for (i=i1; i<=i2; i++) { ddata[j*sizex+i] = (double) data[j*sizex+i]; } } for (i=0; i * Daniel Price (main contact) */ /* * This file contains the cpgplot interface to giza * so that giza can be used as a drop-in replacement * for the cpgplot library * */ #include "giza.h" #include "giza-private.h" #include "giza-io-private.h" /* for _giza_error() */ #include "cpgplot.h" #include #include #include #include static int pgfont; /*************************************************************** * Function to convert PGPLOT units value to giza units value ***************************************************************/ int units_giza(int pgplotunits) { int units; switch (pgplotunits) { case 0: units = GIZA_UNITS_NORMALIZED; break; case 1: units = GIZA_UNITS_INCHES; break; case 2: units = GIZA_UNITS_MM; break; case 3: units = GIZA_UNITS_PIXELS; break; case 4: units = GIZA_UNITS_WORLD; break; default: /* will give an error in giza */ units = pgplotunits; break; } return units; } /*************************************************************** * Routine to convert PGPLOT "trans" array to giza "affine" array ***************************************************************/ void convert_tr_to_affine(const float *tr, float *affine) { affine[0] = tr[1]; affine[1] = tr[4]; affine[2] = tr[2]; affine[3] = tr[5]; affine[4] = tr[0] + 0.5f*(tr[1]); affine[5] = tr[3] + 0.5f*(tr[5]); } /*************************************************************** * cpgarro -- draw an arrow * Status: IMPLEMENTED ***************************************************************/ void cpgarro(float x1, float y1, float x2, float y2) { giza_arrow_float(x1,y1,x2,y2); } /*************************************************************** * cpgask -- control new page prompting * Status: IMPLEMENTED ***************************************************************/ void cpgask(Logical flag) { if (flag) { giza_start_prompting(); } else { giza_stop_prompting(); } } /*************************************************************** * cpgaxis -- draw an axis * Status: IMPLEMENTED ***************************************************************/ void cpgaxis(const char *opt, float x1, float y1, float x2, float y2, \ float v1, float v2, float step, int nsub, float dmajl, \ float dmajr, float fmin, float disp, float orient) { giza_axis_float(opt,x1,y1,x2,y2,v1,v2,step,nsub,dmajl,dmajr,fmin,disp,orient); } /*************************************************************** * cpgband -- read cursor position, with anchor * Status: IMPLEMENTED ***************************************************************/ int cpgband(int mode, int posn, float xref, float yref, float *x,\ float *y, char *ch_scalar) { return giza_band_float(mode,posn,xref,yref,x,y,ch_scalar); } /*************************************************************** * cpgbbuf -- begin batch of output (buffer) * Status: IMPLEMENTED ***************************************************************/ void cpgbbuf(void) { giza_begin_buffer(); } /*************************************************************** * cpgbeg -- open a graphics device * Status: IMPLEMENTED ***************************************************************/ int cpgbeg(int unit, const char *file, int nxsub, int nysub) { int id = cpgopen(file); if (id > 0 && (nxsub > 1 || nysub > 1)) { cpgsubp(nxsub, nysub); } return id; } /*************************************************************** * cpgbin -- histogram of binned data * Status: IMPLEMENTED ***************************************************************/ void cpgbin(int nbin, const float *x, const float *data, \ Logical center) { giza_histogram_binned_float(nbin,x,data,(int) center); } /*************************************************************** * cpgbox -- draw labeled frame around viewport * Status: IMPLEMENTED ***************************************************************/ void cpgbox(const char *xopt, float xtick, int nxsub, \ const char *yopt, float ytick, int nysub) { giza_box(xopt, xtick, nxsub, yopt, ytick, nysub); } /*************************************************************** * cpgcirc -- draw a circle, using fill-area attributes * Status: IMPLEMENTED ***************************************************************/ void cpgcirc(float xcent, float ycent, float radius) { giza_circle_float(xcent,ycent,radius); } /*************************************************************** * cpgclos -- close the selected graphics device * Status: IMPLEMENTED ***************************************************************/ void cpgclos(void) { giza_close_device(); } /*************************************************************** * cpgconb -- contour map of a 2D data array, with blanking * Status: PARTIALLY IMPLEMENTED ***************************************************************/ void cpgconb(const float *a, int idim, int jdim, int i1, int i2, \ int j1, int j2, const float *c, int nc, const float *tr, \ float blank) { float affine[6]; convert_tr_to_affine(tr,affine); giza_contour_float(idim,jdim,a,i1-1,i2-1,j1-1,j2-1,abs(nc),c,affine); } /*************************************************************** * cpgconf -- fill between two contours * Status: NOT IMPLEMENTED ***************************************************************/ void cpgconf(const float *a, int idim, int jdim, int i1, int i2, \ int j1, int j2, float c1, float c2, const float *tr) { } /*************************************************************** * cpgconl -- label contour map of a 2D data array * Status: PARTIALLY IMPLEMENTED ***************************************************************/ void cpgconl(const float *a, int idim, int jdim, int i1, int i2, \ int j1, int j2, float c, const float *tr, const char *label, \ int intval, int minint) { float affine[6]; convert_tr_to_affine(tr,affine); float cc[1]; int nc = 1; cc[0] = c; giza_contour_float(idim,jdim,a,i1-1,i2-1,j1-1,j2-1,nc,cc,affine); } /*************************************************************** * cpgcons -- contour map of a 2D data array (fast algorithm) * Status: IMPLEMENTED ***************************************************************/ void cpgcons(const float *a, int idim, int jdim, int i1, int i2, \ int j1, int j2, const float *c, int nc, const float *tr) { float affine[6]; convert_tr_to_affine(tr,affine); giza_contour_float(idim,jdim,a,i1-1,i2-1,j1-1,j2-1,nc,c,affine); } /*************************************************************** * cpgcont -- contour map of a 2D data array (contour-following) * Status: IMPLEMENTED ***************************************************************/ void cpgcont(const float *a, int idim, int jdim, int i1, int i2, \ int j1, int j2, const float *c, int nc, const float *tr) { float affine[6]; convert_tr_to_affine(tr,affine); giza_contour_float(idim,jdim,a,i1-1,i2-1,j1-1,j2-1,nc,c,affine); } /*************************************************************** * cpgctab -- install the color table to be used by pgimag * Status: IMPLEMENTED ***************************************************************/ void cpgctab(const float *l, const float *r, const float *g, \ const float *b, int nc, float contra, float bright) { giza_set_colour_table_float(l,r,g,b,nc,contra,bright); } /*************************************************************** * cpgcurs -- read cursor position * Status: IMPLEMENTED ***************************************************************/ int cpgcurs(float *x, float *y, char *ch_scalar) { return giza_get_key_press_float(x,y,ch_scalar); } /*************************************************************** * cpgdraw -- draw a line from the current pen position to a point * Status: IMPLEMENTED ***************************************************************/ void cpgdraw(float x, float y) { giza_draw_float(x, y); } /*************************************************************** * cpgebuf -- end batch of output (buffer) * Status: IMPLEMENTED ***************************************************************/ void cpgebuf(void) { giza_end_buffer(); } /*************************************************************** * cpgend -- close all open graphics devices * Status: IMPLEMENTED ***************************************************************/ void cpgend(void) { giza_close_devices(); } /*************************************************************** * cpgenv -- set window and viewport and draw labeled frame * Status: IMPLEMENTED ***************************************************************/ void cpgenv(float xmin, float xmax, float ymin, float ymax, \ int just, int axis) { giza_set_environment_float(xmin, xmax, ymin, ymax, just, axis); } /*************************************************************** * cpgeras -- erase all graphics from current page * Status: IMPLEMENTED ***************************************************************/ void cpgeras(void) { giza_draw_background(); } /*************************************************************** * cpgerr1 -- horizontal or vertical error bar * Status: IMPLEMENTED ***************************************************************/ void cpgerr1(int dir, float x, float y, float e, float t) { float xi[1], yi[1], ei[1]; xi[0] = x; yi[0] = y; ei[0] = e; cpgerrb(dir, 1, xi, yi, ei, t); } /*************************************************************** * cpgerrb -- horizontal or vertical error bar * Status: IMPLEMENTED ***************************************************************/ void cpgerrb(int dir, int n, const float *x, const float *y, \ const float *e, float t) { giza_error_bars_float(dir, n, x, y, e, t); } /*************************************************************** * cpgerrx -- horizontal error bar * Status: IMPLEMENTED ***************************************************************/ void cpgerrx(int n, const float *x1, const float *x2, \ const float *y, float t) { giza_error_bars_hori_float(n, x1, x2, y, t); } /*************************************************************** * cpgerry -- vertical error bar * Status: IMPLEMENTED ***************************************************************/ void cpgerry(int n, const float *x, const float *y1, \ const float *y2, float t) { giza_error_bars_vert_float(n, x, y1, y2, t); } /*************************************************************** * cpgetxt -- erase text from graphics display * Status: NOT IMPLEMENTED ***************************************************************/ void cpgetxt(void) { } /*************************************************************** * cpggray -- gray-scale map of a 2D data array * Status: IMPLEMENTED ***************************************************************/ void cpggray(const float *a, int idim, int jdim, int i1, int i2, \ int j1, int j2, float fg, float bg, const float *tr) { float affine[6]; convert_tr_to_affine(tr,affine); giza_render_gray_float(idim,jdim,a,i1-1,i2-1,j1-1,j2-1,fg,bg, \ GIZA_EXTEND_NONE,GIZA_FILTER_NEAREST,affine); } /*************************************************************** * cpghi2d -- cross-sections through a 2D data array * Status: NOT IMPLEMENTED ***************************************************************/ void cpghi2d(const float *data, int nxv, int nyv, int ix1, \ int ix2, int iy1, int iy2, const float *x, int ioff, float bias, \ Logical center, float *ylims) { } /*************************************************************** * cpghist -- histogram of unbinned data * Status: IMPLEMENTED ***************************************************************/ void cpghist(int n, const float *data, float datmin, float datmax, \ int nbin, int pgflag) { giza_histogram_float(n,data,datmin,datmax,nbin,pgflag); } /*************************************************************** * cpgiden -- write username, date, and time at bottom of plot * Status: IMPLEMENTED ***************************************************************/ void cpgiden(void) { giza_print_id(); } /*************************************************************** * cpgimag -- color image from a 2D data array * Status: IMPLEMENTED ***************************************************************/ void cpgimag(const float *a, int idim, int jdim, int i1, int i2, \ int j1, int j2, float a1, float a2, const float *tr) { float affine[6]; convert_tr_to_affine(tr,affine); giza_render_float(idim,jdim,a,i1-1,i2-1,j1-1,j2-1,a1,a2, \ GIZA_EXTEND_NONE,GIZA_FILTER_NEAREST,affine); } /*************************************************************** * cpglab -- write labels for x-axis, y-axis, and top of plot * Status: IMPLEMENTED ***************************************************************/ void cpglab(const char *xlbl, const char *ylbl, const char *toplbl) { giza_label(xlbl, ylbl, toplbl); } /*************************************************************** * cpglcur -- draw a line using the cursor * Status: IMPLEMENTED ***************************************************************/ void cpglcur(int maxpt, int *npt, float *x, float *y) { giza_mark_line_float(maxpt, npt, x, y); } /*************************************************************** * cpgldev -- list available device types on standard output * Status: IMPLEMENTED ***************************************************************/ void cpgldev(void) { giza_print_device_list(); } /*************************************************************** * cpglen -- find length of a string in a variety of units * Status: IMPLEMENTED ***************************************************************/ void cpglen(int units, const char *string, float *xl, float *yl) { giza_qtextlen_float(units_giza(units),string,xl,yl); } /*************************************************************** * cpgline -- draw a polyline (curve defined by line-segments) * Status: IMPLEMENTED ***************************************************************/ void cpgline(int n, const float *xpts, const float *ypts) { giza_line_float(n, xpts, ypts); } /*************************************************************** * cpgmove -- move pen (change current pen position) * Status: IMPLEMENTED ***************************************************************/ void cpgmove(float x, float y) { giza_move_float(x, y); } /*************************************************************** * cpgmtxt -- write text at position relative to viewport * Status: IMPLEMENTED ***************************************************************/ void cpgmtxt(const char *side, float disp, float coord, \ float fjust, const char *text) { giza_annotate_float(side, disp, coord, fjust, text); } /*************************************************************** * cpgncur -- mark a set of points using the cursor * Status: IMPLEMENTED ***************************************************************/ void cpgncur(int maxpt, int *npt, float *x, float *y, int symbol) { giza_mark_points_ordered_float(maxpt, npt, x, y, symbol); } /*************************************************************** * cpgnumb -- convert a number into a plottable character string * Status: IMPLEMENTED * Update: In order to prevent memory corruption by * giza_format_number, assume that '*string_length', on * entry, contains the maximum length of the string * buffer allocated by the caller. * PGPLOT c-binding does this, perl-PGPLOT5 does this * and giza's F90 wrapper's been changed to do this ***************************************************************/ void cpgnumb(int mm, int pp, int form, char *string, \ int *string_length) { giza_format_number(mm, pp, form, string, *string_length); *string_length = strlen(string); } /*************************************************************** * cpgolin -- mark a set of points using the cursor * Status: IMPLEMENTED ***************************************************************/ void cpgolin(int maxpt, int *npt, float *x, float *y, int symbol) { giza_mark_points_float(maxpt, npt, x, y, symbol); } /*************************************************************** * cpgopen -- open a graphics device * Status: IMPLEMENTED ***************************************************************/ int cpgopen(const char *device) { int pgopen = giza_open_device(device,"giza"); return pgopen; } /*************************************************************** * cpgpage -- advance to new page * Status: IMPLEMENTED ***************************************************************/ void cpgpage(void) { giza_change_page(); } /*************************************************************** * cpgpanl -- switch to a different panel on the view surface * Status: IMPLEMENTED ***************************************************************/ void cpgpanl(int nxc, int nyc) { giza_set_panel(nxc, nyc); } /*************************************************************** * cpgpap -- change the size of the view surface * Status: IMPLEMENTED ***************************************************************/ void cpgpap(float width, float aspect) { giza_set_paper_size_float(GIZA_UNITS_INCHES,width,width*aspect); } /*************************************************************** * cpgpixl -- draw pixels * Status: IMPLEMENTED ***************************************************************/ void cpgpixl(const int *ia, int idim, int jdim, int i1, int i2, \ int j1, int j2, float x1, float x2, float y1, float y2) { giza_draw_pixels_float(idim,jdim,ia,i1-1,i2-1,j1-1,j2-1,x1,x2,y1,y2,\ GIZA_EXTEND_NONE,GIZA_FILTER_NEAREST); } /*************************************************************** * cpgpnts -- draw several graph markers, not all the same * Status: NOT IMPLEMENTED ***************************************************************/ void cpgpnts(int n, const float *x, const float *y, \ const int *symbol, int ns) { } /*************************************************************** * cpgpoly -- draw a polygon, using fill-area attributes * Status: IMPLEMENTED ***************************************************************/ void cpgpoly(int n, const float *xpts, const float *ypts) { giza_polygon_float(n, xpts, ypts); } /*************************************************************** * cpgpt -- draw several graph markers * Status: IMPLEMENTED ***************************************************************/ void cpgpt(int n, const float *xpts, const float *ypts, int symbol) { giza_points_float(n, xpts, ypts, symbol); } /*************************************************************** * cpgpt1 -- draw one graph marker * Status: IMPLEMENTED ***************************************************************/ void cpgpt1(float xpt, float ypt, int symbol) { giza_single_point_float(xpt, ypt, symbol); } /*************************************************************** * cpgptxt -- write text at arbitrary position and angle * Status: IMPLEMENTED ***************************************************************/ void cpgptxt(float x, float y, float angle, float fjust, \ const char *text) { giza_ptext_float(x, y, angle, fjust, text); } /*************************************************************** * cpgqah -- inquire arrow-head style * Status: IMPLEMENTED ***************************************************************/ void cpgqah(int *fs, float *angle, float *barb) { giza_get_arrow_style_float(fs, angle, barb); } /*************************************************************** * cpgqcf -- inquire character font * Status: IMPLEMENTED ***************************************************************/ void cpgqcf(int *font) { /* pgfont set by call to cpgscf */ *font = pgfont; } /*************************************************************** * cpgqch -- inquire character height * Status: IMPLEMENTED ***************************************************************/ void cpgqch(float *size) { giza_get_character_height_float(size); } /*************************************************************** * cpgqci -- inquire color index * Status: IMPLEMENTED ***************************************************************/ void cpgqci(int *ci) { giza_get_colour_index(ci); } /*************************************************************** * cpgqcir -- inquire color index range * Status: IMPLEMENTED ***************************************************************/ void cpgqcir(int *icilo, int *icihi) { giza_get_colour_index_range(icilo, icihi); } /*************************************************************** * cpgqclp -- inquire clipping Status * Status: IMPLEMENTED ***************************************************************/ void cpgqclp(int *state) { giza_get_clipping(state); } /*************************************************************** * cpgqcol -- inquire color capability * Status: IMPLEMENTED ***************************************************************/ void cpgqcol(int *ci1, int *ci2) { *ci1 = GIZA_COLOUR_INDEX_MIN; *ci2 = GIZA_COLOUR_INDEX_MAX; } /*************************************************************** * cpgqcr -- inquire color representation * Status: IMPLEMENTED ***************************************************************/ void cpgqcr(int ci, float *cr, float *cg, float *cb) { giza_get_colour_representation_float(ci,cr,cg,cb); } /*************************************************************** * cpgqcs -- inquire character height in a variety of units * Status: IMPLEMENTED ***************************************************************/ void cpgqcs(int units, float *xch, float *ych) { giza_get_character_size_float(units_giza(units),xch,ych); } /*************************************************************** * cpgqdt -- inquire name of nth available device type * Status: NOT IMPLEMENTED ***************************************************************/ void cpgqdt(int n, char *type, int *type_length, char *descr, \ int *descr_length, int *inter) { } /*************************************************************** * cpgqfs -- inquire fill-area style * Status: IMPLEMENTED ***************************************************************/ void cpgqfs(int *fs) { giza_get_fill(fs); } /*************************************************************** * cpgqhs -- inquire hatching style * Status: IMPLEMENTED ***************************************************************/ void cpgqhs(float *angle, float *sepn, float* phase) { giza_get_hatching_style_float(angle,sepn,phase); } /*************************************************************** * cpgqid -- inquire current device identifier * Status: IMPLEMENTED ***************************************************************/ void cpgqid(int *id) { giza_get_device_id(id); } /*************************************************************** * cpgqinf -- inquire pgplot general information * Status: NOT IMPLEMENTED ***************************************************************/ void cpgqinf(const char *item, char *value, int *value_length) { if (!item || !value || !value_length || (value_length && !*value_length)) { _giza_error("cgpqinf", "one or more NULL pointers item=%p value=%p value_length=%p", (void*)item, (void*)value, (void*)value_length); return; } if (!*value_length) { _giza_error("cgpqinf", "target string says it has length 0 querying '%s'", item); return; } const int last_char = *value_length - 1; /* check which item to query. do that case insensitive. this means that mixed case is also matched */ if (strcasecmp(item, "VERSION")==0) { static char giza_version_string[32] = {'\0',}; /* Initialize only once */ if (giza_version_string[0]=='\0' ) snprintf(giza_version_string, sizeof(giza_version_string), "giza-%s", GIZA_VERSION_STRING); /* Copy at most *value_length-1 characters into value - note: strncpy(3) may leave value not-NUL terminated if *value_length < length of giza_version_string. Could have used strlcpy(3) but that is famously absent in glibc on Linux (need -lbsd to have it) so we tediously do it by hand */ strncpy(value, giza_version_string, last_char); } else if (strcasecmp(item, "NOW")==0 ) { /* In F90 calls date_and_time(...) which returns (surprisingly) date and time: (cf. https://gcc.gnu.org/onlinedocs/gfortran/DATE_005fAND_005fTIME.html) but PGPLOT reformats that to: "dd-mmm-yyyy hh:mm" so we mimic that behaviour */ const time_t now = time(NULL); /* Use strftime(3) to format current time correctly in one go */ strftime(value, last_char, "%d-%b-%Y %H:%M", localtime(&now)); } else { /* all other cases are handled by _giza_query_device() */ giza_query_device(item, value, value_length); } /* terminate string and return length of result */ value[last_char] = '\0'; *value_length = strlen(value); } /*************************************************************** * cpgqitf -- inquire image transfer function * Status: IMPLEMENTED ***************************************************************/ void cpgqitf(int *itf) { giza_get_image_transfer_function(itf); } /*************************************************************** * cpgqls -- inquire line style * Status: IMPLEMENTED ***************************************************************/ void cpgqls(int *ls) { giza_get_line_style(ls); } /*************************************************************** * cpgqlw -- inquire line width (as integer) * Status: IMPLEMENTED ***************************************************************/ void cpgqlw(int *lw) { double width; giza_get_line_width(&width); *lw = _giza_nint(width - 0.5); } /*************************************************************** * cpgqndt -- inquire number of available device types * Status: NOT IMPLEMENTED ***************************************************************/ void cpgqndt(int *n) { *n = 1; } /*************************************************************** * cpgqpos -- inquire current pen position * Status: IMPLEMENTED ***************************************************************/ void cpgqpos(float *x, float *y) { giza_get_current_point_float(x, y); } /*************************************************************** * cpgqtbg -- inquire text background color index * Status: IMPLEMENTED ***************************************************************/ void cpgqtbg(int *tbci) { giza_get_text_background(tbci); } /*************************************************************** * cpgqtxt -- find bounding box of text string * Status: IMPLEMENTED ***************************************************************/ void cpgqtxt(float x, float y, float angle, float fjust, \ const char *text, float *xbox, float *ybox) { giza_qtext_float(x, y, angle, fjust, text, xbox, ybox); } /*************************************************************** * cpgqvp -- inquire viewport size and position * Status: IMPLEMENTED ***************************************************************/ void cpgqvp(int units, float *x1, float *x2, float *y1, float *y2) { giza_get_viewport_float(units_giza(units), x1, x2, y1, y2); } /*************************************************************** * cpgqvsz -- inquire size of view surface * Status: IMPLEMENTED ***************************************************************/ void cpgqvsz(int units, float *x1, float *x2, float *y1, float *y2) { *x1 = 0.; *y1 = 0.; giza_get_paper_size_float(units_giza(units),x2,y2); } /*************************************************************** * cpgqwin -- inquire window boundary coordinates * Status: IMPLEMENTED ***************************************************************/ void cpgqwin(float *x1, float *x2, float *y1, float *y2) { giza_get_window_float(x1,x2,y1,y2); } /*************************************************************** * cpgrect -- draw a rectangle, using fill-area attributes * Status: IMPLEMENTED ***************************************************************/ void cpgrect(float x1, float x2, float y1, float y2) { giza_rectangle(x1,x2,y1,y2); } /*************************************************************** * cpgrnd -- find the smallest `round' number greater than x * Status: IMPLEMENTED ***************************************************************/ float cpgrnd(float x, int *nsub) { return giza_round_float(x, nsub); } /*************************************************************** * cpgrnge -- choose axis limits * Status: IMPLEMENTED ***************************************************************/ void cpgrnge(float x1, float x2, float *xlo, float *xhi) { float dx = x2 - x1; *xlo = x1 - 0.1*dx; *xhi = x2 + 0.1*dx; if (*xlo < 0. && x1 >= 0.) *xlo = 0.; if (*xhi > 0. && x2 <= 0.) *xhi = 0.; } /*************************************************************** * cpgsah -- set arrow-head style * Status: IMPLEMENTED ***************************************************************/ void cpgsah(int fs, float angle, float barb) { giza_set_arrow_style_float(fs,angle,barb); } /*************************************************************** * cpgsave -- save pgplot attributes * Status: IMPLEMENTED ***************************************************************/ void cpgsave(void) { giza_save(); } /*************************************************************** * cpgunsa -- restore pgplot attributes * Status: IMPLEMENTED ***************************************************************/ void cpgunsa(void) { giza_restore(); } /*************************************************************** * cpgscf -- set character font * Status: IMPLEMENTED ***************************************************************/ void cpgscf(int font) { switch(font) { case 4: giza_set_font("cursive"); break; case 3: giza_set_font_italic("times"); break; case 2: giza_set_font("times"); break; default: giza_set_font("arial"); break; } /* * set pgfont so that query calls to PGQCF are successful */ pgfont = font; } /*************************************************************** * cpgsch -- set character height * Status: IMPLEMENTED ***************************************************************/ void cpgsch(float size) { giza_set_character_height_float(size); } /*************************************************************** * cpgsci -- set color index * Status: IMPLEMENTED ***************************************************************/ void cpgsci(int ci) { giza_set_colour_index(ci); } /*************************************************************** * cpgscir -- set color index range * Status: IMPLEMENTED ***************************************************************/ void cpgscir(int icilo, int icihi) { giza_set_colour_index_range(icilo, icihi); } /*************************************************************** * cpgsclp -- enable or disable clipping at edge of viewport * Status: IMPLEMENTED ***************************************************************/ void cpgsclp(int state) { giza_set_clipping(state); } /*************************************************************** * cpgscr -- set color representation * Status: IMPLEMENTED ***************************************************************/ void cpgscr(int ci, float cr, float cg, float cb) { giza_set_colour_representation_float(ci, cr, cg, cb); } /*************************************************************** * cpgscrl -- scroll window * Status: NOT IMPLEMENTED ***************************************************************/ void cpgscrl(float dx, float dy) { } /*************************************************************** * cpgscrn -- set color representation by name * Status: NOT IMPLEMENTED ***************************************************************/ void cpgscrn(int ci, const char *name, int *ier) { } /*************************************************************** * cpgsfs -- set fill-area style * Status: IMPLEMENTED ***************************************************************/ void cpgsfs(int fs) { giza_set_fill(fs); } /*************************************************************** * cpgshls -- set color representation using hls system * Status: IMPLEMENTED ***************************************************************/ void cpgshls(int ci, float ch, float cl, float cs) { giza_set_colour_representation_hls_float(ci, ch, cl, cs); } /*************************************************************** * cpgshs -- set hatching style * Status: IMPLEMENTED ***************************************************************/ void cpgshs(float angle, float sepn, float phase) { giza_set_hatching_style_float(angle, sepn, phase); } /*************************************************************** * cpgsitf -- set image transfer function * Status: IMPLEMENTED ***************************************************************/ void cpgsitf(int itf) { giza_set_image_transfer_function(itf); } /*************************************************************** * cpgslct -- select an open graphics device * Status: IMPLEMENTED ***************************************************************/ void cpgslct(int id) { giza_select_device(id); } /*************************************************************** * cpgsls -- set line style * Status: IMPLEMENTED ***************************************************************/ void cpgsls(int ls) { giza_set_line_style(ls); } /*************************************************************** * cpgslw -- set line width * Status: IMPLEMENTED ***************************************************************/ void cpgslw(int lw) { giza_set_line_width(lw); } /*************************************************************** * cpgstbg -- set text background color index * Status: IMPLEMENTED ***************************************************************/ void cpgstbg(int tbci) { giza_set_text_background(tbci); } /*************************************************************** * cpgsubp -- subdivide view surface into panels * Status: IMPLEMENTED ***************************************************************/ void cpgsubp(int nxsub, int nysub) { giza_subpanel(nxsub, nysub); } /*************************************************************** * cpgsvp -- set viewport (normalized device coordinates) * Status: IMPLEMENTED ***************************************************************/ void cpgsvp(float xleft, float xright, float ybot, float ytop) { giza_set_viewport_float(xleft,xright,ybot,ytop); } /*************************************************************** * cpgswin -- set window * Status: IMPLEMENTED ***************************************************************/ void cpgswin(float x1, float x2, float y1, float y2) { giza_set_window_float(x1, x2, y1, y2); } /*************************************************************** * cpgtbox -- draw frame and write (dd) hh mm ss.s labelling * Status: IMPLEMENTED ***************************************************************/ void cpgtbox(const char *xopt, float xtick, int nxsub, \ const char *yopt, float ytick, int nysub) { giza_box_time_float(xopt, xtick, nxsub, yopt, ytick, nysub); } /*************************************************************** * cpgtext -- write text (horizontal, left-justified) * Status: IMPLEMENTED ***************************************************************/ void cpgtext(float x, float y, const char *text) { giza_text_float(x, y, text); } /*************************************************************** * cpgtick -- draw a single tick mark on an axis * Status: IMPLEMENTED ***************************************************************/ void cpgtick(float x1, float y1, float x2, float y2, float v, \ float tikl, float tikr, float disp, float orient, const char *str) { giza_tick_float(x1,y1,x2,y2,v,tikl,tikr,disp,orient,str); } /*************************************************************** * cpgupdt -- update display * Status: IMPLEMENTED ***************************************************************/ void cpgupdt(void) { giza_flush_buffer(); } /*************************************************************** * cpgvect -- vector map of a 2D data array, with blanking * Status: IMPLEMENTED ***************************************************************/ void cpgvect(const float *a, const float *b, int idim, int jdim, \ int i1, int i2, int j1, int j2, float c, int nc, \ const float *tr, float blank) { float affine[6]; convert_tr_to_affine(tr,affine); giza_vector_float(idim,jdim,a,b,i1-1,i2-1,j1-1,j2-1,c,nc,affine,blank); } /*************************************************************** * cpgvsiz -- set viewport (inches) * Status: IMPLEMENTED ***************************************************************/ void cpgvsiz(float xleft, float xright, float ybot, float ytop) { giza_set_viewport_inches_float(xleft, xright, ybot, ytop); } /*************************************************************** * cpgvstd -- set standard (default) viewport * Status: IMPLEMENTED ***************************************************************/ void cpgvstd(void) { giza_set_viewport_default(); } /*************************************************************** * cpgwedg -- annotate an image plot with a wedge * Status: IMPLEMENTED ***************************************************************/ void cpgwedg(const char *side, float disp, float width, \ float fg, float bg, const char *label) { giza_colour_bar_float(side,disp,width,fg,bg,label); } /*************************************************************** * cpgwnad -- set window and adjust viewport to same aspect ratio * Status: IMPLEMENTED ***************************************************************/ void cpgwnad(float x1, float x2, float y1, float y2) { giza_set_window_equal_scale_float(x1, x2, y1, y2); } giza-1.5.0/src/giza-cursor-private.h000066400000000000000000000023241477367113400173420ustar00rootroot00000000000000/* giza - a scientific plotting library built on cairo * * Copyright (c) 2010 James Wetter and Daniel Price * Copyright (c) 2010-2012 Daniel Price * * This library is free software; and you are welcome to redistribute * it under the terms of the GNU General Public License * (GPL, see LICENSE file for details) and the provision that * this notice remains intact. If you modify this file, please * note section 5a) of the GPLv3 states that: * * a) The work must carry prominent notices stating that you modified * it, and giving a relevant date. * * This software is distributed "AS IS", with ABSOLUTELY NO WARRANTY. * See the GPL for specific language governing rights and limitations. * * The Original code is the giza plotting library. * * Contributor(s): * James Wetter * Daniel Price (main contact) */ void _giza_mark_with_cursor (int maxpts, int *npts, double xpts[maxpts], double ypts[maxpts], int symbol, int ordered, int mode, char *ch); void _giza_mark_with_cursor_float (int maxpts, int *npts, float xpts[maxpts], float ypts[maxpts], int symbol, int ordered, int mode, char *ch); giza-1.5.0/src/giza-cursor-routines.c000066400000000000000000000301451477367113400175350ustar00rootroot00000000000000/* giza - a scientific plotting library built on cairo * * Copyright (c) 2010 James Wetter and Daniel Price * Copyright (c) 2010-2014 Daniel Price * * This library is free software; and you are welcome to redistribute * it under the terms of the GNU General Public License * (GPL, see LICENSE file for details) and the provision that * this notice remains intact. If you modify this file, please * note section 5a) of the GPLv3 states that: * * a) The work must carry prominent notices stating that you modified * it, and giving a relevant date. * * This software is distributed "AS IS", with ABSOLUTELY NO WARRANTY. * See the GPL for specific language governing rights and limitations. * * The Original code is the giza plotting library. * * Contributor(s): * James Wetter * Daniel Price (main contact) */ #include "giza-private.h" #include "giza-io-private.h" #include "giza-drivers-private.h" #include "giza-cursor-private.h" #include #include #define GIZA_MARK_UNORDERED 0 #define GIZA_MARK_ORDERED 1 #define GIZA_MARK_UNORDERED_CHAR 2 /** * _giza_mark_with_cursor * * This is the general (currently internal) routine to which * giza_mark_points, giza_mark_lines etc are merely interfaces * */ void _giza_mark_with_cursor (int maxpts, int *npts, double* xpts, double* ypts, int symbol, int ordered, int mode, char *ch) { if(!_giza_check_device_ready ("_giza_mark_with_cursor")) /* should be done in parent routines anyway */ return; if (maxpts <= 0) { _giza_error("_giza_mark_with_cursor","maxpts < 0 on input"); return; } /* Save (and restore) old colour index. * pgdemo5 did not work; each subsequent polygon must be drawn in a * different colour; with giza <= 0.9.5 all polygons were drawn in black * */ int oldCI; giza_get_colour_index(&oldCI); double x, y, xanc[1], yanc[1]; double xmin,xmax,ymin,ymax; giza_get_window(&xmin,&xmax,&ymin,&ymax); if (*npts > 0) { xanc[0] = xpts[*npts-1]; yanc[0] = ypts[*npts-1]; /* plot previously drawn points (done inside get_key_press for line mode) */ if (mode != GIZA_BAND_LINE) { giza_points(*npts,xpts,ypts,symbol); } } else { /* default is to put the cursor at the centre of the current viewport */ xanc[0] = 0.5*(xmin + xmax); yanc[0] = 0.5*(ymin + ymax); } int err = 0; int moveCurs = 0; int modein; if (*npts > 0) { modein = mode; } else { modein = 0; } cairo_set_source_rgba(Dev[id].context,0.6,0.6,0.6,1.0); while(err == 0) { if (*npts > 0) { err = _giza_get_key_press (modein, moveCurs, *npts, xpts, ypts, &x, &y, ch); } else { err = _giza_get_key_press (modein, moveCurs, 1, xanc, yanc, &x, &y, ch); } modein = mode; if (ch[0]==GIZA_LEFT_CLICK || ch[0]=='A' || ch[0]=='a') { if (*npts < maxpts-1) { *npts += 1; if (ordered == GIZA_MARK_ORDERED) { /* put points in order */ int i = 0; if (*npts == 1) { xpts[i] = x; ypts[i] = y; } else { while (x > xpts[i] && i < (*npts-1)) { i++; } /* shuffle */ int j; for (j=(*npts-1);j > i;j--) { xpts[j] = xpts[j-1]; ypts[j] = ypts[j-1]; } xpts[i] = x; ypts[i] = y; } } else { xpts[*npts-1] = x; ypts[*npts-1] = y; } if (mode == GIZA_BAND_LINE && *npts > 1) { /*giza_move(xpts[*npts-2],ypts[*npts-2]); giza_draw(xpts[*npts-1],ypts[*npts-1]); */ } else { giza_single_point(x,y,symbol); } } else { _giza_message("reached array limits, cannot add more points"); } } else if (ch[0]==GIZA_MIDDLE_CLICK || ch[0]=='D' || ch[0]=='d' || *ch == 8 ) { if (*npts > 0) { /* erase the previous point by colouring over it in the background colour */ int ci; double lw; giza_get_colour_index(&ci); giza_set_colour_index(GIZA_BACKGROUND_COLOUR); giza_get_line_width(&lw); giza_set_line_width(2.*lw); if (mode != GIZA_BAND_LINE && *npts > 1) { giza_single_point(xpts[*npts-1],ypts[*npts-1],17); } giza_set_colour_index(ci); giza_set_line_width(lw); *npts -= 1; if (*npts > 0) { x = xpts[*npts - 1]; y = ypts[*npts - 1]; } else { /* reset back to starting conditions */ x = 0.5*(xmin + xmax); y = 0.5*(ymin + ymax); modein = 0; } giza_move(x,y); } else { _giza_message("no points left to delete"); } } else if (ch[0]==GIZA_RIGHT_CLICK || ch[0]=='X' || ch[0]=='x' || *ch == 13) { giza_set_colour_index(oldCI); return; } else if (!strcmp(ch,"q") || *ch == 27 ) { /* quit without saving */ *npts = 0; return; } else { if (ordered == GIZA_MARK_UNORDERED_CHAR) { return; } else { /*printf("char = %i %s\n",*ch,ch); */ _giza_message("unknown command, use (a)dd (d)elete/backspace, e(x)it or (q)uit/Esc"); } } xanc[0] = x; yanc[0] = y; } giza_set_colour_index( oldCI ); } /** * _giza_mark_with_cursor_float * * Synopsis: Same functionality as _giza_mark_with_cursor, but takes floats * * See Also: _giza_mark_with_cursor */ void _giza_mark_with_cursor_float (int maxpts, int *npts, float* xpts, float* ypts, int symbol, int ordered, int mode, char *ch) { double xptsd[maxpts], yptsd[maxpts]; int i; for (i = 0; i < *npts; i++) { xptsd[i] = (double) xpts[i]; yptsd[i] = (double) ypts[i]; } _giza_mark_with_cursor (maxpts, npts, xptsd, yptsd, symbol, ordered, mode, ch); for (i = 0; i < *npts; i++) { xpts[i] = (float) xptsd[i]; ypts[i] = (float) yptsd[i]; } } /** * Interactive: giza_mark_points * * Synopsis: Mark a set of points using the cursor * * Input: * -maxpts :- maximum number of points that may be accepted * -symbol :- symbol code for drawing points * * Input/Output: * -xpts :- the x-coord of the points * -ypts :- the y-coord of the anchor point. * -npts :- number of points entered, should be zero on first call * * See Also: giza_points */ void giza_mark_points (int maxpts, int *npts, double* xpts, double* ypts, int symbol) { if(!_giza_check_device_ready ("giza_mark_points")) return; char ch[2] = " "; _giza_mark_with_cursor (maxpts, npts, xpts, ypts, symbol, GIZA_MARK_UNORDERED, GIZA_BAND_NONE, ch); } /** * Interactive: giza_mark_points_float * * Synopsis: Same functionality as giza_mark_points, but takes floats * * See Also: giza_mark_points */ void giza_mark_points_float (int maxpts, int *npts, float* xpts, float* ypts, int symbol) { if(!_giza_check_device_ready ("giza_mark_points_float")) return; char ch[2] = " "; _giza_mark_with_cursor_float (maxpts, npts, xpts, ypts, symbol, GIZA_MARK_UNORDERED, GIZA_BAND_NONE, ch); } /** * Interactive: giza_mark_points_ordered * * Synopsis: Mark a set of points using the cursor * * Input: * -maxpts :- maximum number of points that may be accepted * -symbol :- symbol code for drawing points * * Input/Output: * -xpts :- the x-coord of the points * -ypts :- the y-coord of the anchor point. * -npts :- number of points entered, should be zero on first call * * Note: * Points are returned sorted in order according to the x coordinate * * See Also: giza_points */ void giza_mark_points_ordered (int maxpts, int *npts, double* xpts, double* ypts, int symbol) { if(!_giza_check_device_ready ("giza_mark_points_ordered")) return; char ch[2] = " "; _giza_mark_with_cursor (maxpts, npts, xpts, ypts, symbol, GIZA_MARK_ORDERED, GIZA_BAND_NONE, ch); } /** * Interactive: giza_mark_points_ordered_float * * Synopsis: Same functionality as giza_mark_points_ordered, but takes floats * * See Also: giza_mark_points */ void giza_mark_points_ordered_float (int maxpts, int *npts, float* xpts, float* ypts, int symbol) { if(!_giza_check_device_ready ("giza_mark_points_ordered_float")) return; char ch[2] = " "; _giza_mark_with_cursor_float (maxpts, npts, xpts, ypts, symbol, GIZA_MARK_ORDERED, GIZA_BAND_NONE, ch); } /** * Interactive: giza_mark_line * * Synopsis: Mark a set of points using the cursor * * Input: * -maxpts :- maximum number of points that may be accepted * * Input/Output: * -xpts :- the x-coord of the points * -ypts :- the y-coord of the anchor point. * -npts :- number of points entered, should be zero on first call * * See Also: giza_mark_points */ void giza_mark_line (int maxpts, int *npts, double* xpts, double* ypts) { if(!_giza_check_device_ready ("giza_mark_line")) return; char ch[2] = " "; _giza_mark_with_cursor (maxpts, npts, xpts, ypts, 1, GIZA_MARK_UNORDERED, GIZA_BAND_LINE, ch); } /** * Interactive: giza_mark_points_float * * Synopsis: Same functionality as giza_mark_line, but takes floats * * See Also: giza_mark_line, giza_mark_points, giza_mark_line_ordered */ void giza_mark_line_float (int maxpts, int *npts, float* xpts, float* ypts) { if(!_giza_check_device_ready ("giza_mark_line_float")) return; char ch[2] = " "; _giza_mark_with_cursor_float (maxpts, npts, xpts, ypts, 1, GIZA_MARK_UNORDERED, GIZA_BAND_LINE, ch); } /** * Interactive: giza_mark_line_ordered * * Synopsis: Mark a set of points using the cursor * * Input: * -maxpts :- maximum number of points that may be accepted * * Input/Output: * -xpts :- the x-coord of the points * -ypts :- the y-coord of the anchor point. * -npts :- number of points entered, should be zero on first call * * Note: * Points are returned sorted in order according to the x coordinate * * See Also: giza_mark_line, giza_mark_points */ void giza_mark_line_ordered (int maxpts, int *npts, double* xpts, double* ypts) { if(!_giza_check_device_ready ("giza_mark_line_ordered")) return; char ch[2] = " "; _giza_mark_with_cursor (maxpts, npts, xpts, ypts, 1, GIZA_MARK_ORDERED, GIZA_BAND_LINE, ch); } /** * Interactive: giza_mark_line_ordered_float * * Synopsis: Same functionality as giza_mark_line_ordered, but takes floats * * See Also: giza_mark_points */ void giza_mark_line_ordered_float (int maxpts, int *npts, float* xpts, float* ypts) { if(!_giza_check_device_ready ("giza_mark_line_ordered_float")) return; char ch[2] = " "; _giza_mark_with_cursor_float (maxpts, npts, xpts, ypts, 1, GIZA_MARK_ORDERED, GIZA_BAND_LINE, ch); } /** * Interactive: giza_mark_line_char * * Synopsis: Same functionality as giza_mark_line, but also returns last character pressed * * See Also: giza_mark_line */ void giza_mark_line_char (int maxpts, int *npts, double* xpts, double* ypts, char *ch) { if(!_giza_check_device_ready ("giza_mark_line")) return; _giza_mark_with_cursor (maxpts, npts, xpts, ypts, 1, GIZA_MARK_UNORDERED_CHAR, GIZA_BAND_LINE, ch); } /** * Interactive: giza_mark_points_float * * Synopsis: Same functionality as giza_mark_line, but takes floats * * See Also: giza_mark_line, giza_mark_points, giza_mark_line_ordered */ void giza_mark_line_char_float (int maxpts, int *npts, float* xpts, float* ypts, char *ch) { if(!_giza_check_device_ready ("giza_mark_line_float")) return; _giza_mark_with_cursor_float (maxpts, npts, xpts, ypts, 1, GIZA_MARK_UNORDERED_CHAR, GIZA_BAND_LINE, ch); } giza-1.5.0/src/giza-device-has-cursor.c000066400000000000000000000022661477367113400177000ustar00rootroot00000000000000/* giza - a scientific plotting library built on cairo * * Copyright (c) 2010 James Wetter and Daniel Price * Copyright (c) 2010-2012 Daniel Price * * This library is free software; and you are welcome to redistribute * it under the terms of the GNU General Public License * (GPL, see LICENSE file for details) and the provision that * this notice remains intact. If you modify this file, please * note section 5a) of the GPLv3 states that: * * a) The work must carry prominent notices stating that you modified * it, and giving a relevant date. * * This software is distributed "AS IS", with ABSOLUTELY NO WARRANTY. * See the GPL for specific language governing rights and limitations. * * The Original code is the giza plotting library. * * Contributor(s): * James Wetter * Daniel Price (main contact) */ #include #include "giza-private.h" /** * Device: giza_device_has_cursor * * Synopsis: Query the interactivity of the device. * * Return: * -0 :- If the device is not interactive. * -1 :- If the device is interactive. */ int giza_device_has_cursor (void) { return Dev[id].isInteractive; } giza-1.5.0/src/giza-draw-background.c000066400000000000000000000032471477367113400174270ustar00rootroot00000000000000/* giza - a scientific plotting library built on cairo * * Copyright (c) 2010 James Wetter and Daniel Price * Copyright (c) 2010-2012 Daniel Price * * This library is free software; and you are welcome to redistribute * it under the terms of the GNU General Public License * (GPL, see LICENSE file for details) and the provision that * this notice remains intact. If you modify this file, please * note section 5a) of the GPLv3 states that: * * a) The work must carry prominent notices stating that you modified * it, and giving a relevant date. * * This software is distributed "AS IS", with ABSOLUTELY NO WARRANTY. * See the GPL for specific language governing rights and limitations. * * The Original code is the giza plotting library. * * Contributor(s): * James Wetter * Daniel Price (main contact) */ #include "giza-private.h" #include "giza-io-private.h" #include /** * Drawing: giza_draw_background * * Synopsis: Redraws the background of the currently open device (erase) * */ void giza_draw_background (void) { if (!_giza_check_device_ready ("giza_draw_background")) return; int oldCi; giza_get_colour_index (&oldCi); cairo_save (Dev[id].context); cairo_reset_clip (Dev[id].context); giza_set_colour_index (0); /* * Only paint the background colour if it is not transparent * This is to avoid bounding box issues * (i.e., eps is tightly cropped) */ double r,g,b,a; giza_get_colour_representation_alpha(0,&r,&g,&b,&a); if (a > 0.) { cairo_paint (Dev[id].context); } cairo_restore (Dev[id].context); giza_set_colour_index (oldCi); return; } giza-1.5.0/src/giza-draw.c000066400000000000000000000034751477367113400153150ustar00rootroot00000000000000/* giza - a scientific plotting library built on cairo * * Copyright (c) 2010 James Wetter and Daniel Price * Copyright (c) 2010-2012 Daniel Price * * This library is free software; and you are welcome to redistribute * it under the terms of the GNU General Public License * (GPL, see LICENSE file for details) and the provision that * this notice remains intact. If you modify this file, please * note section 5a) of the GPLv3 states that: * * a) The work must carry prominent notices stating that you modified * it, and giving a relevant date. * * This software is distributed "AS IS", with ABSOLUTELY NO WARRANTY. * See the GPL for specific language governing rights and limitations. * * The Original code is the giza plotting library. * * Contributor(s): * James Wetter * Daniel Price (main contact) */ #include "giza-private.h" #include "giza-transforms-private.h" #include "giza-stroke-private.h" #include "giza-io-private.h" #include /** * Drawing: giza_draw * * Synopsis: Plots a line from current pen position to a point * * Input: * -xpt :- The world x-coordinates of the point * -ypt :- The world y-coordinates of the point * */ void giza_draw (double xpt, double ypt) { if (!_giza_check_device_ready ("giza_draw")) return; int oldTrans = _giza_get_trans (); _giza_set_trans (GIZA_TRANS_WORLD); cairo_line_to (Dev[id].context, xpt, ypt); cairo_move_to (Dev[id].context, xpt, ypt); _giza_stroke (); giza_flush_device (); _giza_set_trans (oldTrans); } /** * Drawing: giza_draw_float * * Synopsis: The same functionality as giza_draw, except it uses floats */ void giza_draw_float (float xpt, float ypt) { if (!_giza_check_device_ready ("giza_draw")) return; giza_draw((double) xpt, (double) ypt); } giza-1.5.0/src/giza-driver-eps-private.h000066400000000000000000000021641477367113400201070ustar00rootroot00000000000000/* giza - a scientific plotting library built on cairo * * Copyright (c) 2010 James Wetter and Daniel Price * Copyright (c) 2010-2012 Daniel Price * * This library is free software; and you are welcome to redistribute * it under the terms of the GNU General Public License * (GPL, see LICENSE file for details) and the provision that * this notice remains intact. If you modify this file, please * note section 5a) of the GPLv3 states that: * * a) The work must carry prominent notices stating that you modified * it, and giving a relevant date. * * This software is distributed "AS IS", with ABSOLUTELY NO WARRANTY. * See the GPL for specific language governing rights and limitations. * * The Original code is the giza plotting library. * * Contributor(s): * James Wetter * Daniel Price (main contact) */ #if CAIRO_VERSION_MINOR >= 6 #define _GIZA_HAS_EPS 1 int _giza_open_device_eps (double width, double height, int units, int vert); void _giza_flush_device_eps (void); void _giza_change_page_eps (void); void _giza_close_device_eps (void); #endif giza-1.5.0/src/giza-driver-eps.c000066400000000000000000000114451477367113400164340ustar00rootroot00000000000000/* giza - a scientific plotting library built on cairo * * Copyright (c) 2010 James Wetter and Daniel Price * Copyright (c) 2010-2012 Daniel Price * * This library is free software; and you are welcome to redistribute * it under the terms of the GNU General Public License * (GPL, see LICENSE file for details) and the provision that * this notice remains intact. If you modify this file, please * note section 5a) of the GPLv3 states that: * * a) The work must carry prominent notices stating that you modified * it, and giving a relevant date. * * This software is distributed "AS IS", with ABSOLUTELY NO WARRANTY. * See the GPL for specific language governing rights and limitations. * * The Original code is the giza plotting library. * * Contributor(s): * James Wetter * Daniel Price (main contact) */ #include "giza-private.h" #include "giza-io-private.h" #include "giza-driver-eps-private.h" #include "giza-driver-ps-private.h" #include "giza-drivers-private.h" #ifdef _GIZA_HAS_EPS #include #include #include #include #define GIZA_DEFAULT_WIDTH 612 #define GIZA_DEFAULT_HEIGHT 459 /* use 4:3 aspect ratio */ #define GIZA_DEVICE_UNITS_PER_MM 2.8346 #define GIZA_DEVICE_UNITS_PER_PIXEL 0.765 /* so pixel resolution is same as pixel devices */ #define GIZA_DEVICE_INTERACTIVE 0 #define GIZA_DEVICE_EXTENSION ".eps" /** * Opens an encapsulated postscript device for drawing to. * * The routine does the following: * -Sets variables in the GIZA_Device structure Dev * -Creates the cairo eps surface which is associated with a file * * Input: * vert :- If set to one the created surface is portrait */ int _giza_open_device_eps (double width, double height, int units, int vert) { int length; length = strlen (Dev[id].prefix) + strlen (GIZA_DEVICE_EXTENSION) + 5; char fileName[length + 1]; _giza_get_filename_for_device(fileName,Dev[id].prefix,Dev[id].pgNum,GIZA_DEVICE_EXTENSION,1); Dev[id].deviceUnitsPermm = GIZA_DEVICE_UNITS_PER_MM; Dev[id].deviceUnitsPerPixel = GIZA_DEVICE_UNITS_PER_PIXEL; Dev[id].isInteractive = GIZA_DEVICE_INTERACTIVE; Dev[id].defaultBackgroundAlpha = 0.; /* set all device specific settings */ if (width > 0. && height > 0. && units > 0) { _giza_get_specified_size(width,height,units,&Dev[id].width, &Dev[id].height); } else if (vert) { Dev[id].height = GIZA_DEFAULT_WIDTH; Dev[id].width = GIZA_DEFAULT_HEIGHT; } else { Dev[id].width = GIZA_DEFAULT_WIDTH; Dev[id].height = GIZA_DEFAULT_HEIGHT; } Dev[id].surface = cairo_ps_surface_create (fileName, Dev[id].width, Dev[id].height); if (!Dev[id].surface) { _giza_error ("giza_open_device_eps", "Could not create cairo eps surface"); return -1; } #if CAIRO_VERSION >= CAIRO_VERSION_ENCODE(1, 6, 0) cairo_ps_surface_set_eps (Dev[id].surface, 1); #endif return 0; } /** * Flush the eps */ void _giza_flush_device_eps (void) { cairo_surface_flush (Dev[id].surface); } /** * Closes the eps device */ void _giza_close_device_eps (void) { cairo_surface_finish (Dev[id].surface); cairo_status_t status = cairo_surface_status (Dev[id].surface); if (status != CAIRO_STATUS_SUCCESS) _giza_error("giza_close_device_eps",cairo_status_to_string(status)); cairo_surface_destroy (Dev[id].surface); } /** * Change the page */ void _giza_change_page_eps (void) { /* Close the old eps */ cairo_destroy (Dev[id].context); _giza_close_device_eps(); int lenext = strlen (GIZA_DEVICE_EXTENSION); int length = strlen (Dev[id].prefix) + lenext + 5; char fileName[length + 1]; /* rename the first file from giza.eps to giza_0000.eps if part of a sequence */ if (Dev[id].pgNum == 0) { char fileNameold[length + 1]; /* retrieve the name of the original file and what revised name should be */ _giza_get_filename_for_device(fileNameold,Dev[id].prefix,Dev[id].pgNum,GIZA_DEVICE_EXTENSION,1); _giza_get_filename_for_device(fileName, Dev[id].prefix,Dev[id].pgNum,GIZA_DEVICE_EXTENSION,0); /* rename the file */ rename(fileNameold,fileName); } /* name the new eps */ _giza_get_filename_for_device(fileName,Dev[id].prefix,Dev[id].pgNum + 1,GIZA_DEVICE_EXTENSION,0); /* Open it */ Dev[id].surface = cairo_ps_surface_create (fileName, Dev[id].width, Dev[id].height); if (!Dev[id].surface) { _giza_error ("giza_change_page_eps", "Could not create cairo eps surface"); return; } #if CAIRO_VERSION >= CAIRO_VERSION_ENCODE(1, 6, 0) cairo_ps_surface_set_eps (Dev[id].surface, 1); #endif Dev[id].context = cairo_create (Dev[id].surface); if (!Dev[id].context) { _giza_error ("giza_change_page_eps", "Could not create cairo context"); return; } } #endif giza-1.5.0/src/giza-driver-mp4-private.h000066400000000000000000000016461477367113400200240ustar00rootroot00000000000000/* giza - a scientific plotting library built on cairo * * Copyright (c) 2010 James Wetter and Daniel Price * Copyright (c) 2010-2023 Daniel Price * * This library is free software; and you are welcome to redistribute * it under the terms of the GNU General Public License * (GPL, see LICENSE file for details) and the provision that * this notice remains intact. If you modify this file, please * note section 5a) of the GPLv3 states that: * * a) The work must carry prominent notices stating that you modified * it, and giving a relevant date. * * This software is distributed "AS IS", with ABSOLUTELY NO WARRANTY. * See the GPL for specific language governing rights and limitations. * * The Original code is the giza plotting library. * * Contributor(s): * James Wetter * Daniel Price (main contact) */ void _giza_close_device_mp4 (int last); giza-1.5.0/src/giza-driver-mp4.c000066400000000000000000000063711477367113400163470ustar00rootroot00000000000000/* giza - a scientific plotting library built on cairo * * Copyright (c) 2010 James Wetter and Daniel Price * Copyright (c) 2010-2023 Daniel Price * * This library is free software; and you are welcome to redistribute * it under the terms of the GNU General Public License * (GPL, see LICENSE file for details) and the provision that * this notice remains intact. If you modify this file, please * note section 5a) of the GPLv3 states that: * * a) The work must carry prominent notices stating that you modified * it, and giving a relevant date. * * This software is distributed "AS IS", with ABSOLUTELY NO WARRANTY. * See the GPL for specific language governing rights and limitations. * * The Original code is the giza plotting library. * * Contributor(s): * James Wetter * Daniel Price (main contact) */ #include "giza-private.h" #include "giza-drivers-private.h" #include "giza-io-private.h" #include "giza-driver-png-private.h" #include "giza-driver-mp4-private.h" #include #include #include #include #include #define GIZA_DEVICE_EXTENSION ".mp4" #define GIZA_FFMPEG_FLAGS_DEFAULT "-r 10 -vb 50M -bt 100M -pix_fmt yuv420p -vf setpts=4.*PTS -loglevel quiet" /** * Closes an open mp4 device. This closes the sequence of png images * and compiles them into a movie */ void _giza_close_device_mp4 (int last) { _giza_close_device_png(last); if (Dev[id].drawn && last==1) { /* construct filename for mp4 file */ int lenext = strlen(GIZA_DEVICE_EXTENSION); int length = strlen(Dev[id].prefix) + lenext + 5; char fileName[length + 1]; _giza_get_filename_for_device(fileName, Dev[id].prefix, 0, GIZA_DEVICE_EXTENSION, 1); /* delete the existing mp4 file if it exists */ if (access(fileName, F_OK) != -1) { remove(fileName); } /* allow the user to change the ffmpeg flags with an environment variable */ char *userFlags = getenv("GIZA_FFMPEG_FLAGS"); char *flagsToUse = userFlags ? userFlags : GIZA_FFMPEG_FLAGS_DEFAULT; /* construct ffmpeg command and repeat it to the user */ int mylen = strlen(Dev[id].prefix) + strlen(flagsToUse) + strlen(fileName) + 50; char command[mylen + 1]; sprintf(command, "ffmpeg -i %s_%%04d.png %s %s", Dev[id].prefix,flagsToUse,fileName); _giza_message(command); /* issue command and check that it succeeded */ int success = system(command); if (success != 0) { _giza_message("Error: ffmpeg command failed: please install ffmpeg using your package manager"); } else { char tmp[length + 10]; sprintf(tmp, "%s created", fileName); _giza_message(tmp); /* if the mp4 file exists, clean up the temporary .png files */ if (access(fileName, F_OK) != -1) { for (int i = 0; i <= Dev[id].pgNum; i++) { _giza_get_filename_for_device(fileName, Dev[id].prefix, i, ".png", 0); if (access(fileName, F_OK) != -1) { if (remove(fileName) != 0) { printf("Unable to delete %s \n",fileName); } } } } } } } giza-1.5.0/src/giza-driver-null-private.h000066400000000000000000000020611477367113400202660ustar00rootroot00000000000000/* giza - a scientific plotting library built on cairo * * Copyright (c) 2010 James Wetter and Daniel Price * Copyright (c) 2010-2012 Daniel Price * * This library is free software; and you are welcome to redistribute * it under the terms of the GNU General Public License * (GPL, see LICENSE file for details) and the provision that * this notice remains intact. If you modify this file, please * note section 5a) of the GPLv3 states that: * * a) The work must carry prominent notices stating that you modified * it, and giving a relevant date. * * This software is distributed "AS IS", with ABSOLUTELY NO WARRANTY. * See the GPL for specific language governing rights and limitations. * * The Original code is the giza plotting library. * * Contributor(s): * James Wetter * Daniel Price (main contact) */ int _giza_open_device_null (double width, double height, int units); void _giza_flush_device_null (void); void _giza_change_page_null (void); void _giza_close_device_null (void); giza-1.5.0/src/giza-driver-null.c000066400000000000000000000061061477367113400166150ustar00rootroot00000000000000/* giza - a scientific plotting library built on cairo * * Copyright (c) 2010 James Wetter and Daniel Price * Copyright (c) 2010-2012 Daniel Price * * This library is free software; and you are welcome to redistribute * it under the terms of the GNU General Public License * (GPL, see LICENSE file for details) and the provision that * this notice remains intact. If you modify this file, please * note section 5a) of the GPLv3 states that: * * a) The work must carry prominent notices stating that you modified * it, and giving a relevant date. * * This software is distributed "AS IS", with ABSOLUTELY NO WARRANTY. * See the GPL for specific language governing rights and limitations. * * The Original code is the giza plotting library. * * Contributor(s): * James Wetter * Daniel Price (main contact) */ #include "giza-private.h" #include "giza-io-private.h" #include "giza-drivers-private.h" #include "giza-driver-null-private.h" #include #define GIZA_DEFAULT_WIDTH 800 #define GIZA_DEFAULT_HEIGHT 600 #define GIZA_DEVICE_UNITS_PER_MM 3.7054 /* same as png driver */ #define GIZA_DEVICE_UNITS_PER_PIXEL 1.0 /* device units are pixels */ #define GIZA_DEVICE_INTERACTIVE 0 #define GIZA_DEVICE_EXTENSION ".null" /** * Creates a null device to be drawn to. * * The routine does the following: * -Set variables in the GIZA_Device structure. * -Creates the cairo image surface. */ int _giza_open_device_null (double width, double height, int units) { Dev[id].deviceUnitsPermm = GIZA_DEVICE_UNITS_PER_MM; Dev[id].isInteractive = GIZA_DEVICE_INTERACTIVE; if (width > 0. && height > 0. && units > 0) { _giza_get_specified_size(width,height,units,&Dev[id].width, &Dev[id].height); } else { Dev[id].width = GIZA_DEFAULT_WIDTH; Dev[id].height = GIZA_DEFAULT_HEIGHT; } Dev[id].surface = cairo_image_surface_create (CAIRO_FORMAT_ARGB32, Dev[id].width, Dev[id].height); if (!Dev[id].surface) { _giza_error ("_giza_open_device_null", "Could not create cairo surface"); return -1; } return 0; } void _giza_flush_device_null (void) { cairo_surface_flush (Dev[id].surface); } /** * Advances the null device to its 'next page'. * */ void _giza_change_page_null (void) { /* Destroy old context */ cairo_destroy (Dev[id].context); /* Destroy the cairo surface */ _giza_close_device_null(); /* Create a new surface */ Dev[id].surface = cairo_image_surface_create (CAIRO_FORMAT_ARGB32, Dev[id].width, Dev[id].height); if (!Dev[id].surface) { _giza_error ("_giza_change_page_null", "Could not create cairo surface"); return; } Dev[id].context = cairo_create (Dev[id].surface); if (!Dev[id].context) { _giza_error ("_giza_change_page_null", "Could not create cairo context"); return; } return; giza_draw_background (); } /** * Closes an open "null" device. * Just destroys the drawing surface */ void _giza_close_device_null (void) { if( Dev[id].surface ) cairo_surface_destroy (Dev[id].surface); } giza-1.5.0/src/giza-driver-pdf-private.h000066400000000000000000000020671477367113400200730ustar00rootroot00000000000000/* giza - a scientific plotting library built on cairo * * Copyright (c) 2010 James Wetter and Daniel Price * Copyright (c) 2010-2012 Daniel Price * * This library is free software; and you are welcome to redistribute * it under the terms of the GNU General Public License * (GPL, see LICENSE file for details) and the provision that * this notice remains intact. If you modify this file, please * note section 5a) of the GPLv3 states that: * * a) The work must carry prominent notices stating that you modified * it, and giving a relevant date. * * This software is distributed "AS IS", with ABSOLUTELY NO WARRANTY. * See the GPL for specific language governing rights and limitations. * * The Original code is the giza plotting library. * * Contributor(s): * James Wetter * Daniel Price (main contact) */ int _giza_open_device_pdf (double width, double height, int units, int vert); void _giza_flush_device_pdf (void); void _giza_change_page_pdf (void); void _giza_close_device_pdf (void); giza-1.5.0/src/giza-driver-pdf.c000066400000000000000000000067271477367113400164250ustar00rootroot00000000000000/* giza - a scientific plotting library built on cairo * * Copyright (c) 2010 James Wetter and Daniel Price * Copyright (c) 2010-2012 Daniel Price * * This library is free software; and you are welcome to redistribute * it under the terms of the GNU General Public License * (GPL, see LICENSE file for details) and the provision that * this notice remains intact. If you modify this file, please * note section 5a) of the GPLv3 states that: * * a) The work must carry prominent notices stating that you modified * it, and giving a relevant date. * * This software is distributed "AS IS", with ABSOLUTELY NO WARRANTY. * See the GPL for specific language governing rights and limitations. * * The Original code is the giza plotting library. * * Contributor(s): * James Wetter * Daniel Price (main contact) */ #include "giza-private.h" #include "giza-io-private.h" #include "giza-drivers-private.h" #include "giza-driver-pdf-private.h" #include #include #include #include #define GIZA_DEFAULT_WIDTH 612 /* same as ps driver */ #define GIZA_DEFAULT_HEIGHT 459 /* use 4:3 aspect ratio */ #define GIZA_DEVICE_UNITS_PER_MM 2.8346 #define GIZA_DEVICE_UNITS_PER_PIXEL 0.765 /* so pixel resolution is same as pixel devices */ #define GIZA_DEVICE_INTERACTIVE 0 #define GIZA_DEVICE_EXTENSION ".pdf" /** * Opens a pdf device for drawing to. * * The routine does the following: * -Sets the variables in the GIZA_Device structure Dev * -Creates the cairo pdf surface, which is associated with a file * * Input: * -vert :- if set to one the created surface is portrait */ int _giza_open_device_pdf (double width, double height, int units, int vert) { int lenext = strlen (GIZA_DEVICE_EXTENSION); int length = strlen (Dev[id].prefix) + lenext; char fileName[length + 1]; _giza_get_filename_for_device(fileName,Dev[id].prefix,0,GIZA_DEVICE_EXTENSION,1); Dev[id].deviceUnitsPermm = GIZA_DEVICE_UNITS_PER_MM; Dev[id].deviceUnitsPerPixel = GIZA_DEVICE_UNITS_PER_PIXEL; Dev[id].isInteractive = GIZA_DEVICE_INTERACTIVE; Dev[id].defaultBackgroundAlpha = 0.; /* set all device specific settings */ if (width > 0. && height > 0. && units > 0) { _giza_get_specified_size(width,height,units,&Dev[id].width, &Dev[id].height); } else if (vert) { Dev[id].height = GIZA_DEFAULT_WIDTH; Dev[id].width = GIZA_DEFAULT_HEIGHT; } else { Dev[id].width = GIZA_DEFAULT_WIDTH; Dev[id].height = GIZA_DEFAULT_HEIGHT; } Dev[id].surface = cairo_pdf_surface_create (fileName, Dev[id].width, Dev[id].height); if (!Dev[id].surface) { _giza_error ("giza_open_device_pdf", "Could not create cairo surface"); return -1; } return 0; } /** * Flushes the pdf surface. */ void _giza_flush_device_pdf (void) { cairo_surface_flush (Dev[id].surface); } /** * Advances the pdf device to its next page. */ void _giza_change_page_pdf (void) { cairo_show_page (Dev[id].context); } /** * Closes the pdf device. * * Destroys the cairo surface freeing the associated memory */ void _giza_close_device_pdf (void) { if( Dev[id].surface==NULL ) return; cairo_surface_finish (Dev[id].surface); cairo_status_t status = cairo_surface_status (Dev[id].surface); if (status != CAIRO_STATUS_SUCCESS) _giza_error("giza_close_device_pdf",cairo_status_to_string(status)); cairo_surface_destroy (Dev[id].surface); } giza-1.5.0/src/giza-driver-png-private.h000066400000000000000000000020611477367113400201000ustar00rootroot00000000000000/* giza - a scientific plotting library built on cairo * * Copyright (c) 2010 James Wetter and Daniel Price * Copyright (c) 2010-2012 Daniel Price * * This library is free software; and you are welcome to redistribute * it under the terms of the GNU General Public License * (GPL, see LICENSE file for details) and the provision that * this notice remains intact. If you modify this file, please * note section 5a) of the GPLv3 states that: * * a) The work must carry prominent notices stating that you modified * it, and giving a relevant date. * * This software is distributed "AS IS", with ABSOLUTELY NO WARRANTY. * See the GPL for specific language governing rights and limitations. * * The Original code is the giza plotting library. * * Contributor(s): * James Wetter * Daniel Price (main contact) */ int _giza_open_device_png (double width, double height, int units); void _giza_flush_device_png (void); void _giza_change_page_png (void); void _giza_close_device_png (int last); giza-1.5.0/src/giza-driver-png.c000066400000000000000000000101441477367113400164240ustar00rootroot00000000000000/* giza - a scientific plotting library built on cairo * * Copyright (c) 2010 James Wetter and Daniel Price * Copyright (c) 2010-2012 Daniel Price * * This library is free software; and you are welcome to redistribute * it under the terms of the GNU General Public License * (GPL, see LICENSE file for details) and the provision that * this notice remains intact. If you modify this file, please * note section 5a) of the GPLv3 states that: * * a) The work must carry prominent notices stating that you modified * it, and giving a relevant date. * * This software is distributed "AS IS", with ABSOLUTELY NO WARRANTY. * See the GPL for specific language governing rights and limitations. * * The Original code is the giza plotting library. * * Contributor(s): * James Wetter * Daniel Price (main contact) */ #include "giza-private.h" #include "giza-drivers-private.h" #include "giza-io-private.h" #include "giza-driver-png-private.h" #include #include #include #define GIZA_DEFAULT_WIDTH 800 #define GIZA_DEFAULT_HEIGHT 600 #define GIZA_DEVICE_UNITS_PER_MM 3.7054 /* so "width" is 8.5 inches as in ps driver */ #define GIZA_DEVICE_UNITS_PER_PIXEL 1.0 /* device units are pixels */ #define GIZA_DEVICE_INTERACTIVE 0 #define GIZA_DEVICE_EXTENSION ".png" /** * Creates a png device to be drawn to. * * The routine does the following: * -Set variables in the GIZA_Device structure. * -Creates the cairo image surface. */ int _giza_open_device_png (double width, double height, int units) { Dev[id].deviceUnitsPermm = GIZA_DEVICE_UNITS_PER_MM; Dev[id].deviceUnitsPerPixel = GIZA_DEVICE_UNITS_PER_PIXEL; Dev[id].isInteractive = GIZA_DEVICE_INTERACTIVE; if (width > 0. && height > 0. && units > 0) { _giza_get_specified_size(width,height,units,&Dev[id].width, &Dev[id].height); } else { Dev[id].width = GIZA_DEFAULT_WIDTH; Dev[id].height = GIZA_DEFAULT_HEIGHT; } Dev[id].surface = cairo_image_surface_create (CAIRO_FORMAT_ARGB32, Dev[id].width, Dev[id].height); if (!Dev[id].surface) { _giza_error ("_giza_open_device_png", "Could not create cairo surface"); return -1; } return 0; } /** * Flushes the png surface. */ void _giza_flush_device_png (void) { cairo_surface_flush (Dev[id].surface); } /** * Saves the current png to file and opens a new one. */ void _giza_change_page_png (void) { /* Destroy old context */ cairo_destroy (Dev[id].context); /* Write current surface to png file and destroy the cairo surface */ _giza_close_device_png(0); /* Create a new surface */ Dev[id].surface = cairo_image_surface_create (CAIRO_FORMAT_ARGB32, Dev[id].width, Dev[id].height); if (!Dev[id].surface) { _giza_error ("_giza_change_page_png", "Could not create cairo PNG surface"); return; } Dev[id].context = cairo_create (Dev[id].surface); if (!Dev[id].context) { _giza_error ("_giza_change_page_png", "Could not create cairo context"); return; } return; } /** * Closes an open png device. * * If only one page has been used the current cairo surface is written * to a file with no numeric prefix. * If multiple pages have been used the current surface is written * to a file prefixed with the current page number. */ void _giza_close_device_png (int last) { if( Dev[id].surface==NULL ) { return; } if (Dev[id].drawn) { int lenext = strlen (GIZA_DEVICE_EXTENSION); int length = strlen (Dev[id].prefix) + lenext + 5; char fileName[length + 1]; _giza_get_filename_for_device(fileName,Dev[id].prefix,Dev[id].pgNum,GIZA_DEVICE_EXTENSION,last); cairo_status_t status = cairo_surface_write_to_png (Dev[id].surface, fileName); if (status != CAIRO_STATUS_SUCCESS) { _giza_error (fileName, cairo_status_to_string(status)); } /* else { char tmp[length + 10]; sprintf(tmp, "%s created", fileName); _giza_message (tmp); }*/ } cairo_surface_destroy (Dev[id].surface); } giza-1.5.0/src/giza-driver-ps-private.h000066400000000000000000000020631477367113400177400ustar00rootroot00000000000000/* giza - a scientific plotting library built on cairo * * Copyright (c) 2010 James Wetter and Daniel Price * Copyright (c) 2010-2012 Daniel Price * * This library is free software; and you are welcome to redistribute * it under the terms of the GNU General Public License * (GPL, see LICENSE file for details) and the provision that * this notice remains intact. If you modify this file, please * note section 5a) of the GPLv3 states that: * * a) The work must carry prominent notices stating that you modified * it, and giving a relevant date. * * This software is distributed "AS IS", with ABSOLUTELY NO WARRANTY. * See the GPL for specific language governing rights and limitations. * * The Original code is the giza plotting library. * * Contributor(s): * James Wetter * Daniel Price (main contact) */ int _giza_open_device_ps (double width, double height, int units, int vert); void _giza_flush_device_ps (void); void _giza_change_page_ps (void); void _giza_close_device_ps (void); giza-1.5.0/src/giza-driver-ps.c000066400000000000000000000075631477367113400162750ustar00rootroot00000000000000/* giza - a scientific plotting library built on cairo * * Copyright (c) 2010 James Wetter and Daniel Price * Copyright (c) 2010-2012 Daniel Price * * This library is free software; and you are welcome to redistribute * it under the terms of the GNU General Public License * (GPL, see LICENSE file for details) and the provision that * this notice remains intact. If you modify this file, please * note section 5a) of the GPLv3 states that: * * a) The work must carry prominent notices stating that you modified * it, and giving a relevant date. * * This software is distributed "AS IS", with ABSOLUTELY NO WARRANTY. * See the GPL for specific language governing rights and limitations. * * The Original code is the giza plotting library. * * Contributor(s): * James Wetter * Daniel Price (main contact) */ #include "giza-private.h" #include "giza-io-private.h" #include "giza-drivers-private.h" #include "giza-driver-ps-private.h" #include #include #include #include /* * Note (DJP): it is wise to use 8.5 in x 11 in * or lower as the default size as this is the default * letter page size (e.g. as used by ghostscript) * This means that ps2ps and the like work without * needing fancy arguments. */ #define GIZA_DEFAULT_WIDTH 612 #define GIZA_DEFAULT_HEIGHT 459 /* use 4:3 aspect ratio */ #define GIZA_DEVICE_UNITS_PER_MM 2.8346 #define GIZA_DEVICE_UNITS_PER_PIXEL 0.765 /* so pixel resolution is same as pixel devices */ #define GIZA_DEVICE_INTERACTIVE 0 #define GIZA_DEVICE_EXTENSION ".ps" /** * Opens a postscript device for drawing to. * * The routine does the following: * -Sets variables in the GIZA_Device structure Dev * -Creates the cairo ps surface which is associated with a file * * Input: * vert :- If set to one the created surface is portrait */ int _giza_open_device_ps (double width, double height, int units, int vert) { int lenext = strlen(GIZA_DEVICE_EXTENSION); int length = strlen (Dev[id].prefix) + lenext; char fileName[length + 1]; _giza_get_filename_for_device(fileName,Dev[id].prefix,0,GIZA_DEVICE_EXTENSION,1); Dev[id].deviceUnitsPermm = GIZA_DEVICE_UNITS_PER_MM; Dev[id].deviceUnitsPerPixel = GIZA_DEVICE_UNITS_PER_PIXEL; Dev[id].isInteractive = GIZA_DEVICE_INTERACTIVE; Dev[id].defaultBackgroundAlpha = 0.; /* set all device specific settings */ if (width > 0. && height > 0. && units > 0) { _giza_get_specified_size(width,height,units,&Dev[id].width, &Dev[id].height); } else if (vert) { Dev[id].height = GIZA_DEFAULT_WIDTH; Dev[id].width = GIZA_DEFAULT_HEIGHT; } else { Dev[id].width = GIZA_DEFAULT_WIDTH; Dev[id].height = GIZA_DEFAULT_HEIGHT; } Dev[id].surface = cairo_ps_surface_create (fileName, Dev[id].width, Dev[id].height); cairo_ps_surface_dsc_comment (Dev[id].surface, "%%Title: giza postscript plot"); cairo_ps_surface_dsc_comment (Dev[id].surface, "%%Copyright: Copyright (C) 2010-2011 Daniel Price and James Wetter"); if (!Dev[id].surface) { _giza_error ("giza_open_device_ps", "Could not create cairo PS surface"); return -1; } return 0; } /** * Flushes the ps surface. */ void _giza_flush_device_ps (void) { cairo_surface_flush (Dev[id].surface); } /** * Advances the ps device to its next page. */ void _giza_change_page_ps (void) { cairo_show_page (Dev[id].context); } /** * Closes the ps device. * * Destroys the cairo surface freeing the associated memory */ void _giza_close_device_ps (void) { if( Dev[id].surface==NULL ) return; cairo_surface_finish (Dev[id].surface); cairo_status_t status = cairo_surface_status (Dev[id].surface); if (status != CAIRO_STATUS_SUCCESS) _giza_error("giza_close_device_ps",cairo_status_to_string(status)); cairo_surface_destroy (Dev[id].surface); } giza-1.5.0/src/giza-driver-svg-private.h000066400000000000000000000020671477367113400201210ustar00rootroot00000000000000/* giza - a scientific plotting library built on cairo * * Copyright (c) 2010 James Wetter and Daniel Price * Copyright (c) 2010-2012 Daniel Price * * This library is free software; and you are welcome to redistribute * it under the terms of the GNU General Public License * (GPL, see LICENSE file for details) and the provision that * this notice remains intact. If you modify this file, please * note section 5a) of the GPLv3 states that: * * a) The work must carry prominent notices stating that you modified * it, and giving a relevant date. * * This software is distributed "AS IS", with ABSOLUTELY NO WARRANTY. * See the GPL for specific language governing rights and limitations. * * The Original code is the giza plotting library. * * Contributor(s): * James Wetter * Daniel Price (main contact) */ int _giza_open_device_svg (double width, double height, int units, int vert); void _giza_flush_device_svg (void); void _giza_change_page_svg (void); void _giza_close_device_svg (void); giza-1.5.0/src/giza-driver-svg.c000066400000000000000000000110641477367113400164410ustar00rootroot00000000000000/* giza - a scientific plotting library built on cairo * * Copyright (c) 2010 James Wetter and Daniel Price * Copyright (c) 2010-2012 Daniel Price * * This library is free software; and you are welcome to redistribute * it under the terms of the GNU General Public License * (GPL, see LICENSE file for details) and the provision that * this notice remains intact. If you modify this file, please * note section 5a) of the GPLv3 states that: * * a) The work must carry prominent notices stating that you modified * it, and giving a relevant date. * * This software is distributed "AS IS", with ABSOLUTELY NO WARRANTY. * See the GPL for specific language governing rights and limitations. * * The Original code is the giza plotting library. * * Contributor(s): * James Wetter * Daniel Price (main contact) */ #include "giza-private.h" #include "giza-io-private.h" #include "giza-driver-svg-private.h" #include "giza-drivers-private.h" #include #include #include #include #define GIZA_DEFAULT_WIDTH 612 #define GIZA_DEFAULT_HEIGHT 459 /* use 4:3 aspect ratio */ #define GIZA_DEVICE_UNITS_PER_MM 2.8346 #define GIZA_DEVICE_UNITS_PER_PIXEL 0.765 /* so pixel resolution is same as pixel devices */ #define GIZA_DEVICE_INTERACTIVE 0 #define GIZA_DEVICE_EXTENSION ".svg" /** * Opens an svg device for drawing to. * * The routine does the following: * -Sets variables in the GIZA_Device structure Dev * -Creates the cairo svg surface which is associated with a file * * Input: * vert :- If set to one the created surface is portrait */ int _giza_open_device_svg (double width, double height, int units, int vert) { int lenext = strlen (GIZA_DEVICE_EXTENSION); int length = strlen (Dev[id].prefix) + lenext + 5; char fileName[length + 1]; _giza_get_filename_for_device(fileName,Dev[id].prefix,Dev[id].pgNum,GIZA_DEVICE_EXTENSION,1); Dev[id].deviceUnitsPermm = GIZA_DEVICE_UNITS_PER_MM; Dev[id].deviceUnitsPerPixel = GIZA_DEVICE_UNITS_PER_PIXEL; Dev[id].isInteractive = GIZA_DEVICE_INTERACTIVE; Dev[id].defaultBackgroundAlpha = 0.; /* set all device specific settings */ if (width > 0. && height > 0. && units > 0) { _giza_get_specified_size(width,height,units,&Dev[id].width, &Dev[id].height); } else if (vert) { Dev[id].height = GIZA_DEFAULT_WIDTH; Dev[id].width = GIZA_DEFAULT_HEIGHT; } else { Dev[id].width = GIZA_DEFAULT_WIDTH; Dev[id].height = GIZA_DEFAULT_HEIGHT; } Dev[id].surface = cairo_svg_surface_create (fileName, Dev[id].width, Dev[id].height); if (!Dev[id].surface) { _giza_error ("_giza_open_device_svg", "Could not create cairo svg surface"); return -1; } return 0; } /** * Flush the svg */ void _giza_flush_device_svg (void) { cairo_surface_flush (Dev[id].surface); } /** * Closes the svg device */ void _giza_close_device_svg (void) { if( Dev[id].surface==NULL ) return; cairo_surface_finish (Dev[id].surface); cairo_status_t status = cairo_surface_status (Dev[id].surface); if (status != CAIRO_STATUS_SUCCESS) _giza_error("giza_close_device_svg",cairo_status_to_string(status)); cairo_surface_destroy (Dev[id].surface); } /** * Change the page */ void _giza_change_page_svg (void) { /* Close the old svg */ cairo_destroy (Dev[id].context); _giza_close_device_svg(); int lenext = strlen (GIZA_DEVICE_EXTENSION); int length = strlen (Dev[id].prefix) + lenext + 5; char fileName[length + 1]; /* rename the first file from giza.svg to giza_0000.svg if part of a sequence */ if (Dev[id].pgNum == 0) { char fileNameold[length + 1]; /* retrieve the name of the original file and what revised name should be */ _giza_get_filename_for_device(fileNameold,Dev[id].prefix,Dev[id].pgNum,GIZA_DEVICE_EXTENSION,1); _giza_get_filename_for_device(fileName, Dev[id].prefix,Dev[id].pgNum,GIZA_DEVICE_EXTENSION,0); /* rename the file */ rename(fileNameold,fileName); } /* name the new svg */ _giza_get_filename_for_device(fileName,Dev[id].prefix,Dev[id].pgNum + 1,GIZA_DEVICE_EXTENSION,0); /* Open it */ Dev[id].surface = cairo_svg_surface_create (fileName, Dev[id].width, Dev[id].height); if (!Dev[id].surface) { _giza_error ("giza_change_page_svg", "Could not create cairo svg surface"); return; } Dev[id].context = cairo_create (Dev[id].surface); if (!Dev[id].context) { _giza_error ("giza_change_page_svg", "Could not create cairo context"); return; } } giza-1.5.0/src/giza-driver-xw-private.h000066400000000000000000000026661477367113400177650ustar00rootroot00000000000000/* giza - a scientific plotting library built on cairo * * Copyright (c) 2010 James Wetter and Daniel Price * Copyright (c) 2010-2012 Daniel Price * * This library is free software; and you are welcome to redistribute * it under the terms of the GNU General Public License * (GPL, see LICENSE file for details) and the provision that * this notice remains intact. If you modify this file, please * note section 5a) of the GPLv3 states that: * * a) The work must carry prominent notices stating that you modified * it, and giving a relevant date. * * This software is distributed "AS IS", with ABSOLUTELY NO WARRANTY. * See the GPL for specific language governing rights and limitations. * * The Original code is the giza plotting library. * * Contributor(s): * James Wetter * Daniel Price (main contact) */ #ifdef CAIRO_HAS_XLIB_SURFACE #define _GIZA_HAS_XW 1 int _giza_open_device_xw (double width, double height, int units); void _giza_init_norm_xw (void); void _giza_flush_device_xw (void); void _giza_change_page_xw (void); void _giza_close_device_xw (void); void _giza_expand_clipping_xw (void); void _giza_reset_clipping_xw (void); void _giza_get_key_press_xw (int mode, int moveCurs, int nanc, const double *xanc, const double *yanch, double *x, double *y, char *ch); int _giza_init_band_xw (void); int _giza_select_xw(int devid); #endif giza-1.5.0/src/giza-driver-xw.c000066400000000000000000000460261477367113400163060ustar00rootroot00000000000000/* giza - a scientific plotting library built on cairo * * Copyright (c) 2010 James Wetter and Daniel Price * Copyright (c) 2010-2012 Daniel Price * * This library is free software; and you are welcome to redistribute * it under the terms of the GNU General Public License * (GPL, see LICENSE file for details) and the provision that * this notice remains intact. If you modify this file, please * note section 5a) of the GPLv3 states that: * * a) The work must carry prominent notices stating that you modified * it, and giving a relevant date. * * This software is distributed "AS IS", with ABSOLUTELY NO WARRANTY. * See the GPL for specific language governing rights and limitations. * * The Original code is the giza plotting library. * * Contributor(s): * James Wetter * Daniel Price (main contact) */ #include "giza-private.h" #include "giza-window-private.h" #include "giza-io-private.h" #include "giza-drivers-private.h" #include "giza-driver-xw-private.h" #include "giza-transforms-private.h" #include "giza-character-size-private.h" #include "giza-band-private.h" #ifdef _GIZA_HAS_XW #include #include #include #include #include /** * Global variables specific to X. */ struct GIZA_XWindow { Display *display; Pixmap pixmap; Window window; Screen *screenptr; int screennum; Visual *visual; GC gc; XImage *ximage; Colormap colormap; unsigned char *virtualscreen; int videoaccesstype; int width; int height; int depth; int pixelsize; int screensize; int in_use; } XW[GIZA_MAX_DEVICES]; #define GIZA_DEFAULT_WIDTH 800 #define GIZA_DEFAULT_HEIGHT 600 #define GIZA_DEVICE_UNITS_PER_MM 3.7054 /* so "width" is 8.5 inches as in ps driver */ #define GIZA_DEVICE_UNITS_PER_PIXEL 1.0 /* device units are pixels */ #define GIZA_DEVICE_INTERACTIVE 1 #define GIZA_XW_MARGIN 20 static void _giza_xevent_loop (int mode, int moveCurs, int nanc, const int *anchorx, const int *anchory, int *x, int *y, char *ch); static void _giza_expose_xw (XEvent *event); static void _giza_flush_xw_event_queue (XEvent *event); static int _giza_errors_xw (Display *display, XErrorEvent *error); static Atom wmDeleteMessage; /*static int giza_xw_debug = 0;*/ /** * Opens an XWindow device for drawing to. * * Return values: * -0 :- no error. * -1 :- No connection to the X server could be made. * -3 :- No X visual could be created. * -4 :- No window could be created. * -5 :- No cairo surface could be created. * -7 :- Internal error: the current giza device (Dev[id])'s * entry in the giza-to-xw-mapping was not freed up correctly */ int _giza_open_device_xw (double width, double height, int units) { /* GIZA_XWindow contains pointers so much be initialized properly */ static int didInit = 0; if( !didInit ) { /* All device structs get zeroed out */ memset( &XW[0], 0x0, GIZA_MAX_DEVICES * sizeof(struct GIZA_XWindow) ); didInit = 1; } /* From now on we store Dev[id]'s XWindow specific stuff in the XW[id] * entry. Make sure that entry is marked unused */ if( XW[id].in_use ) { _giza_error ("_giza_open_device_xw", "Internal error: XW[%d] is still marked as in-use", id); return 7; } /* Start with a clean slate for that device and mark it as being in use*/ memset( &XW[id], 0x0, sizeof(struct GIZA_XWindow) ); XW[id].in_use = 1; /* open the connection to the sever and check there was no error */ XW[id].display = XOpenDisplay (NULL); if (!XW[id].display) { _giza_error ("_giza_open_device_xw", "Cannot launch X window (use ssh -Y if remote; install XQuartz if on Mac)"); return 1; } /* get an identifier for the screen */ XW[id].screenptr = DefaultScreenOfDisplay(XW[id].display); XW[id].screennum = DefaultScreen (XW[id].display); /* create a visual */ XW[id].visual = DefaultVisual (XW[id].display, XW[id].screennum); if (!XW[id].visual) { _giza_error ("_giza_open_device_xw", "Could not get X visual"); return 3; } Dev[id].deviceUnitsPermm = GIZA_DEVICE_UNITS_PER_MM; Dev[id].deviceUnitsPerPixel = GIZA_DEVICE_UNITS_PER_PIXEL; Dev[id].isInteractive = GIZA_DEVICE_INTERACTIVE; /* set all device specific settings */ if (width > 0. && height > 0. && units > 0) { _giza_get_specified_size(width,height,units,&Dev[id].width, &Dev[id].height); } else { Dev[id].width = GIZA_DEFAULT_WIDTH; Dev[id].height = GIZA_DEFAULT_HEIGHT; } /* set the XLib stuff */ XW[id].width = Dev[id].width + 2 * GIZA_XW_MARGIN; XW[id].height = Dev[id].height + 2 * GIZA_XW_MARGIN; /* set the depth */ XW[id].depth = DefaultDepth(XW[id].display,XW[id].screennum); /* Debugging info */ /*if (giza_xw_debug) { XSynchronize(XW[id].display, True); printf("(giza_xw_debug) XW display: %s\n",XDisplayName((char*)XW[id].display)); printf("(giza_xw_debug) XW monitor resolution: %d x %d\n", DisplayWidth(XW[id].display,XW[id].screennum), DisplayHeight(XW[id].display,XW[id].screennum)); } */ if (XW[id].depth == 1) { _giza_error("_giza_open_device_xw","XW depth = 1: no colour possible"); } else { /*printf("giza_xw_debug: XW colour depth = %d\n",XW[id].depth);*/ } unsigned long white = WhitePixel(XW[id].display, XW[id].screennum); /* create the window */ XW[id].window = XCreateSimpleWindow (XW[id].display, DefaultRootWindow (XW[id].display),/* make our new window a child of the entire display */ 50, 50, /* origin */ XW[id].width, XW[id].height, /* size */ 0, 0, white); if (!XW[id].window) { _giza_error ("_giza_open_device", "Could not create X window"); return 4; } XStoreName (XW[id].display, XW[id].window, Dev[id].prefix); XSelectInput(XW[id].display, XW[id].window, StructureNotifyMask); XMapWindow (XW[id].display, XW[id].window); /* register interest in the delete window message */ wmDeleteMessage = XInternAtom(XW[id].display, "WM_DELETE_WINDOW", 0); XSetWMProtocols(XW[id].display, XW[id].window, &wmDeleteMessage, 1); /* register the routine to handle non-fatal X errors */ XSetErrorHandler( _giza_errors_xw ); /* create the pixmap */ XW[id].pixmap = XCreatePixmap (XW[id].display, XW[id].window, (unsigned) XW[id].width, (unsigned) XW[id].height, (unsigned) XW[id].depth); /* Create graphics context */ /* XW[id].gc = XDefaultGCOfScreen(DefaultScreenOfDisplay(XW[id].display)); */ /*XW[id].gc = XCreateGC (XW[id].display, XW[id].pixmap, 0, 0);*/ /* version below works on older X11 distros */ XW[id].gc = XDefaultGC (XW[id].display, XW[id].screennum); /* create Xlib surface in cairo */ Dev[id].surface = cairo_xlib_surface_create (XW[id].display, XW[id].pixmap, XW[id].visual, XW[id].width, XW[id].height); if (!Dev[id].surface) { _giza_error ("_giza_open_device_xw", "Could not create surface"); return 5; } Dev[id].defaultBackgroundAlpha = 1.; /* Wait for the MapNotify event */ for(;;) { XEvent e; XNextEvent(XW[id].display, &e); if (e.type == MapNotify) break; } return 0; } /** * Flushes the X device. */ void _giza_flush_device_xw (void) { /* flush the offscreen surface */ cairo_surface_flush (Dev[id].surface); /* move the offscreen surface to the onscreen one */ XCopyArea (XW[id].display, XW[id].pixmap, XW[id].window, XW[id].gc, 0, 0, (unsigned) XW[id].width, (unsigned) XW[id].height, 0, 0); if (!XFlush (XW[id].display)) { _giza_warning ("_giza_flush_device_xw", "Could not flush X window"); } } /** * Advances the X window device to the next page. * If resize was set upon function entry, resize the window accordingly. * If, otoh, we detect the window was resized, take appropriate action and * mark the device as resized. */ void _giza_change_page_xw (void) { int x_return, y_return; Window root_return; unsigned int width_return, height_return, border_width_return, depth_return; /* Enquire current geometry to see if it's changed */ XGetGeometry(XW[id].display, XW[id].window, &root_return, &x_return, &y_return, &width_return, &height_return, &border_width_return, &depth_return); /* interactive logging feature */ if (Sets.autolog && Dev[id].drawn) _giza_write_log_file(Dev[id].surface); if (Dev[id].resize) { /* Set the new device size */ XW[id].width = Dev[id].width + 2 * GIZA_XW_MARGIN; XW[id].height = Dev[id].height + 2 * GIZA_XW_MARGIN; /* Request window to be resized */ XResizeWindow(XW[id].display, XW[id].window, (unsigned) XW[id].width, (unsigned) XW[id].height); } else if( (unsigned int)XW[id].width!=width_return || (unsigned int)XW[id].height!=height_return ) { /* Oh. Someone probably resized the XWindow behind our backs. Handle that here */ XW[id].width = Dev[id].width = width_return; XW[id].height = Dev[id].height = height_return; /* take care of margin - if there's room for that */ if( Dev[id].width > 2*GIZA_XW_MARGIN ) Dev[id].width -= 2*GIZA_XW_MARGIN; if( Dev[id].height > 2*GIZA_XW_MARGIN ) Dev[id].height -= 2*GIZA_XW_MARGIN; /* Do stuff needed to reflect changed window size, notably adjust panel size in case of resized surface*/ _giza_init_norm(); Dev[id].panelwidth = Dev[id].width / Dev[id].nx; Dev[id].panelheight = Dev[id].height / Dev[id].ny; } /* This function is called for each new page, so new page means new pixmap */ cairo_destroy(Dev[id].context); cairo_surface_finish (Dev[id].surface); cairo_status_t status = cairo_surface_status (Dev[id].surface); if (status != CAIRO_STATUS_SUCCESS) _giza_error("giza_change_page_xw",cairo_status_to_string(status)); cairo_surface_destroy (Dev[id].surface); XFreePixmap (XW[id].display, XW[id].pixmap); /* New page means new pixmap */ XW[id].pixmap = XCreatePixmap (XW[id].display, XW[id].window, (unsigned) XW[id].width, (unsigned) XW[id].height, (unsigned) XW[id].depth); /* New pixmap means new cairo surface */ Dev[id].surface = cairo_xlib_surface_create (XW[id].display, XW[id].pixmap, XW[id].visual, XW[id].width, XW[id].height); Dev[id].context = cairo_create (Dev[id].surface); } /** * Initialises the normalised device coords matrix */ void _giza_init_norm_xw (void) { cairo_matrix_init (&(Dev[id].Win.normCoords),(double) Dev[id].width, 0, 0, (double) -Dev[id].height, GIZA_XW_MARGIN, Dev[id].height + GIZA_XW_MARGIN); } /** * This routine closes the X window device and cleans up associated memory. */ void _giza_close_device_xw (void) { if( Dev[id].surface ) { cairo_surface_finish (Dev[id].surface); cairo_status_t status = cairo_surface_status (Dev[id].surface); if (status != CAIRO_STATUS_SUCCESS) _giza_error("giza_close_device_xw",cairo_status_to_string(status)); cairo_surface_destroy (Dev[id].surface); } /* Release resources only if they seem to be there */ if( XW[id].display ) { if( XW[id].window ) XDestroyWindow( XW[id].display, XW[id].window ); if( XW[id].pixmap ) XFreePixmap (XW[id].display, XW[id].pixmap); /*XFreeGC(XW[id].display,XW[id].gc);*/ XCloseDisplay (XW[id].display); } /* Erase state of current XW device to pristine state */ memset( &XW[id], 0x0, sizeof(struct GIZA_XWindow) ); } static int _giza_errors_xw (Display *display, XErrorEvent *xwerror) { char text[82]; int length = (int) sizeof(text); XGetErrorText(display,xwerror->error_code,text,length); _giza_error("giza_xw",text); return 0; } /** * Loops indefinitely, redrawing the window as necessary until a key is pressed. * Returns the x and y position of the cursor (in device coords) and the key pressed. * * Update: do not /actively/ honour resizing of the window (neither does * PGPLOT) whilst waiting for key press. */ static void _giza_xevent_loop (int mode, int moveCurs, int nanc, const int *anchorx, const int *anchory, int *x, int *y, char *ch) { /* move the cursor to the given position */ if (moveCurs) { XWarpPointer (XW[id].display, None, XW[id].window, 0, 0, 0, 0, anchorx[nanc-1], anchory[nanc-1]); } XEvent event; XSelectInput (XW[id].display, XW[id].window, ExposureMask | KeyPressMask | ButtonPressMask | PointerMotionMask | StructureNotifyMask ); _giza_init_band (mode); _giza_expand_clipping_xw(); while(1) { /* wait for key press/expose (avoid using XNextEvent as breaks older systems) */ XWindowEvent(XW[id].display, XW[id].window, (long) (ExposureMask | KeyPressMask | ButtonPressMask | PointerMotionMask | StructureNotifyMask), &event); /*XNextEvent(XW[id].display, &event);*/ /* always return x, y values for safety */ *x = 0; *y = 0; switch (event.type) { case ClientMessage: /* catch close window event */ *ch = 'q'; if ((Atom)event.xclient.data.l[0] == wmDeleteMessage) { return; } break; case DestroyNotify: *ch = 'q'; return; case Expose: /* redraw */ _giza_expose_xw (&event); break; case KeyPress: /* return pos and char */ { char buffer[10]; KeySym key; int nret; /* get the ascii of the pressed key */ nret = XLookupString((XKeyEvent *)&event, buffer, (int) (sizeof(buffer)/sizeof(char)), &key, NULL); /* ignore irrelevant keys */ if(nret==1 && (key < XK_Shift_L || key > XK_Hyper_R)) { *x = event.xkey.x ;/*- GIZA_XW_MARGIN; */ *y = event.xkey.y ;/*- GIZA_XW_MARGIN; */ if(key) *ch = buffer[0]; _giza_destroy_band (mode); _giza_flush_xw_event_queue(&event); _giza_reset_clipping_xw(); return; }; break; } case ButtonPress: { *x = event.xbutton.x ;/*- GIZA_XW_MARGIN; */ *y = event.xbutton.y ;/*- GIZA_XW_MARGIN; */ switch(event.xbutton.button) { case Button1: if (event.xbutton.state==1) { *ch = GIZA_SHIFT_CLICK; } else { *ch = GIZA_LEFT_CLICK; } break; case Button2: *ch = GIZA_MIDDLE_CLICK; break; case Button3: *ch = GIZA_RIGHT_CLICK; break; case 4: /* use integers in case ButtonN not defined for N>6 */ *ch = GIZA_SCROLL_UP; break; case 5: *ch = GIZA_SCROLL_DOWN; break; case 6: *ch = GIZA_SCROLL_LEFT; break; case 7: *ch = GIZA_SCROLL_RIGHT; break; default: *ch = GIZA_OTHER_CLICK; break; } _giza_destroy_band (mode); _giza_flush_xw_event_queue(&event); _giza_reset_clipping_xw(); return; } case MotionNotify: { /* discard all except the last pointer motion event */ while(XCheckWindowEvent(XW[id].display, XW[id].window, (long)(PointerMotionMask), &event) == True); /* if a callback function is set to do things while the cursor is moving, call it */ if (Dev[id].motion_callback != NULL) { double xpt = (double) event.xmotion.x; double ypt = (double) event.xmotion.y; /* make sure the transform is to world coords, because arbitrary drawing can happen in the callback routine, which may change the transform */ _giza_set_trans (GIZA_TRANS_WORLD); cairo_device_to_user (Dev[id].context, &xpt, &ypt); Dev[id].motion_callback(&xpt, &ypt, &mode); } _giza_refresh_band (mode, nanc, anchorx, anchory, event.xmotion.x, event.xmotion.y); _giza_flush_xw_event_queue(&event); } default: break; } } /* * Note: we never get to here (return is after ButtonPress) _giza_destroy_band (mode); */ } /** * expunge the Xwindow event queue */ static void _giza_flush_xw_event_queue (XEvent *event) { /* * Discard un-handled ButtonPress, KeyPress and MotionNotify events * without blocking. */ while(XCheckWindowEvent(XW[id].display, XW[id].window, (long) (ButtonPressMask | KeyPressMask | PointerMotionMask), event)); /* Flush all remaining events from the X event queue while (XPending(XW[id].display)) { printf("removing pending XW event \n"); XNextEvent(XW[id].display, event); } */ } /** * Deal with the xwindow expose event. */ static void _giza_expose_xw (XEvent *event) { XCopyArea (XW[id].display, XW[id].pixmap, XW[id].window, XW[id].gc, event->xexpose.x, event->xexpose.y, (unsigned) event->xexpose.width, (unsigned) event->xexpose.height, event->xexpose.x, event->xexpose.y); /* XFlush(XW[id].display); */ } /** * Expands clipping so the whole surface can be drawn to. */ void _giza_expand_clipping_xw (void) { _giza_set_trans (GIZA_TRANS_IDEN); cairo_reset_clip (Dev[id].context); cairo_rectangle (Dev[id].context, 0, 0, XW[id].width, XW[id].height); cairo_clip (Dev[id].context); } /** * Restores clipping of the plotting surface */ void _giza_reset_clipping_xw (void) { /* Restore clipping */ giza_set_viewport (Dev[id].VP.xmin, Dev[id].VP.xmax, Dev[id].VP.ymin, Dev[id].VP.ymax); _giza_set_trans (GIZA_TRANS_WORLD); } /** * Loops until a key is pressed. At this point the position in world coords of the cursor is returned, along with the key pressed. */ void _giza_get_key_press_xw (int mode, int moveCurs, int nanc, const double *xanc, const double *yanc, double *x, double *y, char *ch) { int oldTrans = _giza_get_trans (); _giza_set_trans (GIZA_TRANS_WORLD); double xanci,yanci; int i,ix,iy; int ixanc[nanc]; int iyanc[nanc]; for (i = 0; i < nanc; i++) { xanci = xanc[i]; yanci = yanc[i]; cairo_user_to_device(Dev[id].context, &xanci, &yanci); ixanc[i] = (int) xanci; iyanc[i] = (int) yanci; } _giza_xevent_loop (mode, moveCurs, nanc, ixanc, iyanc, &ix, &iy, ch); *x = (double) ix; *y = (double) iy; cairo_device_to_user (Dev[id].context, x, y); _giza_set_trans (oldTrans); } /** * Creates the surfaces for drawing the band */ int _giza_init_band_xw (void) { /* Set up box so it can draw the box... */ Band.onscreen = cairo_xlib_surface_create (XW[id].display, XW[id].window, XW[id].visual, XW[id].width, XW[id].height); Band.box = cairo_create (Band.onscreen); /* use grey for band */ cairo_set_source_rgba (Band.box, 0.5, 0.5, 0.5, 1.0); /* Set up restore to remove box (DP: 2/12/24 we now restore from pixmap instead of window to fix issue on Mac OS)*/ Band.onscreen = cairo_xlib_surface_create (XW[id].display, XW[id].pixmap, XW[id].visual, XW[id].width, XW[id].height); Band.restore = cairo_create (Band.onscreen); cairo_set_source_surface (Band.restore, Dev[id].surface, 0, 0); Band.maxHeight = XW[id].height; Band.maxWidth = XW[id].width; return 1; } #endif giza-1.5.0/src/giza-drivers-private.h000066400000000000000000000040541477367113400175050ustar00rootroot00000000000000/* giza - a scientific plotting library built on cairo * * Copyright (c) 2010 James Wetter and Daniel Price * Copyright (c) 2010-2012 Daniel Price * * This library is free software; and you are welcome to redistribute * it under the terms of the GNU General Public License * (GPL, see LICENSE file for details) and the provision that * this notice remains intact. If you modify this file, please * note section 5a) of the GPLv3 states that: * * a) The work must carry prominent notices stating that you modified * it, and giving a relevant date. * * This software is distributed "AS IS", with ABSOLUTELY NO WARRANTY. * See the GPL for specific language governing rights and limitations. * * The Original code is the giza plotting library. * * Contributor(s): * James Wetter * Daniel Price (main contact) */ #define GIZA_DEVICE_IV 0 #define GIZA_DEVICE_NULL 1 #define GIZA_DEVICE_XW 2 #define GIZA_DEVICE_PNG 3 #define GIZA_DEVICE_PDF 4 #define GIZA_DEVICE_VPDF 5 #define GIZA_DEVICE_PS 6 #define GIZA_DEVICE_VPS 7 #define GIZA_DEVICE_EPS 8 #define GIZA_DEVICE_SVG 9 #define GIZA_DEVICE_MP4 10 #define GIZA_DEFAULT_PREFIX "giza" int _giza_get_key_press (int mode, int moveCurs, int nanc, const double *xanc, const double *yanc, double *x, double *y, char *ch); void _giza_split_device_string (const char *deviceString, char const **devType); int _giza_device_to_int (const char *newDeviceName); int _giza_int_to_device (int numDevice, char *DeviceName, int rval); void _giza_init_norm (void); void _giza_expand_clipping (void); void _giza_restore_clipping (void); void _giza_init_device_list (char **deviceList); void _giza_free_device_list (char *deviceList); void _giza_lowercase(const char *string, char *lowerstring); void _giza_trim(char *str); void _giza_get_filename_for_device (char *filename, char *prefix, int pgNum, char *extension, int lastpage); void _giza_get_specified_size(double paperwidth, double paperheight, int paperunits, int *width, int *height); giza-1.5.0/src/giza-drivers.c000066400000000000000000001045201477367113400160270ustar00rootroot00000000000000/* giza - a scientific plotting library built on cairo * * Copyright (c) 2010 James Wetter and Daniel Price * Copyright (c) 2010-2015 Daniel Price * * This library is free software; and you are welcome to redistribute * it under the terms of the GNU General Public License * (GPL, see LICENSE file for details) and the provision that * this notice remains intact. If you modify this file, please * note section 5a) of the GPLv3 states that: * * a) The work must carry prominent notices stating that you modified * it, and giving a relevant date. * * This software is distributed "AS IS", with ABSOLUTELY NO WARRANTY. * See the GPL for specific language governing rights and limitations. * * The Original code is the giza plotting library. * * Contributor(s): * James Wetter * Daniel Price (main contact) */ #include "giza-private.h" #include "giza-drivers-private.h" #include "giza-driver-xw-private.h" #include "giza-driver-png-private.h" #include "giza-driver-mp4-private.h" #include "giza-driver-pdf-private.h" #include "giza-driver-ps-private.h" #include "giza-driver-eps-private.h" #include "giza-driver-svg-private.h" #include "giza-driver-null-private.h" #include "giza-io-private.h" #include "giza-viewport-private.h" #include "giza-window-private.h" #include "giza-transforms-private.h" #include "giza-character-size-private.h" #include "giza-text-private.h" #include "giza-set-font-private.h" #include "giza-colour-private.h" #include "giza-arrow-style-private.h" #include "giza-fill-private.h" #include "giza-line-style-private.h" #include "giza-band-private.h" #include "giza-stroke-private.h" #include "giza-subpanel-private.h" #include "giza-text-background-private.h" #include #include #include #include #include #include #define GIZA_DEFAULT_MARGIN 0 static void _giza_set_prefix (const char *prefix); static int _giza_get_internal_id(int devid); static void _giza_close_device_unchecked (void); static void _giza_init_device_struct(giza_device_t*); /* global settings */ giza_settings_t Sets; int id; /* per-device settings */ giza_device_t Dev[GIZA_MAX_DEVICES]; /** * Device: giza_open_device * * Synopsis: Opens a new device to be drawn to. Must be called before * any drawing can take place. * * Input: * -newDeviceName :- Specifies the name and type of device to be opened. * See below for details. * -newPrefix :- Specifies the default prefix to be used for file names. * * Return value: * -<=0 :- an error has occurred * -1 :- id of current device * Note: this is the EXTERNAL device number, running from 1..Ndev * The internal device numbers are array indices into the Dev[...] * array and run from 0..Ndev-1 * * Available devices: * -? :- User selects device * -/xw :- X-window * -/eps :- Encapsulated Postscript * -/png :- Portable Network Graphics file * -/mp4 :- Mpeg4 movie [requires ffmpeg support] * -/svg :- Scalable Vector Graphics file * -/pdf :- Portable Document Format * -/vpdf :- Landscape Portable Document Format * -/ps :- PostScript * -/vps :- Landscape Postscript * * For hardcopy devices, the device type can also be recognised * automatically by specifying the filename * e.g: giza_open_device("plot.png","giza") * * See Also: giza_select_device, giza_get_device_id, giza_close_device, giza_query_device */ int giza_open_device (const char *newDeviceName, const char *newPrefix) { return giza_open_device_size (newDeviceName, newPrefix, 0., 0., 0); } /** * Device: giza_open_device_size * * Synopsis: Similar to giza_open_device, but allows one to specify the size of the device * * Input: * -newDeviceName :- Specifies the type of device to be opened. * See below for details. * -newPrefix :- Specifies the default prefix to be used for file names. * -width :- Width for the newly opened device * -height :- Height for the newly opened device * -units :- Units in which the width/height of the device are specified * * Units: * -GIZA_UNITS_DEVICE :- device coords (i.e. pixels on bitmap devices, points on vector devices) * -GIZA_UNITS_PIXELS :- pixels * -GIZA_UNITS_MM :- mm * -GIZA_UNITS_INCHES :- inches * Other values cause an error message and are treated as GIZA_UNITS_DEVICE * * See Also: giza_open_device */ int giza_open_device_size (const char *newDeviceName, const char *newPrefix, double width, double height, int units) { static int didInit = 0; if( !didInit ) { giza_device_t* pDev; for(pDev = &Dev[0]; pDev < &Dev[GIZA_MAX_DEVICES]; pDev++) _giza_init_device_struct( pDev ); didInit = 1; } if( !newDeviceName || !strlen(newDeviceName) ) { _giza_error("giza_open_device", newDeviceName==NULL ? "(nullptr devicename)" : "empty device name"); return -1; } /* request to open a new device. * see if we can find an unused entry in our list of devices */ int newId; for( newId=0; newId=GIZA_MAX_DEVICES ) { _giza_error("giza_open_device", "No more free devices (%d in use). Close some first.", GIZA_MAX_DEVICES); return -1; } /* Some general initialisation. * Everything was already zeroed out + type was already == GIZA_DEVICE_IV */ /* Change the "current device id" to the newly allocated device * such that routines can initialize it properly. * Note that if something fails we have to put back the * previous current device id */ const int prevId = id; id = newId; _giza_init(); _giza_set_prefix( newPrefix!=0 ? newPrefix : GIZA_DEFAULT_PREFIX ); Dev[id].number_format = GIZA_NUMBER_FORMAT_AUTO; /* Determine which type of device to open */ char firstchar = newDeviceName[0]; if (firstchar == '?') { Dev[id].type = _giza_prompt_for_device (); } else { char const *devTypeStr; _giza_split_device_string (newDeviceName, &devTypeStr); Dev[id].type = _giza_device_to_int (devTypeStr); } /* Determine which driver is required */ int success; switch (Dev[id].type) { #ifdef _GIZA_HAS_XW case GIZA_DEVICE_XW: success = _giza_open_device_xw (width, height, units); break; #endif case GIZA_DEVICE_MP4: case GIZA_DEVICE_PNG: success = _giza_open_device_png (width, height, units); break; case GIZA_DEVICE_PDF: success = _giza_open_device_pdf (width, height, units, 0); break; case GIZA_DEVICE_VPDF: success = _giza_open_device_pdf(width, height, units, 1); break; case GIZA_DEVICE_PS: success = _giza_open_device_ps (width, height, units, 0); break; case GIZA_DEVICE_VPS: success = _giza_open_device_ps (width, height, units, 1); break; case GIZA_DEVICE_SVG: success = _giza_open_device_svg (width, height, units, 0); break; case GIZA_DEVICE_NULL: success = _giza_open_device_null (width, height, units); break; #ifdef _GIZA_HAS_EPS case GIZA_DEVICE_EPS: success = _giza_open_device_eps (width, height, units, 0); break; #endif case GIZA_DEVICE_IV: default: _giza_error ("giza_open_device", "Unknown device, device not opened"); success = 666; break; } /* check that the surface was created */ if (success!=0 || Dev[id].surface==0) { /* Let giza_close_device_unchecked() reset the contents of the * Dev[...] that we tried to initialize */ _giza_close_device_unchecked (); /* And put back the old device */ id = prevId; return -1; } /* bind the created surface to our Dev[id].context */ Dev[id].context = cairo_create (Dev[id].surface); if (!Dev[id].context) { _giza_error ("giza_open_device", "Could not create cairo context."); /* call the unchecked close device function because this one * hasn't been fully constructed yet */ _giza_close_device_unchecked(); /* and put back previously active device */ id = prevId; return -1; } /* Do the rest of the initialization. * These routines check for Dev[id].deviceOpen so we must set that */ Dev[id].deviceOpen = 1; Dev[id].defaultBackgroundAlpha = 1.; Dev[id].motion_callback = NULL; giza_set_text_background (-1); giza_start_prompting (); _giza_init_subpanel (); _giza_init_arrow_style (); _giza_init_line_style (); _giza_init_colour_index (); giza_draw_background (); _giza_init_colour_table (); _giza_set_trans (GIZA_TRANS_IDEN); _giza_init_norm (); /* font and character height initialisations need to come before set_viewport_default */ _giza_init_character_height (); /* must come BEFORE init_font */ _giza_init_font (); _giza_init_text_background(); _giza_init_window (); /* call init_window BEFORE set_viewport */ giza_set_viewport_default (); giza_set_line_width (1); _giza_init_fill (); _giza_init_band_style (); _giza_init_save (); giza_set_clipping(1); return id+1; } /** * Device: giza_open_device_size_float * * Synopsis: Same functionality as giza_open_device_size but takes floats */ int giza_open_device_size_float (const char *newDeviceName, const char *newPrefix, float width, float height, int units) { return giza_open_device_size (newDeviceName, newPrefix, (double) width, (double) height, units); } /** * For internal book-keeping * To the outside world, the device ids run from 1->Ndevices * whereas within giza the referencing (id) is from 0->Ndevices-1 */ int _giza_get_internal_id(int devid) { return devid - 1; } /** * Device: giza_get_device_id * * Synopsis: Returns the (external) id of the currently selected device * * Output: * -devid, as returned by giza_open_device * * See Also: giza_open_device, giza_get_device_id */ void giza_get_device_id (int *devid) { *devid = id + 1; return; } /** * Device: giza_select_device * * Synopsis: Select between the currently open devices * * Input: * -devid :- device id, as returned by giza_open_device * * See Also: giza_get_device_id, giza_open_device */ void giza_select_device (int devid) { /* attempt to map external device id to internal id */ int tmpid = _giza_get_internal_id(devid); if( tmpid<0 || tmpid>=GIZA_MAX_DEVICES ) { _giza_error ("giza_select_device", "Invalid device number %d selected", devid); return; } /* need to check if device is open */ if (!Dev[tmpid].deviceOpen) { _giza_error ("giza_select_device", "Invalid/closed device %d selected", devid); return; } /* The device can be selected */ id = tmpid; } /** * Device: giza_flush_device * * Synopsis: Flushes the currently open device. */ void giza_flush_device (void) { if (!_giza_check_device_ready ("giza_flush_device")) return; Dev[id].drawn = 1; if (!Dev[id].buf) /* do not flush if buffering is on */ { switch (Dev[id].type) { #ifdef _GIZA_HAS_XW case GIZA_DEVICE_XW: _giza_flush_device_xw (); break; #endif default: if (!Dev[id].surface) { _giza_error ("giza_flush_device", "No device open, cannot flush"); return; } else { cairo_surface_flush(Dev[id].surface); } return; } } return; } /** * Device: giza_change_page * * Synopsis: Advances the currently open device to the next page, and redraws * the background. If no other actions have been performed since the device was * opened or the last call to giza_change_page the call is ignored. * * See Also: giza_subpanel, giza_set_panel */ void giza_change_page (void) { /* If sub-panels are used, just change panel if we are not in the last panel */ if (Dev[id].nx > 1 || Dev[id].ny > 1) { int newpage; _giza_advance_panel(&newpage); if (!newpage) return; } /* allow resizing of the device if nothing has been drawn */ if (!Dev[id].drawn && !Dev[id].resize) { /* if nothing has changed, safe to redraw/reset the background colour */ giza_draw_background (); /* do nothing */ return; } if (!_giza_check_device_ready ("giza_change_page")) return; /* PGPLOT keeps a flag per device ("pgplot.inc", "PGADVS(PGMAXD)" * (PGMAXD = maximum number of PGPLOT devices open at the same time) * to be able to skip asking for the first page. This flag is set * in PGOPEN and cleared in PGPAGE */ if (Dev[id].prompting && Dev[id].isInteractive && !Dev[id].firstPage) { _giza_newpage_prompt(); } /* OK skipped the first 'ask' */ Dev[id].firstPage = 0; /* save a whole bunch of settings (line style, width, colour index etc.) */ giza_save(); switch (Dev[id].type) { #ifdef _GIZA_HAS_XW case GIZA_DEVICE_XW: _giza_change_page_xw (); break; #endif case GIZA_DEVICE_MP4: case GIZA_DEVICE_PNG: _giza_change_page_png (); break; case GIZA_DEVICE_SVG: _giza_change_page_svg (); break; case GIZA_DEVICE_PDF: case GIZA_DEVICE_VPDF: _giza_change_page_pdf (); break; case GIZA_DEVICE_PS: case GIZA_DEVICE_VPS: _giza_change_page_ps (); break; case GIZA_DEVICE_NULL: _giza_change_page_null (); break; #ifdef _GIZA_HAS_EPS case GIZA_DEVICE_EPS: _giza_change_page_eps (); break; #endif default: _giza_error ("giza_change_page", "No device open"); return; } /* Only increase pagenumber if there was content */ if (Dev[id].drawn) Dev[id].pgNum++; /* Reset stuff */ giza_set_panel(1,1); /* also calls set_viewport */ /*giza_set_viewport (Dev[id].VP.xmin,Dev[id].VP.xmax, Dev[id].VP.ymin, Dev[id].VP.ymax);*/ giza_set_window (Dev[id].Win.xmin, Dev[id].Win.xmax, Dev[id].Win.ymin, Dev[id].Win.ymax); /* restore the previously saved settings */ giza_restore(); Dev[id].drawn = 0; Dev[id].resize = 0; giza_draw_background (); giza_flush_device (); return; } /** * Device: giza_close_devices * * Synopsis: Close all open devices (to be called from PGEND()) */ void giza_close_devices (void) { for(id = 0; iddeviceOpen ) nOpen++; if( nOpen==0 ) _giza_unload_font_cache (); } /** * In order to be able to share the cleaning-up code between * giza_close_device() and giza_open_device_size() [when something fails * during the construction of a new device] the actual cleaning up code * is put in this internal function. * * This function deletes the context and calls a type-specific close routine * to delete the surface. Some other resources (e.g. font) are released as * well. After that the contents of Dev[id] are returned to a known, default * state: all zeroes and .type set to GIZA_DEVICE_IV. * * giza_close_device() can do its sanity checks as it is an API function and * then call the _unchecked() version to do the heavy lifting; * giza_open_device_size() can call this one directly as it knows it doesn't * have to do any sanity checks. */ void _giza_close_device_unchecked (void) { /* destroy the cairo context */ if (Dev[id].context) cairo_destroy(Dev[id].context); switch (Dev[id].type) { #ifdef _GIZA_HAS_XW case GIZA_DEVICE_XW: _giza_close_device_xw (); break; #endif case GIZA_DEVICE_MP4: _giza_close_device_mp4(1); break; case GIZA_DEVICE_PNG: _giza_close_device_png(1); break; case GIZA_DEVICE_SVG: _giza_close_device_svg (); break; case GIZA_DEVICE_PDF: case GIZA_DEVICE_VPDF: _giza_close_device_pdf (); break; case GIZA_DEVICE_PS: case GIZA_DEVICE_VPS: _giza_close_device_ps (); break; case GIZA_DEVICE_NULL: _giza_close_device_null (); break; #ifdef _GIZA_HAS_EPS case GIZA_DEVICE_EPS: _giza_close_device_eps (); break; #endif default: /* unrecognized device type => don't do anything but finish other cleanup*/ break; } /* Destroy the font */ _giza_free_font (); _giza_free_colour_table (); /* Return device struct contents to known empty state */ _giza_init_device_struct( &Dev[id] ); } /** * Resets the contents of a giza_device_t to a known state: * the whole struct is zeroed out and .type is set to GIZA_DEVICE_IV. * * Note: this approach was chosen over having a static/const/global * giza_device_t using a compond struct initializer like this: * static const giza_device_t prototype = { .type = GIZA_DEVICE_IV }; * since the opinions differ a bit on exactly which C standard does exactly * what with members that are not named in the initializer list. * See https://stackoverflow.com/questions/330793/how-to-initialize-a-struct-in-accordance-with-c-programming-language-standards * * Input: * -ptrDev :- a pointer to a giza_device_t */ void _giza_init_device_struct(giza_device_t* ptrDev) { memset(ptrDev, 0x0, sizeof(giza_device_t)); ptrDev->type = GIZA_DEVICE_IV; } /** * Device: giza_query_device * * Synopsis: Queries various things about the current device. * * Input: * -querytype :- a string containing the query type * -rlen :- integer containing the length of the return buffer * * Output: * -returnval :- string with result of query * * The following query types are possible: * "state" :- returns whether or not a device is open (returns "OPEN" or "CLOSED") * "device" :- returns device name for current device (e.g. giza.png) * "type" :- returns device type of the current device (e.g. /png,/xw) * "dev/type" :- returns device name and type for current device (e.g. giza.png/png) * "file" :- returns filename if device is non-interactive * "user" :- returns current username * "cursor" :- returns whether or not device has a cursor (returns "YES" or "NO") * "hardcopy" :- returns whether device is a hardcopy device (returns "YES" or "NO") * */ int giza_query_device (const char *querytype, char *returnval, int* rlen) { int ierr = 0; char devType[12]; const int max_chars = *rlen - 1; if (max_chars<=0) { _giza_warning("giza_query_device", "destination string says it has %d characters available querying %s", max_chars, querytype); return 1; } /* Query device type */ if (!strcasecmp(querytype,"type")) { if (!_giza_int_to_device(Dev[id].type,returnval, max_chars)) { ierr = 1; } } /* Query whether or not device has cursor */ else if (!strcasecmp(querytype,"cursor")) { strncpy(returnval, Dev[id].isInteractive ? "YES" : "NO", max_chars); } /* Query whether or not device is hard copy or not */ else if (!strcasecmp(querytype,"hardcopy")) { strncpy(returnval, Dev[id].isInteractive ? "NO" : "YES", max_chars); } /* Query whether or not device is open or not */ else if (!strcasecmp(querytype,"state")) { strncpy(returnval, Dev[id].deviceOpen ? "OPEN" : "CLOSED", max_chars); } /* Query current user */ else if (!strcasecmp(querytype,"user")) { strncpy(returnval,getlogin(),max_chars); } /* Query current device name */ else if (!strcasecmp(querytype,"device")) { strncpy(returnval,Dev[id].prefix,max_chars); } /* Query current device/type */ else if (!strcasecmp(querytype,"dev/type")) { strncpy(returnval,Dev[id].prefix,max_chars); if (!_giza_int_to_device(Dev[id].type,devType,sizeof(devType))) { ierr = 1; strncat(returnval,devType,4*sizeof(char)); } } /* Query current filename (as entered by user) */ else if (!strcasecmp(querytype,"file")) { if (!Dev[id].isInteractive) { strncpy(returnval,Dev[id].prefix,max_chars); } else { strncpy(returnval, " ", max_chars); } } returnval[max_chars] = '\0'; /* make sure string is null-terminated */ return ierr; } /** * Device: giza_set_motion_callback * * Synopsis: set a callback function to be called * during cursor movement (e.g. to print things). * Function should be of the form * void func(double *x, double *y) * * Input: * -func :- The subroutine to be called * * See Also: giza_end_motion_callback * */ int giza_set_motion_callback (void (*func)(double *x, double *y, int *mode)) { if (!_giza_check_device_ready ("giza_set_motion_callback")) return 1; /* assign the motion pointer callback */ Dev[id].motion_callback = func; return 0; } /** * Device: giza_end_motion_callback * * Synopsis: Free the motion callback pointer * * See Also: giza_set_motion_callback * */ int giza_end_motion_callback (void) { if (!_giza_check_device_ready ("giza_end_motion_callback")) return 1; if (Dev[id].motion_callback != NULL) { Dev[id].motion_callback = NULL; return 0; } else { return 1; /* return error if already null */ } } /** * Returns the cursor position and key press after a key press. * * Input: * -mode :- Sets the type of band to be used. * -moveCurs :- if 1 the cursor is moved to (x, y). * if 0 the cursor is not moved. * -xanc :- the x-coord of the anchor point (world coord). * -yanc :- the y-coord of the anchor point (world coord). * -x :- Gets set to the x world coord of the cursor. * -y :- Gets set to the y world coord of the cursor. * -ch :- Gets set to the character pressed. * * Return value: * -1 :- If the device has no cursor * -0 :- If the call was successful * * Modes: * -0 :- No band is drawn. */ int _giza_get_key_press (int mode, int moveCurs, int nanc, const double *xanch, const double *yanch, double *x, double *y, char *ch) { if (!_giza_check_device_ready ("_giza_get_key_press")) return 1; switch (Dev[id].type) { case GIZA_DEVICE_NULL: case GIZA_DEVICE_PDF: case GIZA_DEVICE_VPDF: case GIZA_DEVICE_PNG: case GIZA_DEVICE_SVG: case GIZA_DEVICE_PS: case GIZA_DEVICE_VPS: _giza_warning ("giza_get_key_press", "Current device does not support a cursor, returning x = 0, y = 0, ch = a"); return 1; break; #ifdef _GIZA_HAS_XW case GIZA_DEVICE_XW: _giza_get_key_press_xw (mode, moveCurs, nanc, xanch, yanch, x, y, ch); return 0; break; #endif case GIZA_DEVICE_IV: default: _giza_error ("giza_get_key_press", "Unknown device"); return 1; } } /* * Splits deviceString into name and type, * and overwrites the prefix */ void _giza_split_device_string (const char *deviceString, char const **devType) { if (deviceString == NULL) return; *devType = strrchr (deviceString, (int) '/'); /* Can either set the device name as 'myfile/png' or with a file extension 'myfile.png' try the latter either if no '/' found, or if the string after the '/' contains a dot as in 'dir/myfile.png' */ if (*devType == NULL || strrchr(*devType,(int) '.') != NULL) { /* look for file extension (.blah) at end of filename * no need to check details of this as will not be * recognised as a device if not valid hardcopy file extension * and this is only done if / not present */ *devType = strrchr (deviceString, (int) '.'); if (*devType == NULL) { *devType = deviceString; return; } } /* Set the name */ int lendev = strlen(deviceString); /* long-winded to avoid */ int lentype = strlen(*devType); /* icc compile warnings */ int nameLength = lendev - lentype; /* Ignore no name (use default) */ if (nameLength != 0) { char devName[nameLength + 1]; strncpy (devName, deviceString, (size_t) nameLength); devName[nameLength] = '\0'; _giza_trim(devName); _giza_set_prefix (devName); } } /** * An internal function that converts a device string to its integer representation */ int _giza_device_to_int (const char *newDeviceName) { int newDevice; /* copy the string and make it lower case */ char devName[strlen (newDeviceName) + 1]; int i; for (i = 0; i < (signed ) strlen (newDeviceName); ++i) { devName[i] = (char) tolower (newDeviceName[i]); } devName[i] = '\0'; /* trim spaces from the device string */ _giza_trim(devName); if (!strcmp (devName, "/null")) newDevice = GIZA_DEVICE_NULL; #ifdef _GIZA_HAS_XW else if (!strcmp (devName, "/xw") || !strcmp (devName, "/xs") || !strcmp (devName, "/xserve") || !strcmp (devName, "/xwindow") || !strcmp (devName, "/xwin")) newDevice = GIZA_DEVICE_XW; #endif else if (!strcmp (devName, "/png")) newDevice = GIZA_DEVICE_PNG; else if (!strcmp(devName, "/mp4")) newDevice = GIZA_DEVICE_MP4; else if (!strcmp(devName, "/svg")) newDevice = GIZA_DEVICE_SVG; else if (!strcmp (devName, "/pdf")) newDevice = GIZA_DEVICE_PDF; else if (!strcmp (devName, "/ps") || !strcmp (devName, "/cps") || !strcmp (devName, "/postscript")) newDevice = GIZA_DEVICE_PS; else if (!strcmp (devName, "/vpdf")) newDevice = GIZA_DEVICE_VPDF; else if (!strcmp (devName, "/vps")) newDevice = GIZA_DEVICE_VPS; #ifdef _GIZA_HAS_EPS else if (!strcmp (devName, "/eps")) newDevice = GIZA_DEVICE_EPS; #endif else { /* * For hardcopy devices, allow the user to just * specify the device extension if no /dev is present */ if (!strcmp (devName, ".png")) newDevice = GIZA_DEVICE_PNG; else if (!strcmp(devName, ".mp4")) newDevice = GIZA_DEVICE_MP4; else if (!strcmp(devName, ".svg")) newDevice = GIZA_DEVICE_SVG; else if (!strcmp (devName, ".pdf")) newDevice = GIZA_DEVICE_PDF; else if (!strcmp (devName, ".ps")) newDevice = GIZA_DEVICE_PS; #ifdef _GIZA_HAS_EPS else if (!strcmp (devName, ".eps")) newDevice = GIZA_DEVICE_EPS; #endif else { newDevice = GIZA_DEVICE_IV; } } return newDevice; } /** * An internal function that the integer representation back to the device string */ int _giza_int_to_device (int numDevice, char *DeviceName, int rval) { int ierr = 0; const int max_chars = rval - 1; switch (numDevice) { case GIZA_DEVICE_NULL: strncpy(DeviceName,"/null",max_chars); break; case GIZA_DEVICE_PDF: strncpy(DeviceName,"/pdf",max_chars); break; case GIZA_DEVICE_VPDF: strncpy(DeviceName,"/vpdf",max_chars); break; case GIZA_DEVICE_PNG: strncpy(DeviceName,"/png",max_chars); break; case GIZA_DEVICE_MP4: strncpy(DeviceName, "/mp4", max_chars); break; case GIZA_DEVICE_SVG: strncpy(DeviceName, "/svg", max_chars); break; case GIZA_DEVICE_PS: strncpy(DeviceName,"/ps",max_chars); break; case GIZA_DEVICE_VPS: strncpy(DeviceName,"/vps",max_chars); break; #ifdef _GIZA_HAS_XW case GIZA_DEVICE_XW: strncpy(DeviceName,"/xw",max_chars); break; #endif #ifdef _GIZA_HAS_EPS case GIZA_DEVICE_EPS: strncpy(DeviceName,"/eps",max_chars); break; #endif default: /* Do not print an error here as this is an internal routine: Instead, make sure the error is handled in the calling routine */ strncpy(DeviceName," ",max_chars); ierr = 1; } DeviceName[max_chars] = '\0'; /* make sure string is null-terminated */ return ierr; } /** * Prints a list of currently available devices to stdout */ void giza_print_device_list (void) { _giza_display_devices(); } /** * NOTE: Should use if defs to only add the devices that are available. * Allocates memory for the device list and sets it to a list of available devices. */ void _giza_init_device_list (char **deviceList) { *deviceList = malloc (1000 * sizeof(char)); /* be CAREFUL here to make sure the string is big enough */ *deviceList[0] = '\0'; #ifdef _GIZA_HAS_XW strcat (*deviceList, "Interactive devices:\n\t/xw\t(X Window)\n"); #endif strcat (*deviceList, "Non-interactive file formats:\n"); strcat (*deviceList, "\t/png or file.png (Portable network graphics file)\n"); strcat (*deviceList, "\t/mp4 or file.mp4 (mpeg4 movie [requires ffmpeg installation])\n"); strcat (*deviceList, "\t/svg or file.svg (Scalable vector graphics file)\n"); #ifdef _GIZA_HAS_EPS strcat (*deviceList, "\t/eps or file.eps (Encapsulated Postscript, one file per page)\n"); #endif strcat (*deviceList, "\t/pdf or file.pdf (Portable document format file)\n"); strcat (*deviceList, "\t/vpdf (Portable document format file portrait)\n"); strcat (*deviceList, "\t/ps or file.ps (Postscript file, multiple pages per file)\n"); strcat (*deviceList, "\t/vps (Postscript file portrait, multiple pages per file)\n"); strcat (*deviceList, "\t/null (Null device)\n"); } /** * Frees the memory alloacted for the deviceList */ void _giza_free_device_list (char *deviceList) { if (deviceList) { free (deviceList); } } /** * Initialises the normalised device coords matrix. */ void _giza_init_norm (void) { if (!_giza_check_device_ready ("_giza_init_norm")) return; double xx,yy,x0,y0; switch (Dev[id].type) { #ifdef _GIZA_HAS_XW /* * X-Windows device is different because it has additional margins around the giza window * (this should in principle be for *all* interactive devices...) */ case GIZA_DEVICE_XW: _giza_init_norm_xw (); break; #endif default: /* * The cairo transformations are: * * x' = xx*x + xy*y + x0 * y' = yx*x + yy*y + y0 * * where the call to matrix is (&mat,xx,yx,xy,yy,x0,y0) * * but note that y goes from 0 (top) to 1 (bottom) by default, so we reverse this. * * DJP: Here we can allow small margins in the transformation * to normalised device coords to avoid clipping at the edge */ xx = (double) Dev[id].width - 2.*GIZA_DEFAULT_MARGIN; yy = 2.*GIZA_DEFAULT_MARGIN - (double) Dev[id].height; x0 = GIZA_DEFAULT_MARGIN; y0 = (double) Dev[id].height - GIZA_DEFAULT_MARGIN; cairo_matrix_init (&(Dev[id].Win.normCoords), xx, 0, 0, yy, x0, y0); _giza_set_trans (GIZA_TRANS_NORM); break; } } /** * Expands clipping so that the whole surface can be drawn to. */ void _giza_expand_clipping (void) { if (!_giza_check_device_ready ("_giza_expand_clipping")) return; switch (Dev[id].type) { #ifdef _GIZA_HAS_XW case GIZA_DEVICE_XW: _giza_expand_clipping_xw (); break; #endif default: _giza_set_trans (GIZA_TRANS_IDEN); cairo_reset_clip (Dev[id].context); cairo_rectangle (Dev[id].context, 0, 0, Dev[id].width, Dev[id].height); cairo_clip (Dev[id].context); break; } } /** * Allocates the array for Dev[id].prefix and sets it to prefix */ void _giza_set_prefix (const char *prefix) { if (strlen(prefix) > sizeof(Dev[id].prefix)) { _giza_error("giza_set_prefix","device name exceeds maximum string length"); } strncpy (Dev[id].prefix, prefix, sizeof(Dev[id].prefix)); _giza_trim(Dev[id].prefix); } /* * Creates the surfaces for drawing the band */ int _giza_init_band (int mode) { if (mode == 0) return 0; int success = 1; switch (Dev[id].type) { #ifdef _GIZA_HAS_XW case GIZA_DEVICE_XW: success = _giza_init_band_xw (); break; #endif default: _giza_error ("_giza_init_band", "band not implemented for this device"); break; } _giza_set_line_style (Band.ls, Band.box); double lwDevice = Band.lw * Dev[id].deviceUnitsPermm * 0.25; cairo_set_line_width (Band.box, lwDevice); return success; } /** * Internal utility to convert a string to lowercase */ void _giza_lowercase(const char *string, char *lowerstring) { int i = 0; while ( string[i] ) { lowerstring[i] = (char) tolower(string[i]); i++; } lowerstring[i] = '\0'; return; } /** * Internal utility to trim strings * NB: lots of examples on the web return char* * but this is pointless as they all modify the * input string */ void _giza_trim(char *str) { int len = strlen(str); int i; for (i=0; i=0 && isspace(str[i]); str[i]=0, i--); return; } /** * Internal utility to construct device filenames * given the prefix, the device extension and page number */ void _giza_get_filename_for_device (char *filename, char *prefix, int pgNum, char *extension, int lastpage) { /* this stuff is instead of using strcasestr * (giza should not use non-standard extensions) */ char lprefix[strlen(prefix) + 1]; char lextens[strlen(extension) + 1]; _giza_lowercase(prefix,lprefix); _giza_lowercase(extension,lextens); char *prefixtrim = prefix; char *ext = extension; _giza_trim(prefixtrim); _giza_trim(ext); if (!strstr(lprefix,lextens)) { /* Add the device extension if prefix string does not already contain it */ if (pgNum == 0 && lastpage != 0) { sprintf (filename, "%s%s", prefixtrim, ext); } else { sprintf (filename, "%s_%04d%s", prefixtrim, pgNum, ext); } } else { /* Do not add the device extension if the prefix already contains it */ if (pgNum == 0 && lastpage != 0) { sprintf (filename, "%s", prefixtrim); } else { /* * Here we need a number, but it should come BEFORE the device extension * so find the first occurrence of . in the filename, and insert number * before this position. */ char *firstpart = strsep (&prefixtrim,"."); sprintf (filename, "%s_%04d%s", firstpart, pgNum, ext); } } } giza-1.5.0/src/giza-environment.c000066400000000000000000000070231477367113400167150ustar00rootroot00000000000000/* giza - a scientific plotting library built on cairo * * Copyright (c) 2010 James Wetter and Daniel Price * Copyright (c) 2010-2012 Daniel Price * * This library is free software; and you are welcome to redistribute * it under the terms of the GNU General Public License * (GPL, see LICENSE file for details) and the provision that * this notice remains intact. If you modify this file, please * note section 5a) of the GPLv3 states that: * * a) The work must carry prominent notices stating that you modified * it, and giving a relevant date. * * This software is distributed "AS IS", with ABSOLUTELY NO WARRANTY. * See the GPL for specific language governing rights and limitations. * * The Original code is the giza plotting library. * * Contributor(s): * James Wetter * Daniel Price (main contact) */ #include "giza-private.h" #include "giza-io-private.h" #include #include /** * Settings: giza_set_environment * * Synopsis: Sets the plotting environment. * * Input: * -xmin :- The min x value in world coords * -xmax :- The max x value in world coords * -ymin :- The min y value in world coords * -ymax :- The max y value in world coords * -just :- Give the x and y axis equal scales * -axis :- Options for drawing axis, ticks etc. * * Axis: * --4 :- draw box and major tick marks only * --3 :- draw box and tick marks (major and minor) only * --2 :- no axis, no box, no labels * --1 :- draw the box only * -0 :- draw a box and label it with world coords * -1 :- same as 0 but also draw the axis * -2 :- same as 1 but also draw grid lines at major intervals * -10 :- draw box and label X-axis logarithmically * -20 :- draw box and label Y-axis logarithmically * -30 :- draw box and label X- and Y-axis logarithmically * */ void giza_set_environment (double xmin, double xmax, double ymin, double ymax, int just, int axis) { if(!_giza_check_device_ready ("giza_set_environment")) return; giza_change_page (); giza_set_viewport_default (); char opts[8], yopts[8]; switch(axis) { case -4: strcpy (opts, "BCT"); strcpy (yopts, "BCT"); break; case -3: strcpy (opts, "BCST"); strcpy (yopts, "BCST"); break; case -2: strcpy (opts, ""); strcpy (yopts,""); break; case -1: strcpy (opts, "BC"); strcpy (yopts,"BC"); break; case 1: strcpy (opts, "ABCTSN"); strcpy (yopts,"ABCTSN"); break; case 2: strcpy (opts, "ABCTSNG"); strcpy (yopts,"ABCTSNG"); break; case 10: strcpy (opts, "BCTSNL"); strcpy (yopts,"BCTSN"); break; case 20: strcpy (opts, "BCTSN"); strcpy (yopts,"BCTSNL"); break; case 30: strcpy (opts, "BCTSNL"); strcpy (yopts,"BCTSNL"); break; default: _giza_warning ("giza_set_environment", "Invalid axis option, setting to 0"); case 0: strcpy (opts, "BCTSN"); strcpy (yopts,"BCTSN"); break; } if (just) giza_set_window_equal_scale (xmin, xmax, ymin, ymax); else giza_set_window (xmin, xmax, ymin, ymax); giza_box (opts, 0., 0, yopts, 0., 0); } /** * Settings: giza_set_environment_float * * Synopsis: Same functionality as giza_set_environment but takes floats */ void giza_set_environment_float (float xmin, float xmax, float ymin, float ymax, int just, int axis) { giza_set_environment ((double) xmin, (double) xmax, (double) ymin, (double) ymax, just, axis); } giza-1.5.0/src/giza-error-bars.c000066400000000000000000000361761477367113400164420ustar00rootroot00000000000000/* giza - a scientific plotting library built on cairo * * Copyright (c) 2010 James Wetter and Daniel Price * Copyright (c) 2010-2012 Daniel Price * * This library is free software; and you are welcome to redistribute * it under the terms of the GNU General Public License * (GPL, see LICENSE file for details) and the provision that * this notice remains intact. If you modify this file, please * note section 5a) of the GPLv3 states that: * * a) The work must carry prominent notices stating that you modified * it, and giving a relevant date. * * This software is distributed "AS IS", with ABSOLUTELY NO WARRANTY. * See the GPL for specific language governing rights and limitations. * * The Original code is the giza plotting library. * * Contributor(s): * James Wetter * Daniel Price (main contact) */ #include "giza-private.h" #include "giza-stroke-private.h" #include "giza-io-private.h" #include "giza-transforms-private.h" #include static void _giza_error_bar_vert (double x, double y, double error, double term); static void _giza_error_bar_hori (double x, double y, double error, double term); /** * Drawing: giza_error_bars * * Synopsis: Draws error bars. * * Input: * -dir :- the direction of the error bar, see below * -n :- the number of points * -xpts :- the x world coords of the points * -ypts :- the y world coords of the points * -error:- the length of the bar to be drawn in world coords * -term :- the length of the terminals as a multiple of the default length * * Directions: * -1 :- +x * -2 :- +y * -3 :- -x * -4 :- -y * -5 :- +x and -x * -6 :- +y and -y * -7 :- -y but instead of drawing bars use a semi-transparent shaded region * -8 :- +y using a semi-transparent shaded region * -9 :- +y and -y using a semi-transparent shaded region */ void giza_error_bars (int dir, int n, const double *xpts, const double *ypts, const double *error, double term) { if (!_giza_check_device_ready ("giza_error_bars")) return; if (n < 1) return; int oldTrans = _giza_get_trans (); _giza_set_trans (GIZA_TRANS_WORLD); int sign, vert; switch (dir) { case 1: sign = 1; vert = 1; break; case 2: sign = 1; vert = 0; break; case 3: sign = -1; vert = 1; break; case 4: sign = -1; vert = 0; break; case 5: giza_error_bars (1, n, xpts, ypts, error, term); giza_error_bars (3, n, xpts, ypts, error, term); return; case 6: giza_error_bars (2, n, xpts, ypts, error, term); giza_error_bars (4, n, xpts, ypts, error, term); return; case 7: case 8: case 9: vert = 1; sign = 0; break; default: _giza_warning ("giza_error_bars", "Invalid dir, skipping error bars"); return; } int i; if (dir >= 7) /* * Semi-transparent shading of error region */ { double a; _giza_get_alpha(&a); _giza_set_alpha(0.15); if (dir == 7 || dir == 9) { cairo_move_to (Dev[id].context, xpts[0], ypts[0] + error[0]); for (i = 0; i < n; i++) { /* draw line along top of error bars */ cairo_line_to (Dev[id].context, xpts[i], ypts[i] + error[i]); } /* * For +y shaded error region only, close path * by tracing along original data line */ if (dir == 7) { for (i = n-1; i >= 0; i--) { cairo_line_to (Dev[id].context, xpts[i], ypts[i]); } } else { /* trace from top line to bottom one */ cairo_line_to (Dev[id].context, xpts[n-1], ypts[n-1] - error[n-1]); } } if (dir == 8 || dir == 9) { if (dir==8) { cairo_move_to (Dev[id].context, xpts[n-1], ypts[n-1] - error[n-1]); } for (i = n-1; i >= 0; i--) { /* draw line along bottom of error bars */ cairo_line_to (Dev[id].context, xpts[i], ypts[i] - error[i]); } /* * For -y shaded error region only, close path * by tracing along original data line */ if (dir == 8) { for (i = 0; i < n; i++) { cairo_line_to (Dev[id].context, xpts[i], ypts[i]); } } else { /* * Otherwise, close path by tracing back to original point */ cairo_line_to(Dev[id].context, xpts[0], ypts[0] + error[0]); } } cairo_close_path(Dev[id].context); cairo_fill(Dev[id].context); _giza_stroke (); _giza_set_alpha(a); } else /* ___ * Normal error bar style _|_ or |-| */ { for (i = 0; i < n; i++) { if (vert) _giza_error_bar_vert (xpts[i], ypts[i], error[i] * sign, term); else _giza_error_bar_hori (xpts[i], ypts[i], error[i] * sign, term); } _giza_stroke (); } _giza_set_trans (oldTrans); giza_flush_device (); } /** * Drawing: giza_error_bars_float * * Synopsis: Same as giza_error_bars but takes floats. */ void giza_error_bars_float (int dir, int n, const float *xpts, const float *ypts, const float *error, float term) { if (!_giza_check_device_ready ("giza_error_bars")) return; if (n < 1) return; int oldTrans = _giza_get_trans (); _giza_set_trans (GIZA_TRANS_WORLD); int sign, vert; switch (dir) { case 1: sign = 1; vert = 1; break; case 2: sign = 1; vert = 0; break; case 3: sign = -1; vert = 1; break; case 4: sign = -1; vert = 0; break; case 5: giza_error_bars_float (1, n, xpts, ypts, error, term); giza_error_bars_float (3, n, xpts, ypts, error, term); return; case 6: giza_error_bars_float (2, n, xpts, ypts, error, term); giza_error_bars_float (4, n, xpts, ypts, error, term); return; case 7: case 8: case 9: vert = 1; sign = 0; break; default: _giza_warning ("giza_error_bars", "Invalid dir, skipping error bars"); return; } int i; if (dir >= 7) /* * Semi-transparent shading of error region */ { double a; _giza_get_alpha(&a); _giza_set_alpha(0.15); if (dir == 7 || dir == 9) { cairo_move_to (Dev[id].context, xpts[0], ypts[0] + error[0]); for (i = 0; i < n; i++) { /* draw line along top of error bars */ cairo_line_to (Dev[id].context, xpts[i], ypts[i] + error[i]); } /* * For +y shaded error region only, close path * by tracing along original data line */ if (dir == 7) { for (i = n-1; i >= 0; i--) { cairo_line_to (Dev[id].context, xpts[i], ypts[i]); } } } if (dir == 8 || dir == 9) { if (dir==8) { cairo_move_to (Dev[id].context, xpts[n-1], ypts[n-1] - error[n-1]); } for (i = n-1; i >= 0; i--) { /* draw line along bottom of error bars */ cairo_line_to (Dev[id].context, xpts[i], ypts[i] - error[i]); } /* * For -y shaded error region only, close path * by tracing along original data line */ if (dir == 8) { for (i = 0; i < n; i++) { cairo_line_to (Dev[id].context, xpts[i], ypts[i]); } } else { /* * Otherwise, close path by tracing back to original point */ cairo_line_to(Dev[id].context, xpts[0], ypts[0] + error[0]); } } cairo_close_path(Dev[id].context); cairo_fill(Dev[id].context); _giza_stroke (); _giza_set_alpha(a); } else /* ___ * Normal error bar style _|_ or |-| */ { for (i = 0; i < n; i++) { if (vert) _giza_error_bar_vert ( (double) xpts[i], (double) ypts[i], (double) error[i] * sign, (double) term); else _giza_error_bar_hori ( (double) xpts[i], (double) ypts[i], (double) error[i] * sign, (double) term); } _giza_stroke (); } _giza_set_trans (oldTrans); giza_flush_device (); } /** * Drawing: giza_error_bars_vert * * Synopsis: Draws n vertical error bars. A call to giza_points must be made to draw the actual points. * * Input: * -n :- the number of bars to draw * -xpts :- the x world coords of the points * -ypts1 :- the y world coords of the lower part of the error bar * -ypts2 :- the y world coords of the upper part of the error bar * -term :- length of the terminals, as a multiple of default length (T <= 0.0 means no terminals drawn) */ void giza_error_bars_vert (int n, const double *xpts, const double *ypts1, const double *ypts2, double term) { if (!_giza_check_device_ready ("giza_error_bars_vert")) return; if (n < 1) return; double endWidth, dummy; giza_get_character_size (GIZA_UNITS_WORLD, &endWidth, &dummy); endWidth = 0.5 * endWidth * term; int oldTrans = _giza_get_trans (); _giza_set_trans (GIZA_TRANS_WORLD); int i; for (i = 0; i < n; i++) { /* draw the bar */ cairo_move_to (Dev[id].context, xpts[i], ypts1[i]); cairo_line_to (Dev[id].context, xpts[i], ypts2[i]); /* draw the ends */ if (term > 0.) { cairo_move_to (Dev[id].context, xpts[i] - endWidth, ypts1[i]); cairo_line_to (Dev[id].context, xpts[i] + endWidth, ypts1[i]); cairo_move_to (Dev[id].context, xpts[i] - endWidth, ypts2[i]); cairo_line_to (Dev[id].context, xpts[i] + endWidth, ypts2[i]); } } _giza_stroke (); _giza_set_trans (oldTrans); giza_flush_device (); } /** * Drawing: giza_error_bars_vert_float * * Synopsis: Same functionality as giza_error_bars_vert but takes floats. */ void giza_error_bars_vert_float (int n, const float *xpts, const float *ypts1, const float *ypts2, float term) { if (!_giza_check_device_ready ("giza_error_bars_vert_float")) return; if (n < 1) return; double endWidth, dummy, currentX, currentY1, currentY2; giza_get_character_size (GIZA_UNITS_WORLD, &endWidth, &dummy); endWidth = 0.5 * endWidth * (double)term; int oldTrans = _giza_get_trans (); _giza_set_trans (GIZA_TRANS_WORLD); int i; for (i = 0; i < n; i++) { currentX = (double) xpts[i]; currentY1 = (double) ypts1[i]; currentY2 = (double) ypts2[i]; /* draw the bar */ cairo_move_to (Dev[id].context, currentX, currentY1); cairo_line_to (Dev[id].context, currentX, currentY2); /* draw the ends */ cairo_move_to (Dev[id].context, currentX - endWidth, currentY1); cairo_line_to (Dev[id].context, currentX + endWidth, currentY1); cairo_move_to (Dev[id].context, currentX - endWidth, currentY2); cairo_line_to (Dev[id].context, currentX + endWidth, currentY2); } _giza_stroke (); _giza_set_trans (oldTrans); giza_flush_device (); } /** * Draws n horizontal error bars. A call to giza_points must be made to draw the actual points. * * Input: * -n :- the number of bars to draw * -xpts1 :- the x world coords of the lower end of the error bars * -xpts2 :- the x world coords of the upper end of the error bars * -ypts :- the y world coords of the points * -term :- length of the terminals, as a multiple of default length (T <= 0.0 means no terminals drawn) */ void giza_error_bars_hori (int n, const double *xpts1, const double *xpts2, const double *ypts, double term) { if (!_giza_check_device_ready ("giza_error_bars_hori")) return; if (n < 1) return; double endWidth, dummy; giza_get_character_size (GIZA_UNITS_WORLD, &dummy, &endWidth); endWidth = 0.5 * endWidth * term; int oldTrans = _giza_get_trans (); _giza_set_trans (GIZA_TRANS_WORLD); int i; for (i = 0; i < n; i++) { /* draw the bar */ cairo_move_to (Dev[id].context, xpts1[i], ypts[i]); cairo_line_to (Dev[id].context, xpts2[i], ypts[i]); /* draw the ends */ if (term > 0.) { cairo_move_to (Dev[id].context, xpts1[i], ypts[i] - endWidth); cairo_line_to (Dev[id].context, xpts1[i], ypts[i] + endWidth); cairo_move_to (Dev[id].context, xpts2[i], ypts[i] - endWidth); cairo_line_to (Dev[id].context, xpts2[i], ypts[i] + endWidth); } } _giza_stroke (); _giza_set_trans (oldTrans); giza_flush_device (); } /** * Same functionality as giza_error_bars_hori but takes floats. */ void giza_error_bars_hori_float (int n, const float *xpts1, const float *xpts2, const float *ypts, float term) { if (!_giza_check_device_ready ("giza_error_bars_hori_float")) return; if (n < 1) return; double endWidth, dummy, currentX1, currentX2, currentY; giza_get_character_size (GIZA_UNITS_WORLD, &dummy, &endWidth); endWidth = 0.5 * endWidth * term; int oldTrans = _giza_get_trans (); _giza_set_trans (GIZA_TRANS_WORLD); int i; for (i = 0; i < n; i++) { currentX1 = (double) xpts1[i]; currentX2 = (double) xpts2[i]; currentY = (double) ypts[i]; /* draw the bar */ cairo_move_to (Dev[id].context, currentX1, currentY); cairo_line_to (Dev[id].context, currentX2, currentY); /* draw the ends */ if (term > 0.) { cairo_move_to (Dev[id].context, currentX1, currentY - endWidth); cairo_line_to (Dev[id].context, currentX1, currentY + endWidth); cairo_move_to (Dev[id].context, currentX2, currentY - endWidth); cairo_line_to (Dev[id].context, currentX2, currentY + endWidth); } } _giza_stroke (); _giza_set_trans (oldTrans); giza_flush_device (); } /** * Plots a single vertical error bar at x, y of length error (measured in +ve x direction), * with terminals of length term */ static void _giza_error_bar_vert (double x, double y, double error, double term) { double endWidth, dummy; giza_get_character_size (GIZA_UNITS_WORLD, &dummy, &endWidth); endWidth = 0.5 * endWidth * term; /* draw the bar */ cairo_move_to (Dev[id].context, x, y); cairo_line_to (Dev[id].context, x + error, y); /* draw the ends */ if (term > 0.) { cairo_move_to (Dev[id].context, x + error, y - endWidth * 0.5); cairo_line_to (Dev[id].context, x + error, y + endWidth * 0.5); } } /** * Plots a single horizontal error bar at x, y of length error (measured in +ve y direction), * with terminals of length term */ static void _giza_error_bar_hori (double x, double y, double error, double term) { double endWidth, dummy; giza_get_character_size (GIZA_UNITS_WORLD, &endWidth, &dummy); endWidth = 0.5 * endWidth * term; /* draw the bar */ cairo_move_to (Dev[id].context, x, y); cairo_line_to (Dev[id].context, x, y + error); /* draw the end */ if (term > 0.) { cairo_move_to (Dev[id].context, x - endWidth * 0.5, y + error); cairo_line_to (Dev[id].context, x + endWidth * 0.5, y + error); } } giza-1.5.0/src/giza-fill-private.h000066400000000000000000000020051477367113400167470ustar00rootroot00000000000000/* giza - a scientific plotting library built on cairo * * Copyright (c) 2010 James Wetter and Daniel Price * Copyright (c) 2010-2012 Daniel Price * * This library is free software; and you are welcome to redistribute * it under the terms of the GNU General Public License * (GPL, see LICENSE file for details) and the provision that * this notice remains intact. If you modify this file, please * note section 5a) of the GPLv3 states that: * * a) The work must carry prominent notices stating that you modified * it, and giving a relevant date. * * This software is distributed "AS IS", with ABSOLUTELY NO WARRANTY. * See the GPL for specific language governing rights and limitations. * * The Original code is the giza plotting library. * * Contributor(s): * James Wetter * Daniel Price (main contact) */ void _giza_init_fill (void); void _giza_fill (void); void _giza_rotate_pos (double *x, double *y, double angle, double x0, double y0); giza-1.5.0/src/giza-fill.c000066400000000000000000000176311477367113400153050ustar00rootroot00000000000000/* giza - a scientific plotting library built on cairo * * Copyright (c) 2010 James Wetter and Daniel Price * Copyright (c) 2010-2012 Daniel Price * * This library is free software; and you are welcome to redistribute * it under the terms of the GNU General Public License * (GPL, see LICENSE file for details) and the provision that * this notice remains intact. If you modify this file, please * note section 5a) of the GPLv3 states that: * * a) The work must carry prominent notices stating that you modified * it, and giving a relevant date. * * This software is distributed "AS IS", with ABSOLUTELY NO WARRANTY. * See the GPL for specific language governing rights and limitations. * * The Original code is the giza plotting library. * * Contributor(s): * James Wetter * Daniel Price (main contact) */ #include "giza-private.h" #include "giza-io-private.h" #include "giza-stroke-private.h" #include "giza-transforms-private.h" #include "giza-fill-private.h" #include #include /** * Settings: giza_set_fill * * Synopsis: Sets the current fill style. * * Input: * -fs :- the new fill style * * Fill Styles: * -1 or GIZA_FILL_SOLID :- solid * -2 or GIZA_FILL_HOLLOW :- hollow * -3 or GIZA_FILL_HATCH :- hatch * -4 or GIZA_FILL_CROSSHATCH :- crosshatch */ void giza_set_fill (int fs) { if (!_giza_check_device_ready ("giza_set_fill")) return; if (fs < 1 || fs > GIZA_MAX_FILL_STYLES) { _giza_warning ("giza_set_fill", "Invalid fill style, fill style not set"); return; } Dev[id].fs = fs; } /** * Settings: giza_get_fill * * Synopsis: Query the current fill style. * * Input: * -fs :- gets set to the current fill style. */ void giza_get_fill (int *fs) { if (!_giza_check_device_ready ("giza_get_fill")) return; *fs = Dev[id].fs; } void _giza_init_fill (void) { Dev[id].fs = GIZA_FILL_SOLID; Dev[id].hatch_angle = 45.; Dev[id].hatch_spacing = 1.; Dev[id].hatch_phase = 0.; } /** * Fills the currently drawn path. */ void _giza_fill (void) { if(!_giza_check_device_ready ("_giza_fill")) return; int oldTrans = _giza_get_trans (); _giza_set_trans (GIZA_TRANS_IDEN); double ri,gi,bi,alphai; int ci; int hatch_size; double lw; double xoffset,dx,dy,dr; double pi = 3.1415926536; double xmin,xmax,ymin,ymax,x0,y0,x,y,angle; int i, nlines; switch (Dev[id].fs) { case GIZA_FILL_CROSSHATCH: case GIZA_FILL_HATCH: /* For hatched pattern we must initialise * the pattern every time fill is called, * because the hatching needs to be done * with the current colour index */ hatch_size = (int) (8.*Dev[id].hatch_spacing); if (hatch_size <= 0) { _giza_error("giza_fill","hatch spacing <= 0, ignoring fill attributes"); return; } lw = 1.5; angle = -pi*Dev[id].hatch_angle/180.; cairo_save(Dev[id].context); /* clip plotting to within the fill area * but do not (yet) destroy the fill area */ cairo_clip_preserve(Dev[id].context); #if CAIRO_VERSION >= CAIRO_VERSION_ENCODE(1, 4, 0) cairo_clip_extents(Dev[id].context, &xmin,&ymin,&xmax,&ymax); #else xmin = 0.; xmax = Dev[id].width; ymin = 0.; ymax = Dev[id].height; #endif dx = xmax - xmin; dy = ymax - ymin; /* set geometry of box */ x0 = 0.5*(xmin + xmax); y0 = 0.5*(ymin + ymax); dr = sqrt(dx*dx + dy*dy); xmin = x0 - 0.5*dr; xmax = x0 + 0.5*dr; ymin = y0 - 0.5*dr; ymax = y0 + 0.5*dr; cairo_identity_matrix(Dev[id].context); /* fill with a transparent background */ giza_get_colour_representation_alpha(GIZA_BACKGROUND_COLOUR,&ri,&gi,&bi,&alphai); cairo_set_source_rgba(Dev[id].context, ri, gi, bi, 0.); cairo_fill(Dev[id].context); /* draw lines making the pattern with current colour index */ giza_get_colour_index(&ci); giza_get_colour_representation_alpha(ci,&ri,&gi,&bi,&alphai); cairo_set_source_rgba(Dev[id].context, ri, gi, bi, alphai); cairo_set_line_width(Dev[id].context, lw); xoffset = hatch_size*Dev[id].hatch_phase; nlines = (int) (xmax - xmin)/hatch_size + 1; if (Dev[id].fs == GIZA_FILL_CROSSHATCH) { /* draw vertical or / lines */ for (i = 0; i <= nlines; i++) { x = xmin + (i-1)*hatch_size + xoffset; y = ymin; _giza_rotate_pos(&x,&y,angle,x0,y0); cairo_move_to(Dev[id].context, x, y); x = xmin + (i-1)*hatch_size + xoffset; y = ymax; _giza_rotate_pos(&x,&y,angle,x0,y0); cairo_line_to(Dev[id].context, x, y); } } /* draw horizontal or \ lines */ for (i = 0; i <= nlines; i++) { x = xmin + xoffset; y = ymin + (i-1)*hatch_size; _giza_rotate_pos(&x,&y,angle,x0,y0); cairo_move_to(Dev[id].context, x, y); x = xmax + xoffset; y = ymin + (i-1)*hatch_size; _giza_rotate_pos(&x,&y,angle,x0,y0); cairo_line_to(Dev[id].context, x, y); } cairo_stroke(Dev[id].context); cairo_restore(Dev[id].context); break; case GIZA_FILL_SOLID: cairo_fill (Dev[id].context); break; case GIZA_FILL_HOLLOW: _giza_stroke (); break; default: _giza_warning ("_giza_fill", "Invalid fill style"); _giza_stroke (); break; } _giza_set_trans (oldTrans); } void _giza_rotate_pos (double *x, double *y, double angle, double x0, double y0) { double xnew,ynew; double cosangle = cos(angle); double sinangle = sin(angle); xnew = (*x - x0)*cosangle - (*y - y0)*sinangle; ynew = (*x - x0)*sinangle + (*y - y0)*cosangle; *x = xnew + x0; *y = ynew + y0; } /** * Settings: giza_set_hatching_style * * Synopsis: Sets the hatching style when using GIZA_FILL_HATCH * * Input: * -angle :- the angle of the hatching pattern with respect to the horizontal * -spacing :- the line spacing, in units of the default (1.0) * -phase :- a number between 0.0 and 1.0 specifying the offset * along the horizontal axis to start the hatching lines * * See Also: giza_fill, giza_get_hatching_style */ void giza_set_hatching_style (double angle, double spacing, double phase) { if(!_giza_check_device_ready ("giza_set_hatching_style")) return; Dev[id].hatch_angle = angle; Dev[id].hatch_spacing = spacing; Dev[id].hatch_phase = phase; } /** * Settings: giza_set_hatching_style_float * * Synopsis: Same as giza_set_hatching_style, but takes floats * */ void giza_set_hatching_style_float (float angle, float spacing, float phase) { giza_set_hatching_style((double) angle, (double) spacing, (double) phase); } /** * Settings: giza_get_hatching_style * * Synopsis: Queries the current hatching style wgen using GIZA_FILL_HATCH * * Output: * -angle :- the angle of the hatching pattern with respect to the horizontal * -spacing :- the line spacing, in units of the default (1.0) * -phase :- a number between 0.0 and 1.0 specifying the offset * along the horizontal axis to start the hatching lines * * See Also: giza_fill, giza_set_hatching_style */ void giza_get_hatching_style (double *angle, double *spacing, double *phase) { if(!_giza_check_device_ready ("giza_get_hatching_style")) return; *angle = Dev[id].hatch_angle; *spacing = Dev[id].hatch_spacing; *phase = Dev[id].hatch_phase; } /** * Settings: giza_get_hatching_style_float * * Synopsis: Same as giza_get_hatching_style, but takes floats * */ void giza_get_hatching_style_float (float *angle, float *spacing, float *phase) { double dangle,dspacing,dphase; giza_get_hatching_style(&dangle, &dspacing, &dphase); *angle = (float) dangle; *spacing = (float) dspacing; *phase = (float) dphase; } giza-1.5.0/src/giza-format-number.c000066400000000000000000000130171477367113400171270ustar00rootroot00000000000000/* giza - a scientific plotting library built on cairo * * Copyright (c) 2010 James Wetter and Daniel Price * Copyright (c) 2010-2012 Daniel Price * * This library is free software; and you are welcome to redistribute * it under the terms of the GNU General Public License * (GPL, see LICENSE file for details) and the provision that * this notice remains intact. If you modify this file, please * note section 5a) of the GPLv3 states that: * * a) The work must carry prominent notices stating that you modified * it, and giving a relevant date. * * This software is distributed "AS IS", with ABSOLUTELY NO WARRANTY. * See the GPL for specific language governing rights and limitations. * * The Original code is the giza plotting library. * * Contributor(s): * James Wetter * Daniel Price (main contact) */ #include "giza-io-private.h" #include "giza-private.h" #include #include #include #include #include /*static void _giza_tidy_expo (char *from, int n, char *to); */ /** * Utility: giza_format_number * * Synopsis: Formats a floating point number to a string. str should be of length 16 + number of digits. * * input: * -mantissa :- The mantissa of the number * -power :- The power of the number * -form :- Determine which form to use, see below * -string :- Gets set to the string * -maxchar :- The amount of available characters in string * * Forms: * -GIZA_NUMBER_FORMAT_AUTO :- giza decides * -GIZA_NUMBER_FORMAT_DEC :- don't use an exponent, unless there are more than ten signifigant figures * -GIZA_NUMBER_FORMAT_EXP :- Use an exponent */ void giza_format_number (int mantissa, int power, int form, char *string, int maxchar) { int minus, numDigits, digitsBeforePoint; char tmp[100]; const int nChar = (maxchar - 1); if( nChar < 1 ) { _giza_error("giza_format_number", "caller allocated a buffer of only %d characters", maxchar); return; } /* return "0" */ if (mantissa == 0) { strcpy (string, "0"); return; } /* Check if mantissa is negative, and make it positive */ minus = mantissa < 0; mantissa = abs (mantissa); /* Convert the mantissa to a string, and count the number of digits */ snprintf (tmp, sizeof(tmp), "%i", mantissa); numDigits = strlen (tmp); /* Remove zeros on the right increasing power as needed */ while (numDigits > 0 && tmp[numDigits - 1] == '0') { --numDigits; tmp[numDigits] = '\0'; ++power; } /* Work out how many digits before the decimal */ digitsBeforePoint = numDigits + MIN (power, 0); /* Integers of four or less digits (or forced integers) */ if ((power >= 0) && ((form == GIZA_NUMBER_FORMAT_AUTO && (power + numDigits) <= 4) || (form == GIZA_NUMBER_FORMAT_DEC && power + numDigits <= 10))) { for (; power > 0 && numDigits < (int) (sizeof(tmp)-1); --power) { tmp[numDigits] = '0'; ++numDigits; } } /* Decimal without a power */ else if (form != GIZA_NUMBER_FORMAT_EXP && digitsBeforePoint >= 1 && digitsBeforePoint <= 4 && digitsBeforePoint < numDigits) { int i; for (i = numDigits; i >= digitsBeforePoint ; --i) { tmp[i+1] = tmp[i]; } tmp[i+1] = '.'; ++numDigits; power = 0; } /* Otherwise the point goes after first digit and adjust power */ else { power = power + numDigits - 1; if (form != GIZA_NUMBER_FORMAT_EXP && power == -1) { int i; for (i = numDigits; i >= 0; --i) { tmp[i+1] = tmp[i]; } tmp[0] = '0'; power = 0; ++numDigits; } else if (form != GIZA_NUMBER_FORMAT_EXP && power == -2) { int i; for (i = numDigits; i >= 0; --i) { tmp[i+2] = tmp[i]; } tmp[0] = '0'; tmp[1] = '0'; power = 0; numDigits += 2; } if (numDigits > 1) { int i; for (i = numDigits; i > 0; --i) { tmp[i+1] = tmp[i]; } tmp[1] = '.'; ++numDigits; } } /* Put in a null character */ tmp[numDigits] = '\0'; /* Add in the exponent */ if (power != 0) { snprintf (&tmp[numDigits], sizeof(tmp)-numDigits, "\\times10^{%i}", power); } /* Add leading minus sign if necessary and copy the result to output. * According to PGNUMB() description, if the target string is not * long enough the hold the result the string should be set to '*' * and NC=1. So we do that too. * Note: some implementations of snprintf(3) return -1 if truncated, * apparently.. */ const int nprint = snprintf(string, maxchar, (minus ? "%2$c%1$s" : "%1$s"), tmp, '-'); if( nprint==-1 || nprint>=maxchar ) strncpy(string, "*", maxchar); } /** * Formats a floating point number to a string, in a fasion for log ticks */ /* void giza_format_number_log (double power, char *str) { if (fabs (power) < GIZA_ZERO_DOUBLE) { strcpy (str, "1"); return; } if (fabs (power1.) ) { char tmp[100]; sprintf (tmp, "%s%1f%s", "10^{", power, "}"); strcpy (str, "tmp"); return; } } */ void giza_set_number_format(int fmt) { if (!_giza_check_device_ready ("giza_set_number_format")) return; if (fmt > GIZA_NUMBER_FORMAT_EXP) { _giza_error("giza_set_number_format", "Bad format number"); return; } Dev[id].number_format = fmt; } giza-1.5.0/src/giza-fortran.F90000066400000000000000000002405521477367113400161460ustar00rootroot00000000000000!----------------------------------------------------------------------- ! giza - a scientific plotting library built on cairo ! ! Copyright (c) 2010 James Wetter and Daniel Price ! Copyright (c) 2010-2022 Daniel Price ! ! This library is free software; and you are welcome to redistribute ! it under the terms of the GNU General Public License ! (GPL, see LICENSE file for details) and the provision that ! this notice remains intact. If you modify this file, please ! note section 5a) of the GPLv3 states that: ! ! a) The work must carry prominent notices stating that you modified ! it, and giving a relevant date. ! ! This software is distributed "AS IS", with ABSOLUTELY NO WARRANTY. ! See the GPL for specific language governing rights and limitations. ! ! The Original code is the giza plotting library. ! ! Contributor(s): ! James Wetter ! Daniel Price (main contact) ! !----------------------------------------------------------------------- !--------------------------------------------------------- ! This file contains the Fortran interface to giza ! (using the Fortran 2003 iso_c_binding module) !--------------------------------------------------------- module giza use, intrinsic :: iso_c_binding, only:c_double,c_float,c_char,c_int implicit none public :: & giza_plot, & giza_arrow, & giza_set_arrow_style, & giza_get_arrow_style, & giza_annotate, & giza_axis, & giza_band, & giza_box, & giza_box_time, & giza_begin_buffer, & giza_end_buffer, & giza_flush_buffer, & giza_circle, & giza_set_character_height, & giza_get_character_height, & giza_get_character_size, & giza_set_clipping, & giza_get_clipping, & giza_colour_bar, & giza_set_colour_index, & giza_get_colour_index, & giza_set_colour_index_range, & giza_get_colour_index_range, & giza_set_colour_palette, & giza_set_colour_representation, & giza_get_colour_representation, & giza_set_colour_representation_hls, & giza_set_colour_table, & giza_contour, & giza_get_current_point, & giza_rgb_from_table, & giza_print_device_list, & giza_open, & giza_open_device, & giza_open_device_size, & giza_get_device_id, & giza_select_device, & giza_flush_device, & giza_change_page, & giza_close_device, & giza_close, & giza_get_key_press, & giza_set_motion_callback, & giza_end_motion_callback, & giza_device_has_cursor, & giza_draw, & giza_draw_background, & giza_set_environment, & giza_error_bars, & giza_error_bars_x, & giza_error_bars_y, & giza_set_fill, & giza_get_fill, & giza_function_x, & giza_function_y, & giza_function_t, & giza_get_surface_size, & giza_set_hatching_style, & giza_get_hatching_style, & giza_histogram, & giza_histogram_binned, & giza_label, & giza_line, & giza_set_line_width, & giza_get_line_width, & giza_set_line_cap, & giza_get_line_cap, & giza_set_line_style, & giza_get_line_style, & giza_mark_line, & giza_mark_line_ordered, & giza_mark_points, & giza_mark_points_ordered, & giza_move, & giza_set_paper_size, & giza_get_paper_size, & giza_points, & giza_single_point, & giza_polygon, & giza_print_id, & giza_start_prompting, & giza_stop_prompting, & giza_set_text_background, & giza_get_text_background, & giza_text, & giza_ptext, & giza_qtext, & giza_qtextlen, & giza_rectangle, & giza_render, & giza_render_gray, & giza_render_transparent, & giza_draw_pixels, & giza_restore, & giza_round, & giza_save, & giza_set_font, & giza_set_font_bold, & giza_set_font_italic, & giza_set_font_bold_italic, & giza_subpanel, & giza_set_panel, & giza_get_panel, & giza_tick, & giza_vector, & giza_set_viewport_default, & giza_set_viewport, & giza_get_viewport, & giza_set_viewport_inches, & giza_version, & giza_start_warnings, & giza_stop_warnings, & giza_set_window, & giza_set_window_equal_scale, & giza_get_window, & giza_format_number, & giza_set_image_transfer_function, & giza_get_image_transfer_function, & giza_query_device #include "giza-shared.h" character(len=1),parameter, public :: giza_left_click_f = GIZA_LEFT_CLICK character(len=1),parameter, public :: giza_right_click_f = GIZA_RIGHT_CLICK character(len=1),parameter, public :: giza_middle_click_f = GIZA_MIDDLE_CLICK character(len=1),parameter, public :: giza_shift_click_f = achar(GIZA_SHIFT_CLICK) character(len=1),parameter, public :: giza_scroll_up_f = achar(GIZA_SCROLL_UP) character(len=1),parameter, public :: giza_scroll_down_f = achar(GIZA_SCROLL_DOWN) character(len=1),parameter, public :: giza_scroll_left_f = achar(GIZA_SCROLL_LEFT) character(len=1),parameter, public :: giza_scroll_right_f = achar(GIZA_SCROLL_RIGHT) character(len=*),parameter, public :: giza_version_string = GIZA_VERSION_STRING integer, parameter, public :: giza_version_major = GIZA_VERSION_MAJOR integer, parameter, public :: giza_version_minor = GIZA_VERSION_MINOR integer, parameter, public :: giza_version_micro = GIZA_VERSION_MICRO ! !--the following can be generated automatically using the get-fortran-params.pl script ! integer, parameter, public :: giza_ls_solid = GIZA_LS_SOLID integer, parameter, public :: giza_ls_short_dash = GIZA_LS_SHORT_DASH integer, parameter, public :: giza_ls_long_dash = GIZA_LS_LONG_DASH integer, parameter, public :: giza_ls_dot = GIZA_LS_DOT integer, parameter, public :: giza_ls_dash_dot = GIZA_LS_DASH_DOT integer, parameter, public :: giza_ls_dash_dot_dot_dot = GIZA_LS_DASH_DOT_DOT_DOT integer, parameter, public :: giza_number_format_auto = GIZA_NUMBER_FORMAT_AUTO integer, parameter, public :: giza_number_format_dec = GIZA_NUMBER_FORMAT_DEC integer, parameter, public :: giza_number_format_exp = GIZA_NUMBER_FORMAT_EXP integer, parameter, public :: giza_units_normalized = GIZA_UNITS_NORMALIZED integer, parameter, public :: giza_units_inches = GIZA_UNITS_INCHES integer, parameter, public :: giza_units_mm = GIZA_UNITS_MM integer, parameter, public :: giza_units_pixels = GIZA_UNITS_PIXELS integer, parameter, public :: giza_units_world = GIZA_UNITS_WORLD integer, parameter, public :: giza_units_device = GIZA_UNITS_DEVICE integer, parameter, public :: giza_band_none = GIZA_BAND_NONE integer, parameter, public :: giza_band_line = GIZA_BAND_LINE integer, parameter, public :: giza_band_rectangle = GIZA_BAND_RECTANGLE integer, parameter, public :: giza_band_horzlines = GIZA_BAND_HORZLINES integer, parameter, public :: giza_band_vertlines = GIZA_BAND_VERTLINES integer, parameter, public :: giza_band_horzline = GIZA_BAND_HORZLINE integer, parameter, public :: giza_band_vertline = GIZA_BAND_VERTLINE integer, parameter, public :: giza_band_crosshair = GIZA_BAND_CROSSHAIR integer, parameter, public :: giza_band_circle = GIZA_BAND_CIRCLE integer, parameter, public :: giza_background_colour = GIZA_BACKGROUND_COLOUR integer, parameter, public :: giza_background_color = GIZA_BACKGROUND_COLOR integer, parameter, public :: giza_foreground_colour = GIZA_FOREGROUND_COLOUR integer, parameter, public :: giza_foreground_color = GIZA_FOREGROUND_COLOR integer, parameter, public :: giza_colour_index_min = GIZA_COLOUR_INDEX_MIN integer, parameter, public :: giza_colour_index_max = GIZA_COLOUR_INDEX_MAX integer, parameter, public :: giza_colour_palette_default = GIZA_COLOUR_PALETTE_DEFAULT integer, parameter, public :: giza_color_palette_default = GIZA_COLOR_PALETTE_DEFAULT integer, parameter, public :: giza_colour_palette_pgplot = GIZA_COLOUR_PALETTE_PGPLOT integer, parameter, public :: giza_color_palette_pgplot = GIZA_COLOR_PALETTE_PGPLOT integer, parameter, public :: giza_fill_solid = GIZA_FILL_SOLID integer, parameter, public :: giza_fill_hollow = GIZA_FILL_HOLLOW integer, parameter, public :: giza_fill_hatch = GIZA_FILL_HATCH integer, parameter, public :: giza_fill_crosshatch = GIZA_FILL_CROSSHATCH integer, parameter, public :: giza_max_fill_styles = GIZA_MAX_FILL_STYLES integer, parameter, public :: giza_extend_none = GIZA_EXTEND_NONE integer, parameter, public :: giza_extend_repeat = GIZA_EXTEND_REPEAT integer, parameter, public :: giza_extend_reflect = GIZA_EXTEND_REFLECT integer, parameter, public :: giza_extend_pad = GIZA_EXTEND_PAD integer, parameter, public :: giza_filter_default = GIZA_FILTER_DEFAULT integer, parameter, public :: giza_filter_fast = GIZA_FILTER_FAST integer, parameter, public :: giza_filter_good = GIZA_FILTER_GOOD integer, parameter, public :: giza_filter_best = GIZA_FILTER_BEST integer, parameter, public :: giza_filter_nearest = GIZA_FILTER_NEAREST integer, parameter, public :: giza_filter_bilinear = GIZA_FILTER_BILINEAR integer, parameter, public :: giza_filter_gaussian = GIZA_FILTER_GAUSSIAN private !--------------------------------------------------------- ! The following are pure interfaces to C ! We make generic interfaces so that the Fortran can ! be called with either single or double precision !--------------------------------------------------------- interface giza_arrow subroutine giza_arrow(x1,y1,x2,y2) bind(C) import real(kind=c_double),intent(in),value :: x1,y1,x2,y2 end subroutine giza_arrow subroutine giza_arrow_float(x1,y1,x2,y2) bind(C) import real(kind=c_float),intent(in),value :: x1,y1,x2,y2 end subroutine giza_arrow_float end interface interface giza_set_arrow_style subroutine giza_set_arrow_style(fillStyle,angle,cutback) bind(C) import integer(kind=c_int),intent(in),value :: fillStyle real(kind=c_double),intent(in),value :: angle,cutback end subroutine giza_set_arrow_style subroutine giza_set_arrow_style_float(fillStyle,angle,cutback) bind(C) import integer(kind=c_int),intent(in),value :: fillStyle real(kind=c_float) ,intent(in),value :: angle,cutback end subroutine giza_set_arrow_style_float end interface interface giza_get_arrow_style subroutine giza_get_arrow_style(fillStyle,angle,cutback) bind(C) import integer(kind=c_int),intent(out) :: fillStyle real(kind=c_double),intent(out) :: angle,cutback end subroutine giza_get_arrow_style subroutine giza_get_arrow_style_float(fillStyle,angle,cutback) bind(C) import integer(kind=c_int),intent(out) :: fillStyle real(kind=c_float) ,intent(out) :: angle,cutback end subroutine giza_get_arrow_style_float end interface interface giza_axis module procedure giza_intern_axis_f2c end interface interface giza_axis_c subroutine giza_axis_float_c(opt,x1,y1,x2,y2,v1,v2,& tick,nsub,dmajl,dmajr,fmin,disp,angle) bind(C,name="giza_axis_float") import character(kind=c_char),dimension(*), intent(in) :: opt real(kind=c_float), value, intent(in) :: x1,y1,x2,y2,v1,v2 real(kind=c_float), value, intent(in) :: tick,dmajl,dmajr,fmin,disp,angle integer(kind=c_int), value, intent(in) :: nsub end subroutine giza_axis_float_c subroutine giza_axis_c(opt,x1,y1,x2,y2,v1,v2,& tick,nsub,dmajl,dmajr,fmin,disp,angle) bind(C,name="giza_axis") import character(kind=c_char),dimension(*), intent(in) :: opt real(kind=c_double), value, intent(in) :: x1,y1,x2,y2,v1,v2 real(kind=c_double), value, intent(in) :: tick,dmajl,dmajr,fmin,disp,angle integer(kind=c_int), value, intent(in) :: nsub end subroutine giza_axis_c end interface interface giza_tick module procedure giza_intern_tick_f2c end interface interface giza_tick_c subroutine giza_tick_float_c(x1,y1,x2,y2,v,& tickl,tickr,disp,angle,label) bind(C,name="giza_tick_float") import real(kind=c_float), value, intent(in) :: x1,y1,x2,y2,v real(kind=c_float), value, intent(in) :: tickl,tickr,disp,angle character(kind=c_char),dimension(*), intent(in) :: label end subroutine giza_tick_float_c subroutine giza_tick_c(x1,y1,x2,y2,v,& tickl,tickr,disp,angle,label) bind(C,name="giza_tick") import real(kind=c_double), value, intent(in) :: x1,y1,x2,y2,v real(kind=c_double), value, intent(in) :: tickl,tickr,disp,angle character(kind=c_char),dimension(*), intent(in) :: label end subroutine giza_tick_c end interface interface giza_band function giza_band(mode,moveCurs,xanc,yanc,x,y,ch) bind(C) import integer(kind=c_int) :: giza_band integer(kind=c_int),intent(in),value :: mode,moveCurs real(kind=c_double),intent(in),value :: xanc,yanc real(kind=c_double),intent(inout) :: x,y character(kind=c_char),intent(out) :: ch end function giza_band function giza_band_float(mode,moveCurs,xanc,yanc,x,y,ch) bind(C) import integer(kind=c_int) :: giza_band_float integer(kind=c_int),intent(in),value :: mode,moveCurs real(kind=c_float),intent(in),value :: xanc,yanc real(kind=c_float),intent(inout) :: x,y character(kind=c_char),intent(out) :: ch end function giza_band_float end interface interface giza_annotate module procedure giza_intern_annotate_f2c end interface interface giza_annotate_c subroutine giza_annotate_c (side,displacement,coord,justification,text) bind(C,name="giza_annotate") import character(kind=c_char),dimension(*),intent(in) :: side,text real(kind=c_double),intent(in),value ::displacement,coord,justification end subroutine giza_annotate_c subroutine giza_annotate_float_c (side,displacement,coord,justification,text) bind(C,name="giza_annotate_float") import character(kind=c_char),dimension(*),intent(in) :: side,text real(kind=c_float),intent(in),value ::displacement,coord,justification end subroutine giza_annotate_float_c end interface interface giza_box module procedure giza_intern_box_f2c end interface interface giza_box_time module procedure giza_intern_box_time_f2c end interface interface giza_box_c subroutine giza_box_float_c(xopt,xtick,nxsub,yopt,ytick,nysub) bind(C,name="giza_box_float") import character(kind=c_char),dimension(*), intent(in) :: xopt,yopt real(kind=c_float), value, intent(in) :: xtick,ytick integer(kind=c_int), value, intent(in) :: nxsub,nysub end subroutine giza_box_float_c subroutine giza_box_c(xopt,xtick,nxsub,yopt,ytick,nysub) bind(C,name="giza_box") import character(kind=c_char),dimension(*), intent(in) :: xopt,yopt real(kind=c_double), value, intent(in) :: xtick,ytick integer(kind=c_int), value, intent(in) :: nxsub,nysub end subroutine giza_box_c end interface interface giza_box_time_c subroutine giza_box_time_float_c(xopt,xtick,nxsub,yopt,ytick,nysub) bind(C,name="giza_box_time_float") import character(kind=c_char),dimension(*), intent(in) :: xopt,yopt real(kind=c_float), value, intent(in) :: xtick,ytick integer(kind=c_int), value, intent(in) :: nxsub,nysub end subroutine giza_box_time_float_c subroutine giza_box_time_c(xopt,xtick,nxsub,yopt,ytick,nysub) bind(C,name="giza_box_time") import character(kind=c_char),dimension(*), intent(in) :: xopt,yopt real(kind=c_double), value, intent(in) :: xtick,ytick integer(kind=c_int), value, intent(in) :: nxsub,nysub end subroutine giza_box_time_c end interface interface giza_begin_buffer subroutine giza_begin_buffer() bind(C) end subroutine giza_begin_buffer end interface interface giza_end_buffer subroutine giza_end_buffer() bind(C) end subroutine giza_end_buffer end interface interface giza_flush_buffer subroutine giza_flush_buffer() bind(C) end subroutine giza_flush_buffer end interface interface giza_circle subroutine giza_circle(x,y,r) bind(C) import real(kind=c_double),intent(in),value :: x,y,r end subroutine giza_circle subroutine giza_circle_float(x,y,r) bind(C) import real(kind=c_float),intent(in),value :: x,y,r end subroutine giza_circle_float end interface interface giza_set_character_height subroutine giza_set_character_height(ch) bind(C) import real(kind=c_double),intent(in),value :: ch end subroutine giza_set_character_height subroutine giza_set_character_height_float(ch) bind(C) import real(kind=c_float),intent(in),value :: ch end subroutine giza_set_character_height_float end interface interface giza_get_character_height subroutine giza_get_character_height(ch) bind(C) import real(kind=c_double),intent(out) :: ch end subroutine giza_get_character_height subroutine giza_get_character_height_float(ch) bind(C) import real(kind=c_float),intent(out) :: ch end subroutine giza_get_character_height_float end interface interface giza_get_character_size subroutine giza_get_character_size(units,xch,ych) bind(C) import integer(kind=c_int),intent(in),value :: units real(kind=c_double),intent(out) :: xch,ych end subroutine giza_get_character_size subroutine giza_get_character_size_float(units,xch,ych) bind(C) import integer(kind=c_int),intent(in),value :: units real(kind=c_float),intent(out) :: xch,ych end subroutine giza_get_character_size_float end interface interface giza_set_clipping subroutine giza_set_clipping(clip) bind(C) import integer(kind=c_int), value, intent(in) :: clip end subroutine giza_set_clipping end interface interface giza_get_clipping subroutine giza_get_clipping(clip) bind(C) import integer(kind=c_int),intent(out) :: clip end subroutine giza_get_clipping end interface interface giza_colour_bar module procedure giza_intern_colour_bar_f2c end interface interface giza_colour_bar_c subroutine giza_colour_bar_c(side,disp,width,valmin,valmax,label) bind(C,name="giza_colour_bar") import character(kind=c_char), dimension(*), intent(in) :: side, label real(kind=c_double), value, intent(in) :: disp,width,valmin,valmax end subroutine giza_colour_bar_c subroutine giza_colour_bar_float_c(side,disp,width,valmin,valmax,label) bind(C,name="giza_colour_bar_float") import character(kind=c_char), dimension(*), intent(in) :: side, label real(kind=c_float), value, intent(in) :: disp,width,valmin,valmax end subroutine giza_colour_bar_float_c end interface interface giza_set_colour_index subroutine giza_set_colour_index(ci) bind(C) import integer(kind=c_int), value, intent(in) :: ci end subroutine giza_set_colour_index end interface interface giza_get_colour_index subroutine giza_get_colour_index(ci) bind(C) import integer(kind=c_int),intent(out) :: ci end subroutine giza_get_colour_index end interface interface giza_set_colour_palette subroutine giza_set_colour_palette(palette) bind(C) import integer(kind=c_int), value, intent(in) :: palette end subroutine giza_set_colour_palette end interface interface giza_set_colour_index_range subroutine giza_set_colour_index_range(cimin,cimax) bind(C) import integer(kind=c_int), value, intent(in) :: cimin,cimax end subroutine giza_set_colour_index_range end interface interface giza_get_colour_index_range subroutine giza_get_colour_index_range(cimin,cimax) bind(C) import integer(kind=c_int),intent(out) :: cimin,cimax end subroutine giza_get_colour_index_range end interface interface giza_set_colour_representation subroutine giza_set_colour_representation_float(ci,red,green,blue) bind(C) import integer(kind=c_int), value, intent(in) :: ci real(kind=c_float), value, intent(in) :: red,green,blue end subroutine giza_set_colour_representation_float subroutine giza_set_colour_representation(ci,red,green,blue) bind(C) import integer(kind=c_int), value, intent(in) :: ci real(kind=c_double), value, intent(in) :: red,green,blue end subroutine giza_set_colour_representation subroutine giza_set_colour_representation_alpha_float(ci,red,green,blue,alpha) bind(C) import integer(kind=c_int), value, intent(in) :: ci real(kind=c_float), value, intent(in) :: red,green,blue,alpha end subroutine giza_set_colour_representation_alpha_float subroutine giza_set_colour_representation_alpha(ci,red,green,blue,alpha) bind(C) import integer(kind=c_int), value, intent(in) :: ci real(kind=c_double), value, intent(in) :: red,green,blue,alpha end subroutine giza_set_colour_representation_alpha end interface interface giza_get_colour_representation subroutine giza_get_colour_representation(ci,red,green,blue) bind(C) import integer(kind=c_int),intent(in),value :: ci real(kind=c_double),intent(out) :: red,green,blue end subroutine giza_get_colour_representation subroutine giza_get_colour_representation_float(ci,red,green,blue) bind(C) import integer(kind=c_int),intent(in),value :: ci real(kind=c_float),intent(out) :: red,green,blue end subroutine giza_get_colour_representation_float subroutine giza_get_colour_representation_alpha(ci,red,green,blue,alpha) bind(C) import integer(kind=c_int),intent(in),value :: ci real(kind=c_double),intent(out) :: red,green,blue,alpha end subroutine giza_get_colour_representation_alpha subroutine giza_get_colour_representation_alpha_float(ci,red,green,blue,alpha) bind(C) import integer(kind=c_int),intent(in),value :: ci real(kind=c_float),intent(out) :: red,green,blue,alpha end subroutine giza_get_colour_representation_alpha_float end interface interface giza_set_colour_representation_hls subroutine giza_set_colour_representation_hls(ci,hue,light,sat) bind(C) import integer(kind=c_int),intent(in),value :: ci real(kind=c_double),intent(in),value :: hue,light,sat end subroutine giza_set_colour_representation_hls subroutine giza_set_colour_representation_hls_float(ci,hue,light,sat) bind(C) import integer(kind=c_int),intent(in),value :: ci real(kind=c_float),intent(in),value :: hue,light,sat end subroutine giza_set_colour_representation_hls_float end interface interface giza_set_colour_table subroutine giza_set_colour_table(controlPoints,red,green,blue,n,cont,bright) bind(C) import integer(kind=c_int),intent(in),value :: n real(kind=c_double),intent(in),dimension(n) :: controlPoints,red,green,blue real(kind=c_double),intent(in),value :: cont,bright end subroutine giza_set_colour_table subroutine giza_set_colour_table_float(controlPoints,red,green,blue,n,cont,bright) bind(C) import integer(kind=c_int),intent(in),value :: n real(kind=c_float),intent(in),dimension(n) :: controlPoints,red,green,blue real(kind=c_float),intent(in),value :: cont,bright end subroutine giza_set_colour_table_float end interface interface giza_contour subroutine giza_contour(sizex,sizey,data,i1,i2,j1,j2,ncont,cont,affine) bind(C) import integer(kind=c_int),intent(in),value :: sizex,sizey,i1,i2,j1,j2,ncont real(kind=c_double),intent(in) :: data(sizex,sizey) real(kind=c_double),intent(in) :: cont(*) real(kind=c_double),intent(in) :: affine(6) end subroutine giza_contour subroutine giza_contour_float(sizex,sizey,data,i1,i2,j1,j2,ncont,cont,affine) bind(C) import integer(kind=c_int),intent(in),value :: sizex,sizey,i1,i2,j1,j2,ncont real(kind=c_float),intent(in) :: data(sizex,sizey) real(kind=c_float),intent(in) :: cont(*) real(kind=c_float),intent(in) :: affine(6) end subroutine giza_contour_float end interface interface giza_get_current_point subroutine giza_get_current_point(xpt,ypt) bind(C) import real(kind=c_double),intent(out) :: xpt,ypt end subroutine giza_get_current_point subroutine giza_get_current_point_float(xpt,ypt) bind(C) import real(kind=c_float),intent(out) :: xpt,ypt end subroutine giza_get_current_point_float end interface interface giza_rgb_from_table subroutine giza_rgb_from_table(pos,r,g,b) bind(C) import real(kind=c_double),intent(in),value :: pos real(kind=c_double),intent(out) :: r,g,b end subroutine giza_rgb_from_table subroutine giza_rgb_from_table_float(pos,r,g,b) bind(C) import real(kind=c_float),intent(in),value :: pos real(kind=c_float),intent(out) :: r,g,b end subroutine giza_rgb_from_table_float end interface interface giza_print_device_list subroutine giza_print_device_list() bind(C) end subroutine giza_print_device_list end interface interface giza_open_device module procedure giza_intern_open_device end interface interface giza_open_device_c integer(kind=c_int) function giza_open_device_c (dev,prefix) bind(C,name="giza_open_device") import character(kind=c_char),dimension(*),intent(in) :: dev,prefix end function giza_open_device_c end interface !--open device: requires string conversion interface giza_open_device_size module procedure giza_intern_open_device_size end interface interface giza_open_device_size_c integer(kind=c_int) function giza_open_device_size_c (dev,prefix,width,height,units) & bind(C,name="giza_open_device_size") import character(kind=c_char),dimension(*),intent(in) :: dev,prefix real(kind=c_double),intent(in),value :: height,width integer(kind=c_int),intent(in),value :: units end function giza_open_device_size_c integer(kind=c_int) function giza_open_device_size_float_c(dev,prefix,width,height,units) & bind(C,name="giza_open_device_size_float") import character(kind=c_char),dimension(*),intent(in) :: dev,prefix real(kind=c_float),intent(in),value :: height,width integer(kind=c_int),intent(in),value :: units end function giza_open_device_size_float_c end interface ! device_has_cursor is logical in Fortran but int in c ! (cannot do a generic interface for int/logical), can call c version directly with _int version interface giza_device_has_cursor module procedure giza_intern_device_has_cursor end interface interface giza_device_has_cursor_int function giza_device_has_cursor_c() bind(C,name="giza_device_has_cursor") import integer(kind=c_int) :: giza_device_has_cursor_c end function giza_device_has_cursor_c end interface interface giza_select_device subroutine giza_select_device(devid) bind(C) import integer(kind=c_int),intent(in),value :: devid end subroutine giza_select_device end interface interface giza_get_device_id subroutine giza_get_device_id(devid) bind(C) import integer(kind=c_int),intent(out) :: devid end subroutine giza_get_device_id end interface interface giza_flush_device subroutine giza_flush_device() bind(C) end subroutine giza_flush_device end interface interface giza_change_page subroutine giza_change_page() bind(C) end subroutine giza_change_page end interface interface giza_close_device subroutine giza_close_device() bind(C) end subroutine giza_close_device end interface interface giza_get_key_press function giza_get_key_press(x,y,ch) bind(C) import integer(kind=c_int) :: giza_get_key_press real(kind=c_double),intent(out) :: x,y character(kind=c_char),intent(out) :: ch end function giza_get_key_press function giza_get_key_press_float(x,y,ch) bind(C) import integer(kind=c_int) :: giza_get_key_press_float real(kind=c_float),intent(out) :: x,y character(kind=c_char),intent(out) :: ch end function giza_get_key_press_float end interface interface giza_set_motion_callback function giza_set_motion_callback(func) bind(C) import integer(kind=c_int) :: giza_set_motion_callback abstract interface subroutine func(x,y,mode) bind(c) import real(c_double), intent(in) :: x,y integer(c_int), intent(in) :: mode end subroutine end interface end function giza_set_motion_callback end interface interface giza_end_motion_callback function giza_end_motion_callback() bind(C) import integer(kind=c_int) :: giza_end_motion_callback end function giza_end_motion_callback end interface interface giza_draw subroutine giza_draw(x,y) bind(C) import real(kind=c_double),intent(in),value :: x,y end subroutine giza_draw subroutine giza_draw_float(x,y) bind(C) import real(kind=c_float),intent(in),value :: x,y end subroutine giza_draw_float end interface interface giza_draw_background subroutine giza_draw_background() bind(C) end subroutine giza_draw_background end interface interface giza_set_environment subroutine giza_set_environment(xmin,xmax,ymin,ymax,just,axis) bind(C) import real(kind=c_double),intent(in),value :: xmin,xmax,ymin,ymax integer(kind=c_int),intent(in),value :: just,axis end subroutine giza_set_environment subroutine giza_set_environment_float(xmin,xmax,ymin,ymax,just,axis) bind(C) import real(c_float),intent(in),value :: xmin,xmax,ymin,ymax integer(kind=c_int),intent(in),value :: just,axis end subroutine giza_set_environment_float end interface interface giza_error_bars subroutine giza_error_bars(dir,n,xpts,ypts,error,term) bind(C) import integer(kind=c_int),intent(in),value :: dir,n real(kind=c_double),intent(in),value :: term real(kind=c_double),dimension(n),intent(in) :: xpts,ypts,error end subroutine giza_error_bars subroutine giza_error_bars_float(dir,n,xpts,ypts,error,term) bind(C) import integer(kind=c_int),intent(in),value :: dir,n real(kind=c_float),intent(in),value :: term real(kind=c_float),dimension(n),intent(in) :: xpts,ypts,error end subroutine giza_error_bars_float end interface interface giza_error_bars_x subroutine giza_error_bars_hori(n,xpts,ypts1,ypts2,term) bind(C) import integer(kind=c_int),intent(in),value :: n real(kind=c_double),intent(in),value :: term real(kind=c_double),dimension(n),intent(in) :: xpts,ypts1,ypts2 end subroutine giza_error_bars_hori subroutine giza_error_bars_hori_float(n,xpts,ypts1,ypts2,term) bind(C) import integer(kind=c_int),intent(in),value :: n real(kind=c_float),intent(in),value :: term real(kind=c_float),dimension(n),intent(in) :: xpts,ypts1,ypts2 end subroutine giza_error_bars_hori_float end interface interface giza_error_bars_y subroutine giza_error_bars_vert(n,xpts,ypts1,ypts2,term) bind(C) import integer(kind=c_int),intent(in),value :: n real(kind=c_double),intent(in),value :: term real(kind=c_double),dimension(n),intent(in) :: xpts,ypts1,ypts2 end subroutine giza_error_bars_vert subroutine giza_error_bars_vert_float(n,xpts,ypts1,ypts2,term) bind(C) import integer(kind=c_int),intent(in),value :: n real(kind=c_float),intent(in),value :: term real(kind=c_float),dimension(n),intent(in) :: xpts,ypts1,ypts2 end subroutine giza_error_bars_vert_float end interface interface giza_set_fill subroutine giza_set_fill(fs) bind(C) import integer(kind=c_int),intent(in),value :: fs end subroutine giza_set_fill end interface interface giza_get_fill subroutine giza_get_fill(fs) bind(C) import integer(kind=c_int),intent(out) :: fs end subroutine giza_get_fill end interface interface giza_function_x subroutine giza_function_x(func,n,xmin,xmax,flag) bind(C) import integer(kind=c_int),intent(in),value :: n,flag real(kind=c_double),intent(in),value :: xmin,xmax abstract interface function func(x) bind(c) import real(c_double), intent(in) :: x real(c_double) :: func end function end interface end subroutine giza_function_x subroutine giza_function_x_float(func,n,xmin,xmax,flag) bind(C) import integer(kind=c_int),intent(in),value :: n,flag real(kind=c_float), intent(in),value :: xmin,xmax abstract interface function func(x) bind(c) import real(c_float), intent(in) :: x real(c_float) :: func end function end interface end subroutine giza_function_x_float end interface interface giza_function_y subroutine giza_function_y(func,n,ymin,ymax,flag) bind(C) import integer(kind=c_int),intent(in),value :: n,flag real(kind=c_double),intent(in),value :: ymin,ymax abstract interface function func(x) bind(c) import real(c_double), intent(in) :: x real(c_double) :: func end function end interface end subroutine giza_function_y subroutine giza_function_y_float(func,n,ymin,ymax,flag) bind(C) import integer(kind=c_int),intent(in),value :: n,flag real(kind=c_float), intent(in),value :: ymin,ymax abstract interface function func(x) bind(c) import real(c_float), intent(in) :: x real(c_float) :: func end function end interface end subroutine giza_function_y_float end interface interface giza_function_t subroutine giza_function_t(funcx,funcy,n,tmin,tmax,flag) bind(C) import integer(kind=c_int),intent(in),value :: n,flag real(kind=c_double),intent(in),value :: tmin,tmax abstract interface function funcx(x) bind(c) import real(c_double), intent(in) :: x real(c_double) :: funcx end function function funcy(x) bind(c) import real(c_double), intent(in) :: x real(c_double) :: funcy end function end interface end subroutine giza_function_t subroutine giza_function_t_float(funcx,funcy,n,tmin,tmax,flag) bind(C) import integer(kind=c_int),intent(in),value :: n,flag real(kind=c_float), intent(in),value :: tmin,tmax ! real(kind=c_float),external :: funcx,funcy abstract interface function funcx(x) bind(c) import real(c_float), intent(in) :: x real(c_float) :: funcx end function function funcy(x) bind(c) import real(c_float), intent(in) :: x real(c_float) :: funcy end function end interface end subroutine giza_function_t_float end interface interface giza_get_surface_size subroutine giza_get_surface_size_float(x1,x2,y1,y2) bind(C) import real(kind=c_float),intent(out) :: x1,x2,y1,y2 end subroutine giza_get_surface_size_float subroutine giza_get_surface_size(x1,x2,y1,y2) bind(C) import real(kind=c_double),intent(out) :: x1,x2,y1,y2 end subroutine giza_get_surface_size end interface interface giza_set_hatching_style subroutine giza_set_hatching_style(angle,spacing,phase) bind(C) import real(kind=c_double),intent(in),value :: angle,spacing,phase end subroutine giza_set_hatching_style subroutine giza_set_hatching_style_float(angle,spacing,phase) bind(C) import real(kind=c_float),intent(in),value :: angle,spacing,phase end subroutine giza_set_hatching_style_float end interface giza_set_hatching_style interface giza_get_hatching_style subroutine giza_get_hatching_style(angle,spacing,phase) bind(C) import real(kind=c_double),intent(out) :: angle,spacing,phase end subroutine giza_get_hatching_style subroutine giza_get_hatching_style_float(angle,spacing,phase) bind(C) import real(kind=c_float),intent(out) :: angle,spacing,phase end subroutine giza_get_hatching_style_float end interface giza_get_hatching_style interface giza_histogram subroutine giza_histogram(n,dat,min,max,nbin,flag) bind(C) import integer(kind=c_int),intent(in), value :: n,nbin,flag real(kind=c_double),intent(in) :: dat(*) real(kind=c_double),intent(in), value :: min,max end subroutine giza_histogram subroutine giza_histogram_float(n,dat,min,max,nbin,flag) bind(C) import integer(kind=c_int),intent(in), value :: n,nbin,flag real(kind=c_float), intent(in) :: dat(*) real(kind=c_float), intent(in), value :: min,max end subroutine giza_histogram_float end interface interface giza_histogram_binned subroutine giza_histogram_binned(nbin,x,dat,centre) bind(C) import integer(kind=c_int),intent(in), value :: nbin,centre real(kind=c_double),intent(in) :: x(*),dat(*) end subroutine giza_histogram_binned subroutine giza_histogram_binned_float(nbin,x,dat,centre) bind(C) import integer(kind=c_int),intent(in), value :: nbin,centre real(kind=c_float), intent(in) :: x(*),dat(*) end subroutine giza_histogram_binned_float end interface interface giza_label module procedure giza_intern_label_f2c end interface interface giza_label_c subroutine giza_label_c (labelx,labely,title) bind(C,name="giza_label") import character(kind=c_char),dimension(*),intent(in) :: labelx,labely,title end subroutine giza_label_c end interface giza_label_c interface giza_line subroutine giza_line_float(n,xpts,ypts) bind(C) import integer(kind=c_int),value,intent(in) :: n real(kind=c_float),intent(in),dimension(n) :: xpts,ypts end subroutine giza_line_float subroutine giza_line(n,xpts,ypts) bind(C) import integer(kind=c_int),value,intent(in) :: n real(kind=c_double),intent(in),dimension(n) :: xpts,ypts end subroutine giza_line end interface interface giza_set_line_width subroutine giza_set_line_width(lw) bind(C) import real(kind=c_double),intent(in), value :: lw end subroutine giza_set_line_width subroutine giza_set_line_width_float(lw) bind(C) import real(kind=c_float),intent(in), value :: lw end subroutine giza_set_line_width_float module procedure giza_intern_set_line_width_int end interface interface giza_get_line_width subroutine giza_get_line_width(lw) bind(C) import real(kind=c_double),intent(out) :: lw end subroutine giza_get_line_width subroutine giza_get_line_width_float(lw) bind(C) import real(kind=c_float),intent(out) :: lw end subroutine giza_get_line_width_float module procedure giza_intern_get_line_width_int end interface interface giza_set_line_cap subroutine giza_set_line_cap(lc) bind(C) import integer(c_int),value,intent(in) :: lc end subroutine giza_set_line_cap end interface interface giza_get_line_cap subroutine giza_get_line_cap(lc) bind(C) import integer(c_int),intent(out) :: lc end subroutine giza_get_line_cap end interface interface giza_set_line_style subroutine giza_set_line_style(ls) bind(C) import integer(c_int),value,intent(in) :: ls end subroutine giza_set_line_style end interface interface giza_get_line_style subroutine giza_get_line_style(ls) bind(C) import integer(c_int),intent(out) :: ls end subroutine giza_get_line_style end interface interface giza_mark_line subroutine giza_mark_line(maxpts,npts,xpts,ypts) bind(C) import integer(kind=c_int),intent(in),value :: maxpts integer(kind=c_int),intent(inout) :: npts real(kind=c_double), dimension(*), intent(inout) :: xpts real(kind=c_double), dimension(*), intent(inout) :: ypts end subroutine giza_mark_line subroutine giza_mark_line_float(maxpts,npts,xpts,ypts) bind(C) import integer(kind=c_int),intent(in),value :: maxpts integer(kind=c_int),intent(inout) :: npts real(kind=c_float), dimension(*), intent(inout) :: xpts real(kind=c_float), dimension(*), intent(inout) :: ypts end subroutine giza_mark_line_float subroutine giza_mark_line_char(maxpts,npts,xpts,ypts,ch) bind(C) import integer(kind=c_int),intent(in),value :: maxpts integer(kind=c_int),intent(inout) :: npts real(kind=c_double), dimension(*), intent(inout) :: xpts real(kind=c_double), dimension(*), intent(inout) :: ypts character(kind=c_char),intent(out) :: ch end subroutine giza_mark_line_char subroutine giza_mark_line_char_float(maxpts,npts,xpts,ypts,ch) bind(C) import integer(kind=c_int),intent(in),value :: maxpts integer(kind=c_int),intent(inout) :: npts real(kind=c_float), dimension(*), intent(inout) :: xpts real(kind=c_float), dimension(*), intent(inout) :: ypts character(kind=c_char),intent(out) :: ch end subroutine giza_mark_line_char_float end interface interface giza_mark_line_ordered subroutine giza_mark_line_ordered(maxpts,npts,xpts,ypts) bind(C) import integer(kind=c_int),intent(in),value :: maxpts integer(kind=c_int),intent(inout) :: npts real(kind=c_double), dimension(*), intent(inout) :: xpts real(kind=c_double), dimension(*), intent(inout) :: ypts end subroutine giza_mark_line_ordered subroutine giza_mark_line_ordered_float(maxpts,npts,xpts,ypts) bind(C) import integer(kind=c_int),intent(in),value :: maxpts integer(kind=c_int),intent(inout) :: npts real(kind=c_float), dimension(*), intent(inout) :: xpts real(kind=c_float), dimension(*), intent(inout) :: ypts end subroutine giza_mark_line_ordered_float end interface interface giza_mark_points subroutine giza_mark_points(maxpts,npts,xpts,ypts,symbol) bind(C) import integer(kind=c_int),intent(in),value :: maxpts integer(kind=c_int),intent(inout) :: npts real(kind=c_double), dimension(*), intent(inout) :: xpts real(kind=c_double), dimension(*), intent(inout) :: ypts integer(kind=c_int),intent(in),value :: symbol end subroutine giza_mark_points subroutine giza_mark_points_float(maxpts,npts,xpts,ypts,symbol) bind(C) import integer(kind=c_int),intent(in),value :: maxpts integer(kind=c_int),intent(inout) :: npts real(kind=c_float), dimension(*), intent(inout) :: xpts real(kind=c_float), dimension(*), intent(inout) :: ypts integer(kind=c_int),intent(in),value :: symbol end subroutine giza_mark_points_float end interface interface giza_mark_points_ordered subroutine giza_mark_points_ordered(maxpts,npts,xpts,ypts,symbol) bind(C) import integer(kind=c_int),intent(in),value :: maxpts integer(kind=c_int),intent(inout) :: npts real(kind=c_double), dimension(*), intent(inout) :: xpts real(kind=c_double), dimension(*), intent(inout) :: ypts integer(kind=c_int),intent(in),value :: symbol end subroutine giza_mark_points_ordered subroutine giza_mark_points_ordered_float(maxpts,npts,xpts,ypts,symbol) bind(C) import integer(kind=c_int),intent(in),value :: maxpts integer(kind=c_int),intent(inout) :: npts real(kind=c_float), dimension(*), intent(inout) :: xpts real(kind=c_float), dimension(*), intent(inout) :: ypts integer(kind=c_int),intent(in),value :: symbol end subroutine giza_mark_points_ordered_float end interface interface giza_move subroutine giza_move(x,y) bind(C) import real(kind=c_double),intent(in),value :: x,y end subroutine giza_move subroutine giza_move_float(x,y) bind(C) import real(kind=c_float),intent(in),value :: x,y end subroutine giza_move_float end interface interface giza_get_paper_size subroutine giza_get_paper_size(units,width,height) bind(C) import integer(kind=c_int), intent(in),value :: units real(kind=c_double),intent(out) :: width,height end subroutine giza_get_paper_size subroutine giza_get_paper_size_float(units,width,height) bind(C) import integer(kind=c_int), intent(in),value :: units real(kind=c_float),intent(out) :: width,height end subroutine giza_get_paper_size_float end interface interface giza_set_paper_size subroutine giza_set_paper_size(units,width,aspect) bind(C) import integer(kind=c_int), intent(in),value :: units real(kind=c_double), intent(in),value :: width,aspect end subroutine giza_set_paper_size subroutine giza_set_paper_size_float(units,width,aspect) bind(C) import integer(kind=c_int),intent(in),value :: units real(kind=c_float), intent(in),value :: width,aspect end subroutine giza_set_paper_size_float end interface interface giza_points subroutine giza_points(n,xpts,ypts,symbol) bind(C) import integer(kind=c_int), value, intent(in) :: n, symbol real(kind=c_double), dimension(n), intent(in) :: xpts,ypts end subroutine giza_points subroutine giza_points_float(n,xpts,ypts,symbol) bind(C) import integer(kind=c_int), value, intent(in) :: n, symbol real(kind=c_float), dimension(n), intent(in) :: xpts,ypts end subroutine giza_points_float end interface interface giza_single_point subroutine giza_single_point(x,y,symbol) bind(C) import real(kind=c_double), value, intent(in) :: x,y integer(kind=c_int), value, intent(in) :: symbol end subroutine giza_single_point subroutine giza_single_point_float(x,y,symbol) bind(C) import real(kind=c_float), value, intent(in) :: x,y integer(kind=c_int), value, intent(in) :: symbol end subroutine giza_single_point_float end interface interface giza_polygon subroutine giza_polygon(n,xpts,ypts) bind(C) import integer(kind=c_int), value, intent(in) :: n real(kind=c_double), dimension(n), intent(in) :: xpts,ypts end subroutine giza_polygon subroutine giza_polygon_float(n,xpts,ypts) bind(C) import integer(kind=c_int), value, intent(in) :: n real(kind=c_float), dimension(n), intent(in) :: xpts,ypts end subroutine giza_polygon_float end interface interface giza_print_id subroutine giza_print_id() bind(C) end subroutine giza_print_id end interface interface giza_start_prompting subroutine giza_start_prompting() bind(C) end subroutine giza_start_prompting end interface interface giza_stop_prompting subroutine giza_stop_prompting() bind(C) end subroutine giza_stop_prompting end interface interface giza_text module procedure giza_intern_text_f2c module procedure giza_intern_text_float_f2c end interface interface giza_set_text_background subroutine giza_set_text_background(ci) bind(C) import integer(kind=c_int), value, intent(in) :: ci end subroutine giza_set_text_background end interface interface giza_get_text_background subroutine giza_get_text_background(ci) bind(C) import integer(kind=c_int), intent(out) :: ci end subroutine giza_get_text_background end interface interface giza_text_c subroutine giza_text_c(x,y,text) bind(C,name="giza_text") import real(kind=c_double),value,intent(in) :: x,y character(kind=c_char),dimension(*),intent(in) :: text end subroutine giza_text_c subroutine giza_text_float_c(x,y,text) bind(C,name="giza_text_float") import real(kind=c_float),value,intent(in) :: x,y character(kind=c_char),dimension(*),intent(in) :: text end subroutine giza_text_float_c end interface interface giza_open module procedure giza_open_sub end interface giza_open interface giza_ptext module procedure giza_intern_ptext_f2c module procedure giza_intern_ptext_float_f2c end interface interface giza_ptext_c subroutine giza_ptext_c(x,y,angle,just,text) bind(C,name="giza_ptext") import real(kind=c_double),value,intent(in) :: x,y,angle,just character(kind=c_char),dimension(*),intent(in) :: text end subroutine giza_ptext_c subroutine giza_ptext_float_c(x,y,angle,just,text) bind(C,name="giza_ptext_float") import real(kind=c_float),value,intent(in) :: x,y,angle,just character(kind=c_char),dimension(*),intent(in) :: text end subroutine giza_ptext_float_c end interface interface giza_qtext module procedure giza_intern_qtext_f2c module procedure giza_intern_qtext_float_f2c end interface interface giza_qtext_c subroutine giza_qtext_c(x,y,angle,just,text,xbox,ybox) bind(C,name="giza_qtext") import real(kind=c_double),value,intent(in) :: x,y,angle,just real(kind=c_double),intent(out) :: xbox(4),ybox(4) character(kind=c_char),dimension(*),intent(in) :: text end subroutine giza_qtext_c subroutine giza_qtext_float_c(x,y,angle,just,text,xbox,ybox) bind(C,name="giza_qtext_float") import real(kind=c_float),value,intent(in) :: x,y,angle,just real(kind=c_float),intent(out) :: xbox(4),ybox(4) character(kind=c_char),dimension(*),intent(in) :: text end subroutine giza_qtext_float_c end interface interface giza_qtextlen module procedure giza_intern_qtextlen_f2c module procedure giza_intern_qtextlen_float_f2c end interface interface giza_qtextlen_c subroutine giza_qtextlen_c(units,text,xlen,ylen) bind(C,name="giza_qtextlen") import integer(kind=c_int),value,intent(in) :: units character(kind=c_char),dimension(*),intent(in) :: text real(kind=c_double),intent(out) :: xlen,ylen end subroutine giza_qtextlen_c subroutine giza_qtextlen_float_c(units,text,xlen,ylen) bind(C,name="giza_qtextlen_float") import integer(kind=c_int),value,intent(in) :: units character(kind=c_char),dimension(*),intent(in) :: text real(kind=c_float),intent(out) :: xlen,ylen end subroutine giza_qtextlen_float_c end interface interface giza_render subroutine giza_render(sizex,sizey,data,i1,i2,j1,j2,valMin,valMax,extend,filter,affine) bind(C) import integer(kind=c_int),intent(in),value :: sizex,sizey,i1,i2,j1,j2,extend,filter real(kind=c_double),intent(in) :: data(sizex,sizey) real(kind=c_double),intent(in),value :: valMin,valMax real(kind=c_double),intent(in) :: affine(6) end subroutine giza_render subroutine giza_render_float(sizex,sizey,data,i1,i2,j1,j2,valMin,valMax,extend,filter,affine) bind(C) import integer(kind=c_int),intent(in),value :: sizex,sizey,i1,i2,j1,j2,extend,filter real(kind=c_float),intent(in) :: data(sizex,sizey) real(kind=c_float),intent(in),value :: valMin,valMax real(kind=c_float),intent(in) :: affine(6) end subroutine giza_render_float subroutine giza_render_alpha(sizex,sizey,data,alpha,i1,i2,j1,j2,valMin,valMax,extend,filter,affine) bind(C) import integer(kind=c_int),intent(in),value :: sizex,sizey,i1,i2,j1,j2,extend,filter real(kind=c_double),intent(in) :: data(sizex,sizey), alpha(sizex,sizey) real(kind=c_double),intent(in),value :: valMin,valMax real(kind=c_double),intent(in) :: affine(6) end subroutine giza_render_alpha subroutine giza_render_alpha_float(sizex,sizey,data,alpha,i1,i2,j1,j2,valMin,valMax,extend,filter,affine) bind(C) import integer(kind=c_int),intent(in),value :: sizex,sizey,i1,i2,j1,j2,extend,filter real(kind=c_float),intent(in) :: data(sizex,sizey), alpha(sizex,sizey) real(kind=c_float),intent(in),value :: valMin,valMax real(kind=c_float),intent(in) :: affine(6) end subroutine giza_render_alpha_float end interface interface giza_render_transparent subroutine giza_render_transparent(sizex,sizey,data,i1,i2,j1,j2,valMin,valMax,extend,filter,affine) bind(C) import integer(kind=c_int),intent(in),value :: sizex,sizey,i1,i2,j1,j2,extend,filter real(kind=c_double),intent(in) :: data(sizex,sizey) real(kind=c_double),intent(in),value :: valMin,valMax real(kind=c_double),intent(in) :: affine(6) end subroutine giza_render_transparent subroutine giza_render_transparent_float(sizex,sizey,data,i1,i2,j1,j2,valMin,valMax,extend,filter,affine) bind(C) import integer(kind=c_int),intent(in),value :: sizex,sizey,i1,i2,j1,j2,extend,filter real(kind=c_float),intent(in) :: data(sizex,sizey) real(kind=c_float),intent(in),value :: valMin,valMax real(kind=c_float),intent(in) :: affine(6) end subroutine giza_render_transparent_float end interface interface giza_render_gray subroutine giza_render_gray(sizex,sizey,data,i1,i2,j1,j2,valMin,valMax,extend,filter,affine) bind(C) import integer(kind=c_int),intent(in),value :: sizex,sizey,i1,i2,j1,j2,extend,filter real(kind=c_double),intent(in) :: data(sizex,sizey) real(kind=c_double),intent(in),value :: valMin,valMax real(kind=c_double),intent(in) :: affine(6) end subroutine giza_render_gray subroutine giza_render_gray_float(sizex,sizey,data,i1,i2,j1,j2,valMin,valMax,extend,filter,affine) bind(C) import integer(kind=c_int),intent(in),value :: sizex,sizey,i1,i2,j1,j2,extend,filter real(kind=c_float),intent(in) :: data(sizex,sizey) real(kind=c_float),intent(in),value :: valMin,valMax real(kind=c_float),intent(in) :: affine(6) end subroutine giza_render_gray_float end interface interface giza_draw_pixels subroutine giza_draw_pixels(sizex,sizey,idata,i1,i2,j1,j2,xmin,xmax,ymin,ymax,extend,filter) bind(C) import integer(kind=c_int),intent(in),value :: sizex,sizey,i1,i2,j1,j2,extend,filter integer(kind=c_int),intent(in) :: idata(sizex,sizey) real(kind=c_double),intent(in),value :: xmin,xmax,ymin,ymax end subroutine giza_draw_pixels subroutine giza_draw_pixels_float(sizex,sizey,idata,i1,i2,j1,j2,xmin,xmax,ymin,ymax,extend,filter) bind(C) import integer(kind=c_int),intent(in),value :: sizex,sizey,i1,i2,j1,j2,extend,filter integer(kind=c_int),intent(in) :: idata(sizex,sizey) real(kind=c_float),intent(in),value :: xmin,xmax,ymin,ymax end subroutine giza_draw_pixels_float end interface interface giza_rectangle subroutine giza_rectangle(x1,x2,y1,y2) bind(C) import real(kind=c_double),intent(in),value :: x1,x2,y1,y2 end subroutine giza_rectangle subroutine giza_rectangle_float(x1,x2,y1,y2) bind(C) import real(kind=c_float),intent(in),value :: x1,x2,y1,y2 end subroutine giza_rectangle_float subroutine giza_rectangle_rounded(x1,x2,y1,y2,r) bind(C) import real(kind=c_double),intent(in),value :: x1,x2,y1,y2,r end subroutine giza_rectangle_rounded subroutine giza_rectangle_rounded_float(x1,x2,y1,y2,r) bind(C) import real(kind=c_float),intent(in),value :: x1,x2,y1,y2,r end subroutine giza_rectangle_rounded_float end interface giza_rectangle interface giza_restore subroutine giza_restore() bind(C) end subroutine giza_restore end interface interface giza_round function giza_round_db(x,nsub) bind(C,name="giza_round") import real(kind=c_double), intent(in) :: x integer(kind=c_int), intent(out) :: nsub real(kind=c_double) :: giza_round_db end function giza_round_db function giza_round_float(x,nsub) bind(C,name="giza_round_float") import real(kind=c_float), intent(in) :: x integer(kind=c_int), intent(out) :: nsub real(kind=c_float) :: giza_round_float end function giza_round_float end interface giza_round interface giza_save subroutine giza_save() bind(C) end subroutine giza_save end interface interface giza_set_font module procedure giza_intern_set_font_f2c end interface interface giza_set_font_bold module procedure giza_intern_set_font_bold_f2c end interface interface giza_set_font_italic module procedure giza_intern_set_font_italic_f2c end interface interface giza_set_font_bold_italic module procedure giza_intern_set_font_bold_italic_f2c end interface interface giza_set_font_c subroutine giza_set_font_c(font) bind(C,name="giza_set_font") import character(kind=c_char),dimension(*),intent(in) :: font end subroutine giza_set_font_c end interface interface giza_set_font_bold_c subroutine giza_set_font_bold_c(font) bind(C,name="giza_set_font_bold") import character(kind=c_char),dimension(*),intent(in) :: font end subroutine giza_set_font_bold_c end interface interface giza_set_font_italic_c subroutine giza_set_font_italic_c(font) bind(C,name="giza_set_font_italic") import character(kind=c_char),dimension(*),intent(in) :: font end subroutine giza_set_font_italic_c end interface interface giza_set_font_bold_italic_c subroutine giza_set_font_bold_italic_c(font) bind(C,name="giza_set_font_bold_italic") import character(kind=c_char),dimension(*),intent(in) :: font end subroutine giza_set_font_bold_italic_c end interface interface giza_subpanel subroutine giza_subpanel(nx,ny) bind(C) import integer(kind=c_int), intent(in),value :: nx,ny end subroutine giza_subpanel end interface interface giza_set_panel subroutine giza_set_panel(ix,iy) bind(C) import integer(kind=c_int), intent(in),value :: ix,iy end subroutine giza_set_panel end interface interface giza_get_panel subroutine giza_get_panel(ix,iy) bind(C) import integer(kind=c_int), intent(out) :: ix,iy end subroutine giza_get_panel end interface interface giza_vector subroutine giza_vector(sizex,sizey,horizontal,vertical,i1,i2,j1,j2,scale,position,affine,blank) bind(C) import integer(kind=c_int),intent(in),value :: sizex,sizey,i1,i2,j1,j2,position real(kind=c_double),intent(in) :: horizontal(sizex,sizey),vertical(sizex,sizey) real(kind=c_double),intent(in),value :: scale,blank real(kind=c_double),intent(in) :: affine(6) end subroutine giza_vector subroutine giza_vector_float(sizex,sizey,horizontal,vertical,i1,i2,j1,j2,scale,position,affine,blank) bind(C) import integer(kind=c_int),intent(in),value :: sizex,sizey,i1,i2,j1,j2,position real(kind=c_float),intent(in) :: horizontal(sizex,sizey),vertical(sizex,sizey) real(kind=c_float),intent(in),value :: scale,blank real(kind=c_float),intent(in) :: affine(6) end subroutine giza_vector_float end interface interface giza_set_viewport subroutine giza_set_viewport_float(xleft,xright,ybot,ytop) bind(C) import real(kind=c_float), value, intent(in) :: xleft,xright,ybot,ytop end subroutine giza_set_viewport_float subroutine giza_set_viewport(xleft,xright,ybot,ytop) bind(C) import real(kind=c_double), value, intent(in) :: xleft,xright,ybot,ytop end subroutine giza_set_viewport end interface interface giza_set_viewport_default subroutine giza_set_viewport_default() bind(C) end subroutine giza_set_viewport_default end interface interface giza_get_viewport subroutine giza_get_viewport(units,x1,x2,y1,y2) bind(C) import integer(kind=c_int), value, intent(in) :: units real(kind=c_double), intent(out) :: x1,x2,y1,y2 end subroutine giza_get_viewport subroutine giza_get_viewport_float(units,x1,x2,y1,y2) bind(C) import integer(kind=c_int),value, intent(in) :: units real(kind=c_float), intent(out) :: x1,x2,y1,y2 end subroutine giza_get_viewport_float end interface interface giza_set_viewport_inches subroutine giza_set_viewport_inches_float(xleft,xright,ybot,ytop) bind(C) import real(kind=c_float), value, intent(in) :: xleft,xright,ybot,ytop end subroutine giza_set_viewport_inches_float subroutine giza_set_viewport_inches(xleft,xright,ybot,ytop) bind(C) import real(kind=c_double), value, intent(in) :: xleft,xright,ybot,ytop end subroutine giza_set_viewport_inches end interface interface giza_version subroutine giza_version(major,minor,micro) bind(C) import integer(kind=c_int), intent(out) :: major,minor,micro end subroutine giza_version end interface interface giza_start_warnings subroutine giza_start_warnings() bind(C) end subroutine giza_start_warnings end interface interface giza_stop_warnings subroutine giza_stop_warnings() bind(C) end subroutine giza_stop_warnings end interface interface giza_set_window subroutine giza_set_window_float(x1,x2,y1,y2) bind(C) import real(kind=c_float), value, intent(in) :: x1,x2,y1,y2 end subroutine giza_set_window_float subroutine giza_set_window(x1,x2,y1,y2) bind(C) import real(kind=c_double), value, intent(in) :: x1,x2,y1,y2 end subroutine giza_set_window end interface interface giza_set_window_equal_scale subroutine giza_set_window_equal_scale(x1,x2,y1,y2) bind(C) import real(kind=c_double), value, intent(in) :: x1,x2,y1,y2 end subroutine giza_set_window_equal_scale subroutine giza_set_window_equal_scale_float(x1,x2,y1,y2) bind(C) import real(kind=c_float), value, intent(in) :: x1,x2,y1,y2 end subroutine giza_set_window_equal_scale_float end interface interface giza_get_window subroutine giza_get_window(x1,x2,y1,y2) bind(C) import real(kind=c_double),intent(out) :: x1,x2,y1,y2 end subroutine giza_get_window subroutine giza_get_window_float(x1,x2,y1,y2) bind(C) import real(kind=c_float),intent(out) :: x1,x2,y1,y2 end subroutine giza_get_window_float end interface interface giza_format_number module procedure giza_format_number_f2c end interface !private :: giza_format_number_c interface giza_format_number_c subroutine giza_format_number_c(mantissa,power,iform,string,cstring_len) bind(C,name="giza_format_number") import integer(kind=c_int),value,intent(in) :: mantissa,power,iform,cstring_len character(kind=c_char),dimension(*),intent(out) :: string end subroutine giza_format_number_c end interface interface giza_query_device module procedure giza_query_device_f2c end interface interface giza_query_device_c integer(kind=c_int) function giza_query_device_c(qtype,string,rval) bind(C,name="giza_query_device") import character(kind=c_char),dimension(*),intent(in) :: qtype character(kind=c_char),dimension(*),intent(out) :: string integer(kind=c_int),intent(out) :: rval end function giza_query_device_c end interface interface giza_set_image_transfer_function subroutine giza_set_image_transfer_function(itf) bind(C) import integer(kind=c_int), value, intent(in) :: itf end subroutine giza_set_image_transfer_function end interface interface giza_get_image_transfer_function subroutine giza_get_image_transfer_function(itf) bind(C) import integer(kind=c_int), intent(out) :: itf end subroutine giza_get_image_transfer_function end interface !------------------ end of interfaces ----------------------- contains !------------------------------------------------------- ! these are subroutines whose arguments need conversion ! before passing to c (mainly strings) !------------------------------------------------------- subroutine giza_intern_annotate_f2c(side,displacement,coord,justification,text) character(len=*),intent(in) :: side,text real,intent(in) :: displacement,coord,justification real(kind=c_double) :: displacement_c,coord_c,justification_c displacement_c = displacement coord_c = coord justification_c = justification call giza_annotate_c(cstring(trim(side)),displacement_c,coord_c,justification_c,cstring(text)) end subroutine giza_intern_annotate_f2c subroutine giza_intern_axis_f2c(opt,x1,y1,x2,y2,v1,v2,& tick,nsub,dmajl,dmajr,fmin,disp,angle) character(len=*),intent(in) :: opt real, intent(in) :: x1,y1,x2,y2,v1,v2 real, intent(in) :: tick,dmajl,dmajr,fmin,disp,angle integer,intent(in) :: nsub real(kind=c_double) :: x1_c,y1_c,x2_c,y2_c,v1_c,v2_c real(kind=c_double) :: tick_c,dmajl_c,dmajr_c,fmin_c,disp_c,angle_c integer(kind=c_int) :: nsub_c x1_c = x1; y1_c = y1; x2_c = x2; y2_c = y2; v1_c = v1; v2_c = v2 tick_c = tick; dmajl_c = dmajl; dmajr_c = dmajr; fmin_c = fmin disp_c = disp; angle_c = angle nsub_c = nsub call giza_axis_c(cstring(trim(opt)),x1_c,y1_c,x2_c,y2_c,v1_c,v2_c,& tick_c,nsub_c,dmajl_c,dmajr_c,fmin_c,disp_c,angle_c) end subroutine giza_intern_axis_f2c subroutine giza_intern_tick_f2c(x1,y1,x2,y2,v,& tickl,tickr,disp,angle,label) real, intent(in) :: x1,y1,x2,y2,v real, intent(in) :: tickl,tickr,disp,angle character(len=*),intent(in) :: label real(kind=c_double) :: x1_c,y1_c,x2_c,y2_c,v_c real(kind=c_double) :: tickl_c,tickr_c,disp_c,angle_c x1_c = x1; y1_c = y1; x2_c = x2; y2_c = y2; v_c = v tickl_c = tickl; tickr_c = tickr; disp_c = disp; angle_c = angle call giza_tick_c(x1_c,y1_c,x2_c,y2_c,v_c,& tickl_c,tickr_c,disp_c,angle_c,cstring(label)) end subroutine giza_intern_tick_f2c subroutine giza_intern_box_f2c(xopt,xtick,nxsub,yopt,ytick,nysub) character(len=*),intent(in) :: xopt,yopt real,intent(in) :: xtick,ytick integer,intent(in) :: nxsub,nysub real(kind=c_double) :: xtick_c,ytick_c integer(kind=c_int) :: nxsub_c,nysub_c xtick_c = xtick; ytick_c = ytick nxsub_c = nxsub; nysub_c = nysub call giza_box_c(cstring(trim(xopt)),xtick_c,nxsub_c,cstring(yopt),ytick_c,nysub_c) end subroutine giza_intern_box_f2c subroutine giza_intern_box_time_f2c(xopt,xtick,nxsub,yopt,ytick,nysub) character(len=*),intent(in) :: xopt,yopt real,intent(in) :: xtick,ytick integer,intent(in) :: nxsub,nysub real(kind=c_double) :: xtick_c,ytick_c integer(kind=c_int) :: nxsub_c,nysub_c xtick_c = xtick; ytick_c = ytick nxsub_c = nxsub; nysub_c = nysub call giza_box_time_c(cstring(trim(xopt)),xtick_c,nxsub_c,cstring(yopt),ytick_c,nysub_c) end subroutine giza_intern_box_time_f2c subroutine giza_intern_colour_bar_f2c(side,disp,width,valmin,valmax,label) character(len=*), intent(in) :: side,label real, intent(in) :: disp,width,valmin,valmax real(kind=c_double) :: disp_c,width_c,valmin_c,valmax_c disp_c = disp width_c = width valmin_c = valmin valmax_c = valmax call giza_colour_bar_c(cstring(side),disp_c,width_c,valmin_c,valmax_c,cstring(label)) end subroutine giza_intern_colour_bar_f2c integer function giza_intern_open_device(dev,prefix) character(len=*),intent(in) :: dev,prefix giza_intern_open_device = giza_open_device_c(cstring(dev),cstring(prefix)) end function giza_intern_open_device subroutine giza_open_sub(dev,prefix,width,height,units,error) character(len=*),intent(in), optional :: dev character(len=*), intent(in), optional :: prefix real,intent(in), optional :: width,height integer, intent(in), optional :: units integer, intent(out), optional :: error integer :: giza_open character(len=40) :: fdev if (present(dev)) then fdev = dev else fdev = '?' endif if (present(units) .and. present(width) .and. present(height)) then if (present(prefix)) then giza_open = giza_open_device_size_c(cstring(fdev),cstring(prefix),width,height,units) else giza_open = giza_open_device_size_c(cstring(fdev),cstring('giza'),width,height,units) endif else if (present(prefix)) then giza_open = giza_open_device_c(cstring(fdev),cstring(prefix)) else giza_open = giza_open_device_c(cstring(fdev),cstring('giza')) endif endif if (present(error)) then error = giza_open endif end subroutine giza_open_sub subroutine giza_close call giza_close_device() end subroutine giza_close integer function giza_intern_open_device_size(dev,prefix,width,height,units) character(len=*),intent(in) :: dev,prefix real,intent(in) :: width,height integer, intent(in) :: units giza_intern_open_device_size = giza_open_device_size_c(cstring(dev),cstring(prefix),width,height,units) end function giza_intern_open_device_size ! So cursor functionality can be queried as logical logical function giza_intern_device_has_cursor() giza_intern_device_has_cursor = (giza_device_has_cursor_c().eq.1) end function giza_intern_device_has_cursor subroutine giza_intern_label_f2c(labelx,labely,title) character(len=*),intent(in) :: labelx,labely,title call giza_label_c(cstring(labelx),cstring(labely),cstring(title)) end subroutine giza_intern_label_f2c subroutine giza_intern_set_line_width_int(lw) integer(kind=c_int),value,intent(in) :: lw real(kind=c_double) :: reallw !--cairo line widths are best as .5, 1.5 etc reallw = dble(lw) + 0.5d0 call giza_set_line_width(reallw) end subroutine giza_intern_set_line_width_int subroutine giza_intern_get_line_width_int(lw) integer(kind=c_int),intent(out) :: lw real(kind=c_double) :: reallw call giza_get_line_width(reallw) lw = nint(reallw - 0.5d0) end subroutine giza_intern_get_line_width_int subroutine giza_intern_text_f2c(x,y,text) real(kind=c_double),intent(in) :: x,y character(len=*),intent(in) :: text call giza_text_c(x,y,cstring(text)) end subroutine giza_intern_text_f2c subroutine giza_intern_text_float_f2c(x,y,text) real(kind=c_float),intent(in) :: x,y character(len=*),intent(in) :: text call giza_text_float_c(x,y,cstring(text)) end subroutine giza_intern_text_float_f2c subroutine giza_intern_ptext_f2c(x,y,angle,just,text) real(kind=c_double),intent(in) :: x,y,angle,just character(len=*),intent(in) :: text call giza_ptext_c(x,y,angle,just,cstring(text)) end subroutine giza_intern_ptext_f2c subroutine giza_intern_ptext_float_f2c(x,y,angle,just,text) real(kind=c_float),intent(in) :: x,y,angle,just character(len=*),intent(in) :: text call giza_ptext_float_c(x,y,angle,just,cstring(text)) end subroutine giza_intern_ptext_float_f2c subroutine giza_intern_qtext_f2c(x,y,angle,just,text,xbox,ybox) real(kind=c_double),intent(in) :: x,y,angle,just real(kind=c_double),intent(out):: xbox(4),ybox(4) character(len=*),intent(in) :: text call giza_qtext_c(x,y,angle,just,cstring(text),xbox,ybox) end subroutine giza_intern_qtext_f2c subroutine giza_intern_qtext_float_f2c(x,y,angle,just,text,xbox,ybox) real(kind=c_float),intent(in) :: x,y,angle,just real(kind=c_float),intent(out):: xbox(4),ybox(4) character(len=*),intent(in) :: text call giza_qtext_float_c(x,y,angle,just,cstring(text),xbox,ybox) end subroutine giza_intern_qtext_float_f2c subroutine giza_intern_qtextlen_f2c(units,text,xlen,ylen) integer(kind=c_int),intent(in) :: units character(len=*),intent(in) :: text real(kind=c_double),intent(out):: xlen,ylen call giza_qtextlen_c(units,cstring(text),xlen,ylen) end subroutine giza_intern_qtextlen_f2c subroutine giza_intern_qtextlen_float_f2c(units,text,xlen,ylen) integer(kind=c_int),intent(in) :: units character(len=*),intent(in) :: text real(kind=c_float),intent(out) :: xlen,ylen call giza_qtextlen_float_c(units,cstring(text),xlen,ylen) end subroutine giza_intern_qtextlen_float_f2c subroutine giza_intern_set_font_f2c(font) character(len=*),intent(in) :: font call giza_set_font_c(cstring(trim(font))) end subroutine giza_intern_set_font_f2c subroutine giza_intern_set_font_bold_f2c(font) character(len=*),intent(in) :: font call giza_set_font_bold_c(cstring(trim(font))) end subroutine giza_intern_set_font_bold_f2c subroutine giza_intern_set_font_italic_f2c(font) character(len=*),intent(in) :: font call giza_set_font_italic_c(cstring(trim(font))) end subroutine giza_intern_set_font_italic_f2c subroutine giza_intern_set_font_bold_italic_f2c(font) character(len=*),intent(in) :: font call giza_set_font_bold_italic_c(cstring(trim(font))) end subroutine giza_intern_set_font_bold_italic_f2c subroutine giza_format_number_f2c(mantissa,power,iform,string) integer(kind=c_int),intent(in) :: mantissa,power,iform character(len=*), intent(out) :: string character(kind=c_char), dimension(len(string)+1) :: stringc integer(kind=c_int) :: cstring_length cstring_length = len(string)+1 call giza_format_number_c(mantissa,power,iform,stringc,cstring_length) string = fstring(stringc) end subroutine giza_format_number_f2c subroutine giza_query_device_f2c(qtype,string) character(len=*),intent(in) :: qtype character(len=*),intent(out) :: string integer(kind=c_int) :: rval integer(kind=c_int) :: ierr character(kind=c_char), dimension(len(string)+1) :: stringc rval = len(string)+1 ierr = giza_query_device_c(cstring(trim(qtype)),stringc,rval) string = fstring(stringc) end subroutine giza_query_device_f2c !--------------------------------------------------------------------------- ! ! function to safely convert a string to c format (ie. with a terminating ! ascii null character) ! !--------------------------------------------------------------------------- function cstring(string) result(array) character(len=*), intent(in) :: string character(kind=c_char), dimension(len(string)+1) :: array integer :: i, ilen ilen = len(string) ! use the trimmed string length do i=1,ilen array(i)=string(i:i) end do array(ilen+1)=achar(0) end function cstring !--------------------------------------------------------------------------- ! ! function to safely convert a string from c format (ie. with a terminating ! ascii null character) back to a normal Fortran string ! !--------------------------------------------------------------------------- function fstring(array) character(kind=c_char), dimension(:), intent(in) :: array character(len=size(array)-1) :: fstring integer :: i fstring = '' do i=1,size(array) if (array(i).eq.achar(0)) exit fstring(i:i) = array(i) enddo end function fstring !--------------------------------------------------------------------------- !--------------------------------------------------------------------------- ! HIGH LEVEL FORTRAN INTERFACE !--------------------------------------------------------------------------- !--------------------------------------------------------------------------- subroutine giza_plot(y,x,img,dev,prefix,width,height,units,& xmin,xmax,ymin,ymax,imgmin,imgmax,affine,& vptxmin,vptxmax,vptymin,vptymax, & xlabel,ylabel,title,font,& ls,lw,ci,ch,symbol,just,axis,extend,filter,printid) real, intent(in), dimension(:), optional :: y,x real, intent(in), dimension(:,:), optional :: img integer, intent(in), optional :: units real, intent(in), optional :: width,height character(len=*), intent(in), optional :: dev,prefix real, intent(in), optional :: xmin,xmax,ymin,ymax,imgmin,imgmax real, intent(in), optional :: vptxmin,vptxmax,vptymin,vptymax character(len=*), intent(in), optional :: xlabel,ylabel,title character(len=*), intent(in), optional :: font integer, intent(in), optional :: ls,ci,symbol,axis,just,extend,filter real, intent(in), optional :: lw,ch real, dimension(6), intent(in), optional :: affine logical, intent(in), optional :: printid integer :: iunits,nx,ny,i,iaxis,ijust real(kind=c_double) :: xmini,xmaxi,ymini,ymaxi,valmin,valmax,dx,dy real(kind=c_double) :: vptxmini,vptxmaxi,vptymini,vptymaxi real(kind=c_double), dimension(6) :: affinei character(len=20) :: devi character(len=40) :: xlabeli,ylabeli,titlei real(kind=c_double), dimension(:), allocatable :: arrtmp real(kind=c_double) :: lw_c, ch_c integer(kind=c_int) :: n, nx_c, ny_c integer(kind=c_int) :: symbol_c, iextend, ifilter ! !--open giza device ! if (present(dev)) then devi = dev else devi = '?' endif if (present(width) .and. present(height)) then if (present(units)) then iunits = units else iunits = giza_units_pixels endif if (present(prefix)) then call giza_open(dev=devi,prefix=prefix,width=width,height=height,units=iunits) else call giza_open(dev=devi,width=width,height=height,units=iunits) endif else if (present(prefix)) then call giza_open(dev=devi,prefix=prefix) else call giza_open(dev=devi) endif endif ! !--max/min limits for plot window ! if (present(xmin)) then xmini = xmin else if (present(x)) then xmini = minval(x) else xmini = 0. endif endif if (present(xmax)) then xmaxi = xmax else if (present(x)) then xmaxi = maxval(x) else xmaxi = 1. endif endif if (present(ymin)) then ymini = ymin else if (present(y)) then ymini = minval(y) else ymini = 0. endif endif if (present(ymax)) then ymaxi = ymax else if (present(y)) then ymaxi = maxval(y) else ymaxi = 1. endif endif !--plot labels if (present(title)) then titlei = title else titlei = '' endif if (present(xlabel)) then xlabeli = xlabel else xlabeli = '' endif if (present(ylabel)) then ylabeli = ylabel else ylabeli = '' endif if (present(font)) then call giza_set_font(font) endif if (present(ch)) then ch_c = ch call giza_set_character_height(ch_c) endif if (present(just)) then ijust = just else ijust = 0 endif if (present(axis)) then iaxis = axis else iaxis = 0 endif if (present(vptxmin) .or. present(vptxmax) .or. present(vptymin) .or. present(vptymax)) then call giza_set_viewport_default() call giza_get_viewport(giza_units_normalized,vptxmini,vptxmaxi,vptymini,vptymaxi) if (present(vptxmin)) vptxmini = vptxmin if (present(vptxmax)) vptxmaxi = vptxmax if (present(vptymin)) vptymini = vptymin if (present(vptymax)) vptymaxi = vptymax call giza_set_viewport(vptxmini,vptxmaxi,vptymini,vptymaxi) if (ijust.eq.1) then call giza_set_window(xmini,xmaxi,ymini,ymaxi) else call giza_set_window_equal_scale(xmini,xmaxi,ymini,ymaxi) endif call giza_box("BCTSN",0.,0,"BCTSN",0.,0) call giza_label(xlabeli,ylabeli,titlei) else call giza_set_environment(xmini,xmaxi,ymini,ymaxi,ijust,iaxis) call giza_label(xlabeli,ylabeli,titlei) endif if (present(printid)) then if (printid) call giza_print_id() endif if (present(ls)) then call giza_set_line_style(ls) endif if (present(lw)) then lw_c = lw call giza_set_line_width(lw_c) endif if (present(ci)) then call giza_set_colour_index(ci) endif if (present(x) .and. present(y)) then n = min(size(x),size(y)) if (present(symbol)) then symbol_c = symbol call giza_points(n,real(x,kind=c_double),real(y,kind=c_double),symbol_c) else call giza_line(n,real(x,kind=c_double),real(y,kind=c_double)) endif elseif (present(x) .and. size(x).gt.1) then n = size(x) allocate(arrtmp(n)) do i=1,n arrtmp(i) = (i-1)/(real(n-1)) enddo if (present(symbol)) then symbol_c = symbol call giza_points(n,real(x,kind=c_double),arrtmp,symbol_c) else call giza_line(n,real(x,kind=c_double),arrtmp) endif deallocate(arrtmp) elseif (present(y) .and. size(y).gt.1) then n = size(y) allocate(arrtmp(n)) do i=1,n arrtmp(i) = (i-1)/(real(n-1)) enddo if (present(symbol)) then symbol_c = symbol call giza_points(n,arrtmp,real(y,kind=c_double),symbol_c) else call giza_line(n,arrtmp,real(y,kind=c_double)) endif deallocate(arrtmp) endif if (present(img)) then nx = size(img(:,1)) ny = size(img(1,:)) if (present(imgmin)) then valmin = imgmin else valmin = minval(img) endif if (present(imgmax)) then valmax = imgmax else valmax = maxval(img) endif if (present(affine)) then affinei = affine else dx = real((xmaxi - xmini)/real(nx)) dy = real((ymaxi - ymini)/real(ny)) affinei = (/dx,0.d0,0.d0,dy,xmini,ymini/) endif if (present(extend)) then iextend = extend else iextend = giza_extend_none endif if (present(filter)) then ifilter = filter else ifilter = giza_filter_default endif nx_c = nx; ny_c = ny call giza_render(nx_c,ny_c,real(img,kind=c_double),int(1,kind=c_int),& nx_c,int(1,kind=c_int),ny_c,valmin,valmax,iextend,ifilter,affinei) endif call giza_close() end subroutine giza_plot end module giza giza-1.5.0/src/giza-function-t.c000066400000000000000000000127561477367113400164500ustar00rootroot00000000000000/* giza - a scientific plotting library built on cairo * * Copyright (c) 2010 James Wetter and Daniel Price * Copyright (c) 2010-2012 Daniel Price * * This library is free software; and you are welcome to redistribute * it under the terms of the GNU General Public License * (GPL, see LICENSE file for details) and the provision that * this notice remains intact. If you modify this file, please * note section 5a) of the GPLv3 states that: * * a) The work must carry prominent notices stating that you modified * it, and giving a relevant date. * * This software is distributed "AS IS", with ABSOLUTELY NO WARRANTY. * See the GPL for specific language governing rights and limitations. * * The Original code is the giza plotting library. * * Contributor(s): * James Wetter * Daniel Price (main contact) */ #include "giza-private.h" #include "giza-transforms-private.h" #include "giza-stroke-private.h" #include "giza-io-private.h" #include /** * Drawing: giza_function_t * * Synopsis: Draw a curve defined by x = func(t), y = func(t), where * funcx(t) and funcy(t) are user-supplied routines * with a single double argument passed by reference, e.g. * double myfuncx(double* t) * double myfuncy(double* t) * * Input: * -funcx :- The parametrisation of the x value. * -funcy :- The parametrisation of the y value. * -n :- The number of segments to use to approximate the curve. * -tmin :- The lower bound on the domain of t. * -tmax :- The upper bound on the domain of t. * */ void giza_function_t (double (*funcx)(double *t), double (*funcy)(double *t), int n, double tmin, double tmax, int flag) { if (!_giza_check_device_ready ("giza_function_parametric")) return; if (n < 1) return; double tpt,xpt,ypt,dt,xpt0,ypt0; int i; dt = (tmax - tmin)/((double) n); xpt0 = funcx(&tmin); ypt0 = funcy(&tmin); if (flag==0) /* Find min/max in x,y automatically */ { /* and call giza_environment */ double xmin = xpt0; double xmax = xpt0; double ymin = ypt0; double ymax = ypt0; for (i = 1; i <= n; i++) { tpt = tmin + i*dt; xpt = funcx(&tpt); ypt = funcy(&tpt); if (xpt < xmin) xmin = xpt; if (xpt > xmax) xmax = xpt; if (ypt < ymin) ymin = ypt; if (ypt > ymax) ymax = ypt; } double dxlim = xmax - xmin; if (_giza_equal(dxlim,0.)) { xmax += 1.; xmin -= 1.; } else { xmax += 0.05*(xmax-xmin); xmin -= 0.05*(xmax-xmin); } double dylim = ymax - ymin; if (_giza_equal(dylim,0.)) { ymax += 1.; ymin -= 1.; } else { ymax += 0.05*(ymax-ymin); ymin -= 0.05*(ymax-ymin); } giza_set_environment(xmin,xmax,ymin,ymax,0,0); } int oldTrans = _giza_get_trans (); _giza_set_trans (GIZA_TRANS_WORLD); cairo_move_to(Dev[id].context,xpt0,ypt0); for (i = 1; i <= n; i++) { tpt = tmin + i*dt; xpt = funcx(&tpt); ypt = funcy(&tpt); cairo_line_to(Dev[id].context,xpt,ypt); } _giza_stroke (); _giza_set_trans (oldTrans); giza_flush_device (); } /** * Drawing: giza_function_t_float * * Synopsis: The same functionality as giza_function_t but uses floats. * Draw a curve defined by x = func(y), where * func(y) is a user-supplied routine * with a single float argument passed by reference, e.g. * float myfuncx(float* t) * float myfuncy(float* t) * * See Also: giza_function_t * */ void giza_function_t_float (float (*funcx)(float *t), float (*funcy)(float *t), int n, float tmin, float tmax, int flag) { if (!_giza_check_device_ready ("giza_function_parametric_float")) return; if (n < 1) return; float tpt,xpt,ypt,dt,xpt0,ypt0; int i; dt = (tmax - tmin)/((float) n); xpt0 = funcx(&tmin); ypt0 = funcy(&tmin); if (flag==0) /* Find min/max in x,y automatically */ { /* and call giza_environment */ float xmin = xpt0; float xmax = xpt0; float ymin = ypt0; float ymax = ypt0; for (i = 1; i <= n; i++) { tpt = tmin + i*dt; xpt = funcx(&tpt); ypt = funcy(&tpt); if (xpt < xmin) xmin = xpt; if (xpt > xmax) xmax = xpt; if (ypt < ymin) ymin = ypt; if (ypt > ymax) ymax = ypt; } float dxlim = xmax - xmin; if (_giza_equal(dxlim,0.)) { xmax += 1.f; xmin -= 1.f; } else { xmax += 0.05f*(xmax-xmin); xmin -= 0.05f*(xmax-xmin); } float dylim = ymax - ymin; if (_giza_equal(dylim,0.)) { ymax += 1.f; ymin -= 1.f; } else { ymax += 0.05f*(ymax-ymin); ymin -= 0.05f*(ymax-ymin); } giza_set_environment_float(xmin,xmax,ymin,ymax,0,0); } int oldTrans = _giza_get_trans (); _giza_set_trans (GIZA_TRANS_WORLD); cairo_move_to(Dev[id].context,(double) xpt0, (double) ypt0); for (i = 1; i <= n; i++) { tpt = tmin + i*dt; xpt = funcx(&tpt); ypt = funcy(&tpt); cairo_line_to(Dev[id].context,(double) xpt,(double) ypt); } _giza_stroke (); _giza_set_trans (oldTrans); giza_flush_device (); } giza-1.5.0/src/giza-function-x.c000066400000000000000000000104351477367113400164440ustar00rootroot00000000000000/* giza - a scientific plotting library built on cairo * * Copyright (c) 2010 James Wetter and Daniel Price * Copyright (c) 2010-2012 Daniel Price * * This library is free software; and you are welcome to redistribute * it under the terms of the GNU General Public License * (GPL, see LICENSE file for details) and the provision that * this notice remains intact. If you modify this file, please * note section 5a) of the GPLv3 states that: * * a) The work must carry prominent notices stating that you modified * it, and giving a relevant date. * * This software is distributed "AS IS", with ABSOLUTELY NO WARRANTY. * See the GPL for specific language governing rights and limitations. * * The Original code is the giza plotting library. * * Contributor(s): * James Wetter * Daniel Price (main contact) */ #include "giza-private.h" #include "giza-transforms-private.h" #include "giza-stroke-private.h" #include "giza-io-private.h" #include /** * Drawing: giza_function_x * * Synopsis: Draw a curve defined by y = func(x), where * func(x) is a user-supplied routine * with a single double argument, e.g. * double myfunc(double* x) * * Input: * -func :- The function describing y's dependence on x. * -n :- The number of segments with whichh to approximate the curve * -xmin :- The lower bound on the domain of x. * -xmax :- The upper bound on the domain of x. * */ void giza_function_x (double (*func)(double *x), int n, double xmin, double xmax, int flag) { if (!_giza_check_device_ready ("giza_function_x")) return; if (n < 1) return; double xpt,ypt,dx,ypt0; int i; dx = (xmax - xmin)/((double) n); ypt0 = func(&xmin); if (flag==0) /* Find min/max in y automatically */ { /* and call giza_environment */ double ymin = ypt0; double ymax = ypt0; for (i = 1; i <= n; i++) { xpt = xmin + i*dx; ypt = func(&xpt); if (ypt < ymin) ymin = ypt; if (ypt > ymax) ymax = ypt; } double dylim = ymax - ymin; if (_giza_equal(dylim,0.)) { ymax += 1.; ymin -= 1.; } else { ymax += 0.05*(ymax-ymin); ymin -= 0.05*(ymax-ymin); } giza_set_environment(xmin,xmax,ymin,ymax,0,0); } int oldTrans = _giza_get_trans (); _giza_set_trans (GIZA_TRANS_WORLD); cairo_move_to(Dev[id].context,xmin,ypt0); for (i = 1; i <= n; i++) { xpt = xmin + i*dx; ypt = func(&xpt); cairo_line_to(Dev[id].context,xpt,ypt); } _giza_stroke (); _giza_set_trans (oldTrans); giza_flush_device (); } /** * Drawing: giza_function_x_float * * Synopsis: Same functionality as giza_function_x but takes floats. * Draw a curve defined by y = func(x), where * func(x) is a user-supplied routine * with a single double argument, e.g. * float myfunc(float* x) * * See Also: giza_function_x * */ void giza_function_x_float (float (*func)(float *x), int n, float xmin, float xmax, int flag) { if (!_giza_check_device_ready ("giza_function_x_float")) return; if (n < 1) return; float xpt,ypt,dx,ypt0; int i; dx = (xmax - xmin)/((float) n); ypt0 = func(&xmin); if (flag==0) /* Find min/max in y automatically */ { /* and call giza_environment */ float ymin = ypt0; float ymax = ypt0; for (i = 1; i <= n; i++) { xpt = xmin + i*dx; ypt = func(&xpt); if (ypt < ymin) ymin = ypt; if (ypt > ymax) ymax = ypt; } float dylim = ymax - ymin; if (_giza_equal(dylim,0.)) { ymax += 1.f; ymin -= 1.f; } else { ymax += 0.05f*(ymax-ymin); ymin -= 0.05f*(ymax-ymin); } giza_set_environment_float(xmin,xmax,ymin,ymax,0,0); } int oldTrans = _giza_get_trans (); _giza_set_trans (GIZA_TRANS_WORLD); cairo_move_to(Dev[id].context,(double) xmin,(double) ypt0); for (i = 1; i <= n; i++) { xpt = xmin + i*dx; ypt = func(&xpt); cairo_line_to(Dev[id].context,(double) xpt,(double) ypt); } _giza_stroke (); _giza_set_trans (oldTrans); giza_flush_device (); } giza-1.5.0/src/giza-function-y.c000066400000000000000000000075671477367113400164610ustar00rootroot00000000000000/* giza - a scientific plotting library built on cairo * * Copyright (c) 2010 James Wetter and Daniel Price * Copyright (c) 2010-2012 Daniel Price * * This library is free software; and you are welcome to redistribute * it under the terms of the GNU General Public License * (GPL, see LICENSE file for details) and the provision that * this notice remains intact. If you modify this file, please * note section 5a) of the GPLv3 states that: * * a) The work must carry prominent notices stating that you modified * it, and giving a relevant date. * * This software is distributed "AS IS", with ABSOLUTELY NO WARRANTY. * See the GPL for specific language governing rights and limitations. * * The Original code is the giza plotting library. * * Contributor(s): * James Wetter * Daniel Price (main contact) */ #include "giza-private.h" #include "giza-transforms-private.h" #include "giza-stroke-private.h" #include "giza-io-private.h" #include /** * Draw a curve defined by x = func(y), where * func(y) is a user-supplied routine * with a single double argument, e.g. * * double myfunc(double* y) * */ void giza_function_y (double (*func)(double *y), int n, double ymin, double ymax, int flag) { if (!_giza_check_device_ready ("giza_function_y")) return; if (n < 1) return; double xpt,ypt,dy,xpt0; int i; dy = (ymax - ymin)/((double) n); xpt0 = func(&ymin); if (flag==0) /* Find min/max in y automatically */ { /* and call giza_environment */ double xmin = xpt0; double xmax = xpt0; for (i = 1; i <= n; i++) { ypt = ymin + i*dy; xpt = func(&ypt); if (xpt < xmin) xmin = xpt; if (xpt > xmax) xmax = xpt; } double dxlim = xmax - xmin; if (_giza_equal(dxlim,0.)) { xmax += 1.; xmin -= 1.; } else { xmax += 0.05*(xmax-xmin); xmax -= 0.05*(xmax-xmin); } giza_set_environment(xmin,xmax,ymin,ymax,0,0); } int oldTrans = _giza_get_trans (); _giza_set_trans (GIZA_TRANS_WORLD); cairo_move_to(Dev[id].context,xpt0,ymin); for (i = 1; i <= n; i++) { ypt = ymin + i*dy; xpt = func(&ypt); cairo_line_to(Dev[id].context,xpt,ypt); } _giza_stroke (); _giza_set_trans (oldTrans); giza_flush_device (); } /** * Draw a curve defined by x = func(y), where * func(y) is a user-supplied routine * with a single float argument, e.g. * * float myfunc(float* y) * */ void giza_function_y_float (float (*func)(float *y), int n, float ymin, float ymax, int flag) { if (!_giza_check_device_ready ("giza_function_y_float")) return; if (n < 1) return; float xpt,ypt,dy,xpt0; int i; dy = (ymax - ymin)/((float) n); xpt0 = func(&ymin); if (flag==0) /* Find min/max in y automatically */ { /* and call giza_environment */ float xmin = xpt0; float xmax = xpt0; for (i = 1; i <= n; i++) { ypt = ymin + i*dy; xpt = func(&ypt); if (xpt < xmin) xmin = xpt; if (xpt > xmax) xmax = xpt; } float dxlim = xmax - xmin; if (_giza_equal(dxlim,0.)) { xmax += 1.f; xmin -= 1.f; } else { xmax += 0.05f*(xmax-xmin); xmax -= 0.05f*(xmax-xmin); } giza_set_environment_float(xmin,xmax,ymin,ymax,0,0); } int oldTrans = _giza_get_trans (); _giza_set_trans (GIZA_TRANS_WORLD); cairo_move_to(Dev[id].context,(double) xpt0,(double) ymin); for (i = 1; i <= n; i++) { ypt = ymin + i*dy; xpt = func(&ypt); cairo_line_to(Dev[id].context,(double) xpt,(double) ypt); } _giza_stroke (); _giza_set_trans (oldTrans); giza_flush_device (); } giza-1.5.0/src/giza-get-key-press.c000066400000000000000000000040771477367113400170560ustar00rootroot00000000000000/* giza - a scientific plotting library built on cairo * * Copyright (c) 2010 James Wetter and Daniel Price * Copyright (c) 2010-2012 Daniel Price * * This library is free software; and you are welcome to redistribute * it under the terms of the GNU General Public License * (GPL, see LICENSE file for details) and the provision that * this notice remains intact. If you modify this file, please * note section 5a) of the GPLv3 states that: * * a) The work must carry prominent notices stating that you modified * it, and giving a relevant date. * * This software is distributed "AS IS", with ABSOLUTELY NO WARRANTY. * See the GPL for specific language governing rights and limitations. * * The Original code is the giza plotting library. * * Contributor(s): * James Wetter * Daniel Price (main contact) */ #include "giza-private.h" #include "giza-drivers-private.h" #include "giza-io-private.h" #include #include /** * Interactive: giza_get_key_press * * Synopsis: Returns the cursor position and key press after a key press. * * Input: * -x :- Gets set to the x world coord of the cursor. * -y :- Gets set to the y world coord of the cursor. * -ch :- Gets set to the character pressed. * * Return value: * -0 :- If the call was successful * -1 :- If the device has no cursor */ int giza_get_key_press (double *x, double *y, char *ch) { if (!_giza_check_device_ready ("giza_get_key_press")) return 1; double xanc[1], yanc[1]; xanc[0] = 0.; yanc[0] = 0.; return _giza_get_key_press (0, 0, 1, xanc, yanc, x, y, ch); } /** * Interactive giza_get_key_press_float * * Synopsis: Same functionality as giza_get_key_press, but uses floats. * * See Also: giza_get_key_press */ int giza_get_key_press_float (float *x, float *y,char *ch) { int success; double dx; double dy; double xanc[1], yanc[1]; xanc[0] = 0.; yanc[0] = 0.; success = _giza_get_key_press (0, 0, 1, xanc, yanc, &dx, &dy, ch); *x = (float) dx; *y = (float) dy; return success; } giza-1.5.0/src/giza-get-surface-size.c000066400000000000000000000035701477367113400175310ustar00rootroot00000000000000/* giza - a scientific plotting library built on cairo * * Copyright (c) 2010 James Wetter and Daniel Price * Copyright (c) 2010-2012 Daniel Price * * This library is free software; and you are welcome to redistribute * it under the terms of the GNU General Public License * (GPL, see LICENSE file for details) and the provision that * this notice remains intact. If you modify this file, please * note section 5a) of the GPLv3 states that: * * a) The work must carry prominent notices stating that you modified * it, and giving a relevant date. * * This software is distributed "AS IS", with ABSOLUTELY NO WARRANTY. * See the GPL for specific language governing rights and limitations. * * The Original code is the giza plotting library. * * Contributor(s): * James Wetter * Daniel Price (main contact) */ #include "giza-private.h" #include /** * Device: giza_get_surface_size * * Synopsis: Gets the size of the current surface that can be drawn to in device * units (pixels or points). * * Input: * -x1 :- Always gets set to 0.0 * -x2 :- Gets set to the width of the current surface * -y1 :- Always gets set to 0.0 * -y2 :- Gets set to the width of the surface */ void giza_get_surface_size (double *x1, double *x2, double *y1, double *y2) { if (!_giza_check_device_ready ("giza_get_surface_size")) return; *x1 = 0.; *x2 = Dev[id].width; *y1 = 0.; *y2 = Dev[id].height; } /** * Device: giza_get_surface_size_float * * Synopsis: Same functionality as giza_get_surface_size, but uses floats. * * See Also: giza_get_surface_size */ void giza_get_surface_size_float (float *x1, float *x2, float *y1, float *y2) { if (!_giza_check_device_ready ("giza_get_surface_size_float")) return; *x1 = 0.; *x2 = (float) Dev[id].width; *y1 = 0.; *y2 = (float) Dev[id].height; } giza-1.5.0/src/giza-hershey-to-utf.h000066400000000000000000000567331477367113400172550ustar00rootroot00000000000000/* * With infinite thanks to: * https://github.com/reinholtz/hershey-fonts-with-unicode * * Converted: * https://github.com/reinholtz/hershey-fonts-with-unicode/blob/master/hersheyunicodemap.csv * */ typedef struct _giza_hershey_to_utf_entry { int const hershey; char const* utf; } giza_hershey_to_utf_entry; static giza_hershey_to_utf_entry const giza_hershey_to_utf[] = { {1, "A"}, {2, "B"}, {3, "C"}, {4, "D"}, {5, "E"}, {6, "F"}, {7, "G"}, {8, "H"}, {9, "I"}, {10, "J"}, {11, "K"}, {12, "L"}, {13, "M"}, {14, "N"}, {15, "O"}, {16, "P"}, {17, "Q"}, {18, "R"}, {19, "S"}, {20, "T"}, {21, "U"}, {22, "V"}, {23, "W"}, {24, "X"}, {25, "Y"}, {26, "Z"}, {27, "\u0391"}, {28, "\u0392"}, {29, "\u0393"}, {30, "\u0394"}, {31, "\u0395"}, {32, "\u0396"}, {33, "\u0397"}, {34, "\u0398"}, {35, "\u0399"}, {36, "\u039a"}, {37, "\u039b"}, {38, "\u039c"}, {39, "\u039d"}, {40, "\u039e"}, {41, "\u039f"}, {42, "\u03a0"}, {43, "\u03a1"}, {44, "\u03a3"}, {45, "\u03a4"}, {46, "\u03a5"}, {47, "\u03a6"}, {48, "\u03a7"}, {49, "\u03a8"}, {50, "\u03a9"}, {197, "\u200b"}, {198, "\u2002"}, {199, "\u2003"}, {200, "0"}, {201, "1"}, {202, "2"}, {203, "3"}, {204, "4"}, {205, "5"}, {206, "6"}, {207, "7"}, {208, "8"}, {209, "9"}, {210, "."}, {211, ","}, {212, ":"}, {213, ";"}, {214, "!"}, {215, "?"}, {216, "\u2032"}, {217, "\u2033"}, {218, "\u00b0"}, {219, "$"}, {220, "/"}, {221, "("}, {222, ")"}, {223, "|"}, {224, "-"}, {225, "+"}, {226, "="}, {227, "\u00d7"}, {228, "*"}, {229, "\u00b7"}, {230, "\u2018"}, {231, "\u2019"}, {232, "\u2192"}, {233, "#"}, {234, "&"}, {235, "\u2311"}, {273, "\u00ae"}, {274, "\u00a9"}, {501, "A"}, {502, "B"}, {503, "C"}, {504, "D"}, {505, "E"}, {506, "F"}, {507, "G"}, {508, "H"}, {509, "I"}, {510, "J"}, {511, "K"}, {512, "L"}, {513, "M"}, {514, "N"}, {515, "O"}, {516, "P"}, {517, "Q"}, {518, "R"}, {519, "S"}, {520, "T"}, {521, "U"}, {522, "V"}, {523, "W"}, {524, "X"}, {525, "Y"}, {526, "Z"}, {527, "\u0391"}, {528, "\u0392"}, {529, "\u0393"}, {530, "\u0394"}, {531, "\u0395"}, {532, "\u0396"}, {533, "\u0397"}, {534, "\u0398"}, {535, "\u0399"}, {536, "\u039a"}, {537, "\u039b"}, {538, "\u039c"}, {539, "\u039d"}, {540, "\u039e"}, {541, "\u039f"}, {542, "\u03a0"}, {543, "\u03a1"}, {544, "\u03a3"}, {545, "\u03a4"}, {546, "\u03a5"}, {547, "\u03a6"}, {548, "\u03a7"}, {549, "\u03a8"}, {550, "\u03a9"}, {551, "A"}, {552, "B"}, {553, "C"}, {554, "D"}, {555, "E"}, {556, "F"}, {557, "G"}, {558, "H"}, {559, "I"}, {560, "J"}, {561, "K"}, {562, "L"}, {563, "M"}, {564, "N"}, {565, "O"}, {566, "P"}, {567, "Q"}, {568, "R"}, {569, "S"}, {570, "T"}, {571, "U"}, {572, "V"}, {573, "W"}, {574, "X"}, {575, "Y"}, {576, "Z"}, {583, "\u2207"}, {601, "a"}, {602, "b"}, {603, "c"}, {604, "d"}, {605, "e"}, {606, "f"}, {607, "g"}, {608, "h"}, {609, "i"}, {610, "j"}, {611, "k"}, {612, "l"}, {613, "m"}, {614, "n"}, {615, "o"}, {616, "p"}, {617, "q"}, {618, "r"}, {619, "s"}, {620, "t"}, {621, "u"}, {622, "v"}, {623, "w"}, {624, "x"}, {625, "y"}, {626, "z"}, {627, "\u03b1"}, {628, "\u03b2"}, {629, "\u03b3"}, {630, "\u03b4"}, {631, "\u03b5"}, {632, "\u03b6"}, {633, "\u03b7"}, {634, "\u03b8"}, {635, "\u03b9"}, {636, "\u03ba"}, {637, "\u03bb"}, {638, "\u03bc"}, {639, "\u03bd"}, {640, "\u03be"}, {641, "\u03bf"}, {642, "\u03c0"}, {643, "\u03c1"}, {644, "\u03c3"}, {645, "\u03c4"}, {646, "\u03c5"}, {647, "\u03c6"}, {648, "\u03c7"}, {649, "\u03c8"}, {650, "\u03c9"}, {651, "a"}, {652, "b"}, {653, "c"}, {654, "d"}, {655, "e"}, {656, "f"}, {657, "g"}, {658, "h"}, {659, "i"}, {660, "j"}, {661, "k"}, {662, "l"}, {663, "m"}, {664, "n"}, {665, "o"}, {666, "p"}, {667, "q"}, {668, "r"}, {669, "s"}, {670, "t"}, {671, "u"}, {672, "v"}, {673, "w"}, {674, "x"}, {675, "y"}, {676, "z"}, {677, "\ufffd"}, {683, "\ufffd"}, {684, "\u03b5"}, {685, "\u03b8"}, {686, "\u03d5"}, {687, "\u03da"}, {697, "\u200b"}, {698, "\u2002"}, {699, "\u2003"}, {700, "0"}, {701, "1"}, {702, "2"}, {703, "3"}, {704, "4"}, {705, "5"}, {706, "6"}, {707, "7"}, {708, "8"}, {709, "9"}, {710, "."}, {711, ","}, {712, ":"}, {713, ";"}, {714, "!"}, {715, "?"}, {716, "\u2032"}, {717, "\u2033"}, {718, "\u00b0"}, {719, "$"}, {720, "/"}, {721, "("}, {722, ")"}, {723, "|"}, {724, "-"}, {725, "+"}, {726, "="}, {727, "\u00d7"}, {728, "*"}, {729, "\u00b7"}, {730, "\u2018"}, {731, "\u2019"}, {732, "\u2192"}, {733, "#"}, {734, "&"}, {735, "\u2311"}, {737, "\u2225"}, {738, "\u27c2"}, {739, "\u2220"}, {740, "\u2e2b"}, {741, "\u2664"}, {742, "\u2661"}, {743, "\u2662"}, {744, "\u2667"}, {745, "\u2618"}, {746, "\u269c"}, {750, "\ufffd"}, {751, "\ufffd"}, {752, "\ufffd"}, {753, "\ufffd"}, {754, "\ufffd"}, {755, "\ufffd"}, {756, "\ufffd"}, {757, "\ufffd"}, {758, "\ufffd"}, {759, "\ufffd"}, {760, "\ufffd"}, {761, "\ufffd"}, {762, "\ufffd"}, {763, "\ufffd"}, {764, "\ufffd"}, {765, "\ufffd"}, {766, "\ufffd"}, {767, "\ufffd"}, {768, "\ufffd"}, {796, "\ufffd"}, {797, "\ufffd"}, {798, "\ufffd"}, {799, "\ufffd"}, {800, "\ufffd"}, {801, "\ufffd"}, {802, "\ufffd"}, {803, "\ufffd"}, {804, "\ufffd"}, {805, "\ufffd"}, {806, "\ufffd"}, {807, "\ufffd"}, {808, "\ufffd"}, {809, "\ufffd"}, {810, "\ufffd"}, {811, "\ufffd"}, {812, "\ufffd"}, {813, "\ufffd"}, {814, "\ufffd"}, {815, "\ufffd"}, {816, "\ufffd"}, {817, "\ufffd"}, {818, "\ufffd"}, {819, "\ufffd"}, {820, "\ufffd"}, {821, "\ufffd"}, {822, "\ufffd"}, {823, "\ufffd"}, {824, "\ufffd"}, {825, "\ufffd"}, {826, "\ufffd"}, {827, "\ufffd"}, {828, "\ufffd"}, {829, "\ufffd"}, {830, "\ufffd"}, {831, "\ufffd"}, {832, "\ufffd"}, {833, "\ufffd"}, {834, "\ufffd"}, {840, "\ufffd"}, {841, "\ufffd"}, {842, "\ufffd"}, {843, "\ufffd"}, {844, "\ufffd"}, {845, "\ufffd"}, {846, "\ufffd"}, {847, "\ufffd"}, {850, "\ufffd"}, {851, "\ufffd"}, {852, "\ufffd"}, {853, "\ufffd"}, {854, "\ufffd"}, {855, "\ufffd"}, {856, "\ufffd"}, {857, "\ufffd"}, {860, "\ufffd"}, {861, "\ufffd"}, {862, "\ufffd"}, {863, "\ufffd"}, {864, "\ufffd"}, {865, "\ufffd"}, {866, "\ufffd"}, {867, "\ufffd"}, {868, "\ufffd"}, {869, "\ufffd"}, {870, "\ufffd"}, {871, "\ufffd"}, {872, "\ufffd"}, {873, "\ufffd"}, {874, "\ufffd"}, {899, "\ufffd"}, {900, "\ufffd"}, {901, "\ufffd"}, {902, "\ufffd"}, {903, "\ufffd"}, {904, "\ufffd"}, {905, "\ufffd"}, {906, "\ufffd"}, {907, "\ufffd"}, {908, "\ufffd"}, {909, "\ufffd"}, {997, "\ufffd"}, {998, "\ufffd"}, {999, "\ufffd"}, {1001, "A"}, {1002, "B"}, {1003, "C"}, {1004, "D"}, {1005, "E"}, {1006, "F"}, {1007, "G"}, {1008, "H"}, {1009, "I"}, {1010, "J"}, {1011, "K"}, {1012, "L"}, {1013, "M"}, {1014, "N"}, {1015, "O"}, {1016, "P"}, {1017, "Q"}, {1018, "R"}, {1019, "S"}, {1020, "T"}, {1021, "U"}, {1022, "V"}, {1023, "W"}, {1024, "X"}, {1025, "Y"}, {1026, "Z"}, {1027, "\u0391"}, {1028, "\u0392"}, {1029, "\u0393"}, {1030, "\u0394"}, {1031, "\u0395"}, {1032, "\u0396"}, {1033, "\u0397"}, {1034, "\u0398"}, {1035, "\u0399"}, {1036, "\u039a"}, {1037, "\u039b"}, {1038, "\u039c"}, {1039, "\u039d"}, {1040, "\u039e"}, {1041, "\u039f"}, {1042, "\u03a0"}, {1043, "\u03a1"}, {1044, "\u03a3"}, {1045, "\u03a4"}, {1046, "\u03a5"}, {1047, "\u03a6"}, {1048, "\u03a7"}, {1049, "\u03a8"}, {1050, "\u03a9"}, {1051, "A"}, {1052, "B"}, {1053, "C"}, {1054, "D"}, {1055, "E"}, {1056, "F"}, {1057, "G"}, {1058, "H"}, {1059, "I"}, {1060, "J"}, {1061, "K"}, {1062, "L"}, {1063, "M"}, {1064, "N"}, {1065, "O"}, {1066, "P"}, {1067, "Q"}, {1068, "R"}, {1069, "S"}, {1070, "T"}, {1071, "U"}, {1072, "V"}, {1073, "W"}, {1074, "X"}, {1075, "Y"}, {1076, "Z"}, {1101, "a"}, {1102, "b"}, {1103, "c"}, {1104, "d"}, {1105, "e"}, {1106, "f"}, {1107, "g"}, {1108, "h"}, {1109, "i"}, {1110, "j"}, {1111, "k"}, {1112, "l"}, {1113, "m"}, {1114, "n"}, {1115, "o"}, {1116, "p"}, {1117, "q"}, {1118, "r"}, {1119, "s"}, {1120, "t"}, {1121, "u"}, {1122, "v"}, {1123, "w"}, {1124, "x"}, {1125, "y"}, {1126, "z"}, {1127, "\u03b1"}, {1128, "\u03b2"}, {1129, "\u03b3"}, {1130, "\u03b4"}, {1131, "\u03b5"}, {1132, "\u03b6"}, {1133, "\u03b7"}, {1134, "\u03b8"}, {1135, "\u03b9"}, {1136, "\u03ba"}, {1137, "\u03bb"}, {1138, "\u03bc"}, {1139, "\u03bd"}, {1140, "\u03be"}, {1141, "\u03bf"}, {1142, "\u03c0"}, {1143, "\u03c1"}, {1144, "\u03c3"}, {1145, "\u03c4"}, {1146, "\u03c5"}, {1147, "\u03c6"}, {1148, "\u03c7"}, {1149, "\u03c8"}, {1150, "\u03c9"}, {1151, "a"}, {1152, "b"}, {1153, "c"}, {1154, "d"}, {1155, "e"}, {1156, "f"}, {1157, "g"}, {1158, "h"}, {1159, "i"}, {1160, "j"}, {1161, "k"}, {1162, "l"}, {1163, "m"}, {1164, "n"}, {1165, "o"}, {1166, "p"}, {1167, "q"}, {1168, "r"}, {1169, "s"}, {1170, "t"}, {1171, "u"}, {1172, "v"}, {1173, "w"}, {1174, "x"}, {1175, "y"}, {1176, "z"}, {1177, "\ufb00"}, {1178, "\ufb01"}, {1179, "\ufb02"}, {1180, "\ufb03"}, {1181, "\ufb04"}, {1182, "\ufffd"}, {1184, "\u03b5"}, {1185, "\u03b8"}, {1186, "\u03d5"}, {1187, "\u03da"}, {1191, "\ufb00"}, {1192, "\ufb01"}, {1193, "\ufb02"}, {1194, "\ufb03"}, {1195, "\ufb04"}, {1196, "\ufffd"}, {1197, "\u200b"}, {1198, "\u2002"}, {1199, "\u2003"}, {1200, "0"}, {1201, "1"}, {1202, "2"}, {1203, "3"}, {1204, "4"}, {1205, "5"}, {1206, "6"}, {1207, "7"}, {1208, "8"}, {1209, "9"}, {1210, "."}, {1211, ","}, {1212, ":"}, {1213, ";"}, {1214, "!"}, {1215, "?"}, {1216, "\u2032"}, {1217, "\u2033"}, {1218, "\u00b0"}, {1219, "*"}, {1220, "/"}, {1221, "("}, {1222, ")"}, {1223, "["}, {1224, "]"}, {1225, "{"}, {1226, "}"}, {1227, "\u27e8"}, {1228, "\u27e9"}, {1229, "|"}, {1230, "\u2225"}, {1231, "\u2212"}, {1232, "+"}, {1233, "\u00b1"}, {1234, "\u2213"}, {1235, "\u2a2f"}, {1236, "\u22c5"}, {1237, "\u00f7"}, {1238, "="}, {1239, "\u2260"}, {1240, "\u2261"}, {1241, "<"}, {1242, ">"}, {1243, "\u2266"}, {1244, "\u2267"}, {1245, "\u221d"}, {1246, "\u223c"}, {1247, "\u0302"}, {1248, "\u0300"}, {1249, "\u0301"}, {1250, "\u0306"}, {1251, "\u0313"}, {1252, "\u0312"}, {1253, "\u0314"}, {1254, "\u031b"}, {1256, "\u2282"}, {1257, "\u222a"}, {1258, "\u2283"}, {1259, "\u2229"}, {1260, "\u2208"}, {1261, "\u2192"}, {1262, "\u2191"}, {1263, "\u2190"}, {1264, "\u2193"}, {1265, "Y"}, {1266, "\u2207"}, {1267, "\u221a"}, {1268, "\u222b"}, {1269, "\u222e"}, {1270, "\u221e"}, {1271, "%"}, {1272, "&"}, {1273, "@"}, {1274, "$"}, {1275, "#"}, {1276, "\u00a7"}, {1277, "\u2020"}, {1278, "\u2021"}, {1279, "\u2203"}, {1281, "\u0e82"}, {1282, "\u263f"}, {1283, "\ufffd"}, {1284, "\u23da"}, {1285, "\ufffd"}, {1286, "\u2643"}, {1287, "\u2644"}, {1288, "\u2645"}, {1289, "\u2646"}, {1290, "\u2647"}, {1291, "\u263d"}, {1292, "\u2604"}, {1293, "\u066d"}, {1294, "\u260a"}, {1295, "\u260b"}, {1401, "\u03a0"}, {1402, "\u03a3"}, {1403, "("}, {1404, ")"}, {1405, "["}, {1406, "]"}, {1407, "{"}, {1408, "}"}, {1409, "\u23b0"}, {1410, "\u23b1"}, {1411, "\u221a"}, {1412, "\u222b"}, {2001, "A"}, {2002, "B"}, {2003, "C"}, {2004, "D"}, {2005, "E"}, {2006, "F"}, {2007, "G"}, {2008, "H"}, {2009, "I"}, {2010, "J"}, {2011, "K"}, {2012, "L"}, {2013, "M"}, {2014, "N"}, {2015, "O"}, {2016, "P"}, {2017, "Q"}, {2018, "R"}, {2019, "S"}, {2020, "T"}, {2021, "U"}, {2022, "V"}, {2023, "W"}, {2024, "X"}, {2025, "Y"}, {2026, "Z"}, {2027, "\u0391"}, {2028, "\u0392"}, {2029, "\u0393"}, {2030, "\u0394"}, {2031, "\u0395"}, {2032, "\u0396"}, {2033, "\u0397"}, {2034, "\u0398"}, {2035, "\u0399"}, {2036, "\u039a"}, {2037, "\u039b"}, {2038, "\u039c"}, {2039, "\u039d"}, {2040, "\u039e"}, {2041, "\u039f"}, {2042, "\u03a0"}, {2043, "\u03a1"}, {2044, "\u03a3"}, {2045, "\u03a4"}, {2046, "\u03a5"}, {2047, "\u03a6"}, {2048, "\u03a7"}, {2049, "\u03a8"}, {2050, "\u03a9"}, {2051, "A"}, {2052, "B"}, {2053, "C"}, {2054, "D"}, {2055, "E"}, {2056, "F"}, {2057, "G"}, {2058, "H"}, {2059, "I"}, {2060, "J"}, {2061, "K"}, {2062, "L"}, {2063, "M"}, {2064, "N"}, {2065, "O"}, {2066, "P"}, {2067, "Q"}, {2068, "R"}, {2069, "S"}, {2070, "T"}, {2071, "U"}, {2072, "V"}, {2073, "W"}, {2074, "X"}, {2075, "Y"}, {2076, "Z"}, {2077, "\u2135"}, {2101, "a"}, {2102, "b"}, {2103, "c"}, {2104, "d"}, {2105, "e"}, {2106, "f"}, {2107, "g"}, {2108, "h"}, {2109, "i"}, {2110, "j"}, {2111, "k"}, {2112, "l"}, {2113, "m"}, {2114, "n"}, {2115, "o"}, {2116, "p"}, {2117, "q"}, {2118, "r"}, {2119, "s"}, {2120, "t"}, {2121, "u"}, {2122, "v"}, {2123, "w"}, {2124, "x"}, {2125, "y"}, {2126, "z"}, {2127, "\u03b1"}, {2128, "\u03b2"}, {2129, "\u03b3"}, {2130, "\u03b4"}, {2131, "\u03b5"}, {2132, "\u03b6"}, {2133, "\u03b7"}, {2134, "\u03b8"}, {2135, "\u03b9"}, {2136, "\u03ba"}, {2137, "\u03bb"}, {2138, "\u03bc"}, {2139, "\u03bd"}, {2140, "\u03be"}, {2141, "\u03bf"}, {2142, "\u03c0"}, {2143, "\u03c1"}, {2144, "\u03c3"}, {2145, "\u03c4"}, {2146, "\u03c5"}, {2147, "\u03c6"}, {2148, "\u03c7"}, {2149, "\u03c8"}, {2150, "\u03c9"}, {2151, "a"}, {2152, "b"}, {2153, "c"}, {2154, "d"}, {2155, "e"}, {2156, "f"}, {2157, "g"}, {2158, "h"}, {2159, "i"}, {2160, "j"}, {2161, "k"}, {2162, "l"}, {2163, "m"}, {2164, "n"}, {2165, "o"}, {2166, "p"}, {2167, "q"}, {2168, "r"}, {2169, "s"}, {2170, "t"}, {2171, "u"}, {2172, "v"}, {2173, "w"}, {2174, "x"}, {2175, "y"}, {2176, "z"}, {2177, "\ufb00"}, {2178, "\ufb01"}, {2179, "\ufb02"}, {2180, "\ufb03"}, {2181, "\ufb04"}, {2182, "\ufffd"}, {2184, "\u03b5"}, {2185, "\u03b8"}, {2186, "\u03d5"}, {2187, "\u03da"}, {2190, "\u2118"}, {2191, "\ufb00"}, {2192, "\ufb01"}, {2193, "\ufb02"}, {2194, "\ufb03"}, {2195, "\ufb04"}, {2196, "\ufffd"}, {2197, "\u200b"}, {2198, "\u2002"}, {2199, "\u2003"}, {2200, "0"}, {2201, "1"}, {2202, "2"}, {2203, "3"}, {2204, "4"}, {2205, "5"}, {2206, "6"}, {2207, "7"}, {2208, "8"}, {2209, "9"}, {2210, "."}, {2211, ","}, {2212, ":"}, {2213, ";"}, {2214, "!"}, {2215, "?"}, {2216, "\u2032"}, {2217, "\u2033"}, {2218, "\u00b0"}, {2219, "*"}, {2220, "/"}, {2221, "("}, {2222, ")"}, {2223, "["}, {2224, "]"}, {2225, "{"}, {2226, "}"}, {2227, "\u27e8"}, {2228, "\u27e9"}, {2229, "|"}, {2230, "\u2225"}, {2231, "\u2212"}, {2232, "+"}, {2233, "\u00b1"}, {2234, "\u2213"}, {2235, "\u2a2f"}, {2236, "\u22c5"}, {2237, "\u00f7"}, {2238, "="}, {2239, "\u2260"}, {2240, "\u2261"}, {2241, "<"}, {2242, ">"}, {2243, "\u2266"}, {2244, "\u2267"}, {2245, "\u221d"}, {2246, "\u223c"}, {2247, "\u0302"}, {2248, "\u0300"}, {2249, "\u0301"}, {2250, "\u0306"}, {2251, "\u0313"}, {2252, "\u0312"}, {2253, "\u0314"}, {2254, "\u031b"}, {2255, "\u221a"}, {2256, "\u2282"}, {2257, "\u222a"}, {2258, "\u2283"}, {2259, "\u2229"}, {2260, "\u2208"}, {2261, "\u2192"}, {2262, "\u2191"}, {2263, "\u2190"}, {2264, "\u2193"}, {2265, "Y"}, {2266, "\u2207"}, {2267, "\u221a"}, {2268, "\u222b"}, {2269, "\u222e"}, {2270, "\u221e"}, {2271, "%"}, {2272, "&"}, {2273, "@"}, {2274, "$"}, {2275, "#"}, {2276, "\u00a7"}, {2277, "\u2020"}, {2278, "\u2021"}, {2279, "\u2203"}, {2281, "\u2609"}, {2282, "\u263f"}, {2283, "\u2640"}, {2284, "\u2641"}, {2285, "\u2642"}, {2286, "\u2643"}, {2287, "\u2644"}, {2288, "\u26e2"}, {2289, "\u2646"}, {2290, "\u2647"}, {2291, "\u263e"}, {2292, "\u2604"}, {2293, "\u066d"}, {2294, "\u260a"}, {2295, "\u260b"}, {2301, "\u2648"}, {2302, "\u2649"}, {2303, "\u264a"}, {2304, "\u264b"}, {2305, "\u264c"}, {2306, "\u264d"}, {2307, "\u264e"}, {2308, "\U0001f982"}, {2309, "\u2650"}, {2310, "\ufffd"}, {2311, "\u2652"}, {2312, "\u2653"}, {2317, "\u00b7"}, {2318, "\ufffd"}, {2319, "\ufffd"}, {2320, "\U0001d15d"}, {2321, "\U0001d15e"}, {2322, "\u2669"}, {2323, "\u266f"}, {2324, "\u266e"}, {2325, "\u266d"}, {2326, "\U0001d13b"}, {2327, "\U0001d13c"}, {2328, "\U0001d13d"}, {2329, "\U0001d13e"}, {2330, "\U0001d11e"}, {2331, "\U0001d122"}, {2332, "\U0001d121"}, {2367, "\u00b7"}, {2368, "\ufffd"}, {2369, "\ufffd"}, {2370, "\U0001d15d"}, {2371, "\U0001d15e"}, {2372, "\u2669"}, {2373, "\u266f"}, {2374, "\u266e"}, {2375, "\u266d"}, {2376, "\U0001d13b"}, {2377, "\U0001d13c"}, {2378, "\U0001d13d"}, {2379, "\U0001d13e"}, {2380, "\U0001d11e"}, {2381, "\U0001d122"}, {2382, "\ufffd"}, {2401, "\u03a0"}, {2402, "\u03a3"}, {2403, "("}, {2404, ")"}, {2405, "["}, {2406, "]"}, {2407, "{"}, {2408, "}"}, {2409, "\u23b0"}, {2410, "\u23b1"}, {2411, "\u221a"}, {2412, "\u222b"}, {2501, "A"}, {2502, "B"}, {2503, "C"}, {2504, "D"}, {2505, "E"}, {2506, "F"}, {2507, "G"}, {2508, "H"}, {2509, "I"}, {2510, "J"}, {2511, "K"}, {2512, "L"}, {2513, "M"}, {2514, "N"}, {2515, "O"}, {2516, "P"}, {2517, "Q"}, {2518, "R"}, {2519, "S"}, {2520, "T"}, {2521, "U"}, {2522, "V"}, {2523, "W"}, {2524, "X"}, {2525, "Y"}, {2526, "Z"}, {2551, "A"}, {2552, "B"}, {2553, "C"}, {2554, "D"}, {2555, "E"}, {2556, "F"}, {2557, "G"}, {2558, "H"}, {2559, "I"}, {2560, "J"}, {2561, "K"}, {2562, "L"}, {2563, "M"}, {2564, "N"}, {2565, "O"}, {2566, "P"}, {2567, "Q"}, {2568, "R"}, {2569, "S"}, {2570, "T"}, {2571, "U"}, {2572, "V"}, {2573, "W"}, {2574, "X"}, {2575, "Y"}, {2576, "Z"}, {2601, "a"}, {2602, "b"}, {2603, "c"}, {2604, "d"}, {2605, "e"}, {2606, "f"}, {2607, "g"}, {2608, "h"}, {2609, "i"}, {2610, "j"}, {2611, "k"}, {2612, "l"}, {2613, "m"}, {2614, "n"}, {2615, "o"}, {2616, "p"}, {2617, "q"}, {2618, "r"}, {2619, "s"}, {2620, "t"}, {2621, "u"}, {2622, "v"}, {2623, "w"}, {2624, "x"}, {2625, "y"}, {2626, "z"}, {2651, "a"}, {2652, "b"}, {2653, "c"}, {2654, "d"}, {2655, "e"}, {2656, "f"}, {2657, "g"}, {2658, "h"}, {2659, "i"}, {2660, "j"}, {2661, "k"}, {2662, "l"}, {2663, "m"}, {2664, "n"}, {2665, "o"}, {2666, "p"}, {2667, "q"}, {2668, "r"}, {2669, "s"}, {2670, "t"}, {2671, "u"}, {2672, "v"}, {2673, "w"}, {2674, "x"}, {2675, "y"}, {2676, "z"}, {2697, "\u200b"}, {2698, "\u2002"}, {2699, "\u2003"}, {2700, "0"}, {2701, "1"}, {2702, "2"}, {2703, "3"}, {2704, "4"}, {2705, "5"}, {2706, "6"}, {2707, "7"}, {2708, "8"}, {2709, "9"}, {2710, "."}, {2711, ","}, {2712, ":"}, {2713, ";"}, {2714, "!"}, {2715, "?"}, {2716, "\u2018"}, {2717, "\u2019"}, {2718, "&"}, {2719, "$"}, {2720, "/"}, {2721, "("}, {2722, ")"}, {2723, "*"}, {2724, "-"}, {2725, "+"}, {2726, "="}, {2727, "\u2032"}, {2728, "\u2033"}, {2729, "\u00b0"}, {2747, "\u200b"}, {2748, "\u2002"}, {2749, "\u2003"}, {2750, "0"}, {2751, "1"}, {2752, "2"}, {2753, "3"}, {2754, "4"}, {2755, "5"}, {2756, "6"}, {2757, "7"}, {2758, "8"}, {2759, "9"}, {2760, "."}, {2761, ","}, {2762, ":"}, {2763, ";"}, {2764, "!"}, {2765, "?"}, {2766, "\u2018"}, {2767, "\u2019"}, {2768, "&"}, {2769, "$"}, {2770, "/"}, {2771, "("}, {2772, ")"}, {2773, "*"}, {2774, "-"}, {2775, "+"}, {2776, "="}, {2777, "\u2032"}, {2778, "\u2033"}, {2779, "\u00b0"}, {2801, "\u0410"}, {2802, "\u0411"}, {2803, "\u0412"}, {2804, "\u0413"}, {2805, "\u0414"}, {2806, "\u0415"}, {2807, "\u0416"}, {2808, "\u0417"}, {2809, "\u0418"}, {2810, "\u0419"}, {2811, "\u041a"}, {2812, "\u041b"}, {2813, "\u041c"}, {2814, "\u041d"}, {2815, "\u041e"}, {2816, "\u041f"}, {2817, "\u0420"}, {2818, "\u0421"}, {2819, "\u0422"}, {2820, "\u0423"}, {2821, "\u0424"}, {2822, "\u0425"}, {2823, "\u0426"}, {2824, "\u0427"}, {2825, "\u0428"}, {2826, "\u0429"}, {2827, "\u042a"}, {2828, "\u042b"}, {2829, "\u042c"}, {2830, "\u042d"}, {2831, "\u042e"}, {2832, "\u042f"}, {2901, "\u0430"}, {2902, "\u0431"}, {2903, "\u0432"}, {2904, "\u0433"}, {2905, "\u0434"}, {2906, "\u0435"}, {2907, "\u0436"}, {2908, "\u0437"}, {2909, "\u0438"}, {2910, "\u0439"}, {2911, "\u043a"}, {2912, "\u043b"}, {2913, "\u043c"}, {2914, "\u043d"}, {2915, "\u043e"}, {2916, "\u043f"}, {2917, "\u0440"}, {2918, "\u0441"}, {2919, "\u0442"}, {2920, "\u0443"}, {2921, "\u0444"}, {2922, "\u0445"}, {2923, "\u0446"}, {2924, "\u0447"}, {2925, "\u0448"}, {2926, "\u0449"}, {2927, "\u044a"}, {2928, "\u044b"}, {2929, "\u044c"}, {2930, "\u044d"}, {2931, "\u044e"}, {2932, "\u044f"}, {3001, "A"}, {3002, "B"}, {3003, "C"}, {3004, "D"}, {3005, "E"}, {3006, "F"}, {3007, "G"}, {3008, "H"}, {3009, "I"}, {3010, "J"}, {3011, "K"}, {3012, "L"}, {3013, "M"}, {3014, "N"}, {3015, "O"}, {3016, "P"}, {3017, "Q"}, {3018, "R"}, {3019, "S"}, {3020, "T"}, {3021, "U"}, {3022, "V"}, {3023, "W"}, {3024, "X"}, {3025, "Y"}, {3026, "Z"}, {3051, "A"}, {3052, "B"}, {3053, "C"}, {3054, "D"}, {3055, "E"}, {3056, "F"}, {3057, "G"}, {3058, "H"}, {3059, "I"}, {3060, "J"}, {3061, "K"}, {3062, "L"}, {3063, "M"}, {3064, "N"}, {3065, "O"}, {3066, "P"}, {3067, "Q"}, {3068, "R"}, {3069, "S"}, {3070, "T"}, {3071, "U"}, {3072, "V"}, {3073, "W"}, {3074, "X"}, {3075, "Y"}, {3076, "Z"}, {3101, "a"}, {3102, "b"}, {3103, "c"}, {3104, "d"}, {3105, "e"}, {3106, "f"}, {3107, "g"}, {3108, "h"}, {3109, "i"}, {3110, "j"}, {3111, "k"}, {3112, "l"}, {3113, "m"}, {3114, "n"}, {3115, "o"}, {3116, "p"}, {3117, "q"}, {3118, "r"}, {3119, "s"}, {3120, "t"}, {3121, "u"}, {3122, "v"}, {3123, "w"}, {3124, "x"}, {3125, "y"}, {3126, "z"}, {3151, "a"}, {3152, "b"}, {3153, "c"}, {3154, "d"}, {3155, "e"}, {3156, "f"}, {3157, "g"}, {3158, "h"}, {3159, "i"}, {3160, "j"}, {3161, "k"}, {3162, "l"}, {3163, "m"}, {3164, "n"}, {3165, "o"}, {3166, "p"}, {3167, "q"}, {3168, "r"}, {3169, "s"}, {3170, "t"}, {3171, "u"}, {3172, "v"}, {3173, "w"}, {3174, "x"}, {3175, "y"}, {3176, "z"}, {3197, "\u200b"}, {3198, "\u2002"}, {3199, "\u2003"}, {3200, "0"}, {3201, "1"}, {3202, "2"}, {3203, "3"}, {3204, "4"}, {3205, "5"}, {3206, "6"}, {3207, "7"}, {3208, "8"}, {3209, "9"}, {3210, "."}, {3211, ","}, {3212, ":"}, {3213, ";"}, {3214, "!"}, {3215, "?"}, {3216, "\u2018"}, {3217, "\u2019"}, {3218, "&"}, {3219, "$"}, {3220, "/"}, {3221, "("}, {3222, ")"}, {3223, "*"}, {3224, "-"}, {3225, "+"}, {3226, "="}, {3227, "\u2032"}, {3228, "\u2033"}, {3229, "\u00b0"}, {3247, "\u200b"}, {3248, "\u2002"}, {3249, "\u2003"}, {3250, "0"}, {3251, "1"}, {3252, "2"}, {3253, "3"}, {3254, "4"}, {3255, "5"}, {3256, "6"}, {3257, "7"}, {3258, "8"}, {3259, "9"}, {3260, "."}, {3261, ","}, {3262, ":"}, {3263, ";"}, {3264, "!"}, {3265, "?"}, {3266, "\u2018"}, {3267, "\u2019"}, {3268, "&"}, {3269, "$"}, {3270, "/"}, {3271, "("}, {3272, ")"}, {3273, "*"}, {3274, "-"}, {3275, "+"}, {3276, "="}, {3277, "\u2032"}, {3278, "\u2033"}, {3279, "\u00b0"}, {3301, "A"}, {3302, "B"}, {3303, "C"}, {3304, "D"}, {3305, "E"}, {3306, "F"}, {3307, "G"}, {3308, "H"}, {3309, "I"}, {3310, "J"}, {3311, "K"}, {3312, "L"}, {3313, "M"}, {3314, "N"}, {3315, "O"}, {3316, "P"}, {3317, "Q"}, {3318, "R"}, {3319, "S"}, {3320, "T"}, {3321, "U"}, {3322, "V"}, {3323, "W"}, {3324, "X"}, {3325, "Y"}, {3326, "Z"}, {3401, "a"}, {3402, "b"}, {3403, "c"}, {3404, "d"}, {3405, "e"}, {3406, "f"}, {3407, "g"}, {3408, "h"}, {3409, "i"}, {3410, "j"}, {3411, "k"}, {3412, "l"}, {3413, "m"}, {3414, "n"}, {3415, "o"}, {3416, "p"}, {3417, "q"}, {3418, "r"}, {3419, "s"}, {3420, "t"}, {3421, "u"}, {3422, "v"}, {3423, "w"}, {3424, "x"}, {3425, "y"}, {3426, "z"}, {3427, "\ufffd"}, {3428, "\ufffd"}, {3429, "\ufffd"}, {3501, "A"}, {3502, "B"}, {3503, "C"}, {3504, "D"}, {3505, "E"}, {3506, "F"}, {3507, "G"}, {3508, "H"}, {3509, "I"}, {3510, "J"}, {3511, "K"}, {3512, "L"}, {3513, "M"}, {3514, "N"}, {3515, "O"}, {3516, "P"}, {3517, "Q"}, {3518, "R"}, {3519, "S"}, {3520, "T"}, {3521, "U"}, {3522, "V"}, {3523, "W"}, {3524, "X"}, {3525, "Y"}, {3526, "Z"}, {3601, "a"}, {3602, "b"}, {3603, "c"}, {3604, "d"}, {3605, "e"}, {3606, "f"}, {3607, "g"}, {3608, "h"}, {3609, "i"}, {3610, "j"}, {3611, "k"}, {3612, "l"}, {3613, "m"}, {3614, "n"}, {3615, "o"}, {3616, "p"}, {3617, "q"}, {3618, "r"}, {3619, "s"}, {3620, "t"}, {3621, "u"}, {3622, "v"}, {3623, "w"}, {3624, "x"}, {3625, "y"}, {3626, "z"}, {3697, "\u200b"}, {3698, "\u2002"}, {3699, "\u2003"}, {3700, "0"}, {3701, "1"}, {3702, "2"}, {3703, "3"}, {3704, "4"}, {3705, "5"}, {3706, "6"}, {3707, "7"}, {3708, "8"}, {3709, "9"}, {3710, "."}, {3711, ","}, {3712, ":"}, {3713, ";"}, {3714, "!"}, {3715, "?"}, {3716, "\u2018"}, {3717, "\u2019"}, {3718, "&"}, {3719, "$"}, {3720, "/"}, {3721, "("}, {3722, ")"}, {3723, "*"}, {3724, "-"}, {3725, "+"}, {3726, "="}, {3727, "\u2032"}, {3728, "\u2033"}, {3729, "\u00b0"}, {3801, "A"}, {3802, "B"}, {3803, "C"}, {3804, "D"}, {3805, "E"}, {3806, "F"}, {3807, "G"}, {3808, "H"}, {3809, "I"}, {3810, "J"}, {3811, "K"}, {3812, "L"}, {3813, "M"}, {3814, "N"}, {3815, "O"}, {3816, "P"}, {3817, "Q"}, {3818, "R"}, {3819, "S"}, {3820, "T"}, {3821, "U"}, {3822, "V"}, {3823, "W"}, {3824, "X"}, {3825, "Y"}, {3826, "Z"}, {3901, "a"}, {3902, "b"}, {3903, "c"}, {3904, "d"}, {3905, "e"}, {3906, "f"}, {3907, "g"}, {3908, "h"}, {3909, "i"}, {3910, "j"}, {3911, "k"}, {3912, "l"}, {3913, "m"}, {3914, "n"}, {3915, "o"}, {3916, "p"}, {3917, "q"}, {3918, "r"}, {3919, "s"}, {3920, "t"}, {3921, "u"}, {3922, "v"}, {3923, "w"}, {3924, "x"}, {3925, "y"}, {3926, "z"}, /* leave this entry as last - it's a sentinel */ { -1, "" } }; giza-1.5.0/src/giza-histogram.c000066400000000000000000000127431477367113400163530ustar00rootroot00000000000000/* giza - a scientific plotting library built on cairo * * Copyright (c) 2010 James Wetter and Daniel Price * Copyright (c) 2010-2014 Daniel Price * * This library is free software; and you are welcome to redistribute * it under the terms of the GNU General Public License * (GPL, see LICENSE file for details) and the provision that * this notice remains intact. If you modify this file, please * note section 5a) of the GPLv3 states that: * * a) The work must carry prominent notices stating that you modified * it, and giving a relevant date. * * This software is distributed "AS IS", with ABSOLUTELY NO WARRANTY. * See the GPL for specific language governing rights and limitations. * * The Original code is the giza plotting library. * * Contributor(s): * James Wetter * Daniel Price (main contact) */ #include "giza-private.h" #include "giza-transforms-private.h" #include "giza-fill-private.h" #include /** * Device: giza_histogram * * Synopsis: Plot a histogram (unbinned) * * Input: * -n :- number of data values * -dat :- data (n values) * -min :- minimum data value to use in histogram * -max :- maximum data value to use in histogram * -nbin :- number of bins * -flag :- flag to indicate page changes, see below * * See Also: giza_histogram_binned, giza_histogram_float * * Flag: * -0 :- giza_histogram calls giza_environment to set up new plotting page * -1 :- plot in current window and viewport * -2 :- with filled area style, calls giza_environment * -3 :- with filled area style, in current window and viewport * -4 :- bins drawn as simple outlines, as in giza_histogram_binned, calls giza_environment * -5 :- bins drawn as simple outlines, but in current window and viewport * Other values treated as 1 * */ void giza_histogram (int n, const double *dat, double min, double max, int nbin, int flag) { if (!_giza_check_device_ready ("giza_histogram")) return; int i,ibin; int nmax = 0; double bin_width = (max - min)/((double) nbin); int ninbin[nbin]; for (ibin=0;ibin= 0 && ibin < nbin) { ninbin[ibin] += 1; if (ninbin[ibin] > nmax) nmax = ninbin[ibin]; } } double xmin,xmax,ymin,ymax; int nval,oldFill; ymax = nmax; ymax = giza_round(1.01*ymax, &nval); giza_get_fill(&oldFill); if (flag % 2 == 0) giza_set_environment(min,max,0.,(double) ymax,0,0); /* set up plotting environment and options */ switch (flag) { case 5: default: giza_set_fill(GIZA_FILL_HOLLOW); break; case 3: giza_set_fill(GIZA_FILL_SOLID); break; } int oldTrans = _giza_get_trans (); _giza_set_trans (GIZA_TRANS_WORLD); /* plot the bars of the histogram */ for (ibin=0;ibin * Daniel Price (main contact) */ void _giza_warning (const char *source, const char *message, ...); void _giza_message (const char *message); void _giza_error (const char *source, const char *message, ...); int _giza_prompt_for_device (void); void _giza_display_devices (void); int _giza_default_device (void); void _giza_newpage_prompt (void); int _giza_get_prompting (void); giza-1.5.0/src/giza-io.c000066400000000000000000000134331477367113400147620ustar00rootroot00000000000000/* giza - a scientific plotting library built on cairo * * Copyright (c) 2010 James Wetter and Daniel Price * Copyright (c) 2010-2015 Daniel Price * * This library is free software; and you are welcome to redistribute * it under the terms of the GNU General Public License * (GPL, see LICENSE file for details) and the provision that * this notice remains intact. If you modify this file, please * note section 5a) of the GPLv3 states that: * * a) The work must carry prominent notices stating that you modified * it, and giving a relevant date. * * This software is distributed "AS IS", with ABSOLUTELY NO WARRANTY. * See the GPL for specific language governing rights and limitations. * * The Original code is the giza plotting library. * * Contributor(s): * James Wetter * Daniel Price (main contact) */ #include "giza-private.h" #include "giza-drivers-private.h" #include "giza-io-private.h" #include "giza-warnings-private.h" #include #include #include #include #include /** * If warnings are switched on displays a warning message to stderr */ void _giza_warning (const char *source, const char *message, ...) { if (_giza_get_warnings ()) { va_list arg; fprintf(stderr, "%%giza - Warning - %s: ", source); va_start (arg, message); vfprintf (stderr, message, arg); va_end (arg); fprintf(stderr, "\n"); } } /** * Prints a message to stdout */ void _giza_message (const char *message) { fprintf (stdout, "%%giza: %s\n", message); } /** * Prints the error to stderr. */ void _giza_error (const char* source, const char *message, ...) { va_list arg; fprintf(stderr, "%%giza - ERROR - %s: ", source); va_start (arg, message); vfprintf (stderr, message, arg); va_end (arg); fprintf(stderr, "\n"); } /** * NOTE: should have a default. * Prompts the user to enter a device */ int _giza_prompt_for_device (void) { char input[GIZA_MAX_DEVSTRING + 5]; /* allow enough for prefix + 5 char extension */ int count = 0; int devType = GIZA_DEVICE_IV; /*int err;*/ do { printf ("Graphics device/type (? to see list, default /xw):"); /* err = scanf ("%s", input); */ /* * Use fgets here instead of scanf so that we can accept a * newline character as the default input */ char *p = fgets(input,sizeof(input)-1,stdin); if (p != NULL) { size_t last = strlen(input) - 1; if (input[last] == '\n') { if (last == 0) { devType = _giza_default_device (); break; } else { input[last] = '\0'; } } if (!p) { _giza_error ("_giza_prompt_for_device", "Error reading input"); } else { char const *devTypeStr; _giza_split_device_string (input, &devTypeStr); devType = _giza_device_to_int (devTypeStr); } if (devType == GIZA_DEVICE_IV) { _giza_display_devices (); } else { break; } } /* flush stdin here so we don't get repeated entries into fgets */ fflush(stdin); /* int ch; while (((ch = getchar()) != EOF) && (ch != '\n')); */ count++; } while (count>0); /*(count < 3); */ return devType; } /** * This routine prints the available devices. */ void _giza_display_devices (void) { char *deviceList; _giza_init_device_list (&deviceList); printf ("%%giza version %s built with cairo v%s\n\n", GIZA_VERSION_STRING,CAIRO_VERSION_STRING); printf ("%s\n", deviceList); _giza_free_device_list (deviceList); } void _giza_newpage_prompt (void) { char input[2]; printf (" Press RETURN for next page: "); /* * Use fgets here instead of scanf so that we can accept a * newline character as the default input */ if( fgets(input,2,stdin)==NULL ) _giza_error("giza_newpage_prompt", "Failed to read character from stdin"); } /** * This routine gives the default device */ int _giza_default_device (void) { return GIZA_DEVICE_XW; } /** * constructs file name for log file * using current date and time */ void _giza_get_log_file (char *string, int len) { time_t now; time(&now); struct tm tstruct = *localtime(&now); strftime(string,len,"giza-%Y-%m-%d-%H:%M:%S.png",&tstruct); } /** * writes current cairo surface to png file * with a filename based on the current date and time */ void _giza_write_log_file (cairo_surface_t *surface) { char msg[120]; char string[80]; _giza_get_log_file(string,sizeof(string)); sprintf(msg,"writing %s",string); _giza_message(msg); cairo_status_t status; status = cairo_surface_write_to_png(surface,string); if (status != CAIRO_STATUS_SUCCESS) _giza_error("log file",cairo_status_to_string(status)); } /** * Settings: giza_begin_autolog * * Synopsis: Turns on automatic logging of interactive devices * This writes a png file every time the page is * changed in an interactive device, with a name * based on the current date/time (giza-%Y-%M-%D-%H:%M:%S.png). * Logging can also be turned on by setting the GIZA_LOG * environment variable. * * See Also: giza_end_autolog */ void giza_begin_autolog (void) { if(!_giza_check_device_ready ("giza_start_autolog")) return; Sets.autolog = 1; } /** * Settings: giza_end_autolog * * Synopsis: Turns off automatic logging feature. * * See Also: giza_begin_autolog */ void giza_end_autolog (void) { if(!_giza_check_device_ready ("giza_end_autolog")) return; Sets.autolog = 0; } giza-1.5.0/src/giza-itf.c000066400000000000000000000174361477367113400151440ustar00rootroot00000000000000/* giza - a scientific plotting library built on cairo * * Copyright (c) 2010 James Wetter and Daniel Price * Copyright (c) 2010-2022 Daniel Price * * This library is free software; and you are welcome to redistribute * it under the terms of the GNU General Public License * (GPL, see LICENSE file for details) and the provision that * this notice remains intact. If you modify this file, please * note section 5a) of the GPLv3 states that: * * a) The work must carry prominent notices stating that you modified * it, and giving a relevant date. * * This software is distributed "AS IS", with ABSOLUTELY NO WARRANTY. * See the GPL for specific language governing rights and limitations. * * The Original code is the giza plotting library. * * Contributor(s): * James Wetter * Daniel Price (main contact) * Marjolein Verkouter */ #include "giza-itf.h" #include "giza-io-private.h" #include "giza-private.h" #include #include double _giza_itf_linear(const double pixelvalue, const double vmin, const double vmax); double _giza_itf_log(const double pixelvalue, const double vmin, const double vmax); double _giza_itf_sqrt(const double pixelvalue, const double vmin, const double vmax); float _giza_itf_linear_f(const float pixelvalue, const float vmin, const float vmax); float _giza_itf_log_f(const float pixelvalue, const float vmin, const float vmax); float _giza_itf_sqrt_f(const float pixelvalue, const float vmin, const float vmax); int _giza_itf_idx_linear(const double pixelvalue, const double vmin, const double vmax, const int cimin, const int cimax); int _giza_itf_idx_log(const double pixelvalue, const double vmin, const double vmax, const int cimin, const int cimax); int _giza_itf_idx_sqrt(const double pixelvalue, const double vmin, const double vmax, const int cimin, const int cimax); int _giza_itf_idx_linear_f(const float pixelvalue, const float vmin, const float vmax, const int cimin, const int cimax); int _giza_itf_idx_log_f(const float pixelvalue, const float vmin, const float vmax, const int cimin, const int cimax); int _giza_itf_idx_sqrt_f(const float pixelvalue, const float vmin, const float vmax, const int cimin, const int cimax); /* We keep an array of three image transfer functions, use set_image_transfer_function to set 0: linear 1: log 2: sqrt */ giza_itf_type giza_itf[3] = {_giza_itf_linear, _giza_itf_log, _giza_itf_sqrt}; giza_itf_type_f giza_itf_f[3] = {_giza_itf_linear_f, _giza_itf_log_f, _giza_itf_sqrt_f}; giza_itf_idx_type giza_itf_idx[3] = {_giza_itf_idx_linear, _giza_itf_idx_log, _giza_itf_idx_sqrt}; giza_itf_idx_type_f giza_itf_idx_f[3] = {_giza_itf_idx_linear_f, _giza_itf_idx_log_f, _giza_itf_idx_sqrt_f}; void giza_set_image_transfer_function(int itf) { if (!_giza_check_device_ready ("giza_set_image_transfer_function")) return; if (itf < 0 || itf > 2) { _giza_warning ("giza_set_image_transfer_function", "Invalid image transfer function, not set"); return; } Dev[id].itf = itf; } void giza_get_image_transfer_function(int* itfp) { if (!_giza_check_device_ready ("giza_get_image_transfer_function")) return; *itfp = Dev[id].itf; } /* * Lifted from PGPLOT grimg2.f on how to handle the image transfer function: SFAC = 65000.0 SFACL = LOG(1.0+SFAC) ... IF (MODE.EQ.0) THEN IV = NINT((MININD*(A2-AV) + MAXIND*(AV-A1))/(A2-A1)) ELSE IF (MODE.EQ.1) THEN IV = MININD + NINT((MAXIND-MININD)* LOG(1.0+SFAC*ABS((AV-A1)/(A2-A1)))/SFACL) ELSE IF (MODE.EQ.2) THEN IV = MININD + NINT((MAXIND-MININD)* SQRT(ABS((AV-A1)/(A2-A1)))) ELSE IV = MININD */ /* The linear transfer functions */ /* returns position of pixelvalue as fraction of the distance between vmin, vmax */ double _giza_itf_linear(const double pixelvalue, const double vmin, const double vmax) { return (vmax > vmin) ? (MIN(vmax, MAX(vmin, pixelvalue))-vmin)/(vmax-vmin) : (MIN(vmin, MAX(vmax, pixelvalue))-vmax)/(vmin-vmax); } /* maps pixelvalue's fractional position between vmin, vmax to corresponding index between cimin, cimax */ int _giza_itf_idx_linear(const double pixelvalue, const double vmin, const double vmax, const int cimin, const int cimax) { const double fractional_pos = _giza_itf_linear(pixelvalue, vmin, vmax); return MIN(cimin, cimax) + (int) round(((cimin < cimax) ? (cimax-cimin) : (cimin - cimax)) * fractional_pos); } /* id. for floats */ float _giza_itf_linear_f(const float pixelvalue, const float vmin, const float vmax) { return (vmax > vmin) ? (MIN(vmax, MAX(vmin, pixelvalue))-vmin)/(vmax-vmin) : (MIN(vmin, MAX(vmax, pixelvalue))-vmax)/(vmin-vmax); } int _giza_itf_idx_linear_f(const float pixelvalue, const float vmin, const float vmax, const int cimin, const int cimax) { const float fractional_pos = _giza_itf_linear_f(pixelvalue, vmin, vmax); return MIN(cimin, cimax) + (int)roundf(((cimin < cimax) ? (cimax-cimin) : (cimin - cimax)) * fractional_pos); } /* The log transfer functions */ const double sfac = 65000.0; /* returns position of pixelvalue as fraction of the distance between vmin, vmax */ double _giza_itf_log(const double pixelvalue, const double vmin, const double vmax) { double sfacl = log(1.0+sfac); return log(1.0+sfac*fabs(((vmax > vmin) ? (MIN(vmax, MAX(vmin, pixelvalue))-vmin) : (MIN(vmin, MAX(vmax, pixelvalue))-vmax))/(vmax-vmin)))/sfacl; } /* maps pixelvalue's fractional position between vmin, vmax to corresponding index between cimin, cimax */ int _giza_itf_idx_log(const double pixelvalue, const double vmin, const double vmax, const int cimin, const int cimax) { const double fractional_pos = _giza_itf_log(pixelvalue, vmin, vmax); return MIN(cimin, cimax) + (int)round(((cimax > cimin) ? (cimax-cimin) : (cimin-cimax)) * fractional_pos); } /* id. for floats */ const double sfac_f = 65000.0f; float _giza_itf_log_f(const float pixelvalue, const float vmin, const float vmax) { float sfacl_f = logf(1.0f+sfac); return log(1.0f+sfac_f*fabsf(((vmax > vmin) ? (MIN(vmax, MAX(vmin, pixelvalue))-vmin) : (MIN(vmin, MAX(vmax, pixelvalue))-vmax))/(vmax-vmin)))/sfacl_f; } int _giza_itf_idx_log_f(const float pixelvalue, const float vmin, const float vmax, const int cimin, const int cimax) { const float fractional_pos = _giza_itf_log_f(pixelvalue, vmin, vmax); return MIN(cimin, cimax) + (int)roundf(((cimax > cimin) ? (cimax-cimin) : (cimin-cimax)) * fractional_pos); } /* and the sqrt versions */ /* returns position of pixelvalue as fraction of the distance between vmin, vmax */ double _giza_itf_sqrt(const double pixelvalue, const double vmin, const double vmax) { return sqrt( _giza_itf_linear(pixelvalue, vmin, vmax) ); } /* maps pixelvalue's fractional position between vmin, vmax to corresponding index between cimin, cimax */ int _giza_itf_idx_sqrt(const double pixelvalue, const double vmin, const double vmax, const int cimin, const int cimax) { const double fractional_pos = _giza_itf_sqrt(pixelvalue, vmin, vmax); return MIN(cimin, cimax) + (int)round(((cimax > cimin) ? (cimax-cimin) : (cimin-cimax)) * fractional_pos); } /* id. for floats */ float _giza_itf_sqrt_f(const float pixelvalue, const float vmin, const float vmax) { return sqrtf( _giza_itf_linear_f(pixelvalue, vmin, vmax) ); } int _giza_itf_idx_sqrt_f(const float pixelvalue, const float vmin, const float vmax, const int cimin, const int cimax) { const float fractional_pos = _giza_itf_sqrt_f(pixelvalue, vmin, vmax); return MIN(cimin, cimax) + (int)roundf(((cimax > cimin) ? (cimax-cimin) : (cimin-cimax)) * fractional_pos); } giza-1.5.0/src/giza-itf.h000066400000000000000000000044221477367113400151400ustar00rootroot00000000000000/* giza - a scientific plotting library built on cairo * * Copyright (c) 2010 James Wetter and Daniel Price * Copyright (c) 2010-2022 Daniel Price * * This library is free software; and you are welcome to redistribute * it under the terms of the GNU General Public License * (GPL, see LICENSE file for details) and the provision that * this notice remains intact. If you modify this file, please * note section 5a) of the GPLv3 states that: * * a) The work must carry prominent notices stating that you modified * it, and giving a relevant date. * * This software is distributed "AS IS", with ABSOLUTELY NO WARRANTY. * See the GPL for specific language governing rights and limitations. * * The Original code is the giza plotting library. * * Contributor(s): * James Wetter * Daniel Price (main contact) * Marjolein Verkouter */ #ifndef GIZA_ITF_H #define GIZA_ITF_H /* support image transfer functions */ /* * Lifted from PGPLOT grimg2.f on how to handle the image transfer function: SFAC = 65000.0 SFACL = LOG(1.0+SFAC) ... IF (MODE.EQ.0) THEN IV = NINT((MININD*(A2-AV) + MAXIND*(AV-A1))/(A2-A1)) ELSE IF (MODE.EQ.1) THEN IV = MININD + NINT((MAXIND-MININD)* LOG(1.0+SFAC*ABS((AV-A1)/(A2-A1)))/SFACL) ELSE IF (MODE.EQ.2) THEN IV = MININD + NINT((MAXIND-MININD)* SQRT(ABS((AV-A1)/(A2-A1)))) ELSE IV = MININD */ typedef double (*giza_itf_type)(const double pixelvalue, const double vmin, const double vmax); typedef float (*giza_itf_type_f)(const float pixelvalue, const float vmin, const float vmax); typedef int (*giza_itf_idx_type)(const double pixelvalue, const double vmin, const double vmax, const int cimin, const int cimax); typedef int (*giza_itf_idx_type_f)(const float pixelvalue, const float vmin, const float vmax, const int cimin, const int cimax); /* We keep an array of three image transfer functions, use set_image_transfer_function to set 0: linear 1: log 2: sqrt */ extern giza_itf_type giza_itf[3]; extern giza_itf_type_f giza_itf_f[3]; extern giza_itf_idx_type giza_itf_idx[3]; extern giza_itf_idx_type_f giza_itf_idx_f[3]; #endif giza-1.5.0/src/giza-label.c000066400000000000000000000025301477367113400154260ustar00rootroot00000000000000/* giza - a scientific plotting library built on cairo * * Copyright (c) 2010 James Wetter and Daniel Price * Copyright (c) 2010-2012 Daniel Price * * This library is free software; and you are welcome to redistribute * it under the terms of the GNU General Public License * (GPL, see LICENSE file for details) and the provision that * this notice remains intact. If you modify this file, please * note section 5a) of the GPLv3 states that: * * a) The work must carry prominent notices stating that you modified * it, and giving a relevant date. * * This software is distributed "AS IS", with ABSOLUTELY NO WARRANTY. * See the GPL for specific language governing rights and limitations. * * The Original code is the giza plotting library. * * Contributor(s): * James Wetter * Daniel Price (main contact) */ #include "giza-private.h" #include /** * Text: giza_label * * Synopsis: Labels the plot * * Input: * -labelx :- x-axis label * -labely :- y-axis label * -title :- The title of the plot */ void giza_label (const char *labelx, const char *labely, const char *title) { if (!_giza_check_device_ready ("giza_label")) return; giza_annotate("B",3.0,0.5,0.5,labelx); giza_annotate("L",3.0,0.5,0.5,labely); giza_annotate("T",2.0,0.5,0.5,title); } giza-1.5.0/src/giza-line-cap.c000066400000000000000000000045071477367113400160450ustar00rootroot00000000000000/* giza - a scientific plotting library built on cairo * * Copyright (c) 2010 James Wetter and Daniel Price * Copyright (c) 2010-2012 Daniel Price * * This library is free software; and you are welcome to redistribute * it under the terms of the GNU General Public License * (GPL, see LICENSE file for details) and the provision that * this notice remains intact. If you modify this file, please * note section 5a) of the GPLv3 states that: * * a) The work must carry prominent notices stating that you modified * it, and giving a relevant date. * * This software is distributed "AS IS", with ABSOLUTELY NO WARRANTY. * See the GPL for specific language governing rights and limitations. * * The Original code is the giza plotting library. * * Contributor(s): * James Wetter * Daniel Price (main contact) */ #include "giza-private.h" #include "giza-io-private.h" #include /** * Settings: giza_set_line_cap * * Synopsis: Sets the line cap. * * Input: * -lc :- An integer representing the line cap. * * Options: * -0 :- butt * -1 :- round * -2 :- square */ void giza_set_line_cap (int lc) { if(!_giza_check_device_ready("giza_set_line_cap")) return; switch (lc) { case 0: cairo_set_line_cap (Dev[id].context, CAIRO_LINE_CAP_BUTT); break; case 1: cairo_set_line_cap (Dev[id].context, CAIRO_LINE_CAP_ROUND); break; case 2: cairo_set_line_cap (Dev[id].context, CAIRO_LINE_CAP_SQUARE); break; default: _giza_warning ("giza_set_line_cap", "Invalid line cap, setting to default."); cairo_set_line_cap (Dev[id].context, CAIRO_LINE_CAP_BUTT); break; } } /** * Settings: giza_get_line_cap * * Synopsis: Gets the current line cap, as set by giza_set_line_cap. * * Input: * -lc :- gets set to the current line cap. */ void giza_get_line_cap (int *lc) { if(!_giza_check_device_ready("giza_get_line_cap")) return; switch (cairo_get_line_cap (Dev[id].context)) { case CAIRO_LINE_CAP_BUTT: *lc = 0; break; case CAIRO_LINE_CAP_ROUND: *lc = 1; break; case CAIRO_LINE_CAP_SQUARE: *lc = 2; break; default: _giza_warning ("giza_get_line_cap", "Unknown line cap, returning default."); *lc = 0; break; } } giza-1.5.0/src/giza-line-style-private.h000066400000000000000000000021011477367113400201030ustar00rootroot00000000000000/* giza - a scientific plotting library built on cairo * * Copyright (c) 2010 James Wetter and Daniel Price * Copyright (c) 2010-2012 Daniel Price * * This library is free software; and you are welcome to redistribute * it under the terms of the GNU General Public License * (GPL, see LICENSE file for details) and the provision that * this notice remains intact. If you modify this file, please * note section 5a) of the GPLv3 states that: * * a) The work must carry prominent notices stating that you modified * it, and giving a relevant date. * * This software is distributed "AS IS", with ABSOLUTELY NO WARRANTY. * See the GPL for specific language governing rights and limitations. * * The Original code is the giza plotting library. * * Contributor(s): * James Wetter * Daniel Price (main contact) */ void _giza_set_cairo_dashes (cairo_t *ct, const double *_giza_dashes, int _giza_n, double _giza_dash_offset); void _giza_init_line_style (void); void _giza_set_line_style (int ls, cairo_t *ct); giza-1.5.0/src/giza-line-style.c000066400000000000000000000105401477367113400164340ustar00rootroot00000000000000/* giza - a scientific plotting library built on cairo * * Copyright (c) 2010 James Wetter and Daniel Price * Copyright (c) 2010-2012 Daniel Price * * This library is free software; and you are welcome to redistribute * it under the terms of the GNU General Public License * (GPL, see LICENSE file for details) and the provision that * this notice remains intact. If you modify this file, please * note section 5a) of the GPLv3 states that: * * a) The work must carry prominent notices stating that you modified * it, and giving a relevant date. * * This software is distributed "AS IS", with ABSOLUTELY NO WARRANTY. * See the GPL for specific language governing rights and limitations. * * The Original code is the giza plotting library. * * Contributor(s): * James Wetter * Daniel Price (main contact) */ #include "giza-private.h" #include "giza-transforms-private.h" #include "giza-io-private.h" #include "giza-line-style-private.h" #include /** * Settings: giza_set_line_style * * Synopsis: Sets the current line style. * * Input: * -ls :- the new line style * * Line Styles: * -GIZA_LS_SOLID :- solid * -GIZA_LS_LONG_DASH :- long dash * -GIZA_LS_SHORT_DASH :- short dash * -GIZA_LS_DOT :- dot * -GIZA_LS_DASH_DOT :- dash dot * -GIZA_LS_DASH_DOT_DOT_DOT :- dash dot dot dot * */ void giza_set_line_style (int ls) { if (!_giza_check_device_ready ("giza_set_line_style")) return; _giza_set_line_style (ls, Dev[id].context); Dev[id].ls = ls; } /** * Settings: giza_get_line_style * * Synopsis: Query the current line style. * * Input: * -ls :- gets set to the current line style */ void giza_get_line_style (int *ls) { if (!_giza_check_device_ready ("giza_get_line_style")) { *ls = GIZA_LS_SOLID; return; } *ls = Dev[id].ls; } void _giza_set_line_style (int ls, cairo_t *ct) { double longDash, shortDash, lw; giza_get_character_size (GIZA_UNITS_MM, &longDash, &shortDash); longDash = 0.5 * longDash; shortDash = 0.5 * longDash; double _giza_dashes[8]; int _giza_n; double _giza_dash_offset = 0.; switch (ls) { case GIZA_LS_LONG_DASH: _giza_n = 2; _giza_dashes[0] = longDash; _giza_dashes[1] = 0.5 * shortDash; _giza_dash_offset = 0.375 * longDash; break; case GIZA_LS_SHORT_DASH: _giza_n = 2; _giza_dashes[0] = shortDash; _giza_dashes[1] = 0.5 * shortDash; _giza_dash_offset = 0.5 * shortDash; break; case GIZA_LS_DOT: _giza_n = 2; giza_get_line_width (&lw); _giza_dashes[0] = Dev[id].deviceUnitsPermm * 0.25 * lw; _giza_dashes[1] = Dev[id].deviceUnitsPermm * lw; break; case GIZA_LS_DASH_DOT: _giza_n = 4; giza_get_line_width (&lw); _giza_dashes[0] = longDash; /* dash */ _giza_dashes[1] = Dev[id].deviceUnitsPermm * lw; /* space */ _giza_dashes[2] = Dev[id].deviceUnitsPermm * 0.25 * lw; /* dot */ _giza_dashes[3] = Dev[id].deviceUnitsPermm * lw; /* space */ _giza_dash_offset = 0.5 * longDash; break; case GIZA_LS_DASH_DOT_DOT_DOT: _giza_n = 8; giza_get_line_width (&lw); _giza_dashes[0] = longDash; /* dash */ _giza_dashes[1] = Dev[id].deviceUnitsPermm * lw; /* space */ _giza_dashes[2] = Dev[id].deviceUnitsPermm * 0.25 * lw; /* dot */ _giza_dashes[3] = Dev[id].deviceUnitsPermm * lw; /* space */ _giza_dashes[4] = Dev[id].deviceUnitsPermm * 0.25 * lw; /* dot */ _giza_dashes[5] = Dev[id].deviceUnitsPermm * lw; /* space */ _giza_dashes[6] = Dev[id].deviceUnitsPermm * 0.25 * lw; /* dot */ _giza_dashes[7] = Dev[id].deviceUnitsPermm * lw; /* space */ _giza_dash_offset = 0.75 * longDash; break; default: _giza_warning ("giza_set_line_style", "Invalid line style, using solid"); case GIZA_LS_SOLID: _giza_n= 0; break; } _giza_set_cairo_dashes (ct, _giza_dashes, _giza_n, _giza_dash_offset); } void _giza_set_cairo_dashes (cairo_t *ct, const double *_giza_dashes, int _giza_n, double _giza_dash_offset) { int oldTrans = _giza_get_trans (); _giza_set_trans (GIZA_TRANS_IDEN); cairo_set_dash (ct, _giza_dashes, _giza_n, _giza_dash_offset); _giza_set_trans (oldTrans); } void _giza_init_line_style (void) { Dev[id].ls = GIZA_LS_SOLID; } giza-1.5.0/src/giza-line-width.c000066400000000000000000000050501477367113400164130ustar00rootroot00000000000000/* giza - a scientific plotting library built on cairo * * Copyright (c) 2010 James Wetter and Daniel Price * Copyright (c) 2010-2012 Daniel Price * * This library is free software; and you are welcome to redistribute * it under the terms of the GNU General Public License * (GPL, see LICENSE file for details) and the provision that * this notice remains intact. If you modify this file, please * note section 5a) of the GPLv3 states that: * * a) The work must carry prominent notices stating that you modified * it, and giving a relevant date. * * This software is distributed "AS IS", with ABSOLUTELY NO WARRANTY. * See the GPL for specific language governing rights and limitations. * * The Original code is the giza plotting library. * * Contributor(s): * James Wetter * Daniel Price (main contact) */ #include "giza-private.h" #include "giza-transforms-private.h" #include "giza-io-private.h" #include #define GIZA_SMALLEST_LW 1.e-6 /** * Settings: giza_set_line_width * * Synopsis: Sets the line width for all subsequent drawing. * * Input: * -lw :- The new line width. 1 is 1/4 of a millimetre. */ void giza_set_line_width (double lw) { if (!_giza_check_device_ready ("giza_set_line_width")) { return; } if (lw <= GIZA_SMALLEST_LW) { lw = GIZA_SMALLEST_LW; } Dev[id].lw = lw; /* adjust the line width so it is uniform across devices and 1 is a good size */ double lwDevice = lw * Dev[id].deviceUnitsPermm * 0.25; int oldTrans = _giza_get_trans (); _giza_set_trans(GIZA_TRANS_IDEN); cairo_set_line_width (Dev[id].context, lwDevice); _giza_set_trans (oldTrans); } /** * Settings: giza_set_line_width_float * * Synopsis: Same functionality as giza_set_line_width but uses floats * * See Also: giza_set_line_width */ void giza_set_line_width_float (float lw) { giza_set_line_width ((double) lw); } /** * Settings: giza_get_line_width * * Synopsis: Queries the current line width. * * Input: * -lw :- gets set to the current line width. */ void giza_get_line_width (double *lw) { if (!_giza_check_device_ready ("giza_get_line_width")) { *lw = 1; return; } *lw = Dev[id].lw; } /** * Settings giza_get_line_width_float * * Synopsis: Same functionality as giza_get_line_width but uses a float. * * See Also: giza_get_line_width */ void giza_get_line_width_float (float *lw) { if (!_giza_check_device_ready ("giza_get_line_width_float")) return; double dlw; giza_get_line_width(&dlw); *lw = (float) dlw; } giza-1.5.0/src/giza-line.c000066400000000000000000000051621477367113400153020ustar00rootroot00000000000000/* giza - a scientific plotting library built on cairo * * Copyright (c) 2010 James Wetter and Daniel Price * Copyright (c) 2010-2012 Daniel Price * * This library is free software; and you are welcome to redistribute * it under the terms of the GNU General Public License * (GPL, see LICENSE file for details) and the provision that * this notice remains intact. If you modify this file, please * note section 5a) of the GPLv3 states that: * * a) The work must carry prominent notices stating that you modified * it, and giving a relevant date. * * This software is distributed "AS IS", with ABSOLUTELY NO WARRANTY. * See the GPL for specific language governing rights and limitations. * * The Original code is the giza plotting library. * * Contributor(s): * James Wetter * Daniel Price (main contact) */ #include "giza-private.h" #include "giza-transforms-private.h" #include "giza-stroke-private.h" #include "giza-io-private.h" #include /** * Drawing: giza_line * * Synopsis: Plots a line made up of n-1 straight segments. * * Input: * -n :- The number of points that define the line. * The line will be made up of n - 1 straight segments. * If n is less than 2 nothing is done. * -xpts :- The world x-coordinates of the points to be joined. * -ypts :- The world y-coordinates of the points to be joined. * * The arrays xpts and ypts must have at least n elements. */ void giza_line (int n, const double *xpts, const double *ypts) { if (!_giza_check_device_ready ("giza_line")) return; /* check the line has at least one segment */ if (n < 2) return; int oldTrans = _giza_get_trans (); _giza_set_trans (GIZA_TRANS_WORLD); cairo_move_to (Dev[id].context, xpts[0], ypts[0]); int i; for (i = 1; i < n; i++) { cairo_line_to (Dev[id].context, xpts[i], ypts[i]); } _giza_stroke (); _giza_set_trans (oldTrans); giza_flush_device (); } /** * Drawing: giza_line_float * * Synopsis: The same functionality as giza_line, except it uses * arrays of floats * * See Also: giza_line */ void giza_line_float (int n, const float *xpts, const float *ypts) { if (!_giza_check_device_ready ("giza_line_float")) return; if (n < 2) return; int oldTrans = _giza_get_trans (); _giza_set_trans (GIZA_TRANS_WORLD); cairo_move_to (Dev[id].context, (double) xpts[0], (double) ypts[0]); int i; for (i = 1; i < n; i++) { cairo_line_to (Dev[id].context, (double) xpts[i], (double) ypts[i]); } _giza_stroke (); _giza_set_trans (oldTrans); giza_flush_device (); } giza-1.5.0/src/giza-move.c000066400000000000000000000052321477367113400153170ustar00rootroot00000000000000/* giza - a scientific plotting library built on cairo * * Copyright (c) 2010 James Wetter and Daniel Price * Copyright (c) 2010-2012 Daniel Price * * This library is free software; and you are welcome to redistribute * it under the terms of the GNU General Public License * (GPL, see LICENSE file for details) and the provision that * this notice remains intact. If you modify this file, please * note section 5a) of the GPLv3 states that: * * a) The work must carry prominent notices stating that you modified * it, and giving a relevant date. * * This software is distributed "AS IS", with ABSOLUTELY NO WARRANTY. * See the GPL for specific language governing rights and limitations. * * The Original code is the giza plotting library. * * Contributor(s): * James Wetter * Daniel Price (main contact) */ #include "giza-private.h" #include "giza-transforms-private.h" #include "giza-stroke-private.h" #include "giza-io-private.h" #include /** * Drawing: giza_move * * Synopsis: Move current pen position to a point * * Input: * -xpt :- The world x-coordinates of the point * -ypt :- The world y-coordinates of the point * */ void giza_move (double xpt, double ypt) { if (!_giza_check_device_ready ("giza_move")) return; int oldTrans = _giza_get_trans (); _giza_set_trans (GIZA_TRANS_WORLD); cairo_move_to (Dev[id].context, xpt, ypt); _giza_set_trans (oldTrans); } /** * Drawing: giza_move_float * * Synopsis: The same functionality as giza_move, except it uses floats * * See Also: giza_move */ void giza_move_float (float xpt, float ypt) { if (!_giza_check_device_ready ("giza_move")) return; giza_move((double) xpt, (double) ypt); } /** * Drawing: giza_get_current_point * * Synopsis: Query current pen position * * Output: * -xpt :- The world x-coordinates of the point * -ypt :- The world y-coordinates of the point * * See Also: giza_get_current_point_float */ void giza_get_current_point (double *xpt, double *ypt) { if (!_giza_check_device_ready ("giza_get_current_point")) return; int oldTrans = _giza_get_trans (); _giza_set_trans (GIZA_TRANS_WORLD); cairo_get_current_point (Dev[id].context, xpt, ypt); _giza_set_trans (oldTrans); } /** * Drawing: giza_get_current_point_float * * Synopsis: The same functionality as giza_get_current_point, but uses floats * * See Also: giza_get_current_point */ void giza_get_current_point_float (float *xpt, float *ypt) { if (!_giza_check_device_ready ("giza_move")) return; double xptd, yptd; giza_get_current_point(&xptd, &yptd); *xpt = (float) xptd; *ypt = (float) yptd; } giza-1.5.0/src/giza-paper.c000066400000000000000000000132501477367113400154570ustar00rootroot00000000000000/* giza - a scientific plotting library built on cairo * * Copyright (c) 2010 James Wetter and Daniel Price * Copyright (c) 2010-2012 Daniel Price * * This library is free software; and you are welcome to redistribute * it under the terms of the GNU General Public License * (GPL, see LICENSE file for details) and the provision that * this notice remains intact. If you modify this file, please * note section 5a) of the GPLv3 states that: * * a) The work must carry prominent notices stating that you modified * it, and giving a relevant date. * * This software is distributed "AS IS", with ABSOLUTELY NO WARRANTY. * See the GPL for specific language governing rights and limitations. * * The Original code is the giza plotting library. * * Contributor(s): * James Wetter * Daniel Price (main contact) */ #include "giza-private.h" #include "giza-io-private.h" #include "giza-drivers-private.h" #include /** * Change the paper size (physical size of the view surface) * in a variety of units, after the device has been opened * * Input: * -width :- Width of the device surface * -height :- Aspect ratio of the device surface * -units :- Units in which the width/height are given * */ void giza_set_paper_size (int units, double width, double height) { if (!_giza_check_device_ready ("giza_set_paper_size")) return; if (width <= 0.) { _giza_error("giza_set_paper_size","width <= 0"); width = 8.; } if (height <= 0.) { _giza_error("giza_set_paper_size","height <= 0"); height = 6.; } _giza_get_specified_size(width, height, units, &Dev[id].width, &Dev[id].height); /* reset panel size after paper size change */ Dev[id].panelwidth = Dev[id].width/Dev[id].nx; Dev[id].panelheight = Dev[id].height/Dev[id].ny; Dev[id].resize = 1; /* already change the coordinate transform */ _giza_init_norm(); } /** * Same as giza_get_paper_size but takes floats */ void giza_set_paper_size_float (int units, float width, float height) { giza_set_paper_size(units, (double) width, (double) height); } /** * Internal routine returning the specified paper size * in device units. This is called AFTER the device has been opened. * * Input: * -paperwidth :- desired width in specified units * -paperheight :- desired height in specified units * -units :- units in which paperwidth/paperheight are specified * Output: * -width :- Width of the specified surface size in device units * -height :- Height of the specified surface size in device units * */ void _giza_get_specified_size(double paperwidth, double paperheight, int units, int *width, int *height) { switch(units) { case GIZA_UNITS_MM: *width = _giza_nint(paperwidth * Dev[id].deviceUnitsPermm); *height = _giza_nint(paperheight * Dev[id].deviceUnitsPermm); break; case GIZA_UNITS_INCHES: *width = _giza_nint(paperwidth * Dev[id].deviceUnitsPermm * 25.4); *height = _giza_nint(paperheight * Dev[id].deviceUnitsPermm * 25.4); break; case GIZA_UNITS_PIXELS: *width = _giza_nint(paperwidth * Dev[id].deviceUnitsPerPixel); *height = _giza_nint(paperheight * Dev[id].deviceUnitsPerPixel); break; case GIZA_UNITS_DEVICE: *width = _giza_nint(paperwidth); *height = _giza_nint(paperheight); break; default: *width = _giza_nint(paperwidth * Dev[id].deviceUnitsPermm * 10.); *height = _giza_nint(paperheight * Dev[id].deviceUnitsPermm * 10.); break; } /* printf("size was %f x %f in units %i, actual size = %i x %i \n", paperwidth,paperheight,paperunits,*width,*height); */ } /** * Query the paper size (physical size of the view surface) * in a variety of units * * Input: * -units :- Specify the units to return values in * -width :- Width of the device surface * -height :- Height of the device surface * * Units: * -0 or GIZA_UNITS_NORMALIZED :- normalised device units * -1 or GIZA_UNITS_INCHES :- inches * -2 or GIZA_UNITS_MM :- mm * -3 or GIZA_UNITS_PIXELS :- pixels * -5 or GIZA_UNITS_DEVICE :- device units (pixels or points) * -default :- cm */ void giza_get_paper_size (int units, double *width, double *height) { if (!_giza_check_device_ready ("giza_get_paper_size")) { *width = 1.; *height = 1.; return; } switch(units) { case GIZA_UNITS_MM: *width = ((double) Dev[id].width ) / Dev[id].deviceUnitsPermm; *height = ((double) Dev[id].height) / Dev[id].deviceUnitsPermm; break; case GIZA_UNITS_INCHES: *width = (((double) Dev[id].width ) / Dev[id].deviceUnitsPermm) / 25.4; *height = (((double) Dev[id].height) / Dev[id].deviceUnitsPermm) / 25.4; break; case GIZA_UNITS_NORMALIZED: *width = 1.; *height = 1.; break; case GIZA_UNITS_PIXELS: *width = ((double) Dev[id].width ) / Dev[id].deviceUnitsPerPixel; *height = ((double) Dev[id].height) / Dev[id].deviceUnitsPerPixel; break; case GIZA_UNITS_DEVICE: *width = (double) Dev[id].width; *height = (double) Dev[id].height; break; default: *width = 0.1 * ((double) Dev[id].width ) / Dev[id].deviceUnitsPermm; *height = 0.1 * ((double) Dev[id].height) / Dev[id].deviceUnitsPermm; break; } } void giza_get_paper_size_float (int units, float *width, float *height) { double dwidth, dheight; giza_get_paper_size (units, &dwidth, &dheight); *width = (float) dwidth; *height = (float) dheight; } giza-1.5.0/src/giza-pgplot.f90000066400000000000000000001717121477367113400160410ustar00rootroot00000000000000!----------------------------------------------------------------------- ! giza - a scientific plotting library built on cairo ! ! Copyright (c) 2010 James Wetter and Daniel Price ! Copyright (c) 2010-2012 Daniel Price ! ! This library is free software; and you are welcome to redistribute ! it under the terms of the GNU General Public License ! (GPL, see LICENSE file for details) and the provision that ! this notice remains intact. If you modify this file, please ! note section 5a) of the GPLv3 states that: ! ! a) The work must carry prominent notices stating that you modified ! it, and giving a relevant date. ! ! This software is distributed "AS IS", with ABSOLUTELY NO WARRANTY. ! See the GPL for specific language governing rights and limitations. ! ! The Original code is the giza plotting library. ! ! Contributor(s): ! James Wetter ! Daniel Price (main contact) ! !----------------------------------------------------------------------- !--------------------------------------------------------- ! This file can be used to build a PGPLOT-compatible ! interface to giza (implements the full public API ! for PGPLOT), so old PGPLOT-based programs do not need ! to be recompiled to use giza. ! ! We have implemented the last public version of PGPLOT ! as available from the PGPLOT web page. !--------------------------------------------------------- !------------------------------------------------------------------------ ! This is a utility module containing routines for converting ! various things from giza-style to pgplot-style where necessary !------------------------------------------------------------------------ module gizapgplot implicit none !--Settings unique to PGPLOT integer, public :: pgfont = 1 contains !------------------------------------------------------------ ! Function to convert PGPLOT units value to giza units value !------------------------------------------------------------ integer function units_giza(pgplotunits) use giza, only:giza_units_normalized,giza_units_inches, & giza_units_mm,giza_units_device,giza_units_world,& giza_units_pixels implicit none integer, intent(in) :: pgplotunits select case(pgplotunits) case(0) units_giza = giza_units_normalized case(1) units_giza = giza_units_inches case(2) units_giza = giza_units_mm case(3) units_giza = giza_units_pixels case(4) units_giza = giza_units_world case default ! giza will give an error units_giza = pgplotunits end select end function units_giza !---------------------------------------------------------------- ! Routine to convert PGPLOT "trans" array to giza "affine" array !---------------------------------------------------------------- subroutine convert_tr_to_affine(tr,affine) implicit none real, dimension(6), intent(in) :: tr real, dimension(6), intent(out) :: affine affine(1) = TR(2) affine(2) = TR(5) affine(3) = TR(3) affine(4) = TR(6) affine(5) = TR(1) + 0.5 * TR(2) affine(6) = TR(4) + 0.5 * TR(6) end subroutine convert_tr_to_affine end module gizapgplot !------------------------------------------------------------------------ ! Module: PGARRO -- draw an arrow ! Status: IMPLEMENTED !------------------------------------------------------------------------ subroutine PGARRO (X1, Y1, X2, Y2) use giza, only:giza_arrow implicit none real, intent(in) :: X1, Y1, X2, Y2 call giza_arrow(X1, Y1, X2, Y2) end subroutine pgarro !------------------------------------------------------------------------ ! Module: PGASK -- control new page prompting ! Status: IMPLEMENTED !------------------------------------------------------------------------ subroutine PGASK (FLAG) use giza, only:giza_start_prompting, giza_stop_prompting implicit none logical, intent(in) :: FLAG if (FLAG) then call giza_start_prompting else call giza_stop_prompting end if end subroutine PGASK !------------------------------------------------------------------------ ! Module: PGAXIS -- draw an axis ! Status: IMPLEMENTED !------------------------------------------------------------------------ subroutine PGAXIS (OPT, X1, Y1, X2, Y2, V1, V2, STEP, NSUB, DMAJL, DMAJR, FMIN, DISP, ORIENT) use giza, only:giza_axis implicit none character*(*), intent(in) :: OPT real, intent(in) :: X1, Y1, X2, Y2, V1, V2, STEP, DMAJL, DMAJR, FMIN, DISP real, intent(in) :: ORIENT integer, intent(in) :: NSUB call giza_axis(OPT, X1, Y1, X2, Y2, V1, V2, STEP, NSUB, DMAJL, DMAJR, FMIN, DISP, ORIENT) end subroutine PGAXIS !------------------------------------------------------------------------ ! Module: PGBAND -- read cursor position, with anchor ! Status: IMPLEMENTED !------------------------------------------------------------------------ integer function PGBAND (MODE, POSN, XREF, YREF, X, Y, CH) use giza, only:giza_band implicit none integer, intent(in) :: MODE, POSN real, intent(in) :: XREF, YREF real, intent(inout) :: X, Y character*(*), intent(out) :: CH integer :: ierr ierr = giza_band(MODE, POSN, XREF, YREF, X, Y, CH) !--PGBAND returns 1 on successful completion if (ierr.eq.0) then PGBAND = 1 else PGBAND = 0 endif end function PGBAND !------------------------------------------------------------------------ ! Module: PGBBUF -- begin batch of output (buffer) ! Status: IMPLEMENTED !------------------------------------------------------------------------ subroutine PGBBUF use giza, only:giza_begin_buffer implicit none call giza_begin_buffer() end subroutine PGBBUF !------------------------------------------------------------------------ ! Module: PGBEG -- open a graphics device ! Status: IMPLEMENTED !------------------------------------------------------------------------ integer function PGBEG (UNIT, FILE, NXSUB, NYSUB) implicit none integer, intent(in) :: UNIT character*(*), intent(in) :: FILE integer, intent(in) :: NXSUB, NYSUB integer, external :: PGOPEN PGBEG = PGOPEN(FILE) if (PGBEG > 0 .and. (NXSUB.GT.1 .or. NYSUB.GT.1)) then call PGSUBP(NXSUB, NYSUB) endif end function PGBEG !------------------------------------------------------------------------ ! Module: PGBIN -- histogram of binned data ! Status: IMPLEMENTED !------------------------------------------------------------------------ subroutine PGBIN (NBIN, X, DATA, CENTER) use giza, only:giza_histogram_binned implicit none integer, intent(in) :: NBIN real, intent(in) :: X(*), DATA(*) logical, intent(in) :: CENTER integer :: iflag if (CENTER) then iflag = 1 else iflag = 0 endif call giza_histogram_binned(NBIN, X, DATA, iflag) end subroutine PGBIN !------------------------------------------------------------------------ ! Module: PGBOX -- draw labeled frame around viewport ! Status: IMPLEMENTED !------------------------------------------------------------------------ subroutine PGBOX (XOPT, XTICK, NXSUB, YOPT, YTICK, NYSUB) use giza, only:giza_box implicit none character*(*), intent(in) :: XOPT, YOPT real, intent(in) :: XTICK, YTICK integer, intent(in) :: NXSUB, NYSUB call giza_box(XOPT, XTICK, NXSUB, YOPT, YTICK, NYSUB) end subroutine PGBOX !------------------------------------------------------------------------ ! Module: PGCIRC -- draw a circle, using fill-area attributes ! Status: IMPLEMENTED !------------------------------------------------------------------------ subroutine PGCIRC (XCENT, YCENT, RADIUS) use giza, only:giza_circle implicit none real, intent(in) :: XCENT, YCENT, RADIUS call giza_circle(XCENT,YCENT,RADIUS) end subroutine PGCIRC !------------------------------------------------------------------------ ! Module: PGCLOS -- close the selected graphics device ! Status: IMPLEMENTED !------------------------------------------------------------------------ subroutine PGCLOS use giza, only:giza_close_device implicit none call giza_close_device end subroutine PGCLOS !------------------------------------------------------------------------ ! Module: PGCONB -- contour map of a 2D data array, with blanking ! Status: PARTIALLY IMPLEMENTED !------------------------------------------------------------------------ subroutine PGCONB (A, IDIM, JDIM, I1, I2, J1, J2, C, NC, TR, BLANK) use giza, only:giza_contour use gizapgplot, only:convert_tr_to_affine implicit none integer, intent(in) :: IDIM, JDIM, I1, I2, J1, J2, NC real, intent(in) :: A(IDIM,JDIM), C(*), TR(6), BLANK real :: affine(6) call convert_tr_to_affine(tr,affine) call giza_contour(idim,jdim,a,i1-1,i2-1,j1-1,j2-1,nc,C,affine) end subroutine PGCONB !------------------------------------------------------------------------ ! Module: PGCONF -- fill between two contours ! Status: NOT IMPLEMENTED !------------------------------------------------------------------------ subroutine PGCONF (A, IDIM, JDIM, I1, I2, J1, J2, C1, C2, TR) implicit none integer, intent(in) :: IDIM, JDIM, I1, I2, J1, J2 real, intent(in) :: A(IDIM,JDIM), C1, C2, TR(6) end subroutine PGCONF !------------------------------------------------------------------------ ! Module: PGCONL -- label contour map of a 2D data array ! Status: PARTIALLY IMPLEMENTED !------------------------------------------------------------------------ subroutine PGCONL (A, IDIM, JDIM, I1, I2, J1, J2, C, TR, LABEL, INTVAL, MININT) use giza, only:giza_contour use gizapgplot, only:convert_tr_to_affine implicit none integer, intent(in) :: IDIM, JDIM, I1, J1, I2, J2, INTVAL, MININT real, intent(in) :: A(IDIM,JDIM), C, TR(6) character*(*), intent(in) :: LABEL real :: affine(6) integer, parameter :: nc = 1 real, dimension(nc) :: cc cc(1) = C call convert_tr_to_affine(tr,affine) call giza_contour(idim,jdim,a,i1-1,i2-1,j1-1,j2-1,nc,cc,affine) end subroutine PGCONL !------------------------------------------------------------------------ ! Module: PGCONS -- contour map of a 2D data array (fast algorithm) ! Status: IMPLEMENTED !------------------------------------------------------------------------ subroutine PGCONS (A, IDIM, JDIM, I1, I2, J1, J2, C, NC, TR) use giza, only:giza_contour use gizapgplot, only:convert_tr_to_affine implicit none integer, intent(in) :: IDIM, JDIM, I1, I2, J1, J2, NC real, intent(in) :: A(IDIM,JDIM), C(*), TR(6) real :: affine(6) call convert_tr_to_affine(tr,affine) call giza_contour(idim,jdim,a,i1-1,i2-1,j1-1,j2-1,abs(nc),C,affine) end subroutine PGCONS !------------------------------------------------------------------------ ! Module: PGCONT -- contour map of a 2D data array (contour-following) ! Status: IMPLEMENTED !------------------------------------------------------------------------ subroutine PGCONT (A, IDIM, JDIM, I1, I2, J1, J2, C, NC, TR) use giza, only:giza_contour use gizapgplot, only:convert_tr_to_affine implicit none integer, intent(in) :: IDIM, JDIM, I1, J1, I2, J2, NC real, intent(in) :: A(IDIM,JDIM), C(*), TR(6) real :: affine(6) call convert_tr_to_affine(tr,affine) call giza_contour(idim,jdim,a,i1-1,i2-1,j1-1,j2-1,nc,C,affine) end subroutine PGCONT !------------------------------------------------------------------------ ! Module: PGCONX -- contour map of a 2D data array (non rectangular) ! Status: NOT IMPLEMENTED !------------------------------------------------------------------------ subroutine PGCONX (A, IDIM, JDIM, I1, I2, J1, J2, C, NC, PLOT) use giza, only:giza_contour use gizapgplot, only:convert_tr_to_affine implicit none integer, intent(in) :: IDIM, JDIM, I1, J1, I2, J2, NC real, intent(in) :: A(IDIM,JDIM), C(*) external :: PLOT end subroutine PGCONX !------------------------------------------------------------------------ ! Module: PGCTAB -- install the color table to be used by PGIMAG ! Status: PARTIALLY IMPLEMENTED !------------------------------------------------------------------------ subroutine PGCTAB(L, R, G, B, NC, CONTRA, BRIGHT) use giza, only:giza_set_colour_table implicit none integer, intent(in) :: NC real, intent(in) :: L(NC), R(NC), G(NC), B(NC), CONTRA, BRIGHT call giza_set_colour_table(L, R, G, B, NC, CONTRA, BRIGHT) end subroutine PGCTAB !------------------------------------------------------------------------ ! Module: PGCURS -- read cursor position ! Status: IMPLEMENTED !------------------------------------------------------------------------ integer function PGCURS (X, Y, CH) use giza, only:giza_get_key_press implicit none real, intent(inout) :: X, Y character*(*), intent(out) :: CH PGCURS = giza_get_key_press(X, Y, CH) end function PGCURS !------------------------------------------------------------------------ ! Module: PGDRAW -- draw a line from the current pen position to a point ! Status: IMPLEMENTED !------------------------------------------------------------------------ subroutine PGDRAW (X, Y) use giza, only:giza_draw implicit none real, intent(in) :: X, Y call giza_draw(X, Y) end subroutine PGDRAW !------------------------------------------------------------------------ ! Module: PGEBUF -- end batch of output (buffer) ! Status: IMPLEMENTED !------------------------------------------------------------------------ subroutine PGEBUF use giza, only:giza_end_buffer implicit none call giza_end_buffer() end subroutine PGEBUF !------------------------------------------------------------------------ ! Module: PGEND -- close all open graphics devices ! Status: IMPLEMENTED !------------------------------------------------------------------------ subroutine PGEND use giza, only:giza_close_device implicit none call giza_close_device() end subroutine PGEND !------------------------------------------------------------------------ ! Module: PGENV -- set window and viewport and draw labeled frame ! Status: IMPLEMENTED !------------------------------------------------------------------------ subroutine PGENV (XMIN, XMAX, YMIN, YMAX, JUST, AXIS) use giza, only:giza_set_environment implicit none real, intent(in) :: XMIN, XMAX, YMIN, YMAX integer, intent(in) :: JUST, AXIS call giza_set_environment(XMIN, XMAX, YMIN, YMAX, JUST, AXIS) end subroutine PGENV !------------------------------------------------------------------------ ! Module: PGERAS -- erase all graphics from current page ! Status: IMPLEMENTED !------------------------------------------------------------------------ subroutine PGERAS use giza, only:giza_draw_background implicit none call giza_draw_background() end subroutine PGERAS !------------------------------------------------------------------------ ! Module: PGERR1 -- horizontal or vertical error bar ! Status: IMPLEMENTED !------------------------------------------------------------------------ subroutine PGERR1 (DIR, X, Y, E, T) implicit none integer, intent(in) :: DIR real, intent(in) :: X, Y, E real, intent(in) :: T real, dimension(1) :: xi,yi,ei xi(1) = x yi(1) = y ei(1) = e call PGERRB(DIR,1,XI,YI,EI,T) end subroutine PGERR1 !------------------------------------------------------------------------ ! Module: PGERRB -- horizontal or vertical error bar ! Status: IMPLEMENTED !------------------------------------------------------------------------ subroutine PGERRB (DIR, N, X, Y, E, T) use giza, only:giza_error_bars implicit none integer, intent(in) :: DIR, N real, intent(in) :: X(*), Y(*), E(*) real, intent(in) :: T call giza_error_bars(DIR, N, X, Y, E, T) end subroutine PGERRB !------------------------------------------------------------------------ ! Module: PGERRX -- horizontal error bar ! Status: IMPLEMENTED !------------------------------------------------------------------------ subroutine PGERRX (N, X1, X2, Y, T) use giza, only:giza_error_bars_x implicit none integer, intent(in) :: N real, intent(in) :: X1(*), X2(*), Y(*) real, intent(in) :: T call giza_error_bars_x(N, X1, X2, Y, T) end subroutine PGERRX !------------------------------------------------------------------------ ! Module: PGERRY -- vertical error bar ! Status: IMPLEMENTED !------------------------------------------------------------------------ subroutine PGERRY (N, X, Y1, Y2, T) use giza, only:giza_error_bars_y implicit none integer, intent(in) :: N real, intent(in) :: X(*), Y1(*), Y2(*) real, intent(in) :: T call giza_error_bars_y(N, X, Y1, Y2, T) end subroutine PGERRY !------------------------------------------------------------------------ ! Module: PGETXT -- erase text from graphics display ! Status: NOT IMPLEMENTED !------------------------------------------------------------------------ subroutine PGETXT implicit none end subroutine PGETXT !------------------------------------------------------------------------ ! Module: PGFUNT -- function defined by X = F(T), Y = G(T) ! Status: IMPLEMENTED !------------------------------------------------------------------------ subroutine PGFUNT (FX, FY, N, TMIN, TMAX, PGFLAG) use giza, only:giza_function_t implicit none real, external :: FX, FY integer, intent(in) :: N real, intent(in) :: TMIN, TMAX integer, intent(in) :: PGFLAG call giza_function_t(FX, FY, N, TMIN, TMAX, PGFLAG) end subroutine PGFUNT !------------------------------------------------------------------------ ! Module: PGFUNX -- function defined by Y = F(X) ! Status: IMPLEMENTED !------------------------------------------------------------------------ subroutine PGFUNX (FY, N, XMIN, XMAX, PGFLAG) use giza, only:giza_function_x implicit none real, external :: FY integer, intent(in) :: N real, intent(in) :: XMIN, XMAX integer, intent(in) :: PGFLAG call giza_function_x(FY, N, XMIN, XMAX, PGFLAG) end subroutine PGFUNX !------------------------------------------------------------------------ ! Module: PGFUNY -- function defined by X = F(Y) ! Status: IMPLEMENTED !------------------------------------------------------------------------ subroutine PGFUNY (FX, N, YMIN, YMAX, PGFLAG) use giza, only:giza_function_y implicit none real, external :: FX integer, intent(in) :: N real, intent(in) :: YMIN, YMAX integer, intent(in) :: PGFLAG call giza_function_y(FX, N, YMIN, YMAX, PGFLAG) end subroutine PGFUNY !------------------------------------------------------------------------ ! Module: PGGRAY -- gray-scale map of a 2D data array ! Status: IMPLEMENTED !------------------------------------------------------------------------ subroutine PGGRAY (A, IDIM, JDIM, I1, I2, J1, J2, FG, BG, TR) use giza, only:giza_render_gray,giza_extend_none,giza_filter_nearest use gizapgplot, only:convert_tr_to_affine implicit none integer, intent(in) :: IDIM, JDIM, I1, I2, J1, J2 real, intent(in) :: A(IDIM,JDIM), FG, BG, TR(6) real, dimension(6) :: affine call convert_tr_to_affine(tr,affine) call giza_render_gray(idim,jdim,a,i1-1,i2-1,j1-1,j2-1,fg,bg,giza_extend_none,giza_filter_nearest,affine) end subroutine PGGRAY !------------------------------------------------------------------------ ! Module: PGHI2D -- cross-sections through a 2D data array ! Status: NOT IMPLEMENTED !------------------------------------------------------------------------ subroutine PGHI2D (DATA, NXV, NYV, IX1, IX2, IY1, IY2, X, IOFF, BIAS, CENTER, YLIMS) implicit none integer, intent(in) :: NXV, NYV, IX1, IX2, IY1, IY2 real, intent(in) :: DATA(NXV,NYV) real, intent(in) :: X(IX2-IX1+1), YLIMS(IX2-IX1+1) integer, intent(in) :: IOFF real, intent(in) :: BIAS logical, intent(in) :: CENTER end subroutine PGHI2D !------------------------------------------------------------------------ ! Module: PGHIST -- histogram of unbinned data ! Status: IMPLEMENTED !------------------------------------------------------------------------ subroutine PGHIST(N, DATA, DATMIN, DATMAX, NBIN, PGFLAG) use giza, only:giza_histogram implicit none integer, intent(in) :: N real, intent(in) :: DATA(*) real, intent(in) :: DATMIN, DATMAX integer, intent(in) :: NBIN, PGFLAG call giza_histogram(N,DATA,DATMIN,DATMAX,NBIN,PGFLAG) end subroutine PGHIST !------------------------------------------------------------------------ ! Module: PGIDEN -- write username, date, and time at bottom of plot ! Status: IMPLEMENTED !------------------------------------------------------------------------ subroutine PGIDEN use giza, only:giza_print_id implicit none call giza_print_id() end subroutine PGIDEN !------------------------------------------------------------------------ ! Module: PGIMAG -- color image from a 2D data array ! Status: IMPLEMENTED !------------------------------------------------------------------------ subroutine PGIMAG (A, IDIM, JDIM, I1, I2, J1, J2, A1, A2, TR) use giza, only:giza_render,giza_extend_none,giza_filter_nearest use gizapgplot, only:convert_tr_to_affine implicit none integer, intent(in) :: IDIM, JDIM, I1, I2, J1, J2 real, intent(in) :: A(IDIM,JDIM), A1, A2, TR(6) real :: affine(6) call convert_tr_to_affine(tr,affine) call giza_render(idim,jdim,a,i1-1,i2-1,j1-1,j2-1,a1,a2,giza_extend_none,giza_filter_nearest,affine) end subroutine PGIMAG !------------------------------------------------------------------------ ! Module: PGLAB -- write labels for x-axis, y-axis, and top of plot ! Status: IMPLEMENTED !------------------------------------------------------------------------ subroutine PGLAB (XLBL, YLBL, TOPLBL) use giza, only:giza_label implicit none character*(*), intent(in) :: XLBL, YLBL, TOPLBL call giza_label(XLBL,YLBL,TOPLBL) end subroutine PGLAB !------------------------------------------------------------------------ ! Module: PGLCUR -- draw a line using the cursor ! Status: IMPLEMENTED !------------------------------------------------------------------------ subroutine PGLCUR (MAXPT, NPT, X, Y) use giza, only:giza_mark_line implicit none integer, intent(in) :: MAXPT integer, intent(inout) :: NPT real, intent(inout) :: X(*), Y(*) call giza_mark_line(MAXPT, NPT, X, Y) end subroutine PGLCUR !------------------------------------------------------------------------ ! Module: PGLDEV -- list available device types on standard output ! Status: IMPLEMENTED !------------------------------------------------------------------------ subroutine PGLDEV use giza, only:giza_print_device_list implicit none call giza_print_device_list() end subroutine PGLDEV !------------------------------------------------------------------------ ! Module: PGLEN -- find length of a string in a variety of units ! Status: IMPLEMENTED !------------------------------------------------------------------------ subroutine PGLEN (UNITS, STRING, XL, YL) use gizapgplot, only:units_giza use giza, only:giza_qtextlen implicit none real, intent(out) :: XL, YL integer, intent(in) :: UNITS character*(*), intent(in) :: STRING call giza_qtextlen(units_giza(UNITS),trim(STRING),XL,YL) end subroutine PGLEN !------------------------------------------------------------------------ ! Module: PGLINE -- draw a polyline (curve defined by line-segments) ! Status: IMPLEMENTED !------------------------------------------------------------------------ subroutine PGLINE (N, XPTS, YPTS) use giza, only:giza_line implicit none integer, intent(in) :: N real, intent(in) :: XPTS(*), YPTS(*) call giza_line(N,XPTS,YPTS) end subroutine PGLINE !------------------------------------------------------------------------ ! Module: PGMOVE -- move pen (change current pen position) ! Status: IMPLEMENTED !------------------------------------------------------------------------ subroutine PGMOVE (X, Y) use giza, only:giza_move implicit none real, intent(in) :: X, Y call giza_move(X, Y) end subroutine PGMOVE !------------------------------------------------------------------------ ! Module: PGMTXT -- write text at position relative to viewport ! Status: IMPLEMENTED !------------------------------------------------------------------------ subroutine PGMTXT (SIDE, DISP, COORD, FJUST, TEXT) use giza, only:giza_annotate implicit none character*(*), intent(in) :: SIDE, TEXT real, intent(in) :: DISP, COORD, FJUST call giza_annotate(SIDE,DISP,COORD,FJUST,TEXT(:LEN_TRIM(TEXT))) end subroutine PGMTXT !------------------------------------------------------------------------ ! Module: PGNCUR -- mark a set of points using the cursor ! Status: IMPLEMENTED !------------------------------------------------------------------------ subroutine PGNCUR (MAXPT, NPT, X, Y, SYMBOL) use giza, only:giza_mark_points_ordered implicit none integer, intent(in) :: MAXPT integer, intent(inout) :: NPT real, intent(inout) :: X(*), Y(*) integer, intent(in) :: SYMBOL call giza_mark_points_ordered(MAXPT, NPT, X, Y, SYMBOL) end subroutine PGNCUR !------------------------------------------------------------------------ ! Module: PGNUMB -- convert a number into a plotable character string ! Status: IMPLEMENTED !------------------------------------------------------------------------ subroutine PGNUMB (MM, PP, FORM, STRING, NC) use giza, only:giza_format_number implicit none integer, intent(in) :: MM, PP, FORM character*(*), intent(out) :: STRING integer, intent(out) :: NC call giza_format_number(mm,pp,form,string) nc = len_trim(string) end subroutine PGNUMB !------------------------------------------------------------------------ ! Module: PGOLIN -- mark a set of points using the cursor ! Status: IMPLEMENTED !------------------------------------------------------------------------ subroutine PGOLIN (MAXPT, NPT, X, Y, SYMBOL) use giza, only:giza_mark_points implicit none integer, intent(in) :: MAXPT integer, intent(inout) :: NPT real, intent(inout) :: X(*), Y(*) integer, intent(in) :: SYMBOL call giza_mark_points(maxpt,npt,x,y,symbol) end subroutine PGOLIN !------------------------------------------------------------------------ ! Module: PGOPEN -- open a graphics device ! Status: IMPLEMENTED !------------------------------------------------------------------------ integer function PGOPEN (DEVICE) use giza, only:giza_open_device,giza_set_colour_palette,giza_colour_palette_pgplot ! use giza, only:giza_open_device_size,giza_units_mm,giza_units_inches implicit none character*(*), intent(in) :: DEVICE ! print*,'giza units mm = ',giza_units_mm ! pgopen = giza_open_device_size(device,'giza',11.0,8.5,giza_units_inches) pgopen = giza_open_device(device,'giza') call giza_set_colour_palette(giza_colour_palette_pgplot) end function PGOPEN !------------------------------------------------------------------------ ! Module: PGPAGE -- advance to new page ! Status: IMPLEMENTED !------------------------------------------------------------------------ subroutine PGPAGE use giza, only:giza_change_page implicit none call giza_change_page end subroutine PGPAGE !------------------------------------------------------------------------ ! Module: PGPANL -- switch to a different panel on the view surface ! Status: IMPLEMENTED !------------------------------------------------------------------------ subroutine PGPANL(IX, IY) use giza, only:giza_set_panel implicit none integer, intent(in) :: IX, IY call giza_set_panel(IX, IY) end subroutine PGPANL !------------------------------------------------------------------------ ! Module: PGPAP -- change the size of the view surface ! Status: IMPLEMENTED !------------------------------------------------------------------------ subroutine PGPAP (WIDTH, ASPECT) use giza, only:giza_set_paper_size, giza_units_inches implicit none real, intent(in) :: WIDTH, ASPECT call giza_set_paper_size(giza_units_inches,WIDTH,WIDTH*ASPECT) end subroutine PGPAP !------------------------------------------------------------------------ ! Module: PGPIXL -- draw pixels ! Status: IMPLEMENTED !------------------------------------------------------------------------ subroutine PGPIXL (IA, IDIM, JDIM, I1, I2, J1, J2, X1, X2, Y1, Y2) use giza, only:giza_draw_pixels,giza_extend_none,giza_filter_nearest implicit none integer, intent(in) :: IDIM, JDIM, I1, I2, J1, J2 integer, intent(in) :: IA(IDIM,JDIM) real, intent(in) :: X1, X2, Y1, Y2 call giza_draw_pixels(IDIM, JDIM, IA, I1-1, I2-1, J1-1, J2-1, X1, X2, Y1, Y2,& giza_extend_none,giza_filter_nearest) end subroutine PGPIXL !------------------------------------------------------------------------ ! Module: PGPNTS -- draw several graph markers, not all the same ! Status: NOT IMPLEMENTED !------------------------------------------------------------------------ subroutine PGPNTS (N, X, Y, SYMBOL, NS) implicit none integer, intent(in) :: N, NS real, intent(in) :: X(*), Y(*) integer, intent(in) :: SYMBOL(*) end subroutine PGPNTS !------------------------------------------------------------------------ ! Module: PGPOLY -- draw a polygon, using fill-area attributes ! Status: IMPLEMENTED !------------------------------------------------------------------------ subroutine PGPOLY (N, XPTS, YPTS) use giza, only:giza_polygon implicit none integer, intent(in) :: N real, intent(in) :: XPTS(*), YPTS(*) call giza_polygon(N, XPTS, YPTS) end subroutine PGPOLY !------------------------------------------------------------------------ ! Module: PGPT -- draw several graph markers ! Status: IMPLEMENTED !------------------------------------------------------------------------ subroutine PGPT (N, XPTS, YPTS, SYMBOL) use giza, only:giza_points implicit none integer, intent(in) :: N real, intent(in) :: XPTS(*), YPTS(*) integer, intent(in) :: SYMBOL call giza_points(n,xpts,ypts,symbol) end subroutine PGPT !------------------------------------------------------------------------ ! Module: PGPT1 -- draw one graph marker ! Status: IMPLEMENTED !------------------------------------------------------------------------ subroutine PGPT1 (XPT, YPT, SYMBOL) use giza, only:giza_single_point implicit none real, intent(in) :: XPT, YPT integer, intent(in) :: SYMBOL call giza_single_point(xpt,ypt,symbol) end subroutine PGPT1 !------------------------------------------------------------------------ ! Module: PGPTXT -- write text at arbitrary position and angle ! Status: IMPLEMENTED !------------------------------------------------------------------------ subroutine PGPTXT (X, Y, ANGLE, FJUST, TEXT) use giza, only:giza_ptext implicit none real, intent(in) :: X, Y, ANGLE, FJUST character*(*), intent(in) :: TEXT call giza_ptext(X, Y, ANGLE, FJUST, TEXT(:LEN_TRIM(TEXT))) end subroutine PGPTXT !------------------------------------------------------------------------ ! Module: PGQAH -- inquire arrow-head style ! Status: IMPLEMENTED !------------------------------------------------------------------------ subroutine PGQAH (FS, ANGLE, BARB) use giza, only:giza_get_arrow_style implicit none integer, intent(out) :: FS real, intent(out) :: ANGLE, BARB call giza_get_arrow_style(FS, ANGLE, BARB) end subroutine PGQAH !------------------------------------------------------------------------ ! Module: PGQCF -- inquire character font ! Status: IMPLEMENTED !------------------------------------------------------------------------ subroutine PGQCF (FONT) use gizapgplot, only:pgfont implicit none integer, intent(out) :: FONT ! !--this is a setting for the PGPLOT frontend only ! (giza has much more general fonts than PGPLOT) ! ! the value of pgfont is set by the call to PGSCF ! FONT = pgfont end subroutine PGQCF !------------------------------------------------------------------------ ! Module: PGQCH -- inquire character height ! Status: IMPLEMENTED !------------------------------------------------------------------------ subroutine PGQCH (SIZE) use giza, only:giza_get_character_height implicit none real, intent(out) :: SIZE call giza_get_character_height(SIZE) end subroutine PGQCH !------------------------------------------------------------------------ ! Module: PGQCI -- inquire color index ! Status: IMPLEMENTED !------------------------------------------------------------------------ subroutine PGQCI (CI) use giza, only:giza_get_colour_index implicit none integer, intent(out) :: CI call giza_get_colour_index(CI) end subroutine PGQCI !------------------------------------------------------------------------ ! Module: PGQCIR -- inquire color index range ! Status: IMPLEMENTED !------------------------------------------------------------------------ subroutine PGQCIR(ICILO, ICIHI) use giza, only:giza_get_colour_index_range implicit none integer, intent(out) :: ICILO, ICIHI call giza_get_colour_index_range(ICILO,ICIHI) end subroutine PGQCIR !------------------------------------------------------------------------ ! Module: PGQCLP -- inquire clipping status ! Status: IMPLEMENTED !------------------------------------------------------------------------ subroutine PGQCLP(STATE) use giza, only:giza_get_clipping implicit none integer, intent(out) :: STATE call giza_get_clipping(STATE) end subroutine PGQCLP !------------------------------------------------------------------------ ! Module: PGQCOL -- inquire color capability ! Status: IMPLEMENTED !------------------------------------------------------------------------ subroutine PGQCOL (CI1, CI2) use giza, only:giza_colour_index_min,giza_colour_index_max implicit none integer, intent(out) :: CI1, CI2 CI1 = giza_colour_index_min CI2 = giza_colour_index_max end subroutine PGQCOL !------------------------------------------------------------------------ ! Module: PGQCR -- inquire color representation ! Status: IMPLEMENTED !------------------------------------------------------------------------ subroutine PGQCR (CI, CR, CG, CB) use giza, only:giza_get_colour_representation implicit none integer, intent(in) :: CI real, intent(out) :: CR, CG, CB call giza_get_colour_representation(CI, CR, CG, CB) end subroutine PGQCR !------------------------------------------------------------------------ ! Module: PGQCS -- inquire character height in a variety of units ! Status: IMPLEMENTED !------------------------------------------------------------------------ subroutine PGQCS(UNITS, XCH, YCH) use giza, only:giza_get_character_size use gizapgplot, only:units_giza implicit none integer, intent(in) :: UNITS real, intent(out) :: XCH, YCH call giza_get_character_size(units_giza(UNITS), XCH, YCH) end subroutine PGQCS !------------------------------------------------------------------------ ! Module: PGQDT -- inquire name of nth available device type ! Status: NOT IMPLEMENTED !------------------------------------------------------------------------ subroutine PGQDT(N, TYPE, TLEN, DESCR, DLEN, INTER) implicit none integer, intent(in) :: N character*(*), intent(out) :: TYPE, DESCR integer, intent(out) :: TLEN, DLEN, INTER end subroutine PGQDT !------------------------------------------------------------------------ ! Module: PGQFS -- inquire fill-area style ! Status: IMPLEMENTED !------------------------------------------------------------------------ subroutine PGQFS (FS) use giza, only:giza_get_fill implicit none integer, intent(out) :: FS call giza_get_fill(FS) end subroutine PGQFS !------------------------------------------------------------------------ ! Module: PGQHS -- inquire hatching style ! Status: IMPLEMENTED !------------------------------------------------------------------------ subroutine PGQHS (ANGLE, SEPN, PHASE) use giza, only:giza_get_hatching_style implicit none real, intent(out) :: ANGLE, SEPN, PHASE call giza_get_hatching_style(ANGLE,SEPN,PHASE) end subroutine PGQHS !------------------------------------------------------------------------ ! Module: PGQID -- inquire current device identifier ! Status: IMPLEMENTED !------------------------------------------------------------------------ subroutine PGQID (ID) use giza, only:giza_get_device_id implicit none integer, intent(out) :: ID call giza_get_device_id(ID) end subroutine PGQID !------------------------------------------------------------------------ ! Module: PGQINF -- inquire PGPLOT general information ! Status: IMPLEMENTED !------------------------------------------------------------------------ subroutine PGQINF (ITEM, VALUE, LENGTH) use giza, only:giza_query_device,giza_version_string implicit none character*(*), intent(in) :: ITEM character*(*), intent(out) :: VALUE integer, intent(out) :: LENGTH character(len=10) :: datestring,timestring select case(trim(item)) case('VERSION','version') value = 'giza-'//trim(giza_version_string) case('STATE','state') call giza_query_device('state',value) case('USER','user') call giza_query_device('user',value) case('NOW','now') call date_and_time(datestring,timestring) value = datestring(7:8)//'-'//datestring(5:6)//'-'//datestring(1:4)// & ' '//timestring(1:2)//':'//timestring(3:4) case('DEVICE','device') call giza_query_device('device',value) case('FILE','file') call giza_query_device('file',value) case('TYPE','type') call giza_query_device('type',value) case('DEV/TYPE','dev/type') call giza_query_device('dev/type',value) case('HARDCOPY','hardcopy') call giza_query_device('hardcopy',value) case('TERMINAL','terminal') !--in giza the current device is never the terminal value = 'NO' case('CURSOR','cursor') call giza_query_device('cursor',value) case('SCROLL','scroll') !--no scroll capability in any current giza devices value = 'NO' case default value = ' ' end select length = len_trim(value) end subroutine PGQINF !------------------------------------------------------------------------ ! Module: PGQITF -- inquire image transfer function ! Status: IMPLEMENTED !------------------------------------------------------------------------ subroutine PGQITF (ITF) use giza, only:giza_get_image_transfer_function implicit none integer, intent(out) :: ITF call giza_get_image_transfer_function(ITF) end subroutine PGQITF !------------------------------------------------------------------------ ! Module: PGQLS -- inquire line style ! Status: IMPLEMENTED !------------------------------------------------------------------------ subroutine PGQLS (LS) use giza, only:giza_get_line_style implicit none integer, intent(out) :: LS call giza_get_line_style(LS) end subroutine PGQLS !------------------------------------------------------------------------ ! Module: PGQLW -- inquire line width ! Status: IMPLEMENTED !------------------------------------------------------------------------ subroutine PGQLW (LW) use giza, only:giza_get_line_width implicit none integer, intent(out) :: LW real :: giza_lw call giza_get_line_width(giza_lw) LW = int(2.*giza_lw) end subroutine PGQLW !------------------------------------------------------------------------ ! Module: PGQNDT -- inquire number of available device types ! Status: NOT IMPLEMENTED !------------------------------------------------------------------------ subroutine PGQNDT(N) implicit none integer, intent(out) :: N N = 1 end subroutine PGQNDT !------------------------------------------------------------------------ ! Module: PGQPOS -- inquire current pen position ! Status: IMPLEMENTED !------------------------------------------------------------------------ subroutine PGQPOS (X, Y) use giza, only:giza_get_current_point implicit none real, intent(out) :: X, Y call giza_get_current_point(X, Y) end subroutine PGQPOS !------------------------------------------------------------------------ ! Module: PGQTBG -- inquire text background color index ! Status: IMPLEMENTED !------------------------------------------------------------------------ subroutine PGQTBG (TBCI) use giza, only:giza_get_text_background implicit none integer, intent(out) :: TBCI call giza_get_text_background(TBCI) end subroutine PGQTBG !------------------------------------------------------------------------ ! Module: PGQTXT -- find bounding box of text string ! Status: IMPLEMENTED !------------------------------------------------------------------------ subroutine PGQTXT (X, Y, ANGLE, FJUST, TEXT, XBOX, YBOX) use giza, only:giza_qtext implicit none real, intent(in) :: X, Y, ANGLE, FJUST character*(*), intent(in) :: TEXT real, intent(out) :: XBOX(4), YBOX(4) call giza_qtext(X, Y, ANGLE, FJUST, TEXT(:LEN_TRIM(TEXT)), XBOX, YBOX) end subroutine PGQTXT !------------------------------------------------------------------------ ! Module: PGQVP -- inquire viewport size and position ! Status: IMPLEMENTED !------------------------------------------------------------------------ subroutine PGQVP (UNITS, X1, X2, Y1, Y2) use giza, only:giza_get_viewport use gizapgplot, only:units_giza implicit none integer, intent(in) :: UNITS real, intent(out) :: X1, X2, Y1, Y2 call giza_get_viewport(units_giza(UNITS), X1, X2, Y1, Y2) end subroutine PGQVP !------------------------------------------------------------------------ ! Module: PGQVSZ -- inquire size of view surface ! Status: IMPLEMENTED !----------------------------------------------------------------------- subroutine PGQVSZ (UNITS, X1, X2, Y1, Y2) use giza, only:giza_get_paper_size use gizapgplot, only:units_giza implicit none integer, intent(in) :: UNITS real, intent(out) :: X1, X2, Y1, Y2 X1 = 0. Y1 = 0. call giza_get_paper_size(units_giza(UNITS),X2,Y2) end subroutine PGQVSZ !------------------------------------------------------------------------ ! Module: PGQWIN -- inquire window boundary coordinates ! Status: IMPLEMENTED !------------------------------------------------------------------------ subroutine PGQWIN (X1, X2, Y1, Y2) use giza, only:giza_get_window implicit none real, intent(out) :: X1, X2, Y1, Y2 call giza_get_window(X1, X2, Y1, Y2) end subroutine PGQWIN !------------------------------------------------------------------------ ! Module: PGRECT -- draw a rectangle, using fill-area attributes ! Status: IMPLEMENTED !------------------------------------------------------------------------ subroutine PGRECT (X1, X2, Y1, Y2) use giza, only:giza_rectangle implicit none real, intent(in) :: X1, X2, Y1, Y2 call giza_rectangle(X1, X2, Y1, Y2) end subroutine PGRECT !------------------------------------------------------------------------ ! Module: PGRND -- find the smallest `round' number greater than x ! Status: IMPLEMENTED !------------------------------------------------------------------------ real function PGRND (X, NSUB) use giza, only:giza_round implicit none real, intent(in) :: X integer, intent(out) :: NSUB PGRND = giza_round(X, NSUB) end function PGRND !------------------------------------------------------------------------ ! Module: PGRNGE -- choose axis limits ! Status: IMPLEMENTED !------------------------------------------------------------------------ subroutine PGRNGE (X1, X2, XLO, XHI) implicit none real, intent(in) :: X1, X2 real, intent(out) :: XLO, XHI real :: dx dx = X2-X1 XLO = X1 - 0.1*dx XHI = X2 + 0.1*dx if (XLO.lt.0. .and. X1.ge.0.) XLO = 0. if (XHI.gt.0. .and. X2.le.0.) XHI = 0. end subroutine PGRNGE !------------------------------------------------------------------------ ! Module: PGSAH -- set arrow-head style ! Status: IMPLEMENTED !------------------------------------------------------------------------ subroutine PGSAH (FS, ANGLE, BARB) use giza, only:giza_set_arrow_style implicit none integer, intent(in) :: FS real, intent(in) :: ANGLE, BARB call giza_set_arrow_style(FS, ANGLE, BARB) end subroutine PGSAH !------------------------------------------------------------------------ ! Module: PGSAVE -- save PGPLOT attributes ! Status: IMPLEMENTED !------------------------------------------------------------------------ subroutine PGSAVE use giza, only:giza_save implicit none call giza_save() end subroutine PGSAVE !------------------------------------------------------------------------ ! Module: PGUNSA -- restore PGPLOT attributes ! Status: IMPLEMENTED !------------------------------------------------------------------------ subroutine PGUNSA use giza, only:giza_restore implicit none call giza_restore() end subroutine PGUNSA !------------------------------------------------------------------------ ! Module: PGSCF -- set character font ! Status: IMPLEMENTED !------------------------------------------------------------------------ subroutine PGSCF (FONT) use giza, only:giza_set_font,giza_set_font_italic !,giza_set_font_bold use gizapgplot, only:pgfont implicit none integer, intent(in) :: FONT select case(FONT) case(4) call giza_set_font('cursive') case(3) call giza_set_font_italic('times') case(2) call giza_set_font('times') case default call giza_set_font('arial') end select ! !--this is a setting for the PGPLOT frontend only ! (giza has much more general fonts than PGPLOT) ! ! set pgfont so that query calls to PGQCF are successful ! pgfont = FONT end subroutine PGSCF !------------------------------------------------------------------------ ! Module: PGSCH -- set character height ! Status: IMPLEMENTED !------------------------------------------------------------------------ subroutine PGSCH (SIZE) use giza, only:giza_set_character_height implicit none real, intent(in) :: SIZE call giza_set_character_height(SIZE) end subroutine PGSCH !------------------------------------------------------------------------ ! Module: PGSCI -- set color index ! Status: IMPLEMENTED !------------------------------------------------------------------------ subroutine PGSCI (CI) use giza, only:giza_set_colour_index implicit none integer, intent(in) :: CI call giza_set_colour_index(CI) end subroutine PGSCI !------------------------------------------------------------------------ ! Module: PGSCIR -- set color index range ! Status: IMPLEMENTED !------------------------------------------------------------------------ subroutine PGSCIR(ICILO, ICIHI) use giza, only:giza_set_colour_index_range implicit none integer, intent(in) :: ICILO, ICIHI call giza_set_colour_index_range(ICILO,ICIHI) end subroutine PGSCIR !------------------------------------------------------------------------ ! Module: PGSCLP -- enable or disable clipping at edge of viewport ! Status: IMPLEMENTED !------------------------------------------------------------------------ subroutine PGSCLP(STATE) use giza, only:giza_set_clipping integer, intent(in) :: STATE call giza_set_clipping(STATE) end subroutine PGSCLP !------------------------------------------------------------------------ ! Module: PGSCR -- set color representation ! Status: IMPLEMENTED !------------------------------------------------------------------------ subroutine PGSCR (CI, CR, CG, CB) use giza, only:giza_set_colour_representation implicit none integer, intent(in) :: CI real, intent(in) :: CR, CG, CB call giza_set_colour_representation(CI, CR, CG, CB) end subroutine PGSCR !------------------------------------------------------------------------ ! Module: PGSCRL -- scroll window ! Status: NOT IMPLEMENTED !------------------------------------------------------------------------ subroutine PGSCRL (DX, DY) implicit none real, intent(in) :: DX, DY end subroutine PGSCRL !------------------------------------------------------------------------ ! Module: PGSCRN -- set color representation by name ! Status: NOT IMPLEMENTED !------------------------------------------------------------------------ subroutine PGSCRN(CI, NAME, IER) implicit none integer, intent(in) :: CI character*(*), intent(in) :: NAME integer, intent(out) :: IER end subroutine PGSCRN !------------------------------------------------------------------------ ! Module: PGSFS -- set fill-area style ! Status: IMPLEMENTED !------------------------------------------------------------------------ subroutine PGSFS (FS) use giza, only:giza_set_fill implicit none integer, intent(in) :: FS call giza_set_fill(FS) end subroutine PGSFS !------------------------------------------------------------------------ ! Module: PGSHLS -- set color representation using HLS system ! Status: IMPLEMENTED !------------------------------------------------------------------------ subroutine PGSHLS (CI, CH, CL, CS) use giza, only:giza_set_colour_representation_hls implicit none integer, intent(in) :: CI real, intent(in) :: CH, CL, CS call giza_set_colour_representation_hls(CI, CH, CL, CS) end subroutine PGSHLS !------------------------------------------------------------------------ ! Module: PGSHS -- set hatching style ! Status: IMPLEMENTED !------------------------------------------------------------------------ subroutine PGSHS (ANGLE, SEPN, PHASE) use giza, only:giza_set_hatching_style implicit none real, intent(in) :: ANGLE, SEPN, PHASE call giza_set_hatching_style(ANGLE,SEPN,PHASE) end subroutine PGSHS !------------------------------------------------------------------------ ! Module: PGSITF -- set image transfer function ! Status: IMPLEMENTED !------------------------------------------------------------------------ subroutine PGSITF (ITF) use giza, only:giza_set_image_transfer_function implicit none integer, intent(in) :: ITF call giza_set_image_transfer_function(ITF) end subroutine PGSITF !------------------------------------------------------------------------ ! Module: PGSLCT -- select an open graphics device ! Status: IMPLEMENTED !------------------------------------------------------------------------ subroutine PGSLCT(ID) use giza, only:giza_select_device integer, intent(in) :: ID integer :: ierr call giza_select_device(ID) end subroutine PGSLCT !------------------------------------------------------------------------ ! Module: PGSLS -- set line style ! Status: IMPLEMENTED !------------------------------------------------------------------------ subroutine PGSLS (LS) use giza, only:giza_set_line_style,giza_ls_solid,giza_ls_short_dash, & giza_ls_long_dash, giza_ls_dot, giza_ls_dash_dot, & giza_ls_dash_dot_dot_dot implicit none integer, intent(in) :: LS select case(LS) case(1) call giza_set_line_style(giza_ls_solid) case(2) call giza_set_line_style(giza_ls_short_dash) case(3) call giza_set_line_style(giza_ls_dash_dot) case(4) call giza_set_line_style(giza_ls_dot) case(5) call giza_set_line_style(giza_ls_dash_dot_dot_dot) case(6) ! extension: we allow extra line styles beyond PGPLOT call giza_set_line_style(giza_ls_long_dash) case default call giza_set_line_style(giza_ls_solid) end select end subroutine PGSLS !------------------------------------------------------------------------ ! Module: PGSLW -- set line width ! Status: IMPLEMENTED !------------------------------------------------------------------------ subroutine PGSLW (LW) use giza, only:giza_set_line_width implicit none integer, intent(in) :: LW call giza_set_line_width(0.5 + 0.5*LW) end subroutine PGSLW !------------------------------------------------------------------------ ! Module: PGSTBG -- set text background color index ! Status: IMPLEMENTED !------------------------------------------------------------------------ subroutine PGSTBG (TBCI) use giza, only:giza_set_text_background implicit none integer, intent(in) :: TBCI call giza_set_text_background(TBCI) end subroutine PGSTBG !------------------------------------------------------------------------ ! Module: PGSUBP -- subdivide view surface into panels ! Status: IMPLEMENTED !------------------------------------------------------------------------ subroutine PGSUBP (NXSUB, NYSUB) use giza, only:giza_subpanel implicit none integer, intent(in) :: NXSUB, NYSUB call giza_subpanel(NXSUB, NYSUB) end subroutine PGSUBP !------------------------------------------------------------------------ ! Module: PGSVP -- set viewport (normalized device coordinates) ! Status: IMPLEMENTED !------------------------------------------------------------------------ subroutine PGSVP (XLEFT, XRIGHT, YBOT, YTOP) use giza, only:giza_set_viewport implicit none real, intent(in) :: XLEFT, XRIGHT, YBOT, YTOP call giza_set_viewport(XLEFT, XRIGHT, YBOT, YTOP) end subroutine PGSVP !------------------------------------------------------------------------ ! Module: PGSWIN -- set window ! Status: IMPLEMENTED !------------------------------------------------------------------------ subroutine PGSWIN (X1, X2, Y1, Y2) use giza, only:giza_set_window implicit none real, intent(in) :: X1, X2, Y1, Y2 call giza_set_window(X1, X2, Y1, Y2) end subroutine PGSWIN !------------------------------------------------------------------------ ! Module: PGTBOX -- draw frame and write (DD) HH MM SS.S labelling ! Status: IMPLEMENTED !------------------------------------------------------------------------ subroutine PGTBOX (XOPT, XTICK, NXSUB, YOPT, YTICK, NYSUB) use giza, only:giza_box_time implicit none real, intent(in) :: XTICK, YTICK integer, intent(in) :: NXSUB, NYSUB character, intent(in) :: XOPT*(*), YOPT*(*) call giza_box_time(XOPT, XTICK, NXSUB, YOPT, YTICK, NYSUB) end subroutine PGTBOX !------------------------------------------------------------------------ ! Module: PGTEXT -- write text (horizontal, left-justified) ! Status: IMPLEMENTED !------------------------------------------------------------------------ subroutine PGTEXT (X, Y, TEXT) use giza, only:giza_text implicit none real, intent(in) :: X, Y character*(*), intent(in) :: TEXT call giza_text(X, Y, TEXT(:LEN_TRIM(TEXT))) end subroutine PGTEXT !------------------------------------------------------------------------ ! Module: PGTICK -- draw a single tick mark on an axis ! Status: IMPLEMENTED !------------------------------------------------------------------------ subroutine PGTICK (X1, Y1, X2, Y2, V, TIKL, TIKR, DISP, ORIENT, STR) use giza, only:giza_tick implicit none real, intent(in) :: X1, Y1, X2, Y2, V, TIKL, TIKR, DISP, ORIENT character*(*), intent(in) :: STR call giza_tick(X1, Y1, X2, Y2, V, TIKL, TIKR, DISP, ORIENT, STR) end subroutine PGTICK !------------------------------------------------------------------------ ! Module: PGUPDT -- update display ! Status: IMPLEMENTED !------------------------------------------------------------------------ subroutine PGUPDT use giza, only:giza_flush_buffer implicit none call giza_flush_buffer() end subroutine PGUPDT !------------------------------------------------------------------------ ! Module: PGVECT -- vector map of a 2D data array, with blanking ! Status: IMPLEMENTED !------------------------------------------------------------------------ subroutine PGVECT (A, B, IDIM, JDIM, I1, I2, J1, J2, C, NC, TR, BLANK) use giza, only:giza_vector use gizapgplot, only:convert_tr_to_affine implicit none integer, intent(in) :: IDIM, JDIM, I1, I2, J1, J2, NC real, intent(in) :: A(IDIM,JDIM), B(IDIM, JDIM), TR(6), BLANK, C real :: affine(6) call convert_tr_to_affine(tr,affine) call giza_vector(idim,jdim,a,b,i1-1,i2-1,j1-1,j2-1,c,nc,affine,blank) end subroutine PGVECT !------------------------------------------------------------------------ ! Module: PGVSIZ -- set viewport (inches) ! Status: IMPLEMENTED !------------------------------------------------------------------------ subroutine PGVSIZ (XLEFT, XRIGHT, YBOT, YTOP) use giza, only:giza_set_viewport_inches implicit none real, intent(in) :: XLEFT, XRIGHT, YBOT, YTOP call giza_set_viewport_inches(XLEFT, XRIGHT, YBOT, YTOP) end subroutine PGVSIZ !------------------------------------------------------------------------ ! Module: PGVSTD -- set standard (default) viewport ! Status: IMPLEMENTED !------------------------------------------------------------------------ subroutine PGVSTD use giza, only:giza_set_viewport_default implicit none call giza_set_viewport_default() end subroutine PGVSTD !------------------------------------------------------------------------ ! Module: PGWEDG -- annotate an image plot with a wedge ! Status: IMPLEMENTED !------------------------------------------------------------------------ subroutine PGWEDG(SIDE, DISP, WIDTH, FG, BG, LABEL) use giza, only:giza_colour_bar implicit none character *(*), intent(in) :: SIDE,LABEL real, intent(in) :: DISP, WIDTH, FG, BG call giza_colour_bar(SIDE, DISP, WIDTH, FG, BG, LABEL) end subroutine PGWEDG !------------------------------------------------------------------------ ! Module: PGWNAD -- set window and adjust viewport to same aspect ratio ! Status: IMPLEMENTED !------------------------------------------------------------------------ subroutine PGWNAD (X1, X2, Y1, Y2) use giza, only:giza_set_window_equal_scale implicit none real, intent(in) :: X1, X2, Y1, Y2 call giza_set_window_equal_scale(X1, X2, Y1, Y2) end subroutine PGWNAD !------------------------------------------------------------------------ ! Module: PGADVANCE -- non-standard alias for PGPAGE ! Status: IMPLEMENTED !------------------------------------------------------------------------ subroutine PGADVANCE implicit none call PGPAGE end subroutine PGADVANCE !------------------------------------------------------------------------ ! Module: PGBEGIN -- non-standard alias for PGBEG ! Status: IMPLEMENTED !------------------------------------------------------------------------ integer function PGBEGIN (UNIT, FILE, NXSUB, NYSUB) implicit none integer, intent(in) :: UNIT character*(*), intent(in) :: FILE integer, intent(in) :: NXSUB, NYSUB integer, external :: PGBEG PGBEGIN = PGBEG(UNIT,FILE,NXSUB,NYSUB) end function PGBEGIN !------------------------------------------------------------------------ ! Module: PGCURSE -- non-standard alias for PGCURS ! Status: IMPLEMENTED !------------------------------------------------------------------------ integer function PGCURSE (X, Y, CH) implicit none real, intent(inout) :: X, Y character*1, intent(inout) :: CH integer, external :: PGCURS PGCURSE = PGCURS(X, Y, CH) end function PGCURSE !------------------------------------------------------------------------ ! Module: PGLABEL -- non-standard alias for PGLAB ! Status: IMPLEMENTED !------------------------------------------------------------------------ subroutine PGLABEL (XLBL, YLBL, TOPLBL) implicit none character*(*), intent(in) :: XLBL, YLBL, TOPLBL call PGLAB(XLBL, YLBL, TOPLBL) end subroutine PGLABEL !------------------------------------------------------------------------ ! Module: PGMTEXT -- non-standard alias for PGMTXT ! Status: IMPLEMENTED !------------------------------------------------------------------------ subroutine PGMTEXT (SIDE, DISP, COORD, FJUST, TEXT) implicit none character*(*), intent(in) :: SIDE, TEXT real, intent(in) :: DISP, COORD, FJUST call PGMTXT(SIDE, DISP, COORD, FJUST, TEXT) end subroutine PGMTEXT !------------------------------------------------------------------------ ! Module: PGNCURSE -- non-standard alias for PGNCUR ! Status: IMPLEMENTED !------------------------------------------------------------------------ subroutine PGNCURSE (MAXPT, NPT, X, Y, SYMBOL) implicit none integer, intent(in) :: MAXPT integer, intent(out) :: NPT real, intent(out) :: X(*), Y(*) integer, intent(in) :: SYMBOL CALL PGNCUR(MAXPT, NPT, X, Y, SYMBOL) end subroutine PGNCURSE !------------------------------------------------------------------------ ! Module: PGPAPER -- non-standard alias for PGPAP ! Status: IMPLEMENTED !------------------------------------------------------------------------ subroutine PGPAPER (WIDTH, ASPECT) implicit none real, intent(in) :: WIDTH, ASPECT call PGPAP(WIDTH, ASPECT) end subroutine PGPAPER !------------------------------------------------------------------------ ! Module: PGPOINT -- non-standard alias for PGPT ! Status: IMPLEMENTED !------------------------------------------------------------------------ subroutine PGPOINT (N, XPTS, YPTS, SYMBOL) implicit none integer, intent(in) :: N real, intent(in) :: XPTS(*), YPTS(*) integer, intent(in) :: SYMBOL call PGPT(N, XPTS, YPTS, SYMBOL) end subroutine PGPOINT !------------------------------------------------------------------------ ! Module: PGPTEXT -- non-standard alias for PGPTXT ! Status: IMPLEMENTED !------------------------------------------------------------------------ subroutine PGPTEXT (X, Y, ANGLE, FJUST, TEXT) implicit none real, intent(in) :: X, Y, ANGLE, FJUST character*(*), intent(in) :: TEXT call PGPTXT(X, Y, ANGLE, FJUST, TEXT) end subroutine PGPTEXT !------------------------------------------------------------------------ ! Module: PGVPORT -- non-standard alias for PGSVP ! Status: IMPLEMENTED !------------------------------------------------------------------------ subroutine PGVPORT (XLEFT, XRIGHT, YBOT, YTOP) implicit none real, intent(in) :: XLEFT, XRIGHT, YBOT, YTOP call PGSVP(XLEFT, XRIGHT, YBOT, YTOP) end subroutine PGVPORT !------------------------------------------------------------------------ ! Module: PGVSIZE -- non-standard alias for PGVSIZ ! Status: IMPLEMENTED !------------------------------------------------------------------------ subroutine PGVSIZE (XLEFT, XRIGHT, YBOT, YTOP) implicit none real, intent(in) :: XLEFT, XRIGHT, YBOT, YTOP call PGVSIZ(XLEFT, XRIGHT, YBOT, YTOP) end subroutine PGVSIZE !------------------------------------------------------------------------ ! Module: PGVSTAND -- non-standard alias for PGVSTD ! Status: IMPLEMENTED !------------------------------------------------------------------------ subroutine PGVSTAND implicit none call PGVSTD end subroutine PGVSTAND !------------------------------------------------------------------------ ! Module: PGWINDOW -- non-standard alias for PGSWIN ! Status: IMPLEMENTED !------------------------------------------------------------------------ subroutine PGWINDOW (X1, X2, Y1, Y2) implicit none real, intent(in) :: X1, X2, Y1, Y2 call PGSWIN(X1, X2, Y1, Y2) end subroutine PGWINDOW giza-1.5.0/src/giza-points.c000066400000000000000000000576041477367113400156770ustar00rootroot00000000000000/* giza - a scientific plotting library built on cairo * * Copyright (c) 2010 James Wetter and Daniel Price * Copyright (c) 2010-2014 Daniel Price * * This library is free software; and you are welcome to redistribute * it under the terms of the GNU General Public License * (GPL, see LICENSE file for details) and the provision that * this notice remains intact. If you modify this file, please * note section 5a) of the GPLv3 states that: * * a) The work must carry prominent notices stating that you modified * it, and giving a relevant date. * * This software is distributed "AS IS", with ABSOLUTELY NO WARRANTY. * See the GPL for specific language governing rights and limitations. * * The Original code is the giza plotting library. * * Contributor(s): * James Wetter * Daniel Price (main contact) */ #include "giza-private.h" #include "giza-transforms-private.h" #include "giza-stroke-private.h" #include "giza-io-private.h" #include #include /* triangle pointings */ #define GIZA_POINT_DOWN ((int)1) #define GIZA_POINT_UP ((int)-1) /* Internal functions */ static void _giza_point (double x, double y); static void _giza_rect (double x, double y, int fill, double scale); static void _giza_rect_concave (double x, double y, int fill, double scale, double bulge_fraction); static void _giza_plus (double x, double y); static void _giza_plus_size (double x, double y, double size); static void _giza_fat_plus (double x, double y, int fill, double scale, double inset_fraction); static void _giza_triangle (double x, double y, int fill, int updown, float scale, float offset_fraction); static void _giza_diamond (double x, double y, int fill, double scale); static void _giza_polygon (double x, double y, int nsides , int fill, double scale); static void _giza_star (double x, double y, int npoints, double ratio, int fill, double scale); static void _giza_star_line (double x, double y, int npoints, double scale); static void _giza_circle (double x, double y); static void _giza_circle_size (double x, double y, double size, int fill); static void _giza_cross (double x, double y, double scale); static void _giza_arrow (double x, double y, double angle, double scale); static void _giza_char (int symbol, double x, double y); static void _giza_drawchar (const char *string, double x, double y); static void _giza_start_draw_symbols (int *oldTrans, int *oldLineStyle, int *oldLineCap, double *oldLineWidth, double *oldCh); static void _giza_end_draw_symbols (int oldTrans, int oldLineStyle, int oldLineCap, double oldLineWidth, double oldCh); static void _giza_draw_symbol (double xd, double yd, int symbol); /* Stores the height of the markers */ static double markerHeight; /** * Drawing: giza_points * * Synopsis: Plot n points at x[n], y[n] in world coords. * * Input: * -n :- the number of points * -x :- the x-coordinates of the points in world coords * -y :- the y-coordinates of the points in world coords * -symbol :- the type of marker to use * * Symbols: * -default :- small point (same as 1) * -0 :- square * -1 :- . * -2 :- + * -3 :- * * -4 :- o * -5 :- x * ->31 :- from the Unicode table * */ void giza_points (int n, const double* x, const double* y, int symbol) { if (!_giza_check_device_ready ("giza_points")) return; if (n < 1) return; int oldTrans,oldLineStyle,oldLineCap; double oldLineWidth,oldCh; /* initialise symbol drawing */ _giza_start_draw_symbols (&oldTrans,&oldLineStyle,&oldLineCap,&oldLineWidth,&oldCh); /* for each point find where to put each marker */ int i; double xd, yd; for (i = 0; i < n; i++) { /* convert world coords to device coords */ _giza_set_trans (GIZA_TRANS_WORLD); xd = x[i]; yd = y[i]; cairo_user_to_device (Dev[id].context, &xd, &yd); _giza_set_trans (GIZA_TRANS_IDEN); /* draw the symbol */ _giza_draw_symbol(xd, yd, symbol); } _giza_stroke (); giza_flush_device (); /* restore old setting */ _giza_end_draw_symbols (oldTrans,oldLineStyle,oldLineCap,oldLineWidth,oldCh); } /** * Drawing: giza_points_float * * Synopsis: Same functionality as giza_points but takes floats. * * See Also: giza_points */ void giza_points_float (int n, const float* x, const float* y, int symbol) { if (!_giza_check_device_ready ("giza_points")) return; if (n < 1) return; int oldTrans,oldLineStyle,oldLineCap; double oldLineWidth,oldCh; /* initialise symbol drawing */ _giza_start_draw_symbols (&oldTrans,&oldLineStyle,&oldLineCap,&oldLineWidth,&oldCh); /* for each point find where to put each marker */ double xd, yd; int i; for (i = 0; i < n; i++) { xd = (double) x[i]; yd = (double) y[i]; /* convert world coords to device coords */ _giza_set_trans (GIZA_TRANS_WORLD); cairo_user_to_device (Dev[id].context, &xd, &yd); _giza_set_trans (GIZA_TRANS_IDEN); /* draw the symbol */ _giza_draw_symbol(xd, yd, symbol); } giza_end_buffer (); _giza_stroke (); giza_flush_device (); /* restore old settings */ _giza_end_draw_symbols (oldTrans,oldLineStyle,oldLineCap,oldLineWidth,oldCh); } /** * Drawing: giza_single_point * * Synopsis: Plots a single point at x, y in world coords. * * Input: * -x :- the x-coordinate of the point in world coords * -y :- the y-coordinate of the point in world coords * -symbol :- the type of marker to use * */ void giza_single_point (double x, double y, int symbol) { double xpts[1], ypts[1]; xpts[0] = x; ypts[0] = y; giza_points (1, xpts, ypts, symbol); } /** * Drawing: giza_single_point_float * * Synopsis: Same functionality as giza_single_point, * but uses floats. * * See Also: giza_single_point */ void giza_single_point_float (float x, float y, int symbol) { double xpts[1], ypts[1]; xpts[0] = (double) x; ypts[0] = (double) y; giza_points (1, xpts, ypts, symbol); } /** * DJP: Internal routine to draw symbol at a given position * in device coordinates */ void _giza_draw_symbol_device (double xd, double yd, int symbol) { int oldTrans,oldLineStyle,oldLineCap; double oldLineWidth,oldCh; /* store existing font matrix */ cairo_matrix_t mat; cairo_get_font_matrix (Dev[id].context, &mat); /* initialise symbol drawing */ _giza_start_draw_symbols (&oldTrans,&oldLineStyle,&oldLineCap,&oldLineWidth,&oldCh); /* for each point find where to put each marker */ _giza_draw_symbol(xd, yd, symbol); _giza_stroke (); giza_flush_device (); /* restore old setting */ _giza_end_draw_symbols (oldTrans,oldLineStyle,oldLineCap,oldLineWidth,oldCh); /* restore font matrix */ cairo_set_font_matrix (Dev[id].context, &mat); } /** * DJP: Internal routine to initialise drawing of symbols * (mainly to avoid repeated code in float/double versions) */ void _giza_start_draw_symbols (int *oldTrans, int *oldLineStyle, int *oldLineCap, double *oldLineWidth, double *oldCh) { /* store the old trans and line width */ *oldTrans = _giza_get_trans (); giza_get_line_style (oldLineStyle); giza_get_line_cap (oldLineCap); giza_get_line_width (oldLineWidth); giza_get_character_height (oldCh); /* Set the height for manually drawn markers */ _giza_get_markerheight(&markerHeight); /* Set the line width for manually drawn markers */ /*_giza_set_trans (GIZA_TRANS_IDEN); */ giza_set_line_width( 0.75 * *oldLineWidth ); giza_set_line_style(1); giza_set_line_cap(0); /* Set the character size to draw the Unicode markers at */ giza_set_character_height (*oldCh * 0.8); } void _giza_end_draw_symbols (int oldTrans, int oldLineStyle, int oldLineCap, double oldLineWidth, double oldCh) { /* restore old settings */ _giza_set_trans (oldTrans); giza_set_line_style (oldLineStyle); giza_set_line_cap (oldLineCap); giza_set_line_width (oldLineWidth); giza_set_character_height (oldCh); } /** * DJP: Internal routine to draw a single point, * assuming initialisation routines have been called * (so cannot be called externally) * * This is mainly to avoid repeated code in the * float and double routines * * Input: * -x, y :- the coordinate of the point in USER coords * -symbol :- the type of marker to use */ void _giza_draw_symbol (double xd, double yd, int symbol) { /* Use Unicode to draw the marker */ if (symbol > 31) { _giza_char (symbol, xd, yd); } /* Manually draw the marker */ else { switch (symbol) { case 31: /* down arrow */ _giza_arrow (xd, yd, 0.5*M_PI, 2.5); break; case 30: /* up arrow */ _giza_arrow (xd, yd, -0.5*M_PI, 2.5); break; case 29: /* right arrow */ _giza_arrow (xd, yd, 0., 2.5); break; case 28: /* left arrow */ _giza_arrow (xd, yd, M_PI, 2.5); break; case 27: /* hollow circles of various sizes */ case 26: case 25: case 24: case 23: case 22: case 21: case 20: case 17: /* MV: filled circle that should scale w/ character height too */ { /* It looks the open circles do not follow an exact linear scale * from 19 -> 27. In stead we make scale from 0.3 -> 7 in 8 * exponentional steps (27 - 19 = 8) */ const double minScale = 0.3, maxScale = 7, nStep = 27 - 19; const double factor = pow(maxScale / minScale, 1./nStep); _giza_circle_size (xd, yd, /*size:*/(symbol==17) ? Dev[id].ch/2.0 : minScale * pow(factor, symbol-19), /*fill:*/symbol==17 ); } break; case 15: /* hollow up+down triangle, where we do slightly different raises on the the up/down triangle */ _giza_triangle(xd, yd, 0, GIZA_POINT_UP, 1.0, 0.5); _giza_triangle(xd, yd, 0, GIZA_POINT_DOWN, 1.0, 0.5); break; case 14: /* open plus sign */ _giza_fat_plus(xd, yd, 0, 2.0, 0.5); break; case 13: /* solid triangle */ _giza_triangle(xd, yd, 1, GIZA_POINT_UP, 0.7, 1); break; case 12: /* five-pointed star */ case 18: /* Filled version of symbol 12 (five-pointed star) */ _giza_star (xd, yd, 5, 0.4, /*fill:*/symbol==18, /*scale: sym#12 > sym#18*/(symbol==12 ? 2.0 : 1.75)); break; case 11: /* hollow diamond */ _giza_diamond (xd, yd, /*fill:*/0, 1.25*Dev[id].ch); break; case 10: /* square with concave sides, slightly larger than default rect */ _giza_rect_concave(xd, yd, 0, 1.8, .3); break; case 9: /* circle with small dot (like Sun symbol) */ _giza_circle_size(xd, yd, 0.2*Dev[id].ch, 1); _giza_circle_size(xd, yd, Dev[id].ch, 0); break; case 8: /* circle and plus */ _giza_circle_size (xd, yd, Dev[id].ch, 0); _giza_plus_size (xd, yd, Dev[id].ch); break; case 7: /* hollow upward-pointing triangle */ _giza_triangle(xd, yd, 0, GIZA_POINT_UP, 0.7, 1); break; case 5: /* cross (x) */ _giza_cross (xd, yd, 1.25*Dev[id].ch); break; case 4: /* hollow circle */ _giza_circle_size (xd, yd, Dev[id].ch, 0); break; case 3: /* asterisk */ _giza_star_line(xd, yd, 3/*nsides*/, 1.25 * sqrt(Dev[id].ch)); break; case 2: /* plus */ _giza_plus_size (xd, yd, Dev[id].ch); break; case 1: /* single small point that scales w/ character height */ /*_giza_circle_size (xd, yd, 0.5, 1);*/ _giza_point (xd, yd); break; case 19: /* slightly larger open rect (just shy of 3x size of #6 */ case 16: /* filled square */ case 6: /* hollow square */ case 0: /* id. */ _giza_rect (xd, yd, /*fill:*/symbol==16, /*scale:*/((symbol == 19) ? 3.5 : (symbol == 16 ? 1.25 : 1.5)) ); break; case -1: /* single small point */ case -2: _giza_point (xd, yd); break; case -3: /* solid polygons */ case -4: case -5: case -6: case -7: case -8: /* scale those up a bit compared to original code */ _giza_polygon (xd, yd, -symbol, 1, 2.5); break; default: _giza_point (xd, yd); break; } } } /** * Draws a small circle at x, y */ static void _giza_point (double x, double y) { cairo_new_sub_path (Dev[id].context); cairo_arc (Dev[id].context, x, y, 1.0, 0., 2.* M_PI); cairo_fill (Dev[id].context); _giza_stroke(); } /** * Draw a rectangle centred at x, y */ static void _giza_rect (double x, double y, int fill, double scale) { const double size = scale * markerHeight; cairo_new_sub_path (Dev[id].context); cairo_rectangle (Dev[id].context, x - 0.5 * size, y - 0.5 * size, size, size ); if (fill) { cairo_fill(Dev[id].context); } cairo_stroke( Dev[id].context ); } /** * Draw a rectangle with concave sides centred at x, y. * The principle size of of the rect is "0.5 * markerHeight * scale" * The 'dent' is bulge_fraction * the size of the square */ static void _giza_rect_concave (double x, double y, int fill, double scale, double bulge_fraction) { /* compute radius of circle, start/end angles and center */ const double dx = scale * 0.8 * markerHeight; const double dy = bulge_fraction * dx; const double beta = atan( dy/dx ), two_beta = 2 * beta; const double one_over_tan2beta = 1. / tan(2*beta); const double R = dy + dx * one_over_tan2beta; const double center = dx * (1 + one_over_tan2beta); cairo_new_sub_path (Dev[id].context); cairo_arc(Dev[id].context, x + center, y, R, M_PI - two_beta, M_PI + two_beta); cairo_new_sub_path(Dev[id].context); cairo_arc(Dev[id].context, x - center, y, R, 2*M_PI - two_beta, 2*M_PI + two_beta); cairo_new_sub_path(Dev[id].context); cairo_arc(Dev[id].context, x, y - center, R, M_PI_2 - two_beta, M_PI_2 + two_beta); cairo_new_sub_path(Dev[id].context); cairo_arc(Dev[id].context, x, y + center, R, 3*M_PI_2 - two_beta, 3*M_PI_2 + two_beta); if (fill) { cairo_fill(Dev[id].context); } cairo_stroke(Dev[id].context); } /** * Draw a plus centred at x, y */ static void _giza_plus (double x, double y) { cairo_new_sub_path (Dev[id].context); cairo_move_to (Dev[id].context, x - markerHeight * 0.8, y); cairo_line_to (Dev[id].context, x + markerHeight * 0.8, y); cairo_move_to (Dev[id].context, x, y - markerHeight * 0.8); cairo_line_to (Dev[id].context, x, y + markerHeight * 0.8); _giza_stroke (); } /** * Draw a plus centred at x, y */ static void _giza_plus_size (double x, double y, double size) { cairo_new_sub_path (Dev[id].context); cairo_move_to (Dev[id].context, x - markerHeight * 0.8 * size, y); cairo_line_to (Dev[id].context, x + markerHeight * 0.8 * size, y); cairo_move_to (Dev[id].context, x, y - markerHeight * 0.8 * size); cairo_line_to (Dev[id].context, x, y + markerHeight * 0.8 * size); _giza_stroke (); } /** * Draw a 'fat' plus centred at x, y * principal size = 0.5 * markerHeigth, * this symbol's real size = principal size scaled by 'scale' * The insets are inset_fraction * real size */ static void _giza_fat_plus (double x, double y, int fill, double scale, double inset_fraction) { const double side = 0.6 * markerHeight * scale; const double inset = inset_fraction * side, outset = side - inset; cairo_new_sub_path (Dev[id].context); cairo_move_to (Dev[id].context, x - side, y - outset/2); cairo_rel_line_to (Dev[id].context, 0 , outset); /* up */ cairo_rel_line_to (Dev[id].context, inset , 0); /* right */ cairo_rel_line_to (Dev[id].context, 0 , inset); /* up */ cairo_rel_line_to (Dev[id].context, outset , 0); /* right */ cairo_rel_line_to (Dev[id].context, 0 , -inset); /* down */ cairo_rel_line_to (Dev[id].context, inset , 0); /* right */ cairo_rel_line_to (Dev[id].context, 0 , -outset);/* down */ cairo_rel_line_to (Dev[id].context, -inset , 0); /* left */ cairo_rel_line_to (Dev[id].context, 0 , -inset); /* down */ cairo_rel_line_to (Dev[id].context, -outset , 0); /* left */ cairo_rel_line_to (Dev[id].context, 0 , inset); /* up */ cairo_rel_line_to (Dev[id].context, -inset , 0); /* left */ if (fill) { cairo_fill(Dev[id].context); } cairo_stroke( Dev[id].context ); } /** * Draws a hollow circle at x, y */ static void _giza_circle (double x, double y) { cairo_new_sub_path (Dev[id].context); cairo_move_to(Dev[id].context, x + markerHeight*0.5, y); cairo_arc (Dev[id].context, x, y, markerHeight * 0.5, 0., 2. * M_PI); _giza_stroke (); } /** * Draws a hollow circle at x, y, with size and fill arguments * size is in units of 'canonical symbol size' (== 0.5 * markerHeight) */ static void _giza_circle_size (double x, double y, double size, int fill) { cairo_new_sub_path (Dev[id].context); cairo_arc (Dev[id].context, x, y, size * markerHeight * 0.8, 0., 2. * M_PI); if (fill) { cairo_fill(Dev[id].context); } cairo_stroke ( Dev[id].context ); } /** * Draws a downward pointing triangle at x, y, either hollow or solid, * pointing UP (updown=-1) or DOWN (updown=+1), with isosceles sides * of size scale * markerHeight, with the baseline offset scaled * by offset_fraction (offset_fraction = 1 => isosceles triangle * with center x,y, otherwise the triangle is displaced by offset_fraction * in the y direction) */ static void _giza_triangle(double x, double y, int fill, int updown, float scale, float offset_fraction) { cairo_new_sub_path (Dev[id].context); cairo_move_to (Dev[id].context, x - markerHeight * scale, y - offset_fraction * updown * markerHeight * scale); cairo_line_to (Dev[id].context, x + markerHeight * scale, y - offset_fraction * updown * markerHeight * scale); cairo_line_to (Dev[id].context, x, y + updown * markerHeight * scale); cairo_close_path (Dev[id].context); if (fill) { cairo_fill(Dev[id].context); } cairo_stroke (Dev[id].context); } /** * Draws a diamond at x, y, either hollow or solid */ static void _giza_diamond(double x, double y, int fill, double scale) { cairo_new_sub_path (Dev[id].context); cairo_move_to (Dev[id].context, x - scale*markerHeight*0.4/*0.5*/, y ); cairo_line_to (Dev[id].context, x, y + scale*markerHeight * 0.75/*0.625*/ ); cairo_line_to (Dev[id].context, x + scale*markerHeight*0.4/*0.5*/, y ); cairo_line_to (Dev[id].context, x, y - scale*markerHeight * 0.75/*0.625*/ ); cairo_close_path (Dev[id].context); if (fill) { cairo_fill(Dev[id].context); } _giza_stroke (); } /** * Draws a cross at x, y */ static void _giza_cross (double x, double y, double scale) { const double dx = (1./sqrt(2.))*markerHeight*scale; cairo_new_sub_path (Dev[id].context); cairo_move_to (Dev[id].context, x, y); cairo_rel_move_to (Dev[id].context, -dx * 0.5, -dx * 0.5); cairo_rel_line_to (Dev[id].context, dx, dx); cairo_rel_move_to (Dev[id].context, -dx, 0); cairo_rel_line_to (Dev[id].context, dx, -dx); _giza_stroke (); } /** * Draws an arrow at x, y at scale 'scale'. * Unit of scale is '0.5 * markerHeight' for the * length of the arrow. */ static void _giza_arrow (double x, double y, double angle, double scale) { const double r = scale * 0.5 * markerHeight; const double headwidth = 0.5 * r; const double headlength = 0.5 * r; const double cosa = cos(angle), sina = sin(angle); cairo_move_to (Dev[id].context, x - r*cosa, y - r*sina); cairo_line_to (Dev[id].context, x + r*cosa, y + r*sina); cairo_rel_line_to (Dev[id].context, - headlength*cosa + headwidth*sina, headwidth*cosa - headlength*sina); cairo_move_to (Dev[id].context, x + r*cosa, y + r*sina); cairo_rel_line_to (Dev[id].context, - headlength*cosa - headwidth*sina, -headwidth*cosa - headlength*sina); _giza_stroke (); } /** * Draws a general polygon at x, y with nsides sides at scale scale. * Units of scale are 'normalized symbol size' = 0.5 * markerHeight */ static void _giza_polygon (double x, double y, int nsides, int fill, double scale) { /* Define radius */ double r = scale * 0.5 * markerHeight; /* Set first vertex above marker position */ double alpha = 1.5 * M_PI; double cosalpha = cos(alpha); double sinalpha = sin(alpha); cairo_new_sub_path (Dev[id].context); cairo_move_to (Dev[id].context, x + r * cosalpha, y + r * sinalpha); /* Define other vertexes */ double alpha_step = 2. * M_PI / ((double) nsides); int i; for (i = 1; i < nsides; i++) { alpha += alpha_step; cosalpha = cos(alpha); sinalpha = sin(alpha); cairo_line_to (Dev[id].context, x + r * cosalpha, y + r * sinalpha); } cairo_close_path(Dev[id].context); if (fill) { cairo_fill(Dev[id].context); } _giza_stroke (); } /** * Draws an n-pointed star at x,y */ static void _giza_star (double x, double y, int npoints, double ratio, int fill, double scale) { /* Define outer and inner radius */ double r = 0.8 * markerHeight * scale; double ri = ratio * r; /* Set first vertex so that shape appears flat-bottomed */ double alpha = (0.5 + 1./npoints)* M_PI; double cosalpha = cos(alpha); double sinalpha = sin(alpha); /* Define other vertexes */ double alpha_step = 2 * M_PI / npoints; int i; cairo_new_sub_path (Dev[id].context); cairo_move_to (Dev[id].context, x + r * cosalpha, y + r * sinalpha); for (i = 1; i < npoints; i++) { alpha += 0.5*alpha_step; cosalpha = cos(alpha); sinalpha = sin(alpha); cairo_line_to (Dev[id].context, x + ri * cosalpha, y + ri * sinalpha); alpha += 0.5*alpha_step; cosalpha = cos(alpha); sinalpha = sin(alpha); cairo_line_to (Dev[id].context, x + r * cosalpha, y + r * sinalpha); } alpha += 0.5*alpha_step; cosalpha = cos(alpha); sinalpha = sin(alpha); cairo_line_to (Dev[id].context, x + ri * cosalpha, y + ri * sinalpha); cairo_close_path(Dev[id].context); if (fill) { cairo_fill(Dev[id].context); } cairo_stroke ( Dev[id].context ); } /* * draw an n-line star (like polygon, only not drawing the edges but the * connections to points half a circle away. */ static void _giza_star_line (double x, double y, int nsides, double scale) { /* Define radius */ double r = scale * 0.5 * markerHeight; /* Set first vertex above marker position */ double alpha = 1.5 * M_PI, alpha_step = M_PI / ((double)nsides); double dx = r * cos(alpha); double dy = r * sin(alpha); cairo_new_sub_path (Dev[id].context); cairo_move_to (Dev[id].context, x + dx, y + dy); /* Define other vertices */ int i; for (i = 0; i < nsides; i++) { /* first line to other vertex */ cairo_line_to(Dev[id].context, x - dx, y - dy); alpha += alpha_step; dx = r * cos(alpha); dy = r * sin(alpha); cairo_move_to (Dev[id].context, x + dx, y + dy); } _giza_stroke (); } /** * Draws the Unicode symbol at x, y. * NOTE: Only supports ASCII now. */ static void _giza_char (int symbol, double x, double y) { char str[4]; /* cairo_text_extents_t extents; */ if (symbol <= 127) { str[0] = (char) symbol; str[1] = '\0'; } else { str[0] = 'A'; str[1] = '\0'; } _giza_drawchar(str,x,y); } /** * Draws a character at x, y. */ static void _giza_drawchar (const char *str, double x, double y) { cairo_text_extents_t extents; cairo_text_extents (Dev[id].context, str, &extents); /* * use information about the glyph to centre * the character on the x, y position */ cairo_new_sub_path (Dev[id].context); cairo_move_to (Dev[id].context, x - 0.5*extents.width - extents.x_bearing, y - 0.5*extents.height - extents.y_bearing); cairo_show_text (Dev[id].context, str); } void _giza_get_markerheight (double *mheight) { *mheight = Dev[id].fontExtents.max_x_advance * 0.2; return; } giza-1.5.0/src/giza-polygon.c000066400000000000000000000051221477367113400160360ustar00rootroot00000000000000/* giza - a scientific plotting library built on cairo * * Copyright (c) 2010 James Wetter and Daniel Price * Copyright (c) 2010-2012 Daniel Price * * This library is free software; and you are welcome to redistribute * it under the terms of the GNU General Public License * (GPL, see LICENSE file for details) and the provision that * this notice remains intact. If you modify this file, please * note section 5a) of the GPLv3 states that: * * a) The work must carry prominent notices stating that you modified * it, and giving a relevant date. * * This software is distributed "AS IS", with ABSOLUTELY NO WARRANTY. * See the GPL for specific language governing rights and limitations. * * The Original code is the giza plotting library. * * Contributor(s): * James Wetter * Daniel Price (main contact) */ #include "giza-private.h" #include "giza-transforms-private.h" #include "giza-fill-private.h" #include "giza-io-private.h" #include "giza-stroke-private.h" #include /** * Drawing: giza_polygon * * Synopsis: Draws a polygon, using the current fill set by giza_set_fill. * * Input: * -n :- number of vertices * -xpts :- x positions of vertices * -ypts :- y positions of vertices * * See Also: giza_set_fill */ void giza_polygon (int n, const double *xpts, const double *ypts) { if (!_giza_check_device_ready ("giza_polygon")) return; /* check the line has at least one segment */ if (n < 1) return; int oldTrans = _giza_get_trans (); _giza_set_trans (GIZA_TRANS_WORLD); cairo_move_to (Dev[id].context, xpts[0], ypts[0]); int i; for (i = 1; i < n; i++) { cairo_line_to(Dev[id].context,xpts[i],ypts[i]); } cairo_close_path(Dev[id].context); _giza_fill (); _giza_stroke (); giza_flush_device (); _giza_set_trans (oldTrans); } /** * Drawing: giza_polygon_float * * Synopsis: Same functionality as giza_polygon, but takes floats * * See Also: giza_polygon */ void giza_polygon_float (int n, const float *xpts, const float *ypts) { if (!_giza_check_device_ready ("giza_polygon")) return; /* check the line has at least one segment */ if (n < 1) return; int oldTrans = _giza_get_trans (); _giza_set_trans (GIZA_TRANS_WORLD); cairo_move_to (Dev[id].context, (double) xpts[n-1],(double) ypts[n-1]); int i; for (i = 0; i < n; i++) { cairo_line_to(Dev[id].context,(double) xpts[i],(double) ypts[i]); } cairo_close_path(Dev[id].context); _giza_fill (); _giza_stroke (); giza_flush_device (); _giza_set_trans (oldTrans); } giza-1.5.0/src/giza-print-id.c000066400000000000000000000046211477367113400161000ustar00rootroot00000000000000/* giza - a scientific plotting library built on cairo * * Copyright (c) 2010 James Wetter and Daniel Price * Copyright (c) 2010-2012 Daniel Price * * This library is free software; and you are welcome to redistribute * it under the terms of the GNU General Public License * (GPL, see LICENSE file for details) and the provision that * this notice remains intact. If you modify this file, please * note section 5a) of the GPLv3 states that: * * a) The work must carry prominent notices stating that you modified * it, and giving a relevant date. * * This software is distributed "AS IS", with ABSOLUTELY NO WARRANTY. * See the GPL for specific language governing rights and limitations. * * The Original code is the giza plotting library. * * Contributor(s): * James Wetter * Daniel Price (main contact) */ #include "giza-private.h" #include "giza-window-private.h" #include "giza-transforms-private.h" #include #include #include #include #include #include /** * Text: giza_print_id * * Synopsis: Prints user ID, date and time on the plot * */ void giza_print_id (void) { if (!_giza_check_device_ready ("giza_print_id")) { return; } /* get user id */ char *userid = getlogin(); if (userid == NULL) userid = ""; /* get current date and time */ struct tm *current; time_t now; time(&now); current = localtime(&now); /* format the date and time into a string */ char date[20]; strftime(date,sizeof(date)," %e-%h-%Y %H:%M",current); char *string = malloc(strlen(userid) + strlen(date) + 1); sprintf(string, "%s%s",userid,date); double ch,xch,ych; giza_get_character_height(&ch); giza_set_character_height(0.6); giza_get_character_size(GIZA_UNITS_DEVICE,&xch,&ych); /* query dimensions of the surface and size of string */ double width,height; giza_get_paper_size(GIZA_UNITS_DEVICE,&width,&height); /* place text at bottom right corner of surface */ double x,y; x = width - xch; y = height - ych; /* convert this to world coordinates */ int oldtrans = _giza_get_trans(); _giza_set_trans(GIZA_TRANS_WORLD); cairo_device_to_user (Dev[id].context, &x, &y); /* print text at location */ giza_ptext(x,y,0.,1.,string); free(string); /* reset settings */ _giza_set_trans(oldtrans); giza_set_character_height(ch); } giza-1.5.0/src/giza-private.h000066400000000000000000000106261477367113400160330ustar00rootroot00000000000000/* giza - a scientific plotting library built on cairo * * Copyright (c) 2010 James Wetter and Daniel Price * Copyright (c) 2010-2012 Daniel Price * * This library is free software; and you are welcome to redistribute * it under the terms of the GNU General Public License * (GPL, see LICENSE file for details) and the provision that * this notice remains intact. If you modify this file, please * note section 5a) of the GPLv3 states that: * * a) The work must carry prominent notices stating that you modified * it, and giving a relevant date. * * This software is distributed "AS IS", with ABSOLUTELY NO WARRANTY. * See the GPL for specific language governing rights and limitations. * * The Original code is the giza plotting library. * * Contributor(s): * James Wetter * Daniel Price (main contact) */ #include #define GIZA_TINY 0.1e-30 #define GIZA_ZERO_FLOAT 2.e-30 #define GIZA_ZERO_DOUBLE 3.e-300 #define GIZA_DEG_TO_RAD 0.0174532925 #define GIZA_MAX_DEVICES 128 #define GIZA_MAX_DEVSTRING 256 #define MIN(X,Y) ((X) < (Y) ? (X) : (Y)) #define MAX(X,Y) ((X) < (Y) ? (Y) : (X)) /* Structures: */ /* giza window structure */ typedef struct { double xmin; double xmax; double ymin; double ymax; cairo_matrix_t userCoords; cairo_matrix_t normCoords; } giza_window_t; /* giza viewport structure */ typedef struct { double xmin; double xmax; double ymin; double ymax; } giza_viewport_t; typedef struct { int fs; double angle; double cutback; } giza_arrow_t; /* Keep track of font memory */ typedef struct { /* The font primary key */ char* family; cairo_font_slant_t slant; cairo_font_weight_t weight; /* Keep own reference count for memory management. * There is a reason for that, see giza-set-font.c * in _giza_cache_get_font() */ unsigned int refCount; cairo_font_face_t* font; } giza_font_t; /* type definition for the motion callback function */ typedef void (*giza_callback_t)(double *x, double *y, int *mode); /* Store variables relating to the current device */ typedef struct { int type; int width; int height; double deviceUnitsPermm; double deviceUnitsPerPixel; int isInteractive; char prefix[GIZA_MAX_DEVSTRING]; int pgNum; int CurrentTrans; double defaultBackgroundAlpha; int deviceOpen; /* Indicates if a device is open and ready to be drawn to. */ int drawn; /* Flag if anything has been drawn yet */ int resize; /* Flag that device has been resized */ int prompting; /* Turn prompting on/off for interactive device */ int buf; /* Buffering on/off */ int firstPage; /* To skip asking on first page (see PGADVS in PGPLOT source code)*/ /* viewport and window settings for this device */ giza_viewport_t VP; giza_window_t Win; /* sub-panel info */ int nx; /* number of sub-panels */ int ny; int ix; /* which panel we are in */ int iy; int altpanelorder; double panelwidth; double panelheight; /* graphics settings for this device */ int fs; double hatch_angle; double hatch_spacing; double hatch_phase; double lw; double ls; double ch; int text_background; int clip; giza_arrow_t Arrow; giza_font_t* Font; /* This device's current font */ /* cairo objects and settings */ cairo_t *context; cairo_surface_t *surface; cairo_font_extents_t fontExtents; double fontAngle; int number_format; giza_callback_t motion_callback; int itf; /* image transfer function */ } giza_device_t; extern giza_device_t Dev[GIZA_MAX_DEVICES]; extern int id; /* Struct containing global settings for giza */ typedef struct { int autolog; } giza_settings_t; extern giza_settings_t Sets; int _giza_check_device_ready (char *source); void _giza_init_character_height (void); void _giza_scale_character_size (double scalefac); int _giza_nint (double x); int _giza_equal (double x1, double x2); void _giza_init_save (void); void _giza_set_font (const char *font, cairo_font_slant_t slant, cairo_font_weight_t weight); double _giza_set_in_range (double val, double val1, double val2); void _giza_get_markerheight (double *mheight); void _giza_draw_symbol_device (double xd, double yd, int symbol); void _giza_set_alpha (double alpha); void _giza_get_alpha (double *alpha); void _giza_get_log_file (char *string, int len); void _giza_write_log_file (cairo_surface_t *surface); void _giza_init(void); giza-1.5.0/src/giza-prompting.c000066400000000000000000000033671477367113400163770ustar00rootroot00000000000000/* giza - a scientific plotting library built on cairo * * Copyright (c) 2010 James Wetter and Daniel Price * Copyright (c) 2010-2012 Daniel Price * * This library is free software; and you are welcome to redistribute * it under the terms of the GNU General Public License * (GPL, see LICENSE file for details) and the provision that * this notice remains intact. If you modify this file, please * note section 5a) of the GPLv3 states that: * * a) The work must carry prominent notices stating that you modified * it, and giving a relevant date. * * This software is distributed "AS IS", with ABSOLUTELY NO WARRANTY. * See the GPL for specific language governing rights and limitations. * * The Original code is the giza plotting library. * * Contributor(s): * James Wetter * Daniel Price (main contact) */ #include "giza-private.h" #include "giza-io-private.h" #include /** * Settings: giza_start_prompting * * Synopsis: Turns on prompting for current device, i.e. the user will be * prompted before a page change or a device being closed. * * See Also: giza_stop_prompting */ void giza_start_prompting (void) { if (!_giza_check_device_ready ("giza_start_prompting")) return; Dev[id].prompting = 1; } /** * Settings: giza_stop_prompting * * Synopsis: Turns off prompting, i.e. the user will not be prompted * before a page change or a device being closed. * * See Also: giza_start_prompting */ void giza_stop_prompting (void) { if (!_giza_check_device_ready ("giza_stop_prompting")) return; Dev[id].prompting = 0; } int _giza_get_prompting (void) { if (!_giza_check_device_ready ("giza_set_prompting")) return 0; return Dev[id].prompting; } giza-1.5.0/src/giza-ptext.c000066400000000000000000000077641477367113400155310ustar00rootroot00000000000000/* giza - a scientific plotting library built on cairo * * Copyright (c) 2010 James Wetter and Daniel Price * Copyright (c) 2010-2012 Daniel Price * * This library is free software; and you are welcome to redistribute * it under the terms of the GNU General Public License * (GPL, see LICENSE file for details) and the provision that * this notice remains intact. If you modify this file, please * note section 5a) of the GPLv3 states that: * * a) The work must carry prominent notices stating that you modified * it, and giving a relevant date. * * This software is distributed "AS IS", with ABSOLUTELY NO WARRANTY. * See the GPL for specific language governing rights and limitations. * * The Original code is the giza plotting library. * * Contributor(s): * James Wetter * Daniel Price (main contact) */ #include "giza-private.h" #include "giza-text-private.h" #include "giza-text-background-private.h" #include "giza-transforms-private.h" #include "giza-stroke-private.h" #include "giza-drivers-private.h" #include #include /** * Text: giza_ptext * * Synopsis: Draws text at a given position in world coords at a given angle with a given justification. * * Input: * -x :- The x world coord. * -y :- The y world coord. * -angle :- The angle to be drawn at. * -just :- The justification. * -text :- The text to be drawn. */ void giza_ptext (double x, double y, double angle, double just, const char *text) { if (!_giza_check_device_ready ("giza_ptext")) { return; } /* save the character height (can be changed during superscript/subscripting) */ double ch; giza_get_character_height (&ch); cairo_save (Dev[id].context); /* save the font (can be changed by \rm \fn \fc during text write) */ int len = GIZA_FONT_LEN; char giza_font[len]; giza_get_font(giza_font,len); _giza_expand_clipping (); /* change x and y to device coords */ /*cairo_user_to_device (Dev[id].context, &x, &y); */ double xbox[4], ybox[4]; giza_qtext (x, y, angle, just, text, xbox, ybox); /* Draw the bounding box */ if (Dev[id].text_background >= 0) { int oldCi,oldfill; giza_get_colour_index (&oldCi); giza_set_colour_index (Dev[id].text_background); giza_get_fill (&oldfill); giza_set_fill(GIZA_FILL_SOLID); giza_polygon (4, xbox, ybox); giza_set_colour_index (oldCi); giza_set_fill (oldfill); } /* change the current trans to world coords */ _giza_set_trans (GIZA_TRANS_WORLD); cairo_move_to (Dev[id].context, xbox[0], ybox[0]); /* Set the rotation matrix */ double theta = -angle * GIZA_DEG_TO_RAD; Dev[id].fontAngle = theta; cairo_matrix_t mat; cairo_get_font_matrix (Dev[id].context, &mat); cairo_matrix_rotate (&mat, theta); cairo_set_font_matrix (Dev[id].context, &mat); _giza_parse_string (text, xbox, ybox, _giza_action_print); cairo_restore (Dev[id].context); /* restore font */ giza_set_font(giza_font); _giza_stroke (); giza_flush_device (); /* restore the original character height (and font matrix) */ giza_set_character_height (ch); } /** * Text: giza_ptext_float * * Synopsis: Same functionality as giza_ptext but uses floats. * * See Also: giza_ptext */ void giza_ptext_float (float x, float y, float angle, float just, const char *text) { giza_ptext ((double) x, (double) y, (double) angle, (double) just, text); } /** * Text: giza_text * * Synopsis: Draws text at the position (x, y). * * Input: * -x :- The x-coordinate of the bottom left corner of the text. * -y :- The y-coordinate of the bottom left corner of the text. * -text :- The text to be drawn. */ void giza_text (double x, double y, const char *text) { giza_ptext (x, y, 0.0, 0.0, text); } /** * Text: giza_text_float * * Synopsis: Same functionality as giza_text but takes floats. * * See Also: giza_text */ void giza_text_float (float x, float y, const char *text) { giza_ptext ((double) x, (double) y, 0.0, 0.0, text); } giza-1.5.0/src/giza-qtext.c000066400000000000000000000152001477367113400155120ustar00rootroot00000000000000/* giza - a scientific plotting library built on cairo * * Copyright (c) 2010 James Wetter and Daniel Price * Copyright (c) 2010-2012 Daniel Price * * This library is free software; and you are welcome to redistribute * it under the terms of the GNU General Public License * (GPL, see LICENSE file for details) and the provision that * this notice remains intact. If you modify this file, please * note section 5a) of the GPLv3 states that: * * a) The work must carry prominent notices stating that you modified * it, and giving a relevant date. * * This software is distributed "AS IS", with ABSOLUTELY NO WARRANTY. * See the GPL for specific language governing rights and limitations. * * The Original code is the giza plotting library. * * Contributor(s): * James Wetter * Daniel Price (main contact) */ #include "giza-private.h" #include "giza-io-private.h" #include "giza-text-private.h" #include "giza-transforms-private.h" #include #include #include /** * Text: giza_qtext * * Synopsis: Returns the co-ordinates of a box bounding the given string if printed by giza_ptext. * * Input: * -x :- The x-coord of the text in world-coords * -y :- The y-coord of the text in world-coords * -angle :- The angle to draw the text at, in degrees * -just :- The horizontal justification of the string. 0. for left-justified, 1. for right-justified * -text :- The text to be drawn * -xbox :- * -ybox :- Set to the world co-ords of the bounding box */ void giza_qtext (double x, double y, double angle, double just, const char *text, double xbox[4], double ybox[4]) { if (!_giza_check_device_ready ("giza_qtext")) { return; } /* save the character height (can be changed during superscript/subscripting) */ double ch; giza_get_character_height (&ch); cairo_save (Dev[id].context); /* save the font (can be changed by \rm \fn \fc during text write) */ int len = GIZA_FONT_LEN; char giza_font[len]; giza_get_font(giza_font,len); _giza_set_trans (GIZA_TRANS_WORLD); cairo_user_to_device (Dev[id].context, &x, &y); /* Set the rotation matrix */ /*double theta = -angle * GIZA_DEG_TO_RAD; */ /*Dev[id].fontAngle = theta; */ /*cairo_matrix_t mat; */ /*cairo_get_font_matrix (Dev[id].context, &mat); */ /*cairo_matrix_rotate (&mat, theta); */ /*cairo_set_font_matrix (Dev[id].context, &mat); */ double width = 0., height = 0.; _giza_set_trans (GIZA_TRANS_IDEN); cairo_move_to (Dev[id].context, 0., 0.); _giza_parse_string (text, &width, &height, _giza_action_get_size); double cosangle = cos(angle * GIZA_DEG_TO_RAD); double sinangle = sin(angle * GIZA_DEG_TO_RAD); xbox[0] = x - width * just * cosangle; xbox[3] = x + width * (1 - just) * cosangle; xbox[1] = xbox[0] - height * sinangle; xbox[2] = xbox[3] - height * sinangle; ybox[0] = y + width * just * sinangle; ybox[3] = y - width * (1 - just) * sinangle; ybox[1] = ybox[0] - height * cosangle; ybox[2] = ybox[3] - height * cosangle; _giza_set_trans (GIZA_TRANS_WORLD); cairo_device_to_user (Dev[id].context, &xbox[0], &ybox[0]); cairo_device_to_user (Dev[id].context, &xbox[1], &ybox[1]); cairo_device_to_user (Dev[id].context, &xbox[2], &ybox[2]); cairo_device_to_user (Dev[id].context, &xbox[3], &ybox[3]); cairo_restore (Dev[id].context); /* restore font */ giza_set_font(giza_font); /* restore the original character height (and font matrix) */ giza_set_character_height (ch); } /** * Text: giza_qtext_float * * Synopsis: Same as giza_qtext but takes floats * * See Also: giza_qtext */ void giza_qtext_float (float x, float y, float angle, float just, const char *text, float xbox[4], float ybox[4]) { double xboxd[4], yboxd[4]; giza_qtext ((double) x, (double) y, (double) angle, (double) just, text, xboxd, yboxd); xbox[0] = (float) xboxd[0]; xbox[1] = (float) xboxd[1]; xbox[2] = (float) xboxd[2]; xbox[3] = (float) xboxd[3]; ybox[0] = (float) yboxd[0]; ybox[1] = (float) yboxd[1]; ybox[2] = (float) yboxd[2]; ybox[3] = (float) yboxd[3]; } /** * Text: giza_qtextlen * * Synopsis: Returns the length of a string as would be printed by giza_ptext in a variety of units * (added by DJP) * * Input: * -units :- The units in which to return the values * -text :- The text to be drawn * -xlen :- The length of the text in the x-direction * -ylen :- The length of the text in the y-direction */ void giza_qtextlen (int units, const char *text, double *xlen, double *ylen) { if(!_giza_check_device_ready("giza_qtextlen")) { *xlen = 0.; *ylen = 0.; return; } /* save the character height (can be changed during superscript/subscripting) */ double ch; giza_get_character_height (&ch); cairo_save (Dev[id].context); /* save the font (can be changed by \rm \fn \fc during text write) */ int len = GIZA_FONT_LEN; char giza_font[len]; giza_get_font(giza_font,len); _giza_set_trans (GIZA_TRANS_IDEN); cairo_move_to (Dev[id].context, 0., 0.); _giza_parse_string (text, xlen, ylen, _giza_action_get_size); /* got text length in device units: convert as necessary to desired units */ switch (units) { case GIZA_UNITS_NORMALIZED: *xlen = *xlen / Dev[id].width; *ylen = *ylen / Dev[id].height; break; case GIZA_UNITS_PIXELS: *xlen = *xlen * Dev[id].deviceUnitsPerPixel; *ylen = *ylen * Dev[id].deviceUnitsPerPixel; break; case GIZA_UNITS_DEVICE: break; case GIZA_UNITS_MM: *xlen = *xlen * Dev[id].deviceUnitsPermm; *ylen = *ylen * Dev[id].deviceUnitsPermm; break; case GIZA_UNITS_INCHES: *xlen = *xlen * Dev[id].deviceUnitsPermm/25.4; *ylen = *ylen * Dev[id].deviceUnitsPermm/25.4; break; case GIZA_UNITS_WORLD: _giza_set_trans (GIZA_TRANS_NORM); cairo_user_to_device_distance (Dev[id].context, xlen, ylen); break; default: _giza_warning ("giza_get_viewport", "Invalid units, using normalised device units."); *xlen = *xlen / Dev[id].width; *ylen = *ylen / Dev[id].height; break; } cairo_restore (Dev[id].context); /* restore font */ giza_set_font(giza_font); /* restore the original character height (and font matrix) */ giza_set_character_height (ch); } /** * Text: giza_qtextlen_float * * Synopsis: Same functionality as giza_qtextlen but uses floats * * See Also: giza_qtextlen */ void giza_qtextlen_float (int units, const char *text, float *xlen, float *ylen) { double xlend = 0., ylend = 0.; giza_qtextlen(units, text, &xlend, &ylend); *xlen = (float) xlend; *ylen = (float) ylend; } giza-1.5.0/src/giza-rectangle.c000066400000000000000000000103371477367113400163170ustar00rootroot00000000000000/* giza - a scientific plotting library built on cairo * * Copyright (c) 2010 James Wetter and Daniel Price * Copyright (c) 2010-2012 Daniel Price * * This library is free software; and you are welcome to redistribute * it under the terms of the GNU General Public License * (GPL, see LICENSE file for details) and the provision that * this notice remains intact. If you modify this file, please * note section 5a) of the GPLv3 states that: * * a) The work must carry prominent notices stating that you modified * it, and giving a relevant date. * * This software is distributed "AS IS", with ABSOLUTELY NO WARRANTY. * See the GPL for specific language governing rights and limitations. * * The Original code is the giza plotting library. * * Contributor(s): * James Wetter * Daniel Price (main contact) */ #include "giza-private.h" #include "giza-transforms-private.h" #include "giza-fill-private.h" #include #include /** * Drawing: giza_rectangle * * Synopsis: Draws a rectangle with corners ((x1, y1) (x2, y1) (x2, y2) (x1, y2)), using the current fill * set by giza_set_fill. * * Inputs: * -x1 :- the x-coordinate of two of the points * -x2 :- the x-coordinate of the other two points * -y1 :- the y-coordinate of two of the points * -y2 :- the y-coordinate of the other two points * * See Also: giza_set_fill, giza_polygon */ void giza_rectangle (double x1, double x2, double y1, double y2) { if (!_giza_check_device_ready ("giza_rectangle")) return; int oldTrans = _giza_get_trans (); _giza_set_trans (GIZA_TRANS_WORLD); cairo_move_to (Dev[id].context, x1, y1); cairo_line_to (Dev[id].context, x2, y1); cairo_line_to (Dev[id].context, x2, y2); cairo_line_to (Dev[id].context, x1, y2); cairo_line_to (Dev[id].context, x1, y1); _giza_fill (); _giza_set_trans (oldTrans); giza_flush_device (); } /** * Drawing: giza_rectangle_float * * Synopsis: Same functionality as giza_rectangle but takes floats * * See Also: giza_rectangle */ void giza_rectangle_float (float x1, float x2, float y1, float y2) { giza_rectangle ((double) x1, (double) x2, (double) y1, (double) y2); } /** * Drawing: giza_rectangle_rounded * * Synopsis: Draws a rectangle with rounded corners ((x1, y1) (x2, y1) (x2, y2) (x1, y2)), * using the current fill set by giza_set_fill. * * Inputs: * -x1 :- the x-coordinate of two of the points * -x2 :- the x-coordinate of the other two points * -y1 :- the y-coordinate of two of the points * -y2 :- the y-coordinate of the other two points * -radius :- radius of curvature for the corners * * See Also: giza_rectangle, giza_set_fill, giza_polygon */ void giza_rectangle_rounded (double x1, double x2, double y1, double y2, double radius) { if (!_giza_check_device_ready ("giza_rectangle_rounded")) return; int oldTrans = _giza_get_trans (); _giza_set_trans (GIZA_TRANS_WORLD); double width = x2 - x1; double height = y2 - y1; double x = x1; double y = y1; if (radius > 0.5*height) radius = 0.5*height; if (radius > 0.5*width) radius = 0.5*width; /* Adapted from: http://www.mono-project.com/Mono.Cairo_Cookbook */ cairo_move_to (Dev[id].context, x, y + radius); cairo_arc (Dev[id].context,x + radius, y + radius, radius, M_PI, -0.5*M_PI); cairo_line_to (Dev[id].context,x + width - radius, y); cairo_arc (Dev[id].context,x + width - radius, y + radius, radius, -0.5*M_PI, 0.); cairo_line_to (Dev[id].context,x + width, y + height - radius); cairo_arc (Dev[id].context,x + width - radius, y + height - radius, radius, 0., 0.5*M_PI); cairo_line_to (Dev[id].context,x + radius, y + height); cairo_arc (Dev[id].context,x + radius, y + height - radius, radius, 0.5*M_PI, M_PI); cairo_close_path (Dev[id].context); _giza_fill (); _giza_set_trans (oldTrans); giza_flush_device (); } /** * Drawing: giza_rectangle_rounded_float * * Synopsis: Same functionality as giza_rectangle_rounded but takes floats * * See Also: giza_rectangle_rounded */ void giza_rectangle_rounded_float (float x1, float x2, float y1, float y2, float radius) { giza_rectangle_rounded ((double) x1, (double) x2, (double) y1, (double) y2, (double) radius); } giza-1.5.0/src/giza-render-private.h000066400000000000000000000033471477367113400173120ustar00rootroot00000000000000/* giza - a scientific plotting library built on cairo * * Copyright (c) 2010 James Wetter and Daniel Price * Copyright (c) 2010-2012 Daniel Price * * This library is free software; and you are welcome to redistribute * it under the terms of the GNU General Public License * (GPL, see LICENSE file for details) and the provision that * this notice remains intact. If you modify this file, please * note section 5a) of the GPLv3 states that: * * a) The work must carry prominent notices stating that you modified * it, and giving a relevant date. * * This software is distributed "AS IS", with ABSOLUTELY NO WARRANTY. * See the GPL for specific language governing rights and limitations. * * The Original code is the giza plotting library. * * Contributor(s): * James Wetter * Daniel Price (main contact) */ static void _giza_colour_pixel (unsigned char *array, int pixNum, double pos); static void _giza_colour_pixel_alpha (unsigned char *array, int pixNum, double pos, double alpha); static void _giza_colour_pixel_index_alpha (unsigned char *array, int pixNum, int ci, double alpha); void _giza_render (int sizex, int sizey, const double* data, int i1, int i2, int j1, int j2, double valMin, double valMax, const double *affine, int transparent, int extend, int filter, const double* datalpha); void _giza_render_float (int sizex, int sizey, const float* data, int i1, int i2, int j1, int j2, float valMin, float valMax, const float *affine, int transparent, int extend, int filter, const float* datalpha); void _giza_get_extend (int extend, cairo_extend_t *cairoextend); void _giza_get_filter (int filter, cairo_filter_t *cairofilter); giza-1.5.0/src/giza-render.c000066400000000000000000000530461477367113400156360ustar00rootroot00000000000000/* giza - a scientific plotting library built on cairo * * Copyright (c) 2010 James Wetter and Daniel Price * Copyright (c) 2010-2012 Daniel Price * * This library is free software; and you are welcome to redistribute * it under the terms of the GNU General Public License * (GPL, see LICENSE file for details) and the provision that * this notice remains intact. If you modify this file, please * note section 5a) of the GPLv3 states that: * * a) The work must carry prominent notices stating that you modified * it, and giving a relevant date. * * This software is distributed "AS IS", with ABSOLUTELY NO WARRANTY. * See the GPL for specific language governing rights and limitations. * * The Original code is the giza plotting library. * * Contributor(s): * James Wetter * Daniel Price (main contact) */ #include "giza-io-private.h" #include "giza-private.h" #include "giza-transforms-private.h" #include "giza-itf.h" #include "giza-render-private.h" #include #include #include /** * Drawing: giza_render * * Synopsis: Renders data to the device. * * Input: * -sizex :- The dimensions of data in the x-direction * -sizey :- The dimensions of data in the y-direction * -data :- The data to be rendered * -i1 :- The inclusive range of data to render in the x dimension. * -i2 :- The inclusive range of data to render in the x dimension. * -j1 :- The inclusive range of data to render in the y direction * -j2 :- The inclusive range of data to render in the y direction * -valMin :- The value in data that gets assign the colour corresponding to zero * on the colour ramp (The ramp is set by giza_set_colour_table) * -valMax :- The value in data that gets assigned the colour corresponding to one * on the colour ramp * -extend :- Option for how to deal with image at edges * -filter :- Option for how to interpolate between pixels (since v1.5) * -affine :- The affine transformation matrix that will be applied to the data. * * Allowed extend settings: * -0 or GIZA_EXTEND_NONE :- no padding * -1 or GIZA_EXTEND_REPEAT :- periodic tiling * -2 or GIZA_EXTEND_REFLECT :- reflective boundary * -3 or GIZA_EXTEND_PAD :- pad by extending last few pixels * * Allowed filter settings (from cairo_filter_t): * -0 or GIZA_FILTER_DEFAULT :- default, usually bilinear interpolation * -1 or GIZA_FILTER_FAST :- a high performance filter with quality similar to GIZA_FILTER_NEAREST * -2 or GIZA_FILTER_GOOD :- a reasonable-performance filter, with quality similar to GIZA_FILTER_BILINEAR * -3 or GIZA_FILTER_BEST :- highest quality available, performance may not be suited for interactive use * -4 or GIZA_FILTER_NEAREST :- Nearest-neighbour filtering * -5 or GIZA_FILTER_BILINEAR :- Linear interpolation in two dimensions * * See Also: giza_set_colour_table */ void giza_render (int sizex, int sizey, const double* data, int i1, int i2, int j1, int j2, double valMin, double valMax, int extend, int filter, const double *affine) { _giza_render (sizex, sizey, data,i1,i2,j1,j2,valMin,valMax,affine,0,extend,filter,data); } /** * Drawing: giza_render_transparent * * Synopsis: Same as giza_render, but data < valMin rendered as transparent * */ void giza_render_transparent (int sizex, int sizey, const double* data, int i1, int i2, int j1, int j2, double valMin, double valMax, int extend, int filter, const double *affine) { _giza_render (sizex, sizey, data,i1,i2,j1,j2,valMin,valMax,affine,1,extend,filter,data); } /** * Drawing: giza_render_alpha * * Synopsis: Same as giza_render, but uses additional array specifying transparency of each pixel * */ void giza_render_alpha (int sizex, int sizey, const double* data, const double* alpha, int i1, int i2, int j1, int j2, double valMin, double valMax, int extend, int filter, const double *affine) { _giza_render (sizex, sizey, data,i1,i2,j1,j2,valMin,valMax,affine,2,extend,filter,alpha); } /** * _giza_render is the internal routine with the most general (and changeable) interface * to which giza_render, giza_render_transparent, etc. are the static API interfaces */ void _giza_render (int sizex, int sizey, const double* data, int i1, int i2, int j1, int j2, double valMin, double valMax, const double *affine, int transparent, int extend, int filter, const double* datalpha) { if (!_giza_check_device_ready ("giza_render")) return; if (sizex < 1 || sizey < 1) { _giza_warning ("giza_render", "Invalid array size, skipping render."); return; } if (i1 < 0 || i2 < i1 || j1 < 0 || j2 < j1) { _giza_warning ("giza_render", "Invalid index range, skipping render."); return; } unsigned char *pixdata; cairo_format_t format = CAIRO_FORMAT_ARGB32; cairo_surface_t *pixmap; cairo_matrix_t mat; int stride, pixnum, width = i2 - i1 + 1, height = j2 - j1 + 1; int cimin, cimax; cairo_extend_t cairoextendtype; _giza_get_extend(extend,&cairoextendtype); cairo_filter_t cairofiltertype; _giza_get_filter(filter,&cairofiltertype); /* apply the transformation */ int oldCi; giza_get_colour_index (&oldCi); int oldTrans = _giza_get_trans (); _giza_set_trans (GIZA_TRANS_WORLD); cairo_matrix_init (&mat, affine[0], affine[1], affine[2], affine[3], affine[4], affine[5]); cairo_transform (Dev[id].context, &mat); /* allocate data for the pixmap */ #if CAIRO_VERSION >= CAIRO_VERSION_ENCODE(1, 6, 0) stride = cairo_format_stride_for_width (format, width); #else stride = 4*width; #endif pixdata = malloc (stride * height); /* colour each pixel in the pixmap */ int i, j; giza_itf_idx_type itf_idx = giza_itf_idx[ Dev[id].itf ]; giza_get_colour_index_range(&cimin, &cimax); pixnum = 0; /* transparent if-statement is outside loop as optimisation */ if (transparent==2) { /* render each pixel, using transparent routine */ for (j = j1; j <= j2; j++) { for (i = i1; i <= i2; i++) { _giza_colour_pixel_index_alpha (pixdata, pixnum, itf_idx(data[j*sizex + i], valMin, valMax, cimin, cimax), datalpha[j*sizex + i]); pixnum = pixnum + 1; } } } else if (transparent==1) { /* render each pixel, using transparent routine */ int idx; for (j = j1; j <= j2; j++) { for (i = i1; i <= i2; i++) { idx = itf_idx(data[j*sizex + i], valMin, valMax, cimin, cimax); _giza_colour_pixel_index_alpha (pixdata, pixnum, idx, idx==cimin ? 0. : 1.); pixnum = pixnum + 1; } } } else { /* render each pixel, usual routine */ for (j = j1; j <= j2; j++) { for (i = i1; i <= i2; i++) { _giza_colour_pixel_index_alpha (pixdata, pixnum, itf_idx(data[j*sizex + i], valMin, valMax, cimin,cimax), 1.); pixnum = pixnum + 1; } } } /* create the cairo surface from the pixmap */ pixmap = cairo_image_surface_create_for_data (pixdata, format, width, height, stride); /* paint the pixmap to the primary surface */ cairo_set_source_surface (Dev[id].context, pixmap, 0, 0); cairo_pattern_set_extend (cairo_get_source (Dev[id].context), cairoextendtype); /* Set the interpolation filter */ cairo_pattern_set_filter (cairo_get_source(Dev[id].context), cairofiltertype); cairo_paint (Dev[id].context); /* clean up and restore settings */ _giza_set_trans (oldTrans); giza_set_colour_index (oldCi); cairo_surface_destroy (pixmap); free (pixdata); giza_flush_device (); } /** * Drawing: giza_render_float * * Synopsis: Same functionality as giza_render but takes floats. * * See Also: giza_render */ void giza_render_float (int sizex, int sizey, const float* data, int i1, int i2, int j1, int j2, float valMin, float valMax, int extend, int filter, const float *affine) { _giza_render_float (sizex,sizey,data,i1,i2,j1,j2,valMin,valMax,affine,0,extend,filter,data); } /** * Drawing: giza_render_transparent_float * * Synopsis: Same functionality as giza_render_transparent but takes floats. * * See Also: giza_render_transparent */ void giza_render_transparent_float (int sizex, int sizey, const float* data, int i1, int i2, int j1, int j2, float valMin, float valMax, int extend, int filter, const float *affine) { _giza_render_float (sizex,sizey,data,i1,i2,j1,j2,valMin,valMax,affine,1,extend,filter,data); } /** * Drawing: giza_render_alpha_float * * Synopsis: Same as giza_render_alpha but takes floats * * See Also: giza_render_alpha */ void giza_render_alpha_float (int sizex, int sizey, const float* data, const float* alpha, int i1, int i2, int j1, int j2, float valMin, float valMax, int extend, int filter, const float *affine) { _giza_render_float (sizex, sizey, data,i1,i2,j1,j2,valMin,valMax,affine,2,extend,filter,alpha); } /** * _giza_render_float is the internal routine with the most general (and changeable) interface * c.f. _giza_render */ void _giza_render_float (int sizex, int sizey, const float* data, int i1, int i2, int j1, int j2, float valMin, float valMax, const float *affine, int transparent, int extend, int filter, const float* datalpha) { if (!_giza_check_device_ready ("giza_render_float")) return; if (sizex < 1 || sizey < 1) { _giza_warning ("giza_render_float", "Invalid array size, skipping render."); return; } if (i1 < 0 || i2 < i1 || j1 < 0 || j2 < j1) { _giza_warning ("giza_render_float", "Invalid index range, skipping render."); return; } unsigned char *pixdata; cairo_format_t format = CAIRO_FORMAT_ARGB32; cairo_surface_t *pixmap; cairo_matrix_t mat; int stride, pixnum, width = i2 - i1 + 1, height = j2 - j1 + 1; int cimin, cimax; cairo_extend_t cairoextendtype; _giza_get_extend(extend,&cairoextendtype); cairo_filter_t cairofiltertype; _giza_get_filter(filter,&cairofiltertype); int oldCi; giza_get_colour_index (&oldCi); int oldTrans = _giza_get_trans (); _giza_set_trans (GIZA_TRANS_WORLD); cairo_matrix_init (&mat, (double) affine[0], (double) affine[1], (double) affine[2], (double) affine[3], (double) affine[4], (double) affine[5]); cairo_transform (Dev[id].context, &mat); #if CAIRO_VERSION >= CAIRO_VERSION_ENCODE(1, 6, 0) stride = cairo_format_stride_for_width (format, width); #else stride = 4*width; #endif pixdata = malloc (stride * height); int i, j; giza_itf_idx_type_f itf_idx = giza_itf_idx_f[ Dev[id].itf ]; giza_get_colour_index_range(&cimin, &cimax); pixnum = 0; /* transparent if-statement is outside loop as optimisation */ if (transparent==2) { /* render each pixel, using transparent routine */ for (j = j1; j <= j2; j++) { for (i = i1; i <= i2; i++) { _giza_colour_pixel_index_alpha (pixdata, pixnum, itf_idx(data[j*sizex + i], valMin, valMax, cimin, cimax), datalpha[j*sizex + i]); pixnum = pixnum + 1; } } } else if (transparent==1) { /* render each pixel, using transparent routine */ int idx; for (j = j1; j <= j2; j++) { for (i = i1; i <= i2; i++) { idx = itf_idx(data[j*sizex + i], valMin, valMax, cimin, cimax); _giza_colour_pixel_index_alpha (pixdata, pixnum, idx, idx==cimin ? 0. : 1.); pixnum = pixnum + 1; } } } else { /* render each pixel, usual routine */ for (j = j1; j <= j2; j++) { for (i = i1; i <= i2; i++) { _giza_colour_pixel_index_alpha (pixdata, pixnum, itf_idx(data[j*sizex + i], valMin, valMax, cimin, cimax), 1); pixnum = pixnum + 1; } } } pixmap = cairo_image_surface_create_for_data (pixdata, format, width, height, stride); cairo_set_source_surface (Dev[id].context, pixmap, 0, 0); cairo_pattern_set_extend (cairo_get_source (Dev[id].context), cairoextendtype); cairo_pattern_set_filter (cairo_get_source(Dev[id].context), cairofiltertype); cairo_paint (Dev[id].context); _giza_set_trans (oldTrans); giza_set_colour_index (oldCi); cairo_surface_destroy (pixmap); free (pixdata); giza_flush_device (); } /** * Drawing: giza_render_gray * * Synopsis: Same functionality as giza_render but renders in grayscale * * See Also: giza_render */ void giza_render_gray (int sizex, int sizey, const double* data, int i1, int i2, int j1, int j2, double valMin, double valMax, int extend, int filter, const double *affine) { giza_save_colour_table(); giza_set_colour_table_gray (); giza_render (sizex, sizey, data, i1, i2, j1, j2, valMin, valMax, extend, filter, affine); giza_restore_colour_table(); } /** * Drawing: giza_render_gray_float * * Synopsis: Same functionality as giza_render_gray but renders in grayscale * * See Also: giza_render_gray, giza_render */ void giza_render_gray_float (int sizex, int sizey, const float* data, int i1, int i2, int j1, int j2, float valMin, float valMax, int extend, int filter, const float *affine) { giza_save_colour_table(); giza_set_colour_table_gray(); giza_render_float (sizex, sizey, data, i1, i2, j1, j2, valMin, valMax, extend, filter, affine); giza_restore_colour_table(); } /** * Sets the rgb for a given pixel, given position in the colour table. * * Input: * -array :- the array in which to store the colour. * -pixnum :- the pixel to be coloured. * -pos :- the fraction along the colour table to get the colour from */ static void _giza_colour_pixel (unsigned char *array, int pixNum, double pos) { double r, g, b; giza_rgb_from_table (pos, &r, &g, &b); /* set the alpha */ array[pixNum * 4 + 3] = 255.; /* set the red, green, and blue */ array[pixNum * 4 + 2] = (unsigned char) (r * 255.); array[pixNum * 4 + 1] = (unsigned char) (g * 255.); array[pixNum * 4 + 0] = (unsigned char) (b * 255.); } /** * As in _giza_colour_pixel, but takes an additional alpha parameter */ static void _giza_colour_pixel_alpha (unsigned char *array, int pixNum, double pos, double alpha) { double r, g, b; giza_rgb_from_table (pos, &r, &g, &b); /* set the alpha */ array[pixNum * 4 + 3] = (unsigned char) (alpha * 255.); /* set the red, green, and blue */ array[pixNum * 4 + 2] = (unsigned char) (r * 255.); array[pixNum * 4 + 1] = (unsigned char) (g * 255.); array[pixNum * 4 + 0] = (unsigned char) (b * 255.); } /** * Sets the rgb for a given pixel, given the colour index * * Input: * -array :- the array in which to store the colour. * -pixnum :- the pixel to be coloured. * -ci :- the colour index with which to colour the pixel. */ static void _giza_colour_pixel_index (unsigned char *array, int pixNum, int ci) { double r, g, b,alpha; giza_get_colour_representation_alpha(ci, &r, &g, &b, &alpha); /* set the alpha */ array[pixNum * 4 + 3] = (unsigned char) (alpha * 255.); /* set the red, green, and blue */ array[pixNum * 4 + 2] = (unsigned char) (r * 255.); array[pixNum * 4 + 1] = (unsigned char) (g * 255.); array[pixNum * 4 + 0] = (unsigned char) (b * 255.); } /** * Sets the rgb for a given pixel, given the colour index, but allow * override of alpha * * Input: * -array :- the array in which to store the colour. * -pixnum :- the pixel to be coloured. * -ci :- the colour index with which to colour the pixel. * -alpha :- the alpha to use, override what's in the colour table */ static void _giza_colour_pixel_index_alpha (unsigned char *array, int pixNum, int ci, double alpha) { double r, g, b,dummy; giza_get_colour_representation_alpha(ci, &r, &g, &b, &dummy); /* set the alpha */ array[pixNum * 4 + 3] = (unsigned char) (alpha * 255.); /* set the red, green, and blue */ array[pixNum * 4 + 2] = (unsigned char) (r * 255.); array[pixNum * 4 + 1] = (unsigned char) (g * 255.); array[pixNum * 4 + 0] = (unsigned char) (b * 255.); } /** * Drawing: giza_draw_pixels * * Synopsis: Renders an array of pixels according to a colour index defined for each pixel * * Input: * -sizex :- The dimensions of data in the x-direction * -sizey :- The dimensions of data in the y-direction * -idata :- The data to be rendered (colour index on each pixel) * -i1 :- The inclusive range of data to render in the x dimension. * -i2 :- The inclusive range of data to render in the x dimension. * -j1 :- The inclusive range of data to render in the y direction * -j2 :- The inclusive range of data to render in the y direction * -xmin :- world coordinate corresponding to left of pixel array * -xmax :- world coordinate corresponding to right of pixel array * -ymin :- world coordinate corresponding to bottom of pixel array * -ymax :- world coordinate corresponding to top of pixel array * -extend :- Option for how to deal with image at edges (see giza_render) * -filter :- Option for how to interpolate between pixels (see giza_render, since v1.5) * * See Also: giza_render, giza_draw_pixels_float */ void giza_draw_pixels (int sizex, int sizey, const int* idata, int i1, int i2, int j1, int j2, double xmin, double xmax, double ymin, double ymax, int extend, int filter) { if (!_giza_check_device_ready ("giza_render_pixels")) return; if (sizex < 1 || sizey < 1) { _giza_warning ("giza_render_pixels", "Invalid array size, skipping render."); } if (i1 < 0 || i2 < i1 || j1 < 0 || j2 < j1) { _giza_warning ("giza_render_pixels", "Invalid index range, skipping render."); return; } unsigned char *pixdata; cairo_format_t format = CAIRO_FORMAT_ARGB32; cairo_surface_t *pixmap; cairo_matrix_t mat; int stride, pixnum, width = i2 - i1 + 1, height = j2 - j1 + 1; cairo_extend_t cairoextendtype; _giza_get_extend(extend,&cairoextendtype); cairo_filter_t cairofiltertype; _giza_get_filter(filter,&cairofiltertype); /* apply the transformation */ int oldCi; giza_get_colour_index (&oldCi); int oldTrans = _giza_get_trans (); _giza_set_trans (GIZA_TRANS_WORLD); double dxpix = (xmax - xmin)/((double) width); double dypix = (ymax - ymin)/((double) height); cairo_matrix_init (&mat, dxpix, 0.,0., dypix, xmin, ymin); cairo_transform (Dev[id].context, &mat); /* allocate data for the pixmap */ #if CAIRO_VERSION >= CAIRO_VERSION_ENCODE(1, 6, 0) stride = cairo_format_stride_for_width (format, width); #else stride = 4*width; #endif pixdata = malloc (stride * height); /* colour each pixel in the pixmap */ int i, j; pixnum = 0; for (j = j1; j <= j2; j++) { for (i = i1; i <= i2; i++) { int ci = idata[j*sizex+i]; _giza_colour_pixel_index (pixdata, pixnum, ci); pixnum = pixnum + 1; } } /* create the cairo surface from the pixmap */ pixmap = cairo_image_surface_create_for_data (pixdata, format, width, height, stride); /* paint the pixmap to the primary surface */ cairo_set_source_surface (Dev[id].context, pixmap, 0, 0); cairo_pattern_set_extend (cairo_get_source (Dev[id].context), cairoextendtype); cairo_pattern_set_filter (cairo_get_source (Dev[id].context), cairofiltertype); cairo_paint (Dev[id].context); /* clean up and restore settings */ _giza_set_trans (oldTrans); giza_set_colour_index (oldCi); cairo_surface_destroy (pixmap); free (pixdata); giza_flush_device (); } /** * Drawing: giza_draw_pixels_float * * Synopsis: Same as giza_draw_pixels, but takes floats * * See Also: giza_draw_pixels */ void giza_draw_pixels_float (int sizex, int sizey, const int* idata, int i1, int i2, int j1, int j2, float xmin, float xmax, float ymin, float ymax, int extend, int filter) { if (!_giza_check_device_ready ("giza_render_pixels_float")) return; giza_draw_pixels (sizex, sizey, idata, i1, i2, j1, j2, (double) xmin, (double) xmax, (double) ymin, (double) ymax, extend, filter); } /** * Internal routine to translate giza's integer value of extend to cairo's cairo_extend_t */ void _giza_get_extend (int extend, cairo_extend_t *cairoextend) { switch (extend) { case GIZA_EXTEND_PAD: *cairoextend = CAIRO_EXTEND_PAD; break; case GIZA_EXTEND_REFLECT: *cairoextend = CAIRO_EXTEND_REFLECT; break; case GIZA_EXTEND_REPEAT: *cairoextend = CAIRO_EXTEND_REPEAT; break; default: *cairoextend = CAIRO_EXTEND_NONE; break; } return; } /** * Internal routine to translate giza's integer value of filter to cairo's cairo_filter_t */ void _giza_get_filter (int filter, cairo_filter_t *cairofilter) { switch (filter) { case GIZA_FILTER_FAST: *cairofilter = CAIRO_FILTER_FAST; break; case GIZA_FILTER_GOOD: *cairofilter = CAIRO_FILTER_GOOD; break; case GIZA_FILTER_BEST: *cairofilter = CAIRO_FILTER_BEST; break; case GIZA_FILTER_NEAREST: *cairofilter = CAIRO_FILTER_NEAREST; break; case GIZA_FILTER_BILINEAR: *cairofilter = CAIRO_FILTER_BILINEAR; break; case GIZA_FILTER_GAUSSIAN: *cairofilter = CAIRO_FILTER_GAUSSIAN; break; default: *cairofilter = GIZA_FILTER_BEST; break; } return; } giza-1.5.0/src/giza-save.c000066400000000000000000000065641477367113400153200ustar00rootroot00000000000000/* giza - a scientific plotting library built on cairo * * Copyright (c) 2010 James Wetter and Daniel Price * Copyright (c) 2010-2014 Daniel Price * * This library is free software; and you are welcome to redistribute * it under the terms of the GNU General Public License * (GPL, see LICENSE file for details) and the provision that * this notice remains intact. If you modify this file, please * note section 5a) of the GPLv3 states that: * * a) The work must carry prominent notices stating that you modified * it, and giving a relevant date. * * This software is distributed "AS IS", with ABSOLUTELY NO WARRANTY. * See the GPL for specific language governing rights and limitations. * * The Original code is the giza plotting library. * * Contributor(s): * James Wetter * Daniel Price (main contact) */ #include "giza-private.h" #include "giza-io-private.h" #include "giza-text-private.h" #include #define GIZA_SAVE_MAX 30 static int _giza_save_ncalls; static double lw[GIZA_SAVE_MAX]; static double ch[GIZA_SAVE_MAX]; static int ls[GIZA_SAVE_MAX]; static int lc[GIZA_SAVE_MAX]; static int fs[GIZA_SAVE_MAX]; static int ci[GIZA_SAVE_MAX]; static int textbgci[GIZA_SAVE_MAX]; static int arrowfs[GIZA_SAVE_MAX]; static double arrowangle[GIZA_SAVE_MAX]; static double arrowcutback[GIZA_SAVE_MAX]; static double hatch_angle[GIZA_SAVE_MAX]; static double hatch_spacing[GIZA_SAVE_MAX]; static double hatch_phase[GIZA_SAVE_MAX]; static double band_lw[GIZA_SAVE_MAX]; static int band_ls[GIZA_SAVE_MAX]; static char font[GIZA_FONT_LEN]; /** * Settings: giza_save * * Synopsis: Saves current plot settings * * See Also: giza_restore */ void giza_save (void) { if (!_giza_check_device_ready ("giza_save")) return; _giza_save_ncalls += 1; if (_giza_save_ncalls > GIZA_SAVE_MAX) { _giza_warning("giza_save","max number of giza_save calls exceeded"); return; } int i = _giza_save_ncalls - 1; giza_get_line_width(&lw[i]); giza_get_line_style(&ls[i]); giza_get_line_cap(&lc[i]); giza_get_fill(&fs[i]); giza_get_colour_index(&ci[i]); giza_get_text_background(&textbgci[i]); giza_get_character_height(&ch[i]); giza_get_arrow_style(&arrowfs[i],&arrowangle[i],&arrowcutback[i]); giza_get_font(font,20); giza_get_hatching_style(&hatch_angle[i],&hatch_spacing[i],&hatch_phase[i]); giza_get_band_style(&band_ls[i],&band_lw[i]); } /** * Settings: giza_restore * * Synopsis: Restores plot settings stored via giza_save * * See Also: giza_save */ void giza_restore (void) { if (!_giza_check_device_ready ("giza_restore")) return; _giza_save_ncalls = _giza_save_ncalls - 1; if (_giza_save_ncalls < 0) { _giza_warning("giza_restore","unmatched giza_save/giza_restore calls"); _giza_save_ncalls = 0; return; } int i = _giza_save_ncalls; giza_set_line_width(lw[i]); giza_set_line_style(ls[i]); giza_set_line_cap(lc[i]); giza_set_fill(fs[i]); giza_set_colour_index(ci[i]); giza_set_text_background(textbgci[i]); giza_set_character_height(ch[i]); giza_set_arrow_style(arrowfs[i],arrowangle[i],arrowcutback[i]); giza_set_font(font); giza_set_hatching_style(hatch_angle[i],hatch_spacing[i],hatch_phase[i]); giza_set_band_style(band_ls[i],band_lw[i]); } /** * Saves current plot settings * */ void _giza_init_save (void) { _giza_save_ncalls = 0; return; } giza-1.5.0/src/giza-scanner.l000066400000000000000000000441571477367113400160240ustar00rootroot00000000000000/* A re-entrant scanner to recursively print text */ /* Specify that it is re-entrant and doesn't use ywrap */ %option reentrant noyywrap /* Include the header and define tokens */ %{ /* giza - a scientific plotting library built on cairo * * Copyright (c) 2010 James Wetter and Daniel Price * Copyright (c) 2010-2014 Daniel Price * * This library is free software; and you are welcome to redistribute * it under the terms of the GNU General Public License * (GPL, see LICENSE file for details) and the provision that * this notice remains intact. If you modify this file, please * note section 5a) of the GPLv3 states that: * * a) The work must carry prominent notices stating that you modified * it, and giving a relevant date. * * This software is distributed "AS IS", with ABSOLUTELY NO WARRANTY. * See the GPL for specific language governing rights and limitations. * * The Original code is the giza plotting library. * * Contributor(s): * James Wetter * Daniel Price (main contact) */ #include "giza-io-private.h" #include "giza-private.h" #include "giza-transforms-private.h" #include "giza-drivers-private.h" #include "giza-text-private.h" #include "giza-hershey-to-utf.h" #include "giza.h" #include #include #include #define GIZA_TOKEN_END 1 #define GIZA_TOKEN_SUPER 2 #define GIZA_TOKEN_SUB 3 #define GIZA_TOKEN_OB 4 #define GIZA_TOKEN_CB 5 #define GIZA_TOKEN_RAISE 8 #define GIZA_TOKEN_LOWER 9 #define GIZA_TOKEN_FONT 110 #define GIZA_TOKEN_HERSHEY 111 #define GIZA_TOKEN_MARKER 112 #define GIZA_TOKEN_GREEK 113 #define GIZA_TOKEN_BACKSPACE 120 #define GIZA_TOKEN_REMAP 121 #define GIZA_TOKEN_TEXT 130 /* the token remapper can only be included after the tokens have been defined */ #include "giza-token-remapper.h" /* Map single character to greek letter according to PGPLOT grsyds.f */ /* ABGDEZYHIKLMNCOPRSTUFXQWabgdezyhiklmncoprstufxqw */ static char const* const giza_greek_alphabet = "ABGDEZYHIKLMNCOPRSTUFXQWabgdezyhiklmncoprstufxqw"; static char const* const giza_greek_to_utf_data[] = { /* Upper case */ "\u0391", "\u0392", "\u0393", "\u0394", "\u0395", "\u0396", "\u0397", "\u0398", "\u0399", "\u039a", "\u039b", "\u039c", "\u039d", "\u039e", "\u039f", "\u03a0", "\u03a1", "\u03a3", "\u03a4", "\u03a5", "\u03a6", "\u03a7", "\u03a8", "\u03a9", /* and lower case */ "\u03b1", "\u03b2", "\u03b3", "\u03b4", "\u03b5", "\u03b6", "\u03b7", "\u03b8", "\u03b9", "\u03ba", "\u03bb", "\u03bc", "\u03bd", "\u03be", "\u03bf", "\u03c0", "\u03c1", "\u03c3", "\u03c4", "\u03c5", "\u03c6", "\u03c7", "\u03c8", "\u03c9" }; /* Assume the caller has verified that letter is a /valid/ greek letter! */ static char const* _giza_greek_to_utf(char letter); /* May return NULL if number is not a known Hershey symbol or the string in is not found in the remapped token lookup table */ static giza_hershey_to_utf_entry const* _giza_lookup_hershey(int number); static giza_remapped_token_entry const* _giza_remap_token(char const* special); %} %x FONT HERSHEY MARKER GREEK %% "\\"[uU] { return GIZA_TOKEN_RAISE; } "\\"[dD] { return GIZA_TOKEN_LOWER; } "\\"[bB] { return GIZA_TOKEN_BACKSPACE; } "\\"[fF] { BEGIN(FONT); } [nrisbNRISB] { BEGIN(INITIAL); return GIZA_TOKEN_FONT; }; . { BEGIN(INITIAL); _giza_warning("giza_parse_string", "invalid font specifier '%c'", *yytext); return GIZA_TOKEN_TEXT; } "\\(" { BEGIN(HERSHEY); } [0-9]{4}")" { if( _giza_lookup_hershey(atoi(yytext)) ) { BEGIN(INITIAL); return GIZA_TOKEN_HERSHEY; } REJECT; } [^)]* { BEGIN(INITIAL); _giza_warning("giza_parse_string", "invalid Hershey code '%s'", yytext); return GIZA_TOKEN_TEXT; } "\\"[mM] { BEGIN(MARKER); } [0-9]{1,2} { const int marker = atoi(yytext); if( marker>=1 && marker<=31 ) { BEGIN(INITIAL); return GIZA_TOKEN_MARKER; } REJECT; } . { BEGIN(INITIAL); _giza_warning("giza_parse_string", "invalid marker '%s'", yytext); return GIZA_TOKEN_TEXT; } "\\"[gG] { BEGIN(GREEK); } [ABGDEZYHIKLMNCOPRSTUFXQWabgdezyhiklmncoprstufxqw] { BEGIN(INITIAL); return GIZA_TOKEN_GREEK; } . { BEGIN(INITIAL); _giza_warning("giza_parse_string", "invalid greek letter '%c'", *yytext); return GIZA_TOKEN_TEXT; } "\\"[a-zA-Z]{2,} { if( _giza_remap_token(yytext) ) { return GIZA_TOKEN_REMAP; } REJECT; } "^" { return GIZA_TOKEN_SUPER; } "_" { return GIZA_TOKEN_SUB; } "{" { return GIZA_TOKEN_OB; } "}" { return GIZA_TOKEN_CB; } . { return _giza_remap_token(yytext) ? GIZA_TOKEN_REMAP : GIZA_TOKEN_TEXT; /* single character escape sequence or ordinary escaped character meaning */ } <> { return GIZA_TOKEN_END; } %% /* Functions that look up character sequences and return utf strings; giza is built upon cairo, which in turn handles utf Just Fine (tm) */ giza_hershey_to_utf_entry const* _giza_lookup_hershey(int number) { giza_hershey_to_utf_entry const* rv = giza_hershey_to_utf; while( rv->hershey!=-1 && rv->hershey!=number ) rv++; return (rv->hershey==-1 ? NULL : rv); } giza_remapped_token_entry const* _giza_remap_token(char const* special) { giza_remapped_tokens_entry const* rv = giza_remappable_tokens; while( rv->text && strcmp(rv->text, special+1) ) rv++; return (rv->text==NULL ? NULL : &rv->replacement); } char const* giza_greek_to_utf(char letter) { return giza_greek_to_utf_data[ strchr(giza_greek_alphabet, letter) - giza_greek_alphabet ]; } #define MAX_NFONT 32 typedef struct _font_change_type { char font[GIZA_FONT_LEN]; int ob_level; /* open bracket level at start of font change*/ int wait_for_token; /* 0 = wait for first token to be seen, < 0 stop font change immediately, == GIZA_TOKEN_CB wait until ob_count drops below .ob_level */ } font_change_type; typedef struct _glyph_pos_type { double x, y; } glyph_pos_type; typedef struct _ob_state_type { int ob_level; /* open bracket level at start of state */ int wait_for_token; /* 0 = wait for first token to be seen, < 0 stop super/sub script immediately, == GIZA_TOKEN_CB wait until global ob_count drops below .ob_level */ } ob_state_type; /** * Performs action on each chunk of text. If calculating size height and width get set to height and width of the text. */ void _giza_parse_string (const char *text, double *width, double *height, void (*action)(const char *, double *, double *)) { if( text==NULL ) { _giza_error("giza_parse_string", "NULL string"); return; } const int lenstr = strlen(text); if( lenstr==0 ) return; yyscan_t scanner; int stop = 0, token, oldTrans; int insuper = 0, insub = 0; int ob = 0; /* count open/close bracket */ int bckSpace = 0; int nGlyph = 0; double sina = sin(Dev[id].fontAngle); double cosa = cos(Dev[id].fontAngle); char const* token_txt; ob_state_type ob_super[MAX_NFONT], *cur_super = &ob_super[-1];/* keep track of superscript state */ ob_state_type ob_sub[MAX_NFONT], *cur_sub = &ob_sub[-1]; /* keep track of subscript state */ glyph_pos_type positions[lenstr+1]; /* keep track of each glyph's x,y position (for backing up characters) */ font_change_type oldfont[MAX_NFONT], *cur_font = &oldfont[-1]; /* keep track of font change state */ oldTrans = _giza_get_trans (); _giza_set_trans (GIZA_TRANS_IDEN); /* initialise the scanner */ yylex_init (&scanner); yy_scan_string (text, scanner); while(!stop) { /* we can always do this - repeatedly overwriting the current top-of-symbol-stack's position until the code below actually draws a symbol and increments nGlyph */ cairo_get_current_point(Dev[id].context, &positions[nGlyph].x, &positions[nGlyph].y); /* Get current token from the scanner */ token = yylex(scanner); token_txt = yyget_text(scanner); /* If we found a special character sequence (e.g. "\Sun") this may be remapped to an actual symbol */ if( token==GIZA_TOKEN_REMAP ) { giza_remapped_token_entry const* ptr = _giza_remap_token(token_txt); token = ptr->token; token_txt = ptr->text; } /* Check if we need to do font, super- or subscript first-token-after-change checking: if the first token after a change is not open bracket, the change lasts only for the current glyph (if any) [single character super-/subscript], for font change we only keep a stack of nested font changes, not 'globals', which only last until the closing bracket of the current top-of-stack (if any) */ if( (cur_super>=ob_super) && cur_super->wait_for_token==0 ) cur_super->wait_for_token = (token == GIZA_TOKEN_OB ? GIZA_TOKEN_CB : -1); if( cur_sub>=ob_sub && cur_sub->wait_for_token==0 ) cur_sub->wait_for_token = (token == GIZA_TOKEN_OB ? GIZA_TOKEN_CB : -1); if( cur_font>=oldfont && cur_font->wait_for_token==0 ) { cur_font->wait_for_token = (token == GIZA_TOKEN_OB ? GIZA_TOKEN_CB : -1); /* check if we need to 'forget' this font change state; if it was 'global' */ if( cur_font->wait_for_token==-1 /*it was a 'global font change'*/ && cur_font>oldfont /* there exists at least a previous state */ && (cur_font-1)->wait_for_token==GIZA_TOKEN_CB /* and that one is waiting for close bracket*/ ) /* basically forget current font state */ cur_font--; } switch(token) { case GIZA_TOKEN_OB: ob++; break; case GIZA_TOKEN_CB: ob--; /* font change remains in effect until end of string or until close bracket, the latter only if the first token after font change was open bracket */ if( (cur_font>=oldfont) && cur_font->wait_for_token==GIZA_TOKEN_CB && ob<=cur_font->ob_level ) { /* OK go back to old font */ giza_set_font(cur_font->font); cur_font--; } /* Actual processing of closing bracket for super/sub is /after/ the switch statement because then it can be shared with single-token super/sub handling */ break; /* Handle a Hershey symbol by replacing with its utf version (if any) It's already verified by the lexer that the token is a valid Hershey number */ case GIZA_TOKEN_HERSHEY: { action( _giza_lookup_hershey(atoi(token_txt))->utf, width, height ); /* added new character to end of string so 'top of stack' for backing up is now restored to new end of string */ bckSpace = nGlyph; } break; /* Start of super/sub script. Mark the current level as waiting to check the next token; if it's not open bracket, we must drop the superscript immediately after the first token */ case GIZA_TOKEN_SUPER: if( cur_super<&ob_super[MAX_NFONT-1] ) { cur_super++; cur_super->ob_level = ob; cur_super->wait_for_token = 0; _giza_start_super (); } else { _giza_error("giza_parse_string", "Too many levels of super-script"); } break; case GIZA_TOKEN_SUB: if( cur_sub<&ob_sub[MAX_NFONT-1] ) { cur_sub++; cur_sub->ob_level = ob; cur_sub->wait_for_token = 0; _giza_start_sub (); } else { _giza_error("giza_parse_string", "Too many levels of sub-script"); } break; /* raising/lowering works relative to current state */ case GIZA_TOKEN_RAISE: if (insub > 0) { _giza_stop_sub(); insub -= 1; } else { _giza_start_super(); insuper += 1; } break; case GIZA_TOKEN_LOWER: if (insuper > 0) { _giza_stop_super(); insuper -= 1; } else { _giza_start_sub(); insub += 1; } break; /* move to previous character position. If backed up before start of string ignore silently. Note: in order to support having super + sub scripts appended to the same character you'll have to back up by *two* 'characters': first backup up over the superscript, then backing up to the baseline of the font before the superscript was entered. It is as if ^, _, \u, \d act as glyphs too only they're not inked. The upshot is that x^2\b\b_i renders nicely as proper x-i-squared */ case GIZA_TOKEN_BACKSPACE: if( bckSpace>=0 ) cairo_move_to(Dev[id].context, positions[bckSpace].x, positions[bckSpace].y); bckSpace -= 1; break; /* Handle change of font! The lexer already verified it's a /valid/ font specifier */ case GIZA_TOKEN_FONT: if ( cur_font<&oldfont[MAX_NFONT-1] ) { /* new font change state */ cur_font++; cur_font->ob_level = ob; cur_font->wait_for_token = 0; /* save font */ giza_get_font(cur_font->font, GIZA_FONT_LEN); } else { _giza_error("giza_parse_string", "Too many nested levels of font changes"); break; } switch ( tolower(*token_txt) ) { case 'b': /* bold */ _giza_switch_font (5); break; case 's': /* script */ _giza_switch_font (4); break; case 'i': /* italic */ _giza_switch_font (3); break; case 'r': /* roman */ _giza_switch_font (2); break; case 'n': /* normal */ _giza_switch_font (1); break; } break; /* Draw PGPLOT marker \mnn The lexer already verified it's a /valid/ marker number, i.e. 1 <= nn <= 31 */ case GIZA_TOKEN_MARKER: { /* get current marker height */ double markerHeight; _giza_get_markerheight(&markerHeight); /* extract the symbol number following the \m */ int const number = atoi( token_txt ); /* either draw the symbol or increment the width */ if (*width < 0.) { double dx = 1.0*markerHeight; double dy = -0.5*markerHeight; _giza_draw_symbol_device(positions[nGlyph].x + dx*cosa + dy*sina, positions[nGlyph].y + dx*sina + dy*cosa, number); cairo_move_to(Dev[id].context, positions[nGlyph].x + 2.*dx*cosa, positions[nGlyph].y + 2.*dx*sina); /* restore pen position */ } else { /* return width if action is _giza_action_get_size */ *width = *width + 2.*markerHeight; } } break; /* Replace the greek letter by its unicode representation. The lexer already verified it's a /valid/ greek letter. After that processing is like normal text */ case GIZA_TOKEN_GREEK: token_txt = giza_greek_to_utf( *token_txt ); case GIZA_TOKEN_TEXT: { /* added new character to end of string so 'top of stack' for backing up is now restored to new end of string */ bckSpace = nGlyph; action(token_txt, width, height); } break; /* end of string */ case GIZA_TOKEN_END: stop = 1; break; /* Ow dear, we got something we didn't expect! */ default: _giza_error("giza_parse_string", "unhandled token %d (%s)", token, token_txt); stop = 1; break; } /* After having dealt with a token check if we need to drop super/sub/font immediately */ /* did the closing bracket mark end-of-superscript? wait_for_token == CLOSE_BRACKET? then wait for level to fall below that, if == -1, drop immediately */ if( (cur_super>=ob_super) && ((cur_super->wait_for_token==GIZA_TOKEN_CB && ob<=cur_super->ob_level) || cur_super->wait_for_token==-1) ) { _giza_stop_super(); cur_super--; } /* did the closing bracket mark end-of-subscript? */ if( (cur_sub>=ob_sub) && ((cur_sub->wait_for_token==GIZA_TOKEN_CB && ob<=cur_sub->ob_level) || cur_sub->wait_for_token==-1) ) { _giza_stop_sub(); cur_sub--; } /* Move on to next 'glyph' position */ nGlyph++; } yylex_destroy (scanner); _giza_set_trans (oldTrans); /* In case we broke from the loop but there's font change still in effect switch back to the font we started with */ if( cur_font>=oldfont ) giza_set_font( oldfont[0].font ); } giza-1.5.0/src/giza-set-font-private.h000066400000000000000000000017351477367113400175710ustar00rootroot00000000000000/* giza - a scientific plotting library built on cairo * * Copyright (c) 2010 James Wetter and Daniel Price * Copyright (c) 2010-2012 Daniel Price * * This library is free software; and you are welcome to redistribute * it under the terms of the GNU General Public License * (GPL, see LICENSE file for details) and the provision that * this notice remains intact. If you modify this file, please * note section 5a) of the GPLv3 states that: * * a) The work must carry prominent notices stating that you modified * it, and giving a relevant date. * * This software is distributed "AS IS", with ABSOLUTELY NO WARRANTY. * See the GPL for specific language governing rights and limitations. * * The Original code is the giza plotting library. * * Contributor(s): * James Wetter * Daniel Price (main contact) */ void _giza_init_font (void); void _giza_free_font (void); void _giza_unload_font_cache (void); giza-1.5.0/src/giza-set-font.c000066400000000000000000000411231477367113400161070ustar00rootroot00000000000000/* giza - a scientific plotting library built on cairo * * Copyright (c) 2010 James Wetter and Daniel Price * Copyright (c) 2010-2012 Daniel Price * * This library is free software; and you are welcome to redistribute * it under the terms of the GNU General Public License * (GPL, see LICENSE file for details) and the provision that * this notice remains intact. If you modify this file, please * note section 5a) of the GPLv3 states that: * * a) The work must carry prominent notices stating that you modified * it, and giving a relevant date. * * This software is distributed "AS IS", with ABSOLUTELY NO WARRANTY. * See the GPL for specific language governing rights and limitations. * * The Original code is the giza plotting library. * * Contributor(s): * James Wetter * Daniel Price (main contact) */ #include "giza-private.h" #include "giza-io-private.h" #include "giza-set-font-private.h" #include #include #include /* Depending on cairo version + capabilities enable FreeType and/or FontConfig support */ #undef GIZA_HAS_FT_FONT #undef GIZA_HAS_FC_FONT #include #if CAIRO_VERSION >= CAIRO_VERSION_ENCODE(1, 8, 0) # ifdef CAIRO_HAS_FT_FONT # define GIZA_HAS_FT_FONT # include # endif /* CAIRO has FreeType support */ # ifdef CAIRO_HAS_FC_FONT # define GIZA_HAS_FC_FONT # include # endif /* CAIRO has FontConfig support */ #endif /* cairo >= 1.8.0 */ /* internal font cache actions */ giza_font_t* _giza_cache_get_font(const char*, cairo_font_slant_t, cairo_font_weight_t); void _giza_cache_release_font(giza_font_t*); /** * Settings: giza_set_font * * Synopsis: Sets the current font to the family specified in font, otherwise it is unchanged. * * Input: * -font :- the font family to be used. */ void giza_set_font (const char *font) { if (!_giza_check_device_ready ("giza_set_font")) return; _giza_set_font(font,CAIRO_FONT_SLANT_NORMAL,CAIRO_FONT_WEIGHT_NORMAL); } /** * Settings: giza_set_font_bold * * Synopsis: Sets the current font to the family specified in font, otherwise it is unchanged. * * Input: * -font :- the font family to be used. */ void giza_set_font_bold (const char *font) { if (!_giza_check_device_ready ("giza_set_font_bold")) return; _giza_set_font(font,CAIRO_FONT_SLANT_NORMAL,CAIRO_FONT_WEIGHT_BOLD); } /** * Settings: giza_set_font_italic * * Synopsis: Sets the current font to the family specified in font, otherwise it is unchanged. * * Input: * -font :- the font family to be used. */ void giza_set_font_italic (const char *font) { if (!_giza_check_device_ready ("giza_set_font_italic")) return; _giza_set_font(font,CAIRO_FONT_SLANT_ITALIC,CAIRO_FONT_WEIGHT_NORMAL); } /** * Settings: giza_set_font_bold_italic * * Synopsis: Sets the current font to the family specified in font, otherwise it is unchanged. * * Input: * -font :- the font family to be used. */ void giza_set_font_bold_italic (const char *font) { if (!_giza_check_device_ready ("giza_set_font_bold_italic")) return; _giza_set_font(font,CAIRO_FONT_SLANT_ITALIC,CAIRO_FONT_WEIGHT_BOLD); } void _giza_set_font (const char *font, cairo_font_slant_t slant, cairo_font_weight_t weight) { if (!_giza_check_device_ready ("_giza_set_font")) return; if(!font || strlen(font)==0) { _giza_warning ("_giza_set_font", "No font string passed, font unchanged."); return; } /* Get a handle for the requested font */ giza_font_t* fontptr = _giza_cache_get_font(font, slant, weight); if( fontptr==NULL ) { _giza_error("_giza_set_font", "Failed to get font for font=%s, slant=%d, weight=%d for Dev[%d] (font unchanged)", font, slant, weight, id); return; } /* store existing font matrix */ cairo_matrix_t mat; cairo_get_font_matrix (Dev[id].context, &mat); /* Release the Dev's current font and install the new one */ _giza_cache_release_font(Dev[id].Font); Dev[id].Font = fontptr; Dev[id].Font->refCount++; /* And tell cairo to use this'un */ cairo_set_font_face(Dev[id].context, Dev[id].Font->font); double oldCh; giza_get_character_height (&oldCh); giza_set_character_height (oldCh); /* restore font matrix */ cairo_set_font_matrix (Dev[id].context, &mat); } /** * Settings: giza_get_font * * Sets font to a string representing the font family. * * Input: * -font :- Gets set to the current font family * -n :- The length of memory allocated to font * * See Also: giza_set_font */ void giza_get_font (char *font, int n) { if (!_giza_check_device_ready ("giza_get_font")) return; if (n < 1) { _giza_warning ("giza_get_font", "Destination string is too short; sais %d characters available", n); return; } if( Dev[id].Font==NULL ) { _giza_warning ("giza_get_font", "Device %d has no Font set?", id); font[0] = '\0'; return; } /* note: the .family member is always valid */ strncpy (font, Dev[id].Font->family, n - 1); } /** * Sets the default font and character height. * * If the environment variable GIZA_FONT is set * it's value will be used to set the font family, * otherwise the system specific default is used. */ void _giza_init_font (void) { char *tmp = getenv ("GIZA_FONT"); if(!tmp) { tmp = "Times"; } giza_set_font (tmp); } /** * release the font for the current device */ void _giza_free_font (void) { _giza_cache_release_font( Dev[id].Font ); Dev[id].Font = NULL; } /* * Attempt to load the specified font, using FT or FontConfig - * whichever is enabled and works */ cairo_font_face_t* _giza_resolve_font(const char* font, cairo_font_slant_t slant, cairo_font_weight_t weight) { /* for error reporting, keep track of which mechanisms were tried to get the font*/ char tried[128] = {0,}; /* The new font, if any */ cairo_font_face_t* newFont = NULL; #ifdef GIZA_HAS_FT_FONT /* Attempt one: try FreeType font. * We must remember (1) did we try to initalize the FT library and * (2) what was the result of that */ static int didFtInit = 0, ftInitOk = 0; static FT_Library ft_library; static const cairo_user_data_key_t key; if( !didFtInit ) { ftInitOk = !FT_Init_FreeType( &ft_library ); didFtInit = 1; if( !ftInitOk ) _giza_warning("_giza_resolve_font","error initialising freetype library"); } /* If FT Library was initialized we may ask it to get the font */ if( ftInitOk ) { FT_Face newFace; if( FT_New_Face(ft_library, font, 0, &newFace)==0 ) { /* Can we make a font out of that one? */ if( (newFont=cairo_ft_font_face_create_for_ft_face(newFace, 0)) != NULL ) { /* tie the lifetime of the FT_Face object to the * cairo font object as per cairo documentation */ cairo_font_face_set_user_data(newFont, &key, newFace, (cairo_destroy_func_t) FT_Done_Face); } else { /* We got a FT_Face but not a cairo font */ _giza_error("giza_set_font", "FT_Face succeeded for font %s but cairo_font_face_create_for_ft failed", font); /* The FT_Face can go now */ FT_Done_Face(newFace); } } /* We did try FreeType */ strcat(tried, "FreeType "); } /* FreeType lib initialized Ok */ #endif /* GIZA_HAS_FT_FONT */ #ifdef GIZA_HAS_FC_FONT /* Try fontconfig if we seem to has it and no new font yet. * Also need to keep track of wether the library was initialised * and if so what the result of that was */ static FcBool didFcInit = FcFalse, fcInitOk = FcFalse; static FcConfig* configPtr = NULL; if( didFcInit==FcFalse ) { fcInitOk = FcInit(); configPtr = (fcInitOk==FcTrue ? FcInitLoadConfigAndFonts() : NULL); fcInitOk = (fcInitOk && configPtr!=NULL) ? FcTrue : FcFalse; didFcInit = FcTrue; if( fcInitOk==FcFalse ) _giza_warning("giza_resolve_font","error initialising fontconfig library"); } if( fcInitOk && newFont==NULL ) { /* See if we can load the requested font through FontConfig */ FcPattern* search = FcPatternBuild(0, FC_FAMILY, FcTypeString , font, FC_SLANT, FcTypeInteger, (slant==CAIRO_FONT_SLANT_ITALIC ? FC_SLANT_ITALIC : FC_SLANT_ROMAN), FC_WEIGHT, FcTypeInteger, (weight==CAIRO_FONT_WEIGHT_BOLD ? FC_WEIGHT_BOLD : FC_WEIGHT_NORMAL), (char *)0 /* sentinel to stop parsing fields */ ); if( search ) { /* FontConfig yielded a result. Great. */ if( (newFont=cairo_ft_font_face_create_for_pattern(search))==NULL ) _giza_error("giza_resolve_font", "FontConfig search succeeded for font %s but cairo_ft_font_face_create_for_pattern didn't", font); /* Whichever the result was, we don't need the search result anymore */ FcPatternDestroy( search ); } else { _giza_warning("giza_resolve_font", "Could not create FontConfig search pattern for font %s", font); } /* We tried FontConfig */ strcat(tried, "FontConfig "); } /* FontConfig OK and font not yet found */ #endif /* GIZA_HAS_FC_FONT */ /* If still no font, try toy_font_face_create .... */ if( newFont==NULL && (newFont=cairo_toy_font_face_create(font, slant, weight))==NULL ) strcat(tried, "cairo_toy_font "); if( newFont==NULL ) _giza_warning("_giza_resolve_font","No cairo_font_t for font=%s, slant=%d, weight=%d [tried: %s]", font, slant, weight, tried); return newFont; } /************************************************************* * * The internal font cache * *************************************************************/ typedef struct _giza_font_cache_element_t { struct _giza_font_cache_element_t* next; struct _giza_font_cache_element_t* previous; giza_font_t font; } giza_font_cache_element_t; static giza_font_cache_element_t* _giza_font_cache = NULL; /* Check if an entry for the font already present in the cache. * - Yes? Just return the giza_font_t in that entry * - No? Attempt to resolve the font (FreeType/FontConfig/Toy) * and add a new entry to the cache with refcount == 1 * * Parameters: * -family: name of the font, assume already tested for non-NULL-ness * -slant: the requested slant of the font * -weigth: the requested weight of the font */ giza_font_t* _giza_cache_get_font(const char* family, cairo_font_slant_t slant, cairo_font_weight_t weight) { giza_font_cache_element_t* cur; /* Check if we already have this one */ for(cur = _giza_font_cache; cur!=NULL; cur = cur->next) /* case insensitive font family check */ if( strcasecmp(cur->font.family, family)==0 && cur->font.slant==slant && cur->font.weight==weight ) break; if( cur!=NULL ) return &cur->font; /* If we didn't find it, let's add one. Let cairo create a new font face */ cairo_font_face_t* newFont = _giza_resolve_font(family, slant, weight); if( newFont==NULL ) { _giza_error("_giza_cache_get_font", "Failed to load font (family=%s, slant=%d, weight=%d)", family, slant, weight); return NULL; } /* Create new entry */ giza_font_cache_element_t* newEntry = (giza_font_cache_element_t*)calloc( 1, sizeof(giza_font_cache_element_t) ); if( newEntry==NULL ) { _giza_error("_giza_cache_get_font", "Out of memory allocating giza_font_cache entry"); /* Release the cairo font */ cairo_font_face_destroy( newFont ); return NULL; } /* Fill in the new cache entry. * Memory allocation story: we initialize the refCount to '1' here. * This effectively means the font will remain in memory for the * lifetime of the library - devices opening, closing, changing font, * will never make the refcount drop to zero (*). * * Reason: otherwise each font would be unloaded _at every font change_ * which would be a tad inefficient, see this scenario: * * open device -> sets default font, refcount == 1 * application sets cursive font: * - decrease ref on current font (default) => goes to 0 => * delete font * - allocate cursive font, set refcount to 1 * - change back to default font: * - decrease refcount on current font (cursive): 1 -> 0 * delete cursive font * - get entry for default font: oh no! we just deleted it, * must re-create it ... * etc etc * * The downside is that at program shutdown (PGEND), extra code is added * to force-unload the font cache. * * By the way, this is also the reason why we don't use the * cairo_font_face_reference() counting mechanism because it would suffer from * the same problem. If there's only one device with one current font, * the refcount would toggle between 0,1,0 on every font change, making * cairo delete+allocate+delete+allocate etc. * By the 2nd way: investigating cairo_font_face_reference_count() * seems to be out of sync with what WE do. When manually doing * while( cairo_font_face_reference_count(face) ) * cairo_font_face_destroy(face); * it immediately SIGSEGVs or bombs out with double delete. * So relying on cairo's internal font refcounting seems not a good * idea at this point. * * (*) Not /entirely/ true; in order to ensure _proper_ memory management, * code was added to force-unload the font cache in case no open * device(s) remain after PGCLOS. Some applications don't call PGEND. * This means that the cache may be dropped/rebuilt over the * lifetime of the library, e.g. if an application closes all * devices and then starts opening new one(s) again. * Still, this a significantly less overhead compared to * loading/unloading fonts at every font change. */ newEntry->font.family = strdup(family); /* No worries, success will be checked below. */ newEntry->font.slant = slant; newEntry->font.weight = weight; newEntry->font.refCount = 1; /* This will keep the fonts in memory 'for ever' */ newEntry->font.font = newFont; if( newEntry->font.family==NULL ) { _giza_error("_giza_cache_get_font", "Out of memory copying font family into cache"); /* Release the cairo font */ cairo_font_face_destroy( newFont ); /* And the memory for the new entry */ free( newEntry ); return NULL; } /* Now we're all set to add this one to the cache. * Easiest is at the head of the list */ if( _giza_font_cache ) _giza_font_cache->previous = newEntry; newEntry->next = _giza_font_cache; _giza_font_cache = newEntry; return &newEntry->font; } /* If a device is closed or another font is set, release one instance of the * current font */ void _giza_cache_release_font(giza_font_t* fontptr) { giza_font_cache_element_t* cur; /* Check which cache element has this font */ for(cur = _giza_font_cache; cur!=NULL; cur = cur->next) if( &cur->font==fontptr ) break; if( cur==NULL ) { /* this is an error if fontptr != NULL */ if( fontptr!=NULL ) _giza_error("_giza_cache_release_font", "Internal error: no cache element has font pointer == %p", (void*)fontptr); return; } /* Decrease refcount. If still > 0 we're quickly done */ if( --cur->font.refCount > 0 ) return; /* No more references to this font */ cairo_font_face_destroy( cur->font.font ); free( cur->font.family ); /* remove it from the cache */ if( cur->previous ) cur->previous->next = cur->next; if( cur->next ) cur->next->previous = cur->previous; /* Did we remove the head of the list? */ if( cur==_giza_font_cache ) _giza_font_cache = cur->next; /* and release the memory for the cache element */ free( cur ); } /* At program end (giza_close_devices) the whole font cache will be unloaded */ void _giza_unload_font_cache (void) { /* The simplest approach ... */ while( _giza_font_cache ) _giza_cache_release_font( &_giza_font_cache->font ); } giza-1.5.0/src/giza-shared.h000066400000000000000000000036221477367113400156250ustar00rootroot00000000000000#include "giza-version.h" #define GIZA_LEFT_CLICK 'A' #define GIZA_MIDDLE_CLICK 'D' #define GIZA_RIGHT_CLICK 'X' #define GIZA_SHIFT_CLICK 15 #define GIZA_SCROLL_UP 21 #define GIZA_SCROLL_DOWN 4 #define GIZA_SCROLL_LEFT 12 #define GIZA_SCROLL_RIGHT 18 #define GIZA_OTHER_CLICK 'X' #define GIZA_LS_SOLID 1 #define GIZA_LS_SHORT_DASH 2 #define GIZA_LS_DASHED 2 #define GIZA_LS_LONG_DASH 3 #define GIZA_LS_DOT 4 #define GIZA_LS_DOTTED 4 #define GIZA_LS_DASH_DOT 5 #define GIZA_LS_DASH_DOT_DOT_DOT 6 #define GIZA_NUMBER_FORMAT_AUTO 0 #define GIZA_NUMBER_FORMAT_DEC 1 #define GIZA_NUMBER_FORMAT_EXP 2 #define GIZA_UNITS_NORMALIZED 0 #define GIZA_UNITS_NORMALISED 0 #define GIZA_UNITS_INCHES 1 #define GIZA_UNITS_MM 2 #define GIZA_UNITS_PIXELS 3 #define GIZA_UNITS_WORLD 4 #define GIZA_UNITS_DEVICE 5 #define GIZA_BAND_NONE 0 #define GIZA_BAND_LINE 1 #define GIZA_BAND_RECTANGLE 2 #define GIZA_BAND_HORZLINES 3 #define GIZA_BAND_VERTLINES 4 #define GIZA_BAND_HORZLINE 5 #define GIZA_BAND_VERTLINE 6 #define GIZA_BAND_CROSSHAIR 7 #define GIZA_BAND_CIRCLE 8 #define GIZA_BACKGROUND_COLOUR 0 #define GIZA_BACKGROUND_COLOR 0 #define GIZA_BACKGROUND 0 #define GIZA_FOREGROUND_COLOUR 1 #define GIZA_FOREGROUND_COLOR 1 #define GIZA_FOREGROUND 1 #define GIZA_COLOUR_INDEX_MIN 0 #define GIZA_COLOUR_INDEX_MAX 271 #define GIZA_COLOUR_PALETTE_DEFAULT 0 #define GIZA_COLOR_PALETTE_DEFAULT 0 #define GIZA_COLOUR_PALETTE_PGPLOT 1 #define GIZA_COLOR_PALETTE_PGPLOT 1 #define GIZA_FILL_SOLID 1 #define GIZA_FILL_HOLLOW 2 #define GIZA_FILL_HATCH 3 #define GIZA_FILL_CROSSHATCH 4 #define GIZA_MAX_FILL_STYLES 4 #define GIZA_EXTEND_NONE 0 #define GIZA_EXTEND_REPEAT 1 #define GIZA_EXTEND_REFLECT 2 #define GIZA_EXTEND_PAD 3 #define GIZA_FILTER_DEFAULT 0 #define GIZA_FILTER_FAST 1 #define GIZA_FILTER_GOOD 2 #define GIZA_FILTER_BEST 3 #define GIZA_FILTER_NEAREST 4 #define GIZA_FILTER_BILINEAR 5 #define GIZA_FILTER_GAUSSIAN 6giza-1.5.0/src/giza-stroke-private.h000066400000000000000000000020051477367113400173300ustar00rootroot00000000000000/* giza - a scientific plotting library built on cairo * * Copyright (c) 2010 James Wetter and Daniel Price * Copyright (c) 2010-2022 Daniel Price * * This library is free software; and you are welcome to redistribute * it under the terms of the GNU General Public License * (GPL, see LICENSE file for details) and the provision that * this notice remains intact. If you modify this file, please * note section 5a) of the GPLv3 states that: * * a) The work must carry prominent notices stating that you modified * it, and giving a relevant date. * * This software is distributed "AS IS", with ABSOLUTELY NO WARRANTY. * See the GPL for specific language governing rights and limitations. * * The Original code is the giza plotting library. * * Contributor(s): * James Wetter * Daniel Price (main contact) */ void _giza_stroke (void); void _giza_tick_intervals (double xmin, double xmax, double xinterval, int *i1, int *i2); giza-1.5.0/src/giza-stroke.c000066400000000000000000000026751477367113400156700ustar00rootroot00000000000000/* giza - a scientific plotting library built on cairo * * Copyright (c) 2010 James Wetter and Daniel Price * Copyright (c) 2010-2012 Daniel Price * * This library is free software; and you are welcome to redistribute * it under the terms of the GNU General Public License * (GPL, see LICENSE file for details) and the provision that * this notice remains intact. If you modify this file, please * note section 5a) of the GPLv3 states that: * * a) The work must carry prominent notices stating that you modified * it, and giving a relevant date. * * This software is distributed "AS IS", with ABSOLUTELY NO WARRANTY. * See the GPL for specific language governing rights and limitations. * * The Original code is the giza plotting library. * * Contributor(s): * James Wetter * Daniel Price (main contact) */ #include "giza-transforms-private.h" #include "giza-private.h" #include "giza-line-style-private.h" #include "giza-stroke-private.h" #include /** * An internal function to ensure line width * is are honoured for all strokes. */ void _giza_stroke (void) { int oldTrans = _giza_get_trans (); _giza_set_trans (GIZA_TRANS_IDEN); /* set the line style in case there has been a change in character height or line width */ int ls; giza_get_line_style (&ls); giza_set_line_style (ls); cairo_stroke (Dev[id].context); _giza_set_trans (oldTrans); } giza-1.5.0/src/giza-subpanel-private.h000066400000000000000000000017071477367113400176420ustar00rootroot00000000000000/* giza - a scientific plotting library built on cairo * * Copyright (c) 2010 James Wetter and Daniel Price * Copyright (c) 2010-2012 Daniel Price * * This library is free software; and you are welcome to redistribute * it under the terms of the GNU General Public License * (GPL, see LICENSE file for details) and the provision that * this notice remains intact. If you modify this file, please * note section 5a) of the GPLv3 states that: * * a) The work must carry prominent notices stating that you modified * it, and giving a relevant date. * * This software is distributed "AS IS", with ABSOLUTELY NO WARRANTY. * See the GPL for specific language governing rights and limitations. * * The Original code is the giza plotting library. * * Contributor(s): * James Wetter * Daniel Price (main contact) */ void _giza_init_subpanel(void); void _giza_advance_panel (int *newpage); giza-1.5.0/src/giza-subpanel.c000066400000000000000000000077031477367113400161670ustar00rootroot00000000000000/* giza - a scientific plotting library built on cairo * * Copyright (c) 2010 James Wetter and Daniel Price * Copyright (c) 2010-2014 Daniel Price * * This library is free software; and you are welcome to redistribute * it under the terms of the GNU General Public License * (GPL, see LICENSE file for details) and the provision that * this notice remains intact. If you modify this file, please * note section 5a) of the GPLv3 states that: * * a) The work must carry prominent notices stating that you modified * it, and giving a relevant date. * * This software is distributed "AS IS", with ABSOLUTELY NO WARRANTY. * See the GPL for specific language governing rights and limitations. * * The Original code is the giza plotting library. * * Contributor(s): * James Wetter * Daniel Price (main contact) */ #include "giza-private.h" #include "giza-subpanel-private.h" #include #include /** * Device: giza_subpanel * * Synopsis: Set the number of sub panels * * Input: * -nx :- number of sub-panels in x direction * -ny :- number of sub panels in y direction * * If nx is negative then panels are traversed * down-then-across instead of the default * across-then-down * * See Also: giza_select_panel, giza_get_panel * */ void giza_subpanel (int nx, int ny) { if (!_giza_check_device_ready ("giza_subpanel")) return; /* query viewport */ double vpxmin, vpxmax, vpymin, vpymax; giza_get_viewport(GIZA_UNITS_NORMALISED,&vpxmin,&vpxmax,&vpymin,&vpymax); if (nx < 0) { Dev[id].altpanelorder = 1; } else { Dev[id].altpanelorder = 0; } nx = abs(nx); ny = abs(ny); if (nx < 1) nx = 1; if (ny < 1) ny = 1; Dev[id].nx = nx; Dev[id].ny = ny; Dev[id].panelwidth = Dev[id].width/nx; Dev[id].panelheight = Dev[id].height/ny; /* set current panel */ Dev[id].ix = nx; Dev[id].iy = ny; /* set viewport */ giza_set_viewport(vpxmin,vpxmax,vpymin,vpymax); } /** * Device: giza_set_panel * * Synopsis: Select the panel we are currently plotting in * * Input: * -ix :- panel index in x direction * -iy :- panel index in y direction * * See Also: giza_subpanel, giza_get_panel * */ void giza_set_panel (int ix, int iy) { if (!_giza_check_device_ready ("giza_select_panel")) return; if (ix < 1 || ix > Dev[id].nx) { ix = 1; } if (iy < 1 || iy > Dev[id].ny) { iy = 1; } Dev[id].ix = ix; Dev[id].iy = iy; /* set viewport */ giza_set_viewport(Dev[id].VP.xmin,Dev[id].VP.xmax,Dev[id].VP.ymin,Dev[id].VP.ymax); } /** * Device: giza_get_panel * * Synopsis: Select the panel we are currently plotting in * * Input: * -ix :- panel index in x direction * -iy :- panel index in y direction * * See Also: giza_subpanel, giza_set_panel * */ void giza_get_panel (int *ix, int *iy) { if (!_giza_check_device_ready ("giza_query_panel")) return; *ix = Dev[id].ix; *iy = Dev[id].iy; } /** * Device: giza_init_subpanel * * Synopsis: initialises subpanel settings for device * */ void _giza_init_subpanel () { if (!_giza_check_device_ready ("_giza_init_subpanel")) return; Dev[id].nx = 1; Dev[id].ny = 1; Dev[id].ix = 1; Dev[id].iy = 1; Dev[id].altpanelorder = 0; Dev[id].panelwidth = Dev[id].width; Dev[id].panelheight = Dev[id].height; } /** * Device: giza_advance_panel * * Synopsis: Moves to next panel * */ void _giza_advance_panel (int *newpage) { int ix = Dev[id].ix; int iy = Dev[id].iy; *newpage = 0; if (Dev[id].altpanelorder) { iy = iy + 1; if (iy > Dev[id].ny) { iy = 1; ix = ix + 1; if (ix > Dev[id].nx) { ix = 1; *newpage = 1; } } } else { ix = ix + 1; if (ix > Dev[id].nx) { ix = 1; iy = iy + 1; if (iy > Dev[id].ny) { iy = 1; *newpage = 1; } } } Dev[id].ix = ix; Dev[id].iy = iy; } giza-1.5.0/src/giza-text-background-private.h000066400000000000000000000016451477367113400211330ustar00rootroot00000000000000/* giza - a scientific plotting library built on cairo * * Copyright (c) 2010 James Wetter and Daniel Price * Copyright (c) 2010-2012 Daniel Price * * This library is free software; and you are welcome to redistribute * it under the terms of the GNU General Public License * (GPL, see LICENSE file for details) and the provision that * this notice remains intact. If you modify this file, please * note section 5a) of the GPLv3 states that: * * a) The work must carry prominent notices stating that you modified * it, and giving a relevant date. * * This software is distributed "AS IS", with ABSOLUTELY NO WARRANTY. * See the GPL for specific language governing rights and limitations. * * The Original code is the giza plotting library. * * Contributor(s): * James Wetter * Daniel Price (main contact) */ void _giza_init_text_background(void); giza-1.5.0/src/giza-text-background.c000066400000000000000000000034571477367113400174610ustar00rootroot00000000000000/* giza - a scientific plotting library built on cairo * * Copyright (c) 2010 James Wetter and Daniel Price * Copyright (c) 2010-2013 Daniel Price * * This library is free software; and you are welcome to redistribute * it under the terms of the GNU General Public License * (GPL, see LICENSE file for details) and the provision that * this notice remains intact. If you modify this file, please * note section 5a) of the GPLv3 states that: * * a) The work must carry prominent notices stating that you modified * it, and giving a relevant date. * * This software is distributed "AS IS", with ABSOLUTELY NO WARRANTY. * See the GPL for specific language governing rights and limitations. * * The Original code is the giza plotting library. * * Contributor(s): * James Wetter * Daniel Price (main contact) */ #include "giza-text-background-private.h" #include "giza-private.h" #include /** * Settings: giza_set_text_background * * Synopsis: Set the colour index for the background of any text to be drawn. * Use a negative value for a transparent background. * * Input: * -colourIndex :- The colour index the background will be. */ void giza_set_text_background (int colourIndex) { if (!_giza_check_device_ready ("giza_set_text_background")) return; Dev[id].text_background = colourIndex; } /** * Settings: giza_get_text_background * * Synopsis: Queries the current text background colour * * Output: * -colourIndex :- Current setting for the background text colour. */ void giza_get_text_background (int *colourIndex) { if (!_giza_check_device_ready ("giza_get_text_background")) return; *colourIndex = Dev[id].text_background; } void _giza_init_text_background (void) { Dev[id].text_background = -1; } giza-1.5.0/src/giza-text-private.h000066400000000000000000000031311477367113400170060ustar00rootroot00000000000000/* giza - a scientific plotting library built on cairo * * Copyright (c) 2010 James Wetter and Daniel Price * Copyright (c) 2010-2012 Daniel Price * * This library is free software; and you are welcome to redistribute * it under the terms of the GNU General Public License * (GPL, see LICENSE file for details) and the provision that * this notice remains intact. If you modify this file, please * note section 5a) of the GPLv3 states that: * * a) The work must carry prominent notices stating that you modified * it, and giving a relevant date. * * This software is distributed "AS IS", with ABSOLUTELY NO WARRANTY. * See the GPL for specific language governing rights and limitations. * * The Original code is the giza plotting library. * * Contributor(s): * James Wetter * Daniel Price (main contact) */ #define GIZA_SCALE_SUPERS 0.65 #define GIZA_RAISE_SUPERS 0.4 #define GIZA_SCALE_SUBS 0.65 #define GIZA_LOWER_SUBS 0.2 #define GIZA_FONT_LEN 24 void _giza_parse_string (const char *text, double *width, double *height, void(*action)(const char *, double *, double *)); void _giza_get_text_width (double *width, char *text); void _giza_set_default_font (void); void _giza_scale_character_size (double scalefac); void _giza_action_get_size (const char *text, double *width, double *height); void _giza_action_print (const char *text, double *width, double *height); void _giza_start_super (void); void _giza_stop_super (void); void _giza_start_sub (void); void _giza_stop_sub (void); void _giza_switch_font (int fonttype); giza-1.5.0/src/giza-text.c000066400000000000000000000104531477367113400153360ustar00rootroot00000000000000/* giza - a scientific plotting library built on cairo * * Copyright (c) 2010 James Wetter and Daniel Price * Copyright (c) 2010-2014 Daniel Price * * This library is free software; and you are welcome to redistribute * it under the terms of the GNU General Public License * (GPL, see LICENSE file for details) and the provision that * this notice remains intact. If you modify this file, please * note section 5a) of the GPLv3 states that: * * a) The work must carry prominent notices stating that you modified * it, and giving a relevant date. * * This software is distributed "AS IS", with ABSOLUTELY NO WARRANTY. * See the GPL for specific language governing rights and limitations. * * The Original code is the giza plotting library. * * Contributor(s): * James Wetter * Daniel Price (main contact) */ #include "giza-private.h" #include "giza-io-private.h" #include "giza-text-private.h" #include "giza-transforms-private.h" #include #include #include #include void _giza_action_get_size (const char *text, double *width, double *height) { if (strlen(text) <= 0) return; double newHeight, dummy; cairo_get_current_point (Dev[id].context, &dummy, &newHeight); cairo_text_extents_t extents; cairo_text_extents (Dev[id].context, text, &extents); dummy = newHeight; *width += extents.x_advance; newHeight = -newHeight - extents.y_bearing; if (newHeight > *height) *height = newHeight; } void _giza_action_print (const char *text, double *width, double *height) { if (strlen(text) > 0) { cairo_show_text (Dev[id].context, text); } *width = -1.; *height = -1.; } /** * Moves the current position to continue writing in superscript. */ void _giza_start_super (void) { int oldTrans = _giza_get_trans (); _giza_set_trans (GIZA_TRANS_IDEN); double x , y, height = Dev[id].fontExtents.ascent * GIZA_RAISE_SUPERS; x = height * sin (Dev[id].fontAngle); y = -height * cos (Dev[id].fontAngle); cairo_rel_move_to (Dev[id].context, x, y); /* DJP: we scale the character height relative to it's current size * rather than setting the absolute height -- this preserves * the font matrix and hence any rotation etc. that has been set */ _giza_scale_character_size (GIZA_SCALE_SUPERS); _giza_set_trans (oldTrans); } /** * If currently writing superscript returns to normal position. */ void _giza_stop_super (void) { int oldTrans = _giza_get_trans (); _giza_set_trans (GIZA_TRANS_IDEN); _giza_scale_character_size (1. / GIZA_SCALE_SUPERS); double x , y, height = Dev[id].fontExtents.ascent * GIZA_RAISE_SUPERS; x = -height * sin (Dev[id].fontAngle); y = height * cos (Dev[id].fontAngle); cairo_rel_move_to (Dev[id].context, x, y); _giza_set_trans (oldTrans); } /** * Moves the current position to continue writing in subscript. * * Must be in GIZA_TRANS_IDEN. */ void _giza_start_sub (void) { int oldTrans = _giza_get_trans (); _giza_set_trans (GIZA_TRANS_IDEN); double x , y, height = -Dev[id].fontExtents.ascent * GIZA_LOWER_SUBS; x = height * sin (Dev[id].fontAngle); y = -height * cos (Dev[id].fontAngle); cairo_rel_move_to (Dev[id].context, x, y); _giza_scale_character_size (GIZA_SCALE_SUBS); _giza_set_trans (oldTrans); } /** * If currently writing subscript returns to normal position. * * Must be in GIZA_TRANS_IDEN. */ void _giza_stop_sub (void) { int oldTrans = _giza_get_trans (); _giza_set_trans (GIZA_TRANS_IDEN); _giza_scale_character_size (1. / GIZA_SCALE_SUBS); double x , y, height = -Dev[id].fontExtents.ascent * GIZA_LOWER_SUBS; x = -height * sin (Dev[id].fontAngle); y = height * cos (Dev[id].fontAngle); cairo_rel_move_to (Dev[id].context, x, y); _giza_set_trans (oldTrans); } /** * Switches font family during text write * */ void _giza_switch_font (int fonttype) { int len = GIZA_FONT_LEN; char giza_font[len]; switch(fonttype) { case 5: giza_get_font(giza_font,len); giza_set_font_bold(giza_font); break; case 4: giza_set_font("Cursive"); break; case 3: giza_get_font(giza_font,len); giza_set_font_italic(giza_font); break; case 2: giza_set_font("Times"); break; case 1: giza_set_font("Arial"); break; } } giza-1.5.0/src/giza-tick-private.h000066400000000000000000000017761477367113400167710ustar00rootroot00000000000000/* giza - a scientific plotting library built on cairo * * Copyright (c) 2010 James Wetter and Daniel Price * Copyright (c) 2010-2022 Daniel Price * * This library is free software; and you are welcome to redistribute * it under the terms of the GNU General Public License * (GPL, see LICENSE file for details) and the provision that * this notice remains intact. If you modify this file, please * note section 5a) of the GPLv3 states that: * * a) The work must carry prominent notices stating that you modified * it, and giving a relevant date. * * This software is distributed "AS IS", with ABSOLUTELY NO WARRANTY. * See the GPL for specific language governing rights and limitations. * * The Original code is the giza plotting library. * * Contributor(s): * James Wetter * Daniel Price (main contact) */ void _giza_draw_tick(cairo_matrix_t mat, double ratio, double dr, double currentTickL_l, double currentTickL_r); giza-1.5.0/src/giza-tick.c000066400000000000000000000117741477367113400153130ustar00rootroot00000000000000/* giza - a scientific plotting library built on cairo * * Copyright (c) 2010 James Wetter and Daniel Price * Copyright (c) 2010-2022 Daniel Price * * This library is free software; and you are welcome to redistribute * it under the terms of the GNU General Public License * (GPL, see LICENSE file for details) and the provision that * this notice remains intact. If you modify this file, please * note section 5a) of the GPLv3 states that: * * a) The work must carry prominent notices stating that you modified * it, and giving a relevant date. * * This software is distributed "AS IS", with ABSOLUTELY NO WARRANTY. * See the GPL for specific language governing rights and limitations. * * The Original code is the giza plotting library. * * Contributor(s): * James Wetter * Daniel Price (main contact) */ #include "giza-private.h" #include "giza-transforms-private.h" #include "giza-stroke-private.h" #include "giza-window-private.h" #include "giza-viewport-private.h" #include "giza-drivers-private.h" #include "giza-tick-private.h" #include #include /** * Drawing: giza_tick * * Synopsis: Draw a single tick along an axis. The axis extends from * (x1,y1) to (x2,y2) and the tick is drawn perpendicular to the axis * which is not drawn by this routine. Optional text label drawn * parallel to the axis if the orientation angle is zero * * Input: * -x1 :- starting x position in world coordinates * -y1 :- starting y position in world coordinates * -x2 :- finishing x position in world coordinates * -y2 :- finishing y position in world coordinates * -v :- axis value at tick location * -tickl :- Length of tick mark drawn to "left/bottom" of axis * in units of character height * -tickr :- Length of tick mark drawn to "right/top" of axis * in units of character height * -disp :- Displacement of labels from axis * in units of character height * -angle :- Label orientation; angle between text and direction of axis; in degrees * -label :- Text string used for label (can be blank) * */ void giza_tick (double x1, double y1, double x2, double y2, double v, double tickl, double tickr, double disp, double angle, const char *label) { if (!_giza_check_device_ready ("giza_tick")) return; _giza_expand_clipping (); double currentTickL_l; double currentTickL_r; double x,y,theta,theta_deg,dr; theta = atan2(y2-y1,x2-x1); theta_deg = theta / GIZA_DEG_TO_RAD; dr = sqrt(pow(x2-x1,2) + pow(y2-y1,2)); cairo_matrix_t mat; cairo_matrix_init_translate(&mat,x1,y1); cairo_matrix_rotate(&mat,theta); int oldTrans = _giza_get_trans (); _giza_set_trans (GIZA_TRANS_WORLD); double xch, ych; giza_get_character_size (GIZA_UNITS_WORLD, &xch, &ych); /* set major tick length in pixels */ currentTickL_l = Dev[id].fontExtents.max_x_advance * tickl; currentTickL_r = Dev[id].fontExtents.max_x_advance * tickr; double TickL_l_tmp = 0.; double TickL_r_tmp = 0.; /* convert to world coords */ cairo_device_to_user_distance (Dev[id].context, &TickL_l_tmp, ¤tTickL_l); cairo_device_to_user_distance (Dev[id].context, &TickL_r_tmp, ¤tTickL_r); currentTickL_l = -currentTickL_l; currentTickL_r = -currentTickL_r; _giza_draw_tick(mat,v,dr,currentTickL_l,currentTickL_r); /* write the label */ x = dr * v; y = ych * disp; cairo_matrix_transform_point (&mat,&x,&y); giza_ptext (x, y, theta_deg + angle, 0.5, label); /*_giza_stroke ();*/ /* stroke all the paths */ int lc; giza_get_line_cap (&lc); giza_set_line_cap (CAIRO_LINE_CAP_SQUARE); _giza_stroke (); giza_set_line_cap (lc); _giza_set_trans (oldTrans); giza_flush_device (); /* Restore clipping */ giza_set_viewport (Dev[id].VP.xmin, Dev[id].VP.xmax, Dev[id].VP.ymin, Dev[id].VP.ymax); } /** * Drawing: giza_tick_float * * Synopsis: Same functionality as giza_tick but takes floats instead of doubles. * * See Also: giza_tick */ void giza_tick_float (float x1, float y1, float x2, float y2, float v, float tickl, float tickr, float disp, float angle, const char *label) { if (!_giza_check_device_ready ("giza_tick")) return; giza_tick((double) x1, (double) y1, (double) x2, (double) y2, (double) v, (double) tickl, (double) tickr, (double) disp, (double) angle, label); } /** * Internal functionality for giza_tick, also used by giza_axis */ void _giza_draw_tick(cairo_matrix_t mat, double ratio, double dr, double currentTickL_l, double currentTickL_r) { double x,y,xpt,ypt; /* set location of tick start and end in non-rotated coords */ x = dr * ratio; xpt = x; y = -currentTickL_l; ypt = currentTickL_r; /* rotate and translate */ cairo_matrix_transform_point (&mat,&x,&y); cairo_matrix_transform_point (&mat,&xpt,&ypt); /* draw the tick(s) along the axis */ cairo_move_to (Dev[id].context, x, y); cairo_line_to (Dev[id].context, xpt, ypt); } giza-1.5.0/src/giza-token-remapper.h000066400000000000000000000102101477367113400172770ustar00rootroot00000000000000/* * In order to support aliases (e.g. \Sun for Hershey symbol "\(2281)", * \alpha for "\ga", \rm for roman font ("\fr")) create a mapping * from "\" => { , } */ typedef struct _giza_remapped_token_entry { int const token; char const* text; } giza_remapped_token_entry; typedef struct _giza_remapped_tokens_entry { char const* text; giza_remapped_token_entry const replacement; } giza_remapped_tokens_entry; static giza_remapped_tokens_entry giza_remappable_tokens[] = { /* solar system */ {"Sun", {GIZA_TOKEN_HERSHEY, "2281" }}, {"Mercury", {GIZA_TOKEN_HERSHEY, "2282" }}, {"Venus", {GIZA_TOKEN_HERSHEY, "2283" }}, {"Earth", {GIZA_TOKEN_HERSHEY, "2284" }}, {"Mars", {GIZA_TOKEN_HERSHEY, "2285" }}, {"Jupiter", {GIZA_TOKEN_HERSHEY, "2286" }}, {"Saturn", {GIZA_TOKEN_HERSHEY, "2287" }}, {"Uranus", {GIZA_TOKEN_HERSHEY, "2288" }}, {"Neptune", {GIZA_TOKEN_HERSHEY, "2289" }}, {"Pluto", {GIZA_TOKEN_HERSHEY, "2290" }}, {"Moon", {GIZA_TOKEN_HERSHEY, "2291" }}, /* mathematical symbols */ {"." , {GIZA_TOKEN_TEXT , "\u22c5" }}, {"x", {GIZA_TOKEN_TEXT , "\u00d7" }}, {"times", {GIZA_TOKEN_TEXT , "\u00d7" }}, {"int", {GIZA_TOKEN_HERSHEY, "2268" }}, {"nabla", {GIZA_TOKEN_HERSHEY, "2266" }}, {"odot" , {GIZA_TOKEN_MARKER , "9" }}, /* misc */ {"A", {GIZA_TOKEN_TEXT , "\u212b" }}, /* Angstrom */ /* fonts */ {"rm" , {GIZA_TOKEN_FONT , "r" }}, {"it" , {GIZA_TOKEN_FONT , "i" }}, {"cal" , {GIZA_TOKEN_FONT , "s" }}, {"bf" , {GIZA_TOKEN_FONT , "b" }}, /* Greek lower + upper */ {"alpha", {GIZA_TOKEN_GREEK , "a" }}, {"beta", {GIZA_TOKEN_GREEK , "b" }}, {"gamma", {GIZA_TOKEN_GREEK , "g" }}, {"delta", {GIZA_TOKEN_GREEK , "d" }}, {"epsilon", {GIZA_TOKEN_GREEK , "e" }}, {"zeta", {GIZA_TOKEN_GREEK , "z" }}, {"eta", {GIZA_TOKEN_GREEK , "y" }}, {"theta", {GIZA_TOKEN_GREEK , "h" }}, {"iota", {GIZA_TOKEN_GREEK , "i" }}, {"kappa", {GIZA_TOKEN_GREEK , "k" }}, {"lambda", {GIZA_TOKEN_GREEK , "l" }}, {"mu", {GIZA_TOKEN_GREEK , "m" }}, {"nu", {GIZA_TOKEN_GREEK , "n" }}, {"xi", {GIZA_TOKEN_GREEK , "c" }}, {"omicron", {GIZA_TOKEN_GREEK , "o" }}, {"pi", {GIZA_TOKEN_GREEK , "p" }}, {"rho", {GIZA_TOKEN_GREEK , "r" }}, {"sigma", {GIZA_TOKEN_GREEK , "s" }}, {"tau", {GIZA_TOKEN_GREEK , "t" }}, {"phi", {GIZA_TOKEN_GREEK , "f" }}, {"chi", {GIZA_TOKEN_GREEK , "x" }}, {"psi", {GIZA_TOKEN_GREEK , "q" }}, {"omega", {GIZA_TOKEN_GREEK , "w" }}, {"Alpha", {GIZA_TOKEN_GREEK , "A" }}, {"Beta", {GIZA_TOKEN_GREEK , "B" }}, {"Gamma", {GIZA_TOKEN_GREEK , "G" }}, {"Delta", {GIZA_TOKEN_GREEK , "D" }}, {"Epsilon", {GIZA_TOKEN_GREEK , "E" }}, {"Zeta", {GIZA_TOKEN_GREEK , "Z" }}, {"Eta", {GIZA_TOKEN_GREEK , "Y" }}, {"Theta", {GIZA_TOKEN_GREEK , "H" }}, {"Iota", {GIZA_TOKEN_GREEK , "I" }}, {"Kappa", {GIZA_TOKEN_GREEK , "K" }}, {"Lambda", {GIZA_TOKEN_GREEK , "L" }}, {"Mu", {GIZA_TOKEN_GREEK , "M" }}, {"Nu", {GIZA_TOKEN_GREEK , "N" }}, {"Xi", {GIZA_TOKEN_GREEK , "C" }}, {"Omicron", {GIZA_TOKEN_GREEK , "O" }}, {"Pi", {GIZA_TOKEN_GREEK , "P" }}, {"Rho", {GIZA_TOKEN_GREEK , "R" }}, {"Sigma", {GIZA_TOKEN_GREEK , "S" }}, {"Tau", {GIZA_TOKEN_GREEK , "T" }}, {"Phi", {GIZA_TOKEN_GREEK , "F" }}, {"Chi", {GIZA_TOKEN_GREEK , "X" }}, {"Psi", {GIZA_TOKEN_GREEK , "Q" }}, {"Omega", {GIZA_TOKEN_GREEK , "W" }}, /* leave as last; it's a sentinel */ {NULL, {-1, NULL}} }; giza-1.5.0/src/giza-transforms-private.h000066400000000000000000000020501477367113400202170ustar00rootroot00000000000000/* giza - a scientific plotting library built on cairo * * Copyright (c) 2010 James Wetter and Daniel Price * Copyright (c) 2010-2012 Daniel Price * * This library is free software; and you are welcome to redistribute * it under the terms of the GNU General Public License * (GPL, see LICENSE file for details) and the provision that * this notice remains intact. If you modify this file, please * note section 5a) of the GPLv3 states that: * * a) The work must carry prominent notices stating that you modified * it, and giving a relevant date. * * This software is distributed "AS IS", with ABSOLUTELY NO WARRANTY. * See the GPL for specific language governing rights and limitations. * * The Original code is the giza plotting library. * * Contributor(s): * James Wetter * Daniel Price (main contact) */ #define GIZA_TRANS_IDEN 0 #define GIZA_TRANS_NORM 1 #define GIZA_TRANS_WORLD 2 #define GIZA_TRANS_FONT 3 void _giza_set_trans (int trans); int _giza_get_trans (void); giza-1.5.0/src/giza-transforms.c000066400000000000000000000042601477367113400165470ustar00rootroot00000000000000/* giza - a scientific plotting library built on cairo * * Copyright (c) 2010 James Wetter and Daniel Price * Copyright (c) 2010-2012 Daniel Price * * This library is free software; and you are welcome to redistribute * it under the terms of the GNU General Public License * (GPL, see LICENSE file for details) and the provision that * this notice remains intact. If you modify this file, please * note section 5a) of the GPLv3 states that: * * a) The work must carry prominent notices stating that you modified * it, and giving a relevant date. * * This software is distributed "AS IS", with ABSOLUTELY NO WARRANTY. * See the GPL for specific language governing rights and limitations. * * The Original code is the giza plotting library. * * Contributor(s): * James Wetter * Daniel Price (main contact) */ #include "giza-private.h" #include "giza-transforms-private.h" #include "giza-io-private.h" #include "giza-window-private.h" /** * Sets the transform currently applied to the cairo context. * * Input: * -trans :- the integer representation of the transform to be applied. */ void _giza_set_trans (int trans) { if (!_giza_check_device_ready ("_giza_set_trans")) return; cairo_matrix_t mat; switch (trans) { case GIZA_TRANS_IDEN: cairo_identity_matrix (Dev[id].context); break; case GIZA_TRANS_NORM: cairo_set_matrix (Dev[id].context, &(Dev[id].Win.normCoords)); break; case GIZA_TRANS_WORLD: cairo_set_matrix (Dev[id].context, &(Dev[id].Win.userCoords)); break; case GIZA_TRANS_FONT: cairo_get_font_matrix (Dev[id].context, &mat); cairo_set_matrix (Dev[id].context, &mat); break; default: _giza_error ("_giza_set_trans", "Internal Error: Invalid Transformation."); return; break; } Dev[id].CurrentTrans = trans; } /** * Returns the transform of the transform currently applied to the * cairo context. * * Return: * -returns the integer value of the current transform. */ int _giza_get_trans (void) { if (!_giza_check_device_ready ("_giza_get_trans")) return -1; return Dev[id].CurrentTrans; } giza-1.5.0/src/giza-vector.c000066400000000000000000000175071477367113400156630ustar00rootroot00000000000000/* giza - a scientific plotting library built on cairo * * Copyright (c) 2010 James Wetter and Daniel Price * Copyright (c) 2010-2012 Daniel Price * * This library is free software; and you are welcome to redistribute * it under the terms of the GNU General Public License * (GPL, see LICENSE file for details) and the provision that * this notice remains intact. If you modify this file, please * note section 5a) of the GPLv3 states that: * * a) The work must carry prominent notices stating that you modified * it, and giving a relevant date. * * This software is distributed "AS IS", with ABSOLUTELY NO WARRANTY. * See the GPL for specific language governing rights and limitations. * * The Original code is the giza plotting library. * * Contributor(s): * James Wetter * Daniel Price (main contact) */ #include "giza-io-private.h" #include "giza-private.h" #include "giza-transforms-private.h" #include #include /** * Drawing: giza_vector * * Synopsis: Plot of vector data. * * Input: * -n :- The dimensions of data in the x-direction * -m :- The dimensions of data in the y-direction * -horizontal :- The x-component of the data to be plotted * -vertical :- The y-component of the data to be plotted * -i1 :- The inclusive range of data to render in the x dimension. * -i2 :- The inclusive range of data to render in the x dimension. * -j1 :- The inclusive range of data to render in the y direction * -j2 :- The inclusive range of data to render in the y direction * -scale :- scaling factor for arrow lengths (0 = automatic) * -position :- justification of vector arrow with respect to pixel (0=left, 0.5=centred) * -affine :- The affine transformation matrix that will be applied to the data. * * See Also: giza_vector_float, giza_arrow, giza_set_arrow_style */ void giza_vector (int n, int m, const double* horizontal, const double* vertical, int i1, int i2, int j1, int j2, double scale, int position, const double* affine, double blank) { if (!_giza_check_device_ready ("giza_vector")) return; /* Check ranges */ if (i1 < 0 || i2 >= n || i1 > i2) { _giza_error ("giza_vector", "invalid index range for horizontal values"); return; } if (j1 < 0 || j2 >= m || j1 > j2) { _giza_error ("giza_vector", "invalid index range for vertical values"); return; } int i, j; double x1, x2, y1, y2; cairo_matrix_t mat; cairo_matrix_init (&mat, affine[0], affine[1], affine[2], affine[3], affine[4], affine[5]); double dscale = scale; /* Find the scaling factor */ if (fabs (dscale) < GIZA_ZERO_DOUBLE) { for (j = j1; j <= j2; j++) { for (i = i1; i <= i2; i++) { if (!(_giza_equal(horizontal[j*n+i],blank) && _giza_equal(vertical[j*n+i],blank))) { double tmp = sqrt (horizontal[j*n+i] * horizontal[j*n+i] + vertical[j*n+i] * vertical[j*n+i]); if (tmp > dscale) dscale = tmp; } } } if (fabs (dscale) < GIZA_ZERO_DOUBLE) { return; } double dx2 = affine[0]*affine[0] + affine[1]*affine[1]; double dy2 = affine[2]*affine[2] + affine[3]*affine[3]; if (dx2 < dy2) { dscale = sqrt(dx2)/dscale; } else { dscale = sqrt(dy2)/dscale; } } int oldBuf; giza_get_buffering(&oldBuf); giza_begin_buffer (); /* Draw the arrows! */ double x, y; for (j = j1; j <= j2; j++) { for (i = i1; i <= i2; i++) { if (!(_giza_equal(horizontal[j*n+i],blank) && _giza_equal(vertical[j*n+i],blank))) { x = (double) i + 0.5; y = (double) j + 0.5; cairo_matrix_transform_point (&mat, &x, &y); if (position < 0) { x2 = x; y2 = y; x1 = x2 - horizontal[j*n+i] * dscale; y1 = y2 - vertical[j*n+i] * dscale; } else if (_giza_equal(position,0.)) { x2 = x + 0.5 * horizontal[j*n+i] * dscale; y2 = y + 0.5 * vertical[j*n+i] * dscale; x1 = x2 - horizontal[j*n+i] * dscale; y1 = y2 - vertical[j*n+i] * dscale; } else { x1 = x; y1 = y; x2 = x1 + horizontal[j*n+i] * dscale; y2 = y1 + vertical[j*n+i] * dscale; } giza_arrow (x1, y1, x2, y2); } } } if (!oldBuf) giza_end_buffer (); giza_flush_device (); } /** * Drawing: giza_vector_float * * Synopsis: Same as giza_vector but takes floats * * See Also: giza_vector, giza_arrow, giza_set_arrow_style * */ void giza_vector_float (int n, int m, const float* horizontal, const float* vertical, int i1, int i2, int j1, int j2, float scale, int position, const float* affine, float blank) { if (!_giza_check_device_ready ("giza_vector")) return; /* Check ranges */ if (i1 < 0 || i2 >= n || i1 > i2) { _giza_error ("giza_vector", "invalid index range for horizontal values"); return; } if (j1 < 0 || j2 >= m || j1 > j2) { _giza_error ("giza_vector", "invalid index range for vertical values"); return; } int i, j; double x1, x2, y1, y2; cairo_matrix_t mat; cairo_matrix_init (&mat, affine[0], affine[1], affine[2], affine[3], affine[4], affine[5]); /* Find the scaling factor */ double dscale = (double) scale; if (fabs (scale) < GIZA_ZERO_FLOAT) { for (j = j1; j <= j2; j++) { for (i = i1; i <= i2; i++) { if (!(_giza_equal(horizontal[j*n+i],blank) && _giza_equal(vertical[j*n+i],blank))) { double tmp = sqrt (horizontal[j*n+i] * horizontal[j*n+i] + vertical[j*n+i] * vertical[j*n+i]); if (tmp > dscale) dscale = tmp; } } } if (fabs (dscale) < GIZA_ZERO_DOUBLE) { return; } float dx2 = affine[0]*affine[0] + affine[1]*affine[1]; float dy2 = affine[2]*affine[2] + affine[3]*affine[3]; if (dx2 < dy2) { dscale = sqrt(dx2)/dscale; } else { dscale = sqrt(dy2)/dscale; } } int oldBuf; giza_get_buffering (&oldBuf); giza_begin_buffer (); /* Draw the arrows! */ double x, y; for (j = j1; j <= j2; j++) { for (i = i1; i <= i2; i++) { if (!(_giza_equal(horizontal[j*n+i],blank) && _giza_equal(vertical[j*n+i],blank))) { x = (double) i + 0.5; y = (double) j + 0.5; cairo_matrix_transform_point (&mat, &x, &y); if (position < 0) { x2 = x; y2 = y; x1 = x2 - horizontal[j*n+i] * dscale; y1 = y2 - vertical[j*n+i] * dscale; } else if (_giza_equal(position,0.)) { x2 = x + 0.5 * horizontal[j*n+i] * dscale; y2 = y + 0.5 * vertical[j*n+i] * dscale; x1 = x2 - horizontal[j*n+i] * dscale; y1 = y2 - vertical[j*n+i] * dscale; } else { x1 = x; y1 = y; x2 = x1 + horizontal[j*n+i] * dscale; y2 = y1 + vertical[j*n+i] * dscale; } giza_arrow (x1, y1, x2, y2); } } } if (!oldBuf) giza_end_buffer (); giza_flush_device (); } giza-1.5.0/src/giza-version.c000066400000000000000000000027201477367113400160350ustar00rootroot00000000000000/* giza - a scientific plotting library built on cairo * * Copyright (c) 2010 James Wetter and Daniel Price * Copyright (c) 2010-2013 Daniel Price * * This library is free software; and you are welcome to redistribute * it under the terms of the GNU General Public License * (GPL, see LICENSE file for details) and the provision that * this notice remains intact. If you modify this file, please * note section 5a) of the GPLv3 states that: * * a) The work must carry prominent notices stating that you modified * it, and giving a relevant date. * * This software is distributed "AS IS", with ABSOLUTELY NO WARRANTY. * See the GPL for specific language governing rights and limitations. * * The Original code is the giza plotting library. * * Contributor(s): * James Wetter * Daniel Price (main contact) */ #include /** * Settings: giza_version * * Synopsis: Returns the giza version. * Note that version information can also be * obtained using the header variables GIZA_VERSION_STRING, * GIZA_VERSION_MAJOR, GIZA_VERSION_MINOR and GIZA_VERSION_MICRO. * These are available in the Fortran interface also. * * Output: * -major :- major version number * -minor :- minor version number * -micro :- micro version number * */ void giza_version (int *major, int *minor, int *micro) { *major = GIZA_VERSION_MAJOR; *minor = GIZA_VERSION_MINOR; *micro = GIZA_VERSION_MICRO; } giza-1.5.0/src/giza-version.h.in000066400000000000000000000002701477367113400164450ustar00rootroot00000000000000#define GIZA_VERSION_MAJOR @GIZA_VERSION_MAJOR@ #define GIZA_VERSION_MINOR @GIZA_VERSION_MINOR@ #define GIZA_VERSION_MICRO @GIZA_VERSION_MICRO@ #define GIZA_VERSION_STRING "@VERSION@" giza-1.5.0/src/giza-viewport-private.h000066400000000000000000000017711477367113400177110ustar00rootroot00000000000000/* giza - a scientific plotting library built on cairo * * Copyright (c) 2010 James Wetter and Daniel Price * Copyright (c) 2010-2012 Daniel Price * * This library is free software; and you are welcome to redistribute * it under the terms of the GNU General Public License * (GPL, see LICENSE file for details) and the provision that * this notice remains intact. If you modify this file, please * note section 5a) of the GPLv3 states that: * * a) The work must carry prominent notices stating that you modified * it, and giving a relevant date. * * This software is distributed "AS IS", with ABSOLUTELY NO WARRANTY. * See the GPL for specific language governing rights and limitations. * * The Original code is the giza plotting library. * * Contributor(s): * James Wetter * Daniel Price (main contact) */ void _giza_get_default_viewport (double *xmin, double *xmax, double *ymin, double *ymax); giza-1.5.0/src/giza-viewport.c000066400000000000000000000205361477367113400162340ustar00rootroot00000000000000/* giza - a scientific plotting library built on cairo * * Copyright (c) 2010 James Wetter and Daniel Price * Copyright (c) 2010-2014 Daniel Price * * This library is free software; and you are welcome to redistribute * it under the terms of the GNU General Public License * (GPL, see LICENSE file for details) and the provision that * this notice remains intact. If you modify this file, please * note section 5a) of the GPLv3 states that: * * a) The work must carry prominent notices stating that you modified * it, and giving a relevant date. * * This software is distributed "AS IS", with ABSOLUTELY NO WARRANTY. * See the GPL for specific language governing rights and limitations. * * The Original code is the giza plotting library. * * Contributor(s): * James Wetter * Daniel Price (main contact) */ #include "giza-private.h" #include "giza-viewport-private.h" #include "giza-io-private.h" #include "giza-transforms-private.h" #include "giza-window-private.h" #include #include /** * Settings: giza_set_viewport * * Synopsis: Changes the size and position of the viewport, all arguments are in * normalised device coordinates. The viewport is the region of the * device that can be drawn to. * * Input: * -xleft :- The x coordinate of the left edge of the viewport * -xright :- The x coordinate of the right edge of the viewport * -ybottom :- The y coordinate of the bottom edge of the viewport * -ytop :- The y coordinate of the top edge of the viewport */ void giza_set_viewport (double xleft, double xright, double ybottom, double ytop) { double xmin, xmax, ymin, ymax; if (!_giza_check_device_ready ("giza_set_viewport")) return; if (_giza_equal(xleft,xright) || _giza_equal(ybottom,ytop)) { printf("giza_viewport: xmin %f xmax %f ymin %f ymax %f \n",xleft,xright,ybottom,ytop); _giza_warning ("giza_set_viewport", "Invalid arguments, using default viewport"); _giza_get_default_viewport(&Dev[id].VP.xmin,&Dev[id].VP.xmax,&Dev[id].VP.ymin,&Dev[id].VP.ymax); xmin = Dev[id].VP.xmin; xmax = Dev[id].VP.xmax; ymin = Dev[id].VP.ymin; ymax = Dev[id].VP.ymax; } else { if (xleft > xright) { xmin = xright; xmax = xleft; } else { xmin = xleft; xmax = xright; } if (ybottom > ytop) { ymin = ytop; ymax = ybottom; } else { ymin = ybottom; ymax = ytop; } Dev[id].VP.xmin = xmin; Dev[id].VP.xmax = xmax; Dev[id].VP.ymin = ymin; Dev[id].VP.ymax = ymax; } _giza_set_trans (GIZA_TRANS_NORM); cairo_reset_clip (Dev[id].context); double x0 = (Dev[id].ix - 1)*Dev[id].panelwidth/Dev[id].width; double y0 = (Dev[id].ny - Dev[id].iy)*Dev[id].panelheight/Dev[id].height; double xfac = Dev[id].panelwidth/Dev[id].width; double yfac = Dev[id].panelheight/Dev[id].height; cairo_rectangle (Dev[id].context, xmin*xfac + x0, ymin*yfac + y0, (xmax - xmin)*xfac, (ymax - ymin)*yfac); int clip; giza_get_clipping(&clip); if (clip) cairo_clip (Dev[id].context); giza_set_window(Dev[id].Win.xmin,Dev[id].Win.xmax, Dev[id].Win.ymin,Dev[id].Win.ymax); } /** * Settings: giza_set_viewport_float * * Synopsis: Same functionality as giza_set_viewport but takes floats * * See Also: giza_set_viewport */ void giza_set_viewport_float (float xleft, float xright, float ybottom, float ytop) { giza_set_viewport ((double) xleft, (double) xright, (double) ybottom, (double) ytop); } /** * Settings: giza_get_viewport * * Synopsis: Returns the viewport size and position. * * Input: * -units :- specify the units to return values in. * -x1 :- set to x-coord of upper-left corner * -x2 :- set to x-coord of lower-right corner * -y1 :- set to y-coord of upper-left corner * -y2 :- set to y-coord of lower-right corner * * Units: * -0 or GIZA_UNITS_NORMALIZED :- normalised device units * -1 or GIZA_UNITS_INCHES :- inches * -2 or GIZA_UNITS_MM :- mm * -3 or GIZA_UNITS_PIXELS :- pixels * -5 or GIZA_UNITS_DEVICE :- device units (pixels or points) * -default :- normalised device units */ void giza_get_viewport (int units, double *x1, double *x2, double *y1, double *y2) { if(!_giza_check_device_ready("giza_get_viewport")) { *x1 = 0.; *x2 = 1.; *y1 = 0; *y2 = 1.; /* avoid compiler warning */ return; } *x1 = (Dev[id].VP.xmin); *x2 = (Dev[id].VP.xmax); *y1 = (Dev[id].VP.ymin); *y2 = (Dev[id].VP.ymax); double ymin = *y1; double ymax = *y2; int oldTrans = _giza_get_trans (); switch (units) { case GIZA_UNITS_NORMALIZED: break; case GIZA_UNITS_MM: case GIZA_UNITS_INCHES: case GIZA_UNITS_DEVICE: case GIZA_UNITS_PIXELS: _giza_set_trans (GIZA_TRANS_NORM); cairo_user_to_device (Dev[id].context, x1, &ymin); cairo_user_to_device (Dev[id].context, x2, &ymax); /* y direction is done differently, because cairo counts 0,0 as the top left of the pixmap in device units, whereas we want it to be the bottom left, hence ymax->ymin and ymin->ymax (so our "device units" are slightly different to those of the cairo device) */ *y1 = ymax; *y2 = ymin; break; default: _giza_warning ("giza_get_viewport", "Invalid units, using normalised device units."); break; } /* Now convert to mm/inches */ switch (units) { case GIZA_UNITS_PIXELS: *x1 = *x1 / Dev[id].deviceUnitsPerPixel; *x2 = *x2 / Dev[id].deviceUnitsPerPixel; *y1 = *y1 / Dev[id].deviceUnitsPerPixel; *y2 = *y2 / Dev[id].deviceUnitsPerPixel; break; case GIZA_UNITS_MM: *x1 = *x1 / Dev[id].deviceUnitsPermm; *x2 = *x2 / Dev[id].deviceUnitsPermm; *y1 = *y1 / Dev[id].deviceUnitsPermm; *y2 = *y2 / Dev[id].deviceUnitsPermm; break; case GIZA_UNITS_INCHES: *x1 = *x1 / Dev[id].deviceUnitsPermm / 25.4; *x2 = *x2 / Dev[id].deviceUnitsPermm / 25.4; *y1 = *y1 / Dev[id].deviceUnitsPermm / 25.4; *y2 = *y2 / Dev[id].deviceUnitsPermm / 25.4; break; default: break; } _giza_set_trans (oldTrans); } /** * Settings: giza_get_viewport_float * * Synopsis: Same functionality as giza_get_viewport but uses floats * * See Also: giza_get_viewport */ void giza_get_viewport_float (int units, float *x1, float *x2, float *y1, float *y2) { double dx1, dx2, dy1,dy2; giza_get_viewport (units, &dx1, &dx2, &dy1, &dy2); *x1 = (float) dx1; *x2 = (float) dx2; *y1 = (float) dy1; *y2 = (float) dy2; } /** * Settings: giza_set_viewport_default * * Synopsis: Sets the viewport to the default settings * * See Also: giza_set_viewport * */ void giza_set_viewport_default (void) { if(!_giza_check_device_ready("giza_set_viewport_default")) return; double xmin, xmax, ymin, ymax; _giza_get_default_viewport(&xmin,&xmax,&ymin,&ymax); giza_set_viewport(xmin,xmax,ymin,ymax); } /** * Internal routine returning the default viewport size */ void _giza_get_default_viewport (double *xmin, double *xmax, double *ymin, double *ymax) { double xch, ych; giza_get_character_size(GIZA_UNITS_NORMALIZED, &xch, &ych); *xmin = 4.*ych; *xmax = *xmin + (1. - 8.*ych); *ymin = 4.*ych; *ymax = *ymin + (1. - 8.*ych); } /** * Settings: giza_set_viewport_inches * * Synopsis: Sets the viewport size in inches * * See Also: giza_set_viewport * */ void giza_set_viewport_inches (double xleftin, double xrightin, double ybottomin, double ytopin) { double xleft,xright,ybottom,ytop; double widthmm, heightmm; widthmm = Dev[id].width / Dev[id].deviceUnitsPermm; heightmm = Dev[id].height / Dev[id].deviceUnitsPermm; xleft = xleftin * 25.4 / widthmm; xright = xrightin * 25.4 / widthmm; ybottom = ybottomin * 25.4 / heightmm; ytop = ytopin * 25.4 / heightmm; giza_set_viewport(xleft,xright,ybottom,ytop); } /** * Settings: giza_set_viewport_inches_float * * Synopsis: Same as giza_set_viewport_inches but takes floats * * See Also: giza_set_viewport_inches * */ void giza_set_viewport_inches_float (float xleftin, float xrightin, float ybottomin, float ytopin) { giza_set_viewport_inches ((double) xleftin, (double) xrightin, (double) ybottomin, (double) ytopin); } giza-1.5.0/src/giza-warnings-private.h000066400000000000000000000016351477367113400176610ustar00rootroot00000000000000/* giza - a scientific plotting library built on cairo * * Copyright (c) 2010 James Wetter and Daniel Price * Copyright (c) 2010-2012 Daniel Price * * This library is free software; and you are welcome to redistribute * it under the terms of the GNU General Public License * (GPL, see LICENSE file for details) and the provision that * this notice remains intact. If you modify this file, please * note section 5a) of the GPLv3 states that: * * a) The work must carry prominent notices stating that you modified * it, and giving a relevant date. * * This software is distributed "AS IS", with ABSOLUTELY NO WARRANTY. * See the GPL for specific language governing rights and limitations. * * The Original code is the giza plotting library. * * Contributor(s): * James Wetter * Daniel Price (main contact) */ int _giza_get_warnings (void); giza-1.5.0/src/giza-warnings.c000066400000000000000000000027171477367113400162060ustar00rootroot00000000000000/* giza - a scientific plotting library built on cairo * * Copyright (c) 2010 James Wetter and Daniel Price * Copyright (c) 2010-2012 Daniel Price * * This library is free software; and you are welcome to redistribute * it under the terms of the GNU General Public License * (GPL, see LICENSE file for details) and the provision that * this notice remains intact. If you modify this file, please * note section 5a) of the GPLv3 states that: * * a) The work must carry prominent notices stating that you modified * it, and giving a relevant date. * * This software is distributed "AS IS", with ABSOLUTELY NO WARRANTY. * See the GPL for specific language governing rights and limitations. * * The Original code is the giza plotting library. * * Contributor(s): * James Wetter * Daniel Price (main contact) */ #include #include "giza-warnings-private.h" static int _giza_warnings = 1; /** * Settings: giza_start_warnings * * Synopsis: Warnings will be printed to stderr. * * See Also: giza_stop_warnings */ void giza_start_warnings (void) { _giza_warnings = 1; } /** * Settings: giza_stop_warnings * * Synopsis: Warnings will not be printed to stderr. * * See Also: giza_start_warnings */ void giza_stop_warnings (void) { _giza_warnings = 0; } /** * Returns 0 if warnings are on, returns 0 if warnings are off */ int _giza_get_warnings (void) { return _giza_warnings; } giza-1.5.0/src/giza-window-private.h000066400000000000000000000020521477367113400173320ustar00rootroot00000000000000/* giza - a scientific plotting library built on cairo * * Copyright (c) 2010 James Wetter and Daniel Price * Copyright (c) 2010-2012 Daniel Price * * This library is free software; and you are welcome to redistribute * it under the terms of the GNU General Public License * (GPL, see LICENSE file for details) and the provision that * this notice remains intact. If you modify this file, please * note section 5a) of the GPLv3 states that: * * a) The work must carry prominent notices stating that you modified * it, and giving a relevant date. * * This software is distributed "AS IS", with ABSOLUTELY NO WARRANTY. * See the GPL for specific language governing rights and limitations. * * The Original code is the giza plotting library. * * Contributor(s): * James Wetter * Daniel Price (main contact) */ #define GIZA_DEFAULT_WINDOW_X1 0.0 #define GIZA_DEFAULT_WINDOW_X2 1.0 #define GIZA_DEFAULT_WINDOW_Y1 0.0 #define GIZA_DEFAULT_WINDOW_Y2 1.0 void _giza_init_window (void); giza-1.5.0/src/giza-window.c000066400000000000000000000170431477367113400156630ustar00rootroot00000000000000/* giza - a scientific plotting library built on cairo * * Copyright (c) 2010 James Wetter and Daniel Price * Copyright (c) 2010-2014 Daniel Price * * This library is free software; and you are welcome to redistribute * it under the terms of the GNU General Public License * (GPL, see LICENSE file for details) and the provision that * this notice remains intact. If you modify this file, please * note section 5a) of the GPLv3 states that: * * a) The work must carry prominent notices stating that you modified * it, and giving a relevant date. * * This software is distributed "AS IS", with ABSOLUTELY NO WARRANTY. * See the GPL for specific language governing rights and limitations. * * The Original code is the giza plotting library. * * Contributor(s): * James Wetter * Daniel Price (main contact) */ #include "giza-private.h" #include "giza-window-private.h" #include "giza-io-private.h" #include "giza-transforms-private.h" #include "giza-viewport-private.h" #include #include /** * Settings: giza_set_window * * Synopsis: Sets the limits of the axis. * * Input: * -x1 :- the lowest value of the x axis * -x2 :- the highest value of the x axis * -y1 :- the lowest value of the y axis * -y2 :- the highest value of the y axis */ void giza_set_window (double x1, double x2, double y1, double y2) { if (!_giza_check_device_ready ("giza_set_window")) return; /* Check the input is valid */ if (_giza_equal(x2,x1) || _giza_equal(y2,y1)) { _giza_error ("giza_set_window", "Invalid arguments, reverting to default"); x1 = GIZA_DEFAULT_WINDOW_X1; x2 = GIZA_DEFAULT_WINDOW_X2; y1 = GIZA_DEFAULT_WINDOW_Y1; y2 = GIZA_DEFAULT_WINDOW_Y2; } giza_window_t Win; Win.xmin = x1; Win.xmax = x2; Win.ymin = y1; Win.ymax = y2; Win.normCoords = Dev[id].Win.normCoords; /* Transform to normalised device coords */ int oldTrans = _giza_get_trans (); _giza_set_trans (GIZA_TRANS_NORM); /* Transform from normalised device coords to world coords. */ /* Scaling */ double dxWin = (Win.xmax - Win.xmin); double dyWin = (Win.ymax - Win.ymin); double x0,y0,xfac,yfac; if (Dev[id].ix > 0 && Dev[id].iy > 0) { /* sanity check */ x0 = (Dev[id].ix - 1)*Dev[id].panelwidth/Dev[id].width; y0 = (Dev[id].ny - Dev[id].iy)*Dev[id].panelheight/Dev[id].height; } else { x0 = 0.; y0 = 0.; } xfac = Dev[id].panelwidth/Dev[id].width; yfac = Dev[id].panelheight/Dev[id].height; /*printf(" here nx = %i ny = %i ix = %i iy = %i xfac = %f yfac = %f\n", Dev[id].nx,Dev[id].ny,Dev[id].ix,Dev[id].iy,xfac,yfac);*/ double vpxmin = Dev[id].VP.xmin*xfac + x0; double vpxmax = Dev[id].VP.xmax*xfac + x0; double vpymin = Dev[id].VP.ymin*yfac + y0; double vpymax = Dev[id].VP.ymax*yfac + y0; double horiScale = (vpxmax - vpxmin) / dxWin; /* this is safe as we have already */ double vertScale = (vpymax - vpymin) / dyWin; /* checked x1 /= x2 and y1 /= y2 */ /* Translation: */ double horiTrans = vpxmin - Win.xmin * horiScale; double vertTrans = vpymin - Win.ymin * vertScale; cairo_matrix_init (&(Win.userCoords), horiScale, 0, 0, vertScale, horiTrans, vertTrans); cairo_matrix_multiply(&(Win.userCoords),&(Win.userCoords),&(Win.normCoords)); Dev[id].Win = Win; _giza_set_trans (oldTrans); } /** * Settings: giza_set_window_float * * Synopsis: Same functionality as giza_set_window but uses floats. * * See Also: giza_set_window */ void giza_set_window_float (float x1, float x2, float y1, float y2) { giza_set_window ((double) x1, (double) x2, (double) y1, (double) y2); } /** * Settings: giza_set_window_equal_scale * * Synopsis: Sets the window so the x axis ranges from x1 to x2 and y from y1 to y2, * then adjusts the view port to the largest possible size that that * allows the axis have equal scales. * * Input: * -x1 :- the lowest value of the x axis * -x2 :- the highest value of the x axis * -y1 :- the lowest value of the y axis * -y2 :- the highest value of the y axis */ void giza_set_window_equal_scale (double x1, double x2, double y1, double y2) { if (!_giza_check_device_ready ("giza_set_window_equal_scale")) return; /* Check the input is valid */ if (_giza_equal(x2,x1) || _giza_equal(y2,y1)) { _giza_error ("giza_set_window_equal_scale", "Invalid arguments, reverting to default"); x1 = GIZA_DEFAULT_WINDOW_X1; x2 = GIZA_DEFAULT_WINDOW_X2; y1 = GIZA_DEFAULT_WINDOW_Y1; y2 = GIZA_DEFAULT_WINDOW_Y2; } /* set xrange and yrange */ double yrange = fabs(y2 - y1); double xrange = fabs(x2 - x1); double scale, scalex, scaley, newWidth, newHeight; /* Scale is Device units per World coords. */ scaley = (Dev[id].VP.ymax - Dev[id].VP.ymin) * Dev[id].panelheight / yrange; scalex = (Dev[id].VP.xmax - Dev[id].VP.xmin) * Dev[id].panelwidth / xrange; if (scaley < scalex) { scale = scaley; } else { scale = scalex; } /* Find the position of the new viewport relative to the centre of the old */ /* Find the width of the new vp in normalised device coords */ if (Dev[id].panelwidth > 0) { newWidth = scale * xrange / Dev[id].panelwidth; Dev[id].VP.xmin = (Dev[id].VP.xmax + Dev[id].VP.xmin - newWidth) * 0.5; Dev[id].VP.xmax = Dev[id].VP.xmin + newWidth; } /* Find the height of the new vp */ if (Dev[id].panelheight > 0) { newHeight = scale * yrange / Dev[id].panelheight; Dev[id].VP.ymin = (Dev[id].VP.ymax + Dev[id].VP.ymin - newHeight) * 0.5; Dev[id].VP.ymax = Dev[id].VP.ymin + newHeight; } /* Set the window and vp */ giza_set_window (x1, x2, y1, y2); giza_set_viewport (Dev[id].VP.xmin, Dev[id].VP.xmax, Dev[id].VP.ymin, Dev[id].VP.ymax); } /** * Settings: giza_set_window_equal_scale_float * * Synopsis: Same functionality as giza_set_window_equal_scale but uses floats * * See Also: giza_set_window_equal_scale */ void giza_set_window_equal_scale_float (float x1, float x2, float y1, float y2) { giza_set_window_equal_scale ((double) x1, (double) x2, (double) y1, (double) y2); } /** * Settings: giza_get_window * * Synopsis: Query the boundaries of the window in world coords * * Input: * -x1 :- Gets set to the lowest value of the x axis * -x2 :- Gets set to the highest value of the x axis * -y1 :- Gets set to the lowest value of the y axis * -y2 :- Gets set to the highest value of the y axis */ void giza_get_window (double *x1, double *x2, double *y1, double *y2) { if(!_giza_check_device_ready("giza_get_window")) { *x1 = 0.; *x2 = 1.; *y1 = 0; *y2 = 1.; /* avoid compiler warning */ return; } *x1 = Dev[id].Win.xmin; *x2 = Dev[id].Win.xmax; *y1 = Dev[id].Win.ymin; *y2 = Dev[id].Win.ymax; } /** * Settings: giza_get_window_float * * Synopsis: Same functionality as giza_get_window but uses floats */ void giza_get_window_float (float *x1, float *x2, float *y1, float *y2) { if(!_giza_check_device_ready("giza_get_window_float")) return; double x1d, x2d, y1d, y2d; giza_get_window(&x1d,&x2d,&y1d,&y2d); *x1 = (float) x1d; *x2 = (float) x2d; *y1 = (float) y1d; *y2 = (float) y2d; } /** * Sets the window to the default (before viewport is set). Must be followed by * a call to set viewport, which in turn calls the set_window routine */ void _giza_init_window (void) { if(!_giza_check_device_ready("_giza_init_window")) return; Dev[id].Win.xmin = GIZA_DEFAULT_WINDOW_X1; Dev[id].Win.xmax = GIZA_DEFAULT_WINDOW_X2; Dev[id].Win.ymin = GIZA_DEFAULT_WINDOW_Y1; Dev[id].Win.ymax = GIZA_DEFAULT_WINDOW_Y2; } giza-1.5.0/src/giza.c000066400000000000000000000037601477367113400143570ustar00rootroot00000000000000/* giza - a scientific plotting library built on cairo * * Copyright (c) 2010 James Wetter and Daniel Price * Copyright (c) 2010-2012 Daniel Price * * This library is free software; and you are welcome to redistribute * it under the terms of the GNU General Public License * (GPL, see LICENSE file for details) and the provision that * this notice remains intact. If you modify this file, please * note section 5a) of the GPLv3 states that: * * a) The work must carry prominent notices stating that you modified * it, and giving a relevant date. * * This software is distributed "AS IS", with ABSOLUTELY NO WARRANTY. * See the GPL for specific language governing rights and limitations. * * The Original code is the giza plotting library. * * Contributor(s): * James Wetter * Daniel Price (main contact) */ #include "giza-io-private.h" #include #include "giza-private.h" #include /** * Checks if the currently selected device is open. * * Return value: * -1 if the currently selected device is open. * -0 if the currently selected device is not open * Input: * -source :- A string that should contain the name of * the function calling _giza_check_device_ready so it can * be included in an error message that will be printed * to stderr if no device is open. */ int _giza_check_device_ready (char *source) { if (id < 0 || id >= GIZA_MAX_DEVICES) { _giza_error(source, "No device open."); return 0; } else if (!Dev[id].deviceOpen) { _giza_error (source, "No device open."); return 0; } return 1; } int _giza_nint (double x) { if (x < 0) return (int) (x - 0.5); return (int) (x + 0.5); } int _giza_equal(double x1, double x2) { if (fabs(x1-x2) <= GIZA_TINY) { return 1; } else { return 0; } } void _giza_init(void) { Sets.autolog = 0; char *tmp = getenv ("GIZA_LOG"); if(tmp) { Sets.autolog = 1; } } giza-1.5.0/src/giza.h000066400000000000000000000431251477367113400143630ustar00rootroot00000000000000/* giza - a scientific plotting library built on cairo * * Copyright (c) 2010 James Wetter and Daniel Price * Copyright (c) 2010-2022 Daniel Price * * This library is free software; and you are welcome to redistribute * it under the terms of the GNU General Public License * (GPL, see LICENSE file for details) and the provision that * this notice remains intact. If you modify this file, please * note section 5a) of the GPLv3 states that: * * a) The work must carry prominent notices stating that you modified * it, and giving a relevant date. * * This software is distributed "AS IS", with ABSOLUTELY NO WARRANTY. * See the GPL for specific language governing rights and limitations. * * The Original code is the giza plotting library. * * Contributor(s): * James Wetter * Daniel Price (main contact) */ #include void giza_arrow (double x1, double y1, double x2, double y2); void giza_arrow_float (float x1, float y1, float x2, float y2); void giza_set_arrow_style (int fillStyle, double angle, double cutback); void giza_set_arrow_style_float (int fillStyle, float angle, float cutback); void giza_get_arrow_style (int *fillStyle, double *angle, double *cutback); void giza_get_arrow_style_float (int *fillStyle, float *angle, float *cutback); void giza_annotate (const char *side, double displacment, double coord, double justification, const char *string); void giza_annotate_float (const char *side, float displacment, float coord, float justification, const char *string); void giza_begin_autolog(void); void giza_end_autolog(void); void giza_axis (const char *opt, double x1, double y1, double x2, double y2, double v1, double v2, double step, int nsub, double dmajl, double dmajr, double fmin, double disp, double angle); void giza_axis_float (const char *opt, float x1, float y1, float x2, float y2, float v1, float v2, float step, int nsub, float dmajl, float dmajr, float fmin, float disp, float angle); int giza_band (int mode, int moveCursm, double xanc, double yanc, double *x, double *y, char *ch); int giza_band_float (int mode, int moveCurs, float xanc, float yanc, float *x, float *y, char *ch); void giza_get_band_style (int *ls, double *lw); void giza_set_band_style (int ls, double lw); void giza_box (const char *xopt, double xtick, int nxsub, const char *yopt, double ytick, int nysub); void giza_box_float (const char *xopt, float xtick, int nxsub, const char *yopt, float ytick, int nysub); void giza_box_time (const char *xopt, double xtick, int nxsub, const char *yopt, double ytick, int nysub); void giza_box_time_float (const char *xopt, float xtick, int nxsub, const char *yopt, float ytick, int nysub); void giza_begin_buffer (void); void giza_end_buffer (void); void giza_flush_buffer (void); void giza_get_buffering (int *buf); void giza_circle (double x, double y, double r); void giza_circle_float (float x, float y, float r); void giza_set_character_height (double ch); void giza_set_character_height_float (float ch); void giza_get_character_height (double *ch); void giza_get_character_height_float (float *ch); void giza_get_character_size (int units, double *heightx, double *heighty); void giza_get_character_size_float (int units, float *xch, float *ych); void giza_set_clipping (int clip); void giza_get_clipping (int *clip); void giza_colour_bar (const char *side, double disp, double width, double valMin, double valMax, const char *label); void giza_colour_bar_float (const char *side, float disp, float width, float valMin, float valMax, const char *label); void giza_set_colour_index (int ci); void giza_get_colour_index (int *ci); void giza_set_colour_index_range (int cimin, int cimax); void giza_get_colour_index_range (int *cimin, int *cimax); /*void giza_set_range_as_colour_table (int *cimin, int *cimax)*/ void giza_set_colour_palette(int palette); void giza_set_colour_representation (int ci, double red, double green, double blue); void giza_set_colour_representation_float (int ci, float red, float green, float blue); void giza_set_colour_representation_rgb (int ci, int red, int green, int blue); void giza_set_colour_representation_rgba (int ci, int red, int green, int blue, double alpha); void giza_set_colour_representation_rgba_float (int ci, int red, int green, int blue, float alpha); void giza_set_colour_representation_alpha (int ci, double red, double green, double blue, double alpha); void giza_set_colour_representation_alpha_float (int ci, float red, float green, float blue, float alpha); void giza_get_colour_representation (int ci, double *red, double *green, double *blue); void giza_get_colour_representation_float (int ci, float *red, float *green, float *blue); void giza_get_colour_representation_alpha (int ci, double *red, double *green, double *blue, double *alpha); void giza_get_colour_representation_alpha_float (int ci, float *red, float *green, float *blue, float *alpha); void giza_set_colour_representation_hls (int ci, double hue, double lightness, double saturation); void giza_set_colour_representation_hls_float (int ci, float hue, float lightness, float saturation); int giza_set_colour_table (const double *controlPoints, const double *red, const double *green, const double *blue, int n, double contrast, double brightness); int giza_set_colour_table_float (const float *controlPoints, const float *red, const float *green, const float *blue, int n, float contrast, float brightness); int giza_set_colour_table_gray (void); void giza_save_colour_table (void); void giza_restore_colour_table (void); void giza_rgb_from_table (double pos, double *red, double *green, double *blue); void giza_rgb_from_table_float (float pos, float *red, float *green, float *blue); void giza_contour (int sizex, int sizey, const double* data, int i1, int i2, int j1, int j2, int ncont, const double* cont, const double *affine); void giza_contour_float (int sizex, int sizey, const float* data, int i1, int i2, int j1, int j2, int ncont, const float* cont, const float *affine); void giza_get_current_point (double *xpt, double *ypt); void giza_get_current_point_float (float *xpt, float *ypt); void giza_print_device_list (void); int giza_open_device (const char *newDeviceName, const char *newPrefix); int giza_open_device_size (const char *newDeviceName, const char *newPrefix, double width, double height, int units); int giza_open_device_size_float (const char *newDeviceName, const char *newPrefix, float width, float height, int units); void giza_select_device (int devid); void giza_get_device_id (int *devid); void giza_flush_device (void); void giza_change_page (void); void giza_close_devices (void); void giza_close_device (void); int giza_query_device (const char *querytype, char *returnval, int* rlen); int giza_device_has_cursor (void); int giza_get_key_press (double *x, double *y, char *ch); int giza_get_key_press_float (float *x, float *y, char *ch); int giza_set_motion_callback (void (*func)(double *x, double *y, int *mode)); int giza_end_motion_callback (void); void giza_draw (double xpt, double ypt); void giza_draw_float (float xpt, float ypt); void giza_draw_background (void); void giza_set_environment (double xmin, double xmax, double ymin, double ymax, int just, int axis); void giza_set_environment_float (float xmin, float xmax, float ymin, float ymax, int just, int axis); void giza_error_bars (int dir, int n, const double *xpts, const double *ypts, const double *error, double term); void giza_error_bars_float (int dir, int n, const float *xpts, const float *ypts, const float *error, float term); void giza_error_bars_vert (int n, const double *xpts, const double *ypts, const double *ypts2, double term); void giza_error_bars_vert_float (int n, const float *xpts, const float *ypts, const float *ypts2, float term); void giza_error_bars_hori (int n, const double *xpts1, const double *xpts2, const double *ypts, double term); void giza_error_bars_hori_float (int n, const float *xpts1, const float *xpts2, const float *ypts, float term); void giza_set_fill (int fs); void giza_get_fill (int *fs); void giza_format_number (int mantissa, int power, int form, char *str, int maxchar); /// sets current device number format for giza_box() void giza_set_number_format(int fmt); void giza_function_x (double (*func) (double *x), int n, double xmin, double xmax, int flag); void giza_function_x_float (float (*func) (float *x), int n, float xmin, float xmax, int flag); void giza_function_y (double (*func) (double *y), int n, double ymin, double ymax, int flag); void giza_function_y_float (float (*func) (float *y), int n, float ymin, float ymax, int flag); void giza_function_t (double (*funcx) (double *t), double (*funcy) (double *t), int n, double ymin, double ymax, int flag); void giza_function_t_float (float (*funcx) (float *t), float (*funcy) (float *t), int n, float ymin, float ymax, int flag); void giza_get_surface_size (double *x1, double *x2, double *y1, double *y2); void giza_get_surface_size_float (float *x1, float *x2, float *y1, float *y2); void giza_set_hatching_style (double angle, double spacing, double phase); void giza_set_hatching_style_float (float angle, float spacing, float phase); void giza_get_hatching_style (double *angle, double *spacing, double *phase); void giza_get_hatching_style_float (float *angle, float *spacing, float *phase); void giza_histogram (int n, const double *dat, double min, double max, int nbin, int flag); void giza_histogram_float (int n, const float *dat, float min, float max, int nbin, int flag); void giza_histogram_binned (int n, const double *x, const double *dat, int centre); void giza_histogram_binned_float (int n, const float *x, const float *dat, int centre); void giza_label (const char *labelx, const char *labely, const char *title); void giza_line (int n, const double *xpts, const double *ypts); void giza_line_float (int n, const float *xpts, const float *ypts); void giza_set_line_style (int ls); void giza_get_line_style (int *ls); void giza_set_line_width (double lw); void giza_set_line_width_float (float lw); void giza_get_line_width (double *lw); void giza_get_line_width_float (float *lw); void giza_set_line_cap (int lc); void giza_get_line_cap (int *lc); void giza_mark_line (int maxpts, int *npts, double* xpts, double* ypts); void giza_mark_line_float (int maxpts, int *npts, float* xpts, float* ypts); void giza_mark_line_ordered (int maxpts, int *npts, double* xpts, double* ypts); void giza_mark_line_ordered_float (int maxpts, int *npts, float* xpts, float* ypts); void giza_mark_points (int maxpts, int *npts, double* xpts, double* ypts, int symbol); void giza_mark_points_float (int maxpts, int *npts, float* xpts, float* ypts, int symbol); void giza_mark_points_ordered (int maxpts, int *npts, double* xpts, double* ypts, int symbol); void giza_mark_points_ordered_float (int maxpts, int *npts, float* xpts, float* ypts, int symbol); void giza_move (double xpt, double ypt); void giza_move_float (float xpt, float ypt); void giza_set_paper_size (int units, double width, double height); void giza_set_paper_size_float (int units, float width, float height); void giza_get_paper_size (int units, double *width, double *height); void giza_get_paper_size_float (int units, float *width, float *height); void giza_points (int n, const double* x, const double* y, int symbol); void giza_points_float (int n, const float* x, const float* y, int symbol); void giza_single_point (double x, double y, int symbol); void giza_single_point_float (float x, float y, int symbol); void giza_polygon (int n, const double *xpts, const double *ypts); void giza_polygon_float (int n, const float *xpts, const float *ypts); void giza_print_id (void); void giza_start_prompting (void); void giza_stop_prompting (void); void giza_text (double x, double y, const char *text); void giza_text_float (float x, float y, const char *text); void giza_ptext (double x, double y, double angle, double just, const char *text); void giza_ptext_float (float x, float y, float angle, float just, const char *text); void giza_qtext (double x, double y, double angle, double just, const char *text, double xbox[4], double ybox[4]); void giza_qtext_float (float x, float y, float angle, float just, const char *text, float xbox[4], float ybox[4]); void giza_qtextlen (int units, const char *text, double *xlen, double *ylen); void giza_qtextlen_float (int units, const char *text, float *xlen, float *ylen); void giza_rectangle (double x1, double x2, double y1, double y2); void giza_rectangle_float (float x1, float x2, float y1, float y2); void giza_rectangle_rounded (double x1, double x2, double y1, double y2, double radius); void giza_rectangle_rounded_float (float x1, float x2, float y1, float y2, float radius); void giza_render (int sizex, int sizey, const double* data, int i1, int i2, int j1, int j2, double valMin, double valMax, int extend, int filter, const double *affine); void giza_render_float (int sizex, int sizey, const float* data, int i1, int i2, int j1, int j2, float valMin, float valMax, int extend, int filter, const float *affine); void giza_render_transparent (int sizex, int sizey, const double* data, int i1, int i2, int j1, int j2, double valMin, double valMax, int extend, int filter, const double *affine); void giza_render_transparent_float (int sizex, int sizey, const float* data, int i1, int i2, int j1, int j2, float valMin, float valMax, int extend, int filter, const float *affine); void giza_render_alpha (int sizex, int sizey, const double* data, const double* alpha, int i1, int i2, int j1, int j2, double valMin, double valMax, int extend, int filter, const double *affine); void giza_render_alpha_float (int sizex, int sizey, const float* data, const float* alpha, int i1, int i2, int j1, int j2, float valMin, float valMax, int extend, int filter, const float *affine); void giza_render_gray (int sizex, int sizey, const double* data, int i1, int i2, int j1, int j2, double valMin, double valMax, int extend, int filter, const double *affine); void giza_render_gray_float (int sizex, int sizey, const float* data, int i1, int i2, int j1, int j2, float valMin, float valMax, int extend, int filter, const float *affine); void giza_draw_pixels (int sizex, int sizey, const int* idata, int i1, int i2, int j1, int j2, double xmin, double xmax, double ymin, double ymax, int extend, int filter); void giza_draw_pixels_float (int sizex, int sizey, const int* idata, int i1, int i2, int j1, int j2, float xmin, float xmax, float ymin, float ymax, int extend, int filter); double giza_round (double x, int *nsub); float giza_round_float (float x, int *nsub); void giza_subpanel (int nx, int ny); void giza_set_panel (int ix, int iy); void giza_get_panel (int *ix, int *iy); void giza_set_font (const char *font); void giza_set_font_bold (const char *font); void giza_set_font_bold_italic (const char *font); void giza_set_font_italic (const char *font); void giza_get_font (char *font, int n); void giza_set_text_background (int colourIndex); void giza_get_text_background (int *colourIndex); void giza_tick_float (float x1, float y1, float x2, float y2, float v, float tickl, float tickr, float disp, float angle, const char *label); void giza_tick (double x1, double y1, double x2, double y2, double v, double tickl, double tickr, double disp, double angle, const char *label); void giza_vector (int n, int m, const double* horizontal, const double* vertical, int i1, int i2, int j1, int j2, double scale, int position, const double* affine, double blank); void giza_vector_float (int n, int m, const float* horizontal, const float* vertical, int i1, int i2, int j1, int j2, float scale, int position, const float* affine, float blank); void giza_set_viewport (double xleft, double xright, double ybottom, double ytop); void giza_set_viewport_float (float xleft, float xright, float ybottom, float ytop); void giza_set_viewport_default (void); void giza_get_viewport (int units, double *x1, double *x2, double *y1, double *y2); void giza_get_viewport_float (int units, float *x1, float *x2, float *y1, float *y2); void giza_set_viewport_inches (double xleftin, double xrightin, double ybottomin, double ytopin); void giza_set_viewport_inches_float (float xleftin, float xrightin, float ybottomin, float ytopin); void giza_version (int *major, int *minor, int *micro); void giza_start_warnings (void); void giza_stop_warnings (void); void giza_save (void); void giza_restore (void); void giza_set_window (double x1, double x2, double y1, double y2); void giza_set_window_float (float x1, float x2, float y1, float y2); void giza_set_window_equal_scale (double x1, double x2, double y1, double y2); void giza_set_window_equal_scale_float (float x1, float x2, float y1, float y2); void giza_get_window (double *x1, double *x2, double *y1, double *y2); void giza_get_window_float (float *x1, float *x2, float *y1, float *y2); void giza_set_image_transfer_function(int itf); void giza_get_image_transfer_function(int* itfp); giza-1.5.0/src/giza.pc.in000066400000000000000000000014061477367113400151370ustar00rootroot00000000000000# Process this file with autoconf to produce a pkg-config metadata file. # Copyright 2002-2015 Daniel Price # # This file is free software; as a special exception the author gives # unlimited permission to copy and/or distribute it, with or without # modifications, as long as this notice is preserved. # # This file is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY, to the extent permitted by law; without even the # implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. prefix=@prefix@ exec_prefix=@exec_prefix@ libdir=@libdir@ includedir=@includedir@ Name: Giza Description: A scientific plotting library built on cairo URL: http://giza.sourceforge.net Version: @VERSION@ Libs: -L${libdir} -lgiza Cflags: -I${includedir} giza-1.5.0/src/lex.yy.c000066400000000000000000002233641477367113400146610ustar00rootroot00000000000000 #line 2 "lex.yy.c" #define YY_INT_ALIGNED short int /* A lexical scanner generated by flex */ #define FLEX_SCANNER #define YY_FLEX_MAJOR_VERSION 2 #define YY_FLEX_MINOR_VERSION 6 #define YY_FLEX_SUBMINOR_VERSION 4 #if YY_FLEX_SUBMINOR_VERSION > 0 #define FLEX_BETA #endif /* First, we deal with platform-specific or compiler-specific issues. */ /* begin standard C headers. */ #include #include #include #include /* end standard C headers. */ /* flex integer type definitions */ #ifndef FLEXINT_H #define FLEXINT_H /* C99 systems have . Non-C99 systems may or may not. */ #if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L /* C99 says to define __STDC_LIMIT_MACROS before including stdint.h, * if you want the limit (max/min) macros for int types. */ #ifndef __STDC_LIMIT_MACROS #define __STDC_LIMIT_MACROS 1 #endif #include typedef int8_t flex_int8_t; typedef uint8_t flex_uint8_t; typedef int16_t flex_int16_t; typedef uint16_t flex_uint16_t; typedef int32_t flex_int32_t; typedef uint32_t flex_uint32_t; typedef uint64_t flex_uint64_t; #else typedef signed char flex_int8_t; typedef short int flex_int16_t; typedef int flex_int32_t; typedef unsigned char flex_uint8_t; typedef unsigned short int flex_uint16_t; typedef unsigned int flex_uint32_t; /* Limits of integral types. */ #ifndef INT8_MIN #define INT8_MIN (-128) #endif #ifndef INT16_MIN #define INT16_MIN (-32767-1) #endif #ifndef INT32_MIN #define INT32_MIN (-2147483647-1) #endif #ifndef INT8_MAX #define INT8_MAX (127) #endif #ifndef INT16_MAX #define INT16_MAX (32767) #endif #ifndef INT32_MAX #define INT32_MAX (2147483647) #endif #ifndef UINT8_MAX #define UINT8_MAX (255U) #endif #ifndef UINT16_MAX #define UINT16_MAX (65535U) #endif #ifndef UINT32_MAX #define UINT32_MAX (4294967295U) #endif #ifndef SIZE_MAX #define SIZE_MAX (~(size_t)0) #endif #endif /* ! C99 */ #endif /* ! FLEXINT_H */ /* begin standard C++ headers. */ /* TODO: this is always defined, so inline it */ #define yyconst const #if defined(__GNUC__) && __GNUC__ >= 3 #define yynoreturn __attribute__((__noreturn__)) #else #define yynoreturn #endif /* Returned upon end-of-file. */ #define YY_NULL 0 /* Promotes a possibly negative, possibly signed char to an * integer in range [0..255] for use as an array index. */ #define YY_SC_TO_UI(c) ((YY_CHAR) (c)) /* An opaque pointer. */ #ifndef YY_TYPEDEF_YY_SCANNER_T #define YY_TYPEDEF_YY_SCANNER_T typedef void* yyscan_t; #endif /* For convenience, these vars (plus the bison vars far below) are macros in the reentrant scanner. */ #define yyin yyg->yyin_r #define yyout yyg->yyout_r #define yyextra yyg->yyextra_r #define yyleng yyg->yyleng_r #define yytext yyg->yytext_r #define yylineno (YY_CURRENT_BUFFER_LVALUE->yy_bs_lineno) #define yycolumn (YY_CURRENT_BUFFER_LVALUE->yy_bs_column) #define yy_flex_debug yyg->yy_flex_debug_r /* Enter a start condition. This macro really ought to take a parameter, * but we do it the disgusting crufty way forced on us by the ()-less * definition of BEGIN. */ #define BEGIN yyg->yy_start = 1 + 2 * /* Translate the current start state into a value that can be later handed * to BEGIN to return to the state. The YYSTATE alias is for lex * compatibility. */ #define YY_START ((yyg->yy_start - 1) / 2) #define YYSTATE YY_START /* Action number for EOF rule of a given start state. */ #define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1) /* Special action meaning "start processing a new file". */ #define YY_NEW_FILE yyrestart( yyin , yyscanner ) #define YY_END_OF_BUFFER_CHAR 0 /* Size of default input buffer. */ #ifndef YY_BUF_SIZE #ifdef __ia64__ /* On IA-64, the buffer size is 16k, not 8k. * Moreover, YY_BUF_SIZE is 2*YY_READ_BUF_SIZE in the general case. * Ditto for the __ia64__ case accordingly. */ #define YY_BUF_SIZE 32768 #else #define YY_BUF_SIZE 16384 #endif /* __ia64__ */ #endif /* The state buf must be large enough to hold one state per character in the main buffer. */ #define YY_STATE_BUF_SIZE ((YY_BUF_SIZE + 2) * sizeof(yy_state_type)) #ifndef YY_TYPEDEF_YY_BUFFER_STATE #define YY_TYPEDEF_YY_BUFFER_STATE typedef struct yy_buffer_state *YY_BUFFER_STATE; #endif #ifndef YY_TYPEDEF_YY_SIZE_T #define YY_TYPEDEF_YY_SIZE_T typedef size_t yy_size_t; #endif #define EOB_ACT_CONTINUE_SCAN 0 #define EOB_ACT_END_OF_FILE 1 #define EOB_ACT_LAST_MATCH 2 #define YY_LESS_LINENO(n) #define YY_LINENO_REWIND_TO(ptr) /* Return all but the first "n" matched characters back to the input stream. */ #define yyless(n) \ do \ { \ /* Undo effects of setting up yytext. */ \ int yyless_macro_arg = (n); \ YY_LESS_LINENO(yyless_macro_arg);\ *yy_cp = yyg->yy_hold_char; \ YY_RESTORE_YY_MORE_OFFSET \ yyg->yy_c_buf_p = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \ YY_DO_BEFORE_ACTION; /* set up yytext again */ \ } \ while ( 0 ) #define unput(c) yyunput( c, yyg->yytext_ptr , yyscanner ) #ifndef YY_STRUCT_YY_BUFFER_STATE #define YY_STRUCT_YY_BUFFER_STATE struct yy_buffer_state { FILE *yy_input_file; char *yy_ch_buf; /* input buffer */ char *yy_buf_pos; /* current position in input buffer */ /* Size of input buffer in bytes, not including room for EOB * characters. */ int yy_buf_size; /* Number of characters read into yy_ch_buf, not including EOB * characters. */ yy_size_t yy_n_chars; /* Whether we "own" the buffer - i.e., we know we created it, * and can realloc() it to grow it, and should free() it to * delete it. */ int yy_is_our_buffer; /* Whether this is an "interactive" input source; if so, and * if we're using stdio for input, then we want to use getc() * instead of fread(), to make sure we stop fetching input after * each newline. */ int yy_is_interactive; /* Whether we're considered to be at the beginning of a line. * If so, '^' rules will be active on the next match, otherwise * not. */ int yy_at_bol; int yy_bs_lineno; /**< The line count. */ int yy_bs_column; /**< The column count. */ /* Whether to try to fill the input buffer when we reach the * end of it. */ int yy_fill_buffer; int yy_buffer_status; #define YY_BUFFER_NEW 0 #define YY_BUFFER_NORMAL 1 /* When an EOF's been seen but there's still some text to process * then we mark the buffer as YY_EOF_PENDING, to indicate that we * shouldn't try reading from the input source any more. We might * still have a bunch of tokens to match, though, because of * possible backing-up. * * When we actually see the EOF, we change the status to "new" * (via yyrestart()), so that the user can continue scanning by * just pointing yyin at a new input file. */ #define YY_BUFFER_EOF_PENDING 2 }; #endif /* !YY_STRUCT_YY_BUFFER_STATE */ /* We provide macros for accessing buffer states in case in the * future we want to put the buffer states in a more general * "scanner state". * * Returns the top of the stack, or NULL. */ #define YY_CURRENT_BUFFER ( yyg->yy_buffer_stack \ ? yyg->yy_buffer_stack[yyg->yy_buffer_stack_top] \ : NULL) /* Same as previous macro, but useful when we know that the buffer stack is not * NULL or when we need an lvalue. For internal use only. */ #define YY_CURRENT_BUFFER_LVALUE yyg->yy_buffer_stack[yyg->yy_buffer_stack_top] void yyrestart ( FILE *input_file , yyscan_t yyscanner ); void yy_switch_to_buffer ( YY_BUFFER_STATE new_buffer , yyscan_t yyscanner ); YY_BUFFER_STATE yy_create_buffer ( FILE *file, int size , yyscan_t yyscanner ); void yy_delete_buffer ( YY_BUFFER_STATE b , yyscan_t yyscanner ); void yy_flush_buffer ( YY_BUFFER_STATE b , yyscan_t yyscanner ); void yypush_buffer_state ( YY_BUFFER_STATE new_buffer , yyscan_t yyscanner ); void yypop_buffer_state ( yyscan_t yyscanner ); static void yyensure_buffer_stack ( yyscan_t yyscanner ); static void yy_load_buffer_state ( yyscan_t yyscanner ); static void yy_init_buffer ( YY_BUFFER_STATE b, FILE *file , yyscan_t yyscanner ); #define YY_FLUSH_BUFFER yy_flush_buffer( YY_CURRENT_BUFFER , yyscanner) YY_BUFFER_STATE yy_scan_buffer ( char *base, yy_size_t size , yyscan_t yyscanner ); YY_BUFFER_STATE yy_scan_string ( const char *yy_str , yyscan_t yyscanner ); YY_BUFFER_STATE yy_scan_bytes ( const char *bytes, yy_size_t len , yyscan_t yyscanner ); void *yyalloc ( yy_size_t , yyscan_t yyscanner ); void *yyrealloc ( void *, yy_size_t , yyscan_t yyscanner ); void yyfree ( void * , yyscan_t yyscanner ); #define yy_new_buffer yy_create_buffer #define yy_set_interactive(is_interactive) \ { \ if ( ! YY_CURRENT_BUFFER ){ \ yyensure_buffer_stack (yyscanner); \ YY_CURRENT_BUFFER_LVALUE = \ yy_create_buffer( yyin, YY_BUF_SIZE , yyscanner); \ } \ YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \ } #define yy_set_bol(at_bol) \ { \ if ( ! YY_CURRENT_BUFFER ){\ yyensure_buffer_stack (yyscanner); \ YY_CURRENT_BUFFER_LVALUE = \ yy_create_buffer( yyin, YY_BUF_SIZE , yyscanner); \ } \ YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \ } #define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol) /* Begin user sect3 */ #define yywrap(yyscanner) (/*CONSTCOND*/1) #define YY_SKIP_YYWRAP typedef flex_uint8_t YY_CHAR; typedef int yy_state_type; #define yytext_ptr yytext_r static yy_state_type yy_get_previous_state ( yyscan_t yyscanner ); static yy_state_type yy_try_NUL_trans ( yy_state_type current_state , yyscan_t yyscanner); static int yy_get_next_buffer ( yyscan_t yyscanner ); static void yynoreturn yy_fatal_error ( const char* msg , yyscan_t yyscanner ); /* Done after the current pattern has been matched and before the * corresponding action - sets up yytext. */ #define YY_DO_BEFORE_ACTION \ yyg->yytext_ptr = yy_bp; \ yyleng = (yy_size_t) (yy_cp - yy_bp); \ yyg->yy_hold_char = *yy_cp; \ *yy_cp = '\0'; \ yyg->yy_c_buf_p = yy_cp; #define YY_NUM_RULES 22 #define YY_END_OF_BUFFER 23 /* This struct is not used in this scanner, but its presence is necessary. */ struct yy_trans_info { flex_int32_t yy_verify; flex_int32_t yy_nxt; }; static const flex_int16_t yy_acclist[55] = { 0, 9, 9, 23, 21, 22, 22, 21, 22, 17, 21, 22, 18, 21, 22, 19, 21, 22, 20, 21, 22, 6, 22, 5, 6, 22, 9, 22, 9, 22, 12, 22, 11, 12, 22, 15, 22, 14, 15, 22, 7, 3, 2, 4, 13, 10, 1, 9, 9, 11, 16, 9, 16, 9, 8 } ; static const flex_int16_t yy_accept[45] = { 0, 1, 1, 1, 1, 1, 2, 3, 3, 3, 3, 3, 4, 6, 7, 9, 12, 15, 18, 21, 23, 26, 28, 30, 32, 35, 37, 40, 41, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 55 } ; static const YY_CHAR yy_ec[256] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 4, 1, 1, 1, 1, 1, 1, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 1, 1, 1, 1, 1, 1, 1, 6, 7, 6, 8, 6, 9, 10, 6, 11, 12, 6, 6, 13, 11, 6, 6, 6, 11, 11, 6, 14, 12, 6, 6, 6, 6, 1, 15, 1, 16, 17, 1, 6, 7, 6, 8, 6, 9, 10, 6, 11, 12, 6, 6, 13, 11, 6, 6, 6, 11, 11, 6, 14, 12, 6, 6, 6, 6, 18, 1, 19, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 } ; static const YY_CHAR yy_meta[20] = { 0, 1, 1, 1, 2, 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 1, 1, 1, 1 } ; static const flex_int16_t yy_base[51] = { 0, 0, 18, 36, 46, 0, 2, 6, 7, 57, 0, 24, 104, 104, 74, 104, 104, 104, 104, 104, 104, 0, 18, 104, 17, 104, 104, 104, 0, 0, 0, 0, 0, 0, 0, 0, 16, 104, 0, 9, 0, 9, 104, 104, 88, 91, 94, 97, 100, 7, 0 } ; static const flex_int16_t yy_def[51] = { 0, 44, 44, 45, 45, 46, 46, 47, 47, 43, 9, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 48, 48, 43, 43, 43, 43, 43, 49, 49, 49, 49, 49, 49, 49, 48, 48, 43, 50, 48, 50, 48, 43, 0, 43, 43, 43, 43, 43, 43, 43 } ; static const flex_int16_t yy_nxt[124] = { 0, 43, 13, 40, 13, 22, 13, 22, 13, 13, 38, 24, 24, 42, 41, 14, 15, 16, 17, 18, 13, 39, 37, 36, 43, 43, 43, 43, 43, 43, 43, 43, 43, 14, 15, 16, 17, 18, 13, 43, 43, 43, 43, 20, 43, 43, 43, 20, 13, 43, 43, 43, 43, 20, 43, 43, 43, 20, 25, 13, 25, 25, 25, 26, 26, 26, 26, 26, 26, 25, 26, 26, 25, 25, 25, 25, 25, 27, 43, 43, 28, 29, 30, 31, 32, 28, 28, 33, 34, 12, 12, 12, 19, 19, 19, 21, 21, 21, 23, 23, 23, 35, 43, 35, 11, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43 } ; static const flex_int16_t yy_chk[124] = { 0, 0, 1, 50, 5, 5, 6, 6, 7, 8, 49, 7, 8, 41, 39, 1, 1, 1, 1, 1, 2, 36, 24, 22, 11, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 3, 0, 0, 0, 0, 3, 0, 0, 0, 3, 4, 0, 0, 0, 0, 4, 0, 0, 0, 4, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 14, 0, 0, 14, 14, 14, 14, 14, 14, 14, 14, 14, 44, 44, 44, 45, 45, 45, 46, 46, 46, 47, 47, 47, 48, 0, 48, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43 } ; #define REJECT \ { \ *yy_cp = yyg->yy_hold_char; /* undo effects of setting up yytext */ \ yy_cp = yyg->yy_full_match; /* restore poss. backed-over text */ \ ++yyg->yy_lp; \ goto find_rule; \ } #define yymore() yymore_used_but_not_detected #define YY_MORE_ADJ 0 #define YY_RESTORE_YY_MORE_OFFSET #line 1 "giza-scanner.l" /* A re-entrant scanner to recursively print text */ /* Specify that it is re-entrant and doesn't use ywrap */ /* Include the header and define tokens */ #line 9 "giza-scanner.l" /* giza - a scientific plotting library built on cairo * * Copyright (c) 2010 James Wetter and Daniel Price * Copyright (c) 2010-2014 Daniel Price * * This library is free software; and you are welcome to redistribute * it under the terms of the GNU General Public License * (GPL, see LICENSE file for details) and the provision that * this notice remains intact. If you modify this file, please * note section 5a) of the GPLv3 states that: * * a) The work must carry prominent notices stating that you modified * it, and giving a relevant date. * * This software is distributed "AS IS", with ABSOLUTELY NO WARRANTY. * See the GPL for specific language governing rights and limitations. * * The Original code is the giza plotting library. * * Contributor(s): * James Wetter * Daniel Price (main contact) */ #include "giza-io-private.h" #include "giza-private.h" #include "giza-transforms-private.h" #include "giza-drivers-private.h" #include "giza-text-private.h" #include "giza-hershey-to-utf.h" #include "giza.h" #include #include #include #define GIZA_TOKEN_END 1 #define GIZA_TOKEN_SUPER 2 #define GIZA_TOKEN_SUB 3 #define GIZA_TOKEN_OB 4 #define GIZA_TOKEN_CB 5 #define GIZA_TOKEN_RAISE 8 #define GIZA_TOKEN_LOWER 9 #define GIZA_TOKEN_FONT 110 #define GIZA_TOKEN_HERSHEY 111 #define GIZA_TOKEN_MARKER 112 #define GIZA_TOKEN_GREEK 113 #define GIZA_TOKEN_BACKSPACE 120 #define GIZA_TOKEN_REMAP 121 #define GIZA_TOKEN_TEXT 130 /* the token remapper can only be included after the tokens have been defined */ #include "giza-token-remapper.h" /* Map single character to greek letter according to PGPLOT grsyds.f */ /* ABGDEZYHIKLMNCOPRSTUFXQWabgdezyhiklmncoprstufxqw */ static char const* const giza_greek_alphabet = "ABGDEZYHIKLMNCOPRSTUFXQWabgdezyhiklmncoprstufxqw"; static char const* const giza_greek_to_utf_data[] = { /* Upper case */ "\u0391", "\u0392", "\u0393", "\u0394", "\u0395", "\u0396", "\u0397", "\u0398", "\u0399", "\u039a", "\u039b", "\u039c", "\u039d", "\u039e", "\u039f", "\u03a0", "\u03a1", "\u03a3", "\u03a4", "\u03a5", "\u03a6", "\u03a7", "\u03a8", "\u03a9", /* and lower case */ "\u03b1", "\u03b2", "\u03b3", "\u03b4", "\u03b5", "\u03b6", "\u03b7", "\u03b8", "\u03b9", "\u03ba", "\u03bb", "\u03bc", "\u03bd", "\u03be", "\u03bf", "\u03c0", "\u03c1", "\u03c3", "\u03c4", "\u03c5", "\u03c6", "\u03c7", "\u03c8", "\u03c9" }; /* Assume the caller has verified that letter is a /valid/ greek letter! */ static char const* _giza_greek_to_utf(char letter); /* May return NULL if number is not a known Hershey symbol or the string in is not found in the remapped token lookup table */ static giza_hershey_to_utf_entry const* _giza_lookup_hershey(int number); static giza_remapped_token_entry const* _giza_remap_token(char const* special); #line 556 "lex.yy.c" #line 558 "lex.yy.c" #define INITIAL 0 #define FONT 1 #define HERSHEY 2 #define MARKER 3 #define GREEK 4 #ifndef YY_NO_UNISTD_H /* Special case for "unistd.h", since it is non-ANSI. We include it way * down here because we want the user's section 1 to have been scanned first. * The user has a chance to override it with an option. */ #include #endif #ifndef YY_EXTRA_TYPE #define YY_EXTRA_TYPE void * #endif /* Holds the entire state of the reentrant scanner. */ struct yyguts_t { /* User-defined. Not touched by flex. */ YY_EXTRA_TYPE yyextra_r; /* The rest are the same as the globals declared in the non-reentrant scanner. */ FILE *yyin_r, *yyout_r; size_t yy_buffer_stack_top; /**< index of top of stack. */ size_t yy_buffer_stack_max; /**< capacity of stack. */ YY_BUFFER_STATE * yy_buffer_stack; /**< Stack as an array. */ char yy_hold_char; yy_size_t yy_n_chars; yy_size_t yyleng_r; char *yy_c_buf_p; int yy_init; int yy_start; int yy_did_buffer_switch_on_eof; int yy_start_stack_ptr; int yy_start_stack_depth; int *yy_start_stack; yy_state_type yy_last_accepting_state; char* yy_last_accepting_cpos; int yylineno_r; int yy_flex_debug_r; yy_state_type *yy_state_buf; yy_state_type *yy_state_ptr; char *yy_full_match; int yy_lp; /* These are only needed for trailing context rules, * but there's no conditional variable for that yet. */ int yy_looking_for_trail_begin; int yy_full_lp; int *yy_full_state; char *yytext_r; int yy_more_flag; int yy_more_len; }; /* end struct yyguts_t */ static int yy_init_globals ( yyscan_t yyscanner ); int yylex_init (yyscan_t* scanner); int yylex_init_extra ( YY_EXTRA_TYPE user_defined, yyscan_t* scanner); /* Accessor methods to globals. These are made visible to non-reentrant scanners for convenience. */ int yylex_destroy ( yyscan_t yyscanner ); int yyget_debug ( yyscan_t yyscanner ); void yyset_debug ( int debug_flag , yyscan_t yyscanner ); YY_EXTRA_TYPE yyget_extra ( yyscan_t yyscanner ); void yyset_extra ( YY_EXTRA_TYPE user_defined , yyscan_t yyscanner ); FILE *yyget_in ( yyscan_t yyscanner ); void yyset_in ( FILE * _in_str , yyscan_t yyscanner ); FILE *yyget_out ( yyscan_t yyscanner ); void yyset_out ( FILE * _out_str , yyscan_t yyscanner ); yy_size_t yyget_leng ( yyscan_t yyscanner ); char *yyget_text ( yyscan_t yyscanner ); int yyget_lineno ( yyscan_t yyscanner ); void yyset_lineno ( int _line_number , yyscan_t yyscanner ); int yyget_column ( yyscan_t yyscanner ); void yyset_column ( int _column_no , yyscan_t yyscanner ); /* Macros after this point can all be overridden by user definitions in * section 1. */ #ifndef YY_SKIP_YYWRAP #ifdef __cplusplus extern "C" int yywrap ( yyscan_t yyscanner ); #else extern int yywrap ( yyscan_t yyscanner ); #endif #endif #ifndef YY_NO_UNPUT static void yyunput ( int c, char *buf_ptr , yyscan_t yyscanner); #endif #ifndef yytext_ptr static void yy_flex_strncpy ( char *, const char *, int , yyscan_t yyscanner); #endif #ifdef YY_NEED_STRLEN static int yy_flex_strlen ( const char * , yyscan_t yyscanner); #endif #ifndef YY_NO_INPUT #ifdef __cplusplus static int yyinput ( yyscan_t yyscanner ); #else static int input ( yyscan_t yyscanner ); #endif #endif /* Amount of stuff to slurp up with each read. */ #ifndef YY_READ_BUF_SIZE #ifdef __ia64__ /* On IA-64, the buffer size is 16k, not 8k */ #define YY_READ_BUF_SIZE 16384 #else #define YY_READ_BUF_SIZE 8192 #endif /* __ia64__ */ #endif /* Copy whatever the last rule matched to the standard output. */ #ifndef ECHO /* This used to be an fputs(), but since the string might contain NUL's, * we now use fwrite(). */ #define ECHO do { if (fwrite( yytext, (size_t) yyleng, 1, yyout )) {} } while (0) #endif /* Gets input and stuffs it into "buf". number of characters read, or YY_NULL, * is returned in "result". */ #ifndef YY_INPUT #define YY_INPUT(buf,result,max_size) \ if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \ { \ int c = '*'; \ yy_size_t n; \ for ( n = 0; n < max_size && \ (c = getc( yyin )) != EOF && c != '\n'; ++n ) \ buf[n] = (char) c; \ if ( c == '\n' ) \ buf[n++] = (char) c; \ if ( c == EOF && ferror( yyin ) ) \ YY_FATAL_ERROR( "input in flex scanner failed" ); \ result = n; \ } \ else \ { \ errno=0; \ while ( (result = (int) fread(buf, 1, (yy_size_t) max_size, yyin)) == 0 && ferror(yyin)) \ { \ if( errno != EINTR) \ { \ YY_FATAL_ERROR( "input in flex scanner failed" ); \ break; \ } \ errno=0; \ clearerr(yyin); \ } \ }\ \ #endif /* No semi-colon after return; correct usage is to write "yyterminate();" - * we don't want an extra ';' after the "return" because that will cause * some compilers to complain about unreachable statements. */ #ifndef yyterminate #define yyterminate() return YY_NULL #endif /* Number of entries by which start-condition stack grows. */ #ifndef YY_START_STACK_INCR #define YY_START_STACK_INCR 25 #endif /* Report a fatal error. */ #ifndef YY_FATAL_ERROR #define YY_FATAL_ERROR(msg) yy_fatal_error( msg , yyscanner) #endif /* end tables serialization structures and prototypes */ /* Default declaration of generated scanner - a define so the user can * easily add parameters. */ #ifndef YY_DECL #define YY_DECL_IS_OURS 1 extern int yylex (yyscan_t yyscanner); #define YY_DECL int yylex (yyscan_t yyscanner) #endif /* !YY_DECL */ /* Code executed at the beginning of each rule, after yytext and yyleng * have been set up. */ #ifndef YY_USER_ACTION #define YY_USER_ACTION #endif /* Code executed at the end of each rule. */ #ifndef YY_BREAK #define YY_BREAK /*LINTED*/break; #endif #define YY_RULE_SETUP \ YY_USER_ACTION /** The main scanner function which does all the work. */ YY_DECL { yy_state_type yy_current_state; char *yy_cp, *yy_bp; int yy_act; struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; if ( !yyg->yy_init ) { yyg->yy_init = 1; #ifdef YY_USER_INIT YY_USER_INIT; #endif /* Create the reject buffer large enough to save one state per allowed character. */ if ( ! yyg->yy_state_buf ) yyg->yy_state_buf = (yy_state_type *)yyalloc(YY_STATE_BUF_SIZE , yyscanner); if ( ! yyg->yy_state_buf ) YY_FATAL_ERROR( "out of dynamic memory in yylex()" ); if ( ! yyg->yy_start ) yyg->yy_start = 1; /* first start state */ if ( ! yyin ) yyin = stdin; if ( ! yyout ) yyout = stdout; if ( ! YY_CURRENT_BUFFER ) { yyensure_buffer_stack (yyscanner); YY_CURRENT_BUFFER_LVALUE = yy_create_buffer( yyin, YY_BUF_SIZE , yyscanner); } yy_load_buffer_state( yyscanner ); } { #line 92 "giza-scanner.l" #line 842 "lex.yy.c" while ( /*CONSTCOND*/1 ) /* loops until end-of-file is reached */ { yy_cp = yyg->yy_c_buf_p; /* Support of yytext. */ *yy_cp = yyg->yy_hold_char; /* yy_bp points to the position in yy_ch_buf of the start of * the current run. */ yy_bp = yy_cp; yy_current_state = yyg->yy_start; yyg->yy_state_ptr = yyg->yy_state_buf; *yyg->yy_state_ptr++ = yy_current_state; yy_match: do { YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)] ; while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; if ( yy_current_state >= 44 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; *yyg->yy_state_ptr++ = yy_current_state; ++yy_cp; } while ( yy_base[yy_current_state] != 104 ); yy_find_action: yy_current_state = *--yyg->yy_state_ptr; yyg->yy_lp = yy_accept[yy_current_state]; goto find_rule; /* Shut up GCC warning -Wall */ find_rule: /* we branch to this label when backing up */ for ( ; ; ) /* until we find what rule we matched */ { if ( yyg->yy_lp && yyg->yy_lp < yy_accept[yy_current_state + 1] ) { yy_act = yy_acclist[yyg->yy_lp]; { yyg->yy_full_match = yy_cp; break; } } --yy_cp; yy_current_state = *--yyg->yy_state_ptr; yyg->yy_lp = yy_accept[yy_current_state]; } YY_DO_BEFORE_ACTION; do_action: /* This label is used only to access EOF actions. */ switch ( yy_act ) { /* beginning of action switch */ case 1: YY_RULE_SETUP #line 94 "giza-scanner.l" { return GIZA_TOKEN_RAISE; } YY_BREAK case 2: YY_RULE_SETUP #line 95 "giza-scanner.l" { return GIZA_TOKEN_LOWER; } YY_BREAK case 3: YY_RULE_SETUP #line 96 "giza-scanner.l" { return GIZA_TOKEN_BACKSPACE; } YY_BREAK case 4: YY_RULE_SETUP #line 98 "giza-scanner.l" { BEGIN(FONT); } YY_BREAK case 5: YY_RULE_SETUP #line 99 "giza-scanner.l" { BEGIN(INITIAL); return GIZA_TOKEN_FONT; }; YY_BREAK case 6: YY_RULE_SETUP #line 100 "giza-scanner.l" { BEGIN(INITIAL); _giza_warning("giza_parse_string", "invalid font specifier '%c'", *yytext); return GIZA_TOKEN_TEXT; } YY_BREAK case 7: YY_RULE_SETUP #line 102 "giza-scanner.l" { BEGIN(HERSHEY); } YY_BREAK case 8: YY_RULE_SETUP #line 103 "giza-scanner.l" { if( _giza_lookup_hershey(atoi(yytext)) ) { BEGIN(INITIAL); return GIZA_TOKEN_HERSHEY; } REJECT; } YY_BREAK case 9: /* rule 9 can match eol */ YY_RULE_SETUP #line 104 "giza-scanner.l" { BEGIN(INITIAL); _giza_warning("giza_parse_string", "invalid Hershey code '%s'", yytext); return GIZA_TOKEN_TEXT; } YY_BREAK case 10: YY_RULE_SETUP #line 106 "giza-scanner.l" { BEGIN(MARKER); } YY_BREAK case 11: YY_RULE_SETUP #line 107 "giza-scanner.l" { const int marker = atoi(yytext); if( marker>=1 && marker<=31 ) { BEGIN(INITIAL); return GIZA_TOKEN_MARKER; } REJECT; } YY_BREAK case 12: YY_RULE_SETUP #line 108 "giza-scanner.l" { BEGIN(INITIAL); _giza_warning("giza_parse_string", "invalid marker '%s'", yytext); return GIZA_TOKEN_TEXT; } YY_BREAK case 13: YY_RULE_SETUP #line 110 "giza-scanner.l" { BEGIN(GREEK); } YY_BREAK case 14: YY_RULE_SETUP #line 111 "giza-scanner.l" { BEGIN(INITIAL); return GIZA_TOKEN_GREEK; } YY_BREAK case 15: YY_RULE_SETUP #line 112 "giza-scanner.l" { BEGIN(INITIAL); _giza_warning("giza_parse_string", "invalid greek letter '%c'", *yytext); return GIZA_TOKEN_TEXT; } YY_BREAK case 16: YY_RULE_SETUP #line 114 "giza-scanner.l" { if( _giza_remap_token(yytext) ) { return GIZA_TOKEN_REMAP; } REJECT; } YY_BREAK case 17: YY_RULE_SETUP #line 116 "giza-scanner.l" { return GIZA_TOKEN_SUPER; } YY_BREAK case 18: YY_RULE_SETUP #line 117 "giza-scanner.l" { return GIZA_TOKEN_SUB; } YY_BREAK case 19: YY_RULE_SETUP #line 118 "giza-scanner.l" { return GIZA_TOKEN_OB; } YY_BREAK case 20: YY_RULE_SETUP #line 119 "giza-scanner.l" { return GIZA_TOKEN_CB; } YY_BREAK case 21: YY_RULE_SETUP #line 121 "giza-scanner.l" { return _giza_remap_token(yytext) ? GIZA_TOKEN_REMAP : GIZA_TOKEN_TEXT; /* single character escape sequence or ordinary escaped character meaning */ } YY_BREAK case YY_STATE_EOF(INITIAL): case YY_STATE_EOF(FONT): case YY_STATE_EOF(HERSHEY): case YY_STATE_EOF(MARKER): case YY_STATE_EOF(GREEK): #line 123 "giza-scanner.l" { return GIZA_TOKEN_END; } YY_BREAK case 22: YY_RULE_SETUP #line 125 "giza-scanner.l" ECHO; YY_BREAK #line 1024 "lex.yy.c" case YY_END_OF_BUFFER: { /* Amount of text matched not including the EOB char. */ int yy_amount_of_matched_text = (int) (yy_cp - yyg->yytext_ptr) - 1; /* Undo the effects of YY_DO_BEFORE_ACTION. */ *yy_cp = yyg->yy_hold_char; YY_RESTORE_YY_MORE_OFFSET if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW ) { /* We're scanning a new file or input source. It's * possible that this happened because the user * just pointed yyin at a new source and called * yylex(). If so, then we have to assure * consistency between YY_CURRENT_BUFFER and our * globals. Here is the right place to do so, because * this is the first action (other than possibly a * back-up) that will match for the new input source. */ yyg->yy_n_chars = YY_CURRENT_BUFFER_LVALUE->yy_n_chars; YY_CURRENT_BUFFER_LVALUE->yy_input_file = yyin; YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL; } /* Note that here we test for yy_c_buf_p "<=" to the position * of the first EOB in the buffer, since yy_c_buf_p will * already have been incremented past the NUL character * (since all states make transitions on EOB to the * end-of-buffer state). Contrast this with the test * in input(). */ if ( yyg->yy_c_buf_p <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars] ) { /* This was really a NUL. */ yy_state_type yy_next_state; yyg->yy_c_buf_p = yyg->yytext_ptr + yy_amount_of_matched_text; yy_current_state = yy_get_previous_state( yyscanner ); /* Okay, we're now positioned to make the NUL * transition. We couldn't have * yy_get_previous_state() go ahead and do it * for us because it doesn't know how to deal * with the possibility of jamming (and we don't * want to build jamming into it because then it * will run more slowly). */ yy_next_state = yy_try_NUL_trans( yy_current_state , yyscanner); yy_bp = yyg->yytext_ptr + YY_MORE_ADJ; if ( yy_next_state ) { /* Consume the NUL. */ yy_cp = ++yyg->yy_c_buf_p; yy_current_state = yy_next_state; goto yy_match; } else { yy_cp = yyg->yy_c_buf_p; goto yy_find_action; } } else switch ( yy_get_next_buffer( yyscanner ) ) { case EOB_ACT_END_OF_FILE: { yyg->yy_did_buffer_switch_on_eof = 0; if ( yywrap( yyscanner ) ) { /* Note: because we've taken care in * yy_get_next_buffer() to have set up * yytext, we can now set up * yy_c_buf_p so that if some total * hoser (like flex itself) wants to * call the scanner after we return the * YY_NULL, it'll still work - another * YY_NULL will get returned. */ yyg->yy_c_buf_p = yyg->yytext_ptr + YY_MORE_ADJ; yy_act = YY_STATE_EOF(YY_START); goto do_action; } else { if ( ! yyg->yy_did_buffer_switch_on_eof ) YY_NEW_FILE; } break; } case EOB_ACT_CONTINUE_SCAN: yyg->yy_c_buf_p = yyg->yytext_ptr + yy_amount_of_matched_text; yy_current_state = yy_get_previous_state( yyscanner ); yy_cp = yyg->yy_c_buf_p; yy_bp = yyg->yytext_ptr + YY_MORE_ADJ; goto yy_match; case EOB_ACT_LAST_MATCH: yyg->yy_c_buf_p = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars]; yy_current_state = yy_get_previous_state( yyscanner ); yy_cp = yyg->yy_c_buf_p; yy_bp = yyg->yytext_ptr + YY_MORE_ADJ; goto yy_find_action; } break; } default: YY_FATAL_ERROR( "fatal flex scanner internal error--no action found" ); } /* end of action switch */ } /* end of scanning one token */ } /* end of user's declarations */ } /* end of yylex */ /* yy_get_next_buffer - try to read in a new buffer * * Returns a code representing an action: * EOB_ACT_LAST_MATCH - * EOB_ACT_CONTINUE_SCAN - continue scanning from current position * EOB_ACT_END_OF_FILE - end of file */ static int yy_get_next_buffer (yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf; char *source = yyg->yytext_ptr; int number_to_move, i; int ret_val; if ( yyg->yy_c_buf_p > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars + 1] ) YY_FATAL_ERROR( "fatal flex scanner internal error--end of buffer missed" ); if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 ) { /* Don't try to fill the buffer, so this is an EOF. */ if ( yyg->yy_c_buf_p - yyg->yytext_ptr - YY_MORE_ADJ == 1 ) { /* We matched a single character, the EOB, so * treat this as a final EOF. */ return EOB_ACT_END_OF_FILE; } else { /* We matched some text prior to the EOB, first * process it. */ return EOB_ACT_LAST_MATCH; } } /* Try to read more data. */ /* First move last chars to start of buffer. */ number_to_move = (int) (yyg->yy_c_buf_p - yyg->yytext_ptr - 1); for ( i = 0; i < number_to_move; ++i ) *(dest++) = *(source++); if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING ) /* don't do the read, it's not guaranteed to return an EOF, * just force an EOF */ YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars = 0; else { yy_size_t num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1; while ( num_to_read <= 0 ) { /* Not enough room in the buffer - grow it. */ YY_FATAL_ERROR( "input buffer overflow, can't enlarge buffer because scanner uses REJECT" ); } if ( num_to_read > YY_READ_BUF_SIZE ) num_to_read = YY_READ_BUF_SIZE; /* Read in more data. */ YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]), yyg->yy_n_chars, num_to_read ); YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars; } if ( yyg->yy_n_chars == 0 ) { if ( number_to_move == YY_MORE_ADJ ) { ret_val = EOB_ACT_END_OF_FILE; yyrestart( yyin , yyscanner); } else { ret_val = EOB_ACT_LAST_MATCH; YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_EOF_PENDING; } } else ret_val = EOB_ACT_CONTINUE_SCAN; if ((yyg->yy_n_chars + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) { /* Extend the array by 50%, plus the number we really need. */ yy_size_t new_size = yyg->yy_n_chars + number_to_move + (yyg->yy_n_chars >> 1); YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) yyrealloc( (void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf, (yy_size_t) new_size , yyscanner ); if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf ) YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" ); /* "- 2" to take care of EOB's */ YY_CURRENT_BUFFER_LVALUE->yy_buf_size = (int) (new_size - 2); } yyg->yy_n_chars += number_to_move; YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars] = YY_END_OF_BUFFER_CHAR; YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars + 1] = YY_END_OF_BUFFER_CHAR; yyg->yytext_ptr = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0]; return ret_val; } /* yy_get_previous_state - get the state just before the EOB char was reached */ static yy_state_type yy_get_previous_state (yyscan_t yyscanner) { yy_state_type yy_current_state; char *yy_cp; struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; yy_current_state = yyg->yy_start; yyg->yy_state_ptr = yyg->yy_state_buf; *yyg->yy_state_ptr++ = yy_current_state; for ( yy_cp = yyg->yytext_ptr + YY_MORE_ADJ; yy_cp < yyg->yy_c_buf_p; ++yy_cp ) { YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1); while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; if ( yy_current_state >= 44 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; *yyg->yy_state_ptr++ = yy_current_state; } return yy_current_state; } /* yy_try_NUL_trans - try to make a transition on the NUL character * * synopsis * next_state = yy_try_NUL_trans( current_state ); */ static yy_state_type yy_try_NUL_trans (yy_state_type yy_current_state , yyscan_t yyscanner) { int yy_is_jam; struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; /* This var may be unused depending upon options. */ YY_CHAR yy_c = 1; while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; if ( yy_current_state >= 44 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; yy_is_jam = (yy_current_state == 43); if ( ! yy_is_jam ) *yyg->yy_state_ptr++ = yy_current_state; (void)yyg; return yy_is_jam ? 0 : yy_current_state; } #ifndef YY_NO_UNPUT static void yyunput (int c, char * yy_bp , yyscan_t yyscanner) { char *yy_cp; struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; yy_cp = yyg->yy_c_buf_p; /* undo effects of setting up yytext */ *yy_cp = yyg->yy_hold_char; if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 ) { /* need to shift things up to make room */ /* +2 for EOB chars. */ yy_size_t number_to_move = yyg->yy_n_chars + 2; char *dest = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[ YY_CURRENT_BUFFER_LVALUE->yy_buf_size + 2]; char *source = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]; while ( source > YY_CURRENT_BUFFER_LVALUE->yy_ch_buf ) *--dest = *--source; yy_cp += (int) (dest - source); yy_bp += (int) (dest - source); YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars = (int) YY_CURRENT_BUFFER_LVALUE->yy_buf_size; if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 ) YY_FATAL_ERROR( "flex scanner push-back overflow" ); } *--yy_cp = (char) c; yyg->yytext_ptr = yy_bp; yyg->yy_hold_char = *yy_cp; yyg->yy_c_buf_p = yy_cp; } #endif #ifndef YY_NO_INPUT #ifdef __cplusplus static int yyinput (yyscan_t yyscanner) #else static int input (yyscan_t yyscanner) #endif { int c; struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; *yyg->yy_c_buf_p = yyg->yy_hold_char; if ( *yyg->yy_c_buf_p == YY_END_OF_BUFFER_CHAR ) { /* yy_c_buf_p now points to the character we want to return. * If this occurs *before* the EOB characters, then it's a * valid NUL; if not, then we've hit the end of the buffer. */ if ( yyg->yy_c_buf_p < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars] ) /* This was really a NUL. */ *yyg->yy_c_buf_p = '\0'; else { /* need more input */ yy_size_t offset = yyg->yy_c_buf_p - yyg->yytext_ptr; ++yyg->yy_c_buf_p; switch ( yy_get_next_buffer( yyscanner ) ) { case EOB_ACT_LAST_MATCH: /* This happens because yy_g_n_b() * sees that we've accumulated a * token and flags that we need to * try matching the token before * proceeding. But for input(), * there's no matching to consider. * So convert the EOB_ACT_LAST_MATCH * to EOB_ACT_END_OF_FILE. */ /* Reset buffer status. */ yyrestart( yyin , yyscanner); /*FALLTHROUGH*/ case EOB_ACT_END_OF_FILE: { if ( yywrap( yyscanner ) ) return 0; if ( ! yyg->yy_did_buffer_switch_on_eof ) YY_NEW_FILE; #ifdef __cplusplus return yyinput(yyscanner); #else return input(yyscanner); #endif } case EOB_ACT_CONTINUE_SCAN: yyg->yy_c_buf_p = yyg->yytext_ptr + offset; break; } } } c = *(unsigned char *) yyg->yy_c_buf_p; /* cast for 8-bit char's */ *yyg->yy_c_buf_p = '\0'; /* preserve yytext */ yyg->yy_hold_char = *++yyg->yy_c_buf_p; return c; } #endif /* ifndef YY_NO_INPUT */ /** Immediately switch to a different input stream. * @param input_file A readable stream. * @param yyscanner The scanner object. * @note This function does not reset the start condition to @c INITIAL . */ void yyrestart (FILE * input_file , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; if ( ! YY_CURRENT_BUFFER ){ yyensure_buffer_stack (yyscanner); YY_CURRENT_BUFFER_LVALUE = yy_create_buffer( yyin, YY_BUF_SIZE , yyscanner); } yy_init_buffer( YY_CURRENT_BUFFER, input_file , yyscanner); yy_load_buffer_state( yyscanner ); } /** Switch to a different input buffer. * @param new_buffer The new input buffer. * @param yyscanner The scanner object. */ void yy_switch_to_buffer (YY_BUFFER_STATE new_buffer , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; /* TODO. We should be able to replace this entire function body * with * yypop_buffer_state(); * yypush_buffer_state(new_buffer); */ yyensure_buffer_stack (yyscanner); if ( YY_CURRENT_BUFFER == new_buffer ) return; if ( YY_CURRENT_BUFFER ) { /* Flush out information for old buffer. */ *yyg->yy_c_buf_p = yyg->yy_hold_char; YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = yyg->yy_c_buf_p; YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars; } YY_CURRENT_BUFFER_LVALUE = new_buffer; yy_load_buffer_state( yyscanner ); /* We don't actually know whether we did this switch during * EOF (yywrap()) processing, but the only time this flag * is looked at is after yywrap() is called, so it's safe * to go ahead and always set it. */ yyg->yy_did_buffer_switch_on_eof = 1; } static void yy_load_buffer_state (yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; yyg->yy_n_chars = YY_CURRENT_BUFFER_LVALUE->yy_n_chars; yyg->yytext_ptr = yyg->yy_c_buf_p = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos; yyin = YY_CURRENT_BUFFER_LVALUE->yy_input_file; yyg->yy_hold_char = *yyg->yy_c_buf_p; } /** Allocate and initialize an input buffer state. * @param file A readable stream. * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE. * @param yyscanner The scanner object. * @return the allocated buffer state. */ YY_BUFFER_STATE yy_create_buffer (FILE * file, int size , yyscan_t yyscanner) { YY_BUFFER_STATE b; b = (YY_BUFFER_STATE) yyalloc( sizeof( struct yy_buffer_state ) , yyscanner ); if ( ! b ) YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" ); b->yy_buf_size = size; /* yy_ch_buf has to be 2 characters longer than the size given because * we need to put in 2 end-of-buffer characters. */ b->yy_ch_buf = (char *) yyalloc( (yy_size_t) (b->yy_buf_size + 2) , yyscanner ); if ( ! b->yy_ch_buf ) YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" ); b->yy_is_our_buffer = 1; yy_init_buffer( b, file , yyscanner); return b; } /** Destroy the buffer. * @param b a buffer created with yy_create_buffer() * @param yyscanner The scanner object. */ void yy_delete_buffer (YY_BUFFER_STATE b , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; if ( ! b ) return; if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */ YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0; if ( b->yy_is_our_buffer ) yyfree( (void *) b->yy_ch_buf , yyscanner ); yyfree( (void *) b , yyscanner ); } /* Initializes or reinitializes a buffer. * This function is sometimes called more than once on the same buffer, * such as during a yyrestart() or at EOF. */ static void yy_init_buffer (YY_BUFFER_STATE b, FILE * file , yyscan_t yyscanner) { int oerrno = errno; struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; yy_flush_buffer( b , yyscanner); b->yy_input_file = file; b->yy_fill_buffer = 1; /* If b is the current buffer, then yy_init_buffer was _probably_ * called from yyrestart() or through yy_get_next_buffer. * In that case, we don't want to reset the lineno or column. */ if (b != YY_CURRENT_BUFFER){ b->yy_bs_lineno = 1; b->yy_bs_column = 0; } b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0; errno = oerrno; } /** Discard all buffered characters. On the next scan, YY_INPUT will be called. * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER. * @param yyscanner The scanner object. */ void yy_flush_buffer (YY_BUFFER_STATE b , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; if ( ! b ) return; b->yy_n_chars = 0; /* We always need two end-of-buffer characters. The first causes * a transition to the end-of-buffer state. The second causes * a jam in that state. */ b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR; b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR; b->yy_buf_pos = &b->yy_ch_buf[0]; b->yy_at_bol = 1; b->yy_buffer_status = YY_BUFFER_NEW; if ( b == YY_CURRENT_BUFFER ) yy_load_buffer_state( yyscanner ); } /** Pushes the new state onto the stack. The new state becomes * the current state. This function will allocate the stack * if necessary. * @param new_buffer The new state. * @param yyscanner The scanner object. */ void yypush_buffer_state (YY_BUFFER_STATE new_buffer , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; if (new_buffer == NULL) return; yyensure_buffer_stack(yyscanner); /* This block is copied from yy_switch_to_buffer. */ if ( YY_CURRENT_BUFFER ) { /* Flush out information for old buffer. */ *yyg->yy_c_buf_p = yyg->yy_hold_char; YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = yyg->yy_c_buf_p; YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars; } /* Only push if top exists. Otherwise, replace top. */ if (YY_CURRENT_BUFFER) yyg->yy_buffer_stack_top++; YY_CURRENT_BUFFER_LVALUE = new_buffer; /* copied from yy_switch_to_buffer. */ yy_load_buffer_state( yyscanner ); yyg->yy_did_buffer_switch_on_eof = 1; } /** Removes and deletes the top of the stack, if present. * The next element becomes the new top. * @param yyscanner The scanner object. */ void yypop_buffer_state (yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; if (!YY_CURRENT_BUFFER) return; yy_delete_buffer(YY_CURRENT_BUFFER , yyscanner); YY_CURRENT_BUFFER_LVALUE = NULL; if (yyg->yy_buffer_stack_top > 0) --yyg->yy_buffer_stack_top; if (YY_CURRENT_BUFFER) { yy_load_buffer_state( yyscanner ); yyg->yy_did_buffer_switch_on_eof = 1; } } /* Allocates the stack if it does not exist. * Guarantees space for at least one push. */ static void yyensure_buffer_stack (yyscan_t yyscanner) { yy_size_t num_to_alloc; struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; if (!yyg->yy_buffer_stack) { /* First allocation is just for 2 elements, since we don't know if this * scanner will even need a stack. We use 2 instead of 1 to avoid an * immediate realloc on the next call. */ num_to_alloc = 1; /* After all that talk, this was set to 1 anyways... */ yyg->yy_buffer_stack = (struct yy_buffer_state**)yyalloc (num_to_alloc * sizeof(struct yy_buffer_state*) , yyscanner); if ( ! yyg->yy_buffer_stack ) YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" ); memset(yyg->yy_buffer_stack, 0, num_to_alloc * sizeof(struct yy_buffer_state*)); yyg->yy_buffer_stack_max = num_to_alloc; yyg->yy_buffer_stack_top = 0; return; } if (yyg->yy_buffer_stack_top >= (yyg->yy_buffer_stack_max) - 1){ /* Increase the buffer to prepare for a possible push. */ yy_size_t grow_size = 8 /* arbitrary grow size */; num_to_alloc = yyg->yy_buffer_stack_max + grow_size; yyg->yy_buffer_stack = (struct yy_buffer_state**)yyrealloc (yyg->yy_buffer_stack, num_to_alloc * sizeof(struct yy_buffer_state*) , yyscanner); if ( ! yyg->yy_buffer_stack ) YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" ); /* zero only the new slots.*/ memset(yyg->yy_buffer_stack + yyg->yy_buffer_stack_max, 0, grow_size * sizeof(struct yy_buffer_state*)); yyg->yy_buffer_stack_max = num_to_alloc; } } /** Setup the input buffer state to scan directly from a user-specified character buffer. * @param base the character buffer * @param size the size in bytes of the character buffer * @param yyscanner The scanner object. * @return the newly allocated buffer state object. */ YY_BUFFER_STATE yy_scan_buffer (char * base, yy_size_t size , yyscan_t yyscanner) { YY_BUFFER_STATE b; if ( size < 2 || base[size-2] != YY_END_OF_BUFFER_CHAR || base[size-1] != YY_END_OF_BUFFER_CHAR ) /* They forgot to leave room for the EOB's. */ return NULL; b = (YY_BUFFER_STATE) yyalloc( sizeof( struct yy_buffer_state ) , yyscanner ); if ( ! b ) YY_FATAL_ERROR( "out of dynamic memory in yy_scan_buffer()" ); b->yy_buf_size = (int) (size - 2); /* "- 2" to take care of EOB's */ b->yy_buf_pos = b->yy_ch_buf = base; b->yy_is_our_buffer = 0; b->yy_input_file = NULL; b->yy_n_chars = b->yy_buf_size; b->yy_is_interactive = 0; b->yy_at_bol = 1; b->yy_fill_buffer = 0; b->yy_buffer_status = YY_BUFFER_NEW; yy_switch_to_buffer( b , yyscanner ); return b; } /** Setup the input buffer state to scan a string. The next call to yylex() will * scan from a @e copy of @a str. * @param yystr a NUL-terminated string to scan * @param yyscanner The scanner object. * @return the newly allocated buffer state object. * @note If you want to scan bytes that may contain NUL values, then use * yy_scan_bytes() instead. */ YY_BUFFER_STATE yy_scan_string (const char * yystr , yyscan_t yyscanner) { return yy_scan_bytes( yystr, (int) strlen(yystr) , yyscanner); } /** Setup the input buffer state to scan the given bytes. The next call to yylex() will * scan from a @e copy of @a bytes. * @param yybytes the byte buffer to scan * @param _yybytes_len the number of bytes in the buffer pointed to by @a bytes. * @param yyscanner The scanner object. * @return the newly allocated buffer state object. */ YY_BUFFER_STATE yy_scan_bytes (const char * yybytes, yy_size_t _yybytes_len , yyscan_t yyscanner) { YY_BUFFER_STATE b; char *buf; yy_size_t n; yy_size_t i; /* Get memory for full buffer, including space for trailing EOB's. */ n = (yy_size_t) (_yybytes_len + 2); buf = (char *) yyalloc( n , yyscanner ); if ( ! buf ) YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" ); for ( i = 0; i < _yybytes_len; ++i ) buf[i] = yybytes[i]; buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR; b = yy_scan_buffer( buf, n , yyscanner); if ( ! b ) YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" ); /* It's okay to grow etc. this buffer, and we should throw it * away when we're done. */ b->yy_is_our_buffer = 1; return b; } #ifndef YY_EXIT_FAILURE #define YY_EXIT_FAILURE 2 #endif static void yynoreturn yy_fatal_error (const char* msg , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; (void)yyg; fprintf( stderr, "%s\n", msg ); exit( YY_EXIT_FAILURE ); } /* Redefine yyless() so it works in section 3 code. */ #undef yyless #define yyless(n) \ do \ { \ /* Undo effects of setting up yytext. */ \ yy_size_t yyless_macro_arg = (n); \ YY_LESS_LINENO(yyless_macro_arg);\ yytext[yyleng] = yyg->yy_hold_char; \ yyg->yy_c_buf_p = yytext + yyless_macro_arg; \ yyg->yy_hold_char = *yyg->yy_c_buf_p; \ *yyg->yy_c_buf_p = '\0'; \ yyleng = yyless_macro_arg; \ } \ while ( 0 ) /* Accessor methods (get/set functions) to struct members. */ /** Get the user-defined data for this scanner. * @param yyscanner The scanner object. */ YY_EXTRA_TYPE yyget_extra (yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; return yyextra; } /** Get the current line number. * @param yyscanner The scanner object. */ int yyget_lineno (yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; if (! YY_CURRENT_BUFFER) return 0; return yylineno; } /** Get the current column number. * @param yyscanner The scanner object. */ int yyget_column (yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; if (! YY_CURRENT_BUFFER) return 0; return yycolumn; } /** Get the input stream. * @param yyscanner The scanner object. */ FILE *yyget_in (yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; return yyin; } /** Get the output stream. * @param yyscanner The scanner object. */ FILE *yyget_out (yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; return yyout; } /** Get the length of the current token. * @param yyscanner The scanner object. */ yy_size_t yyget_leng (yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; return yyleng; } /** Get the current token. * @param yyscanner The scanner object. */ char *yyget_text (yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; return yytext; } /** Set the user-defined data. This data is never touched by the scanner. * @param user_defined The data to be associated with this scanner. * @param yyscanner The scanner object. */ void yyset_extra (YY_EXTRA_TYPE user_defined , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; yyextra = user_defined ; } /** Set the current line number. * @param _line_number line number * @param yyscanner The scanner object. */ void yyset_lineno (int _line_number , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; /* lineno is only valid if an input buffer exists. */ if (! YY_CURRENT_BUFFER ) YY_FATAL_ERROR( "yyset_lineno called with no buffer" ); yylineno = _line_number; } /** Set the current column. * @param _column_no column number * @param yyscanner The scanner object. */ void yyset_column (int _column_no , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; /* column is only valid if an input buffer exists. */ if (! YY_CURRENT_BUFFER ) YY_FATAL_ERROR( "yyset_column called with no buffer" ); yycolumn = _column_no; } /** Set the input stream. This does not discard the current * input buffer. * @param _in_str A readable stream. * @param yyscanner The scanner object. * @see yy_switch_to_buffer */ void yyset_in (FILE * _in_str , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; yyin = _in_str ; } void yyset_out (FILE * _out_str , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; yyout = _out_str ; } int yyget_debug (yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; return yy_flex_debug; } void yyset_debug (int _bdebug , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; yy_flex_debug = _bdebug ; } /* Accessor methods for yylval and yylloc */ /* User-visible API */ /* yylex_init is special because it creates the scanner itself, so it is * the ONLY reentrant function that doesn't take the scanner as the last argument. * That's why we explicitly handle the declaration, instead of using our macros. */ int yylex_init(yyscan_t* ptr_yy_globals) { if (ptr_yy_globals == NULL){ errno = EINVAL; return 1; } *ptr_yy_globals = (yyscan_t) yyalloc ( sizeof( struct yyguts_t ), NULL ); if (*ptr_yy_globals == NULL){ errno = ENOMEM; return 1; } /* By setting to 0xAA, we expose bugs in yy_init_globals. Leave at 0x00 for releases. */ memset(*ptr_yy_globals,0x00,sizeof(struct yyguts_t)); return yy_init_globals ( *ptr_yy_globals ); } /* yylex_init_extra has the same functionality as yylex_init, but follows the * convention of taking the scanner as the last argument. Note however, that * this is a *pointer* to a scanner, as it will be allocated by this call (and * is the reason, too, why this function also must handle its own declaration). * The user defined value in the first argument will be available to yyalloc in * the yyextra field. */ int yylex_init_extra( YY_EXTRA_TYPE yy_user_defined, yyscan_t* ptr_yy_globals ) { struct yyguts_t dummy_yyguts; yyset_extra (yy_user_defined, &dummy_yyguts); if (ptr_yy_globals == NULL){ errno = EINVAL; return 1; } *ptr_yy_globals = (yyscan_t) yyalloc ( sizeof( struct yyguts_t ), &dummy_yyguts ); if (*ptr_yy_globals == NULL){ errno = ENOMEM; return 1; } /* By setting to 0xAA, we expose bugs in yy_init_globals. Leave at 0x00 for releases. */ memset(*ptr_yy_globals,0x00,sizeof(struct yyguts_t)); yyset_extra (yy_user_defined, *ptr_yy_globals); return yy_init_globals ( *ptr_yy_globals ); } static int yy_init_globals (yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; /* Initialization is the same as for the non-reentrant scanner. * This function is called from yylex_destroy(), so don't allocate here. */ yyg->yy_buffer_stack = NULL; yyg->yy_buffer_stack_top = 0; yyg->yy_buffer_stack_max = 0; yyg->yy_c_buf_p = NULL; yyg->yy_init = 0; yyg->yy_start = 0; yyg->yy_start_stack_ptr = 0; yyg->yy_start_stack_depth = 0; yyg->yy_start_stack = NULL; yyg->yy_state_buf = 0; yyg->yy_state_ptr = 0; yyg->yy_full_match = 0; yyg->yy_lp = 0; /* Defined in main.c */ #ifdef YY_STDINIT yyin = stdin; yyout = stdout; #else yyin = NULL; yyout = NULL; #endif /* For future reference: Set errno on error, since we are called by * yylex_init() */ return 0; } /* yylex_destroy is for both reentrant and non-reentrant scanners. */ int yylex_destroy (yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; /* Pop the buffer stack, destroying each element. */ while(YY_CURRENT_BUFFER){ yy_delete_buffer( YY_CURRENT_BUFFER , yyscanner ); YY_CURRENT_BUFFER_LVALUE = NULL; yypop_buffer_state(yyscanner); } /* Destroy the stack itself. */ yyfree(yyg->yy_buffer_stack , yyscanner); yyg->yy_buffer_stack = NULL; /* Destroy the start condition stack. */ yyfree( yyg->yy_start_stack , yyscanner ); yyg->yy_start_stack = NULL; yyfree ( yyg->yy_state_buf , yyscanner); yyg->yy_state_buf = NULL; /* Reset the globals. This is important in a non-reentrant scanner so the next time * yylex() is called, initialization will occur. */ yy_init_globals( yyscanner); /* Destroy the main struct (reentrant only). */ yyfree ( yyscanner , yyscanner ); yyscanner = NULL; return 0; } /* * Internal utility routines. */ #ifndef yytext_ptr static void yy_flex_strncpy (char* s1, const char * s2, int n , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; (void)yyg; int i; for ( i = 0; i < n; ++i ) s1[i] = s2[i]; } #endif #ifdef YY_NEED_STRLEN static int yy_flex_strlen (const char * s , yyscan_t yyscanner) { int n; for ( n = 0; s[n]; ++n ) ; return n; } #endif void *yyalloc (yy_size_t size , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; (void)yyg; return malloc(size); } void *yyrealloc (void * ptr, yy_size_t size , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; (void)yyg; /* The cast to (char *) in the following accommodates both * implementations that use char* generic pointers, and those * that use void* generic pointers. It works with the latter * because both ANSI C and C++ allow castless assignment from * any pointer type to void*, and deal with argument conversions * as though doing an assignment. */ return realloc(ptr, size); } void yyfree (void * ptr , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; (void)yyg; free( (char *) ptr ); /* see yyrealloc() for (char *) cast */ } #define YYTABLES_NAME "yytables" #line 125 "giza-scanner.l" /* Functions that look up character sequences and return utf strings; giza is built upon cairo, which in turn handles utf Just Fine (tm) */ giza_hershey_to_utf_entry const* _giza_lookup_hershey(int number) { giza_hershey_to_utf_entry const* rv = giza_hershey_to_utf; while( rv->hershey!=-1 && rv->hershey!=number ) rv++; return (rv->hershey==-1 ? NULL : rv); } giza_remapped_token_entry const* _giza_remap_token(char const* special) { giza_remapped_tokens_entry const* rv = giza_remappable_tokens; while( rv->text && strcmp(rv->text, special+1) ) rv++; return (rv->text==NULL ? NULL : &rv->replacement); } char const* giza_greek_to_utf(char letter) { return giza_greek_to_utf_data[ strchr(giza_greek_alphabet, letter) - giza_greek_alphabet ]; } #define MAX_NFONT 32 typedef struct _font_change_type { char font[GIZA_FONT_LEN]; int ob_level; /* open bracket level at start of font change*/ int wait_for_token; /* 0 = wait for first token to be seen, < 0 stop font change immediately, == GIZA_TOKEN_CB wait until ob_count drops below .ob_level */ } font_change_type; typedef struct _glyph_pos_type { double x, y; } glyph_pos_type; typedef struct _ob_state_type { int ob_level; /* open bracket level at start of state */ int wait_for_token; /* 0 = wait for first token to be seen, < 0 stop super/sub script immediately, == GIZA_TOKEN_CB wait until global ob_count drops below .ob_level */ } ob_state_type; /** * Performs action on each chunk of text. If calculating size height and width get set to height and width of the text. */ void _giza_parse_string (const char *text, double *width, double *height, void (*action)(const char *, double *, double *)) { if( text==NULL ) { _giza_error("giza_parse_string", "NULL string"); return; } const int lenstr = strlen(text); if( lenstr==0 ) return; yyscan_t scanner; int stop = 0, token, oldTrans; int insuper = 0, insub = 0; int ob = 0; /* count open/close bracket */ int bckSpace = 0; int nGlyph = 0; double sina = sin(Dev[id].fontAngle); double cosa = cos(Dev[id].fontAngle); char const* token_txt; ob_state_type ob_super[MAX_NFONT], *cur_super = &ob_super[-1];/* keep track of superscript state */ ob_state_type ob_sub[MAX_NFONT], *cur_sub = &ob_sub[-1]; /* keep track of subscript state */ glyph_pos_type positions[lenstr+1]; /* keep track of each glyph's x,y position (for backing up characters) */ font_change_type oldfont[MAX_NFONT], *cur_font = &oldfont[-1]; /* keep track of font change state */ oldTrans = _giza_get_trans (); _giza_set_trans (GIZA_TRANS_IDEN); /* initialise the scanner */ yylex_init (&scanner); yy_scan_string (text, scanner); while(!stop) { /* we can always do this - repeatedly overwriting the current top-of-symbol-stack's position until the code below actually draws a symbol and increments nGlyph */ cairo_get_current_point(Dev[id].context, &positions[nGlyph].x, &positions[nGlyph].y); /* Get current token from the scanner */ token = yylex(scanner); token_txt = yyget_text(scanner); /* If we found a special character sequence (e.g. "\Sun") this may be remapped to an actual symbol */ if( token==GIZA_TOKEN_REMAP ) { giza_remapped_token_entry const* ptr = _giza_remap_token(token_txt); token = ptr->token; token_txt = ptr->text; } /* Check if we need to do font, super- or subscript first-token-after-change checking: if the first token after a change is not open bracket, the change lasts only for the current glyph (if any) [single character super-/subscript], for font change we only keep a stack of nested font changes, not 'globals', which only last until the closing bracket of the current top-of-stack (if any) */ if( (cur_super>=ob_super) && cur_super->wait_for_token==0 ) cur_super->wait_for_token = (token == GIZA_TOKEN_OB ? GIZA_TOKEN_CB : -1); if( cur_sub>=ob_sub && cur_sub->wait_for_token==0 ) cur_sub->wait_for_token = (token == GIZA_TOKEN_OB ? GIZA_TOKEN_CB : -1); if( cur_font>=oldfont && cur_font->wait_for_token==0 ) { cur_font->wait_for_token = (token == GIZA_TOKEN_OB ? GIZA_TOKEN_CB : -1); /* check if we need to 'forget' this font change state; if it was 'global' */ if( cur_font->wait_for_token==-1 /*it was a 'global font change'*/ && cur_font>oldfont /* there exists at least a previous state */ && (cur_font-1)->wait_for_token==GIZA_TOKEN_CB /* and that one is waiting for close bracket*/ ) /* basically forget current font state */ cur_font--; } switch(token) { case GIZA_TOKEN_OB: ob++; break; case GIZA_TOKEN_CB: ob--; /* font change remains in effect until end of string or until close bracket, the latter only if the first token after font change was open bracket */ if( (cur_font>=oldfont) && cur_font->wait_for_token==GIZA_TOKEN_CB && ob<=cur_font->ob_level ) { /* OK go back to old font */ giza_set_font(cur_font->font); cur_font--; } /* Actual processing of closing bracket for super/sub is /after/ the switch statement because then it can be shared with single-token super/sub handling */ break; /* Handle a Hershey symbol by replacing with its utf version (if any) It's already verified by the lexer that the token is a valid Hershey number */ case GIZA_TOKEN_HERSHEY: { action( _giza_lookup_hershey(atoi(token_txt))->utf, width, height ); /* added new character to end of string so 'top of stack' for backing up is now restored to new end of string */ bckSpace = nGlyph; } break; /* Start of super/sub script. Mark the current level as waiting to check the next token; if it's not open bracket, we must drop the superscript immediately after the first token */ case GIZA_TOKEN_SUPER: if( cur_super<&ob_super[MAX_NFONT-1] ) { cur_super++; cur_super->ob_level = ob; cur_super->wait_for_token = 0; _giza_start_super (); } else { _giza_error("giza_parse_string", "Too many levels of super-script"); } break; case GIZA_TOKEN_SUB: if( cur_sub<&ob_sub[MAX_NFONT-1] ) { cur_sub++; cur_sub->ob_level = ob; cur_sub->wait_for_token = 0; _giza_start_sub (); } else { _giza_error("giza_parse_string", "Too many levels of sub-script"); } break; /* raising/lowering works relative to current state */ case GIZA_TOKEN_RAISE: if (insub > 0) { _giza_stop_sub(); insub -= 1; } else { _giza_start_super(); insuper += 1; } break; case GIZA_TOKEN_LOWER: if (insuper > 0) { _giza_stop_super(); insuper -= 1; } else { _giza_start_sub(); insub += 1; } break; /* move to previous character position. If backed up before start of string ignore silently. Note: in order to support having super + sub scripts appended to the same character you'll have to back up by *two* 'characters': first backup up over the superscript, then backing up to the baseline of the font before the superscript was entered. It is as if ^, _, \u, \d act as glyphs too only they're not inked. The upshot is that x^2\b\b_i renders nicely as proper x-i-squared */ case GIZA_TOKEN_BACKSPACE: if( bckSpace>=0 ) cairo_move_to(Dev[id].context, positions[bckSpace].x, positions[bckSpace].y); bckSpace -= 1; break; /* Handle change of font! The lexer already verified it's a /valid/ font specifier */ case GIZA_TOKEN_FONT: if ( cur_font<&oldfont[MAX_NFONT-1] ) { /* new font change state */ cur_font++; cur_font->ob_level = ob; cur_font->wait_for_token = 0; /* save font */ giza_get_font(cur_font->font, GIZA_FONT_LEN); } else { _giza_error("giza_parse_string", "Too many nested levels of font changes"); break; } switch ( tolower(*token_txt) ) { case 'b': /* bold */ _giza_switch_font (5); break; case 's': /* script */ _giza_switch_font (4); break; case 'i': /* italic */ _giza_switch_font (3); break; case 'r': /* roman */ _giza_switch_font (2); break; case 'n': /* normal */ _giza_switch_font (1); break; } break; /* Draw PGPLOT marker \mnn The lexer already verified it's a /valid/ marker number, i.e. 1 <= nn <= 31 */ case GIZA_TOKEN_MARKER: { /* get current marker height */ double markerHeight; _giza_get_markerheight(&markerHeight); /* extract the symbol number following the \m */ int const number = atoi( token_txt ); /* either draw the symbol or increment the width */ if (*width < 0.) { double dx = 1.0*markerHeight; double dy = -0.5*markerHeight; _giza_draw_symbol_device(positions[nGlyph].x + dx*cosa + dy*sina, positions[nGlyph].y + dx*sina + dy*cosa, number); cairo_move_to(Dev[id].context, positions[nGlyph].x + 2.*dx*cosa, positions[nGlyph].y + 2.*dx*sina); /* restore pen position */ } else { /* return width if action is _giza_action_get_size */ *width = *width + 2.*markerHeight; } } break; /* Replace the greek letter by its unicode representation. The lexer already verified it's a /valid/ greek letter. After that processing is like normal text */ case GIZA_TOKEN_GREEK: token_txt = giza_greek_to_utf( *token_txt ); case GIZA_TOKEN_TEXT: { /* added new character to end of string so 'top of stack' for backing up is now restored to new end of string */ bckSpace = nGlyph; action(token_txt, width, height); } break; /* end of string */ case GIZA_TOKEN_END: stop = 1; break; /* Ow dear, we got something we didn't expect! */ default: _giza_error("giza_parse_string", "unhandled token %d (%s)", token, token_txt); stop = 1; break; } /* After having dealt with a token check if we need to drop super/sub/font immediately */ /* did the closing bracket mark end-of-superscript? wait_for_token == CLOSE_BRACKET? then wait for level to fall below that, if == -1, drop immediately */ if( (cur_super>=ob_super) && ((cur_super->wait_for_token==GIZA_TOKEN_CB && ob<=cur_super->ob_level) || cur_super->wait_for_token==-1) ) { _giza_stop_super(); cur_super--; } /* did the closing bracket mark end-of-subscript? */ if( (cur_sub>=ob_sub) && ((cur_sub->wait_for_token==GIZA_TOKEN_CB && ob<=cur_sub->ob_level) || cur_sub->wait_for_token==-1) ) { _giza_stop_sub(); cur_sub--; } /* Move on to next 'glyph' position */ nGlyph++; } yylex_destroy (scanner); _giza_set_trans (oldTrans); /* In case we broke from the loop but there's font change still in effect switch back to the font we started with */ if( cur_font>=oldfont ) giza_set_font( oldfont[0].font ); } giza-1.5.0/src/pgplot.pc.in000066400000000000000000000013771477367113400155210ustar00rootroot00000000000000# Process this file with autoconf to produce a pkg-config metadata file. # Copyright 2002-2015 Daniel Price # # This file is free software; as a special exception the author gives # unlimited permission to copy and/or distribute it, with or without # modifications, as long as this notice is preserved. # # This file is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY, to the extent permitted by law; without even the # implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. prefix=@prefix@ exec_prefix=@exec_prefix@ libdir=@libdir@ includedir=@includedir@ Name: Pgplot Description: PGPLOT/Fortran interface for giza URL: http://giza.sourceforge.net Version: @VERSION@ Libs: -L${libdir} -lpgplot Cflags: -I${includedir} giza-1.5.0/test/000077500000000000000000000000001477367113400134435ustar00rootroot00000000000000giza-1.5.0/test/C/000077500000000000000000000000001477367113400136255ustar00rootroot00000000000000giza-1.5.0/test/C/Makefile.am000066400000000000000000000011071477367113400156600ustar00rootroot00000000000000AM_CFLAGS = $(WERROR_CFLAGS) $(WARN_CFLAGS) AM_CPPFLAGS = -I../../src AM_LDFLAGS = -no-install -lm -lX11 LDADD = ../../src/libgiza.la CLEANFILES = *.png *.pdf *.svg ctests = test-arrow test-box test-cairo-xw test-change-page \ test-circle test-colour-index \ test-environment \ test-error-bars test-format-number test-giza-xw test-line-cap \ test-line-style test-openclose test-pdf test-png test-points \ test-qtext test-rectangle test-set-line-width \ test-svg test-vector test-window test-XOpenDisplay test-contour test-render TESTS = $(ctests) check_PROGRAMS = $(ctests) giza-1.5.0/test/C/Makefile.in000066400000000000000000001574721477367113400157120ustar00rootroot00000000000000# Makefile.in generated by automake 1.17 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2024 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) am__rm_f = rm -f $(am__rm_f_notfound) am__rm_rf = rm -rf $(am__rm_f_notfound) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ TESTS = $(am__EXEEXT_1) check_PROGRAMS = $(am__EXEEXT_1) subdir = test/C ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__EXEEXT_1 = test-arrow$(EXEEXT) test-box$(EXEEXT) \ test-cairo-xw$(EXEEXT) test-change-page$(EXEEXT) \ test-circle$(EXEEXT) test-colour-index$(EXEEXT) \ test-environment$(EXEEXT) test-error-bars$(EXEEXT) \ test-format-number$(EXEEXT) test-giza-xw$(EXEEXT) \ test-line-cap$(EXEEXT) test-line-style$(EXEEXT) \ test-openclose$(EXEEXT) test-pdf$(EXEEXT) test-png$(EXEEXT) \ test-points$(EXEEXT) test-qtext$(EXEEXT) \ test-rectangle$(EXEEXT) test-set-line-width$(EXEEXT) \ test-svg$(EXEEXT) test-vector$(EXEEXT) test-window$(EXEEXT) \ test-XOpenDisplay$(EXEEXT) test-contour$(EXEEXT) \ test-render$(EXEEXT) test_XOpenDisplay_SOURCES = test-XOpenDisplay.c test_XOpenDisplay_OBJECTS = test-XOpenDisplay.$(OBJEXT) test_XOpenDisplay_LDADD = $(LDADD) test_XOpenDisplay_DEPENDENCIES = ../../src/libgiza.la AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent am__v_lt_1 = test_arrow_SOURCES = test-arrow.c test_arrow_OBJECTS = test-arrow.$(OBJEXT) test_arrow_LDADD = $(LDADD) test_arrow_DEPENDENCIES = ../../src/libgiza.la test_box_SOURCES = test-box.c test_box_OBJECTS = test-box.$(OBJEXT) test_box_LDADD = $(LDADD) test_box_DEPENDENCIES = ../../src/libgiza.la test_cairo_xw_SOURCES = test-cairo-xw.c test_cairo_xw_OBJECTS = test-cairo-xw.$(OBJEXT) test_cairo_xw_LDADD = $(LDADD) test_cairo_xw_DEPENDENCIES = ../../src/libgiza.la test_change_page_SOURCES = test-change-page.c test_change_page_OBJECTS = test-change-page.$(OBJEXT) test_change_page_LDADD = $(LDADD) test_change_page_DEPENDENCIES = ../../src/libgiza.la test_circle_SOURCES = test-circle.c test_circle_OBJECTS = test-circle.$(OBJEXT) test_circle_LDADD = $(LDADD) test_circle_DEPENDENCIES = ../../src/libgiza.la test_colour_index_SOURCES = test-colour-index.c test_colour_index_OBJECTS = test-colour-index.$(OBJEXT) test_colour_index_LDADD = $(LDADD) test_colour_index_DEPENDENCIES = ../../src/libgiza.la test_contour_SOURCES = test-contour.c test_contour_OBJECTS = test-contour.$(OBJEXT) test_contour_LDADD = $(LDADD) test_contour_DEPENDENCIES = ../../src/libgiza.la test_environment_SOURCES = test-environment.c test_environment_OBJECTS = test-environment.$(OBJEXT) test_environment_LDADD = $(LDADD) test_environment_DEPENDENCIES = ../../src/libgiza.la test_error_bars_SOURCES = test-error-bars.c test_error_bars_OBJECTS = test-error-bars.$(OBJEXT) test_error_bars_LDADD = $(LDADD) test_error_bars_DEPENDENCIES = ../../src/libgiza.la test_format_number_SOURCES = test-format-number.c test_format_number_OBJECTS = test-format-number.$(OBJEXT) test_format_number_LDADD = $(LDADD) test_format_number_DEPENDENCIES = ../../src/libgiza.la test_giza_xw_SOURCES = test-giza-xw.c test_giza_xw_OBJECTS = test-giza-xw.$(OBJEXT) test_giza_xw_LDADD = $(LDADD) test_giza_xw_DEPENDENCIES = ../../src/libgiza.la test_line_cap_SOURCES = test-line-cap.c test_line_cap_OBJECTS = test-line-cap.$(OBJEXT) test_line_cap_LDADD = $(LDADD) test_line_cap_DEPENDENCIES = ../../src/libgiza.la test_line_style_SOURCES = test-line-style.c test_line_style_OBJECTS = test-line-style.$(OBJEXT) test_line_style_LDADD = $(LDADD) test_line_style_DEPENDENCIES = ../../src/libgiza.la test_openclose_SOURCES = test-openclose.c test_openclose_OBJECTS = test-openclose.$(OBJEXT) test_openclose_LDADD = $(LDADD) test_openclose_DEPENDENCIES = ../../src/libgiza.la test_pdf_SOURCES = test-pdf.c test_pdf_OBJECTS = test-pdf.$(OBJEXT) test_pdf_LDADD = $(LDADD) test_pdf_DEPENDENCIES = ../../src/libgiza.la test_png_SOURCES = test-png.c test_png_OBJECTS = test-png.$(OBJEXT) test_png_LDADD = $(LDADD) test_png_DEPENDENCIES = ../../src/libgiza.la test_points_SOURCES = test-points.c test_points_OBJECTS = test-points.$(OBJEXT) test_points_LDADD = $(LDADD) test_points_DEPENDENCIES = ../../src/libgiza.la test_qtext_SOURCES = test-qtext.c test_qtext_OBJECTS = test-qtext.$(OBJEXT) test_qtext_LDADD = $(LDADD) test_qtext_DEPENDENCIES = ../../src/libgiza.la test_rectangle_SOURCES = test-rectangle.c test_rectangle_OBJECTS = test-rectangle.$(OBJEXT) test_rectangle_LDADD = $(LDADD) test_rectangle_DEPENDENCIES = ../../src/libgiza.la test_render_SOURCES = test-render.c test_render_OBJECTS = test-render.$(OBJEXT) test_render_LDADD = $(LDADD) test_render_DEPENDENCIES = ../../src/libgiza.la test_set_line_width_SOURCES = test-set-line-width.c test_set_line_width_OBJECTS = test-set-line-width.$(OBJEXT) test_set_line_width_LDADD = $(LDADD) test_set_line_width_DEPENDENCIES = ../../src/libgiza.la test_svg_SOURCES = test-svg.c test_svg_OBJECTS = test-svg.$(OBJEXT) test_svg_LDADD = $(LDADD) test_svg_DEPENDENCIES = ../../src/libgiza.la test_vector_SOURCES = test-vector.c test_vector_OBJECTS = test-vector.$(OBJEXT) test_vector_LDADD = $(LDADD) test_vector_DEPENDENCIES = ../../src/libgiza.la test_window_SOURCES = test-window.c test_window_OBJECTS = test-window.$(OBJEXT) test_window_LDADD = $(LDADD) test_window_DEPENDENCIES = ../../src/libgiza.la AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/build/depcomp am__maybe_remake_depfiles = depfiles am__depfiles_remade = ./$(DEPDIR)/test-XOpenDisplay.Po \ ./$(DEPDIR)/test-arrow.Po ./$(DEPDIR)/test-box.Po \ ./$(DEPDIR)/test-cairo-xw.Po ./$(DEPDIR)/test-change-page.Po \ ./$(DEPDIR)/test-circle.Po ./$(DEPDIR)/test-colour-index.Po \ ./$(DEPDIR)/test-contour.Po ./$(DEPDIR)/test-environment.Po \ ./$(DEPDIR)/test-error-bars.Po \ ./$(DEPDIR)/test-format-number.Po ./$(DEPDIR)/test-giza-xw.Po \ ./$(DEPDIR)/test-line-cap.Po ./$(DEPDIR)/test-line-style.Po \ ./$(DEPDIR)/test-openclose.Po ./$(DEPDIR)/test-pdf.Po \ ./$(DEPDIR)/test-png.Po ./$(DEPDIR)/test-points.Po \ ./$(DEPDIR)/test-qtext.Po ./$(DEPDIR)/test-rectangle.Po \ ./$(DEPDIR)/test-render.Po ./$(DEPDIR)/test-set-line-width.Po \ ./$(DEPDIR)/test-svg.Po ./$(DEPDIR)/test-vector.Po \ ./$(DEPDIR)/test-window.Po am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; am__v_CC_1 = CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; am__v_CCLD_1 = SOURCES = test-XOpenDisplay.c test-arrow.c test-box.c test-cairo-xw.c \ test-change-page.c test-circle.c test-colour-index.c \ test-contour.c test-environment.c test-error-bars.c \ test-format-number.c test-giza-xw.c test-line-cap.c \ test-line-style.c test-openclose.c test-pdf.c test-png.c \ test-points.c test-qtext.c test-rectangle.c test-render.c \ test-set-line-width.c test-svg.c test-vector.c test-window.c DIST_SOURCES = test-XOpenDisplay.c test-arrow.c test-box.c \ test-cairo-xw.c test-change-page.c test-circle.c \ test-colour-index.c test-contour.c test-environment.c \ test-error-bars.c test-format-number.c test-giza-xw.c \ test-line-cap.c test-line-style.c test-openclose.c test-pdf.c \ test-png.c test-points.c test-qtext.c test-rectangle.c \ test-render.c test-set-line-width.c test-svg.c test-vector.c \ test-window.c am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` am__tty_colors_dummy = \ mgn= red= grn= lgn= blu= brg= std=; \ am__color_tests=no am__tty_colors = { \ $(am__tty_colors_dummy); \ if test "X$(AM_COLOR_TESTS)" = Xno; then \ am__color_tests=no; \ elif test "X$(AM_COLOR_TESTS)" = Xalways; then \ am__color_tests=yes; \ elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \ am__color_tests=yes; \ fi; \ if test $$am__color_tests = yes; then \ red=''; \ grn=''; \ lgn=''; \ blu=''; \ mgn=''; \ brg=''; \ std=''; \ fi; \ } am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && echo $$files | $(am__xargs_n) 40 $(am__rm_f); }; \ } am__recheck_rx = ^[ ]*:recheck:[ ]* am__global_test_result_rx = ^[ ]*:global-test-result:[ ]* am__copy_in_global_log_rx = ^[ ]*:copy-in-global-log:[ ]* # A command that, given a newline-separated list of test names on the # standard input, print the name of the tests that are to be re-run # upon "make recheck". am__list_recheck_tests = $(AWK) '{ \ recheck = 1; \ while ((rc = (getline line < ($$0 ".trs"))) != 0) \ { \ if (rc < 0) \ { \ if ((getline line2 < ($$0 ".log")) < 0) \ recheck = 0; \ break; \ } \ else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \ { \ recheck = 0; \ break; \ } \ else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \ { \ break; \ } \ }; \ if (recheck) \ print $$0; \ close ($$0 ".trs"); \ close ($$0 ".log"); \ }' # A command that, given a newline-separated list of test names on the # standard input, create the global log from their .trs and .log files. am__create_global_log = $(AWK) ' \ function fatal(msg) \ { \ print "fatal: making $@: " msg | "cat >&2"; \ exit 1; \ } \ function rst_section(header) \ { \ print header; \ len = length(header); \ for (i = 1; i <= len; i = i + 1) \ printf "="; \ printf "\n\n"; \ } \ { \ copy_in_global_log = 1; \ global_test_result = "RUN"; \ while ((rc = (getline line < ($$0 ".trs"))) != 0) \ { \ if (rc < 0) \ fatal("failed to read from " $$0 ".trs"); \ if (line ~ /$(am__global_test_result_rx)/) \ { \ sub("$(am__global_test_result_rx)", "", line); \ sub("[ ]*$$", "", line); \ global_test_result = line; \ } \ else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \ copy_in_global_log = 0; \ }; \ if (copy_in_global_log) \ { \ rst_section(global_test_result ": " $$0); \ while ((rc = (getline line < ($$0 ".log"))) != 0) \ { \ if (rc < 0) \ fatal("failed to read from " $$0 ".log"); \ print line; \ }; \ printf "\n"; \ }; \ close ($$0 ".trs"); \ close ($$0 ".log"); \ }' # Restructured Text title. am__rst_title = { sed 's/.*/ & /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; } # Solaris 10 'make', and several other traditional 'make' implementations, # pass "-e" to $(SHELL), and POSIX 2008 even requires this. Work around it # by disabling -e (using the XSI extension "set +e") if it's set. am__sh_e_setup = case $$- in *e*) set +e;; esac # Default flags passed to test drivers. am__common_driver_flags = \ --color-tests "$$am__color_tests" \ $$am__collect_skipped_logs \ --enable-hard-errors "$$am__enable_hard_errors" \ --expect-failure "$$am__expect_failure" # To be inserted before the command running the test. Creates the # directory for the log if needed. Stores in $dir the directory # containing $f, in $tst the test, in $log the log. Executes the # developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and # passes TESTS_ENVIRONMENT. Set up options for the wrapper that # will run the test scripts (or their associated LOG_COMPILER, if # thy have one). am__check_pre = \ $(am__sh_e_setup); \ $(am__vpath_adj_setup) $(am__vpath_adj) \ $(am__tty_colors); \ srcdir=$(srcdir); export srcdir; \ case "$@" in \ */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;; \ *) am__odir=.;; \ esac; \ test "x$$am__odir" = x"." || test -d "$$am__odir" \ || $(MKDIR_P) "$$am__odir" || exit $$?; \ if test -f "./$$f"; then dir=./; \ elif test -f "$$f"; then dir=; \ else dir="$(srcdir)/"; fi; \ tst=$$dir$$f; log='$@'; \ if test -n '$(IGNORE_SKIPPED_LOGS)'; then \ am__collect_skipped_logs='--collect-skipped-logs no'; \ else \ am__collect_skipped_logs=''; \ fi; \ if test -n '$(DISABLE_HARD_ERRORS)'; then \ am__enable_hard_errors=no; \ else \ am__enable_hard_errors=yes; \ fi; \ case " $(XFAIL_TESTS) " in \ *[\ \ ]$$f[\ \ ]* | *[\ \ ]$$dir$$f[\ \ ]*) \ am__expect_failure=yes;; \ *) \ am__expect_failure=no;; \ esac; \ $(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT) # A shell command to get the names of the tests scripts with any registered # extension removed (i.e., equivalently, the names of the test logs, with # the '.log' extension removed). The result is saved in the shell variable # '$bases'. This honors runtime overriding of TESTS and TEST_LOGS. Sadly, # we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)", # since that might cause problem with VPATH rewrites for suffix-less tests. # See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'. am__set_TESTS_bases = \ bases='$(TEST_LOGS)'; \ bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \ bases=`echo $$bases` AM_TESTSUITE_SUMMARY_HEADER = ' for $(PACKAGE_STRING)' RECHECK_LOGS = $(TEST_LOGS) AM_RECURSIVE_TARGETS = check recheck TEST_SUITE_LOG = test-suite.log TEST_EXTENSIONS = @EXEEXT@ .test LOG_DRIVER = $(SHELL) $(top_srcdir)/build/test-driver LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS) am__set_b = \ case '$@' in \ */*) \ case '$*' in \ */*) b='$*';; \ *) b=`echo '$@' | sed 's/\.log$$//'`; \ esac;; \ *) \ b='$*';; \ esac am__test_logs1 = $(TESTS:=.log) am__test_logs2 = $(am__test_logs1:@EXEEXT@.log=.log) TEST_LOGS = $(am__test_logs2:.test.log=.log) TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/build/test-driver TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \ $(TEST_LOG_FLAGS) am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/build/depcomp \ $(top_srcdir)/build/test-driver DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CAIRO_CFLAGS = @CAIRO_CFLAGS@ CAIRO_LIBS = @CAIRO_LIBS@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPPFLAGS = @CPPFLAGS@ CSCOPE = @CSCOPE@ CTAGS = @CTAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ ETAGS = @ETAGS@ EXEEXT = @EXEEXT@ FC = @FC@ FCFLAGS = @FCFLAGS@ FC_CFLAGS = @FC_CFLAGS@ FC_LIBS = @FC_LIBS@ FGREP = @FGREP@ FT_CFLAGS = @FT_CFLAGS@ FT_LIBS = @FT_LIBS@ GIZA_VERSION_MAJOR = @GIZA_VERSION_MAJOR@ GIZA_VERSION_MICRO = @GIZA_VERSION_MICRO@ GIZA_VERSION_MINOR = @GIZA_VERSION_MINOR@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ LT_AGE = @LT_AGE@ LT_CURRENT = @LT_CURRENT@ LT_REVISION = @LT_REVISION@ LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ X11_CFLAGS = @X11_CFLAGS@ X11_LIBS = @X11_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ ac_ct_FC = @ac_ct_FC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__rm_f_notfound = @am__rm_f_notfound@ am__tar = @am__tar@ am__untar = @am__untar@ am__xargs_n = @am__xargs_n@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ AM_CFLAGS = $(WERROR_CFLAGS) $(WARN_CFLAGS) AM_CPPFLAGS = -I../../src AM_LDFLAGS = -no-install -lm -lX11 LDADD = ../../src/libgiza.la CLEANFILES = *.png *.pdf *.svg ctests = test-arrow test-box test-cairo-xw test-change-page \ test-circle test-colour-index \ test-environment \ test-error-bars test-format-number test-giza-xw test-line-cap \ test-line-style test-openclose test-pdf test-png test-points \ test-qtext test-rectangle test-set-line-width \ test-svg test-vector test-window test-XOpenDisplay test-contour test-render all: all-am .SUFFIXES: .SUFFIXES: .c .lo .log .o .obj .test .test$(EXEEXT) .trs $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu test/C/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu test/C/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): clean-checkPROGRAMS: $(am__rm_f) $(check_PROGRAMS) test -z "$(EXEEXT)" || $(am__rm_f) $(check_PROGRAMS:$(EXEEXT)=) test-XOpenDisplay$(EXEEXT): $(test_XOpenDisplay_OBJECTS) $(test_XOpenDisplay_DEPENDENCIES) $(EXTRA_test_XOpenDisplay_DEPENDENCIES) @rm -f test-XOpenDisplay$(EXEEXT) $(AM_V_CCLD)$(LINK) $(test_XOpenDisplay_OBJECTS) $(test_XOpenDisplay_LDADD) $(LIBS) test-arrow$(EXEEXT): $(test_arrow_OBJECTS) $(test_arrow_DEPENDENCIES) $(EXTRA_test_arrow_DEPENDENCIES) @rm -f test-arrow$(EXEEXT) $(AM_V_CCLD)$(LINK) $(test_arrow_OBJECTS) $(test_arrow_LDADD) $(LIBS) test-box$(EXEEXT): $(test_box_OBJECTS) $(test_box_DEPENDENCIES) $(EXTRA_test_box_DEPENDENCIES) @rm -f test-box$(EXEEXT) $(AM_V_CCLD)$(LINK) $(test_box_OBJECTS) $(test_box_LDADD) $(LIBS) test-cairo-xw$(EXEEXT): $(test_cairo_xw_OBJECTS) $(test_cairo_xw_DEPENDENCIES) $(EXTRA_test_cairo_xw_DEPENDENCIES) @rm -f test-cairo-xw$(EXEEXT) $(AM_V_CCLD)$(LINK) $(test_cairo_xw_OBJECTS) $(test_cairo_xw_LDADD) $(LIBS) test-change-page$(EXEEXT): $(test_change_page_OBJECTS) $(test_change_page_DEPENDENCIES) $(EXTRA_test_change_page_DEPENDENCIES) @rm -f test-change-page$(EXEEXT) $(AM_V_CCLD)$(LINK) $(test_change_page_OBJECTS) $(test_change_page_LDADD) $(LIBS) test-circle$(EXEEXT): $(test_circle_OBJECTS) $(test_circle_DEPENDENCIES) $(EXTRA_test_circle_DEPENDENCIES) @rm -f test-circle$(EXEEXT) $(AM_V_CCLD)$(LINK) $(test_circle_OBJECTS) $(test_circle_LDADD) $(LIBS) test-colour-index$(EXEEXT): $(test_colour_index_OBJECTS) $(test_colour_index_DEPENDENCIES) $(EXTRA_test_colour_index_DEPENDENCIES) @rm -f test-colour-index$(EXEEXT) $(AM_V_CCLD)$(LINK) $(test_colour_index_OBJECTS) $(test_colour_index_LDADD) $(LIBS) test-contour$(EXEEXT): $(test_contour_OBJECTS) $(test_contour_DEPENDENCIES) $(EXTRA_test_contour_DEPENDENCIES) @rm -f test-contour$(EXEEXT) $(AM_V_CCLD)$(LINK) $(test_contour_OBJECTS) $(test_contour_LDADD) $(LIBS) test-environment$(EXEEXT): $(test_environment_OBJECTS) $(test_environment_DEPENDENCIES) $(EXTRA_test_environment_DEPENDENCIES) @rm -f test-environment$(EXEEXT) $(AM_V_CCLD)$(LINK) $(test_environment_OBJECTS) $(test_environment_LDADD) $(LIBS) test-error-bars$(EXEEXT): $(test_error_bars_OBJECTS) $(test_error_bars_DEPENDENCIES) $(EXTRA_test_error_bars_DEPENDENCIES) @rm -f test-error-bars$(EXEEXT) $(AM_V_CCLD)$(LINK) $(test_error_bars_OBJECTS) $(test_error_bars_LDADD) $(LIBS) test-format-number$(EXEEXT): $(test_format_number_OBJECTS) $(test_format_number_DEPENDENCIES) $(EXTRA_test_format_number_DEPENDENCIES) @rm -f test-format-number$(EXEEXT) $(AM_V_CCLD)$(LINK) $(test_format_number_OBJECTS) $(test_format_number_LDADD) $(LIBS) test-giza-xw$(EXEEXT): $(test_giza_xw_OBJECTS) $(test_giza_xw_DEPENDENCIES) $(EXTRA_test_giza_xw_DEPENDENCIES) @rm -f test-giza-xw$(EXEEXT) $(AM_V_CCLD)$(LINK) $(test_giza_xw_OBJECTS) $(test_giza_xw_LDADD) $(LIBS) test-line-cap$(EXEEXT): $(test_line_cap_OBJECTS) $(test_line_cap_DEPENDENCIES) $(EXTRA_test_line_cap_DEPENDENCIES) @rm -f test-line-cap$(EXEEXT) $(AM_V_CCLD)$(LINK) $(test_line_cap_OBJECTS) $(test_line_cap_LDADD) $(LIBS) test-line-style$(EXEEXT): $(test_line_style_OBJECTS) $(test_line_style_DEPENDENCIES) $(EXTRA_test_line_style_DEPENDENCIES) @rm -f test-line-style$(EXEEXT) $(AM_V_CCLD)$(LINK) $(test_line_style_OBJECTS) $(test_line_style_LDADD) $(LIBS) test-openclose$(EXEEXT): $(test_openclose_OBJECTS) $(test_openclose_DEPENDENCIES) $(EXTRA_test_openclose_DEPENDENCIES) @rm -f test-openclose$(EXEEXT) $(AM_V_CCLD)$(LINK) $(test_openclose_OBJECTS) $(test_openclose_LDADD) $(LIBS) test-pdf$(EXEEXT): $(test_pdf_OBJECTS) $(test_pdf_DEPENDENCIES) $(EXTRA_test_pdf_DEPENDENCIES) @rm -f test-pdf$(EXEEXT) $(AM_V_CCLD)$(LINK) $(test_pdf_OBJECTS) $(test_pdf_LDADD) $(LIBS) test-png$(EXEEXT): $(test_png_OBJECTS) $(test_png_DEPENDENCIES) $(EXTRA_test_png_DEPENDENCIES) @rm -f test-png$(EXEEXT) $(AM_V_CCLD)$(LINK) $(test_png_OBJECTS) $(test_png_LDADD) $(LIBS) test-points$(EXEEXT): $(test_points_OBJECTS) $(test_points_DEPENDENCIES) $(EXTRA_test_points_DEPENDENCIES) @rm -f test-points$(EXEEXT) $(AM_V_CCLD)$(LINK) $(test_points_OBJECTS) $(test_points_LDADD) $(LIBS) test-qtext$(EXEEXT): $(test_qtext_OBJECTS) $(test_qtext_DEPENDENCIES) $(EXTRA_test_qtext_DEPENDENCIES) @rm -f test-qtext$(EXEEXT) $(AM_V_CCLD)$(LINK) $(test_qtext_OBJECTS) $(test_qtext_LDADD) $(LIBS) test-rectangle$(EXEEXT): $(test_rectangle_OBJECTS) $(test_rectangle_DEPENDENCIES) $(EXTRA_test_rectangle_DEPENDENCIES) @rm -f test-rectangle$(EXEEXT) $(AM_V_CCLD)$(LINK) $(test_rectangle_OBJECTS) $(test_rectangle_LDADD) $(LIBS) test-render$(EXEEXT): $(test_render_OBJECTS) $(test_render_DEPENDENCIES) $(EXTRA_test_render_DEPENDENCIES) @rm -f test-render$(EXEEXT) $(AM_V_CCLD)$(LINK) $(test_render_OBJECTS) $(test_render_LDADD) $(LIBS) test-set-line-width$(EXEEXT): $(test_set_line_width_OBJECTS) $(test_set_line_width_DEPENDENCIES) $(EXTRA_test_set_line_width_DEPENDENCIES) @rm -f test-set-line-width$(EXEEXT) $(AM_V_CCLD)$(LINK) $(test_set_line_width_OBJECTS) $(test_set_line_width_LDADD) $(LIBS) test-svg$(EXEEXT): $(test_svg_OBJECTS) $(test_svg_DEPENDENCIES) $(EXTRA_test_svg_DEPENDENCIES) @rm -f test-svg$(EXEEXT) $(AM_V_CCLD)$(LINK) $(test_svg_OBJECTS) $(test_svg_LDADD) $(LIBS) test-vector$(EXEEXT): $(test_vector_OBJECTS) $(test_vector_DEPENDENCIES) $(EXTRA_test_vector_DEPENDENCIES) @rm -f test-vector$(EXEEXT) $(AM_V_CCLD)$(LINK) $(test_vector_OBJECTS) $(test_vector_LDADD) $(LIBS) test-window$(EXEEXT): $(test_window_OBJECTS) $(test_window_DEPENDENCIES) $(EXTRA_test_window_DEPENDENCIES) @rm -f test-window$(EXEEXT) $(AM_V_CCLD)$(LINK) $(test_window_OBJECTS) $(test_window_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-XOpenDisplay.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-arrow.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-box.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-cairo-xw.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-change-page.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-circle.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-colour-index.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-contour.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-environment.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-error-bars.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-format-number.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-giza-xw.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-line-cap.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-line-style.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-openclose.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-pdf.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-png.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-points.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-qtext.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-rectangle.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-render.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-set-line-width.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-svg.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-vector.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-window.Po@am__quote@ # am--include-marker $(am__depfiles_remade): @$(MKDIR_P) $(@D) @: >>$@ am--depfiles: $(am__depfiles_remade) .c.o: @am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: @am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .c.lo: @am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-am TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-am CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-am cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags # Recover from deleted '.trs' file; this should ensure that # "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create # both 'foo.log' and 'foo.trs'. Break the recipe in two subshells # to avoid problems with "make -n". .log.trs: rm -f $< $@ $(MAKE) $(AM_MAKEFLAGS) $< # Leading 'am--fnord' is there to ensure the list of targets does not # expand to empty, as could happen e.g. with make check TESTS=''. am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck) am--force-recheck: @: $(TEST_SUITE_LOG): $(TEST_LOGS) @$(am__set_TESTS_bases); \ am__f_ok () { test -f "$$1" && test -r "$$1"; }; \ redo_bases=`for i in $$bases; do \ am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \ done`; \ if test -n "$$redo_bases"; then \ redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \ redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \ if $(am__make_dryrun); then :; else \ rm -f $$redo_logs && rm -f $$redo_results || exit 1; \ fi; \ fi; \ if test -n "$$am__remaking_logs"; then \ echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \ "recursion detected" >&2; \ elif test -n "$$redo_logs"; then \ am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \ fi; \ if $(am__make_dryrun); then :; else \ st=0; \ errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \ for i in $$redo_bases; do \ test -f $$i.trs && test -r $$i.trs \ || { echo "$$errmsg $$i.trs" >&2; st=1; }; \ test -f $$i.log && test -r $$i.log \ || { echo "$$errmsg $$i.log" >&2; st=1; }; \ done; \ test $$st -eq 0 || exit 1; \ fi @$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \ ws='[ ]'; \ results=`for b in $$bases; do echo $$b.trs; done`; \ test -n "$$results" || results=/dev/null; \ all=` grep "^$$ws*:test-result:" $$results | wc -l`; \ pass=` grep "^$$ws*:test-result:$$ws*PASS" $$results | wc -l`; \ fail=` grep "^$$ws*:test-result:$$ws*FAIL" $$results | wc -l`; \ skip=` grep "^$$ws*:test-result:$$ws*SKIP" $$results | wc -l`; \ xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \ xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \ error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \ if test `expr $$fail + $$xpass + $$error` -eq 0; then \ success=true; \ else \ success=false; \ fi; \ br='==================='; br=$$br$$br$$br$$br; \ result_count () \ { \ if test x"$$1" = x"--maybe-color"; then \ maybe_colorize=yes; \ elif test x"$$1" = x"--no-color"; then \ maybe_colorize=no; \ else \ echo "$@: invalid 'result_count' usage" >&2; exit 4; \ fi; \ shift; \ desc=$$1 count=$$2; \ if test $$maybe_colorize = yes && test $$count -gt 0; then \ color_start=$$3 color_end=$$std; \ else \ color_start= color_end=; \ fi; \ echo "$${color_start}# $$desc $$count$${color_end}"; \ }; \ create_testsuite_report () \ { \ result_count $$1 "TOTAL:" $$all "$$brg"; \ result_count $$1 "PASS: " $$pass "$$grn"; \ result_count $$1 "SKIP: " $$skip "$$blu"; \ result_count $$1 "XFAIL:" $$xfail "$$lgn"; \ result_count $$1 "FAIL: " $$fail "$$red"; \ result_count $$1 "XPASS:" $$xpass "$$red"; \ result_count $$1 "ERROR:" $$error "$$mgn"; \ }; \ output_system_information () \ { \ echo; \ { uname -a | $(AWK) '{ \ printf "System information (uname -a):"; \ for (i = 1; i < NF; ++i) \ { \ if (i != 2) \ printf " %s", $$i; \ } \ printf "\n"; \ }'; } 2>&1; \ if test -r /etc/os-release; then \ echo "Distribution information (/etc/os-release):"; \ sed 8q /etc/os-release; \ elif test -r /etc/issue; then \ echo "Distribution information (/etc/issue):"; \ cat /etc/issue; \ fi; \ }; \ please_report () \ { \ echo "Some test(s) failed. Please report this to $(PACKAGE_BUGREPORT),"; \ echo "together with the test-suite.log file (gzipped) and your system"; \ echo "information. Thanks."; \ }; \ { \ echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" | \ $(am__rst_title); \ create_testsuite_report --no-color; \ output_system_information; \ echo; \ echo ".. contents:: :depth: 2"; \ echo; \ for b in $$bases; do echo $$b; done \ | $(am__create_global_log); \ } >$(TEST_SUITE_LOG).tmp || exit 1; \ mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG); \ if $$success; then \ col="$$grn"; \ else \ col="$$red"; \ test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG); \ fi; \ echo "$${col}$$br$${std}"; \ echo "$${col}Testsuite summary"$(AM_TESTSUITE_SUMMARY_HEADER)"$${std}"; \ echo "$${col}$$br$${std}"; \ create_testsuite_report --maybe-color; \ echo "$$col$$br$$std"; \ if $$success; then :; else \ echo "$${col}See $(subdir)/$(TEST_SUITE_LOG) for debugging.$${std}";\ if test -n "$(PACKAGE_BUGREPORT)"; then \ please_report | sed -e "s/^/$${col}/" -e s/'$$'/"$${std}"/; \ fi; \ echo "$$col$$br$$std"; \ fi; \ $$success || exit 1 check-TESTS: $(check_PROGRAMS) @$(am__rm_f) $(RECHECK_LOGS) @$(am__rm_f) $(RECHECK_LOGS:.log=.trs) @$(am__rm_f) $(TEST_SUITE_LOG) @set +e; $(am__set_TESTS_bases); \ log_list=`for i in $$bases; do echo $$i.log; done`; \ log_list=`echo $$log_list`; \ $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \ exit $$?; recheck: all $(check_PROGRAMS) @$(am__rm_f) $(TEST_SUITE_LOG) @set +e; $(am__set_TESTS_bases); \ bases=`for i in $$bases; do echo $$i; done \ | $(am__list_recheck_tests)` || exit 1; \ log_list=`for i in $$bases; do echo $$i.log; done`; \ log_list=`echo $$log_list`; \ $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \ am__force_recheck=am--force-recheck \ TEST_LOGS="$$log_list"; \ exit $$? test-arrow.log: test-arrow$(EXEEXT) @p='test-arrow$(EXEEXT)'; \ b='test-arrow'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) test-box.log: test-box$(EXEEXT) @p='test-box$(EXEEXT)'; \ b='test-box'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) test-cairo-xw.log: test-cairo-xw$(EXEEXT) @p='test-cairo-xw$(EXEEXT)'; \ b='test-cairo-xw'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) test-change-page.log: test-change-page$(EXEEXT) @p='test-change-page$(EXEEXT)'; \ b='test-change-page'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) test-circle.log: test-circle$(EXEEXT) @p='test-circle$(EXEEXT)'; \ b='test-circle'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) test-colour-index.log: test-colour-index$(EXEEXT) @p='test-colour-index$(EXEEXT)'; \ b='test-colour-index'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) test-environment.log: test-environment$(EXEEXT) @p='test-environment$(EXEEXT)'; \ b='test-environment'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) test-error-bars.log: test-error-bars$(EXEEXT) @p='test-error-bars$(EXEEXT)'; \ b='test-error-bars'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) test-format-number.log: test-format-number$(EXEEXT) @p='test-format-number$(EXEEXT)'; \ b='test-format-number'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) test-giza-xw.log: test-giza-xw$(EXEEXT) @p='test-giza-xw$(EXEEXT)'; \ b='test-giza-xw'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) test-line-cap.log: test-line-cap$(EXEEXT) @p='test-line-cap$(EXEEXT)'; \ b='test-line-cap'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) test-line-style.log: test-line-style$(EXEEXT) @p='test-line-style$(EXEEXT)'; \ b='test-line-style'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) test-openclose.log: test-openclose$(EXEEXT) @p='test-openclose$(EXEEXT)'; \ b='test-openclose'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) test-pdf.log: test-pdf$(EXEEXT) @p='test-pdf$(EXEEXT)'; \ b='test-pdf'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) test-png.log: test-png$(EXEEXT) @p='test-png$(EXEEXT)'; \ b='test-png'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) test-points.log: test-points$(EXEEXT) @p='test-points$(EXEEXT)'; \ b='test-points'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) test-qtext.log: test-qtext$(EXEEXT) @p='test-qtext$(EXEEXT)'; \ b='test-qtext'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) test-rectangle.log: test-rectangle$(EXEEXT) @p='test-rectangle$(EXEEXT)'; \ b='test-rectangle'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) test-set-line-width.log: test-set-line-width$(EXEEXT) @p='test-set-line-width$(EXEEXT)'; \ b='test-set-line-width'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) test-svg.log: test-svg$(EXEEXT) @p='test-svg$(EXEEXT)'; \ b='test-svg'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) test-vector.log: test-vector$(EXEEXT) @p='test-vector$(EXEEXT)'; \ b='test-vector'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) test-window.log: test-window$(EXEEXT) @p='test-window$(EXEEXT)'; \ b='test-window'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) test-XOpenDisplay.log: test-XOpenDisplay$(EXEEXT) @p='test-XOpenDisplay$(EXEEXT)'; \ b='test-XOpenDisplay'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) test-contour.log: test-contour$(EXEEXT) @p='test-contour$(EXEEXT)'; \ b='test-contour'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) test-render.log: test-render$(EXEEXT) @p='test-render$(EXEEXT)'; \ b='test-render'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) .test.log: @p='$<'; \ $(am__set_b); \ $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) @am__EXEEXT_TRUE@.test$(EXEEXT).log: @am__EXEEXT_TRUE@ @p='$<'; \ @am__EXEEXT_TRUE@ $(am__set_b); \ @am__EXEEXT_TRUE@ $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ @am__EXEEXT_TRUE@ --log-file $$b.log --trs-file $$b.trs \ @am__EXEEXT_TRUE@ $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ @am__EXEEXT_TRUE@ "$$tst" $(AM_TESTS_FD_REDIRECT) distdir: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am distdir-am: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) $(MAKE) $(AM_MAKEFLAGS) check-TESTS check: check-am all-am: Makefile installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: -$(am__rm_f) $(TEST_LOGS) -$(am__rm_f) $(TEST_LOGS:.log=.trs) -$(am__rm_f) $(TEST_SUITE_LOG) clean-generic: -$(am__rm_f) $(CLEANFILES) distclean-generic: -$(am__rm_f) $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || $(am__rm_f) $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-checkPROGRAMS clean-generic clean-libtool \ mostlyclean-am distclean: distclean-am -rm -f ./$(DEPDIR)/test-XOpenDisplay.Po -rm -f ./$(DEPDIR)/test-arrow.Po -rm -f ./$(DEPDIR)/test-box.Po -rm -f ./$(DEPDIR)/test-cairo-xw.Po -rm -f ./$(DEPDIR)/test-change-page.Po -rm -f ./$(DEPDIR)/test-circle.Po -rm -f ./$(DEPDIR)/test-colour-index.Po -rm -f ./$(DEPDIR)/test-contour.Po -rm -f ./$(DEPDIR)/test-environment.Po -rm -f ./$(DEPDIR)/test-error-bars.Po -rm -f ./$(DEPDIR)/test-format-number.Po -rm -f ./$(DEPDIR)/test-giza-xw.Po -rm -f ./$(DEPDIR)/test-line-cap.Po -rm -f ./$(DEPDIR)/test-line-style.Po -rm -f ./$(DEPDIR)/test-openclose.Po -rm -f ./$(DEPDIR)/test-pdf.Po -rm -f ./$(DEPDIR)/test-png.Po -rm -f ./$(DEPDIR)/test-points.Po -rm -f ./$(DEPDIR)/test-qtext.Po -rm -f ./$(DEPDIR)/test-rectangle.Po -rm -f ./$(DEPDIR)/test-render.Po -rm -f ./$(DEPDIR)/test-set-line-width.Po -rm -f ./$(DEPDIR)/test-svg.Po -rm -f ./$(DEPDIR)/test-vector.Po -rm -f ./$(DEPDIR)/test-window.Po -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f ./$(DEPDIR)/test-XOpenDisplay.Po -rm -f ./$(DEPDIR)/test-arrow.Po -rm -f ./$(DEPDIR)/test-box.Po -rm -f ./$(DEPDIR)/test-cairo-xw.Po -rm -f ./$(DEPDIR)/test-change-page.Po -rm -f ./$(DEPDIR)/test-circle.Po -rm -f ./$(DEPDIR)/test-colour-index.Po -rm -f ./$(DEPDIR)/test-contour.Po -rm -f ./$(DEPDIR)/test-environment.Po -rm -f ./$(DEPDIR)/test-error-bars.Po -rm -f ./$(DEPDIR)/test-format-number.Po -rm -f ./$(DEPDIR)/test-giza-xw.Po -rm -f ./$(DEPDIR)/test-line-cap.Po -rm -f ./$(DEPDIR)/test-line-style.Po -rm -f ./$(DEPDIR)/test-openclose.Po -rm -f ./$(DEPDIR)/test-pdf.Po -rm -f ./$(DEPDIR)/test-png.Po -rm -f ./$(DEPDIR)/test-points.Po -rm -f ./$(DEPDIR)/test-qtext.Po -rm -f ./$(DEPDIR)/test-rectangle.Po -rm -f ./$(DEPDIR)/test-render.Po -rm -f ./$(DEPDIR)/test-set-line-width.Po -rm -f ./$(DEPDIR)/test-svg.Po -rm -f ./$(DEPDIR)/test-vector.Po -rm -f ./$(DEPDIR)/test-window.Po -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: check-am install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am am--depfiles check check-TESTS \ check-am clean clean-checkPROGRAMS clean-generic clean-libtool \ cscopelist-am ctags ctags-am distclean distclean-compile \ distclean-generic distclean-libtool distclean-tags distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ recheck tags tags-am uninstall uninstall-am .PRECIOUS: Makefile # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: # Tell GNU make to disable its built-in pattern rules. %:: %,v %:: RCS/%,v %:: RCS/% %:: s.% %:: SCCS/s.% giza-1.5.0/test/C/test-XOpenDisplay.c000066400000000000000000000020011477367113400173160ustar00rootroot00000000000000/* giza - a scientific plotting library built on cairo * * Copyright (c) 2010 James Wetter and Daniel Price * Copyright (c) 2010-2012 Daniel Price * * This library is free software; and you are welcome to redistribute * it under the terms of the GNU General Public License * (GPL, see LICENSE file for details) and the provision that * this notice remains intact. If you modify this file, please * note section 5a) of the GPLv3 states that: * * a) The work must carry prominent notices stating that you modified * it, and giving a relevant date. * * This software is distributed "AS IS", with ABSOLUTELY NO WARRANTY. * See the GPL for specific language governing rights and limitations. * * The Original code is the giza plotting library. * * Contributor(s): * James Wetter * Daniel Price (main contact) */ #include int main () { Display *display; display = XOpenDisplay(NULL); XCloseDisplay(display); return 0; } giza-1.5.0/test/C/test-arrow.c000066400000000000000000000046141477367113400161050ustar00rootroot00000000000000/* giza - a scientific plotting library built on cairo * * Copyright (c) 2010 James Wetter and Daniel Price * Copyright (c) 2010-2012 Daniel Price * * This library is free software; and you are welcome to redistribute * it under the terms of the GNU General Public License * (GPL, see LICENSE file for details) and the provision that * this notice remains intact. If you modify this file, please * note section 5a) of the GPLv3 states that: * * a) The work must carry prominent notices stating that you modified * it, and giving a relevant date. * * This software is distributed "AS IS", with ABSOLUTELY NO WARRANTY. * See the GPL for specific language governing rights and limitations. * * The Original code is the giza plotting library. * * Contributor(s): * James Wetter * Daniel Price (main contact) */ #include #include void set_triangle(double angle, double *xpts, double *ypts) { xpts[0] = 0.5; ypts[0] = 0.5; xpts[1] = 0.5 + 0.25*cos(3.1415926/180.*angle); ypts[1] = 0.5; xpts[2] = 0.5; ypts[2] = 0.5 + 0.5*sin(3.1415926/180.*angle); } int main () { giza_open_device ("?", "arrows"); giza_start_warnings (); giza_set_window(0.,1.,0.,10.); giza_box ("BCTN", 0., 0, "BCTN", 0., 0); giza_arrow (0.475, 0.475, 0.5, 0.5); giza_arrow (0.5, 0., 0.5, 0.25); giza_arrow (0., 0.5, 0.25, 0.5); giza_set_arrow_style (2, 10., 0.); giza_arrow (0.525, 0.525, 0.550, 0.550); giza_set_arrow_style (1, 45., 0.); giza_arrow (0.425, 0.425, 0.450, 0.450); giza_set_arrow_style (1, 30., 0.); giza_arrow (0.575, 0.575, 0.600, 0.600); giza_set_arrow_style (1, 45., 1.0); giza_arrow (0.625, 0.625, 0.650, 0.650); giza_set_window(0.,1.,0.,1.); giza_arrow (0.5, 0., 0.5, 0.25); giza_arrow (0., 0.5, 0.25, 0.5); double angle=30.; double xpts[3],ypts[3]; set_triangle(angle,xpts,ypts); giza_set_fill(2); giza_polygon(3,xpts,ypts); giza_set_arrow_style(1,angle,0.); giza_arrow (0.5, 0.5, 0.5 + 0.25*cos(3.1415926/180.*angle), 0.5); giza_set_arrow_style (2, 45., 0.); giza_arrow (0.525, 0.525, 0.550, 0.550); giza_set_arrow_style (1, 85., 0.); giza_arrow (0.425, 0.425, 0.450, 0.450); giza_set_arrow_style (1, 30., 0.); giza_arrow (0.575, 0.575, 0.600, 0.600); giza_set_arrow_style (1, 45., .9); giza_arrow (0.625, 0.625, 0.650, 0.650); giza_close_device (); } giza-1.5.0/test/C/test-band.c000066400000000000000000000024521477367113400156550ustar00rootroot00000000000000/* giza - a scientific plotting library built on cairo * * Copyright (c) 2010 James Wetter and Daniel Price * Copyright (c) 2010-2012 Daniel Price * * This library is free software; and you are welcome to redistribute * it under the terms of the GNU General Public License * (GPL, see LICENSE file for details) and the provision that * this notice remains intact. If you modify this file, please * note section 5a) of the GPLv3 states that: * * a) The work must carry prominent notices stating that you modified * it, and giving a relevant date. * * This software is distributed "AS IS", with ABSOLUTELY NO WARRANTY. * See the GPL for specific language governing rights and limitations. * * The Original code is the giza plotting library. * * Contributor(s): * James Wetter * Daniel Price (main contact) */ #include #include int main () { giza_open_device ("?", "arrows"); giza_start_warnings (); giza_box ("BCNT", 0., 0, "BCNT", 0., 0); double xanc = 0., yanc = 0., x, y; char ch; giza_get_key_press (&xanc, &yanc, &ch); printf ("x = %f, y = %f, ch =%c\n", xanc, yanc, ch); giza_band (3, 0, xanc, yanc, &x, &y, &ch); printf ("x = %f, y = %f, ch =%c\n", x, y, ch); giza_close_device (); } giza-1.5.0/test/C/test-box.c000066400000000000000000000034351477367113400155430ustar00rootroot00000000000000/* giza - a scientific plotting library built on cairo * * Copyright (c) 2010 James Wetter and Daniel Price * Copyright (c) 2010-2012 Daniel Price * * This library is free software; and you are welcome to redistribute * it under the terms of the GNU General Public License * (GPL, see LICENSE file for details) and the provision that * this notice remains intact. If you modify this file, please * note section 5a) of the GPLv3 states that: * * a) The work must carry prominent notices stating that you modified * it, and giving a relevant date. * * This software is distributed "AS IS", with ABSOLUTELY NO WARRANTY. * See the GPL for specific language governing rights and limitations. * * The Original code is the giza plotting library. * * Contributor(s): * James Wetter * Daniel Price (main contact) */ #include int main () { giza_open_device ("/xw", "box!"); giza_set_window (0., 1., 0., 1.); giza_box ("BCTLN", 0., 0, "BCTN", 0., 0); giza_change_page (); giza_set_window (0., 0.5, 0., 0.5); giza_box ("BCLTN", 0., 0, "BCTN", 0., 0); giza_change_page (); giza_set_window (-5., 5., 0., 1.); giza_box ("BCTLN", 0., 0, "BCTN", 0., 0); giza_change_page (); giza_set_window (0., 100., 0., 1.); giza_box ("BCTNLS", 0., 0, "BCTN", 0., 0); giza_change_page (); giza_set_window (10.2, 11., 0., 1.); giza_box ("BCTNL", 0., 0, "BCTN", 0., 0); giza_change_page (); giza_set_window (0., 1., -5., 5.); giza_box ("BCTN", 0., 0, "BCTNL", 0., 0); giza_change_page (); giza_set_window (0., 1., 0., 100.); giza_box ("BCTNS", 0., 0, "BCTNL", 0., 0); giza_change_page (); giza_set_window (0., 1., 10.2, 11.); giza_box ("BCTN", 0., 0, "BCTNL", 0., 0); giza_close_device (); } giza-1.5.0/test/C/test-cairo-xw.c000066400000000000000000000043431477367113400165030ustar00rootroot00000000000000/* giza - a scientific plotting library built on cairo * * Copyright (c) 2010 James Wetter and Daniel Price * Copyright (c) 2010-2012 Daniel Price * * This library is free software; and you are welcome to redistribute * it under the terms of the GNU General Public License * (GPL, see LICENSE file for details) and the provision that * this notice remains intact. If you modify this file, please * note section 5a) of the GPLv3 states that: * * a) The work must carry prominent notices stating that you modified * it, and giving a relevant date. * * This software is distributed "AS IS", with ABSOLUTELY NO WARRANTY. * See the GPL for specific language governing rights and limitations. * * The Original code is the giza plotting library. * * Contributor(s): * James Wetter * Daniel Price (main contact) */ #include #include #include #include struct XWstuff { Display *display; Pixmap pixmap; Window window; Screen *screenptr; int screennum; Visual *visual; int width; int height; int depth; } XW; cairo_t *context; cairo_surface_t *surface; void test_openclose_cairo_xw (void) { /* basic Xwindow initialisation */ XW.width = 500; XW.height = 200; XW.display = XOpenDisplay (NULL); XW.screennum = DefaultScreen (XW.display); XW.depth = DefaultDepth(XW.display,XW.screennum); XW.visual = DefaultVisual (XW.display, XW.screennum); XW.window = XCreateSimpleWindow (XW.display, DefaultRootWindow (XW.display), 50, 50, /* origin */ XW.width, XW.height, /* size */ 0, 0, 0); XMapWindow (XW.display, XW.window); /* now cairo stuff */ surface = cairo_xlib_surface_create (XW.display, XW.window, XW.visual, XW.width, XW.height); context = cairo_create (surface); cairo_set_source_surface(context,surface,0,0); cairo_paint (context); cairo_destroy(context); cairo_surface_destroy (surface); /* clean up */ printf("start CloseDisplay\n"); XCloseDisplay (XW.display); printf(" end CloseDisplay\n"); } int main(void) { printf("libcairo v%s \n",CAIRO_VERSION_STRING); test_openclose_cairo_xw(); test_openclose_cairo_xw(); return 0; } giza-1.5.0/test/C/test-change-page.c000066400000000000000000000026471477367113400171160ustar00rootroot00000000000000/* giza - a scientific plotting library built on cairo * * Copyright (c) 2010 James Wetter and Daniel Price * Copyright (c) 2010-2012 Daniel Price * * This library is free software; and you are welcome to redistribute * it under the terms of the GNU General Public License * (GPL, see LICENSE file for details) and the provision that * this notice remains intact. If you modify this file, please * note section 5a) of the GPLv3 states that: * * a) The work must carry prominent notices stating that you modified * it, and giving a relevant date. * * This software is distributed "AS IS", with ABSOLUTELY NO WARRANTY. * See the GPL for specific language governing rights and limitations. * * The Original code is the giza plotting library. * * Contributor(s): * James Wetter * Daniel Price (main contact) */ #include int main () { giza_open_device ("?", "page-1"); giza_change_page (); giza_change_page (); giza_change_page (); giza_close_device (); giza_open_device ("?", "page-2"); giza_box ("BCTN", 0., 0, "BCTN", 0., 0); giza_change_page (); giza_change_page (); giza_change_page (); giza_close_device (); giza_open_device ("?", "page-3"); giza_change_page (); giza_box ("BCTN", 0., 0, "BCTN", 0., 0); giza_change_page (); giza_change_page (); giza_box ("BCTN", 0., 0, "BCTN", 0., 0); giza_close_device (); } giza-1.5.0/test/C/test-circle.c000066400000000000000000000026761477367113400162220ustar00rootroot00000000000000/* giza - a scientific plotting library built on cairo * * Copyright (c) 2010 James Wetter and Daniel Price * Copyright (c) 2010-2012 Daniel Price * * This library is free software; and you are welcome to redistribute * it under the terms of the GNU General Public License * (GPL, see LICENSE file for details) and the provision that * this notice remains intact. If you modify this file, please * note section 5a) of the GPLv3 states that: * * a) The work must carry prominent notices stating that you modified * it, and giving a relevant date. * * This software is distributed "AS IS", with ABSOLUTELY NO WARRANTY. * See the GPL for specific language governing rights and limitations. * * The Original code is the giza plotting library. * * Contributor(s): * James Wetter * Daniel Price (main contact) */ #include #include void aux (double x, double y, double r, int fill, int ci); int main () { giza_open_device ("?", "circles"); aux (.5, .5, .25, 1, 1); giza_change_page (); aux(0.3, 0.2, 0.1, 2, 3); giza_close_device (); } void aux (double x, double y, double r, int fill, int ci) { char tmp[100]; giza_set_fill (fill); giza_set_colour_index (ci); giza_circle (x, y, r); sprintf (tmp, "centre (%.2f, %.2f), radius: %.2f, fill: %i", x, y, r, fill); giza_ptext (1., 1., 0., 1., tmp); giza_box ("BCNT", 0., 0, "BCNT", 0., 0); } giza-1.5.0/test/C/test-colour-index.c000066400000000000000000000023071477367113400173600ustar00rootroot00000000000000/* giza - a scientific plotting library built on cairo * * Copyright (c) 2010 James Wetter and Daniel Price * Copyright (c) 2010-2012 Daniel Price * * This library is free software; and you are welcome to redistribute * it under the terms of the GNU General Public License * (GPL, see LICENSE file for details) and the provision that * this notice remains intact. If you modify this file, please * note section 5a) of the GPLv3 states that: * * a) The work must carry prominent notices stating that you modified * it, and giving a relevant date. * * This software is distributed "AS IS", with ABSOLUTELY NO WARRANTY. * See the GPL for specific language governing rights and limitations. * * The Original code is the giza plotting library. * * Contributor(s): * James Wetter * Daniel Price (main contact) */ #include int main () { giza_open_device ("?", "colours"); double xpts[2], ypts[2]; xpts[0] = 0.; xpts[1] = 1.; int i; for (i = 1; i < 20; i++) { giza_set_colour_index (i); ypts[0] = 0.02 * i; ypts[1] = 0.02 * i; giza_line (2, xpts, ypts); } giza_close_device (); } giza-1.5.0/test/C/test-contour.c000066400000000000000000000050261477367113400164420ustar00rootroot00000000000000/* giza - a scientific plotting library built on cairo * * Copyright (c) 2010 James Wetter and Daniel Price * Copyright (c) 2010-2012 Daniel Price * * This library is free software; and you are welcome to redistribute * it under the terms of the GNU General Public License * (GPL, see LICENSE file for details) and the provision that * this notice remains intact. If you modify this file, please * note section 5a) of the GPLv3 states that: * * a) The work must carry prominent notices stating that you modified * it, and giving a relevant date. * * This software is distributed "AS IS", with ABSOLUTELY NO WARRANTY. * See the GPL for specific language governing rights and limitations. * * The Original code is the giza plotting library. * * Contributor(s): * James Wetter * Daniel Price (main contact) */ #include #include int main () { giza_open_device ("?", "contour"); giza_start_warnings (); //giza_set_window (-1.5, 1.5, -1.5, 1.5); giza_set_window (0., 1., .0, 1.); int dimx = 10, dimy = 10; int i,j; int ncont = 2; double cont1[2] = {.5, .75}; double affine1[6] = {1./(double)dimx, 0., 0., 1./(double)dimy, 0., 0.}; double data1[dimy][dimx]; for (i = 0; i < dimx; ++i) { for (j = 0; j < dimy; ++j) { data1[j][i] = (double) i/(double)dimx; } } giza_contour (dimx, dimy, (double *) &data1, 0, dimx - 1, 0, dimy - 1, ncont, cont1,affine1); giza_box ("BNCT", 0., 0, "BCNT", 0., 0); giza_change_page (); giza_set_window (-1.5, 1.5, -1.5, 1.5); dimx = 150; dimy = 150; ncont = 5; double cont[5] = {-1., -.5, 0., .5, 1.}; double affine[6] = {3./((double)dimx), 0., 0., 3./((double) dimy), -1.5, -1.5}; double data[dimy][dimx]; //double tmp1, tmp2, tmp3; for (i = 0; i < dimx; ++i) { for (j = 0; j < dimy; ++j) { double x = -1.5 + (double)i/((double)dimx - 1) * 3.; double y = -1.5 + (double)j/((double)dimy - 1) * 3.; data[j][i] = x * cos(10*x*y); //tmp1 = (x * x) + (y - 0.842) * (y + 0.842); //tmp2 = x * (y-0.842) + x * ( y + 0.842); //tmp3 = (tmp1 * tmp1 + tmp2*tmp2); //data[j][i] = 1/(tmp3 * tmp3); //printf ("f(%f, %f) = %f\n", x, y, data[j][i]); } } giza_render (dimx, dimy, (double *) &data, 0, dimx - 1, 0, dimy - 1, -1., 1.,0,0,affine); giza_contour (dimx, dimy, (double *) &data, 0, dimx - 1, 0, dimy - 1, ncont, cont,affine); giza_box ("BCNT", 0., 0, "BCNT", 0., 0); giza_close_device (); } giza-1.5.0/test/C/test-environment.c000066400000000000000000000031461477367113400173160ustar00rootroot00000000000000/* giza - a scientific plotting library built on cairo * * Copyright (c) 2010 James Wetter and Daniel Price * Copyright (c) 2010-2012 Daniel Price * * This library is free software; and you are welcome to redistribute * it under the terms of the GNU General Public License * (GPL, see LICENSE file for details) and the provision that * this notice remains intact. If you modify this file, please * note section 5a) of the GPLv3 states that: * * a) The work must carry prominent notices stating that you modified * it, and giving a relevant date. * * This software is distributed "AS IS", with ABSOLUTELY NO WARRANTY. * See the GPL for specific language governing rights and limitations. * * The Original code is the giza plotting library. * * Contributor(s): * James Wetter * Daniel Price (main contact) */ #include int main () { giza_open_device ("?", "environment"); giza_set_environment (0., 10., 0., 40., 0, -2); giza_close_device (); giza_open_device ("?", "environment"); giza_set_environment (0., 10., 0., 40., 0, -1); giza_close_device (); giza_open_device ("?", "environment"); giza_set_environment (-5., 10., -10., 40., 0, 0); giza_close_device (); giza_open_device ("?", "environment"); giza_set_environment (-5., 10., -10., 40., 0, 1); giza_close_device (); giza_open_device ("?", "environment"); giza_set_environment (5., 10., 5., 40., 0, 1); giza_close_device (); giza_open_device ("?", "environment"); giza_set_environment (0., 10., 0., 40., 1, 0); giza_close_device (); } giza-1.5.0/test/C/test-error-bars-2.c000066400000000000000000000026641477367113400171730ustar00rootroot00000000000000/* giza - a scientific plotting library built on cairo * * Copyright (c) 2010 James Wetter and Daniel Price * Copyright (c) 2010-2012 Daniel Price * * This library is free software; and you are welcome to redistribute * it under the terms of the GNU General Public License * (GPL, see LICENSE file for details) and the provision that * this notice remains intact. If you modify this file, please * note section 5a) of the GPLv3 states that: * * a) The work must carry prominent notices stating that you modified * it, and giving a relevant date. * * This software is distributed "AS IS", with ABSOLUTELY NO WARRANTY. * See the GPL for specific language governing rights and limitations. * * The Original code is the giza plotting library. * * Contributor(s): * James Wetter * Daniel Price (main contact) */ #include #include #define N 9 int main (void) { char title [10]; int dir; double x [N] = {-4, -3, -2, -1, 0, 1, 2, 3, 4}; double y [N] = {-4, -3, -2, -1, 0, 1, 2, 3, 4}; double err [N] = {1, .5, 1, .5, 1, .5, 1, .5, 1}; (void) giza_open_device ("?", "Error bars"); for (dir = 1; dir < 10 ; dir ++) { giza_set_environment (-6, 6, -6, 6, 1, 0); (void) sprintf (title, "dir = %d", dir); giza_label ("", "", title); giza_points (N, x, y, 2); giza_error_bars (dir, N, x, y, err, 2); } giza_close_device (); } giza-1.5.0/test/C/test-error-bars.c000066400000000000000000000040211477367113400170210ustar00rootroot00000000000000/* giza - a scientific plotting library built on cairo * * Copyright (c) 2010 James Wetter and Daniel Price * Copyright (c) 2010-2012 Daniel Price * * This library is free software; and you are welcome to redistribute * it under the terms of the GNU General Public License * (GPL, see LICENSE file for details) and the provision that * this notice remains intact. If you modify this file, please * note section 5a) of the GPLv3 states that: * * a) The work must carry prominent notices stating that you modified * it, and giving a relevant date. * * This software is distributed "AS IS", with ABSOLUTELY NO WARRANTY. * See the GPL for specific language governing rights and limitations. * * The Original code is the giza plotting library. * * Contributor(s): * James Wetter * Daniel Price (main contact) */ #include int main () { giza_open_device ("?", "errors"); giza_start_warnings (); double xpts[2], ypts[2], errors[2]; xpts[0] = .3; xpts[1] = 0.7; ypts[0] = 0.7; ypts[1] = 0.3; errors[0] = 0.01; errors[1] = 0.1; giza_points (2, xpts, ypts, 4); giza_box ("BCNT", 0., 0, "BCNT", 0., 0); giza_error_bars (1, 2, xpts, ypts, errors, 1.); giza_change_page (); giza_box ("BCNT", 0., 0, "BCNT", 0., 0); giza_error_bars (2, 2, xpts, ypts, errors, 1.); giza_points (2, xpts, ypts, 178); giza_change_page (); giza_box ("BCNT", 0., 0, "BCNT", 0., 0); giza_error_bars (3, 2, xpts, ypts, errors, 1.); giza_points (2, xpts, ypts, 178); giza_change_page (); giza_box ("BCNT", 0., 0, "BCNT", 0., 0); giza_error_bars (4, 2, xpts, ypts, errors, 4.); giza_points (2, xpts, ypts, 178); giza_change_page (); giza_box ("BCNT", 0., 0, "BCNT", 0., 0); giza_error_bars (5, 2, xpts, ypts, errors, 4.); giza_points (2, xpts, ypts, 178); giza_change_page (); giza_box ("BCNT", 0., 0, "BCNT", 0., 0); giza_error_bars (6, 2, xpts, ypts, errors, 4.); giza_points (2, xpts, ypts, 178); giza_close_device (); } giza-1.5.0/test/C/test-format-number.c000066400000000000000000000073471477367113400175370ustar00rootroot00000000000000/* giza - a scientific plotting library built on cairo * * Copyright (c) 2010 James Wetter and Daniel Price * Copyright (c) 2010-2012 Daniel Price * * This library is free software; and you are welcome to redistribute * it under the terms of the GNU General Public License * (GPL, see LICENSE file for details) and the provision that * this notice remains intact. If you modify this file, please * note section 5a) of the GPLv3 states that: * * a) The work must carry prominent notices stating that you modified * it, and giving a relevant date. * * This software is distributed "AS IS", with ABSOLUTELY NO WARRANTY. * See the GPL for specific language governing rights and limitations. * * The Original code is the giza plotting library. * * Contributor(s): * James Wetter * Daniel Price (main contact) */ #include #include #include #include int main () { int m, p; double num; char string[40]; m = 20000; p = -1; num = ((double) m) * pow (10, p); giza_format_number (m, p, 0, string, sizeof(string)); printf ("%e: %s\n", num, string); m = 20000; p = -1; num = ((double) m) * pow (10, p); giza_format_number (m, p, 0, string, sizeof(string)); printf ("%e: %s\n", num, string); /* // exponentials: with 3 digit exponents (-ve) x = -1.e-300; giza_format_number(x, 3, string); printf("%e: %s \n",x,string); x = -3.e-286; giza_format_number(x, 3, string); printf("%e: %s \n",x,string); x = -3.e+123; giza_format_number(x, 3, string); printf("%e: %s \n",x,string); x = -3.e-123; giza_format_number(x, 3, string); printf("%e: %s \n",x,string); x = -9.92312342451423451155315e-123; giza_format_number(x, 3, string); printf("%e: %s \n",x,string); giza_format_number(x, 4, string); printf("%e: %s \n",x,string); giza_format_number(x, 5, string); printf("%e: %s \n",x,string); giza_format_number(x, 10, string); printf("%e: %s \n",x,string); // exponentials: with 3 digit exponents (+ve) x = 2.e-300; giza_format_number(x, 3, string); printf("%e: %s \n",x,string); x = 5.e-286; giza_format_number(x, 3, string); printf("%e: %s \n",x,string); x = 6.e+123; giza_format_number(x, 3, string); printf("%e: %s \n",x,string); x = 7.e-123; giza_format_number(x, 3, string); printf("%e: %s \n",x,string); x = 9.92312342451423451155315e-123; giza_format_number(x, 3, string); printf("%e: %s \n",x,string); giza_format_number(x, 4, string); printf("%e: %s \n",x,string); giza_format_number(x, 5, string); printf("%e: %s \n",x,string); giza_format_number(x, 10, string); printf("%e: %s \n",x,string); // exponentials: with 2 digit exponents (+ve) x = -1.e-30; giza_format_number(x, 3, string); printf("%e: %s \n",x,string); x = -3.e-28; giza_format_number(x, 3, string); printf("%e: %s \n",x,string); x = -3.e+12; giza_format_number(x, 3, string); printf("%e: %s \n",x,string); x = -3.e-13; giza_format_number(x, 3, string); printf("%e: %s \n",x,string); x = -256.14589345e-83; giza_format_number(x, 3, string); printf("%e: %s \n",x,string); giza_format_number(x, 4, string); printf("%e: %s \n",x,string); giza_format_number(x, 5, string); printf("%e: %s \n",x,string); giza_format_number(x, 10, string); printf("%e: %s \n",x,string); x = 1.e-30; giza_format_number(x, 3, string); printf("%e: %s \n",x,string); x = 1.e+30; giza_format_number(x, 3, string); printf("%e: %s \n",x,string); x = 6.283643E-29; giza_format_number(x, 3, string); printf("%e: %s \n",x,string); x = -4.99999999999999980217349007449654627661539343338E-24; giza_format_number(x, 3, string); printf("%e: %s \n",x,string); */ } giza-1.5.0/test/C/test-giza-xw.c000066400000000000000000000023051477367113400163340ustar00rootroot00000000000000/* giza - a scientific plotting library built on cairo * * Copyright (c) 2010 James Wetter and Daniel Price * Copyright (c) 2010-2012 Daniel Price * * This library is free software; and you are welcome to redistribute * it under the terms of the GNU General Public License * (GPL, see LICENSE file for details) and the provision that * this notice remains intact. If you modify this file, please * note section 5a) of the GPLv3 states that: * * a) The work must carry prominent notices stating that you modified * it, and giving a relevant date. * * This software is distributed "AS IS", with ABSOLUTELY NO WARRANTY. * See the GPL for specific language governing rights and limitations. * * The Original code is the giza plotting library. * * Contributor(s): * James Wetter * Daniel Price (main contact) */ #include int main() { int id; id = giza_open_device("/xw","test"); /*giza_stop_prompting();*/ giza_close_device(); id = giza_open_device("/xw","test"); /*giza_stop_prompting();*/ giza_close_device(); /* open_device should return a positive integer */ if (id <= 0) { return 1; } else { return 0; } } giza-1.5.0/test/C/test-line-cap.c000066400000000000000000000036271477367113400164460ustar00rootroot00000000000000/* giza - a scientific plotting library built on cairo * * Copyright (c) 2010 James Wetter and Daniel Price * Copyright (c) 2010-2012 Daniel Price * * This library is free software; and you are welcome to redistribute * it under the terms of the GNU General Public License * (GPL, see LICENSE file for details) and the provision that * this notice remains intact. If you modify this file, please * note section 5a) of the GPLv3 states that: * * a) The work must carry prominent notices stating that you modified * it, and giving a relevant date. * * This software is distributed "AS IS", with ABSOLUTELY NO WARRANTY. * See the GPL for specific language governing rights and limitations. * * The Original code is the giza plotting library. * * Contributor(s): * James Wetter * Daniel Price (main contact) */ #include #include int main () { int lc; double xpts[2], ypts[2]; printf ("Expect an error\n"); giza_set_line_cap (1); printf ("Expect an error\n"); giza_get_line_cap (&lc); giza_open_device ("?", "test-line-cap"); xpts[0] = 0.4; xpts[1] = 0.4; ypts[0] = 0.3; ypts[1] = 0.6; giza_start_warnings (); giza_set_line_width (3.); double lw; giza_get_line_width (&lw); printf("%f\n", lw); giza_line (2, xpts, ypts); giza_ptext (0.4, 0.63, 90., 0.0, "butt cap"); xpts[0] = .5; xpts[1] = .5; giza_set_line_cap (1); giza_get_line_width (&lw); printf("%f\n", lw); giza_line (2, xpts, ypts); giza_ptext (0.5, 0.63, 90., 0., "round cap"); xpts[0] = .6; xpts[1] = .6; giza_set_line_cap (2); giza_get_line_width (&lw); printf("%f\n", lw); giza_line (2, xpts, ypts); giza_ptext (.6, 0.63, 90., 0., "square cap"); printf ("Expect a warning\n"); giza_set_line_cap (-1); printf ("Expect a warning\n"); giza_set_line_cap (3); giza_close_device (); return 0; } giza-1.5.0/test/C/test-line-style.c000066400000000000000000000023371477367113400170400ustar00rootroot00000000000000/* giza - a scientific plotting library built on cairo * * Copyright (c) 2010 James Wetter and Daniel Price * Copyright (c) 2010-2012 Daniel Price * * This library is free software; and you are welcome to redistribute * it under the terms of the GNU General Public License * (GPL, see LICENSE file for details) and the provision that * this notice remains intact. If you modify this file, please * note section 5a) of the GPLv3 states that: * * a) The work must carry prominent notices stating that you modified * it, and giving a relevant date. * * This software is distributed "AS IS", with ABSOLUTELY NO WARRANTY. * See the GPL for specific language governing rights and limitations. * * The Original code is the giza plotting library. * * Contributor(s): * James Wetter * Daniel Price (main contact) */ #include int main () { double xpts[2], ypts[2]; int i; xpts[0] = 0.0; xpts[1] = 1.; giza_open_device ("?", "line style"); giza_start_warnings (); for (i = 1; i < 7; i++) { giza_set_line_style (i); ypts[0] = 0.05 * i; ypts[1] = 0.05 * i; giza_line (2, xpts, ypts); } giza_close_device (); } giza-1.5.0/test/C/test-openclose.c000066400000000000000000000023121477367113400167330ustar00rootroot00000000000000/* giza - a scientific plotting library built on cairo * * Copyright (c) 2010 James Wetter and Daniel Price * Copyright (c) 2010-2012 Daniel Price * * This library is free software; and you are welcome to redistribute * it under the terms of the GNU General Public License * (GPL, see LICENSE file for details) and the provision that * this notice remains intact. If you modify this file, please * note section 5a) of the GPLv3 states that: * * a) The work must carry prominent notices stating that you modified * it, and giving a relevant date. * * This software is distributed "AS IS", with ABSOLUTELY NO WARRANTY. * See the GPL for specific language governing rights and limitations. * * The Original code is the giza plotting library. * * Contributor(s): * James Wetter * Daniel Price (main contact) */ #include int main () { int id; id = giza_open_device("?","test"); giza_stop_prompting(); giza_close_device(); id = giza_open_device("/xw","test"); giza_stop_prompting(); giza_close_device(); /* open_device should return a positive integer */ if (id <= 0) { return 1; } else { return 0; } } giza-1.5.0/test/C/test-pdf.c000066400000000000000000000035761477367113400155320ustar00rootroot00000000000000/* giza - a scientific plotting library built on cairo * * Copyright (c) 2010 James Wetter and Daniel Price * Copyright (c) 2010-2012 Daniel Price * * This library is free software; and you are welcome to redistribute * it under the terms of the GNU General Public License * (GPL, see LICENSE file for details) and the provision that * this notice remains intact. If you modify this file, please * note section 5a) of the GPLv3 states that: * * a) The work must carry prominent notices stating that you modified * it, and giving a relevant date. * * This software is distributed "AS IS", with ABSOLUTELY NO WARRANTY. * See the GPL for specific language governing rights and limitations. * * The Original code is the giza plotting library. * * Contributor(s): * James Wetter * Daniel Price (main contact) */ #include #include "math.h" #include #include static double sinx(double *x); int check_pdf_file(void); int main() { int id, i; id = giza_open_device("/pdf","test"); for (i=1;i<=10;i++) { giza_set_environment(0.,1.,-1.,1.,0,0); giza_label("x","y","title"); giza_function_x(sinx,100,0.,1.,1); } giza_close_device(); /* open_device should return a positive integer */ if (id <= 0 || !check_pdf_file()) { return 1; } else { return 0; } } double sinx(double *x) { return sin(6.28*(*x)); } /* check if the corresponding files exist */ int check_pdf_file() { char filename[20]; snprintf(filename, sizeof(filename), "test.pdf"); /* Check if the file exists */ if (access(filename, F_OK) == -1) { fprintf(stderr, "Error: Required file %s does not exist.\n", filename); return 0; /* Return 0 if file is missing */ } else { fprintf(stdout, "File %s exists -> OK\n", filename); } return 1; /* Return 1 if file exists */ } giza-1.5.0/test/C/test-png.c000066400000000000000000000041551477367113400155370ustar00rootroot00000000000000/* giza - a scientific plotting library built on cairo * * Copyright (c) 2010 James Wetter and Daniel Price * Copyright (c) 2010-2012 Daniel Price * * This library is free software; and you are welcome to redistribute * it under the terms of the GNU General Public License * (GPL, see LICENSE file for details) and the provision that * this notice remains intact. If you modify this file, please * note section 5a) of the GPLv3 states that: * * a) The work must carry prominent notices stating that you modified * it, and giving a relevant date. * * This software is distributed "AS IS", with ABSOLUTELY NO WARRANTY. * See the GPL for specific language governing rights and limitations. * * The Original code is the giza plotting library. * * Contributor(s): * James Wetter * Daniel Price (main contact) */ #include #include "math.h" #include #include #include static double sinx(double *x); static int check_png_files(int num_files); int main() { int id, i; id = giza_open_device("/png","test"); for (i=1;i<=10;i++) { giza_set_environment(0.,1.,-1.,1.,0,0); giza_label("x","y","title"); giza_function_x(sinx,100,0.,1.,1); } giza_close_device(); /* open_device should return a positive integer */ if (id <= 0 || !check_png_files(10)) { return 1; } else { return 0; } } double sinx(double *x) { return sin(6.28*(*x)); } /* check if the corresponding files exist */ int check_png_files(int num_files) { char filename[20]; for (int i = 0; i < num_files; i++) { /* Create the filename in the format test_0000.png, test_0001.png, etc. */ snprintf(filename, sizeof(filename), "test_%04d.png", i); /* Check if the file exists */ if (access(filename, F_OK) == -1) { fprintf(stderr, "Error: Required file %s does not exist.\n", filename); return 0; /* Return 0 if any file is missing */ } else { fprintf(stdout, "File %s exists -> OK\n", filename); } } return 1; /* Return 1 if all files exist */ } giza-1.5.0/test/C/test-points.c000066400000000000000000000032261477367113400162650ustar00rootroot00000000000000/* giza - a scientific plotting library built on cairo * * Copyright (c) 2010 James Wetter and Daniel Price * Copyright (c) 2010-2012 Daniel Price * * This library is free software; and you are welcome to redistribute * it under the terms of the GNU General Public License * (GPL, see LICENSE file for details) and the provision that * this notice remains intact. If you modify this file, please * note section 5a) of the GPLv3 states that: * * a) The work must carry prominent notices stating that you modified * it, and giving a relevant date. * * This software is distributed "AS IS", with ABSOLUTELY NO WARRANTY. * See the GPL for specific language governing rights and limitations. * * The Original code is the giza plotting library. * * Contributor(s): * James Wetter * Daniel Price (main contact) */ #include #include void aux (int symbol, double ch); int main () { giza_open_device ("?", "test-points"); aux (0, 1.); giza_change_page (); aux (0, 1.5); giza_change_page (); aux (1, 1.); giza_change_page (); aux (2, 1.); giza_change_page (); aux (3, 1.); giza_change_page (); aux (38, 1.); giza_change_page (); aux (38, 1.5); giza_change_page (); giza_close_device (); } void aux (int symbol, double ch) { double xpts[3], ypts[3]; char str[100]; xpts[0] = 0.3; xpts[1] = 0.5; xpts[2] = 0.7; ypts[0] = 0.3; ypts[1] = 0.5; ypts[2] = 0.7; giza_set_character_height (ch); giza_points (3, xpts, ypts, symbol); sprintf (str, "Symbol: %i, Character height: %f", symbol, ch); giza_ptext (1., 0., 0., 1., str); } giza-1.5.0/test/C/test-qtext.c000066400000000000000000000132431477367113400161160ustar00rootroot00000000000000/* giza - a scientific plotting library built on cairo * * Copyright (c) 2010 James Wetter and Daniel Price * Copyright (c) 2010-2012 Daniel Price * * This library is free software; and you are welcome to redistribute * it under the terms of the GNU General Public License * (GPL, see LICENSE file for details) and the provision that * this notice remains intact. If you modify this file, please * note section 5a) of the GPLv3 states that: * * a) The work must carry prominent notices stating that you modified * it, and giving a relevant date. * * This software is distributed "AS IS", with ABSOLUTELY NO WARRANTY. * See the GPL for specific language governing rights and limitations. * * The Original code is the giza plotting library. * * Contributor(s): * James Wetter * Daniel Price (main contact) */ #include #include #include #include int main () { giza_open_device ("?", "qtext"); giza_start_warnings (); //giza_set_fill (2); //giza_set_window (0., 1., 0., 1.); giza_box ("BCNT", 0., 0, "BCNT", 0., 0); double x, y, angle, just, xbox[4], ybox[4]; char text[100]; giza_qtext (0., 0., 0., 0., "HELLO", xbox, ybox); giza_ptext (0., 0., 0., 0., "HELLO"); printf ("x = 0., y = 0., angle = 0., just = 0., text = HELLO\n"); printf ("XBOX = %.4f, %.4f, %.4f, %.4f\n", xbox[0], xbox[1], xbox[2], xbox[3]); printf ("YBOX = %.4f, %.4f, %.4f, %.4f\n\n", ybox[0], ybox[1], ybox[2], ybox[3]); giza_qtext (0.5, 0., 90., 0., "HELLO", xbox, ybox); giza_ptext (0.5, 0., 90., 0., "HELLO"); printf ("x = 0.5, y = 0., angle = 90., just = 0., text = HELLO\n"); printf ("XBOX = %.4f, %.4f, %.4f, %.4f\n", xbox[0], xbox[1], xbox[2], xbox[3]); printf ("YBOX = %.4f, %.4f, %.4f, %.4f\n\n", ybox[0], ybox[1], ybox[2], ybox[3]); giza_qtext (0., 0.5, 35., 0., "HELLO", xbox, ybox); giza_ptext (0., 0.5, 35., 0., "HELLO"); printf ("x = 0., y = 0.5, angle = 35., just = 0., text = HELLO\n"); printf ("XBOX = %.4f, %.4f, %.4f, %.4f\n", xbox[0], xbox[1], xbox[2], xbox[3]); printf ("YBOX = %.4f, %.4f, %.4f, %.4f\n\n", ybox[0], ybox[1], ybox[2], ybox[3]); giza_change_page (); giza_box ("BCNT", 0., 0, "BCNT", 0., 0); giza_qtext (0., 0., 0., 0.5, "HELLO", xbox, ybox); giza_ptext (0., 0., 0., 0.5, "HELLO"); printf ("x = 0., y = 0., angle = 0., just = 0.5, text = HELLO\n"); printf ("XBOX = %.4f, %.4f, %.4f, %.4f\n", xbox[0], xbox[1], xbox[2], xbox[3]); printf ("YBOX = %.4f, %.4f, %.4f, %.4f\n\n", ybox[0], ybox[1], ybox[2], ybox[3]); giza_qtext (0.5, 0., 90., 0.5, "HELLO", xbox, ybox); giza_ptext (0.5, 0., 90., 0.5, "HELLO"); printf ("x = 0.5, y = 0., angle = 90., just = .5, text = HELLO\n"); printf ("XBOX = %.4f, %.4f, %.4f, %.4f\n", xbox[0], xbox[1], xbox[2], xbox[3]); printf ("YBOX = %.4f, %.4f, %.4f, %.4f\n\n", ybox[0], ybox[1], ybox[2], ybox[3]); giza_qtext (0., 0.5, 35., 0.5, "HELLO", xbox, ybox); giza_ptext (0., 0.5, 35., 0.5, "HELLO"); printf ("x = 0., y = 0.5, angle = 35., just = 0.5, text = HELLO\n"); printf ("XBOX = %.4f, %.4f, %.4f, %.4f\n", xbox[0], xbox[1], xbox[2], xbox[3]); printf ("YBOX = %.4f, %.4f, %.4f, %.4f\n\n", ybox[0], ybox[1], ybox[2], ybox[3]); giza_change_page (); x = 0.; y = 0.; angle = 90.; just = .0; strcpy (text, "HELLO^2!"); //giza_ptext (x, y, angle, just, text); giza_qtext (x, y, angle, just, text, xbox, ybox); //giza_rectangle (xbox[0], xbox[2], ybox[0], ybox[2]); printf ("X[0] = %f, x[1] = %f, X[2] = %f, X[3] = %f\n", xbox[0], xbox[1], xbox[2], xbox[3]); printf ("Y[0] = %f, Y[1] = %f, Y[2] = %f, Y[3] = %f\n", ybox[0], ybox[1], ybox[2], ybox[3]); giza_change_page (); angle = 90.; //giza_ptext (x, y, angle, just, text); giza_qtext (x, y, angle, just, text, xbox, ybox); //giza_rectangle (xbox[0], xbox[2], ybox[0], ybox[2]); printf ("X[0] = %f, x[1] = %f, X[2] = %f, X[3] = %f\n", xbox[0], xbox[1], xbox[2], xbox[3]); printf ("Y[0] = %f, Y[1] = %f, Y[2] = %f, Y[3] = %f\n", ybox[0], ybox[1], ybox[2], ybox[3]); giza_change_page (); angle = 0.; just = 0.5; giza_box ("BCNT", 0., 0, "BCNT", 0., 0); giza_qtext (x, y, angle, just, text, xbox, ybox); giza_ptext (x, y, angle, just, text); giza_rectangle (xbox[0], xbox[2], ybox[0], ybox[2]); printf ("X[0] = %f, x[1] = %f, X[2] = %f, X[3] = %f\n", xbox[0], xbox[1], xbox[2], xbox[3]); printf ("Y[0] = %f, Y[1] = %f, Y[2] = %f, Y[3] = %f\n", ybox[0], ybox[1], ybox[2], ybox[3]); giza_change_page (); just = 0.0; angle = 30.; giza_box ("BCNT", 0., 0, "BCNT", 0., 0); giza_qtext (x, y, angle, just, text, xbox, ybox); giza_ptext (x, y, angle, just, text); giza_rectangle (xbox[0], xbox[2], ybox[0], ybox[2]); printf ("X[0] = %f, x[1] = %f, X[2] = %f, X[3] = %f\n", xbox[0], xbox[1], xbox[2], xbox[3]); printf ("Y[0] = %f, Y[1] = %f, Y[2] = %f, Y[3] = %f\n", ybox[0], ybox[1], ybox[2], ybox[3]); giza_change_page (); giza_set_window (-10., 10., -10., 10.); giza_box ("BCNT", 0., 0, "BCNT", 0., 0); giza_qtext (x, y, angle, just, text, xbox, ybox); giza_ptext (x, y, angle, just, text); printf ("X[0] = %f, x[1] = %f, X[2] = %f, X[3] = %f\n", xbox[0], xbox[1], xbox[2], xbox[3]); printf ("Y[0] = %f, Y[1] = %f, Y[2] = %f, Y[3] = %f\n", ybox[0], ybox[1], ybox[2], ybox[3]); giza_change_page (); giza_set_window (0., 1000., 0., 1.); giza_box ("BCNT", 0., 0, "BCNT", 0., 0); giza_qtext (x, y, angle, just, text, xbox, ybox); giza_ptext (x, y, angle, just, text); printf ("X[0] = %f, x[1] = %f, X[2] = %f, X[3] = %f\n", xbox[0], xbox[1], xbox[2], xbox[3]); printf ("Y[0] = %f, Y[1] = %f, Y[2] = %f, Y[3] = %f\n", ybox[0], ybox[1], ybox[2], ybox[3]); giza_close_device (); } giza-1.5.0/test/C/test-rectangle.c000066400000000000000000000030001477367113400167030ustar00rootroot00000000000000/* giza - a scientific plotting library built on cairo * * Copyright (c) 2010 James Wetter and Daniel Price * Copyright (c) 2010-2012 Daniel Price * * This library is free software; and you are welcome to redistribute * it under the terms of the GNU General Public License * (GPL, see LICENSE file for details) and the provision that * this notice remains intact. If you modify this file, please * note section 5a) of the GPLv3 states that: * * a) The work must carry prominent notices stating that you modified * it, and giving a relevant date. * * This software is distributed "AS IS", with ABSOLUTELY NO WARRANTY. * See the GPL for specific language governing rights and limitations. * * The Original code is the giza plotting library. * * Contributor(s): * James Wetter * Daniel Price (main contact) */ #include #include void aux (double x1, double x2, double y1, double y2, int fill, int ci); int main () { giza_open_device ("?", "rect"); aux (.5, .7, .5, 0.7, 1, 1); giza_change_page (); aux(0.3, 0.5, 0.1, 0.3, 2, 3); giza_close_device (); } void aux (double x1, double x2, double y1, double y2, int fill, int ci) { char tmp[100]; giza_set_fill (fill); giza_set_colour_index (ci); giza_rectangle (x1, x2, y1, y2); sprintf (tmp, "(x1, y1) = (%.2f, %.2f), (x2, y2) = (%.2f, %.2f), fill: %i", x1, y1, x2, y2, fill); giza_ptext (1., 1., 0., 1., tmp); giza_box ("BCNT", 0., 0, "BCNT", 0., 0); } giza-1.5.0/test/C/test-render.c000066400000000000000000000060111477367113400162230ustar00rootroot00000000000000/* giza - a scientific plotting library built on cairo * * Copyright (c) 2010 James Wetter and Daniel Price * Copyright (c) 2010-2012 Daniel Price * * This library is free software; and you are welcome to redistribute * it under the terms of the GNU General Public License * (GPL, see LICENSE file for details) and the provision that * this notice remains intact. If you modify this file, please * note section 5a) of the GPLv3 states that: * * a) The work must carry prominent notices stating that you modified * it, and giving a relevant date. * * This software is distributed "AS IS", with ABSOLUTELY NO WARRANTY. * See the GPL for specific language governing rights and limitations. * * The Original code is the giza plotting library. * * Contributor(s): * James Wetter * Daniel Price (main contact) */ #include #include #include int main () { giza_open_device ("?", "render"); giza_set_window (0., 10., 0., 10.); giza_box ("BCNTS", 0., 0, "BCNTS", 0., 0); double cp[2]; cp[0] = 0.; cp[1] = 1.; double contrast = 1.0; double brightness = 0.5; giza_set_colour_table (cp, cp, cp, cp, 2, contrast,brightness); giza_start_warnings (); double data[100][100], affine[6]; int i, j; for (i = 0; i < 10; i++) { for (j = 0; j < 10; j++) { data[i][j] = i * .1; } } affine[0] = 1.; affine[1] = 0.; affine[2] = 0.; affine[3] = 1.; affine[4] = 0.; affine[5] = 0.; giza_render (10, 10, (double *) &data, 0, 9, 0, 9, 0., 1.,0,GIZA_FILTER_NEAREST,affine); giza_change_page (); double data2[2][2]; data[0][0] = 0.2; data[0][1] = 0.3; data[1][0] = 0.4; data[1][1] = 0.5; giza_set_window (0., 1., 0., 1.); affine[4] = .5; affine[5] = .5; cp[0] = 0.; cp[1] = 1.; giza_set_colour_table (cp, cp, cp, cp, 2, contrast, brightness); giza_render (2, 2, (double *) &data2, 0, 1, 0, 1, 0., 1.,0,GIZA_FILTER_NEAREST,affine); giza_box ("BCNTS", 0., 0, "BCNTS", 0., 0); giza_flush_device (); giza_change_page (); giza_set_window (.0, 100., 0., 100.); giza_box ("BCNTS", 0., 0, "BCNTS", 0., 0); int n = 5; double controlpoints[n]; double red[n], green[n], blue[n]; affine[0] = 1.; affine[1] = 0.; affine[2] = 0.; affine[3] = 1.; affine[4] = 0.; affine[5] = 0.; controlpoints[0] = 0.; controlpoints[1] = 0.475; controlpoints[2] = 0.694; controlpoints[3] = 0.745; controlpoints[4] = 1.; red[0] = 0.; red[1] = 0.686; red[2] = 1.; red[3] = 1.; red[4] = 1.; green[0] = 0.; green[1] = 0.004; green[2] = 0.420; green[3] = 0.518; green[4] = 1.; blue[0] = 0.; blue[1] = 0.; blue[2] = 0.; blue[3] = 0.; blue[4] = 1.; for (i = 0; i < 100; i++) { for (j = 0; j < 100; j++) { data[i][j] = sqrt (i * j); } } giza_set_colour_table (controlpoints, red, green, blue, 5,contrast,brightness); giza_render (100, 100, (double *) &data, 0, 99, 0, 99, 0, 100, 0,0,affine); giza_close_device (); } giza-1.5.0/test/C/test-set-line-width.c000066400000000000000000000052651477367113400176130ustar00rootroot00000000000000/* giza - a scientific plotting library built on cairo * * Copyright (c) 2010 James Wetter and Daniel Price * Copyright (c) 2010-2012 Daniel Price * * This library is free software; and you are welcome to redistribute * it under the terms of the GNU General Public License * (GPL, see LICENSE file for details) and the provision that * this notice remains intact. If you modify this file, please * note section 5a) of the GPLv3 states that: * * a) The work must carry prominent notices stating that you modified * it, and giving a relevant date. * * This software is distributed "AS IS", with ABSOLUTELY NO WARRANTY. * See the GPL for specific language governing rights and limitations. * * The Original code is the giza plotting library. * * Contributor(s): * James Wetter * Daniel Price (main contact) */ #include #include void aux (double lw); int main () { giza_open_device ("?", "lines"); aux (5.); giza_change_page (); aux (1.); giza_change_page (); aux (4.); giza_close_device (); /* printf ("Expect an error\n"); giza_set_line_width (1); int ierr; ierr = giza_open_device ("?", "test-set-line-width"); giza_start_warnings (); double xpts[2], ypts[2]; xpts[0] = 0; xpts[1] = 1; ypts[0] = 0.9; ypts[1] = 0.9; giza_line (2, xpts, ypts); double lw; giza_get_line_width (&lw); printf("%f\n", lw); giza_ptext (1., 0.92, 0., 1., "Line Width = 1.0"); giza_set_line_width (1.5); ypts[0] = 0.8; ypts[1] = 0.8; giza_line (2, xpts, ypts); giza_get_line_width (&lw); printf("%f\n", lw); giza_ptext (1., 0.82, 0., 1., "Line Width = 1.5"); giza_set_line_width (2); ypts[0] = 0.7; ypts[1] = 0.7; giza_line (2, xpts, ypts); giza_get_line_width (&lw); printf("%f\n", lw); giza_ptext (1., 0.72, 0., 1., "Line Width = 2.0"); giza_set_line_width (2.5); ypts[0] = 0.6; ypts[1] = 0.6; giza_get_line_width (&lw); printf("%f\n", lw); giza_line (2, xpts, ypts); giza_ptext (1., 0.62, 0., 1., "Line Width = 2.5"); printf ("Expect a warning\n"); giza_set_line_width (0.0); printf ("Expect a warning\n"); giza_set_line_width (-0.0); giza_close_device (); */ } void aux (double lw) { double xpts[2], ypts[2]; char str[100]; xpts[0] = 0.3; xpts[1] = .7; ypts[0] = .1; ypts[1] = .3; giza_set_line_width (lw); giza_set_line_cap (0); giza_line (2, xpts, ypts); giza_set_line_cap (1); ypts[0] = 0.4; ypts[1] = 0.6; giza_line (2, xpts, ypts); giza_set_line_cap (2); ypts[0] = 0.7; ypts[1] = 0.9; giza_line (2, xpts, ypts); sprintf (str, "line width: %.2f", lw); giza_ptext (1., 0., 0., 1., str); } giza-1.5.0/test/C/test-svg.c000066400000000000000000000041551477367113400155520ustar00rootroot00000000000000/* giza - a scientific plotting library built on cairo * * Copyright (c) 2010 James Wetter and Daniel Price * Copyright (c) 2010-2012 Daniel Price * * This library is free software; and you are welcome to redistribute * it under the terms of the GNU General Public License * (GPL, see LICENSE file for details) and the provision that * this notice remains intact. If you modify this file, please * note section 5a) of the GPLv3 states that: * * a) The work must carry prominent notices stating that you modified * it, and giving a relevant date. * * This software is distributed "AS IS", with ABSOLUTELY NO WARRANTY. * See the GPL for specific language governing rights and limitations. * * The Original code is the giza plotting library. * * Contributor(s): * James Wetter * Daniel Price (main contact) */ #include #include "math.h" #include #include #include static double sinx(double *x); static int check_svg_files(int num_files); int main() { int id, i; id = giza_open_device("/svg","test"); for (i=1;i<=10;i++) { giza_set_environment(0.,1.,-1.,1.,0,0); giza_label("x","y","title"); giza_function_x(sinx,100,0.,1.,1); } giza_close_device(); /* open_device should return a positive integer */ if (id <= 0 || !check_svg_files(10)) { return 1; } else { return 0; } } double sinx(double *x) { return sin(6.28*(*x)); } /* check if the corresponding files exist */ int check_svg_files(int num_files) { char filename[20]; for (int i = 0; i < num_files; i++) { /* Create the filename in the format test_0000.svg, test_0001.svg, etc. */ snprintf(filename, sizeof(filename), "test_%04d.svg", i); /* Check if the file exists */ if (access(filename, F_OK) == -1) { fprintf(stderr, "Error: Required file %s does not exist.\n", filename); return 0; /* Return 0 if any file is missing */ } else { fprintf(stdout, "File %s exists -> OK\n", filename); } } return 1; /* Return 1 if all files exist */ } giza-1.5.0/test/C/test-vector.c000066400000000000000000000030251477367113400162500ustar00rootroot00000000000000/* giza - a scientific plotting library built on cairo * * Copyright (c) 2010 James Wetter and Daniel Price * Copyright (c) 2010-2012 Daniel Price * * This library is free software; and you are welcome to redistribute * it under the terms of the GNU General Public License * (GPL, see LICENSE file for details) and the provision that * this notice remains intact. If you modify this file, please * note section 5a) of the GPLv3 states that: * * a) The work must carry prominent notices stating that you modified * it, and giving a relevant date. * * This software is distributed "AS IS", with ABSOLUTELY NO WARRANTY. * See the GPL for specific language governing rights and limitations. * * The Original code is the giza plotting library. * * Contributor(s): * James Wetter * Daniel Price (main contact) */ #include int main () { giza_open_device ("?", "arrows"); giza_start_warnings (); giza_set_window (0., 10., 0., 10.); giza_box ("BCNT", 0., 0, "BCTN", 0., 0); const int n = 2, m = 2; float hori[m][n], vert[m][n]; float scale = 1.; float affine[6]; hori[0][0] = .5; hori[0][1] = .5; hori[1][0] = .5; hori[1][1] = .5; vert[0][0] = .5; vert[0][1] = .5; vert[1][0] = .5; vert[1][1] = .5; affine[0] = 2.; affine[1] = 0.; affine[2] = 0.; affine[3] = 2.; affine[4] = 0.; affine[5] = 0.; giza_vector_float (n, m, (float *) &hori, (float *) &vert, 0, 1, 0, 1, scale, 0, affine, 1000.); giza_close_device (); } giza-1.5.0/test/C/test-window.c000066400000000000000000000024501477367113400162560ustar00rootroot00000000000000/* giza - a scientific plotting library built on cairo * * Copyright (c) 2010 James Wetter and Daniel Price * Copyright (c) 2010-2012 Daniel Price * * This library is free software; and you are welcome to redistribute * it under the terms of the GNU General Public License * (GPL, see LICENSE file for details) and the provision that * this notice remains intact. If you modify this file, please * note section 5a) of the GPLv3 states that: * * a) The work must carry prominent notices stating that you modified * it, and giving a relevant date. * * This software is distributed "AS IS", with ABSOLUTELY NO WARRANTY. * See the GPL for specific language governing rights and limitations. * * The Original code is the giza plotting library. * * Contributor(s): * James Wetter * Daniel Price (main contact) */ #include int main () { giza_open_device ("?", "window"); giza_set_window (0., 10., 0., 10.); giza_box ("BCNT", 0., 0, "BCNT", 0., 0); giza_change_page (); giza_set_window (-10., 10., 0., 10000.); giza_box ("BCNT", 0., 0, "BCNT", 0., 0); giza_change_page (); giza_set_window_equal_scale (0., 10., 0., 20.); giza_box ("BCNT", 0., 0, "BCNT", 0., 0); giza_change_page (); giza_close_device (); } giza-1.5.0/test/F90/000077500000000000000000000000001477367113400140015ustar00rootroot00000000000000giza-1.5.0/test/F90/Makefile.am000066400000000000000000000014721477367113400160410ustar00rootroot00000000000000AM_FCFLAGS = $(WERROR_CFLAGS) $(WARN_CFLAGS) -I../../src AM_LDFLAGS = -no-install LDADD = ../../src/libpgplot.la CLEANFILES = *.png ftests = test-2D test-fortran test-pgaxis #test-pgncur TESTS = $(ftests) check_PROGRAMS = $(ftests) AM_DEFAULT_SOURCE_EXT = .f90 # Ensure that the tests are built as part of the 'check' target check: $(ftests) check_output_files test_output_files = giza-test.png giza-test-2D.png # Custom target to check for the existence of expected output files from the Fortran tests check_output_files: $(ftests) @echo "Checking for required png files..." @for i in $(test_output_files); do \ if [ ! -s $$i ]; then \ echo "ERROR: Required file $$i does not exist."; \ exit 1; \ else \ echo "$$i exists"; \ fi; \ done @echo "All required png files exist."giza-1.5.0/test/F90/Makefile.in000066400000000000000000001022631477367113400160520ustar00rootroot00000000000000# Makefile.in generated by automake 1.17 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2024 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) am__rm_f = rm -f $(am__rm_f_notfound) am__rm_rf = rm -rf $(am__rm_f_notfound) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ TESTS = $(am__EXEEXT_1) check_PROGRAMS = $(am__EXEEXT_1) subdir = test/F90 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__EXEEXT_1 = test-2D$(EXEEXT) test-fortran$(EXEEXT) \ test-pgaxis$(EXEEXT) test_2D_SOURCES = test-2D.f90 test_2D_OBJECTS = test-2D.$(OBJEXT) test_2D_LDADD = $(LDADD) test_2D_DEPENDENCIES = ../../src/libpgplot.la AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent am__v_lt_1 = test_fortran_SOURCES = test-fortran.f90 test_fortran_OBJECTS = test-fortran.$(OBJEXT) test_fortran_LDADD = $(LDADD) test_fortran_DEPENDENCIES = ../../src/libpgplot.la test_pgaxis_SOURCES = test-pgaxis.f90 test_pgaxis_OBJECTS = test-pgaxis.$(OBJEXT) test_pgaxis_LDADD = $(LDADD) test_pgaxis_DEPENDENCIES = ../../src/libpgplot.la AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) FCCOMPILE = $(FC) $(AM_FCFLAGS) $(FCFLAGS) LTFCCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=FC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(FC) $(AM_FCFLAGS) $(FCFLAGS) AM_V_FC = $(am__v_FC_@AM_V@) am__v_FC_ = $(am__v_FC_@AM_DEFAULT_V@) am__v_FC_0 = @echo " FC " $@; am__v_FC_1 = FCLD = $(FC) FCLINK = $(LIBTOOL) $(AM_V_lt) --tag=FC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(FCLD) $(AM_FCFLAGS) $(FCFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_FCLD = $(am__v_FCLD_@AM_V@) am__v_FCLD_ = $(am__v_FCLD_@AM_DEFAULT_V@) am__v_FCLD_0 = @echo " FCLD " $@; am__v_FCLD_1 = SOURCES = test-2D.f90 test-fortran.f90 test-pgaxis.f90 DIST_SOURCES = test-2D.f90 test-fortran.f90 test-pgaxis.f90 am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` am__tty_colors_dummy = \ mgn= red= grn= lgn= blu= brg= std=; \ am__color_tests=no am__tty_colors = { \ $(am__tty_colors_dummy); \ if test "X$(AM_COLOR_TESTS)" = Xno; then \ am__color_tests=no; \ elif test "X$(AM_COLOR_TESTS)" = Xalways; then \ am__color_tests=yes; \ elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \ am__color_tests=yes; \ fi; \ if test $$am__color_tests = yes; then \ red=''; \ grn=''; \ lgn=''; \ blu=''; \ mgn=''; \ brg=''; \ std=''; \ fi; \ } am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && echo $$files | $(am__xargs_n) 40 $(am__rm_f); }; \ } am__recheck_rx = ^[ ]*:recheck:[ ]* am__global_test_result_rx = ^[ ]*:global-test-result:[ ]* am__copy_in_global_log_rx = ^[ ]*:copy-in-global-log:[ ]* # A command that, given a newline-separated list of test names on the # standard input, print the name of the tests that are to be re-run # upon "make recheck". am__list_recheck_tests = $(AWK) '{ \ recheck = 1; \ while ((rc = (getline line < ($$0 ".trs"))) != 0) \ { \ if (rc < 0) \ { \ if ((getline line2 < ($$0 ".log")) < 0) \ recheck = 0; \ break; \ } \ else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \ { \ recheck = 0; \ break; \ } \ else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \ { \ break; \ } \ }; \ if (recheck) \ print $$0; \ close ($$0 ".trs"); \ close ($$0 ".log"); \ }' # A command that, given a newline-separated list of test names on the # standard input, create the global log from their .trs and .log files. am__create_global_log = $(AWK) ' \ function fatal(msg) \ { \ print "fatal: making $@: " msg | "cat >&2"; \ exit 1; \ } \ function rst_section(header) \ { \ print header; \ len = length(header); \ for (i = 1; i <= len; i = i + 1) \ printf "="; \ printf "\n\n"; \ } \ { \ copy_in_global_log = 1; \ global_test_result = "RUN"; \ while ((rc = (getline line < ($$0 ".trs"))) != 0) \ { \ if (rc < 0) \ fatal("failed to read from " $$0 ".trs"); \ if (line ~ /$(am__global_test_result_rx)/) \ { \ sub("$(am__global_test_result_rx)", "", line); \ sub("[ ]*$$", "", line); \ global_test_result = line; \ } \ else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \ copy_in_global_log = 0; \ }; \ if (copy_in_global_log) \ { \ rst_section(global_test_result ": " $$0); \ while ((rc = (getline line < ($$0 ".log"))) != 0) \ { \ if (rc < 0) \ fatal("failed to read from " $$0 ".log"); \ print line; \ }; \ printf "\n"; \ }; \ close ($$0 ".trs"); \ close ($$0 ".log"); \ }' # Restructured Text title. am__rst_title = { sed 's/.*/ & /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; } # Solaris 10 'make', and several other traditional 'make' implementations, # pass "-e" to $(SHELL), and POSIX 2008 even requires this. Work around it # by disabling -e (using the XSI extension "set +e") if it's set. am__sh_e_setup = case $$- in *e*) set +e;; esac # Default flags passed to test drivers. am__common_driver_flags = \ --color-tests "$$am__color_tests" \ $$am__collect_skipped_logs \ --enable-hard-errors "$$am__enable_hard_errors" \ --expect-failure "$$am__expect_failure" # To be inserted before the command running the test. Creates the # directory for the log if needed. Stores in $dir the directory # containing $f, in $tst the test, in $log the log. Executes the # developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and # passes TESTS_ENVIRONMENT. Set up options for the wrapper that # will run the test scripts (or their associated LOG_COMPILER, if # thy have one). am__check_pre = \ $(am__sh_e_setup); \ $(am__vpath_adj_setup) $(am__vpath_adj) \ $(am__tty_colors); \ srcdir=$(srcdir); export srcdir; \ case "$@" in \ */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;; \ *) am__odir=.;; \ esac; \ test "x$$am__odir" = x"." || test -d "$$am__odir" \ || $(MKDIR_P) "$$am__odir" || exit $$?; \ if test -f "./$$f"; then dir=./; \ elif test -f "$$f"; then dir=; \ else dir="$(srcdir)/"; fi; \ tst=$$dir$$f; log='$@'; \ if test -n '$(IGNORE_SKIPPED_LOGS)'; then \ am__collect_skipped_logs='--collect-skipped-logs no'; \ else \ am__collect_skipped_logs=''; \ fi; \ if test -n '$(DISABLE_HARD_ERRORS)'; then \ am__enable_hard_errors=no; \ else \ am__enable_hard_errors=yes; \ fi; \ case " $(XFAIL_TESTS) " in \ *[\ \ ]$$f[\ \ ]* | *[\ \ ]$$dir$$f[\ \ ]*) \ am__expect_failure=yes;; \ *) \ am__expect_failure=no;; \ esac; \ $(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT) # A shell command to get the names of the tests scripts with any registered # extension removed (i.e., equivalently, the names of the test logs, with # the '.log' extension removed). The result is saved in the shell variable # '$bases'. This honors runtime overriding of TESTS and TEST_LOGS. Sadly, # we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)", # since that might cause problem with VPATH rewrites for suffix-less tests. # See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'. am__set_TESTS_bases = \ bases='$(TEST_LOGS)'; \ bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \ bases=`echo $$bases` AM_TESTSUITE_SUMMARY_HEADER = ' for $(PACKAGE_STRING)' RECHECK_LOGS = $(TEST_LOGS) AM_RECURSIVE_TARGETS = check recheck TEST_SUITE_LOG = test-suite.log TEST_EXTENSIONS = @EXEEXT@ .test LOG_DRIVER = $(SHELL) $(top_srcdir)/build/test-driver LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS) am__set_b = \ case '$@' in \ */*) \ case '$*' in \ */*) b='$*';; \ *) b=`echo '$@' | sed 's/\.log$$//'`; \ esac;; \ *) \ b='$*';; \ esac am__test_logs1 = $(TESTS:=.log) am__test_logs2 = $(am__test_logs1:@EXEEXT@.log=.log) TEST_LOGS = $(am__test_logs2:.test.log=.log) TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/build/test-driver TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \ $(TEST_LOG_FLAGS) am__DIST_COMMON = $(srcdir)/Makefile.in \ $(top_srcdir)/build/test-driver DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CAIRO_CFLAGS = @CAIRO_CFLAGS@ CAIRO_LIBS = @CAIRO_LIBS@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPPFLAGS = @CPPFLAGS@ CSCOPE = @CSCOPE@ CTAGS = @CTAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ ETAGS = @ETAGS@ EXEEXT = @EXEEXT@ FC = @FC@ FCFLAGS = @FCFLAGS@ FC_CFLAGS = @FC_CFLAGS@ FC_LIBS = @FC_LIBS@ FGREP = @FGREP@ FT_CFLAGS = @FT_CFLAGS@ FT_LIBS = @FT_LIBS@ GIZA_VERSION_MAJOR = @GIZA_VERSION_MAJOR@ GIZA_VERSION_MICRO = @GIZA_VERSION_MICRO@ GIZA_VERSION_MINOR = @GIZA_VERSION_MINOR@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ LT_AGE = @LT_AGE@ LT_CURRENT = @LT_CURRENT@ LT_REVISION = @LT_REVISION@ LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ X11_CFLAGS = @X11_CFLAGS@ X11_LIBS = @X11_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ ac_ct_FC = @ac_ct_FC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__rm_f_notfound = @am__rm_f_notfound@ am__tar = @am__tar@ am__untar = @am__untar@ am__xargs_n = @am__xargs_n@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ AM_FCFLAGS = $(WERROR_CFLAGS) $(WARN_CFLAGS) -I../../src AM_LDFLAGS = -no-install LDADD = ../../src/libpgplot.la CLEANFILES = *.png ftests = test-2D test-fortran test-pgaxis #test-pgncur AM_DEFAULT_SOURCE_EXT = .f90 test_output_files = giza-test.png giza-test-2D.png all: all-am .SUFFIXES: .SUFFIXES: .f90 .lo .log .o .obj .test .test$(EXEEXT) .trs $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu test/F90/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu test/F90/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): clean-checkPROGRAMS: $(am__rm_f) $(check_PROGRAMS) test -z "$(EXEEXT)" || $(am__rm_f) $(check_PROGRAMS:$(EXEEXT)=) test-2D$(EXEEXT): $(test_2D_OBJECTS) $(test_2D_DEPENDENCIES) $(EXTRA_test_2D_DEPENDENCIES) @rm -f test-2D$(EXEEXT) $(AM_V_FCLD)$(FCLINK) $(test_2D_OBJECTS) $(test_2D_LDADD) $(LIBS) test-fortran$(EXEEXT): $(test_fortran_OBJECTS) $(test_fortran_DEPENDENCIES) $(EXTRA_test_fortran_DEPENDENCIES) @rm -f test-fortran$(EXEEXT) $(AM_V_FCLD)$(FCLINK) $(test_fortran_OBJECTS) $(test_fortran_LDADD) $(LIBS) test-pgaxis$(EXEEXT): $(test_pgaxis_OBJECTS) $(test_pgaxis_DEPENDENCIES) $(EXTRA_test_pgaxis_DEPENDENCIES) @rm -f test-pgaxis$(EXEEXT) $(AM_V_FCLD)$(FCLINK) $(test_pgaxis_OBJECTS) $(test_pgaxis_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c .f90.o: $(AM_V_FC)$(FCCOMPILE) -c -o $@ $< .f90.obj: $(AM_V_FC)$(FCCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .f90.lo: $(AM_V_FC)$(LTFCCOMPILE) -c -o $@ $< mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-am TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-am CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-am cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags # Recover from deleted '.trs' file; this should ensure that # "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create # both 'foo.log' and 'foo.trs'. Break the recipe in two subshells # to avoid problems with "make -n". .log.trs: rm -f $< $@ $(MAKE) $(AM_MAKEFLAGS) $< # Leading 'am--fnord' is there to ensure the list of targets does not # expand to empty, as could happen e.g. with make check TESTS=''. am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck) am--force-recheck: @: $(TEST_SUITE_LOG): $(TEST_LOGS) @$(am__set_TESTS_bases); \ am__f_ok () { test -f "$$1" && test -r "$$1"; }; \ redo_bases=`for i in $$bases; do \ am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \ done`; \ if test -n "$$redo_bases"; then \ redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \ redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \ if $(am__make_dryrun); then :; else \ rm -f $$redo_logs && rm -f $$redo_results || exit 1; \ fi; \ fi; \ if test -n "$$am__remaking_logs"; then \ echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \ "recursion detected" >&2; \ elif test -n "$$redo_logs"; then \ am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \ fi; \ if $(am__make_dryrun); then :; else \ st=0; \ errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \ for i in $$redo_bases; do \ test -f $$i.trs && test -r $$i.trs \ || { echo "$$errmsg $$i.trs" >&2; st=1; }; \ test -f $$i.log && test -r $$i.log \ || { echo "$$errmsg $$i.log" >&2; st=1; }; \ done; \ test $$st -eq 0 || exit 1; \ fi @$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \ ws='[ ]'; \ results=`for b in $$bases; do echo $$b.trs; done`; \ test -n "$$results" || results=/dev/null; \ all=` grep "^$$ws*:test-result:" $$results | wc -l`; \ pass=` grep "^$$ws*:test-result:$$ws*PASS" $$results | wc -l`; \ fail=` grep "^$$ws*:test-result:$$ws*FAIL" $$results | wc -l`; \ skip=` grep "^$$ws*:test-result:$$ws*SKIP" $$results | wc -l`; \ xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \ xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \ error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \ if test `expr $$fail + $$xpass + $$error` -eq 0; then \ success=true; \ else \ success=false; \ fi; \ br='==================='; br=$$br$$br$$br$$br; \ result_count () \ { \ if test x"$$1" = x"--maybe-color"; then \ maybe_colorize=yes; \ elif test x"$$1" = x"--no-color"; then \ maybe_colorize=no; \ else \ echo "$@: invalid 'result_count' usage" >&2; exit 4; \ fi; \ shift; \ desc=$$1 count=$$2; \ if test $$maybe_colorize = yes && test $$count -gt 0; then \ color_start=$$3 color_end=$$std; \ else \ color_start= color_end=; \ fi; \ echo "$${color_start}# $$desc $$count$${color_end}"; \ }; \ create_testsuite_report () \ { \ result_count $$1 "TOTAL:" $$all "$$brg"; \ result_count $$1 "PASS: " $$pass "$$grn"; \ result_count $$1 "SKIP: " $$skip "$$blu"; \ result_count $$1 "XFAIL:" $$xfail "$$lgn"; \ result_count $$1 "FAIL: " $$fail "$$red"; \ result_count $$1 "XPASS:" $$xpass "$$red"; \ result_count $$1 "ERROR:" $$error "$$mgn"; \ }; \ output_system_information () \ { \ echo; \ { uname -a | $(AWK) '{ \ printf "System information (uname -a):"; \ for (i = 1; i < NF; ++i) \ { \ if (i != 2) \ printf " %s", $$i; \ } \ printf "\n"; \ }'; } 2>&1; \ if test -r /etc/os-release; then \ echo "Distribution information (/etc/os-release):"; \ sed 8q /etc/os-release; \ elif test -r /etc/issue; then \ echo "Distribution information (/etc/issue):"; \ cat /etc/issue; \ fi; \ }; \ please_report () \ { \ echo "Some test(s) failed. Please report this to $(PACKAGE_BUGREPORT),"; \ echo "together with the test-suite.log file (gzipped) and your system"; \ echo "information. Thanks."; \ }; \ { \ echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" | \ $(am__rst_title); \ create_testsuite_report --no-color; \ output_system_information; \ echo; \ echo ".. contents:: :depth: 2"; \ echo; \ for b in $$bases; do echo $$b; done \ | $(am__create_global_log); \ } >$(TEST_SUITE_LOG).tmp || exit 1; \ mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG); \ if $$success; then \ col="$$grn"; \ else \ col="$$red"; \ test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG); \ fi; \ echo "$${col}$$br$${std}"; \ echo "$${col}Testsuite summary"$(AM_TESTSUITE_SUMMARY_HEADER)"$${std}"; \ echo "$${col}$$br$${std}"; \ create_testsuite_report --maybe-color; \ echo "$$col$$br$$std"; \ if $$success; then :; else \ echo "$${col}See $(subdir)/$(TEST_SUITE_LOG) for debugging.$${std}";\ if test -n "$(PACKAGE_BUGREPORT)"; then \ please_report | sed -e "s/^/$${col}/" -e s/'$$'/"$${std}"/; \ fi; \ echo "$$col$$br$$std"; \ fi; \ $$success || exit 1 check-TESTS: $(check_PROGRAMS) @$(am__rm_f) $(RECHECK_LOGS) @$(am__rm_f) $(RECHECK_LOGS:.log=.trs) @$(am__rm_f) $(TEST_SUITE_LOG) @set +e; $(am__set_TESTS_bases); \ log_list=`for i in $$bases; do echo $$i.log; done`; \ log_list=`echo $$log_list`; \ $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \ exit $$?; recheck: all $(check_PROGRAMS) @$(am__rm_f) $(TEST_SUITE_LOG) @set +e; $(am__set_TESTS_bases); \ bases=`for i in $$bases; do echo $$i; done \ | $(am__list_recheck_tests)` || exit 1; \ log_list=`for i in $$bases; do echo $$i.log; done`; \ log_list=`echo $$log_list`; \ $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \ am__force_recheck=am--force-recheck \ TEST_LOGS="$$log_list"; \ exit $$? test-2D.log: test-2D$(EXEEXT) @p='test-2D$(EXEEXT)'; \ b='test-2D'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) test-fortran.log: test-fortran$(EXEEXT) @p='test-fortran$(EXEEXT)'; \ b='test-fortran'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) test-pgaxis.log: test-pgaxis$(EXEEXT) @p='test-pgaxis$(EXEEXT)'; \ b='test-pgaxis'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) .test.log: @p='$<'; \ $(am__set_b); \ $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) @am__EXEEXT_TRUE@.test$(EXEEXT).log: @am__EXEEXT_TRUE@ @p='$<'; \ @am__EXEEXT_TRUE@ $(am__set_b); \ @am__EXEEXT_TRUE@ $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ @am__EXEEXT_TRUE@ --log-file $$b.log --trs-file $$b.trs \ @am__EXEEXT_TRUE@ $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ @am__EXEEXT_TRUE@ "$$tst" $(AM_TESTS_FD_REDIRECT) distdir: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am distdir-am: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) $(MAKE) $(AM_MAKEFLAGS) check-TESTS check: check-am all-am: Makefile installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: -$(am__rm_f) $(TEST_LOGS) -$(am__rm_f) $(TEST_LOGS:.log=.trs) -$(am__rm_f) $(TEST_SUITE_LOG) clean-generic: -$(am__rm_f) $(CLEANFILES) distclean-generic: -$(am__rm_f) $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || $(am__rm_f) $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-checkPROGRAMS clean-generic clean-libtool \ mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: check-am install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am check check-TESTS check-am clean \ clean-checkPROGRAMS clean-generic clean-libtool cscopelist-am \ ctags ctags-am distclean distclean-compile distclean-generic \ distclean-libtool distclean-tags distdir dvi dvi-am html \ html-am info info-am install install-am install-data \ install-data-am install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am install-info \ install-info-am install-man install-pdf install-pdf-am \ install-ps install-ps-am install-strip installcheck \ installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ recheck tags tags-am uninstall uninstall-am .PRECIOUS: Makefile # Ensure that the tests are built as part of the 'check' target check: $(ftests) check_output_files # Custom target to check for the existence of expected output files from the Fortran tests check_output_files: $(ftests) @echo "Checking for required png files..." @for i in $(test_output_files); do \ if [ ! -s $$i ]; then \ echo "ERROR: Required file $$i does not exist."; \ exit 1; \ else \ echo "$$i exists"; \ fi; \ done @echo "All required png files exist." # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: # Tell GNU make to disable its built-in pattern rules. %:: %,v %:: RCS/%,v %:: RCS/% %:: s.% %:: SCCS/s.% giza-1.5.0/test/F90/test-2D.f90000066400000000000000000000020251477367113400155420ustar00rootroot00000000000000program testgizaplot use giza implicit none integer, parameter :: n = 100 real, dimension(n) :: xplot,yplot real, dimension(n,n) :: arr integer :: i,j real :: r do i=1,n xplot(i)=(i-1)/real(n-1)*20.-10. yplot(i)=xplot(i) enddo do i=1,n do j=1,n r=sqrt(xplot(i)*xplot(i)+yplot(j)*yplot(j)) if (r.ne.0.d0) then arr(i,j)=sin(r)/r else arr(i,j)=1. endif enddo enddo call giza_plot(img=arr,dev='giza-test-2D.png',just=1,& ! width,height,units,just=1,axis=1,& xmin=-10.,xmax=10.,ymin=-10.,ymax=10., & ! imgmin=,imgmax,& ! affine=(/1./real(n),0.,0.,1./real(n),0.,0./),& ! vptxmin,vptxmax,vptymin,vptymax,& xlabel='x',ylabel='y',& title='sin(r)/r',extend=giza_extend_pad) ! font,& ! ls=giza_ls_solid,lw=2.,ci=2,ch=1.) ! symbol=3, ! extend,printid=.true.) end program testgizaplot giza-1.5.0/test/F90/test-fortran.f90000066400000000000000000000012531477367113400167520ustar00rootroot00000000000000program testgizaplot use giza implicit none integer, parameter :: n = 100 real, parameter :: pi = 3.14159236 real, dimension(n) :: xplot,yplot real, dimension(n,n) :: arr integer :: i,j real :: yi do i=1,n xplot(i) = (i-1)/real(n-1) yplot(i) = sin(2.*pi*xplot(i)) do j=1,n yi = (j-1)/real(n-1) arr(i,j) = sin(2.*pi*yi) enddo enddo ! call giza_plot(yplot,ylabel='sin(x)',xlabel='x',& ! title='test',ls=giza_ls_dot,ci=2,lw=5.,ch=2.,symbol=3,& ! font='arial',printid=.true.,just=1) call giza_plot(img=arr,dev='giza-test.png') !call giza_plot(xplot,yplot,dev='/png',xmin=0.5,xmax=1.0) end program testgizaplot giza-1.5.0/test/F90/test-pgaxis.f90000066400000000000000000000006341477367113400165740ustar00rootroot00000000000000program test_pgaxis implicit none real :: x1,y1,x2,y2,v1,v2,step,nsub,dmajl,dmajr,fmin,disp,orient call pgbeg(0,'/xw',1,1) call pgenv(0.,1.,0.,1.,0,0) x1 = 0.1 y1 = 0.1 x2 = 0.9 y2 = 0.9 v1 = 0. v2 = 11. step = 0. nsub = 10 dmajl = 1. dmajr = 1. fmin = 0.5 disp = 0. orient = 90. call pgaxis("NST",x1,y1,x2,y2,v1,v2,step,nsub,dmajl,dmajr,fmin,disp,orient) call pgend end program test_pgaxis giza-1.5.0/test/F90/test-pgncur.f90000066400000000000000000000005311477367113400165730ustar00rootroot00000000000000program test_pgncur implicit none integer, parameter :: maxpt = 100 integer :: npt,i real, dimension(maxpt) :: x, y npt = 0 call pgbeg(0,'/xw',1,1) call pgask(.false.) call pgenv(0.,1.,0.,1.,0,0) ! call pgolin(maxpt,npt,x,y,3) call pgncur(maxpt,npt,x,y,3) call pgend do i=1,npt print*,i,x(i),y(i) enddo end program test_pgncur giza-1.5.0/test/Makefile.am000066400000000000000000000000201477367113400154670ustar00rootroot00000000000000SUBDIRS = C F90 giza-1.5.0/test/Makefile.in000066400000000000000000000454211477367113400155160ustar00rootroot00000000000000# Makefile.in generated by automake 1.17 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2024 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) am__rm_f = rm -f $(am__rm_f_notfound) am__rm_rf = rm -rf $(am__rm_f_notfound) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = test ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = SOURCES = DIST_SOURCES = RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \ ctags-recursive dvi-recursive html-recursive info-recursive \ install-data-recursive install-dvi-recursive \ install-exec-recursive install-html-recursive \ install-info-recursive install-pdf-recursive \ install-ps-recursive install-recursive installcheck-recursive \ installdirs-recursive pdf-recursive ps-recursive \ tags-recursive uninstall-recursive am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ distclean-recursive maintainer-clean-recursive am__recursive_targets = \ $(RECURSIVE_TARGETS) \ $(RECURSIVE_CLEAN_TARGETS) \ $(am__extra_recursive_targets) AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \ distdir distdir-am am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` DIST_SUBDIRS = $(SUBDIRS) am__DIST_COMMON = $(srcdir)/Makefile.in DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) am__relativize = \ dir0=`pwd`; \ sed_first='s,^\([^/]*\)/.*$$,\1,'; \ sed_rest='s,^[^/]*/*,,'; \ sed_last='s,^.*/\([^/]*\)$$,\1,'; \ sed_butlast='s,/*[^/]*$$,,'; \ while test -n "$$dir1"; do \ first=`echo "$$dir1" | sed -e "$$sed_first"`; \ if test "$$first" != "."; then \ if test "$$first" = ".."; then \ dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ else \ first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ if test "$$first2" = "$$first"; then \ dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ else \ dir2="../$$dir2"; \ fi; \ dir0="$$dir0"/"$$first"; \ fi; \ fi; \ dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ done; \ reldir="$$dir2" ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CAIRO_CFLAGS = @CAIRO_CFLAGS@ CAIRO_LIBS = @CAIRO_LIBS@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPPFLAGS = @CPPFLAGS@ CSCOPE = @CSCOPE@ CTAGS = @CTAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ ETAGS = @ETAGS@ EXEEXT = @EXEEXT@ FC = @FC@ FCFLAGS = @FCFLAGS@ FC_CFLAGS = @FC_CFLAGS@ FC_LIBS = @FC_LIBS@ FGREP = @FGREP@ FT_CFLAGS = @FT_CFLAGS@ FT_LIBS = @FT_LIBS@ GIZA_VERSION_MAJOR = @GIZA_VERSION_MAJOR@ GIZA_VERSION_MICRO = @GIZA_VERSION_MICRO@ GIZA_VERSION_MINOR = @GIZA_VERSION_MINOR@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ LT_AGE = @LT_AGE@ LT_CURRENT = @LT_CURRENT@ LT_REVISION = @LT_REVISION@ LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ X11_CFLAGS = @X11_CFLAGS@ X11_LIBS = @X11_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ ac_ct_FC = @ac_ct_FC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__rm_f_notfound = @am__rm_f_notfound@ am__tar = @am__tar@ am__untar = @am__untar@ am__xargs_n = @am__xargs_n@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ SUBDIRS = C F90 all: all-recursive .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu test/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu test/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs # This directory's subdirectories are mostly independent; you can cd # into them and run 'make' without going through this Makefile. # To change the values of 'make' variables: instead of editing Makefiles, # (1) if the variable is set in 'config.status', edit 'config.status' # (which will cause the Makefiles to be regenerated when you run 'make'); # (2) otherwise, pass the desired values on the 'make' command line. $(am__recursive_targets): @fail=; \ if $(am__make_keepgoing); then \ failcom='fail=yes'; \ else \ failcom='exit 1'; \ fi; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ case "$@" in \ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ *) list='$(SUBDIRS)' ;; \ esac; \ for subdir in $$list; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ dot_seen=yes; \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-recursive TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ empty_fix=.; \ else \ include_option=--include; \ empty_fix=; \ fi; \ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-recursive CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-recursive cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am distdir-am: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ $(am__make_dryrun) \ || test -d "$(distdir)/$$subdir" \ || $(MKDIR_P) "$(distdir)/$$subdir" \ || exit 1; \ dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ $(am__relativize); \ new_distdir=$$reldir; \ dir1=$$subdir; dir2="$(top_distdir)"; \ $(am__relativize); \ new_top_distdir=$$reldir; \ echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ ($(am__cd) $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$$new_top_distdir" \ distdir="$$new_distdir" \ am__remove_distdir=: \ am__skip_length_check=: \ am__skip_mode_fix=: \ distdir) \ || exit 1; \ fi; \ done check-am: all-am check: check-recursive all-am: Makefile installdirs: installdirs-recursive installdirs-am: install: install-recursive install-exec: install-exec-recursive install-data: install-data-recursive uninstall: uninstall-recursive install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-recursive install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -$(am__rm_f) $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || $(am__rm_f) $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-recursive clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-recursive -rm -f Makefile distclean-am: clean-am distclean-generic distclean-tags dvi: dvi-recursive dvi-am: html: html-recursive html-am: info: info-recursive info-am: install-data-am: install-dvi: install-dvi-recursive install-dvi-am: install-exec-am: install-html: install-html-recursive install-html-am: install-info: install-info-recursive install-info-am: install-man: install-pdf: install-pdf-recursive install-pdf-am: install-ps: install-ps-recursive install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-recursive -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-recursive mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-recursive pdf-am: ps: ps-recursive ps-am: uninstall-am: .MAKE: $(am__recursive_targets) install-am install-strip .PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am check \ check-am clean clean-generic clean-libtool cscopelist-am ctags \ ctags-am distclean distclean-generic distclean-libtool \ distclean-tags distdir dvi dvi-am html html-am info info-am \ install install-am install-data install-data-am install-dvi \ install-dvi-am install-exec install-exec-am install-html \ install-html-am install-info install-info-am install-man \ install-pdf install-pdf-am install-ps install-ps-am \ install-strip installcheck installcheck-am installdirs \ installdirs-am maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \ ps ps-am tags tags-am uninstall uninstall-am .PRECIOUS: Makefile # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: # Tell GNU make to disable its built-in pattern rules. %:: %,v %:: RCS/%,v %:: RCS/% %:: s.% %:: SCCS/s.%